Inital commit

This commit is contained in:
Tilman
2011-10-26 09:16:58 +02:00
commit 66a90a0669
17 changed files with 2673 additions and 0 deletions
@@ -0,0 +1,3 @@
#Fri Feb 23 11:41:38 CET 2007
eclipse.preferences.version=1
encoding/<project>=ISO-8859-1
+3
View File
@@ -0,0 +1,3 @@
#Fri Feb 23 11:41:38 CET 2007
eclipse.preferences.version=1
line.separator=\r\n
+103
View File
@@ -0,0 +1,103 @@
- Sicherheit: Wieviel besser ist es, das Lister-Verzeichnis dem PHP-Nutzer zu übereignen, anstatt
die Rechte auf 757 zu setzen? Lässt sich dass sinnvoll nutzen?
IST DER NUTZER IMMER "nobody/nogroup"?
- Es sollte erst das Passwort geprüft und *danach* hochgeladen werden!
- Pause nach Passworteingabe ist kein Sicherheitsgewinn, da das Skript einfach
erneut aufgerufen werden kann. Lässt sich die Anzahl der Aufrufe aktiv begrenzen?
- Erweiterung:
Zugriff auf Unterverzeichnisse (im Moment wird bei 'show' & 'download' aber noch geprüft, ob sich die
angeforderte Datei im selben Verzeichnis befindet!)
Upload-Limit in Byte setzen
Beschreibungen in Textdatei speichern
Passwort für lesenden Zugriff (optional)
/*
* If true, the password is requested for up- AND download of files.
* (The password has to be set for this, see installation.txt)
*
* Default: false
*/
define('REQUEST_PASSWORD_FOR_DOWNLOAD', false);
Umbenennen von Dateien
MIME-Types für Downloads mitschicken, so dass man z.B. Bilder direkt im Browser ansehen kann
Systeminfo mit Werten von "post_max_size" und "upload_max_filesize"
http://www.simonstenhouse.net/index.php?area=projects
Passwort-Schutz: Man könnte das Passwort auch als Textdatei in das Upload-Verzeichnis legen. Ist das Verzeichnis
sicher, ist auch das Passwort sicher, auch bei Fehlkonfiguration des Servers
Verzeichnisrechte & htaccess analog zu Gallery2: http://codex.gallery2.org/Gallery2:Security#Short_Check_List
-------------------------------
Eingetragen bei:
http://www.php-resource.de/
http://resourceindex.com/
http://www.scripts.com/
-------------------------------
Sicherheits-Check! Die Datei darf nicht ausführbar sein
-> Opt-In oder Opt-Out Lösung mit Extension-Liste (nicht gut, immer unvollständig)
BESSERE SICHERHEITSLÖSUNG: Statt irgendwelche Dateichecks wird einfach der Inhalt der
Datei direkt vom Skript gelesen und an den Browser übermittelt. Hochgeladene Dateien dürfen
nicht direkt aufrufbar sein!
http://www.acunetix.de/websitesecurity/php-security-4.htm
http://lists.phpbar.de/pipermail/php/Week-of-Mon-20030915/001656.html
http://lists.phpbar.de/pipermail/php/Week-of-Mon-20030915/001652.html
-------------------------------
Größenprobleme: http://se2.php.net/manual/de/function.readfile.php#48683
Informationen zu PHP-Variablen post_max_size und upload_max_filesize anzeigen
upload_tmp_dir ist sicherheitstechnisch ebenfalls interessant
Sicherheit:
Am Schluss noch einmal http://www.acunetix.de/websitesecurity/php-security-4.htm lesen
Meta-Probleme wie "Upload von Schadcode, Ausführung durch ein anderes, unsicheres
Skript auf demselben Server" beachten
Auf jeden Fall auf Sicherheitsproblematik hinweisen!
======================================
Vereinfachung, .htaccess, etc.
Kozept für die Vereinfachung:
1. Passwort wird über (reservierte) Datei "password.txt" definiert. Ist sie vorhanden,
wird ein Passwort gebraucht, sonst nicht.
2. Am schönsten wäre: Hochgeladene Dateien wieder im selben Verzeichnis wie das Skript,
das als einzige Datei ausführbar ist - funktioniert das mit htaccess?
Idee: Irgendwas mit <IfDefine> zum aktivieren von index.php und sonst Deny from all
--> http://httpd.apache.org/docs/2.2/howto/htaccess.html#cgi
--> http://aktuell.de.selfhtml.org/artikel/server/htaccess-faq/
--> http://httpd.apache.org/docs/2.2/mod/core.html#filesmatch
--> http://www.lrz-muenchen.de/services/schulung/unterlagen/regul/regul-14.html
--> http://www.danielfett.de/df_artikel_regex#hnegativelookaheadsundlookbehinds
--> http://www.drweb.de/php/regulaere-ausdruecke.shtml
Funktoniert:
# Set lister.php as index file
DirectoryIndex lister.php
# Deny access to all files
<FilesMatch ".">
Deny from all
</FilesMatch>
# Allow access access only for lister.php
<Files lister.php>
Allow from all
</Files>
---------------
Funktioniert fast, aber DirectoryIndex wird ignoriert:
# Set lister.php as index file
DirectoryIndex lister.php
# Deny access to all files
Order Allow,Deny
# Allow access access only for lister.php
<Files lister.php>
Allow from all
</Files>
+23
View File
@@ -0,0 +1,23 @@
# No additional options are allowed
Options None
# Deny all access by default
Order Allow,Deny
# Set lister.php as index page
DirectoryIndex lister.php
# If something is accessed directly, it should be trated as text (not code)
# This is a fallback directive
ForceType text/plain
# Allow access for the directory (the index page, that is)
<Files .>
Allow from all
</Files>
# Allow access for lister.php
<Files lister.php>
ForceType application/x-httpd-php
Allow from all
</Files>
+30
View File
@@ -0,0 +1,30 @@
ENGLISH
1. Make a directory on your web server and set the permissions to 757
2. Copy "lister.php" and ".htaccess" into the directory
3. If you want to set a password for upload and deletion, write it into a file
named "password.txt" and also copy it into the directory
4. Security check: Open Lister and upload a file. Try to access it directly via
URL on the server (e.g. http://www.myserver.com/lister/uploaded-file.txt).
If an error message appears ("Access Denied"), your installation should
be secure.
Setting Options:
If needed, various options can be set in the setup area at the beginning
of lister.php.
DEUTSCH
1. Verzeichnis auf dem Server anlegen und Rechte auf 757 setzen
2. Die Dateien "lister.php" und ".htaccess" in das Verzeichnis kopieren
3. Falls ein Passwort für das Hochladen und Löschen von Dateien gesetzt werden
soll, das Passwort in eine Datei mit Namen "password.txt" schreiben und
diese ebenfalls in das Verzeichnis legen.
4. Sicherheits-Check: Lister auf dem Server öffnen und eine Datei hochladen.
Danach versuchen, die hochgeladene Datei direkt über die URL zu öffnen.
(z.B. http://www.meinserver.com/lister/hochgeladene-datei.txt)
Wenn eine Fehlermeldung angezeigt wird ("Zugriff verweigert"), sollte die
Installation sicher sein.
Optionen setzen:
Falls benötigt, können verschiedene Optionen im Bereich "Setup" am Anfang
der Datei lister.php verändert werden.
+574
View File
@@ -0,0 +1,574 @@
<?php
/*
* Lister - a directory listing, upload and download script - version 1.89
* http://www.tilman.de/programme/lister/
* Created: 2006-04-03
* Last Change: 2008-06-17
* Author: Tilman Walther
* This work is licensed under the Creative Commons Attribution-ShareAlike 2.0 Germany License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/2.0/de/
* or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
*
* The software is made available free of charge, no express or implied warranties are made.
* USE AT YOUR OWN RISK.
*/
//-- Setup ------------------------------------------------------------------------------------------------
/*
* If true, all file names are converted via urlencode when uploading and converted back when using one
* of the download buttons.
* Advantage: No file system problems with special characters in file names
* Disadvantage: If files with special character names are manually copied into the directory, Lister
* can't link them. Thus, if set to 'true' Lister should be the only way used to copy files into the
* directory.
*
* Default: true
*/
define('SAVE_NAMES_URLENCODED', true);
/*
* Defines what file permissions are to be set after uploading a file.
*
* Default: 644
*/
define('PERMISSIONS_FOR_UPLOADED_FILES', 0644);
/*
* Defines whether files with unknown extensions are shown in the browser (Content-Type: text/html) or just
* being downloaded.
*
* Default: false
*/
define('SHOW_UNKNOWN_FILETYPES_IN_BROWSER', false);
// TODO - NOT YET IMPLEMENTED - Zugriff auf Unterverzeichnisse
//define('ACCESS_SUBDIRECTORIES', false);
// TODO - NOT YET IMPLEMENTED - Beschreibungen in Textdatei speichern
//define('FILE_DESCRIPTIONS', false);
//-----------------------------------------------------------------------------------------------------------
define('PROGRAM_NAME', 'Lister v1.89');
define('SCRIPTNAME', basename($_SERVER['PHP_SELF']));
/*
* Try to read the password for uploads and deletion from file "password.txt".
* If empty, no password is needed for upload and deletion.
*/
if (file_exists('password.txt')) {
$pwfile = fopen('password.txt', 'r');
define('PASSWORD', rtrim(fgets($pwfile)));
fclose($pwfile);
}
else {
define('PASSWORD', '');
}
if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'de') {
define('LANGUAGE', 'de');
}
else {
define('LANGUAGE', 'en');
}
if (LANGUAGE == 'de') {
define('FILE_LABEL', 'Datei');
define('FILES_LABEL', 'Dateien');
define('SIZE_LABEL', 'Gr&ouml;&szlig;e');
define('SELECTION_LABEL', 'Auswahl');
define('DELETE_LABEL', 'Markierte l&ouml;schen');
define('DOWNLOAD_LABEL', '[download]');
define('PASSWORD_LABEL', 'Passwort');
define('OVERWRITE_LABEL', 'vorhandene Datei &uuml;berschreiben');
define('UPLOAD_LABEL', 'Datei hochladen');
define('BACK_LABEL', 'zur&uuml;ck');
define('DELETION_MESSAGE', ' gel&ouml;scht');
define('PASSWORD_ERROR', 'Fehler: Falsches Passwort');
define('OVERWRITE_ERROR', 'Fehler: Datei bereits vorhanden');
define('NO_FILE_ERROR', 'Fehler: Datei konnte nicht gefunden werden');
define('NO_SELECTION_ERROR', 'Fehler: Keine Datei ausgew&auml;hlt');
define('DELETION_ERROR', 'Fehler beim L&ouml;schen von Datei');
define('FILESIZE_ERROR', 'Fehler: Datei zu gro&szlig;');
define('PARTIAL_ERROR', 'Fehler: Datei wurde unvollst&auml;ndig &uuml;bertragen');
define('NO_UPLOAD_FILE_ERROR', 'Fehler: Keine Datei angegeben');
define('TMP_DIR_ERROR', 'Fehler: Kann tempor&auml;res Verzeichnis nicht finden');
define('WRITE_ERROR', 'Fehler: Kann die Datei nicht speichern');
define('MOVE_ERROR', 'Fehler: Hochgeladene Datei konnte nicht verschoben werden');
define('UNKNOWN_ERROR', 'Ein unbekannter Fehler ist aufgetreten');
}
else {
define('FILE_LABEL', 'File');
define('FILES_LABEL', 'Files');
define('SIZE_LABEL', 'Size');
define('SELECTION_LABEL', 'Selection');
define('DELETE_LABEL', 'Delete selected');
define('DOWNLOAD_LABEL', '[download]');
define('PASSWORD_LABEL', 'Password');
define('OVERWRITE_LABEL', 'overwrite existing file');
define('UPLOAD_LABEL', 'Upload file');
define('BACK_LABEL', 'back');
define('DELETION_MESSAGE', ' deleted');
define('PASSWORD_ERROR', 'Error: Wrong password');
define('OVERWRITE_ERROR', 'Error: File already exists');
define('NO_FILE_ERROR', 'Error: No such file');
define('NO_SELECTION_ERROR', 'Error: No file selected');
define('DELETION_ERROR', 'Error on deleting file');
define('FILESIZE_ERROR', 'Error: File too big');
define('PARTIAL_ERROR', 'Error: File was only partially uploaded');
define('NO_UPLOAD_FILE_ERROR', 'Error: No upload file specified');
define('TMP_DIR_ERROR', 'Error: Missing temp directory');
define('WRITE_ERROR', 'Error: Could not write to disk');
define('MOVE_ERROR', 'Error: Uploaded file could not be moved from temp directory');
define('UNKNOWN_ERROR', 'An unknown error occured');
}
/*
* Returns the size of a file (given in byte) as a String with kB/MB unit
*/
function getSizeAsString($size) {
if ($size < 2) {
return $size." Byte";
}
else if ($size < 1024) {
return $size." Bytes";
}
else if ($size < 1048576) {
return round(($size/1024), 0)." kB";
}
else {
return round(($size/1048576), 1)." MB";
}
}
/*
* Returns true if the filename is reserved, false otherwise
*/
function isReserved($name) {
if ($name == SCRIPTNAME) return true;
if ($name == '.htaccess') return true;
if ($name == 'password.txt') return true;
return false;
}
/*
* Shows a given message within a HTML-Wrapper
*/
function showMessage($message) {
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><?php echo PROGRAM_NAME; ?></title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
</head>
<body style="background-color:#FFFFFF; font-family: 'Trebuchet MS', Georgia, serif;">
<div style="text-align: center; margin: 1em;">
<?php echo $message; ?><br />
<a href="<?php echo SCRIPTNAME; ?>" style="font-size: small; color:#0000CC;"><?php echo BACK_LABEL; ?></a>
</div>
</body>
</html>
<?php
exit;
}
if ($_GET['action'] == 'upload') {
// check for submitted file
if ($_FILES['uploadfile']['error'] != UPLOAD_ERR_OK) {
if (($_FILES['uploadfile']['error'] == UPLOAD_ERR_INI_SIZE) || ($_FILES['uploadfile']['error'] == UPLOAD_ERR_FORM_SIZE)) {
showMessage(FILESIZE_ERROR);
}
else if ($_FILES['uploadfile']['error'] == UPLOAD_ERR_PARTIAL) {
showMessage(PARTIAL_ERROR);
}
else if ($_FILES['uploadfile']['error'] == UPLOAD_ERR_NO_FILE) {
showMessage(NO_UPLOAD_FILE_ERROR);
}
else if ($_FILES['uploadfile']['error'] == UPLOAD_ERR_NO_TMP_DIR) {
showMessage(TMP_DIR_ERROR);
}
else if ($_FILES['uploadfile']['error'] == UPLOAD_ERR_CANT_WRITE) {
showMessage(WRITE_ERROR);
}
showMessage(UNKNOWN_ERROR.': '.$_FILES['uploadfile']['error']);
}
// check password
else if (PASSWORD == '' || $_POST['password'] == PASSWORD) {
// check for existing file
if (SAVE_NAMES_URLENCODED)
$physicalFileName = urlencode($_FILES['uploadfile']['name']);
else
$physicalFileName = $_FILES['uploadfile']['name'];
$already_exists = file_exists($physicalFileName);
// if file exists and overwrite option is off, show error message
// plus security check - reserved files are not allowed to be overwritten
if (($already_exists & ($_POST['overwrite'] != 'on')) || isReserved($physicalFileName)) {
showMessage(OVERWRITE_ERROR);
}
// copy file from temporary location
else {
$filename = $_FILES['uploadfile']['name'];
if (SAVE_NAMES_URLENCODED) {
$upload_ok = move_uploaded_file($_FILES['uploadfile']['tmp_name'], urlencode($filename));
// change file permissions
chmod(urlencode($filename), PERMISSIONS_FOR_UPLOADED_FILES);
}
else {
$upload_ok = move_uploaded_file($_FILES['uploadfile']['tmp_name'], $filename);
// change file permissions
chmod(urlencode($filename), PERMISSIONS_FOR_UPLOADED_FILES);
}
// if upload successful, reload page
if ($upload_ok) {
header('Location: http://'.$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\').'/'.SCRIPTNAME);
}
// show error message
else {
showMessage(MOVE_ERROR);
}
}
}
// wrong password: show error message
else {
showMessage(PASSWORD_ERROR);
}
exit;
}
else if ($_GET['action'] == 'delete') {
// check password
if (PASSWORD == '' || $_POST['password'] == PASSWORD) {
if (isset($_REQUEST['del'])) {
$message = '';
foreach ($_REQUEST['del'] as $idx => $filename) {
if (SAVE_NAMES_URLENCODED)
$physicalFileName = urlencode($filename);
else
$physicalFileName = $filename;
// security check - the file has to be in the same directory
$physicalFileName = basename($physicalFileName);
// security check - reserved files can not be deleted
if (!isReserved($physicalFileName)) {
if (unlink($physicalFileName))
$message = $message.$filename.DELETION_MESSAGE."<br />\n";
else
$message = $message.DELETION_ERROR.' <em>'.$filename."</em><br />\n";
}
else {
$message = $message.DELETION_ERROR.' <em>'.$filename."</em><br />\n";
}
}
showMessage($message);
}
else {
showMessage(NO_SELECTION_ERROR);
}
}
// wrong password: show error message
else {
showMessage(PASSWORD_ERROR);
}
exit;
}
else if (($_GET['action'] == 'show') || ($_GET['action'] == 'download')) {
if (SAVE_NAMES_URLENCODED)
$physicalFileName = urlencode($_GET['file']);
else
$physicalFileName = $_GET['file'];
// security check - the file has to be in the same directory
$physicalFileName = basename($physicalFileName);
// security check
if (file_exists($physicalFileName) & (!isReserved($physicalFileName))) {
// the MIME type
$contentType = '';
// if ($_GET['action'] == 'show') try to set MIME type for content delivery from file name extension
if ($_GET['action'] == 'show') {
$extension = strtolower(substr($physicalFileName, strrpos($physicalFileName, '.')));
if (($extension == '.aif') || ($extension == '.aiff')) $contentType = 'Content-Type: audio/x-aiff';
else if (($extension == '.asc') || ($extension == '.txt')) $contentType = 'Content-Type: text/plain';
else if (($extension == '.asf') || ($extension == '.asx')) $contentType = 'Content-Type: video/x-ms-asf';
else if ($extension == '.avi') $contentType = 'Content-Type: video/x-msvideo';
else if ($extension == '.bmp') $contentType = 'Content-Type: image/bmp';
else if ($extension == '.css') $contentType = 'Content-Type: text/css';
else if ($extension == '.doc') $contentType = 'Content-Type: application/msword';
else if ($extension == '.gif') $contentType = 'Content-Type: image/gif';
else if (($extension == '.htm') || ($extension == '.html')) $contentType = 'Content-Type: text/html';
else if ($extension == '.ico') $contentType = 'Content-Type: image/x-icon';
else if (($extension == '.jpeg') || ($extension == '.jpg')) $contentType = 'Content-Type: image/jpeg';
else if ($extension == '.m3u') $contentType = 'Content-Type: audio/x-mpegurl';
else if (($extension == '.mid') || ($extension == '.midi')) $contentType = 'Content-Type: audio/midi';
else if (($extension == '.mp2') || ($extension == '.mp3')) $contentType = 'Content-Type: audio/mpeg';
else if (($extension == '.mpeg') || ($extension == '.mpg')) $contentType = 'Content-Type: video/mpeg';
else if (($extension == '.ogg') || ($extension == '.ogm')) $contentType = 'Content-Type: application/ogg';
else if ($extension == '.pdf') $contentType = 'Content-Type: application/pdf';
else if ($extension == '.png') $contentType = 'Content-Type: image/png';
else if ($extension == '.ppt') $contentType = 'Content-Type: application/vnd.ms-powerpoint';
else if (($extension == '.ps') || ($extension == '.eps')) $contentType = 'Content-Type: application/postscript';
else if (($extension == '.qt') || ($extension == '.mov')) $contentType = 'Content-Type: video/quicktime';
else if (($extension == '.ram') || ($extension == '.rm')) $contentType = 'Content-Type: audio/x-pn-realaudio';
else if ($extension == '.rtf') $contentType = 'Content-Type: text/rtf';
else if ($extension == '.svg') $contentType = 'Content-Type: image/svg+xml';
else if ($extension == '.swf') $contentType = 'Content-Type: application/x-shockwave-flash';
else if ($extension == '.tar') $contentType = 'Content-Type: application/x-tar';
else if (($extension == '.tif') || ($extension == '.tiff')) $contentType = 'Content-Type: image/tiff';
else if ($extension == '.vrml') $contentType = 'Content-Type: model/vrml';
else if ($extension == '.wav') $contentType = 'Content-Type: audio/x-wav';
else if ($extension == '.wma') $contentType = 'Content-Type: audio/x-ms-wma';
else if ($extension == '.wmv') $contentType = 'Content-Type: audio/x-ms-wmv';
else if ($extension == '.wvx') $contentType = 'Content-Type: audio/x-ms-wvx';
else if ($extension == '.xhtml') $contentType = 'Content-Type: application/xhtml+xml';
else if ($extension == '.xls') $contentType = 'Content-Type: application/x-msexcel';
else if ($extension == '.xml') $contentType = 'Content-Type: application/xml';
else if ($extension == '.zip') $contentType = 'Content-Type: application/zip';
}
// if no valid Content-Type is available and SHOW_UNKNOWN_FILETYPES_IN_BROWSER set true
// send the file with Content-Type
if (($contentType == '') && (SHOW_UNKNOWN_FILETYPES_IN_BROWSER)) {
$contentType = 'text/html';
}
// if
// ($_GET['action'] == 'show') and valid Content-Type available
// or
// SHOW_UNKNOWN_FILETYPES_IN_BROWSER == true
// send file to be shown in browser
if (($_GET['action'] == 'show') && ($contentType != '')) {
// send file to the browser
header($contentType);
header('Content-Length: '.(string)filesize($physicalFileName));
readfile($physicalFileName);
}
else {
// if
// ($_GET['action'] == 'download')
// or
// file extension unknown and SHOW_UNKNOWN_FILETYPES_IN_BROWSER == false
// send file for download
header('Content-Type: application/octet-stream');
//header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="'.$_GET['file'].'"');
header('Content-Length: '.(string)filesize($physicalFileName));
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Pragma: no-cache');
header('Expires: 0');
readfile($physicalFileName);
}
}
else {
showMessage(NO_FILE_ERROR);
}
exit;
}
else if ($_GET['action'] == 'info') {
// TODO HIER GEHT'S WEITER - Umgebungsvariablen anzeigen
showMessage();
}
else if ($_GET['action'] == 'icon') {
header('Content-type: image/gif');
echo pack('H*',
'47494638396110001000F7000033333310346F0C3D7E153974143B7A153F7B0D417620507C4242454343474B4B4E4C4C5151'.
'51515050565555555656575B5B5B55694D6161616666666A6A6A6B6B6B617566687D656D6D736F6F7471717174747477777C'.
'7878787A7A7A7B7B7C7C7C7C7F7F7F57BD31778C7F10498317508A13548C13558F2D51833050832A658324659D2977AB506B'.
'9675758476768A39879F3389BB318CBD7F93B23D90C33D94C6349DCA42A1D045ADDA50BDE85AC8F380808081818182828286'.
'868684848E88888888888D8A8A8F8C8C8C8E8E8E80809392929298989899999A9C9C9C9E9E9E9F9F9F8799B79898B7A3A3A3'.
'A4A4A4A5A5A5A7A7A7AEAEAEB5B5B5B9B9B9BABABABFBFBF9FAEC5BEC8D8C0C0C0C3C3C3C4C4C4C7C7C7C9C9C9CACACACECE'.
'CECCCCDED0D0D0D1D1D1D3D3D3D8D8D8DADADADBDBDBDDDDDDDCDDDEDEDEDEDFDFDFCFD6E2E0E0E0E1E1E1E2E2E2E4E4E4E5'.
'E5E5E6E6E6E9E9E9EAEAEAEAEAEEECECECEFEFEFF0F0F0F2F2F2F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFCFCFC'.
'FDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'.
'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'.
'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'.
'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'.
'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'.
'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'.
'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'.
'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C00000000100010000008E2000709C4326000'.
'168108130E0C404040812B6A14225C1360069A16274C3039237110453967D4A4B041624DC739730496992123C68C101D059E'.
'384102C78D1233636681C122878E152A602ACC72A70D99033568A848034849C4416ED854E95061CB1E0328E4F4F19225CC9F'.
'4154C6A4E1D2464D9E4078E0F0A103464890384B924C211B270C19315A9070B830C2050828528EF47842450C11AA3C246010'.
'F180C21D2040BA3809D1E30382222E305888C0C0C3203B56766C1802250380262F1438D010C58C403F75BE1899F023410306'.
'40ACBCD123E8751D40C0272C80E003F86E4100003B');
}
else {
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><?php echo PROGRAM_NAME; ?></title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="expires" content="0" />
<style type="text/css">
<!--
body { background-color:#FFFFFF; font-family: "Trebuchet MS", Georgia, serif; }
a { color:#0000CC; }
table { text-align: left; border-collapse: collapse; border: 1px solid black; }
th { background-color:#CCCCCC; padding: 5px; border: 1px solid black; font-size: 80%; }
td { background-color:#FFFFFF; padding: 5px; border: 1px solid black; }
.download { font-size: 60%; color:#0000CC; text-decoration: none; font-weight: bold; }
.small { font-size: small; }
.menu { font-size: 80%; }
-->
</style>
</head>
<body>
<div style="margin: 2em;">
<form action="<?php echo SCRIPTNAME; ?>?action=delete" method="post">
<table style="margin-left:auto; margin-right:auto;">
<tr>
<th><a href="<?php echo $_SERVER['PHP_SELF']; ?>?action=<?php if (($_GET['action'] == 'ascByName') || ($_GET['action'] == '')) echo "descByName"; else echo 'ascByName'; ?>"><?php echo FILE_LABEL; ?></a></th>
<th><a href="<?php echo $_SERVER['PHP_SELF']; ?>?action=<?php if ($_GET['action'] == 'ascBySize') echo "descBySize"; else echo 'ascBySize'; ?>"><?php echo SIZE_LABEL; ?></a></th>
<th><?php echo SELECTION_LABEL; ?></th>
</tr>
<?php
// read directory
$filenames = scandir('.'); // TODO optional PHP-4-kompatibel mit glob() oder wie im Handbuch unter scandir() vorgeschlagen
$filelist = array();
if (SAVE_NAMES_URLENCODED) {
foreach ($filenames as $filename) {
if (!isReserved($filename)) array_push($filelist, array(urldecode($filename), filesize($filename)));
}
}
else {
foreach ($filenames as $filename) {
if (!isReserved($filename)) array_push($filelist, array($filename, filesize($filename)));
}
}
// sort file list
if ($_GET['action'] == 'descBySize') {
foreach($filelist as $v) $s[] = $v[1];
array_multisort($s, SORT_DESC, $filelist);
}
else if ($_GET['action'] == 'ascBySize') {
foreach($filelist as $v) $s[] = $v[1];
array_multisort($s, SORT_ASC, $filelist);
}
else if ($_GET['action'] == 'descByName') {
array_multisort($filelist, SORT_DESC);
}
else {
array_multisort($filelist, SORT_ASC);
}
// TODO if ACCESS_DIRECTORIES:
// show "cd .."
// show directories
// show file list
$filecount = 0;
$totalFilesize = 0;
foreach ($filelist as $file) {
if (!is_dir($file[0])) {
$filecount++;
$totalFilesize += $file[1];
?>
<tr>
<td><a href="<?php echo SCRIPTNAME; ?>?action=show&amp;file=<?php echo urlencode($file[0]); ?>"><?php echo htmlentities($file[0]); ?></a>&nbsp;<a class="download" href="<?php echo SCRIPTNAME; ?>?action=download&amp;file=<?php echo urlencode($file[0]); ?>"><img style="border: none;" src="<?php echo SCRIPTNAME; ?>?action=icon" alt="<?php echo DOWNLOAD_LABEL; ?>" /></a></td>
<td style="text-align: right;"><?php echo getSizeAsString($file[1]); ?></td>
<td style="text-align: center;"><input type="checkbox" name="del[]" value="<?php echo htmlentities($file[0]); ?>" /></td>
</tr>
<?php
}
}
if ($filecount > 0) {
?>
<tr>
<td class="menu" style="text-align: right;" colspan="3">
<?php
if (PASSWORD != '') {
?>
<?PHP echo PASSWORD_LABEL; ?>&nbsp;<input name="password" type="password" size="10" class="menu" />
<?php
}
?>
<input type="submit" value="<?php echo DELETE_LABEL; ?>" class="menu" />
</td>
</tr>
<?php
}
?>
<tr>
<td class="small" style="text-align: center;" colspan="3">
<?php
echo $filecount;
if ($filecount == 1)
echo ' '.FILE_LABEL.', ';
else
echo ' '.FILES_LABEL.', ';
echo getSizeAsString($totalFilesize)."<br />\n";
echo '<a style="font-size: 80%" href="http://www.tilman.de/programme/lister/';
if (LANGUAGE == 'en') echo 'index.en.php';
echo '">'.PROGRAM_NAME.'</a>';
?>
</td>
</tr>
</table>
</form>
</div>
<div style="margin: 2em;">
<form action="<?php echo SCRIPTNAME; ?>?action=upload" method="post" enctype="multipart/form-data">
<table style="margin-left:auto; margin-right:auto;">
<tr>
<td class="menu" style="border: none;"><?PHP echo FILE_LABEL; ?></td>
<td class="menu" style="border: none;"><input name="uploadfile" type="file" class="menu" /></td>
</tr>
<tr>
<td class="menu" style="border: none;"></td>
<td class="menu" style="border: none;"><input name="overwrite" type="checkbox" /><span class="small"><?PHP echo OVERWRITE_LABEL; ?></span></td>
</tr>
<?php
if (PASSWORD != '') {
?>
<tr>
<td class="menu" style="border: none;"><?PHP echo PASSWORD_LABEL; ?></td>
<td style="border: none;"><input name="password" type="password" size="10" class="menu" /></td>
</tr>
<?php
}
?>
<tr>
<td class="menu" style="border: none; text-align: center;" colspan="2"><input type="submit" value="<?PHP echo UPLOAD_LABEL; ?>" class="menu" /></td>
</tr>
</table>
</form>
</div>
</body>
</html>
<?php
}
?>
Binary file not shown.

After

Width:  |  Height:  |  Size: 1021 B

+21
View File
@@ -0,0 +1,21 @@
ENGLISH
0. If you want to set a password for upload and deletion, open lister.php with an editor
an define your password in line 15:
define('PASSWORD', 'My-secret-Passwort');
If you do not change this, no password is needed.
1. Make a new directory on the server
2. Change file permissions: chmod 757 directory
3. Copy lister.php and lister_download_button.gif in the new directory
4. Change file permissions of the script: chmod 646 lister.php
5. Done.
DEUTSCH
0. Falls gewünscht: lister.php mit einem Editor öffnen und in Zeile 15 ein Passwort
für das Hochladen und Löschen festlegen:
define('PASSWORD', 'Mein-geheimes-Passwort');
Wenn die Zeile nicht verändert wird, muss kein Passwort eingegeben werden.
1. Das Verzeichnis auf dem Server anlegen
2. Rechte setzen: chmod 757 verzeichnis
3. lister.php und lister_download_button.gif in das Verzeichnis kopieren
4. Rechte setzen: chmod 646 lister.php
5. Fertig. Jetzt kann das Skript aufgerufen werden.
+534
View File
@@ -0,0 +1,534 @@
<?php
/*
* Lister - a directory listing, upload and download script - version 3.2
* http://www.tilman.de/programme/lister/
* Author: Tilman Walther
* This work is licensed under the Creative Commons Attribution-ShareAlike 2.0 Germany License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/2.0/de/
* or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
*
* The software is made available free of charge, no express or implied warranties are made.
* USE AT YOUR OWN RISK.
*/
// The Password for uploads and deletion. If empty, no password is needed for upload and deletion.
define('PASSWORD', '');
//----------------------------------------------------------------------------------------------------
define('SCRIPTNAME', basename($_SERVER['PHP_SELF']));
// The file list. Hands off!
/* Filelist:
:Filelist */
//-- Hilfsfunktionen -------------------------------------------------------------------------------
$totalFiles = 0;
$totalFileSize = 0;
function readFileList() {
global $totalFiles;
global $totalFileSize;
$lines = file(SCRIPTNAME);
if ($lines) {
$i = 0;
while ((!strstr(substr($lines[$i],0,14), "* Filelist:")) and ($i <= count($lines))) // Lies bis zur Dateiliste
{
$i++;
}
if (strstr(substr($lines[$i],0,14), "* Filelist:")) {
// Dateiliste aus Datei lesen
$i++;
$j = 0;
while (!strstr(substr($lines[$i+$j],0,14), ":Filelist *")) {
$liste[$j] = explode("//", $lines[$i+$j]);
$liste[$j][1] = preg_replace("/\r|\n/s", "", $liste[$j][1]); // Zeilenumbruch hinter Beschreibung entfernen
/*
$descPos = strpos($lines[$i+$j], '//');
$liste[$j][0] = substr($lines[$i+$j], 0, $descPos);
// Zeilenumbruch hinter Beschreibung entfernen
$liste[$j][1] = preg_replace("/\r|\n/s", "", substr($lines[$i+$j], $descPos+2));
*/
$liste[$j][2] = filesize(urlencode($liste[$j][0]));
$totalFiles++;
$totalFileSize += $liste[$j][2];
$j++;
}
return $liste;
}
else {
return false;
}
}
}
function getSizeAsString($size) {
if ($size < 2) {
return $size." Byte";
}
else if ($size < 1024) {
return $size." Bytes";
}
else if ($size < 1048576) {
return round(($size/1024), 2)." KB";
}
else {
return round(($size/1048576), 2)." MB";
}
}
if ($_GET['action'] != 'download') {
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<style type="text/css">
<!--
body { font-family: "Trebuchet MS", Georgia, serif; }
a { color:#0000CC; }
table { border-collapse: collapse; }
th { text-align: left; background-color:#EEEEEE; font-size: 80%; }
.menu { font-size: 80%; }
.smallsize { font-size: 80%; }
.download a { font-size: 60%; color:#0000CC; text-decoration: none; font-weight: bold; }
-->
</style>
<title>Lister</title>
</head>
<body>
<?php
//-- Hinzufügen ------------------------------------------------------------------------------------
if ($_GET['action'] == 'add') {
echo '<p class="menu"><a href="'.$_SERVER['PHP_SELF'].'">zurück zur Liste</a></p>';
// massive Login-Versuche abblocken
sleep(1);
// Passwort checken
if ($_POST['password'] == PASSWORD) {
$already_exists = file_exists(urlencode($_FILES['datei']['name']));
if (($already_exists) and (!$_POST['overwrite'] == 'on')) {
echo "<p><b>Fehler:</b> Datei mit Namen <i>" . htmlspecialchars($_FILES['datei']['name']) . "</i> ist bereits vorhanden. (Überschreiben abgeschaltet.)</p>\n";
}
else {
$filename = $_FILES['datei']['name'];
if (move_uploaded_file($_FILES['datei']['tmp_name'], urlencode($filename))) {
echo "<p>Die Datei <i>" . htmlspecialchars($_FILES['datei']['name']) . "</i> wurde übertragen.</p>\n";
$liste = readFileList();
if ($liste !== false) {
if ($liste !== NULL) {
foreach($liste as $v) $s[] = $v[0];
$idx = array_search($filename, $s);
}
// FUNKY!
if (gettype($idx) == 'integer') { // Dateiname bereits in Liste enthalten
$lines = file(SCRIPTNAME);
if ($lines) {
$fp = fopen(SCRIPTNAME,'w+'); // Index-Datei zum Schreiben öffnen
$i = 0;
while (!strstr(substr($lines[$i],0,14), "* Filelist:")) {
fputs($fp, $lines[$i]);
$i++;
}
while (!strstr(substr($lines[$i], 0, strpos($lines[$i], '//')), $filename)) {
fputs($fp, $lines[$i]);
$i++;
}
$i++;
fputs($fp, $filename."//".$_POST['description']."\n");
while ($i < count($lines)) {
fputs($fp, $lines[$i]);
$i++;
}
fclose($fp);
echo "<p>Tabelleneintrag wurde aktualisiert.</p>\n";
}
else {
echo "<p><b>Fehler:</b> <i>".$_SERVER['PHP_SELF']."</i> wurde nicht gefunden!</p>\n";
}
}
else { // Dateiname noch nicht in Liste enthalten
$lines = file(SCRIPTNAME);
if ($lines) {
$fp = fopen(SCRIPTNAME,'w+'); // Index-Datei zum Schreiben öffnen
$i = 0;
while (!strstr(substr($lines[$i],0,14), "* Filelist:")) {
fputs($fp, $lines[$i]);
$i++;
}
while (!strstr($lines[$i], "*/")) {
fputs($fp, $lines[$i]);
$i++;
}
fputs($fp, $filename."//".$_POST['description']."\n");
while ($i < count($lines)) {
fputs($fp, $lines[$i]);
$i++;
}
fclose($fp);
echo "<p>Tabelleneintrag wurde erzeugt.</p>\n";
}
else {
echo "<p><b>Fehler:</b> <i>".$_SERVER['PHP_SELF']."</i> wurde nicht gefunden!</p>\n";
}
}
}
else {
echo "<p><b>Fehler:</b> Liste mit Dateien konnte nicht gefunden werden.</p>\n";
}
}
else {
echo "<p><b>Fehler:</b> Datei konnte nicht übertragen werden!</p>\n";
echo "<p>\n";
print_r($_FILES);
echo "\n</p>\n";
}
}
}
else { // Passwort falsch
echo "<p><b>Fehler:</b> Falsches Passwort!</p>\n";
}
}
//-- Sicherheitsabfrage vor Löschen -------------------------------------------------------------------
else if ($_GET['action'] == 'deleteCheck') {
echo '<p class="menu"><a href="'.$_SERVER['PHP_SELF'].'">zurück zur Liste</a></p>';
if (isset($_REQUEST['delButton'])) {
echo "<div style=\"margin:2em\">\n";
echo " <b>Auswahl löschen:</b><br>\n";
echo " <form action=\"".$_SERVER['PHP_SELF']."?action=delete\" method=\"post\">\n";
echo " <table>\n";
reset($_REQUEST['delButton']);
foreach ($_REQUEST['delButton'] as $idx => $filename) {
echo " <tr>\n";
echo " <td>".$filename."</td>\n";
echo " <td align=\"right\"><input type=\"checkbox\" name=\"delButton[]\" value=\"".$filename."\" checked /></td>\n";
echo " </tr>\n";
}
if (PASSWORD != '') {
echo " <tr>\n";
echo " <td colspan=\"2\">\n";
echo " <br>\n";
echo " &nbsp;&nbsp;<span class=\"menu\">Passwort:</span>\n";
echo " <input name=\"password\" type=\"password\" size=\"10\" /><br>\n";
echo " </td>\n";
echo " </tr>\n";
}
echo " <tr>\n";
echo " <td class=\"menu\" colspan=\"2\" align=\"right\">\n";
echo " <input type=\"submit\" value=\"";
if (count($_REQUEST['delButton']) > 1) {
echo "Dateien löschen\" />\n";
}
else {
echo "Datei löschen\" />\n";
}
echo " </td>\n";
echo " </tr>\n";
echo " </table>\n";
echo " </form>\n";
echo "</div>\n";
} else {
echo "<p><b>Fehler:</b> Keine Datei ausgewählt.</p>\n";
}
}
//-- Löschen ---------------------------------------------------------------------------------------
else if ($_GET['action'] == 'delete') {
echo '<p class="menu"><a href="'.$_SERVER['PHP_SELF'].'">zurück zur Liste</a></p>';
// massive Login-Versuche abblocken
sleep(1);
// Passwort checken
if ($_POST['password'] == PASSWORD) {
if (isset($_REQUEST['delButton'])) {
reset($_REQUEST['delButton']);
foreach ($_REQUEST['delButton'] as $idx => $filename) {
echo "<p>Lösche <i>$filename</i>...</p>\n";
unlink(urlencode($filename));
$lines = file(SCRIPTNAME);
if ($lines) {
$fp = fopen(SCRIPTNAME,'w+'); // Index-Datei zum Schreiben öffnen
$i = 0;
while (!strstr(substr($lines[$i],0,14), "* Filelist:")) {
fputs($fp, $lines[$i]);
$i++;
}
while (!strstr(substr($lines[$i], 0, strpos($lines[$i], '//')), $filename)) {
fputs($fp, $lines[$i]);
$i++;
}
$i++;
while ($i < count($lines)) {
fputs($fp, $lines[$i]);
$i++;
}
fclose($fp);
echo "<p>Tabelleneintrag wurde entfernt.</p>\n";
}
else {
echo "<p><b>Fehler:</b> <i>".$_SERVER['PHP_SELF']."</i> wurde nicht gefunden!</p>\n";
}
}
}
else {
echo "<p><b>Fehler:</b> Keine Dateien ausgewählt.</p>\n";
}
}
else { // Passwort falsch
echo "<p><b>Fehler:</b> Falsches Passwort!</p>\n";
}
}
//-- Anzeigen --------------------------------------------------------------------------------------
else {
?>
<div align="center">
<form action="<?php echo $_SERVER['PHP_SELF']; ?>?action=deleteCheck" method="post">
<table cellspacing="5" cellpadding="5" border="1">
<tr>
<th><a href="<?php echo $_SERVER['PHP_SELF']; ?>?action=<?php if (($_GET['action'] == 'ascByName') || ($_GET['action'] == '')) echo "descByName"; else echo 'ascByName';?>">Datei</a></th>
<th><a href="<?php echo $_SERVER['PHP_SELF']; ?>?action=<?php if ($_GET['action'] == 'ascByDescription') echo "descByDescription"; else echo 'ascByDescription';?>">Beschreibung</a></th>
<th><a href="<?php echo $_SERVER['PHP_SELF']; ?>?action=<?php if ($_GET['action'] == 'ascBySize') echo "descBySize"; else echo 'ascBySize';?>">Größe</a></th>
<th>Auswahl</th>
</tr>
<?php
$liste = readFileList();
if ($liste !== false) {
if (isset($liste)) {
// Liste sortieren
if ($_GET['action'] == 'ascByDescription') {
foreach($liste as $v) $s[] = $v[1];
array_multisort($s, SORT_ASC, $liste);
}
else if ($_GET['action'] == 'descByDescription') {
foreach($liste as $v) $s[] = $v[1];
array_multisort($s, SORT_DESC, $liste);
}
else if ($_GET['action'] == 'ascBySize') {
foreach($liste as $v) $s[] = $v[2];
array_multisort($s, SORT_ASC, $liste);
}
else if ($_GET['action'] == 'descBySize') {
foreach($liste as $v) $s[] = $v[2];
array_multisort($s, SORT_DESC, $liste);
}
else if ($_GET['action'] == 'descByName') {
foreach($liste as $v) $s[] = $v[0];
array_multisort($s, SORT_DESC, $liste);
}
else {
sort($liste);
}
// Liste ausgeben
foreach ($liste as $eintrag) {
echo " <tr>\n";
echo " <td><a href=\"".urlencode(urlencode($eintrag[0]))."\">".htmlentities($eintrag[0])."</a>&nbsp;<span class=\"download\"><a href=\"".SCRIPTNAME."?action=download&amp;file=".urlencode(urlencode($eintrag[0]))."\"><img src=\"lister_download_button.gif\" border=\"0\" alt=\"[download]\"></a></span></td>\n";
echo " <td>".htmlentities($eintrag[1])."</td>\n";
echo " <td align=\"right\"><span class=\"smallsize\">".getSizeAsString($eintrag[2])."</span></td>\n";
echo " <td align=\"center\"><input type=\"checkbox\" name=\"delButton[]\" value=\"".htmlentities($eintrag[0])."\" /></td>\n";
echo " </tr>\n";
}
}
}
else {
echo "<p><b>Fehler:</b> Liste mit Dateien konnte nicht gefunden werden.</p>\n";
}
?>
<tr>
<td class="menu" colspan="4" align="right">
<input type="submit" value="Ausgewählte Dateien löschen" style="font-size:105%" />
</td>
</tr>
<tr>
<td colspan="4" align="center" class="smallsize">
<?php echo $totalFiles; ?> Dateien, <?php echo getSizeAsString($totalFileSize); ?><br>
<span style="font-size: 80%"><a href="http://www.tilman.de/programme/lister/">Lister</a> v3.2</span>
</td>
</tr>
</table>
</form>
</div>
<div align="center">
<table cellspacing="5" cellpadding="5" border="1">
<tr>
<td colspan="4">
<div style="padding:8px">
<div class="menu">Datei hinzufügen:</div>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>?action=add" method="post" enctype="multipart/form-data">
<table border="0" cellpadding="2" class="menu">
<tr>
<td>
Datei:
</td>
<td>
<input name="datei" type="file" />
</td>
</tr>
<tr>
<td>
Beschreibung:
</td>
<td>
<input name="description" type="text" size="30" />
</td>
</tr>
<tr>
<td></td>
<td>
<input type="checkbox" name="overwrite" /><span style="font-size:small">bereits vorhandene überschreiben</span>
</td>
</tr>
<?php if (PASSWORD != '') { ?>
<tr>
<td>
Passwort:
</td>
<td>
<input name="password" type="password" size="10" />
</td>
</tr>
<?php } ?>
<tr>
<td colspan="2" align="right" class="menu">
<input type="submit" value="Datei hochladen" />
</td>
</tr>
</table>
</form>
</div>
</td>
</tr>
</table>
</div>
<?php
}
?>
<div style="position: absolute; top: 8px; right: 5px;">
<a href="http://validator.w3.org/check?uri=referer"><img border="0" src="http://www.w3.org/Icons/valid-html40" alt="Valid HTML 4.0!" height="31" width="88"></a>
</div>
</body>
</html>
<?php
}
else {
//-- Download --------------------------------------------------------------------------------------
$fileList = readFileList();
$physicalFileName = $_GET['file'];
$logicalFileName = urldecode($_GET['file']);
// security check: search for the file in the file list
for ($i = 0; $i <= sizeof($fileList); $i++) {
if ($fileList[$i][0] == $logicalFileName) {
header('Content-Type: application/octet-stream');
//header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="'.$logicalFileName.'"');
header('Content-Length: '.filesize($physicalFileName));
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Pragma: no-cache');
header('Expires: 0');
readfile($physicalFileName);
exit;
}
}
// if the file is unknown, forward to the standard view
header('Location: http://'.$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\').'/'.SCRIPTNAME);
exit;
}
?>
Binary file not shown.

After

Width:  |  Height:  |  Size: 822 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1021 B

+23
View File
@@ -0,0 +1,23 @@
# No additional options are allowed
Options None
# Deny all access by default
Order Allow,Deny
# Set lister.php as index page
DirectoryIndex lister.php
# If something is accessed directly, it should be trated as text (not code)
# This is a fallback directive
ForceType text/plain
# Allow access for the directory (the index page, that is)
<Files .>
Allow from all
</Files>
# Allow access for lister.php
<Files lister.php>
ForceType application/x-httpd-php
Allow from all
</Files>
+700
View File
@@ -0,0 +1,700 @@
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
+87
View File
@@ -0,0 +1,87 @@
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltIn
+9
View File
@@ -0,0 +1,9 @@
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhalt
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhalt
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhalt
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhalt
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhalt
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhalt
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhalt
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhalt
InhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhaltInhalt
+21
View File
@@ -0,0 +1,21 @@
ENGLISH
1. Make a directory on your web server and set the permissions to 757
2. Copy "lister.php" and ".htaccess" into the directory
3. If you want to set a password for upload and deletion, write it into a file
named "password.txt" and also copy it into the directory
4. Security check: Open Lister and upload a file. Try to access it directly via
URL on the server (e.g. http://www.myserver.com/lister/uploaded-file.txt).
If an error message appears ("Access Denied"), your installation should
be secure.
DEUTSCH
1. Verzeichnis auf dem Server anlegen und Rechte auf 757 setzen
2. Die Dateien "lister.php" und ".htaccess" in das Verzeichnis kopieren
3. Falls ein Passwort für das Hochladen und Löschen von Dateien gesetzt werden
soll, das Passwort in eine Datei mit Namen "password.txt" schreiben und
diese ebenfalls in das Verzeichnis legen.
4. Sicherheits-Check: Lister auf dem Server öffnen und eine Datei hochladen.
Danach versuchen, die hochgeladene Datei direkt über die URL zu öffnen.
(z.B. http://www.meinserver.com/lister/hochgeladene-datei.txt)
Wenn eine Fehlermeldung angezeigt wird ("Zugriff verweigert"), sollte die
Installation sicher sein.
+542
View File
@@ -0,0 +1,542 @@
<?php
/*
* Lister - a directory listing, upload and download script - version 1.86
* http://www.tilman.de/programme/lister/
* Created: 2006-04-03
* Last Change: 2007-02-22
* Author: Tilman Walther
* This work is licensed under the Creative Commons Attribution-ShareAlike 2.0 Germany License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/2.0/de/
* or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.
*
* The software is made available free of charge, no express or implied warranties are made.
* USE AT YOUR OWN RISK.
*/
//-- Setup ------------------------------------------------------------------------------------------------
/*
* If true, all file names are converted via urlencode when uploading and converted back when using one
* of the download buttons.
* Advantage: No file system problems with special characters in file names
* Disadvantage: If files with special character names are manually copied into the directory, Lister
* can't link them. Thus, if set to 'true' Lister should be the only way used to copy files into the
* directory.
*
* Default: true
*/
define('SAVE_NAMES_URLENCODED', true);
// TODO - NOT YET IMPLEMENTED - Zugriff auf Unterverzeichnisse
define('ACCESS_SUBDIRECTORIES', false);
// TODO - NOT YET IMPLEMENTED - Beschreibungen in Textdatei speichern
define('FILE_DESCRIPTIONS', false);
//-----------------------------------------------------------------------------------------------------------
define('PROGRAM_NAME', 'Lister v1.86');
define('SCRIPTNAME', basename($_SERVER['PHP_SELF']));
/*
* Try to read the password for uploads and deletion from file "password.txt".
* If empty, no password is needed for upload and deletion.
*/
if (file_exists('password.txt')) {
$pwfile = fopen('password.txt', 'r');
define('PASSWORD', rtrim(fgets($pwfile)));
fclose($pwfile);
}
else {
define('PASSWORD', '');
}
if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'de') {
define('LANGUAGE', 'de');
}
else {
define('LANGUAGE', 'en');
}
if (LANGUAGE == 'de') {
define('FILE_LABEL', 'Datei');
define('FILES_LABEL', 'Dateien');
define('SIZE_LABEL', 'Gr&ouml;&szlig;e');
define('SELECTION_LABEL', 'Auswahl');
define('DELETE_LABEL', 'Markierte l&ouml;schen');
define('DOWNLOAD_LABEL', '[download]');
define('PASSWORD_LABEL', 'Passwort');
define('OVERWRITE_LABEL', 'vorhandene Datei &uuml;berschreiben');
define('UPLOAD_LABEL', 'Datei hochladen');
define('BACK_LABEL', 'zur&uuml;ck');
define('DELETION_MESSAGE', ' gel&ouml;scht');
define('PASSWORD_ERROR', 'Fehler: Falsches Passwort');
define('OVERWRITE_ERROR', 'Fehler: Datei bereits vorhanden');
define('NO_FILE_ERROR', 'Fehler: Datei konnte nicht gefunden werden');
define('NO_SELECTION_ERROR', 'Fehler: Keine Datei ausgew&auml;hlt');
define('DELETION_ERROR', 'Fehler beim L&ouml;schen von Datei');
define('FILESIZE_ERROR', 'Fehler: Datei zu gro&szlig;');
define('PARTIAL_ERROR', 'Fehler: Datei wurde unvollst&auml;ndig &uuml;bertragen');
define('NO_UPLOAD_FILE_ERROR', 'Fehler: Keine Datei angegeben');
define('TMP_DIR_ERROR', 'Fehler: Kann tempor&auml;res Verzeichnis nicht finden');
define('WRITE_ERROR', 'Fehler: Kann die Datei nicht speichern');
define('MOVE_ERROR', 'Fehler: Hochgeladene Datei konnte nicht verschoben werden');
define('UNKNOWN_ERROR', 'Ein unbekannter Fehler ist aufgetreten');
}
else {
define('FILE_LABEL', 'File');
define('FILES_LABEL', 'Files');
define('SIZE_LABEL', 'Size');
define('SELECTION_LABEL', 'Selection');
define('DELETE_LABEL', 'Delete selected');
define('DOWNLOAD_LABEL', '[download]');
define('PASSWORD_LABEL', 'Password');
define('OVERWRITE_LABEL', 'overwrite existing file');
define('UPLOAD_LABEL', 'Upload file');
define('BACK_LABEL', 'back');
define('DELETION_MESSAGE', ' deleted');
define('PASSWORD_ERROR', 'Error: Wrong password');
define('OVERWRITE_ERROR', 'Error: File already exists');
define('NO_FILE_ERROR', 'Error: No such file');
define('NO_SELECTION_ERROR', 'Error: No file selected');
define('DELETION_ERROR', 'Error on deleting file');
define('FILESIZE_ERROR', 'Error: File too big');
define('PARTIAL_ERROR', 'Error: File was only partially uploaded');
define('NO_UPLOAD_FILE_ERROR', 'Error: No upload file specified');
define('TMP_DIR_ERROR', 'Error: Missing temp directory');
define('WRITE_ERROR', 'Error: Could not write to disk');
define('MOVE_ERROR', 'Error: Uploaded file could not be moved from temp directory');
define('UNKNOWN_ERROR', 'An unknown error occured');
}
/*
* Returns the size of a file (given in byte) as a String with kB/MB unit
*/
function getSizeAsString($size) {
if ($size < 2) {
return $size." Byte";
}
else if ($size < 1024) {
return $size." Bytes";
}
else if ($size < 1048576) {
return round(($size/1024), 0)." kB";
}
else {
return round(($size/1048576), 1)." MB";
}
}
/*
* Returns true if the filename is reserved, false otherwise
*/
function isReserved($name) {
if ($name == SCRIPTNAME) return true;
if ($name == '.htaccess') return true;
if ($name == 'password.txt') return true;
return false;
}
/*
* Shows a given message within a HTML-Wrapper
*/
function showMessage($message) {
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><?php echo PROGRAM_NAME; ?></title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
</head>
<body style="background-color:#FFFFFF; font-family: 'Trebuchet MS', Georgia, serif;">
<div style="text-align: center; margin: 1em;">
<?php echo $message; ?><br />
<a href="<?php echo SCRIPTNAME; ?>" style="font-size: small; color:#0000CC;"><?php echo BACK_LABEL; ?></a>
</div>
</body>
</html>
<?php
exit;
}
if ($_GET['action'] == 'upload') {
// check for submitted file
if ($_FILES['uploadfile']['error'] != UPLOAD_ERR_OK) {
if (($_FILES['uploadfile']['error'] == UPLOAD_ERR_INI_SIZE) || ($_FILES['uploadfile']['error'] == UPLOAD_ERR_FORM_SIZE)) {
showMessage(FILESIZE_ERROR);
}
else if ($_FILES['uploadfile']['error'] == UPLOAD_ERR_PARTIAL) {
showMessage(PARTIAL_ERROR);
}
else if ($_FILES['uploadfile']['error'] == UPLOAD_ERR_NO_FILE) {
showMessage(NO_UPLOAD_FILE_ERROR);
}
else if ($_FILES['uploadfile']['error'] == UPLOAD_ERR_NO_TMP_DIR) {
showMessage(TMP_DIR_ERROR);
}
else if ($_FILES['uploadfile']['error'] == UPLOAD_ERR_CANT_WRITE) {
showMessage(WRITE_ERROR);
}
showMessage(UNKNOWN_ERROR.': '.$_FILES['uploadfile']['error']);
}
// check password
else if (PASSWORD == '' || $_POST['password'] == PASSWORD) {
// check for existing file
if (SAVE_NAMES_URLENCODED)
$physicalFileName = urlencode($_FILES['uploadfile']['name']);
else
$physicalFileName = $_FILES['uploadfile']['name'];
$already_exists = file_exists($physicalFileName);
// if file exists and overwrite option is off, show error message
// plus security check - reserved files are not allowed to be overwritten
if (($already_exists & ($_POST['overwrite'] != 'on')) || isReserved($physicalFileName)) {
showMessage(OVERWRITE_ERROR);
}
// copy file from temporary location
else {
$filename = $_FILES['uploadfile']['name'];
if (SAVE_NAMES_URLENCODED)
$upload_ok = move_uploaded_file($_FILES['uploadfile']['tmp_name'], urlencode($filename));
else
$upload_ok = move_uploaded_file($_FILES['uploadfile']['tmp_name'], $filename);
// if upload successful, reload page
if ($upload_ok) {
header('Location: http://'.$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\').'/'.SCRIPTNAME);
}
// show error message
else {
showMessage(MOVE_ERROR);
}
}
}
// wrong password: show error message
else {
showMessage(PASSWORD_ERROR);
}
exit;
}
else if ($_GET['action'] == 'delete') {
// check password
if (PASSWORD == '' || $_POST['password'] == PASSWORD) {
if (isset($_REQUEST['del'])) {
$message = '';
foreach ($_REQUEST['del'] as $idx => $filename) {
if (SAVE_NAMES_URLENCODED)
$physicalFileName = urlencode($filename);
else
$physicalFileName = $filename;
// security check - the file has to be in the same directory
$physicalFileName = basename($physicalFileName);
// security check - reserved files can not be deleted
if (!isReserved($physicalFileName)) {
if (unlink($physicalFileName))
$message = $message.$filename.DELETION_MESSAGE."<br />\n";
else
$message = $message.DELETION_ERROR.' <em>'.$filename."</em><br />\n";
}
else {
$message = $message.DELETION_ERROR.' <em>'.$filename."</em><br />\n";
}
}
showMessage($message);
}
else {
showMessage(NO_SELECTION_ERROR);
}
}
// wrong password: show error message
else {
showMessage(PASSWORD_ERROR);
}
exit;
}
else if ($_GET['action'] == 'show') {
if (SAVE_NAMES_URLENCODED)
$physicalFileName = urlencode($_GET['file']);
else
$physicalFileName = $_GET['file'];
// security check - the file has to be in the same directory
$physicalFileName = basename($physicalFileName);
// security check
if (file_exists($physicalFileName) & (!isReserved($physicalFileName))) {
// set MIME type for content delivery from file name extension
$extension = strtolower(substr($physicalFileName, strrpos($physicalFileName, '.')));
// text/plain is the default MIME type
$contentType = 'Content-Type: text/plain';
if (($extension == '.aif') || ($extension == '.aiff')) $contentType = 'Content-Type: audio/x-aiff';
else if (($extension == '.asc') || ($extension == '.txt')) $contentType = 'Content-Type: text/plain';
else if (($extension == '.asf') || ($extension == '.asx')) $contentType = 'Content-Type: video/x-ms-asf';
else if ($extension == '.avi') $contentType = 'Content-Type: video/x-msvideo';
else if ($extension == '.bmp') $contentType = 'Content-Type: image/bmp';
else if ($extension == '.css') $contentType = 'Content-Type: text/css';
else if ($extension == '.doc') $contentType = 'Content-Type: application/msword';
else if ($extension == '.gif') $contentType = 'Content-Type: image/gif';
else if (($extension == '.htm') || ($extension == '.html')) $contentType = 'Content-Type: text/html';
else if ($extension == '.ico') $contentType = 'Content-Type: image/x-icon';
else if (($extension == '.jpeg') || ($extension == '.jpg')) $contentType = 'Content-Type: image/jpeg';
else if ($extension == '.m3u') $contentType = 'Content-Type: audio/x-mpegurl';
else if (($extension == '.mid') || ($extension == '.midi')) $contentType = 'Content-Type: audio/midi';
else if (($extension == '.mp2') || ($extension == '.mp3')) $contentType = 'Content-Type: audio/mpeg';
else if (($extension == '.mpeg') || ($extension == '.mpg')) $contentType = 'Content-Type: video/mpeg';
else if (($extension == '.ogg') || ($extension == '.ogm')) $contentType = 'Content-Type: application/ogg';
else if ($extension == '.pdf') $contentType = 'Content-Type: application/pdf';
else if ($extension == '.png') $contentType = 'Content-Type: image/png';
else if ($extension == '.ppt') $contentType = 'Content-Type: application/vnd.ms-powerpoint';
else if (($extension == '.ps') || ($extension == '.eps')) $contentType = 'Content-Type: application/postscript';
else if (($extension == '.qt') || ($extension == '.mov')) $contentType = 'Content-Type: video/quicktime';
else if (($extension == '.ram') || ($extension == '.rm')) $contentType = 'Content-Type: audio/x-pn-realaudio';
else if ($extension == '.rtf') $contentType = 'Content-Type: text/rtf';
else if ($extension == '.svg') $contentType = 'Content-Type: image/svg+xml';
else if ($extension == '.swf') $contentType = 'Content-Type: application/x-shockwave-flash';
else if ($extension == '.tar') $contentType = 'Content-Type: application/x-tar';
else if (($extension == '.tif') || ($extension == '.tiff')) $contentType = 'Content-Type: image/tiff';
else if ($extension == '.vrml') $contentType = 'Content-Type: model/vrml';
else if ($extension == '.wav') $contentType = 'Content-Type: audio/x-wav';
else if ($extension == '.wma') $contentType = 'Content-Type: audio/x-ms-wma';
else if ($extension == '.wmv') $contentType = 'Content-Type: audio/x-ms-wmv';
else if ($extension == '.wvx') $contentType = 'Content-Type: audio/x-ms-wvx';
else if ($extension == '.xhtml') $contentType = 'Content-Type: application/xhtml+xml';
else if ($extension == '.xls') $contentType = 'Content-Type: application/x-msexcel';
else if ($extension == '.xml') $contentType = 'Content-Type: application/xml';
else if ($extension == '.zip') $contentType = 'Content-Type: application/zip';
// send file to the browser
header($contentType);
header('Content-Length: '.(string)filesize($physicalFileName));
readfile($physicalFileName);
}
else {
showMessage(NO_FILE_ERROR);
}
exit;
}
else if ($_GET['action'] == 'download') {
if (SAVE_NAMES_URLENCODED)
$physicalFileName = urlencode($_GET['file']);
else
$physicalFileName = $_GET['file'];
// security check - the file has to be in the same directory
$physicalFileName = basename($physicalFileName);
// security check
if (file_exists($physicalFileName) & (!isReserved($physicalFileName))) {
header('Content-Type: application/octet-stream');
//header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="'.$_GET['file'].'"');
header('Content-Length: '.(string)filesize($physicalFileName));
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Pragma: no-cache');
header('Expires: 0');
readfile($physicalFileName);
}
else {
showMessage(NO_FILE_ERROR);
}
exit;
}
else if ($_GET['action'] == 'info') {
// TODO HIER GEHT'S WEITER - Umgebungsvariablen anzeigen
showMessage();
}
else if ($_GET['action'] == 'icon') {
header('Content-type: image/gif');
echo pack('H*',
'47494638396110001000F7000033333310346F0C3D7E153974143B7A153F7B0D417620507C4242454343474B4B4E4C4C5151'.
'51515050565555555656575B5B5B55694D6161616666666A6A6A6B6B6B617566687D656D6D736F6F7471717174747477777C'.
'7878787A7A7A7B7B7C7C7C7C7F7F7F57BD31778C7F10498317508A13548C13558F2D51833050832A658324659D2977AB506B'.
'9675758476768A39879F3389BB318CBD7F93B23D90C33D94C6349DCA42A1D045ADDA50BDE85AC8F380808081818182828286'.
'868684848E88888888888D8A8A8F8C8C8C8E8E8E80809392929298989899999A9C9C9C9E9E9E9F9F9F8799B79898B7A3A3A3'.
'A4A4A4A5A5A5A7A7A7AEAEAEB5B5B5B9B9B9BABABABFBFBF9FAEC5BEC8D8C0C0C0C3C3C3C4C4C4C7C7C7C9C9C9CACACACECE'.
'CECCCCDED0D0D0D1D1D1D3D3D3D8D8D8DADADADBDBDBDDDDDDDCDDDEDEDEDEDFDFDFCFD6E2E0E0E0E1E1E1E2E2E2E4E4E4E5'.
'E5E5E6E6E6E9E9E9EAEAEAEAEAEEECECECEFEFEFF0F0F0F2F2F2F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFCFCFC'.
'FDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'.
'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'.
'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'.
'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'.
'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'.
'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'.
'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'.
'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C00000000100010000008E2000709C4326000'.
'168108130E0C404040812B6A14225C1360069A16274C3039237110453967D4A4B041624DC739730496992123C68C101D059E'.
'384102C78D1233636681C122878E152A602ACC72A70D99033568A848034849C4416ED854E95061CB1E0328E4F4F19225CC9F'.
'4154C6A4E1D2464D9E4078E0F0A103464890384B924C211B270C19315A9070B830C2050828528EF47842450C11AA3C246010'.
'F180C21D2040BA3809D1E30382222E305888C0C0C3203B56766C1802250380262F1438D010C58C403F75BE1899F023410306'.
'40ACBCD123E8751D40C0272C80E003F86E4100003B');
}
else {
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title><?php echo PROGRAM_NAME; ?></title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="expires" content="0" />
<style type="text/css">
<!--
body { background-color:#FFFFFF; font-family: "Trebuchet MS", Georgia, serif; }
a { color:#0000CC; }
table { text-align: left; border-collapse: collapse; border: 1px solid black; }
th { background-color:#CCCCCC; padding: 5px; border: 1px solid black; font-size: 80%; }
td { background-color:#FFFFFF; padding: 5px; border: 1px solid black; }
.download { font-size: 60%; color:#0000CC; text-decoration: none; font-weight: bold; }
.small { font-size: small; }
.menu { font-size: 80%; }
-->
</style>
</head>
<body>
<div style="margin: 2em;">
<form action="<?php echo SCRIPTNAME; ?>?action=delete" method="post">
<table style="margin-left:auto; margin-right:auto;">
<tr>
<th><a href="<?php echo $_SERVER['PHP_SELF']; ?>?action=<?php if (($_GET['action'] == 'ascByName') || ($_GET['action'] == '')) echo "descByName"; else echo 'ascByName'; ?>"><?php echo FILE_LABEL; ?></a></th>
<th><a href="<?php echo $_SERVER['PHP_SELF']; ?>?action=<?php if ($_GET['action'] == 'ascBySize') echo "descBySize"; else echo 'ascBySize'; ?>"><?php echo SIZE_LABEL; ?></a></th>
<th><?php echo SELECTION_LABEL; ?></th>
</tr>
<?php
// read directory
$filenames = scandir('.'); // TODO optional PHP-4-kompatibel mit glob() oder wie im Handbuch unter scandir() vorgeschlagen
$filelist = array();
if (SAVE_NAMES_URLENCODED) {
foreach ($filenames as $filename) {
if (!isReserved($filename)) array_push($filelist, array(urldecode($filename), filesize($filename)));
}
}
else {
foreach ($filenames as $filename) {
if (!isReserved($filename)) array_push($filelist, array($filename, filesize($filename)));
}
}
// sort file list
if ($_GET['action'] == 'descBySize') {
foreach($filelist as $v) $s[] = $v[1];
array_multisort($s, SORT_DESC, $filelist);
}
else if ($_GET['action'] == 'ascBySize') {
foreach($filelist as $v) $s[] = $v[1];
array_multisort($s, SORT_ASC, $filelist);
}
else if ($_GET['action'] == 'descByName') {
array_multisort($filelist, SORT_DESC);
}
else {
array_multisort($filelist, SORT_ASC);
}
// TODO if ACCESS_DIRECTORIES:
// show "cd .."
// show directories
// show file list
$filecount = 0;
$totalFilesize = 0;
foreach ($filelist as $file) {
if (!is_dir($file[0])) {
$filecount++;
$totalFilesize += $file[1];
?>
<tr>
<td><a href="<?php echo SCRIPTNAME; ?>?action=show&amp;file=<?php echo urlencode($file[0]); ?>"><?php echo htmlentities($file[0]); ?></a>&nbsp;<a class="download" href="<?php echo SCRIPTNAME; ?>?action=download&amp;file=<?php echo urlencode($file[0]); ?>"><img style="border: none;" src="<?php echo SCRIPTNAME; ?>?action=icon" alt="<?php echo DOWNLOAD_LABEL; ?>" /></a></td>
<td style="text-align: right;"><?php echo getSizeAsString($file[1]); ?></td>
<td style="text-align: center;"><input type="checkbox" name="del[]" value="<?php echo htmlentities($file[0]); ?>" /></td>
</tr>
<?php
}
}
if ($filecount > 0) {
?>
<tr>
<td class="menu" style="text-align: right;" colspan="3">
<?php
if (PASSWORD != '') {
?>
<?PHP echo PASSWORD_LABEL; ?>&nbsp;<input name="password" type="password" size="10" class="menu" />
<?php
}
?>
<input type="submit" value="<?php echo DELETE_LABEL; ?>" class="menu" />
</td>
</tr>
<?php
}
?>
<tr>
<td class="small" style="text-align: center;" colspan="3">
<?php
echo $filecount;
if ($filecount == 1)
echo ' '.FILE_LABEL.', ';
else
echo ' '.FILES_LABEL.', ';
echo getSizeAsString($totalFilesize)."<br />\n";
echo '<a style="font-size: 80%" href="http://www.tilman.de/programme/lister/';
if (LANGUAGE == 'en') echo 'index.en.php';
echo '">'.PROGRAM_NAME.'</a>';
?>
</td>
</tr>
</table>
</form>
</div>
<div style="margin: 2em;">
<form action="<?php echo SCRIPTNAME; ?>?action=upload" method="post" enctype="multipart/form-data">
<table style="margin-left:auto; margin-right:auto;">
<tr>
<td class="menu" style="border: none;"><?PHP echo FILE_LABEL; ?></td>
<td class="menu" style="border: none;"><input name="uploadfile" type="file" class="menu" /></td>
</tr>
<tr>
<td class="menu" style="border: none;"></td>
<td class="menu" style="border: none;"><input name="overwrite" type="checkbox" /><span class="small"><?PHP echo OVERWRITE_LABEL; ?></span></td>
</tr>
<?php
if (PASSWORD != '') {
?>
<tr>
<td class="menu" style="border: none;"><?PHP echo PASSWORD_LABEL; ?></td>
<td style="border: none;"><input name="password" type="password" size="10" class="menu" /></td>
</tr>
<?php
}
?>
<tr>
<td class="menu" style="border: none; text-align: center;" colspan="2"><input type="submit" value="<?PHP echo UPLOAD_LABEL; ?>" class="menu" /></td>
</tr>
</table>
</form>
</div>
</body>
</html>
<?php
}
?>