Compare commits
1632 Commits
49-plausib
...
auto-merge
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cd61ccd097 | ||
|
|
36bcacd8a2 | ||
|
|
d6fc6be6d0 | ||
|
|
5869b282c4 | ||
|
|
e2f230e240 | ||
|
|
b8bb16b0ba | ||
|
|
42b2767c70 | ||
|
|
7e047125a7 | ||
|
|
058a84025c | ||
|
|
d76b8b4e14 | ||
|
|
58a8136479 | ||
|
|
c7f18dd7ae | ||
|
|
235969ccda | ||
|
|
fe06c09336 | ||
|
|
01d3824514 | ||
|
|
39e91dae7b | ||
|
|
8d7d59bb4e | ||
|
|
ed33d19648 | ||
|
|
6600d8dee8 | ||
|
|
7fed3d0625 | ||
|
|
9efce15f51 | ||
|
|
4acca5591c | ||
|
|
da7f91bab3 | ||
|
|
bb3caa04c4 | ||
|
|
e18f27675d | ||
|
|
1380dcb43a | ||
|
|
a8be6db8aa | ||
|
|
cee45ffef5 | ||
|
|
e24310bdb7 | ||
|
|
39e8527c59 | ||
|
|
76bd0bb5dd | ||
|
|
4b9e7dda5f | ||
|
|
73b44d574b | ||
|
|
f778641be6 | ||
|
|
75723d666e | ||
|
|
272b044157 | ||
|
|
10bc17963a | ||
|
|
35c24b0380 | ||
|
|
3e09686cf6 | ||
|
|
aca01b859f | ||
|
|
344651dfc1 | ||
|
|
4a2eb72f0a | ||
|
|
eb1763a6c1 | ||
|
|
e276c71461 | ||
|
|
2bf4eba44d | ||
|
|
9e2d7ecf08 | ||
|
|
058b61908f | ||
|
|
5a6bfcc900 | ||
|
|
ec0d5ddf5a | ||
|
|
7204957749 | ||
|
|
8c4345924f | ||
|
|
ed609a4690 | ||
|
|
b29b26ef0e | ||
|
|
d6f01bef98 | ||
|
|
bfb17795a6 | ||
|
|
dc5c6ac557 | ||
|
|
6416b0f749 | ||
|
|
a094036d07 | ||
|
|
8c69e6add1 | ||
|
|
78decc697e | ||
|
|
5c846ec400 | ||
|
|
b13b145d16 | ||
|
|
c2542e7dab | ||
|
|
422a03a2e8 | ||
|
|
e09513d50e | ||
|
|
e159e81c2d | ||
|
|
a113d09775 | ||
|
|
25aa048c4a | ||
|
|
207bf31058 | ||
|
|
f9daeceeca | ||
|
|
b47a5fd5f6 | ||
|
|
88c35f81f7 | ||
|
|
cc583080ea | ||
|
|
e535cdaeba | ||
|
|
f17a8a6481 | ||
|
|
d5fb937dd6 | ||
|
|
23246fbda2 | ||
|
|
735344cea4 | ||
|
|
8488472ebc | ||
|
|
299ec89216 | ||
|
|
a9aaa508f5 | ||
|
|
52261e8d2a | ||
|
|
4ac3999f67 | ||
|
|
9c059eb4b6 | ||
|
|
ba5d5ac5d5 | ||
|
|
6d48cee1fa | ||
|
|
d157ed3c0f | ||
|
|
0495d48669 | ||
|
|
7ba5c9de92 | ||
|
|
b64282a7ca | ||
|
|
bd67288887 | ||
|
|
68f51d4553 | ||
|
|
5dbbde0856 | ||
|
|
a9f01a5a8e | ||
|
|
28a383a476 | ||
|
|
56b6bcd1a1 | ||
|
|
14b3cdf744 | ||
|
|
38f77d862d | ||
|
|
f3c2c82d8d | ||
|
|
87f6bf14d8 | ||
|
|
72ed91ddcc | ||
|
|
a4c3c38912 | ||
|
|
e86b44f5a0 | ||
|
|
101b1e9aab | ||
|
|
ecd4b08119 | ||
|
|
f958eb07bf | ||
|
|
611866508c | ||
|
|
076c49c054 | ||
|
|
9c8b1b1913 | ||
|
|
cfad65878e | ||
|
|
379ae672c4 | ||
|
|
b568f5c101 | ||
|
|
7c36bb8728 | ||
|
|
df0fa82482 | ||
|
|
70fd424488 | ||
|
|
8470ad5915 | ||
|
|
a8a9553d20 | ||
|
|
8d8fb96f0d | ||
|
|
25280f2cd1 | ||
|
|
3ab5992210 | ||
|
|
de8dd9e9f1 | ||
|
|
3e15724c3e | ||
|
|
dfe7856d03 | ||
|
|
b70417e9ed | ||
|
|
f5d6fa03e5 | ||
|
|
e35378ced8 | ||
|
|
414727fdc1 | ||
|
|
e2c14dace9 | ||
|
|
568f9769ee | ||
|
|
6901973e5c | ||
|
|
a588837605 | ||
|
|
6e6ac36178 | ||
|
|
cfc6d3c230 | ||
|
|
b6aa1fdf6d | ||
|
|
d9f6b7e825 | ||
|
|
68bffa8944 | ||
|
|
f8e890e9a9 | ||
|
|
64eb0d4e15 | ||
|
|
d7a862e061 | ||
|
|
6a2c386b5d | ||
|
|
62e6dd44b9 | ||
|
|
05b31a4862 | ||
|
|
55305f31b7 | ||
|
|
1f86a063ef | ||
|
|
217885587e | ||
|
|
28f8933f72 | ||
|
|
5360ec3d24 | ||
|
|
6339a3aeda | ||
|
|
974d0e28a1 | ||
|
|
e9dab58a57 | ||
|
|
3aa72ea258 | ||
|
|
0b161cf53e | ||
|
|
590723b297 | ||
|
|
fd390238d9 | ||
|
|
6388669d66 | ||
|
|
b475e4dd79 | ||
|
|
f5373fc7b1 | ||
|
|
265e58d80d | ||
|
|
d2fac65a6d | ||
|
|
b0df7fc4cf | ||
|
|
e21a829cb6 | ||
|
|
bef1cff348 | ||
|
|
f9555c7a1e | ||
|
|
03389a04ba | ||
|
|
008a6f05a5 | ||
|
|
6aa8816dd1 | ||
|
|
70427e8a45 | ||
|
|
51ea0ec007 | ||
|
|
1381f5787a | ||
|
|
722db2d2ec | ||
|
|
72458f4631 | ||
|
|
bde6b3e102 | ||
|
|
936ca5abaa | ||
|
|
1f03bf5570 | ||
|
|
e7e2390bcd | ||
|
|
3ac6164c82 | ||
|
|
3bb6778e67 | ||
|
|
fa797c00c2 | ||
|
|
f0ae1a9205 | ||
|
|
af7da9c07f | ||
|
|
4106253b58 | ||
|
|
c787dce10c | ||
|
|
b265910b2a | ||
|
|
5e3f4c0f59 | ||
|
|
2fe07ebfad | ||
|
|
7be766d2c7 | ||
|
|
15651fc803 | ||
|
|
5b3b81551e | ||
|
|
330841f8ee | ||
|
|
0708c6ce43 | ||
|
|
2c1945584d | ||
|
|
183178f943 | ||
|
|
b1b95159fa | ||
|
|
b0828592c5 | ||
|
|
21446b3bf3 | ||
|
|
935fbfba78 | ||
|
|
fa195a79f5 | ||
|
|
f6a367c567 | ||
|
|
bf6d8f47e7 | ||
|
|
02761610d1 | ||
|
|
bf3107d3b7 | ||
|
|
66e596bb57 | ||
|
|
cdfdb6c001 | ||
|
|
c583229cc8 | ||
|
|
417009fd6e | ||
|
|
d3ffbca858 | ||
|
|
db4fc19c1a | ||
|
|
eefae0635a | ||
|
|
1d7c12ec60 | ||
|
|
4d7f94e292 | ||
|
|
e13810b16a | ||
|
|
d4be779cf1 | ||
|
|
3912262f4b | ||
|
|
ed753b71c1 | ||
|
|
5b78e8b075 | ||
|
|
71dd1de503 | ||
|
|
2a95f7750a | ||
|
|
6d3dcb503a | ||
|
|
57c6bbd96c | ||
|
|
3f18ad9c59 | ||
|
|
c09cdcc788 | ||
|
|
473ff8d774 | ||
|
|
4ec3f42a8b | ||
|
|
36a4d7415c | ||
|
|
df81964b86 | ||
|
|
7130b6ba65 | ||
|
|
bfa79fb06e | ||
|
|
52e2459d47 | ||
|
|
5081f70570 | ||
|
|
f4e6b7baf8 | ||
|
|
e55388e4b7 | ||
|
|
f14c376791 | ||
|
|
071fd8c7be | ||
|
|
2bb2bd74db | ||
|
|
9d9fdebf3a | ||
|
|
0d9675fb35 | ||
|
|
7b5b272c17 | ||
|
|
a7427c3462 | ||
|
|
2b8ebcf182 | ||
|
|
eb72b600b4 | ||
|
|
606b851661 | ||
|
|
15f94c7752 | ||
|
|
04dbd4adcd | ||
|
|
853fe54e3b | ||
|
|
e2490f2296 | ||
|
|
cbddcf0968 | ||
|
|
8b1e5df851 | ||
|
|
29d8e5e7b3 | ||
|
|
e86328b0c2 | ||
|
|
b8d37d4e38 | ||
|
|
fd93f3fd54 | ||
|
|
9035de79ce | ||
|
|
2304de45b1 | ||
|
|
f1007d325f | ||
|
|
44679dbef0 | ||
|
|
682c97b3e7 | ||
|
|
b65c3eeeaa | ||
|
|
883c019293 | ||
|
|
50c2e3a6ce | ||
|
|
b7082e2318 | ||
|
|
f30b1cbd09 | ||
|
|
8936479c78 | ||
|
|
f02b30c6b5 | ||
|
|
fd34f6bcf7 | ||
|
|
e9eb113c33 | ||
|
|
1caee4e19e | ||
|
|
e18188d2a8 | ||
|
|
682cf056b6 | ||
|
|
5d11889fb2 | ||
|
|
566780b5e2 | ||
|
|
2d025b9fde | ||
|
|
64e97b6593 | ||
|
|
a05daedc54 | ||
|
|
e5756abb4d | ||
|
|
bfd30ace70 | ||
|
|
5858bff825 | ||
|
|
99c1a127b4 | ||
|
|
70af2e2d07 | ||
|
|
7db145af7c | ||
|
|
dfe13dd6bd | ||
|
|
33596e4b61 | ||
|
|
ca9c1b025a | ||
|
|
ca5102cd77 | ||
|
|
cfe160f34d | ||
|
|
d0a7033bf4 | ||
|
|
415291b083 | ||
|
|
4208c3ecc5 | ||
|
|
76dbe27c5d | ||
|
|
cfbf1dd69b | ||
|
|
313b6e328e | ||
|
|
22532f3783 | ||
|
|
3ced32b235 | ||
|
|
300b1d5ea3 | ||
|
|
40df8c7104 | ||
|
|
83727ac71d | ||
|
|
f31d710b20 | ||
|
|
6da7c0e501 | ||
|
|
f7b6a50482 | ||
|
|
48f72a2f0f | ||
|
|
43d2c114f4 | ||
|
|
aa84dd967e | ||
|
|
c413f76fe2 | ||
|
|
7762310bf3 | ||
|
|
7dd3a6c60d | ||
|
|
80a6992f5b | ||
|
|
4b651b733b | ||
|
|
c269306d9d | ||
|
|
cf0f0bdee0 | ||
|
|
d4e2d50e00 | ||
|
|
e303c44822 | ||
|
|
3eb30d2248 | ||
|
|
9b6b30ae30 | ||
|
|
9d9e6f7786 | ||
|
|
98f32ca279 | ||
|
|
ab7e5bc6d6 | ||
|
|
636c5463b2 | ||
|
|
85c0216e9d | ||
|
|
5e2861546f | ||
|
|
c1fc08ecba | ||
|
|
458a6ab254 | ||
|
|
1259f642e1 | ||
|
|
3cb71b8e2c | ||
|
|
eb8bae6d69 | ||
|
|
4f382c150d | ||
|
|
53ea51885a | ||
|
|
f5ae2cd0d4 | ||
|
|
8860750487 | ||
|
|
a58c8d466e | ||
|
|
8daee69576 | ||
|
|
7665141a5a | ||
|
|
7327d39c57 | ||
|
|
9177ca18f0 | ||
|
|
0956744878 | ||
|
|
b0235056a7 | ||
|
|
d354189d3c | ||
|
|
07760aa26a | ||
|
|
13322836aa | ||
|
|
d8acd0476a | ||
|
|
a2e0d50b1f | ||
|
|
176f1c08ad | ||
|
|
1970a105a9 | ||
|
|
71438a39eb | ||
|
|
ba7792a4b9 | ||
|
|
145bf46ee1 | ||
|
|
ecdce5b279 | ||
|
|
c0d4ede483 | ||
|
|
3fa207ea9c | ||
|
|
2a302a4b59 | ||
|
|
42e0907bb9 | ||
|
|
a20aa88096 | ||
|
|
aef820f448 | ||
|
|
f487b25aa1 | ||
|
|
babd929f6a | ||
|
|
1d27e2bd67 | ||
|
|
2abb143cfe | ||
|
|
5289273fc2 | ||
|
|
32d8e2383e | ||
|
|
f9538e770a | ||
|
|
05b2711f7f | ||
|
|
703f06c7a7 | ||
|
|
6d8dcb1b0e | ||
|
|
1e883866ed | ||
|
|
17f2983c3a | ||
|
|
607dfed53f | ||
|
|
0f20fc1184 | ||
|
|
a8202ff10d | ||
|
|
e06c8273e8 | ||
|
|
63fda2ce72 | ||
|
|
7d3b0396c7 | ||
|
|
21c47a5310 | ||
|
|
2086ac3d9c | ||
|
|
c3ffc0446a | ||
|
|
33411d8473 | ||
|
|
528d4a33eb | ||
|
|
1332b8e798 | ||
|
|
f1bb2fc55c | ||
|
|
ef7e0a1df9 | ||
|
|
e8083462e2 | ||
|
|
86f8a9fba7 | ||
|
|
b7f9649036 | ||
|
|
3acf581775 | ||
|
|
18227c7beb | ||
|
|
0811e2dd16 | ||
|
|
f305d2f6eb | ||
|
|
c2ea0bcd37 | ||
|
|
6b0b88e9ac | ||
|
|
221e94a8d7 | ||
|
|
371b8422ce | ||
|
|
4b43aa3e8f | ||
|
|
d72a93fbff | ||
|
|
ba51f36a8e | ||
|
|
1fa3faff52 | ||
|
|
820da9a235 | ||
|
|
91485aa009 | ||
|
|
c8c6238583 | ||
|
|
624fd3c045 | ||
|
|
7b0fdbf5f8 | ||
|
|
1f4e2eb4ce | ||
|
|
0b89320007 | ||
|
|
074ee8b463 | ||
|
|
55ff99a4ca | ||
|
|
009e1a8cad | ||
|
|
6c108f0455 | ||
|
|
09cd167a70 | ||
|
|
4239bc7917 | ||
|
|
77665af171 | ||
|
|
2a51b96b24 | ||
|
|
559dfe38e6 | ||
|
|
2dadfebccf | ||
|
|
0bc4fd6670 | ||
|
|
516e854616 | ||
|
|
912970923f | ||
|
|
4e5ee5174f | ||
|
|
51e9a5c97c | ||
|
|
09c4f5b06e | ||
|
|
aff26d7e16 | ||
|
|
49920caecc | ||
|
|
5f9c010d09 | ||
|
|
edce3ca5a3 | ||
|
|
d0c4b32a2c | ||
|
|
3acd5c5170 | ||
|
|
79e8c9e19a | ||
|
|
cc2a92a2a5 | ||
|
|
f0e1126dbb | ||
|
|
8804346424 | ||
|
|
a194e8a17e | ||
|
|
f0dbb2a1af | ||
|
|
6fb22d2ee0 | ||
|
|
78523171e9 | ||
|
|
cfdfef039e | ||
|
|
fecbf8948b | ||
|
|
40d33532c8 | ||
|
|
69d40eb52b | ||
|
|
4c79e8cb67 | ||
|
|
3fa4ede71f | ||
|
|
15b818acdb | ||
|
|
fa4c4d16d0 | ||
|
|
5997037328 | ||
|
|
29c63a585d | ||
|
|
71f5093a49 | ||
|
|
be94bd482c | ||
|
|
14e1d89024 | ||
|
|
c8b41458e1 | ||
|
|
e2e576e4fe | ||
|
|
2f35b8c403 | ||
|
|
5ea258705c | ||
|
|
f4dbe590df | ||
|
|
f4bbc979f9 | ||
|
|
8175b97073 | ||
|
|
085cf9783b | ||
|
|
f80b04ee77 | ||
|
|
e1a83aed77 | ||
|
|
9acf9e1e50 | ||
|
|
75ade8ebaa | ||
|
|
0117f94c07 | ||
|
|
00772317e7 | ||
|
|
efc1e8329a | ||
|
|
fc9fca0ee6 | ||
|
|
5d66eb10ca | ||
|
|
84a3a2dd39 | ||
|
|
a9c2b5c173 | ||
|
|
1678ac64b8 | ||
|
|
83b618b59d | ||
|
|
302ae192ac | ||
|
|
3af32c0153 | ||
|
|
9f64f8a3c2 | ||
|
|
048c1fc4d4 | ||
|
|
6f00b66013 | ||
|
|
d42209c3a0 | ||
|
|
7ce6e1d7a0 | ||
|
|
666b94bfad | ||
|
|
a597947e80 | ||
|
|
51a8cc576b | ||
|
|
9901688668 | ||
|
|
c39efcdbf0 | ||
|
|
01cd027e09 | ||
|
|
e3f7214af2 | ||
|
|
f77a013767 | ||
|
|
8b3e6b80c4 | ||
|
|
9706a839d6 | ||
|
|
d38bd8a6ad | ||
|
|
9e7f1da680 | ||
|
|
499cbfb47d | ||
|
|
7c7e76ca82 | ||
|
|
a57c97f59d | ||
|
|
91872ee3d3 | ||
|
|
5cf9892da0 | ||
|
|
2db7508859 | ||
|
|
06eb1dff34 | ||
|
|
bba1fc0b47 | ||
|
|
113f40ebb1 | ||
|
|
147b1ff44f | ||
|
|
dee9afcda4 | ||
|
|
bf5cc87510 | ||
|
|
fb6b88c499 | ||
|
|
b1d5cde032 | ||
|
|
cb7b1f0c41 | ||
|
|
6c0ab35f91 | ||
|
|
219ffc7fbb | ||
|
|
973fd76d1a | ||
|
|
915898c26f | ||
|
|
8277eb100c | ||
|
|
aea651c7f7 | ||
|
|
959fcd7f3b | ||
|
|
8d73143932 | ||
|
|
e01de6f03e | ||
|
|
27027c0f0e | ||
|
|
90522e1f81 | ||
|
|
7ef726c7c2 | ||
|
|
ba459c2ef4 | ||
|
|
89256c8ab1 | ||
|
|
34af0d655f | ||
|
|
1c282c0d9a | ||
|
|
34a1f1015b | ||
|
|
661a75ee9c | ||
|
|
afd9ef16df | ||
|
|
48d94b08ad | ||
|
|
310794a049 | ||
|
|
cd7fce3b1b | ||
|
|
d47651b5a1 | ||
|
|
8e9dfc5153 | ||
|
|
de94e1ba6d | ||
|
|
5b6c0c7d97 | ||
|
|
d9dfa18e28 | ||
|
|
c66d7dd260 | ||
|
|
215640f57a | ||
|
|
539e7a6b36 | ||
|
|
5a1c02e6f5 | ||
|
|
45da8032de | ||
|
|
8703b3b633 | ||
|
|
69298f2c71 | ||
|
|
ab5f9d71d3 | ||
|
|
1cbb01c8e7 | ||
|
|
2d3db305db | ||
|
|
50b53e8bba | ||
|
|
65ccda0ac0 | ||
|
|
c25928cd18 | ||
|
|
6a0ffe25f2 | ||
|
|
850b0bfff8 | ||
|
|
a4f1e10f0e | ||
|
|
6bcad2fecc | ||
|
|
93f22bfe5d | ||
|
|
3f2d62e125 | ||
|
|
f85a61dcff | ||
|
|
5388b4eb91 | ||
|
|
02f70e84fc | ||
|
|
e0faf0bced | ||
|
|
3a66e21ebd | ||
|
|
4ecbeab1da | ||
|
|
9c34ac833c | ||
|
|
fc3f4b0e3e | ||
|
|
64978b7e65 | ||
|
|
4378f25642 | ||
|
|
9ad163a469 | ||
|
|
2a47b8f482 | ||
|
|
5084346b28 | ||
|
|
2391629b36 | ||
|
|
8964c9f533 | ||
|
|
2000e8b80e | ||
|
|
00015b30cd | ||
|
|
b4af4ad667 | ||
|
|
6b255232c6 | ||
|
|
54b9ff8ce5 | ||
|
|
b7f4f9e8a4 | ||
|
|
f4647ebd53 | ||
|
|
ed4f5fdf37 | ||
|
|
5f5cdc5728 | ||
|
|
0b93b2d230 | ||
|
|
7f213930b1 | ||
|
|
76240ce840 | ||
|
|
011f4b37ba | ||
|
|
691df89535 | ||
|
|
bbb0fcaa8f | ||
|
|
e741af6901 | ||
|
|
68dd22e509 | ||
|
|
2a1e3568af | ||
|
|
cf68652880 | ||
|
|
b1d2a40534 | ||
|
|
c588f69b0c | ||
|
|
8b489a94cc | ||
|
|
9b50053007 | ||
|
|
4979a1d112 | ||
|
|
08a26cbc2d | ||
|
|
51f6909aaf | ||
|
|
deb73f0e3c | ||
|
|
c93a78066c | ||
|
|
e69362536e | ||
|
|
a1e5945d73 | ||
|
|
c3c7fd313f | ||
|
|
c4de916057 | ||
|
|
096f325292 | ||
|
|
0333f9315a | ||
|
|
a5894a3285 | ||
|
|
d0e0f4aa27 | ||
|
|
f174cf8428 | ||
|
|
fc35f35f5f | ||
|
|
ad53e45c15 | ||
|
|
7b3166ad3a | ||
|
|
0e07d9784e | ||
|
|
a1b6681eeb | ||
|
|
ba96a54d2e | ||
|
|
aa429d0a0d | ||
|
|
a10c46d8cb | ||
|
|
4a59c69f68 | ||
|
|
d1ab64780b | ||
|
|
534b26080d | ||
|
|
1c0a391c16 | ||
|
|
142a1e2988 | ||
|
|
6214d2dd02 | ||
|
|
8b3c4b3b76 | ||
|
|
e867a74478 | ||
|
|
9b61b66890 | ||
|
|
25da5c9bb0 | ||
|
|
9b33755cdd | ||
|
|
d7f57a4d04 | ||
|
|
daf3307e2a | ||
|
|
3becee4b4f | ||
|
|
512dd0ecdf | ||
|
|
b466794e16 | ||
|
|
eed6d9b3bd | ||
|
|
6576609166 | ||
|
|
15b5ff8ac4 | ||
|
|
14ac72f8d2 | ||
|
|
76b7ccf5ec | ||
|
|
38079d6df4 | ||
|
|
5d6962b283 | ||
|
|
a860b133c9 | ||
|
|
4bf250734a | ||
|
|
af26efe23a | ||
|
|
5f35cf6f96 | ||
|
|
aea0732c42 | ||
|
|
49b090ea52 | ||
|
|
7c987f6581 | ||
|
|
1b96822f0b | ||
|
|
476ce29c57 | ||
|
|
d0c693a0fe | ||
|
|
096000d001 | ||
|
|
12a85136b3 | ||
|
|
567ad2cc12 | ||
|
|
0d4736f1f0 | ||
|
|
59e08e66fb | ||
|
|
3606fbd856 | ||
|
|
e3b1490493 | ||
|
|
5d2a3b4c30 | ||
|
|
41f8f9903e | ||
|
|
83690789ac | ||
|
|
bdc4f7bf0a | ||
|
|
6178dcd229 | ||
|
|
e9c4e3d0c3 | ||
|
|
1852c1071b | ||
|
|
bc1e84b4d2 | ||
|
|
d591a8700e | ||
|
|
8886a37630 | ||
|
|
924d3e8513 | ||
|
|
57a43f64d7 | ||
|
|
1a9c57546f | ||
|
|
f223373f4f | ||
|
|
2fac04a148 | ||
|
|
f328a8262f | ||
|
|
253b3d664f | ||
|
|
1c29b57d08 | ||
|
|
ad7abeba05 | ||
|
|
cc2b9bdbf1 | ||
|
|
dee753ddba | ||
|
|
af50e6ffad | ||
|
|
e825377ff1 | ||
|
|
1484f54fe2 | ||
|
|
80b88df992 | ||
|
|
35db825e6a | ||
|
|
f4aeff329a | ||
|
|
d7acd67326 | ||
|
|
ee7b1e4471 | ||
|
|
778d0435f3 | ||
|
|
74a6844981 | ||
|
|
8f9f79a02d | ||
|
|
4a81a08157 | ||
|
|
1bfa3276d6 | ||
|
|
afa97cbae9 | ||
|
|
85ba433452 | ||
|
|
f8f53d0ac9 | ||
|
|
e4888849b1 | ||
|
|
cdb8b500bc | ||
|
|
106c420447 | ||
|
|
83c6aa8550 | ||
|
|
f262710f59 | ||
|
|
04d69a4e95 | ||
|
|
e96ac71d1d | ||
|
|
399b43149b | ||
|
|
693b9968e9 | ||
|
|
4edd73de52 | ||
|
|
e7a554cac0 | ||
|
|
a973586a2b | ||
|
|
c682dc4409 | ||
|
|
f404f5a1fe | ||
|
|
3678cd7b37 | ||
|
|
14196bf66c | ||
|
|
3f5f1cebe7 | ||
|
|
8fc6a88f58 | ||
|
|
591c5ec9e6 | ||
|
|
57c05b8672 | ||
|
|
e6fdf39e00 | ||
|
|
fabef77366 | ||
|
|
b14d80d101 | ||
|
|
a04a71df23 | ||
|
|
eb4d67d04e | ||
|
|
0e5a74725e | ||
|
|
fdbe165343 | ||
|
|
a40a809e12 | ||
|
|
69e169362b | ||
|
|
6cf8910839 | ||
|
|
fb706c5999 | ||
|
|
b5d6ba731e | ||
|
|
224697fd06 | ||
|
|
065e9a5e14 | ||
|
|
999cfbc7cb | ||
|
|
5f075814dd | ||
|
|
dfcd3e359c | ||
|
|
67aaee6f09 | ||
|
|
c05d02b002 | ||
|
|
412d2dc7ef | ||
|
|
d3ca67399c | ||
|
|
21e87339b9 | ||
|
|
fa18a0f94e | ||
|
|
d050fcecec | ||
|
|
aa6effcc90 | ||
|
|
785e0f78ff | ||
|
|
c4942affe8 | ||
|
|
8ee620935e | ||
|
|
5ffcb4b3ff | ||
|
|
2a5416673b | ||
|
|
21446bf4e8 | ||
|
|
45ee28c332 | ||
|
|
c0df0d73af | ||
|
|
1ce0164e70 | ||
|
|
9d4359ea89 | ||
|
|
2eb44a9bb3 | ||
|
|
6242fc9ef8 | ||
|
|
270fcc329f | ||
|
|
0e50cbe118 | ||
|
|
47767e4316 | ||
|
|
37339da412 | ||
|
|
91704f6037 | ||
|
|
c9e372ce53 | ||
|
|
226e9a6d77 | ||
|
|
b2121ec76e | ||
|
|
77eaa41cc3 | ||
|
|
2e1ec82d77 | ||
|
|
8669b6d7ff | ||
|
|
192e71ac60 | ||
|
|
095655e9e8 | ||
|
|
fb14dbd6bc | ||
|
|
7c56d036fd | ||
|
|
fa272cf0f3 | ||
|
|
6a51b0b02f | ||
|
|
d6e137d50f | ||
|
|
6e49ba328e | ||
|
|
d31a958df7 | ||
|
|
993d58c170 | ||
|
|
d1e3b51635 | ||
|
|
1df144e5b2 | ||
|
|
3e160b3af1 | ||
|
|
26ea187a09 | ||
|
|
45e8ebb29d | ||
|
|
85fe01bc60 | ||
|
|
cba9d7a0e0 | ||
|
|
d672c957f9 | ||
|
|
685cb114f8 | ||
|
|
86532ec251 | ||
|
|
b283013116 | ||
|
|
927f0157be | ||
|
|
eac6f0c035 | ||
|
|
727ea1c924 | ||
|
|
d538f754c4 | ||
|
|
4d801eef4c | ||
|
|
dd60f42d7b | ||
|
|
8049af9f17 | ||
|
|
39476ac5d5 | ||
|
|
dc0dfff31f | ||
|
|
d228908430 | ||
|
|
d73b0af435 | ||
|
|
2f04be6da9 | ||
|
|
a38fea3955 | ||
|
|
850a51569f | ||
|
|
22ada149f4 | ||
|
|
051f758566 | ||
|
|
5bee70f95a | ||
|
|
bfcc44dbe2 | ||
|
|
cde5661e30 | ||
|
|
902743f0d9 | ||
|
|
52e07ea0bf | ||
|
|
daec65e051 | ||
|
|
7986adc9c6 | ||
|
|
0686f2930b | ||
|
|
faa8f2c673 | ||
|
|
69566f1c74 | ||
|
|
198912c792 | ||
|
|
df00cb88e2 | ||
|
|
b2f86696cc | ||
|
|
2b0fda66f1 | ||
|
|
47533d5794 | ||
|
|
78248ba0a4 | ||
|
|
b3b59591be | ||
|
|
c3da028ed7 | ||
|
|
feb3145169 | ||
|
|
003882a16a | ||
|
|
137cef3114 | ||
|
|
0777fc39eb | ||
|
|
9359ee0432 | ||
|
|
c8ba17fab3 | ||
|
|
faf9ef8b0b | ||
|
|
404f5845a4 | ||
|
|
8486421f12 | ||
|
|
3abaa89107 | ||
|
|
1af751042c | ||
|
|
0daa65bd94 | ||
|
|
c4350ec75a | ||
|
|
9951179b2a | ||
|
|
7f6430f20f | ||
|
|
5f8d30a5a3 | ||
|
|
f18b5ca03c | ||
|
|
74f05d404c | ||
|
|
8935479fad | ||
|
|
23cadae581 | ||
|
|
b6db5cde51 | ||
|
|
a9ab3daa6f | ||
|
|
0d0f6c8851 | ||
|
|
8ac9005e8b | ||
|
|
ae970e376e | ||
|
|
c6ab7adba3 | ||
|
|
dbd70febdb | ||
|
|
2acd91f270 | ||
|
|
0381a6f473 | ||
|
|
e86c4d94b8 | ||
|
|
8d1f95ec89 | ||
|
|
89ce919802 | ||
|
|
ed5b71f8bf | ||
|
|
0927883055 | ||
|
|
2ac1e3f436 | ||
|
|
66297101ff | ||
|
|
6e2f29c673 | ||
|
|
a4fe9b4f80 | ||
|
|
fe3b2809d9 | ||
|
|
e61481c1b0 | ||
|
|
8b3371cf26 | ||
|
|
e48753f9bd | ||
|
|
8b3578aa74 | ||
|
|
094b40e604 | ||
|
|
843c417f19 | ||
|
|
f4ba7c8111 | ||
|
|
01d3312989 | ||
|
|
60a0f3af70 | ||
|
|
de8e68e21b | ||
|
|
158752b16d | ||
|
|
b1feb53b79 | ||
|
|
28ece60c76 | ||
|
|
30f699297c | ||
|
|
91fd0ec516 | ||
|
|
c6c7d5bc14 | ||
|
|
06f05104ab | ||
|
|
23c95dab63 | ||
|
|
c52a700c88 | ||
|
|
e3844c8684 | ||
|
|
e0efad1cc5 | ||
|
|
41ac87f5e1 | ||
|
|
5e88f1d572 | ||
|
|
1f0b5b320b | ||
|
|
7cc1213644 | ||
|
|
cfa9115af8 | ||
|
|
c7b1bc7958 | ||
|
|
18ad4aa855 | ||
|
|
e9f7a2bb2f | ||
|
|
2cfb0ad42a | ||
|
|
ffcef0c03f | ||
|
|
e4f665af62 | ||
|
|
3f0d1f6906 | ||
|
|
2d103bfd80 | ||
|
|
fa7c1fd1c7 | ||
|
|
e962abdc7d | ||
|
|
c82540e49e | ||
|
|
a921e8286a | ||
|
|
cd7297b6f2 | ||
|
|
4a9e761b03 | ||
|
|
4daaedaaca | ||
|
|
52763a221c | ||
|
|
b2d81edc08 | ||
|
|
68896f9cf6 | ||
|
|
751123ad52 | ||
|
|
e734391a54 | ||
|
|
b3e0683e66 | ||
|
|
81dae556a4 | ||
|
|
efde2a9422 | ||
|
|
adabd1acec | ||
|
|
753072c074 | ||
|
|
03d9b8a0a0 | ||
|
|
829c176b50 | ||
|
|
64fa120ccd | ||
|
|
bc55b21025 | ||
|
|
01469e7d3f | ||
|
|
f4de276be5 | ||
|
|
f72eac2959 | ||
|
|
8c505c1430 | ||
|
|
4678d41cc5 | ||
|
|
93c51998b9 | ||
|
|
7add66ab78 | ||
|
|
5fc1dd8f80 | ||
|
|
9d5867839b | ||
|
|
22cbe52935 | ||
|
|
0fbec678c4 | ||
|
|
b9d0659109 | ||
|
|
b86b65f447 | ||
|
|
3aca6921e1 | ||
|
|
049fd312b8 | ||
|
|
46cb2c7b48 | ||
|
|
942b1ddda5 | ||
|
|
dac347b720 | ||
|
|
96799edc16 | ||
|
|
2592d4e917 | ||
|
|
02b15d85c0 | ||
|
|
337402bb85 | ||
|
|
9b2cac3343 | ||
|
|
eb8f5baf37 | ||
|
|
2d4ef435c0 | ||
|
|
56714f4006 | ||
|
|
86bbb85b13 | ||
|
|
6accdb29b2 | ||
|
|
c8feaf54c0 | ||
|
|
2caf9ead57 | ||
|
|
b006327c4e | ||
|
|
876381b372 | ||
|
|
70d7816c35 | ||
|
|
6b4d3b2953 | ||
|
|
cd5e4e0f1e | ||
|
|
739abc58eb | ||
|
|
e41448cfc0 | ||
|
|
f0b287ddbf | ||
|
|
a89b523d15 | ||
|
|
1a42f98256 | ||
|
|
7147cfb853 | ||
|
|
ac795e97e7 | ||
|
|
7286226ef5 | ||
|
|
51fb7ad9b6 | ||
|
|
6f3ddedd96 | ||
|
|
0ddeb53833 | ||
|
|
1ed5194a2c | ||
|
|
877a83ea0e | ||
|
|
2cbba122e9 | ||
|
|
e4c7855c13 | ||
|
|
4e4264ad54 | ||
|
|
adb0d2a454 | ||
|
|
bd60df1ef4 | ||
|
|
46ef96becd | ||
|
|
5d73f5f7c7 | ||
|
|
de8c859826 | ||
|
|
5a551c0f33 | ||
|
|
b191c35029 | ||
|
|
cf2cddbd85 | ||
|
|
473983b7be | ||
|
|
9f0fd569b7 | ||
|
|
1e9bc49654 | ||
|
|
6e4c35a3fa | ||
|
|
640ca2e916 | ||
|
|
49fdb4ec05 | ||
|
|
99214d5221 | ||
|
|
9cbee08785 | ||
|
|
5b3bc5027f | ||
|
|
41ae40542a | ||
|
|
2fa7b9de67 | ||
|
|
e45a7bafbb | ||
|
|
76241a5ff4 | ||
|
|
89d31f606b | ||
|
|
983e673bd7 | ||
|
|
373f75359a | ||
|
|
f694f7aa3f | ||
|
|
01b701c392 | ||
|
|
5090eb35c3 | ||
|
|
c797fe4dda | ||
|
|
d084ed506d | ||
|
|
19914f9519 | ||
|
|
be570e6b84 | ||
|
|
f8402a0136 | ||
|
|
f7bdd6f9ea | ||
|
|
9a40a5113f | ||
|
|
d492045429 | ||
|
|
137164fef1 | ||
|
|
fcc12f5a3c | ||
|
|
f16fb41db0 | ||
|
|
9640b6a99f | ||
|
|
9426e17af0 | ||
|
|
aec73ba80d | ||
|
|
6e60973767 | ||
|
|
680a59a684 | ||
|
|
87780216dc | ||
|
|
9b5b22e726 | ||
|
|
7b7f25dde0 | ||
|
|
e45bbdef37 | ||
|
|
bdc2c2a11d | ||
|
|
ed525c209c | ||
|
|
72777c60ff | ||
|
|
2a86b78de1 | ||
|
|
3a6b402591 | ||
|
|
49e5df381d | ||
|
|
77e35d889f | ||
|
|
89bf9c5f4b | ||
|
|
bd93e798cc | ||
|
|
e0e954b6a8 | ||
|
|
902968a07a | ||
|
|
61c837beb0 | ||
|
|
bf58a423e8 | ||
|
|
45885638a7 | ||
|
|
562003c3e8 | ||
|
|
067e470771 | ||
|
|
31e816f50a | ||
|
|
8202c697e6 | ||
|
|
48099fed20 | ||
|
|
23b8a91299 | ||
|
|
ea9bba2586 | ||
|
|
844ff3aa16 | ||
|
|
97e7da6e46 | ||
|
|
9e7987758b | ||
|
|
6a61695106 | ||
|
|
a68c52b625 | ||
|
|
428c98818a | ||
|
|
b194ac4b43 | ||
|
|
3b2799b7b5 | ||
|
|
179fcd2319 | ||
|
|
b344df7394 | ||
|
|
d5578feb46 | ||
|
|
b6207b4a96 | ||
|
|
727850e252 | ||
|
|
9630c9ddaf | ||
|
|
7c1963ffcc | ||
|
|
7f1942971d | ||
|
|
824ab09c5a | ||
|
|
dd2ff20389 | ||
|
|
8d383e87b5 | ||
|
|
48cee8d3dc | ||
|
|
3f7d5c1037 | ||
|
|
a67478d752 | ||
|
|
307950428d | ||
|
|
33c1fdb3e2 | ||
|
|
1af09d6f72 | ||
|
|
b4aefee42e | ||
|
|
6b6f9462e5 | ||
|
|
d9717c3f5a | ||
|
|
16d3df09cf | ||
|
|
82b3b3efae | ||
|
|
57535ee5ec | ||
|
|
b6695d0119 | ||
|
|
76f6217337 | ||
|
|
051d0f65e0 | ||
|
|
d9b79d5625 | ||
|
|
d5dddedfbb | ||
|
|
df9ddd76e7 | ||
|
|
1added0bc6 | ||
|
|
bd7b824f9a | ||
|
|
ee895377b3 | ||
|
|
2710958b59 | ||
|
|
bbe54fca0f | ||
|
|
71a0508145 | ||
|
|
60ed796c5c | ||
|
|
150e25d67f | ||
|
|
f75986c4ab | ||
|
|
adcd0f8c2b | ||
|
|
902fc62c18 | ||
|
|
e9587dca05 | ||
|
|
c73a304d7b | ||
|
|
87be5a501c | ||
|
|
7e693617d5 | ||
|
|
e3d5248e20 | ||
|
|
0725b8c941 | ||
|
|
9664700317 | ||
|
|
f89c5e1271 | ||
|
|
06f9b3dc49 | ||
|
|
74d915d277 | ||
|
|
ff06ba8031 | ||
|
|
7f7f4b707f | ||
|
|
0d05b582e8 | ||
|
|
522dac1d0c | ||
|
|
9b384c4d4d | ||
|
|
cafb5caf8c | ||
|
|
2c6dc7a045 | ||
|
|
019d1996a5 | ||
|
|
5bf4a73de4 | ||
|
|
36767df266 | ||
|
|
dc4b7c71ee | ||
|
|
dbefd37065 | ||
|
|
8f7c8a3b18 | ||
|
|
aa3800db8c | ||
|
|
a9004f4d55 | ||
|
|
0ff18c2295 | ||
|
|
9443b7cf49 | ||
|
|
37b2269d83 | ||
|
|
b619834975 | ||
|
|
363da3eaa6 | ||
|
|
4e2a8cfaa5 | ||
|
|
1308122f81 | ||
|
|
0ff24cb8d5 | ||
|
|
3835c07581 | ||
|
|
25fbe86971 | ||
|
|
a2c9bf7781 | ||
|
|
679e099538 | ||
|
|
eb4e780693 | ||
|
|
338df6200d | ||
|
|
c682de182b | ||
|
|
1f9bed5f01 | ||
|
|
3616844174 | ||
|
|
356f2b13f7 | ||
|
|
ae592aa981 | ||
|
|
827e9001cd | ||
|
|
2f01da84fa | ||
|
|
a0a53857d0 | ||
|
|
fadf14edb2 | ||
|
|
b768b39272 | ||
|
|
d57f047749 | ||
|
|
607a6bbe8d | ||
|
|
b0ac3208d9 | ||
|
|
f983aa38b8 | ||
|
|
db09ff14d9 | ||
|
|
a68c34406c | ||
|
|
43365bb961 | ||
|
|
b17044851e | ||
|
|
567bd4019d | ||
|
|
f8e902fb0a | ||
|
|
1a88576fd8 | ||
|
|
0c165326d1 | ||
|
|
23a502b178 | ||
|
|
8b02df6b28 | ||
|
|
cde95162d2 | ||
|
|
f2f67cc6b2 | ||
|
|
9cfbaf41a6 | ||
|
|
554a794827 | ||
|
|
be7f696fe3 | ||
|
|
4584ddfb1f | ||
|
|
3b4885d3aa | ||
|
|
48d09420ef | ||
|
|
cb100ab6df | ||
|
|
0c8ade7443 | ||
|
|
3397e04570 | ||
|
|
f551af56f3 | ||
|
|
3865781da3 | ||
|
|
6ff2a58817 | ||
|
|
283439d620 | ||
|
|
7f429b2e60 | ||
|
|
0f85dd6727 | ||
|
|
315f646d0e | ||
|
|
02427027d7 | ||
|
|
7cf6c1d7e9 | ||
|
|
74792a7b73 | ||
|
|
9bcccf8ebb | ||
|
|
b2585e164b | ||
|
|
bb6c75246e | ||
|
|
68a16f3413 | ||
|
|
f5a03511ac | ||
|
|
1b1c7bfdb6 | ||
|
|
8094d136b4 | ||
|
|
c5de6ab8f6 | ||
|
|
0bc7242eac | ||
|
|
e66910d7cc | ||
|
|
7c81635ddc | ||
|
|
f539ac7ff6 | ||
|
|
98eda4e674 | ||
|
|
efb4d2011e | ||
|
|
b4d3fd1242 | ||
|
|
1344efa890 | ||
|
|
7d639ea2b3 | ||
|
|
00a5deb161 | ||
|
|
09fd643b58 | ||
|
|
131b7d266d | ||
|
|
5cb68b845a | ||
|
|
9250c8a22c | ||
|
|
22e638117b | ||
|
|
eeec848077 | ||
|
|
f0f9ae0e24 | ||
|
|
cdaf601c6c | ||
|
|
b2003fddf0 | ||
|
|
f489068fdb | ||
|
|
f7935ef51b | ||
|
|
341b502d3f | ||
|
|
0279d0121c | ||
|
|
3c32bf2f2c | ||
|
|
e4712bef77 | ||
|
|
0651a2cd20 | ||
|
|
3d9075812f | ||
|
|
0cd236b234 | ||
|
|
d3834096d8 | ||
|
|
f012fe0921 | ||
|
|
bd4e31044b | ||
|
|
51e0410ae2 | ||
|
|
ecfd88f1ad | ||
|
|
eb17deaf78 | ||
|
|
2b563722b0 | ||
|
|
d2afa0eade | ||
|
|
79f115f66c | ||
|
|
9fea70a00a | ||
|
|
bc1b2cef90 | ||
|
|
595c87400e | ||
|
|
326b688a73 | ||
|
|
e86f76b52c | ||
|
|
b1986b692a | ||
|
|
6dcfefc751 | ||
|
|
7fd868ad28 | ||
|
|
1f2c317982 | ||
|
|
1561d0a2c1 | ||
|
|
82ce142cee | ||
|
|
324c8f3dbe | ||
|
|
c73f32d5fc | ||
|
|
fafe43b982 | ||
|
|
e861259fb4 | ||
|
|
54cbeb856b | ||
|
|
fe6cebcaa4 | ||
|
|
c5be86bcb1 | ||
|
|
8527ee1dd2 | ||
|
|
625ed56b50 | ||
|
|
c7c95a5960 | ||
|
|
e595b5d4c4 | ||
|
|
8dcd034e5d | ||
|
|
8d9ee48855 | ||
|
|
373c3933d5 | ||
|
|
b8d0c10c76 | ||
|
|
1ae40d7f0c | ||
|
|
88fdd8e444 | ||
|
|
c694a5b6d4 | ||
|
|
bc395b249e | ||
|
|
f3bbd56513 | ||
|
|
4e49f21b91 | ||
|
|
07e1923170 | ||
|
|
a2af6c9249 | ||
|
|
fe29104cd2 | ||
|
|
953c7e0520 | ||
|
|
cc9bf82478 | ||
|
|
b866439729 | ||
|
|
ce055ee515 | ||
|
|
1c10a1fa5b | ||
|
|
48d551268c | ||
|
|
f5cc39461c | ||
|
|
f42d70b36a | ||
|
|
06c39ec060 | ||
|
|
d8c6d11f89 | ||
|
|
286fa429a5 | ||
|
|
2b06066bfe | ||
|
|
144b815ab4 | ||
|
|
46feff7449 | ||
|
|
adc67c819a | ||
|
|
765f946158 | ||
|
|
0085a93f25 | ||
|
|
6dc4e56e07 | ||
|
|
23af5d29a3 | ||
|
|
6e281f311b | ||
|
|
acb52828de | ||
|
|
c957bfa6f0 | ||
|
|
372d2c6a01 | ||
|
|
13b627be22 | ||
|
|
17f7530bb8 | ||
|
|
3609fcf604 | ||
|
|
c49410d224 | ||
|
|
bc96c76d04 | ||
|
|
95b5232c8b | ||
|
|
bd6213b67e | ||
|
|
692410768f | ||
|
|
b78e7e2a13 | ||
|
|
82386ec878 | ||
|
|
949407921d | ||
|
|
8971fb26b0 | ||
|
|
0413239f46 | ||
|
|
d0f92b9448 | ||
|
|
c67e56ec19 | ||
|
|
628d1adfe6 | ||
|
|
36500e259a | ||
|
|
65e93383c7 | ||
|
|
649cb3693c | ||
|
|
4a20303ab1 | ||
|
|
564a740b51 | ||
|
|
92585da56f | ||
|
|
ce89c03a2f | ||
|
|
e80993c730 | ||
|
|
b694eba86e | ||
|
|
994f8da3fb | ||
|
|
ab3f5b5352 | ||
|
|
d5163fcb7c | ||
|
|
8702d100ee | ||
|
|
9b5791fb09 | ||
|
|
3062834360 | ||
|
|
ce95401ad0 | ||
|
|
514d3550a6 | ||
|
|
61f63d66ac | ||
|
|
a6ebe02a01 | ||
|
|
cd31c4c8c4 | ||
|
|
c0c92f1902 | ||
|
|
1ee5f85ec6 | ||
|
|
6775f54263 | ||
|
|
873f5117ae | ||
|
|
6bbd1e4c1b | ||
|
|
9a7c1f58da | ||
|
|
7595f09e54 | ||
|
|
8c63274a22 | ||
|
|
0cf8527e82 | ||
|
|
3179e8d3a2 | ||
|
|
cefb9a41ff | ||
|
|
71412b4cae | ||
|
|
74768cdf2a | ||
|
|
4141e21069 | ||
|
|
00db0fca06 | ||
|
|
207caa103a | ||
|
|
ec95fc1989 | ||
|
|
7cf55353ae | ||
|
|
f98b9120bb | ||
|
|
d38853efab | ||
|
|
c79b9790cc | ||
|
|
25117c5270 | ||
|
|
364718902b | ||
|
|
bfaf3f75ac | ||
|
|
9ecd42d5aa | ||
|
|
a5c6529350 | ||
|
|
a4bb94dba7 | ||
|
|
dbdaa0c52e | ||
|
|
7ddbbd1d29 | ||
|
|
313b378d82 | ||
|
|
82dc85e3ee | ||
|
|
bfff51a966 | ||
|
|
13ca2e3ae8 | ||
|
|
d6b4e7f118 | ||
|
|
25124b213b | ||
|
|
cbea351298 | ||
|
|
ae6dd8137a | ||
|
|
d9e45b6d0f | ||
|
|
79e69f1d8f | ||
|
|
2bfebae15b | ||
|
|
960898e13e | ||
|
|
b8f632794a | ||
|
|
a24283ddc4 | ||
|
|
d29a0cdc47 | ||
|
|
322844ad53 | ||
|
|
48a7755c22 | ||
|
|
2f7b874f92 | ||
|
|
dafb98be65 | ||
|
|
b1d823c304 | ||
|
|
52adb2ac68 | ||
|
|
0e1f059c7e | ||
|
|
be50599567 | ||
|
|
ff65e89979 | ||
|
|
6f2d8f86ba | ||
|
|
317fda6a8a | ||
|
|
e4fe56b594 | ||
|
|
b1dd2e0205 | ||
|
|
20eb27952b | ||
|
|
0d949b63dd | ||
|
|
63aa2aa372 | ||
|
|
c8a718849d | ||
|
|
27f800f508 | ||
|
|
237e4790bf | ||
|
|
a45997f50f | ||
|
|
fe9d9759ca | ||
|
|
68fbb9ec6a | ||
|
|
eeab7bd554 | ||
|
|
79d0433060 | ||
|
|
195f3efce3 | ||
|
|
89eb72655d | ||
|
|
6f6e813999 | ||
|
|
5922079fca | ||
|
|
6dfe81769b | ||
|
|
81957ab205 | ||
|
|
864dbc4320 | ||
|
|
8d20866ec5 | ||
|
|
3ac4280868 | ||
|
|
c483d1d73d | ||
|
|
19cbb10430 | ||
|
|
ffcc992b0a | ||
|
|
775a9cae23 | ||
|
|
f8c92474b8 | ||
|
|
b42bf10c42 | ||
|
|
cea26d570d | ||
|
|
90b2c86411 | ||
|
|
05e0d7cc5a | ||
|
|
d663da7ee9 | ||
|
|
699d4d3df5 | ||
|
|
4c36e1e10f | ||
|
|
805adc19ba | ||
|
|
4e263c8c44 | ||
|
|
cf3fee9678 | ||
|
|
22830954b0 | ||
|
|
0038ae85b3 | ||
|
|
b30d25c454 | ||
|
|
8f30186397 | ||
|
|
070b0f7ced | ||
|
|
22285f1cd9 | ||
|
|
ac2c4e779c | ||
|
|
bc31e0d4ed | ||
|
|
8f31c978d4 | ||
|
|
ed589ad1ed | ||
|
|
a5bd50d8c9 | ||
|
|
5d7c3d0c47 | ||
|
|
b3ef02ad94 | ||
|
|
4623aaa23b | ||
|
|
2a0a36ee3d | ||
|
|
a0ade46e76 | ||
|
|
bdc5811b8a | ||
|
|
c0bb656fd7 | ||
|
|
fbf296094b | ||
|
|
42752864ea | ||
|
|
dbc38e6da3 | ||
|
|
007aeeab00 | ||
|
|
312740ac46 | ||
|
|
84734650c6 | ||
|
|
03a8070483 | ||
|
|
9ff91b0a5b | ||
|
|
db865196f1 | ||
|
|
0b631dcc63 | ||
|
|
e55bed16b4 | ||
|
|
200db63f44 | ||
|
|
d2c705a34a | ||
|
|
d766c23e2b | ||
|
|
eef17e655c | ||
|
|
13f0cc5e94 | ||
|
|
0fefb7b3e1 | ||
|
|
fb957ceeb2 | ||
|
|
42b542c343 | ||
|
|
de80ef3b4a | ||
|
|
fb540d60ba | ||
|
|
2724432e30 | ||
|
|
01888062e9 | ||
|
|
8f8d107acb | ||
|
|
93c18b1fc8 | ||
|
|
3f6a6f4b5d | ||
|
|
98553c3f4c | ||
|
|
65a12a72a5 | ||
|
|
ffb422c386 | ||
|
|
14c9d274f3 | ||
|
|
1fcd81ce2b | ||
|
|
27e45d0973 | ||
|
|
92e16e3941 | ||
|
|
804ff5fb0b | ||
|
|
80324d276a | ||
|
|
74b38e02ac | ||
|
|
7f495d0eb1 | ||
|
|
1fe556648d | ||
|
|
2bb2a909c3 | ||
|
|
8ce2d1e2e7 | ||
|
|
2745333ced | ||
|
|
2632d58065 | ||
|
|
3983a012b0 | ||
|
|
fcdd9da3bd | ||
|
|
d9ef029495 | ||
|
|
ba045edc25 | ||
|
|
a5acd4df36 | ||
|
|
bb078919f4 | ||
|
|
ac4f6e0425 | ||
|
|
ee2800bd0f | ||
|
|
66721ca709 | ||
|
|
bffc3c194d | ||
|
|
aa476b0e0d | ||
|
|
b2f5f5b159 | ||
|
|
b5b79600e9 | ||
|
|
ac8839a1d4 | ||
|
|
ffcb4cd1ac | ||
|
|
20f980a1e6 | ||
|
|
cdf9d486a0 | ||
|
|
32965ec6d7 | ||
|
|
175d7b2675 | ||
|
|
a46322530f | ||
|
|
9c55ae584c | ||
|
|
281f40f8d8 | ||
|
|
9c74e3ef06 | ||
|
|
eac083e35b | ||
|
|
7da4c03366 | ||
|
|
a858ea4db4 | ||
|
|
2fd8514efd | ||
|
|
acb65a74c2 | ||
|
|
b288a46385 | ||
|
|
91275e1ded | ||
|
|
be335160a8 | ||
|
|
9167ff0d04 | ||
|
|
18d6acc13b | ||
|
|
498bf21c3f | ||
|
|
f965b61e12 | ||
|
|
b5572b3c74 | ||
|
|
97f4b1f497 | ||
|
|
f3a52ae3d0 | ||
|
|
a5b1b26b41 | ||
|
|
e036998eb7 | ||
|
|
292bf7ab52 | ||
|
|
332f9cfd2d | ||
|
|
16e0cd9e54 | ||
|
|
6656d62afc | ||
|
|
ce7df212fe | ||
|
|
7805646d7d | ||
|
|
81f1244c3b | ||
|
|
0dc1151234 | ||
|
|
cff6fd7d3b | ||
|
|
0774243363 | ||
|
|
0fe8a821c7 | ||
|
|
e7047b630d | ||
|
|
b33ee796e1 | ||
|
|
0ef8ae060f | ||
|
|
28eb1018c9 | ||
|
|
7189b79372 | ||
|
|
fc76387d94 | ||
|
|
234269ac38 | ||
|
|
98dc75f7dd | ||
|
|
934ae1816c | ||
|
|
3d928cf65e | ||
|
|
d7204e0ff2 | ||
|
|
db79dfb5eb | ||
|
|
23f6f49fdb | ||
|
|
ad3593937f | ||
|
|
e9b22f50ac | ||
|
|
481207d85d | ||
|
|
3f2875475b | ||
|
|
7c6a922a2a | ||
|
|
6be827b9a9 | ||
|
|
11f94cf45d | ||
|
|
aaaedbddaa | ||
|
|
1dbd4364fc | ||
|
|
422dabb804 | ||
|
|
f3db2753ab | ||
|
|
011077f281 | ||
|
|
a058150bf4 | ||
|
|
93f2d53ee6 | ||
|
|
303b6de427 | ||
|
|
dbb1e10e5e | ||
|
|
4d0f681e59 | ||
|
|
870ea2aa2f | ||
|
|
e2706222d4 | ||
|
|
0579ffc854 | ||
|
|
95a59c619c | ||
|
|
e61b5fe4d5 | ||
|
|
844d95c19a | ||
|
|
0085684b58 | ||
|
|
5c30dbe050 | ||
|
|
fadb7e9ebe | ||
|
|
17bff91595 | ||
|
|
86feeba151 | ||
|
|
368611188c | ||
|
|
caa2af608a | ||
|
|
3025cf4a28 | ||
|
|
29f4cdf228 | ||
|
|
51439bf44e | ||
|
|
c532745951 | ||
|
|
1eed83ec6b | ||
|
|
9dad6932b2 | ||
|
|
c9f82c0acc | ||
|
|
aeaf5f24d4 | ||
|
|
a4e40309aa | ||
|
|
9afa9ef425 | ||
|
|
0cf67c076f | ||
|
|
1d82b07f78 | ||
|
|
11abba31ea | ||
|
|
4d8ce566eb | ||
|
|
f430870767 | ||
|
|
fe361b18a4 | ||
|
|
ac3eabd462 | ||
|
|
9d0e64a548 | ||
|
|
cfe4693f18 | ||
|
|
466de863c8 | ||
|
|
72738ff422 | ||
|
|
639faabe2b | ||
|
|
ca58bbcf39 | ||
|
|
c029077aef | ||
|
|
d4cb68e449 | ||
|
|
0e1f02f256 | ||
|
|
d7ec41c1f6 | ||
|
|
48be8f7ae0 | ||
|
|
76761fd18d | ||
|
|
f32d6cde6f | ||
|
|
1b8388a0b4 | ||
|
|
1aa5863084 | ||
|
|
d9e3063f9b | ||
|
|
1914e9d36d | ||
|
|
f7f1edb9ac | ||
|
|
410fd11c07 | ||
|
|
22693d1204 | ||
|
|
edfa8eaf1a | ||
|
|
6668892811 | ||
|
|
42cda40808 | ||
|
|
c163eb0a86 | ||
|
|
6aeecdf893 | ||
|
|
2665169ed8 | ||
|
|
c17f61ae2d | ||
|
|
c665f489a5 | ||
|
|
1587e41bbc | ||
|
|
2015e94112 | ||
|
|
4cb80d2e3e | ||
|
|
2d97c11731 | ||
|
|
d99c294db7 | ||
|
|
0a4a495b06 | ||
|
|
d716bb597f | ||
|
|
07ba49fb7e | ||
|
|
5aa093f827 | ||
|
|
df4f21f5a6 | ||
|
|
f8ae68bb25 | ||
|
|
3bdcf77cb0 | ||
|
|
a955d25727 | ||
|
|
7dc4c2ceae | ||
|
|
01d7de9ae1 | ||
|
|
7779ff3e10 | ||
|
|
cc00e2d8ef | ||
|
|
fd551f1ab9 | ||
|
|
099e24292a | ||
|
|
0ae9046c19 | ||
|
|
28c9df7e18 | ||
|
|
e95e598665 | ||
|
|
a242774e8b | ||
|
|
9fe5e0b8f6 | ||
|
|
c6b31acd9c | ||
|
|
ec309bfd7c | ||
|
|
a84d9f2c97 | ||
|
|
b0201c250f | ||
|
|
754f6ab47a | ||
|
|
6e9857c582 | ||
|
|
fcd187e875 | ||
|
|
726c88da87 | ||
|
|
53fa0c12ca | ||
|
|
592ee531ba | ||
|
|
a36619fa07 | ||
|
|
2b7387c5f7 | ||
|
|
655e7e992c | ||
|
|
9dd1a55940 | ||
|
|
5d4a2cee96 | ||
|
|
d9f9f1df34 | ||
|
|
36ceef2729 | ||
|
|
c42046eb00 | ||
|
|
da9ffec877 | ||
|
|
e113aa5c61 | ||
|
|
e290f9e231 | ||
|
|
4468871552 | ||
|
|
766e0b125a | ||
|
|
d1c7ce8e6f | ||
|
|
b5ed22589f | ||
|
|
069bc53ce5 | ||
|
|
fc9fb73872 | ||
|
|
2769580d2f | ||
|
|
0815957448 | ||
|
|
9bc5a11a89 |
3
.crontab
@@ -1,3 +0,0 @@
|
||||
# Jeden Monat müssen wir die neuen Klimafaktoren vom DWD abholen, der Cronjob läuft immer am 28. für die höchste Wahrscheinlichkeit
|
||||
# dass die Daten schon da sind, falls der DWD mal später dran ist...
|
||||
0 12 28 * * bun ./src/cronjobs/update-dwd-klimafaktoren.ts
|
||||
16
.env
Normal file
@@ -0,0 +1,16 @@
|
||||
# Environment variables declared in this file are automatically made available to Prisma.
|
||||
# See the documentation for more detail: https://pris.ly/d/prisma-schema#accessing-environment-variables-from-the-schema
|
||||
|
||||
# Prisma supports the native connection string format for PostgreSQL, MySQL, SQLite, SQL Server, MongoDB and CockroachDB.
|
||||
# See the documentation for all the connection string options: https://pris.ly/d/connection-strings
|
||||
|
||||
POSTGRES_DB=main
|
||||
POSTGRES_HOST=localhost
|
||||
POSTGRES_PORT=5432
|
||||
POSTGRES_USER=main
|
||||
POSTGRES_PASSWORD=hHMP8cd^N3SnzGRR
|
||||
|
||||
DB_CONTAINER_NAME=database
|
||||
|
||||
POSTGRES_DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}"
|
||||
POSTGRES_DATABASE_URL_EXTERNAL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${DB_CONTAINER_NAME}:${POSTGRES_PORT}/${POSTGRES_DB}"
|
||||
64
.github/workflows/auto-merge-staging-into-main.yml
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
name: Auto Merge Staging into Main
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 2 * * *' # 2:00 UTC = 4:00 Europäische Zeit
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
merge:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set Git user
|
||||
run: |
|
||||
git config user.name "github-actions[bot]"
|
||||
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||||
|
||||
- name: Fetch all branches
|
||||
run: |
|
||||
git fetch origin main
|
||||
git fetch origin staging
|
||||
|
||||
- name: Check if main has commits not in staging
|
||||
id: check
|
||||
run: |
|
||||
git fetch origin
|
||||
if [ $(git rev-list --count origin/staging..origin/main) -gt 0 ]; then
|
||||
echo "❌ Staging is behind main and requires manual merging."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Create PR from staging to main
|
||||
id: create_pr
|
||||
run: |
|
||||
PR_URL=$(gh pr create --base main --head staging --title "Auto-merge staging into main" --body "This PR was created automatically by GitHub Actions. It merges the latest \`staging\` into \`main\`.")
|
||||
echo "PR_URL=$PR_URL" >> $GITHUB_OUTPUT
|
||||
PR_NUMBER=$(echo $PR_URL | awk -F'/' '{print $NF}')
|
||||
echo "PR_NUMBER=$PR_NUMBER" >> $GITHUB_OUTPUT
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Enable auto-merge on PR
|
||||
if: steps.create_pr.outputs.PR_NUMBER != ''
|
||||
run: |
|
||||
gh pr merge ${{ steps.create_pr.outputs.PR_NUMBER }} --merge --auto
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
|
||||
notify_failure:
|
||||
needs: merge
|
||||
if: failure()
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Send Discord notification on failure
|
||||
run: |
|
||||
curl -H "Content-Type: application/json" \
|
||||
-X POST \
|
||||
-d "{\"content\": \"🚨 Auto-Merge fehlgeschlagen! Bitte manuell prüfen: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}\"}" \
|
||||
${{ secrets.DISCORD_WEBHOOK_URL }}
|
||||
19
.github/workflows/dev-pipeline.yml
vendored
@@ -1,16 +1,18 @@
|
||||
name: Dev Pipeline
|
||||
name: Development Pipeline
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [main]
|
||||
push:
|
||||
branches: [main]
|
||||
branches: [dev]
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Install Bun
|
||||
run: |
|
||||
curl -fsSL https://bun.sh/install | bash
|
||||
|
||||
- uses: appleboy/ssh-action@master
|
||||
with:
|
||||
host: ${{ secrets.DEV_HOST }}
|
||||
@@ -18,9 +20,12 @@ jobs:
|
||||
password: ${{ secrets.DEV_PASSWORD }}
|
||||
port: 22
|
||||
script: |
|
||||
export PATH=$HOME/.bun/bin:$PATH
|
||||
export PATH=$HOME/.nvm/versions/node/v22.14.0/bin:$PATH
|
||||
echo $PATH
|
||||
cd ~/online-energieausweis
|
||||
git reset --hard HEAD
|
||||
git reset --hard origin/dev
|
||||
git clean -f -d
|
||||
git pull origin main
|
||||
git pull origin dev
|
||||
git status
|
||||
bash build.sh
|
||||
make prod
|
||||
27
.github/workflows/prevent-wrong-pr.yml
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
name: PR Rules Enforcement
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
- staging
|
||||
|
||||
jobs:
|
||||
check-pr:
|
||||
runs-on: ubuntu-latest
|
||||
name: Validate Pull Request Sources
|
||||
steps:
|
||||
- name: Prevent dev merges
|
||||
run: |
|
||||
if [[ "${{ github.head_ref }}" == "dev" ]]; then
|
||||
echo "ERROR: Merging 'dev' into '${{ github.base_ref }}' is forbidden!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Allow only staging into main
|
||||
if: github.base_ref == 'main'
|
||||
run: |
|
||||
if [[ "${{ github.head_ref }}" != "staging" ]]; then
|
||||
echo "ERROR: Only 'staging' branch is allowed to merge into 'main'. Current: '${{ github.head_ref }}'"
|
||||
exit 1
|
||||
fi
|
||||
31
.github/workflows/prod-pipeline.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
name: Production Pipeline
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Install Bun
|
||||
run: |
|
||||
curl -fsSL https://bun.sh/install | bash
|
||||
|
||||
- uses: appleboy/ssh-action@master
|
||||
with:
|
||||
host: ${{ secrets.PROD_HOST }}
|
||||
username: ${{ secrets.PROD_USERNAME }}
|
||||
password: ${{ secrets.PROD_PASSWORD }}
|
||||
port: 22
|
||||
script: |
|
||||
export PATH=$HOME/.bun/bin:$PATH
|
||||
export PATH=$HOME/.nvm/versions/node/v22.14.0/bin:$PATH
|
||||
echo $PATH
|
||||
cd ~/online-energieausweis
|
||||
git reset --hard origin/main
|
||||
git clean -f -d
|
||||
git pull origin main
|
||||
git status
|
||||
make prod
|
||||
66
.gitignore
vendored
@@ -1,25 +1,41 @@
|
||||
# build output
|
||||
dist/
|
||||
|
||||
# generated types
|
||||
.astro/
|
||||
|
||||
# dependencies
|
||||
node_modules/
|
||||
|
||||
# logs
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
# lockfile
|
||||
pnpm-lock.yaml
|
||||
bun.lockb
|
||||
|
||||
# environment variables
|
||||
.env
|
||||
.env.production
|
||||
|
||||
# macOS-specific files
|
||||
.DS_Store
|
||||
# build output
|
||||
dist/
|
||||
|
||||
# generated types
|
||||
.astro/
|
||||
|
||||
# log files
|
||||
logs/
|
||||
|
||||
# dependencies
|
||||
node_modules/
|
||||
|
||||
# logs
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
# lockfile
|
||||
pnpm-lock.yaml
|
||||
bun.lockb
|
||||
|
||||
src/astro-typesafe-api-caller.ts
|
||||
|
||||
# macOS-specific files
|
||||
.DS_Store
|
||||
|
||||
*.Identifier
|
||||
|
||||
src/lib/Berechnungen/BedarfsausweisWohnen/18599-Tabellenverfahren-Wohngebaeude-komplett-ocr.pdf
|
||||
src/astro-typesafe-api-caller.ts
|
||||
|
||||
dbml/schema.dbml
|
||||
|
||||
prisma/migrations/20250315143314_/migration.sql
|
||||
|
||||
# src/astro-typesafe-api-caller.ts
|
||||
|
||||
src/testing/ausweise.csv
|
||||
src/testing/users.csv
|
||||
src/testing/rechnungen.csv
|
||||
|
||||
15
.vscode/settings.json
vendored
@@ -1,6 +1,17 @@
|
||||
|
||||
|
||||
{
|
||||
"i18n-ally.localesPaths": [
|
||||
"public/locales"
|
||||
],
|
||||
"typescript.tsdk": "node_modules/typescript/lib"
|
||||
}
|
||||
"typescript.tsdk": "node_modules/typescript/lib",
|
||||
"css.lint.unknownAtRules": "ignore",
|
||||
"scss.lint.unknownAtRules": "ignore",
|
||||
"less.lint.unknownAtRules": "ignore"
|
||||
|
||||
"workbench.colorCustomizations": {
|
||||
"minimap.background": "#00000000",
|
||||
"scrollbar.shadow": "#00000000"
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
20
Dockerfile
@@ -1,10 +1,16 @@
|
||||
FROM oven/bun:1.0.23
|
||||
FROM postgres:latest
|
||||
ENV POSTGRES_USER ${POSTGRES_USER}
|
||||
ENV POSTGRES_PASSWORD ${POSTGRES_PASSWORD}
|
||||
ENV POSTGRES_DB ${POSTGRES_DB}
|
||||
|
||||
EXPOSE 3000
|
||||
COPY ./prisma/migrations/ /docker-entrypoint-initdb.d/
|
||||
|
||||
WORKDIR /online-energieausweis
|
||||
COPY ./package.json ./
|
||||
COPY . .
|
||||
RUN bun install --prod
|
||||
EXPOSE 5432
|
||||
|
||||
CMD ["bun", "run", "build:production"]
|
||||
# Use a loop to copy migration.sql from each folder to the corresponding directory in the build context
|
||||
RUN for folder in /docker-entrypoint-initdb.d/*; do \
|
||||
if [ -d "$folder" ]; then \
|
||||
cp "$folder/migration.sql" "$folder.sql"; \
|
||||
rm -rf "$folder"; \
|
||||
fi \
|
||||
done
|
||||
BIN
GEG_2024_Gesetzestext.pdf
Normal file
75
Makefile
Normal file
@@ -0,0 +1,75 @@
|
||||
.PHONY: dev online-energieausweis all prod backup run-database build-database install-dependencies wait-for-database prod database prisma-studio backup-database-cronjob update-dwd-klimafaktoren-cron
|
||||
|
||||
DB_CONTAINER_NAME := database
|
||||
DB_NAME := main
|
||||
DB_USER := main
|
||||
DB_PASSWORD := hHMP8cd^N3SnzGRR
|
||||
DB_PORT := 5432
|
||||
DB_VOLUME := postgres_data
|
||||
PERSISTENT_DIR := $(HOME)/persistent/$(APP_NAME)
|
||||
BACKUP_FILENAME := $(HOME)/backups/$(shell date +"%Y-%m-%d_%H-%M-%S").sql.gz
|
||||
|
||||
online-energieausweis:
|
||||
bun run dev --host
|
||||
|
||||
dev: database online-energieausweis
|
||||
|
||||
database:
|
||||
docker compose up
|
||||
|
||||
prisma-studio:
|
||||
- pm2 delete prisma-studio
|
||||
pm2 start --name "prisma-studio" bunx -- prisma studio
|
||||
|
||||
backup:
|
||||
mkdir -p $(PERSISTENT_DIR)
|
||||
- docker exec -t $(DB_CONTAINER_NAME) pg_dump --data-only -U $(DB_USER) $(DB_NAME) | gzip > $(BACKUP_FILENAME)
|
||||
|
||||
run-database: stop-database
|
||||
docker volume rm -f $(DB_VOLUME)
|
||||
docker volume create $(DB_VOLUME)
|
||||
docker build -t $(DB_CONTAINER_NAME) .
|
||||
docker run -d --name $(DB_CONTAINER_NAME) \
|
||||
--restart=always \
|
||||
-e POSTGRES_USER=$(DB_USER) \
|
||||
-e POSTGRES_PASSWORD=$(DB_PASSWORD) \
|
||||
-p $(DB_PORT):5432 \
|
||||
-v $(DB_VOLUME):/var/lib/postgresql/data \
|
||||
-v $(PERSISTENT_DIR):/persistent \
|
||||
$(DB_CONTAINER_NAME)
|
||||
|
||||
stop-database:
|
||||
- docker stop $(DB_CONTAINER_NAME)
|
||||
- docker rm $(DB_CONTAINER_NAME)
|
||||
|
||||
wait-for-database:
|
||||
@while ! docker exec $(DB_CONTAINER_NAME) pg_isready -U $(DB_USER) -h localhost -p $(DB_PORT) > /dev/null 2>&1; do \
|
||||
sleep 1; \
|
||||
done
|
||||
|
||||
restore-backup:
|
||||
gunzip -c $(BACKUP_FILENAME) | docker exec -i $(DB_CONTAINER_NAME) psql -U $(DB_USER) -d postgres
|
||||
|
||||
install-dependencies:
|
||||
bun install
|
||||
bunx prisma generate
|
||||
|
||||
all:
|
||||
mkdir -p ~/logs
|
||||
bun run dev 2>&1 | tee ~/logs/`date '+%d-%m-%Y_%H:%M:%S'`.log
|
||||
|
||||
update-dwd-klimafaktoren-cron:
|
||||
pm2 start bun --name "update-dwd-klimafaktoren-cron" --cron "0 12 28 * *" -- src/cronjobs/update-dwd-klimafaktoren.ts
|
||||
|
||||
prod: install-dependencies prisma-studio backup-database-cronjob update-dwd-klimafaktoren-cron
|
||||
bun run build
|
||||
mkdir -p ~/logs
|
||||
mkdir -p ~/persistent/online-energieausweis
|
||||
|
||||
- pm2 delete online-energieausweis
|
||||
NODE_ENV="production" pm2 start --name "online-energieausweis" --update-env --log ~/logs/`date '+%d-%m-%Y_%H:%M:%S'`.log --time bun -- run ./server.ts
|
||||
pm2 save
|
||||
|
||||
backup-database-cronjob:
|
||||
- pm2 delete daily-db-backup
|
||||
pm2 start bash --name "daily-db-backup" --cron "0 0 * * *" -- backup-database.bash
|
||||
@@ -1,29 +1,44 @@
|
||||
import { defineConfig } from "astro/config";
|
||||
import svelte from "@astrojs/svelte";
|
||||
// import astroI18next from "astro-i18next";
|
||||
|
||||
import tailwind from "@astrojs/tailwind";
|
||||
|
||||
// https://astro.build/config
|
||||
import node from "@astrojs/node";
|
||||
|
||||
// https://astro.build/config
|
||||
import mdx from "@astrojs/mdx";
|
||||
import astroTypesafeAPI from "astro-typesafe-api"
|
||||
|
||||
// https://astro.build/config
|
||||
// https://astro.build/config
|
||||
export default defineConfig({
|
||||
integrations: [svelte(), tailwind(), mdx()],
|
||||
integrations: [svelte(), tailwind(), mdx(), astroTypesafeAPI()],
|
||||
outDir: "./dist",
|
||||
output: "server",
|
||||
adapter: node({
|
||||
mode: "middleware",
|
||||
}),
|
||||
vite: {
|
||||
server: {
|
||||
allowedHosts: ["ibcornelsen.de", "online-energieausweis.org"]
|
||||
},
|
||||
optimizeDeps: {
|
||||
exclude: ["@ibcornelsen/api", "@ibcornelsen/database"]
|
||||
exclude: ["bun"]
|
||||
},
|
||||
build: {
|
||||
rollupOptions: {
|
||||
external: ["bun", "stream", "node:stream", "http", "node:http", "https", "http2", "path", "os", "crypto", "fs", "url", "util", "child_process"]
|
||||
}
|
||||
},
|
||||
ssr: {
|
||||
external: ["@prisma/client", "bun", "stream"],
|
||||
resolve: {
|
||||
alias: {
|
||||
".prisma/client/index-browser": "./node_modules/.prisma/client/index-browser.js"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
adapter: node({
|
||||
mode: "middleware"
|
||||
}),
|
||||
server: {
|
||||
port: 3000
|
||||
}
|
||||
server: {
|
||||
port: 3000
|
||||
},
|
||||
devToolbar: {
|
||||
enabled: false
|
||||
}
|
||||
});
|
||||
28
backup-database.bash
Normal file
@@ -0,0 +1,28 @@
|
||||
#!/bin/bash
|
||||
|
||||
FILE_NAME=data-dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.br
|
||||
FILE_NAME_COMPLETE=full-dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.br
|
||||
|
||||
# Das wird benötigt für AWS Ionos Kompatibilität.
|
||||
export AWS_REQUEST_CHECKSUM_CALCULATION=when_required
|
||||
export AWS_RESPONSE_CHECKSUM_VALIDATION=when_required
|
||||
|
||||
# Wir exportieren die Datenbank und komprimieren sie.
|
||||
# IMPORTANT: Dieser Befehl benötigt das `ionos` Profil, sonst wird er nicht funktionieren.
|
||||
# Das Profil kann mit `aws configure --profile ionos` erstellt werden.
|
||||
# Den Key dafür findet man auf https://dcd.ionos.com/latest/?lang=en#/key-management
|
||||
docker exec -t online-energieausweis-database-1 pg_dump --data-only -U main main | brotli --best > $FILE_NAME
|
||||
|
||||
aws s3 cp $FILE_NAME s3://ibc-db-backup/ --profile ionos --endpoint-url https://s3-eu-central-1.ionoscloud.com --storage-class STANDARD
|
||||
|
||||
echo "Uploaded $FILE_NAME"
|
||||
|
||||
docker exec -t online-energieausweis-database-1 pg_dumpall -c -U main | brotli --best > $FILE_NAME_COMPLETE
|
||||
|
||||
aws s3 cp $FILE_NAME_COMPLETE s3://ibc-db-backup/ --profile ionos --endpoint-url https://s3-eu-central-1.ionoscloud.com --storage-class STANDARD
|
||||
|
||||
echo "Uploaded $FILE_NAME_COMPLETE"
|
||||
|
||||
# Wir entfernen das Backup
|
||||
rm $FILE_NAME
|
||||
rm $FILE_NAME_COMPLETE
|
||||
2667818
backup/klimafaktoren.json
Normal file
71474
backup/postleitzahlen.json
Normal file
70
build.sh
@@ -14,32 +14,24 @@ DB_PORT=5432
|
||||
# ausgeführt zu werden. Außerdem würde es nicht wirklich Sinn ergeben, wenn das
|
||||
# Build Skript sich die Änderungen am build Skript holen würde...
|
||||
# Wir müssen alle lokalen Pakete verlinken
|
||||
|
||||
# --------------------------------- Database --------------------------------- #
|
||||
|
||||
cd ../database
|
||||
bun link
|
||||
cd ../api
|
||||
bun link
|
||||
cd ../ui
|
||||
bun link
|
||||
cd ../database
|
||||
bun install
|
||||
|
||||
# ------------------------------------ API ----------------------------------- #
|
||||
|
||||
cd ../api
|
||||
bun install
|
||||
cd ../ui
|
||||
bun install
|
||||
bun link @ibcornelsen/database
|
||||
|
||||
# ------------------------------------ APP ----------------------------------- #
|
||||
|
||||
cd ../$APP_NAME
|
||||
|
||||
|
||||
# Als erstes linken wir das package mit bun, damit wir z.B. in online-energieausweis darauf zugreifen können.
|
||||
bun link
|
||||
# Dann installieren wir noch einmal alle dependencies, das ist besonders wichtig
|
||||
# falls wir lokal verlinkte Projekte haben, sonst werden die nicht in unser
|
||||
# docker image übernommen
|
||||
bun install
|
||||
|
||||
# Dann stoppen wir unser altes docker image und bauen es neu.
|
||||
docker stop $APP_NAME
|
||||
docker rm $APP_NAME
|
||||
docker build -t $APP_NAME .
|
||||
bun link @ibcornelsen/database
|
||||
|
||||
# Jeder unserer Applikationen hat ein Verzeichnis in dem alle Dateien dauerhaft,
|
||||
# Versionsunabhängig gespeichert werden. Dieses legen wir hier an, falls es noch
|
||||
@@ -47,17 +39,33 @@ docker build -t $APP_NAME .
|
||||
PERSISTENT_DIR="${HOME}/persistent/${APP_NAME}";
|
||||
mkdir -p $PERSISTENT_DIR;
|
||||
|
||||
# TODO: Wir legen hier die .env Datei an, die die SSL Zertifikate enthält.
|
||||
# rm -f ~/$APP_NAME/.env;
|
||||
# touch ~/$APP_NAME/.env;
|
||||
# echo "PRIVATE_KEY=$(cat /etc/letsencrypt/live/ibcornelsen.de/privkey.pem | base64 | tr -d '\n')" >> ~/$APP_NAME/.env;
|
||||
# echo "CERTIFICATE=$(cat /etc/letsencrypt/live/ibcornelsen.de/fullchain.pem | base64 | tr -d '\n')" >> ~/$APP_NAME/.env;
|
||||
# Wir legen hier die .env Datei an, die die SSL Zertifikate enthält.
|
||||
rm -f ~/$APP_NAME/.env;
|
||||
touch ~/$APP_NAME/.env;
|
||||
echo "PRIVATE_KEY=$(cat /etc/letsencrypt/live/online-energieausweis.org/privkey.pem | base64 | tr -d '\n')" >> ~/$APP_NAME/.env;
|
||||
echo "CERTIFICATE=$(cat /etc/letsencrypt/live/online-energieausweis.org/fullchain.pem | base64 | tr -d '\n')" >> ~/$APP_NAME/.env;
|
||||
|
||||
# Wir müssen sichergehen, dass der Database Container läuft, sonst können wir ihn nicht linken.
|
||||
if [ ! $((docker ps | grep $DB_CONTAINER_NAME) | wc -l) -gt 0 ]; then
|
||||
cd ../database;
|
||||
bash build.sh;
|
||||
cd ../$APP_NAME;
|
||||
fi
|
||||
|
||||
# Auch die API sollte bereits laufen
|
||||
if [ $(pm2 pid api) -eq "0" ]; then
|
||||
cd ../api;
|
||||
make prod;
|
||||
cd ../$APP_NAME;
|
||||
fi
|
||||
|
||||
# Jetzt wo wir alle Vorbereitungen getroffen haben, starten wir das Docker Image und linken es mit der Datenbank.
|
||||
docker run -d --name $APP_NAME --link $DB_CONTAINER_NAME \
|
||||
-v "${PERSISTENT_DIR}:/persistent" \
|
||||
-v "./node_modules/@ibcornelsen/database:/${APP_NAME}/node_modules/@ibcornelsen/database" \
|
||||
-v "./node_modules/@ibcornelsen/api:/${APP_NAME}/node_modules/@ibcornelsen/api" \
|
||||
-v "./node_modules/@ibcornelsen/ui:/${APP_NAME}/node_modules/@ibcornelsen/ui" \
|
||||
-p "${APP_PORT}:3000" \
|
||||
$APP_NAME;
|
||||
# docker run -d --name $APP_NAME --link $DB_CONTAINER_NAME \
|
||||
# -v "${PERSISTENT_DIR}:/persistent" \
|
||||
# -v "./node_modules/@ibcornelsen/database:/${APP_NAME}/node_modules/@ibcornelsen/database" \
|
||||
# -v "./node_modules/@ibcornelsen/api:/${APP_NAME}/node_modules/@ibcornelsen/api" \
|
||||
# -v "./node_modules/@ibcornelsen/ui:/${APP_NAME}/node_modules/@ibcornelsen/ui" \
|
||||
# -p "${APP_PORT}:3000" \
|
||||
# $APP_NAME;
|
||||
|
||||
make prod
|
||||
@@ -1,17 +1,56 @@
|
||||
import { defineConfig } from "cypress";
|
||||
import dsv from "@rollup/plugin-dsv"
|
||||
import { prisma } from "./src/lib/server/prisma"
|
||||
import { fileURLToPath } from "url";
|
||||
import vitePreprocessor from "cypress-vite";
|
||||
|
||||
export default defineConfig({
|
||||
e2e: {
|
||||
baseUrl: "http://localhost:3000",
|
||||
supportFile: false,
|
||||
viewportHeight: 900,
|
||||
viewportWidth: 1660,
|
||||
},
|
||||
supportFile: fileURLToPath(new URL("./src/cypress/support/commands.ts", import.meta.url)),
|
||||
specPattern: "./src/cypress/e2e/**/*.{ts,js}",
|
||||
setupNodeEvents(on, config) {
|
||||
on("file:preprocessor", vitePreprocessor({
|
||||
optimizeDeps: {
|
||||
exclude: ["@ibcornelsen/database"]
|
||||
},
|
||||
resolve: {
|
||||
alias: {
|
||||
".prisma/client/index-browser": fileURLToPath(new URL("./node_modules/.prisma/client/index-browser.js", import.meta.url)),
|
||||
"#": fileURLToPath(new URL("./src", import.meta.url)),
|
||||
"#components": fileURLToPath(new URL("./src/components", import.meta.url)),
|
||||
"#lib": fileURLToPath(new URL("./src/lib", import.meta.url))
|
||||
}
|
||||
},
|
||||
base: fileURLToPath(new URL("./src", import.meta.url)),
|
||||
build: {
|
||||
commonjsOptions: {
|
||||
transformMixedEsModules: false
|
||||
}
|
||||
},
|
||||
plugins: [dsv()]
|
||||
}))
|
||||
on("task", {
|
||||
async verbrauchsausweisWohnen(query) {
|
||||
return await prisma.verbrauchsausweisWohnen.findFirst(query)
|
||||
},
|
||||
async plz() {
|
||||
const total = await prisma.postleitzahlen.count()
|
||||
const result = await prisma.postleitzahlen.findFirst({
|
||||
skip: Math.floor(Math.random() * total)
|
||||
})
|
||||
|
||||
return result?.plz
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
component: {
|
||||
devServer: {
|
||||
framework: "svelte",
|
||||
bundler: "vite",
|
||||
bundler: "vite"
|
||||
},
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1,277 +0,0 @@
|
||||
import fuelList from "#components/Ausweis/brennstoffListe";
|
||||
import { faker } from "@faker-js/faker";
|
||||
import { Enums } from "@ibcornelsen/database/client";
|
||||
import "cypress-file-upload"
|
||||
|
||||
describe("Verbrauchsausweis erstellen Schritt 1", () => {
|
||||
it("erstellt einen neuen Verbrauchsausweis Wohngebäude.", () => {
|
||||
cy.visit("/energieausweis-erstellen/verbrauchsausweis-gewerbe");
|
||||
|
||||
cy.wait(1000);
|
||||
|
||||
// Wir überprüfen, ob alle Ausstelgründe vorhanden sind, diese sollten genau so viele sein wie in der Datenbank vorhanden sind.
|
||||
cy.get("input[name='ausstellgrund']")
|
||||
.should("have.length", Object.values(Enums.Ausstellgrund).length)
|
||||
.eq(
|
||||
faker.number.int({
|
||||
min: 0,
|
||||
max: Object.values(Enums.Ausstellgrund).length - 1,
|
||||
})
|
||||
)
|
||||
.check();
|
||||
|
||||
// Jetzt Füllen wir das Baujahr vom Gebäude aus.
|
||||
cy.get("input[name='baujahr_gebaeude']")
|
||||
.should("have.attr", "type", "number")
|
||||
.type(
|
||||
faker.number.int({ min: 1900, max: 2021 }).toString() +
|
||||
"{enter}",
|
||||
{ delay: 50 }
|
||||
);
|
||||
|
||||
// Jetzt Füllen wir das Baujahr der Heizung aus.
|
||||
cy.get("input[name='baujahr_heizung']")
|
||||
.should("have.attr", "type", "number")
|
||||
.type(
|
||||
faker.number.int({ min: 1900, max: 2021 }).toString() +
|
||||
"{enter}",
|
||||
{ delay: 50 }
|
||||
);
|
||||
|
||||
// Anzahl Einheiten
|
||||
cy.get("input[name='einheiten']")
|
||||
.should("have.attr", "type", "number")
|
||||
.type(faker.number.int({ min: 1, max: 5 }).toString());
|
||||
|
||||
// Sanierungsstatus
|
||||
cy.get("select[name='saniert']").select(
|
||||
Math.random() > 0.5 ? "true" : "false"
|
||||
);
|
||||
|
||||
// Adresse
|
||||
cy.get("input[name='adresse']").type(faker.location.streetAddress());
|
||||
|
||||
// Postleitzahl
|
||||
cy.get("input[name='plz']").type(
|
||||
faker.location.zipCode({
|
||||
format: "#####",
|
||||
})
|
||||
);
|
||||
|
||||
// TODO: Ort - Dieser wird aus der Datenbank abgefragt, wir müssen also warten, bis der Dropdown da ist.
|
||||
|
||||
// Flaeche
|
||||
cy.get("input[name='flaeche']")
|
||||
.should("have.attr", "type", "number")
|
||||
.type(faker.number.int({ min: 50, max: 1000 }).toString());
|
||||
|
||||
// Nutzlaeche
|
||||
cy.get("input[name='nutzflaeche']")
|
||||
.should("have.attr", "type", "number")
|
||||
.type(faker.number.int({ min: 50, max: 1000 }).toString());
|
||||
|
||||
// Keller
|
||||
cy.get("select[name='keller']").find("option:not([disabled])").should("have.length", Object.values(Enums.Heizungsstatus).length).parent().select(faker.number.int({
|
||||
max: Object.values(Enums.Heizungsstatus).length,
|
||||
min: 1
|
||||
}));
|
||||
|
||||
// Dachgeschoss
|
||||
cy.get("select[name='dachgeschoss']").find("option:not([disabled])").should("have.length", Object.values(Enums.Heizungsstatus).length).parent().select(faker.number.int({
|
||||
max: Object.values(Enums.Heizungsstatus).length,
|
||||
min: 1
|
||||
}));
|
||||
|
||||
// Brennstoff und Einheit 1
|
||||
const brennstoffKombo = fuelList[faker.number.int({ min: 0, max: fuelList.length - 1 })];
|
||||
|
||||
cy.get("select[name='brennstoff_1']").select(brennstoffKombo[0]);
|
||||
cy.get("select[name='einheit_1']").select(brennstoffKombo[1]);
|
||||
|
||||
// Verbrauchszeitraum
|
||||
cy.get("select[name='energieverbrauch_zeitraum_monat']").select(faker.number.int({ min: 1, max: 12 }).toString());
|
||||
cy.get("select[name='energieverbrauch_zeitraum_jahr']").select(faker.number.int({ min: 2018, max: 2019 }).toString());
|
||||
|
||||
// Verbrauch
|
||||
cy.get("input[name='verbrauch_1']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||
cy.get("input[name='verbrauch_2']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||
cy.get("input[name='verbrauch_3']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||
|
||||
|
||||
const zusaetzlicheHeizquelle = Math.random() > 0.5;
|
||||
|
||||
if (zusaetzlicheHeizquelle) {
|
||||
cy.get("input[name='zusaetzliche_heizquelle']").check();
|
||||
|
||||
// Brennstoff und Einheit 2
|
||||
const brennstoffKombo2 = fuelList[faker.number.int({ min: 0, max: fuelList.length - 1 })];
|
||||
|
||||
cy.get("select[name='brennstoff_2']").select(brennstoffKombo2[0]);
|
||||
cy.get("select[name='einheit_2']").select(brennstoffKombo2[1]);
|
||||
|
||||
// Verbrauch
|
||||
cy.get("input[name='verbrauch_4']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||
cy.get("input[name='verbrauch_5']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||
cy.get("input[name='verbrauch_6']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||
}
|
||||
|
||||
// Gebäudestrom
|
||||
cy.get("input[name='strom_1']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||
cy.get("input[name='strom_2']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||
cy.get("input[name='strom_3']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||
|
||||
// Stromverbrauch Enthält
|
||||
if (Math.random() > 0.5) cy.get("input[name='stromverbrauch_enthaelt_heizung']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='stromverbrauch_enthaelt_warmwasser']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='stromverbrauch_enthaelt_lueftung']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='stromverbrauch_enthaelt_beleuchtung']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='stromverbrauch_enthaelt_kuehlung']").check();
|
||||
|
||||
// Warmwasser enthalten und bekannt
|
||||
const warmwasserEnthalten = Math.random() > 0.5;
|
||||
const anteilBekannt = Math.random() > 0.5;
|
||||
|
||||
if (warmwasserEnthalten) {
|
||||
cy.get("input[name='warmwasser_enthalten']").check();
|
||||
|
||||
if (anteilBekannt) {
|
||||
// Der Anteil ist bekannt, wir müssen ihn also angeben.
|
||||
cy.get("input[name='warmwasser_anteil_bekannt']").check();
|
||||
|
||||
cy.get("input[name='anteil_warmwasser_1']").type(faker.number.int({ min: 0, max: 50 }).toString());
|
||||
|
||||
if (zusaetzlicheHeizquelle) {
|
||||
// Zusätzliche Heizquelle existiert, also müssen wir auch hier den Anteil angeben.
|
||||
cy.get("input[name='anteil_warmwasser_1']").type(faker.number.int({ min: 0, max: 50 }).toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Thermische Kühlung enthalten
|
||||
const kuehlungEnthalten = Math.random() > 0.5;
|
||||
|
||||
if (kuehlungEnthalten) {
|
||||
cy.get("input[name='kuehlung_enthalten']").check();
|
||||
|
||||
cy.get("input[name='anteil_kuehlung_1']").type(faker.number.int({ min: 0, max: 50 }).toString());
|
||||
|
||||
if (zusaetzlicheHeizquelle) {
|
||||
// Zusätzliche Heizquelle existiert, also müssen wir auch hier den Anteil angeben.
|
||||
cy.get("input[name='anteil_kuehlung_2']").type(faker.number.int({ min: 0, max: 50 }).toString());
|
||||
}
|
||||
}
|
||||
|
||||
// Alternative Energieversorgungssysteme
|
||||
if (Math.random() > 0.5) cy.get("input[name='alternative_heizung']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='alternative_warmwasser']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='alternative_lueftung']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='alternative_kuehlung']").check();
|
||||
|
||||
// Gebäudetyp
|
||||
cy.get("select[name='gebaeudetyp']").then(($dropdown) => {
|
||||
const options = $dropdown.find('option');
|
||||
// Select the option at the random index
|
||||
cy.get("select[name='gebaeudetyp']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
||||
});
|
||||
|
||||
// Gebäudeteil
|
||||
cy.get("select[name='gebaeudeteil']").then(($dropdown) => {
|
||||
const options = $dropdown.find('option');
|
||||
// Select the option at the random index
|
||||
cy.get("select[name='gebaeudeteil']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
||||
});
|
||||
|
||||
// Lüftung
|
||||
cy.get("select[name='lueftung']").then(($dropdown) => {
|
||||
const options = $dropdown.find('option');
|
||||
// Select the option at the random index
|
||||
cy.get("select[name='lueftung']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
||||
});
|
||||
|
||||
// Kühlung
|
||||
cy.get("select[name='kuehlung']").then(($dropdown) => {
|
||||
const options = $dropdown.find('option');
|
||||
// Select the option at the random index
|
||||
cy.get("select[name='kuehlung']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
||||
});
|
||||
|
||||
// Leerstand
|
||||
cy.get("input[name='leerstand']").should("have.attr", "type", "number").type(faker.number.int({ min: 0, max: 30 }).toString());
|
||||
|
||||
// Heizungsanlage Daten
|
||||
if (Math.random() > 0.5) cy.get("input[name='zentralheizung']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='einzelofen']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='durchlauf_erhitzer']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='standard_kessel']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='solarsystem_warmwasser']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='waermepumpe']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='niedertemperatur_kessel']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='brennwert_kessel']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='warmwasser_rohre_gedaemmt']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='heizungsrohre_gedaemmt']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='zirkulation']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='raum_temperatur_regler']").check();
|
||||
|
||||
// Heizungsanlage Bilder
|
||||
cy.get("input[name='heizung_image']").should("have.attr", "type", "file").attachFile("images/heizungsanlage/1.jpeg", { subjectType: "input" });
|
||||
cy.get("input[name='heizung_image']").should("have.attr", "type", "file").attachFile("images/heizungsanlage/2.jpeg", { subjectType: "input" });
|
||||
|
||||
// Fenster Daten
|
||||
if (Math.random() > 0.5) cy.get("input[name='einfach_verglasung']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='doppel_verglasung']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='isolier_verglasung']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='dreifach_verglasung']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='fenster_dicht']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='fenster_teilweise_undicht']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='tueren_dicht']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='tueren_undicht']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='rolllaeden_kaesten_gedaemmt']").check();
|
||||
|
||||
// Fenster Bilder
|
||||
cy.get("input[name='fenster_image']").should("have.attr", "type", "file").attachFile("images/fenster/1.jpeg", { subjectType: "input" });
|
||||
cy.get("input[name='fenster_image']").should("have.attr", "type", "file").attachFile("images/fenster/2.jpeg", { subjectType: "input" });
|
||||
|
||||
// Wärmedämmung Daten
|
||||
if (Math.random() > 0.5) cy.get("input[name='aussenwand_gedaemmt']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='keller_wand_gedaemmt']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='keller_decke_gedaemmt']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='dachgeschoss_gedaemmt']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='oberste_geschossdecke_gedaemmt']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='oberste_geschossdecke_min_12cm_gedaemmt']").check();
|
||||
|
||||
// Wärmedämmung Bilder
|
||||
cy.get("input[name='daemmung_image']").should("have.attr", "type", "file").attachFile("images/daemmung/1.jpeg", { subjectType: "input" });
|
||||
cy.get("input[name='daemmung_image']").should("have.attr", "type", "file").attachFile("images/daemmung/2.jpeg", { subjectType: "input" });
|
||||
|
||||
// Gebäude Bild
|
||||
cy.get("input[name='gebaeude_image']").should("have.attr", "type", "file").attachFile("images/gebaeude/1.jpeg", { subjectType: "input" });
|
||||
|
||||
// Jetzt können wir den Verbrauchsausweis erstellen.
|
||||
cy.get("form[name='ausweis'] button[type='submit']").click({ force: true });
|
||||
|
||||
// Wir sind nicht eingeloggt also sollte jetzt ein Login Screen erscheinen.
|
||||
// Wir klicken auf registrieren und erstellen einen neuen Benutzer, danach loggen wir uns mit diesem ein.
|
||||
cy.get("button[name='registrieren']").click();
|
||||
|
||||
const email = faker.internet.email();
|
||||
const passwort = faker.internet.password();
|
||||
const vorname = faker.person.firstName();
|
||||
const nachname = faker.person.lastName();
|
||||
|
||||
cy.get("form[name='signup'] input[name='email']").should("be.visible").should("have.attr", "type", "email").type(email);
|
||||
cy.get("form[name='signup'] input[name='passwort']").should("be.visible").should("have.attr", "type", "password").type(passwort);
|
||||
cy.get("form[name='signup'] input[name='vorname']").should("be.visible").should("have.attr", "type", "text").type(vorname);
|
||||
cy.get("form[name='signup'] input[name='nachname']").should("be.visible").should("have.attr", "type", "text").type(nachname);
|
||||
|
||||
cy.get("form[name='signup'] button[type='submit']").click();
|
||||
|
||||
// Wir sind jetzt registriert und können uns nun einloggen.
|
||||
// Die Email sollte automatisch eingetragen sein, da wir uns gerade registriert haben.
|
||||
cy.get("form[name='login'] input[name='email']").should("be.visible").should("have.attr", "type", "email").should("contain.value", email);
|
||||
cy.get("form[name='login'] input[name='passwort']").should("be.visible").should("have.attr", "type", "password").type(passwort);
|
||||
|
||||
cy.get("form[name='login'] button[type='submit']").click();
|
||||
|
||||
// Der Ausweis sollte jetzt schon erstellt worden sein.
|
||||
});
|
||||
});
|
||||
@@ -1,282 +0,0 @@
|
||||
import fuelList from "#components/Ausweis/brennstoffListe";
|
||||
import { faker } from "@faker-js/faker";
|
||||
import { Enums } from "@ibcornelsen/database/client";
|
||||
import "cypress-file-upload"
|
||||
|
||||
describe("Verbrauchsausweis erstellen Schritt 1", () => {
|
||||
it("erstellt einen neuen Verbrauchsausweis Wohngebäude.", () => {
|
||||
cy.visit("/energieausweis-erstellen/verbrauchsausweis-wohnen");
|
||||
|
||||
cy.wait(1000);
|
||||
|
||||
// Wir überprüfen, ob alle Ausstelgründe vorhanden sind, diese sollten genau so viele sein wie in der Datenbank vorhanden sind.
|
||||
cy.get("input[name='ausstellgrund']")
|
||||
.should("have.length", Object.values(Enums.Ausstellgrund).length)
|
||||
.eq(
|
||||
faker.number.int({
|
||||
min: 0,
|
||||
max: Object.values(Enums.Ausstellgrund).length - 1,
|
||||
})
|
||||
)
|
||||
.check();
|
||||
|
||||
// Jetzt Füllen wir das Baujahr vom Gebäude aus.
|
||||
cy.get("input[name='baujahr_gebaeude']")
|
||||
.should("have.attr", "type", "number")
|
||||
.type(
|
||||
faker.number.int({ min: 1900, max: 2021 }).toString() +
|
||||
"{enter}",
|
||||
{ delay: 50 }
|
||||
);
|
||||
|
||||
// Jetzt Füllen wir das Baujahr der Heizung aus.
|
||||
cy.get("input[name='baujahr_heizung']")
|
||||
.should("have.attr", "type", "number")
|
||||
.type(
|
||||
faker.number.int({ min: 1900, max: 2021 }).toString() +
|
||||
"{enter}",
|
||||
{ delay: 50 }
|
||||
);
|
||||
|
||||
// Anzahl Einheiten
|
||||
cy.get("input[name='einheiten']")
|
||||
.should("have.attr", "type", "number")
|
||||
.type(faker.number.int({ min: 1, max: 5 }).toString());
|
||||
|
||||
// Sanierungsstatus
|
||||
cy.get("select[name='saniert']").select(
|
||||
Math.random() > 0.5 ? "true" : "false"
|
||||
);
|
||||
|
||||
// Adresse
|
||||
cy.get("input[name='adresse']").type(faker.location.streetAddress());
|
||||
|
||||
// Postleitzahl
|
||||
cy.get("input[name='plz']").type(
|
||||
faker.location.zipCode({
|
||||
format: "#####",
|
||||
})
|
||||
);
|
||||
|
||||
// TODO: Ort - Dieser wird aus der Datenbank abgefragt, wir müssen also warten, bis der Dropdown da ist.
|
||||
|
||||
// Flaeche
|
||||
cy.get("input[name='flaeche']")
|
||||
.should("have.attr", "type", "number")
|
||||
.type(faker.number.int({ min: 50, max: 1000 }).toString());
|
||||
|
||||
// Nutzflaeche
|
||||
cy.get("input[name='nutzflaeche']")
|
||||
.should("have.attr", "type", "number")
|
||||
.type(faker.number.int({ min: 50, max: 1000 }).toString());
|
||||
|
||||
// Keller
|
||||
cy.get("select[name='keller']").find("option:not([disabled])").should("have.length", Object.values(Enums.Heizungsstatus).length).parent().select(faker.number.int({
|
||||
max: Object.values(Enums.Heizungsstatus).length,
|
||||
min: 1
|
||||
}));
|
||||
|
||||
// Dachgeschoss
|
||||
cy.get("select[name='dachgeschoss']").find("option:not([disabled])").should("have.length", Object.values(Enums.Heizungsstatus).length).parent().select(faker.number.int({
|
||||
max: Object.values(Enums.Heizungsstatus).length,
|
||||
min: 1
|
||||
}));
|
||||
|
||||
// Brennstoff und Einheit 1
|
||||
const brennstoffKombo = fuelList[faker.number.int({ min: 0, max: fuelList.length - 1 })];
|
||||
|
||||
cy.get("select[name='brennstoff_1']").select(brennstoffKombo[0]);
|
||||
cy.get("select[name='einheit_1']").select(brennstoffKombo[1]);
|
||||
|
||||
// Verbrauchszeitraum
|
||||
cy.get("select[name='energieverbrauch_zeitraum_monat']").select(faker.number.int({ min: 1, max: 12 }).toString());
|
||||
cy.get("select[name='energieverbrauch_zeitraum_jahr']").select(faker.number.int({ min: 2018, max: 2019 }).toString());
|
||||
|
||||
// Verbrauch
|
||||
cy.get("input[name='verbrauch_1']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||
cy.get("input[name='verbrauch_2']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||
cy.get("input[name='verbrauch_3']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||
|
||||
|
||||
const zusaetzlicheHeizquelle = Math.random() > 0.5;
|
||||
|
||||
if (zusaetzlicheHeizquelle) {
|
||||
cy.get("input[name='zusaetzliche_heizquelle']").check();
|
||||
|
||||
// Brennstoff und Einheit 2
|
||||
const brennstoffKombo2 = fuelList[faker.number.int({ min: 0, max: fuelList.length - 1 })];
|
||||
|
||||
cy.get("select[name='brennstoff_2']").select(brennstoffKombo2[0]);
|
||||
cy.get("select[name='einheit_2']").select(brennstoffKombo2[1]);
|
||||
|
||||
// Verbrauch
|
||||
cy.get("input[name='verbrauch_4']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||
cy.get("input[name='verbrauch_5']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||
cy.get("input[name='verbrauch_6']").type(faker.number.int({ min: 4000, max: 15000 }).toString());
|
||||
}
|
||||
|
||||
// Warmwasser enthalten und bekannt
|
||||
const warmwasserEnthalten = Math.random() > 0.5;
|
||||
const anteilBekannt = Math.random() > 0.5;
|
||||
|
||||
if (warmwasserEnthalten) {
|
||||
cy.get("input[name='warmwasser_enthalten']").check();
|
||||
|
||||
if (anteilBekannt) {
|
||||
// Der Anteil ist bekannt, wir müssen ihn also angeben.
|
||||
cy.get("input[name='warmwasser_anteil_bekannt']").check();
|
||||
|
||||
cy.get("input[name='anteil_warmwasser_1']").type(faker.number.int({ min: 0, max: 50 }).toString());
|
||||
|
||||
if (zusaetzlicheHeizquelle) {
|
||||
// Zusätzliche Heizquelle existiert, also müssen wir auch hier den Anteil angeben.
|
||||
cy.get("input[name='anteil_warmwasser_2']").type(faker.number.int({ min: 0, max: 50 }).toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Alternative Energieversorgungssysteme
|
||||
if (Math.random() > 0.5) cy.get("input[name='alternative_heizung']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='alternative_warmwasser']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='alternative_lueftung']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='alternative_kuehlung']").check();
|
||||
|
||||
// Gebäudetyp
|
||||
cy.get("select[name='gebaeudetyp']").then(($dropdown) => {
|
||||
const options = $dropdown.find('option');
|
||||
// Select the option at the random index
|
||||
cy.get("select[name='gebaeudetyp']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
||||
});
|
||||
|
||||
// Gebäudeteil
|
||||
cy.get("select[name='gebaeudeteil']").then(($dropdown) => {
|
||||
const options = $dropdown.find('option');
|
||||
// Select the option at the random index
|
||||
cy.get("select[name='gebaeudeteil']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
||||
});
|
||||
|
||||
// Lüftung
|
||||
cy.get("select[name='lueftung']").then(($dropdown) => {
|
||||
const options = $dropdown.find('option');
|
||||
// Select the option at the random index
|
||||
cy.get("select[name='lueftung']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
||||
});
|
||||
|
||||
// Kühlung
|
||||
cy.get("select[name='kuehlung']").then(($dropdown) => {
|
||||
const options = $dropdown.find('option');
|
||||
// Select the option at the random index
|
||||
cy.get("select[name='kuehlung']").select(options.eq(faker.number.int({ min: 1, max: options.length - 1 })).val() as string);
|
||||
});
|
||||
|
||||
// Leerstand
|
||||
cy.get("input[name='leerstand']").should("have.attr", "type", "number").type(faker.number.int({ min: 0, max: 30 }).toString());
|
||||
|
||||
// Heizungsanlage Daten
|
||||
if (Math.random() > 0.5) cy.get("input[name='zentralheizung']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='einzelofen']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='durchlauf_erhitzer']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='standard_kessel']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='solarsystem_warmwasser']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='waermepumpe']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='niedertemperatur_kessel']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='brennwert_kessel']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='warmwasser_rohre_gedaemmt']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='heizungsrohre_gedaemmt']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='zirkulation']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='raum_temperatur_regler']").check();
|
||||
|
||||
// Heizungsanlage Bilder
|
||||
cy.get("input[name='heizung_image']").should("have.attr", "type", "file").attachFile("images/heizungsanlage/1.jpeg", { subjectType: "input" });
|
||||
cy.get("input[name='heizung_image']").should("have.attr", "type", "file").attachFile("images/heizungsanlage/2.jpeg", { subjectType: "input" });
|
||||
|
||||
// Fenster Daten
|
||||
if (Math.random() > 0.5) cy.get("input[name='einfach_verglasung']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='doppel_verglasung']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='isolier_verglasung']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='dreifach_verglasung']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='fenster_dicht']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='fenster_teilweise_undicht']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='tueren_dicht']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='tueren_undicht']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='rolllaeden_kaesten_gedaemmt']").check();
|
||||
|
||||
// Fenster Bilder
|
||||
cy.get("input[name='fenster_image']").should("have.attr", "type", "file").attachFile("images/fenster/1.jpeg", { subjectType: "input" });
|
||||
cy.get("input[name='fenster_image']").should("have.attr", "type", "file").attachFile("images/fenster/2.jpeg", { subjectType: "input" });
|
||||
|
||||
// Wärmedämmung Daten
|
||||
if (Math.random() > 0.5) cy.get("input[name='aussenwand_gedaemmt']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='keller_wand_gedaemmt']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='keller_decke_gedaemmt']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='dachgeschoss_gedaemmt']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='oberste_geschossdecke_gedaemmt']").check();
|
||||
if (Math.random() > 0.5) cy.get("input[name='oberste_geschossdecke_min_12cm_gedaemmt']").check();
|
||||
|
||||
// Wärmedämmung Bilder
|
||||
cy.get("input[name='daemmung_image']").should("have.attr", "type", "file").attachFile("images/daemmung/1.jpeg", { subjectType: "input" });
|
||||
cy.get("input[name='daemmung_image']").should("have.attr", "type", "file").attachFile("images/daemmung/2.jpeg", { subjectType: "input" });
|
||||
|
||||
// Gebäude Bild
|
||||
cy.get("input[name='gebaeude_image']").should("have.attr", "type", "file").attachFile("images/gebaeude/1.jpeg", { subjectType: "input" });
|
||||
|
||||
// Jetzt können wir den Verbrauchsausweis erstellen.
|
||||
cy.get("form[name='ausweis'] button[type='submit']").click({ force: true });
|
||||
|
||||
// Wir sind nicht eingeloggt also sollte jetzt ein Login Screen erscheinen.
|
||||
// Wir klicken auf registrieren und erstellen einen neuen Benutzer, danach loggen wir uns mit diesem ein.
|
||||
cy.get("button[name='registrieren']").click();
|
||||
|
||||
const email = faker.internet.email();
|
||||
const passwort = "test1234";
|
||||
const vorname = faker.person.firstName();
|
||||
const nachname = faker.person.lastName();
|
||||
|
||||
cy.get("form[name='signup'] input[name='email']").should("be.visible").should("have.attr", "type", "email").type(email);
|
||||
cy.get("form[name='signup'] input[name='passwort']").should("be.visible").should("have.attr", "type", "password").type(passwort);
|
||||
cy.get("form[name='signup'] input[name='vorname']").should("be.visible").should("have.attr", "type", "text").type(vorname);
|
||||
cy.get("form[name='signup'] input[name='nachname']").should("be.visible").should("have.attr", "type", "text").type(nachname);
|
||||
|
||||
cy.get("form[name='signup'] button[type='submit']").click();
|
||||
|
||||
// Wir sind jetzt registriert und können uns nun einloggen.
|
||||
// Die Email sollte automatisch eingetragen sein, da wir uns gerade registriert haben.
|
||||
cy.get("form[name='login'] input[name='email']").should("be.visible").should("have.attr", "type", "email").should("contain.value", email);
|
||||
cy.get("form[name='login'] input[name='passwort']").should("be.visible").should("have.attr", "type", "password").type(passwort);
|
||||
|
||||
cy.get("form[name='login'] button[type='submit']").click();
|
||||
|
||||
// Der Ausweis sollte jetzt schon erstellt worden sein und wir sollten auf die kundendaten seite weitergeleitet worden sein.
|
||||
cy.url().should("contain", "/kundendaten");
|
||||
|
||||
cy.wait(1000)
|
||||
|
||||
// Wir füllen jetzt die Kundendaten aus.
|
||||
cy.get("select[name='anrede']").select(Math.random() > 0.5 ? "Herr" : "Frau");
|
||||
cy.get("input[name='vorname']").should("contain.value", vorname);
|
||||
cy.get("input[name='name']").should("contain.value", nachname);
|
||||
cy.get("input[name='email']").should("contain.value", email);
|
||||
cy.get("input[name='telefon']").type(faker.phone.number());
|
||||
|
||||
cy.get("input[name='rechnung_empfaenger']").type(`${vorname} ${nachname}`);
|
||||
cy.get("input[name='rechnung_strasse']").type(faker.location.streetAddress());
|
||||
// TODO: Random Plz generieren, allerdings muss die auch in der Datenbank vorhanden sein...
|
||||
cy.get("input[name='rechnung_plz']").type("2103");
|
||||
// Jetzt sollte der PLZ Container erscheinen, dort klicken wir einfach das erste Element an.
|
||||
cy.get("div[data-test='plz-container']").children().first().click();
|
||||
cy.get("input[name='rechnung_telefon']").type(faker.phone.number());
|
||||
cy.get("input[name='rechnung_email']").type(faker.internet.email());
|
||||
cy.get("button[data-test='paypal']").click();
|
||||
|
||||
// Datenschutz und AGB akzeptieren, dann schicken wir das Formular ab.
|
||||
cy.get("input[name='agb-akzeptieren']").check()
|
||||
cy.get("input[name='datenschutz-akzeptieren']").check()
|
||||
cy.get("button[type='submit']").click();
|
||||
|
||||
cy.origin('https://www.mollie.com', () => {
|
||||
// Jetzt sind wir auf der Mollie Seite, dort wählen wir den "paid" status aus
|
||||
cy.get("input[type='radio'][name='final_state'][value='paid']").check();
|
||||
// Da wird unser Test fehlschlagen, da die localhost domain von Mollie aus nicht erreichbar ist.
|
||||
})
|
||||
});
|
||||
});
|
||||
|
After Width: | Height: | Size: 141 KiB |
@@ -1,37 +0,0 @@
|
||||
/// <reference types="cypress" />
|
||||
// ***********************************************
|
||||
// This example commands.ts shows you how to
|
||||
// create various custom commands and overwrite
|
||||
// existing commands.
|
||||
//
|
||||
// For more comprehensive examples of custom
|
||||
// commands please read more here:
|
||||
// https://on.cypress.io/custom-commands
|
||||
// ***********************************************
|
||||
//
|
||||
//
|
||||
// -- This is a parent command --
|
||||
// Cypress.Commands.add('login', (email, password) => { ... })
|
||||
//
|
||||
//
|
||||
// -- This is a child command --
|
||||
// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... })
|
||||
//
|
||||
//
|
||||
// -- This is a dual command --
|
||||
// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... })
|
||||
//
|
||||
//
|
||||
// -- This will overwrite an existing command --
|
||||
// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... })
|
||||
//
|
||||
// declare global {
|
||||
// namespace Cypress {
|
||||
// interface Chainable {
|
||||
// login(email: string, password: string): Chainable<void>
|
||||
// drag(subject: string, options?: Partial<TypeOptions>): Chainable<Element>
|
||||
// dismiss(subject: string, options?: Partial<TypeOptions>): Chainable<Element>
|
||||
// visit(originalFn: CommandOriginalFn, url: string, options: Partial<VisitOptions>): Chainable<Element>
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
@@ -1,26 +1,9 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
ibcornelsen-online-energieausweis:
|
||||
database:
|
||||
build: ./
|
||||
command: bun run dev --host
|
||||
environment:
|
||||
PORT: 3000
|
||||
NODE_ENV: "development"
|
||||
restart: always
|
||||
env_file:
|
||||
- .env
|
||||
ports:
|
||||
- "3000:3000"
|
||||
volumes:
|
||||
- ./:/online-energieausweis
|
||||
- ./node_modules/@ibcornelsen/ui:/online-energieausweis/node_modules/@ibcornelsen/ui
|
||||
- ./node_modules/@ibcornelsen/database:/online-energieausweis/node_modules/@ibcornelsen/database
|
||||
- ./node_modules/@ibcornelsen/api:/online-energieausweis/node_modules/@ibcornelsen/api
|
||||
- ./node_modules/radix-svelte-icons:/online-energieausweis/node_modules/radix-svelte-icons
|
||||
- ../api/persistent:/persistent
|
||||
ibcornelsen-api:
|
||||
extends:
|
||||
file: ../api/docker-compose.yml
|
||||
service: ibcornelsen-api
|
||||
ibcornelsen-database:
|
||||
extends:
|
||||
file: ../database/docker-compose.yml
|
||||
service: ibcornelsen-database
|
||||
- 5432:5432
|
||||
15
install.sh
@@ -1,15 +0,0 @@
|
||||
git clone https://github.com/IBCornelsen/online-energieausweis
|
||||
git clone https://github.com/IBCornelsen/database
|
||||
git clone https://github.com/IBCornelsen/api
|
||||
|
||||
cd ./database
|
||||
bun link
|
||||
bun install
|
||||
|
||||
cd ../api
|
||||
bun link
|
||||
bun install
|
||||
|
||||
cd ../online-energieausweis
|
||||
bun link
|
||||
bun install
|
||||
@@ -1,498 +0,0 @@
|
||||
---
|
||||
layout: ../layouts/Layout.astro
|
||||
title: Energieausweis EnEV/GEG
|
||||
---
|
||||
|
||||
|
||||
# EnEV Zusammenfassung (Archiv - Seit 1. Mai 2021 abgelöst durch GEG)
|
||||
|
||||
|
||||
## EnEV - Alle Paragraphen zusammengefasst
|
||||
|
||||
Stand: aktuelle EnEV gemäß der am 21. Nov. 2013 verkündeten Änderungs-Verordnung. Hamburg, den 01.09.2018
|
||||
|
||||
* * *
|
||||
|
||||
## Übersicht der EnEV Paragraphen
|
||||
|
||||
|
||||
### EnEV - Allgemein
|
||||
|
||||
* [§ 1 EnEV - Absicht, welche Häuser und Bauten](#one)
|
||||
* [§ 2 EnEV - Definition verwendeter Begriffe und technischer Ausdrücke](#two)
|
||||
|
||||
### EnEV - Neubau
|
||||
|
||||
* [§ 3 EnEV - Wohngebäude Anforderungen](#three)
|
||||
* [§ 4 EnEV - Nichtwohngebäude (Gewerbegebäude) - Anforderungen](#four)
|
||||
* [§ 5 EnEV - PV Strom darf vom Endenergiebedarf abgezogen werden](#five)
|
||||
* [§ 6 EnEV - Mindestluftwechsel und Blower Door Test](#six)
|
||||
* [§ 7 EnEV - Gleichwertigkeitsnachweis und Mindestwärmeschutz](#seven)
|
||||
* [§ 8 EnEV - Gebäude < 50m², nur Anforderung an Gebäudehülle](#eight)
|
||||
|
||||
### EnEV - Bestandsgebäude
|
||||
|
||||
* [§ 9 EnEV - Modernisierung und Erweiterung](#nine)
|
||||
* [§ 10 EnEV - Heizung Nachrüstpflicht, Dämmung Geschoßdecke](#ten)
|
||||
* [§ 11 EnEV - Energetische Qualität bei Veränderung beibehalten](#eleven)
|
||||
* [§ 12 EnEV - Kontrolle der Effizienz von Klimaanlagen - Inspektionsbericht](#twelve)
|
||||
|
||||
### EnEV - Anlagentechnik
|
||||
|
||||
* [§ 13 EnEV - Installation bzw. Inbetriebnahme von Wärmeerzeug](#thirteen)
|
||||
* [§ 14 EnEV - Leitungen und Warmwasser](#fourteen)
|
||||
* [§ 15 EnEV - Klimatisierung und Belüftung](#fifteen)
|
||||
|
||||
### EnEV - Energieausweis
|
||||
|
||||
* [§ 16 EnEV - Energieausweis Erstellung und Anwendung](#sixteen)
|
||||
* [§ 16a EnEV - Notwendige Angaben in Inseraten zur Vermarktung von Immobilien](#sixteenA)
|
||||
* [§ 17 EnEV - Energieausweis Prinzipien](#seventeen)
|
||||
* [§ 18 EnEV - Ausstellung Bedarfsausweis](#eightteen)
|
||||
* [§ 19 EnEV - Ausstellung Verbrauchsausweis](#ninteen)
|
||||
* [§ 20 EnEV - Modernisierungsempfehlungen](#twenty)
|
||||
* [§ 21 EnEV - Berechtigung zur Energieausweis Erstellung für Bestandsgebäude](#twentyone)
|
||||
|
||||
### EnEV - Gemeinsames
|
||||
|
||||
* [§ 22 EnEV - Mischgebäude](#twentytwo)
|
||||
* [§ 23 EnEV - Anerkannte Regeln der Technik](#twentythree)
|
||||
* [§ 24 EnEV - Ausnahmen](#twentyfour)
|
||||
* [§ 25 EnEV - Befreiungen](#twentyfive)
|
||||
* [§ 25a EnEV - Flüchtlingsunterkünfte](#twentyfiveA)
|
||||
* [§ 26 EnEV - Verantwortliche](#twentysix)
|
||||
* [§ 26a EnEV - Unternehmererklärung](#twentysixa)
|
||||
* [§ 26b EnEV - Bezirksschornsteinfeger](#twentysixb)
|
||||
* [§ 26c EnEV - Registriernummern](#twentysixc)
|
||||
* [§ 26d EnEV - Stichprobenkontrollen](#twentysixd)
|
||||
* [§ 26e EnEV - Auswertung von Daten](#twentysixe)
|
||||
* [§ 26f EnEV - Erfahrungsberichte](#twentysixf)
|
||||
* [§ 27 EnEV - Ordnungswidrigkeiten](#twentyseven)
|
||||
|
||||
### EnEV - Übergang, Inkrafttreten
|
||||
|
||||
* [§ 28 EnEV - Übergangsvorschrift](#twentyeight)
|
||||
* [§ 29 EnEV - Übergangsvorschriften für Energieausweise und Aussteller](#twentynine)
|
||||
* [§ 30 EnEV - Übergangsvorschrift Vollzugsaufgaben des Deutschen Instituts für Bautechnik (DIBt, Berlin)](#thirty)
|
||||
|
||||
### EnEV - Anlagen
|
||||
|
||||
* [EnEV - Anlagen](#Anlagen)
|
||||
|
||||
* * *
|
||||
|
||||
## EnEV - Allgemein
|
||||
|
||||
### § 1 EnEV - Absicht, welche Häuser und Bauten
|
||||
|
||||
Im § 1 der EnEV wird beschrieben zu welchem Zweck das Gesetzt verabschiedet wurde. Sie leitet sich von der [EG-Richtlinie 2002/91/EG](http://europa.eu/legislation_summaries/other/l27042_de.htm) (EPBD Energy Performance of Buildings Directive) ab um die europäischen Vorgaben zur Gesamtenergieeffizienz von Gebäuden umzusetzen. Ziel der Bundesregierung ist es bis zum Jahr 2050 einen weitestgehend klimaneutralen Gebäudebestand zu erreichen.
|
||||
|
||||
Die Verordnung gilt für Gebäude die zum Aufenthalt von Personen errichtet wurden bzw. in denen sich Personen dauerhaft aufhalten. Voraussetzung ist, daß der Einsatz von Energie zur Beheizung oder Kühlung notwendig ist. Provisorische Bauten mit einer Nutzungsdauer < 2 Jahren, Zelte und Gebäude mit einer jährlichen Nutzungsdauer < 4 Monate sind nicht Bestandteil der Verordnung. Weitere Außnahmen sind im Volltext des [§ 1 Zweck und Anwendungsbereich](/enev/%c2%a7-1-zweck-und-anwendungsbereich/) formuliert.
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 2 EnEV - Definition verwendeter Begriffe und technischer Ausdrücke
|
||||
|
||||
Im § 2 sind folgende im Gesetzestext verwendeten Begriffe bzw. Ausdrücke definiert:
|
||||
|
||||
* Wohngebäude
|
||||
* Nichtwohngebäude
|
||||
* kleine Gebäude
|
||||
* Baudenkmäler
|
||||
* beheizte Räume
|
||||
* gekühlte Räume
|
||||
* erneuerbare Energien
|
||||
* Heizkessel
|
||||
* Nennleistung
|
||||
|
||||
* Niedertemperatur-Heizkessel
|
||||
* Brennwertkessel
|
||||
* elektrische Speicherheizsysteme
|
||||
* Wohnfläche
|
||||
* Nutzfläche
|
||||
* Gebäudenutzfläche
|
||||
* Nettogrundfläche
|
||||
* Nutzflächen mit starkem Publikumsverkehr
|
||||
|
||||
Die genaue Definition der Begriffe sind im Volltext des [§ 2 Begriffsbestimmungen](/enev/%c2%a7-2-begriffsbestimmungen/) formuliert.
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
## EnEV - Neubau
|
||||
|
||||
### § 3 EnEV - Wohngebäude Anforderungen
|
||||
|
||||
Im § 3 der EnEV sind die Anforderungen an den Jahres-Primärenergiebedarf von Wohngebäuden formuliert. Dabei wird der Jahres-Primärenergiebedarf eines Referenzgebäudes mit klar definierter technischer Referenzausführung als Vergleichswert herangezogen. Das Referenzgebäude gleicht dem untersuchten Gebäude in Geometrie und Ausrichtung. Der berechnete Primärenergiebedarf darf den Wert des Referenzgebäudes nicht überschreiten.
|
||||
|
||||
Desweiteren sind maximal zulässige Transmissionswärmeverluste (Ht-Werte in W/m²K) der wärmeübertragende Umfassungsfläche wie Außenwand, Dach, Fenster und Boden vorgegeben. Außerdem wird das zu verwendende Rechenverfahren angegeben und die Anforderungen und Berücksichtigung an den sommerlichen Wärmeschutz.
|
||||
|
||||
Der detaillierte Gesetzestext sowie mögliche Außnahmen die vorab definierte Ausstattungsvarianten betreffen können, sind im Volltext des [§ 3 Anforderungen an Wohngebäude](/enev/%c2%a7-3-anforderungen-an-wohngebaeude/) formuliert.
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 4 EnEV - Nichtwohngebäude (Gewerbegebäude) - Anforderungen
|
||||
|
||||
Im § 4 sind die Anforderungen an den Jahres-Primärenergiebedarf von Nichtwohngebäuden bzw. Gewerbegebäuden formuliert. Sie entsprechen dem gleichen Verfahren wie bei Wohngebäuden. Zusätzlich wird die eingebaute Beleuchtung berücksichtigt. Der ausführliche Gesetzestext ist im Volltext des [§ 4 Anforderungen an Nichtwohngebäude](/enev/%c2%a7-4-anforderungen-an-nichtwohngebaeude/) formuliert.
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 5 EnEV - PV Strom darf vom Endenergiebedarf abgezogen werden
|
||||
|
||||
Im § 5 der EnEV ist geregelt, wie am Gebäude produzierter Photovoltaikstrom in die EnEV-Berechnung einfließt. Dabei darf der produzierte Strom vom Endenergiebedarf abgezogen werden. Allerdings nur bis zu einer Höhe die dem Strombedarf der jeweiligen Gebäudenutzung entspricht.
|
||||
|
||||
Strombedarf und Ertrag sind nach vorgegebenen Verfahren für Wohn- und Nichtwohngebäude zu bestimmen. Weitere Einzelheiten sind im Volltext des [§ 5 Anrechnung von Strom aus erneuerbaren Energien](/enev/%c2%a7-5-anrechnung-von-strom-aus-erneuerbaren-energien/) formuliert.
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 6 EnEV - Mindestluftwechsel und Blower Door Test
|
||||
|
||||
Im § 6 der EnEV sind Anforderungen an die Luftdichtheit der Gebäudehülle formuliert. Die Gebäudehülle soll einschließlich Fugen dauerhaft luftundurchlässig sein. Außerdem muß ein Mindestluftwechsel gewährleistet sein.
|
||||
|
||||
Wenn die Luftdichtheit mittels Blower Door Test überprüft wird, dann kann in der EnEV-Berechnung mit einer geringeren Luftwechselrate gerechnet werden. Im Ergebnis können dann bessere Werte erreicht werden. Hier geht es zum Volltext des [§ 6 Dichtheit, Mindestluftwechsel](/enev/%c2%a7-6-dichtheit-mindestluftwechsel/).
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 7 EnEV - Gleichwertigkeitsnachweis und Mindestwärmeschutz
|
||||
|
||||
Im § 7 ist der Mindestwärmeschutz bei neu zu errichtenden Gebäuden geregelt. Die Gebäudehülle angrenzend an Außenluft, Erdreich oder Bereiche niedriger Innentemperatur, muß den Mindestwärmeschutz nach anerkannten Regeln der Technik einhalten. Notwendige konstruktive Wärmebrücken sollen so gering wie nötig ausfallen.
|
||||
|
||||
Bei der EnEV-Berechnung kann mit einem Zuschlag von 0,05 W/m²K zum Ht-Wert gerechnet werden, wenn ein Gleichwertignachweis geführt werden kann. Alternativ kann jede Wärmebrücke separat gerechnet werden. Ein Zuschlag zum Ht-Wert ist dann nicht mehr nötig. Weitere Informationen finden Sie in [§ 7 Mindestwärmeschutz, Wärmebrücken](/enev/%c2%a7-7-mindestwaermeschutz-waermebruecken/).
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 8 EnEV - Gebäude < 50m², nur Anforderung an Gebäudehülle
|
||||
|
||||
Im § 8 sind Außnahmen für kleinere Gebäude geregelt. Es müssen nur die Anforderungen an die Wärmedurchgangskoeffizienten der Außenbauteile eingehalten werden. Hier gehts zum Volltext des [§ 8 Anforderungen an kleine Gebäude und Gebäude aus Raumzellen](/enev/%c2%a7-8-anforderungen-an-kleine-gebaeude-und-gebaeude-aus-raumzellen/).
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
## EnEV - Bestandsgebäude
|
||||
|
||||
### § 9 EnEV - Modernisierung und Erweiterung
|
||||
|
||||
Im § 9 der EnEV sind die einzuhaltenden Mindestanforderungen von Bestandsgebäuden bei Änderung, Erweiterung oder Modernisierung formuliert. Wenn mehr als 10% der Außenbauteile eines Gebäudes erneuert oder ersetzt werden, müssen festgelegte Ht-Werte der Wärmedurchgangskoeffizienten für die neuen Bauteile eingehalten werden. Die Wärmedurchgangskoeffizienten können über einen Bauteilnachweis überprüft werden.
|
||||
|
||||
Die Eingangs formulierten Anforderungen gelten auch als erfüllt, wenn Jahres Primärenergiebedarf und Ht-Wert des gesamten geänderten Gebäudes den Jahres Primärenergiebedarf des Referenzgebäudes und den ermittelten Transmissionswärmeverlust Ht um nicht mehr als 40% überschreitet. Diese Anforderungen gelten für Wohn- und Nichtwohngebäude. Zur Ermittlung und Überprüfung der Anforderungswerte muß ein Energieausweis erstellt werden.
|
||||
|
||||
Der ausführliche Gesetzestext und weitere Regelungen z.B. bei Einbau eines neuen Wärmeerzeugers bzw. bei Erweiterungen > 50 m² sind im Volltext des [§ 9 Änderung, Erweiterung und Ausbau von Gebäuden](/enev/%c2%a7-9-aenderung-erweiterung-und-ausbau-von-gebaeuden/) formuliert.
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 10 EnEV - Heizung Nachrüstpflicht, Dämmung Geschoßdecke
|
||||
|
||||
Im § 10 sind einige Modernisierungs- bzw. Nachrüstpflichten von Gebäudeeigentümern geregelt. Heizkessel die über keine Niedertemperatur- bzw. Brennwerttechnik verfügen und vor dem 1. Januar 1985 eingebaut wurden, dürfen nicht mehr betrieben werden. Heizkessel die nach dem 1. Januar 1985 installiert wurden müssen spätestens nach Ablauf von 30 Jahren mit Niedertemperatur- bzw. Brennwertkesseln ausgetauscht werden. Die Regelung gilt für Heizkessel mit einer Leistung von mehr als 4 kW bzw. weniger als 400 kW.
|
||||
|
||||
Eigentümer haben dafür sorge zu tragen, daß Wärmeverteil- und Warmwasserleitungen sowie Amaturen der Heizungsanlage entsprechend gedämmt sind bzw. Dämmung nachgerüstet wurde. Auch müssen oberste Geschossdecken zu kalten Dachräumen gedämmt werden, wenn diese den Mindestwärmeschutz nicht einhalten. Die Dämmung muß dann einen Wärmedurchgangskoeffizient von mindestens 0,24 Watt/(m²K) einhalten.
|
||||
|
||||
Außnahmen zu diesen Vorgaben bestehen bei Selbstnutzung bzw. wenn der finanzielle Aufwand im Vergleich zum Einsparpotential unverhältnismäßig ist. Den ausführlichen Text können Sie im [§ 10 Nachrüstung bei Anlagen und Gebäuden](/enev/%c2%a7-10-nachruestung-bei-anlagen-und-gebaeuden/) nachlesen.
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 11 EnEV - Energetische Qualität bei Veränderung beibehalten
|
||||
|
||||
Im § 11 der EnEV ist geregelt, wie bei Veränderungen von Außenbauteilen verfahren werden soll. Die EnEV soll sicherstellen, daß sich die energetische Qualität nicht verschlechtert. Die Regelung ist nur wirksam, wenn mehr als 10% der Fläche des jeweiligen Außenbauteils verändert werden soll.
|
||||
|
||||
Energiebedarfssenkende Anlagen oder Einrichtungen müssen vom Betreiber betriebsbereit gehalten werden. Alternativ sind die Anforderungen gewährleistet wenn andere Anlagen die zur Senkung des Primärenergiebedarfes geeignet sind oder bauliche Maßnahmen die Anforderungen im gleichwertig Maße kompensieren können.
|
||||
|
||||
Anlagen zu Heizungs- , Kühl - und Raumlufttechnik müssen regelmäßige gewartet werden und der Wirkungsgrad muß aufrecht erhalten werden. Den ausführlichen Text können Sie im [§ 11 Aufrechterhaltung der energetischen Qualität](/enev/%c2%a7-11-aufrechterhaltung-der-energetischen-qualitaet/) nachlesen.
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 12 EnEV - Kontrolle der Effizienz von Klimaanlagen - Inspektionsbericht
|
||||
|
||||
§ 12 regelt die Effizienz des Betriebes von Klimaanlagen. Mit der Einführung von regelmäßigen energetischen Inspektionen der Klimanlagen und die Dokumentation im Inspektionsbericht soll sichergestellt werden, daß Wirkungsgrad der Anlage und nötige Anpassungen an veränderte Raumnutzung gewährleistet ist. Veränderungen von Wärmequellen und der bauphysikalischen Eigenschaften sollen dokumentiert und in der Anlagenkonfiguration berücksichtigt werden.
|
||||
|
||||
Nach der erstmaligen Inspektion soll mindestens alle 10 Jahre die Untersuchung wiederholt werden. Die Durchführung wird durch fachkundiges Personal erfolgen und der Bericht beim DiBt mit einer Registriernummer versehen. Auf Verlangen muss der Inspektionsbeicht bei der zuständigen Landesbehörde vorgelegt werden. Weitere detaillierte Informationen können im [§ 12 Energetische Inspektion von Klimaanlagen](/enev/%c2%a7-12-energetische-inspektion-von-klimaanlagen/) nachgelesen werden.
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
## EnEV - Anlagentechnik
|
||||
|
||||
### § 13 EnEV - Installation bzw. Inbetriebnahme von Wärmeerzeugern
|
||||
|
||||
Im § 13 ist vorgeschrieben, daß Heizkessel die mit flüssigen oder gasförmigen Energieträgern befeuert werden und deren Leistung > 4 kW bzw. < 400 kW beträgt nur betrieben werden dürfen wenn sie über eine gültige CE-Kennzeichnung verfügen. Die Kennzeichnung soll sicherstellen, daß die entsprechenden EU-Richtlinien eingehalten werden und der vorgeschriebene Wirkungsgrad gegeben ist. Der detaillierte Volltext und Ausnahmen zu dieser Vorgabe kann in [§ 13 Inbetriebnahme von Heizkesseln und sonstigen Wärmeerzeugersystemen](/enev/%c2%a7-13-inbetriebnahme-von-heizkesseln-und-sonstigen-waermeerzeugersystemen/) nachgelesen werden.
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 14 EnEV - Leitungen und Warmwasser
|
||||
|
||||
§ 14 soll sicherstellen, daß Leitungssysteme von Zentralheizungen in Gebäuden effektiv arbeiten. Dabei soll die Wärmezufuhr bzw. elektrische Antriebe automatisiert gesteuert werden, sodaß in Abhängigkeit der Außentemperatur und durch Zeitschaltuhren eine Abschaltung bzw Absenkungen gewährleistet ist. Wenn bei bestehenden Gebäuden diese Technik nicht vorhanden ist muß nachgerüstet werden. Außnahmen zu diesen Vorgaben bestehen unter bestimmten Voraussetzungen bei Nah- und Fernwärmeanschlüssen.
|
||||
|
||||
Der ausführliche Gesetzestext sowie weitere Bestimmungen zu nötigen Raumtemperaturregelungen, Umwälzpumpen und Zirkulationspumpen sind in [§ 14 Verteilungseinrichtungen und Warmwasseranlagen](/enev/%c2%a7-14-verteilungseinrichtungen-und-warmwasseranlagen/) formuliert.
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 15 EnEV - Klimatisierung und Belüftung
|
||||
|
||||
IM § 15 der EnEV sind die Anforderungen an Klimaanlagen > 12kW, und an Lüftungsanlagen mit einem Volumensrom > 4000 m³ pro Stunde, geregelt. Diese Anlagen dürfen den Grenzwert der Kategorie SFP 4 aus DIN EN 13779 nicht überschreiten. Laut DIN EN 13779 und 13053 kann der Grenzwert um Zuschläge und Wärmerückführungsbauteile erweitert werden.
|
||||
|
||||
Bei Einbau und Erneuerung oben beschriebener Geräte muß sichergestellt sein, daß entsprechende Regelungseinrichtungen für Be- und Entfeuchtung bzw. des Volumenstroms gegeben sind. Sollten diese Einrichtungen nicht vorhanden sein, dann besteht die Pflicht vom Betreiber eine Nachrüstung innerhalb von 6 Monaten nach Ablauf der jeweiligen Frist des § 12 Absatz 3 durchzuführen. Weitere Vorgaben z.B. zum Einbau von Wärmerückgewinnung ist im Volltext des [§ 15 Anlagen der Kühl- und Raumlufttechnik](/enev/%c2%a7-15-anlagen-der-kuehl-und-raumlufttechnik/) formuliert.
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
## EnEV - Energieausweis
|
||||
|
||||
### § 16 EnEV - Energieausweis Erstellung und Anwendung
|
||||
|
||||
Im § 16 wird vorgegeben in welchen Fällen ein Energieausweis erstellt werden muß. Bei Neubauten muß der Bauherr sicherstellen, daß unmittelbar nach Fertigstellung des Gebäudes ein Energieausweis mit den tatsächlich realisierten energetischen Eigenschaften erstellt wird. Dieser Ausweis ist dem Eigentümer zu übergeben. Auch bei Sanierung, Umbau und Erweiterung bei der eine Berechnung für das gesamte Gebäude nötig ist muß eine Energieausweis erstellt und übergeben werden.
|
||||
|
||||
Bei Vermietung und Verkauf muß der Verkäufer dem Käufer oder Interessenten während der Besichtigung den Energieausweis vorlegen. Es reicht auch wenn der Energieausweis deutlich sichtbar ausgelegt wird. Wenn der Verkäufer aufgefordet wird, dann muß der Energieausweis dem Interessenten unverzüglich vorgelegt werden. Spätestens nach Abschluß des Kaufvertrages muß der Energieausweis übergeben werden.
|
||||
|
||||
Bei Gebäuden mit starkem Publikumsverkehr muß sichergestellt werden, daß der Energieausweis an einer öffentlich gut sichtbaren Stelle ausgehängt wird. Die Regelung gilt für Gebäude behördlicher Nutzung ab 250 m² und für andere Gebäude ab 500 m² Nutzfläche.
|
||||
|
||||
Kleine Gebäude < 50 m² und Baudenkmäler benötigen keinen Energieausweis. Den ausführlichen Volltext können Sie im [§ 16 Ausstellung und Verwendung von Energieausweisen](/enev/%c2%a7-16-ausstellung-und-verwendung-von-energieausweisen/) nachlesen.
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 16a EnEV - Notwendige Angaben in Inseraten zur Vermarktung von Immobilien
|
||||
|
||||
Im § 16a wird geregelt welche Angaben in kommerziellen Immobilienanzeigen wie z.B. bei Immonet oder Immobilienscout24 veröffentlicht werden müssen. Neben der Ausweisart und dem Endenergiebedarf (beim Bedarfsausweis) oder dem Endenergieverbrauch (beim Verbrauchsausweis) müssen das Gebäudebaujahr, Energieträger und Energieeffizienzklasse veröffentlicht werden. Bei Nichtwohngebäuden muss zusätzlich der Endenergiebedarf bzw. Endenergieverbrauch für Strom mit angegeben werden. Hier gehts zum Volltext des [§ 16a Pflichtangaben in Immobilienanzeigen](/enev/%c2%a7-16a-pflichtangaben-in-immobilienanzeigen/).
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 17 EnEV - Energieausweis Prinzipien
|
||||
|
||||
Im § 17 werden Vorgaben zur Energieausweis Ausstellung gemacht. Im Grundsatz kann der Verbrauchsausweis oder der Bedarfsausweis gleichermaßen erstellt werden. Dabei müssen die im § 16 formulierten Ausnahmen bzw. Anwendungsfälle beachtet werden.
|
||||
|
||||
Prinzipiell ist bei Vermietung und Verkauf der Verbrauchsausweis ausreichend, es sei denn es handelt sich um ein unsaniertes älteres Wohngebäude bis 4 Wohneinheiten mit Baujahr vor 1978. In dem Fall darf nur der Bedarfsausweis erstellt werden. Auch bei Neubau oder Modernisierung darf nur der Bedarfsausweis erstellt werden.
|
||||
|
||||
Es können bei der Ermittlung der energetischen Eigenschaften Vereinfachungen durchgeführt werden und die Datenbereitstellung kann durch den Eigentümer erfolgen. Grundsätzlich werden Energieausweise immer für gesamte Gebäude erstellt, es sei denn es gibt Gebäudeteile die getrennt zu behandeln sind. Das ist z.B. der Fall, wenn es Wohn- und Nichtwohnbereiche im Gebäude gibt. In diesem Fall muß für jeden Gebäudeteil ein separater Energieausweis ausgestellt werden. Insbesondere wenn einer der Teile mehr als 10% der Gesamtnutzfläche ausmacht.
|
||||
|
||||
Die ausgestellten Energieausweise müssen Modernisierungsempfehlungen enthalten und nach Inhalt und Aufbau den Mustern in Anlage 6-9 entsprechen. Der Ausweis muß Name, Anschrift und Berufsbezeichnung des Ausstellers sowie Ausstellungsdatum enthalten. Außerdem muß der Energieausweis mit Unterschrift bzw. Nachbildung der Unterschrift versehen sein.
|
||||
|
||||
Zur Qualitätskontrolle wird jeder Ausweis beim Deutschen Institut für Bautechnik eingereicht und mit einer Registriernummer versehen. Ein Ausgestellter Energieausweis ist 10 Jahre gültig. Hier geht es zum kompletten Volltext des [§ 17 Grundsätze des Energieausweises](/enev/%c2%a7-17-grundsaetze-des-energieausweises/).
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 18 EnEV - Ausstellung Bedarfsausweis
|
||||
|
||||
Im § 18 ist sind die Berechnungsgrundlagen zur Erstellung des Bedarfsausweises vorgegeben. Es sind die nach §§ 3 bis 5 erforderlichen Berechnungen anzuwenden. Den ausführlichen Volltext können Sie im [§ 18 Ausstellung auf der Grundlage des Energiebedarfs](/enev/%c2%a7-18-ausstellung-auf-der-grundlage-des-energiebedarfs/) nachlesen.
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 19 EnEV - Ausstellung Verbrauchsausweis
|
||||
|
||||
Im § 19 sind die Berechnungsgrudlagen zur Erstellung des Verbrauchsausweises vorgegeben. Der durch die Klimafaktoren witterungsbereinigte Endenergie- und Primärenergieverbrauch ist zu berechnen und im Energieausweis anzugeben.
|
||||
|
||||
Bei Wohngebäuden wird der Verbrauch für Heizung und Warmwasser in kWh pro Jahr und m² Gebäudenutzfläche angegeben. Bei dezentraler Warmwasserbereitung ist der Verbrauchswert um 20 kWh pro Jahr und m² zu erhöhen. Sollte das Gebäude gekühlt werden, dann ist der Verbrauchswert um 6 kWh pro Jahr und m² zu erhöhen.Die energetische Gebäudenutzfläche An kann vereinfacht mit dem 1,2 fachen der Wohnfläche angegeben werden. Bei Wohngebäuden mit bis zu 2 Wohneinheiten und beheiztem Keller mit dem 1,35 fachen der Wohnfläche.
|
||||
|
||||
Bei Nichtwohngebäuden wird der Verbrauch von Heizung, Warmwasserbereitung, Kühlung, Lüftung und eingebaute Beleuchtung ermittelt und in kWh pro Jahr und m² Gebäudenutzfläche angegeben.
|
||||
|
||||
Die Verbrauchsdaten sollen aus den Heizkostenabrechnungen bzw. den Abrechnungen der Energielieferanten entnommen werden. Es ist mindestens der zusammenhängende Zeitraum von 36 Monaten anzusetzen. Leerstände sind angemessen nach den anerkannten Regeln der Technik zu berücksichtigen. Hier gehts zum ausführlichen Volltext des [§ 19 Ausstellung auf der Grundlage des Energieverbrauchs](/enev/%c2%a7-19-ausstellung-auf-der-grundlage-des-energieverbrauchs/).
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 20 EnEV - Modernisierungsempfehlungen
|
||||
|
||||
Im § 20 ist vorgeschrieben, daß der Aussteller kurze fachliche Hinweise zur Verbesserung der Energieeffizienz gibt wenn diese möglich sind. Wenn keine kostengünstige Modernisierung möglich ist, muß das ebenfalls auf dem Energieausweis vermerkt werden. Hier gehts zum Volltext des [§ 20 Empfehlungen für die Verbesserung der Energieeffizienz](/enev/%c2%a7-20-empfehlungen-fuer-die-verbesserung-der-energieeffizienz/).
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 21 EnEV - Berechtigung zur Energieausweis Erstellung für Bestandsgebäude
|
||||
|
||||
Im § 21 ist die Ausstellungsberechtigung für Energieausweise geregelt. Energieausweis Aussteller benötigen einen berufsqualifizierendem Hochschulabschluss in Fachrichtung Architektur, Hochbau, Bauingenieurwesen, Technische Gebäudeausrüstung, Physik, Bauphysik, Maschinenbau oder Elektrotechnik. Es kann auch eine andere technische oder naturwissenschaftliche Fachrichtung sein mit Schwerpunkt auf eine der oben genannten Fachrichtungen.
|
||||
|
||||
Zugelassene Handwerksbetriebe, Schornsteinfeger und Handwerksmeister dürfen ebenso unter bestimmten Voraussetzungen Energieausweise ausstellen. Ebenso staatlich anerkannte Techniker mit Ausbildungsschwerpunkt im Bereich Anlagentechnik und Gebäudehülle.
|
||||
|
||||
Voraussetzung für die Ausstellungsberechtigung ist, daß der Ausbildungsschwerpunkt im Bereich des energiesparenden Bauens gegeben ist oder alternativ eine zweijährige Berufserfahrung nachgewiesen werden kann. Zusätlich müssen entsprechende Fortbildungen nachgewiesen werden.
|
||||
|
||||
Personen die nach der jeweiligen Landesbauordnung bauvorlageberechtigt für bautechnischen Nachweisen des Wärmeschutzes sind, dürfen Energieausweise ausstellen. Im [§ 21 Ausstellungsberechtigung für bestehende Gebäude](/enev/%c2%a7-21-ausstellungsberechtigung-fuer-bestehende-gebaeude/) sind die Regeln zur Ausstellungsberechtigung ausführlich dargelegt.
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
## EnEV - Gemeinsames
|
||||
|
||||
### § 22 EnEV - Mischgebäude
|
||||
|
||||
In § 22 ist geregelt unter welchen Voraussetzungen bei Mischgebäuden 2 Ausweise erstellt werden müssen. Dies ist bei Wohngebäuden der Fall, wenn es Gebäudebereiche gibt die in Nutzung und technischer Gebäudeausstattung wesentlich von der Wohnnutzung abweichen. Bei Nichtwohngebäuden ist dies der Fall wenn es im Gebäude Wohnungen oder Wohnnutzung gibt, die einen nicht unerheblichen Teil der Nutzfläche des Gebäudes ausmacht. Hier geht es zum Volltext von [§ 22 Gemischt genutzte Gebäude](/enev/%c2%a7-22-gemischt-genutzte-gebaeude/).
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 23 EnEV - Anerkannte Regeln der Technik
|
||||
|
||||
Im 23 ist formuliert wie und unter welchen Voraussetzungen auf Regeln der Technik hingewiesen wird und wo anerkannte Regeln der Technik veröffentlicht werden. Normen und technische Vorschriften anderer EU-Mitgliedsländer gehören auch zu den anerkannten Regeln der Technik.
|
||||
|
||||
Ist eine Bewertung von Bauteilen und Anlagentechnik mittels den anerkannten Regeln der Technik nicht möglich weil sie nicht vorliegen, dann können andere Nachweise herangezogen werden. Hier geht es zum ausführlichen Gesetzestext des [§ 23 Regeln der Technik](/enev/%c2%a7-23-regeln-der-technik/).
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 24 EnEV - Ausnahmen
|
||||
|
||||
Im § 24 sind Ausnahmen zur EnEV formuliert. Bei Baudenkmälern kann von den Anforderungen abgewichen werden. Hier gehts zum Volltext des [§ 24 Ausnahmen](/enev/%c2%a7-24-ausnahmen/).
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 25 EnEV - Befreiungen
|
||||
|
||||
Im § 25 ist formuliert wie und in welchen Fällen Befreiungen zu dieser Verordnung möglich sind. Die jeweilige nach Landesrecht zuständige Behörde kann auf Antrag Befreiungen gewähren. Dabei ist zu Prüfen ob die Anforderungen im Einzelfall zu einer unbilligen Härte führen. Dies kann Beispielsweise sein, wenn der wirtschaftliche Aufwand nicht getragen werden kann bzw. unverhältnismäßig zu den zu erwartenden Einsparungen steht. Der Volltext kann im [§ 25 Befreiungen](/enev/%c2%a7-25-befreiungen/) nachgelsesen werden.
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 25a EnEV - Flüchtlingsunterkünfte
|
||||
|
||||
Im § 25a sind Befreiungen zu den Anforderungen des § 9 und § 10 formuliert. Bei Gebäuden die geändert, erweitert oder ausgebaut werden sollen und als Aufnahmeeinrichtung bzw. Gemeinschaftsunterkunft gemäß Asylgesetz genutzt werden, müssen nur die Anforderungen an den Mindestwärmeschutz erfüllen. Den ausführlichen Volltext können Sie im [§ 25a Gebäude für die Unterbringung von Asylsuchenden und Flüchtlingen](/enev/%c2%a7-25a-gebaeude-fuer-die-unterbringung-von-asylsuchenden-und-fluechtlingen/) nachlesen.
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 26 EnEV - Verantwortliche
|
||||
|
||||
Im § 26 wird die für die Einhaltung dieser Verordnung verantwortliche Person benannt. Wenn nicht ausdrücklich eine andere Person benannt wird, dann ist der Bauherr für die Einhaltung verantwortlich. Im Rahmen ihres jeweiligen Wirkungskreises sind auch die vom Bauherren beauftragten Personen verantwortlich. Hier können Sie [§ 26 Verantwortliche](/enev/%c2%a7-26-verantwortliche/) nachlesen.
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 26a EnEV - Unternehmererklärung
|
||||
|
||||
Im § 26a ist die Pflicht zur Abgabe der Fachunternehmererklärung geregelt. Wer geschäftsmäßig Arbeiten bzw. Änderungen an der Gebäudehülle und der Anlagentechnik durchführt, ist verpflichtet direkt nach Abschluss der Arbeiten dem Eigentümer eine Fachunternehmerbescheinigung vorzulegen. In dieser Erklärung muß die ordnungsgemäße Durchführung unter Einhaltung der in dieser Verordnung vorgegebene Anforderungen bestätigt werden. Hier gehts zum [§ 26a Private Nachweise](/enev/%c2%a7-26a-private-nachweise/).
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 26b EnEV - Bezirksschornsteinfeger
|
||||
|
||||
§ 26b regelt die Aufgaben des Bezirksschornsteinfegers. Der bevollmächtigte Bezirksschornsteinfeger prüft ob bei Heizungsanlagen die Anforderungen von § 10, § 11 und § 14 erfüllt werden. Bei Nichterfüllung weist er den Eigentümer auf die Erfüllungspflicht mit angemessener Fristsetzung hin. Der Eigentümer kann durch Vorlage der jeweiligen Fachunternehmererklärung die Durchführung nachweisen. Hier gehts zum Volltext des [§ 26b Aufgaben des bevollmächtigten Bezirksschornsteinfegers](/enev/%c2%a7-26b-aufgaben-des-bevollmaechtigten-bezirksschornsteinfegers/).
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 26c EnEV - Registriernummern
|
||||
|
||||
§ 26c regelt die Pflicht zur Beantragung von Registrierummern für Inspektionsberichte und Energieausweise. Hier gehts zum Volltext des [§ 26c Registriernummern](/enev/%c2%a7-26c-registriernummern/).
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 26d EnEV - Stichprobenkontrollen
|
||||
|
||||
§ 26d regelt die Vorgehensweise bei Stichprobenkontrollen für Energieausweise und Inspektionsberichte. Hier gehts zum Volltext des [§ 26d Stichprobenkontrollen von Energieausweisen und Inspektionsberichten über Klimaanlagen](/enev/%c2%a7-26d-stichprobenkontrollen-von-energieausweisen-und-inspektionsberichten-ueber-klimaanlagen/).
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 26e EnEV - Auswertung von Daten
|
||||
|
||||
§ 26e nennt die nicht personenbezogenen Daten die zur Auswertung der Energieausweise herangezogen werden. Hier gehts zum Volltext des [§ 26e Nicht personenbezogene Auswertung von Daten](/enev/%c2%a7-26e-nicht-personenbezogene-auswertung-von-daten/).
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 26f EnEV - Erfahrungsberichte
|
||||
|
||||
Laut § 26f werden Erfahrungen mit den Stichprobenkontrollen der Bundesregierung in regelmäßigen Abständen berichtet. Hier gehts zum Volltext des [§ 26f Erfahrungsberichte der Länder](/enev/%c2%a7-26f-erfahrungsberichte-der-laender/).
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 27 EnEV - Ordnungswidrigkeiten
|
||||
|
||||
In § 27 wird definiert wann und bei welchen Verstoßen gegen diese Verordnung Ordnungswidrigkeiten vorliegen. Hier gehts zum Volltext des [§ 27 Ordnungswidrigkeiten](/enev/%c2%a7-27-ordnungswidrigkeiten/).
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
## EnEV - Übergang, Inkrafttreten
|
||||
|
||||
### § 28 EnEV - Übergangsvorschrift
|
||||
|
||||
§ 28 regelt unter anderem welche Fassung der EnEV anzuwenden ist. Hier gehts zum Volltext des [§ 28 Allgemeine Übergangsvorschrift](/enev/%c2%a7-28-allgemeine-uebergangsvorschrift/).
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 29 EnEV - Übergangsvorschriften für Energieausweise und Aussteller
|
||||
|
||||
In § 29 sind die Übergangsregelungen für Energieausweise und Aussteller niedergeschrieben. Hier gehts zum Volltext des [§ 29 Übergangsvorschriften für Energieausweise und Aussteller](/enev/%c2%a7-29-uebergangsvorschriften-fuer-energieausweise-und-aussteller/).
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
### § 30 EnEV - Übergangsvorschrift Vollzugsaufgaben des Deutschen Instituts für Bautechnik (DIBt, Berlin)
|
||||
|
||||
§ 30 regelt die vorläufigen Aufgaben des Landesvollzugs durch das DiBt. Hier gehts zumVolltext des [§ 30 Übergangsvorschrift über die vorläufige Wahrnehmung von Vollzugsaufgaben der Länder durch das Deutsche Institut für Bautechnik (DIBt, Berlin)](/enev/%c2%a7-30-uebergangsvorschrift-ueber-die-vorlaeufige-wahrnehmung-von-vollzugsaufgaben-der-laender-durch-das-deutsche-institut-fuer-bautechnik-dibt-berlin/).
|
||||
|
||||
[zum Anfang](#main)
|
||||
|
||||
* * *
|
||||
|
||||
## EnEV - Anlagen
|
||||
|
||||
| | |
|
||||
| --- | --- |
|
||||
| EnEV Anlage 1 | [Anforderungen an Wohngebäude](pdf/EnEV-Anlage-1-Anforderungen-an-Wohngebaeude.pdf) |
|
||||
| EnEV Anlage 2 | [Anforderungen an Nichtwohngebäude](pdf/EnEV-Anlage-2-Anforderungen-an-Nichtwohngebaeude.pdf) |
|
||||
| EnEV Anlage 3 | [Anforderungen bei Änderung von Außenbauteilen und bei Errichtung kleiner Gebäude](pdf/EnEV-Anlage-3-Anforderungen-bei-Aenderung-von-Außenbauteilen-und-bei-Errichtung-kleiner-Gebaeude.pdf) |
|
||||
| EnEV Anlage 4 | [Anforderungen an die Dichtheit des gesamten Gebäudes](pdf/EnEV-Anlage-4-Anforderungen-an-die-Dichtheit-des-gesamten-Gebaeudes.pdf) |
|
||||
| EnEV Anlage 4a | [Anforderungen an die Inbetriebnahme von Heizkesseln](pdf/EnEV-Anlage-4a-Anforderungen-an-die-Inbetriebnahme-von-Heizkesseln.pdf) |
|
||||
| EnEV Anlage 5 | [Anforderungen an die Wärmedämmung von Rohrleitungen und Armaturen](pdf/EnEV-Anlage-5-Anforderungen-an-die-Waermedaemmung-von-Rohrleitungen-und-Armaturen.pdf) |
|
||||
| EnEV Anlage 6 | [Muster Energieausweis Wohngebäude](pdf/EnEV-Anlage-6-Muster-Energieausweis-Wohngebaeude.pdf) |
|
||||
| EnEV Anlage 7 | [Muster Energieausweis Nichtwohngebäude](pdf/EnEV-Anlage-7-Muster-Energieausweis-Nichtwohngebaeude.pdf) |
|
||||
| EnEV Anlage 8 | [Muster Aushang Energieausweis auf der Grundlage des Energiebedarfs](pdf/EnEV-Anlage-8-Muster-Aushang-Energieausweis-auf-der-Grundlage-des-Energiebedarfs.pdf) |
|
||||
| EnEV Anlage 9 | [Muster Aushang Energieausweis auf der Grundlage des Energieverbrauchs](pdf/EnEV-Anlage-9-Muster-Aushang-Energieausweis-auf-der-Grundlage-des-Energieverbrauchs.pdf) |
|
||||
| EnEV Anlage 10 | [Einteilung in Energieeffizienzklassen](pdf/EnEV-Anlage-10-Einteilung-in-Energieeffizienzklassen.pdf) |
|
||||
| EnEV Anlage 11 | [Anforderungen an die Inhalte der Fortbildung](pdf/EnEV-Anlage-11-Anforderungen-an-die-Inhalte-der-Fortbildung.pdf) |
|
||||
|
||||
[zum Anfang](#zero)
|
||||
@@ -1,123 +0,0 @@
|
||||
---
|
||||
layout: ../layouts/Layout.astro
|
||||
title: "Welcher Energieausweis?"
|
||||
---
|
||||
|
||||
import { BoxWithHeading } from "@ibcornelsen/ui";
|
||||
import Widget from "#components/Widget.svelte";
|
||||
|
||||
# Welcher Energieausweis ist der richtige?
|
||||
|
||||
## Machen Sie hier den Online Check, welcher Energieausweis der richtige ist:
|
||||
|
||||
Falls Sie nicht wissen sollten welchen Energieausweis Sie benötigen, können Sie
|
||||
hier ganz einfach den Gebäudetyp und die entsprechende Maßnahme angeben und
|
||||
bekommen als Ergebnis, den für Sie pasenden Energieausweis angezeigt.
|
||||
|
||||
<Widget client:load />
|
||||
|
||||
## Bei Vermietung und Verkauf Ihres Wohnhauses ist der Verbrauchsausweis Wohngebäude ausreichend
|
||||
|
||||
In den meisten Fällen können Sie bei Vermietung oder Verkauf Ihrer Immobilie den
|
||||
einfacheren Energieausweis erstellen lassen. Dieser Ausweis ist
|
||||
verbrauchsorientiert und benötigt als Berechnungsgrundlage 3 zusammenhängende
|
||||
Jahre der Heizenergieabrechnugen des Gebäudes. Wenn Ihnen also diese 3
|
||||
Abrechnugsjahre vorliegen, und es gab dazwischen keine grundlegenden
|
||||
Sanierungsmaßnahmen bzw. Heizungsaustausch, dann steht der Dateneingabe nichts
|
||||
im Wege. Laut GEG (vormals EnEV) gibt es nur eine rechtliche Ausnahme, bei der
|
||||
es nicht zulässig ist einen Verbrauchsausweis bei Vermietung und Verkauf zu
|
||||
verwenden. Dies ist dann der Fall, wenn Ihr Gebäude gänzlich unsaniert ist, vor
|
||||
1978 gebaut wurde und weniger als 5 Wohneinheiten besitzt. In diesem Fall oder
|
||||
bei unvollständigen Verbrauchsabrechnungen (z.B. bei Leerstand), kann der
|
||||
Bedarfsausweis Wohngebäude erstellt werden.
|
||||
|
||||
---
|
||||
|
||||
## Bei Neubau, Modernisierung, Änderung oder Erweiterung Ihres Wohnhauses benötigen Sie den Bedarfsausweis für Wohngebäude
|
||||
|
||||
Im der aktuellen GEG ist geregelt, wie bei Änderungen im Baubestand zu verfahren
|
||||
ist. In §46-51 des GEG ist festgelegt welche Mindestanforderungen bei
|
||||
Änderungen, Erweiterungen und Ausbau eingehalten werden müssen. Außerdem wird
|
||||
beschrieben unter welchen Voraussetzungen ein Bedarfsausweis erstellt werden
|
||||
muß. Dies ist z.B. nicht der Fall wenn nur einzelne Bauteile wie Dach, Außenwand
|
||||
und Fenster erneuert werden oder die Erweiterung < 50 m² ist. Dann muß nur ein
|
||||
Bauteilnachweis geführt werden.Bei Austausch der Heizungsanlage muß in jedem
|
||||
Fall ein Bedarfsausweis erstellt werden. Es kann auch vorkommen, daß bei
|
||||
Einzelmaßnahmen eine komplette Bedarfsberechnung durchgeführt werden muss wenn
|
||||
der Bauteilnachweis die EnEV-Anforderungen nicht erfüllt. Bei
|
||||
genehmigungspflichtigen Neubaumaßnahmen ist es vorgeschrieben vor Baubeginn
|
||||
einen GEG-Nachweis (früher Wärmeschutznachweis) zu erstellen. Aus der
|
||||
GEG-Berechnung kann später nach Fertigstellung der Bedarfsausweis erstellt
|
||||
werden. In § 15-19 des GEG ist geregelt welche Anforderungen für Wohngebäude
|
||||
eingehalten werden müssen.
|
||||
|
||||
---
|
||||
|
||||
<BoxWithHeading heading="Folgende Dokumente und Informationen werden für den Bedarfsausweis benötigt:">
|
||||
- Grundriss- und Ansichtspläne sowie Baubeschreibung. - Die
|
||||
wärmeübertragenden Umfassngsflächen wie Dach, Außenwand, Fenster,
|
||||
Kellerdecke bzw. Boden werden aus den Plänen ermittelt. - Auch das
|
||||
Gebäudevolumen zur Ermittlung der energetischen Gebäudenutzfläche und die
|
||||
verschiedenen Nutzungszonen werden aus den Plänen erhoben. - Die verwendete
|
||||
Heizungsanlage mit den Wärmeübergabekomponenten (Heizkörper,
|
||||
Fußbodenheizung, etc) sowie Energieträger und Kessel werden aus der
|
||||
Baubeschreibung oder aus den Angaben des Bauherren herangezogen.
|
||||
</BoxWithHeading>
|
||||
|
||||
Sollten Sie den Bedarfsausweis nur für Vermietung und Verkauf benötigen, dann
|
||||
können Sie den Ausweis bei uns auch online erstellen lassen. Die Eingabedaten
|
||||
werden dann nach einem vereinfachten Verfahren erhoben.
|
||||
|
||||
---
|
||||
|
||||
## Bei Vermietung und Verkauf Ihres Gewerbegebäudes benötigen Sie den Verbrauchsausweis Nichtwohngebäude (Gewerbe)
|
||||
|
||||
Bei Vermietung oder Verkauf Ihrer Gewerbeimmobilie können Sie den einfacheren
|
||||
Energieausweis erstellen lassen. Der gewerbliche Verbrauchsausweis benötigt als
|
||||
Berechnungsgrundlage den Stromverbrauch und den Heizenergieverbrauch des
|
||||
Gebäudes. Es werden 3 zusammenhängende Jahre der Heizenergieabrechnugen und der
|
||||
Stromabrechnung des Gebäudes benötigt. Wenn Ihnen also diese 3 Abrechnugsjahre
|
||||
vorliegen und die Verbräuche lassen sich eindeutig zuordnen, dann steht der
|
||||
Dateneingabe nichts im Wege.Es dürfen keine grundlegenden Sanierungsmaßnahmen
|
||||
bzw. Heizungsaustausch während dieses Zeitraums durchgeführt worden sein. Wenn
|
||||
diese Voraussetzungen nicht vorliegen, oder keine vollständigen
|
||||
Verbrauchsabrechnungen vorliegen (z.B. bei Leerstand), dann kann alternativ der
|
||||
Bedarfsausweis Nichtwohngebäude (Gewerbe) erstellt werden.
|
||||
|
||||
---
|
||||
|
||||
## Bei Neubau, Modernisierung, Änderung oder Erweiterung Ihres Gewerbegebäudes benötigen Sie den Bedarfsausweis für Nichtwohngebäude (Gewerbe)
|
||||
|
||||
In §46-51 des GEG ist festgelegt welche Mindestanforderungen bei Änderungen,
|
||||
Erweiterungen und Ausbau eingehalten werden müssen. Außerdem wird beschrieben
|
||||
unter welchen Voraussetzungen ein Bedarfsausweis erstellt werden muß. Dies ist
|
||||
z.B. nicht der Fall wenn nur einzelne Bauteile wie Dach, Außenwand und Fenster
|
||||
erneuert werden oder die Erweiterung < 50 m² ist. Dann muß nur ein
|
||||
Bauteilnachweis geführt werden.Bei Austausch der Heizungsanlage muß in jedem
|
||||
Fall ein Bedarfsausweis erstellt werden. Es kann auch vorkommen, daß bei
|
||||
Einzelmaßnahmen eine komplette Bedarfsberechnung durchgeführt werden muss wenn
|
||||
der Bauteilnachweis die EnEV-Anforderungen nicht erfüllt.Bei Neubauten ist es
|
||||
vorgeschrieben vor Baubeginn einen GEG-Nachweis (früher Wärmeschutznachweis) zu
|
||||
erstellen. Aus der GEG-Berechnung kann später nach Fertigstellung der
|
||||
Bedarfsausweis erstellt werden. Im §18-19 des GEG ist geregelt welche
|
||||
Anforderungen für Nichtwohngebäude eingehalten werden müssen.
|
||||
|
||||
---
|
||||
|
||||
<BoxWithHeading heading="Folgende Dokumente und Informationen werden für den Bedarfsausweis benötigt:">
|
||||
- Grundriss- und Ansichtspläne sowie Baubeschreibung. - Die
|
||||
wärmeübertragenden Umfassngsflächen wie Dach, Außenwand, Fenster,
|
||||
Kellerdecke bzw. Boden werden aus den Plänen ermittelt. - Auch das
|
||||
Gebäudevolumen zur Ermittlung der energetischen Gebäudenutzfläche und die
|
||||
verschiedenen Nutzungszonen werden aus den Plänen erhoben. - Die verwendete
|
||||
Heizungsanlage mit den Wärmeübergabekomponenten (Heizkörper,
|
||||
Fußbodenheizung, etc) sowie Energieträger und Kessel werden aus der
|
||||
Baubeschreibung oder aus den Angaben des Bauherren herangezogen. -
|
||||
Anlagentechnik zu Kühlung und Lüftung der entsprechenden Nutzungszonen
|
||||
müssen definiert sein. - Die verwendete Beleuchtung der verschiedenen
|
||||
Nutzungszonen wird ebenfalls herangezogen
|
||||
</BoxWithHeading>
|
||||
|
||||
Sollten Sie den Bedarfsausweis nur für Vermietung und Verkauf benötigen, dann
|
||||
können Sie den Ausweis bei uns auch online erstellen lassen. Die Eingabedaten
|
||||
werden dann nach einem vereinfachten Verfahren erhoben.
|
||||
1521
openapi.json
Normal file
138
package.json
@@ -5,86 +5,110 @@
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "bun astro dev",
|
||||
"build": "bun --bun astro build",
|
||||
"preview": "bun --bun astro preview",
|
||||
"build": "bun astro build",
|
||||
"preview": "bun astro preview",
|
||||
"astro": "astro",
|
||||
"test:e2e": "cypress run",
|
||||
"test:unit": "bun test",
|
||||
"format": "prettier --write .",
|
||||
"build:production": "astro build && bun --bun server.js",
|
||||
"build:production": "astro build && bun --bun server.ts",
|
||||
"i18n:generate": "bunx astro-i18next generate",
|
||||
"prisma:studio": "bunx prisma studio --schema=./node_modules/@ibcornelsen/database/prisma/schema.prisma"
|
||||
"prisma:studio": "bunx prisma studio --schema=./node_modules/@ibcornelsen/database/prisma/schema.prisma",
|
||||
"openapi:generate": "bun astro-typesafe-api generate"
|
||||
},
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@astrojs/mdx": "^2.1.1",
|
||||
"@astrojs/node": "^5.1.4",
|
||||
"@astrojs/mdx": "^3.1.9",
|
||||
"@astrojs/node": "^8.3.4",
|
||||
"@astrojs/svelte": "^2.2.0",
|
||||
"@astrojs/tailwind": "^3.1.3",
|
||||
"@ibcornelsen/api": "link:@ibcornelsen/api",
|
||||
"@ibcornelsen/database": "link:@ibcornelsen/database",
|
||||
"@aws-sdk/client-s3": "^3.758.0",
|
||||
"@highlight-run/node": "^3.12.0",
|
||||
"@ibcornelsen/ui": "^0.0.2",
|
||||
"@mollie/api-client": "^3.7.0",
|
||||
"@pdfme/common": "^3.2.3",
|
||||
"@pdfme/generator": "^3.2.3",
|
||||
"@pdfme/ui": "^3.2.3",
|
||||
"@trpc/client": "^10.45.0",
|
||||
"@trpc/server": "^10.45.0",
|
||||
"astro": "^2.5.1",
|
||||
"astro-i18next": "1.0.0-beta.21",
|
||||
"astro-spa": "^1.3.9",
|
||||
"@mollie/api-client": "^4.1.0",
|
||||
"@pdfme/common": "^5.2.16",
|
||||
"@pdfme/generator": "^5.2.16",
|
||||
"@pdfme/ui": "^5.2.16",
|
||||
"@trpc/client": "^10.45.2",
|
||||
"@trpc/server": "^10.45.2",
|
||||
"astro": "^4.16.17",
|
||||
"astro-typesafe-api": "^0.2.4",
|
||||
"body-scroll-lock": "^4.0.0-beta.0",
|
||||
"buffer": "^6.0.3",
|
||||
"bun": "^1.0.2",
|
||||
"cookiejs": "^2.1.2",
|
||||
"bun": "^1.2.5",
|
||||
"csvtojson": "^2.0.10",
|
||||
"esbuild": "^0.18.17",
|
||||
"express": "^4.18.2",
|
||||
"flag-icons": "^6.9.2",
|
||||
"fontkit": "^2.0.2",
|
||||
"i18next": "^23.4.1",
|
||||
"i18next-fs-backend": "^2.1.5",
|
||||
"i18next-http-backend": "^2.2.1",
|
||||
"jimp": "^0.22.8",
|
||||
"express": "^4.21.2",
|
||||
"flag-icons": "^6.15.0",
|
||||
"fontkit": "^2.0.4",
|
||||
"highlight.run": "^9.14.0",
|
||||
"is-base64": "^1.1.0",
|
||||
"js-cookie": "^3.0.5",
|
||||
"jwt-simple": "^0.5.6",
|
||||
"katex": "^0.16.7",
|
||||
"knex": "^2.4.2",
|
||||
"moment": "^2.29.4",
|
||||
"moment-timezone": "^0.5.45",
|
||||
"pg": "^8.11.0",
|
||||
"js-interpolate": "^1.3.2",
|
||||
"jsonwebtoken": "^9.0.2",
|
||||
"jwt-decode": "^4.0.0",
|
||||
"mime": "^4.0.6",
|
||||
"moment": "^2.30.1",
|
||||
"moment-timezone": "^0.5.46",
|
||||
"nodemailer": "^6.10.0",
|
||||
"pdf-lib": "^1.17.1",
|
||||
"postcss-nested": "^7.0.2",
|
||||
"puppeteer": "^24.7.2",
|
||||
"radix-svelte-icons": "^1.0.0",
|
||||
"remark-frontmatter": "^5.0.0",
|
||||
"sass": "^1.62.1",
|
||||
"svelte": "^3.59.1",
|
||||
"sass": "^1.83.4",
|
||||
"sharp": "^0.33.5",
|
||||
"siema": "^1.5.1",
|
||||
"soap": "^1.1.8",
|
||||
"sqids": "^0.3.0",
|
||||
"ssh2-sftp-client": "^12.0.0",
|
||||
"svelte": "^3.59.2",
|
||||
"svelte-dialogs": "^1.2.2",
|
||||
"svelte-katex": "^0.1.2",
|
||||
"svelte-preprocess": "^5.0.3",
|
||||
"svelte-ripple-action": "^1.0.5",
|
||||
"svelte-tabs": "^1.1.0",
|
||||
"tailwindcss": "^3.3.2",
|
||||
"svelte-preprocess": "^5.1.4",
|
||||
"svelte-ripple-action": "^1.0.6",
|
||||
"tailwindcss": "^3.4.17",
|
||||
"trpc-openapi": "^1.2.0",
|
||||
"uuid": "^9.0.0",
|
||||
"uuid-validate": "^0.0.3",
|
||||
"vite-tsconfig-paths": "^4.2.0",
|
||||
"zod": "^3.22.4"
|
||||
"uuid": "^9.0.1",
|
||||
"winston": "^3.17.0",
|
||||
"zod": "^3.24.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@faker-js/faker": "^8.3.1",
|
||||
"@tailwindcss/typography": "^0.5.10",
|
||||
"@faker-js/faker": "^8.4.1",
|
||||
"@rollup/plugin-dsv": "^3.0.5",
|
||||
"@tailwindcss/typography": "^0.5.16",
|
||||
"@types/body-scroll-lock": "^3.1.2",
|
||||
"@types/fontkit": "^2.0.6",
|
||||
"@types/bun": "^1.2.2",
|
||||
"@types/express": "^5.0.0",
|
||||
"@types/fontkit": "^2.0.7",
|
||||
"@types/is-base64": "^1.1.3",
|
||||
"@types/js-cookie": "^3.0.6",
|
||||
"@types/uuid": "^9.0.1",
|
||||
"@typescript-eslint/eslint-plugin": "^5.59.6",
|
||||
"@typescript-eslint/parser": "^5.59.6",
|
||||
"bun-types": "^1.0.22",
|
||||
"cypress": "^13.6.2",
|
||||
"@types/jsonwebtoken": "^9.0.7",
|
||||
"@types/nodemailer": "^6.4.17",
|
||||
"@types/papaparse": "^5.3.15",
|
||||
"@types/siema": "^1.4.11",
|
||||
"@types/ssh2-sftp-client": "^9.0.4",
|
||||
"@types/uuid": "^9.0.8",
|
||||
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
||||
"@typescript-eslint/parser": "^5.62.0",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"bun-types": "^1.1.45",
|
||||
"cypress": "^13.17.0",
|
||||
"cypress-file-upload": "^5.0.8",
|
||||
"daisyui": "^4.6.0",
|
||||
"cypress-vite": "^1.6.0",
|
||||
"eslint": "~8.15.0",
|
||||
"eslint-config-prettier": "8.1.0",
|
||||
"papaparse": "^5.5.2",
|
||||
"postcss": "^8.5.1",
|
||||
"postcss-import": "^16.1.0",
|
||||
"postcss-nesting": "^13.0.1",
|
||||
"prettier": "^2.8.8",
|
||||
"typescript": "^4.9.5"
|
||||
}
|
||||
}
|
||||
"prisma": "6.4.1",
|
||||
"prisma-dbml-generator": "^0.12.0",
|
||||
"prisma-generator-fake-data": "^0.14.3",
|
||||
"tsx": "^4.19.3",
|
||||
"typescript": "^5.8.3",
|
||||
"zod-prisma": "^0.5.4"
|
||||
},
|
||||
"overrides": {
|
||||
"zod": "^3.24.1"
|
||||
},
|
||||
"module": "index.ts"
|
||||
}
|
||||
BIN
persistent/images/haken.png
Normal file
|
After Width: | Height: | Size: 256 B |
BIN
persistent/images/img-00114710-09d3-4a60-a7e1-44e651b1e4df.webp
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
persistent/images/img-00a51279-518a-4c93-a7ac-08daffca4fc6.jpg
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
persistent/images/img-03e4258e-2fb5-422d-b435-2a7129bcabf3.webp
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
persistent/images/img-06b354f2-1314-4f66-8c6d-b8e4834a6090.webp
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
persistent/images/img-1017697d-6806-431f-8cb0-083be6851402.webp
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
persistent/images/img-12cefef0-5406-4fa5-8b47-cbdf5940b2b3.webp
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
persistent/images/img-1cb30f8a-d662-47a1-8107-d09c0069a023.webp
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
persistent/images/img-1fc02565-7612-431a-aa6c-59911f5c7a73.webp
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
persistent/images/img-2944c8e8-6d98-4bed-8392-4f6d0d580aaa.webp
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
persistent/images/img-29e650e4-c16a-4ad1-b136-967180359809.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
persistent/images/img-2d2dcc3f-2815-4294-a651-43248ba9585f.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
persistent/images/img-2d5c83d6-023e-4848-bef1-44fd988098c3.webp
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
persistent/images/img-2db2d211-3119-4f2a-b6c4-2af1c0a29682.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
persistent/images/img-2e9e796c-2805-4c3c-b8aa-6fce85a44fc5.webp
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
persistent/images/img-30288120-6f40-4419-87ba-a0efd59960b8.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
persistent/images/img-3af4bd33-ae3f-4a62-94f2-c43ffccb2fd1.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
persistent/images/img-3f384947-1020-41f7-bce0-7f0a496422c7.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
persistent/images/img-40d15e43-94a3-429c-86be-671f77666094.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
persistent/images/img-4219127e-38ad-4ef1-bdd7-6aaa1bba15e5.webp
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
persistent/images/img-425b7b43-c12f-43eb-b20b-5ea23bae2712.webp
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
persistent/images/img-4387f4e8-4a93-4fc9-9ba4-e5129bb682cc.webp
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
persistent/images/img-461f1e91-33b3-45a6-93d6-ca4ce423af34.webp
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
persistent/images/img-486b00ac-5c3a-4f53-90de-8c0a2f9ad486.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
persistent/images/img-50622919-3829-4e97-b231-e32a32e5342c.webp
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
persistent/images/img-53cc77f5-940f-4fcb-b21c-fb46e1d6aaaf.webp
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
persistent/images/img-54ad8b76-c545-4da3-9beb-2838c6f9b37a.webp
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
persistent/images/img-5771a1f3-64bc-4ccc-8d8b-fd7eb91ab57b.webp
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
persistent/images/img-61d719ce-8fca-4569-b094-1f23552078c5.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
persistent/images/img-6475bf75-b46d-4359-bd17-79c4e3593b59.webp
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
persistent/images/img-694ca166-c339-44df-9240-0bb642291459.webp
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
persistent/images/img-69978803-a0f5-4f1e-97fb-05e7335a0212.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
persistent/images/img-6d6b2565-56a4-4ebd-a41d-3e41d356c9ab.webp
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
persistent/images/img-6e61e1ec-b531-45fd-be65-70174cc3c7d3.webp
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
persistent/images/img-6ea9fadd-975c-4189-be05-5b539b1a7321.webp
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
persistent/images/img-741ae0ba-9f33-4eb5-adfc-391e29dcdbdc.jpg
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
persistent/images/img-74790f80-8087-40b2-937e-e05b757672c5.webp
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
persistent/images/img-7541c7d6-c2b3-4501-a671-e53d6bf0a6f2.webp
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
persistent/images/img-790bb080-9041-4095-82a0-e7c7d8b84d84.webp
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
persistent/images/img-7a27716e-f935-4677-ac38-e2db8f39e4ff.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
persistent/images/img-7a4aa035-c9b1-4126-b4ec-e7b5e93be812.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
persistent/images/img-7b84aae5-c90f-46c2-afd9-41c572b116bf.webp
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
persistent/images/img-7ba05951-aebd-45e6-bcb7-b70a29fef512.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
persistent/images/img-7edbdd0b-dca8-4db8-8a82-3df2b451669b.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
persistent/images/img-85f8a7cd-7351-408f-8576-6d7b9d0ac82b.webp
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
persistent/images/img-87064632-ef07-4fb9-b02c-72521db6ac75.webp
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
persistent/images/img-88d7a851-b49e-413f-aebd-1f4ca386c44a.webp
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
persistent/images/img-8bae768b-e642-4672-ba74-88e0de619131.webp
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
persistent/images/img-8be88072-7bdd-43e2-a5b4-1a716f934762.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
persistent/images/img-91a8a9df-de56-41f5-80cd-f60852c240d8.webp
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
persistent/images/img-93040a69-8b48-4749-8c8d-581d76e74cae.webp
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
persistent/images/img-9528ab28-6588-4703-bbc8-3509e3c97cd3.webp
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
persistent/images/img-9b941945-bfbe-4ca9-b57b-240abc7ae6d4.webp
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
persistent/images/img-a4e04cf7-9443-4462-9582-3c18b33ef711.webp
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
persistent/images/img-a50b7f82-0add-4e3a-bb42-3f9b2e49936a.webp
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
persistent/images/img-a5e90e6b-9793-4127-a44c-3129abe91815.webp
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
persistent/images/img-a6837d4d-87c7-4af5-8956-c2642f652b41.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
persistent/images/img-ab21f3f6-82c1-44c4-ba01-6d0ea32ba0b9.webp
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
persistent/images/img-ade4310c-ac6c-49e1-9348-57b8ba155cc4.webp
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
persistent/images/img-ae368fad-72ed-482d-a210-8319f5404b2c.webp
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
persistent/images/img-af39ffd3-389b-43a4-9afb-5e82020dc5b0.webp
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
persistent/images/img-b51adbda-0ca2-441e-a40d-b3e6027c23df.webp
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
persistent/images/img-b5a715ac-38a8-4a2b-86d0-fb1d3b20213f.webp
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
persistent/images/img-b9e2bf27-2330-45c9-afa1-e97429151eb8.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
persistent/images/img-bc4f9c3e-b74c-450b-9109-6de7d6023521.webp
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
persistent/images/img-bd5d3046-7f93-485b-8b7b-2f4844144736.webp
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
persistent/images/img-c66402e7-1bc5-4d44-82c8-5d682ef9694e.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
persistent/images/img-d4c272b1-977c-4ce8-9821-ead67bce7cc4.webp
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
persistent/images/img-e1c07d92-2272-45f6-a7c9-1e94022c5814.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
persistent/images/img-e2b2f430-4cd8-4042-accb-e4bef9eee68c.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
persistent/images/img-e7269e2e-de35-491a-b24e-76bde9d88ac0.webp
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
persistent/images/img-e813ba90-fa2d-4de9-85ee-5d9a4e26dfc6.webp
Normal file
|
After Width: | Height: | Size: 24 KiB |