├── .gitignore ├── icons ├── C00.png ├── C01.png ├── C02.png ├── C03.png ├── C04.png ├── C05.png ├── C06.png ├── C07.png ├── C08.png ├── C09.png ├── C10.png ├── C11.png ├── C12.png ├── C13.png ├── C14.png ├── C15.png ├── C16.png ├── C17.png ├── C18.png ├── C19.png ├── C20.png ├── C21.png ├── C22.png ├── C23.png ├── C24.png ├── C25.png ├── C26.png ├── C27.png ├── C28.png ├── C29.png ├── C30.png ├── C31.png ├── C32.png ├── C33.png ├── C34.png ├── C35.png ├── C36.png ├── C37.png ├── C38.png ├── C39.png ├── C40.png ├── C41.png ├── C42.png ├── C43.png ├── C44.png ├── C45.png ├── C46.png ├── C47.png ├── C48.png ├── C49.png ├── C50.png ├── C51.png ├── C52.png ├── C53.png ├── C54.png ├── C55.png ├── C56.png ├── C57.png ├── C58.png ├── C59.png ├── C60.png ├── C61.png ├── C62.png ├── C63.png ├── C64.png ├── C65.png ├── C66.png ├── C67.png └── C68.png ├── composer.json ├── LICENSE.md ├── css ├── main.css └── bootstrap.min.css ├── README.md ├── keepassphpui ├── main.php ├── lang │ ├── en.php │ ├── de.php │ └── fr.php └── kphpui.php ├── ajaxopen.php ├── js ├── main.js └── bootstrap.min.js ├── index.php └── bootstrap-config.json /.gitignore: -------------------------------------------------------------------------------- 1 | /nbproject 2 | /keepassphp 3 | sftp-config.json -------------------------------------------------------------------------------- /icons/C00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C00.png -------------------------------------------------------------------------------- /icons/C01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C01.png -------------------------------------------------------------------------------- /icons/C02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C02.png -------------------------------------------------------------------------------- /icons/C03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C03.png -------------------------------------------------------------------------------- /icons/C04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C04.png -------------------------------------------------------------------------------- /icons/C05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C05.png -------------------------------------------------------------------------------- /icons/C06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C06.png -------------------------------------------------------------------------------- /icons/C07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C07.png -------------------------------------------------------------------------------- /icons/C08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C08.png -------------------------------------------------------------------------------- /icons/C09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C09.png -------------------------------------------------------------------------------- /icons/C10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C10.png -------------------------------------------------------------------------------- /icons/C11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C11.png -------------------------------------------------------------------------------- /icons/C12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C12.png -------------------------------------------------------------------------------- /icons/C13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C13.png -------------------------------------------------------------------------------- /icons/C14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C14.png -------------------------------------------------------------------------------- /icons/C15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C15.png -------------------------------------------------------------------------------- /icons/C16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C16.png -------------------------------------------------------------------------------- /icons/C17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C17.png -------------------------------------------------------------------------------- /icons/C18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C18.png -------------------------------------------------------------------------------- /icons/C19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C19.png -------------------------------------------------------------------------------- /icons/C20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C20.png -------------------------------------------------------------------------------- /icons/C21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C21.png -------------------------------------------------------------------------------- /icons/C22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C22.png -------------------------------------------------------------------------------- /icons/C23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C23.png -------------------------------------------------------------------------------- /icons/C24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C24.png -------------------------------------------------------------------------------- /icons/C25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C25.png -------------------------------------------------------------------------------- /icons/C26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C26.png -------------------------------------------------------------------------------- /icons/C27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C27.png -------------------------------------------------------------------------------- /icons/C28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C28.png -------------------------------------------------------------------------------- /icons/C29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C29.png -------------------------------------------------------------------------------- /icons/C30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C30.png -------------------------------------------------------------------------------- /icons/C31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C31.png -------------------------------------------------------------------------------- /icons/C32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C32.png -------------------------------------------------------------------------------- /icons/C33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C33.png -------------------------------------------------------------------------------- /icons/C34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C34.png -------------------------------------------------------------------------------- /icons/C35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C35.png -------------------------------------------------------------------------------- /icons/C36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C36.png -------------------------------------------------------------------------------- /icons/C37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C37.png -------------------------------------------------------------------------------- /icons/C38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C38.png -------------------------------------------------------------------------------- /icons/C39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C39.png -------------------------------------------------------------------------------- /icons/C40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C40.png -------------------------------------------------------------------------------- /icons/C41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C41.png -------------------------------------------------------------------------------- /icons/C42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C42.png -------------------------------------------------------------------------------- /icons/C43.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C43.png -------------------------------------------------------------------------------- /icons/C44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C44.png -------------------------------------------------------------------------------- /icons/C45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C45.png -------------------------------------------------------------------------------- /icons/C46.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C46.png -------------------------------------------------------------------------------- /icons/C47.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C47.png -------------------------------------------------------------------------------- /icons/C48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C48.png -------------------------------------------------------------------------------- /icons/C49.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C49.png -------------------------------------------------------------------------------- /icons/C50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C50.png -------------------------------------------------------------------------------- /icons/C51.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C51.png -------------------------------------------------------------------------------- /icons/C52.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C52.png -------------------------------------------------------------------------------- /icons/C53.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C53.png -------------------------------------------------------------------------------- /icons/C54.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C54.png -------------------------------------------------------------------------------- /icons/C55.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C55.png -------------------------------------------------------------------------------- /icons/C56.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C56.png -------------------------------------------------------------------------------- /icons/C57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C57.png -------------------------------------------------------------------------------- /icons/C58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C58.png -------------------------------------------------------------------------------- /icons/C59.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C59.png -------------------------------------------------------------------------------- /icons/C60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C60.png -------------------------------------------------------------------------------- /icons/C61.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C61.png -------------------------------------------------------------------------------- /icons/C62.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C62.png -------------------------------------------------------------------------------- /icons/C63.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C63.png -------------------------------------------------------------------------------- /icons/C64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C64.png -------------------------------------------------------------------------------- /icons/C65.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C65.png -------------------------------------------------------------------------------- /icons/C66.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C66.png -------------------------------------------------------------------------------- /icons/C67.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C67.png -------------------------------------------------------------------------------- /icons/C68.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shkdee/KeePassPHP-UI/HEAD/icons/C68.png -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "keepassphp/keepassphp-ui", 3 | "description": "User interface for KeePassPHP", 4 | "keywords": ["keepass","password manager", "keepassphp"], 5 | "homepage": "https://github.com/shkdee/KeePassPHP-UI", 6 | "license": "MIT", 7 | "authors": [ 8 | { 9 | "name": "Louis Traynard", 10 | "email": "louis.traynard@m4x.org", 11 | "homepage": "https://github.com/shkdee" 12 | } 13 | ], 14 | "require": { 15 | "php": ">=5.3.0", 16 | "keepassphp/keepassphp": "@dev" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 2 | 3 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 4 | 5 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /css/main.css: -------------------------------------------------------------------------------- 1 | body 2 | { 3 | margin-top: 1em; 4 | } 5 | 6 | input.verysmall 7 | { 8 | font-size:3px !important; 9 | width:35px !important; 10 | } 11 | 12 | .nav-tabs > li > a.close 13 | { 14 | line-height: 21px !important; 15 | } 16 | 17 | .tab-content 18 | { 19 | margin-top: 1.5em; 20 | } 21 | 22 | .row-between-tab 23 | { 24 | margin-top: 1em; 25 | margin-bottom: -1em; 26 | } 27 | 28 | .loading-button { 29 | display: none; 30 | } 31 | 32 | .btn-primary.loading-button span.spinner 33 | { 34 | display: inline-block; 35 | width: 16px; 36 | height: 16px; 37 | background-repeat: no-repeat; 38 | background-image: url(data:image/gif;base64,R0lGODlhEAAQAPIAAAV2j////z+Wqb3a4f///53J0364xW6vviH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==); 39 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | KeePassPHP-UI 2 | ============= 3 | 4 | A nice user interface for [KeePassPHP](//github.com/shkdee/KeePassPHP), built with jQuery (3.x) and Bootstrap (3.3.7), available in several languages (French, English and partly German so far). KeePassPHP can store and read KeePass password databases, so that you can access your passwords from any device, simply through a web browser. It never stores your text password - in agreement with the KeePass philosophy - so your password database is always kept encrypted, and only you can access it. 5 | 6 | See [KeePassPHP](//github.com/shkdee/KeePassPHP) project for more information. 7 | 8 | 9 | How to use it? 10 | ------------------- 11 | 12 | The `keepassphp` directory from the [KeePassPHP](//github.com/shkdee/KeePassPHP) project must be added next to the others. If you want to put it somewhere else, just change the value of `KEEPASSPHP_LOCATION` in `keepassphpui/main.php`. And voilà! 13 | 14 | You will also find some more configuration options in `keepassphpui/main.php` that you can change if you have specific needs: 15 | * `KEEPASSPHP_DEBUG`: whether you want to activate KeePassPHP debug mode. It just temporarily logs execution data, useful when developing. 16 | * `MAX_FILE_SIZE`: the maximum size for kdbx files uploaded to KeePassPHP. The default value is roughly 1 Mb; you may want to change it if you expect heavy databases. 17 | 18 | 19 | Web server configuration 20 | ------------------- 21 | 22 | The directories `icons`, `css` and `js` contain only web resources, so you may want to configure your web server to cache those files and serve them statically. Beside these directories, the web server should only be able to serve `index.php` and `ajaxopen.php`; you can deny the access to other files through the web server. 23 | 24 | 25 | Translation 26 | ------------------- 27 | 28 | KeePassPHP-UI can be easily translated: create a new file in `keepassphpui/lang/` containing an array of translated strings (see `keepassphpui/lang/fr.php` and `keepassphpui/lang/en.php` for, respectively, French and English versions). Then, include this file from `keepassphpui/main.php` and add a line to have the UI register the language. 29 | -------------------------------------------------------------------------------- /keepassphpui/main.php: -------------------------------------------------------------------------------- 1 | = 1M in case our method fails. 12 | // That's already a quite big size for a password database. 13 | $post_max_size = parse_ini_size(ini_get('post_max_size'), 8388608); 14 | $upload_max_filesize = parse_ini_size(ini_get('upload_max_filesize'), 2097152); 15 | // If $post_max_size is 0, it should actually be ignored. 16 | define("MAX_FILE_SIZE", max(1048576, $post_max_size === 0 17 | ? $upload_max_filesize : min($post_max_size, $upload_max_filesize))); 18 | 19 | /** 20 | * Parses the value of a configuration directive containing a size. 21 | * Returns the result as an integer, defaulting to $default if the 22 | * argument $ini_size is empty. 23 | */ 24 | function parse_ini_size($ini_size, $default) 25 | { 26 | if(empty($ini_size) || $ini_size === false) 27 | return $default; 28 | switch(substr($ini_size, -1)) 29 | { 30 | case 'M': case 'm': return (int)$ini_size * 1048576; 31 | case 'K': case 'k': return (int)$ini_size * 1024; 32 | case 'G': case 'g': return (int)$ini_size * 1073741824; 33 | case 'B': case 'b': return parse_ini_size(substr($ini_size, 0, -1), 34 | $default); 35 | default: return intval($ini_size); 36 | } 37 | } 38 | 39 | 40 | // We'll need this 41 | require_once "kphpui.php"; 42 | 43 | 44 | /************************* 45 | * Languages declaration * 46 | *************************/ 47 | 48 | // register german 49 | require_once "lang/de.php"; 50 | KPHPUI::registerLang("de", $lang_de); 51 | 52 | // register english 53 | require_once "lang/en.php"; 54 | KPHPUI::registerLang("en", $lang_en); 55 | 56 | // register french 57 | require_once "lang/fr.php"; 58 | KPHPUI::registerLang("fr", $lang_fr); 59 | 60 | 61 | /********************** 62 | * language selection * 63 | **********************/ 64 | 65 | // select the language, depending on the query string or HTTP header 66 | if(!isset($_GET["l"]) || !KPHPUI::setLang($_GET["l"])) 67 | KPHPUI::setLang(KPHPUI::getPreferredLanguage($_SERVER["HTTP_ACCEPT_LANGUAGE"])); 68 | 69 | ?> 70 | -------------------------------------------------------------------------------- /keepassphpui/lang/en.php: -------------------------------------------------------------------------------- 1 | KeePass in PHP. It can store and read KeePass password databases, so that you can access your passwords on any device, just through a Web browser.", 31 | /* LANG_MODAL_ERROR_TITLE */ "Err, this is embarassing.", 32 | /* LANG_MODAL_ERROR_TEXT */ "An internal error occurred. KeePassPHP generated the following information:", 33 | /* LANG_MODAL_CLOSE */ "Close", 34 | /* LANG_MODAL_SUCCESS_TITLE */ "Password database stored!", 35 | /* LANG_MODAL_SUCCESS_TEXT */ "The password database has been successfully added. You can now read it with the ID and password(s) you gave to store it.", 36 | /* LANG_FORM_ERROR_EMPTY */ "That's empty!", 37 | /* LANG_FORM_ERROR_NOOTHERKEY */ "If the password is not used as a database key, you need to give one.", 38 | /* LANG_FORM_ERROR_NOSUCHID */ "The given ID does not exist.", 39 | /* LANG_FORM_ERROR_PADPWD */ "The given password seems incorrect.", 40 | /* LANG_FORM_ERROR_FILETOOBIG */ "The file is too big.", 41 | /* LANG_FORM_ERROR_FILEERROR */ "An error occurred when uploading the file.", 42 | /* LANG_FORM_ERROR_IDEXISTS */ "This ID already exists, and the given password is not this ID's password.", 43 | /* LANG_SEE_PWD_DOES_NOT_EXIST */ "Error", 44 | /* LANG_SEE_ENTRY_TITLE */ "Title", 45 | /* LANG_SEE_ENTRY_URL */ "URL", 46 | /* LANG_SEE_ENTRY_USERNAME */ "Username", 47 | /* LANG_SEE_ENTRY_PASSWORD */ "Password", 48 | /* LANG_SEE_ENTRY_LOAD */ "Show", 49 | /* LANG_TAB_CLOSE_TOOLTIP */ "Close the opened database", 50 | /* LANG_MODAL_TIMEOUT_TITLE */ "It's taking a long time...", 51 | /* LANG_MODAL_TIMEOUT_TEXT */ "The server is taking a long time to answer. It may mean that the password database is hard to decrypt, in which case everything is normal and you should just wait a bit more. But it may also be due to a poor connection between you and the server. You can either try again and wait longer, or cancel.", 52 | /* LANG_MODAL_TIMEOUT_TRYAGAIN */ "Try again", 53 | /* LANG_MODAL_TIMEOUT_CANCEL */ "Cancel", 54 | /* LANG_UNSECURE_TITLE */ "Untrusted connection!", 55 | /* LANG_UNSECURE_TEXT */ "It seems that you are not accessing this page through a trusted connection. If you are not absolutely confident in the confidentiality of your connection, do not use KeePassPHP now! Instead, try to access it through HTTPS.", 56 | /* LANG_INTERNAL_ERROR */ "An internal error occurred." 57 | ); 58 | ?> 59 | -------------------------------------------------------------------------------- /keepassphpui/lang/de.php: -------------------------------------------------------------------------------- 1 | KeePass in PHP. Es kann KeePass Passwort-Datenbanken lesen und speichern, um diese auf jedem Gerät mit Webbrowser zugänglich zu machen.", 31 | /* LANG_MODAL_ERROR_TITLE */ "Fehler...", 32 | /* LANG_MODAL_ERROR_TEXT */ "Ein interner Fehler ist aufgetreten. KeePassPHP generiert dazu Folgendes:", 33 | /* LANG_MODAL_CLOSE */ "Schließen", 34 | /* LANG_MODAL_SUCCESS_TITLE */ "Passwort-Datenbank gespeichert!", 35 | /* LANG_MODAL_SUCCESS_TEXT */ "Die Passwort-Datenbank wurde erfolgreich hinzugefügt. Sie kann jetzt mittels ID und Passwort ausgelesen werden.", 36 | /* LANG_FORM_ERROR_EMPTY */ "Leerer Eintrag!", 37 | /* LANG_FORM_ERROR_NOOTHERKEY */ "Wenn das Passwort nicht als Datenbank-Schlüssel genutzt wird, muss einer vergeben werden.", 38 | /* LANG_FORM_ERROR_NOSUCHID */ "Diese ID existiert nicht", 39 | /* LANG_FORM_ERROR_PADPWD */ "Falsches Passwort.", 40 | /* LANG_FORM_ERROR_FILETOOBIG */ "Die Datei ist zu groß.", 41 | /* LANG_FORM_ERROR_FILEERROR */ "Beim Hochladen trat ein Fehler auf auf.", 42 | /* LANG_FORM_ERROR_IDEXISTS */ "Diese ID existiert bereits, und das eingegebene Passwort passt nicht dazu.", 43 | /* LANG_SEE_PWD_DOES_NOT_EXIST */ "Fehler", 44 | /* LANG_SEE_ENTRY_TITLE */ "Titel", 45 | /* LANG_SEE_ENTRY_URL */ "URL", 46 | /* LANG_SEE_ENTRY_USERNAME */ "Nutzername", 47 | /* LANG_SEE_ENTRY_PASSWORD */ "Passwort", 48 | /* LANG_SEE_ENTRY_LOAD */ "Anzeigen", 49 | /* LANG_TAB_CLOSE_TOOLTIP */ "Schließe geöffnete Datenbank", 50 | /* LANG_MODAL_TIMEOUT_TITLE */ "It's taking a long time...", 51 | /* LANG_MODAL_TIMEOUT_TEXT */ "The server is taking a long time to answer. It may mean that the password database is hard to decrypt, in which case everything is normal and you should just wait a bit more. But it may also be due to a poor connection between you and the server. You can either try again and wait longer, or cancel.", 52 | /* LANG_MODAL_TIMEOUT_TRYAGAIN */ "Versuche erneut", 53 | /* LANG_MODAL_TIMEOUT_CANCEL */ "Cancel", 54 | /* LANG_UNSECURE_TITLE */ "Untrusted connection!", 55 | /* LANG_UNSECURE_TEXT */ "It seems that you are not accessing this page through a trusted connection. If you are not absolutely confident in the confidentiality of your connection, do not use KeePassPHP now! Instead, try to access it through HTTPS.", 56 | /* LANG_INTERNAL_ERROR */ "An internal error occurred." 57 | ); 58 | ?> 59 | -------------------------------------------------------------------------------- /keepassphpui/lang/fr.php: -------------------------------------------------------------------------------- 1 | KeePass en PHP. Il peut stocker et lire votre base de données de mots de passe de KeePass, pour vous permettre d'y accéder depuis n'importe quel appareil relié à Internet.", 31 | /* LANG_MODAL_ERROR_TITLE */ "Hm, c'est embarassant...", 32 | /* LANG_MODAL_ERROR_TEXT */ "Une erreur inattendue s'est produite. KeePassPHP a généré les informations suivantes :", 33 | /* LANG_MODAL_CLOSE */ "Fermer", 34 | /* LANG_MODAL_SUCCESS_TITLE */ "Base de donnée ajoutée !", 35 | /* LANG_MODAL_SUCCESS_TEXT */ "La base de donnée a été ajoutée avec succès. Vous pouvez maintenant y accéder avec l'ID et le(s) mot(s) de passe que vous avez renseignés pour l'enregistrer.", 36 | /* LANG_FORM_ERROR_EMPTY */ "C'est vide !", 37 | /* LANG_FORM_ERROR_NOOTHERKEY */ "Si le mot de passe n'est pas utilisé comme clé de la base de données, il en faut en donner une.", 38 | /* LANG_FORM_ERROR_NOSUCHID */ "L'ID utilisé n'existe pas.", 39 | /* LANG_FORM_ERROR_PADPWD */ "Le mot de passe utilisé ne semble pas bon.", 40 | /* LANG_FORM_ERROR_FILETOOBIG */ "Le fichier est trop gros.", 41 | /* LANG_FORM_ERROR_FILEERROR */ "Une erreur est survenue lors du téléchargement du fichier.", 42 | /* LANG_FORM_ERROR_IDEXISTS */ "Cet ID existe déjà, et le mot de passe utilisé ne correspond pas.", 43 | /* LANG_SEE_PWD_DOES_NOT_EXIST */ "Erreur", 44 | /* LANG_SEE_ENTRY_TITLE */ "Titre", 45 | /* LANG_SEE_ENTRY_URL */ "URL", 46 | /* LANG_SEE_ENTRY_USERNAME */ "Nom d'utilisateur", 47 | /* LANG_SEE_ENTRY_PASSWORD */ "Mot de passe", 48 | /* LANG_SEE_ENTRY_LOAD */ "Voir", 49 | /* LANG_TAB_CLOSE_TOOLTIP */ "Fermer la base de données ouverte", 50 | /* LANG_MODAL_TIMEOUT_TITLE */ "C'est long...", 51 | /* LANG_MODAL_TIMEOUT_TEXT */ "Le serveur semble mettre du temps à répondre. Cela peut arriver si la base de données de mots de passe est dure à déchiffrer, dans quel cas c'est tout à fait normal et vous devriez juste attendre encore. Mais cela peut aussi signifier que la connexion entre vous et le serveur fonctionne mal. Vous pouvez ré-essayer en attendant plus longtemps, ou annuler.", 52 | /* LANG_MODAL_TIMEOUT_TRYAGAIN */ "Ré-essayer", 53 | /* LANG_MODAL_TIMEOUT_CANCEL */ "Annuler", 54 | /* LANG_UNSECURE_TITLE */ "Connexion non sécurisée !", 55 | /* LANG_UNSECURE_TEXT */ "Il semble que vous n'êtes pas en train d'accéder à cette page par une connexion sécurisée. Si vous n'êtes pas absolument sûrs de la confidentialité de votre connexion, n'utilisez pas KeePassPHP maintenant ! Essayez plutôt d'y accéder par HTTPS.", 56 | /* LANG_INTERNAL_ERROR */ "Une erreur interne est survenue." 57 | ); 58 | ?> 59 | -------------------------------------------------------------------------------- /ajaxopen.php: -------------------------------------------------------------------------------- 1 | status = self::FAIL; 36 | $this->result = null; 37 | $this->debug = null; 38 | } 39 | 40 | /** 41 | * Sets the 'status' and 'result' fields of the answer. 42 | */ 43 | public function set($status, $result = "") 44 | { 45 | $this->status = $status; 46 | $this->result = $result; 47 | } 48 | 49 | /** 50 | * Sets the 'debug' field of the answer. 51 | */ 52 | public function setDebug($debug) 53 | { 54 | $this->debug = $debug; 55 | } 56 | 57 | /** 58 | * Sends the answer. You should not output something anymore after 59 | * calling this method. 60 | */ 61 | public function send() 62 | { 63 | header('Content-Type: application/json; charset=utf-8'); 64 | $out = array("status" => $this->status, "result" => $this->result); 65 | if(!empty($this->debug)) 66 | $out["debug"] = $this->debug; 67 | echo json_encode($out); 68 | } 69 | } 70 | 71 | function visitDatabase(\KeePassPHP\Database $db) 72 | { 73 | $s = ''; 78 | 79 | $groups = $db->getGroups(); 80 | if($groups != null) 81 | { 82 | foreach($groups as &$g) 83 | $s .= visitGroup($db, $g); 84 | } 85 | 86 | return $s . '
' 74 | . KPHPUI::l(KPHPUI::LANG_SEE_ENTRY_TITLE) . '' 75 | . KPHPUI::l(KPHPUI::LANG_SEE_ENTRY_URL) . '' 76 | . KPHPUI::l(KPHPUI::LANG_SEE_ENTRY_USERNAME) . '' 77 | . KPHPUI::l(KPHPUI::LANG_SEE_ENTRY_PASSWORD) . '
'; 87 | } 88 | 89 | function visitGroup(\KeePassPHP\Database $db, \KeePassPHP\Group $group) 90 | { 91 | $s = ""; 92 | if($group->groups != null) 93 | { 94 | foreach($group->groups as &$g) 95 | $s .= visitGroup($db, $g); 96 | } 97 | if($group->entries != null) 98 | { 99 | foreach($group->entries as &$e) 100 | $s .= visitEntry($db, $e); 101 | } 102 | return $s; 103 | } 104 | 105 | function visitEntry(\KeePassPHP\Database $db, \KeePassPHP\Entry $entry) 106 | { 107 | $icon = null; 108 | if(!empty($entry->customIcon)) 109 | $icon = $db->getCustomIcon($entry->customIcon); 110 | if(empty($icon) && !empty($entry->icon)) 111 | $icon = KPHPUI::iconPath($entry->icon); 112 | 113 | $uuid = bin2hex(base64_decode($entry->uuid)); 114 | 115 | $url = $entry->getStringField(\KeePassPHP\Database::KEY_URL); 116 | $protoSep = strpos($url, "://"); 117 | $proto = $protoSep === false ? null : substr($url, 0, $protoSep); 118 | $isHttp = $proto == "http" || $proto == "https"; 119 | $displayed = $isHttp ? substr($url, $protoSep + 3) : $url; 120 | 121 | return '' . ($icon == null ? '' : '') 122 | . '' . KPHPUI::htmlify($entry->getStringField(\KeePassPHP\Database::KEY_TITLE)) . '' 123 | . '' . ($isHttp ? '' 124 | . KPHPUI::htmlify(strlen($displayed) > 20 ? substr($displayed, 0, 17) . '...' : $displayed) 125 | . ($isHttp ? '' : '') . '' 126 | . '' 127 | . '' 128 | . '' 129 | . '' 130 | . ''; 131 | } 132 | 133 | $answer = new AjaxAnswer(); 134 | 135 | $dbid = KPHPUI::getPost("dbid"); 136 | $mainPwd = KPHPUI::getPost("main_pwd"); 137 | $usePwdInKey = KPHPUI::getPost("use_pwd_in_key") == "true"; 138 | $otherPwd = KPHPUI::getPost("open_other_pwd"); 139 | 140 | if(empty($dbid)) 141 | $answer->set(AjaxAnswer::SOMETHING_EMPTY, "dbid"); 142 | elseif(empty($mainPwd)) 143 | $answer->set(AjaxAnswer::SOMETHING_EMPTY, "main_pwd"); 144 | elseif(!$usePwdInKey && empty($otherPwd)) 145 | $answer->set(AjaxAnswer::SOMETHING_EMPTY, "open_other_pwd"); 146 | else 147 | { 148 | require_once KEEPASSPHP_LOCATION; 149 | if(KPHPUI::isKeePassPHPVersionSupported()) 150 | { 151 | KeePassPHP::init(null, KEEPASSPHP_DEBUG); 152 | if(KeePassPHP::existsKphpDB($dbid)) 153 | { 154 | $uuid = KPHPUI::getPost("uuid"); 155 | $getPasswords = !empty($uuid); 156 | $db = KeePassPHP::getDatabase($dbid, 157 | $usePwdInKey ? KeePassPHP::extractHalfPassword($mainPwd) : $mainPwd, 158 | $usePwdInKey ? $mainPwd : $otherPwd, 159 | $getPasswords); 160 | if($db != null) 161 | { 162 | if($getPasswords) 163 | { 164 | $pwd = $db->getPassword(base64_encode(hex2bin($uuid))); 165 | if($pwd != null) 166 | $answer->set(AjaxAnswer::SUCCESS, ''); 167 | else 168 | $answer->set(AjaxAnswer::PASSWORD_NOT_FOUND, '' . KPHPUI::l(KPHPUI::LANG_SEE_PWD_DOES_NOT_EXIST) . ''); 169 | } 170 | else 171 | $answer->set(AjaxAnswer::SUCCESS, visitDatabase($db)); 172 | } 173 | else 174 | $answer->set(AjaxAnswer::BAD_PASSWORD); 175 | } 176 | else 177 | $answer->set(AjaxAnswer::NO_SUCH_ID); 178 | if(KeePassPHP::$debug && !empty(KeePassPHP::$debugData)) 179 | $answer->setDebug(KeePassPHP::$debugData); 180 | } 181 | else 182 | { 183 | $answer->set(AjaxAnswer::FAIL, KPHPUI::l(KPHPUI::LANG_INTERNAL_ERROR)); 184 | $answer->setDebug("The version of KeePassPHP is not supported."); 185 | } 186 | } 187 | 188 | $answer->send(); 189 | 190 | ?> -------------------------------------------------------------------------------- /keepassphpui/kphpui.php: -------------------------------------------------------------------------------- 1 | MAX_FILE_SIZE) 165 | return self::GET_FILE_TOO_BIG; 166 | if($f['error'] != UPLOAD_ERR_OK || !is_uploaded_file($f['tmp_name'])) 167 | return self::GET_FILE_ERROR; 168 | $result = $f['tmp_name']; 169 | return self::GET_FILE_OK; 170 | } 171 | 172 | /** 173 | * Returns the POST var of the given name, or an empty string if it does 174 | * not exist. 175 | */ 176 | public static function getPost($name) 177 | { 178 | return isset($_POST[$name]) ? $_POST[$name] : ""; 179 | } 180 | 181 | /** 182 | * Returns the string in a html-printable format. 183 | */ 184 | public static function htmlify($s) 185 | { 186 | return htmlspecialchars($s, ENT_QUOTES, 'UTF-8'); 187 | } 188 | 189 | /** 190 | * Returns the filename of a KeePass built-in icon from its id. 191 | */ 192 | public static function iconPath($iconid) 193 | { 194 | if($iconid == null || strlen($iconid) == 0 || !is_numeric($iconid)) 195 | return null; 196 | $id = intval($iconid); 197 | return $id >= 0 && $id <= 68 198 | ? "icons/C" . ($id < 10 ? "0" : "") . $id . ".png" 199 | : null; 200 | } 201 | 202 | /** 203 | * Returns whether this PHP fscript is accessed through HTTPS. 204 | */ 205 | public static function isHttps() 206 | { 207 | return (!empty($_SERVER['HTTPS']) && 208 | strtolower($_SERVER['HTTPS']) !== 'off') || 209 | intval($_SERVER['SERVER_PORT']) === 443 || 210 | (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && 211 | $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' || 212 | !empty($_SERVER['HTTP_X_FORWARDED_SSL']) && 213 | $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on'); 214 | } 215 | 216 | /** 217 | * Returns whether the version of the loaded KeePassPHP is supported. 218 | */ 219 | public static function isKeePassPHPVersionSupported() 220 | { 221 | return defined("\KeePassPHP\KeePassPHP::API_VERSION") && 222 | \KeePassPHP\KeePassPHP::API_VERSION >= 1; 223 | } 224 | } 225 | 226 | ?> -------------------------------------------------------------------------------- /js/main.js: -------------------------------------------------------------------------------- 1 | function $cel(n) 2 | { 3 | return $(document.createElement(n)); 4 | } 5 | 6 | function $get(id) 7 | { 8 | return $(document.getElementById(id)); 9 | } 10 | 11 | function raiseError(body) { 12 | var modal = $get("modal_error"); 13 | modal.find(".modal-body > pre").text(body); 14 | modal.modal("show"); 15 | } 16 | 17 | function InputWatcher(input) 18 | { 19 | this._event = input.attr("type") == "checkbox" ? "change" : "input"; 20 | this.input = input; 21 | var that = this; 22 | input.on(this._event, function() { 23 | if(that._watched) 24 | { 25 | var test = that.makeTest(); 26 | that._ok = test.result; 27 | that.displayError(test); 28 | if(that._ok) 29 | that._watched = false; 30 | } else 31 | that._ok = false; 32 | }); 33 | } 34 | 35 | InputWatcher.prototype = { 36 | _ok: false, 37 | _watched: false, 38 | 39 | makeTest: function() 40 | { 41 | return { result: !!this.input.val(), error: errorMessages.empty }; 42 | }, 43 | 44 | isValid: function() 45 | { 46 | if(this._ok) 47 | return true; 48 | this._watched = true; 49 | this.input.triggerHandler(this._event); 50 | return this._ok; 51 | }, 52 | 53 | val: function() 54 | { 55 | return this.input.val(); 56 | }, 57 | 58 | displayError: function(test) 59 | { 60 | if(test.result) 61 | hideErrors(this.input); 62 | else 63 | showError(this.input, test.error); 64 | } 65 | }; 66 | 67 | function hideErrors(input) 68 | { 69 | var row = input.parent(); 70 | var form_group = row.parent(); 71 | if(form_group.hasClass("has-error")) 72 | { 73 | form_group.removeClass("has-error"); 74 | row.children(".help-block").remove(); 75 | } 76 | return; 77 | } 78 | 79 | function showError(input, error) 80 | { 81 | var row = input.parent(); 82 | var form_group = row.parent(); 83 | if(form_group.hasClass("has-error")) 84 | row.children(".help-block").remove(); 85 | else 86 | form_group.addClass("has-error"); 87 | if(error) 88 | row.append($cel("span").addClass("help-block").text(error)); 89 | } 90 | 91 | function selectThis() 92 | { 93 | $(this).select(); 94 | } 95 | 96 | function setupLoading(button) 97 | { 98 | var loadingButton = button.siblings('button.loading-button'); 99 | if(loadingButton) 100 | { 101 | button.hide(); 102 | loadingButton.show(); 103 | } 104 | return loadingButton; 105 | } 106 | 107 | function resetLoading(button, loadingButton) 108 | { 109 | if(!loadingButton) 110 | return; 111 | button.show(); 112 | loadingButton.hide(); 113 | } 114 | 115 | 116 | $(function() 117 | { 118 | var urlParts = location.href.split("#"); 119 | if(urlParts.length > 1) 120 | if(urlParts[1] == "see" || urlParts[1] == "open" || urlParts[1] == "about" || urlParts[1] == "add") 121 | $('ul.nav.nav-tabs a[href="#' + urlParts[1] + '"]').tab("show"); 122 | 123 | var ajaxQueryString = (typeof forceLang !== "undefined" && forceLang) ? 124 | "?l=" + forceLang : ""; 125 | 126 | $get("dbid").focus(); 127 | $get("use_pwd_in_key").on("click", function() { 128 | if (!$(this).is(":checked")) 129 | { 130 | $get("open_more").collapse("show"); 131 | $get("open_other_pwd").focus(); 132 | } 133 | else 134 | $get("open_more").collapse("hide"); 135 | }); 136 | $get("add_use_pwd_in_key").on("click", function() { 137 | if (!$(this).is(":checked")) 138 | { 139 | $get("add_more").collapse("show"); 140 | $get("add_other_pwd").focus(); 141 | } 142 | else 143 | $get("add_more").collapse("hide"); 144 | }); 145 | 146 | if(typeof formErrors !== "undefined" && formErrors) { 147 | for(var input in formErrors) { 148 | showError($get(input), errorMessages[formErrors[input]]); 149 | } 150 | } 151 | 152 | if(typeof debugTrace !== "undefined") { 153 | $get("debugtrace").removeClass("hide").text("Debug trace:\n" + debugTrace); 154 | } 155 | 156 | var addDbidWatcher = new InputWatcher($get("add_dbid")); 157 | var addKdbxfileWatcher = new InputWatcher($get("add_kdbx_file")); 158 | var addMainPwdWatcher = new InputWatcher($get("add_main_pwd")); 159 | var addUsePwdInKey = $get("add_use_pwd_in_key"); 160 | var addOtherPwd = $get("add_other_pwd"); 161 | var addOtherKeyfile = $get("add_other_keyfile"); 162 | 163 | $get("form_add").on("submit", function() 164 | { 165 | var ok = true; 166 | if (!addUsePwdInKey.is(":checked") && !addOtherPwd.val() && !addOtherKeyfile.val()) 167 | { 168 | $get("add_more").collapse('show'); 169 | showError(addOtherPwd, errorMessages.nootherkey); 170 | showError(addOtherKeyfile, errorMessages.nootherkey); 171 | ok = false; 172 | } 173 | else 174 | { 175 | hideErrors(addOtherPwd); 176 | hideErrors(addOtherKeyfile); 177 | } 178 | 179 | ok = addDbidWatcher.isValid() && ok; 180 | ok = addKdbxfileWatcher.isValid() && ok; 181 | ok = addMainPwdWatcher.isValid() && ok; 182 | 183 | if(!ok) 184 | return false; 185 | }); 186 | 187 | var dbidWatcher = new InputWatcher($get("dbid")); 188 | var mainPwdWatcher = new InputWatcher($get("main_pwd")); 189 | var otherPwd = $get("open_other_pwd"); 190 | var usePwdInKey = $get("use_pwd_in_key"); 191 | 192 | var queryTimeout = 10000; 193 | var maxTimeoutWithNoTryAgain = 40000; 194 | var retryButton; 195 | 196 | $get("modal_timeout").on("hidden.bs.modal", function() { 197 | if(retryButton) 198 | { 199 | retryButton.click(); 200 | retryButton = undefined; 201 | } 202 | }); 203 | $get("modal_timeout_cancel").on("click", function() { 204 | retryButton = undefined; 205 | }); 206 | 207 | function handleFail(status, error, button, loadingButton) { 208 | if(status == "timeout") 209 | { 210 | queryTimeout = queryTimeout*2; 211 | if(queryTimeout <= maxTimeoutWithNoTryAgain) 212 | button.click(); 213 | else 214 | { 215 | retryButton = button; 216 | $get("modal_timeout").modal("show"); 217 | resetLoading(button, loadingButton); 218 | } 219 | } 220 | else 221 | { 222 | raiseError(status + ": " + error); 223 | resetLoading(button, loadingButton); 224 | } 225 | } 226 | 227 | function loadPassword() { 228 | var btn = $(this); 229 | var loadingButton = setupLoading(btn); 230 | var uuid = btn.data("uuid"); 231 | var container = btn.parent(); 232 | 233 | var dbidval = dbidWatcher.val(); 234 | var mainPwdval = mainPwdWatcher.val(); 235 | var otherPwdval = otherPwd.val(); 236 | var usePwdInKeyVal = usePwdInKey.is(':checked'); 237 | if (!dbidval || !mainPwdval || (!otherPwdval && !usePwdInKeyVal)) { 238 | resetLoading(btn, loadingButton); 239 | $get("open_tab_a").tab('show'); 240 | $get("form_open").submit(); 241 | return; 242 | } 243 | 244 | $.ajax({ 245 | data: { 246 | dbid: dbidval, 247 | main_pwd: mainPwdval, 248 | use_pwd_in_key: usePwdInKeyVal, 249 | open_other_pwd: otherPwdval, 250 | uuid: uuid 251 | }, 252 | method: 'POST', 253 | dataType: 'json', 254 | url: 'ajaxopen.php' + ajaxQueryString, 255 | timeout: queryTimeout 256 | }) 257 | .fail(function(jqxhr, status, error) { 258 | handleFail(status, error, btn, loadingButton); 259 | }) 260 | .done(function(answer) { 261 | $get("debugtrace").empty().addClass("hide"); 262 | var status = answer.status; 263 | if(status == 1 /* Success */) 264 | container.html(answer.result) 265 | .find(".selectOnFocus").on("focus", selectThis); 266 | else if(status == 5 /* Password not found */) 267 | container.html(answer.result); 268 | else if(answer.result) 269 | raiseError(answer.result); 270 | if(answer.debug) 271 | $get("debugtrace").removeClass("hide").text("Debug trace:\n" + answer.debug); 272 | resetLoading(btn, loadingButton); 273 | }); 274 | } 275 | 276 | $get("form_open").on("submit", function() 277 | { 278 | var button = $(this).find('button[type="submit"]'); 279 | var loadingButton = setupLoading(button); 280 | 281 | var ok = true; 282 | if(!otherPwd.val() && !usePwdInKey.is(":checked")) 283 | { 284 | $get("open_more").collapse('show'); 285 | showError(otherPwd, errorMessages.nootherkey); 286 | ok = false; 287 | } 288 | else 289 | hideErrors(otherPwd); 290 | 291 | ok = dbidWatcher.isValid() && ok; 292 | ok = mainPwdWatcher.isValid() && ok; 293 | 294 | if(ok) 295 | { 296 | $.ajax({ 297 | data: { 298 | dbid: dbidWatcher.val(), 299 | main_pwd: mainPwdWatcher.val(), 300 | use_pwd_in_key: usePwdInKey.is(":checked"), 301 | open_other_pwd: otherPwd.val() 302 | }, 303 | method: 'POST', 304 | dataType: 'json', 305 | url: 'ajaxopen.php' + ajaxQueryString, 306 | timeout: queryTimeout 307 | }) 308 | .fail(function(jqxhr, status, error) { 309 | $get("see_results").empty().addClass("hide"); 310 | $get("see_alert").show(); 311 | handleFail(status, error, button, loadingButton); 312 | }) 313 | .done(function(answer) { 314 | $get("debugtrace").empty().addClass("hide"); 315 | var status = answer.status; 316 | if(status == 1 /* Success */) { 317 | hideErrors(otherPwd); 318 | $get("see_alert").hide(); 319 | var results = $get("see_results").removeClass("hide") 320 | .html(answer.result); 321 | results.find(".selectOnFocus").on("focus", selectThis); 322 | results.find(".passwordLoader").on("click", loadPassword); 323 | $get("see_tab_li").removeClass("disabled").children("a").tab("show"); 324 | } else { 325 | $get("see_results").empty().addClass("hide"); 326 | $get("see_alert").show(); 327 | if(status === 0 /* fail */) 328 | raiseError(answer.result); 329 | else if(status == 2 /* bad password */) 330 | showError(mainPwdWatcher.input, errorMessages.badpwd); 331 | else if(status == 3 /* no such id */) 332 | showError(dbidWatcher.input, errorMessages.nosuchid); 333 | else if(status == 4 /* something is empty */) 334 | { 335 | var element = document.getElementById(answer.result); 336 | if(element) 337 | showError($(element), errorMessages.empty); 338 | } 339 | if(answer.debug) 340 | $get("debugtrace").removeClass("hide").text("Debug trace:\n" + answer.debug); 341 | } 342 | resetLoading(button, loadingButton); 343 | }); 344 | } 345 | else 346 | resetLoading(button, loadingButton); 347 | return false; 348 | }); 349 | 350 | $get("btn_clean_all").on("click", function() { 351 | $get("see_results").empty().addClass("hide"); 352 | $get("see_alert").show(); 353 | $get("see_tab_li").addClass("disabled"); 354 | $get("debugtrace").empty().hide(); 355 | $get("form_open").get(0).reset(); 356 | $get("form_add").get(0).reset(); 357 | return false; 358 | }); 359 | }); -------------------------------------------------------------------------------- /js/bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.7 (http://getbootstrap.com) 3 | * Copyright 2011-2017 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | 7 | /*! 8 | * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=f29ed615318aa644da9ac81c52c0bc4d) 9 | * Config saved to config.json and https://gist.github.com/f29ed615318aa644da9ac81c52c0bc4d 10 | */ 11 | if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(t){"use strict";var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1==e[0]&&9==e[1]&&e[2]<1||e[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var n=t(this),s=n.data("bs.alert");s||n.data("bs.alert",s=new i(this)),"string"==typeof e&&s[e].call(n)})}var n='[data-dismiss="alert"]',i=function(e){t(e).on("click",n,this.close)};i.VERSION="3.3.7",i.TRANSITION_DURATION=150,i.prototype.close=function(e){function n(){a.detach().trigger("closed.bs.alert").remove()}var s=t(this),o=s.attr("data-target");o||(o=s.attr("href"),o=o&&o.replace(/.*(?=#[^\s]*$)/,""));var a=t("#"===o?[]:o);e&&e.preventDefault(),a.length||(a=s.closest(".alert")),a.trigger(e=t.Event("close.bs.alert")),e.isDefaultPrevented()||(a.removeClass("in"),t.support.transition&&a.hasClass("fade")?a.one("bsTransitionEnd",n).emulateTransitionEnd(i.TRANSITION_DURATION):n())};var s=t.fn.alert;t.fn.alert=e,t.fn.alert.Constructor=i,t.fn.alert.noConflict=function(){return t.fn.alert=s,this},t(document).on("click.bs.alert.data-api",n,i.prototype.close)}(jQuery),+function(t){"use strict";function e(e){return this.each(function(){var i=t(this),s=i.data("bs.button"),o="object"==typeof e&&e;s||i.data("bs.button",s=new n(this,o)),"toggle"==e?s.toggle():e&&s.setState(e)})}var n=function(e,i){this.$element=t(e),this.options=t.extend({},n.DEFAULTS,i),this.isLoading=!1};n.VERSION="3.3.7",n.DEFAULTS={loadingText:"loading..."},n.prototype.setState=function(e){var n="disabled",i=this.$element,s=i.is("input")?"val":"html",o=i.data();e+="Text",null==o.resetText&&i.data("resetText",i[s]()),setTimeout(t.proxy(function(){i[s](null==o[e]?this.options[e]:o[e]),"loadingText"==e?(this.isLoading=!0,i.addClass(n).attr(n,n).prop(n,!0)):this.isLoading&&(this.isLoading=!1,i.removeClass(n).removeAttr(n).prop(n,!1))},this),0)},n.prototype.toggle=function(){var t=!0,e=this.$element.closest('[data-toggle="buttons"]');if(e.length){var n=this.$element.find("input");"radio"==n.prop("type")?(n.prop("checked")&&(t=!1),e.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==n.prop("type")&&(n.prop("checked")!==this.$element.hasClass("active")&&(t=!1),this.$element.toggleClass("active")),n.prop("checked",this.$element.hasClass("active")),t&&n.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var i=t.fn.button;t.fn.button=e,t.fn.button.Constructor=n,t.fn.button.noConflict=function(){return t.fn.button=i,this},t(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(n){var i=t(n.target).closest(".btn");e.call(i,"toggle"),t(n.target).is('input[type="radio"], input[type="checkbox"]')||(n.preventDefault(),i.is("input,button")?i.trigger("focus"):i.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(e){t(e.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(e.type))})}(jQuery),+function(t){"use strict";function e(e){var n=e.attr("data-target");n||(n=e.attr("href"),n=n&&/#[A-Za-z]/.test(n)&&n.replace(/.*(?=#[^\s]*$)/,""));var i=n&&t(n);return i&&i.length?i:e.parent()}function n(n){n&&3===n.which||(t(s).remove(),t(o).each(function(){var i=t(this),s=e(i),o={relatedTarget:this};s.hasClass("open")&&(n&&"click"==n.type&&/input|textarea/i.test(n.target.tagName)&&t.contains(s[0],n.target)||(s.trigger(n=t.Event("hide.bs.dropdown",o)),n.isDefaultPrevented()||(i.attr("aria-expanded","false"),s.removeClass("open").trigger(t.Event("hidden.bs.dropdown",o)))))}))}function i(e){return this.each(function(){var n=t(this),i=n.data("bs.dropdown");i||n.data("bs.dropdown",i=new a(this)),"string"==typeof e&&i[e].call(n)})}var s=".dropdown-backdrop",o='[data-toggle="dropdown"]',a=function(e){t(e).on("click.bs.dropdown",this.toggle)};a.VERSION="3.3.7",a.prototype.toggle=function(i){var s=t(this);if(!s.is(".disabled, :disabled")){var o=e(s),a=o.hasClass("open");if(n(),!a){"ontouchstart"in document.documentElement&&!o.closest(".navbar-nav").length&&t(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(t(this)).on("click",n);var r={relatedTarget:this};if(o.trigger(i=t.Event("show.bs.dropdown",r)),i.isDefaultPrevented())return;s.trigger("focus").attr("aria-expanded","true"),o.toggleClass("open").trigger(t.Event("shown.bs.dropdown",r))}return!1}},a.prototype.keydown=function(n){if(/(38|40|27|32)/.test(n.which)&&!/input|textarea/i.test(n.target.tagName)){var i=t(this);if(n.preventDefault(),n.stopPropagation(),!i.is(".disabled, :disabled")){var s=e(i),a=s.hasClass("open");if(!a&&27!=n.which||a&&27==n.which)return 27==n.which&&s.find(o).trigger("focus"),i.trigger("click");var r=" li:not(.disabled):visible a",d=s.find(".dropdown-menu"+r);if(d.length){var l=d.index(n.target);38==n.which&&l>0&&l--,40==n.which&&ldocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:""})},n.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},n.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)}this.bodyIsOverflowing=document.body.clientWidth .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),e.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),r?(e[0].offsetWidth,e.addClass("in")):e.removeClass("fade"),e.parent(".dropdown-menu").length&&e.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),s&&s()}var a=i.find("> .active"),r=s&&t.support.transition&&(a.length&&a.hasClass("fade")||!!i.find("> .fade").length);a.length&&r?a.one("bsTransitionEnd",o).emulateTransitionEnd(n.TRANSITION_DURATION):o(),a.removeClass("in")};var i=t.fn.tab;t.fn.tab=e,t.fn.tab.Constructor=n,t.fn.tab.noConflict=function(){return t.fn.tab=i,this};var s=function(n){n.preventDefault(),e.call(t(this),"show")};t(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',s).on("click.bs.tab.data-api",'[data-toggle="pill"]',s)}(jQuery),+function(t){"use strict";function e(e){var n,i=e.attr("data-target")||(n=e.attr("href"))&&n.replace(/.*(?=#[^\s]+$)/,"");return t(i)}function n(e){return this.each(function(){var n=t(this),s=n.data("bs.collapse"),o=t.extend({},i.DEFAULTS,n.data(),"object"==typeof e&&e);!s&&o.toggle&&/show|hide/.test(e)&&(o.toggle=!1),s||n.data("bs.collapse",s=new i(this,o)),"string"==typeof e&&s[e]()})}var i=function(e,n){this.$element=t(e),this.options=t.extend({},i.DEFAULTS,n),this.$trigger=t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};i.VERSION="3.3.7",i.TRANSITION_DURATION=350,i.DEFAULTS={toggle:!0},i.prototype.dimension=function(){var t=this.$element.hasClass("width");return t?"width":"height"},i.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var e,s=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(s&&s.length&&(e=s.data("bs.collapse"),e&&e.transitioning))){var o=t.Event("show.bs.collapse");if(this.$element.trigger(o),!o.isDefaultPrevented()){s&&s.length&&(n.call(s,"hide"),e||s.data("bs.collapse",null));var a=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[a](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var r=function(){this.$element.removeClass("collapsing").addClass("collapse in")[a](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!t.support.transition)return r.call(this);var d=t.camelCase(["scroll",a].join("-"));this.$element.one("bsTransitionEnd",t.proxy(r,this)).emulateTransitionEnd(i.TRANSITION_DURATION)[a](this.$element[0][d])}}}},i.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var e=t.Event("hide.bs.collapse");if(this.$element.trigger(e),!e.isDefaultPrevented()){var n=this.dimension();this.$element[n](this.$element[n]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var s=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return t.support.transition?void this.$element[n](0).one("bsTransitionEnd",t.proxy(s,this)).emulateTransitionEnd(i.TRANSITION_DURATION):s.call(this)}}},i.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},i.prototype.getParent=function(){return t(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(t.proxy(function(n,i){var s=t(i);this.addAriaAndCollapsedClass(e(s),s)},this)).end()},i.prototype.addAriaAndCollapsedClass=function(t,e){var n=t.hasClass("in");t.attr("aria-expanded",n),e.toggleClass("collapsed",!n).attr("aria-expanded",n)};var s=t.fn.collapse;t.fn.collapse=n,t.fn.collapse.Constructor=i,t.fn.collapse.noConflict=function(){return t.fn.collapse=s,this},t(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(i){var s=t(this);s.attr("data-target")||i.preventDefault();var o=e(s),a=o.data("bs.collapse"),r=a?"toggle":s.data();n.call(o,r)})}(jQuery),+function(t){"use strict";function e(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var n in e)if(void 0!==t.style[n])return{end:e[n]};return!1}t.fn.emulateTransitionEnd=function(e){var n=!1,i=this;t(this).one("bsTransitionEnd",function(){n=!0});var s=function(){n||t(i).trigger(t.support.transition.end)};return setTimeout(s,e),this},t(function(){t.support.transition=e(),t.support.transition&&(t.event.special.bsTransitionEnd={bindType:t.support.transition.end,delegateType:t.support.transition.end,handle:function(e){return t(e.target).is(this)?e.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery); -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | &$error) 147 | { 148 | if($isFirst) 149 | $isFirst = false; 150 | else 151 | $javascriptContent .= ", "; 152 | $javascriptContent .= $input . ": '" . $error . "'"; 153 | } 154 | $javascriptContent .= "};"; 155 | 156 | // display the HTML 157 | ?> 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | <?php echo KPHPUI::l(KPHPUI::LANG_PAGE_TITLE); ?> 167 | 168 | 169 | 170 | 171 | 175 | 176 | 177 | 178 |
179 |
180 |
181 | 196 | 199 |
200 |
201 | 206 |
207 |
208 | 211 |
212 |
" id="open"> 213 |
214 |
215 |
216 |
217 | 218 |
219 | 220 |
221 | 222 |
223 |
224 |
225 | 226 |
227 | 228 |
229 |
230 |
231 | 232 |
233 | 234 |
235 |
236 |
237 |
238 | 239 |
240 | 241 |
242 |
243 |
244 |
245 |
246 | 247 | 248 | 249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
" id="add"> 257 |
258 |
259 |
260 | 261 |
262 | 263 |
264 | 265 |
266 | 267 |
268 |
269 |
270 | 271 |
272 | 273 |
274 |
275 |
276 | 277 |
278 | 279 |
280 |
281 |
282 | 283 |
284 | 285 |
286 |
287 |
288 |
289 | 290 |
291 | 292 |
293 |
294 |
295 |
296 | 297 |
298 | 299 |
300 |
301 |
302 |
303 | 304 | 305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |

317 |

318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |

327 |

328 |
329 |
330 |
331 |
332 |

333 | 			
334 |
335 |
336 | 353 | 371 | 374 | 390 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | -------------------------------------------------------------------------------- /bootstrap-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "vars": { 3 | "@gray-base": "#000", 4 | "@gray-darker": "lighten(@gray-base, 13.5%)", 5 | "@gray-dark": "lighten(@gray-base, 20%)", 6 | "@gray": "lighten(@gray-base, 33.5%)", 7 | "@gray-light": "lighten(@gray-base, 46.7%)", 8 | "@gray-lighter": "lighten(@gray-base, 93.5%)", 9 | "@brand-primary": "#05768f", 10 | "@brand-success": "#5cb85c", 11 | "@brand-info": "#5bc0de", 12 | "@brand-warning": "#f0ad4e", 13 | "@brand-danger": "#d9534f", 14 | "@body-bg": "#fff", 15 | "@text-color": "@gray-dark", 16 | "@link-color": "@brand-primary", 17 | "@link-hover-color": "#05253C", 18 | "@link-hover-decoration": "underline", 19 | "@font-family-sans-serif": "\"Helvetica Neue\", Helvetica, Arial, sans-serif", 20 | "@font-family-serif": "Georgia, \"Times New Roman\", Times, serif", 21 | "@font-family-monospace": "Menlo, Monaco, Consolas, \"Courier New\", monospace", 22 | "@font-family-base": "@font-family-serif", 23 | "@font-size-base": "16px", 24 | "@font-size-large": "ceil((@font-size-base * 1.25))", 25 | "@font-size-small": "ceil((@font-size-base * 0.85))", 26 | "@font-size-h1": "floor((@font-size-base * 2.6))", 27 | "@font-size-h2": "floor((@font-size-base * 2.15))", 28 | "@font-size-h3": "ceil((@font-size-base * 1.7))", 29 | "@font-size-h4": "ceil((@font-size-base * 1.25))", 30 | "@font-size-h5": "@font-size-base", 31 | "@font-size-h6": "ceil((@font-size-base * 0.85))", 32 | "@line-height-base": "1.375", 33 | "@line-height-computed": "floor((@font-size-base * @line-height-base))", 34 | "@headings-font-family": "inherit", 35 | "@headings-font-weight": "500", 36 | "@headings-line-height": "1.1", 37 | "@headings-color": "inherit", 38 | "@icon-font-path": "\"../fonts/\"", 39 | "@icon-font-name": "\"glyphicons-halflings-regular\"", 40 | "@icon-font-svg-id": "\"glyphicons_halflingsregular\"", 41 | "@padding-base-vertical": "6px", 42 | "@padding-base-horizontal": "12px", 43 | "@padding-large-vertical": "10px", 44 | "@padding-large-horizontal": "16px", 45 | "@padding-small-vertical": "5px", 46 | "@padding-small-horizontal": "10px", 47 | "@padding-xs-vertical": "1px", 48 | "@padding-xs-horizontal": "5px", 49 | "@line-height-large": "1.3", 50 | "@line-height-small": "1.45", 51 | "@border-radius-base": "2px", 52 | "@border-radius-large": "4px", 53 | "@border-radius-small": "2px", 54 | "@component-active-color": "#fff", 55 | "@component-active-bg": "@brand-primary", 56 | "@caret-width-base": "4px", 57 | "@caret-width-large": "5px", 58 | "@table-cell-padding": "8px", 59 | "@table-condensed-cell-padding": "5px", 60 | "@table-bg": "transparent", 61 | "@table-bg-accent": "#f9f9f9", 62 | "@table-bg-hover": "#f5f5f5", 63 | "@table-bg-active": "@table-bg-hover", 64 | "@table-border-color": "#ddd", 65 | "@btn-font-weight": "normal", 66 | "@btn-default-color": "#333", 67 | "@btn-default-bg": "#fff", 68 | "@btn-default-border": "#ccc", 69 | "@btn-primary-color": "#fff", 70 | "@btn-primary-bg": "@brand-primary", 71 | "@btn-primary-border": "darken(@btn-primary-bg, 5%)", 72 | "@btn-success-color": "#fff", 73 | "@btn-success-bg": "@brand-success", 74 | "@btn-success-border": "darken(@btn-success-bg, 5%)", 75 | "@btn-info-color": "#fff", 76 | "@btn-info-bg": "@brand-info", 77 | "@btn-info-border": "darken(@btn-info-bg, 5%)", 78 | "@btn-warning-color": "#fff", 79 | "@btn-warning-bg": "@brand-warning", 80 | "@btn-warning-border": "darken(@btn-warning-bg, 5%)", 81 | "@btn-danger-color": "#fff", 82 | "@btn-danger-bg": "@brand-danger", 83 | "@btn-danger-border": "darken(@btn-danger-bg, 5%)", 84 | "@btn-link-disabled-color": "@gray-light", 85 | "@btn-border-radius-base": "@border-radius-base", 86 | "@btn-border-radius-large": "@border-radius-large", 87 | "@btn-border-radius-small": "@border-radius-small", 88 | "@input-bg": "#fff", 89 | "@input-bg-disabled": "@gray-lighter", 90 | "@input-color": "@gray", 91 | "@input-border": "#ccc", 92 | "@input-border-radius": "@border-radius-base", 93 | "@input-border-radius-large": "@border-radius-large", 94 | "@input-border-radius-small": "@border-radius-small", 95 | "@input-border-focus": "#66afe9", 96 | "@input-color-placeholder": "#999", 97 | "@input-height-base": "(@line-height-computed + (@padding-base-vertical * 2) + 2)", 98 | "@input-height-large": "(ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2)", 99 | "@input-height-small": "(floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2)", 100 | "@form-group-margin-bottom": "15px", 101 | "@legend-color": "@gray-dark", 102 | "@legend-border-color": "#e5e5e5", 103 | "@input-group-addon-bg": "@gray-lighter", 104 | "@input-group-addon-border-color": "@input-border", 105 | "@cursor-disabled": "not-allowed", 106 | "@dropdown-bg": "#fff", 107 | "@dropdown-border": "rgba(0,0,0,.15)", 108 | "@dropdown-fallback-border": "#ccc", 109 | "@dropdown-divider-bg": "#e5e5e5", 110 | "@dropdown-link-color": "@gray-dark", 111 | "@dropdown-link-hover-color": "darken(@gray-dark, 5%)", 112 | "@dropdown-link-hover-bg": "#f5f5f5", 113 | "@dropdown-link-active-color": "@component-active-color", 114 | "@dropdown-link-active-bg": "@component-active-bg", 115 | "@dropdown-link-disabled-color": "@gray-light", 116 | "@dropdown-header-color": "@gray-light", 117 | "@dropdown-caret-color": "#000", 118 | "@screen-xs": "480px", 119 | "@screen-xs-min": "@screen-xs", 120 | "@screen-phone": "@screen-xs-min", 121 | "@screen-sm": "768px", 122 | "@screen-sm-min": "@screen-sm", 123 | "@screen-tablet": "@screen-sm-min", 124 | "@screen-md": "992px", 125 | "@screen-md-min": "@screen-md", 126 | "@screen-desktop": "@screen-md-min", 127 | "@screen-lg": "1200px", 128 | "@screen-lg-min": "@screen-lg", 129 | "@screen-lg-desktop": "@screen-lg-min", 130 | "@screen-xs-max": "(@screen-sm-min - 1)", 131 | "@screen-sm-max": "(@screen-md-min - 1)", 132 | "@screen-md-max": "(@screen-lg-min - 1)", 133 | "@grid-columns": "12", 134 | "@grid-gutter-width": "30px", 135 | "@grid-float-breakpoint": "@screen-sm-min", 136 | "@grid-float-breakpoint-max": "(@grid-float-breakpoint - 1)", 137 | "@container-tablet": "(720px + @grid-gutter-width)", 138 | "@container-sm": "@container-tablet", 139 | "@container-desktop": "(940px + @grid-gutter-width)", 140 | "@container-md": "@container-desktop", 141 | "@container-large-desktop": "(1140px + @grid-gutter-width)", 142 | "@container-lg": "@container-large-desktop", 143 | "@navbar-height": "50px", 144 | "@navbar-margin-bottom": "@line-height-computed", 145 | "@navbar-border-radius": "@border-radius-base", 146 | "@navbar-padding-horizontal": "floor((@grid-gutter-width / 2))", 147 | "@navbar-padding-vertical": "((@navbar-height - @line-height-computed) / 2)", 148 | "@navbar-collapse-max-height": "340px", 149 | "@navbar-default-color": "#777", 150 | "@navbar-default-bg": "#f8f8f8", 151 | "@navbar-default-border": "darken(@navbar-default-bg, 6.5%)", 152 | "@navbar-default-link-color": "#777", 153 | "@navbar-default-link-hover-color": "#333", 154 | "@navbar-default-link-hover-bg": "transparent", 155 | "@navbar-default-link-active-color": "#555", 156 | "@navbar-default-link-active-bg": "darken(@navbar-default-bg, 6.5%)", 157 | "@navbar-default-link-disabled-color": "#ccc", 158 | "@navbar-default-link-disabled-bg": "transparent", 159 | "@navbar-default-brand-color": "@navbar-default-link-color", 160 | "@navbar-default-brand-hover-color": "darken(@navbar-default-brand-color, 10%)", 161 | "@navbar-default-brand-hover-bg": "transparent", 162 | "@navbar-default-toggle-hover-bg": "#ddd", 163 | "@navbar-default-toggle-icon-bar-bg": "#888", 164 | "@navbar-default-toggle-border-color": "#ddd", 165 | "@navbar-inverse-color": "lighten(@gray-light, 15%)", 166 | "@navbar-inverse-bg": "#222", 167 | "@navbar-inverse-border": "darken(@navbar-inverse-bg, 10%)", 168 | "@navbar-inverse-link-color": "lighten(@gray-light, 15%)", 169 | "@navbar-inverse-link-hover-color": "#fff", 170 | "@navbar-inverse-link-hover-bg": "transparent", 171 | "@navbar-inverse-link-active-color": "@navbar-inverse-link-hover-color", 172 | "@navbar-inverse-link-active-bg": "darken(@navbar-inverse-bg, 10%)", 173 | "@navbar-inverse-link-disabled-color": "#444", 174 | "@navbar-inverse-link-disabled-bg": "transparent", 175 | "@navbar-inverse-brand-color": "@navbar-inverse-link-color", 176 | "@navbar-inverse-brand-hover-color": "#fff", 177 | "@navbar-inverse-brand-hover-bg": "transparent", 178 | "@navbar-inverse-toggle-hover-bg": "#333", 179 | "@navbar-inverse-toggle-icon-bar-bg": "#fff", 180 | "@navbar-inverse-toggle-border-color": "#333", 181 | "@nav-link-padding": "10px 15px", 182 | "@nav-link-hover-bg": "@gray-lighter", 183 | "@nav-disabled-link-color": "@gray-light", 184 | "@nav-disabled-link-hover-color": "@gray-light", 185 | "@nav-tabs-border-color": "#ddd", 186 | "@nav-tabs-link-hover-border-color": "@gray-lighter", 187 | "@nav-tabs-active-link-hover-bg": "@body-bg", 188 | "@nav-tabs-active-link-hover-color": "@gray", 189 | "@nav-tabs-active-link-hover-border-color": "#ddd", 190 | "@nav-tabs-justified-link-border-color": "#ddd", 191 | "@nav-tabs-justified-active-link-border-color": "@body-bg", 192 | "@nav-pills-border-radius": "@border-radius-base", 193 | "@nav-pills-active-link-hover-bg": "@component-active-bg", 194 | "@nav-pills-active-link-hover-color": "@component-active-color", 195 | "@pagination-color": "@link-color", 196 | "@pagination-bg": "#fff", 197 | "@pagination-border": "#ddd", 198 | "@pagination-hover-color": "@link-hover-color", 199 | "@pagination-hover-bg": "@gray-lighter", 200 | "@pagination-hover-border": "#ddd", 201 | "@pagination-active-color": "#fff", 202 | "@pagination-active-bg": "@brand-primary", 203 | "@pagination-active-border": "@brand-primary", 204 | "@pagination-disabled-color": "@gray-light", 205 | "@pagination-disabled-bg": "#fff", 206 | "@pagination-disabled-border": "#ddd", 207 | "@pager-bg": "@pagination-bg", 208 | "@pager-border": "@pagination-border", 209 | "@pager-border-radius": "15px", 210 | "@pager-hover-bg": "@pagination-hover-bg", 211 | "@pager-active-bg": "@pagination-active-bg", 212 | "@pager-active-color": "@pagination-active-color", 213 | "@pager-disabled-color": "@pagination-disabled-color", 214 | "@jumbotron-padding": "30px", 215 | "@jumbotron-color": "inherit", 216 | "@jumbotron-bg": "@gray-lighter", 217 | "@jumbotron-heading-color": "inherit", 218 | "@jumbotron-font-size": "ceil((@font-size-base * 1.5))", 219 | "@jumbotron-heading-font-size": "ceil((@font-size-base * 4.5))", 220 | "@state-success-text": "#3c763d", 221 | "@state-success-bg": "#dff0d8", 222 | "@state-success-border": "darken(spin(@state-success-bg, -10), 5%)", 223 | "@state-info-text": "#31708f", 224 | "@state-info-bg": "#d9edf7", 225 | "@state-info-border": "darken(spin(@state-info-bg, -10), 7%)", 226 | "@state-warning-text": "#8a6d3b", 227 | "@state-warning-bg": "#fcf8e3", 228 | "@state-warning-border": "darken(spin(@state-warning-bg, -10), 5%)", 229 | "@state-danger-text": "#a94442", 230 | "@state-danger-bg": "#f2dede", 231 | "@state-danger-border": "darken(spin(@state-danger-bg, -10), 5%)", 232 | "@tooltip-max-width": "200px", 233 | "@tooltip-color": "#fff", 234 | "@tooltip-bg": "#000", 235 | "@tooltip-opacity": ".9", 236 | "@tooltip-arrow-width": "5px", 237 | "@tooltip-arrow-color": "@tooltip-bg", 238 | "@popover-bg": "#fff", 239 | "@popover-max-width": "276px", 240 | "@popover-border-color": "rgba(0,0,0,.2)", 241 | "@popover-fallback-border-color": "#ccc", 242 | "@popover-title-bg": "darken(@popover-bg, 3%)", 243 | "@popover-arrow-width": "10px", 244 | "@popover-arrow-color": "@popover-bg", 245 | "@popover-arrow-outer-width": "(@popover-arrow-width + 1)", 246 | "@popover-arrow-outer-color": "fadein(@popover-border-color, 5%)", 247 | "@popover-arrow-outer-fallback-color": "darken(@popover-fallback-border-color, 20%)", 248 | "@label-default-bg": "@gray-light", 249 | "@label-primary-bg": "@brand-primary", 250 | "@label-success-bg": "@brand-success", 251 | "@label-info-bg": "@brand-info", 252 | "@label-warning-bg": "@brand-warning", 253 | "@label-danger-bg": "@brand-danger", 254 | "@label-color": "#fff", 255 | "@label-link-hover-color": "#fff", 256 | "@modal-inner-padding": "15px", 257 | "@modal-title-padding": "15px", 258 | "@modal-title-line-height": "@line-height-base", 259 | "@modal-content-bg": "#fff", 260 | "@modal-content-border-color": "rgba(0,0,0,.2)", 261 | "@modal-content-fallback-border-color": "#999", 262 | "@modal-backdrop-bg": "#000", 263 | "@modal-backdrop-opacity": ".5", 264 | "@modal-header-border-color": "#e5e5e5", 265 | "@modal-footer-border-color": "@modal-header-border-color", 266 | "@modal-lg": "900px", 267 | "@modal-md": "600px", 268 | "@modal-sm": "300px", 269 | "@alert-padding": "15px", 270 | "@alert-border-radius": "@border-radius-base", 271 | "@alert-link-font-weight": "bold", 272 | "@alert-success-bg": "@state-success-bg", 273 | "@alert-success-text": "@state-success-text", 274 | "@alert-success-border": "@state-success-border", 275 | "@alert-info-bg": "@state-info-bg", 276 | "@alert-info-text": "@state-info-text", 277 | "@alert-info-border": "@state-info-border", 278 | "@alert-warning-bg": "@state-warning-bg", 279 | "@alert-warning-text": "@state-warning-text", 280 | "@alert-warning-border": "@state-warning-border", 281 | "@alert-danger-bg": "@state-danger-bg", 282 | "@alert-danger-text": "@state-danger-text", 283 | "@alert-danger-border": "@state-danger-border", 284 | "@progress-bg": "#f5f5f5", 285 | "@progress-bar-color": "#fff", 286 | "@progress-border-radius": "@border-radius-base", 287 | "@progress-bar-bg": "@brand-primary", 288 | "@progress-bar-success-bg": "@brand-success", 289 | "@progress-bar-warning-bg": "@brand-warning", 290 | "@progress-bar-danger-bg": "@brand-danger", 291 | "@progress-bar-info-bg": "@brand-info", 292 | "@list-group-bg": "#fff", 293 | "@list-group-border": "#ddd", 294 | "@list-group-border-radius": "@border-radius-base", 295 | "@list-group-hover-bg": "#f5f5f5", 296 | "@list-group-active-color": "@component-active-color", 297 | "@list-group-active-bg": "@component-active-bg", 298 | "@list-group-active-border": "@list-group-active-bg", 299 | "@list-group-active-text-color": "lighten(@list-group-active-bg, 40%)", 300 | "@list-group-disabled-color": "@gray-light", 301 | "@list-group-disabled-bg": "@gray-lighter", 302 | "@list-group-disabled-text-color": "@list-group-disabled-color", 303 | "@list-group-link-color": "#555", 304 | "@list-group-link-hover-color": "@list-group-link-color", 305 | "@list-group-link-heading-color": "#333", 306 | "@panel-bg": "#fff", 307 | "@panel-body-padding": "15px", 308 | "@panel-heading-padding": "10px 15px", 309 | "@panel-footer-padding": "@panel-heading-padding", 310 | "@panel-border-radius": "@border-radius-base", 311 | "@panel-inner-border": "#ddd", 312 | "@panel-footer-bg": "#f5f5f5", 313 | "@panel-default-text": "@gray-dark", 314 | "@panel-default-border": "#ddd", 315 | "@panel-default-heading-bg": "#f5f5f5", 316 | "@panel-primary-text": "#fff", 317 | "@panel-primary-border": "@brand-primary", 318 | "@panel-primary-heading-bg": "@brand-primary", 319 | "@panel-success-text": "@state-success-text", 320 | "@panel-success-border": "@state-success-border", 321 | "@panel-success-heading-bg": "@state-success-bg", 322 | "@panel-info-text": "@state-info-text", 323 | "@panel-info-border": "@state-info-border", 324 | "@panel-info-heading-bg": "@state-info-bg", 325 | "@panel-warning-text": "@state-warning-text", 326 | "@panel-warning-border": "@state-warning-border", 327 | "@panel-warning-heading-bg": "@state-warning-bg", 328 | "@panel-danger-text": "@state-danger-text", 329 | "@panel-danger-border": "@state-danger-border", 330 | "@panel-danger-heading-bg": "@state-danger-bg", 331 | "@thumbnail-padding": "4px", 332 | "@thumbnail-bg": "@body-bg", 333 | "@thumbnail-border": "#ddd", 334 | "@thumbnail-border-radius": "@border-radius-base", 335 | "@thumbnail-caption-color": "@text-color", 336 | "@thumbnail-caption-padding": "9px", 337 | "@well-bg": "#f5f5f5", 338 | "@well-border": "darken(@well-bg, 7%)", 339 | "@badge-color": "#fff", 340 | "@badge-link-hover-color": "#fff", 341 | "@badge-bg": "@gray-light", 342 | "@badge-active-color": "@link-color", 343 | "@badge-active-bg": "#fff", 344 | "@badge-font-weight": "bold", 345 | "@badge-line-height": "1", 346 | "@badge-border-radius": "10px", 347 | "@breadcrumb-padding-vertical": "8px", 348 | "@breadcrumb-padding-horizontal": "15px", 349 | "@breadcrumb-bg": "#f5f5f5", 350 | "@breadcrumb-color": "#ccc", 351 | "@breadcrumb-active-color": "@gray-light", 352 | "@breadcrumb-separator": "\"/\"", 353 | "@carousel-text-shadow": "0 1px 2px rgba(0,0,0,.6)", 354 | "@carousel-control-color": "#fff", 355 | "@carousel-control-width": "15%", 356 | "@carousel-control-opacity": ".5", 357 | "@carousel-control-font-size": "20px", 358 | "@carousel-indicator-active-bg": "#fff", 359 | "@carousel-indicator-border-color": "#fff", 360 | "@carousel-caption-color": "#fff", 361 | "@close-font-weight": "bold", 362 | "@close-color": "#000", 363 | "@close-text-shadow": "0 1px 0 #fff", 364 | "@code-color": "#c7254e", 365 | "@code-bg": "#f9f2f4", 366 | "@kbd-color": "#fff", 367 | "@kbd-bg": "#333", 368 | "@pre-bg": "#f5f5f5", 369 | "@pre-color": "@gray-dark", 370 | "@pre-border-color": "#ccc", 371 | "@pre-scrollable-max-height": "340px", 372 | "@component-offset-horizontal": "180px", 373 | "@text-muted": "@gray-light", 374 | "@abbr-border-color": "@gray-light", 375 | "@headings-small-color": "@gray-light", 376 | "@blockquote-small-color": "@gray-light", 377 | "@blockquote-font-size": "(@font-size-base * 1.25)", 378 | "@blockquote-border-color": "@gray-lighter", 379 | "@page-header-border-color": "@gray-lighter", 380 | "@dl-horizontal-offset": "@component-offset-horizontal", 381 | "@dl-horizontal-breakpoint": "@grid-float-breakpoint", 382 | "@hr-border": "@gray-lighter" 383 | }, 384 | "css": [ 385 | "type.less", 386 | "grid.less", 387 | "tables.less", 388 | "forms.less", 389 | "buttons.less", 390 | "navs.less", 391 | "labels.less", 392 | "alerts.less", 393 | "wells.less", 394 | "close.less", 395 | "component-animations.less", 396 | "dropdowns.less", 397 | "modals.less" 398 | ], 399 | "js": [ 400 | "alert.js", 401 | "button.js", 402 | "dropdown.js", 403 | "modal.js", 404 | "tab.js", 405 | "collapse.js", 406 | "transition.js" 407 | ], 408 | "customizerUrl": "http://getbootstrap.com/customize/?id=f29ed615318aa644da9ac81c52c0bc4d" 409 | } -------------------------------------------------------------------------------- /css/bootstrap.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v3.3.7 (http://getbootstrap.com) 3 | * Copyright 2011-2017 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | 7 | /*! 8 | * Generated using the Bootstrap Customizer (http://getbootstrap.com/customize/?id=f29ed615318aa644da9ac81c52c0bc4d) 9 | * Config saved to config.json and https://gist.github.com/f29ed615318aa644da9ac81c52c0bc4d 10 | *//*! 11 | * Bootstrap v3.3.7 (http://getbootstrap.com) 12 | * Copyright 2011-2016 Twitter, Inc. 13 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 14 | *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:Georgia,"Times New Roman",Times,serif;font-size:16px;line-height:1.375;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#05768f;text-decoration:none}a:hover,a:focus{color:#05253c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:4px}.img-thumbnail{padding:4px;line-height:1.375;background-color:#fff;border:1px solid #ddd;border-radius:2px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:22px;margin-bottom:22px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:22px;margin-bottom:11px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:11px;margin-bottom:11px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:41px}h2,.h2{font-size:34px}h3,.h3{font-size:28px}h4,.h4{font-size:20px}h5,.h5{font-size:16px}h6,.h6{font-size:14px}p{margin:0 0 11px}.lead{margin-bottom:22px;font-size:18px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:24px}}small,.small{font-size:87%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#05768f}a.text-primary:hover,a.text-primary:focus{color:#034d5e}.text-success{color:#3c763d}a.text-success:hover,a.text-success:focus{color:#2b542c}.text-info{color:#31708f}a.text-info:hover,a.text-info:focus{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover,a.text-warning:focus{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover,a.text-danger:focus{color:#843534}.bg-primary{color:#fff;background-color:#05768f}a.bg-primary:hover,a.bg-primary:focus{background-color:#034d5e}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:10px;margin:44px 0 22px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:11px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:22px}dt,dd{line-height:1.375}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:11px 22px;margin:0 0 22px;font-size:20px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.375;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:22px;font-style:normal;line-height:1.375}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:22px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.375;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:16.5px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:22px;font-size:24px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:16px;line-height:1.375;color:#555}.form-control{display:block;width:100%;height:36px;padding:6px 12px;font-size:16px;line-height:1.375;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:2px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:36px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:32px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:48px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:22px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:38px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:32px;padding:5px 10px;font-size:14px;line-height:1.45;border-radius:2px}select.input-sm{height:32px;line-height:32px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:32px;padding:5px 10px;font-size:14px;line-height:1.45;border-radius:2px}.form-group-sm select.form-control{height:32px;line-height:32px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:32px;min-height:36px;padding:6px 10px;font-size:14px;line-height:1.45}.input-lg{height:48px;padding:10px 16px;font-size:20px;line-height:1.3;border-radius:4px}select.input-lg{height:48px;line-height:48px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:48px;padding:10px 16px;font-size:20px;line-height:1.3;border-radius:4px}.form-group-lg select.form-control{height:48px;line-height:48px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:48px;min-height:42px;padding:11px 16px;font-size:20px;line-height:1.3}.has-feedback{position:relative}.has-feedback .form-control{padding-right:45px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:36px;height:36px;line-height:36px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:48px;height:48px;line-height:48px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:32px;height:32px;line-height:32px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:27px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:29px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:20px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:14px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:16px;line-height:1.375;border-radius:2px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:focus,.btn-default.focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#05768f;border-color:#046276}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#034d5e;border-color:#000}.btn-primary:hover{color:#fff;background-color:#034d5e;border-color:#02313b}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#034d5e;border-color:#02313b}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#fff;background-color:#02313b;border-color:#000}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#05768f;border-color:#046276}.btn-primary .badge{color:#05768f;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#fff;background-color:#398439;border-color:#255625}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:focus,.btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#05768f;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#05253c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg{padding:10px 16px;font-size:20px;line-height:1.3;border-radius:4px}.btn-sm{padding:5px 10px;font-size:14px;line-height:1.45;border-radius:2px}.btn-xs{padding:1px 5px;font-size:14px;line-height:1.45;border-radius:2px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:16px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:2px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:10px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.375;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#05768f}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:14px;line-height:1.375;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#05768f}.nav .nav-divider{height:1px;margin:10px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.375;border:1px solid transparent;border-radius:2px 2px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:2px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:2px 2px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:2px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#05768f}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:2px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:2px 2px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#05768f}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#034d5e}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.alert{padding:15px;margin-bottom:22px;border:1px solid transparent;border-radius:2px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:2px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:4px}.well-sm{padding:9px;border-radius:2px}.close{float:right;font-size:24px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:4px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.375}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.nav:before,.nav:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.nav:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed} --------------------------------------------------------------------------------