diff --git a/eh22.easterhegg.eu/_detail/eh22lost_-_11.jpeg?id=lost.html b/eh22.easterhegg.eu/_detail/eh22lost_-_11.jpeg?id=lost.html new file mode 100644 index 0000000..aa4e7d8 --- /dev/null +++ b/eh22.easterhegg.eu/_detail/eh22lost_-_11.jpeg?id=lost.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + +eh22lost_-_11.jpeg [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+
+ + +
+

EH22 - Easterhegg 2025

+
+ + +
+
+ + +
+
+

EH22 - Easterhegg 2025

+
+
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ + +
+
+
+
+ + + + +
+
+
+
+ + +
+ + +
+
+
+
+ +
+ +
+
+ + + + +

eh22lost_-_11.jpeg

+ +
+

eh22lost_-_11.jpeg

+ +
Datum:
2025-04-26 12:38 UTC
Dateiname:
eh22lost_-_11.jpeg
Format:
JPEG
Größe:
5MB
Breite:
3024
Höhe:
4032
Kamera:
Apple iPhone 15 Pro Max
+
+
+
+
+
+ + +
+
+ + + + + + + +
+ + + + diff --git a/eh22.easterhegg.eu/_detail/eh22lost_-_12.jpeg?id=lost.html b/eh22.easterhegg.eu/_detail/eh22lost_-_12.jpeg?id=lost.html new file mode 100644 index 0000000..01b6fa6 --- /dev/null +++ b/eh22.easterhegg.eu/_detail/eh22lost_-_12.jpeg?id=lost.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + +eh22lost_-_12.jpeg [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+
+ + +
+

EH22 - Easterhegg 2025

+
+ + +
+
+ + +
+
+

EH22 - Easterhegg 2025

+
+
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ + +
+
+
+
+ + + + +
+
+
+
+ + +
+ + +
+
+
+
+ +
+ +
+
+ + + + +

eh22lost_-_12.jpeg

+ +
+

eh22lost_-_12.jpeg

+ +
Datum:
2025-04-26 12:38 UTC
Dateiname:
eh22lost_-_12.jpeg
Format:
JPEG
Größe:
13MB
Breite:
4284
Höhe:
5712
Kamera:
Apple iPhone 15 Pro Max
+
+
+
+
+
+ + +
+
+ + + + + + + +
+ + + + diff --git a/eh22.easterhegg.eu/_detail/lost:eh22lost_-_1.jpeg?id=lost.html b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_1.jpeg?id=lost.html new file mode 100644 index 0000000..69e12d0 --- /dev/null +++ b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_1.jpeg?id=lost.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + +lost:eh22lost_-_1.jpeg [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+
+ + +
+

EH22 - Easterhegg 2025

+
+ + +
+
+ + +
+
+

EH22 - Easterhegg 2025

+
+
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ + +
+
+
+
+ + + + +
+
+
+
+ + +
+ + +
+
+
+
+ +
+ +
+
+ + + + +

lost:eh22lost_-_1.jpeg

+ +
+

eh22lost_-_1.jpeg

+ +
Datum:
2025-04-25 18:16 UTC
Dateiname:
eh22lost_-_1.jpeg
Format:
JPEG
Größe:
12MB
Breite:
4284
Höhe:
5712
Kamera:
Apple iPhone 15 Pro Max
+
+
+
+
+
+ + +
+
+ + + + + + + +
+ + + + diff --git a/eh22.easterhegg.eu/_detail/lost:eh22lost_-_14.jpeg?id=lost.html b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_14.jpeg?id=lost.html new file mode 100644 index 0000000..6af1be5 --- /dev/null +++ b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_14.jpeg?id=lost.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + +lost:eh22lost_-_14.jpeg [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+
+ + +
+

EH22 - Easterhegg 2025

+
+ + +
+
+ + +
+
+

EH22 - Easterhegg 2025

+
+
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ + +
+
+
+
+ + + + +
+
+
+
+ + +
+ + +
+
+
+
+ +
+ +
+
+ + + + +

lost:eh22lost_-_14.jpeg

+ +
+

eh22lost_-_14.jpeg

+ +
Datum:
2025-04-26 12:53 UTC
Dateiname:
eh22lost_-_14.jpeg
Format:
JPEG
Größe:
5MB
Breite:
3024
Höhe:
4032
Kamera:
Apple iPhone 15 Pro Max
+
+
+
+
+
+ + +
+
+ + + + + + + +
+ + + + diff --git a/eh22.easterhegg.eu/_detail/lost:eh22lost_-_15.jpeg?id=lost.html b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_15.jpeg?id=lost.html new file mode 100644 index 0000000..0de10d4 --- /dev/null +++ b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_15.jpeg?id=lost.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + +lost:eh22lost_-_15.jpeg [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+
+ + +
+

EH22 - Easterhegg 2025

+
+ + +
+
+ + +
+
+

EH22 - Easterhegg 2025

+
+
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ + +
+
+
+
+ + + + +
+
+
+
+ + +
+ + +
+
+
+
+ +
+ +
+
+ + + + +

lost:eh22lost_-_15.jpeg

+ +
+

eh22lost_-_15.jpeg

+ +
Datum:
2025-04-26 12:53 UTC
Dateiname:
eh22lost_-_15.jpeg
Format:
JPEG
Größe:
5MB
Breite:
4032
Höhe:
3024
Kamera:
Apple iPhone 15 Pro Max
+
+
+
+
+
+ + +
+
+ + + + + + + +
+ + + + diff --git a/eh22.easterhegg.eu/_detail/lost:eh22lost_-_16.jpeg?id=lost.html b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_16.jpeg?id=lost.html new file mode 100644 index 0000000..ddc53f8 --- /dev/null +++ b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_16.jpeg?id=lost.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + +lost:eh22lost_-_16.jpeg [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+
+ + +
+

EH22 - Easterhegg 2025

+
+ + +
+
+ + +
+
+

EH22 - Easterhegg 2025

+
+
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ + +
+
+
+
+ + + + +
+
+
+
+ + +
+ + +
+
+
+
+ +
+ +
+
+ + + + +

lost:eh22lost_-_16.jpeg

+ +
+

eh22lost_-_16.jpeg

+ +
Datum:
2025-04-26 12:53 UTC
Dateiname:
eh22lost_-_16.jpeg
Format:
JPEG
Größe:
5MB
Breite:
4032
Höhe:
3024
Kamera:
Apple iPhone 15 Pro Max
+
+
+
+
+
+ + +
+
+ + + + + + + +
+ + + + diff --git a/eh22.easterhegg.eu/_detail/lost:eh22lost_-_17.jpeg?id=lost.html b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_17.jpeg?id=lost.html new file mode 100644 index 0000000..e5aeb4d --- /dev/null +++ b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_17.jpeg?id=lost.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + +lost:eh22lost_-_17.jpeg [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+
+ + +
+

EH22 - Easterhegg 2025

+
+ + +
+
+ + +
+
+

EH22 - Easterhegg 2025

+
+
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ + +
+
+
+
+ + + + +
+
+
+
+ + +
+ + +
+
+
+
+ +
+ +
+
+ + + + +

lost:eh22lost_-_17.jpeg

+ +
+

eh22lost_-_17.jpeg

+ +
Datum:
2025-04-26 12:53 UTC
Dateiname:
eh22lost_-_17.jpeg
Format:
JPEG
Größe:
4MB
Breite:
4032
Höhe:
3024
Kamera:
Apple iPhone 15 Pro Max
+
+
+
+
+
+ + +
+
+ + + + + + + +
+ + + + diff --git a/eh22.easterhegg.eu/_detail/lost:eh22lost_-_19.jpeg?id=lost.html b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_19.jpeg?id=lost.html new file mode 100644 index 0000000..06cec41 --- /dev/null +++ b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_19.jpeg?id=lost.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + +lost:eh22lost_-_19.jpeg [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+
+ + +
+

EH22 - Easterhegg 2025

+
+ + +
+
+ + +
+
+

EH22 - Easterhegg 2025

+
+
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ + +
+
+
+
+ + + + +
+
+
+
+ + +
+ + +
+
+
+
+ +
+ +
+
+ + + + +

lost:eh22lost_-_19.jpeg

+ +
+

eh22lost_-_19.jpeg

+ +
Datum:
2025-04-26 12:53 UTC
Dateiname:
eh22lost_-_19.jpeg
Format:
JPEG
Größe:
5MB
Breite:
4032
Höhe:
3024
Kamera:
Apple iPhone 15 Pro Max
+
+
+
+
+
+ + +
+
+ + + + + + + +
+ + + + diff --git a/eh22.easterhegg.eu/_detail/lost:eh22lost_-_2.jpeg?id=lost.html b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_2.jpeg?id=lost.html new file mode 100644 index 0000000..5fc2d5f --- /dev/null +++ b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_2.jpeg?id=lost.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + +lost:eh22lost_-_2.jpeg [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+
+ + +
+

EH22 - Easterhegg 2025

+
+ + +
+
+ + +
+
+

EH22 - Easterhegg 2025

+
+
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ + +
+
+
+
+ + + + +
+
+
+
+ + +
+ + +
+
+
+
+ +
+ +
+
+ + + + +

lost:eh22lost_-_2.jpeg

+ +
+

eh22lost_-_2.jpeg

+ +
Datum:
2025-04-25 18:16 UTC
Dateiname:
eh22lost_-_2.jpeg
Format:
JPEG
Größe:
13MB
Breite:
4284
Höhe:
5712
Kamera:
Apple iPhone 15 Pro Max
+
+
+
+
+
+ + +
+
+ + + + + + + +
+ + + + diff --git a/eh22.easterhegg.eu/_detail/lost:eh22lost_-_20.jpeg?id=lost.html b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_20.jpeg?id=lost.html new file mode 100644 index 0000000..315c291 --- /dev/null +++ b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_20.jpeg?id=lost.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + +lost:eh22lost_-_20.jpeg [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+
+ + +
+

EH22 - Easterhegg 2025

+
+ + +
+
+ + +
+
+

EH22 - Easterhegg 2025

+
+
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ + +
+
+
+
+ + + + +
+
+
+
+ + +
+ + +
+
+
+
+ +
+ +
+
+ + + + +

lost:eh22lost_-_20.jpeg

+ +
+

eh22lost_-_20.jpeg

+ +
Datum:
2025-04-26 12:59 UTC
Dateiname:
eh22lost_-_20.jpeg
Format:
JPEG
Größe:
4MB
Breite:
3024
Höhe:
4032
Kamera:
Apple iPhone 15 Pro Max
+
+
+
+
+
+ + +
+
+ + + + + + + +
+ + + + diff --git a/eh22.easterhegg.eu/_detail/lost:eh22lost_-_21.jpeg?id=lost.html b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_21.jpeg?id=lost.html new file mode 100644 index 0000000..6469bd1 --- /dev/null +++ b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_21.jpeg?id=lost.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + +lost:eh22lost_-_21.jpeg [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+
+ + +
+

EH22 - Easterhegg 2025

+
+ + +
+
+ + +
+
+

EH22 - Easterhegg 2025

+
+
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ + +
+
+
+
+ + + + +
+
+
+
+ + +
+ + +
+
+
+
+ +
+ +
+
+ + + + +

lost:eh22lost_-_21.jpeg

+ +
+

eh22lost_-_21.jpeg

+ +
Datum:
2025-04-26 13:42 UTC
Dateiname:
eh22lost_-_21.jpeg
Format:
JPEG
Größe:
5MB
Breite:
3024
Höhe:
4032
Kamera:
Apple iPhone 15 Pro Max
+
+
+
+
+
+ + +
+
+ + + + + + + +
+ + + + diff --git a/eh22.easterhegg.eu/_detail/lost:eh22lost_-_22.jpeg?id=lost.html b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_22.jpeg?id=lost.html new file mode 100644 index 0000000..90a00ad --- /dev/null +++ b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_22.jpeg?id=lost.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + +lost:eh22lost_-_22.jpeg [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+
+ + +
+

EH22 - Easterhegg 2025

+
+ + +
+
+ + +
+
+

EH22 - Easterhegg 2025

+
+
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ + +
+
+
+
+ + + + +
+
+
+
+ + +
+ + +
+
+
+
+ +
+ +
+
+ + + + +

lost:eh22lost_-_22.jpeg

+ +
+

eh22lost_-_22.jpeg

+ +
Datum:
2025-04-26 15:41 UTC
Dateiname:
eh22lost_-_22.jpeg
Format:
JPEG
Größe:
4MB
Breite:
3024
Höhe:
4032
Kamera:
Apple iPhone 15 Pro Max
+
+
+
+
+
+ + +
+
+ + + + + + + +
+ + + + diff --git a/eh22.easterhegg.eu/_detail/lost:eh22lost_-_3.jpeg?id=lost.html b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_3.jpeg?id=lost.html new file mode 100644 index 0000000..afb6756 --- /dev/null +++ b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_3.jpeg?id=lost.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + +lost:eh22lost_-_3.jpeg [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+
+ + +
+

EH22 - Easterhegg 2025

+
+ + +
+
+ + +
+
+

EH22 - Easterhegg 2025

+
+
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ + +
+
+
+
+ + + + +
+
+
+
+ + +
+ + +
+
+
+
+ +
+ +
+
+ + + + +

lost:eh22lost_-_3.jpeg

+ +
+

eh22lost_-_3.jpeg

+ +
Datum:
2025-04-25 18:16 UTC
Dateiname:
eh22lost_-_3.jpeg
Format:
JPEG
Größe:
11MB
Breite:
4284
Höhe:
5712
Kamera:
Apple iPhone 15 Pro Max
+
+
+
+
+
+ + +
+
+ + + + + + + +
+ + + + diff --git a/eh22.easterhegg.eu/_detail/lost:eh22lost_-_4.jpeg?id=lost.html b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_4.jpeg?id=lost.html new file mode 100644 index 0000000..a4d18f9 --- /dev/null +++ b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_4.jpeg?id=lost.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + +lost:eh22lost_-_4.jpeg [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+
+ + +
+

EH22 - Easterhegg 2025

+
+ + +
+
+ + +
+
+

EH22 - Easterhegg 2025

+
+
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ + +
+
+
+
+ + + + +
+
+
+
+ + +
+ + +
+
+
+
+ +
+ +
+
+ + + + +

lost:eh22lost_-_4.jpeg

+ +
+

eh22lost_-_4.jpeg

+ +
Datum:
2025-04-25 18:16 UTC
Dateiname:
eh22lost_-_4.jpeg
Format:
JPEG
Größe:
14MB
Breite:
4284
Höhe:
5712
Kamera:
Apple iPhone 15 Pro Max
+
+
+
+
+
+ + +
+
+ + + + + + + +
+ + + + diff --git a/eh22.easterhegg.eu/_detail/lost:eh22lost_-_5.jpeg?id=lost.html b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_5.jpeg?id=lost.html new file mode 100644 index 0000000..189df69 --- /dev/null +++ b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_5.jpeg?id=lost.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + +lost:eh22lost_-_5.jpeg [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+
+ + +
+

EH22 - Easterhegg 2025

+
+ + +
+
+ + +
+
+

EH22 - Easterhegg 2025

+
+
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ + +
+
+
+
+ + + + +
+
+
+
+ + +
+ + +
+
+
+
+ +
+ +
+
+ + + + +

lost:eh22lost_-_5.jpeg

+ +
+

eh22lost_-_5.jpeg

+ +
Datum:
2025-04-25 18:30 UTC
Dateiname:
eh22lost_-_5.jpeg
Format:
JPEG
Größe:
14MB
Breite:
4284
Höhe:
5712
Kamera:
Apple iPhone 15 Pro Max
+
+
+
+
+
+ + +
+
+ + + + + + + +
+ + + + diff --git a/eh22.easterhegg.eu/_detail/lost:eh22lost_-_6.jpeg?id=lost.html b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_6.jpeg?id=lost.html new file mode 100644 index 0000000..b7221fd --- /dev/null +++ b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_6.jpeg?id=lost.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + +lost:eh22lost_-_6.jpeg [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+
+ + +
+

EH22 - Easterhegg 2025

+
+ + +
+
+ + +
+
+

EH22 - Easterhegg 2025

+
+
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ + +
+
+
+
+ + + + +
+
+
+
+ + +
+ + +
+
+
+
+ +
+ +
+
+ + + + +

lost:eh22lost_-_6.jpeg

+ +
+

eh22lost_-_6.jpeg

+ +
Datum:
2025-04-25 18:40 UTC
Dateiname:
eh22lost_-_6.jpeg
Format:
JPEG
Größe:
12MB
Breite:
5712
Höhe:
4284
Kamera:
Apple iPhone 15 Pro Max
+
+
+
+
+
+ + +
+
+ + + + + + + +
+ + + + diff --git a/eh22.easterhegg.eu/_detail/lost:eh22lost_-_8.jpeg?id=lost.html b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_8.jpeg?id=lost.html new file mode 100644 index 0000000..049dc0e --- /dev/null +++ b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_8.jpeg?id=lost.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + +lost:eh22lost_-_8.jpeg [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+
+ + +
+

EH22 - Easterhegg 2025

+
+ + +
+
+ + +
+
+

EH22 - Easterhegg 2025

+
+
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ + +
+
+
+
+ + + + +
+
+
+
+ + +
+ + +
+
+
+
+ +
+ +
+
+ + + + +

lost:eh22lost_-_8.jpeg

+ +
+

eh22lost_-_8.jpeg

+ +
Datum:
2025-04-25 18:44 UTC
Dateiname:
eh22lost_-_8.jpeg
Format:
JPEG
Größe:
5MB
Breite:
4032
Höhe:
3024
Kamera:
Apple iPhone 15 Pro Max
+
+
+
+
+
+ + +
+
+ + + + + + + +
+ + + + diff --git a/eh22.easterhegg.eu/_detail/lost:eh22lost_-_9.jpeg?id=lost.html b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_9.jpeg?id=lost.html new file mode 100644 index 0000000..54aaabe --- /dev/null +++ b/eh22.easterhegg.eu/_detail/lost:eh22lost_-_9.jpeg?id=lost.html @@ -0,0 +1,402 @@ + + + + + + + + + + + + + + + +lost:eh22lost_-_9.jpeg [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+
+ + +
+

EH22 - Easterhegg 2025

+
+ + +
+
+ + +
+
+

EH22 - Easterhegg 2025

+
+
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ + +
+
+
+
+ + + + +
+
+
+
+ + +
+ + +
+
+
+
+ +
+ +
+
+ + + + +

lost:eh22lost_-_9.jpeg

+ +
+

eh22lost_-_9.jpeg

+ +
Datum:
2025-04-25 18:47 UTC
Dateiname:
eh22lost_-_9.jpeg
Format:
JPEG
Größe:
13MB
Breite:
4284
Höhe:
5712
Kamera:
Apple iPhone 15 Pro Max
+
+
+
+
+
+ + +
+
+ + + + + + + +
+ + + + diff --git a/eh22.easterhegg.eu/_export/xhtml/awareness.html b/eh22.easterhegg.eu/_export/xhtml/awareness.html new file mode 100644 index 0000000..cad9aad --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/awareness.html @@ -0,0 +1,65 @@ + + + + + awareness + + + + + + + + + + + + + + +
+ +

Awareness

+
+ +

+Das Awarenessteam steht dir insbesondere zur Seite, wenn: +

+ + +
+ +

Kontakt

+
+ + +

+Mehr über uns als Team und Awareness-Arbeit findest du auf unserer Webseite. +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/coc.html b/eh22.easterhegg.eu/_export/xhtml/coc.html new file mode 100644 index 0000000..0ed076d --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/coc.html @@ -0,0 +1,281 @@ + + + + + coc + + + + + + + + + + + + + + +
+ +
+

Inhaltsverzeichnis

+
+ + +
+
+ + +

Easterhegg CoC

+
+ +

+english version +

+ +
+ +

Kurzfassung

+
+ +

+Der EasterHegg hat es sich zum Ziel gesetzt, eine belästigungs- und diskriminierungsfreie Veranstaltung für alle zu bieten, ungeachtet ihres Geschlechts, der Geschlechtsidentität und des Geschlechtsausdrucks, der sexuellen Orientierung, der körperlichen und geistigen Fähigkeiten, der äußeren Erscheinung, des Körperbaus, des Aussehens, der Körpergröße, des Alters, der ethnischen, regionalen und/ oder religiösen Zugehörigkeit bzw. Herkunft oder der sozioökonomischen Stellung. +

+ +

+Auch wenn dieses Ziel aufgrund der gesellschaftlichen Machtverhältnisse nicht in Gänze erreicht werden kann, wollen wir darauf hinwirken. +Teilnehmer*innen, die diesem Ziel zuwiderhandeln, können nach dem Ermessen der Organisator*innen mit Sanktionen belegt oder von der Veranstaltung ausgeschlossen werden. +

+ +
+ +

Durchsetzung

+
+ +

+Von Teilnehmer*innen, die aufgefordert werden, belästigendes Verhalten zu unterlassen, wird erwartet, dass sie dem sofort nachkommen. +Bei belästigendem Verhalten eine*r Teilnehmer*in behalten sich die Organisator*innen der Veranstaltung das Recht vor, nötige Maßnahmen zu ergreifen, um die Veranstaltung zu einem angenehmen Umfeld für alle Teilnehmer*innen zu machen. +

+ +
+ +

Verstöße melden

+
+ +

+Wenn du oder jemand anderes sich unsicher oder unwillkommen fühlt, melde dich bitte so schnell wie möglich. +

+ +

+Belästigungen und andere Verstöße gegen den Code of Conduct stören die Veranstaltung für alle. Wir bitten dich, dich bei uns zu melden, wenn du Verstöße bemerkst. Damit trägst du auch dazu bei, die Veranstaltung zu verbessern. +Du kannst eine Meldung entweder persönlich oder anonym machen. +

+ +
+ +
Anonyme Meldung
+
+ +

+Du kannst hier eine anonyme Meldung machen. +

+ +
+ +
Persönliche Meldung
+
+ +

+Du kannst eine persönliche Meldung machen, indem du Kontakt aufnimmst +

+ +

+a) zum Awareness-Team +

+ + +

+b) zu den Organisator*innen +

+ + +
+ +

Langfassung

+
+ +

+Der EasterHegg hat es sich zum Ziel gesetzt, eine belästigungs- und diskriminierungsfreie Veranstaltung für alle zu bieten, ungeachtet ihres Geschlechts, der Geschlechtsidentität und des Geschlechtsausdrucks, der sexuellen Orientierung, der körperlichen und geistigen Fähigkeiten, der äußeren Erscheinung, des Körperbaus, des Aussehens, der Körpergröße, des Alters, der ethnischen, regionalen und/ oder religiösen Zugehörigkeit bzw. Herkunft oder der sozioökonomischen Stellung. +

+ +

+Auch wenn dieses Ziel aufgrund der gesellschaftlichen Machtverhältnisse nicht in Gänze erreicht werden kann, wollen wir darauf hinwirken. +Teilnehmer*innen, die diesem Ziel zuwiderhandeln, können nach dem Ermessen der Organisator*innen mit Sanktionen belegt oder von der Veranstaltung ausgeschlossen werden. +

+ +
+ +

Unerwünschtes Verhalten

+
+ +

+Belästigung umfasst unter anderem: +

+ + +
+ +

Durchsetzung

+
+ +

+Von Teilnehmer*innen, die aufgefordert werden, belästigendes Verhalten zu unterlassen, wird erwartet, dass sie dem sofort nachkommen. +Bei belästigendem Verhalten eine*r Teilnehmer*in behalten sich die Organisator*innen der Veranstaltung das Recht vor, nötige Maßnahmen zu ergreifen, um die Veranstaltung zu einem angenehmen Umfeld für alle Teilnehmer*innen zu machen. +

+ +

+Mögliche Maßnahmen reichen von Verwarnungen bis zum dauerhaften Ausschluss von der Veranstaltung. +Die Organisator*innen können Maßnahmen ergreifen gegen eine Störung der Veranstaltung und um sicherzustellen, dass sich alle Teilnehmer*innen auf der Veranstaltung und in ihrem Umfeld sicher fühlen können. +

+ +
+ +

Anwendungsbereich

+
+ +

+Wir erwarten von den Teilnehmer*innen, dass sie diese Regeln an allen Veranstaltungsorten und bei allen Aktivitäten im Zusammenhang mit der Veranstaltung einhalten. +Wir sind der Meinung, dass die Teilnehmer*innen diese Regeln auch außerhalb der Veranstaltung befolgen sollten. +

+ +
+ +

Verstöße melden

+
+ +

+Wenn du oder jemand anderes sich unsicher oder unwillkommen fühlt, melde dich bitte so schnell wie möglich. +

+ +

+Belästigungen und andere Verstöße gegen den Code of Conduct stören die Veranstaltung für alle. Wir bitten dich, dich bei uns zu melden, wenn du Verstöße bemerkst. Damit trägst du auch dazu bei, die Veranstaltung zu verbessern. +Du kannst eine Meldung entweder persönlich oder anonym machen. +

+ +
+ +
Anonyme Meldung
+
+ +

+Du kannst hier eine anonyme Meldung machen. +Wir können eine anonyme Meldung nicht direkt weiterverfolgen, aber wir werden ihr nachgehen und alle notwendigen Maßnahmen ergreifen, um eine Wiederholung zu verhindern. +

+ +
+ +
Persönliche Meldung
+
+ +

+Du kannst eine persönliche Meldung machen, indem du Kontakt aufnimmst +

+ +

+a) Awareness-Team +

+ + +

+Bei einer persönlichen Meldung sorgt das Awareness-Team dafür, dass es einen vertraulichen Rückzugsraum gibt. +Sobald es dir möglich ist, wird das Awareness-Team dich bitten, zu erzählen, was passiert ist. Das Team wird so respektvoll wie möglich damit umgehen, und du kannst eine Vertrauensperson mitbringen. Du wirst nicht aufgefordert, jemanden zur Rede zu stellen, das Awareness-Team wird nichts ohne deine Zustimmung tun und niemandem sagen, wer du bist. +

+ +

+Das Awareness-Team wird dich dabei unterstützen, Kontakt zu anderen (veranstaltungs-internen oder -externen) Stellen aufzunehmen, Begleitpersonen bereitstellen oder dir anderweitig helfen, dich während der Veranstaltung sicher zu fühlen. Deine Teilnahme ist uns wichtig. +

+ +

+b) zu den Organisator*innen +

+ + +
+ +

Quelle

+
+ +

+https://geekfeminism.fandom.com/wiki/Conference_anti-harassment/Policy +

+ +

+Dieser Code of Conduct basiert auf dem Beispiel aus dem Geek-Feminism-Wiki, das von der Ada-Initiative und anderen Freiwilligen erstellt wurde. +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/ctf.html b/eh22.easterhegg.eu/_export/xhtml/ctf.html new file mode 100644 index 0000000..cc6b06d --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/ctf.html @@ -0,0 +1,183 @@ + + + + + ctf + + + + + + + + + + + + + + +
+ +

Capture The Flag

+
+ +

+Hacke legal die von uns bereitgestellten Dienste. +

+ +

+Wir laden dich herzlich zu unserer digitalen Eiersuche in Form eines CTFs (Capture the Flag) mit leichtem bis mittlerem Schwierigkeitsgrad ein. Weitere Informationen findest du unter http://board.eh22.c3h2.de. Keine Panik, falls das Board noch nicht erreichbar ist. +

+ +

+Die Challenges sind zugänglich von 18.04.2025 18:00 22:00 23:00 23:30 bis 20.04.2025 18:00 22:00 23:00 23:30. +

+ +

+Die Seite wird ein paar Stunden Minuten vor Beginn der Challenges online gehen, sodass du genügend Zeit hast, dich zu registrieren. +Wenn du Unterstützung bei den Challenges brauchst, findest du uns auch im Hacking-Bereich an unserem Tisch. Außerdem haben wir einen Matrix-Channel, dem du beitreten kannst – dort versuchen wir, eure Fragen zu den Challenges zu beantworten: https://matrix.to/#/#easterhegg2025-ctf:hamburg.ccc.de +

+ +

+Bitte beachte unsere Challenge-Regeln. Hinweis: Es gibt keine Preise. +

+ +
+ +

FAQ & Allgemeine Informationen

+
+ + +
+ +

Finaler Punktestand

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
# Team Points
1 L.A.R.P. 4951
2 hanemile 4755
3 Mouse Jigglers 4617
4 rueckwurst 3440
5 bckspc 3390
6 beetroot 3166
7 the_monday_club 2977
8 KITCTF 2890
9 haxko 2527
10 https 2417
11 manf 1331
12 Wir-fahren-mit-der-Hochbahn-durch-die-Stadt 1168
13 CYBERVISIONLABS.SH 1156
14 reald 1077
15 petepriority 963
16 kai 944
17 mynewteam 919
18 kibaa 780
19 invalid 695
20 ThanatosisSerpentis 606
21 allcatsarebeautiful 561
22 gamer gaming 439
23 NurMalGucken 215
24 Tawo 215
25 urls_in_webchalls_broken 130
26 Fluffy Unicorns 130
27 5 Freunde 100
28 dkl 100
+ +
+ +

News

+
+ + +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/dating.html b/eh22.easterhegg.eu/_export/xhtml/dating.html new file mode 100644 index 0000000..9fdc39f --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/dating.html @@ -0,0 +1,242 @@ + + + + + dating + + + + + + + + + + + + + + +
+ +

Bulletin Board

+
+
+

+Auf Chaosevents heißt die Seite für Gesuche aller Art (Kleinanzeigen) traditionell Hackerdating, das hat also nicht zwangsläufig etwas mit Dating im engeren Sinne zu tun.
+ +–
+ +Historically, the wiki page for searches and offers of all kind has been called „Dating“, so this page is not (only) for dating in the classical sense. +

+
+
+ +

Hacker [sucht|seeks] Hacker

+
+ + +
+ +

Hacker [sucht|seeks] [Schlafplatz | sleeping place]

+
+ + + + + +
+ +

Hacker [sucht|seeks] Ticket

+
+ + +
+ +

Hacker:in sucht/looks for Transport

+
+ + +
+ +

Transport ticket [sucht|seeks] Hacker

+
+ + +
+ +

Hacker [sucht|seeks] Hardware

+
+ + +
+ +

Hardware [sucht|seeks] Hacker

+
+ + +
+ +

Hacker [sucht|seeks] Info/Files

+
+ + +
+ +

Info/Files [sucht|seeks] Hacker

+
+ + +
+ +

Hacker [sucht|seeks] Läuse/Lice

+
+ + +
+ +

Lice seek Hackers

+
+ + +
+ +

Lice seek Lice

+
+ + +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/dect.html b/eh22.easterhegg.eu/_export/xhtml/dect.html new file mode 100644 index 0000000..456bdd4 --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/dect.html @@ -0,0 +1,42 @@ + + + + + dect + + + + + + + + + + + + + + +
+ +

DECT & GSM

+
+ +

+Eventphone stellt wieder ein Telefonnetz bereit.
+ +Auch C3GSM ist dabei und macht Mobilfunk. +

+ +

+Die Nebenstellenregistrierung ist offen, ihr könnt hier eure Telefone registrieren. +

+ +

+Bringt eure CCC Sim-Karten mit wenn ihr das Mobilfunknetz nutzen möchtet, es wird vor Ort nur sehr wenige geben. +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/en:awareness.html b/eh22.easterhegg.eu/_export/xhtml/en:awareness.html new file mode 100644 index 0000000..e8e88fd --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/en:awareness.html @@ -0,0 +1,65 @@ + + + + + en:awareness + + + + + + + + + + + + + + +
+ +

Awareness

+
+ +

+The awareness team is there to help you in particular if: +

+ + +
+ +

Contact

+
+ + +

+You can find out more about us as a team and our awareness work on our website. +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/en:coc.html b/eh22.easterhegg.eu/_export/xhtml/en:coc.html new file mode 100644 index 0000000..d9f16b9 --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/en:coc.html @@ -0,0 +1,268 @@ + + + + + en:coc + + + + + + + + + + + + + + +
+ +
+

Inhaltsverzeichnis

+
+ + +
+
+ + +

English Version

+
+ +
+ +

Short Version

+
+ +

+EasterHegg is dedicated to providing a harassment- and discrimination-free event for all, regardless of gender, gender identity and expression, sexual orientation, physical and mental ability, physical appearance, body size, age, ethnic, regional and/ or religious affiliation or origin, or socioeconomic status. +Even if this goal cannot be achieved in its entirety due to social power relations, we want to work towards it. Participants who violate this goal can be sanctioned or excluded from the event at the discretion of the organizers. +

+ +
+ +

Enforcement

+
+ +

+Participants who are asked to refrain from harassing behavior are expected to comply immediately. +In the event of harassing behavior by a participant, the event organizers reserve the right to take necessary measures to make the event a pleasant environment for all participants. +

+ +
+ +

Reporting violations

+
+ +

+If you or anyone else feels unsafe or unwelcome, please do not hesitate to reach out right away. +

+ +

+Harassment and other violations of the Code of Conduct disrupt the event for everyone. We ask you to notify us if you notice any violations. By doing so, you will also help improve the event. +You can make a report either in person or anonymously. +

+ +
+ +
Anonymous report
+
+ +

+You can make an anonymous report here. +

+ +
+ +
Personal report
+
+ +

+You can make a personal report by contacting +

+ +

+a) the Awareness Team +

+ + +

+b) the Orga +

+ + +
+ +

Long Version

+
+ +

+EasterHegg is dedicated to providing a harassment- and discrimination-free event for all, regardless of gender, gender identity and expression, sexual orientation, physical and mental ability, physical appearance, body size, age, ethnic, regional and/ or religious affiliation or origin, or socioeconomic status. +

+ +

+Even if this goal cannot be achieved in its entirety due to social power relations, we want to work towards it. Participants who violate this goal can be sanctioned or excluded from the event at the discretion of the organizers. +

+ +

+Harassment includes: +

+ + +
+ +

Enforcement

+
+ +

+Participants who are asked to refrain from harassing behavior are expected to comply immediately. +In the event of harassing behavior by a participant, the event organizers reserve the right to take necessary measures to make the event a pleasant environment for all participants. +

+ +

+Possible measures range from warnings to permanent exclusion from the event. +The organizers can take measures against disruption of the event and to ensure that all participants can feel safe at the event and in its surroundings. +

+ +
+ +

Scope

+
+ +

+We expect participants to comply with these rules in all venues and activities related to the event. +We believe that participants should also follow these rules outside of the event. +

+ +
+ +

Reporting violations

+
+ +

+If you or anyone else feels unsafe or unwelcome, please do not hesitate to reach out right away. +

+ +

+Harassment and other violations of the Code of Conduct disrupt the event for everyone. We ask you to notify us if you notice any violations. By doing so, you will also help improve the event. +You can make a report either in person or anonymously. +

+ +
+ +
Anonymous report
+
+ +

+You can make an anonymous report here anonymous report here. +We cannot directly follow up on an anonymous report, but we will investigate it and take all necessary steps to prevent a recurrence. +

+ +
+ +
Personal report
+
+ +

+You can make a personal report by contacting +

+ +

+a) the Awareness Team +

+ + +

+In case of a personal report, the awareness team will make sure that there is a confidential retreat. +As soon as you are ready, the awareness team will ask you to describe what happened. The team will handle it as respectfully as possible, and you can bring a trusted person with you. You will not be asked to confront anyone, the awareness team will not do anything without your consent, and will not tell anyone who you are. +

+ +

+The Awareness Team will support you in contacting other agencies (internal or external to the event), provide escorts, or otherwise help you feel safe during the event. Your participation is important to us. +

+ +

+b) the Orga +

+ + +
+ +

Source

+
+ +

+https://geekfeminism.fandom.com/wiki/Conference_anti-harassment/Policy +

+ +

+This Code of Conduct is based on the example from the Geek Feminism Wiki created by the Ada Initiative and other volunteers. +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/en:ctf.html b/eh22.easterhegg.eu/_export/xhtml/en:ctf.html new file mode 100644 index 0000000..736033c --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/en:ctf.html @@ -0,0 +1,179 @@ + + + + + en:ctf + + + + + + + + + + + + + + +
+ +

Capture The Flag

+
+ +

+Legally hack the dedicated services we host. +

+ +

+We like to invite you to our digital egghunting in the form of a easy to medium CTF. Please visit http://board.eh22.c3h2.de for further information. Do not panic, if the board is not accessible yet. +

+ +

+The challenges are accessible starting at 18.04.2025 18:00 22:00 23:00 23:30 till 20.04.2025 18:00 22:00 23:00 23:30. +

+ +

+The site will be online a few hours minutes before the challenges start, so you have enough time to register. +If you require any further assistance regarding the challenges, you can also find us in the hacking area, where we have a table ready. We also have a matrix channel that you can join, where we try to answer questions regarding challenges. You can join here https://matrix.to/#/#easterhegg2025-ctf:hamburg.ccc.de +

+ +

+Be aware of our challenge policies. There are no prizes. +

+ +
+ +

FAQ

+
+ + +
+ +

final score

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
# Team Points
1 L.A.R.P. 4951
2 hanemile 4755
3 Mouse Jigglers 4617
4 rueckwurst 3440
5 bckspc 3390
6 beetroot 3166
7 the_monday_club 2977
8 KITCTF 2890
9 haxko 2527
10 https 2417
11 manf 1331
12 Wir-fahren-mit-der-Hochbahn-durch-die-Stadt 1168
13 CYBERVISIONLABS.SH 1156
14 reald 1077
15 petepriority 963
16 kai 944
17 mynewteam 919
18 kibaa 780
19 invalid 695
20 ThanatosisSerpentis 606
21 allcatsarebeautiful 561
22 gamer gaming 439
23 NurMalGucken 215
24 Tawo 215
25 urls_in_webchalls_broken 130
26 Fluffy Unicorns 130
27 5 Freunde 100
28 dkl 100
+ +
+ +

News

+
+ + +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/en:dating.html b/eh22.easterhegg.eu/_export/xhtml/en:dating.html new file mode 100644 index 0000000..aadef2f --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/en:dating.html @@ -0,0 +1,27 @@ + + + + + en:dating + + + + + + + + + + + + + + +
+ +

+See the german version +

+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/en:dect.html b/eh22.easterhegg.eu/_export/xhtml/en:dect.html new file mode 100644 index 0000000..7df66b7 --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/en:dect.html @@ -0,0 +1,42 @@ + + + + + en:dect + + + + + + + + + + + + + + +
+ +

DECT

+
+ +

+Eventphone will provide a phone network.
+ +C3GSM will provide a cellular network. +

+ +

+Registration is open, you can register your extension here. +

+ +

+Remember to bring your old CCC SIM cards if you want to use the gsm network, only a very small number of cards will be available on location. +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/en:food.html b/eh22.easterhegg.eu/_export/xhtml/en:food.html new file mode 100644 index 0000000..47ba9f0 --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/en:food.html @@ -0,0 +1,109 @@ + + + + + en:food + + + + + + + + + + + + + + +
+ +
+

Inhaltsverzeichnis

+
+ + +
+
+ + +

Food and Drink

+
+ +
+ +

On site

+
+ +
+ +

Drinks

+
+ +

+The bar in the main foyer serves Water, Mate, Softdrinks, Beer and Tschunk. +

+ +

+Coffee is available in the breakfast area. Refill your Easterhegg mug for free whenever you like. +

+ +
+ +

Food

+
+ +
+ +

Breakfast

+
+ +

+One of the key features of Easterhegg is the eternal breakfast, where you can get free breakfast food all day and all night.
+ +The breakfast is completely vegetarian with vegan options and allergens are labeled. +

+ +
+ +

Peacetanbul

+
+ +

+Peacetanbul is the on-site Restaurant at Kampnagel.
+ +They offer delicious food from all over the world with hacker compatible opening hours.
+ +From Friday to Sunday, the kitchen is working from 15:00-24:00.
+ +If the weather permits, they might even run a grill on the plaza outside :) +

+ +
+ +

Off Site

+
+ +

+There are lots of good places to get food around the venue. +

+ +

+We have created a (non-exhaustive) list of places and their opening hours during the event here.
+ +The list is only available in german, but should be fairly self explanatory. +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/en:fruehstueck.html b/eh22.easterhegg.eu/_export/xhtml/en:fruehstueck.html new file mode 100644 index 0000000..b4a42fc --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/en:fruehstueck.html @@ -0,0 +1,466 @@ + + + + + + + + + + + + + + + + + + + +en:fruehstueck [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
Metainformationen zur Seite
+ +
+
    +
  •  
  • +
+ +
+
+
+
+
+
+ +
+
Übersetzungen dieser Seite:
+
+
+
+ +

Dieses Thema existiert noch nicht

+
+ +

+Du bist einem Link zu einer Seite gefolgt, die noch nicht existiert. Du kannst die Seite mit dem Knopf Seite anlegen selbst anlegen und mit Inhalt füllen. +

+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/_export/xhtml/en:hackertours.html b/eh22.easterhegg.eu/_export/xhtml/en:hackertours.html new file mode 100644 index 0000000..6279e07 --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/en:hackertours.html @@ -0,0 +1,56 @@ + + + + + en:hackertours + + + + + + + + + + + + + + +
+ +

Hackertours

+
+ +

+CCC Hansestadt Hamburg is organising interesting tours in Hamburg around Easterhegg. +

+ + +

+We will start the tickets sales on March 2nd in the Hackertours Shop for EH22. +

+ + +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/en:lost.html b/eh22.easterhegg.eu/_export/xhtml/en:lost.html new file mode 100644 index 0000000..6575c07 --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/en:lost.html @@ -0,0 +1,36 @@ + + + + + en:lost + + + + + + + + + + + + + + +
+ +

Lost and found

+
+ +

+We found some things during teardown. Please see the German Lost&Found page for a list, and contact info. +

+ +

+We also have items left from Easterhegg 2023, which you can find here: https://eh20.easterhegg.eu/lost.html +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/en:merch.html b/eh22.easterhegg.eu/_export/xhtml/en:merch.html new file mode 100644 index 0000000..33e77ae --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/en:merch.html @@ -0,0 +1,62 @@ + + + + + en:merch + + + + + + + + + + + + + + +
+ +

Merch

+
+ +

+We will offer these Merch items: +

+ + +

+Merch will be available via presale only, there is no amount reserved for sale on location. +

+ +

+The presale period will run from Feb 16, 20:00 CET (UTC+1) until March 9th. +

+ +

+Information about design and sizing will be available in the ticketshop:
+ +https://presale.eh22.easterhegg.eu +

+ +

+If you already have a shirt from one of the last major chaos events, you can use our web tool for comparing merch sizes.
+ +Click here for our merch size comparison:
+ +https://eh22.easterhegg.eu/design/merch/en/ +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/en:neighbourhood.html b/eh22.easterhegg.eu/_export/xhtml/en:neighbourhood.html new file mode 100644 index 0000000..13f73bb --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/en:neighbourhood.html @@ -0,0 +1,34 @@ + + + + + en:neighbourhood + + + + + + + + + + + + + + +
+ +

Neighborhood

+
+ +

+This page lists restaurants, cafes, and supermarkets in the neighborhood of the venue.
+ +The list is only available in german, but should be fairly self explanatory. +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/en:network.html b/eh22.easterhegg.eu/_export/xhtml/en:network.html new file mode 100644 index 0000000..ee80850 --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/en:network.html @@ -0,0 +1,34 @@ + + + + + en:network + + + + + + + + + + + + + + +
+ +

Network

+
+ +

+There will be a wired and wireless network.
+ +More information tba. +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/en:sos.html b/eh22.easterhegg.eu/_export/xhtml/en:sos.html new file mode 100644 index 0000000..b226c08 --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/en:sos.html @@ -0,0 +1,32 @@ + + + + + en:sos + + + + + + + + + + + + + + +
+ +

Self organized sessions

+
+ +

+Self-organized sessions are managed on the german page. +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/en:start.html b/eh22.easterhegg.eu/_export/xhtml/en:start.html new file mode 100644 index 0000000..64f04eb --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/en:start.html @@ -0,0 +1,123 @@ + + + + + en:start + + + + + + + + + + + + + + +
+ +
+

Inhaltsverzeichnis

+
+ + +
+
+ + +

Easterhegg 2025

+
+ +

+The 22nd Easterhegg – Unhandled Eggception – took place from the 18th to 21st of April 2025 in Hamburg. +

+ +
+ +

Quick Facts

+
+ + + + + + +
+ +

Contact

+
+ + +
+ +

Further Information

+
+ +

+Further information will be released on this website and the Fediverse soon. +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/en:ticket-exchange.html b/eh22.easterhegg.eu/_export/xhtml/en:ticket-exchange.html new file mode 100644 index 0000000..e9d1bf6 --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/en:ticket-exchange.html @@ -0,0 +1,32 @@ + + + + + en:ticket-exchange + + + + + + + + + + + + + + +
+ +

Ticket Exchange

+
+ +

+Please look at the german ticket exchange page by clicking on the “Deutsch” button on top of the page or klick here +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/en:tickets.html b/eh22.easterhegg.eu/_export/xhtml/en:tickets.html new file mode 100644 index 0000000..7c5e18a --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/en:tickets.html @@ -0,0 +1,101 @@ + + + + + en:tickets + + + + + + + + + + + + + + +
+ +

Tickets

+
+
+

+The event is sold out, no tickets will be sold on site!
+ +Have a look at our Ticket-Exchange to see if there are tickets on offer. +

+
+

+If you can afford it, please consider buying the “Shut up and Take my Money” ticket, as this enables us to offer the cheaper tickets. +

+ +

+Attendees under 12 years of age get in for free. +

+ +
+ +

Pricing

+
+ +

+We can only keep to the ticket prices because we are supported by the Free and Hanseatic City of +Hamburg, Ministry of Culture and Media! +

+ +

+“Hop Hop Hop” for 85€
+ +standard ticket, just barely covers our costs +

+ +

+“Shut up and Take my Money” for 105€
+ +for those that can afford it and want to help make the cheaper tiers possible +

+ +

+“Small Hops” for 49€
+ +for young hackers and those that can't afford bigger jumps +

+ +
+ +

Procedure

+
+ +

+We will do 3 presale runs, so that there's a time that works for everyone. +If there are leftovers, they will be sold in a fourth round. +

+ +

+The presale runs take place at these dates: +

+ + +

+Link to the ticket shop: +https://presale.eh22.easterhegg.eu/ +

+ +

+Hackertours tickets will be available from March 2nd in the Hackertours shop. +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/en:transit.html b/eh22.easterhegg.eu/_export/xhtml/en:transit.html new file mode 100644 index 0000000..7a11fa0 --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/en:transit.html @@ -0,0 +1,111 @@ + + + + + en:transit + + + + + + + + + + + + + + +
+ +

Public transit

+
+ +
+ +

Road contruction

+
+ +

+As of the beginning of February until well after the event, Jarrestraße is a one-way street due to construction works.
+ +As it stands we expect westerly traffic, towards B5/Barmbeker Straße to be diverted via Wiesendamm and Weidestraße.
+ +

+ +

+This also affects buses running towards central station.
+ +The next alternative stop is about 500m further by foot. +

+
+ +
+ +

General information

+
+ +

+Groups should consider getting a group ticket.
+ +More info at the hvv online shop. +

+ +

+For exploring the city you can use the official app, which is quite usable:
+ +Android
+ +iPhone +

+ +
+ +
Bus stops
+
+ +

+During the event, buses will leave at the following stops: +

+ +

+Jarrestraße (Kampnagel): +

+ + +

+Semperstraße: +

+ + +

+Flotowstraße: +

+ + +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/en:travel.html b/eh22.easterhegg.eu/_export/xhtml/en:travel.html new file mode 100644 index 0000000..eab3a14 --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/en:travel.html @@ -0,0 +1,271 @@ + + + + + en:travel + + + + + + + + + + + + + + +
+ +
+

Table of Contents

+
+ + +
+
+ + +

Arrival and Departure

+
+ +
+ +

Road contruction

+
+ +

+As of the beginning of February until well after the event, Jarrestraße is a one-way street due to construction works.
+ +As it stands we expect westerly traffic, towards B5/Barmbeker Straße to be diverted via Wiesendamm and Weidestraße.
+ +

+ +

+This also affects buses running towards central station.
+ +The next alternative stop is about 500m further by foot. +

+ +
+ +

Public transit

+
+ +

+This page describes arrival and departure.
+ +Further information on public transit is on it's own page. +

+ +

+You know the drill: avoid using a car. Public transit in Hamburg it not that bad, just give it a shot.
+ +If you arrive by public transit, this is an inspiration for you “last mile”: +

+ +
+ +

From central station

+
+ +

+Use the Bus 17 (Destinations U/S Barmbek, Karlshöhe or U Berne).
+ +It departs from the Kirchenallee platform near Platform 1/2 on the other side of the road.
+ +Your stop will be “Jarrestraße (Kampnagel)”, which will take about 24 minutes and a single trip fare “AB” of 3,90€. +

+ +
+ +

To central station

+
+ +

+Use Bus 6 or 17 (Destinations Auf dem Sande or U Feldstraße) from “Semperstraße” stop in Semperstraße.
+ +Expect a single trip fare “AB” of 3,90€ and a 24 minutes ride. +

+ +
+ +

From the airport

+
+ +

+If you arrive by plane (really?), take the S1 to Barmbek Station.
+ +Use the Wiesendamm exit and take the Bus 17 towards “U Feldstraße”.
+ +Your stop will be “Semperstraße” “Jarrestraße (Kampnagel)”, which will take about 25 minutes and a single trip fare “AB” of 3,90€. +

+ +
+ +

To the airport

+
+ +

+Use Bus 17 or 172 (Destinations Lentersweg, U/S Barmbek, Karlshöhe or U Berne) to “U/S Barmbek”.
+ +Change into the S1 train to “Airport/Poppenbüttel”. Make sure to use one of the first three coaches.
+ +Expect a single trip fare “AB” of 3,90€ and a 26 minutes ride. +

+ +
+ +

By car

+
+ +

+To spare out planet, we kindly ask you to consider alternatives.
+ +Maybe you can make do with public transit or carpooling? +

+ +

+If you still want to come by car, consider taking more people along or transporting heavy luggage for others. +

+ +

+Please also take easter traffic into consideration, expect traffic jams and high fuel prices.
+ +Generally, city traffic in Hamburg is no fun. Its ranked top 3 worst congestion just after Berlin and Munich.
+ +Source +

+ +

+The address is: +

+
Jarrestraße 20
+22303 Hamburg
+ +

+ Routenplaner +

+ +
+ +

Parking

+
+ +

+On site there is a paid parking garage accesible by stairs (ca. 50m).
+ +Unfortunately there is no elevator available. +

+ +

+There are entry ramps from Barmbeker Straße or Jarrestraße.
+ +Parking fare is 2€/hour. You can get a 5€ discount by using a machine in the foyer.
+ +Free parking is hard to come by in the area. +

+ +

+Behind the halls in front of the administration building, there are 2 parking spots for visitors with sensoric of physical limitations and the according parking pass.
+ +From there you have level access to Kampnagel (ca. 100m).
+ +The driveway is at Jarrestraße 20, on premises keep to the left. +

+ +

+Around Kampnagel there are few to no parking spots! Come by public transit if you have a chance to! +

+ +
+ +

By boat

+
+ +

+From the seas +

+ +

+North sea +

+ +

+Enter the Elbe river from the German Bight, keep right of center, depending on draught also off the waterway.
+ +Vessels that are small enough to reach the destination are not exempt from the pilot mandate. +

+ +

+This section of the Elbe river is subject to tide. Keep up to date with the constantly changing conditions here.
+ +Follow the waterway into the harbour: 53.5407, 9.9802 +

+ +

+Baltic sea +

+ +

+Enter the Kiel canal from the Kiel Fjord.
+ +The Kiel canal is open to “sport boats” only between sunrise and sunset. Traversal is subject to a fare.
+ +Boats small enough to reach the destination are exempt from the pilot-mandate. However sailing is forbidden.
+ +Also you have to have radar to traverse at night. [https://www.blauwasser.de/reviere/Nord-Ostsee-Kanal|More Information]]. +

+ +

+From the Brunsbüttel locks, follow the Elbe to the Hamburg harbour as described above. +

+ +

+Alternatively: Use the Elbe-Lübeck Canal to Lauenburg (Elbe), though numerous locks.
+ +Then follow the elbe downstream to Geesthacht and traverse the locks there.
+ +From here the Elbe river is tidal. Check the tides here.
+ +Continue to Hamburg harbor as described above. +

+ +

+From 53.5407, 9.9802 +

+ +

+You can store your Vessel at the City Sport boat marina.
+ +From here we recommend public transit as it is faster and easier. +

+ +

+But still: +

+ +

+Any experts? Please translate this jargon-hell +

+ +

+Ansteuerung des Binnenhafens, Passage der Niederbaumbrücken. Anschließend Backbord, Einfahrt in das Alsterfleet “seeseitig”, Passage der Otto-Sill-Brücke und der Binnenhafenbrücke. Schleusung zu Berg, Passage der Schaartorschleuse. (Bei hohen Wasserständen der Elbe nicht passierbar, ab hier gilt eine Fahrerlaubnispflicht für Motorfahrzeuge, Schleusenzeiten, Rufnummer: 040 428403204) +Nach der Schaartorschleuse dem Alsterfleet Richtung NO bis zur Rathausschleuse folgen. Schleusung zu Berg (Schleusenzeiten, Rufnummer: 040 428402442), kleine Alster bis Reesendammbrücke, Binnenalster bis Lombardsbrücke / Kennedybrücke, Überquerung des 10. Meridians ostwärts, entsprechnde Zeremonie für Erstpassiernede empfohlen, anschließend auf der Außenalster bis 53.5761, 10.0061, Einfahrt in den Langen Zug, Passage der Langenzugbrücke und Einfahrt in den Osterbekkanal bis 53.58341, 10.02454, die Nutzung der Anlegeplätze ist bisher nicht geklärt und muss einzeln vom Schiffsführenden entschieden werden. Voilà… +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/food.html b/eh22.easterhegg.eu/_export/xhtml/food.html new file mode 100644 index 0000000..bac65ae --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/food.html @@ -0,0 +1,107 @@ + + + + + food + + + + + + + + + + + + + + +
+ +
+

Table of Contents

+
+ + +
+
+ + +

Verpflegung

+
+ +
+ +

Auf dem Gelände

+
+ +
+ +

Trinken

+
+ +

+An der Bar im Hauptfoyer gibt es Wasser, Mate, Softdrinks, Bier und Tschunk. +

+ +

+Kaffee gibt es beim Frühstück, dort könnt ihr eure Easterhegg-Tassen so oft ihr wollt mit frischem Kaffee füllen. +

+ +
+ +

Essen

+
+ +
+ +

Ewiges Frühstück

+
+ +

+Traditionell fürs Easterhegg ist das ewige Frühstück, wo es zu jeder Tages- und Nachtzeit Brötchen & Co. mit herzhaften und süßen Belägen gibt.
+ +Das Frühstück ist komplett vegetarisch mit veganen Optionen und Allergene werden hier ausgezeichnet. +

+ +
+ +

Peacetanbul

+
+ +

+Das Peacetanbul ist das Restaurant auf Kampnagel.
+ +Dort bekommt ihr zu Hacker:innen kompatiblen Zeiten leckere Gerichte aus aller Welt.
+ +Freitag bis Sonntag hat die Küche von 15:00 - 24:00 Uhr geöffnet.
+ +Essen zum Mitnehmen: Bitte bringt dafür unbedingt euer eigenes (Plastik-)Geschirr mit - Peacetanbul verteilt keine Einwegverpackungen.
+ +Aktuelle Speisekarte: sie hängt im Peacetanbul an der Wand - abfotografieren - fertig.
+ +Wenn das Wetter gut ist, werfen sie vielleicht auch auf dem Vorplatz den Grill für uns an :) +

+ +
+ +

In der Umgebung

+
+ +

+Auch außerhalb des Geländes gibt es jede Menge leckere Restaurants und Cafés. Hier findet ihr eine Übersicht inklusive der Öffnungszeiten zu Ostern. +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/fruehstueck.html b/eh22.easterhegg.eu/_export/xhtml/fruehstueck.html new file mode 100644 index 0000000..fbbf096 --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/fruehstueck.html @@ -0,0 +1,435 @@ + + + + + fruehstueck + + + + + + + + + + + + + + +
+ +
+

Inhaltsverzeichnis

+
+ + +
+
+ + +

Ewiges Frühstück

+
+ +

+Wie Ihr vielleicht wisst, ist das Ewige Frühstück ein Merkmal des Easterhegg. +

+ +

+Von 0800 bis 2200 wird es dauernd zubereitet und aufgefüllt. Über Nacht gibt es ein kleines Selbstbedienungs-Buffet und einen Kühlschrank für vorbereitete Speisen und Getränke. +

+ +
+ +

Rezepte

+
+ +
+ +

Tomatenbutter Tag 1 und 2

+
+ +

+https://entropia.de/GPN18:Tomatenbutter#2024 +

+ +
+ +

Rauchige schwarze Bohnencreme Tag 1 und 2

+
+ + +
+ +

Hummus Tag 3 und 4

+
+ +

+https://chaos.catering/rezepte/aufstriche/hummus/ +

+ +
+ +

Levervurst Tag 3 und 4

+
+ +

+https://chaos.catering/rezepte/aufstriche/levervurst/ +

+ +
+ +

Was es alles gibt

+
+ +
+ +

Brötchen

+
+ +

+Es gibt hauptsächlich Weizen- und Körnerbrötchen (vegan), im Falle, dass die gerade aus sind, haben wir auch Toastbrot (vegan). +

+ +
+ +

Aufstriche

+
+ + +
+ +

Selbstgemacht: Rauchige Schwarze Bohnencreme

+
+ +

+Zutaten: +

+ + +
+ +

Selbstgemacht: Tomatenbutter

+
+ +

+Zutaten: +

+ + +
+ +

Leider alle (Selbstgemacht: Quittengelee mit Chili)

+
+ +

+Zutaten: +

+ + +
+ +

Selbstgemacht: Levverwurst

+
+ + +
+ +

Selbstgemacht: Hummus

+
+ + +
+ +

Aufschnitt

+
+ +
+ +

Käse

+
+ + +
+ +

Wurst

+
+ + +
+ +

Sonstiges

+
+ + +
+ +

Müsli & so

+
+ + +
+ +

Getränke

+
+ + +
+ +

SurpriseSurprise

+
+ + +
+ +

Allergene

+
+ + +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/hackertours.html b/eh22.easterhegg.eu/_export/xhtml/hackertours.html new file mode 100644 index 0000000..6ed05f5 --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/hackertours.html @@ -0,0 +1,56 @@ + + + + + hackertours + + + + + + + + + + + + + + +
+ +

Hackertours

+
+ +

+Der CCC Hansestadt Hamburg organisiert rund um das Easterhegg spannende Touren in Hamburg. +

+ + +

+Wir starten mit dem Verkauf der Touren am 2.3. um 15 Uhr im Hackertours-Shop für den EH22. +

+ + +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/lost.html b/eh22.easterhegg.eu/_export/xhtml/lost.html new file mode 100644 index 0000000..b4d3cb5 --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/lost.html @@ -0,0 +1,298 @@ + + + + + lost + + + + + + + + + + + + + + +
+ +
+

Inhaltsverzeichnis

+
+ + +
+
+ + +

Lost and Found

+
+ +

+Wir haben beim Abbau ein paar Sachen gefunden. Wenn hier etwas von euren Sachen dabei ist, schreibt doch bitte an orga ät eh22.easterhegg.eu. +

+ +

+Und wir haben noch Sachen vom Easterhegg 2023 vom Lost & Found, bitte schaut hier: https://eh20.easterhegg.eu/lost.html +

+ +
+ +

Kleidung

+
+ +
+ +

Zipper "Shein" schwarz

+
+ +

+Keine Größenangabe +

+ +

+ +

+ +
+ +

Hoody "Grim Reaper" schwarz

+
+ +

+Größe XL? +

+ +

+ +

+ +
+ +

Zipper Nike braun

+
+ +

+Größe M +

+ +

+ +

+ +
+ +

Zipper The North Face schwarz

+
+ +

+Größe M +

+ +

+ +

+ +
+ +

Zipper "qlimax"

+
+ +

+Größe XXL +

+ +

+ +

+ +
+ +

Loop-Schal "FCK AFD"

+
+ +

+ +

+ +
+ +

Jacke "Vaude" rot

+
+ +

+Besitzer ist gefunden. +

+ +
+ +

Schal Rot-Grün-Braun

+
+ +

+ +

+ +
+ +

Hoodie ohne Markierungen schwarz

+
+ +

+Ca. Größe XL +

+ +

+ +

+ +
+ +

Anderes

+
+ +
+ +

Flagge "Schule ohne Rassismus/mit Courage"

+
+ +

+ +

+ +
+ +

Kissen

+
+ +

+ +

+ +
+ +

Autoschlüssel

+
+ +

+Besitzer gefunden +

+ +
+ +

Hacker-Pass

+
+ +

+Gefunden bei der Chaos-Post am 20.4. +

+ +

+ +

+ +
+ +

Ohrringe

+
+ +

+ +

+ +
+ +

ESP32? Microcontroller-Board

+
+ +

+ +

+ +
+ +

Thinkpad-Stift

+
+ +

+ +

+ +
+ +

Schweizer Taschenmesser

+
+ +

+Gefunden bei der UV-Art +

+ +

+Besitzer gefunden. +

+ +
+ +

Maniküre-Set

+
+ +

+ +

+ +
+ +

DECT-Telefon "Fritzfon"

+
+ +

+ +

+ +
+ +

Pin Trans-Flagge

+
+ +

+ +

+ +
+ +

DECT-Telefon Gigaset "Wonko"

+
+ +

+ +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/merch.html b/eh22.easterhegg.eu/_export/xhtml/merch.html new file mode 100644 index 0000000..e809693 --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/merch.html @@ -0,0 +1,72 @@ + + + + + merch + + + + + + + + + + + + + + +
+ +

Merch

+
+ +

+Dieses Jahr wird es diese Merchartikel geben: +

+ + +

+Merch wird ausschließlich im Vorverkauf erhältlich sein, es gibt kein Kontingent zum Verkauf vor Ort! +

+ +

+Der Vorverkauf läuft vom 16.02, 20 Uhr bis 09.03. +

+ +

+Alle Infos zu Design und Größen findet ihr im Shop:
+ +https://presale.eh22.easterhegg.eu +

+ +

+Falls ihr bereits ein Shirt von einem der letzten größeren Chaos-Events habt, könnt ihr unseren web tool zum vergleichen von Merch Größen nutzen.
+ +Hier geht es zu unserem Merch Größenvergleich:
+ +https://eh22.easterhegg.eu/design/merch/de/ +

+ +

+Wann? +Samstag und Sonntag (Ausgabe jeweils von 16 - 20 Uhr) +

+ +

+Wo? +Gegenüber vom Eingang https://eh22.c3nav.de/l/merch/ +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/neighbourhood.html b/eh22.easterhegg.eu/_export/xhtml/neighbourhood.html new file mode 100644 index 0000000..d7f6cac --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/neighbourhood.html @@ -0,0 +1,533 @@ + + + + + neighbourhood + + + + + + + + + + + + + + +
+ +
+

Table of Contents

+
+ + +
+
+ + +

Geschäfte in der Nachbarschaft

+
+ +
+ +

Essen

+
+ +

+Peacetanbul +Das Peacetanbul ist die Gastro auf Kampnagel. Es wird eine Spezialkarte und an uns angepasste Öffnungszeiten geben. +

+ +

+Gemischte Küche mit Tageskarte. Sehr nette Gastgebende. Sehr gemütlich eingerichtet. +

+ +
+ +

Jarrestrasse

+
+ +

+Die geht noch viel weiter, und da gibt es noch jede Menge mehr… +

+ +
+ +

Bäckereien, Cafés und Bistros

+
+ +

+Nur Hier - Für Dich. +Jarreestrasse 2 - 6, 53.583737, 10.020357, Sa 07:00 - 20:00 Uhr +Bäckerei im Edeka. Täglich wechselnde Suppen, auch zum Mitnehmen. Leckere Schoko-Cookies. +

+ +

+Die Bäckerei +Jarrestrasse 55, 53.585375, 10.026348, Mo - Fr 06:30 - 17:00; Sa, So + an Feiertagen 07:30 - 15:00 Uhr +sehr wahrscheinlich über Ostern geöffnet +

+ +
+ +

Restaurants

+
+ +

+Noori +Jarreestrasse 17, 53.584360, 10.021688, 11:30 - 22:30; Mittagstisch 11:30 - 16:30 +Ramen, Sushi, Grill +

+ +

+L'Orient Restaurant - Restaurant Libanais Méditerranéen +Jarrestrasse 22, 53.58413, 10.02239, 12:00 - 23:00 Uhr +Mediterrane, libanesische Küche +

+ +

+New Saigon +Jarrestrasse 24, 53.584190, 10.022497, 12:00 - 22:00 Uhr +Große Auswahl und schnell +

+ +

+Teigfabrik +Jarrestrasse 27, 53.584773, 10.023355, 17:00 - 22:00 Uhr; sehr wahrscheinlich auch über Ostern geöffnet +Pizzeria/Burrata Bar +

+ +

+Bistro Pani Smak +Hölderlinsallee 1 (Ecke Jarrestraße 29, neben DeZwarteFiets Fahrradgeschäft) 53.585053, 10.023796, vom 18.04.2025 bis 20.04. oder vielleicht 21.04.2025 (klärt sich noch) von 12:00 bis 21:00 Uhr geöffnet. +Großartiges polnisches Restaurant. Kleine Auswahl, aber sehr, sehr gut. Rote-Bete-Suppe, Pierogi, Rouladen, Kartoffelpuffer, Bigos +

+ +

+Lu's Asian Food +Jarrestrasse 53, 53.585423, 10.026112, Mo - Fr 11:00 - 22:00 Uhr, Sa geschlossen, So + Feiertage 12:00 - 22:00 Uhr +

+ +
+ +

Fast Food

+
+ +

+Domino's Pizza +Jarrestrasse 24, 53.584337, 10.022568, So - Do 11:00 - 23:00 Uhr; Fr - Sa 11:00 - 23:30 Uhr +

+ +

+Roza Grill +Jarrestrasse 26, 53.584364, 10.023190; Mo - So 11:00 - 23:00 Uhr +Dönerbude sowie täglich wechselnde Tagesgerichte + Suppen; Grillteller, Currywurst, u. a. +

+ +

+Dubara +Jarrestrasse 42, 53.584796, 10.025057, Mo - So 11:00 - 24:00 Uhr +Dönerbude. Machen auch gute Burger und anderes Gegrilltes. Super Salat. Gute Falafel. +

+ +

+Döner Queen +Jarrestrasse 57, 53.585388, 10.026503, Mo - So 12:00 - 24:00 Uhr +Hat auch einen guten wechselnden Mittagstisch (Mo - Fr). Super Salat. +

+ +
+ +

Kreuzung / Barmbeker Straße

+
+ +

+Die Barmbeker Straße geht in beide Richtungen bis in die Unendlichkeit (und noch viel weiter). Da gibts auch noch mehr. +

+ +
+ +

Bäckereien und Cafés

+
+ +

+Rooster +Barmbeker Straße 5, 53.582580, 10.018935, 10:00 - 17:00 Uhr an den Feiertagen und Samstag 10:00 - 18:00 Uhr, ziemlich sicher über Ostern geöffnet +Sehr guter Kaffeeladen. Haben auch tolle Kuchen, Frühstück und Kleinigkeiten. +

+ +

+Allwörden +Barmbeker Straße 17-19, 53.584350, 10.018115, Ostersamstag 06:30 - 20:30 Uhr +Bäckerei im Merkant Markt +

+ +

+Grindel Backhus +Osterbekstraße 60, 53.581596, 10.020718, 07:00 - 18:00 Uhr +Einer der besseren Hamburger Kettenbäcker. Auch Pizza, Pasta und Salatbar. +

+ +
+ +

Restaurants

+
+ +

+TYO TYO +Barmbeker Straße 2, 53.582349, 10.019845, 17:00 - 22:00 Uhr +Fusion Food und Sushi-Restaurant +

+ +

+Vietnam Food +Barmbeker Straße 15, 53.583922, 10.018578, täglich 12:00 - 21:00 Uhr +Kleines chinesisches, thailändisches und vietnamesisches Restaurant. Reservierungen: dringend empfohlen. „Immer frisch und lecker!“ +

+ +
+ +

Gertigstraße

+
+ +
+ +

Cafés, Eisdiele, Konditorei

+
+ +

+Espresso House +Gertigstraße 1, 53.58124, 10.01209, 08:30 - 19:00 Uhr +Bezahlung nur mit Karte oder App! Keine Barzahlung! +

+ +

+Genuss-Faktorei - Tee, Geschenke, Gewürze, Öle, Essige +Gertigstraße 5, 53.581442, 10.012702, Ostersamstag 11:00 - 19:00 Uhr, Pause von 14:30 bis 15:00 Uhr +Kleiner, feiner Laden und Café mit kleiner, charmanter Bürgersteigterrasse. Kaffeebohnen von der Kaffeerösterei Burg. Pralinen u. a. aus Frankreich und Österreich, Eierlikör, Tee- und Kaffeegeschirr, Teekannen, French Press, Porzellan-Kaffeefilter u. a. sowie Tee, Gewürze, Öle, Essige +

+ +

+Caravela - Portugiesische Spezialitäten +Gertigstraße 37, 53.582638, 10.016618, Karfreitag 07:30 - 20:00 Uhr, Ostersamstag 08:00 - 21:00 Uhr, Ostersonntag 08:00 - 20:00 Uhr, Ostermontag 07:30 - 20:00 Uhr +Kleine, feine, portugiesische Konditorei und Café. Pastel del Nata auch mit Früchten, Schokolade, auch vegan. Mediterranes Flair mit charmanter Bürgersteigterrasse im Sonnenschein, Urlaubsfeeling. <3 +

+ +

+Linda Café Kiosk +Gertigstraße 65?/ Ecke Knickstraße, 53.583048, 10.018263, über Ostern von 10:00 bis ca. 20:00 Uhr +Café, Eisdiele, Kiosk +

+ +
+ +

Restaurants

+
+ +

+Vous Brothers +Gertigstraße 7, 53.581500, 10.012796, Ostersamstag und Feiertage: 17:30 - 22:30 Uhr +Asiatisches Restaurant mit u. a. koreanischen, japanischen und indonesischen Einflüssen +

+ +

+Mama Trattoria +Gertigstraße 63, 53.582967, 10.017872, 12:00 - 22:00 Uhr; kaltes und warmes Essen bis 21:00 Uhr +Italienisches Restaurant. Reservierungen: bis max. 5 Personen telefonisch; ab 5 Personen immer per E-Mail! +

+ +

+Tandoori Flame +Gertigstraße 65, 53.5831, 10.0185, 12:00 - 23:00 Uhr +Indisches Restaurant. Reservierungen: immer - entweder telefonisch, über die Webseite oder Google +

+ +
+ +

Fast Food

+
+ +

+Limon Falafelhaus +Gertigstraße 2, 53.58103, 10.01228, jeden Tag 10:30 - 24:00 Uhr +Falafel- und Dönerbude. Gerichte ohne Zusatzstoffe/ Geschmacksverstärker +

+ +

+My Kebap's +Gertigstraße 9, 53.58153, 10.01301, jeden Tag 10:00 - 23:00 Uhr +Dönerbude +

+ +

+Dulf's Burger - Derbe lecker!!! +Gertigstraße 57, 53.582850, 10.017178, 11:30 - 23:00 Uhr, Montag bis Freitag Mittagstisch 11:30 - 15:00 Uhr +Von vielen gelobte Burgerbude. Reservierungen: empfehlenswert, vor allem bei größeren Gruppen +

+ +

+Grill-Shop Winterhude +Gertigstraße 68, 53.582948, 10.018921, Karfreitag, Ostersamstag, Ostermontag 12:00 - 20:00 Uhr; Ostersonntag geschlossen +Sehr gute klassische Pommesbude, Mittagsgerichte. +

+ +

+Die Gertigstrasse geht über in den Mühlenkamp, der ist auch gesäumt mit Futterbuden… . +

+ +
+ +

Abseits

+
+ +

+Zur Gondel +Kaemmererstraße 25, 53.584939, 10.030493, Samstag, Sonntag und an Feiertagen 12:00 - 23:00 Uhr (Abendkarte), Bootsvermietung täglich ab 10:00 Uhr bis Dämmerung +Café, Restaurant, Bootsverleih +

+ +
+ +

Supermärkte

+
+ +

+Edeka +MK Medienpark Kampnagel, Jarrestraße 2 - 6, 53.583770, 10.020486, Ostersamstag 07:00 - 21:00 Uhr +

+ +

+Rewe +Jarrestraße 44, 53.584841, 10.025443, Sa 07:00 - 23:00 Uhr +

+ +

+Budni +Jarrestraße 47, 53.585196, 10.025549, Ostersamstag 08:00 - 21:00 Uhr +

+ +

+Budni +Gertigstraße 24, 53.581893, 10.015189, Ostersamstag 08:30 - 20:30 Uhr +

+ +

+Merkant Markt +Barmbeker Straße 17-19, 53.584401, 10.018415, Ostersamstag 07:00 - 22:00 Uhr +

+ +

+Aldi +Barmbeker Straße 17-25, 53.584431, 10.017811, Ostersamstag 07:00 - 21:00 Uhr +

+ +

+Tjaden's BioFrischmarkt +Gertigstraße 28, 53.582083, 10.015752, Ostersamstag 08:00 - 20:00 Uhr +

+ +

+Penny +Mühlenkamp 32, 53.581611, 10.011747, Ostersamstag 07:00 - 22:00 Uhr +

+ +
+ +

Kioske

+
+ +

+Avanti World of Kiosk +Jarrestraße 11, 53.584128, 10.020440, immer von 06:00 - 22:00 Uhr (außer am 1. Weihnachtsfeiertag) +Kiosk, Post (Hermes), vielleicht auch über Ostern belegte Brötchen +

+ +

+Avanti Kiosk +Jarrestraße 26, 53.584421, 10.023140, 10:00 - 22:00 Uhr +Kiosk, Post (DHL), vielleicht auch über Ostern belegte Brötchen +

+ +

+Merkant Markt Kiosk +Barmbeker Straße 17-19, 53.584339/10.017959, Ostersamstag 08:00 - 19:00 Uhr +Kiosk, Post (Hermes), Tabakwarenfachgeschäft +

+ +

+Kiosk 48 +Gertigstraße 48, 53.582336, 10.016747, Ostersamstag 09:00 - 21:00 Uhr, Sonntag und Feiertage: 10:00 - 21:00 Uhr +Kiosk, Deutsche Post, Geldautomat „cashzone“ +

+ +

+Linda Café Kiosk +Gertigstraße 65?/ Ecke Knickstraße, 53.583048, 10.018263, über Ostern von 10:00 bis ca. 20:00 Uhr +Café, Eisdiele, Kiosk +

+ +
+ +

Sonstiges

+
+ +

+Postshop Alstercity +Weidestraße 122 b, Alstercity Einkaufszentrum, 53.582691, 10.028216, Samstag 09:00 - 13:00 Uhr +

+ +

+Bunte Blüten +Jarrestraße 43, 53.585119, 10.025191, 10:00 - 18:00 Uhr bzw. am Ostersamstag vielleicht auch schon ab 08:00 oder 09:00 Uhr geöffnet +Blumengeschäft +

+ +

+Genuss-Faktorei - Tee, Geschenke, Gewürze, Öle, Essige +Gertigstraße 5, 53.581442, 10.012702, Ostersamstag 11:00 - 19:00 Uhr, Pause von 14:30 bis 15:00 Uhr +Kleiner, feiner Laden und Café mit kleiner, charmanter Bürgersteigterrasse. Kaffeebohnen von der Kaffeerösterei Burg. Pralinen u. a. aus Frankreich und Österreich, Eierlikör, Tee- und Kaffeegeschirr, Teekannen, French Press, Porzellan-Kaffeefilter u. a. sowie Tee, Gewürze, Öle, Essige +

+ +

+HS Mobile Store +Gertigstraße 8, 53.581237, 10.013040, Ostersamstag 10:30 - 15:00 Uhr +Ankauf, Verkauf, Zubehör - Reparatur von Handys und Tablets +

+ +
+ +

Geldautomaten

+
+ +

+Haspa +Jarrestraße 28, 53.584500, 10.023666, 06:00 - 23:00 Uhr +

+ +

+Haspa +Mühlenkamp 34, 53.581834, 10.011667, Montag bis Sonntag, auch an Feiertagen 00:00 - 23:59 Uhr (rund um die Uhr geöffnet) +

+ +

+Haspa +Weidestraße 122 b, Alstercity Einkaufszentrum, 53.582691, 10.028216, Samstag 07:00 - 19:00 Uhr +

+ +

+cashzone +Gertigstraße 48, vor dem „Kiosk 48“, 53.582336, 10.016747 +

+ +

+Postbank +Weidestraße 122 b, Alstercity Einkaufszentrum, 53.582691, 10.028216, Samstag 07:00 - 19:00 Uhr +

+ +
+ +

Apotheken

+
+ +

+Kampnagel Internationale Apotheke +Jarrestraße 2, 53.583568, 10.020204, Ostersamstag 09:00 - 13:00 Uhr +

+ +

+Passat-Apotheke +Barmbeker Straße 17-19, 53.584379, 10.018040, Ostersamstag 08:00 - 18:00 Uhr +

+ +
+ +

Mobilität

+
+ +
+ +
Fahrrad
+
+ +

+Stadtrad und hvv switch +Jarrestraße 8, 53.584003, 10.021070, 23 Fahrradsäulen = max. 23 Fahrräder vor Ort +Leihfahrräder +

+ +

+Fahrradständer +Jarreestraße 10 (vor dem Kampnagel), 53.584160, 10.021753 +etwa 12 Fahrradständer für je 2 Fahrräder = Platz für 24 Fahrräder +

+ +

+DeZwarteFiets +Jarrestraße 29, 53.58481, 10.02386, Sa 09:00 - 18:00 Uhr +Fahrradladen. Kein Luftservice! +

+ +
+ +
Bus
+
+ +

+Ersatz-Bushaltestelle für 17 und 172 +Jarrestraße 6, 53.583864, 10.020330, aktuell stellt der hvv aufgrund der Baustelle in der Jarrestr. keinen offiziellen Haltestellenaushang zur Verfügung. Darum hängt da nun seit Tag 1 ein selbst ausgedruckter, laminierter und handschriftlich kommentierter Haltestellenaushang. Da wir leider nur noch eine Laminierfolie hatten, ist es leider eine Doppelseite geworden, die man jedoch dank improvisierter Schnur vorsichtig „umblättern“ kann, ohne die Doppelseite vom Pfosten abzureißen. +

+ +
+ +
Auto
+
+ +

+Parkhaus Kampnagel +Jarrestraße 6 (Einfahrt links neben Edeka), 53.583895, 10.020784 +Barmbeker Straße 2 - 12 (Einfahrt rechts neben Paracelsus), 53.582841, 10.019617 +

+ +

+Ladestation für E-Autos +Jarrestraße 10, 53.584160, 10.021753 +Ladepunkt 2385 + Ladepunkt 2384 +

+ +
+ +

Anmerkung

+
+ +

+Da, wo keine Uhrzeiten stehen ist nicht geklärt, ob und wann sie über Ostern geöffnet haben. +

+ +

+Essen gehen: Reservierungen werden im Allgemeinen empfohlen - gerade bei größeren Gruppen. Ggf. stehen auch noch Details über die Wichtigkeit einer Reservierung („unbedingt“, „immer“, etc.) und den bevorzugten Kommunikationsweg (Tel., E-Mail, etc.) bei den einzelnen Einträgen. +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/network.html b/eh22.easterhegg.eu/_export/xhtml/network.html new file mode 100644 index 0000000..7b9d66b --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/network.html @@ -0,0 +1,59 @@ + + + + + network + + + + + + + + + + + + + + +
+ +

Netzwerk

+
+ +

+Auf Kampnagel gibt sowohl WLAN unter der SSID EH22 als auch kabelgebundenes Internet in der K6 (Hackcenter). +

+ +

+Die angebotene Netzwerkverbindung führt direkt ins Internet und hat weder Firewalls noch anderweitige Filter. Schützt eure Geräte also selbst! +

+ +
+ +

Verhaltensregeln

+
+ + +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/sos.html b/eh22.easterhegg.eu/_export/xhtml/sos.html new file mode 100644 index 0000000..6122fec --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/sos.html @@ -0,0 +1,417 @@ + + + + + sos + + + + + + + + + + + + + + +
+ +
+

Inhaltsverzeichnis

+
+ + +
+
+ + +

Self-organized Sessions

+
+ +

+Auf dieser Seite habt ihr Gelegenheit, eure eigenen Themen für Workshops o. ä. anzubieten. Ihr könnt euch als Ort einen Tisch auf der Piazza (bei entsprechendem Wetter), im Hackcenter oder im Hauptfoyer suchen. Sofern im Fahrplan nichts anderes steht, könnt ihr auch die Workshopräume P1 und Links vorbei nutzen. Bitte beachtet, das eine Fahrplan-Belegung des Workshop-Raums immer Vorrang hat.
+ +Wenn ihr möchtet, könnt ihr für euer Thema eine Unterseite anlegen und in der Tabelle verlinken. +

+ +

+English On this page you can offer your own topics as workshops or similar. You can pick a spot on the Piazza (weather allowing) or in the Hackcenter or central foyer. If the schedule shows that a workshop room („Links vorbei“ or P1) is unoccupied, you can use those rooms as well. Please note that any scheduled workshop take precedence. + +If you like, you can create a page below this page for your topic and link to it from the table. +

+
+

+Tipp: klicke auf den „Bearbeiten“ Knopf unten an der Tabelle, um sie im grafischen Editor zu bearbeiten
+ +–
+ +Tip: klick the „Bearbeiten“ button on the bottom left of the table to access the graphical editor +

+
+
+ +

Freitag/Friday 18. April

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Zeit/Time Links vorbei P1 custom location custom location custom location
15:00 OPENING OPENING OPENING OPENING OPENING
15:30 Title
+Name
16:00
16:30
17:00
17:30
18:00
18:30
19:00 Jet Lag Hide and Seek Besprechung
+hideandseek (DECT 5584)
19:30 Jet Lag Hide and Seek Besprechung
+hideandseek (DECT 5584)
20:00
20:30
21:00
21:30
22:00
22:30
+ +
+ +

Samstag/Saturday 19. April

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Zeit/Time Links rum P1 custom location custom location custom location
09:00 Title
+Name
09:30
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00 Mechanical Keyboard Meetup -
+Für alle Interessierten um das Thema zum Austausch und Ausprobieren.
+Bringt gern Eure Keyboards mit.
+(Location: TBA / SIP: 7267 /
+Mastodon: opendev)
Cross Stitch Workshop (Location: Hardwarehacking (k4))
+ Contact: rhandos / DECT: 6958
+Stitch patterns
15:30 Mechanical Keyboard Meetup -
+Für alle Interessierten um das Thema zum Austausch und Ausprobieren.
+Bringt gern Eure Keyboards mit.
+(Location: TBA / SIP: 7267 /
+Mastodon: opendev)
Cross Stitch Workshop (Location: Hardwarehacking (k4))
+Contact: rhandos / DECT: 6958
+Stitch patterns
16:00
16:30
17:00
17:30 17:15 Treffen zwischen Einlass und Peacetambul, dann gehts ins Hackcenter - TalOS selbst aufsetzen Workshop (bitte möglichkeit schnell viele VMs aufsetzen zu können mitbringen), der follow up zu Nestbau mit TalOS k8s 🐇
18:00
18:30
19:00
19:30 Artificial Intelligence Meets Cybersecurity I
+AI Impact on Cybersecurity [Focus IR]
+– @JediNomad:matrix.org
20:00 Artificial Intelligence Meets Cybersecurity II
+AI Impact on Cybersecurity [Focus IR]
+– @JediNomad:matrix.org
Geschmacksexkursion in die Welt des Gurkeswassers
+Bitte eigenes Trinkgefäß mitnehmen.
+Optional: Gurken und Mischgetränke mitbringen.
+[Location: Flensburg, bei den 3D-Druckern. ]
20:30
21:00
21:30
22:00
22:30
23:00
+ +
+ +

Sonntag/Sunday 20. April

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Zeit/Time Links rum P1 custom location custom location custom location
09:00
09:30
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30
16:00
16:30
17:00
17:30
18:00 Blackscreen im Kopf
+Aphanatsie Meetup
+Offenes Treffen für Menschen mit Aphantasie, Hypophantasie oder Interesse an dem Thema. (DECT: 6897, @glueff:matrix.org)
18:30
19:00 Artificial Intelligence Meets Cybersecurity III
+Frameworks for Cybersecurity in the Age of AI
+– @JediNomad:matrix.org
19:30 Artificial Intelligence Meets Cybersecurity IV
+Frameworks for Cybersecurity in the Age of AI
+– @JediNomad:matrix.org
20:00
20:30
21:00
21:30
22:00
22:30
23:30 Meowing session
+[Location: West Foyer.
Barking session
+[Location: West Foyer.
(23:37) Beeping session
+[Location: West Foyer.
+ +
+ +

Montag/Monday 21. April

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Zeit/Time Links rum P1 custom location custom location custom location
09:00
09:30
10:00
10:30
11:00
11:30
12:00
12:30 Erfahrungsaustausch Bevölkerungsschutz - irgendwas zwischen Selbsthilfegruppe und konstruktiver Ausbildungsideenbörse
13:00 Erfahrungsaustausch Bevölkerungsschutz - irgendwas zwischen Selbsthilfegruppe und konstruktiver Ausbildungsideenbörse
13:30
14:00
14:30
15:00 ENDE ENDE ENDE ENDE ENDE
+ +
+ +

Ongoing Workshop

+
+ +

+Im CERT gibt es ein Bombenentschärfspiel (verschärfte Variante) (Ähnlich wie Keep Talking and Nobody explodes) https://heathbar.github.io/keep-talking/ +

+ +

+Slots kann man hier buchen: https://bombgame.cert.ccc.de/eh22/bombdefuse/ (kostet natürlich nichts) +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/start.html b/eh22.easterhegg.eu/_export/xhtml/start.html new file mode 100644 index 0000000..bf8a869 --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/start.html @@ -0,0 +1,140 @@ + + + + + start + + + + + + + + + + + + + + +
+ +
+

Inhaltsverzeichnis

+
+ + +
+
+ + +

Easterhegg 2025

+
+ +

+Das 22. Easterhegg – Unhandled Eggception – fand vom 18. bis 21. April 2025 in Hamburg statt.
+ +

+ +
+ +

Wer hat's dir verraten? Metadaten!

+
+ + + + + + +
+ +

Kontakt

+
+ + +
+ +

Mehr Infos

+
+ +

+Zuätzliche Informationen werden wir auf dieser Webseite sowie im Fediverse zu gegebener Zeit veröffentlichen. +

+ +
+ +

Ein Dank an die Stadt Hamburg

+
+ +

+Wir werden gefördert durch die Freie und Hansestadt +Hamburg, Behörde für Kultur und Medien! +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/ticket-exchange.html b/eh22.easterhegg.eu/_export/xhtml/ticket-exchange.html new file mode 100644 index 0000000..c07ce7d --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/ticket-exchange.html @@ -0,0 +1,114 @@ + + + + + ticket-exchange + + + + + + + + + + + + + + +
+ +

Ticket-Exchange

+
+ +

+Für diejenigen, die ein Ticket haben, aber doch nicht angehoppelt kommen können.
+ +Und für diejenigen, die gern dabei sein möchten, aber bei der Ticket-Klickerei leer ausgegangen sind.
+ +

+
+ +

+For those that got tickets but can't hop on, and those that want to come but didn't get a ticket. +

+
+

+Die Angebote auf dieser Seite wurden von Besucher:innen angelegt und wurden von der Eventorga nicht geprüft!
+ +–
+ +The offers on this page are submitted by other users and not vetted or endorsed by the event organizers! +

+
+
+ +

Biete / Offers

+
+
+ + + + + + + + + + + + + + + + + + + + +
Name, Kontakt
+name, contact info
Anzahl, Art
+amount, type
Preis verhandelbar?
+price negotiable?
Mimi Mümmelnase example entry yes/no
daswarkeinhuhn@netzkae.se (Anm.: Stimmt die E-Mail?) 1x Standard: 85€ yes
Panda eh22@diepanda.xyz 1x Standard: 50€ — 1x Zipper Hoodie - Navy L 40€ yes
fedi: nobody_su@chaos.social 1x Standard € 85.- no
+ +

+
+ +

+
+

+Tipp: klicke auf den „Bearbeiten“ Knopf unten an der Tabelle, um sie im grafischen Editor zu bearbeiten
+ +–
+ +Tip: klick the „Bearbeiten“ button on the bottom left of the table to access the graphical editor +

+
+
+ +

Suche / Requests

+
+
+ + + + + + + + + + + + + + +
Name, Kontakt
+name, contact info
Anzahl, Art
+amount, type
Hier könnte dein Name stehen Und das was du suchst
+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/tickets.html b/eh22.easterhegg.eu/_export/xhtml/tickets.html new file mode 100644 index 0000000..278d119 --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/tickets.html @@ -0,0 +1,103 @@ + + + + + tickets + + + + + + + + + + + + + + +
+ +

Tickets

+
+
+

+Die Veranstaltung ist komplett ausverkauft, ein Ticketverkauf vor Ort findet nicht statt!
+ +Schaut alternativ beim Ticket-Exchange vorbei. +

+
+

+Wenn du es dir erlauben kannst wäre es toll das „Shut up and Take my Money“ Ticket zu wählen – damit ermöglichst du uns die ermässigten Tickets für Menschen mit schmalerem Budget. +

+ +

+Menschen bis 12 Jahre erhalten kostenfreien Eintritt. +

+ +
+ +

Ticketpreise

+
+ +

+Die Ticketpreise können wir nur einhalten, da wir durch die Freie und Hansestadt +Hamburg, Behörde für Kultur und Medien gefördert werden! +

+ +

+„Hopp Hopp Hopp“ für 85€
+ +Standardticket, reicht grade so für die Kosten +

+ +

+„Shut up and Take my Money“ für 105€
+ +Für alle die sich mehr leisten können und uns helfen wollen die ermäßigten Tickets zu finanzieren +

+ +

+„Kleine Sprünge“ für 49€
+ +Das Ticket für Junghacker:innen und alle die sich keine großen Sprünge leisten können +

+ +
+ +

Ablauf

+
+ +

+Wir werden die Tickets in drei Tranchen verkaufen, +damit jedes die Möglichkeit hat zu kompatiblen Zeiten zu klicken. +evtl. Reste werden dann in einem vierten Lauf verkauft. +

+ +

+Die Termine sind: +

+ + +

+Der Verkauf findet hier statt:
+ +https://presale.eh22.easterhegg.eu +

+ +

+Hackertours Tickets gibt es ab dem 2. März im Hackertours-Shop. +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/transit.html b/eh22.easterhegg.eu/_export/xhtml/transit.html new file mode 100644 index 0000000..63ca5b8 --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/transit.html @@ -0,0 +1,132 @@ + + + + + transit + + + + + + + + + + + + + + +
+ +

Öffentlicher Personennahverkehr

+
+ +
+ +

Baustelle

+
+ +

+Nach aktueller Informationslage ist die Jarrestraße während des Events halbseitig gesperrt. +Vorraussichtlich wird der Verkehr Richtung Westen / B5 / U Feldstraße / Mundsburger Brücke über den Wiesendamm und die Weidestraße umgeleitet. +

+
+ +
+ +

Allgemeine Infos

+
+ +

+Für Gruppe bietet es sich an eine Gruppenkarte zu erwerben. Nähere Infos gibt es hier +

+ +

+Für Erkundung diverser Reiseziele Hamburgs mit dem HVV gibt es eine recht brauchbare APP für Android und iPhone +

+ +
+ +
Bahnstationen
+
+ +

+Ca. 1km zu Fuß: +

+ + +

+Bus 17: +

+ + +

+Bus 172: +

+ + +
+ +
Bushaltestellen
+
+ +

+Während des Events sind folgende Haltestellen fußläufig erreichbar: +

+ +

+Jarrestraße (Kampnagel): +

+ + +

+Semperstraße: +

+ + +

+Flotowstraße: +

+ + +
+
+ + diff --git a/eh22.easterhegg.eu/_export/xhtml/travel.html b/eh22.easterhegg.eu/_export/xhtml/travel.html new file mode 100644 index 0000000..6de4333 --- /dev/null +++ b/eh22.easterhegg.eu/_export/xhtml/travel.html @@ -0,0 +1,191 @@ + + + + + travel + + + + + + + + + + + + + + +
+ +
+

Table of Contents

+
+ + +
+
+ + +

An- und Abreise

+
+ +
+ +

Baustelle

+
+ +

+Nach aktueller Informationslage ist die Jarrestraße während des Events halbseitig gesperrt. +Vorraussichtlich wird der Verkehr Richtung Westen / B5 / Barmbeker Straße über den Wiesendamm und die Weidestraße umgeleitet. +

+ +
+ +

ÖPNV

+
+ +

+Dieser Artikel beschreibt die An- und Abreise.
+ +Weitere Informationen zum ÖPNV gibt es auf einer eigenen Seite. +

+ +

+Wie oben schon beschrieben: Auto sollte vermieden werden. Der Hamburger ÖPNV ist nicht so schlecht, also nutzt ihn doch einfach. Solltet ihr „öffentlich“ anreisen, kann eure letzte Meile wie folgt aussehen: +

+ +
+ +

Vom Hauptbahnhof kommend

+
+ +

+Mit dem Bus 17 (Richtung U/S Barmbek / Karlshöhe / U Berne - fährt von der Bushaltestelle Kirchenallee ab) bis zur Haltestelle „Jarrestraße (Kampnagel)“.
+ +Die Fahrt dauert 24 Minuten und kostet (einfache Fahrt) 3,90€. +

+ +
+ +

In Richtung Hauptbahnhof

+
+ +

+Mit dem Bus 6 oder 17 (Richtung Auf dem Sande / U Feldstraße) von der Haltestelle „Semperstraße“ in der Semperstraße.
+ +Die Fahrt dauert 24 Minuten und kostet (einfache Fahrt) 3,90€. +

+ +
+ +

Vom Airport kommend

+
+ +

+Solltet ihr mit dem Flieger anreisen (muss das sein?), nehmt ihr die S1 bis zum Bahnhof BARMBEK - dort steigt ihr in den Bus der Linie 17 (Richtung Feldstraße) und steigt an der Haltestelle „Semperstraße“ „Jarrestraße (Kampnagel)“ aus. Die Fahrt dauert 25 Minuten und kosten 3,40€ +

+ +
+ +

In Richtung Airport

+
+ +

+Mit dem Bus 17 oder 172 ab „Jarrestraße (Kampnagel)“ direkt am Gelände bis zur Haltestelle U/S Barmbek.
+ +Dort steigt ihr in die S1 Richtung Airport/Poppenbüttel. Achtet darauf in die ersten drei Wagen einzusteigen.. +

+ +
+ +

Mit dem Auto

+
+ +

+Um unseren Planeten zu schonen, bitten wir dich darüber nachzudenken, ob du mit dem Auto fahren musst. Vielleicht sind öffentliche Verkehrsmittel oder eine Mitfahrgelegenheit eine Alternative? Wenn Du mit dem Auto fährst, überlege, ob du vielleicht jemanden mitnehmen oder schweres Gepäck von anderen Reisenden transportieren kannst. Du solltest den Osterverkehr und die zu erwartenden Staus bei deiner Reise berücksichtigen, die Kraftstoffpreise werden sicherlich wieder angehoben und grundsätzlich macht Auto fahren in Hamburg wenig Freude. Nach Berlin und München ist Hamburg auf Platz drei der Städte mit den meisten Staus. +

+ +

+Die Adresse lautet: +

+
Jarrestraße 20
+22303 Hamburg
+ +

+ Routenplaner +

+ +
+ +

Parken

+
+ +

+Auf dem Kampnagel-Gelände gibt es eine kostenpflichtige Parkgarage mit Treppenhaus (ca. 50 m). +Ein Aufzug steht leider nicht zur Verfügung. +Die Einfahrt ist über die Barmbeker Straße oder die Jarrestraße möglich. +Das Parkhaus kostet 5 Euro/Std. In der Umgebung sind kostenlose Parkplätze sehr schwer zu finden. +

+ +

+Hinter den Hallen vor dem Verwaltungsgebäude (Jarrestraße 20) befinden sich zwei Parkplätze für Besucher*innen mit sensorischen oder physischen Einschränkungen und entsprechendem Parkausweis. Von dort ist Kampnagel ebenerdig zu erreichen (ca. 100 m). Die Einfahrt ist bei der Jarrestraße 20 und dann links halten. +

+ +

+In der Gegend rund um Kampnagel gibt es sehr wenig Parkplätze! Kommt, wenn irgend möglich, mit öffentlichen Verkehrsmitteln! +

+ +
+ +

Mit dem Boot

+
+ +

+Von See kommend +

+ +

+Nordsee +

+ +

+Ansteuerung des Fahrwassers der Elbe aus der Deutschen Bucht, rechts der Fahrwassermitte, je nach Tiefgang des Fahrzeugs auch außerhalb des Fahrwassers. Für die Größe von Fahrzeugen für die der Zielort erreichbar ist, gilt auf der Elbe keine Lotsenpflicht. Die Elbe ist in diesem Teil ein Tidengewässer, Wassertiefe und Strömung sind gravitationsbedingt periodischen Änderungen unterworfen. Folge dem Fahrwasser bis in den Hamburger Hafen. → 53.5407, 9.9802 +

+ +

+Ostsee +

+ +

+Ansteuerung der Kieler Förde und der östlichen Zufahrt des Nord-Ostsee-Kanals. Der Nord-Ostsee-Kanal ist für Sportboote nur in Zeitraum zwischen Sonnenaufgang und Sonnenuntergang zu befahren, es werden Gebühren für die Nutzung erhoben und es gilt eine Höchstgeschwindigkeitsregelung. Für die größe von Fahrzeugen für die der Zielort erreichbar ist, gilt für den Nord-Ostsee-Kanal keine Lotsenpflicht, der Kanal darf nicht segelnd durchfahren werden. Außerdem ist das nächtliche Befahren des Kanals ohne Radar verboten. Weitere Infos Ab der Schleuse Brunsbüttel weiter der Elbe folgend bis in den Hamburger Hafen. → 53.5407, 9.9802 +

+ +

+Alternativ: Nutzung des Elbe-Lübeck Kanals bis Lauenburg (Elbe), diverse Schleusen. Anschließend der Elbe zu Tal folgen, an der Staustufe Geesthacht zu Tal schleusen, ab hier ist die Elbe Tidegewässer, Wassertiefe und Strömung sind gravitationsbedingt periodischen Änderungen unterworfen. Ab hier der Elbe folgend 53.5407, 9.9802 ansteuern. +

+ +

+Ab 53.5407, 9.9802 +Hier kann das Fahrzeug im City Sportboothafen gelagert werden, eine Anreise mit dem ÖPNV ist wahrscheinlich schneller und weniger beschwerlich, aber ok: +

+ +

+Ansteuerung des Binnenhafens, Passage der Niederbaumbrücken. Anschließend Backbord, Einfahrt in das Alsterfleet „seeseitig“, Passage der Otto-Sill-Brücke und der Binnenhafenbrücke. Schleusung zu Berg, Passage der Schaartorschleuse. (Bei hohen Wasserständen der Elbe nicht passierbar, ab hier gilt eine Fahrerlaubnispflicht für Motorfahrzeuge, Schleusenzeiten, Rufnummer: 040 428403204) +Nach der Schaartorschleuse dem Alsterfleet Richtung NO bis zur Rathausschleuse folgen. Schleusung zu Berg (Schleusenzeiten, Rufnummer: 040 428402442), kleine Alster bis Reesendammbrücke, Binnenalster bis Lombardsbrücke / Kennedybrücke, Überquerung des 10. Meridians ostwärts, entsprechnde Zeremonie für Erstpassiernede empfohlen, anschließend auf der Außenalster bis 53.5761, 10.0061, Einfahrt in den Langen Zug, Passage der Langenzugbrücke und Einfahrt in den Osterbekkanal bis 53.58341, 10.02454, die Nutzung der Anlegeplätze ist bisher nicht geklärt und muss einzeln vom Schiffsführenden entschieden werden. Voilà… +

+ +
+
+ + diff --git a/eh22.easterhegg.eu/_media/eh22lost_-_11.jpeg?cache= b/eh22.easterhegg.eu/_media/eh22lost_-_11.jpeg?cache= new file mode 100644 index 0000000..2dd4ca2 Binary files /dev/null and b/eh22.easterhegg.eu/_media/eh22lost_-_11.jpeg?cache= differ diff --git a/eh22.easterhegg.eu/_media/eh22lost_-_11.jpeg?cache=&w=525&h=700&tok=6ce2eb b/eh22.easterhegg.eu/_media/eh22lost_-_11.jpeg?cache=&w=525&h=700&tok=6ce2eb new file mode 100644 index 0000000..5a20000 Binary files /dev/null and b/eh22.easterhegg.eu/_media/eh22lost_-_11.jpeg?cache=&w=525&h=700&tok=6ce2eb differ diff --git a/eh22.easterhegg.eu/_media/eh22lost_-_11.jpeg?w=200&tok=593b6d b/eh22.easterhegg.eu/_media/eh22lost_-_11.jpeg?w=200&tok=593b6d new file mode 100644 index 0000000..9cfb0b4 Binary files /dev/null and b/eh22.easterhegg.eu/_media/eh22lost_-_11.jpeg?w=200&tok=593b6d differ diff --git a/eh22.easterhegg.eu/_media/eh22lost_-_12.jpeg?cache= b/eh22.easterhegg.eu/_media/eh22lost_-_12.jpeg?cache= new file mode 100644 index 0000000..ffef13c Binary files /dev/null and b/eh22.easterhegg.eu/_media/eh22lost_-_12.jpeg?cache= differ diff --git a/eh22.easterhegg.eu/_media/eh22lost_-_12.jpeg?cache=&w=525&h=700&tok=a76694 b/eh22.easterhegg.eu/_media/eh22lost_-_12.jpeg?cache=&w=525&h=700&tok=a76694 new file mode 100644 index 0000000..7b3ff9e Binary files /dev/null and b/eh22.easterhegg.eu/_media/eh22lost_-_12.jpeg?cache=&w=525&h=700&tok=a76694 differ diff --git a/eh22.easterhegg.eu/_media/eh22lost_-_12.jpeg?w=200&tok=751324 b/eh22.easterhegg.eu/_media/eh22lost_-_12.jpeg?w=200&tok=751324 new file mode 100644 index 0000000..65de881 Binary files /dev/null and b/eh22.easterhegg.eu/_media/eh22lost_-_12.jpeg?w=200&tok=751324 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_1.jpeg?cache= b/eh22.easterhegg.eu/_media/lost:eh22lost_-_1.jpeg?cache= new file mode 100644 index 0000000..ac05e6c Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_1.jpeg?cache= differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_1.jpeg?cache=&w=525&h=700&tok=393f17 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_1.jpeg?cache=&w=525&h=700&tok=393f17 new file mode 100644 index 0000000..e22d06a Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_1.jpeg?cache=&w=525&h=700&tok=393f17 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_1.jpeg?w=400&tok=90c525 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_1.jpeg?w=400&tok=90c525 new file mode 100644 index 0000000..40f0e5b Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_1.jpeg?w=400&tok=90c525 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_14.jpeg?cache= b/eh22.easterhegg.eu/_media/lost:eh22lost_-_14.jpeg?cache= new file mode 100644 index 0000000..ed0164a Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_14.jpeg?cache= differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_14.jpeg?cache=&w=525&h=700&tok=7f74c0 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_14.jpeg?cache=&w=525&h=700&tok=7f74c0 new file mode 100644 index 0000000..29f6285 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_14.jpeg?cache=&w=525&h=700&tok=7f74c0 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_14.jpeg?w=200&tok=18d981 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_14.jpeg?w=200&tok=18d981 new file mode 100644 index 0000000..a41faca Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_14.jpeg?w=200&tok=18d981 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_15.jpeg?cache= b/eh22.easterhegg.eu/_media/lost:eh22lost_-_15.jpeg?cache= new file mode 100644 index 0000000..8c5682d Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_15.jpeg?cache= differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_15.jpeg?cache=&w=900&h=675&tok=85f97a b/eh22.easterhegg.eu/_media/lost:eh22lost_-_15.jpeg?cache=&w=900&h=675&tok=85f97a new file mode 100644 index 0000000..86ab960 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_15.jpeg?cache=&w=900&h=675&tok=85f97a differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_15.jpeg?w=200&tok=7dcc14 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_15.jpeg?w=200&tok=7dcc14 new file mode 100644 index 0000000..01c8a0c Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_15.jpeg?w=200&tok=7dcc14 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_16.jpeg?cache= b/eh22.easterhegg.eu/_media/lost:eh22lost_-_16.jpeg?cache= new file mode 100644 index 0000000..917faf6 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_16.jpeg?cache= differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_16.jpeg?cache=&w=900&h=675&tok=e1f989 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_16.jpeg?cache=&w=900&h=675&tok=e1f989 new file mode 100644 index 0000000..a0744ef Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_16.jpeg?cache=&w=900&h=675&tok=e1f989 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_16.jpeg?w=200&tok=f016aa b/eh22.easterhegg.eu/_media/lost:eh22lost_-_16.jpeg?w=200&tok=f016aa new file mode 100644 index 0000000..a8644c0 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_16.jpeg?w=200&tok=f016aa differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_17.jpeg?cache= b/eh22.easterhegg.eu/_media/lost:eh22lost_-_17.jpeg?cache= new file mode 100644 index 0000000..56b352a Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_17.jpeg?cache= differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_17.jpeg?cache=&w=900&h=675&tok=a8b142 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_17.jpeg?cache=&w=900&h=675&tok=a8b142 new file mode 100644 index 0000000..dc5ea26 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_17.jpeg?cache=&w=900&h=675&tok=a8b142 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_17.jpeg?w=200&tok=84aff4 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_17.jpeg?w=200&tok=84aff4 new file mode 100644 index 0000000..bfd0b88 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_17.jpeg?w=200&tok=84aff4 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_19.jpeg?cache= b/eh22.easterhegg.eu/_media/lost:eh22lost_-_19.jpeg?cache= new file mode 100644 index 0000000..f31856a Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_19.jpeg?cache= differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_19.jpeg?cache=&w=900&h=675&tok=128727 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_19.jpeg?cache=&w=900&h=675&tok=128727 new file mode 100644 index 0000000..e154ac9 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_19.jpeg?cache=&w=900&h=675&tok=128727 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_19.jpeg?w=200&tok=3406a7 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_19.jpeg?w=200&tok=3406a7 new file mode 100644 index 0000000..040e765 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_19.jpeg?w=200&tok=3406a7 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_2.jpeg?cache= b/eh22.easterhegg.eu/_media/lost:eh22lost_-_2.jpeg?cache= new file mode 100644 index 0000000..5a8c839 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_2.jpeg?cache= differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_2.jpeg?cache=&w=525&h=700&tok=9b94e3 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_2.jpeg?cache=&w=525&h=700&tok=9b94e3 new file mode 100644 index 0000000..283f4ac Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_2.jpeg?cache=&w=525&h=700&tok=9b94e3 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_2.jpeg?w=200&tok=956cbf b/eh22.easterhegg.eu/_media/lost:eh22lost_-_2.jpeg?w=200&tok=956cbf new file mode 100644 index 0000000..38506b2 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_2.jpeg?w=200&tok=956cbf differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_20.jpeg?cache= b/eh22.easterhegg.eu/_media/lost:eh22lost_-_20.jpeg?cache= new file mode 100644 index 0000000..41e883f Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_20.jpeg?cache= differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_20.jpeg?cache=&w=525&h=700&tok=8b9f1a b/eh22.easterhegg.eu/_media/lost:eh22lost_-_20.jpeg?cache=&w=525&h=700&tok=8b9f1a new file mode 100644 index 0000000..2f95327 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_20.jpeg?cache=&w=525&h=700&tok=8b9f1a differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_20.jpeg?w=200&tok=67ef7d b/eh22.easterhegg.eu/_media/lost:eh22lost_-_20.jpeg?w=200&tok=67ef7d new file mode 100644 index 0000000..a64033c Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_20.jpeg?w=200&tok=67ef7d differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_21.jpeg?cache= b/eh22.easterhegg.eu/_media/lost:eh22lost_-_21.jpeg?cache= new file mode 100644 index 0000000..046889f Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_21.jpeg?cache= differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_21.jpeg?cache=&w=525&h=700&tok=c3e9de b/eh22.easterhegg.eu/_media/lost:eh22lost_-_21.jpeg?cache=&w=525&h=700&tok=c3e9de new file mode 100644 index 0000000..9a6cf59 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_21.jpeg?cache=&w=525&h=700&tok=c3e9de differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_21.jpeg?w=200&tok=c77266 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_21.jpeg?w=200&tok=c77266 new file mode 100644 index 0000000..f3f1219 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_21.jpeg?w=200&tok=c77266 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_22.jpeg?cache= b/eh22.easterhegg.eu/_media/lost:eh22lost_-_22.jpeg?cache= new file mode 100644 index 0000000..a859629 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_22.jpeg?cache= differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_22.jpeg?cache=&w=525&h=700&tok=ba7dc1 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_22.jpeg?cache=&w=525&h=700&tok=ba7dc1 new file mode 100644 index 0000000..6aa82b4 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_22.jpeg?cache=&w=525&h=700&tok=ba7dc1 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_22.jpeg?w=200&tok=4e8bf5 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_22.jpeg?w=200&tok=4e8bf5 new file mode 100644 index 0000000..5d385e3 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_22.jpeg?w=200&tok=4e8bf5 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_3.jpeg?cache= b/eh22.easterhegg.eu/_media/lost:eh22lost_-_3.jpeg?cache= new file mode 100644 index 0000000..aed3179 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_3.jpeg?cache= differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_3.jpeg?cache=&w=525&h=700&tok=b8fdfd b/eh22.easterhegg.eu/_media/lost:eh22lost_-_3.jpeg?cache=&w=525&h=700&tok=b8fdfd new file mode 100644 index 0000000..ffa7e26 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_3.jpeg?cache=&w=525&h=700&tok=b8fdfd differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_3.jpeg?w=200&tok=a33e04 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_3.jpeg?w=200&tok=a33e04 new file mode 100644 index 0000000..923acc9 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_3.jpeg?w=200&tok=a33e04 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_4.jpeg?cache= b/eh22.easterhegg.eu/_media/lost:eh22lost_-_4.jpeg?cache= new file mode 100644 index 0000000..eed1121 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_4.jpeg?cache= differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_4.jpeg?cache=&w=525&h=700&tok=f21610 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_4.jpeg?cache=&w=525&h=700&tok=f21610 new file mode 100644 index 0000000..fe66d48 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_4.jpeg?cache=&w=525&h=700&tok=f21610 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_4.jpeg?w=200&tok=3c7fd5 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_4.jpeg?w=200&tok=3c7fd5 new file mode 100644 index 0000000..d46de96 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_4.jpeg?w=200&tok=3c7fd5 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_5.jpeg?cache= b/eh22.easterhegg.eu/_media/lost:eh22lost_-_5.jpeg?cache= new file mode 100644 index 0000000..9cffa90 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_5.jpeg?cache= differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_5.jpeg?cache=&w=525&h=700&tok=ec7400 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_5.jpeg?cache=&w=525&h=700&tok=ec7400 new file mode 100644 index 0000000..7784d87 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_5.jpeg?cache=&w=525&h=700&tok=ec7400 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_5.jpeg?w=200&tok=2d4cac b/eh22.easterhegg.eu/_media/lost:eh22lost_-_5.jpeg?w=200&tok=2d4cac new file mode 100644 index 0000000..af9f5bb Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_5.jpeg?w=200&tok=2d4cac differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_6.jpeg?cache= b/eh22.easterhegg.eu/_media/lost:eh22lost_-_6.jpeg?cache= new file mode 100644 index 0000000..9ec4a85 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_6.jpeg?cache= differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_6.jpeg?cache=&w=900&h=675&tok=832657 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_6.jpeg?cache=&w=900&h=675&tok=832657 new file mode 100644 index 0000000..f29461a Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_6.jpeg?cache=&w=900&h=675&tok=832657 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_6.jpeg?w=200&tok=4185a5 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_6.jpeg?w=200&tok=4185a5 new file mode 100644 index 0000000..1643f51 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_6.jpeg?w=200&tok=4185a5 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_8.jpeg?cache= b/eh22.easterhegg.eu/_media/lost:eh22lost_-_8.jpeg?cache= new file mode 100644 index 0000000..9b591e2 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_8.jpeg?cache= differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_8.jpeg?cache=&w=900&h=675&tok=28c252 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_8.jpeg?cache=&w=900&h=675&tok=28c252 new file mode 100644 index 0000000..a70d9f3 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_8.jpeg?cache=&w=900&h=675&tok=28c252 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_8.jpeg?w=200&tok=e69dc1 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_8.jpeg?w=200&tok=e69dc1 new file mode 100644 index 0000000..5091a9d Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_8.jpeg?w=200&tok=e69dc1 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_9.jpeg?cache= b/eh22.easterhegg.eu/_media/lost:eh22lost_-_9.jpeg?cache= new file mode 100644 index 0000000..a13149c Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_9.jpeg?cache= differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_9.jpeg?cache=&w=525&h=700&tok=b02357 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_9.jpeg?cache=&w=525&h=700&tok=b02357 new file mode 100644 index 0000000..bc344b4 Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_9.jpeg?cache=&w=525&h=700&tok=b02357 differ diff --git a/eh22.easterhegg.eu/_media/lost:eh22lost_-_9.jpeg?w=200&tok=fbad82 b/eh22.easterhegg.eu/_media/lost:eh22lost_-_9.jpeg?w=200&tok=fbad82 new file mode 100644 index 0000000..33096fc Binary files /dev/null and b/eh22.easterhegg.eu/_media/lost:eh22lost_-_9.jpeg?w=200&tok=fbad82 differ diff --git a/eh22.easterhegg.eu/_media/merch:stsu177.pdf b/eh22.easterhegg.eu/_media/merch:stsu177.pdf new file mode 100644 index 0000000..119c25c Binary files /dev/null and b/eh22.easterhegg.eu/_media/merch:stsu177.pdf differ diff --git a/eh22.easterhegg.eu/_media/merch:stsu179.pdf b/eh22.easterhegg.eu/_media/merch:stsu179.pdf new file mode 100644 index 0000000..2ab1d3e Binary files /dev/null and b/eh22.easterhegg.eu/_media/merch:stsu179.pdf differ diff --git a/eh22.easterhegg.eu/_media/merch:sttu169.pdf b/eh22.easterhegg.eu/_media/merch:sttu169.pdf new file mode 100644 index 0000000..7d27f76 Binary files /dev/null and b/eh22.easterhegg.eu/_media/merch:sttu169.pdf differ diff --git a/eh22.easterhegg.eu/_media/merch:sttw174.pdf b/eh22.easterhegg.eu/_media/merch:sttw174.pdf new file mode 100644 index 0000000..b77650e Binary files /dev/null and b/eh22.easterhegg.eu/_media/merch:sttw174.pdf differ diff --git a/eh22.easterhegg.eu/_media/wiki:favicon.ico?crop=1 b/eh22.easterhegg.eu/_media/wiki:favicon.ico?crop=1 new file mode 100644 index 0000000..356685d Binary files /dev/null and b/eh22.easterhegg.eu/_media/wiki:favicon.ico?crop=1 differ diff --git a/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=114&h=114&crop=1&tok=5dc74b b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=114&h=114&crop=1&tok=5dc74b new file mode 100644 index 0000000..356685d Binary files /dev/null and b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=114&h=114&crop=1&tok=5dc74b differ diff --git a/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=120&h=120&crop=1&tok=8f0b89 b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=120&h=120&crop=1&tok=8f0b89 new file mode 100644 index 0000000..356685d Binary files /dev/null and b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=120&h=120&crop=1&tok=8f0b89 differ diff --git a/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=144&h=144&crop=1&tok=9a025c b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=144&h=144&crop=1&tok=9a025c new file mode 100644 index 0000000..356685d Binary files /dev/null and b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=144&h=144&crop=1&tok=9a025c differ diff --git a/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=152&h=152&crop=1&tok=ecfdec b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=152&h=152&crop=1&tok=ecfdec new file mode 100644 index 0000000..356685d Binary files /dev/null and b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=152&h=152&crop=1&tok=ecfdec differ diff --git a/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=180&h=180&crop=1&tok=daa971 b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=180&h=180&crop=1&tok=daa971 new file mode 100644 index 0000000..356685d Binary files /dev/null and b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=180&h=180&crop=1&tok=daa971 differ diff --git a/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=192&h=192&crop=1&tok=4f1cfa b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=192&h=192&crop=1&tok=4f1cfa new file mode 100644 index 0000000..356685d Binary files /dev/null and b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=192&h=192&crop=1&tok=4f1cfa differ diff --git a/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=32&h=32&crop=1&tok=562644 b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=32&h=32&crop=1&tok=562644 new file mode 100644 index 0000000..356685d Binary files /dev/null and b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=32&h=32&crop=1&tok=562644 differ diff --git a/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=57&h=57&crop=1&tok=a0e638 b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=57&h=57&crop=1&tok=a0e638 new file mode 100644 index 0000000..356685d Binary files /dev/null and b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=57&h=57&crop=1&tok=a0e638 differ diff --git a/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=60&h=60&crop=1&tok=aa4218 b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=60&h=60&crop=1&tok=aa4218 new file mode 100644 index 0000000..356685d Binary files /dev/null and b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=60&h=60&crop=1&tok=aa4218 differ diff --git a/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=72&h=72&crop=1&tok=edd294 b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=72&h=72&crop=1&tok=edd294 new file mode 100644 index 0000000..356685d Binary files /dev/null and b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=72&h=72&crop=1&tok=edd294 differ diff --git a/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=76&h=76&crop=1&tok=e86e06 b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=76&h=76&crop=1&tok=e86e06 new file mode 100644 index 0000000..356685d Binary files /dev/null and b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=76&h=76&crop=1&tok=e86e06 differ diff --git a/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=96&h=96&crop=1&tok=69ba44 b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=96&h=96&crop=1&tok=69ba44 new file mode 100644 index 0000000..356685d Binary files /dev/null and b/eh22.easterhegg.eu/_media/wiki:favicon.ico?w=96&h=96&crop=1&tok=69ba44 differ diff --git a/eh22.easterhegg.eu/_media/wiki:logo-off.svg b/eh22.easterhegg.eu/_media/wiki:logo-off.svg new file mode 100644 index 0000000..8a84786 --- /dev/null +++ b/eh22.easterhegg.eu/_media/wiki:logo-off.svg @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eh22.easterhegg.eu/_media/wiki:logo-on.svg b/eh22.easterhegg.eu/_media/wiki:logo-on.svg new file mode 100644 index 0000000..6c5304e --- /dev/null +++ b/eh22.easterhegg.eu/_media/wiki:logo-on.svg @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eh22.easterhegg.eu/awareness.html b/eh22.easterhegg.eu/awareness.html new file mode 100644 index 0000000..b1cf682 --- /dev/null +++ b/eh22.easterhegg.eu/awareness.html @@ -0,0 +1,467 @@ + + + + + + + + + + + + + + + + + + + + +Awareness [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
Metainformationen zur Seite
+ +
+
    +
  •  
  • +
+ +
+
+
+
+
+
+ +
+
Übersetzungen dieser Seite:
+
+
+
+ +

Awareness

+
+ +

+Das Awarenessteam steht dir insbesondere zur Seite, wenn: +

+
    +
  • du belästigt wurdest,
    +
  • +
  • deine persönlichen Grenzen missachtet wurden,
    +
  • +
  • du Diskriminierung erlebt hast,
    +
  • +
  • du (persönliche oder strukturelle) Diskriminierung mitbekommen hast,
    +
  • +
  • du dich unwohl fühlst und eine Person zum Reden brauchst.
    +
  • +
+ +
+ +

Kontakt

+
+
    +
  • DECT: 113
    +
  • +
  • Telefon: +49 40 5730830 113
    +
  • +
  • Mastodon: @c3awareness@chaos.social
    +
  • +
  • Matrix: @c3awareness:fairydust.space
    +
  • +
  • Email: team@c3awareness.de
    +
  • +
+ +

+Mehr über uns als Team und Awareness-Arbeit findest du auf unserer Webseite. +

+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/coc.html b/eh22.easterhegg.eu/coc.html new file mode 100644 index 0000000..be26426 --- /dev/null +++ b/eh22.easterhegg.eu/coc.html @@ -0,0 +1,683 @@ + + + + + + + + + + + + + + + + + + + + +Easterhegg CoC [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
Metainformationen zur Seite
+ +
+ + +
+
+
+
+
+
+ +
+
Übersetzungen dieser Seite:
+
+
+
+ +

Easterhegg CoC

+
+ +

+english version +

+ +
+ +

Kurzfassung

+
+ +

+Der EasterHegg hat es sich zum Ziel gesetzt, eine belästigungs- und diskriminierungsfreie Veranstaltung für alle zu bieten, ungeachtet ihres Geschlechts, der Geschlechtsidentität und des Geschlechtsausdrucks, der sexuellen Orientierung, der körperlichen und geistigen Fähigkeiten, der äußeren Erscheinung, des Körperbaus, des Aussehens, der Körpergröße, des Alters, der ethnischen, regionalen und/ oder religiösen Zugehörigkeit bzw. Herkunft oder der sozioökonomischen Stellung. +

+ +

+Auch wenn dieses Ziel aufgrund der gesellschaftlichen Machtverhältnisse nicht in Gänze erreicht werden kann, wollen wir darauf hinwirken. +Teilnehmer*innen, die diesem Ziel zuwiderhandeln, können nach dem Ermessen der Organisator*innen mit Sanktionen belegt oder von der Veranstaltung ausgeschlossen werden. +

+ +
+ +

Durchsetzung

+
+ +

+Von Teilnehmer*innen, die aufgefordert werden, belästigendes Verhalten zu unterlassen, wird erwartet, dass sie dem sofort nachkommen. +Bei belästigendem Verhalten eine*r Teilnehmer*in behalten sich die Organisator*innen der Veranstaltung das Recht vor, nötige Maßnahmen zu ergreifen, um die Veranstaltung zu einem angenehmen Umfeld für alle Teilnehmer*innen zu machen. +

+ +
+ +

Verstöße melden

+
+ +

+Wenn du oder jemand anderes sich unsicher oder unwillkommen fühlt, melde dich bitte so schnell wie möglich. +

+ +

+Belästigungen und andere Verstöße gegen den Code of Conduct stören die Veranstaltung für alle. Wir bitten dich, dich bei uns zu melden, wenn du Verstöße bemerkst. Damit trägst du auch dazu bei, die Veranstaltung zu verbessern. +Du kannst eine Meldung entweder persönlich oder anonym machen. +

+ +
+ +
Anonyme Meldung
+
+ +

+Du kannst hier eine anonyme Meldung machen. +

+ +
+ +
Persönliche Meldung
+
+ +

+Du kannst eine persönliche Meldung machen, indem du Kontakt aufnimmst +

+ +

+a) zum Awareness-Team +

+
    +
  • per DECT/ Telefon: (+49 40 5730 830) 113
    +
  • +
  • per Mail: team@c3awareness.de
    +
  • +
  • auf mastodon: @c3awareness@chaos.social
    +
  • +
  • per Matrix: @c3awareness:fairydust.space
    +
  • +
  • persönlich (erkennbar an lila leuchtenden Bagdes)
    +
  • +
+ +

+b) zu den Organisator*innen +

+
    +
  • per DECT/ Telefon: (+49 40 5730 830) 1000
    +
  • +
+ +
+ +

Langfassung

+
+ +

+Der EasterHegg hat es sich zum Ziel gesetzt, eine belästigungs- und diskriminierungsfreie Veranstaltung für alle zu bieten, ungeachtet ihres Geschlechts, der Geschlechtsidentität und des Geschlechtsausdrucks, der sexuellen Orientierung, der körperlichen und geistigen Fähigkeiten, der äußeren Erscheinung, des Körperbaus, des Aussehens, der Körpergröße, des Alters, der ethnischen, regionalen und/ oder religiösen Zugehörigkeit bzw. Herkunft oder der sozioökonomischen Stellung. +

+ +

+Auch wenn dieses Ziel aufgrund der gesellschaftlichen Machtverhältnisse nicht in Gänze erreicht werden kann, wollen wir darauf hinwirken. +Teilnehmer*innen, die diesem Ziel zuwiderhandeln, können nach dem Ermessen der Organisator*innen mit Sanktionen belegt oder von der Veranstaltung ausgeschlossen werden. +

+ +
+ +

Unerwünschtes Verhalten

+
+ +

+Belästigung umfasst unter anderem: +

+
    +
  • Verbale Äußerungen, die soziale Machtverhältnisse verstärken. Zum Beispiel in Bezug auf: Geschlecht, Geschlechtsidentität und -ausdruck, sexuelle Orientierung, Behinderung, körperliche Erscheinung, Körpergröße, Alter, ethnische, regionale und/ oder religiöse Zugehörigkeit bzw. Herkunft oder sozioökonomische Stellung.
    +
  • +
  • Sexuelle/sexualisierte Bilder oder Handlungen im öffentlichen Raum
    +
  • +
  • Einschüchterung, Stalking oder Verfolgung
    +
  • +
  • Ungefragtes Fotografieren oder Filmen
    +
  • +
  • Anhaltende Störung von Vorträgen, Workshops oder anderen Zusammenkünften
    +
  • +
  • Unangemessener Körperkontakt
    +
  • +
  • Unerwünschte sexuelle/sexualisierte Aufmerksamkeit (Komplimente, Anspielungen, Blicke, Gesten, Aussagen, Handlungen)
    +
  • +
  • Befürwortung von oder Ermutigung zu einer der oben genannten Verhaltensweisen
    +
  • +
  • Androhung von oder Anstiftung zu Gewalt
    +
  • +
  • Ungefragtes Erklären oder Kommentieren der Handlungen anderer (mansplaining, backseat-driving)
    +
  • +
  • Absichtliches Verwenden falscher Pronomen (misgendering) oder Selbstbezeichnungen oder die Benutzung von abgelegten Namen (deadnaming)
    +
  • +
  • Anbahnung von Beziehungen oder sexuellen Kontakten unter Ausnutzung von Notlagen oder struktureller Ungleichheiten (Alter, soziale Position etc.) oder zu Personen, die sich in einem Abhängigkeitsverhältnis befinden.
    +
  • +
+ +
+ +

Durchsetzung

+
+ +

+Von Teilnehmer*innen, die aufgefordert werden, belästigendes Verhalten zu unterlassen, wird erwartet, dass sie dem sofort nachkommen. +Bei belästigendem Verhalten eine*r Teilnehmer*in behalten sich die Organisator*innen der Veranstaltung das Recht vor, nötige Maßnahmen zu ergreifen, um die Veranstaltung zu einem angenehmen Umfeld für alle Teilnehmer*innen zu machen. +

+ +

+Mögliche Maßnahmen reichen von Verwarnungen bis zum dauerhaften Ausschluss von der Veranstaltung. +Die Organisator*innen können Maßnahmen ergreifen gegen eine Störung der Veranstaltung und um sicherzustellen, dass sich alle Teilnehmer*innen auf der Veranstaltung und in ihrem Umfeld sicher fühlen können. +

+ +
+ +

Anwendungsbereich

+
+ +

+Wir erwarten von den Teilnehmer*innen, dass sie diese Regeln an allen Veranstaltungsorten und bei allen Aktivitäten im Zusammenhang mit der Veranstaltung einhalten. +Wir sind der Meinung, dass die Teilnehmer*innen diese Regeln auch außerhalb der Veranstaltung befolgen sollten. +

+ +
+ +

Verstöße melden

+
+ +

+Wenn du oder jemand anderes sich unsicher oder unwillkommen fühlt, melde dich bitte so schnell wie möglich. +

+ +

+Belästigungen und andere Verstöße gegen den Code of Conduct stören die Veranstaltung für alle. Wir bitten dich, dich bei uns zu melden, wenn du Verstöße bemerkst. Damit trägst du auch dazu bei, die Veranstaltung zu verbessern. +Du kannst eine Meldung entweder persönlich oder anonym machen. +

+ +
+ +
Anonyme Meldung
+
+ +

+Du kannst hier eine anonyme Meldung machen. +Wir können eine anonyme Meldung nicht direkt weiterverfolgen, aber wir werden ihr nachgehen und alle notwendigen Maßnahmen ergreifen, um eine Wiederholung zu verhindern. +

+ +
+ +
Persönliche Meldung
+
+ +

+Du kannst eine persönliche Meldung machen, indem du Kontakt aufnimmst +

+ +

+a) Awareness-Team +

+
    +
  • per DECT/ Telefon: (+49 40 5730 830) 113
    +
  • +
  • per Mail: team@c3awareness.de
    +
  • +
  • auf mastodon: @c3awareness@chaos.social
    +
  • +
  • per Matrix: @c3awareness:fairydust.space
    +
  • +
  • persönlich (erkennbar an lila leuchtenden Bagdes)
    +
  • +
+ +

+Bei einer persönlichen Meldung sorgt das Awareness-Team dafür, dass es einen vertraulichen Rückzugsraum gibt. +Sobald es dir möglich ist, wird das Awareness-Team dich bitten, zu erzählen, was passiert ist. Das Team wird so respektvoll wie möglich damit umgehen, und du kannst eine Vertrauensperson mitbringen. Du wirst nicht aufgefordert, jemanden zur Rede zu stellen, das Awareness-Team wird nichts ohne deine Zustimmung tun und niemandem sagen, wer du bist. +

+ +

+Das Awareness-Team wird dich dabei unterstützen, Kontakt zu anderen (veranstaltungs-internen oder -externen) Stellen aufzunehmen, Begleitpersonen bereitstellen oder dir anderweitig helfen, dich während der Veranstaltung sicher zu fühlen. Deine Teilnahme ist uns wichtig. +

+ +

+b) zu den Organisator*innen +

+
    +
  • per DECT/ Telefon: (+49 40 5730 830) 1000
    +
  • +
+ +
+ +

Quelle

+
+ +

+https://geekfeminism.fandom.com/wiki/Conference_anti-harassment/Policy +

+ +

+Dieser Code of Conduct basiert auf dem Beispiel aus dem Geek-Feminism-Wiki, das von der Ada-Initiative und anderen Freiwilligen erstellt wurde. +

+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/ctf.html b/eh22.easterhegg.eu/ctf.html new file mode 100644 index 0000000..d101b61 --- /dev/null +++ b/eh22.easterhegg.eu/ctf.html @@ -0,0 +1,585 @@ + + + + + + + + + + + + + + + + + + + + +Capture The Flag [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
Metainformationen zur Seite
+ +
+
    +
  •  
  • +
+ +
+
+
+
+
+
+ +
+
Übersetzungen dieser Seite:
+
+
+
+ +

Capture The Flag

+
+ +

+Hacke legal die von uns bereitgestellten Dienste. +

+ +

+Wir laden dich herzlich zu unserer digitalen Eiersuche in Form eines CTFs (Capture the Flag) mit leichtem bis mittlerem Schwierigkeitsgrad ein. Weitere Informationen findest du unter http://board.eh22.c3h2.de. Keine Panik, falls das Board noch nicht erreichbar ist. +

+ +

+Die Challenges sind zugänglich von 18.04.2025 18:00 22:00 23:00 23:30 bis 20.04.2025 18:00 22:00 23:00 23:30. +

+ +

+Die Seite wird ein paar Stunden Minuten vor Beginn der Challenges online gehen, sodass du genügend Zeit hast, dich zu registrieren. +Wenn du Unterstützung bei den Challenges brauchst, findest du uns auch im Hacking-Bereich an unserem Tisch. Außerdem haben wir einen Matrix-Channel, dem du beitreten kannst – dort versuchen wir, eure Fragen zu den Challenges zu beantworten: https://matrix.to/#/#easterhegg2025-ctf:hamburg.ccc.de +

+ +

+Bitte beachte unsere Challenge-Regeln. Hinweis: Es gibt keine Preise. +

+ +
+ +

FAQ & Allgemeine Informationen

+
+
    +
  • Für einige Challenges müssen persönliche Instanzen pro Team gestartet werden.
    +
      +
    • Instanzen können unter der Challenge Liste gestartet werden. Gelistet werden diese als Deployment List.
      +
    • +
    • Am Anfang wird der Status als „exited:unhealthy“ angezeigt. Nach ca 1-2 Minuten sollte der Status wechseln auf „started:healthy“. Sollte ein anderer Status angezeigt werden, kontaktiere uns bitte via Matrix.
      +
    • +
    +
  • +
  • Das gesamte CTF ist NUR aus dem EasterHegg Netzwerk erreichbar.
    +
      +
    • Das WLAN EH22 kann problematisch sein.
      +
    • +
    • Das an den Tischen im Hackspace angebotene LAN ist stabiler.
      +
    • +
    +
  • +
  • In K6 (HeggCenter) gibt es ein Tisch, wo sitzen sowohl die Orga-Team (teilweise) als auch einige Teilnehmern.
    +
  • +
+ +
+ +

Finaler Punktestand

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
# Team Points
1 L.A.R.P. 4951
2 hanemile 4755
3 Mouse Jigglers 4617
4 rueckwurst 3440
5 bckspc 3390
6 beetroot 3166
7 the_monday_club 2977
8 KITCTF 2890
9 haxko 2527
10 https 2417
11 manf 1331
12 Wir-fahren-mit-der-Hochbahn-durch-die-Stadt 1168
13 CYBERVISIONLABS.SH 1156
14 reald 1077
15 petepriority 963
16 kai 944
17 mynewteam 919
18 kibaa 780
19 invalid 695
20 ThanatosisSerpentis 606
21 allcatsarebeautiful 561
22 gamer gaming 439
23 NurMalGucken 215
24 Tawo 215
25 urls_in_webchalls_broken 130
26 Fluffy Unicorns 130
27 5 Freunde 100
28 dkl 100
+ +
+ +

News

+
+
    +
  • 2025-04-19T00:43+02:00: Um 23:30 war Startschuss.
    +
  • +
  • 2025-04-18T21:50+02:00: Wir haben den Startzeitpunkt auf 23:30 verschoben.
    +
  • +
  • 2025-04-18T21:50+02:00: Wir haben den Startzeitpunkt auf 23:00 verschoben.
    +
  • +
  • 2025-04-18T16:16+02:00: Wir haben den Startzeitpunkt auf 22:00 verschoben.
    +
  • +
+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/dating.html b/eh22.easterhegg.eu/dating.html new file mode 100644 index 0000000..dc84225 --- /dev/null +++ b/eh22.easterhegg.eu/dating.html @@ -0,0 +1,644 @@ + + + + + + + + + + + + + + + + + + + + +Bulletin Board [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
Metainformationen zur Seite
+ +
+
    +
  •  
  • +
+ +
+
+
+
+
+
+ +
+
Übersetzungen dieser Seite:
+
+
+
+ +

Bulletin Board

+
+
+

+Auf Chaosevents heißt die Seite für Gesuche aller Art (Kleinanzeigen) traditionell Hackerdating, das hat also nicht zwangsläufig etwas mit Dating im engeren Sinne zu tun.
+ +–
+ +Historically, the wiki page for searches and offers of all kind has been called „Dating“, so this page is not (only) for dating in the classical sense. +

+
+
+ +

Hacker [sucht|seeks] Hacker

+
+
    +
  • Silly 19y/o cat-brained enby looking for cuddles and maybe some kisses and such :3 DECT: VOID, Matrix: izzie:transgirl.cafe. EOF
    +
  • +
  • Meow! Yet another cat-girl (or cat-enby) available for cuddling :3 Talks about rusty and other techy things. Likes playing Go (beginner level) but forgot my board at home :/ (DECT: 5962)
    +
  • +
  • Transfem looking for other trans ppl to chat and hang out with! Matrix: @chr55:matrix.org EOF
    +
  • +
  • At congress I waited too long to post since I was nervous, this time I'm not going repeat that mistake ^^ - transfem enby (27yo), tho I'm mostly boymoding for *reasons*. If you're into nerdy topics (I hope so, I mean you're at EH after all), I can offer foghorns, espresso, NixOS, Rust, and weird details about traffic rules (road and sea, sorry, nothing about spaceships yet). Matrix: @violet_cookie_bytes:tchncs.de EOF
    +
  • +
  • Hey! We're two gearheads in the direction of mxgear and want to see if there's anyone out there in the Chaosphere who’s got similar interests, just to meet and talk :) DECT 3458 EOF
    +
  • +
  • eh22 is my first chaos event and I’m somewhere between socially awkward and completely overwhelmed - if you feel similar and want to explore together: matrix @cnti:glasgow.social EOF
    +
  • +
  • trans guy (24) seeks fellow transmascs to chat and hang out (possibly more if the vibe is right), feels like there aren't that many of us in the chaos community so I'm posting here :3 hmu: @lux@owo.ff15.eu
    +
  • +
  • sculptos newbie ist looking foar another genode fan. Contact: @Nos@chaos.social, @nos_:matrix.org
    +
  • +
+ +
+ +

Hacker [sucht|seeks] [Schlafplatz | sleeping place]

+
+
    +
  • 20y/o girl searching for a place to sleep during the event. If you want to know anything, or just want to get to know me send me a message on Matrix: @Bundesnachrichtendienst:fff.chat
    +
  • +
+
    +
  • Looking for a couch or just a place on the fMelting spoon
    +
  • +
+
    +
  • Pouring spoonloor to put a sleeping bag fr-mo, please contact me the_1one_neo@proton.me
    +
  • +
+
    +
  • Suche Schlafplatz (idealerweise Couch oder so) von Freitag Abend bis Montag früh.
    +Looking for a couch from Friday night to Monday morning.
    +mail: stormwind83@protonmail.com
    +Matrix@stormwind:matrix.org
    +DECT 7893 (beginning Friday afternoon)
    +
  • +
+ +
+ +

Hacker [sucht|seeks] Ticket

+
+ + +
+ +

Hacker:in sucht/looks for Transport

+
+
    +
  • suche MFG nach NRW Montag ab Mittag. Looking for a ride to NRW (Cologne, Münster, Dortmund) on Monday after 1pm. Contact: smartificial@mailbox.org
    +
  • +
+ +
+ +

Transport ticket [sucht|seeks] Hacker

+
+
    +
  • I got a Flixbus ticket for Monday 21. April 6 PM from Hamburg ZOB to Berlin ZOB, but I need to leave early. Name on ticket can be changed. Price is be 35 Euros. Contact: flixbunny@pm.me
    +
  • +
+ +
+ +

Hacker [sucht|seeks] Hardware

+
+
    +
  • Looking for a bluez/linux supported BLE usb dongle to borrow. @roboto:matrix.org || DECT 2342
    +
  • +
  • I forgot my microcontrollers at home, anybody got a spare NRF or ESP board with BLE I could buy off you? embr:fairydust.space
    +
  • +
  • Looking for a bit taller Melting spoon / Pouring spoon to meld Woods Metal in it and 10mm x 10mm x 10mm cubic casting molds Matrix: @theslientlynx:matrix.org
    +
  • +
  • Looking for a regular C7 electrical cable („figure-8 connector“), because I was a big dummy in the train and lost the part of my MagSafe (R) Apple (R) charger that goes into the power outlet). Contact me on Telegram @GermanCoyote or via Matrix @yote:catgirl.cloud. Willing to pay monies and/or buy you some drinks at the bar. Thanks in advance!
    +
      +
    • Got one, thank you so very much! :D :D :D
      +
    • +
    +
  • +
  • Looking for 10x M2 5mm Self Tapping Pan Head Screws, as well as 4x M2 3mm and 2x M2 12mm. Bought the wrong ones and can't work on my project as of now :( Your help would be greatly appreciated please contact me via @00chi00:matrix.org
    +
  • +
  • Looking for a collar, if one has a spare one/wants to get rid of one (⇒ second/n-hand-items). Am not looking for recommendations though general useful advice/tips are appreciated. One can contact me regarding that via Fedi (@lua@chaos.social) or via matrix (@lua:transgirl.cafe).
    +
  • +
  • 16GB DDR3-SODIMM. DECT: 7335, matrix: masterX244:nplusc.de
    +
  • +
  • Bereue es kein Zipper von meinem ersten Congress zu haben, wenn sich jemand von seinem 37c3 Zipper trennen würde, ich wäre sehr interessiert. Ideal Male M/L. @n0th1ng:nekover.se DECT 6084
    +
  • +
  • BLE Tracker to analyze for my master thesis (IT security), please remove the tracker from your account and for your own safety, don't stalk me :) matrix: @darthrain:matrix.binary-kitchen.de
    +
  • +
  • I need: an 18V or 20V zener diode (22v miiiight work but it's probably too high). More than happy to pay for the parts! I just… only need one, and would prefer to avoid aliexpress if you've got the parts sitting in your drawer :) It's for a home automation project (hooking up my doorbell to some lights so my hearing-impaired partner can see it when it rings). DECT: 2262 Matrix: @discontinuity.ca:matrix.org EOF
    +
  • +
  • I'm looking for every kind of old „business“ desk phone, especially Gigaset DE310/DE410 models or anything with sc144* boards / CompactRISC / CR16 processors - Jomosoto, DECT 7475, Mastodon jomosoto@chaos.social, Matrix @jomosoto:matrix.org
    +
  • +
  • Looking for a spare ThinkPad x250 keyboard. Mine started malfunctioning while traveling to EH22. xpac - DECT 9722 (xpac) - Mastodon xpac@chaos.social - hanging out at CERT
    +
  • +
  • Looking for a laptop to borrow for a few weeks, as my laptop let the magic smoke out. Contact me on fedi: @lis@mk.catgirlsfor.science
    +
  • +
  • Looking to borrow a blackroll or similar device to try and unfuck my back. fedi: @jay@meow.lgbt
    +
  • +
  • Merch Swap: I have a 2XL EH22 shirt (not fitted), but I would like to have an L Shirt instead. @crypticcelery@chaos.social DECT 2579
    +
  • +
+ +
+ +

Hardware [sucht|seeks] Hacker

+
+
    +
  • In case somemany is interested in A320 homecockpit building: I have some pcbs (cause jlc min order qty 5) of some of the parts I designed left over (some have some hardware bugs one needs to fix cause I didn't re-order some where the fix worked just well). Can give them away/pay what you want. Repo of those designs and 3d files for it. I have the PCBs with me so just get in touch if you're interested. Matrix: @fly:asra.gr
    +
  • +
  • I am a Braun Silk Epil 9 Flex epilator looking for a new owner. I come as a full set, including a travel bag, charger cable, and a handy cleaning brush. My price is negotiable. If you're interested, please contact my current proprietor on Matrix (@flisk:matrix.lesaoras.xyz) or via E-Mail (epilator.eh22@flisk.xyz). probably taken
    +
  • +
  • I have a Lapdock (Keyboard, Mouse Monitor Combo) called Crowview Note which can be used to turn various SBCs or smartphones into Laptops. There's a catch though, which is that the Keyboard has an ANSI (US) physical layout which I'm not really happy with. Feel free to play around with it, I'm also happy to sell it for 200€ VB. Contact: Signal (available during the event) or via Matrix or DECT 7474
    +
  • +
  • Have some amoeba PCBs for custom keyboards such as dactyl manuform and similar. Ordered more than I need, can pass them on on a „pay what you want“ basis.
    +
  • +
  • Three EX3300 switches in various states of brokennness, mostly dead PSU, but works if powered from a lab PSU. Call DECT 6983.
    +
  • +
  • I have a homebuilt dance dance Revolution pad out of plywood, acrylic and metal. It's big and heavy so I don't want to bring it to the hardware exchange and have to bring it home. Free to a new home! I think the switches work, but I haven't hooked it to a controller. See photos here https://infosec.exchange/@discontinuity/113725872850507537. DECT: 2262 Matrix: @discontinuity.ca:matrix.org
    +
  • +
  • I have an Aten 2 port USB/DisplayPort 4K switch to sell for 50 EUR. And a LiteOn DVD drive to give away. Contact me at @dmanik:matrix.org
    +
  • +
  • My little Icebreaker-FPGA and me looking for some one to play around with open toolchains. Contact: @nos_:matrix.org, @Nos@chaos.social
    +
  • +
+ +
+ +

Hacker [sucht|seeks] Info/Files

+
+
    +
  • Looking for advice with Headwind MDM. We write a bot for large scale activist device management, and need more info about the workings of Knox and how to banish Google → Matrix: @mrfg:frei.chat DECT 4025 🦋
    +
  • +
  • Need help figuring out how to sync the eh22 eventphone-book to my phone without my private and my Chaos contacts all mixing up (some contacts get emerged for no reason, why and how to prevent this? PoC has no answer…) → Matrix: @mrfg:frei.chat DECT 4025 🦋
    +
  • +
  • Looking for the Oracle Leak files, perferably as torrent file or local here on the event. CryptPad
    +
  • +
  • Potentially looking for someone who can teach me proper mechanical CAD (for simple 3d printing it's fine but as soon as gears or something comes to play, I fail) Matrix: @fly:asra.gr
    +
      +
    • +1 The entire process appears to have changed significantly since I last used it in school. Matrix: @agowa:matrix.org
      +
    • +
    +
  • +
  • Looking for maintenance manuals and technical training manuals of the A320neo, A330, A340, A350 and A380. Matrix: @fly:asra.gr
    +
  • +
  • Looking for help getting started with opensprinkler. (DM5WK 7395)
    +
  • +
  • Looking for help with integrating a clojure plugin into a gradle project. Matrix: @ruru4143:gemeinsam.jetzt
    +
  • +
  • Looking for advices in finding fingerprints in pdfs and/or removing them → DECT no battery :/ [onsite at FR 15 o'clock] / CryptPad
    +
  • +
  • Looking for advice on which hardware/software/protocol combination is viable to control 100-150 multi-color LEDs with very low latency based on a MIDI track (or similar) in sync with music. Like miniature DMX stage lightning. Any tips welcome → DECT 6958, Matrix: @rhandos:tchncs.de
    +
  • +
+ +
+ +

Info/Files [sucht|seeks] Hacker

+
+
    +
  • Looking for people to do DN42 stuff with. I’m happy to share info and to peer with other beings! DECT: VOID, Matrix: #eh22-dn42:transgirl.cafe.
    +
  • +
+ +
+ +

Hacker [sucht|seeks] Läuse/Lice

+
+
    +
  • No, but really, if you think everything itches, ask us for a lice comb, DM on Fedi @Crimekillz@xn--c8h.fm
    +
  • +
+ +
+ +

Lice seek Hackers

+
+
    +
  • Look for us around the event! Bugs are the new easter eggs.
    +
  • +
+ +
+ +

Lice seek Lice

+
+
    +
  • Adult female louse, freshly emerged from third molt, looking for 1 to n adult male lice for reproductive purposes. Find me around, jumping from head to head.
    +
  • +
  • Gay louse couple looks for surrogate mother to finally fulfill their dream of having a child on each hacker's head!
    +
  • +
+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/dect.html b/eh22.easterhegg.eu/dect.html new file mode 100644 index 0000000..57e4ebe --- /dev/null +++ b/eh22.easterhegg.eu/dect.html @@ -0,0 +1,444 @@ + + + + + + + + + + + + + + + + + + + + +DECT & GSM [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
Metainformationen zur Seite
+ +
+
    +
  •  
  • +
+ +
+
+
+
+
+
+ +
+
Übersetzungen dieser Seite:
+
+
+
+ +

DECT & GSM

+
+ +

+Eventphone stellt wieder ein Telefonnetz bereit.
+ +Auch C3GSM ist dabei und macht Mobilfunk. +

+ +

+Die Nebenstellenregistrierung ist offen, ihr könnt hier eure Telefone registrieren. +

+ +

+Bringt eure CCC Sim-Karten mit wenn ihr das Mobilfunknetz nutzen möchtet, es wird vor Ort nur sehr wenige geben. +

+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-Bold.woff2 b/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-Bold.woff2 new file mode 100644 index 0000000..caf6ff6 Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-Bold.woff2 differ diff --git a/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-ExtraLight.woff2 b/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-ExtraLight.woff2 new file mode 100644 index 0000000..7dc6448 Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-ExtraLight.woff2 differ diff --git a/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-Light.woff2 b/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-Light.woff2 new file mode 100644 index 0000000..08a6637 Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-Light.woff2 differ diff --git a/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-Medium.woff2 b/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-Medium.woff2 new file mode 100644 index 0000000..83bb0d9 Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-Medium.woff2 differ diff --git a/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-Regular.woff2 b/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-Regular.woff2 new file mode 100644 index 0000000..601d465 Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-Regular.woff2 differ diff --git a/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-SemiBold.woff2 b/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-SemiBold.woff2 new file mode 100644 index 0000000..a88f939 Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-SemiBold.woff2 differ diff --git a/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-Thin.woff2 b/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-Thin.woff2 new file mode 100644 index 0000000..dc950fe Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-Thin.woff2 differ diff --git a/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-VariableVF.woff2 b/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-VariableVF.woff2 new file mode 100644 index 0000000..7d3aaf4 Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/font/argonglow/ArgonGlow-VariableVF.woff2 differ diff --git a/eh22.easterhegg.eu/design/assets/font/athiti/Athiti-Bold.woff2 b/eh22.easterhegg.eu/design/assets/font/athiti/Athiti-Bold.woff2 new file mode 100644 index 0000000..4cc5810 Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/font/athiti/Athiti-Bold.woff2 differ diff --git a/eh22.easterhegg.eu/design/assets/font/athiti/Athiti-ExtraLight.woff2 b/eh22.easterhegg.eu/design/assets/font/athiti/Athiti-ExtraLight.woff2 new file mode 100644 index 0000000..9bb6cea Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/font/athiti/Athiti-ExtraLight.woff2 differ diff --git a/eh22.easterhegg.eu/design/assets/font/athiti/Athiti-Light.woff2 b/eh22.easterhegg.eu/design/assets/font/athiti/Athiti-Light.woff2 new file mode 100644 index 0000000..51f9e72 Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/font/athiti/Athiti-Light.woff2 differ diff --git a/eh22.easterhegg.eu/design/assets/font/athiti/Athiti-Medium.woff2 b/eh22.easterhegg.eu/design/assets/font/athiti/Athiti-Medium.woff2 new file mode 100644 index 0000000..bc8b50a Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/font/athiti/Athiti-Medium.woff2 differ diff --git a/eh22.easterhegg.eu/design/assets/font/athiti/Athiti-Regular.woff2 b/eh22.easterhegg.eu/design/assets/font/athiti/Athiti-Regular.woff2 new file mode 100644 index 0000000..c69c128 Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/font/athiti/Athiti-Regular.woff2 differ diff --git a/eh22.easterhegg.eu/design/assets/font/athiti/Athiti-SemiBold.woff2 b/eh22.easterhegg.eu/design/assets/font/athiti/Athiti-SemiBold.woff2 new file mode 100644 index 0000000..726a075 Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/font/athiti/Athiti-SemiBold.woff2 differ diff --git a/eh22.easterhegg.eu/design/assets/font/departuremono/DepartureMono-Regular.woff2 b/eh22.easterhegg.eu/design/assets/font/departuremono/DepartureMono-Regular.woff2 new file mode 100644 index 0000000..7d8b33b Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/font/departuremono/DepartureMono-Regular.woff2 differ diff --git a/eh22.easterhegg.eu/design/assets/icon/arrow_down.svg b/eh22.easterhegg.eu/design/assets/icon/arrow_down.svg new file mode 100644 index 0000000..e285a24 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/arrow_down.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/arrow_down_left.svg b/eh22.easterhegg.eu/design/assets/icon/arrow_down_left.svg new file mode 100644 index 0000000..26c8aa9 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/arrow_down_left.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/arrow_down_right.svg b/eh22.easterhegg.eu/design/assets/icon/arrow_down_right.svg new file mode 100644 index 0000000..20ab0e8 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/arrow_down_right.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/arrow_left.svg b/eh22.easterhegg.eu/design/assets/icon/arrow_left.svg new file mode 100644 index 0000000..224bc18 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/arrow_left.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/arrow_right.svg b/eh22.easterhegg.eu/design/assets/icon/arrow_right.svg new file mode 100644 index 0000000..be44bfb --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/arrow_right.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/arrow_up.svg b/eh22.easterhegg.eu/design/assets/icon/arrow_up.svg new file mode 100644 index 0000000..d891e98 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/arrow_up.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/arrow_up_left.svg b/eh22.easterhegg.eu/design/assets/icon/arrow_up_left.svg new file mode 100644 index 0000000..f0b45e2 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/arrow_up_left.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/arrow_up_right.svg b/eh22.easterhegg.eu/design/assets/icon/arrow_up_right.svg new file mode 100644 index 0000000..79058e8 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/arrow_up_right.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/basket.svg b/eh22.easterhegg.eu/design/assets/icon/basket.svg new file mode 100644 index 0000000..e24170f --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/basket.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/bed.svg b/eh22.easterhegg.eu/design/assets/icon/bed.svg new file mode 100644 index 0000000..6af59a3 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/bed.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/clock.svg b/eh22.easterhegg.eu/design/assets/icon/clock.svg new file mode 100644 index 0000000..9050282 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/clock.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/code.svg b/eh22.easterhegg.eu/design/assets/icon/code.svg new file mode 100644 index 0000000..4543b76 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/code.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/creature.svg b/eh22.easterhegg.eu/design/assets/icon/creature.svg new file mode 100644 index 0000000..1ab0d45 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/creature.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/cross.svg b/eh22.easterhegg.eu/design/assets/icon/cross.svg new file mode 100644 index 0000000..d0e63ad --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/cross.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/cross_small.svg b/eh22.easterhegg.eu/design/assets/icon/cross_small.svg new file mode 100644 index 0000000..d890ea0 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/cross_small.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/cup_1.svg b/eh22.easterhegg.eu/design/assets/icon/cup_1.svg new file mode 100644 index 0000000..9020279 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/cup_1.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/cup_2.svg b/eh22.easterhegg.eu/design/assets/icon/cup_2.svg new file mode 100644 index 0000000..0db73f7 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/cup_2.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/dect.svg b/eh22.easterhegg.eu/design/assets/icon/dect.svg new file mode 100644 index 0000000..b061df2 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/dect.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/external.svg b/eh22.easterhegg.eu/design/assets/icon/external.svg new file mode 100644 index 0000000..92a7419 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/external.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/fairydust.svg b/eh22.easterhegg.eu/design/assets/icon/fairydust.svg new file mode 100644 index 0000000..3b71971 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/fairydust.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/flag.svg b/eh22.easterhegg.eu/design/assets/icon/flag.svg new file mode 100644 index 0000000..539a20e --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/flag.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/font.svg b/eh22.easterhegg.eu/design/assets/icon/font.svg new file mode 100644 index 0000000..ba41661 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/font.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/gluten.svg b/eh22.easterhegg.eu/design/assets/icon/gluten.svg new file mode 100644 index 0000000..715037b --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/gluten.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/hackertours.svg b/eh22.easterhegg.eu/design/assets/icon/hackertours.svg new file mode 100644 index 0000000..ca88cc6 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/hackertours.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/hare_head.svg b/eh22.easterhegg.eu/design/assets/icon/hare_head.svg new file mode 100644 index 0000000..e20029e --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/hare_head.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/history.svg b/eh22.easterhegg.eu/design/assets/icon/history.svg new file mode 100644 index 0000000..4b66dd4 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/history.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/home.svg b/eh22.easterhegg.eu/design/assets/icon/home.svg new file mode 100644 index 0000000..6c4e2f1 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/home.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/hygene.svg b/eh22.easterhegg.eu/design/assets/icon/hygene.svg new file mode 100644 index 0000000..a7db265 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/hygene.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/info.svg b/eh22.easterhegg.eu/design/assets/icon/info.svg new file mode 100644 index 0000000..2c6c17d --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/info.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/lightbulb.svg b/eh22.easterhegg.eu/design/assets/icon/lightbulb.svg new file mode 100644 index 0000000..ee9e8df --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/lightbulb.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/link.svg b/eh22.easterhegg.eu/design/assets/icon/link.svg new file mode 100644 index 0000000..edf7a63 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/link.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/location.svg b/eh22.easterhegg.eu/design/assets/icon/location.svg new file mode 100644 index 0000000..e299d03 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/location.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/lock.svg b/eh22.easterhegg.eu/design/assets/icon/lock.svg new file mode 100644 index 0000000..6f32cac --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/lock.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/login.svg b/eh22.easterhegg.eu/design/assets/icon/login.svg new file mode 100644 index 0000000..efa6a28 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/login.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/logout.svg b/eh22.easterhegg.eu/design/assets/icon/logout.svg new file mode 100644 index 0000000..18c84d2 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/logout.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/looping.svg b/eh22.easterhegg.eu/design/assets/icon/looping.svg new file mode 100644 index 0000000..b342502 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/looping.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/menu.svg b/eh22.easterhegg.eu/design/assets/icon/menu.svg new file mode 100644 index 0000000..dda9be4 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/menu.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/menu_small.svg b/eh22.easterhegg.eu/design/assets/icon/menu_small.svg new file mode 100644 index 0000000..e5258de --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/menu_small.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/merch.svg b/eh22.easterhegg.eu/design/assets/icon/merch.svg new file mode 100644 index 0000000..f1e4512 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/merch.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/message.svg b/eh22.easterhegg.eu/design/assets/icon/message.svg new file mode 100644 index 0000000..761f417 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/message.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/microphone.svg b/eh22.easterhegg.eu/design/assets/icon/microphone.svg new file mode 100644 index 0000000..041242d --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/microphone.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/network.svg b/eh22.easterhegg.eu/design/assets/icon/network.svg new file mode 100644 index 0000000..d746fb9 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/network.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/paperplane.svg b/eh22.easterhegg.eu/design/assets/icon/paperplane.svg new file mode 100644 index 0000000..1ab4e0e --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/paperplane.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/pen.svg b/eh22.easterhegg.eu/design/assets/icon/pen.svg new file mode 100644 index 0000000..7586346 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/pen.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/pin.svg b/eh22.easterhegg.eu/design/assets/icon/pin.svg new file mode 100644 index 0000000..2b07c7a --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/pin.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/plate_and_cutlery.svg b/eh22.easterhegg.eu/design/assets/icon/plate_and_cutlery.svg new file mode 100644 index 0000000..e759c5a --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/plate_and_cutlery.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/power.svg b/eh22.easterhegg.eu/design/assets/icon/power.svg new file mode 100644 index 0000000..1e003d3 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/power.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/question.svg b/eh22.easterhegg.eu/design/assets/icon/question.svg new file mode 100644 index 0000000..f904106 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/question.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/schedule.svg b/eh22.easterhegg.eu/design/assets/icon/schedule.svg new file mode 100644 index 0000000..48c0c0e --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/schedule.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/search.svg b/eh22.easterhegg.eu/design/assets/icon/search.svg new file mode 100644 index 0000000..0e81215 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/search.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/settings.svg b/eh22.easterhegg.eu/design/assets/icon/settings.svg new file mode 100644 index 0000000..410588b --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/settings.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/signup.svg b/eh22.easterhegg.eu/design/assets/icon/signup.svg new file mode 100644 index 0000000..6c20d48 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/signup.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/soldering_iron.svg b/eh22.easterhegg.eu/design/assets/icon/soldering_iron.svg new file mode 100644 index 0000000..6c36a6e --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/soldering_iron.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/tick.svg b/eh22.easterhegg.eu/design/assets/icon/tick.svg new file mode 100644 index 0000000..6d5e5aa --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/tick.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/tick_small.svg b/eh22.easterhegg.eu/design/assets/icon/tick_small.svg new file mode 100644 index 0000000..cf7760e --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/tick_small.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/ticket.svg b/eh22.easterhegg.eu/design/assets/icon/ticket.svg new file mode 100644 index 0000000..d836a02 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/ticket.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/toast.svg b/eh22.easterhegg.eu/design/assets/icon/toast.svg new file mode 100644 index 0000000..287b801 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/toast.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/train.svg b/eh22.easterhegg.eu/design/assets/icon/train.svg new file mode 100644 index 0000000..6791f66 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/train.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/vegan.svg b/eh22.easterhegg.eu/design/assets/icon/vegan.svg new file mode 100644 index 0000000..c65c83e --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/vegan.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/icon/warning.svg b/eh22.easterhegg.eu/design/assets/icon/warning.svg new file mode 100644 index 0000000..84bdef2 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/icon/warning.svg @@ -0,0 +1,3 @@ + + + diff --git a/eh22.easterhegg.eu/design/assets/image/example_qrcode.png b/eh22.easterhegg.eu/design/assets/image/example_qrcode.png new file mode 100644 index 0000000..cc003d5 Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/image/example_qrcode.png differ diff --git a/eh22.easterhegg.eu/design/assets/image/example_qrcode_distorted.png b/eh22.easterhegg.eu/design/assets/image/example_qrcode_distorted.png new file mode 100644 index 0000000..692fd27 Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/image/example_qrcode_distorted.png differ diff --git a/eh22.easterhegg.eu/design/assets/image/favicon.png b/eh22.easterhegg.eu/design/assets/image/favicon.png new file mode 100644 index 0000000..d91c3a3 Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/image/favicon.png differ diff --git a/eh22.easterhegg.eu/design/assets/image/logo_eventname_glow.svg b/eh22.easterhegg.eu/design/assets/image/logo_eventname_glow.svg new file mode 100644 index 0000000..c225af6 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/image/logo_eventname_glow.svg @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eh22.easterhegg.eu/design/assets/image/logo_eventname_glow_off.svg b/eh22.easterhegg.eu/design/assets/image/logo_eventname_glow_off.svg new file mode 100644 index 0000000..60ed024 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/image/logo_eventname_glow_off.svg @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eh22.easterhegg.eu/design/assets/image/logos_dark/logo_egg.png b/eh22.easterhegg.eu/design/assets/image/logos_dark/logo_egg.png new file mode 100644 index 0000000..c766c20 Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/image/logos_dark/logo_egg.png differ diff --git a/eh22.easterhegg.eu/design/assets/image/logos_dark/logo_eh22.png b/eh22.easterhegg.eu/design/assets/image/logos_dark/logo_eh22.png new file mode 100644 index 0000000..256fd4d Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/image/logos_dark/logo_eh22.png differ diff --git a/eh22.easterhegg.eu/design/assets/image/logos_dark/logo_eventname.png b/eh22.easterhegg.eu/design/assets/image/logos_dark/logo_eventname.png new file mode 100644 index 0000000..5d93caa Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/image/logos_dark/logo_eventname.png differ diff --git a/eh22.easterhegg.eu/design/assets/image/logos_dark/logo_hare.png b/eh22.easterhegg.eu/design/assets/image/logos_dark/logo_hare.png new file mode 100644 index 0000000..959ca62 Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/image/logos_dark/logo_hare.png differ diff --git a/eh22.easterhegg.eu/design/assets/image/logos_dark/logo_icons.png b/eh22.easterhegg.eu/design/assets/image/logos_dark/logo_icons.png new file mode 100644 index 0000000..eb0386e Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/image/logos_dark/logo_icons.png differ diff --git a/eh22.easterhegg.eu/design/assets/image/logos_light/logo_egg.png b/eh22.easterhegg.eu/design/assets/image/logos_light/logo_egg.png new file mode 100644 index 0000000..2966e1b Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/image/logos_light/logo_egg.png differ diff --git a/eh22.easterhegg.eu/design/assets/image/logos_light/logo_eh22.png b/eh22.easterhegg.eu/design/assets/image/logos_light/logo_eh22.png new file mode 100644 index 0000000..fcf25bf Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/image/logos_light/logo_eh22.png differ diff --git a/eh22.easterhegg.eu/design/assets/image/logos_light/logo_eventname.png b/eh22.easterhegg.eu/design/assets/image/logos_light/logo_eventname.png new file mode 100644 index 0000000..0c6666f Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/image/logos_light/logo_eventname.png differ diff --git a/eh22.easterhegg.eu/design/assets/image/logos_light/logo_hare.png b/eh22.easterhegg.eu/design/assets/image/logos_light/logo_hare.png new file mode 100644 index 0000000..9843987 Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/image/logos_light/logo_hare.png differ diff --git a/eh22.easterhegg.eu/design/assets/image/logos_light/logo_icons.png b/eh22.easterhegg.eu/design/assets/image/logos_light/logo_icons.png new file mode 100644 index 0000000..b614887 Binary files /dev/null and b/eh22.easterhegg.eu/design/assets/image/logos_light/logo_icons.png differ diff --git a/eh22.easterhegg.eu/design/assets/script/generator.js b/eh22.easterhegg.eu/design/assets/script/generator.js new file mode 100644 index 0000000..2ce0fa5 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/script/generator.js @@ -0,0 +1,86 @@ +let can = document.createElement("canvas"); +let ctx = can.getContext("2d"); +let result; +const downloadButton = document.querySelector("#download"); + +function filterImage(svgDataUrl, width, height) { + const filteredImage = new Image(); + const resultPreview = document.querySelector("#result_img"); + + can.width = width; + can.height = height; + + filteredImage.onload = function () { + ctx.drawImage(filteredImage, 0, 0, width, height); + result = can.toDataURL(); + downloadButton.disabled = false; + resultPreview.src = result; + }; + filteredImage.src = svgDataUrl; +} + +function loadImage(base64Image) { + const sourceImage = new Image(); + const svg = document.querySelector("svg"); + const svgImage = svg.querySelector("image"); + const sourcePreview = document.querySelector("#source_img"); + let svgDataUrl; + + sourceImage.onload = function () { + let svgViewBox = `0 0 ${Math.trunc((800 / this.height) * this.width)} 800`; + svg.setAttribute("height", this.height); + svg.setAttribute("width", this.width); + svg.setAttribute("viewBox", svgViewBox); + + let svgString = new XMLSerializer().serializeToString(svg); + svgDataUrl = "data:image/svg+xml," + encodeURIComponent(svgString); + + filterImage(svgDataUrl, this.width, this.height); + }; + sourceImage.src = svgImage.href.baseVal = sourcePreview.src = base64Image; +} + +function handleFileSelect(e) { + const files = e.target.files; + if (!files || !files.length) return; + const file = files[0]; + if (!file.type.match("image.*")) return; + + const reader = new FileReader(); + + reader.onload = (readerEvent) => { + loadImage(readerEvent.target.result); + }; + + reader.readAsDataURL(file); +} + +document + .querySelector("#file_input") + .addEventListener("change", handleFileSelect, false); + +function downloadURI(_uri, _name) { + let link = document.createElement("a"); + link.download = "distortedImageEH22.png"; + link.href = result; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + delete link; +} + +downloadButton.addEventListener("click", downloadURI); + +(async () => { + let exampleImageBlob = await fetch("../assets/image/example_qrcode.png").then( + (r) => r.blob(), + ); + + let dataUrl = await new Promise((resolve) => { + let reader = new FileReader(); + reader.onload = () => resolve(reader.result); + reader.readAsDataURL(exampleImageBlob); + }); + + loadImage(dataUrl); +})(); diff --git a/eh22.easterhegg.eu/design/assets/script/merch.js b/eh22.easterhegg.eu/design/assets/script/merch.js new file mode 100644 index 0000000..7a58f72 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/script/merch.js @@ -0,0 +1,229 @@ +const sizes = [ + "XXS", + "XS", + "S", + "M", + "L", + "XL", + "2XL", + "3XL", + "4XL", + "5XL", + "6XL", +]; + +function selectCell(e) { + const cell = e.target; + const value = parseFloat(cell.dataset.val); + const col = cell.dataset.col; + const dimension = cell.dataset.dim; + + document.querySelectorAll("td.val:not(.empty)").forEach((match) => { + match.dataset.diff = ""; + match.classList.remove("highlighted"); + match.classList.remove("currentDimension"); + if (match.dataset.dim === dimension) { + match.classList.add("currentDimension"); + const diff = parseFloat(match.dataset.val) - value; + match.dataset.diff = diff > 0 ? `+${diff}` : diff; + if (match.dataset.dim === "A") + match.style.cssText = `--custom-color: rgba(96, 165, 249, ${1 - Math.abs(diff) / 5})`; + if (match.dataset.dim === "B") + match.style.cssText = `--custom-color: rgba(211, 129, 247, ${1 - Math.abs(diff) / 5})`; + if (match.dataset.dim === "C") + match.style.cssText = `--custom-color: rgba(255, 121, 117, ${1 - Math.abs(diff) / 5})`; + } + }); + document.querySelectorAll("td.dimension").forEach((match) => { + match.classList.remove("currentDimension"); + if (match.innerHTML === dimension) { + match.classList.add("currentDimension"); + } + }); + + cell.classList.add("highlighted"); +} + +function selectCellPlus(e) { + e.stopPropagation(); + const cell = e.target; + const group = cell.parentElement.parentElement; + const col = cell.dataset.col; + + if ( + cell.classList.contains("highlighted") && + !cell.classList.contains("currentDimension") + ) { + selectCell(e); + return; + } + + const values = {}; + group.querySelectorAll(`td[data-col='${col}']`).forEach((match) => { + values[match.dataset.dim] = parseFloat(match.dataset.val); + }); + + document.querySelectorAll("td.val:not(.empty)").forEach((match) => { + match.dataset.diff = ""; + match.classList.remove("highlighted"); + match.classList.remove("currentDimension"); + if (match.dataset.dim in values) { + const diff = parseFloat(match.dataset.val) - values[match.dataset.dim]; + match.dataset.diff = diff > 0 ? `+${diff}` : diff; + if (match.dataset.dim === "A") + match.style.cssText = `--custom-color: rgba(96, 165, 249, ${1 - Math.abs(diff) / 5})`; + if (match.dataset.dim === "B") + match.style.cssText = `--custom-color: rgba(211, 129, 247, ${1 - Math.abs(diff) / 5})`; + if (match.dataset.dim === "C") + match.style.cssText = `--custom-color: rgba(255, 121, 117, ${1 - Math.abs(diff) / 5})`; + } + }); + document.querySelectorAll("td.dimension").forEach((match) => { + match.classList.remove("currentDimension"); + }); + + group.querySelectorAll(`td[data-col='${col}']`).forEach((match) => { + match.classList.add("highlighted"); + }); +} + +function hoverCell(e) { + const cell = e.target; + const group = cell.parentElement.parentElement; + const col = cell.dataset.col; + const dim = cell.dataset.dim; + + hoverOff(); + document.querySelectorAll("table > thead > tr > th").forEach((match) => { + if (match.dataset.col === col) match.classList.add("hover"); + }); + group.querySelectorAll("td.dimension").forEach((match) => { + if (match.innerText === dim) match.classList.add("hover"); + }); + group.querySelectorAll("td:not(.dimension), th").forEach((match) => { + match.classList.add("hover"); + }); +} + +function hoverOff() { + document.querySelectorAll("table > thead > tr > th").forEach((match) => { + match.classList.remove("hover"); + }); + document.querySelectorAll("td.dimension, td, th").forEach((match) => { + match.classList.remove("hover"); + }); +} + +const typeList = new Set(); +const fitList = new Set(); + +document.querySelectorAll("tbody").forEach((tbody) => { + if (tbody.dataset.from) { + const source = document.querySelector(`tbody#${tbody.dataset.from}`); + if (!source) { + console.log(`tbody with ID '${tbody.dataset.from}' not found.`); + return; + } + + const name = tbody.querySelector("tr th").innerHTML; + tbody.replaceChildren(); + tbody.insertAdjacentHTML("afterbegin", source.innerHTML); + tbody.querySelector("tr th").innerHTML = name; + delete tbody.dataset.from; + tbody.dataset.type = source.dataset.type; + tbody.dataset.fit = source.dataset.fit; + } + + typeList.add(tbody.dataset.type); + fitList.add(tbody.dataset.fit); +}); + +// build filter +const filterTypeElement = document.querySelector("#filterType"); +typeList.forEach((type) => { + filterTypeElement.insertAdjacentHTML( + "beforeend", + ``, + ); +}); +const filterFitElement = document.querySelector("#filterFit"); +fitList.forEach((fit) => { + filterFitElement.insertAdjacentHTML( + "beforeend", + ``, + ); +}); + +const filterType = new Set(typeList); +const filterFit = new Set(fitList); + +function filter() { + document.querySelectorAll(`tbody`).forEach((match) => { + match.classList.toggle( + "filtered", + !filterType.has(match.dataset.type) || !filterFit.has(match.dataset.fit), + ); + }); +} + +filterTypeElement + .querySelectorAll('input[type="checkbox"]') + .forEach((checkbox) => { + checkbox.addEventListener("change", (e) => { + if (checkbox.checked) { + filterType.add(checkbox.value); + } else { + filterType.delete(checkbox.value); + } + filter(); + }); + }); + +filterFitElement + .querySelectorAll('input[type="checkbox"]') + .forEach((checkbox) => { + checkbox.addEventListener("change", (e) => { + if (checkbox.checked) { + filterFit.add(checkbox.value); + } else { + filterFit.delete(checkbox.value); + } + + filter(); + }); + }); + +document.querySelectorAll("td.val").forEach((cell) => { + const rowTitle = cell.parentElement.querySelector("th"); + cell.dataset.col = + sizes[rowTitle !== null ? cell.cellIndex - 4 : cell.cellIndex - 1]; + cell.addEventListener("pointerenter", hoverCell); + cell.addEventListener("pointerleave", hoverOff); +}); + +// initialize table +document.querySelectorAll("td.val:not(.empty)").forEach((cell) => { + cell.dataset.val = cell.innerText; + cell.dataset.diff = ""; + cell.dataset.dim = cell.parentElement.querySelector("td.dimension").innerHTML; + + cell.addEventListener("click", selectCellPlus); +}); + +// disable select on click outside value cell +document.addEventListener("click", (e) => { + document.querySelectorAll("td.val:not(.empty)").forEach((match) => { + match.dataset.diff = ""; + match.classList.remove("highlighted"); + match.classList.remove("currentDimension"); + }); + document.querySelectorAll("td.dimension").forEach((match) => { + match.classList.remove("currentDimension"); + }); +}); diff --git a/eh22.easterhegg.eu/design/assets/script/styleguide.js b/eh22.easterhegg.eu/design/assets/script/styleguide.js new file mode 100644 index 0000000..dd4d4f5 --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/script/styleguide.js @@ -0,0 +1,11 @@ +document.querySelector("nav > button")?.addEventListener("click", (e) => { + document.querySelector("nav").classList.toggle("visible"); +}); + +document.querySelector("#themeDark").addEventListener("change", (e) => { + setTheme(e.target.checked ? "dark" : "system"); +}); + +document.querySelector("#themeLight").addEventListener("change", (e) => { + setTheme(e.target.checked ? "light" : "system"); +}); diff --git a/eh22.easterhegg.eu/design/assets/style/glows.svg b/eh22.easterhegg.eu/design/assets/style/glows.svg new file mode 100644 index 0000000..b154c1a --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/style/glows.svg @@ -0,0 +1,320 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eh22.easterhegg.eu/design/assets/style/merch.css b/eh22.easterhegg.eu/design/assets/style/merch.css new file mode 100644 index 0000000..4cd5c1d --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/style/merch.css @@ -0,0 +1,1613 @@ +:root { + --color-neutral-50: #f2f0f5; + --color-neutral-100: #d1c6e0; + --color-neutral-200: #b2a0cb; + --color-neutral-300: #957eb5; + --color-neutral-400: #7a60a0; + --color-neutral-500: #61468b; + --color-neutral-600: #4b3176; + --color-neutral-700: #371f60; + --color-neutral-800: #26114b; + --color-neutral-900: #180736; + --color-neutral-950: #0c011f; + --color-argon-50: #e1abc9; + --color-argon-100: #da87b5; + --color-argon-200: #d464a1; + --color-argon-300: #cd448f; + --color-argon-400: #c6257d; + --color-argon-500: #b0166f; + --color-argon-600: #9a0a61; + --color-argon-700: #830755; + --color-argon-800: #6d0449; + --color-argon-900: #56023c; + --color-argon-950: #3f012d; + --color-krypton-50: #b2d9ea; + --color-krypton-100: #8cc9e4; + --color-krypton-200: #69bade; + --color-krypton-300: #4badd8; + --color-krypton-400: #2493c2; + --color-krypton-500: #167fac; + --color-krypton-600: #0a6c96; + --color-krypton-700: #075c81; + --color-krypton-800: #044c6b; + --color-krypton-900: #023c55; + --color-krypton-950: #012c3f; + --color-green-50: #c0f49a; + --color-green-100: #a7e57a; + --color-green-200: #8fd75d; + --color-green-300: #7ac843; + --color-green-400: #66b92d; + --color-green-500: #54aa18; + --color-green-600: #47990f; + --color-green-700: #397e0a; + --color-green-800: #2b6206; + --color-green-900: #1f4703; + --color-green-950: #122b01; + --color-red-50: #e6afaf; + --color-red-100: #dd9090; + --color-red-200: #d57272; + --color-red-300: #cc5757; + --color-red-400: #c33d3d; + --color-red-500: #bb2626; + --color-red-600: #b21010; + --color-red-700: #950808; + --color-red-800: #780404; + --color-red-900: #5c0202; + --color-red-950: #3f0101; + --color-yellow-50: #fefce8; + --color-yellow-100: #fef9c2; + --color-yellow-200: #fff085; + --color-yellow-300: #ffdf20; + --color-yellow-400: #fdc700; + --color-yellow-500: #efb100; + --color-yellow-600: #d08700; + --color-yellow-700: #a65f00; + --color-yellow-800: #894b00; + --color-yellow-900: #733e0a; + --color-yellow-950: #432004; + --color-white: #ffffff; + --color-dark-foreground: var(--color-neutral-50); + --color-dark-background: var(--color-neutral-950); + --color-dark-shade-1: var(--color-neutral-900); + --color-dark-shade-2: var(--color-neutral-800); + --color-dark-shade-3: var(--color-neutral-700); + --color-dark-shade-4: var(--color-neutral-600); + --color-dark-text-1: var(--color-neutral-200); + --color-dark-text-2: var(--color-neutral-300); + --color-dark-text-3: var(--color-neutral-400); + --color-dark-text-4: var(--color-neutral-500); + --color-dark-primary: var(--color-argon-400); + --color-dark-secondary: var(--color-krypton-300); + --color-dark-error: var(--color-red-500); + --color-dark-success: var(--color-green-500); + --color-dark-warning: var(--color-yellow-500); + --color-dark-accent-1: #60a5f9; + --color-dark-accent-2: #d381f7; + --color-dark-accent-3: #ff7975; + --color-light-foreground: var(--color-neutral-950); + --color-light-background: var(--color-neutral-50); + --color-light-shade-1: var(--color-neutral-100); + --color-light-shade-2: var(--color-neutral-200); + --color-light-shade-3: var(--color-neutral-300); + --color-light-shade-4: var(--color-neutral-400); + --color-light-text-1: var(--color-neutral-800); + --color-light-text-2: var(--color-neutral-700); + --color-light-text-3: var(--color-neutral-600); + --color-light-text-4: var(--color-neutral-500); + --color-light-primary: var(--color-argon-600); + --color-light-secondary: var(--color-krypton-500); + --color-light-error: var(--color-red-600); + --color-light-success: var(--color-green-600); + --color-light-warning: var(--color-yellow-600); + --color-light-accent-1: #303ec0; + --color-light-accent-2: #6c366c; + --color-light-accent-3: #932f0a; + --color-cmyk-primary: var(--color-dark-primary); + --color-cmyk-secondary: var(--color-dark-secondary); + --line-height-loose: 1.4; + --line-height-relaxed: 1.3; + --line-height-base: 1.2; + --line-height-snug: 1.1; + --line-height-tight: 1; + --text-xs: 0.75rem; + --text-sm: 0.875rem; + --text-base: 1rem; + --text-lg: 1.125rem; + --text-xl: 1.25rem; + --text-2xl: 1.5rem; + --text-3xl: 1.875rem; + --text-4xl: 2.25rem; + --text-5xl: 3rem; + --text-6xl: 3.75rem; + --text-7xl: 4.5rem; + --container-3xs: 16rem; + --container-2xs: 18rem; + --container-xs: 20rem; + --container-sm: 24rem; + --container-md: 28rem; + --container-lg: 32rem; + --container-xl: 36rem; + --container-2xl: 42rem; + --container-3xl: 48rem; + --container-4xl: 56rem; + --container-5xl: 64rem; + --container-6xl: 72rem; + --container-7xl: 80rem; +} + +.dark { + --color-foreground: var(--color-dark-foreground); + --color-background: var(--color-dark-background); + --color-shade-1: var(--color-dark-shade-1); + --color-shade-2: var(--color-dark-shade-2); + --color-shade-3: var(--color-dark-shade-3); + --color-shade-4: var(--color-dark-shade-4); + --color-text-1: var(--color-dark-text-1); + --color-text-2: var(--color-dark-text-2); + --color-text-3: var(--color-dark-text-3); + --color-text-4: var(--color-dark-text-4); + --color-primary: var(--color-dark-primary); + --color-secondary: var(--color-dark-secondary); + --color-error: var(--color-dark-error); + --color-success: var(--color-dark-success); + --color-warning: var(--color-dark-warning); + --color-accent-1: var(--color-dark-accent-1); + --color-accent-2: var(--color-dark-accent-2); + --color-accent-3: var(--color-dark-accent-3); + --filter-glow-primary: drop-shadow(0 0 0.0625em var(--color-white)) + drop-shadow(0 0 0.125em var(--color-primary)) + drop-shadow(0 0 0.25em var(--color-primary)); + --filter-glow-secondary: drop-shadow(0 0 0.0625em var(--color-white)) + drop-shadow(0 0 0.125em var(--color-secondary)) + drop-shadow(0 0 0.25em var(--color-secondary)); + --color-glow-primary: var(--color-white); + --color-glow-secondary: var(--color-white); + --transition-glow: + filter 150ms cubic-bezier(0, 1.7, 1, -0.3) 50ms, + border-color 150ms cubic-bezier(0, 1.7, 1, -0.3) 50ms; + --text-glow-primary: drop-shadow(0 0 0.03125em var(--color-white)) + drop-shadow(0 0 0.0625em var(--color-primary)) + drop-shadow(0 0 0.125em var(--color-primary)); + --text-glow-secondary: drop-shadow(0 0 0.03125em var(--color-white)) + drop-shadow(0 0 0.0625em var(--color-secondary)) + drop-shadow(0 0 0.125em var(--color-secondary)); +} +@media (prefers-reduced-motion) { + .dark { + --transition-glow: filter 150ms, border-color 150ms; + } +} +.dark .light-only { + display: none; +} +.dark .dark-only { + display: initial; +} + +.light { + --color-foreground: var(--color-light-foreground); + --color-background: var(--color-light-background); + --color-shade-1: var(--color-light-shade-1); + --color-shade-2: var(--color-light-shade-2); + --color-shade-3: var(--color-light-shade-3); + --color-shade-4: var(--color-light-shade-4); + --color-text-1: var(--color-light-text-1); + --color-text-2: var(--color-light-text-2); + --color-text-3: var(--color-light-text-3); + --color-text-4: var(--color-light-text-4); + --color-primary: var(--color-light-primary); + --color-secondary: var(--color-light-secondary); + --color-error: var(--color-light-error); + --color-success: var(--color-light-success); + --color-warning: var(--color-light-warning); + --color-accent-1: var(--color-light-accent-1); + --color-accent-2: var(--color-light-accent-2); + --color-accent-3: var(--color-light-accent-3); + --filter-glow-primary: drop-shadow(0 0 0.0625em var(--color-argon-950)); + --filter-glow-secondary: drop-shadow(0 0 0.0625em var(--color-krypton-950)); + --color-glow-primary: var(--color-argon-800); + --color-glow-secondary: var(--color-krypton-800); + --transition-glow: + filter 150ms cubic-bezier(0, 2, 1, -0.7) 50ms, + border-color 150ms cubic-bezier(0, 2, 1, -0.7) 50ms; + --text-glow-primary: drop-shadow(0 0 0.03125em var(--color-argon-950)); + --text-glow-secondary: drop-shadow(0 0 0.03125em var(--color-krypton-950)); +} +@media (prefers-reduced-motion) { + .light { + --transition-glow: filter 150ms, border-color 150ms; + } +} +.light .light-only { + display: initial; +} +.light .dark-only { + display: none; +} + +@media (prefers-color-scheme: dark) { + html { + --color-foreground: var(--color-dark-foreground); + --color-background: var(--color-dark-background); + --color-shade-1: var(--color-dark-shade-1); + --color-shade-2: var(--color-dark-shade-2); + --color-shade-3: var(--color-dark-shade-3); + --color-shade-4: var(--color-dark-shade-4); + --color-text-1: var(--color-dark-text-1); + --color-text-2: var(--color-dark-text-2); + --color-text-3: var(--color-dark-text-3); + --color-text-4: var(--color-dark-text-4); + --color-primary: var(--color-dark-primary); + --color-secondary: var(--color-dark-secondary); + --color-error: var(--color-dark-error); + --color-success: var(--color-dark-success); + --color-warning: var(--color-dark-warning); + --color-accent-1: var(--color-dark-accent-1); + --color-accent-2: var(--color-dark-accent-2); + --color-accent-3: var(--color-dark-accent-3); + --filter-glow-primary: drop-shadow(0 0 0.0625em var(--color-white)) + drop-shadow(0 0 0.125em var(--color-primary)) + drop-shadow(0 0 0.25em var(--color-primary)); + --filter-glow-secondary: drop-shadow(0 0 0.0625em var(--color-white)) + drop-shadow(0 0 0.125em var(--color-secondary)) + drop-shadow(0 0 0.25em var(--color-secondary)); + --color-glow-primary: var(--color-white); + --color-glow-secondary: var(--color-white); + --transition-glow: + filter 150ms cubic-bezier(0, 1.7, 1, -0.3) 50ms, + border-color 150ms cubic-bezier(0, 1.7, 1, -0.3) 50ms; + --text-glow-primary: drop-shadow(0 0 0.03125em var(--color-white)) + drop-shadow(0 0 0.0625em var(--color-primary)) + drop-shadow(0 0 0.125em var(--color-primary)); + --text-glow-secondary: drop-shadow(0 0 0.03125em var(--color-white)) + drop-shadow(0 0 0.0625em var(--color-secondary)) + drop-shadow(0 0 0.125em var(--color-secondary)); + } +} +@media (prefers-color-scheme: dark) and (prefers-reduced-motion) { + html { + --transition-glow: filter 150ms, border-color 150ms; + } +} +@media (prefers-color-scheme: dark) { + html .light-only { + display: none; + } + html .dark-only { + display: initial; + } + html:has(#themeLight:checked) { + --color-foreground: var(--color-light-foreground); + --color-background: var(--color-light-background); + --color-shade-1: var(--color-light-shade-1); + --color-shade-2: var(--color-light-shade-2); + --color-shade-3: var(--color-light-shade-3); + --color-shade-4: var(--color-light-shade-4); + --color-text-1: var(--color-light-text-1); + --color-text-2: var(--color-light-text-2); + --color-text-3: var(--color-light-text-3); + --color-text-4: var(--color-light-text-4); + --color-primary: var(--color-light-primary); + --color-secondary: var(--color-light-secondary); + --color-error: var(--color-light-error); + --color-success: var(--color-light-success); + --color-warning: var(--color-light-warning); + --color-accent-1: var(--color-light-accent-1); + --color-accent-2: var(--color-light-accent-2); + --color-accent-3: var(--color-light-accent-3); + --filter-glow-primary: drop-shadow(0 0 0.0625em var(--color-argon-950)); + --filter-glow-secondary: drop-shadow(0 0 0.0625em var(--color-krypton-950)); + --color-glow-primary: var(--color-argon-800); + --color-glow-secondary: var(--color-krypton-800); + --transition-glow: + filter 150ms cubic-bezier(0, 2, 1, -0.7) 50ms, + border-color 150ms cubic-bezier(0, 2, 1, -0.7) 50ms; + --text-glow-primary: drop-shadow(0 0 0.03125em var(--color-argon-950)); + --text-glow-secondary: drop-shadow(0 0 0.03125em var(--color-krypton-950)); + } +} +@media (prefers-color-scheme: dark) and (prefers-reduced-motion) { + html:has(#themeLight:checked) { + --transition-glow: filter 150ms, border-color 150ms; + } +} +@media (prefers-color-scheme: dark) { + html:has(#themeLight:checked) .light-only { + display: initial; + } + html:has(#themeLight:checked) .dark-only { + display: none; + } + + #themeToggleDark { + display: none; + } +} +@media (prefers-color-scheme: light) { + html { + --color-foreground: var(--color-light-foreground); + --color-background: var(--color-light-background); + --color-shade-1: var(--color-light-shade-1); + --color-shade-2: var(--color-light-shade-2); + --color-shade-3: var(--color-light-shade-3); + --color-shade-4: var(--color-light-shade-4); + --color-text-1: var(--color-light-text-1); + --color-text-2: var(--color-light-text-2); + --color-text-3: var(--color-light-text-3); + --color-text-4: var(--color-light-text-4); + --color-primary: var(--color-light-primary); + --color-secondary: var(--color-light-secondary); + --color-error: var(--color-light-error); + --color-success: var(--color-light-success); + --color-warning: var(--color-light-warning); + --color-accent-1: var(--color-light-accent-1); + --color-accent-2: var(--color-light-accent-2); + --color-accent-3: var(--color-light-accent-3); + --filter-glow-primary: drop-shadow(0 0 0.0625em var(--color-argon-950)); + --filter-glow-secondary: drop-shadow(0 0 0.0625em var(--color-krypton-950)); + --color-glow-primary: var(--color-argon-800); + --color-glow-secondary: var(--color-krypton-800); + --transition-glow: + filter 150ms cubic-bezier(0, 2, 1, -0.7) 50ms, + border-color 150ms cubic-bezier(0, 2, 1, -0.7) 50ms; + --text-glow-primary: drop-shadow(0 0 0.03125em var(--color-argon-950)); + --text-glow-secondary: drop-shadow(0 0 0.03125em var(--color-krypton-950)); + } +} +@media (prefers-color-scheme: light) and (prefers-reduced-motion) { + html { + --transition-glow: filter 150ms, border-color 150ms; + } +} +@media (prefers-color-scheme: light) { + html .light-only { + display: initial; + } + html .dark-only { + display: none; + } + html:has(#themeDark:checked) { + --color-foreground: var(--color-dark-foreground); + --color-background: var(--color-dark-background); + --color-shade-1: var(--color-dark-shade-1); + --color-shade-2: var(--color-dark-shade-2); + --color-shade-3: var(--color-dark-shade-3); + --color-shade-4: var(--color-dark-shade-4); + --color-text-1: var(--color-dark-text-1); + --color-text-2: var(--color-dark-text-2); + --color-text-3: var(--color-dark-text-3); + --color-text-4: var(--color-dark-text-4); + --color-primary: var(--color-dark-primary); + --color-secondary: var(--color-dark-secondary); + --color-error: var(--color-dark-error); + --color-success: var(--color-dark-success); + --color-warning: var(--color-dark-warning); + --color-accent-1: var(--color-dark-accent-1); + --color-accent-2: var(--color-dark-accent-2); + --color-accent-3: var(--color-dark-accent-3); + --filter-glow-primary: drop-shadow(0 0 0.0625em var(--color-white)) + drop-shadow(0 0 0.125em var(--color-primary)) + drop-shadow(0 0 0.25em var(--color-primary)); + --filter-glow-secondary: drop-shadow(0 0 0.0625em var(--color-white)) + drop-shadow(0 0 0.125em var(--color-secondary)) + drop-shadow(0 0 0.25em var(--color-secondary)); + --color-glow-primary: var(--color-white); + --color-glow-secondary: var(--color-white); + --transition-glow: + filter 150ms cubic-bezier(0, 1.7, 1, -0.3) 50ms, + border-color 150ms cubic-bezier(0, 1.7, 1, -0.3) 50ms; + --text-glow-primary: drop-shadow(0 0 0.03125em var(--color-white)) + drop-shadow(0 0 0.0625em var(--color-primary)) + drop-shadow(0 0 0.125em var(--color-primary)); + --text-glow-secondary: drop-shadow(0 0 0.03125em var(--color-white)) + drop-shadow(0 0 0.0625em var(--color-secondary)) + drop-shadow(0 0 0.125em var(--color-secondary)); + } +} +@media (prefers-color-scheme: light) and (prefers-reduced-motion) { + html:has(#themeDark:checked) { + --transition-glow: filter 150ms, border-color 150ms; + } +} +@media (prefers-color-scheme: light) { + html:has(#themeDark:checked) .light-only { + display: none; + } + html:has(#themeDark:checked) .dark-only { + display: initial; + } + + #themeToggleLight { + display: none; + } +} +@font-face { + font-family: "Athiti"; + font-weight: 700; + src: url("../font/athiti/Athiti-Bold.woff2") format("woff2"); +} +@font-face { + font-family: "Athiti"; + font-weight: 600; + src: url("../font/athiti/Athiti-SemiBold.woff2") format("woff2"); +} +@font-face { + font-family: "Athiti"; + font-weight: 500; + src: url("../font/athiti/Athiti-Medium.woff2") format("woff2"); +} +@font-face { + font-family: "Athiti"; + font-weight: 400; + src: url("../font/athiti/Athiti-Regular.woff2") format("woff2"); +} +@font-face { + font-family: "Athiti"; + font-weight: 300; + src: url("../font/athiti/Athiti-Light.woff2") format("woff2"); +} +@font-face { + font-family: "Athiti"; + font-weight: 200; + src: url("../font/athiti/Athiti-ExtraLight.woff2") format("woff2"); +} +@font-face { + font-family: "Departure Mono"; + src: url("../font/departuremono/DepartureMono-Regular.woff2") format("woff2"); +} +@font-face { + font-family: "Argon Glow"; + font-weight: 100; + src: url("../font/argonglow/ArgonGlow-Thin.woff2") format("woff2"); +} +@font-face { + font-family: "Argon Glow"; + font-weight: 200; + src: url("../font/argonglow/ArgonGlow-ExtraLight.woff2") format("woff2"); +} +@font-face { + font-family: "Argon Glow"; + font-weight: 300; + src: url("../font/argonglow/ArgonGlow-Light.woff2") format("woff2"); +} +@font-face { + font-family: "Argon Glow"; + font-weight: 400; + src: url("../font/argonglow/ArgonGlow-Regular.woff2") format("woff2"); +} +@font-face { + font-family: "Argon Glow"; + font-weight: 500; + src: url("../font/argonglow/ArgonGlow-Medium.woff2") format("woff2"); +} +@font-face { + font-family: "Argon Glow"; + font-weight: 600; + src: url("../font/argonglow/ArgonGlow-SemiBold.woff2") format("woff2"); +} +@font-face { + font-family: "Argon Glow"; + font-weight: 700; + src: url("../font/argonglow/ArgonGlow-Bold.woff2") format("woff2"); +} +@font-face { + font-family: "Argon Glow"; + src: url("../font/argonglow/ArgonGlow-VariableVF.woff2") format("woff2"); + font-weight: 100 900; +} +:root { + font-size: 1rem; +} + +body { + background-color: var(--color-background); + color: var(--color-foreground); + font-family: "Athiti", ui-sans, sans-serif; + line-height: var(--line-height-base); +} + +.main-title, +h1, +.h1, +h2, +.h2, +h3, +.h3, +h4, +.h4, +h5, +.h5, +h6, +.h6 { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + margin: 1rem 0; +} + +.main-title { + font-size: var(--text-7xl); + line-height: var(--line-height-base); +} + +h1, +.h1 { + font-size: var(--text-5xl); + line-height: var(--line-height-base); +} + +h2, +.h2 { + font-size: var(--text-4xl); + line-height: var(--line-height-base); +} + +h3, +.h3 { + font-size: var(--text-3xl); + line-height: var(--line-height-base); +} + +h4, +.h4 { + font-size: var(--text-2xl); + line-height: var(--line-height-loose); +} + +h5, +.h5 { + font-size: var(--text-xl); + line-height: var(--line-height-loose); +} + +h6, +.h6 { + font-size: var(--text-lg); + line-height: var(--line-height-loose); +} + +pre { + font-family: "Departure Mono", ui-monospace, monospace; + font-size: 0.8em; + display: block; + padding: 1rem; + border-radius: 1rem; + border: solid 0.3em var(--color-shade-2); +} +pre code { + background-color: initial; + border: initial; + border-radius: initial; + padding: initial; + font-size: inherit; +} + +code, +.code { + font-family: "Departure Mono", ui-monospace, monospace; + font-size: 0.8em; + border: solid 0.15em var(--color-shade-3); + border-radius: 0.2em; + padding: 0 0.2em; +} + +pre span.comment, +code span.comment, +.code span.comment { + color: var(--color-text-4); + font-style: italic; +} +pre span.neutral, +code span.neutral, +.code span.neutral { + color: var(--color-text-2); +} +pre span.identifier, +code span.identifier, +.code span.identifier { + color: var(--color-primary); +} +pre span.function, +code span.function, +.code span.function { + color: var(--color-accent-1); + font-style: italic; +} +pre span.keyword, +code span.keyword, +.code span.keyword { + color: var(--color-accent-2); +} +pre span.number, +code span.number, +.code span.number { + color: var(--color-accent-3); +} +pre span.string, +code span.string, +.code span.string { + color: var(--color-accent-3); + font-style: italic; +} + +table { + width: fit-content; + border-collapse: collapse; +} +table th, +table td { + padding: 0.25rem 0.5rem; + border: solid 0.1em var(--color-shade-4); +} +table tr th { + text-align: left; + background-color: var(--color-shade-1); +} +table thead { + position: sticky; + top: 4rem; + z-index: 10; +} +@media (min-width: 48rem) { + table thead { + top: 0; + } +} +table thead tr > th { + outline-width: 0.1em; + outline-style: solid; + outline-offset: -0.05em; + outline-color: var(--color-shade-4); +} +table.row-hover tbody tr:hover th { + background-color: var(--color-shade-3); +} +table.row-hover tbody tr:hover td { + background-color: var(--color-shade-2); +} + +a { + color: var(--color-accent-1); + text-decoration: underline; +} +a:hover, a:active, a:focus { + color: var(--color-accent-3); + text-decoration: none; +} +a:visited { + color: var(--color-accent-2); + text-decoration: underline; +} +a:visited:hover, a:visited:active, a:visited:focus { + color: var(--color-accent-3); + text-decoration: none; +} + +figure { + display: flex; + flex-direction: column; + align-items: center; +} +figure img { + width: 100%; + max-height: 30vh; + object-fit: contain; + object-position: center; +} + +img { + width: 80%; + max-height: 30vh; + object-fit: contain; + object-position: center; + margin: 0 auto; +} + +i[data-icon] { + display: inline-block; + width: 1em; + height: 1em; + flex-shrink: 0; + position: relative; + box-sizing: content-box; +} +i[data-icon]::before { + content: ""; + display: block; + width: 100%; + height: 100%; + mask-size: contain; + mask-position: center; + mask-repeat: no-repeat; + background-color: currentColor; +} +i[data-icon="arrow_down"]::before { + mask-image: url("../icon/arrow_down.svg"); +} +i[data-icon="arrow_down_left"]::before { + mask-image: url("../icon/arrow_down_left.svg"); +} +i[data-icon="arrow_down_right"]::before { + mask-image: url("../icon/arrow_down_right.svg"); +} +i[data-icon="arrow_left"]::before { + mask-image: url("../icon/arrow_left.svg"); +} +i[data-icon="arrow_right"]::before { + mask-image: url("../icon/arrow_right.svg"); +} +i[data-icon="arrow_up"]::before { + mask-image: url("../icon/arrow_up.svg"); +} +i[data-icon="arrow_up_left"]::before { + mask-image: url("../icon/arrow_up_left.svg"); +} +i[data-icon="arrow_up_right"]::before { + mask-image: url("../icon/arrow_up_right.svg"); +} +i[data-icon="basket"]::before { + mask-image: url("../icon/basket.svg"); +} +i[data-icon="bed"]::before { + mask-image: url("../icon/bed.svg"); +} +i[data-icon="clock"]::before { + mask-image: url("../icon/clock.svg"); +} +i[data-icon="code"]::before { + mask-image: url("../icon/code.svg"); +} +i[data-icon="creature"]::before { + mask-image: url("../icon/creature.svg"); +} +i[data-icon="cross"]::before { + mask-image: url("../icon/cross.svg"); +} +i[data-icon="cross_small"]::before { + mask-image: url("../icon/cross_small.svg"); +} +i[data-icon="cup_1"]::before { + mask-image: url("../icon/cup_1.svg"); +} +i[data-icon="cup_2"]::before { + mask-image: url("../icon/cup_2.svg"); +} +i[data-icon="dect"]::before { + mask-image: url("../icon/dect.svg"); +} +i[data-icon="external"]::before { + mask-image: url("../icon/external.svg"); +} +i[data-icon="fairydust"]::before { + mask-image: url("../icon/fairydust.svg"); +} +i[data-icon="flag"]::before { + mask-image: url("../icon/flag.svg"); +} +i[data-icon="font"]::before { + mask-image: url("../icon/font.svg"); +} +i[data-icon="gluten"]::before { + mask-image: url("../icon/gluten.svg"); +} +i[data-icon="hackertours"]::before { + mask-image: url("../icon/hackertours.svg"); +} +i[data-icon="hare_head"]::before { + mask-image: url("../icon/hare_head.svg"); +} +i[data-icon="history"]::before { + mask-image: url("../icon/history.svg"); +} +i[data-icon="home"]::before { + mask-image: url("../icon/home.svg"); +} +i[data-icon="hygene"]::before { + mask-image: url("../icon/hygene.svg"); +} +i[data-icon="info"]::before { + mask-image: url("../icon/info.svg"); +} +i[data-icon="lightbulb"]::before { + mask-image: url("../icon/lightbulb.svg"); +} +i[data-icon="link"]::before { + mask-image: url("../icon/link.svg"); +} +i[data-icon="location"]::before { + mask-image: url("../icon/location.svg"); +} +i[data-icon="lock"]::before { + mask-image: url("../icon/lock.svg"); +} +i[data-icon="login"]::before { + mask-image: url("../icon/login.svg"); +} +i[data-icon="logout"]::before { + mask-image: url("../icon/logout.svg"); +} +i[data-icon="looping"]::before { + mask-image: url("../icon/looping.svg"); +} +i[data-icon="menu"]::before { + mask-image: url("../icon/menu.svg"); +} +i[data-icon="menu_small"]::before { + mask-image: url("../icon/menu_small.svg"); +} +i[data-icon="merch"]::before { + mask-image: url("../icon/merch.svg"); +} +i[data-icon="message"]::before { + mask-image: url("../icon/message.svg"); +} +i[data-icon="microphone"]::before { + mask-image: url("../icon/microphone.svg"); +} +i[data-icon="network"]::before { + mask-image: url("../icon/network.svg"); +} +i[data-icon="paperplane"]::before { + mask-image: url("../icon/paperplane.svg"); +} +i[data-icon="pen"]::before { + mask-image: url("../icon/pen.svg"); +} +i[data-icon="pin"]::before { + mask-image: url("../icon/pin.svg"); +} +i[data-icon="plate_and_cutlery"]::before { + mask-image: url("../icon/plate_and_cutlery.svg"); +} +i[data-icon="power"]::before { + mask-image: url("../icon/power.svg"); +} +i[data-icon="question"]::before { + mask-image: url("../icon/question.svg"); +} +i[data-icon="schedule"]::before { + mask-image: url("../icon/schedule.svg"); +} +i[data-icon="search"]::before { + mask-image: url("../icon/search.svg"); +} +i[data-icon="settings"]::before { + mask-image: url("../icon/settings.svg"); +} +i[data-icon="signup"]::before { + mask-image: url("../icon/signup.svg"); +} +i[data-icon="soldering_iron"]::before { + mask-image: url("../icon/soldering_iron.svg"); +} +i[data-icon="tick"]::before { + mask-image: url("../icon/tick.svg"); +} +i[data-icon="tick_small"]::before { + mask-image: url("../icon/tick_small.svg"); +} +i[data-icon="ticket"]::before { + mask-image: url("../icon/ticket.svg"); +} +i[data-icon="toast"]::before { + mask-image: url("../icon/toast.svg"); +} +i[data-icon="train"]::before { + mask-image: url("../icon/train.svg"); +} +i[data-icon="vegan"]::before { + mask-image: url("../icon/vegan.svg"); +} +i[data-icon="warning"]::before { + mask-image: url("../icon/warning.svg"); +} + +* { + box-sizing: border-box; +} + +body { + margin: 0; + height: 100vh; + width: 100%; + display: flex; + flex-direction: column; + position: relative; + overflow: auto; +} +body header { + text-align: center; + width: 100%; + height: fit-content; + flex-grow: 0; +} +@media (max-width: 48rem) { + body header { + margin-top: 4rem; + } +} +body header .header-image { + height: 200px; + width: fit-content; + max-width: 100%; + object-fit: contain; +} +body header #backToWiki > img { + transition: transform 200ms; +} +body header #backToWiki:hover > img { + transform: scale(1.05); +} +body .main-title, +body h1, +body .h1, +body h2, +body .h2, +body h3, +body .h3, +body h4, +body .h4 { + filter: var(--text-glow-primary); + color: var(--color-glow-primary); +} +body > div { + display: flex; + gap: 1rem; + flex-grow: 1; + flex-direction: column; +} +@media (min-width: 48rem) { + body > div { + flex-direction: row; + } +} +body > div nav { + display: flex; + flex-direction: column; + flex-shrink: 0; + position: sticky; + top: 0; + padding: 0 1rem; + background-color: var(--color-background); + z-index: 20; + overflow: hidden; + width: 100%; + height: 4rem; + transition: height 200ms; +} +@media (min-width: 48rem) { + body > div nav { + max-width: 15rem; + width: fit-content; + top: 1rem; + height: fit-content; + overflow: visible; + } + body > div nav button { + display: none; + } +} +@media (max-width: 48rem) { + body > div nav { + position: fixed; + } + body > div nav:not(.visible) ul { + display: none; + } + body > div nav.visible { + height: 100vh; + } +} +body > div nav button { + background-color: transparent; + border: none; + color: var(--color-foreground); + font-size: 2rem; + cursor: pointer; + transition: filter 400ms ease-in; + padding: 1rem 0; + width: 2rem; + height: 2rem; + box-sizing: content-box; +} +body > div nav button:hover { + filter: var(--filter-glow-primary); + transition: var(--transition-glow); +} +body > div nav ul { + display: flex; + flex-direction: column; + gap: 0.75rem; + list-style-type: none; + padding: 0; + margin: 0; +} +body > div nav ul li { + border-radius: 0.5rem; + background-color: var(--color-shade-1); + transition: background-color 150ms; +} +body > div nav ul li.link-back { + background-color: var(--color-background); +} +body > div nav ul li.active { + background-color: var(--color-shade-2); +} +body > div nav ul li.link-back a, body > div nav ul li.active a { + border-color: var(--color-shade-4); +} +body > div nav ul li > a, +body > div nav ul li label { + display: flex; + align-items: center; + gap: 0.5rem; + border-radius: 0.5rem; + border: solid 0.1em var(--color-shade-1); + padding: 0.4rem 1rem; + color: var(--color-foreground); + text-decoration: none; + font-size: 1.2em; + box-sizing: border-box; + transition-property: filter, border-color; + transition-duration: 400ms; + transition-timing-function: ease-in; +} +body > div nav ul li > a:visited, body > div nav ul li > a:focus, body > div nav ul li > a:active, body > div nav ul li > a:hover, +body > div nav ul li label:visited, +body > div nav ul li label:focus, +body > div nav ul li label:active, +body > div nav ul li label:hover { + color: var(--color-foreground); +} +body > div nav ul li:hover, body > div nav ul li:focus-within { + background-color: transparent; +} +body > div nav ul li:hover a, +body > div nav ul li:hover label, body > div nav ul li:focus-within a, +body > div nav ul li:focus-within label { + border: solid 0.1em var(--color-glow-primary); + background-color: transparent; + filter: var(--filter-glow-primary); + transition: var(--transition-glow); +} +body > div nav ul li:hover a:visited, body > div nav ul li:hover a:focus, body > div nav ul li:hover a:active, body > div nav ul li:hover a:hover, +body > div nav ul li:hover label:visited, +body > div nav ul li:hover label:focus, +body > div nav ul li:hover label:active, +body > div nav ul li:hover label:hover, body > div nav ul li:focus-within a:visited, body > div nav ul li:focus-within a:focus, body > div nav ul li:focus-within a:active, body > div nav ul li:focus-within a:hover, +body > div nav ul li:focus-within label:visited, +body > div nav ul li:focus-within label:focus, +body > div nav ul li:focus-within label:active, +body > div nav ul li:focus-within label:hover { + color: var(--color-glow-primary); +} +body > div nav ul li:hover.link-back a, body > div nav ul li:focus-within.link-back a { + border: solid 0.1em var(--color-glow-secondary); + filter: var(--filter-glow-secondary); +} +body > div nav ul li:hover.link-back a:visited, body > div nav ul li:hover.link-back a:focus, body > div nav ul li:hover.link-back a:active, body > div nav ul li:hover.link-back a:hover, body > div nav ul li:focus-within.link-back a:visited, body > div nav ul li:focus-within.link-back a:focus, body > div nav ul li:focus-within.link-back a:active, body > div nav ul li:focus-within.link-back a:hover { + color: var(--color-glow-secondary); +} +body > div nav ul li:not(.themeToggle) i[data-icon] { + padding-right: 0.5em; + padding-top: 0.2em; + padding-bottom: 0.2em; + border-right: solid 0.1em currentColor; +} +body > div nav ul li.themeToggle { + font-size: 1.4em; + width: fit-content; +} +body > div nav ul li.themeToggle input { + width: 0; + height: 0; + margin: 0; + padding: 0; + display: block; + opacity: 0; +} +body > div nav ul li.themeToggle label { + justify-content: center; + padding: 0.25em; +} +body > div main { + max-width: min(var(--container-4xl), 100vw); + width: 100%; + padding: 0 1rem; + overflow-x: hidden; +} +@media (min-width: 48rem) { + body > div main { + padding-left: 2rem; + border-left: dashed 0.25rem var(--color-shade-4); + } +} + +.background { + background-color: var(--color-background); +} + +a.a-regular, a.a-regular:hover, a.a-regular:active, a.a-regular:focus, a.a-regular:visited { + color: var(--color-accent-1); + text-decoration: underline; +} +a.a-hover, a.a-hover:visited { + color: var(--color-accent-3); + text-decoration: none; +} +a.a-visited, a.a-visited:hover, a.a-visited:active, a.a-visited:focus { + color: var(--color-accent-2); + text-decoration: underline; +} + +.alert { + background-color: var(--color-shade-1); + padding: 1rem 1.5rem; + border-radius: 1rem; + position: relative; + display: flex; + flex-direction: row; + gap: 1.5rem; + margin: 2rem 0; +} +.alert i[data-icon] { + padding-top: 0.5rem; + font-size: var(--text-5xl); + filter: var(--filter-glow-primary); + color: var(--color-glow-primary); +} +.alert strong { + font-size: var(--text-xl); + display: block; +} +.alert p { + margin: 0; +} +.alert::before { + content: ""; + position: absolute; + inset: 0; + border-radius: 1rem; + border: solid 0.125rem var(--color-glow-primary); + filter: var(--filter-glow-primary); +} + +pre, +.code { + max-width: 100%; + overflow-x: auto; +} + +.layout-column { + display: flex; + width: 100%; +} +.layout-column > * { + width: 100%; +} +@media (max-width: 48rem) { + .layout-column { + flex-wrap: wrap; + } + .layout-column > * { + width: 100%; + } +} + +.flex-wrap-md { + display: flex; + align-items: center; +} +.flex-wrap-md > * { + width: 100%; +} +@media (max-width: 80rem) { + .flex-wrap-md { + flex-wrap: wrap; + justify-content: center; + } + .flex-wrap-md > * { + width: 100%; + } +} + +main > div.generator { + display: flex; + flex-direction: column; + gap: 1em; + align-items: center; +} +main > div.generator img { + width: 400px; + height: 300px; + object-fit: contain; + filter: drop-shadow(0 0 0.0625em var(--color-white)) drop-shadow(0 0 0.125em var(--color-primary)) drop-shadow(0 0 0.25em var(--color-primary)); +} +main > div.generator i { + font-size: 3em; + filter: drop-shadow(0 0 0.0625em var(--color-white)) drop-shadow(0 0 0.125em var(--color-primary)) drop-shadow(0 0 0.25em var(--color-primary)); +} + +.icon-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(var(--text-5xl), 1fr)); + align-items: center; + justify-items: center; + gap: 2rem; +} +.icon-grid div { + width: var(--text-5xl); + height: var(--text-5xl); + display: flex; + align-items: center; + justify-content: center; + box-sizing: content-box; + padding: 0.5rem; + border-radius: 0.3rem; + cursor: pointer; +} +.icon-grid div:hover, .icon-grid div:focus { + background-color: var(--color-shade-2); +} +.icon-grid div:hover i[data-icon]::after, .icon-grid div:focus i[data-icon]::after { + content: attr(data-icon); + font-size: var(--text-xl); + background-color: var(--color-shade-2); + padding: 0.5rem; + z-index: 10; + position: absolute; + bottom: calc((var(--text-xl) * -1) - 2rem); + border-radius: 0.3rem; +} +.icon-grid div i[data-icon] { + font-size: 3rem; + position: relative; +} +.icon-grid div i[data-icon].icon-small { + font-size: 2rem; +} + +.swatch-grid { + background-color: var(--color-background); + color: var(--color-foreground); + padding: 0.5rem; +} +.swatch-grid section { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + margin-top: 2rem; + --swatch-size: 5rem; +} +.swatch-grid section > span { + width: 100%; + font-size: var(--text-xl); +} +.swatch-grid section .swatch-container { + display: inline-flex; + flex-direction: column; + align-items: center; + gap: 0.25rem; + background-color: var(--color-background); + border-radius: 0.75rem; + padding: 0.25rem; + border: 0.125rem solid var(--color-foreground); +} +.swatch-grid section .swatch-container .swatch { + background-color: var(--swatch-color); + width: var(--swatch-size); + aspect-ratio: 1; + border-radius: 0.5rem; +} +.swatch-grid section .swatch-container span { + font-family: "Departure Mono", ui-monospace, monospace; + color: var(--color-foreground); + line-height: 1.5; +} + +.glow-16-primary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 16px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-18-primary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 18px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-24-primary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 24px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-32-primary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 32px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-48-primary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 48px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-72-primary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 72px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-160-primary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 160px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-16-secondary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 16px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-18-secondary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 18px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-24-secondary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 24px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-32-secondary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 32px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-48-secondary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 48px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-72-secondary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 72px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-160-secondary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 160px; + color: var(--color-white); + filter: url("glows.svg"); +} + +main { + max-width: 100%; + height: 100vh; + overflow: auto; + padding: 0 1rem; +} +main > div#intro { + position: sticky; + left: 0; +} + +.table-container { + overflow-x: auto; + width: 100%; +} + +table { + user-select: none; + width: fit-content; + border-collapse: collapse; + border: solid 4px var(--color-shade-2); +} +table thead { + position: sticky; + top: calc(-1rem + 2px); + z-index: 10; + background-color: var(--color-background); + outline: solid 4px var(--color-shade-2); + outline-offset: -2px; +} +table thead tr > th { + outline: solid 1px var(--color-shade-2); +} +table thead tr > th.hover { + background-color: var(--color-shade-3); +} +table thead tr:first-child > th[colspan="15"] { + background-color: var(--color-shade-2); + color: var(--color-dark-foreground); +} +table thead.currentEvent { + outline-color: var(--color-primary); +} +table thead.currentEvent tr > th { + outline-color: var(--color-primary); +} +table thead.currentEvent tr:first-child > th { + background-color: var(--color-primary); +} +table tbody { + border-top: solid 4px var(--color-shade-2); +} +table tbody.currentEvent { + border: solid 4px var(--color-primary); +} +table tbody.filtered { + display: none; +} +table tbody > tr > th, +table thead > tr > th, +table td { + text-align: center; +} +table th, +table td { + padding: 0.25rem 0.5rem; + border: solid 1px var(--color-shade-2); + min-width: 6ch; +} +table th.hover, +table td.hover { + background-color: var(--color-shade-1); +} +table td.val { + font-family: "Departure Mono", ui-monospace, monospace; +} +table td.val.hover { + background-color: transparent; +} +table td.val:not(.empty) { + cursor: pointer; +} +table td.val:not(.empty).hover { + background-color: var(--color-shade-1); +} +table td.val:not(.empty):hover { + background-color: var(--color-shade-3); +} +table td.val.highlighted[data-dim="A"] { + background-color: #60a5f9; +} +table td.val.highlighted[data-dim="B"] { + background-color: #d381f7; +} +table td.val.highlighted[data-dim="C"] { + background-color: #ff7975; +} +table td.val.currentDimension:not(.hover) { + background-color: var(--color-shade-2); +} +table td.val:not([data-diff=""])::after { + content: attr(data-diff); + display: block; + font-size: 0.8em; + background-color: var(--custom-color); + width: calc(100% + 1rem); + height: 1lh; + position: relative; + left: -0.5rem; + top: 0.25rem; + margin-top: -0.25rem; +} +table td.val[data-diff=""]::after { + content: ""; + display: block; + font-size: 0.8em; + background-color: transparent; + width: calc(100% + 1rem); + height: 1lh; + position: relative; + left: -0.5rem; + top: 0.25rem; + margin-top: -0.25rem; +} +table td.dimension.hover { + background-color: var(--color-shade-3); +} +table td.dimension.currentDimension::after { + content: ">"; + /*color: var(--color-secondary);*/ + font-family: "Departure Mono", ui-monospace, monospace; + position: relative; + right: calc(-0.5rem - 0.5ch); + margin-left: -1ch; + font-weight: bold; +} + +div.filterBox { + border: solid 4px var(--color-foreground); + margin: 2rem 0; + padding: 1rem; + position: relative; + font-family: "Departure Mono", ui-monospace, monospace; + display: flex; + flex-wrap: wrap; + column-gap: 4rem; + row-gap: 2rem; + width: fit-content; +} +div.filterBox::before { + content: "filter"; + position: absolute; + top: -0.6lh; + background-color: var(--color-background); + padding: 0 0.5rem; +} +div.filterBox > div { + display: flex; + flex-direction: column; + gap: 0.5rem; + font-size: 1.2rem; +} +div.filterBox > div label { + display: flex; + align-items: center; + gap: 0.5rem; +} +div.filterBox > div label input[type="checkbox"] { + appearance: none; + background-color: var(--color-shade-1); + margin: 0; + color: currentColor; + width: 1.8em; + height: 1.8em; + border: 0.3em solid var(--color-shade-4); + border-radius: 0.15em; + transform: translateY(-0.075em); + position: relative; + font-family: inherit; +} +div.filterBox > div label input[type="checkbox"]::before { + position: absolute; + inset: 0; + content: "x"; + text-align: center; + font-size: 1.2rem; + line-height: 0.7; + transform: scale(0); + transition: 120ms transform ease-in-out; +} +div.filterBox > div label input[type="checkbox"]:checked::before { + transform: scale(1); +} + +/*# sourceMappingURL=merch.css.map */ diff --git a/eh22.easterhegg.eu/design/assets/style/styleguide.css b/eh22.easterhegg.eu/design/assets/style/styleguide.css new file mode 100644 index 0000000..807d2da --- /dev/null +++ b/eh22.easterhegg.eu/design/assets/style/styleguide.css @@ -0,0 +1,1419 @@ +:root { + --color-neutral-50: #f2f0f5; + --color-neutral-100: #d1c6e0; + --color-neutral-200: #b2a0cb; + --color-neutral-300: #957eb5; + --color-neutral-400: #7a60a0; + --color-neutral-500: #61468b; + --color-neutral-600: #4b3176; + --color-neutral-700: #371f60; + --color-neutral-800: #26114b; + --color-neutral-900: #180736; + --color-neutral-950: #0c011f; + --color-argon-50: #e1abc9; + --color-argon-100: #da87b5; + --color-argon-200: #d464a1; + --color-argon-300: #cd448f; + --color-argon-400: #c6257d; + --color-argon-500: #b0166f; + --color-argon-600: #9a0a61; + --color-argon-700: #830755; + --color-argon-800: #6d0449; + --color-argon-900: #56023c; + --color-argon-950: #3f012d; + --color-krypton-50: #b2d9ea; + --color-krypton-100: #8cc9e4; + --color-krypton-200: #69bade; + --color-krypton-300: #4badd8; + --color-krypton-400: #2493c2; + --color-krypton-500: #167fac; + --color-krypton-600: #0a6c96; + --color-krypton-700: #075c81; + --color-krypton-800: #044c6b; + --color-krypton-900: #023c55; + --color-krypton-950: #012c3f; + --color-green-50: #c0f49a; + --color-green-100: #a7e57a; + --color-green-200: #8fd75d; + --color-green-300: #7ac843; + --color-green-400: #66b92d; + --color-green-500: #54aa18; + --color-green-600: #47990f; + --color-green-700: #397e0a; + --color-green-800: #2b6206; + --color-green-900: #1f4703; + --color-green-950: #122b01; + --color-red-50: #e6afaf; + --color-red-100: #dd9090; + --color-red-200: #d57272; + --color-red-300: #cc5757; + --color-red-400: #c33d3d; + --color-red-500: #bb2626; + --color-red-600: #b21010; + --color-red-700: #950808; + --color-red-800: #780404; + --color-red-900: #5c0202; + --color-red-950: #3f0101; + --color-yellow-50: #fefce8; + --color-yellow-100: #fef9c2; + --color-yellow-200: #fff085; + --color-yellow-300: #ffdf20; + --color-yellow-400: #fdc700; + --color-yellow-500: #efb100; + --color-yellow-600: #d08700; + --color-yellow-700: #a65f00; + --color-yellow-800: #894b00; + --color-yellow-900: #733e0a; + --color-yellow-950: #432004; + --color-white: #ffffff; + --color-dark-foreground: var(--color-neutral-50); + --color-dark-background: var(--color-neutral-950); + --color-dark-shade-1: var(--color-neutral-900); + --color-dark-shade-2: var(--color-neutral-800); + --color-dark-shade-3: var(--color-neutral-700); + --color-dark-shade-4: var(--color-neutral-600); + --color-dark-text-1: var(--color-neutral-200); + --color-dark-text-2: var(--color-neutral-300); + --color-dark-text-3: var(--color-neutral-400); + --color-dark-text-4: var(--color-neutral-500); + --color-dark-primary: var(--color-argon-400); + --color-dark-secondary: var(--color-krypton-300); + --color-dark-error: var(--color-red-500); + --color-dark-success: var(--color-green-500); + --color-dark-warning: var(--color-yellow-500); + --color-dark-accent-1: #60a5f9; + --color-dark-accent-2: #d381f7; + --color-dark-accent-3: #ff7975; + --color-light-foreground: var(--color-neutral-950); + --color-light-background: var(--color-neutral-50); + --color-light-shade-1: var(--color-neutral-100); + --color-light-shade-2: var(--color-neutral-200); + --color-light-shade-3: var(--color-neutral-300); + --color-light-shade-4: var(--color-neutral-400); + --color-light-text-1: var(--color-neutral-800); + --color-light-text-2: var(--color-neutral-700); + --color-light-text-3: var(--color-neutral-600); + --color-light-text-4: var(--color-neutral-500); + --color-light-primary: var(--color-argon-600); + --color-light-secondary: var(--color-krypton-500); + --color-light-error: var(--color-red-600); + --color-light-success: var(--color-green-600); + --color-light-warning: var(--color-yellow-600); + --color-light-accent-1: #303ec0; + --color-light-accent-2: #6c366c; + --color-light-accent-3: #932f0a; + --color-cmyk-primary: var(--color-dark-primary); + --color-cmyk-secondary: var(--color-dark-secondary); + --line-height-loose: 1.4; + --line-height-relaxed: 1.3; + --line-height-base: 1.2; + --line-height-snug: 1.1; + --line-height-tight: 1; + --text-xs: 0.75rem; + --text-sm: 0.875rem; + --text-base: 1rem; + --text-lg: 1.125rem; + --text-xl: 1.25rem; + --text-2xl: 1.5rem; + --text-3xl: 1.875rem; + --text-4xl: 2.25rem; + --text-5xl: 3rem; + --text-6xl: 3.75rem; + --text-7xl: 4.5rem; + --container-3xs: 16rem; + --container-2xs: 18rem; + --container-xs: 20rem; + --container-sm: 24rem; + --container-md: 28rem; + --container-lg: 32rem; + --container-xl: 36rem; + --container-2xl: 42rem; + --container-3xl: 48rem; + --container-4xl: 56rem; + --container-5xl: 64rem; + --container-6xl: 72rem; + --container-7xl: 80rem; +} + +.dark { + --color-foreground: var(--color-dark-foreground); + --color-background: var(--color-dark-background); + --color-shade-1: var(--color-dark-shade-1); + --color-shade-2: var(--color-dark-shade-2); + --color-shade-3: var(--color-dark-shade-3); + --color-shade-4: var(--color-dark-shade-4); + --color-text-1: var(--color-dark-text-1); + --color-text-2: var(--color-dark-text-2); + --color-text-3: var(--color-dark-text-3); + --color-text-4: var(--color-dark-text-4); + --color-primary: var(--color-dark-primary); + --color-secondary: var(--color-dark-secondary); + --color-error: var(--color-dark-error); + --color-success: var(--color-dark-success); + --color-warning: var(--color-dark-warning); + --color-accent-1: var(--color-dark-accent-1); + --color-accent-2: var(--color-dark-accent-2); + --color-accent-3: var(--color-dark-accent-3); + --filter-glow-primary: drop-shadow(0 0 0.0625em var(--color-white)) + drop-shadow(0 0 0.125em var(--color-primary)) + drop-shadow(0 0 0.25em var(--color-primary)); + --filter-glow-secondary: drop-shadow(0 0 0.0625em var(--color-white)) + drop-shadow(0 0 0.125em var(--color-secondary)) + drop-shadow(0 0 0.25em var(--color-secondary)); + --color-glow-primary: var(--color-white); + --color-glow-secondary: var(--color-white); + --transition-glow: + filter 150ms cubic-bezier(0, 1.7, 1, -0.3) 50ms, + border-color 150ms cubic-bezier(0, 1.7, 1, -0.3) 50ms; + --text-glow-primary: drop-shadow(0 0 0.03125em var(--color-white)) + drop-shadow(0 0 0.0625em var(--color-primary)) + drop-shadow(0 0 0.125em var(--color-primary)); + --text-glow-secondary: drop-shadow(0 0 0.03125em var(--color-white)) + drop-shadow(0 0 0.0625em var(--color-secondary)) + drop-shadow(0 0 0.125em var(--color-secondary)); +} +@media (prefers-reduced-motion) { + .dark { + --transition-glow: filter 150ms, border-color 150ms; + } +} +.dark .light-only { + display: none; +} +.dark .dark-only { + display: initial; +} + +.light { + --color-foreground: var(--color-light-foreground); + --color-background: var(--color-light-background); + --color-shade-1: var(--color-light-shade-1); + --color-shade-2: var(--color-light-shade-2); + --color-shade-3: var(--color-light-shade-3); + --color-shade-4: var(--color-light-shade-4); + --color-text-1: var(--color-light-text-1); + --color-text-2: var(--color-light-text-2); + --color-text-3: var(--color-light-text-3); + --color-text-4: var(--color-light-text-4); + --color-primary: var(--color-light-primary); + --color-secondary: var(--color-light-secondary); + --color-error: var(--color-light-error); + --color-success: var(--color-light-success); + --color-warning: var(--color-light-warning); + --color-accent-1: var(--color-light-accent-1); + --color-accent-2: var(--color-light-accent-2); + --color-accent-3: var(--color-light-accent-3); + --filter-glow-primary: drop-shadow(0 0 0.0625em var(--color-argon-950)); + --filter-glow-secondary: drop-shadow(0 0 0.0625em var(--color-krypton-950)); + --color-glow-primary: var(--color-argon-800); + --color-glow-secondary: var(--color-krypton-800); + --transition-glow: + filter 150ms cubic-bezier(0, 2, 1, -0.7) 50ms, + border-color 150ms cubic-bezier(0, 2, 1, -0.7) 50ms; + --text-glow-primary: drop-shadow(0 0 0.03125em var(--color-argon-950)); + --text-glow-secondary: drop-shadow(0 0 0.03125em var(--color-krypton-950)); +} +@media (prefers-reduced-motion) { + .light { + --transition-glow: filter 150ms, border-color 150ms; + } +} +.light .light-only { + display: initial; +} +.light .dark-only { + display: none; +} + +@media (prefers-color-scheme: dark) { + html { + --color-foreground: var(--color-dark-foreground); + --color-background: var(--color-dark-background); + --color-shade-1: var(--color-dark-shade-1); + --color-shade-2: var(--color-dark-shade-2); + --color-shade-3: var(--color-dark-shade-3); + --color-shade-4: var(--color-dark-shade-4); + --color-text-1: var(--color-dark-text-1); + --color-text-2: var(--color-dark-text-2); + --color-text-3: var(--color-dark-text-3); + --color-text-4: var(--color-dark-text-4); + --color-primary: var(--color-dark-primary); + --color-secondary: var(--color-dark-secondary); + --color-error: var(--color-dark-error); + --color-success: var(--color-dark-success); + --color-warning: var(--color-dark-warning); + --color-accent-1: var(--color-dark-accent-1); + --color-accent-2: var(--color-dark-accent-2); + --color-accent-3: var(--color-dark-accent-3); + --filter-glow-primary: drop-shadow(0 0 0.0625em var(--color-white)) + drop-shadow(0 0 0.125em var(--color-primary)) + drop-shadow(0 0 0.25em var(--color-primary)); + --filter-glow-secondary: drop-shadow(0 0 0.0625em var(--color-white)) + drop-shadow(0 0 0.125em var(--color-secondary)) + drop-shadow(0 0 0.25em var(--color-secondary)); + --color-glow-primary: var(--color-white); + --color-glow-secondary: var(--color-white); + --transition-glow: + filter 150ms cubic-bezier(0, 1.7, 1, -0.3) 50ms, + border-color 150ms cubic-bezier(0, 1.7, 1, -0.3) 50ms; + --text-glow-primary: drop-shadow(0 0 0.03125em var(--color-white)) + drop-shadow(0 0 0.0625em var(--color-primary)) + drop-shadow(0 0 0.125em var(--color-primary)); + --text-glow-secondary: drop-shadow(0 0 0.03125em var(--color-white)) + drop-shadow(0 0 0.0625em var(--color-secondary)) + drop-shadow(0 0 0.125em var(--color-secondary)); + } +} +@media (prefers-color-scheme: dark) and (prefers-reduced-motion) { + html { + --transition-glow: filter 150ms, border-color 150ms; + } +} +@media (prefers-color-scheme: dark) { + html .light-only { + display: none; + } + html .dark-only { + display: initial; + } + html:has(#themeLight:checked) { + --color-foreground: var(--color-light-foreground); + --color-background: var(--color-light-background); + --color-shade-1: var(--color-light-shade-1); + --color-shade-2: var(--color-light-shade-2); + --color-shade-3: var(--color-light-shade-3); + --color-shade-4: var(--color-light-shade-4); + --color-text-1: var(--color-light-text-1); + --color-text-2: var(--color-light-text-2); + --color-text-3: var(--color-light-text-3); + --color-text-4: var(--color-light-text-4); + --color-primary: var(--color-light-primary); + --color-secondary: var(--color-light-secondary); + --color-error: var(--color-light-error); + --color-success: var(--color-light-success); + --color-warning: var(--color-light-warning); + --color-accent-1: var(--color-light-accent-1); + --color-accent-2: var(--color-light-accent-2); + --color-accent-3: var(--color-light-accent-3); + --filter-glow-primary: drop-shadow(0 0 0.0625em var(--color-argon-950)); + --filter-glow-secondary: drop-shadow(0 0 0.0625em var(--color-krypton-950)); + --color-glow-primary: var(--color-argon-800); + --color-glow-secondary: var(--color-krypton-800); + --transition-glow: + filter 150ms cubic-bezier(0, 2, 1, -0.7) 50ms, + border-color 150ms cubic-bezier(0, 2, 1, -0.7) 50ms; + --text-glow-primary: drop-shadow(0 0 0.03125em var(--color-argon-950)); + --text-glow-secondary: drop-shadow(0 0 0.03125em var(--color-krypton-950)); + } +} +@media (prefers-color-scheme: dark) and (prefers-reduced-motion) { + html:has(#themeLight:checked) { + --transition-glow: filter 150ms, border-color 150ms; + } +} +@media (prefers-color-scheme: dark) { + html:has(#themeLight:checked) .light-only { + display: initial; + } + html:has(#themeLight:checked) .dark-only { + display: none; + } + + #themeToggleDark { + display: none; + } +} +@media (prefers-color-scheme: light) { + html { + --color-foreground: var(--color-light-foreground); + --color-background: var(--color-light-background); + --color-shade-1: var(--color-light-shade-1); + --color-shade-2: var(--color-light-shade-2); + --color-shade-3: var(--color-light-shade-3); + --color-shade-4: var(--color-light-shade-4); + --color-text-1: var(--color-light-text-1); + --color-text-2: var(--color-light-text-2); + --color-text-3: var(--color-light-text-3); + --color-text-4: var(--color-light-text-4); + --color-primary: var(--color-light-primary); + --color-secondary: var(--color-light-secondary); + --color-error: var(--color-light-error); + --color-success: var(--color-light-success); + --color-warning: var(--color-light-warning); + --color-accent-1: var(--color-light-accent-1); + --color-accent-2: var(--color-light-accent-2); + --color-accent-3: var(--color-light-accent-3); + --filter-glow-primary: drop-shadow(0 0 0.0625em var(--color-argon-950)); + --filter-glow-secondary: drop-shadow(0 0 0.0625em var(--color-krypton-950)); + --color-glow-primary: var(--color-argon-800); + --color-glow-secondary: var(--color-krypton-800); + --transition-glow: + filter 150ms cubic-bezier(0, 2, 1, -0.7) 50ms, + border-color 150ms cubic-bezier(0, 2, 1, -0.7) 50ms; + --text-glow-primary: drop-shadow(0 0 0.03125em var(--color-argon-950)); + --text-glow-secondary: drop-shadow(0 0 0.03125em var(--color-krypton-950)); + } +} +@media (prefers-color-scheme: light) and (prefers-reduced-motion) { + html { + --transition-glow: filter 150ms, border-color 150ms; + } +} +@media (prefers-color-scheme: light) { + html .light-only { + display: initial; + } + html .dark-only { + display: none; + } + html:has(#themeDark:checked) { + --color-foreground: var(--color-dark-foreground); + --color-background: var(--color-dark-background); + --color-shade-1: var(--color-dark-shade-1); + --color-shade-2: var(--color-dark-shade-2); + --color-shade-3: var(--color-dark-shade-3); + --color-shade-4: var(--color-dark-shade-4); + --color-text-1: var(--color-dark-text-1); + --color-text-2: var(--color-dark-text-2); + --color-text-3: var(--color-dark-text-3); + --color-text-4: var(--color-dark-text-4); + --color-primary: var(--color-dark-primary); + --color-secondary: var(--color-dark-secondary); + --color-error: var(--color-dark-error); + --color-success: var(--color-dark-success); + --color-warning: var(--color-dark-warning); + --color-accent-1: var(--color-dark-accent-1); + --color-accent-2: var(--color-dark-accent-2); + --color-accent-3: var(--color-dark-accent-3); + --filter-glow-primary: drop-shadow(0 0 0.0625em var(--color-white)) + drop-shadow(0 0 0.125em var(--color-primary)) + drop-shadow(0 0 0.25em var(--color-primary)); + --filter-glow-secondary: drop-shadow(0 0 0.0625em var(--color-white)) + drop-shadow(0 0 0.125em var(--color-secondary)) + drop-shadow(0 0 0.25em var(--color-secondary)); + --color-glow-primary: var(--color-white); + --color-glow-secondary: var(--color-white); + --transition-glow: + filter 150ms cubic-bezier(0, 1.7, 1, -0.3) 50ms, + border-color 150ms cubic-bezier(0, 1.7, 1, -0.3) 50ms; + --text-glow-primary: drop-shadow(0 0 0.03125em var(--color-white)) + drop-shadow(0 0 0.0625em var(--color-primary)) + drop-shadow(0 0 0.125em var(--color-primary)); + --text-glow-secondary: drop-shadow(0 0 0.03125em var(--color-white)) + drop-shadow(0 0 0.0625em var(--color-secondary)) + drop-shadow(0 0 0.125em var(--color-secondary)); + } +} +@media (prefers-color-scheme: light) and (prefers-reduced-motion) { + html:has(#themeDark:checked) { + --transition-glow: filter 150ms, border-color 150ms; + } +} +@media (prefers-color-scheme: light) { + html:has(#themeDark:checked) .light-only { + display: none; + } + html:has(#themeDark:checked) .dark-only { + display: initial; + } + + #themeToggleLight { + display: none; + } +} +@font-face { + font-family: "Athiti"; + font-weight: 700; + src: url("../font/athiti/Athiti-Bold.woff2") format("woff2"); +} +@font-face { + font-family: "Athiti"; + font-weight: 600; + src: url("../font/athiti/Athiti-SemiBold.woff2") format("woff2"); +} +@font-face { + font-family: "Athiti"; + font-weight: 500; + src: url("../font/athiti/Athiti-Medium.woff2") format("woff2"); +} +@font-face { + font-family: "Athiti"; + font-weight: 400; + src: url("../font/athiti/Athiti-Regular.woff2") format("woff2"); +} +@font-face { + font-family: "Athiti"; + font-weight: 300; + src: url("../font/athiti/Athiti-Light.woff2") format("woff2"); +} +@font-face { + font-family: "Athiti"; + font-weight: 200; + src: url("../font/athiti/Athiti-ExtraLight.woff2") format("woff2"); +} +@font-face { + font-family: "Departure Mono"; + src: url("../font/departuremono/DepartureMono-Regular.woff2") format("woff2"); +} +@font-face { + font-family: "Argon Glow"; + font-weight: 100; + src: url("../font/argonglow/ArgonGlow-Thin.woff2") format("woff2"); +} +@font-face { + font-family: "Argon Glow"; + font-weight: 200; + src: url("../font/argonglow/ArgonGlow-ExtraLight.woff2") format("woff2"); +} +@font-face { + font-family: "Argon Glow"; + font-weight: 300; + src: url("../font/argonglow/ArgonGlow-Light.woff2") format("woff2"); +} +@font-face { + font-family: "Argon Glow"; + font-weight: 400; + src: url("../font/argonglow/ArgonGlow-Regular.woff2") format("woff2"); +} +@font-face { + font-family: "Argon Glow"; + font-weight: 500; + src: url("../font/argonglow/ArgonGlow-Medium.woff2") format("woff2"); +} +@font-face { + font-family: "Argon Glow"; + font-weight: 600; + src: url("../font/argonglow/ArgonGlow-SemiBold.woff2") format("woff2"); +} +@font-face { + font-family: "Argon Glow"; + font-weight: 700; + src: url("../font/argonglow/ArgonGlow-Bold.woff2") format("woff2"); +} +@font-face { + font-family: "Argon Glow"; + src: url("../font/argonglow/ArgonGlow-VariableVF.woff2") format("woff2"); + font-weight: 100 900; +} +:root { + font-size: 1rem; +} + +body { + background-color: var(--color-background); + color: var(--color-foreground); + font-family: "Athiti", ui-sans, sans-serif; + line-height: var(--line-height-base); +} + +.main-title, +h1, +.h1, +h2, +.h2, +h3, +.h3, +h4, +.h4, +h5, +.h5, +h6, +.h6 { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + margin: 1rem 0; +} + +.main-title { + font-size: var(--text-7xl); + line-height: var(--line-height-base); +} + +h1, +.h1 { + font-size: var(--text-5xl); + line-height: var(--line-height-base); +} + +h2, +.h2 { + font-size: var(--text-4xl); + line-height: var(--line-height-base); +} + +h3, +.h3 { + font-size: var(--text-3xl); + line-height: var(--line-height-base); +} + +h4, +.h4 { + font-size: var(--text-2xl); + line-height: var(--line-height-loose); +} + +h5, +.h5 { + font-size: var(--text-xl); + line-height: var(--line-height-loose); +} + +h6, +.h6 { + font-size: var(--text-lg); + line-height: var(--line-height-loose); +} + +pre { + font-family: "Departure Mono", ui-monospace, monospace; + font-size: 0.8em; + display: block; + padding: 1rem; + border-radius: 1rem; + border: solid 0.3em var(--color-shade-2); +} +pre code { + background-color: initial; + border: initial; + border-radius: initial; + padding: initial; + font-size: inherit; +} + +code, +.code { + font-family: "Departure Mono", ui-monospace, monospace; + font-size: 0.8em; + border: solid 0.15em var(--color-shade-3); + border-radius: 0.2em; + padding: 0 0.2em; +} + +pre span.comment, +code span.comment, +.code span.comment { + color: var(--color-text-4); + font-style: italic; +} +pre span.neutral, +code span.neutral, +.code span.neutral { + color: var(--color-text-2); +} +pre span.identifier, +code span.identifier, +.code span.identifier { + color: var(--color-primary); +} +pre span.function, +code span.function, +.code span.function { + color: var(--color-accent-1); + font-style: italic; +} +pre span.keyword, +code span.keyword, +.code span.keyword { + color: var(--color-accent-2); +} +pre span.number, +code span.number, +.code span.number { + color: var(--color-accent-3); +} +pre span.string, +code span.string, +.code span.string { + color: var(--color-accent-3); + font-style: italic; +} + +table { + width: fit-content; + border-collapse: collapse; +} +table th, +table td { + padding: 0.25rem 0.5rem; + border: solid 0.1em var(--color-shade-4); +} +table tr th { + text-align: left; + background-color: var(--color-shade-1); +} +table thead { + position: sticky; + top: 4rem; + z-index: 10; +} +@media (min-width: 48rem) { + table thead { + top: 0; + } +} +table thead tr > th { + outline-width: 0.1em; + outline-style: solid; + outline-offset: -0.05em; + outline-color: var(--color-shade-4); +} +table.row-hover tbody tr:hover th { + background-color: var(--color-shade-3); +} +table.row-hover tbody tr:hover td { + background-color: var(--color-shade-2); +} + +a { + color: var(--color-accent-1); + text-decoration: underline; +} +a:hover, a:active, a:focus { + color: var(--color-accent-3); + text-decoration: none; +} +a:visited { + color: var(--color-accent-2); + text-decoration: underline; +} +a:visited:hover, a:visited:active, a:visited:focus { + color: var(--color-accent-3); + text-decoration: none; +} + +figure { + display: flex; + flex-direction: column; + align-items: center; +} +figure img { + width: 100%; + max-height: 30vh; + object-fit: contain; + object-position: center; +} + +img { + width: 80%; + max-height: 30vh; + object-fit: contain; + object-position: center; + margin: 0 auto; +} + +i[data-icon] { + display: inline-block; + width: 1em; + height: 1em; + flex-shrink: 0; + position: relative; + box-sizing: content-box; +} +i[data-icon]::before { + content: ""; + display: block; + width: 100%; + height: 100%; + mask-size: contain; + mask-position: center; + mask-repeat: no-repeat; + background-color: currentColor; +} +i[data-icon="arrow_down"]::before { + mask-image: url("../icon/arrow_down.svg"); +} +i[data-icon="arrow_down_left"]::before { + mask-image: url("../icon/arrow_down_left.svg"); +} +i[data-icon="arrow_down_right"]::before { + mask-image: url("../icon/arrow_down_right.svg"); +} +i[data-icon="arrow_left"]::before { + mask-image: url("../icon/arrow_left.svg"); +} +i[data-icon="arrow_right"]::before { + mask-image: url("../icon/arrow_right.svg"); +} +i[data-icon="arrow_up"]::before { + mask-image: url("../icon/arrow_up.svg"); +} +i[data-icon="arrow_up_left"]::before { + mask-image: url("../icon/arrow_up_left.svg"); +} +i[data-icon="arrow_up_right"]::before { + mask-image: url("../icon/arrow_up_right.svg"); +} +i[data-icon="basket"]::before { + mask-image: url("../icon/basket.svg"); +} +i[data-icon="bed"]::before { + mask-image: url("../icon/bed.svg"); +} +i[data-icon="clock"]::before { + mask-image: url("../icon/clock.svg"); +} +i[data-icon="code"]::before { + mask-image: url("../icon/code.svg"); +} +i[data-icon="creature"]::before { + mask-image: url("../icon/creature.svg"); +} +i[data-icon="cross"]::before { + mask-image: url("../icon/cross.svg"); +} +i[data-icon="cross_small"]::before { + mask-image: url("../icon/cross_small.svg"); +} +i[data-icon="cup_1"]::before { + mask-image: url("../icon/cup_1.svg"); +} +i[data-icon="cup_2"]::before { + mask-image: url("../icon/cup_2.svg"); +} +i[data-icon="dect"]::before { + mask-image: url("../icon/dect.svg"); +} +i[data-icon="external"]::before { + mask-image: url("../icon/external.svg"); +} +i[data-icon="fairydust"]::before { + mask-image: url("../icon/fairydust.svg"); +} +i[data-icon="flag"]::before { + mask-image: url("../icon/flag.svg"); +} +i[data-icon="font"]::before { + mask-image: url("../icon/font.svg"); +} +i[data-icon="gluten"]::before { + mask-image: url("../icon/gluten.svg"); +} +i[data-icon="hackertours"]::before { + mask-image: url("../icon/hackertours.svg"); +} +i[data-icon="hare_head"]::before { + mask-image: url("../icon/hare_head.svg"); +} +i[data-icon="history"]::before { + mask-image: url("../icon/history.svg"); +} +i[data-icon="home"]::before { + mask-image: url("../icon/home.svg"); +} +i[data-icon="hygene"]::before { + mask-image: url("../icon/hygene.svg"); +} +i[data-icon="info"]::before { + mask-image: url("../icon/info.svg"); +} +i[data-icon="lightbulb"]::before { + mask-image: url("../icon/lightbulb.svg"); +} +i[data-icon="link"]::before { + mask-image: url("../icon/link.svg"); +} +i[data-icon="location"]::before { + mask-image: url("../icon/location.svg"); +} +i[data-icon="lock"]::before { + mask-image: url("../icon/lock.svg"); +} +i[data-icon="login"]::before { + mask-image: url("../icon/login.svg"); +} +i[data-icon="logout"]::before { + mask-image: url("../icon/logout.svg"); +} +i[data-icon="looping"]::before { + mask-image: url("../icon/looping.svg"); +} +i[data-icon="menu"]::before { + mask-image: url("../icon/menu.svg"); +} +i[data-icon="menu_small"]::before { + mask-image: url("../icon/menu_small.svg"); +} +i[data-icon="merch"]::before { + mask-image: url("../icon/merch.svg"); +} +i[data-icon="message"]::before { + mask-image: url("../icon/message.svg"); +} +i[data-icon="microphone"]::before { + mask-image: url("../icon/microphone.svg"); +} +i[data-icon="network"]::before { + mask-image: url("../icon/network.svg"); +} +i[data-icon="paperplane"]::before { + mask-image: url("../icon/paperplane.svg"); +} +i[data-icon="pen"]::before { + mask-image: url("../icon/pen.svg"); +} +i[data-icon="pin"]::before { + mask-image: url("../icon/pin.svg"); +} +i[data-icon="plate_and_cutlery"]::before { + mask-image: url("../icon/plate_and_cutlery.svg"); +} +i[data-icon="power"]::before { + mask-image: url("../icon/power.svg"); +} +i[data-icon="question"]::before { + mask-image: url("../icon/question.svg"); +} +i[data-icon="schedule"]::before { + mask-image: url("../icon/schedule.svg"); +} +i[data-icon="search"]::before { + mask-image: url("../icon/search.svg"); +} +i[data-icon="settings"]::before { + mask-image: url("../icon/settings.svg"); +} +i[data-icon="signup"]::before { + mask-image: url("../icon/signup.svg"); +} +i[data-icon="soldering_iron"]::before { + mask-image: url("../icon/soldering_iron.svg"); +} +i[data-icon="tick"]::before { + mask-image: url("../icon/tick.svg"); +} +i[data-icon="tick_small"]::before { + mask-image: url("../icon/tick_small.svg"); +} +i[data-icon="ticket"]::before { + mask-image: url("../icon/ticket.svg"); +} +i[data-icon="toast"]::before { + mask-image: url("../icon/toast.svg"); +} +i[data-icon="train"]::before { + mask-image: url("../icon/train.svg"); +} +i[data-icon="vegan"]::before { + mask-image: url("../icon/vegan.svg"); +} +i[data-icon="warning"]::before { + mask-image: url("../icon/warning.svg"); +} + +* { + box-sizing: border-box; +} + +body { + margin: 0; + height: 100vh; + width: 100%; + display: flex; + flex-direction: column; + position: relative; + overflow: auto; +} +body header { + text-align: center; + width: 100%; + height: fit-content; + flex-grow: 0; +} +@media (max-width: 48rem) { + body header { + margin-top: 4rem; + } +} +body header .header-image { + height: 200px; + width: fit-content; + max-width: 100%; + object-fit: contain; +} +body header #backToWiki > img { + transition: transform 200ms; +} +body header #backToWiki:hover > img { + transform: scale(1.05); +} +body .main-title, +body h1, +body .h1, +body h2, +body .h2, +body h3, +body .h3, +body h4, +body .h4 { + filter: var(--text-glow-primary); + color: var(--color-glow-primary); +} +body > div { + display: flex; + gap: 1rem; + flex-grow: 1; + flex-direction: column; +} +@media (min-width: 48rem) { + body > div { + flex-direction: row; + } +} +body > div nav { + display: flex; + flex-direction: column; + flex-shrink: 0; + position: sticky; + top: 0; + padding: 0 1rem; + background-color: var(--color-background); + z-index: 20; + overflow: hidden; + width: 100%; + height: 4rem; + transition: height 200ms; +} +@media (min-width: 48rem) { + body > div nav { + max-width: 15rem; + width: fit-content; + top: 1rem; + height: fit-content; + overflow: visible; + } + body > div nav button { + display: none; + } +} +@media (max-width: 48rem) { + body > div nav { + position: fixed; + } + body > div nav:not(.visible) ul { + display: none; + } + body > div nav.visible { + height: 100vh; + } +} +body > div nav button { + background-color: transparent; + border: none; + color: var(--color-foreground); + font-size: 2rem; + cursor: pointer; + transition: filter 400ms ease-in; + padding: 1rem 0; + width: 2rem; + height: 2rem; + box-sizing: content-box; +} +body > div nav button:hover { + filter: var(--filter-glow-primary); + transition: var(--transition-glow); +} +body > div nav ul { + display: flex; + flex-direction: column; + gap: 0.75rem; + list-style-type: none; + padding: 0; + margin: 0; +} +body > div nav ul li { + border-radius: 0.5rem; + background-color: var(--color-shade-1); + transition: background-color 150ms; +} +body > div nav ul li.link-back { + background-color: var(--color-background); +} +body > div nav ul li.active { + background-color: var(--color-shade-2); +} +body > div nav ul li.link-back a, body > div nav ul li.active a { + border-color: var(--color-shade-4); +} +body > div nav ul li > a, +body > div nav ul li label { + display: flex; + align-items: center; + gap: 0.5rem; + border-radius: 0.5rem; + border: solid 0.1em var(--color-shade-1); + padding: 0.4rem 1rem; + color: var(--color-foreground); + text-decoration: none; + font-size: 1.2em; + box-sizing: border-box; + transition-property: filter, border-color; + transition-duration: 400ms; + transition-timing-function: ease-in; +} +body > div nav ul li > a:visited, body > div nav ul li > a:focus, body > div nav ul li > a:active, body > div nav ul li > a:hover, +body > div nav ul li label:visited, +body > div nav ul li label:focus, +body > div nav ul li label:active, +body > div nav ul li label:hover { + color: var(--color-foreground); +} +body > div nav ul li:hover, body > div nav ul li:focus-within { + background-color: transparent; +} +body > div nav ul li:hover a, +body > div nav ul li:hover label, body > div nav ul li:focus-within a, +body > div nav ul li:focus-within label { + border: solid 0.1em var(--color-glow-primary); + background-color: transparent; + filter: var(--filter-glow-primary); + transition: var(--transition-glow); +} +body > div nav ul li:hover a:visited, body > div nav ul li:hover a:focus, body > div nav ul li:hover a:active, body > div nav ul li:hover a:hover, +body > div nav ul li:hover label:visited, +body > div nav ul li:hover label:focus, +body > div nav ul li:hover label:active, +body > div nav ul li:hover label:hover, body > div nav ul li:focus-within a:visited, body > div nav ul li:focus-within a:focus, body > div nav ul li:focus-within a:active, body > div nav ul li:focus-within a:hover, +body > div nav ul li:focus-within label:visited, +body > div nav ul li:focus-within label:focus, +body > div nav ul li:focus-within label:active, +body > div nav ul li:focus-within label:hover { + color: var(--color-glow-primary); +} +body > div nav ul li:hover.link-back a, body > div nav ul li:focus-within.link-back a { + border: solid 0.1em var(--color-glow-secondary); + filter: var(--filter-glow-secondary); +} +body > div nav ul li:hover.link-back a:visited, body > div nav ul li:hover.link-back a:focus, body > div nav ul li:hover.link-back a:active, body > div nav ul li:hover.link-back a:hover, body > div nav ul li:focus-within.link-back a:visited, body > div nav ul li:focus-within.link-back a:focus, body > div nav ul li:focus-within.link-back a:active, body > div nav ul li:focus-within.link-back a:hover { + color: var(--color-glow-secondary); +} +body > div nav ul li:not(.themeToggle) i[data-icon] { + padding-right: 0.5em; + padding-top: 0.2em; + padding-bottom: 0.2em; + border-right: solid 0.1em currentColor; +} +body > div nav ul li.themeToggle { + font-size: 1.4em; + width: fit-content; +} +body > div nav ul li.themeToggle input { + width: 0; + height: 0; + margin: 0; + padding: 0; + display: block; + opacity: 0; +} +body > div nav ul li.themeToggle label { + justify-content: center; + padding: 0.25em; +} +body > div main { + max-width: min(var(--container-4xl), 100vw); + width: 100%; + padding: 0 1rem; + overflow-x: hidden; +} +@media (min-width: 48rem) { + body > div main { + padding-left: 2rem; + border-left: dashed 0.25rem var(--color-shade-4); + } +} + +.background { + background-color: var(--color-background); +} + +a.a-regular, a.a-regular:hover, a.a-regular:active, a.a-regular:focus, a.a-regular:visited { + color: var(--color-accent-1); + text-decoration: underline; +} +a.a-hover, a.a-hover:visited { + color: var(--color-accent-3); + text-decoration: none; +} +a.a-visited, a.a-visited:hover, a.a-visited:active, a.a-visited:focus { + color: var(--color-accent-2); + text-decoration: underline; +} + +.alert { + background-color: var(--color-shade-1); + padding: 1rem 1.5rem; + border-radius: 1rem; + position: relative; + display: flex; + flex-direction: row; + gap: 1.5rem; + margin: 2rem 0; +} +.alert i[data-icon] { + padding-top: 0.5rem; + font-size: var(--text-5xl); + filter: var(--filter-glow-primary); + color: var(--color-glow-primary); +} +.alert strong { + font-size: var(--text-xl); + display: block; +} +.alert p { + margin: 0; +} +.alert::before { + content: ""; + position: absolute; + inset: 0; + border-radius: 1rem; + border: solid 0.125rem var(--color-glow-primary); + filter: var(--filter-glow-primary); +} + +pre, +.code { + max-width: 100%; + overflow-x: auto; +} + +.layout-column { + display: flex; + width: 100%; +} +.layout-column > * { + width: 100%; +} +@media (max-width: 48rem) { + .layout-column { + flex-wrap: wrap; + } + .layout-column > * { + width: 100%; + } +} + +.flex-wrap-md { + display: flex; + align-items: center; +} +.flex-wrap-md > * { + width: 100%; +} +@media (max-width: 80rem) { + .flex-wrap-md { + flex-wrap: wrap; + justify-content: center; + } + .flex-wrap-md > * { + width: 100%; + } +} + +main > div.generator { + display: flex; + flex-direction: column; + gap: 1em; + align-items: center; +} +main > div.generator img { + width: 400px; + height: 300px; + object-fit: contain; + filter: drop-shadow(0 0 0.0625em var(--color-white)) drop-shadow(0 0 0.125em var(--color-primary)) drop-shadow(0 0 0.25em var(--color-primary)); +} +main > div.generator i { + font-size: 3em; + filter: drop-shadow(0 0 0.0625em var(--color-white)) drop-shadow(0 0 0.125em var(--color-primary)) drop-shadow(0 0 0.25em var(--color-primary)); +} + +.icon-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(var(--text-5xl), 1fr)); + align-items: center; + justify-items: center; + gap: 2rem; +} +.icon-grid div { + width: var(--text-5xl); + height: var(--text-5xl); + display: flex; + align-items: center; + justify-content: center; + box-sizing: content-box; + padding: 0.5rem; + border-radius: 0.3rem; + cursor: pointer; +} +.icon-grid div:hover, .icon-grid div:focus { + background-color: var(--color-shade-2); +} +.icon-grid div:hover i[data-icon]::after, .icon-grid div:focus i[data-icon]::after { + content: attr(data-icon); + font-size: var(--text-xl); + background-color: var(--color-shade-2); + padding: 0.5rem; + z-index: 10; + position: absolute; + bottom: calc((var(--text-xl) * -1) - 2rem); + border-radius: 0.3rem; +} +.icon-grid div i[data-icon] { + font-size: 3rem; + position: relative; +} +.icon-grid div i[data-icon].icon-small { + font-size: 2rem; +} + +.swatch-grid { + background-color: var(--color-background); + color: var(--color-foreground); + padding: 0.5rem; +} +.swatch-grid section { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + margin-top: 2rem; + --swatch-size: 5rem; +} +.swatch-grid section > span { + width: 100%; + font-size: var(--text-xl); +} +.swatch-grid section .swatch-container { + display: inline-flex; + flex-direction: column; + align-items: center; + gap: 0.25rem; + background-color: var(--color-background); + border-radius: 0.75rem; + padding: 0.25rem; + border: 0.125rem solid var(--color-foreground); +} +.swatch-grid section .swatch-container .swatch { + background-color: var(--swatch-color); + width: var(--swatch-size); + aspect-ratio: 1; + border-radius: 0.5rem; +} +.swatch-grid section .swatch-container span { + font-family: "Departure Mono", ui-monospace, monospace; + color: var(--color-foreground); + line-height: 1.5; +} + +.glow-16-primary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 16px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-18-primary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 18px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-24-primary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 24px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-32-primary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 32px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-48-primary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 48px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-72-primary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 72px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-160-primary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 160px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-16-secondary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 16px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-18-secondary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 18px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-24-secondary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 24px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-32-secondary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 32px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-48-secondary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 48px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-72-secondary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 72px; + color: var(--color-white); + filter: url("glows.svg"); +} + +.glow-160-secondary { + font-family: "Argon Glow", ui-sans, sans-serif; + font-weight: 400; + font-size: 160px; + color: var(--color-white); + filter: url("glows.svg"); +} + +/*# sourceMappingURL=styleguide.css.map */ diff --git a/eh22.easterhegg.eu/design/changelog.html b/eh22.easterhegg.eu/design/changelog.html new file mode 100644 index 0000000..1debf83 --- /dev/null +++ b/eh22.easterhegg.eu/design/changelog.html @@ -0,0 +1,149 @@ + + + + + + + + + Changelog + + + +
+ + Logo of Easterhegg 2025. In the style of a neon sign:
+     The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+     The egg shell and the word 'Eggception' are glowing in a light blue, everything else in a bright pink. + Logo of Easterhegg 2025. In the style of a unpowered neon sign:
+     The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+     The egg shell and the word 'Eggception' are dimly glowing in a dark blue, everything else in a dark pink. + +
+
+ +
+

Changelog

+

+ Here you can see the list of changes we have made to the style guide + since the initial release: +

+ +
+
+ + + diff --git a/eh22.easterhegg.eu/design/colors.html b/eh22.easterhegg.eu/design/colors.html new file mode 100644 index 0000000..f87eae1 --- /dev/null +++ b/eh22.easterhegg.eu/design/colors.html @@ -0,0 +1,679 @@ + + + + + + + + + Color Guide + + + +
+ + Logo of Easterhegg 2025. In the style of a neon sign:
+     The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+     The egg shell and the word 'Eggception' are glowing in a light blue, everything else in a bright pink. + Logo of Easterhegg 2025. In the style of a unpowered neon sign:
+     The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+     The egg shell and the word 'Eggception' are dimly glowing in a dark blue, everything else in a dark pink. + +
+
+ +
+

Color Guide

+

+ The design consists of two sets of colors: lightmode and darkmode. + Each set consists of the same number of colors, each of which has its + own function. At the end of the page, one can find an overview of all + defined colors for quick lockup. Read on for the functions of each + color. +

+

+ The fore- and background colors are chosen for good contrast and are + the same but swapped for light- and darkmode. Most backgrounds should + use the background color and most texts should use the foreground + color. In some cases, more subtelty is needed: +

+ +

+ Additionally, there are also colors for various design elements. The + accent colors can be used for whatever one desires, but are especially + intended for use in hyperlinks like this: +

+ + + + + + + + + + + + + + +
+ Overview of link highlighting +
Regular Link: + https://eh22.easterhegg.eu/ +
Hover/Focus/Active Link:https://eh22.easterhegg.eu/
Visited Link: + https://eh22.easterhegg.eu/ +
+

+ Other than that, there are two more colors: the error and the success + color. Intended for anything regarding user-feedback, they should tell + someone that something is a critical action, has some positive or + negativ meaning or progresses something in some way or form. +

+ +

Digital Media

+
+
+

Darkmode

+ +
+ Fore- & Background + +
+
+ #f2f0f5 +
+ +
+
+ #0c011f +
+
+ +
+ Background Shades + +
+
+ #180736 +
+ +
+
+ #26114B +
+ +
+
+ #371F60 +
+ +
+
+ #4B3176 +
+
+ +
+ Text Shades + +
+
+ #b2a0cb +
+ +
+
+ #957eb5 +
+ +
+
+ #7a60a0 +
+ +
+
+ #61468b +
+
+ +
+ Primary & Secondary + +
+
+ #c6257d +
+ +
+
+ #4dadd8 +
+
+ +
+ Status indicators + +
+
+ #bb2626 +
+ +
+
+ #54aa18 +
+ +
+
+ #efb100 +
+
+ +
+ Accents + +
+
+ #60a5f9 +
+ +
+
+ #d381f7 +
+ +
+
+ #ff7975 +
+
+
+ +
+

Lightmode

+ +
+ Fore- & Background + +
+
+ #0c011f +
+ +
+
+ #f2f0f5 +
+
+ +
+ Background Shades + +
+
+ #d1c6e0 +
+ +
+
+ #b2a0cb +
+ +
+
+ #957eb5 +
+ +
+
+ #7a60a0 +
+
+ +
+ Text Shades + +
+
+ #26114b +
+ +
+
+ #371f60 +
+ +
+
+ #4b3176 +
+ +
+
+ #61468b +
+
+ +
+ Primary & Secondary + +
+
+ #9a0a61 +
+ +
+
+ #167fac +
+
+ +
+ Status indicators + +
+
+ #b21010 +
+ +
+
+ #47990f +
+ +
+
+ #d08700 +
+
+ +
+ Accents + +
+
+ #303ec0 +
+ +
+
+ #6c366c +
+ +
+
+ #932f0a +
+
+
+
+ +

Printing

+

+ Our primary and secondary colors are also defined for CMYK printing: +

+ +
+
+ CMYK Colors + +
+
+ 0/94/6/0 +
+ +
+
+ 81/0/10/0 +
+
+
+
+
+ + + diff --git a/eh22.easterhegg.eu/design/demopage.html b/eh22.easterhegg.eu/design/demopage.html new file mode 100644 index 0000000..79a2676 --- /dev/null +++ b/eh22.easterhegg.eu/design/demopage.html @@ -0,0 +1,268 @@ + + + + + + + + + Demopage + + + +
+ + Logo of Easterhegg 2025. In the style of a neon sign:
+     The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+     The egg shell and the word 'Eggception' are glowing in a light blue, everything else in a bright pink. + Logo of Easterhegg 2025. In the style of a unpowered neon sign:
+     The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+     The egg shell and the word 'Eggception' are dimly glowing in a dark blue, everything else in a dark pink. + +
+
+ +
+

Demopage

+

+ This page contains examples for various text-components and fonts, as + well as colorpalettes, images, and so on. Use can use it to get + familiar with the design and as a reference for styling your own + content. +

+ +
+

Overview of Link-Highlighting

+ + + + + + + + + + + + + +
Regular Link: + https://eh22.easterhegg.eu/ +
Hover/Focus/Active Link: + https://eh22.easterhegg.eu/ +
Visited Link: + https://eh22.easterhegg.eu/ +
+
+ +
+

Ordered and Unordered Lists

+

+ This is just a simple section containing plain text as well as some + lists. This way you can get a feel for how lists fit into their + surrounding content. Have a look at this ordered list: We simply + prefix each item with a one-indexed, right aligned number followed + by a dot. +

+
    +
  1. Short item no. 1.
  2. +
  3. + Long item in the middle. This item is longer then one visual line, + which is why it wraps over into the next line and therefore moves + the next item further down. +
  4. +
  5. + Long item at the end, which is also longer than one visual line. + It also wraps over into the next line, but there is no next item + to move. +
  6. +
+

+ But sometimes, the order of items doesn't matter, in that case, we + instead put a basic bullet point infront of each item: +

+
    +
  • Short item no. 1.
  • +
  • + Long item in the middle. This item is longer then one visual line, + which is why it wraps over into the next line and therefore moves + the next item further down. +
  • +
  • + Long item at the end, which is also longer than one visual line. + It also wraps over into the next line, but there is no next item + to move. +
  • +
+
+ +
+

Preformatted Text

+

+ This example uses manual syntax highlighting using the predefined + CSS classes mentioned in the typography: +

+
#include <stdlib.h>
+
+int *positives(int *numbers, int *size) {
+    int new_size = 0;
+
+    for (int i = 0; i < *size; i++) {
+        if (numbers[i] >= 0) {
+            numbers[new_size] = numbers[i];
+            new_size++;
+        }
+    }
+
+    *size = new_size;
+    return realloc(numbers, sizeof(*numbers) * new_size);
+}
+

+ This is a simple function written in C, which removes all negative + integers from an array and updates its element count. +

+
+ +
+

Section With Image

+

+ When including images in your content, you can opt into applying an + SVG filter that adds visual glitches to the image. This shouldn't be + used on images with text or important details, because the glitches + will most likely reduce readability. Let's use the following plain + image: +

+
+ A version 2 qrcode containing the text 'Never gonna give you up!' +
+ Example image without any distortion applied. +
+
+

+ We wanted to add the ability to simply specify a CSS class on an + HTML image tag (or any other tag for that matter) to apply an SVG + filter dynamically, but this won't render said filter in Apple's + Safari (and sometimes not even in Chromium-based browsers), which + has been a known issue for many years. So instead, we made + a simple web-tool to apply the filter to + an image and export it as a PNG. +

+
+ The same image as before, except with a glitchy filer applied. The first effect applies to bright edges, which get painted pink and blue to their left and right hand side respectively. The second effect distorts the image by offsetting parts of the image horizontally by seemingly random yet somewhat osscilating amounts. +
Example image with visual glitches applied.
+
+

+ Of course, every image should include an image description. No + matter if its a website, social media post, or a PDF. Most if not + all wordprocessors (this includes Word, LaTeX and Typst) support + this in one way or another. +

+

+ We would also prefer it, if no one uses "AI-generated" images. The + entire event design was created through hard work by living beings. + No LLM/GenAI was involved in any part of the design processes. So we + kindly ask you not to use tools which are based on theft, actively + harm artist and destroy our planet in the process. ("AI-generated" + of course does not apply to generative art and similar, but to + LLMs/GenAI.) +

+
+
+
+ + + diff --git a/eh22.easterhegg.eu/design/doodles.html b/eh22.easterhegg.eu/design/doodles.html new file mode 100644 index 0000000..6ad8c97 --- /dev/null +++ b/eh22.easterhegg.eu/design/doodles.html @@ -0,0 +1,212 @@ + + + + + + + + + Doodles + + + +
+ + Logo of Easterhegg 2025. In the style of a neon sign:
+     The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+     The egg shell and the word 'Eggception' are glowing in a light blue, everything else in a bright pink. + Logo of Easterhegg 2025. In the style of a unpowered neon sign:
+     The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+     The egg shell and the word 'Eggception' are dimly glowing in a dark blue, everything else in a dark pink. + +
+
+ +
+

Doodles

+

+ To add a bit of variety to the design or as part of a page's + background, we designed a few doodles which can be used to fill some + space. These consist of an icon (preferably of something that can + move) and a dashed line behind it, which shows the path travelled. The + line has rounded ends and a line-to-space ratio of 1:3 (the lines will + appear longer due to the line caps), where 1 is the line thickness. + Here are some examples: +

+
+ + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + diff --git a/eh22.easterhegg.eu/design/generator.html b/eh22.easterhegg.eu/design/generator.html new file mode 100644 index 0000000..bcd4746 --- /dev/null +++ b/eh22.easterhegg.eu/design/generator.html @@ -0,0 +1,268 @@ + + + + + + + + + Image Generator + + + +
+ + Logo of Easterhegg 2025. In the style of a neon sign:
+     The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+     The egg shell and the word 'Eggception' are glowing in a light blue, everything else in a bright pink. + Logo of Easterhegg 2025. In the style of a unpowered neon sign:
+     The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+     The egg shell and the word 'Eggception' are dimly glowing in a dark blue, everything else in a dark pink. + +
+
+ +
+

Image Generator

+

+ We wanted images to (optionally) have a glitchy, distorted appearance. + To achieve this, we apply two effects to an image. Firstly, bright + vertical edges in an image are highlighted by adding a parallel line + in our primary color to their left and in our secondary color to their + right hand side. Secondly, the image gets distorted by offsetting + different parts of the image horizontally, seemingly by random + amounts, but it is actually somewhat osscilating. +

+

+ This page utilizes a small bit of Javascript to add an SVG filter to + an image of your choice. The resulting image will then be previewed + further below and can be downloaded using a button at the end of the + page. Not all browsers' canvas implementations generate the same + outcome, especially firefox tends to create wrong results, so we + recommend using a chromium based browser for creating these exports. +

+
+
+ +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+
+ + + + + diff --git a/eh22.easterhegg.eu/design/glow.html b/eh22.easterhegg.eu/design/glow.html new file mode 100644 index 0000000..6696803 --- /dev/null +++ b/eh22.easterhegg.eu/design/glow.html @@ -0,0 +1,307 @@ + + + + + + + + + Glow + + + +
+ + Logo of Easterhegg 2025. In the style of a neon sign:
+     The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+     The egg shell and the word 'Eggception' are glowing in a light blue, everything else in a bright pink. + Logo of Easterhegg 2025. In the style of a unpowered neon sign:
+     The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+     The egg shell and the word 'Eggception' are dimly glowing in a dark blue, everything else in a dark pink. + +
+
+ +
+

Glow

+

Darkmode

+

+ To add the glow to something of a given height (or fontsize), here + 1em, one needs to calculate four values: +

+ +

+ The first three values are used for drop-shadows, the last for an + inset shadow. Sadly, the latter is currently not possible using plain + CSS filters, which is why it requires the use of an SVG filter + (further information: see Notes). +

+

+ Below you'll find implementation examples using the primary color CSS + variable for the glow color as specified in our (S)CSS stylesheets. In + the CSS example simply replace + --color-primary with --color-secondary to + use the secondary color. In the SVG example, we don't use CSS + variables, because not every software understands them. +

+ + +

Lightmode

+

+ To add the dim glow to something of a given height (or fontsize), here + 1em, one needs to calculate one value: a thirtysecond; here + 0.03125. +

+

+ The value is needed for both drop shadows and inset shadows. Sadly, + the latter is currently not possible using plain CSS filters, which is + why it requires the use of an SVG filter (further information: see + Notes). +

+

+ Below you'll find implementation examples using the primary color CSS + variable for the glow color as specified in our (S)CSS stylesheets. In + the CSS example simply replace each occurrence of "primary" with + "secondary" and "argon" with "krypton" to get a glow of the secondary + color. In the SVG example, we don't use CSS variables, because not + every software understands them. +

+ + +

Notes

+

+ Because support for external SVG filters (using + url("filter.svg#filter-id")) is still flaky, we instead + opted to have two versions of each glow. One using SVG filters for + use-cases which support it (like the logo), and one using CSS filters + (as for this page's headings). +

+

+ In the SVG files we use two separate filters, because when combining + shadows with the primary and the secondary color as can be seen in the + logo, it is necessary to first add all drop-shadows to all paths using + style="mix-blend-mode: screen;" and put them in an + isolated group, so that the blend mode does not interfere with the + background:
+ <g style="isolation: isolate;">
+ Then layer all inset-shadow filters on top of that - otherwise, one + path's drop shadow might overlay another path's inset-shadow. Have a + look at the + logo's source + for an example. +

+

+ Since inkscape, for example, cannot handle the ‘feDropShadow’ filter + yet, we use it in its long form as a combination of 5 other filters, + as described in the + SVG Filter Effects Module Level 1 (Working Draft). +

+
+
+ + + diff --git a/eh22.easterhegg.eu/design/iconography.html b/eh22.easterhegg.eu/design/iconography.html new file mode 100644 index 0000000..dc297cc --- /dev/null +++ b/eh22.easterhegg.eu/design/iconography.html @@ -0,0 +1,240 @@ + + + + + + + + + Iconography + + + +
+ + Logo of Easterhegg 2025. In the style of a neon sign:
+     The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+     The egg shell and the word 'Eggception' are glowing in a light blue, everything else in a bright pink. + Logo of Easterhegg 2025. In the style of a unpowered neon sign:
+     The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+     The egg shell and the word 'Eggception' are dimly glowing in a dark blue, everything else in a dark pink. + +
+
+ +
+

Iconography

+

+ Icons can help with conveying meaning or to help with directions. In + order to fit into the overall theme, we wanted to have a set of icons + that implement the same design characteristics and rules as the + logo, about which you can read more here, and + our font, + Argon Glow, which we talk about more in the typography. +

+

+ Of course, creating a full iconset would require years of work for + such a small team, which is why we focused on the icons needed for the + wiki, styleguide and signage on the event. At time of writing that is + still roughly sixty icons which we needed to design. They can be found + in the form of this icon overview and in + our design repository. +

+

+ Luckily, the rules which the icons needed to adhere to, also meant, + that the icons would need to be fairly simple. Uniform bend-radii + (based on a circle, not bezier), a minimum gap distance, and as few + lines as possible, all within a limited canvas size. In the end, we + decide on an SVG canvas of 600 by 600 units with a uniform grid of 25 + units between gridlines. Line width was set to 50 units, and the same + for a 90° bend's radius. Because gaps didn't always align perfectly to + the grid, they were chosen to always be at least 50 units and rounded + up to the next gridline. Because we are aiming at a neon-esque tube + look, line-caps were set to rounded, adding a semicircle with a radius + of 25 units. +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ Example icon depicting an arrow pointing up, which follows the + design rules outlined above. Two bends are given an angle-marker and + values that describe one as a 90° angle with a 50 px bend radius, + and the other as a 135° angle with a a 75 px bend. At one end of the + only line, the line-width is marked as 50 px. +
+
+
+
+ + + diff --git a/eh22.easterhegg.eu/design/iconography/list/index.html b/eh22.easterhegg.eu/design/iconography/list/index.html new file mode 100644 index 0000000..0e5856c --- /dev/null +++ b/eh22.easterhegg.eu/design/iconography/list/index.html @@ -0,0 +1,183 @@ + + + + + + + + + Icon Overview + + + +
+ + Logo of Easterhegg 2025. In the style of a neon sign:
+     The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+     The egg shell and the word 'Eggception' are glowing in a light blue, everything else in a bright pink. + Logo of Easterhegg 2025. In the style of a unpowered neon sign:
+     The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+     The egg shell and the word 'Eggception' are dimly glowing in a dark blue, everything else in a dark pink. + +
+
+ +
+

Icon Overview

+

+ This page contains an overview of all currently designed icons.
+ Back to the Iconography +

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + diff --git a/eh22.easterhegg.eu/design/index.html b/eh22.easterhegg.eu/design/index.html new file mode 100644 index 0000000..9fa704d --- /dev/null +++ b/eh22.easterhegg.eu/design/index.html @@ -0,0 +1,162 @@ + + + + + + + + + Styleguide + + + +
+ + Logo of Easterhegg 2025. In the style of a neon sign:
+         The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+         The egg shell and the word 'Eggception' are glowing in a light blue, everything else in a bright pink. + Logo of Easterhegg 2025. In the style of a unpowered neon sign:
+         The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+         The egg shell and the word 'Eggception' are dimly glowing in a dark blue, everything else in a dark pink. + +
+
+ +
+

Styleguide Easterhegg 2025

+

+ This page and subpages are meant to guide you through our design. + While we do propose some rules, we generally don't want to restrict + you to much in creating something. So for most design properties, if + one doesn't work for your use-case, then try and adapt that property + to make it work for you. This style guide is supposed to help you and + not prevent you from being creative. +

+ +

Design Idea

+

+ The design aims to imitate the style of 80s' retro and neon signs. + During the design process, we interenally used keywords like "Tokyo + Nightcity", "Neon", "Glitchy" and "Tron" to describe our ideas, and we + hope this carries over. +

+

+ We primarily focused on the dark theme as the primary design + characteristics are the neon-glow and neon-sign-font which you can see + in the headings, title image and navigation elements. But we did also + create a light mode to make content more accesible and available for + more people. But because the neon-effect doesn't really work on a + bright background out of the box, we tried to instead convey the look + of turned off neon signs or neon signs under daylight. +

+

+ We recommend reading through all sections linked to in the site's + navigation, but if you just want a quick overview of design elements, + you can focus on + the demopage containing a preview of most things. Most pages also include more detailed explanations for our design + decisions. +

+ +

Credit and Disclaimer

+

+ We (kritzl, + traumweh & + Schrottkatze) created + this design and guide through many months of hard work. And + considering the current hype reguarding "AI" (LLMs & GenAI), we want + to make it clear, that we didn't use any such tooling at any point in + the design process. All work was done by living beings. +

+

+ This is also why we would kindly ask you to consider not to use LLMs + or GenAI yourself when creating something for this event. These tools + are built on theft and actively harm all creative industries. Not to + mention how devastating they are for our planet. Instead, maybe take + this as motivation for you to learn how to achieve the desired thing + yourself, or connect with the community. There are many artists who'd + be happy to help you create something incredible. +

+
+ +
+ + diff --git a/eh22.easterhegg.eu/design/logo.html b/eh22.easterhegg.eu/design/logo.html new file mode 100644 index 0000000..408bd96 --- /dev/null +++ b/eh22.easterhegg.eu/design/logo.html @@ -0,0 +1,225 @@ + + + + + + + + + Logo + + + +
+ + Logo of Easterhegg 2025. In the style of a neon sign:
+     The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+     The egg shell and the word 'Eggception' are glowing in a light blue, everything else in a bright pink. + Logo of Easterhegg 2025. In the style of a unpowered neon sign:
+     The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+     The egg shell and the word 'Eggception' are dimly glowing in a dark blue, everything else in a dark pink. + +
+
+ +
+

Logo

+

+ One of the primary design elements of any design is of course its + logo. But because a single logo doesn't fit each use-case, e.g. in + terms of aspect ratio or detail, we created multiple variants. On top + of that, each variant also has its separate dark and light theme + variants, in case the logo is used on a light background. But in + general, as with the entire design, dark mode is the preferred + representaton. All logo files (with and without transparency or glow + and in both light and dark mode) can be found in + the design repository. +

+ +

Full Logo

+

+ The most present logo consists of the hare and egg, as well as the + motto Unhandled Eggception and the eventname + Easterhegg 2025. It is used on this website and can be used as + a banner, title image or for posters and similar. The eventname on it + is optional, variants without it can be found—as all other logo + files—using the link above. +

+
+ Full logo of Easterhegg 2025 in the style of a neon sign: The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg with cracks. The egg shell and the word 'Eggception' are glowing in a light blue, everything else in a bright pink. + The same logo as the previous one, but instead in the style of an unpowered neon sign, only glowing dimly. +
+ +

EH22 Logo

+

+ Especially useful for our matrix space, this logo variant featuring + only the "EH22" lettering has a more rectangular appearance and is + therefore useful for profile-esque pictures, where the eventname might + not always be visible, e.g. in a collapsed room-overview in the + Element matrix client. +

+
+ EH22 logo of Easterhegg 2025 in the style of a neon sign: It features the text 'EH22' spanning two lines. The '22' spans across the same width as 'EH' by spacing the two digits slighty further apart from one another than the two letters, giving it a rectangular appearance. The entire text features the blue neon effect from previous logos. + The same logo as the previous one, but instead in the style of an unpowered neon sing, only glowing dimly. +
+ +

Icon Logos

+

+ The following logo variants are all intended for a similar + profile-esque use-case as the EH22 logo above. The main difference is, + that they don't have an explicit mention of the eventname. Meaning + they should preferably be used, if the eventname is always visible + (e.g. via the display name on the + Easterhegg 2025 mastodon account) or the association is clear e.g. because it's a channel icon inside + the EH22 matrix space. But this is not a super strict policy. They can + of course also be used as simple design elements. +

+
+ Icon logo of Easterhegg 2025 in the style of a neon sign: It features the same hare and egg as before, horizontally next to one another, but the egg is a bit lower than the hare. + The same logo as the previous one, but instead in the style of an unpowered neon sing, only glowing dimly. +
+ +
+ Egg-only logo of Easterhegg 2025 in the style of a neon sign: It only features the egg from before. + The same logo as the previous one, but instead in the style of an unpowered neon sing, only glowing dimly. +
+ +
+ Hare-only logo of Easterhegg 2025 in the style of a neon sign: It only features the hare from before. + The same logo as the previous one, but instead in the style of an unpowered neon sing, only glowing dimly. +
+
+
+ + + diff --git a/eh22.easterhegg.eu/design/merch/de/index.html b/eh22.easterhegg.eu/design/merch/de/index.html new file mode 100644 index 0000000..9bdf8cd --- /dev/null +++ b/eh22.easterhegg.eu/design/merch/de/index.html @@ -0,0 +1,1338 @@ + + + + + + + + + EH22 - Merch Größenvergleich + + + +
+
+

Merch Grössenvergleich

+
+
+

+ Unten findest du eine Größen-Tabelle mit Größen und Maßen an + Merchandise-Kleidung von diesem und vergangenen Chaos + Veranstaltungen. Die Tabelle soll dabei helfen, passende + Kleidungsstücke zu wählen, basierend auf sich bereits im Besitz + befindender Kleidung vergangener Veranstaltungen. Dabei basieren + alle Angaben auf den Spezifikationen der jeweiligen + Kleidungshersteller. Stücke haben außerdem verschiedene Stoffe mit + unterschiedlicher Elastizität (sprich Dehnbarkeit). D. h. es kann + zu Unstimmigkeiten kommen im Bezug auf die reale Passform. +

+

+ Für jedes Kleidungsstück sind zwei oder drei Arten an Maße + angegeben. Die Bedeutung ist einerseits in der schematischen + Darstellung ablesbar, oder im Folgenden erklärt: +

+
    +
  • + A – Brust: gemessen ca. 2.5 cm unter den Achseln, + über die Breite des (flachen) Torsos. +
  • +
  • + B – Länge: Distanz von der Oberseite der Schultern + bis ganz nach unten. +
  • +
  • + C – Ärmel: Bei der Naht zwischen Ärmel und Torso, + vom obersten Punkt bis zum Ende des Armes gemessen. +
  • +
+

+ Du kannst jede Zelle, die einen Wert enthält, anklicken, um zu + sehen, wie stark die Maße (A, B und C) der verschiedenen Größen + jedes Kleidungsstückes von dem ausgewählten abweichen. Du kannst + außerdem bei Bedarf nur die Differenzen für ein bestimmtes Maß (z. + B. nur A) anzeigen lassen, indem du bei einer Größe ein zweites + Mal klickst, diesmal in der jeweiligen Zeile des Maßes. +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Easterhegg - EH22
KleidungsstückMarkeModellMaßeXXSXSSMLXL2XL3XL4XL5XL6XL
Shirt
Fitted
Stanley/Stella + Stella Ella STTW174
+ Produktdatenblatt +
A394245485155
B54.557.559.561.563.565.5
C1818.51919.52020.5
Shirt
Straight
Stanley/Stella + Creator 2.0 STTU169
+ Produktdatenblatt +
A45.547.549.553.556.559.563.567.572.577.5
B62656973757779818384
C202122.52424.52525.5262626
HoodieStanley/Stella + Cruiser 2.0 STSU177
+ Produktdatenblatt +
A51535559626569737883
B64677174767880828485
C58.560.564.566.568.56969.569.569.569.5
ZipperStanley/Stella + Cultivator 2.0 STSU179
+ Produktdatenblatt +
A51535559626569737883
B64677174767880828485
C58.560.564.566.568.56969.569.569.569.5
Congress - 38C3
KleidungsstückMarkeModellMaßeXXSXSSMLXL2XL3XL4XL5XL6XL
Shirt
Fitted
Stanley/StellaStella Ella STTW174same as EH22 Shirt Fitted
Shirt
Straight
Black/Navy/Green
Stanley/StellaCreator 2.0 STTU169same as EH22 Shirt Straight
Shirt
Straight
Burgundy
stormtextilST102 Heavy LuxeA4345485256606366707478
B6469717476798285888889
HoodieStanley/StellaCruiser STSU822same as camp23 Hoodie
ZipperStanley/StellaConnector STSU820A46.54951.5545760636671
B636568727476788082
C60.561.56465.56768.5707070
Embroidered
Heavy Shirt
Stanley/StellaSparker 2.0 STTU171A47.549.551.555.558.561.565.569.5
B6467717577798183
C202122.52424.52525.526
Embroidered
Sweatshirt
Stanley/StellaChanger 2.0 STSU178A51535559626569737883
B64677174767880828485
C58.560.564.566.568.56969.569.569.569.5
DressStanley/StellaStella Spinner STDW144A46.54952555861
B868890929393
C191920202121
GPN - gpn22
KleidungsstückMarkeModellMaßeXXSXSSMLXL2XL3XL4XL5XL6XL
Shirt
Fitted
SOL'S Imperial WOMEN11502A414447505356
B616365676971
Shirt
Straight
SOL'S Imperial11500A485053565962656871
B647072747678808284
Zipper
Fitted
Russell Europe + Ladies' Authentic
Zipped Hood Jacket
0R266F0 +
A4548515457
B65.567.569.571.573.5
Zipper
Straight
Russell Europe + Men's Authentic
Zipped Hood Jacket
0R266M0 +
A5154576063666972
B6466.56971.57476.57983.5
Congress - 37C3
KleidungsstückMarkeModellMaßeXXSXSSMLXL2XL3XL4XL5XL6XL
Angelshirt
Fitted
Stanley/StellaStella Expresser STTW032same as camp23 Shirt Fitted
Angelshirt
Straight
Stanley/StellaCreator STTU755same as camp23 Shirt Straight
Shirt
Fitted
Black
Stanley/StellaStella Expresser STTW032same as camp23 Shirt Fitted
Shirt
Straight
Black
Stanley/StellaCreator STTU755same as camp23 Shirt Straight
Hoodie
Black
Stanley/StellaCruiser STSU822same as camp23 Hoodie
Zipper
Black
Stanley/StellaCultivator STSM566same as camp23 Zipper
Shirt
Fitted
Blue
KaribanK3026ICA43464952555861
B60626466687072
C15.7516.517.251818.7519.520.25
Shirt
Straight
Blue
KaribanK3032ICA44475053565962656871
B66687072747678808284
C15.51616.51717.51818.51919.520
Hoodie
Blue
KaribanK4027A5154576063666972
B6870727476788082
C6667686970717273
Zipper
Blue
KaribanK4030A4851545760636669
B6668707274767880
C6566676869707172
Camp - Camp23
KleidungsstückMarkeModellMaßeXXSXSSMLXL2XL3XL4XL5XL6XL
Angelshirt
Fitted
Stanley/StellaStella Expresser STTW032same as camp23 Shirt Fitted
Angelshirt
Straight
Stanley/StellaCreator STTU755same as camp23 Shirt Straight
Shirt
Fitted
Stanley/StellaStella Expresser STTW032A4244.547.550.553.556.5
B626466686969
C161617171818
Shirt
Straight
Stanley/StellaCreator STTU755A43.5464952555861646974
B64666972747678808284
C1919.520.521.522.522.523.524.524.525
HoodieStanley/StellaCruiser STSU822A46.54951.554576063667176
B63656872747678808283
C60.561.56465.56768.570707070
ZipperStanley/StellaCultivator STSM566A46.54951.554576063667176
B61636872747678808283
C59606465.56768.570707070
+
+ + + + diff --git a/eh22.easterhegg.eu/design/merch/en/index.html b/eh22.easterhegg.eu/design/merch/en/index.html new file mode 100644 index 0000000..63309b6 --- /dev/null +++ b/eh22.easterhegg.eu/design/merch/en/index.html @@ -0,0 +1,1336 @@ + + + + + + + + + EH22 - Merch Size Comparison + + + +
+
+

Merch Size Comparison

+
+
+

+ Below you will find a table of sizes and measurements of + merchandise clothing from this and past chaos events. It is meant + to guide in choosing a fitting piece of clothing based on owned + pieces from previous events. All values are based on the + respective manufacturer's specifications and different fabrics + vary in elasticity (i. e. how stretchy they are), so there might + be some discrepancies regarding the actual fit. +

+

+ For each piece of clothing there are two or three types of + measurements. You can use the schematic or read below to determine + what each of them means: +

+
    +
  • + A – chest: measured roughly 2.5 cm below the + armpits over the breadth of the (flattend) torso. +
  • +
  • + B – length: distance from the top of the shoulders + all the way down. +
  • +
  • + C – sleeve: starting at the seam connecting the + sleeve and torso, measured from the top-most point down to the + end of the arm. +
  • +
+

+ You can click on any cell holding a value to see how much the + other pieces of clothing's sizes deviate from the selected one's + size in each measurement (A, B and C). You can also opt to only + show the deviation for a specific measurement by clicking again on + the respective measurement's value. +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Easterhegg - EH22
GarmentBrandModelMeas.XXSXSSMLXL2XL3XL4XL5XL6XL
Shirt
Fitted
Stanley/Stella + Stella Ella STTW174
+ Datasheet +
A394245485155
B54.557.559.561.563.565.5
C1818.51919.52020.5
Shirt
Straight
Stanley/Stella + Creator 2.0 STTU169
+ Datasheet +
A45.547.549.553.556.559.563.567.572.577.5
B62656973757779818384
C202122.52424.52525.5262626
HoodieStanley/Stella + Cruiser 2.0 STSU177
+ Datasheet +
A51535559626569737883
B64677174767880828485
C58.560.564.566.568.56969.569.569.569.5
ZipperStanley/Stella + Cultivator 2.0 STSU179
+ Datasheet +
A51535559626569737883
B64677174767880828485
C58.560.564.566.568.56969.569.569.569.5
Congress - 38C3
GarmentBrandModelMeas.XXSXSSMLXL2XL3XL4XL5XL6XL
Shirt
Fitted
Stanley/StellaStella Ella STTW174same as EH22 Shirt Fitted
Shirt
Straight
Black/Navy/Green
Stanley/StellaCreator 2.0 STTU169same as EH22 Shirt Straight
Shirt
Straight
Burgundy
stormtextilST102 Heavy LuxeA4345485256606366707478
B6469717476798285888889
HoodieStanley/StellaCruiser STSU822same as camp23 Hoodie
ZipperStanley/StellaConnector STSU820A46.54951.5545760636671
B636568727476788082
C60.561.56465.56768.5707070
Embroidered
Heavy Shirt
Stanley/StellaSparker 2.0 STTU171A47.549.551.555.558.561.565.569.5
B6467717577798183
C202122.52424.52525.526
Embroidered
Sweatshirt
Stanley/StellaChanger 2.0 STSU178A51535559626569737883
B64677174767880828485
C58.560.564.566.568.56969.569.569.569.5
DressStanley/StellaStella Spinner STDW144A46.54952555861
B868890929393
C191920202121
GPN - gpn22
GarmentBrandModelMeas.XXSXSSMLXL2XL3XL4XL5XL6XL
Shirt
Fitted
SOL'S Imperial WOMEN11502A414447505356
B616365676971
Shirt
Straight
SOL'S Imperial11500A485053565962656871
B647072747678808284
Zipper
Fitted
Russell Europe + Ladies' Authentic
Zipped Hood Jacket
0R266F0 +
A4548515457
B65.567.569.571.573.5
Zipper
Straight
Russell Europe + Men's Authentic
Zipped Hood Jacket
0R266M0 +
A5154576063666972
B6466.56971.57476.57983.5
Congress - 37C3
GarmentBrandModelMeas.XXSXSSMLXL2XL3XL4XL5XL6XL
Angelshirt
Fitted
Stanley/StellaStella Expresser STTW032same as camp23 Shirt Fitted
Angelshirt
Straight
Stanley/StellaCreator STTU755same as camp23 Shirt Straight
Shirt
Fitted
Black
Stanley/StellaStella Expresser STTW032same as camp23 Shirt Fitted
Shirt
Straight
Black
Stanley/StellaCreator STTU755same as camp23 Shirt Straight
Hoodie
Black
Stanley/StellaCruiser STSU822same as camp23 Hoodie
Zipper
Black
Stanley/StellaCultivator STSM566same as camp23 Zipper
Shirt
Fitted
Blue
KaribanK3026ICA43464952555861
B60626466687072
C15.7516.517.251818.7519.520.25
Shirt
Straight
Blue
KaribanK3032ICA44475053565962656871
B66687072747678808284
C15.51616.51717.51818.51919.520
Hoodie
Blue
KaribanK4027A5154576063666972
B6870727476788082
C6667686970717273
Zipper
Blue
KaribanK4030A4851545760636669
B6668707274767880
C6566676869707172
Camp - Camp23
GarmentBrandModelMeas.XXSXSSMLXL2XL3XL4XL5XL6XL
Angelshirt
Fitted
Stanley/StellaStella Expresser STTW032same as camp23 Shirt Fitted
Angelshirt
Straight
Stanley/StellaCreator STTU755same as camp23 Shirt Straight
Shirt
Fitted
Stanley/StellaStella Expresser STTW032A4244.547.550.553.556.5
B626466686969
C161617171818
Shirt
Straight
Stanley/StellaCreator STTU755A43.5464952555861646974
B64666972747678808284
C1919.520.521.522.522.523.524.524.525
HoodieStanley/StellaCruiser STSU822A46.54951.554576063667176
B63656872747678808283
C60.561.56465.56768.570707070
ZipperStanley/StellaCultivator STSM566A46.54951.554576063667176
B61636872747678808283
C59606465.56768.570707070
+
+ + + + diff --git a/eh22.easterhegg.eu/design/typography.html b/eh22.easterhegg.eu/design/typography.html new file mode 100644 index 0000000..f53ccc1 --- /dev/null +++ b/eh22.easterhegg.eu/design/typography.html @@ -0,0 +1,336 @@ + + + + + + + + + Typography + + + +
+ + Logo of Easterhegg 2025. In the style of a neon sign:
+     The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+     The egg shell and the word 'Eggception' are glowing in a light blue, everything else in a bright pink. + Logo of Easterhegg 2025. In the style of a unpowered neon sign:
+     The text 'Unhandled Eggception Easterhegg 2025' with a line art of a hare and an egg.
+     The egg shell and the word 'Eggception' are dimly glowing in a dark blue, everything else in a dark pink. + +
+
+ +
+

Typography

+

+ The design contains multiple typefaces, which are intended to be used + for different types of text. Below you'll find an explaination about + which typeface should be used for which context, as well as a table + containing specific font-sizes together with previews. If you want to + see the typography in action, head to the + demopage which includes examples of various text components. +

+
+
Paragraphs/Wildcard:
+
+ In general, everything that doesn't fall under the following + categories, should use the Athiti typeface, unless your use-case + calls for something else. This is just a guide and design + recommendation after all. +
+ +
Headings:
+
+ We believe that almost no one requires more than four levels of + headings. Therefore we only define font-sizes for this many. But you + can of course define your own additional levels. But be it slides, + webpages or whatever else; headings should always use our custom + made neon-sign font, Argon Glow. If you are curious about why we + created a custom font, we explained the decision further below. +
+ +
Subheadings:
+
+ This applies to secondary titles directly following a primary title, + as is typical on title-slides and similar. Use Athiti, but larger + than the text size of the main content. See the table below for a + size guide. +
+ +
Code/monospace:
+
+ For monospace content, we think, Departure Mono is a fitting choice, + to further add to the 80s retro vibe of the neon look, by leaning + into a more digital, pixelated theme. Beware: it won't work nicely + with all font sizes, because it tries to heavily rasterize. This + makes it a subadequate choice for terminal emulators and editors. + Use your monospace typeface of choice if Departure Mono doesn't work + for your use-case. +
+
+ +

Font Table

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeFont sizeFont familyPreview
Main Title72pxArgon GlowMain Title
Heading 148pxArgon GlowHeading 1
Heading 232pxArgon GlowHeading 2
Heading 324pxArgon GlowHeading 3
Heading 418pxArgon GlowHeading 4
Subheading24pxAthitiSubheading
Paragraph16pxAthitiParagraph
Code16pxDeparture MonoCode
+

+ If you want to add syntax highlighting to your code, you can use the + following formatting (also available as CSS classes using the same + name). If you need more granularity, feel free to add more colors and + decorations as needed. +

+ + +

Our custom font: Argon Glow

+

+ As mentioned above, we created Argon Glow ourselves. While researching + libre typefaces (OFL or similarly licensed) with a neon-sign look, we + found quite a few candidates. But each of them made some sort of + design choice we didn't like. +

+

+ Major issues were gaps and line lengths. Neon signs are made using + bent tubes. Some shapes would require either multiple tubes or involve + very tight bends and layering in the third dimension. Some typefaces + did try to imitate layering, but because typefaces are usually + two-dimensional, this didn't really look satisfactory. +

+

+ When using multiple lines, some typefaces really likes the + more is better approach, using unnecessary gaps that one + wouldn't do when creating physical signs, simply because it would be a + useless amount of additional work. +

+

+ Bending tubes is difficult, requiring a minimum radius to not damage + the pipe or cause flattening. So all typefaces using corners on the + inside of bends were a no-go. Some typefaces on the other hand liked + bends so much, they added extra bends to the end of lines, which did a + full 180. Maybe to try and imitate serifs? Either way, we didn't like + that. +

+

+ So in the end, and over the course of multiple months, we made our own + custom typeface that meets all of our desired properties and is freely + available under the OFL version 1.1. We hope y'all like it. And who + knows, maybe someone will use it for completely unrelated projects + than this Easterhegg. +

+ +

Get the fonts

+
+
Argon Glow
+
+ Argon Glow is licensed under the + OFL 1.1 license.
+ Link to Website
+ Source on codeberg.org +
+
Athiti
+
+ Athiti is licensed under the + OFL 1.1 license.
+ Link to Website
+ Source on github.com +
+
Departure Mono
+
+ Departure Mono is licensed under the + OFL 1.1 license.
+ Link to Website
+ Source on github.com +
+
+
+
+ + + diff --git a/eh22.easterhegg.eu/en:awareness.html b/eh22.easterhegg.eu/en:awareness.html new file mode 100644 index 0000000..0e99a4c --- /dev/null +++ b/eh22.easterhegg.eu/en:awareness.html @@ -0,0 +1,480 @@ + + + + + + + + + + + + + + + + + + + + +Awareness [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
meta data for this page
+ +
+
    +
  •  
  • +
+ +
+
+
+
+
+
+ +
+
This translation is older than the original page and might be outdated. See what has changed.
Translations of this page:
+
+
+
+ +

Awareness

+
+ +

+The awareness team is there to help you in particular if: +

+
    +
  • you have been harassed,
    +
  • +
  • your personal boundaries have been disregarded,
    +
  • +
  • you have experienced discrimination,
    +
  • +
  • you have witnessed (personal or structural) discrimination,
    +
  • +
  • you feel uncomfortable and need someone to talk to.
    +
  • +
+ +
+ +

Contact

+
+
    +
  • DECT: 113
    +
  • +
  • Phone: +49 40 5730830 113
    +
  • +
  • Mastodon: @c3awareness.chaos.social
    +
  • +
  • Matrix: @c3awareness:fairydust.space
    +
  • +
  • Email: team@c3awareness.de
    +
  • +
+ +

+You can find out more about us as a team and our awareness work on our website. +

+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/en:coc.html b/eh22.easterhegg.eu/en:coc.html new file mode 100644 index 0000000..d1608ea --- /dev/null +++ b/eh22.easterhegg.eu/en:coc.html @@ -0,0 +1,683 @@ + + + + + + + + + + + + + + + + + + + + +English Version [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
meta data for this page
+ +
+ + +
+
+
+
+
+
+ +
+
This translation is older than the original page and might be outdated. See what has changed.
Translations of this page:
+
+
+
+ +

English Version

+
+ +
+ +

Short Version

+
+ +

+EasterHegg is dedicated to providing a harassment- and discrimination-free event for all, regardless of gender, gender identity and expression, sexual orientation, physical and mental ability, physical appearance, body size, age, ethnic, regional and/ or religious affiliation or origin, or socioeconomic status. +Even if this goal cannot be achieved in its entirety due to social power relations, we want to work towards it. Participants who violate this goal can be sanctioned or excluded from the event at the discretion of the organizers. +

+ +
+ +

Enforcement

+
+ +

+Participants who are asked to refrain from harassing behavior are expected to comply immediately. +In the event of harassing behavior by a participant, the event organizers reserve the right to take necessary measures to make the event a pleasant environment for all participants. +

+ +
+ +

Reporting violations

+
+ +

+If you or anyone else feels unsafe or unwelcome, please do not hesitate to reach out right away. +

+ +

+Harassment and other violations of the Code of Conduct disrupt the event for everyone. We ask you to notify us if you notice any violations. By doing so, you will also help improve the event. +You can make a report either in person or anonymously. +

+ +
+ +
Anonymous report
+
+ +

+You can make an anonymous report here. +

+ +
+ +
Personal report
+
+ +

+You can make a personal report by contacting +

+ +

+a) the Awareness Team +

+
    +
  • by DECT/ phone: (+49 40 5730 830) 113
    +
  • +
  • by mail: team@c3awareness.de
    +
  • +
  • on matrix: @c3awareness:fairydust.space
    +
  • +
  • on mastodon: @c3awareness@chaos.social
    +
  • +
  • in person (identifiable by a purple glowing badge)
    +
  • +
+ +

+b) the Orga +

+
    +
  • by DECT/ phone: (+49 40 5730 830) 1000
    +
  • +
+ +
+ +

Long Version

+
+ +

+EasterHegg is dedicated to providing a harassment- and discrimination-free event for all, regardless of gender, gender identity and expression, sexual orientation, physical and mental ability, physical appearance, body size, age, ethnic, regional and/ or religious affiliation or origin, or socioeconomic status. +

+ +

+Even if this goal cannot be achieved in its entirety due to social power relations, we want to work towards it. Participants who violate this goal can be sanctioned or excluded from the event at the discretion of the organizers. +

+ +

+Harassment includes: +

+
    +
  • Comments that amplify social power relations. For example, concerning: Gender, gender identity and expression, sexual orientation, disability, physical appearance, body size, age, ethnic, regional and/ or religious affiliation or origin, or socioeconomic status.
    +
  • +
  • Sexual/sexualized images or acts in public spaces
    +
  • +
  • Intimidation, stalking, or persecution
    +
  • +
  • Non-consensual photography or filming
    +
  • +
  • Persistent disruption of lectures, workshops, or other gatherings
    +
  • +
  • Inappropriate physical contact
    +
  • +
  • Unwelcome sexual/sexualized attention (compliments, suggestive remarks, looks, gestures, statements, actions)
    +
  • +
  • Advocating for or encouraging any of the above behaviors
    +
  • +
  • Threat of or incitement to violence
    +
  • +
  • Explaining or commenting on the actions of others without being asked (mansplaining, backseat-driving)
    +
  • +
  • Intentionally using incorrect pronouns (misgendering) or identity labels for someone or using discarded names (deadnaming)
    +
  • +
  • Initiating relationships or sexual contact by taking advantage of hardship or structural inequalities (age, social position, etc.) or with persons who are in a relationship of dependency.
    +
  • +
+ +
+ +

Enforcement

+
+ +

+Participants who are asked to refrain from harassing behavior are expected to comply immediately. +In the event of harassing behavior by a participant, the event organizers reserve the right to take necessary measures to make the event a pleasant environment for all participants. +

+ +

+Possible measures range from warnings to permanent exclusion from the event. +The organizers can take measures against disruption of the event and to ensure that all participants can feel safe at the event and in its surroundings. +

+ +
+ +

Scope

+
+ +

+We expect participants to comply with these rules in all venues and activities related to the event. +We believe that participants should also follow these rules outside of the event. +

+ +
+ +

Reporting violations

+
+ +

+If you or anyone else feels unsafe or unwelcome, please do not hesitate to reach out right away. +

+ +

+Harassment and other violations of the Code of Conduct disrupt the event for everyone. We ask you to notify us if you notice any violations. By doing so, you will also help improve the event. +You can make a report either in person or anonymously. +

+ +
+ +
Anonymous report
+
+ +

+You can make an anonymous report here anonymous report here. +We cannot directly follow up on an anonymous report, but we will investigate it and take all necessary steps to prevent a recurrence. +

+ +
+ +
Personal report
+
+ +

+You can make a personal report by contacting +

+ +

+a) the Awareness Team +

+
    +
  • by DECT/ phone: (+49 40 5730 830) 113
    +
  • +
  • by mail: team@c3awareness.de
    +
  • +
  • on matrix: @c3awareness:fairydust.space
    +
  • +
  • on mastodon: @c3awareness@chaos.social
    +
  • +
  • in person (identifiable by a purple glowing badge)
    +
  • +
+ +

+In case of a personal report, the awareness team will make sure that there is a confidential retreat. +As soon as you are ready, the awareness team will ask you to describe what happened. The team will handle it as respectfully as possible, and you can bring a trusted person with you. You will not be asked to confront anyone, the awareness team will not do anything without your consent, and will not tell anyone who you are. +

+ +

+The Awareness Team will support you in contacting other agencies (internal or external to the event), provide escorts, or otherwise help you feel safe during the event. Your participation is important to us. +

+ +

+b) the Orga +

+
    +
  • by DECT/ phone: (+49 40 5730 830) 1000
    +
  • +
+ +
+ +

Source

+
+ +

+https://geekfeminism.fandom.com/wiki/Conference_anti-harassment/Policy +

+ +

+This Code of Conduct is based on the example from the Geek Feminism Wiki created by the Ada Initiative and other volunteers. +

+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/en:ctf.html b/eh22.easterhegg.eu/en:ctf.html new file mode 100644 index 0000000..506bb4b --- /dev/null +++ b/eh22.easterhegg.eu/en:ctf.html @@ -0,0 +1,594 @@ + + + + + + + + + + + + + + + + + + + + +Capture The Flag [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
meta data for this page
+ +
+
    +
  •  
  • +
+ +
+
+
+
+
+
+ +
+
Translations of this page:
+
+
+
+ +

Capture The Flag

+
+ +

+Legally hack the dedicated services we host. +

+ +

+We like to invite you to our digital egghunting in the form of a easy to medium CTF. Please visit http://board.eh22.c3h2.de for further information. Do not panic, if the board is not accessible yet. +

+ +

+The challenges are accessible starting at 18.04.2025 18:00 22:00 23:00 23:30 till 20.04.2025 18:00 22:00 23:00 23:30. +

+ +

+The site will be online a few hours minutes before the challenges start, so you have enough time to register. +If you require any further assistance regarding the challenges, you can also find us in the hacking area, where we have a table ready. We also have a matrix channel that you can join, where we try to answer questions regarding challenges. You can join here https://matrix.to/#/#easterhegg2025-ctf:hamburg.ccc.de +

+ +

+Be aware of our challenge policies. There are no prizes. +

+ +
+ +

FAQ

+
+
    +
  • For some challenges, there is a team wide deployment. You have to start them manually.
    +
      +
    • To start an instance for your team, navigate to the “deployment list”, right below the challenge list.
      +
    • +
    • After starting an instance, it might show “exited:unhealthy”. After a few minutes the status should switch to to “started:healthy”. If your instance has become healthy after five minutes, contact us via Matrix.
      +
    • +
    +
  • +
  • The whole CTF can be played on the easterhegg onsite, only.
    +
      +
    • The EH22 WIFI might be unstable, we recommend using LAN.
      +
    • +
    +
  • +
+ +
+ +

final score

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
# Team Points
1 L.A.R.P. 4951
2 hanemile 4755
3 Mouse Jigglers 4617
4 rueckwurst 3440
5 bckspc 3390
6 beetroot 3166
7 the_monday_club 2977
8 KITCTF 2890
9 haxko 2527
10 https 2417
11 manf 1331
12 Wir-fahren-mit-der-Hochbahn-durch-die-Stadt 1168
13 CYBERVISIONLABS.SH 1156
14 reald 1077
15 petepriority 963
16 kai 944
17 mynewteam 919
18 kibaa 780
19 invalid 695
20 ThanatosisSerpentis 606
21 allcatsarebeautiful 561
22 gamer gaming 439
23 NurMalGucken 215
24 Tawo 215
25 urls_in_webchalls_broken 130
26 Fluffy Unicorns 130
27 5 Freunde 100
28 dkl 100
+ +
+ +

News

+
+
    +
  • 2025-04-19T00:43+02:00: The CTF started at 23:30.
    +
  • +
  • 2025-04-18T21:50+02:00: We delayed the start to 23:30.
    +
  • +
  • 2025-04-18T21:50+02:00: We delayed the start to 23:00.
    +
  • +
  • 2025-04-18T16:16+02:00: We delayed the start to 22:00.
    +
  • +
+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/en:dating.html b/eh22.easterhegg.eu/en:dating.html new file mode 100644 index 0000000..38f0bd1 --- /dev/null +++ b/eh22.easterhegg.eu/en:dating.html @@ -0,0 +1,442 @@ + + + + + + + + + + + + + + + + + + + + +en:dating [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
meta data for this page
+ +
+
    +
  •  
  • +
+ +
+
+
+
+
+
+ +
+
This translation is older than the original page and might be outdated. See what has changed.
Translations of this page:
+
+
+
+ +

+See the german version +

+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/en:dect.html b/eh22.easterhegg.eu/en:dect.html new file mode 100644 index 0000000..49ad721 --- /dev/null +++ b/eh22.easterhegg.eu/en:dect.html @@ -0,0 +1,457 @@ + + + + + + + + + + + + + + + + + + + + +DECT [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
meta data for this page
+ +
+
    +
  •  
  • +
+ +
+
+
+
+
+
+ +
+
This translation is older than the original page and might be outdated. See what has changed.
Translations of this page:
+
+
+
+ +

DECT

+
+ +

+Eventphone will provide a phone network.
+ +C3GSM will provide a cellular network. +

+ +

+Registration is open, you can register your extension here. +

+ +

+Remember to bring your old CCC SIM cards if you want to use the gsm network, only a very small number of cards will be available on location. +

+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/en:food.html b/eh22.easterhegg.eu/en:food.html new file mode 100644 index 0000000..2b28a80 --- /dev/null +++ b/eh22.easterhegg.eu/en:food.html @@ -0,0 +1,524 @@ + + + + + + + + + + + + + + + + + + + + +Food and Drink [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
meta data for this page
+ +
+ + +
+
+
+
+
+
+ +
+
This translation is older than the original page and might be outdated. See what has changed.
Translations of this page:
+
+
+
+ +

Food and Drink

+
+ +
+ +

On site

+
+ +
+ +

Drinks

+
+ +

+The bar in the main foyer serves Water, Mate, Softdrinks, Beer and Tschunk. +

+ +

+Coffee is available in the breakfast area. Refill your Easterhegg mug for free whenever you like. +

+ +
+ +

Food

+
+ +
+ +

Breakfast

+
+ +

+One of the key features of Easterhegg is the eternal breakfast, where you can get free breakfast food all day and all night.
+ +The breakfast is completely vegetarian with vegan options and allergens are labeled. +

+ +
+ +

Peacetanbul

+
+ +

+Peacetanbul is the on-site Restaurant at Kampnagel.
+ +They offer delicious food from all over the world with hacker compatible opening hours.
+ +From Friday to Sunday, the kitchen is working from 15:00-24:00.
+ +If the weather permits, they might even run a grill on the plaza outside :) +

+ +
+ +

Off Site

+
+ +

+There are lots of good places to get food around the venue. +

+ +

+We have created a (non-exhaustive) list of places and their opening hours during the event here.
+ +The list is only available in german, but should be fairly self explanatory. +

+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/en:fruehstueck.html b/eh22.easterhegg.eu/en:fruehstueck.html new file mode 100644 index 0000000..5bfb7db --- /dev/null +++ b/eh22.easterhegg.eu/en:fruehstueck.html @@ -0,0 +1,446 @@ + + + + + + + + + + + + + + + + + + + +en:fruehstueck [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
meta data for this page
+ +
+
    +
  •  
  • +
+ +
+
+
+
+
+
+ +
+
Translations of this page:
+
+
+
+ +

This topic does not exist yet

+
+ +

+You've followed a link to a topic that doesn't exist yet. If permissions allow, you may create it by clicking on Create this page. +

+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/en:hackertours.html b/eh22.easterhegg.eu/en:hackertours.html new file mode 100644 index 0000000..f3de6f3 --- /dev/null +++ b/eh22.easterhegg.eu/en:hackertours.html @@ -0,0 +1,471 @@ + + + + + + + + + + + + + + + + + + + + +Hackertours [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
meta data for this page
+ +
+
    +
  •  
  • +
+ +
+
+
+
+
+
+ +
+
Translations of this page:
+
+
+
+ +

Hackertours

+
+ +

+CCC Hansestadt Hamburg is organising interesting tours in Hamburg around Easterhegg. +

+ + +

+We will start the tickets sales on March 2nd in the Hackertours Shop for EH22. +

+ + +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/en:lost.html b/eh22.easterhegg.eu/en:lost.html new file mode 100644 index 0000000..197441c --- /dev/null +++ b/eh22.easterhegg.eu/en:lost.html @@ -0,0 +1,451 @@ + + + + + + + + + + + + + + + + + + + + +Lost and found [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
meta data for this page
+ +
+
    +
  •  
  • +
+ +
+
+
+
+
+
+ +
+
Translations of this page:
+
+
+
+ +

Lost and found

+
+ +

+We found some things during teardown. Please see the German Lost&Found page for a list, and contact info. +

+ +

+We also have items left from Easterhegg 2023, which you can find here: https://eh20.easterhegg.eu/lost.html +

+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/en:merch.html b/eh22.easterhegg.eu/en:merch.html new file mode 100644 index 0000000..c272dee --- /dev/null +++ b/eh22.easterhegg.eu/en:merch.html @@ -0,0 +1,477 @@ + + + + + + + + + + + + + + + + + + + + +Merch [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
meta data for this page
+ +
+
    +
  •  
  • +
+ +
+
+
+
+
+
+ +
+
This translation is older than the original page and might be outdated. See what has changed.
Translations of this page:
+
+
+
+ +

Merch

+
+ +

+We will offer these Merch items: +

+
    +
  • T-Shirt (straight and fitted) for 25€
    +
  • +
  • Hoodie for 49€
    +
  • +
  • Zipper for 49€
    +
  • +
+ +

+Merch will be available via presale only, there is no amount reserved for sale on location. +

+ +

+The presale period will run from Feb 16, 20:00 CET (UTC+1) until March 9th. +

+ +

+Information about design and sizing will be available in the ticketshop:
+ +https://presale.eh22.easterhegg.eu +

+ +

+If you already have a shirt from one of the last major chaos events, you can use our web tool for comparing merch sizes.
+ +Click here for our merch size comparison:
+ +https://eh22.easterhegg.eu/design/merch/en/ +

+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/en:neighbourhood.html b/eh22.easterhegg.eu/en:neighbourhood.html new file mode 100644 index 0000000..5ba5977 --- /dev/null +++ b/eh22.easterhegg.eu/en:neighbourhood.html @@ -0,0 +1,449 @@ + + + + + + + + + + + + + + + + + + + + +Neighborhood [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
meta data for this page
+ +
+
    +
  •  
  • +
+ +
+
+
+
+
+
+ +
+
This translation is older than the original page and might be outdated. See what has changed.
Translations of this page:
+
+
+
+ +

Neighborhood

+
+ +

+This page lists restaurants, cafes, and supermarkets in the neighborhood of the venue.
+ +The list is only available in german, but should be fairly self explanatory. +

+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/en:network.html b/eh22.easterhegg.eu/en:network.html new file mode 100644 index 0000000..280c1fc --- /dev/null +++ b/eh22.easterhegg.eu/en:network.html @@ -0,0 +1,449 @@ + + + + + + + + + + + + + + + + + + + + +Network [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
meta data for this page
+ +
+
    +
  •  
  • +
+ +
+
+
+
+
+
+ +
+
This translation is older than the original page and might be outdated. See what has changed.
Translations of this page:
+
+
+
+ +

Network

+
+ +

+There will be a wired and wireless network.
+ +More information tba. +

+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/en:sos.html b/eh22.easterhegg.eu/en:sos.html new file mode 100644 index 0000000..e9156bb --- /dev/null +++ b/eh22.easterhegg.eu/en:sos.html @@ -0,0 +1,447 @@ + + + + + + + + + + + + + + + + + + + + +Self organized sessions [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
meta data for this page
+ +
+
    +
  •  
  • +
+ +
+
+
+
+
+
+ +
+
This translation is older than the original page and might be outdated. See what has changed.
Translations of this page:
+
+
+
+ +

Self organized sessions

+
+ +

+Self-organized sessions are managed on the german page. +

+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/en:start.html b/eh22.easterhegg.eu/en:start.html new file mode 100644 index 0000000..d835658 --- /dev/null +++ b/eh22.easterhegg.eu/en:start.html @@ -0,0 +1,538 @@ + + + + + + + + + + + + + + + + + + + + +Easterhegg 2025 [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
meta data for this page
+ +
+ + +
+
+
+
+
+
+ +
+
Translations of this page:
+
+
+
+ +

Easterhegg 2025

+
+ +

+The 22nd Easterhegg – Unhandled Eggception – took place from the 18th to 21st of April 2025 in Hamburg. +

+ +
+ +

Quick Facts

+
+
    +
  • What?: a comfy community event with lots of workhops
    +
  • +
  • When?: 18th to 21st of April 2025 (easter weekend)
    +
  • +
  • Where?: Kampnagel, Hamburg, Germany
    +
  • +
  • Who?: EH22 is organized by CCC Hamburg
    +
  • +
+ + + + + +
+ +

Contact

+
+ + +
+ +

Further Information

+
+ +

+Further information will be released on this website and the Fediverse soon. +

+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/en:ticket-exchange.html b/eh22.easterhegg.eu/en:ticket-exchange.html new file mode 100644 index 0000000..75443b0 --- /dev/null +++ b/eh22.easterhegg.eu/en:ticket-exchange.html @@ -0,0 +1,447 @@ + + + + + + + + + + + + + + + + + + + + +Ticket Exchange [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
meta data for this page
+ +
+
    +
  •  
  • +
+ +
+
+
+
+
+
+ +
+
This translation is older than the original page and might be outdated. See what has changed.
Translations of this page:
+
+
+
+ +

Ticket Exchange

+
+ +

+Please look at the german ticket exchange page by clicking on the “Deutsch” button on top of the page or klick here +

+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/en:tickets.html b/eh22.easterhegg.eu/en:tickets.html new file mode 100644 index 0000000..e1dcd39 --- /dev/null +++ b/eh22.easterhegg.eu/en:tickets.html @@ -0,0 +1,516 @@ + + + + + + + + + + + + + + + + + + + + +Tickets [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
meta data for this page
+ +
+
    +
  •  
  • +
+ +
+
+
+
+
+
+ +
+
Translations of this page:
+
+
+
+ +

Tickets

+
+
+

+The event is sold out, no tickets will be sold on site!
+ +Have a look at our Ticket-Exchange to see if there are tickets on offer. +

+
+

+If you can afford it, please consider buying the “Shut up and Take my Money” ticket, as this enables us to offer the cheaper tickets. +

+ +

+Attendees under 12 years of age get in for free. +

+ +
+ +

Pricing

+
+ +

+We can only keep to the ticket prices because we are supported by the Free and Hanseatic City of +Hamburg, Ministry of Culture and Media! +

+ +

+“Hop Hop Hop” for 85€
+ +standard ticket, just barely covers our costs +

+ +

+“Shut up and Take my Money” for 105€
+ +for those that can afford it and want to help make the cheaper tiers possible +

+ +

+“Small Hops” for 49€
+ +for young hackers and those that can't afford bigger jumps +

+ +
+ +

Procedure

+
+ +

+We will do 3 presale runs, so that there's a time that works for everyone. +If there are leftovers, they will be sold in a fourth round. +

+ +

+The presale runs take place at these dates: +

+
    +
  • 16.02.2025 - 20:00 CET (UTC+1) - over
    +
  • +
  • 20.02.2025 - 18:00 CET (UTC+1) - over
    +
  • +
  • 01.03.2025 - 12:00 CET (UTC+1) - over
    +
  • +
+ +

+Link to the ticket shop: +https://presale.eh22.easterhegg.eu/ +

+ +

+Hackertours tickets will be available from March 2nd in the Hackertours shop. +

+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/en:transit.html b/eh22.easterhegg.eu/en:transit.html new file mode 100644 index 0000000..63e51bf --- /dev/null +++ b/eh22.easterhegg.eu/en:transit.html @@ -0,0 +1,526 @@ + + + + + + + + + + + + + + + + + + + + +Public transit [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
meta data for this page
+ +
+
    +
  •  
  • +
+ +
+
+
+
+
+
+ +
+
Translations of this page:
+
+
+
+ +

Public transit

+
+ +
+ +

Road contruction

+
+ +

+As of the beginning of February until well after the event, Jarrestraße is a one-way street due to construction works.
+ +As it stands we expect westerly traffic, towards B5/Barmbeker Straße to be diverted via Wiesendamm and Weidestraße.
+ +

+ +

+This also affects buses running towards central station.
+ +The next alternative stop is about 500m further by foot. +

+
+ +
+ +

General information

+
+ +

+Groups should consider getting a group ticket.
+ +More info at the hvv online shop. +

+ +

+For exploring the city you can use the official app, which is quite usable:
+ +Android
+ +iPhone +

+ +
+ +
Bus stops
+
+ +

+During the event, buses will leave at the following stops: +

+ +

+Jarrestraße (Kampnagel): +

+
    +
  • Metrobus 17 to Barmbek (S1/U3), Bramfeld, Karlshöhe, Berne (U1)
    +
  • +
  • Stadtbus 172 to Barmbek (S1/U3), Fuhlsbüttler Straße, Ohlsdorf (S1/U1), Fuhlsbüttel Nord
    +
  • +
+ +

+Semperstraße: +

+
    +
  • Metrobus 6/17 to Uhlenhorst, Mundsburger Brücke, St. Georg, Hauptbahnhof(Central station)
    +
  • +
  • Metrobus 6(/17) to Borgweg (U3)
    +
  • +
  • Metrobus 6 to Rathaus (U3), Speicherstadt
    +
  • +
  • Metrobus 17 to Michaeliskirche, St. Pauli (U3), Feldstraße (U3)
    +
  • +
  • Xpressbus X22 to Winterhuder Marktplatz, Hudtwalckerstraße (U1), Eppendorfer Marktplatz, Siemersplatz, Hagenbecks Tierpark (U2)
    +
  • +
+ +

+Flotowstraße: +

+
    +
  • Xpressbus X22 to Wandsbeker Chaussee (S1/U1), Wandsbek Markt (U1), Jenfeld
    +
  • +
  • Stadtbus 172 to Mundsburg (U3), Uhlandstaße (U3), Mundsburger Brücke
    +
  • +
+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/en:travel.html b/eh22.easterhegg.eu/en:travel.html new file mode 100644 index 0000000..2e5064f --- /dev/null +++ b/eh22.easterhegg.eu/en:travel.html @@ -0,0 +1,686 @@ + + + + + + + + + + + + + + + + + + + + +Arrival and Departure [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
meta data for this page
+ +
+ + +
+
+
+
+
+
+ +
+
This translation is older than the original page and might be outdated. See what has changed.
Translations of this page:
+
+
+
+ +

Arrival and Departure

+
+ +
+ +

Road contruction

+
+ +

+As of the beginning of February until well after the event, Jarrestraße is a one-way street due to construction works.
+ +As it stands we expect westerly traffic, towards B5/Barmbeker Straße to be diverted via Wiesendamm and Weidestraße.
+ +

+ +

+This also affects buses running towards central station.
+ +The next alternative stop is about 500m further by foot. +

+ +
+ +

Public transit

+
+ +

+This page describes arrival and departure.
+ +Further information on public transit is on it's own page. +

+ +

+You know the drill: avoid using a car. Public transit in Hamburg it not that bad, just give it a shot.
+ +If you arrive by public transit, this is an inspiration for you “last mile”: +

+ +
+ +

From central station

+
+ +

+Use the Bus 17 (Destinations U/S Barmbek, Karlshöhe or U Berne).
+ +It departs from the Kirchenallee platform near Platform 1/2 on the other side of the road.
+ +Your stop will be “Jarrestraße (Kampnagel)”, which will take about 24 minutes and a single trip fare “AB” of 3,90€. +

+ +
+ +

To central station

+
+ +

+Use Bus 6 or 17 (Destinations Auf dem Sande or U Feldstraße) from “Semperstraße” stop in Semperstraße.
+ +Expect a single trip fare “AB” of 3,90€ and a 24 minutes ride. +

+ +
+ +

From the airport

+
+ +

+If you arrive by plane (really?), take the S1 to Barmbek Station.
+ +Use the Wiesendamm exit and take the Bus 17 towards “U Feldstraße”.
+ +Your stop will be “Semperstraße” “Jarrestraße (Kampnagel)”, which will take about 25 minutes and a single trip fare “AB” of 3,90€. +

+ +
+ +

To the airport

+
+ +

+Use Bus 17 or 172 (Destinations Lentersweg, U/S Barmbek, Karlshöhe or U Berne) to “U/S Barmbek”.
+ +Change into the S1 train to “Airport/Poppenbüttel”. Make sure to use one of the first three coaches.
+ +Expect a single trip fare “AB” of 3,90€ and a 26 minutes ride. +

+ +
+ +

By car

+
+ +

+To spare out planet, we kindly ask you to consider alternatives.
+ +Maybe you can make do with public transit or carpooling? +

+ +

+If you still want to come by car, consider taking more people along or transporting heavy luggage for others. +

+ +

+Please also take easter traffic into consideration, expect traffic jams and high fuel prices.
+ +Generally, city traffic in Hamburg is no fun. Its ranked top 3 worst congestion just after Berlin and Munich.
+ +Source +

+ +

+The address is: +

+
Jarrestraße 20
+22303 Hamburg
+ +

+ Routenplaner +

+ +
+ +

Parking

+
+ +

+On site there is a paid parking garage accesible by stairs (ca. 50m).
+ +Unfortunately there is no elevator available. +

+ +

+There are entry ramps from Barmbeker Straße or Jarrestraße.
+ +Parking fare is 2€/hour. You can get a 5€ discount by using a machine in the foyer.
+ +Free parking is hard to come by in the area. +

+ +

+Behind the halls in front of the administration building, there are 2 parking spots for visitors with sensoric of physical limitations and the according parking pass.
+ +From there you have level access to Kampnagel (ca. 100m).
+ +The driveway is at Jarrestraße 20, on premises keep to the left. +

+ +

+Around Kampnagel there are few to no parking spots! Come by public transit if you have a chance to! +

+ +
+ +

By boat

+
+ +

+From the seas +

+ +

+North sea +

+ +

+Enter the Elbe river from the German Bight, keep right of center, depending on draught also off the waterway.
+ +Vessels that are small enough to reach the destination are not exempt from the pilot mandate. +

+ +

+This section of the Elbe river is subject to tide. Keep up to date with the constantly changing conditions here.
+ +Follow the waterway into the harbour: 53.5407, 9.9802 +

+ +

+Baltic sea +

+ +

+Enter the Kiel canal from the Kiel Fjord.
+ +The Kiel canal is open to “sport boats” only between sunrise and sunset. Traversal is subject to a fare.
+ +Boats small enough to reach the destination are exempt from the pilot-mandate. However sailing is forbidden.
+ +Also you have to have radar to traverse at night. [https://www.blauwasser.de/reviere/Nord-Ostsee-Kanal|More Information]]. +

+ +

+From the Brunsbüttel locks, follow the Elbe to the Hamburg harbour as described above. +

+ +

+Alternatively: Use the Elbe-Lübeck Canal to Lauenburg (Elbe), though numerous locks.
+ +Then follow the elbe downstream to Geesthacht and traverse the locks there.
+ +From here the Elbe river is tidal. Check the tides here.
+ +Continue to Hamburg harbor as described above. +

+ +

+From 53.5407, 9.9802 +

+ +

+You can store your Vessel at the City Sport boat marina.
+ +From here we recommend public transit as it is faster and easier. +

+ +

+But still: +

+ +

+Any experts? Please translate this jargon-hell +

+ +

+Ansteuerung des Binnenhafens, Passage der Niederbaumbrücken. Anschließend Backbord, Einfahrt in das Alsterfleet “seeseitig”, Passage der Otto-Sill-Brücke und der Binnenhafenbrücke. Schleusung zu Berg, Passage der Schaartorschleuse. (Bei hohen Wasserständen der Elbe nicht passierbar, ab hier gilt eine Fahrerlaubnispflicht für Motorfahrzeuge, Schleusenzeiten, Rufnummer: 040 428403204) +Nach der Schaartorschleuse dem Alsterfleet Richtung NO bis zur Rathausschleuse folgen. Schleusung zu Berg (Schleusenzeiten, Rufnummer: 040 428402442), kleine Alster bis Reesendammbrücke, Binnenalster bis Lombardsbrücke / Kennedybrücke, Überquerung des 10. Meridians ostwärts, entsprechnde Zeremonie für Erstpassiernede empfohlen, anschließend auf der Außenalster bis 53.5761, 10.0061, Einfahrt in den Langen Zug, Passage der Langenzugbrücke und Einfahrt in den Osterbekkanal bis 53.58341, 10.02454, die Nutzung der Anlegeplätze ist bisher nicht geklärt und muss einzeln vom Schiffsführenden entschieden werden. Voilà… +

+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/food.html b/eh22.easterhegg.eu/food.html new file mode 100644 index 0000000..356339a --- /dev/null +++ b/eh22.easterhegg.eu/food.html @@ -0,0 +1,509 @@ + + + + + + + + + + + + + + + + + + + + +Verpflegung [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
Metainformationen zur Seite
+ +
+ + +
+
+
+
+
+
+ +
+
Übersetzungen dieser Seite:
+
+
+
+ +

Verpflegung

+
+ +
+ +

Auf dem Gelände

+
+ +
+ +

Trinken

+
+ +

+An der Bar im Hauptfoyer gibt es Wasser, Mate, Softdrinks, Bier und Tschunk. +

+ +

+Kaffee gibt es beim Frühstück, dort könnt ihr eure Easterhegg-Tassen so oft ihr wollt mit frischem Kaffee füllen. +

+ +
+ +

Essen

+
+ +
+ +

Ewiges Frühstück

+
+ +

+Traditionell fürs Easterhegg ist das ewige Frühstück, wo es zu jeder Tages- und Nachtzeit Brötchen & Co. mit herzhaften und süßen Belägen gibt.
+ +Das Frühstück ist komplett vegetarisch mit veganen Optionen und Allergene werden hier ausgezeichnet. +

+ +
+ +

Peacetanbul

+
+ +

+Das Peacetanbul ist das Restaurant auf Kampnagel.
+ +Dort bekommt ihr zu Hacker:innen kompatiblen Zeiten leckere Gerichte aus aller Welt.
+ +Freitag bis Sonntag hat die Küche von 15:00 - 24:00 Uhr geöffnet.
+ +Essen zum Mitnehmen: Bitte bringt dafür unbedingt euer eigenes (Plastik-)Geschirr mit - Peacetanbul verteilt keine Einwegverpackungen.
+ +Aktuelle Speisekarte: sie hängt im Peacetanbul an der Wand - abfotografieren - fertig.
+ +Wenn das Wetter gut ist, werfen sie vielleicht auch auf dem Vorplatz den Grill für uns an :) +

+ +
+ +

In der Umgebung

+
+ +

+Auch außerhalb des Geländes gibt es jede Menge leckere Restaurants und Cafés. Hier findet ihr eine Übersicht inklusive der Öffnungszeiten zu Ostern. +

+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/fruehstueck.html b/eh22.easterhegg.eu/fruehstueck.html new file mode 100644 index 0000000..a97425e --- /dev/null +++ b/eh22.easterhegg.eu/fruehstueck.html @@ -0,0 +1,836 @@ + + + + + + + + + + + + + + + + + + + +Ewiges Frühstück [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+ + +
+
Übersetzungen dieser Seite:
+
+
+
+ +

Ewiges Frühstück

+
+ +

+Wie Ihr vielleicht wisst, ist das Ewige Frühstück ein Merkmal des Easterhegg. +

+ +

+Von 0800 bis 2200 wird es dauernd zubereitet und aufgefüllt. Über Nacht gibt es ein kleines Selbstbedienungs-Buffet und einen Kühlschrank für vorbereitete Speisen und Getränke. +

+ +
+ +

Rezepte

+
+ +
+ +

Tomatenbutter Tag 1 und 2

+ + +

Rauchige schwarze Bohnencreme Tag 1 und 2

+
+
    +
  • 5920g Zwiebeln frisch
    +
  • +
  • 240g Knoblauch frisch
    +
  • +
  • 208g Öl
    +
  • +
  • 3840g schwarze Bohnen
    +
  • +
  • 960g Erdnussmus
    +
  • +
  • 80g rauchiges Paprikapulver
    +
  • +
  • 16g Pfeffer schwarz
    +
  • +
  • 16g Majoran
    +
  • +
  • 80g Salz
    +
  • +
  • 192g Hefeflocken
    +
  • +
  • 272g Tomatenmark
    +
  • +
  • 1600 Milliliter Wasser
    +
  • +
+ +
+ +

Hummus Tag 3 und 4

+ + +

Levervurst Tag 3 und 4

+ + +

Was es alles gibt

+
+ +
+ +

Brötchen

+
+ +

+Es gibt hauptsächlich Weizen- und Körnerbrötchen (vegan), im Falle, dass die gerade aus sind, haben wir auch Toastbrot (vegan). +

+ +
+ +

Aufstriche

+
+
    +
  • Pflanzenmargarine
    +
  • +
  • Gemüseglück (10) (11) (12)
    +
  • +
+ +
+ +

Selbstgemacht: Rauchige Schwarze Bohnencreme

+
+ +

+Zutaten: +

+
    +
  • Zwiebeln
    +
  • +
  • Knoblauch
    +
  • +
  • Öl
    +
  • +
  • Schwarze Bohnen
    +
  • +
  • Erdnussmus (10)
    +
  • +
  • rauchiges Paprikapulver
    +
  • +
  • Pfeffer (schwarz)
    +
  • +
  • Majoran
    +
  • +
  • Salz
    +
  • +
  • Hefeflocken
    +
  • +
  • Tomatenmark
    +
  • +
  • Wasser
    +
  • +
+ +
+ +

Selbstgemacht: Tomatenbutter

+
+ +

+Zutaten: +

+
    +
  • Pfanzliche Margarine
    +
  • +
  • Tomatenmark
    +
  • +
  • Zwiebeln
    +
  • +
  • Knoblauch
    +
  • +
  • Salz
    +
  • +
  • Petersilie
    +
  • +
  • Zitronensaft
    +
  • +
+ +
+ +

Leider alle (Selbstgemacht: Quittengelee mit Chili)

+
+ +

+Zutaten: +

+
    +
  • Quitte
    +
  • +
  • Gelierzucker (4) (5)
    +
  • +
  • Chili
    +
  • +
+ +
+ +

Selbstgemacht: Levverwurst

+
+
    +
  • Zwiebeln
    +
  • +
  • Knoblauch
    +
  • +
  • Räuchertofu
    +
  • +
  • Kidneybohnen
    +
  • +
  • Senf
    +
  • +
  • Paprikapulver
    +
  • +
  • getrocknete Ptersillie
    +
  • +
  • getrockneter Majoran
    +
  • +
  • Salz
    +
  • +
  • Pfeffer
    +
  • +
+ +
+ +

Selbstgemacht: Hummus

+
+
    +
  • Kichererbsen
    +
  • +
  • Tahini
    +
  • +
  • Knoblauch
    +
  • +
  • Olivenöl
    +
  • +
  • Keuzkümmel
    +
  • +
  • Koriandersaat
    +
  • +
  • Paprikapulver
    +
  • +
  • Salz
    +
  • +
+ +
+ +

Aufschnitt

+
+ +
+ +

Käse

+
+
    +
  • Edamer 40%
    +
  • +
  • Gouda 48%
    +
  • +
  • Violife Cheddargeschmack (vegan)
    +
  • +
  • Violife Goudageschmack (vegan)
    +
  • +
  • Violife Mozzarellageschmack (vegan)
    +
  • +
+ +
+ +

Wurst

+
+
    +
  • Mühlensalami I (vegan)
    +
  • +
  • Mühlensalami II (vegan)
    +
  • +
  • Schinkenspicker Mortadella (vegan) (1) (2) (3)
    +
  • +
  • Schinkenspicker Paprika (vegan) (1) (2) (3)
    +
  • +
  • Spicker Grillgemüse (vegan)
    +
  • +
  • Wurstscheiben Paprika-Chili-Kichererbsen (vegan)
    +
  • +
  • Wurstscheiben Grillgemüse (vegan)
    +
  • +
+ +
+ +

Sonstiges

+
+
    +
  • Gurken (vegan)
    +
  • +
  • Honig
    +
  • +
  • Nutella (6)
    +
  • +
  • Reiswaffeln (3)
    +
  • +
  • Johannisbeergelee (4) (5) (7) (8)
    +
  • +
  • Konfitüre Erdbeer
    +
  • +
  • Konfitüre Aprikose
    +
  • +
  • Konfitüre Erdbeer (7) (8)
    +
  • +
  • Konfitüre Pfirsich (7) (8)
    +
  • +
+ +
+ +

Müsli & so

+
+
    +
  • Früchte-Hafer-Müsli (6) (13) (14) (15) (16)
    +
  • +
  • Honig-Nuss-Müsli (15) (16)
    +
  • +
  • Joghurt (4) (5)
    +
  • +
  • Corn Flakes (3) (10) (16) (17) (18)
    +
  • +
  • Nut Flakes glutenfrei (3) (10) (16) (17) (18)
    +
  • +
  • Obst (diverse, vegan)
    +
  • +
+ +
+ +

Getränke

+
+
    +
  • Sojadrink ungesüßt (vegan)
    +
  • +
  • Haferdrink Barista (vegan)
    +
  • +
  • H-Milch 1,5%
    +
  • +
  • H-Milch 3,5%
    +
  • +
  • Kaffee (Koffein)
    +
  • +
+ +
+ +

SurpriseSurprise

+
+
    +
  • ?
    +
  • +
+ +
+ +

Allergene

+
+
    +
  • (1) Ei
    +
  • +
  • (2) Gluten
    +
  • +
  • (3) Soja
    +
  • +
  • (4) Glukose
    +
  • +
  • (5) Fruktose
    +
  • +
  • (6) Haselnüsse
    +
  • +
  • (7) Pektine
    +
  • +
  • (8) Citronensäure
    +
  • +
  • (9) Holundersaft
    +
  • +
  • (10) Schalenfrüchte
    +
  • +
  • (11) Sesam
    +
  • +
  • (12) Sellerie
    +
  • +
  • (13) Mandeln
    +
  • +
  • (14) Cashewkerne
    +
  • +
  • (15) Pekanüsse
    +
  • +
  • (16) Milch
    +
  • +
  • (17) Erdnüsse
    +
  • +
  • (18) Sesam
    +
  • +
+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/hackertours.html b/eh22.easterhegg.eu/hackertours.html new file mode 100644 index 0000000..dba7d23 --- /dev/null +++ b/eh22.easterhegg.eu/hackertours.html @@ -0,0 +1,458 @@ + + + + + + + + + + + + + + + + + + + + +Hackertours [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
Metainformationen zur Seite
+ +
+
    +
  •  
  • +
+ +
+
+
+
+
+
+ +
+
Übersetzungen dieser Seite:
+
+
+
+ +

Hackertours

+
+ +

+Der CCC Hansestadt Hamburg organisiert rund um das Easterhegg spannende Touren in Hamburg. +

+ + +

+Wir starten mit dem Verkauf der Touren am 2.3. um 15 Uhr im Hackertours-Shop für den EH22. +

+ + +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/index.html b/eh22.easterhegg.eu/index.html new file mode 100644 index 0000000..1a3ae00 --- /dev/null +++ b/eh22.easterhegg.eu/index.html @@ -0,0 +1,542 @@ + + + + + + + + + + + + + + + + + + + + +Easterhegg 2025 [EH22 - Easterhegg 2025] + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + +
+ +
+
+
+
+ + + + +
+ +
+
+
+ + + +
+
+
+
+ + +
+
+ +
+ + +
+ + + + + + + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+ + +
+
+
+
+ + + + + +
+
+
Metainformationen zur Seite
+ +
+ + + +
+
+ +
+
Übersetzungen dieser Seite:
+
+
+
+ +

Easterhegg 2025

+
+ +

+Das 22. Easterhegg – Unhandled Eggception – fand vom 18. bis 21. April 2025 in Hamburg statt.
+ +

+ +
+ +

Wer hat's dir verraten? Metadaten!

+
+
    +
  • Was?: Ein flauschiges Community-Event mit viel Workshops und Community sowie Vorträgen
    +
  • +
  • Wann?: 18. bis 21. April 2025 (über Ostern)
    +
  • +
  • Wo?: Hamburg, Kampnagel
    +
  • +
  • Wer?: Der CCC Hamburg lädt alle ein, die Lust haben
    +
  • +
+ + + + + +
+ +

Kontakt

+
+ + +
+ +

Mehr Infos

+
+ +

+Zuätzliche Informationen werden wir auf dieser Webseite sowie im Fediverse zu gegebener Zeit veröffentlichen. +

+ +
+ +

Ein Dank an die Stadt Hamburg

+
+ +

+Wir werden gefördert durch die Freie und Hansestadt +Hamburg, Behörde für Kultur und Medien! +

+ +
+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + + + + + + + +
+ + + + + diff --git a/eh22.easterhegg.eu/lib/exe/jquery.js b/eh22.easterhegg.eu/lib/exe/jquery.js new file mode 100644 index 0000000..6022987 --- /dev/null +++ b/eh22.easterhegg.eu/lib/exe/jquery.js @@ -0,0 +1,9 @@ +/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0{"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(V){V.ui=V.ui||{};V.ui.version="1.14.1";var n,s,x,k,o,a,r,l,h,i,E=0,N=Array.prototype.hasOwnProperty,c=Array.prototype.slice;V.cleanData=(n=V.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=V._data(i,"events"))&&e.remove&&V(i).triggerHandler("remove");n(t)}),V.widget=function(t,i,e){var s,n,o,a,r={},l=t.split(".")[0];return"__proto__"===(t=t.split(".")[1])||"constructor"===t?V.error("Invalid widget name: "+t):(a=l+"-"+t,e||(e=i,i=V.Widget),Array.isArray(e)&&(e=V.extend.apply(null,[{}].concat(e))),V.expr.pseudos[a.toLowerCase()]=function(t){return!!V.data(t,a)},V[l]=V[l]||{},s=V[l][t],n=V[l][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},V.extend(n,s,{version:e.version,_proto:V.extend({},e),_childConstructors:[]}),(o=new i).options=V.widget.extend({},o.options),V.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}r[e]="function"!=typeof s?s:function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}}),n.prototype=V.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},r,{constructor:n,namespace:l,widgetName:t,widgetFullName:a}),s?(V.each(s._childConstructors,function(t,e){var i=e.prototype;V.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),V.widget.bridge(t,n),n)},V.widget.extend=function(t){for(var e,i,s=c.call(arguments,1),n=0,o=s.length;n",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=V(e||this.defaultElement||this)[0],this.element=V(e),this.uuid=E++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=V(),this.hoverable=V(),this.focusable=V(),this.classesElementLookup={},e!==this&&(V.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=V(e.style?e.ownerDocument:e.document||e),this.window=V(this.document[0].defaultView||this.document[0].parentWindow)),this.options=V.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:V.noop,_create:V.noop,_init:V.noop,destroy:function(){var i=this;this._destroy(),V.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:V.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return V.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=V.widget.extend({},this.options[t]),n=0;n{var i=[];n.element.each(function(t,e){V.map(a.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||i.push(e)}),a._on(V(i),{remove:"_untrackClassesElement"})})(),V(V.uniqueSort(i.get().concat(n.element.get())))):V(i.not(n.element).get()),a.classesElementLookup[t[s]]=i,o.push(t[s]),e&&n.classes[t[s]]&&o.push(n.classes[t[s]])}return(n=V.extend({element:this.element,classes:this.options.classes||{}},n)).keys&&t(n.keys.match(/\S+/g)||[],!0),n.extra&&t(n.extra.match(/\S+/g)||[]),o.join(" ")},_untrackClassesElement:function(i){var s=this;V.each(s.classesElementLookup,function(t,e){-1!==V.inArray(i.target,e)&&(s.classesElementLookup[t]=V(e.not(i.target).get()))}),this._off(V(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){var n="string"==typeof t||null===t,e={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s="boolean"==typeof s?s:i};return e.element.toggleClass(this._classes(e),s),this},_on:function(n,o,t){var a,r=this;"boolean"!=typeof n&&(t=o,o=n,n=!1),t?(o=a=V(o),this.bindings=this.bindings.add(o)):(t=o,o=this.element,a=this.widget()),V.each(t,function(t,e){function i(){if(n||!0!==r.options.disabled&&!V(this).hasClass("ui-state-disabled"))return("string"==typeof e?r[e]:e).apply(r,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||V.guid++);var t=t.match(/^([\w:-]*)\s*(.*)$/),s=t[1]+r.eventNamespace,t=t[2];t?a.on(s,t,i):o.on(s,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=V(this.bindings.not(t).get()),this.focusable=V(this.focusable.not(t).get()),this.hoverable=V(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(V(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(V(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(V(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(V(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var s,n,o=this.options[t];if(i=i||{},(e=V.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],n=e.originalEvent)for(s in n)s in e||(e[s]=n[s]);return this.element.trigger(e,i),!("function"==typeof o&&!1===o.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},V.each({show:"fadeIn",hide:"fadeOut"},function(o,a){V.Widget.prototype["_"+o]=function(e,t,i){var s,n=(t="string"==typeof t?{effect:t}:t)?!0!==t&&"number"!=typeof t&&t.effect||a:o;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),s=!V.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),s&&V.effects&&V.effects.effect[n]?e[o](t):n!==o&&e[n]?e[n](t.duration,t.easing,i):e.queue(function(t){V(this)[o](),i&&i.call(e[0]),t()})}}),V.widget;function C(t,e,i){return[parseFloat(t[0])*(h.test(t[0])?e/100:1),parseFloat(t[1])*(h.test(t[1])?i/100:1)]}function D(t,e){return parseInt(V.css(t,e),10)||0}function I(t){return null!=t&&t===t.window}x=Math.max,k=Math.abs,o=/left|center|right/,a=/top|center|bottom/,r=/[\+\-]\d+(\.[\d]+)?%?/,l=/^\w+/,h=/%$/,i=V.fn.position,V.position={scrollbarWidth:function(){var t,e,i;return void 0!==s?s:(i=(e=V("
")).children()[0],V("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i)},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(k(s),k(n))?o.important="horizontal":o.important="vertical",u.using.call(this,t,o)}),a.offset(V.extend(h,{using:t}))})):i.apply(this,arguments)},V.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,s=s.width,o=t.left-e.collisionPosition.marginLeft,a=n-o,r=o+e.collisionWidth-s-n;so.mod/2?s+=o.mod:s-n>o.mod/2&&(s-=o.mod)),l[i]=_((n-s)*a+s,e)))}),this[t](l)},blend:function(t){var e,i,s;return 1===this._rgba[3]?this:(e=this._rgba.slice(),i=e.pop(),s=p(t)._rgba,p(u.map(e,function(t,e){return(1-i)*s[e]+i*t})))},toRgbaString:function(){var t="rgba(",e=u.map(this._rgba,function(t,e){return null!=t?t:2{var i,s,n={};for(i in e)s=e[i],t[i]===s||U[i]||!V.fx.step[i]&&isNaN(parseFloat(s))||(n[i]=s);return n})(this.start,this.end),this}),i.attr("class",t),e=e.map(function(){var t=this,e=V.Deferred(),i=V.extend({},o,{queue:!1,complete:function(){e.resolve(t)}});return this.el.animate(this.diff,i),e.promise()}),V.when.apply(V,e.get()).done(function(){s(),V.each(arguments,function(){var e=this.el;V.each(this.diff,function(t){e.css(t,"")})}),o.complete.call(i[0])})})},V.fn.extend({addClass:(q=V.fn.addClass,function(t,e,i,s){return e?V.effects.animateClass.call(this,{add:t},e,i,s):q.apply(this,arguments)}),removeClass:(j=V.fn.removeClass,function(t,e,i,s){return 1").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:i.width(),height:i.height()},n=document.activeElement;try{n.id}catch(t){n=document.body}return i.wrap(t),i[0]!==n&&!V.contains(i[0],n)||V(n).trigger("focus"),t=i.parent(),"static"===i.css("position")?(t.css({position:"relative"}),i.css({position:"relative"})):(V.extend(s,{position:i.css("position"),zIndex:i.css("z-index")}),V.each(["top","left","bottom","right"],function(t,e){s[e]=i.css(e),isNaN(parseInt(s[e],10))&&(s[e]="auto")}),i.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),i.css(e),t.css(s).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),t[0]!==e&&!V.contains(t[0],e)||V(e).trigger("focus")),t}}),V.extend(V.effects,{version:"1.14.1",define:function(t,e,i){return i||(i=e,e="effect"),V.effects.effect[t]=i,V.effects.effect[t].mode=e,i},scaledDimensions:function(t,e,i){var s;return 0===e?{height:0,width:0,outerHeight:0,outerWidth:0}:(s="horizontal"!==i?(e||100)/100:1,i="vertical"!==i?(e||100)/100:1,{height:t.height()*i,width:t.width()*s,outerHeight:t.outerHeight()*i,outerWidth:t.outerWidth()*s})},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();1").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(w+"placeholder",e)),t.css({position:i,left:s.left,top:s.top}),e},removePlaceholder:function(t){var e=w+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(t){V.effects.restoreStyle(t),V.effects.removePlaceholder(t)},setTransition:function(s,t,n,o){return o=o||{},V.each(t,function(t,e){var i=s.cssUnit(e);0");l.appendTo("body").addClass(t.className).css({top:s.top-a,left:s.left-o,height:i.innerHeight(),width:i.innerWidth(),position:n?"fixed":"absolute"}).animate(r,t.duration,t.easing,function(){l.remove(),"function"==typeof e&&e()})}}),V.fx.step.clip=function(t){t.clipInit||(t.start=V(t.elem).cssClip(),"string"==typeof t.end&&(t.end=Z(t.end,t.elem)),t.clipInit=!0),V(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})},b={},V.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){b[t]=function(t){return Math.pow(t,e+2)}}),V.extend(b,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),V.each(b,function(t,e){V.easing["easeIn"+t]=e,V.easing["easeOut"+t]=function(t){return 1-e(1-t)},V.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}});var tt,et,S,it=V.effects,st=(V.effects.define("blind","hide",function(t,e){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=V(this),n=t.direction||"up",o=s.cssClip(),a={clip:V.extend({},o)},r=V.effects.createPlaceholder(s);a.clip[i[n][0]]=a.clip[i[n][1]],"show"===t.mode&&(s.cssClip(a.clip),r&&r.css(V.effects.clipToBox(a)),a.clip=o),r&&r.animate(V.effects.clipToBox(a),t.duration,t.easing),s.animate(a,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("bounce",function(t,e){var i,s,n=V(this),o=t.mode,a="hide"===o,o="show"===o,r=t.direction||"up",l=t.distance,h=t.times||5,c=2*h+(o||a?1:0),u=t.duration/c,d=t.easing,p="up"===r||"down"===r?"top":"left",f="up"===r||"left"===r,g=0,t=n.queue().length;for(V.effects.createPlaceholder(n),r=n.css(p),l=l||n["top"==p?"outerHeight":"outerWidth"]()/3,o&&((s={opacity:1})[p]=r,n.css("opacity",0).css(p,f?2*-l:2*l).animate(s,u,d)),a&&(l/=Math.pow(2,h-1)),(s={})[p]=r;g").css({position:"absolute",visibility:"visible",left:-s*p,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:f,left:n+(u?a*p:0),top:o+(u?r*f:0),opacity:u?0:1}).animate({left:n+(u?0:a*p),top:o+(u?0:r*f),opacity:u?1:0},t.duration||500,t.easing,m)}),V.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;V(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("fold","hide",function(e,t){var i=V(this),s=e.mode,n="show"===s,s="hide"===s,o=e.size||15,a=/([0-9]+)%/.exec(o),r=!!e.horizFirst?["right","bottom"]:["bottom","right"],l=e.duration/2,h=V.effects.createPlaceholder(i),c=i.cssClip(),u={clip:V.extend({},c)},d={clip:V.extend({},c)},p=[c[r[0]],c[r[1]]],f=i.queue().length;a&&(o=parseInt(a[1],10)/100*p[s?0:1]),u.clip[r[0]]=o,d.clip[r[0]]=o,d.clip[r[1]]=0,n&&(i.cssClip(d.clip),h&&h.css(V.effects.clipToBox(d)),d.clip=c),i.queue(function(t){h&&h.animate(V.effects.clipToBox(u),l,e.easing).animate(V.effects.clipToBox(d),l,e.easing),t()}).animate(u,l,e.easing).animate(d,l,e.easing).queue(t),V.effects.unshift(i,f,4)}),V.effects.define("highlight","show",function(t,e){var i=V(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),V.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("size",function(s,e){var n,i=V(this),t=["fontSize"],o=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],a=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],r=s.mode,l="effect"!==r,h=s.scale||"both",c=s.origin||["middle","center"],u=i.css("position"),d=i.position(),p=V.effects.scaledDimensions(i),f=s.from||p,g=s.to||V.effects.scaledDimensions(i,0);V.effects.createPlaceholder(i),"show"===r&&(r=f,f=g,g=r),n={from:{y:f.height/p.height,x:f.width/p.width},to:{y:g.height/p.height,x:g.width/p.width}},"box"!==h&&"both"!==h||(n.from.y!==n.to.y&&(f=V.effects.setTransition(i,o,n.from.y,f),g=V.effects.setTransition(i,o,n.to.y,g)),n.from.x!==n.to.x&&(f=V.effects.setTransition(i,a,n.from.x,f),g=V.effects.setTransition(i,a,n.to.x,g))),"content"!==h&&"both"!==h||n.from.y!==n.to.y&&(f=V.effects.setTransition(i,t,n.from.y,f),g=V.effects.setTransition(i,t,n.to.y,g)),c&&(r=V.effects.getBaseline(c,p),f.top=(p.outerHeight-f.outerHeight)*r.y+d.top,f.left=(p.outerWidth-f.outerWidth)*r.x+d.left,g.top=(p.outerHeight-g.outerHeight)*r.y+d.top,g.left=(p.outerWidth-g.outerWidth)*r.x+d.left),delete f.outerHeight,delete f.outerWidth,i.css(f),"content"!==h&&"both"!==h||(o=o.concat(["marginTop","marginBottom"]).concat(t),a=a.concat(["marginLeft","marginRight"]),i.find("*[width]").each(function(){var t=V(this),e=V.effects.scaledDimensions(t),i={height:e.height*n.from.y,width:e.width*n.from.x,outerHeight:e.outerHeight*n.from.y,outerWidth:e.outerWidth*n.from.x},e={height:e.height*n.to.y,width:e.width*n.to.x,outerHeight:e.height*n.to.y,outerWidth:e.width*n.to.x};n.from.y!==n.to.y&&(i=V.effects.setTransition(t,o,n.from.y,i),e=V.effects.setTransition(t,o,n.to.y,e)),n.from.x!==n.to.x&&(i=V.effects.setTransition(t,a,n.from.x,i),e=V.effects.setTransition(t,a,n.to.x,e)),l&&V.effects.saveStyle(t),t.css(i),t.animate(e,s.duration,s.easing,function(){l&&V.effects.restoreStyle(t)})})),i.animate(g,{queue:!1,duration:s.duration,easing:s.easing,complete:function(){var t=i.offset();0===g.opacity&&i.css("opacity",f.opacity),l||(i.css("position","static"===u?"relative":u).offset(t),V.effects.saveStyle(i)),e()}})}),V.effects.define("scale",function(t,e){var i=V(this),s=t.mode,s=parseInt(t.percent,10)||(0===parseInt(t.percent,10)||"effect"!==s?0:100),i=V.extend(!0,{from:V.effects.scaledDimensions(i),to:V.effects.scaledDimensions(i,s,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(i.from.opacity=1,i.to.opacity=0),V.effects.effect.size.call(this,i,e)}),V.effects.define("puff","hide",function(t,e){t=V.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});V.effects.effect.scale.call(this,t,e)}),V.effects.define("pulsate","show",function(t,e){var i=V(this),s=t.mode,n="show"===s,o=2*(t.times||5)+(n||"hide"===s?1:0),a=t.duration/o,r=0,l=1,s=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),r=1);l li > :first-child").add(t.find("> :not(li)").filter(function(t){return t%2==0}))},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=V(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():V()}},_createIcons:function(){var t,e=this.options.icons;e&&(t=V(""),this._addClass(t,"ui-accordion-header-icon","ui-icon "+e.header),t.prependTo(this.headers),t=this.active.children(".ui-accordion-header-icon"),this._removeClass(t,e.header)._addClass(t,null,e.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"===t?this._activate(e):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e)&&this._createIcons())},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=V.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(V(t.target).attr("tabIndex",-1),V(n).attr("tabIndex",0),V(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===V.ui.keyCode.UP&&t.ctrlKey&&V(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=V()):!1===t.active?this._activate(0):this.active.length&&!V.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=V()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=V(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=V(this).outerHeight(!0)}),this.headers.next().each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=V(this).is(":visible");t||V(this).show(),i=Math.max(i,V(this).css("height","").height()),t||V(this).hide()}).height(i))},_activate:function(t){t=this._findActive(t)[0];t!==this.active[0]&&(t=t||this.active[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):V()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():s.next(),r=i.next(),r={oldHeader:i,oldPanel:r,newHeader:o?V():s,newPanel:a};t.preventDefault(),n&&!e.collapsible||!1===this._trigger("beforeActivate",t,r)||(e.active=!o&&this.headers.index(s),this.active=n?V():s,this._toggle(r),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),e.icons&&(a=i.children(".ui-accordion-header-icon"),this._removeClass(a,null,e.icons.activeHeader)._addClass(a,null,e.icons.header)),n)||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),e.icons&&(t=s.children(".ui-accordion-header-icon"),this._removeClass(t,null,e.icons.header)._addClass(t,null,e.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active"))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(V(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){function s(){o._toggleComplete(e)}var n,o=this,a=0,r=t.css("box-sizing"),l=t.length&&(!i.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=V(t.target),i=V(this.document[0].activeElement);!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active)&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){V.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=V(t.target).closest(".ui-menu-item"),i=V(t.currentTarget),e[0]!==i[0])||i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=V(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case V.ui.keyCode.PAGE_UP:this.previousPage(t);break;case V.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case V.ui.keyCode.HOME:this._move("first","first",t);break;case V.ui.keyCode.END:this._move("last","last",t);break;case V.ui.keyCode.UP:this.previous(t);break;case V.ui.keyCode.DOWN:this.next(t);break;case V.ui.keyCode.LEFT:this.collapse(t);break;case V.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case V.ui.keyCode.ENTER:case V.ui.keyCode.SPACE:this._activate(t);break;case V.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),t=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=V(this),e=t.prev(),i=V("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(t,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=V(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),e=(i=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(i,"ui-menu-item")._addClass(e,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!V.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(e=parseFloat(V.css(this.activeMenu[0],"borderTopWidth"))||0,i=parseFloat(V.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-e-i,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&"true"===this.element.prop("contentEditable"),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)i=!1,this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault();else if(!s){var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){n?(n=!1,t.preventDefault()):this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=V("
    ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent)&&/^mouse/.test(t.originalEvent.type)?(this.menu.blur(),this.document.one("mousemove",function(){V(t.target).trigger(t.originalEvent)})):(s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(V("
    ").text(i))},100)))},menuselect:function(t,e){var e=e.item.data("ui-autocomplete-item"),i=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.trigger("focus"),this.previous=i),!1!==this._trigger("select",t,{item:e})&&this._value(e.value),this.term=this._value(),this.close(t),this.selectedItem=e}}),this.liveRegion=V("
    ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||V.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=(t=(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))&&t[0]?t:this.element.closest(".ui-front, dialog")).length?t:this.document[0].body},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(V.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=V.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(V("
    ").text(e.label)).appendTo(t)},_move:function(t,e){this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur()):this.menu[t](e):this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())}}),V.extend(V.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(V.ui.autocomplete.escapeRegex(e),"i");return V.grep(t,function(t){return i.test(t.label||t.value||t)})}}),V.widget("ui.autocomplete",V.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1").text(e))},100))}}),V.ui.autocomplete,/ui-corner-([a-z]){2,6}/g);V.widget("ui.controlgroup",{version:"1.14.1",defaultElement:"
    ",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var o=this,a=[];V.each(this.options.items,function(s,t){var e,n={};t&&("controlgroupLabel"===s?((e=o.element.find(t)).each(function(){var t=V(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("")}),o._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),a=a.concat(e.get())):V.fn[s]&&(n=o["_"+s+"Options"]?o["_"+s+"Options"]("middle"):{classes:{}},o.element.find(t).each(function(){var t=V(this),e=t[s]("instance"),i=V.widget.extend({},n);"button"===s&&t.parent(".ui-spinner").length||((e=e||t[s]()[s]("instance"))&&(i.classes=o._resolveClassesValues(i.classes,e)),t[s](i),i=t[s]("widget"),V.data(i[0],"ui-controlgroup-data",e||t[s]("instance")),a.push(i[0]))})))}),this.childWidgets=V(V.uniqueSort(a)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=V(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){t=this._buildSimpleOptions(t,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(i,s){var n={};return V.each(i,function(t){var e=s.options.classes[t]||"",e=String.prototype.trim.call(e.replace(st,""));n[t]=(e+" "+i[t]).replace(/\s+/g," ")}),n},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?this._callChildMethod(e?"disable":"enable"):this.refresh()},refresh:function(){var n,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),n=this.childWidgets,(n=this.options.onlyVisible?n.filter(":visible"):n).length&&(V.each(["first","last"],function(t,e){var i,s=n[e]().data("ui-controlgroup-data");s&&o["_"+s.widgetName+"Options"]?((i=o["_"+s.widgetName+"Options"](1===n.length?"only":e)).classes=o._resolveClassesValues(i.classes,s),s.element[s.widgetName](i)):o._updateCornerClass(n[e](),e)}),this._callChildMethod("refresh"))}}),V.widget("ui.checkboxradio",[V.ui.formResetMixin,{version:"1.14.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e=this._super()||{};return this._readType(),t=this.element.labels(),this.label=V(t[t.length-1]),this.label.length||V.error("No label found for checkboxradio widget"),this.originalLabel="",(t=this.label.contents().not(this.element[0])).length&&(this.originalLabel+=t.clone().wrapAll("
    ").parent().html()),this.originalLabel&&(e.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(e.disabled=t),e},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||V.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e="input[name='"+CSS.escape(t)+"']";return t?(this.form.length?V(this.form[0].elements).filter(e):V(e).filter(function(){return 0===V(V(this).prop("form")).length})).not(this.element):V([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=V(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){"label"===t&&!e||(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e):this.refresh())},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=V(""),this.iconSpace=V(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),(t=this.iconSpace?t.not(this.iconSpace[0]):t).remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),V.ui.checkboxradio,V.widget("ui.button",{version:"1.14.1",defaultElement:"
    "+(0
    ":""):"")}h+=d}return h+=T,t._keyEvent=!1,h},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var l,h,c,u,d,p,f=this._get(t,"changeMonth"),g=this._get(t,"changeYear"),m=this._get(t,"showMonthAfterYear"),_=this._get(t,"selectMonthLabel"),v=this._get(t,"selectYearLabel"),b="
    ",y="";if(o||!f)y+=""+a[e]+"";else{for(l=s&&s.getFullYear()===i,h=n&&n.getFullYear()===i,y+=""}if(m||(b+=y+(!o&&f&&g?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!g)b+=""+i+"";else{for(a=this._get(t,"yearRange").split(":"),u=(new Date).getFullYear(),d=(_=function(t){t=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?u+parseInt(t,10):parseInt(t,10);return isNaN(t)?u:t})(a[0]),p=Math.max(d,_(a[1]||"")),d=s?Math.max(d,s.getFullYear()):d,p=n?Math.min(p,n.getFullYear()):p,t.yearshtml+="",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),m&&(b+=(!o&&f&&g?"":" ")+y),b+="
    "},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),e=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),s=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,e)));t.selectedDay=s.getDate(),t.drawMonth=t.selectedMonth=s.getMonth(),t.drawYear=t.selectedYear=s.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),t=this._getMinMaxDate(t,"max"),i=i&&e=s.getTime())&&(!n||e.getTime()<=n.getTime())&&(!o||e.getFullYear()>=o)&&(!a||e.getFullYear()<=a)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:"string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);s=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),s,this._getFormatConfig(t))}}),V.fn.datepicker=function(t){if(!this.length)return this;V.datepicker.initialized||(V(document).on("mousedown",V.datepicker._checkExternalClick),V.datepicker.initialized=!0),0===V("#"+V.datepicker._mainDivId).length&&V("body").append(V.datepicker.dpDiv);var e=Array.prototype.slice.call(arguments,1);return"string"==typeof t&&("isDisabled"===t||"getDate"===t||"widget"===t)||"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this[0]].concat(e)):this.each(function(){"string"==typeof t?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this].concat(e)):V.datepicker._attachDatepicker(this,t)})},V.datepicker=new nt,V.datepicker.initialized=!1,V.datepicker.uuid=(new Date).getTime(),V.datepicker.version="1.14.1";var z=!1;V(document).on("mouseup",function(){z=!1}),V.widget("ui.mouse",{version:"1.14.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===V.data(t.target,e.widgetName+".preventClickEvent"))return V.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){var e,i,s;if(!z)return this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),i=1===(this._mouseDownEvent=t).which,s="string"==typeof(e=this).options.cancel&&V(t.target).closest(this.options.cancel).length,i&&!s&&this._mouseCapture(t)&&(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?t.preventDefault():(!0===V.data(t.target,this.widgetName+".preventClickEvent")&&V.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),z=!0)),!0},_mouseMove:function(t){if(this._mouseMoved&&!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t);return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&V.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,z=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),V.ui.plugin={add:function(t,e,i){var s,n=V.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=this.document[0].activeElement;V(t.target).closest(e).length||V(e).trigger("blur")},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),V.ui.ddmanager&&(V.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0i[2]&&(o=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3])&&(a=i[3]+this.offset.click.top),s.grid&&(e=s.grid[1]?this.originalPageY+Math.round((a-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,a=!i||e-this.offset.click.top>=i[1]||e-this.offset.click.top>i[3]?e:e-this.offset.click.top>=i[1]?e-s.grid[1]:e+s.grid[1],t=s.grid[0]?this.originalPageX+Math.round((o-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,o=!i||t-this.offset.click.left>=i[0]||t-this.offset.click.left>i[2]?t:t-this.offset.click.left>=i[0]?t-s.grid[0]:t+s.grid[0]),"y"===s.axis&&(o=this.originalPageX),"x"===s.axis)?this.originalPageY:a)-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:n?0:this.offset.scroll.top),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:n?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),V.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),V.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),V.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=V.extend({},t,{item:i.element});i.sortables=[],V(i.options.connectToSortable).each(function(){var t=V(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=V.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,V.each(i.sortables,function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,n){V.each(n.sortables,function(){var t=!1,e=this;e.positionAbs=n.positionAbs,e.helperProportions=n.helperProportions,e.offset.click=n.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,V.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,t=this!==e&&this._intersectsWith(this.containerCache)&&V.contains(e.element[0],this.element[0])?!1:t})),t?(e.isOver||(e.isOver=1,n._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=n.offset.click.top,e.offset.click.left=n.offset.click.left,e.offset.parent.left-=n.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=n.offset.parent.top-e.offset.parent.top,n._trigger("toSortable",i),n.dropped=e.element,V.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,e.fromOutside=n),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(n._parent),n._refreshOffsets(i),s.position=n._generatePosition(i,!0),n._trigger("fromSortable",i),n.dropped=!1,V.each(n.sortables,function(){this.refreshPositions()}))})}}),V.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=V("body"),i=i.options;s.css("cursor")&&(i._cursor=s.css("cursor")),s.css("cursor",i.cursor)},stop:function(t,e,i){i=i.options;i._cursor&&V("body").css("cursor",i._cursor)}}),V.ui.plugin.add("draggable","opacity",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("opacity")&&(i._opacity=e.css("opacity")),e.css("opacity",i.opacity)},stop:function(t,e,i){i=i.options;i._opacity&&V(e.helper).css("opacity",i._opacity)}}),V.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,n=!1,o=i.scrollParentNotHidden[0],a=i.document[0];o!==a&&"HTML"!==o.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+o.offsetHeight-t.pageY
    ").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this._proportionallyResize()),this._setupHandles(),e.autoHide&&V(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){V(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,a=this;if(this.handles=o.handles||(V(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=V(),this._addedHandles=V(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=V(this.handles[e]),this._on(this.handles[e],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=V(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?s.outerHeight():s.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=V(this.handles[e])[0])!==t.target&&!V.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s,n=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),n.containment&&(e+=V(n.containment).scrollLeft()||0,i+=V(n.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this._helper||(s=this._calculateAdjustedElementDimensions(o)),this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:s.width,height:s.height},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:s.width,height:s.height},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof n.aspectRatio?n.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=V(".ui-resizable-"+this.axis).css("cursor"),V("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(i=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),V.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(i=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,e=e?0:o.sizeDiff.width,e={width:o.helper.width()-e,height:o.helper.height()-i},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(V.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper)&&!n.animate&&this._proportionallyResize(),V("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.helper.css(t),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px",this.helper.width(t.width)),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px",this.helper.height(t.height)),t},_updateVirtualBoundaries:function(t){var e,i,s,n=this.options,n={minWidth:this._isNumber(n.minWidth)?n.minWidth:0,maxWidth:this._isNumber(n.maxWidth)?n.maxWidth:1/0,minHeight:this._isNumber(n.minHeight)?n.minHeight:0,maxHeight:this._isNumber(n.maxHeight)?n.maxHeight:1/0};(this._aspectRatio||t)&&(t=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,e=n.maxHeight*this.aspectRatio,s=n.maxWidth/this.aspectRatio,n.minWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,h=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&h&&(t.left=r-e.minWidth),s&&h&&(t.left=r-e.maxWidth),a&&i&&(t.top=l-e.minHeight),n&&i&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_calculateAdjustedElementDimensions:function(t){var e,i,s=t.get(0);return"content-box"!==t.css("box-sizing")||!this._hasScroll(s)&&!this._hasScroll(s,"left")?{height:parseFloat(t.css("height")),width:parseFloat(t.css("width"))}:(e=parseFloat(s.style.width),s=parseFloat(s.style.height),i=this._getPaddingPlusBorderDimensions(t),e=isNaN(e)?this._getElementTheoreticalSize(t,i,"width"):e,{height:isNaN(s)?this._getElementTheoreticalSize(t,i,"height"):s,width:e})},_getElementTheoreticalSize:function(t,e,i){return Math.max(0,Math.ceil(t.get(0)["offset"+i[0].toUpperCase()+i.slice(1)]-e[i]-.5))||0},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e
    ").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){V.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),V.ui.plugin.add("resizable","animate",{stop:function(e){var i=V(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,n=n?0:i.sizeDiff.width,n={width:i.size.width-n,height:i.size.height-o},o=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,a=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(V.extend(n,a&&o?{top:a,left:o}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&V(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),V.ui.plugin.add("resizable","containment",{start:function(){var i,s,t,e,n=V(this).resizable("instance"),o=n.options,a=n.element,o=o.containment,a=o instanceof V?o.get(0):/parent/.test(o)?a.parent().get(0):o;a&&(n.containerElement=V(a),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:V(document),left:0,top:0,width:V(document).width(),height:V(document).height()||document.body.parentNode.scrollHeight}):(i=V(a),s=[],V(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},o=n.containerOffset,e=n.containerSize.height,t=n.containerSize.width,t=n._hasScroll(a,"left")?a.scrollWidth:t,e=n._hasScroll(a)?a.scrollHeight:e,n.parentData={element:a,left:o.left,top:o.top,width:t,height:e}))},resize:function(t){var e=V(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,t=e._aspectRatio||t.shiftKey,o={top:0,left:0},a=e.containerElement,r=!0;a[0]!==document&&/static/.test(a.css("position"))&&(o=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-o.left),t&&(e.size.height=e.size.width/e.aspectRatio,r=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),t&&(e.size.width=e.size.height*e.aspectRatio,r=!1),e.position.top=e._helper?s.top:0),a=e.containerElement.get(0)===e.element.parent().get(0),i=/relative|absolute/.test(e.containerElement.css("position")),a&&i?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-o.left:e.offset.left-s.left)),a=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-o.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,t)&&(e.size.height=e.size.width/e.aspectRatio,r=!1),a+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-a,t)&&(e.size.width=e.size.height*e.aspectRatio,r=!1),r||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=V(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=V(t.helper),a=o.offset(),r=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o})}}),V.ui.plugin.add("resizable","alsoResize",{start:function(){var i=V(this).resizable("instance"),t=i.options;V(t.alsoResize).each(function(){var t=V(this),e=i._calculateAdjustedElementDimensions(t);t.data("ui-resizable-alsoresize",{width:e.width,height:e.height,left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=V(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,a={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};V(s.alsoResize).each(function(){var t=V(this),s=V(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];V.each(e,function(t,e){var i=(s[e]||0)+(a[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){V(this).removeData("ui-resizable-alsoresize")}}),V.ui.plugin.add("resizable","ghost",{start:function(){var t=V(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!0===V.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=V(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=V(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),V.ui.plugin.add("resizable","grid",{resize:function(){var t,e=V(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,l=r[0]||1,h=r[1]||1,c=Math.round((s.width-n.width)/l)*l,s=Math.round((s.height-n.height)/h)*h,u=n.width+c,d=n.height+s,p=i.maxWidth&&i.maxWidthu,m=i.minHeight&&i.minHeight>d;i.grid=r,g&&(u+=l),m&&(d+=h),p&&(u-=l),f&&(d-=h),/^(se|s|e)$/.test(a)?(e.size.width=u,e.size.height=d):/^(ne)$/.test(a)?(e.size.width=u,e.size.height=d,e.position.top=o.top-s):/^(sw)$/.test(a)?(e.size.width=u,e.size.height=d,e.position.left=o.left-c):((d-h<=0||u-l<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",s+1),i=!0),i&&!e&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=V(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;(t=(t=(t=(t=(t=t||this.element.find("[autofocus]")).length?t:this.element.find(":tabbable")).length?t:this.uiDialogButtonPane.find(":tabbable")).length?t:this.uiDialogTitlebarClose.filter(":tabbable")).length?t:this.uiDialog).eq(0).trigger("focus")},_restoreTabbableFocus:function(){var t=this.document[0].activeElement;this.uiDialog[0]===t||V.contains(this.uiDialog[0],t)||this._focusTabbable()},_keepFocus:function(t){t.preventDefault(),this._restoreTabbableFocus()},_createWrapper:function(){this.uiDialog=V("
    ").hide().attr({tabIndex:-1,role:"dialog","aria-modal":this.options.modal?"true":null}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){var e,i,s;this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===V.ui.keyCode.ESCAPE?(t.preventDefault(),this.close(t)):t.keyCode!==V.ui.keyCode.TAB||t.isDefaultPrevented()||(e=this.uiDialog.find(":tabbable"),i=e.first(),s=e.last(),t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){s.trigger("focus")}),t.preventDefault()):(this._delay(function(){i.trigger("focus")}),t.preventDefault()))},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){this.uiDialogTitlebar=V("
    "),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){V(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=V("").button({label:V("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}});var t=Number.isInteger(this.options.uiDialogTitleHeadingLevel)&&0").uniqueId().prependTo(this.uiDialogTitlebar);this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=V("
    "),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=V("
    ").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var s=this,t=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),V.isEmptyObject(t)||Array.isArray(t)&&!t.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(V.each(t,function(t,e){var i;e=V.extend({type:"button"},e="function"==typeof e?{click:e,text:t}:e),i=e.click,t={icon:e.icon,iconPosition:e.iconPosition,showLabel:e.showLabel,icons:e.icons,text:e.text},delete e.click,delete e.icon,delete e.iconPosition,delete e.showLabel,delete e.icons,"boolean"==typeof e.text&&delete e.text,V("",e).button(t).appendTo(s.uiButtonSet).on("click",function(){i.apply(s.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var n=this,o=this.options;function a(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(t,e){n._addClass(V(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",t,a(e))},drag:function(t,e){n._trigger("drag",t,a(e))},stop:function(t,e){var i=e.offset.left-n.document.scrollLeft(),s=e.offset.top-n.document.scrollTop();o.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=s?"+":"")+s,of:n.window},n._removeClass(V(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",t,a(e))}})},_makeResizable:function(){var n=this,o=this.options,t=o.resizable,e=this.uiDialog.css("position"),t="string"==typeof t?t:"n,e,s,w,se,sw,ne,nw";function a(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:o.maxWidth,maxHeight:o.maxHeight,minWidth:o.minWidth,minHeight:this._minHeight(),handles:t,start:function(t,e){n._addClass(V(this),"ui-dialog-resizing"),n._blockFrames(),n._trigger("resizeStart",t,a(e))},resize:function(t,e){n._trigger("resize",t,a(e))},stop:function(t,e){var i=n.uiDialog.offset(),s=i.left-n.document.scrollLeft(),i=i.top-n.document.scrollTop();o.height=n.uiDialog.height(),o.width=n.uiDialog.width(),o.position={my:"left top",at:"left"+(0<=s?"+":"")+s+" top"+(0<=i?"+":"")+i,of:n.window},n._removeClass(V(this),"ui-dialog-resizing"),n._unblockFrames(),n._trigger("resizeStop",t,a(e))}}).css("position",e)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=V(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),e=V.inArray(this,t);-1!==e&&t.splice(e,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||this.document.data("ui-dialog-instances",t=[]),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};V.each(t,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,e){var i,s=this.uiDialog;"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:V("").text(""+this.options.closeText).html()}),"draggable"===t&&((i=s.is(":data(ui-draggable)"))&&!e&&s.draggable("destroy"),!i)&&e&&this._makeDraggable(),"position"===t&&this._position(),"resizable"===t&&((i=s.is(":data(ui-resizable)"))&&!e&&s.resizable("destroy"),i&&"string"==typeof e&&s.resizable("option","handles",e),i||!1===e||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")),"modal"===t)&&s.attr("aria-modal",e?"true":null)},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=V(this);return V("
    ").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!V(t.target).closest(".ui-dialog").length||!!V(t.target).closest(".ui-datepicker").length},_createOverlay:function(){var i;this.options.modal&&(i=!0,this._delay(function(){i=!1}),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(t){var e;i||(e=this._trackingInstances()[0])._allowInteraction(t)||(t.preventDefault(),e._focusTabbable())}.bind(this)),this.overlay=V("
    ").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1))},_destroyOverlay:function(){var t;this.options.modal&&this.overlay&&((t=this.document.data("ui-dialog-overlays")-1)?this.document.data("ui-dialog-overlays",t):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null)}}),!0===V.uiBackCompat&&V.widget("ui.dialog",V.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),V.ui.dialog;function rt(t,e,i){return e<=t&&t").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,e=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(e.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=V("
    ").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),V.widget("ui.selectable",V.ui.mouse,{version:"1.14.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var i=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){i.elementPos=V(i.element[0]).offset(),i.selectees=V(i.options.filter,i.element[0]),i._addClass(i.selectees,"ui-selectee"),i.selectees.each(function(){var t=V(this),e=t.offset(),e={left:e.left-i.elementPos.left,top:e.top-i.elementPos.top};V.data(this,"selectable-item",{element:this,$element:t,left:e.left,top:e.top,right:e.left+t.outerWidth(),bottom:e.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=V("
    "),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(i){var s=this,t=this.options;this.opos=[i.pageX,i.pageY],this.elementPos=V(this.element[0]).offset(),this.options.disabled||(this.selectees=V(t.filter,this.element[0]),this._trigger("start",i),V(t.appendTo).append(this.helper),this.helper.css({left:i.pageX,top:i.pageY,width:0,height:0}),t.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var t=V.data(this,"selectable-item");t.startselected=!0,i.metaKey||i.ctrlKey||(s._removeClass(t.$element,"ui-selected"),t.selected=!1,s._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,s._trigger("unselecting",i,{unselecting:t.element}))}),V(i.target).parents().addBack().each(function(){var t,e=V.data(this,"selectable-item");if(e)return t=!i.metaKey&&!i.ctrlKey||!e.$element.hasClass("ui-selected"),s._removeClass(e.$element,t?"ui-unselecting":"ui-selected")._addClass(e.$element,t?"ui-selecting":"ui-unselecting"),e.unselecting=!t,e.selecting=t,(e.selected=t)?s._trigger("selecting",i,{selecting:e.element}):s._trigger("unselecting",i,{unselecting:e.element}),!1}))},_mouseDrag:function(s){var t,n,o,a,r,l,h;if(this.dragged=!0,!this.options.disabled)return o=(n=this).options,a=this.opos[0],r=this.opos[1],(l=s.pageX)",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=V()},_drawButton:function(){var t,e=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.trigger("focus"),t.preventDefault()}}),this.element.hide(),this.button=V("",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=V("").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){e._rendered||e._refreshMenu()})},_drawMenu:function(){var i=this;this.menu=V("
      ",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=V("
      ").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,e){t.preventDefault(),i._select(e.item.data("ui-selectmenu-item"),t)},focus:function(t,e){e=e.item.data("ui-selectmenu-item");null!=i.focusIndex&&e.index!==i.focusIndex&&(i._trigger("focus",t,{item:e}),i.isOpen||i._select(e,t)),i.focusIndex=e.index,i.button.attr("aria-activedescendant",i.menuItems.eq(e.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t=this.element.find("option");this.menu.empty(),this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,t.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(V.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(t){var e=V("");return this._setText(e,t.label),this._addClass(e,"ui-selectmenu-text"),e},_renderMenu:function(s,t){var n=this,o="";V.each(t,function(t,e){var i;e.optgroup!==o&&(i=V("
    • ",{text:e.optgroup}),n._addClass(i,"ui-selectmenu-optgroup","ui-menu-divider"+(e.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),i.appendTo(s),o=e.optgroup),n._renderItemData(s,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(t,e){var i=V("
    • "),s=V("
      ",{title:e.element.attr("title")});return e.disabled&&this._addClass(i,null,"ui-state-disabled"),e.hidden?i.prop("hidden",!0):this._setText(s,e.label),i.append(s).appendTo(t)},_setText:function(t,e){e?t.text(e):t.html(" ")},_move:function(t,e){var i,s=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),s+=":not(.ui-state-disabled)"),(i="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](s).eq(-1):i[t+"All"](s).eq(0)).length&&this.menuInstance.focus(e,i)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&((t=window.getSelection()).removeAllRanges(),t.addRange(this.range))},_documentClick:{mousedown:function(t){!this.isOpen||V(t.target).closest(".ui-selectmenu-menu, #"+CSS.escape(this.ids.button)).length||this.close(t)}},_buttonEvents:{mousedown:function(){var t=window.getSelection();t.rangeCount&&(this.range=t.getRangeAt(0))},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(t){var e=!0;switch(t.keyCode){case V.ui.keyCode.TAB:case V.ui.keyCode.ESCAPE:this.close(t),e=!1;break;case V.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case V.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case V.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case V.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case V.ui.keyCode.LEFT:this._move("prev",t);break;case V.ui.keyCode.RIGHT:this._move("next",t);break;case V.ui.keyCode.HOME:case V.ui.keyCode.PAGE_UP:this._move("first",t);break;case V.ui.keyCode.END:case V.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),e=!1}e&&t.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){t=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(t,e){var i;"icons"===t&&(i=this.button.find("span.ui-icon"),this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)),this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var t=this.options.appendTo;return t=(t=(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))&&t[0]?t:this.element.closest(".ui-front, dialog")).length?t:this.document[0].body},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1===t?this.button.css("width",""):(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t))},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(t){var i=this,s=[];t.each(function(t,e){s.push(i._parseOption(V(e),t))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),hidden:i.prop("hidden")||t.prop("hidden"),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),V.widget("ui.slider",V.ui.mouse,{version:"1.14.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,e=this.options,i=this.element.find(".ui-slider-handle"),s=[],n=e.values&&e.values.length||1;for(i.length>n&&(i.slice(n).remove(),i=i.slice(0,n)),t=i.length;t");this.handles=i.add(V(s.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(t){V(this).data("ui-slider-handle-index",t).attr("tabIndex",0)})},_createRange:function(){var t=this.options;t.range?(!0===t.range&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:Array.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=V("
      ").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==t.range&&"max"!==t.range||this._addClass(this.range,"ui-slider-range-"+t.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,o,e,a,r=this,l=this.options;return!l.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e),s=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var e=Math.abs(i-r.values(t));(e=this._valueMax()?this._valueMax():(e=0=e&&(i+=0this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var t=t.toString(),e=t.indexOf(".");return-1===e?0:t.length-e-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,t,s,n,o=this.options.range,a=this.options,r=this,l=!this._animateOff&&a.animate,h={};this._hasMultipleValues()?this.handles.each(function(t){i=(r.values(t)-r._valueMin())/(r._valueMax()-r._valueMin())*100,h["horizontal"===r.orientation?"left":"bottom"]=i+"%",V(this).stop(1,1)[l?"animate":"css"](h,a.animate),!0===r.options.range&&("horizontal"===r.orientation?(0===t&&r.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:a.animate})):(0===t&&r.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:a.animate}))),e=i}):(t=this.value(),s=this._valueMin(),n=this._valueMax(),i=n!==s?(t-s)/(n-s)*100:0,h["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](h,a.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},a.animate),"max"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},a.animate),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},a.animate),"max"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},a.animate))},_handleEvents:{keydown:function(t){var e,i,s,n=V(t.target).data("ui-slider-handle-index");switch(t.keyCode){case V.ui.keyCode.HOME:case V.ui.keyCode.END:case V.ui.keyCode.PAGE_UP:case V.ui.keyCode.PAGE_DOWN:case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(t.preventDefault(),this._keySliding||(this._keySliding=!0,this._addClass(V(t.target),null,"ui-state-active"),!1!==this._start(t,n)))break;return}switch(s=this.options.step,e=i=this._hasMultipleValues()?this.values(n):this.value(),t.keyCode){case V.ui.keyCode.HOME:i=this._valueMin();break;case V.ui.keyCode.END:i=this._valueMax();break;case V.ui.keyCode.PAGE_UP:i=this._trimAlignValue(e+(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(e-(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:if(e===this._valueMax())return;i=this._trimAlignValue(e+s);break;case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(e===this._valueMin())return;i=this._trimAlignValue(e-s)}this._slide(t,n,i)},keyup:function(t){var e=V(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,e),this._change(t,e),this._removeClass(V(t.target),null,"ui-state-active"))}}}),V.widget("ui.sortable",V.ui.mouse,{version:"1.14.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t*{ cursor: "+o.cursor+" !important; }").appendTo(n)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return V.ui.ddmanager&&(V.ui.ddmanager.current=this),V.ui.ddmanager&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(t),!0},_scroll:function(t){var e=this.options,i=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageYt[this.floating?"width":"height"]?h&&c:o",i.document[0]);return i._addClass(t,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(t,"ui-sortable-helper"),"tbody"===n?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),V("",i.document[0]).appendTo(t)):"tr"===n?i._createTrPlaceholder(i.currentItem,t):"img"===n&&t.attr("src",i.currentItem.attr("src")),s||t.css("visibility","hidden"),t},update:function(t,e){s&&!o.forcePlaceholderSize||(e.height()&&(!o.forcePlaceholderSize||"tbody"!==n&&"tr"!==n)||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width())||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10))}}),i.placeholder=V(o.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),o.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){V(" ",i.document[0]).attr("colspan",V(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,n,o,a,r,l,h,c=null,u=null,d=this.containers.length-1;0<=d;d--)V.contains(this.currentItem[0],this.containers[d].element[0])||(this._intersectsWith(this.containers[d].containerCache)?c&&V.contains(this.containers[d].element[0],c.element[0])||(c=this.containers[d],u=d):this.containers[d].containerCache.over&&(this.containers[d]._trigger("out",t,this._uiHash(this)),this.containers[d].containerCache.over=0));if(c)if(1===this.containers.length)this.containers[u].containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1);else{for(i=1e4,s=null,n=(l=c.floating||this._isFloating(this.currentItem))?"left":"top",o=l?"width":"height",h=l?"pageX":"pageY",e=this.items.length-1;0<=e;e--)V.contains(this.containers[u].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(a=this.items[e].item.offset()[n],r=!1,t[h]-a>this.items[e][o]/2&&(r=!0),Math.abs(t[h]-a)this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3])&&(s=this.containment[3]+this.offset.click.top),e.grid)&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0]),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this===this.currentContainer||e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer))),i=this.containers.length-1;0<=i;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this._storedStylesheet&&(this._storedStylesheet.remove(),this._storedStylesheet=null),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var s=this._super(),n=this.element;return V.each(["min","max","step"],function(t,e){var i=n.attr(e);null!=i&&i.length&&(s[e]=i)}),s},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t)},mousewheel:function(t,e){var i=this.document[0].activeElement;if(this.element[0]===i&&e){if(!this.spinning&&!this._start(t))return!1;this._spin((0").parent().append("")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0e.max?e.max:null!==e.min&&t"},_buttonHtml:function(){return""}});var A;V.ui.spinner,V.widget("ui.tabs",{version:"1.14.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(A=/#.*$/,function(t){var e=t.href.replace(A,""),i=location.href.replace(A,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1 li",function(t){V(this).is(".ui-state-disabled")&&t.preventDefault()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return V("a",this)[0]}).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=V(),this.anchors.each(function(t,e){var i,s,n=V(e).uniqueId().attr("id"),o=V(e).closest("li"),a=o.attr("aria-controls");r._isLocal(e)?(s=decodeURIComponent(e.hash).substring(1),i=r.element.find("#"+CSS.escape(s))):(s=o.attr("aria-controls")||V({}).uniqueId()[0].id,(i=r.element.find("#"+s)).length||(i=r._createPanel(s)).insertAfter(r.panels[t-1]||r.tablist),i.attr("aria-live","polite")),i.length&&(r.panels=r.panels.add(i)),a&&o.data("ui-tabs-aria-controls",a),o.attr({"aria-controls":s,"aria-labelledby":n}),i.attr("aria-labelledby",n)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return V("
      ").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i;for(Array.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),i=0;e=this.tabs[i];i++)e=V(e),!0===t||-1!==V.inArray(i,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=V(this).outerHeight(!0)}),this.panels.each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,V(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget).closest("li"),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():this._getPanelForTab(s),r=i.length?this._getPanelForTab(i):V(),i={oldTab:i,oldPanel:r,newTab:o?V():s,newPanel:a};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||n&&!e.collapsible||!1===this._trigger("beforeActivate",t,i)||(e.active=!o&&this.tabs.index(s),this.active=n?V():s,this.xhr&&this.xhr.abort(),r.length||a.length||V.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,i))},_toggle:function(t,e){var i=this,s=e.newPanel,n=e.oldPanel;function o(){i.running=!1,i._trigger("activate",t,e)}function a(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&i.options.show?i._show(s,i.options.show,o):(s.show(),o())}this.running=!0,n.length&&this.options.hide?this._hide(n,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n.hide(),a()),n.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&n.length?e.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter(function(){return 0===V(this).attr("tabIndex")}).attr("tabIndex",-1),s.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var t=this._findActive(t);t[0]!==this.active[0]&&(t=(t=t.length?t:this.active).find(".ui-tabs-anchor")[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return!1===t?V():this.tabs.eq(t)},_getIndex:function(t){return t="string"==typeof t?this.anchors.index(this.anchors.filter("[href$='"+CSS.escape(t)+"']")):t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){V.data(this,"ui-tabs-destroy")?V(this).remove():V(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=V(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(t=void 0!==i&&(i=this._getIndex(i),Array.isArray(t)?V.map(t,function(t){return t!==i?t:null}):V.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==V.inArray(t,e))return;e=Array.isArray(e)?V.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,s){t=this._getIndex(t);function n(t,e){"abort"===e&&o.panels.stop(!1,!0),o._removeClass(i,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===o.xhr&&delete o.xhr}var o=this,i=this.tabs.eq(t),t=i.find(".ui-tabs-anchor"),a=this._getPanelForTab(i),r={tab:i,panel:a};this._isLocal(t[0])||(this.xhr=V.ajax(this._ajaxSettings(t,s,r)),"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,i){a.html(t),o._trigger("load",s,r),n(i,e)}).fail(function(t,e){n(t,e)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href"),beforeSend:function(t,e){return n._trigger("beforeLoad",i,V.extend({jqXHR:t,ajaxSettings:e},s))}}},_getPanelForTab:function(t){t=V(t).attr("aria-controls");return this.element.find("#"+CSS.escape(t))}}),!0===V.uiBackCompat&&V.widget("ui.tabs",V.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),V.ui.tabs,V.widget("ui.tooltip",{version:"1.14.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=V(this).attr("title");return V("").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",String.prototype.trim.call(i.join(" ")))},_removeDescribedBy:function(t){var e=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),e=V.inArray(e,i);-1!==e&&i.splice(e,1),t.removeData("ui-tooltip-id"),(i=String.prototype.trim.call(i.join(" ")))?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=V("
      ").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=V([])},_setOption:function(t,e){var i=this;this._super(t,e),"content"===t&&V.each(this.tooltips,function(t,e){i._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur");i.target=i.currentTarget=e.element[0],s.close(i,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=V(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var t=V(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=V([])},open:function(t){var i=this,e=V(t?t.target:this.element).closest(this.options.items);e.length&&!e.data("ui-tooltip-id")&&(e.attr("title")&&e.data("ui-tooltip-title",e.attr("title")),e.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&e.parents().each(function(){var t,e=V(this);e.data("ui-tooltip-open")&&((t=V.Event("blur")).target=t.currentTarget=this,i.close(t,!0)),e.attr("title")&&(e.uniqueId(),i.parents[this.id]={element:this,title:e.attr("title")},e.attr("title",""))}),this._registerCloseHandlers(t,e),this._updateContent(e,t))},_updateContent:function(e,i){var t=this.options.content,s=this,n=i?i.type:null;if("string"==typeof t||t.nodeType||t.jquery)return this._open(i,e,t);(t=t.call(e[0],function(t){e.data("ui-tooltip-open")&&(i&&(i.type=n),s._open(i,e,t))}))&&this._open(i,e,t)},_open:function(t,e,i){var s,n,o,a=V.extend({},this.options.position);function r(t){a.of=t,s.is(":hidden")||s.position(a)}i&&((o=this._find(e))?o.tooltip.find(".ui-tooltip-content").html(i):(e.is("[title]")&&(t&&"mouseover"===t.type?e.attr("title",""):e.removeAttr("title")),o=this._tooltip(e),s=o.tooltip,this._addDescribedBy(e,s.attr("id")),s.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(o=V("
      ").html(s.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),o.removeAttr("id").find("[id]").removeAttr("id"),o.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:r}),r(t)):s.position(V.extend({of:e},this.options.position)),s.hide(),this._show(s,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(n=this.delayedShow=setInterval(function(){s.is(":visible")&&(r(a.of),clearInterval(n))},13)),this._trigger("open",t,{tooltip:s})))},_registerCloseHandlers:function(t,e){var i={keyup:function(t){t.keyCode===V.ui.keyCode.ESCAPE&&((t=V.Event(t)).currentTarget=e[0],this.close(t,!0))}};e[0]!==this.element[0]&&(i.remove=function(){var t=this._find(e);t&&this._removeTooltip(t.tooltip)}),t&&"mouseover"!==t.type||(i.mouseleave="close"),t&&"focusin"!==t.type||(i.focusout="close"),this._on(!0,e,i)},close:function(t){var e,i=this,s=V(t?t.currentTarget:this.element),n=this._find(s);n?(e=n.tooltip,n.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),n.hiding=!0,e.stop(!0),this._hide(e,this.options.hide,function(){i._removeTooltip(V(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&V.each(this.parents,function(t,e){V(e.element).attr("title",e.title),delete i.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:e}),n.hiding)||(n.closing=!1)):s.removeData("ui-tooltip-open")},_tooltip:function(t){var e=V("
      ").attr("role","tooltip"),i=V("
      ").appendTo(e),s=e.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(e,"ui-tooltip","ui-widget ui-widget-content"),e.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:e}},_find:function(t){t=t.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){t=t.closest(".ui-front, dialog");return t=t.length?t:this.document[0].body},_destroy:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur"),e=e.element;i.target=i.currentTarget=e[0],s.close(i,!0),V("#"+t).remove(),e.data("ui-tooltip-title")&&(e.attr("title")||e.attr("title",e.data("ui-tooltip-title")),e.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!0===V.uiBackCompat&&V.widget("ui.tooltip",V.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),V.ui.tooltip}); diff --git a/eh22.easterhegg.eu/lib/exe/manifest.php b/eh22.easterhegg.eu/lib/exe/manifest.php new file mode 100644 index 0000000..fc5bdc7 --- /dev/null +++ b/eh22.easterhegg.eu/lib/exe/manifest.php @@ -0,0 +1 @@ +{"display":"standalone","scope":"\/","name":"EH22 - Easterhegg 2025","short_name":"EH22 - Easterhegg 2025","description":"","start_url":"\/","background_color":"#FFF","theme_color":"#F6F6F6","icons":[{"src":"https:\/\/eh22.easterhegg.eu\/_media\/wiki:favicon.ico","sizes":"16x16"},{"src":"https:\/\/eh22.easterhegg.eu\/_media\/wiki:logo.svg","sizes":"17x17 512x512","type":"image\/svg+xml"}]} \ No newline at end of file diff --git a/eh22.easterhegg.eu/lib/exe/sprintdoc-de-informal.js b/eh22.easterhegg.eu/lib/exe/sprintdoc-de-informal.js new file mode 100644 index 0000000..3224404 --- /dev/null +++ b/eh22.easterhegg.eu/lib/exe/sprintdoc-de-informal.js @@ -0,0 +1,37588 @@ +var DOKU_BASE = '/'; +var DOKU_TPL = '/lib/tpl/sprintdoc/'; +var DOKU_COOKIE_PARAM = { + "path": "\/", + "secure": true +}; +Object.defineProperty(window, 'DOKU_UHN', { + get: function () { + console.warn('Using DOKU_UHN is deprecated. Please use JSINFO.useHeadingNavigation instead'); + return JSINFO.useHeadingNavigation; + } +}); +Object.defineProperty(window, 'DOKU_UHC', { + get: function () { + console.warn('Using DOKU_UHC is deprecated. Please use JSINFO.useHeadingContent instead'); + return JSINFO.useHeadingContent; + } +}); +LANG = { + "search_toggle_tools": "Suchwerkzeuge umschalten", + "willexpire": "Die Sperre zur Bearbeitung dieser Seite l\u00e4uft in einer Minute ab.\\nUm Bearbeitungskonflikte zu vermeiden, solltest du sie durch einen Klick auf den Vorschau-Knopf verl\u00e4ngern.", + "notsavedyet": "Nicht gespeicherte \u00c4nderungen gehen verloren!", + "searchmedia": "Suche nach Dateien", + "keepopen": "Fenster nach Auswahl nicht schlie\u00dfen", + "hidedetails": "Details ausblenden", + "mediatitle": "Link-Eigenschaften", + "mediadisplay": "Linktyp", + "mediaalign": "Ausrichtung", + "mediasize": "Bildgr\u00f6\u00dfe", + "mediatarget": "Linkziel", + "mediaclose": "Schlie\u00dfen", + "mediainsert": "Einf\u00fcgen", + "mediadisplayimg": "Bild anzeigen", + "mediadisplaylnk": "Nur den Link anzeigen", + "mediasmall": "Bild in kleiner Aufl\u00f6sung", + "mediamedium": "Bild in mittlerer Aufl\u00f6sung", + "medialarge": "Bild in hoher Aufl\u00f6sung", + "mediaoriginal": "Originalaufl\u00f6sung", + "medialnk": "Link zur Detailseite", + "mediadirect": "Direkter Link zum Original", + "medianolnk": "Kein Link", + "medianolink": "Bild nicht verlinken", + "medialeft": "Bild linksb\u00fcndig ausrichten.", + "mediaright": "Bild rechtsb\u00fcndig ausrichten.", + "mediacenter": "Bild horizontal zentriert ausrichten", + "medianoalign": "Bild ohne bestimmte Ausrichtung lassen", + "nosmblinks": "Das Verlinken von Windows-Freigaben funktioniert nur im Microsoft Internet-Explorer.\\nDer Link kann jedoch zum Einf\u00fcgen kopiert werden.", + "linkwiz": "Link-Assistent", + "linkto": "Link zu:", + "del_confirm": "Die ausgew\u00e4hlten Dateien wirklich l\u00f6schen?", + "restore_confirm": "Wirklich diese Version wiederherstellen?", + "media_diff": "Unterschiede anzeigen:", + "media_diff_both": "Nebeneinander", + "media_diff_opacity": "\u00dcberblenden", + "media_diff_portions": "\u00dcbergang", + "media_select": "Dateien ausw\u00e4hlen\u2026", + "media_upload_btn": "Hochladen", + "media_done_btn": "Fertig", + "media_drop": "Dateien hier hinziehen um sie hochzuladen", + "media_cancel": "Entfernen", + "media_overwrt": "Existierende Dateien \u00fcberschreiben", + "data_insecure": "WARNING: It seems your data directory is not properly secured. Please read about Web Access Security in DokuWiki<\/a>.", + "plugins": { + "edittable": { + "toggle_header": "Kopfzeile an\/aus", + "align_left": "Links ausrichten", + "align_center": "Mittig ausrichten", + "align_right": "Rechts ausrichten", + "confirmdeleterow": "Zeile wirklich l\u00f6schen?", + "confirmdeletecol": "Spalte wirklich l\u00f6schen?", + "row_above": "Zeile dar\u00fcber einf\u00fcgen", + "remove_row": "Zeile entfernen", + "row_below": "Zeile darunter einf\u00fcgen", + "col_left": "Spalte links hinzuf\u00fcgen", + "remove_col": "Spalte entfernen", + "col_right": "Spalte rechts hinzuf\u00fcgen", + "merge_cells": "Zellen verbinden", + "unmerge_cells": "Zellen trennen" + }, + "extension": { + "reallydel": "M\u00f6chtest du diese Erweiterung wirklich deinstallieren", + "display_viewoptions": "Einstellungen anzeigen:", + "display_enabled": "aktiviert", + "display_disabled": "deaktiviert", + "display_updatable": "Update verf\u00fcgbar", + "close": "Click to close", + "filter": "Show updatable extensions only" + }, + "logviewer": { + "filter": "Protokolleintr\u00e4ge filtern" + }, + "styling": { + "loader": "Vorschau l\u00e4dt...
      Falls diese Nachricht nicht verschwindet, k\u00f6nnten deine Werte fehlerhaft sein", + "popup": "\u00d6ffne als Popup" + } + } +}; +var toolbar = [{ + "type": "format", + "title": "Fetter Text", + "icon": "bold.png", + "key": "b", + "open": "**", + "close": "**", + "block": false +}, { + "type": "format", + "title": "Kursiver Text", + "icon": "italic.png", + "key": "i", + "open": "\/\/", + "close": "\/\/", + "block": false +}, { + "type": "format", + "title": "Unterstrichener Text", + "icon": "underline.png", + "key": "u", + "open": "__", + "close": "__", + "block": false +}, { + "type": "format", + "title": "Code Text", + "icon": "mono.png", + "key": "m", + "open": "''", + "close": "''", + "block": false +}, { + "type": "format", + "title": "Durchgestrichener Text", + "icon": "strike.png", + "key": "d", + "open": "", + "close": "<\/del>", + "block": false +}, { + "type": "autohead", + "title": "\u00dcberschrift auf selber Ebene", + "icon": "hequal.png", + "key": "8", + "text": "\u00dcberschrift", + "mod": 0, + "block": true +}, { + "type": "autohead", + "title": "\u00dcberschrift eine Ebene runter", + "icon": "hminus.png", + "key": "9", + "text": "\u00dcberschrift", + "mod": 1, + "block": true +}, { + "type": "autohead", + "title": "\u00dcberschrift eine Ebene h\u00f6her", + "icon": "hplus.png", + "key": "0", + "text": "\u00dcberschrift", + "mod": -1, + "block": true +}, { + "type": "picker", + "title": "W\u00e4hle eine \u00dcberschrift", + "icon": "h.png", + "class": "pk_hl", + "list": [{ + "type": "format", + "title": "Level 1 \u00dcberschrift", + "icon": "h1.png", + "key": "1", + "open": "====== ", + "close": " ======\\n" + }, { + "type": "format", + "title": "Level 2 \u00dcberschrift", + "icon": "h2.png", + "key": "2", + "open": "===== ", + "close": " =====\\n" + }, { + "type": "format", + "title": "Level 3 \u00dcberschrift", + "icon": "h3.png", + "key": "3", + "open": "==== ", + "close": " ====\\n" + }, { + "type": "format", + "title": "Level 4 \u00dcberschrift", + "icon": "h4.png", + "key": "4", + "open": "=== ", + "close": " ===\\n" + }, { + "type": "format", + "title": "Level 5 \u00dcberschrift", + "icon": "h5.png", + "key": "5", + "open": "== ", + "close": " ==\\n" + }], + "block": true +}, { + "type": "linkwiz", + "title": "Interner Link", + "icon": "link.png", + "key": "l", + "open": "[[", + "close": "]]", + "block": false +}, { + "type": "format", + "title": "Externer Link", + "icon": "linkextern.png", + "open": "[[", + "close": "]]", + "sample": "http:\/\/example.com|Externer Link", + "block": false +}, { + "type": "formatln", + "title": "Nummerierter Listenpunkt", + "icon": "ol.png", + "open": " - ", + "close": "", + "key": "-", + "block": true +}, { + "type": "formatln", + "title": "Listenpunkt", + "icon": "ul.png", + "open": " * ", + "close": "", + "key": ".", + "block": true +}, { + "type": "insert", + "title": "Horizontale Linie", + "icon": "hr.png", + "insert": "\\n----\\n", + "block": true +}, { + "type": "mediapopup", + "title": "Bilder und andere Dateien hinzuf\u00fcgen", + "icon": "image.png", + "url": "lib\/exe\/mediamanager.php?ns=", + "name": "mediaselect", + "options": "width=750,height=500,left=20,top=20,scrollbars=yes,resizable=yes", + "block": false +}, { + "type": "picker", + "title": "Smileys", + "icon": "smiley.png", + "list": { + "8-)": "cool.svg", + "8-O": "eek.svg", + "8-o": "eek.svg", + ":-(": "sad.svg", + ":-)": "smile.svg", + "=)": "smile2.svg", + ":-\/": "doubt.svg", + ":-\\": "doubt2.svg", + ":-?": "confused.svg", + ":-D": "biggrin.svg", + ":-P": "razz.svg", + ":-o": "surprised.svg", + ":-O": "surprised.svg", + ":-x": "silenced.svg", + ":-X": "silenced.svg", + ":-|": "neutral.svg", + ";-)": "wink.svg", + "m(": "facepalm.svg", + "^_^": "fun.svg", + ":?:": "question.svg", + ":!:": "exclaim.svg", + "LOL": "lol.svg", + "FIXME": "fixme.svg", + "DELETEME": "deleteme.svg" + }, + "icobase": "smileys", + "block": false +}, { + "type": "picker", + "title": "Sonderzeichen", + "icon": "chars.png", + "list": ["\u00c0", "\u00e0", "\u00c1", "\u00e1", "\u00c2", "\u00e2", "\u00c3", "\u00e3", "\u00c4", "\u00e4", "\u01cd", "\u01ce", "\u0102", "\u0103", "\u00c5", "\u00e5", "\u0100", "\u0101", "\u0104", "\u0105", "\u00c6", "\u00e6", "\u0106", "\u0107", "\u00c7", "\u00e7", "\u010c", "\u010d", "\u0108", "\u0109", "\u010a", "\u010b", "\u00d0", "\u0111", "\u00f0", "\u010e", "\u010f", "\u00c8", "\u00e8", "\u00c9", "\u00e9", "\u00ca", "\u00ea", "\u00cb", "\u00eb", "\u011a", "\u011b", "\u0112", "\u0113", "\u0116", "\u0117", "\u0118", "\u0119", "\u0122", "\u0123", "\u011c", "\u011d", "\u011e", "\u011f", "\u0120", "\u0121", "\u0124", "\u0125", "\u00cc", "\u00ec", "\u00cd", "\u00ed", "\u00ce", "\u00ee", "\u00cf", "\u00ef", "\u01cf", "\u01d0", "\u012a", "\u012b", "\u0130", "\u0131", "\u012e", "\u012f", "\u0134", "\u0135", "\u0136", "\u0137", "\u0139", "\u013a", "\u013b", "\u013c", "\u013d", "\u013e", "\u0141", "\u0142", "\u013f", "\u0140", "\u0143", "\u0144", "\u00d1", "\u00f1", "\u0145", "\u0146", "\u0147", "\u0148", "\u00d2", "\u00f2", "\u00d3", "\u00f3", "\u00d4", "\u00f4", "\u00d5", "\u00f5", "\u00d6", "\u00f6", "\u01d1", "\u01d2", "\u014c", "\u014d", "\u0150", "\u0151", "\u0152", "\u0153", "\u00d8", "\u00f8", "\u0154", "\u0155", "\u0156", "\u0157", "\u0158", "\u0159", "\u015a", "\u015b", "\u015e", "\u015f", "\u0160", "\u0161", "\u015c", "\u015d", "\u0162", "\u0163", "\u0164", "\u0165", "\u00d9", "\u00f9", "\u00da", "\u00fa", "\u00db", "\u00fb", "\u00dc", "\u00fc", "\u01d3", "\u01d4", "\u016c", "\u016d", "\u016a", "\u016b", "\u016e", "\u016f", "\u01d6", "\u01d8", "\u01da", "\u01dc", "\u0172", "\u0173", "\u0170", "\u0171", "\u0174", "\u0175", "\u00dd", "\u00fd", "\u0178", "\u00ff", "\u0176", "\u0177", "\u0179", "\u017a", "\u017d", "\u017e", "\u017b", "\u017c", "\u00de", "\u00fe", "\u00df", "\u0126", "\u0127", "\u00bf", "\u00a1", "\u00a2", "\u00a3", "\u00a4", "\u00a5", "\u20ac", "\u00a6", "\u00a7", "\u00aa", "\u00ac", "\u00af", "\u00b0", "\u00b1", "\u00f7", "\u2030", "\u00bc", "\u00bd", "\u00be", "\u00b9", "\u00b2", "\u00b3", "\u00b5", "\u00b6", "\u2020", "\u2021", "\u00b7", "\u2022", "\u00ba", "\u2200", "\u2202", "\u2203", "\u018f", "\u0259", "\u2205", "\u2207", "\u2208", "\u2209", "\u220b", "\u220f", "\u2211", "\u203e", "\u2212", "\u2217", "\u00d7", "\u2044", "\u221a", "\u221d", "\u221e", "\u2220", "\u2227", "\u2228", "\u2229", "\u222a", "\u222b", "\u2234", "\u223c", "\u2245", "\u2248", "\u2260", "\u2261", "\u2264", "\u2265", "\u2282", "\u2283", "\u2284", "\u2286", "\u2287", "\u2295", "\u2297", "\u22a5", "\u22c5", "\u25ca", "\u2118", "\u2111", "\u211c", "\u2135", "\u2660", "\u2663", "\u2665", "\u2666", "\u03b1", "\u03b2", "\u0393", "\u03b3", "\u0394", "\u03b4", "\u03b5", "\u03b6", "\u03b7", "\u0398", "\u03b8", "\u03b9", "\u03ba", "\u039b", "\u03bb", "\u03bc", "\u039e", "\u03be", "\u03a0", "\u03c0", "\u03c1", "\u03a3", "\u03c3", "\u03a4", "\u03c4", "\u03c5", "\u03a6", "\u03c6", "\u03c7", "\u03a8", "\u03c8", "\u03a9", "\u03c9", "\u2605", "\u2606", "\u260e", "\u261a", "\u261b", "\u261c", "\u261d", "\u261e", "\u261f", "\u2639", "\u263a", "\u2714", "\u2718", "\u201e", "\u201c", "\u201d", "\u201a", "\u2018", "\u2019", "\u00ab", "\u00bb", "\u2039", "\u203a", "\u2014", "\u2013", "\u2026", "\u2190", "\u2191", "\u2192", "\u2193", "\u2194", "\u21d0", "\u21d1", "\u21d2", "\u21d3", "\u21d4", "\u00a9", "\u2122", "\u00ae", "\u2032", "\u2033", "[", "]", "{", "}", "~", "(", ")", "%", "\u00a7", "$", "#", "|", "@"], + "block": false +}, { + "type": "signature", + "title": "Unterschrift einf\u00fcgen", + "icon": "sig.png", + "key": "y", + "block": false +}, { + "title": "Neue Tabelle einf\u00fcgen", + "type": "NewTable", + "icon": "..\/..\/plugins\/edittable\/images\/add_table.png", + "block": true +}, { + "type": "picker", + "title": "Wrap-Plugin", + "icon": "..\/..\/plugins\/wrap\/images\/toolbar\/picker.png", + "list": [{ + "type": "format", + "title": "Spalten", + "icon": "..\/..\/plugins\/wrap\/images\/toolbar\/column.png", + "open": "\\n\\n", + "close": "\\n<\/WRAP>\\n\\n\\n\\n<\/WRAP>\\n<\/WRAP>\\n" + }, { + "type": "format", + "title": "einfache zentrierte Box", + "icon": "..\/..\/plugins\/wrap\/images\/toolbar\/box.png", + "open": "\\n", + "close": "\\n<\/WRAP>\\n" + }, { + "type": "format", + "title": "Info-Box", + "icon": "..\/..\/plugins\/wrap\/images\/note\/16\/info.png", + "open": "\\n", + "close": "\\n<\/WRAP>\\n" + }, { + "type": "format", + "title": "Tip-Box", + "icon": "..\/..\/plugins\/wrap\/images\/note\/16\/tip.png", + "open": "\\n", + "close": "\\n<\/WRAP>\\n" + }, { + "type": "format", + "title": "Wichtig-Box", + "icon": "..\/..\/plugins\/wrap\/images\/note\/16\/important.png", + "open": "\\n", + "close": "\\n<\/WRAP>\\n" + }, { + "type": "format", + "title": "Warn-Box", + "icon": "..\/..\/plugins\/wrap\/images\/note\/16\/alert.png", + "open": "\\n", + "close": "\\n<\/WRAP>\\n" + }, { + "type": "format", + "title": "Hilfe-Box", + "icon": "..\/..\/plugins\/wrap\/images\/note\/16\/help.png", + "open": "\\n", + "close": "\\n<\/WRAP>\\n" + }, { + "type": "format", + "title": "Download-Box", + "icon": "..\/..\/plugins\/wrap\/images\/note\/16\/download.png", + "open": "\\n", + "close": "\\n<\/WRAP>\\n" + }, { + "type": "format", + "title": "Zu-Erledigen-Box", + "icon": "..\/..\/plugins\/wrap\/images\/note\/16\/todo.png", + "open": "\\n", + "close": "\\n<\/WRAP>\\n" + }, { + "type": "insert", + "title": "Floats beseitigen", + "icon": "..\/..\/plugins\/wrap\/images\/toolbar\/clear.png", + "insert": "\\n" + }, { + "type": "format", + "title": "wichtig", + "icon": "..\/..\/plugins\/wrap\/images\/toolbar\/em.png", + "open": "", + "close": "<\/wrap>" + }, { + "type": "format", + "title": "markieren", + "icon": "..\/..\/plugins\/wrap\/images\/toolbar\/hi.png", + "open": "", + "close": "<\/wrap>" + }, { + "type": "format", + "title": "weniger wichtig", + "icon": "..\/..\/plugins\/wrap\/images\/toolbar\/lo.png", + "open": "", + "close": "<\/wrap>" + }] +}]; +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(['jquery'], factory); + } else if (typeof exports === 'object') { + factory(require('jquery')); + } else { + factory(jQuery); + } +}(function ($) { + var pluses = /\+/g; + + function encode(s) { + return config.raw ? s : encodeURIComponent(s); + } + + function decode(s) { + return config.raw ? s : decodeURIComponent(s); + } + + function stringifyCookieValue(value) { + return encode(config.json ? JSON.stringify(value) : String(value)); + } + + function parseCookieValue(s) { + if (s.indexOf('"') === 0) { + s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); + } + try { + s = decodeURIComponent(s.replace(pluses, ' ')); + return config.json ? JSON.parse(s) : s; + } catch (e) { } + } + + function read(s, converter) { + var value = config.raw ? s : parseCookieValue(s); + return $.isFunction(converter) ? converter(value) : value; + } + var config = $.cookie = function (key, value, options) { + if (value !== undefined && !$.isFunction(value)) { + options = $.extend({}, config.defaults, options); + if (typeof options.expires === 'number') { + var days = options.expires, + t = options.expires = new Date(); + t.setTime(+t + days * 864e+5); + } + return (document.cookie = [encode(key), '=', stringifyCookieValue(value), options.expires ? '; expires=' + options.expires.toUTCString() : '', options.path ? '; path=' + options.path : '', options.domain ? '; domain=' + options.domain : '', options.secure ? '; secure' : ''].join('')); + } + var result = key ? undefined : {}; + var cookies = document.cookie ? document.cookie.split('; ') : []; + for (var i = 0, l = cookies.length; i < l; i++) { + var parts = cookies[i].split('='); + var name = decode(parts.shift()); + var cookie = parts.join('='); + if (key && key === name) { + result = read(cookie, value); + break; + } + if (!key && (cookie = read(cookie)) !== undefined) { + result[name] = cookie; + } + } + return result; + }; + config.defaults = {}; + $.removeCookie = function (key, options) { + if ($.cookie(key) === undefined) { + return false; + } + $.cookie(key, '', $.extend({}, options, { + expires: -1 + })); + return !$.cookie(key); + }; +})); +(function (factory) { + "use strict"; + if (typeof define === "function" && define.amd) { + define(["../widgets/datepicker"], factory); + } else { + factory(jQuery.datepicker); + } +})(function (datepicker) { + "use strict"; + datepicker.regional.de = { + closeText: "Schließen", + prevText: "Zurück", + nextText: "Vor", + currentText: "Heute", + monthNames: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], + monthNamesShort: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"], + dayNames: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"], + dayNamesShort: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"], + dayNamesMin: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"], + weekHeader: "KW", + dateFormat: "dd.mm.yy", + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: "" + }; + datepicker.setDefaults(datepicker.regional.de); + return datepicker.regional.de; +}); +var qq = qq || {}; +qq.extend = function (first, second) { + for (var prop in second) { + first[prop] = second[prop]; + } +}; +qq.indexOf = function (arr, elt, from) { + if (arr.indexOf) return arr.indexOf(elt, from); + from = from || 0; + var len = arr.length; + if (from < 0) from += len; + for (; from < len; from++) { + if (from in arr && arr[from] === elt) { + return from; + } + } + return -1; +}; +qq.getUniqueId = (function () { + var id = 0; + return function () { + return id++; + }; +})(); +qq.attach = function (element, type, fn) { + if (element.addEventListener) { + element.addEventListener(type, fn, false); + } else if (element.attachEvent) { + element.attachEvent('on' + type, fn); + } +}; +qq.detach = function (element, type, fn) { + if (element.removeEventListener) { + element.removeEventListener(type, fn, false); + } else if (element.attachEvent) { + element.detachEvent('on' + type, fn); + } +}; +qq.preventDefault = function (e) { + if (e.preventDefault) { + e.preventDefault(); + } else { + e.returnValue = false; + } +}; +qq.insertBefore = function (a, b) { + b.parentNode.insertBefore(a, b); +}; +qq.remove = function (element) { + element.parentNode.removeChild(element); +}; +qq.contains = function (parent, descendant) { + if (parent == descendant) return true; + if (parent.contains) { + return parent.contains(descendant); + } else { + return !!(descendant.compareDocumentPosition(parent) & 8); + } +}; +qq.toElement = (function () { + var div = document.createElement('div'); + return function (html) { + div.innerHTML = html; + var element = div.firstChild; + div.removeChild(element); + return element; + }; +})(); +qq.css = function (element, styles) { + if (styles.opacity != null) { + if (typeof element.style.opacity != 'string' && typeof (element.filters) != 'undefined') { + styles.filter = 'alpha(opacity=' + Math.round(100 * styles.opacity) + ')'; + } + } + qq.extend(element.style, styles); +}; +qq.hasClass = function (element, name) { + var re = new RegExp('(^| )' + name + '( |$)'); + return re.test(element.className); +}; +qq.addClass = function (element, name) { + if (!qq.hasClass(element, name)) { + element.className += ' ' + name; + } +}; +qq.removeClass = function (element, name) { + var re = new RegExp('(^| )' + name + '( |$)'); + element.className = element.className.replace(re, ' ').replace(/^\s+|\s+$/g, ""); +}; +qq.setText = function (element, text) { + element.innerText = text; + element.textContent = text; +}; +qq.children = function (element) { + var children = [], + child = element.firstChild; + while (child) { + if (child.nodeType == 1) { + children.push(child); + } + child = child.nextSibling; + } + return children; +}; +qq.getByClass = function (element, className) { + if (element.querySelectorAll) { + return element.querySelectorAll('.' + className); + } + var result = []; + var candidates = element.getElementsByTagName("*"); + var len = candidates.length; + for (var i = 0; i < len; i++) { + if (qq.hasClass(candidates[i], className)) { + result.push(candidates[i]); + } + } + return result; +}; +qq.obj2url = function (obj, temp, prefixDone) { + var uristrings = [], + prefix = '&', + add = function (nextObj, i) { + var nextTemp = temp ? (/\[\]$/.test(temp)) ? temp : temp + '[' + i + ']' : i; + if ((nextTemp != 'undefined') && (i != 'undefined')) { + uristrings.push((typeof nextObj === 'object') ? qq.obj2url(nextObj, nextTemp, true) : (Object.prototype.toString.call(nextObj) === '[object Function]') ? encodeURIComponent(nextTemp) + '=' + encodeURIComponent(nextObj()) : encodeURIComponent(nextTemp) + '=' + encodeURIComponent(nextObj)); + } + }; + if (!prefixDone && temp) { + prefix = (/\?/.test(temp)) ? (/\?$/.test(temp)) ? '' : '&' : '?'; + uristrings.push(temp); + uristrings.push(qq.obj2url(obj)); + } else if ((Object.prototype.toString.call(obj) === '[object Array]') && (typeof obj != 'undefined')) { + for (var i = 0, len = obj.length; i < len; ++i) { + add(obj[i], i); + } + } else if ((typeof obj != 'undefined') && (obj !== null) && (typeof obj === "object")) { + for (var i in obj) { + if (obj.hasOwnProperty(i) && typeof obj[i] != 'function') { + add(obj[i], i); + } + } + } else { + uristrings.push(encodeURIComponent(temp) + '=' + encodeURIComponent(obj)); + } + return uristrings.join(prefix).replace(/^&/, '').replace(/%20/g, '+'); +}; +var qq = qq || {}; +qq.FileUploaderBasic = function (o) { + this._options = { + debug: false, + action: '/server/upload', + params: {}, + button: null, + multiple: true, + maxConnections: 3, + allowedExtensions: [], + sizeLimit: 0, + minSizeLimit: 0, + onSubmit: function (id, fileName) { }, + onProgress: function (id, fileName, loaded, total) { }, + onComplete: function (id, fileName, responseJSON) { }, + onCancel: function (id, fileName) { }, + messages: { + typeError: "{file} has invalid extension. Only {extensions} are allowed.", + sizeError: "{file} is too large, maximum file size is {sizeLimit}.", + minSizeError: "{file} is too small, minimum file size is {minSizeLimit}.", + emptyError: "{file} is empty, please select files again without it.", + onLeave: "The files are being uploaded, if you leave now the upload will be cancelled." + }, + showMessage: function (message) { + alert(message); + } + }; + qq.extend(this._options, o); + this._filesInProgress = 0; + this._handler = this._createUploadHandler(); + if (this._options.button) { + this._button = this._createUploadButton(this._options.button); + } + this._preventLeaveInProgress(); +}; +qq.FileUploaderBasic.prototype = { + setParams: function (params) { + this._options.params = params; + }, + getInProgress: function () { + return this._filesInProgress; + }, + _createUploadButton: function (element) { + var self = this; + return new qq.UploadButton({ + element: element, + multiple: this._options.multiple && qq.UploadHandlerXhr.isSupported(), + onChange: function (input) { + self._onInputChange(input); + } + }); + }, + _createUploadHandler: function () { + var self = this, + handlerClass; + if (qq.UploadHandlerXhr.isSupported()) { + handlerClass = 'UploadHandlerXhr'; + } else { + handlerClass = 'UploadHandlerForm'; + } + var handler = new qq[handlerClass]({ + debug: this._options.debug, + action: this._options.action, + maxConnections: this._options.maxConnections, + onProgress: function (id, fileName, loaded, total) { + self._onProgress(id, fileName, loaded, total); + self._options.onProgress(id, fileName, loaded, total); + }, + onComplete: function (id, fileName, result) { + self._onComplete(id, fileName, result); + self._options.onComplete(id, fileName, result); + }, + onCancel: function (id, fileName) { + self._onCancel(id, fileName); + self._options.onCancel(id, fileName); + } + }); + return handler; + }, + _preventLeaveInProgress: function () { + var self = this; + qq.attach(window, 'beforeunload', function (e) { + if (!self._filesInProgress) { + return; + } + var e = e || window.event; + e.returnValue = self._options.messages.onLeave; + return self._options.messages.onLeave; + }); + }, + _onSubmit: function (id, fileName) { + this._filesInProgress++; + }, + _onProgress: function (id, fileName, loaded, total) { }, + _onComplete: function (id, fileName, result) { + this._filesInProgress--; + if (result.error) { + this._options.showMessage(result.error); + } + }, + _onCancel: function (id, fileName) { + this._filesInProgress--; + }, + _onInputChange: function (input) { + if (this._handler instanceof qq.UploadHandlerXhr) { + this._uploadFileList(input.files); + } else { + if (this._validateFile(input)) { + this._uploadFile(input); + } + } + this._button.reset(); + }, + _uploadFileList: function (files) { + for (var i = 0; i < files.length; i++) { + if (!this._validateFile(files[i])) { + return; + } + } + for (var i = 0; i < files.length; i++) { + this._uploadFile(files[i]); + } + }, + _uploadFile: function (fileContainer) { + var id = this._handler.add(fileContainer); + var fileName = this._handler.getName(id); + if (this._options.onSubmit(id, fileName) !== false) { + this._onSubmit(id, fileName); + this._handler.upload(id, this._options.params); + } + }, + _validateFile: function (file) { + var name, size; + if (file.value) { + name = file.value.replace(/.*(\/|\\)/, ""); + } else { + name = file.fileName != null ? file.fileName : file.name; + size = file.fileSize != null ? file.fileSize : file.size; + } + if (!this._isAllowedExtension(name)) { + this._error('typeError', name); + return false; + } else if (size === 0) { + this._error('emptyError', name); + return false; + } else if (size && this._options.sizeLimit && size > this._options.sizeLimit) { + this._error('sizeError', name); + return false; + } else if (size && size < this._options.minSizeLimit) { + this._error('minSizeError', name); + return false; + } + return true; + }, + _error: function (code, fileName) { + var message = this._options.messages[code]; + + function r(name, replacement) { + message = message.replace(name, replacement); + } + r('{file}', this._formatFileName(fileName)); + r('{extensions}', this._options.allowedExtensions.join(', ')); + r('{sizeLimit}', this._formatSize(this._options.sizeLimit)); + r('{minSizeLimit}', this._formatSize(this._options.minSizeLimit)); + this._options.showMessage(message); + }, + _formatFileName: function (name) { + if (name.length > 33) { + name = name.slice(0, 19) + '...' + name.slice(-13); + } + return name; + }, + _isAllowedExtension: function (fileName) { + var ext = (-1 !== fileName.indexOf('.')) ? fileName.replace(/.*[.]/, '').toLowerCase() : ''; + var allowed = this._options.allowedExtensions; + if (!allowed.length) { + return true; + } + for (var i = 0; i < allowed.length; i++) { + if (allowed[i].toLowerCase() == ext) { + return true; + } + } + return false; + }, + _formatSize: function (bytes) { + var i = -1; + do { + bytes = bytes / 1024; + i++; + } while (bytes > 99); + return Math.max(bytes, 0.1).toFixed(1) + ['kB', 'MB', 'GB', 'TB', 'PB', 'EB'][i]; + } +}; +qq.FileUploader = function (o) { + qq.FileUploaderBasic.apply(this, arguments); + qq.extend(this._options, { + element: null, + listElement: null, + template: '
      ' + '
      Drop files here to upload
      ' + '
      Upload a file
      ' + '
        ' + '
        ', + fileTemplate: '
      • ' + '' + '' + '' + 'Cancel' + 'Failed' + '
      • ', + classes: { + button: 'qq-upload-button', + drop: 'qq-upload-drop-area', + dropActive: 'qq-upload-drop-area-active', + list: 'qq-upload-list', + file: 'qq-upload-file', + spinner: 'qq-upload-spinner', + size: 'qq-upload-size', + cancel: 'qq-upload-cancel', + success: 'qq-upload-success', + fail: 'qq-upload-fail' + } + }); + qq.extend(this._options, o); + this._element = this._options.element; + this._element.innerHTML = this._options.template; + this._listElement = this._options.listElement || this._find(this._element, 'list'); + this._classes = this._options.classes; + this._button = this._createUploadButton(this._find(this._element, 'button')); + this._bindCancelEvent(); + this._setupDragDrop(); +}; +qq.extend(qq.FileUploader.prototype, qq.FileUploaderBasic.prototype); +qq.extend(qq.FileUploader.prototype, { + _find: function (parent, type) { + var element = qq.getByClass(parent, this._options.classes[type])[0]; + if (!element) { + throw new Error('element not found ' + type); + } + return element; + }, + _setupDragDrop: function () { + var self = this, + dropArea = this._find(this._element, 'drop'); + var dz = new qq.UploadDropZone({ + element: dropArea, + onEnter: function (e) { + qq.addClass(dropArea, self._classes.dropActive); + e.stopPropagation(); + }, + onLeave: function (e) { + e.stopPropagation(); + }, + onLeaveNotDescendants: function (e) { + qq.removeClass(dropArea, self._classes.dropActive); + }, + onDrop: function (e) { + dropArea.style.display = 'none'; + qq.removeClass(dropArea, self._classes.dropActive); + self._uploadFileList(e.dataTransfer.files); + } + }); + dropArea.style.display = 'none'; + qq.attach(document, 'dragenter', function (e) { + if (!dz._isValidFileDrag(e)) return; + dropArea.style.display = 'block'; + }); + qq.attach(document, 'dragleave', function (e) { + if (!dz._isValidFileDrag(e)) return; + var relatedTarget = document.elementFromPoint(e.clientX, e.clientY); + if (!relatedTarget || relatedTarget.nodeName == "HTML") { + dropArea.style.display = 'none'; + } + }); + }, + _onSubmit: function (id, fileName) { + qq.FileUploaderBasic.prototype._onSubmit.apply(this, arguments); + this._addToList(id, fileName); + }, + _onProgress: function (id, fileName, loaded, total) { + qq.FileUploaderBasic.prototype._onProgress.apply(this, arguments); + var item = this._getItemByFileId(id); + var size = this._find(item, 'size'); + size.style.display = 'inline'; + var text; + if (loaded != total) { + text = Math.round(loaded / total * 100) + '% from ' + this._formatSize(total); + } else { + text = this._formatSize(total); + } + qq.setText(size, text); + }, + _onComplete: function (id, fileName, result) { + qq.FileUploaderBasic.prototype._onComplete.apply(this, arguments); + var item = this._getItemByFileId(id); + qq.remove(this._find(item, 'cancel')); + qq.remove(this._find(item, 'spinner')); + if (result.success) { + qq.addClass(item, this._classes.success); + } else { + qq.addClass(item, this._classes.fail); + } + }, + _addToList: function (id, fileName) { + var item = qq.toElement(this._options.fileTemplate); + item.qqFileId = id; + var fileElement = this._find(item, 'file'); + qq.setText(fileElement, this._formatFileName(fileName)); + this._find(item, 'size').style.display = 'none'; + this._listElement.appendChild(item); + }, + _getItemByFileId: function (id) { + var item = this._listElement.firstChild; + while (item) { + if (item.qqFileId == id) return item; + item = item.nextSibling; + } + }, + _bindCancelEvent: function () { + var self = this, + list = this._listElement; + qq.attach(list, 'click', function (e) { + e = e || window.event; + var target = e.target || e.srcElement; + if (qq.hasClass(target, self._classes.cancel)) { + qq.preventDefault(e); + var item = target.parentNode; + self._handler.cancel(item.qqFileId); + qq.remove(item); + } + }); + } +}); +qq.UploadDropZone = function (o) { + this._options = { + element: null, + onEnter: function (e) { }, + onLeave: function (e) { }, + onLeaveNotDescendants: function (e) { }, + onDrop: function (e) { } + }; + qq.extend(this._options, o); + this._element = this._options.element; + this._disableDropOutside(); + this._attachEvents(); +}; +qq.UploadDropZone.prototype = { + _disableDropOutside: function (e) { + if (!qq.UploadDropZone.dropOutsideDisabled) { + qq.attach(document, 'dragover', function (e) { + if (e.dataTransfer) { + e.dataTransfer.dropEffect = 'none'; + e.preventDefault(); + } + }); + qq.UploadDropZone.dropOutsideDisabled = true; + } + }, + _attachEvents: function () { + var self = this; + qq.attach(self._element, 'dragover', function (e) { + if (!self._isValidFileDrag(e)) return; + var effect = e.dataTransfer.effectAllowed; + if (effect == 'move' || effect == 'linkMove') { + e.dataTransfer.dropEffect = 'move'; + } else { + e.dataTransfer.dropEffect = 'copy'; + } + e.stopPropagation(); + e.preventDefault(); + }); + qq.attach(self._element, 'dragenter', function (e) { + if (!self._isValidFileDrag(e)) return; + self._options.onEnter(e); + }); + qq.attach(self._element, 'dragleave', function (e) { + if (!self._isValidFileDrag(e)) return; + self._options.onLeave(e); + var relatedTarget = document.elementFromPoint(e.clientX, e.clientY); + if (qq.contains(this, relatedTarget)) return; + self._options.onLeaveNotDescendants(e); + }); + qq.attach(self._element, 'drop', function (e) { + if (!self._isValidFileDrag(e)) return; + e.preventDefault(); + self._options.onDrop(e); + }); + }, + _isValidFileDrag: function (e) { + var dt = e.dataTransfer, + isWebkit = navigator.userAgent.indexOf("AppleWebKit") > -1; + return dt && dt.effectAllowed != 'none' && (dt.files || (!isWebkit && dt.types.contains && dt.types.contains('Files'))); + } +}; +qq.UploadButton = function (o) { + this._options = { + element: null, + multiple: false, + name: 'file', + onChange: function (input) { }, + hoverClass: 'qq-upload-button-hover', + focusClass: 'qq-upload-button-focus' + }; + qq.extend(this._options, o); + this._element = this._options.element; + qq.css(this._element, { + position: 'relative', + overflow: 'hidden', + direction: 'ltr' + }); + this._input = this._createInput(); +}; +qq.UploadButton.prototype = { + getInput: function () { + return this._input; + }, + reset: function () { + if (this._input.parentNode) { + qq.remove(this._input); + } + qq.removeClass(this._element, this._options.focusClass); + this._input = this._createInput(); + }, + _createInput: function () { + var input = document.createElement("input"); + if (this._options.multiple) { + input.setAttribute("multiple", "multiple"); + } + input.setAttribute("type", "file"); + input.setAttribute("name", this._options.name); + qq.css(input, { + position: 'absolute', + right: 0, + top: 0, + fontFamily: 'Arial', + fontSize: '118px', + margin: 0, + padding: 0, + cursor: 'pointer', + opacity: 0 + }); + this._element.appendChild(input); + var self = this; + qq.attach(input, 'change', function () { + self._options.onChange(input); + }); + qq.attach(input, 'mouseover', function () { + qq.addClass(self._element, self._options.hoverClass); + }); + qq.attach(input, 'mouseout', function () { + qq.removeClass(self._element, self._options.hoverClass); + }); + qq.attach(input, 'focus', function () { + qq.addClass(self._element, self._options.focusClass); + }); + qq.attach(input, 'blur', function () { + qq.removeClass(self._element, self._options.focusClass); + }); + if (window.attachEvent) { + input.setAttribute('tabIndex', "-1"); + } + return input; + } +}; +qq.UploadHandlerAbstract = function (o) { + this._options = { + debug: false, + action: '/upload.php', + maxConnections: 999, + onProgress: function (id, fileName, loaded, total) { }, + onComplete: function (id, fileName, response) { }, + onCancel: function (id, fileName) { } + }; + qq.extend(this._options, o); + this._queue = []; + this._params = []; +}; +qq.UploadHandlerAbstract.prototype = { + log: function (str) { + if (this._options.debug && window.console) console.log('[uploader] ' + str); + }, + add: function (file) { }, + upload: function (id, params) { + var len = this._queue.push(id); + var copy = {}; + qq.extend(copy, params); + this._params[id] = copy; + if (len <= this._options.maxConnections) { + this._upload(id, this._params[id]); + } + }, + cancel: function (id) { + this._cancel(id); + this._dequeue(id); + }, + cancelAll: function () { + for (var i = 0; i < this._queue.length; i++) { + this._cancel(this._queue[i]); + } + this._queue = []; + }, + getName: function (id) { }, + getSize: function (id) { }, + getQueue: function () { + return this._queue; + }, + _upload: function (id) { }, + _cancel: function (id) { }, + _dequeue: function (id) { + var i = qq.indexOf(this._queue, id); + this._queue.splice(i, 1); + var max = this._options.maxConnections; + if (this._queue.length >= max && i < max) { + var nextId = this._queue[max - 1]; + this._upload(nextId, this._params[nextId]); + } + } +}; +qq.UploadHandlerForm = function (o) { + qq.UploadHandlerAbstract.apply(this, arguments); + this._inputs = {}; +}; +qq.extend(qq.UploadHandlerForm.prototype, qq.UploadHandlerAbstract.prototype); +qq.extend(qq.UploadHandlerForm.prototype, { + add: function (fileInput) { + fileInput.setAttribute('name', 'qqfile'); + var id = 'qq-upload-handler-iframe' + qq.getUniqueId(); + this._inputs[id] = fileInput; + if (fileInput.parentNode) { + qq.remove(fileInput); + } + return id; + }, + getName: function (id) { + return this._inputs[id].value.replace(/.*(\/|\\)/, ""); + }, + _cancel: function (id) { + this._options.onCancel(id, this.getName(id)); + delete this._inputs[id]; + var iframe = document.getElementById(id); + if (iframe) { + iframe.setAttribute('src', 'javascript:false;'); + qq.remove(iframe); + } + }, + _upload: function (id, params) { + var input = this._inputs[id]; + if (!input) { + throw new Error('file with passed id was not added, or already uploaded or cancelled'); + } + var fileName = this.getName(id); + var iframe = this._createIframe(id); + var form = this._createForm(iframe, params); + form.appendChild(input); + var self = this; + this._attachLoadEvent(iframe, function () { + self.log('iframe loaded'); + var response = self._getIframeContentJSON(iframe); + self._options.onComplete(id, fileName, response); + self._dequeue(id); + delete self._inputs[id]; + setTimeout(function () { + qq.remove(iframe); + }, 1); + }); + form.submit(); + qq.remove(form); + return id; + }, + _attachLoadEvent: function (iframe, callback) { + qq.attach(iframe, 'load', function () { + if (!iframe.parentNode) { + return; + } + if (iframe.contentDocument && iframe.contentDocument.body && iframe.contentDocument.body.innerHTML == "false") { + return; + } + callback(); + }); + }, + _getIframeContentJSON: function (iframe) { + var doc = iframe.contentDocument ? iframe.contentDocument : iframe.contentWindow.document, + response; + this.log("converting iframe's innerHTML to JSON"); + this.log("innerHTML = " + doc.body.innerHTML); + try { + response = eval("(" + doc.body.innerHTML + ")"); + } catch (err) { + response = {}; + } + return response; + }, + _createIframe: function (id) { + var iframe = qq.toElement('