--- /dev/null
+package net.pterodactylus.rhynodge.filters.webpages.dasenbrook
+
+import java.time.LocalDate
+import net.pterodactylus.rhynodge.Filter
+import net.pterodactylus.rhynodge.State
+import net.pterodactylus.rhynodge.states.HtmlState
+
+class DasenbrookFilter(private val home: String) : Filter {
+
+ override fun filter(state: State): State {
+ val vacancies = (state as HtmlState).document().select("div.mb").flatMap { month ->
+ val firstOfMonth = month.select("div.mh").text().toLocalDate()
+ month.select(".dbs .db p, .dbs .db .da-d")
+ .filter { dayCell -> dayCell.parents().none { it.classNames() == setOf("db", "e") } }
+ .map { dayCell ->
+ val day = firstOfMonth.withDayOfMonth(dayCell.text().toInt())
+ val free = dayCell.parents().any { it.classNames() == setOf("db", "a") }
+ free to day
+ }
+ }.fold(false to listOf<Vacancy>()) { (yesterdayWasFree, vacancies), (todayIsFree, date) ->
+ todayIsFree to when {
+ yesterdayWasFree -> vacancies.dropLast(1) + Vacancy(vacancies.last().begin, date)
+ todayIsFree -> vacancies + Vacancy(date, date)
+ else -> vacancies
+ }
+ }.second
+ return VacationHomeState(home, vacancies)
+ }
+
+}
+
+private fun String.toLocalDate() = split(" ").let { (month, year) ->
+ LocalDate.of(year.toInt(), monthNames.indexOf(month), 1)
+}
+
+private val monthNames = listOf("-", "Jan", "Feb", "Mrz", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez")
--- /dev/null
+package net.pterodactylus.rhynodge.filters.webpages.dasenbrook
+
+import java.time.LocalDate
+import net.pterodactylus.rhynodge.filters.ResourceLoader
+import net.pterodactylus.rhynodge.states.HtmlState
+import org.hamcrest.MatcherAssert.assertThat
+import org.hamcrest.Matchers
+import org.hamcrest.Matchers.containsInAnyOrder
+import org.junit.jupiter.api.Test
+
+class DasenbrookFilterTest {
+
+ @Test
+ fun `dasenbrook filter can parse state`() {
+ val dasenbrookState = dasenbrookFilter.filter(htmlState) as VacationHomeState
+ assertThat(dasenbrookState.vacancies, containsInAnyOrder(
+ Vacancy(LocalDate.of(2026, 4, 25), LocalDate.of(2026, 4, 26)),
+ Vacancy(LocalDate.of(2026, 5, 17), LocalDate.of(2026, 5, 21)),
+ Vacancy(LocalDate.of(2026, 6, 27), LocalDate.of(2026, 6, 30)),
+ Vacancy(LocalDate.of(2026, 8, 16), LocalDate.of(2026, 8, 20)),
+ Vacancy(LocalDate.of(2026, 11, 7), LocalDate.of(2026, 12, 27)),
+ Vacancy(LocalDate.of(2027, 1, 2), LocalDate.of(2027, 1, 11)),
+ Vacancy(LocalDate.of(2027, 1, 19), LocalDate.of(2027, 2, 7)),
+ Vacancy(LocalDate.of(2027, 2, 14), LocalDate.of(2027, 3, 14)),
+ Vacancy(LocalDate.of(2027, 3, 19), LocalDate.of(2027, 3, 20)),
+ Vacancy(LocalDate.of(2027, 3, 27), LocalDate.of(2027, 3, 31)),
+ ))
+ }
+
+ private val dasenbrookFilter = DasenbrookFilter("Test Home")
+ private val htmlState = ResourceLoader
+ .loadDocument(javaClass, "dasenbrook.html", "https://www.ostsee-reisen.de/api/availability-calendar/v2/apartment/11343.html")
+ .let { HtmlState("https://www.ostsee-reisen.de/api/availability-calendar/v2/apartment/11343.html", it) }
+
+}
--- /dev/null
+<!DOCTYPE HTML>
+<html lang="de">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<title>Ostsee-Reisen.de - Belegungsplan</title>
+<meta name="Description" content="Ostsee-Reisen.de - Belegungsplan">
+<style>
+.cal * {
+-webkit-box-sizing: border-box;
+-moz-box-sizing: border-box;
+box-sizing: border-box;
+font-family: Arial, Verdana, Helvetica, 'Sans-serif';
+background-color: transparent;
+}
+.cal div.cal-all {
+margin: 0;
+}
+.cal div.amb {
+}
+.cal div.mb {
+width: auto;
+margin: 0 4px 4px 0;
+float: left;
+}
+.cal div.mh {
+color: #FFFFFF;
+background-color: #006600;
+font-weight: normal;
+font-size: 10pt;
+width: 120px;
+text-align: center;
+padding: 2px 0 2px 0;
+}
+.cal div.wds {
+width: auto;
+border-color: #C0C0C0;
+border-width: 0 0 0 1px;
+border-style: solid;
+}
+.cal div.wds p {
+font-size: 7pt;
+font-weight: bold;
+text-align: center;
+float: left;
+background-color: #D8D8C5;
+width: 17px;
+height: 15px;
+border-color: #C0C0C0;
+border-width: 1px 1px 0 0;
+border-style: solid;
+margin: 0;
+padding: 2px 0 0 0;
+}
+.cal div.cf {
+clear: left;
+}
+.cal div.db p {
+font-size: 8pt;
+display: block;
+float: left;
+width: 17px;
+height: 16px;
+border-style: solid;
+border-width: 1px 1px 0 0;
+border-color: #C0C0C0;
+margin: 0;
+padding: 1px 0 0 0;
+text-align: center;
+}
+.cal div.dbs {
+border-color: #C0C0C0;
+border-width: 0 0 1px 1px;
+border-style: solid;
+}
+.cal div.e p {
+background-color: #F4F4F4;
+}
+.cal div.a p {
+background-color: #CCFFCC;
+}
+.cal div.b p {
+background-color: #F45B28;
+}
+.cal div.r p {
+background-color: #FFFF66;
+}
+
+.cal div.an p {
+background-color: #009900;
+}
+.cal div.bn p {
+background-color: #7F2003;
+}
+.cal div.rn p {
+background-color: #EDBF31;
+}
+
+.cal div.ad {
+float: left;
+position: relative;
+width: 17px;
+height: 15px;
+border-style: solid;
+border-width: 1px 1px 0 0;
+border-color: #C0C0C0;
+}
+.cal div.ad-d {
+font-family: Arial, Verdana;
+font-size: 8pt;
+position: relative;
+border-style: none;
+width: 17px;
+height: 15px;
+}
+.cal div.ad-a {
+background-color: #CCFFCC;
+}
+.cal div.ad-b {
+background-color: #F45B28;
+}
+.cal div.ad-r {
+background-color: #FFFF66;
+}
+
+.cal div.ad-an {
+background-color: #009900;
+}
+.cal div.ad-bn {
+background-color: #7F2003;
+}
+.cal div.ad-rn {
+background-color: #EDBF31;
+}
+.cal div.da {
+float: left;
+position: relative;
+width: 17px;
+height: 16px;
+border-style: solid;
+border-width: 1px 1px 0 0;
+border-color: #C0C0C0;
+text-align: center;
+padding: 1px 0 0 0;
+}
+.cal div.da-d {
+font-family: Arial, Verdana;
+font-size: 8pt;
+position: relative;
+border-style: none;
+width: 16px;
+height: 14px;
+}
+.cal div.da-a {
+background-color: #CCFFCC;
+}
+.cal div.da-b {
+background-color: #F45B28;
+}
+.cal div.da-r {
+background-color: #FFFF66;
+}
+
+.cal div.da-an {
+background-color: #009900;
+}
+.cal div.da-bn {
+background-color: #7F2003;
+}
+.cal div.da-rn {
+background-color: #EDBF31;
+}
+
+.cal div.d {
+position: absolute;
+top: 0px;
+left: 0px;
+border-style: solid;
+width: 0px;
+height: 0px;
+line-height: 0px;
+border-width: 7px 8px 7px 8px;
+}
+
+.cal div.d-ba {
+border-color: #F45B28 #CCFFCC #CCFFCC #F45B28;
+}
+.cal div.d-ab {
+border-color: #CCFFCC #F45B28 #F45B28 #CCFFCC;
+}
+.cal div.d-ra {
+border-color: #FFFF66 #CCFFCC #CCFFCC #FFFF66;
+}
+.cal div.d-ar {
+border-color: #CCFFCC #FFFF66 #FFFF66 #CCFFCC;
+}
+.cal div.d-br {
+border-color: #F45B28 #FFFF66 #FFFF66 #F45B28;
+}
+.cal div.d-rb {
+border-color: #FFFF66 #F45B28 #F45B28 #FFFF66;
+}
+
+.cal div.d-a {
+border-color: #CCFFCC transparent transparent #CCFFCC;
+}
+.cal div.d-b {
+border-color: #F45B28 transparent transparent #F45B28;
+}
+.cal div.d-r {
+border-color: #FFFF66 transparent transparent #FFFF66;
+}
+
+.cal div.d-an {
+border-color: #009900 transparent transparent #009900;
+}
+.cal div.d-bn {
+border-color: #7F2003 transparent transparent #7F2003;
+}
+.cal div.d-rn {
+border-color: #EDBF31 transparent transparent #EDBF31;
+}
+
+.cal div.cap {
+float: left;
+margin-bottom: 4px;
+padding: 1px;
+font-size: 8pt;
+color: #000000;
+border-style: solid;
+border-width: 1px;
+border-color: #C0C0C0;
+}
+.cal div.cap-ad {
+margin: 2px;
+float: left;
+position: relative;
+width: 12px;
+height: 12px;
+border-style: solid;
+border-width: 1px;
+border-color: #BBB;
+}
+.cal div.cap-d {
+position: absolute;
+top: 0px;
+left: 0px;
+border-style: solid;
+width: 0px;
+height: 0px;
+line-height: 0px;
+border-width: 5px 5px 5px 5px;
+}
+.cal div.cap-d-ab {
+border-color: #CCFFCC #F45B28 #F45B28 #CCFFCC;
+}
+.cal div.cap-desc {
+float: left;
+margin: 2px;
+}
+.cal div.cop {
+padding: 3px;
+float: left;
+font-family: Arial, Verdana;
+text-align: center;
+color: #AAAAAA;
+font-size: 8pt;
+}
+
+.cal a.next {
+color: #CC3300;
+font-size: 13px;
+text-decoration: none;
+}
+.cal a.next:hover {
+color: #CC3300;
+font-size: 13px;
+text-decoration: underline;
+}
+.cal a.next > div {
+background-color: #FFF;
+padding: 6px;
+margin: 4px 1px 4px 0px;
+width: 160px;
+}
+</style>
+</head>
+<body style="background: transparent">
+<script>
+window.onload = function() {
+window.parent.postMessage(
+{type: "ostseereisen_calendar_height", height: getHeight()}, "*"
+);
+window.onresize = function() {
+window.parent.postMessage(
+{type: "ostseereisen_calendar_height", height: getHeight()}, "*"
+);
+};
+};
+function getHeight() {
+var h = 0;
+var w = document.documentElement.scrollWidth;
+if (w < 264) {
+h = 1732;
+} else if (w < 389) {
+h = 903;
+} else if (w < 512) {
+h = 626;
+} else {
+h = 478;
+}
+return h;
+}
+</script>
+<div class="cal">
+<div class="cal-all">
+<div class="cap">
+<div class="cap-ad da-b"></div>
+<div class="cap-desc">Belegt</div>
+<div style="float:left; width:4px;"> </div>
+<div class="cap-ad da-b">
+<div class="cap-d cap-d-ab"></div>
+</div>
+<div class="cap-desc">An-/Abreise</div>
+<div style="float:left; width:4px;"> </div>
+<div class="cap-ad da-r"></div>
+<div class="cap-desc">Reservierung</div>
+</div>
+<div class="cop">Copyright © 2026 Ostsee-Reisen.de</div><div class="cf"></div><div class="amb">
+<div class="mb">
+<div class="mh">
+Apr 2026
+</div>
+<div class="wds">
+<p>Mo</p>
+<p>Di</p>
+<p>Mi</p>
+<p>Do</p>
+<p>Fr</p>
+<p>Sa</p>
+<p>So</p>
+<div class="cf"></div>
+</div>
+<div class="dbs">
+<div class="db e"><p></p>
+<p></p></div>
+<div class="db b"><p>1</p>
+<p>2</p>
+<p>3</p>
+<p>4</p>
+<p>5</p>
+<div class="cf"></div>
+<p>6</p>
+<p>7</p>
+<p>8</p>
+<p>9</p>
+<p>10</p>
+<p>11</p>
+<p>12</p>
+<div class="cf"></div>
+<p>13</p>
+<p>14</p>
+<p>15</p>
+<p>16</p>
+<p>17</p>
+<p>18</p>
+<p>19</p>
+<div class="cf"></div>
+<p>20</p>
+<p>21</p>
+<p>22</p>
+<p>23</p>
+<p>24</p>
+</div><div class="db a"><div class="da da-a"><div class="d d-ba"></div><div class="da-d">25</div></div>
+</div><div class="db b"><div class="da da-b"><div class="d d-ab"></div><div class="da-d">26</div></div>
+<div class="cf"></div>
+<p>27</p>
+<p>28</p>
+<p>29</p>
+<p>30</p></div>
+<div class="db e"><p></p>
+<p></p>
+<p></p>
+<div class="cf"></div>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p></div>
+<div class="cf"></div>
+</div>
+</div>
+<div class="mb">
+<div class="mh">
+Mai 2026
+</div>
+<div class="wds">
+<p>Mo</p>
+<p>Di</p>
+<p>Mi</p>
+<p>Do</p>
+<p>Fr</p>
+<p>Sa</p>
+<p>So</p>
+<div class="cf"></div>
+</div>
+<div class="dbs">
+<div class="db e"><p></p>
+<p></p>
+<p></p>
+<p></p></div>
+<div class="db b"><p>1</p>
+<p>2</p>
+<p>3</p>
+<div class="cf"></div>
+<p>4</p>
+<p>5</p>
+<p>6</p>
+<p>7</p>
+<p>8</p>
+<p>9</p>
+<p>10</p>
+<div class="cf"></div>
+<p>11</p>
+<p>12</p>
+<p>13</p>
+<p>14</p>
+<p>15</p>
+<p>16</p>
+</div><div class="db a"><div class="da da-a"><div class="d d-ba"></div><div class="da-d">17</div></div>
+<div class="cf"></div>
+<p>18</p>
+<p>19</p>
+<p>20</p>
+</div><div class="db b"><div class="da da-b"><div class="d d-ab"></div><div class="da-d">21</div></div>
+<p>22</p>
+<p>23</p>
+<p>24</p>
+<div class="cf"></div>
+<p>25</p>
+<p>26</p>
+<p>27</p>
+<p>28</p>
+<p>29</p>
+<p>30</p>
+<p>31</p></div>
+<div class="cf"></div>
+<div class="db e"><p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p></div>
+<div class="cf"></div>
+</div>
+</div>
+<div class="mb">
+<div class="mh">
+Jun 2026
+</div>
+<div class="wds">
+<p>Mo</p>
+<p>Di</p>
+<p>Mi</p>
+<p>Do</p>
+<p>Fr</p>
+<p>Sa</p>
+<p>So</p>
+<div class="cf"></div>
+</div>
+<div class="dbs">
+<div class="db b"><p>1</p>
+<p>2</p>
+<p>3</p>
+<p>4</p>
+<p>5</p>
+<p>6</p>
+<p>7</p>
+<div class="cf"></div>
+<p>8</p>
+<p>9</p>
+<p>10</p>
+<p>11</p>
+<p>12</p>
+<p>13</p>
+<p>14</p>
+<div class="cf"></div>
+<p>15</p>
+<p>16</p>
+<p>17</p>
+<p>18</p>
+<p>19</p>
+<p>20</p>
+<p>21</p>
+<div class="cf"></div>
+<p>22</p>
+<p>23</p>
+<p>24</p>
+<p>25</p>
+<p>26</p>
+</div><div class="db a"><div class="da da-a"><div class="d d-ba"></div><div class="da-d">27</div></div>
+<p>28</p>
+<div class="cf"></div>
+<p>29</p>
+</div><div class="db b"><div class="da da-b"><div class="d d-ab"></div><div class="da-d">30</div></div></div>
+<div class="db e"><p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<div class="cf"></div>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p></div>
+<div class="cf"></div>
+</div>
+</div>
+<div class="mb">
+<div class="mh">
+Jul 2026
+</div>
+<div class="wds">
+<p>Mo</p>
+<p>Di</p>
+<p>Mi</p>
+<p>Do</p>
+<p>Fr</p>
+<p>Sa</p>
+<p>So</p>
+<div class="cf"></div>
+</div>
+<div class="dbs">
+<div class="db e"><p></p>
+<p></p></div>
+<div class="db b"><p>1</p>
+<p>2</p>
+<p>3</p>
+<p>4</p>
+<p>5</p>
+<div class="cf"></div>
+<p>6</p>
+<p>7</p>
+<p>8</p>
+<p>9</p>
+<p>10</p>
+<p>11</p>
+<p>12</p>
+<div class="cf"></div>
+<p>13</p>
+<p>14</p>
+<p>15</p>
+<p>16</p>
+<p>17</p>
+<p>18</p>
+<p>19</p>
+<div class="cf"></div>
+<p>20</p>
+<p>21</p>
+<p>22</p>
+<p>23</p>
+<p>24</p>
+<p>25</p>
+<p>26</p>
+<div class="cf"></div>
+<p>27</p>
+<p>28</p>
+<p>29</p>
+<p>30</p>
+<p>31</p></div>
+<div class="db e"><p></p>
+<p></p>
+<div class="cf"></div>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p></div>
+<div class="cf"></div>
+</div>
+</div>
+<div class="mb">
+<div class="mh">
+Aug 2026
+</div>
+<div class="wds">
+<p>Mo</p>
+<p>Di</p>
+<p>Mi</p>
+<p>Do</p>
+<p>Fr</p>
+<p>Sa</p>
+<p>So</p>
+<div class="cf"></div>
+</div>
+<div class="dbs">
+<div class="db e"><p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p></div>
+<div class="db b"><p>1</p>
+<p>2</p>
+<div class="cf"></div>
+<p>3</p>
+<p>4</p>
+<p>5</p>
+<p>6</p>
+<p>7</p>
+<p>8</p>
+<p>9</p>
+<div class="cf"></div>
+<p>10</p>
+<p>11</p>
+<p>12</p>
+<p>13</p>
+<p>14</p>
+<p>15</p>
+</div><div class="db a"><div class="da da-a"><div class="d d-ba"></div><div class="da-d">16</div></div>
+<div class="cf"></div>
+<p>17</p>
+<p>18</p>
+<p>19</p>
+</div><div class="db b"><div class="da da-b"><div class="d d-ab"></div><div class="da-d">20</div></div>
+<p>21</p>
+<p>22</p>
+<p>23</p>
+<div class="cf"></div>
+<p>24</p>
+<p>25</p>
+<p>26</p>
+<p>27</p>
+<p>28</p>
+<p>29</p>
+<p>30</p>
+<div class="cf"></div>
+<p>31</p></div>
+<div class="db e"><p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p></div>
+<div class="cf"></div>
+</div>
+</div>
+<div class="mb">
+<div class="mh">
+Sep 2026
+</div>
+<div class="wds">
+<p>Mo</p>
+<p>Di</p>
+<p>Mi</p>
+<p>Do</p>
+<p>Fr</p>
+<p>Sa</p>
+<p>So</p>
+<div class="cf"></div>
+</div>
+<div class="dbs">
+<div class="db e"><p></p></div>
+<div class="db b"><p>1</p>
+<p>2</p>
+<p>3</p>
+<p>4</p>
+<p>5</p>
+<p>6</p>
+<div class="cf"></div>
+<p>7</p>
+<p>8</p>
+<p>9</p>
+<p>10</p>
+<p>11</p>
+<p>12</p>
+<p>13</p>
+<div class="cf"></div>
+<p>14</p>
+<p>15</p>
+<p>16</p>
+<p>17</p>
+<p>18</p>
+<p>19</p>
+<p>20</p>
+<div class="cf"></div>
+<p>21</p>
+<p>22</p>
+<p>23</p>
+<p>24</p>
+<p>25</p>
+<p>26</p>
+<p>27</p>
+<div class="cf"></div>
+<p>28</p>
+<p>29</p>
+<p>30</p></div>
+<div class="db e"><p></p>
+<p></p>
+<p></p>
+<p></p>
+<div class="cf"></div>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p></div>
+<div class="cf"></div>
+</div>
+</div>
+<div class="mb">
+<div class="mh">
+Okt 2026
+</div>
+<div class="wds">
+<p>Mo</p>
+<p>Di</p>
+<p>Mi</p>
+<p>Do</p>
+<p>Fr</p>
+<p>Sa</p>
+<p>So</p>
+<div class="cf"></div>
+</div>
+<div class="dbs">
+<div class="db e"><p></p>
+<p></p>
+<p></p></div>
+<div class="db b"><p>1</p>
+<p>2</p>
+<p>3</p>
+<p>4</p>
+<div class="cf"></div>
+<p>5</p>
+<p>6</p>
+<p>7</p>
+<p>8</p>
+<p>9</p>
+<p>10</p>
+<p>11</p>
+<div class="cf"></div>
+<p>12</p>
+<p>13</p>
+<p>14</p>
+<p>15</p>
+<p>16</p>
+<p>17</p>
+<p>18</p>
+<div class="cf"></div>
+<p>19</p>
+<p>20</p>
+<p>21</p>
+<p>22</p>
+<p>23</p>
+<p>24</p>
+<p>25</p>
+<div class="cf"></div>
+<p>26</p>
+<p>27</p>
+<p>28</p>
+<p>29</p>
+<p>30</p>
+<p>31</p></div>
+<div class="db e"><p></p>
+<div class="cf"></div>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p></div>
+<div class="cf"></div>
+</div>
+</div>
+<div class="mb">
+<div class="mh">
+Nov 2026
+</div>
+<div class="wds">
+<p>Mo</p>
+<p>Di</p>
+<p>Mi</p>
+<p>Do</p>
+<p>Fr</p>
+<p>Sa</p>
+<p>So</p>
+<div class="cf"></div>
+</div>
+<div class="dbs">
+<div class="db e"><p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p></div>
+<div class="db b"><p>1</p>
+<div class="cf"></div>
+<p>2</p>
+<p>3</p>
+<p>4</p>
+<p>5</p>
+<p>6</p>
+</div><div class="db a"><div class="da da-a"><div class="d d-ba"></div><div class="da-d">7</div></div>
+<p>8</p>
+<div class="cf"></div>
+<p>9</p>
+<p>10</p>
+<p>11</p>
+<p>12</p>
+<p>13</p>
+<p>14</p>
+<p>15</p>
+<div class="cf"></div>
+<p>16</p>
+<p>17</p>
+<p>18</p>
+<p>19</p>
+<p>20</p>
+<p>21</p>
+<p>22</p>
+<div class="cf"></div>
+<p>23</p>
+<p>24</p>
+<p>25</p>
+<p>26</p>
+<p>27</p>
+<p>28</p>
+<p>29</p>
+<div class="cf"></div>
+<p>30</p></div>
+<div class="db e"><p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p></div>
+<div class="cf"></div>
+</div>
+</div>
+<div class="mb">
+<div class="mh">
+Dez 2026
+</div>
+<div class="wds">
+<p>Mo</p>
+<p>Di</p>
+<p>Mi</p>
+<p>Do</p>
+<p>Fr</p>
+<p>Sa</p>
+<p>So</p>
+<div class="cf"></div>
+</div>
+<div class="dbs">
+<div class="db e"><p></p></div>
+<div class="db a"><p>1</p>
+<p>2</p>
+<p>3</p>
+<p>4</p>
+<p>5</p>
+<p>6</p>
+<div class="cf"></div>
+<p>7</p>
+<p>8</p>
+<p>9</p>
+<p>10</p>
+<p>11</p>
+<p>12</p>
+<p>13</p>
+<div class="cf"></div>
+<p>14</p>
+<p>15</p>
+<p>16</p>
+<p>17</p>
+<p>18</p>
+<p>19</p>
+<p>20</p>
+<div class="cf"></div>
+<p>21</p>
+<p>22</p>
+<p>23</p>
+<p>24</p>
+<p>25</p>
+<p>26</p>
+</div><div class="db b"><div class="da da-b"><div class="d d-ab"></div><div class="da-d">27</div></div>
+<div class="cf"></div>
+<p>28</p>
+<p>29</p>
+<p>30</p>
+<p>31</p></div>
+<div class="db e"><p></p>
+<p></p>
+<p></p>
+<div class="cf"></div>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p></div>
+<div class="cf"></div>
+</div>
+</div>
+<div class="mb">
+<div class="mh">
+Jan 2027
+</div>
+<div class="wds">
+<p>Mo</p>
+<p>Di</p>
+<p>Mi</p>
+<p>Do</p>
+<p>Fr</p>
+<p>Sa</p>
+<p>So</p>
+<div class="cf"></div>
+</div>
+<div class="dbs">
+<div class="db e"><p></p>
+<p></p>
+<p></p>
+<p></p></div>
+<div class="db b"><p>1</p>
+</div><div class="db a"><div class="da da-a"><div class="d d-ba"></div><div class="da-d">2</div></div>
+<p>3</p>
+<div class="cf"></div>
+<p>4</p>
+<p>5</p>
+<p>6</p>
+<p>7</p>
+<p>8</p>
+<p>9</p>
+<p>10</p>
+<div class="cf"></div>
+</div><div class="db b"><div class="da da-b"><div class="d d-ab"></div><div class="da-d">11</div></div>
+<p>12</p>
+<p>13</p>
+<p>14</p>
+<p>15</p>
+<p>16</p>
+<p>17</p>
+<div class="cf"></div>
+<p>18</p>
+</div><div class="db a"><div class="da da-a"><div class="d d-ba"></div><div class="da-d">19</div></div>
+<p>20</p>
+<p>21</p>
+<p>22</p>
+<p>23</p>
+<p>24</p>
+<div class="cf"></div>
+<p>25</p>
+<p>26</p>
+<p>27</p>
+<p>28</p>
+<p>29</p>
+<p>30</p>
+<p>31</p></div>
+<div class="cf"></div>
+<div class="db e"><p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p></div>
+<div class="cf"></div>
+</div>
+</div>
+<div class="mb">
+<div class="mh">
+Feb 2027
+</div>
+<div class="wds">
+<p>Mo</p>
+<p>Di</p>
+<p>Mi</p>
+<p>Do</p>
+<p>Fr</p>
+<p>Sa</p>
+<p>So</p>
+<div class="cf"></div>
+</div>
+<div class="dbs">
+<div class="db a"><p>1</p>
+<p>2</p>
+<p>3</p>
+<p>4</p>
+<p>5</p>
+<p>6</p>
+</div><div class="db b"><div class="da da-b"><div class="d d-ab"></div><div class="da-d">7</div></div>
+<div class="cf"></div>
+<p>8</p>
+<p>9</p>
+<p>10</p>
+<p>11</p>
+<p>12</p>
+<p>13</p>
+</div><div class="db a"><div class="da da-a"><div class="d d-ba"></div><div class="da-d">14</div></div>
+<div class="cf"></div>
+<p>15</p>
+<p>16</p>
+<p>17</p>
+<p>18</p>
+<p>19</p>
+<p>20</p>
+<p>21</p>
+<div class="cf"></div>
+<p>22</p>
+<p>23</p>
+<p>24</p>
+<p>25</p>
+<p>26</p>
+<p>27</p>
+<p>28</p></div>
+<div class="cf"></div>
+<div class="db e"><p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<div class="cf"></div>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p></div>
+<div class="cf"></div>
+</div>
+</div>
+<div class="mb">
+<div class="mh">
+Mrz 2027
+</div>
+<div class="wds">
+<p>Mo</p>
+<p>Di</p>
+<p>Mi</p>
+<p>Do</p>
+<p>Fr</p>
+<p>Sa</p>
+<p>So</p>
+<div class="cf"></div>
+</div>
+<div class="dbs">
+<div class="db a"><p>1</p>
+<p>2</p>
+<p>3</p>
+<p>4</p>
+<p>5</p>
+<p>6</p>
+<p>7</p>
+<div class="cf"></div>
+<p>8</p>
+<p>9</p>
+<p>10</p>
+<p>11</p>
+<p>12</p>
+<p>13</p>
+</div><div class="db b"><div class="da da-b"><div class="d d-ab"></div><div class="da-d">14</div></div>
+<div class="cf"></div>
+<p>15</p>
+<p>16</p>
+<p>17</p>
+<p>18</p>
+</div><div class="db a"><div class="da da-a"><div class="d d-ba"></div><div class="da-d">19</div></div>
+</div><div class="db b"><div class="da da-b"><div class="d d-ab"></div><div class="da-d">20</div></div>
+<p>21</p>
+<div class="cf"></div>
+<p>22</p>
+<p>23</p>
+<p>24</p>
+<p>25</p>
+<p>26</p>
+</div><div class="db a"><div class="da da-a"><div class="d d-ba"></div><div class="da-d">27</div></div>
+<p>28</p>
+<div class="cf"></div>
+<p>29</p>
+<p>30</p>
+<p>31</p></div>
+<div class="db e"><p></p>
+<p></p>
+<p></p>
+<p></p>
+<div class="cf"></div>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p>
+<p></p></div>
+<div class="cf"></div>
+</div>
+</div></div><div class="cf"></div>
+</div>
+
+<a href="/api/availability-calendar/v2/apartment/11343.html?p=2" class="next"><div>nächste 12 Monate >></div></a>
+
+
+</div>
+</body>
+</html>