From a94dee726947b3624d6114d705d3b89078cd8a75 Mon Sep 17 00:00:00 2001 From: WeebDataHoarder <57538841+WeebDataHoarder@users.noreply.github.com> Date: Tue, 15 Feb 2022 16:11:50 +0100 Subject: [PATCH] Initial dump from 'Animarr 2019-08-23.zip' --- Animarr.sh | 38 + INSTALL | 14 + LICENSE | 19 + config.ini | 221 +++++ config/exceptions.ini | 9 + config/feeds/Asenshi.ini | 6 + config/feeds/Chihiro.ini | 8 + config/feeds/Coalgirls.ini | 6 + config/feeds/Commie.ini | 6 + config/feeds/DameDesuYo.ini | 9 + config/feeds/FFF.ini | 7 + config/feeds/GANGO.ini | 4 + config/feeds/GoodJobMedia.ini | 7 + config/feeds/Harunatsu.ini | 6 + config/feeds/Hatsuyuki.ini | 7 + config/feeds/Hiryuu.ini | 6 + config/feeds/HoshiNoYume.ini | 7 + config/feeds/Kaitou.ini | 6 + config/feeds/Kametsu.ini | 6 + config/feeds/Kantai.ini | 6 + config/feeds/Mezashite.ini | 6 + config/feeds/Mori.ini | 6 + config/feeds/PAS.ini | 6 + config/feeds/SallySubs.ini | 6 + config/feeds/SquareSubs.ini | 6 + config/feeds/Tsundere.ini | 6 + config/feeds/UTW.ini | 7 + config/feeds/gg.ini | 6 + config/groupsBlacklist.ini | 31 + config/groupsGoldlist.ini | 77 ++ config/groupsGreylist.ini | 18 + config/pedanticPriority.ini | 20 + config/priority.ini | 61 ++ config/specials.ini | 8 + config/webfeeds.ini | 35 + data/anidb.extra.dat | 93 ++ db.sql | 54 ++ nginx.conf | 28 + rc.local | 10 + src/Animarr.php | 401 +++++++++ src/Animarr/AniDB.php | 313 +++++++ src/Animarr/Database.php | 425 +++++++++ src/Animarr/Downloader.php | 404 +++++++++ src/Animarr/Extractor/AnimeBytesExtractor.php | 75 ++ src/Animarr/Extractor/Extractor.php | 14 + src/Animarr/Extractor/SceneExtractor.php | 270 ++++++ src/Animarr/Filter.php | 232 +++++ src/Animarr/Release/MultiRelease.php | 89 ++ src/Animarr/Release/Release.php | 836 ++++++++++++++++++ src/Animarr/Request.php | 253 ++++++ src/Animarr/Selector.php | 282 ++++++ src/Animarr/Source/AniDex.php | 187 ++++ src/Animarr/Source/AnimeBytes.php | 224 +++++ src/Animarr/Source/HorribleSubs.php | 82 ++ src/Animarr/Source/HorribleSubsOld.php | 109 +++ src/Animarr/Source/Nyaa.php | 133 +++ src/Animarr/Source/NyaaSi.php | 167 ++++ src/Animarr/Source/Source.php | 12 + src/Animarr/Source/SourceList.php | 37 + src/Animarr/Source/WebFeed.php | 185 ++++ src/Animarr/Torrent/Base32.php | 84 ++ src/Animarr/Torrent/Torrent.php | 306 +++++++ src/AutoLoader.php | 16 + src/ImportOldDatabase.php | 128 +++ src/MagnetService.js | 78 ++ web/add.php | 95 ++ web/bg.jpg | Bin 0 -> 120382 bytes web/common.php | 117 +++ web/css/base.css | 25 + web/css/bootstrap-theme.min.css | 6 + web/css/bootstrap-theme.min.css.map | 1 + web/css/bootstrap.min.css | 6 + web/css/bootstrap.min.css.map | 1 + web/del.php | 22 + web/dopoll.php | 8 + web/fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes web/fonts/glyphicons-halflings-regular.svg | 288 ++++++ web/fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes web/fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes web/fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes web/get.php | 23 + web/groups.php | 136 +++ web/index.php | 37 + web/js/bootstrap.min.js | 7 + web/list.php | 176 ++++ web/logs.php | 60 ++ web/recentgroups.php | 99 +++ web/release.php | 92 ++ web/show.php | 182 ++++ web/titles.php | 54 ++ web/top.php | 111 +++ 91 files changed, 7770 insertions(+) create mode 100755 Animarr.sh create mode 100644 INSTALL create mode 100644 LICENSE create mode 100755 config.ini create mode 100644 config/exceptions.ini create mode 100644 config/feeds/Asenshi.ini create mode 100644 config/feeds/Chihiro.ini create mode 100644 config/feeds/Coalgirls.ini create mode 100644 config/feeds/Commie.ini create mode 100644 config/feeds/DameDesuYo.ini create mode 100755 config/feeds/FFF.ini create mode 100644 config/feeds/GANGO.ini create mode 100644 config/feeds/GoodJobMedia.ini create mode 100644 config/feeds/Harunatsu.ini create mode 100644 config/feeds/Hatsuyuki.ini create mode 100644 config/feeds/Hiryuu.ini create mode 100644 config/feeds/HoshiNoYume.ini create mode 100755 config/feeds/Kaitou.ini create mode 100755 config/feeds/Kametsu.ini create mode 100644 config/feeds/Kantai.ini create mode 100644 config/feeds/Mezashite.ini create mode 100644 config/feeds/Mori.ini create mode 100644 config/feeds/PAS.ini create mode 100644 config/feeds/SallySubs.ini create mode 100644 config/feeds/SquareSubs.ini create mode 100644 config/feeds/Tsundere.ini create mode 100644 config/feeds/UTW.ini create mode 100644 config/feeds/gg.ini create mode 100644 config/groupsBlacklist.ini create mode 100644 config/groupsGoldlist.ini create mode 100644 config/groupsGreylist.ini create mode 100644 config/pedanticPriority.ini create mode 100644 config/priority.ini create mode 100644 config/specials.ini create mode 100644 config/webfeeds.ini create mode 100755 data/anidb.extra.dat create mode 100644 db.sql create mode 100644 nginx.conf create mode 100644 rc.local create mode 100644 src/Animarr.php create mode 100644 src/Animarr/AniDB.php create mode 100644 src/Animarr/Database.php create mode 100755 src/Animarr/Downloader.php create mode 100644 src/Animarr/Extractor/AnimeBytesExtractor.php create mode 100755 src/Animarr/Extractor/Extractor.php create mode 100755 src/Animarr/Extractor/SceneExtractor.php create mode 100755 src/Animarr/Filter.php create mode 100755 src/Animarr/Release/MultiRelease.php create mode 100755 src/Animarr/Release/Release.php create mode 100644 src/Animarr/Request.php create mode 100755 src/Animarr/Selector.php create mode 100644 src/Animarr/Source/AniDex.php create mode 100644 src/Animarr/Source/AnimeBytes.php create mode 100644 src/Animarr/Source/HorribleSubs.php create mode 100644 src/Animarr/Source/HorribleSubsOld.php create mode 100755 src/Animarr/Source/Nyaa.php create mode 100644 src/Animarr/Source/NyaaSi.php create mode 100755 src/Animarr/Source/Source.php create mode 100644 src/Animarr/Source/SourceList.php create mode 100644 src/Animarr/Source/WebFeed.php create mode 100644 src/Animarr/Torrent/Base32.php create mode 100755 src/Animarr/Torrent/Torrent.php create mode 100755 src/AutoLoader.php create mode 100644 src/ImportOldDatabase.php create mode 100644 src/MagnetService.js create mode 100755 web/add.php create mode 100644 web/bg.jpg create mode 100755 web/common.php create mode 100755 web/css/base.css create mode 100644 web/css/bootstrap-theme.min.css create mode 100644 web/css/bootstrap-theme.min.css.map create mode 100644 web/css/bootstrap.min.css create mode 100644 web/css/bootstrap.min.css.map create mode 100755 web/del.php create mode 100755 web/dopoll.php create mode 100644 web/fonts/glyphicons-halflings-regular.eot create mode 100644 web/fonts/glyphicons-halflings-regular.svg create mode 100644 web/fonts/glyphicons-halflings-regular.ttf create mode 100644 web/fonts/glyphicons-halflings-regular.woff create mode 100644 web/fonts/glyphicons-halflings-regular.woff2 create mode 100644 web/get.php create mode 100755 web/groups.php create mode 100755 web/index.php create mode 100644 web/js/bootstrap.min.js create mode 100644 web/list.php create mode 100755 web/logs.php create mode 100644 web/recentgroups.php create mode 100755 web/release.php create mode 100755 web/show.php create mode 100644 web/titles.php create mode 100644 web/top.php diff --git a/Animarr.sh b/Animarr.sh new file mode 100755 index 0000000..a9caa66 --- /dev/null +++ b/Animarr.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +cd "$(dirname "$(realpath $0)")" + +CONFIG_FILE="${1}" +if [[ "$CONFIG_FILE" == "" ]]; then + CONFIG_FILE="config.ini" +fi + + +#php src/Animarr.php "$CONFIG_FILE" & +#DAEMON_PID=$! + + +MAGNET_FOLDER=$(awk -F "=" '/magnet.service.folder/ {print $2}' "$CONFIG_FILE") +TORRENT_FOLDER=$(awk -F "=" '/torrent.cache.folder/ {print $2}' "$CONFIG_FILE") + +nodejs src/MagnetService.js "${MAGNET_FOLDER}" "${TORRENT_FOLDER}" & +MAGNET_PID=$! + +SERVER_HOST=$(awk -F "=" '/server.host/ {print $2}' "$CONFIG_FILE") +SERVER_PORT=$(awk -F "=" '/server.port/ {print $2}' "$CONFIG_FILE") + +function finish { + #kill $DAEMON_PID + kill $MAGNET_PID +} +trap finish EXIT + +rm "config_${SERVER_PORT}.ini" + +ln -s "$CONFIG_FILE" "config_${SERVER_PORT}.ini" + +php src/Animarr.php "$CONFIG_FILE" + +#php -S "$SERVER_HOST:$SERVER_PORT" -t web/ + + diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..4e8f799 --- /dev/null +++ b/INSTALL @@ -0,0 +1,14 @@ +Requires >= PHP 7.2 and postgres >= 9.4. PHP-FPM/nginx recommended if you want the web interface. + +Some of these packages can be installed via: +apt install php-cli php-pgsql php-curl php-mbstring postgresql postgresql-client + +You will have to create and use the db.sql schema to create what animarr needs. + +Optional web dependencies can be installed this way: +apt install nginx php-fpm + +If you want magnet fetching, it uses nodejs with some other stuff. Figure that out. + +Example config files and scripts are setup to use the /opt/animarr/Animarr install path for this code. Modify at your discretion. +These have comments in them to help you on the way \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8bafc56 --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2019 DataHoarder + +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: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +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. \ No newline at end of file diff --git a/config.ini b/config.ini new file mode 100755 index 0000000..421687f --- /dev/null +++ b/config.ini @@ -0,0 +1,221 @@ +#Config file for Animarr + +#Force a global search of everything tracked, clearing the downloaded episodes information +#search.force=true +#search.forceclear=true +#Force a global refresh of everything tracked, using information in the database. Recommended when settings change! +#refresh.force=true +#search.forcenew=true + +server.host=0.0.0.0 +server.port=8083 + +#Default download folder +download.folder=/CHANGE_THIS_PATH_TO_YOUR_OWN/Anime/Series + +magnet.service.enable=true +magnet.service.folder=/opt/animarr/magnets +magnet.service.command.timeout=600 +magnet.unknownRelease.wait=true +torrent.cache.folder=/opt/animarr/torrents +#This setting will add failed torrents as empty torrents for URLs, or read them +torrent.cache.addEmpty=true + +#Automatically match new downloads and track those shows! +post.autotrack=false +#Only copy episodes matched as the current version +post.matchrelease=true +#Delete old episodes found in download folder +post.deleteold=true +#Delete failed episodes (mismatch, bad CRC, etc.) +post.deletefailed=true + +post.specials=true +post.verifycrc=true + +torrent.folder.blackhole=/CHANGE_THIS_PATH_TO_YOUR_OWN/AutoDL/add/Anime +torrent.folder.finished=/CHANGE_THIS_PATH_TO_YOUR_OWN/AutoDL/finished/Anime + +torrent.folder.private.blackhole=/CHANGE_THIS_PATH_TO_YOUR_OWN/AutoDL/add/AnimeSeeding +torrent.folder.private.finished=/CHANGE_THIS_PATH_TO_YOUR_OWN/AutoDL/finished/AnimeSeeding + +tracker.domain.private[]=animebytes.tv +tracker.domain.private[]=bakabt.me +#Seconds to wait between fetching torrents +tracker.private.fetchDelay=1 + +log.path=/opt/animarr/animarr.log +database.anidb=data/anidb.cache.dat +database.anidb.extra=data/anidb.extra.dat +#include config/exceptions.ini +#database.folder=/opt/animarr/database +database.psql.user=animarr +database.psql.password=YOUR_POSTGRES_PASSWORD +database.psql.host=127.0.0.1 +database.psql.dbname=animarr +database.api.folder=/opt/animarr/database/api +#Force cleanup of old episodes/releases on database +database.forceclean=true + +interval.poll.tracker=10 +interval.poll.finished=5 +interval.poll.new=300 + +#Will send a webhook for every episode added +#webhook.episode.added[]=https://test.com/your.hook?extra + + +#AnimeBytes +tracker.animebytes.enable=true +#CATEGORY_RAW, CATEGORY_SOFTSUBS, CATEGORY_HARDSUBS, CATEGORY_SUBS, CATEGORY_ALL +tracker.animebytes.category=CATEGORY_SUBS +tracker.animebytes.scrapeUrl=https://animebytes.tv/scrape.php +tracker.animebytes.auth.username= +tracker.animebytes.auth.passkeyFile=keys/AnimeBytes.key +tracker.animebytes.goldlist.trusted=true +tracker.animebytes.trusted[HorribleSubs]=true + +#NyaaTorrents (OLD, DISABLED) +tracker.nyaa.enable=false +#FILTER_ALL, FILTER_REMAKES, FILTER_TRUSTED_ONLY, FILTER_APLUS_ONLY +tracker.nyaa.filter=FILTER_REMAKES +#CATEGORY_ANIME_RAW, CATEGORY_ANIME_ENGLISH, CATEGORY_ANIME_NON_ENGLISH +tracker.nyaa.category=CATEGORY_ANIME_ENGLISH +tracker.nyaa.rss.baseurl=https://www.nyaa.se/?page=rss +tracker.nyaa.unknown.source[HorribleSubs]=WEB +tracker.nyaa.unknown.source[CR]=WEB +tracker.nyaa.unknown.source[CReep]=WEB +tracker.nyaa.unknown.source.default=TV +tracker.nyaa.unknown.quality.default=720 +tracker.nyaa.unknown.videoCodec.default=H264 + +#NyaaSi +tracker.nyaasi.enable=true +#FILTER_ALL, FILTER_REMAKES, FILTER_TRUSTED_ONLY, FILTER_APLUS_ONLY +tracker.nyaasi.filter=FILTER_REMAKES +#CATEGORY_ANIME_RAW, CATEGORY_ANIME_ENGLISH, CATEGORY_ANIME_NON_ENGLISH +tracker.nyaasi.category=CATEGORY_ANIME_ENGLISH +tracker.nyaasi.rss.baseurl=https://nyaa.si/?page=rss +tracker.nyaasi.api.baseurl=https://nyaa.si/api/ +tracker.nyaasi.unknown.source[HorribleSubs]=WEB +tracker.nyaasi.unknown.source[CR]=WEB +tracker.nyaasi.unknown.source[CReep]=WEB +tracker.nyaasi.unknown.source.default=TV +tracker.nyaasi.unknown.quality.default=720 +tracker.nyaasi.unknown.videoCodec.default=H264 +tracker.nyaasi.goldlist.trusted=true +tracker.nyaasi.trusted[Chihiro]=true +tracker.nyaasi.trusted[Tsundere]=true +tracker.nyaasi.trusted[HorribleSubs]=true +tracker.nyaasi.trusted[SallySubs]=true + +#AniDex.info +tracker.anidex.enable=true +#SELECTOR_BATCH, SELECTOR_RAW, SELECTOR_REMAKES. SELECTOR_DEFAULT = BATCH + REMAKES. Depending on filterMode, it will include singles +tracker.anidex.selector=SELECTOR_BATCH +#LANGUAGE_ALL, LANGUAGE_ENGLISH +tracker.anidex.language=LANGUAGE_ENGLISH +#FILTER_MODE_INCLUDE, FILTER_MODE_ONLY +tracker.anidex.filterMode=FILTER_MODE_INCLUDE +tracker.anidex.ajax.baseurl=https://anidex.info/ajax/page.ajax.php?page=torrents +tracker.anidex.unknown.source.default=TV +tracker.anidex.unknown.quality.default=720 +tracker.anidex.unknown.videoCodec.default=H264 +tracker.anidex.trusted[Doki]=true +tracker.anidex.trusted[Chihiro]=true +tracker.anidex.trusted[Tsundere]=true +tracker.anidex.trusted[HorribleSubs]=true +tracker.anidex.trusted[SallySubs]=true +tracker.anidex.unknown.source[HorribleSubs]=WEB +tracker.anidex.goldlist.trusted=true + +#HorribleSubs RSS feed with magnet links +tracker.hs.enable=true +tracker.hs.rss.baseurl=https://horriblesubs.info/rss.php?res=all +tracker.hs.unknown.source[HorribleSubs]=WEB +tracker.hs.unknown.source[CR]=WEB +tracker.hs.unknown.source[CReep]=WEB +tracker.hs.unknown.source.default=WEB +tracker.hs.unknown.quality.default=720 +tracker.hs.unknown.videoCodec.default=H264 + +#HorribleSubs Base Feed +tracker.hsold.enable=true +tracker.hsold.feed.baseurl=https://horriblesubs.info/lib/latest.php?mode=batch +tracker.hsold.unknown.source[HorribleSubs]=WEB +tracker.hsold.unknown.source[CR]=WEB +tracker.hsold.unknown.source[CReep]=WEB +tracker.hsold.unknown.source.default=WEB +tracker.hsold.unknown.quality.default=720 +tracker.hsold.unknown.videoCodec.default=H264 + +#include config/webfeeds.ini + +anidb.titles.url=http://anidb.net/api/anime-titles.dat.gz +anidb.query.languages[]=en +anidb.query.languages[]=x-jat +anidb.query.minlength=4 + + +#Poll that is done at start, checks any missing files between starts +tracker.startpoll.limit=300 + +#Poll that gets run with search terms for new shows +tracker.firstpoll.limit=-1 + +#Poll that gets run every X minutes while the program runs +tracker.poll.limit=0 + +#Minimum number of seeds that torrents need. +filter.minseeds=0 +#Number of seconds before current time where seed number will be ignored +filter.newseed.time=2400 +#Whether to allow dubs or not +filter.dubs=true +#Remove invalid download URLs from releases +filter.invalidDownload=true +#Remove other random stuff +filter.keyword.blacklist[]=vostfr + +#Ignore these file extensions, if found +filter.extension.ignore[]=rar +filter.extension.ignore[]=zip +filter.extension.ignore[]=7z +filter.extension.ignore[]=ass +filter.extension.ignore[]=ssa +filter.extension.ignore[]=srt +filter.extension.ignore[]=sfv +filter.extension.ignore[]=xdelta +filter.extension.ignore[]=flac +filter.extension.ignore[]=m4a +filter.extension.ignore[]=mp3 +filter.extension.ignore[]=aac +filter.extension.ignore[]=mds +filter.extension.ignore[]=iso +filter.extension.ignore[]=vob +filter.extension.ignore[]=flv +filter.extension.ignore[]=wmv +filter.extension.ignore[]=ts +filter.extension.ignore[]=m2ts +filter.extension.ignore[]=dvd5 +filter.extension.ignore[]=dvd9 + +filter.extension.greylist[]=avi +filter.extension.greylist[]=mp4 +filter.extension.greylist[]=ogm +filter.extension.greylist[]=wmv +filter.extension.greylist[]=mpg +filter.extension.greylist[]=mpeg + + +#include config/groupsGoldlist.ini + +#include config/groupsGreylist.ini + +#include config/groupsBlacklist.ini + +#include config/priority.ini + +#include config/pedanticPriority.ini + +#include config/specials.ini diff --git a/config/exceptions.ini b/config/exceptions.ini new file mode 100644 index 0000000..8885e70 --- /dev/null +++ b/config/exceptions.ini @@ -0,0 +1,9 @@ +anidb.exceptions[]={"aid": 98, "group": "HorribleSubs", "title": "Berserk", "newAid": 11851} +anidb.exceptions[]={"aid": 12942, "group": "HorribleSubs", "title": "Mahou Tsukai no Yome", "newAid": 11982} +anidb.exceptions[]={"aid": 12351, "group": "HorribleSubs", "title": "Black Clover", "newAid": 12665} +anidb.exceptions[]={"aid": 12414, "newAid": 11851} +anidb.exceptions[]={"aid": 9983, "group": "HorribleSubs", "title": "Houseki no Kuni", "newAid": 13165} +anidb.exceptions[]={"aid": 13435, "group": "HorribleSubs", "title": "Hinamatsuri", "newAid": 13434} +anidb.exceptions[]={"aid": 13435, "group": "Erai-raws", "title": "Hinamatsuri", "newAid": 13434} +anidb.exceptions[]={"aid": 13435, "group": "Vivid", "title": "Hinamatsuri", "newAid": 13434} +anidb.exceptions[]={"aid": 13435, "group": "RH", "title": "Hinamatsuri", "newAid": 13434} diff --git a/config/feeds/Asenshi.ini b/config/feeds/Asenshi.ini new file mode 100644 index 0000000..83af303 --- /dev/null +++ b/config/feeds/Asenshi.ini @@ -0,0 +1,6 @@ +tracker.webfeed[Asenshi]=https://asenshi.moe/feed/ +tracker.webfeed.Asenshi.unknown.group=Asenshi +tracker.webfeed.Asenshi.trusted[Asenshi]=true +tracker.webfeed.Asenshi.unknown.source.default=TV +tracker.webfeed.Asenshi.unknown.quality.default=720 +tracker.webfeed.Asenshi.unknown.videoCodec.default=H264 diff --git a/config/feeds/Chihiro.ini b/config/feeds/Chihiro.ini new file mode 100644 index 0000000..4b4fc2d --- /dev/null +++ b/config/feeds/Chihiro.ini @@ -0,0 +1,8 @@ +tracker.webfeed[Chihiro]=https://chihiro-subs.com/feed/ +#tracker.webfeed.Chihiro.pagination=false +#tracker.webfeed.Chihiro.modifyTitle=false +tracker.webfeed.Chihiro.unknown.group=Chihiro +tracker.webfeed.Chihiro.trusted[Chihiro]=true +tracker.webfeed.Chihiro.unknown.source.default=TV +tracker.webfeed.Chihiro.unknown.quality.default=720 +tracker.webfeed.Chihiro.unknown.videoCodec.default=H264 diff --git a/config/feeds/Coalgirls.ini b/config/feeds/Coalgirls.ini new file mode 100644 index 0000000..8139290 --- /dev/null +++ b/config/feeds/Coalgirls.ini @@ -0,0 +1,6 @@ +tracker.webfeed[Coalgirls]=https://coalgirls.wakku.to/feed/ +tracker.webfeed.Coalgirls.unknown.group=Coalgirls +tracker.webfeed.Coalgirls.trusted[Coalgirls]=true +tracker.webfeed.Coalgirls.unknown.source.default=TV +tracker.webfeed.Coalgirls.unknown.quality.default=720 +tracker.webfeed.Coalgirls.unknown.videoCodec.default=H264 diff --git a/config/feeds/Commie.ini b/config/feeds/Commie.ini new file mode 100644 index 0000000..c9e4715 --- /dev/null +++ b/config/feeds/Commie.ini @@ -0,0 +1,6 @@ +tracker.webfeed[Commie]=https://commiesubs.com/feed/ +tracker.webfeed.Commie.unknown.group=Commie +tracker.webfeed.Commie.trusted[Commie]=true +tracker.webfeed.Commie.unknown.source.default=TV +tracker.webfeed.Commie.unknown.quality.default=720 +tracker.webfeed.Commie.unknown.videoCodec.default=H264 diff --git a/config/feeds/DameDesuYo.ini b/config/feeds/DameDesuYo.ini new file mode 100644 index 0000000..4f72f13 --- /dev/null +++ b/config/feeds/DameDesuYo.ini @@ -0,0 +1,9 @@ +tracker.webfeed[DameDesuYo]=https://damedesuyo.com/?feed=rss2 +tracker.webfeed.DameDesuYo.unknown.group=DameDesuYo +tracker.webfeed.DameDesuYo.trusted[DameDesuYo]=true +tracker.webfeed.DameDesuYo.trusted[BlurayDesuYo]=true +tracker.webfeed.DameDesuYo.trusted[GJM-DDY]=true +tracker.webfeed.DameDesuYo.trusted[DDY]=true +tracker.webfeed.DameDesuYo.unknown.source.default=TV +tracker.webfeed.DameDesuYo.unknown.quality.default=720 +tracker.webfeed.DameDesuYo.unknown.videoCodec.default=H264 diff --git a/config/feeds/FFF.ini b/config/feeds/FFF.ini new file mode 100755 index 0000000..a4ea16b --- /dev/null +++ b/config/feeds/FFF.ini @@ -0,0 +1,7 @@ +tracker.webfeed[FFF]=http://fffansubs.org/?feed=rss2 +tracker.webfeed.FFF.unknown.group=FFF +tracker.webfeed.FFF.trusted[FFF]=true +tracker.webfeed.FFF.trusted[FFFpeeps]=true +tracker.webfeed.FFF.unknown.source.default=TV +tracker.webfeed.FFF.unknown.quality.default=720 +tracker.webfeed.FFF.unknown.videoCodec.default=H264 diff --git a/config/feeds/GANGO.ini b/config/feeds/GANGO.ini new file mode 100644 index 0000000..fb33a25 --- /dev/null +++ b/config/feeds/GANGO.ini @@ -0,0 +1,4 @@ +tracker.webfeed[GANGO]=https://goodanimenevergetsold.wordpress.com/feed/ +tracker.webfeed.GANGO.unknown.group=GANGO +tracker.webfeed.GANGO.trusted[GANGO]=true +tracker.webfeed.GANGO.unknown.videoCodec.default=H264 \ No newline at end of file diff --git a/config/feeds/GoodJobMedia.ini b/config/feeds/GoodJobMedia.ini new file mode 100644 index 0000000..afffebf --- /dev/null +++ b/config/feeds/GoodJobMedia.ini @@ -0,0 +1,7 @@ +tracker.webfeed[GoodJobMedia]=https://www.goodjobmedia.com/feed/ +tracker.webfeed.GoodJobMedia.unknown.group=GJM +tracker.webfeed.GoodJobMedia.trusted[GJM]=true +tracker.webfeed.GoodJobMedia.trusted[GJM-DDY]=true +tracker.webfeed.GoodJobMedia.unknown.source.default=TV +tracker.webfeed.GoodJobMedia.unknown.quality.default=720 +tracker.webfeed.GoodJobMedia.unknown.videoCodec.default=H264 diff --git a/config/feeds/Harunatsu.ini b/config/feeds/Harunatsu.ini new file mode 100644 index 0000000..4d81eb4 --- /dev/null +++ b/config/feeds/Harunatsu.ini @@ -0,0 +1,6 @@ +tracker.webfeed[Harunatsu]=https://harunatsufansubs.com/feed/ +tracker.webfeed.Harunatsu.unknown.group=Harunatsu +tracker.webfeed.Harunatsu.trusted[Harunatsu]=true +tracker.webfeed.Harunatsu.unknown.source.default=TV +tracker.webfeed.Harunatsu.unknown.quality.default=720 +tracker.webfeed.Harunatsu.unknown.videoCodec.default=H264 diff --git a/config/feeds/Hatsuyuki.ini b/config/feeds/Hatsuyuki.ini new file mode 100644 index 0000000..92a158a --- /dev/null +++ b/config/feeds/Hatsuyuki.ini @@ -0,0 +1,7 @@ +tracker.webfeed[Hatsuyuki]=https://hatsuyuki-fansubs.com/?format=feed&type=rss +tracker.webfeed.Hatsuyuki.pagination=false +tracker.webfeed.Hatsuyuki.unknown.group=Hatsuyuki +tracker.webfeed.Hatsuyuki.trusted[Hatsuyuki]=true +tracker.webfeed.Hatsuyuki.unknown.source.default=TV +tracker.webfeed.Hatsuyuki.unknown.quality.default=720 +tracker.webfeed.Hatsuyuki.unknown.videoCodec.default=H264 diff --git a/config/feeds/Hiryuu.ini b/config/feeds/Hiryuu.ini new file mode 100644 index 0000000..badafa8 --- /dev/null +++ b/config/feeds/Hiryuu.ini @@ -0,0 +1,6 @@ +tracker.webfeed[Hiryuu]=http://www.hiryuufansubs.com/feed/ +tracker.webfeed.Hiryuu.unknown.group=Hiryuu +tracker.webfeed.Hiryuu.trusted[Hiryuu]=true +tracker.webfeed.DameDesuYo.unknown.source.default=TV +tracker.webfeed.DameDesuYo.unknown.quality.default=720 +tracker.webfeed.DameDesuYo.unknown.videoCodec.default=H264 diff --git a/config/feeds/HoshiNoYume.ini b/config/feeds/HoshiNoYume.ini new file mode 100644 index 0000000..cb04172 --- /dev/null +++ b/config/feeds/HoshiNoYume.ini @@ -0,0 +1,7 @@ +tracker.webfeed[HoshiNoYume]=https://hoshinoyumefs.wordpress.com/feed/ +tracker.webfeed.HoshiNoYume.unknown.group=HnY +tracker.webfeed.HoshiNoYume.trusted[HnY]=true +tracker.webfeed.HoshiNoYume.trusted[HoshiNoYume]=true +tracker.webfeed.HoshiNoYume.unknown.source.default=DVD +tracker.webfeed.HoshiNoYume.unknown.quality.default=480 +tracker.webfeed.HoshiNoYume.unknown.videoCodec.default=H264_10 diff --git a/config/feeds/Kaitou.ini b/config/feeds/Kaitou.ini new file mode 100755 index 0000000..abfed93 --- /dev/null +++ b/config/feeds/Kaitou.ini @@ -0,0 +1,6 @@ +tracker.webfeed[Kaitou]=https://kaitou-fansubs.com/?feed=rss2 +tracker.webfeed.Kaitou.unknown.group=Kaitou +tracker.webfeed.Kaitou.trusted[Kaitou]=true +tracker.webfeed.Kaitou.unknown.source.default=TV +tracker.webfeed.Kaitou.unknown.quality.default=720 +tracker.webfeed.Kaitou.unknown.videoCodec.default=H264 diff --git a/config/feeds/Kametsu.ini b/config/feeds/Kametsu.ini new file mode 100755 index 0000000..6f08c75 --- /dev/null +++ b/config/feeds/Kametsu.ini @@ -0,0 +1,6 @@ +tracker.webfeed[Kametsu]=https://projects.kametsu.com/feed +tracker.webfeed.Kametsu.unknown.group=Kametsu +tracker.webfeed.Kametsu.trusted[Kametsu]=true +tracker.webfeed.Kametsu.unknown.source.default=BLURAY +tracker.webfeed.Kametsu.unknown.quality.default=720 +tracker.webfeed.Kametsu.unknown.videoCodec.default=H264 diff --git a/config/feeds/Kantai.ini b/config/feeds/Kantai.ini new file mode 100644 index 0000000..67b3913 --- /dev/null +++ b/config/feeds/Kantai.ini @@ -0,0 +1,6 @@ +tracker.webfeed[Kantai]=https://kantai.subs.moe/feed/ +tracker.webfeed.Kantai.unknown.group=Kantai +tracker.webfeed.Kantai.trusted[Kantai]=true +tracker.webfeed.Kantai.unknown.source.default=TV +tracker.webfeed.Kantai.unknown.quality.default=720 +tracker.webfeed.Kantai.unknown.videoCodec.default=H264 diff --git a/config/feeds/Mezashite.ini b/config/feeds/Mezashite.ini new file mode 100644 index 0000000..6128d46 --- /dev/null +++ b/config/feeds/Mezashite.ini @@ -0,0 +1,6 @@ +tracker.webfeed[Mezashite]=http://mezashite.net/feed/ +tracker.webfeed.Mezashite.unknown.group=Mezashite +tracker.webfeed.Mezashite.trusted[Mezashite]=true +tracker.webfeed.Mezashite.unknown.source.default=TV +tracker.webfeed.Mezashite.unknown.quality.default=720 +tracker.webfeed.Mezashite.unknown.videoCodec.default=H264 diff --git a/config/feeds/Mori.ini b/config/feeds/Mori.ini new file mode 100644 index 0000000..b063d28 --- /dev/null +++ b/config/feeds/Mori.ini @@ -0,0 +1,6 @@ +tracker.webfeed[Mori]=https://mori.subs.moe/feed/ +tracker.webfeed.Mori.unknown.group=Mori +tracker.webfeed.Mori.trusted[Mori]=true +tracker.webfeed.Mori.unknown.source.default=TV +tracker.webfeed.Mori.unknown.quality.default=720 +tracker.webfeed.Mori.unknown.videoCodec.default=H264 diff --git a/config/feeds/PAS.ini b/config/feeds/PAS.ini new file mode 100644 index 0000000..82ea322 --- /dev/null +++ b/config/feeds/PAS.ini @@ -0,0 +1,6 @@ +tracker.webfeed[PAS]=https://asenshi.moe/feed/ +tracker.webfeed.PAS.unknown.group=PAS +tracker.webfeed.PAS.trusted[PAS]=true +tracker.webfeed.PAS.unknown.source.default=TV +tracker.webfeed.PAS.unknown.quality.default=720 +tracker.webfeed.PAS.unknown.videoCodec.default=H264 \ No newline at end of file diff --git a/config/feeds/SallySubs.ini b/config/feeds/SallySubs.ini new file mode 100644 index 0000000..c361693 --- /dev/null +++ b/config/feeds/SallySubs.ini @@ -0,0 +1,6 @@ +tracker.webfeed[SallySubs]=https://www.sallysubs.com/feed/ +tracker.webfeed.SallySubs.unknown.group=SallySubs +tracker.webfeed.SallySubs.trusted[SallySubs]=true +tracker.webfeed.SallySubs.unknown.source.default=TV +tracker.webfeed.SallySubs.unknown.quality.default=720 +tracker.webfeed.SallySubs.unknown.videoCodec.default=H264 diff --git a/config/feeds/SquareSubs.ini b/config/feeds/SquareSubs.ini new file mode 100644 index 0000000..efc7f78 --- /dev/null +++ b/config/feeds/SquareSubs.ini @@ -0,0 +1,6 @@ +tracker.webfeed[SquareSubs]=https://squaresubs.blogspot.com/feeds/posts/default?alt=rss +tracker.webfeed.SquareSubs.unknown.group=SquareSubs +tracker.webfeed.SquareSubs.trusted[SquareSubs]=true +tracker.webfeed.SquareSubs.unknown.source.default=DVD +tracker.webfeed.SquareSubs.unknown.quality.default=480 +tracker.webfeed.SquareSubs.unknown.videoCodec.default=H264_10 diff --git a/config/feeds/Tsundere.ini b/config/feeds/Tsundere.ini new file mode 100644 index 0000000..8f0b2b2 --- /dev/null +++ b/config/feeds/Tsundere.ini @@ -0,0 +1,6 @@ +tracker.webfeed[Tsundere]=https://tsundererips.wordpress.com/feed/ +tracker.webfeed.Tsundere.unknown.group=Tsundere +tracker.webfeed.Tsundere.trusted[Tsundere]=true +tracker.webfeed.Tsundere.unknown.source.default=TV +tracker.webfeed.Tsundere.unknown.quality.default=720 +tracker.webfeed.Tsundere.unknown.videoCodec.default=H264 diff --git a/config/feeds/UTW.ini b/config/feeds/UTW.ini new file mode 100644 index 0000000..9e599d4 --- /dev/null +++ b/config/feeds/UTW.ini @@ -0,0 +1,7 @@ +tracker.webfeed[UTW]=https://utw.me/feed/ +tracker.webfeed.UTW.unknown.group=UTW +tracker.webfeed.UTW.trusted[UTW]=true +tracker.webfeed.UTW.trusted[FTW]=true +tracker.webfeed.UTW.unknown.source.default=TV +tracker.webfeed.UTW.unknown.quality.default=720 +tracker.webfeed.UTW.unknown.videoCodec.default=H264 diff --git a/config/feeds/gg.ini b/config/feeds/gg.ini new file mode 100644 index 0000000..01ca785 --- /dev/null +++ b/config/feeds/gg.ini @@ -0,0 +1,6 @@ +tracker.webfeed[gg]=https://ggkthx.org/feed/ +tracker.webfeed.gg.unknown.group=gg +tracker.webfeed.gg.trusted[gg]=true +tracker.webfeed.gg.unknown.source.default=TV +tracker.webfeed.gg.unknown.quality.default=720 +tracker.webfeed.gg.unknown.videoCodec.default=H264 diff --git a/config/groupsBlacklist.ini b/config/groupsBlacklist.ini new file mode 100644 index 0000000..94508f5 --- /dev/null +++ b/config/groupsBlacklist.ini @@ -0,0 +1,31 @@ + +#Anything here will be filtered out +filter.groups.blacklist[]=DeadFish +filter.groups.blacklist[]=BudLightSubs +filter.groups.blacklist[]=BakedFish +filter.groups.blacklist[]=Mites +filter.groups.blacklist[]=AnimeRG +filter.groups.blacklist[]=NH +filter.groups.blacklist[]=trash +filter.groups.blacklist[]=CR +filter.groups.blacklist[]=CR-1080p +filter.groups.blacklist[]=CR-720p +filter.groups.blacklist[]=CR-480p +filter.groups.blacklist[]=seiya +filter.groups.blacklist[]=CReep +filter.groups.blacklist[]=Crunchy +filter.groups.blacklist[]=notmaifuni +filter.groups.blacklist[]=rubadubdub +filter.groups.blacklist[]=FuniRip +filter.groups.blacklist[]=DLSuki +filter.groups.blacklist[]=Hi10 +filter.groups.blacklist[]=Buddy Waters +filter.groups.blacklist[]=LostYears +filter.groups.blacklist[]=PuyaSubs! +filter.groups.blacklist[]=Golumpa +filter.groups.blacklist[]=rubadubdubthanksforthegrub +filter.groups.blacklist[]=Tompel Fansub +filter.groups.blacklist[]=FreakCrSuBuS +filter.groups.blacklist[]=GHOST +#No group +#filter.groups.blacklist[]=UNKNOWN diff --git a/config/groupsGoldlist.ini b/config/groupsGoldlist.ini new file mode 100644 index 0000000..a9dc1ef --- /dev/null +++ b/config/groupsGoldlist.ini @@ -0,0 +1,77 @@ + +#Anything here will be preferred if they have the same source, or if they have the same priority + + +#DameDesuYo +filter.groups.goldlist[]=BlurayDesuYo +filter.groups.goldlist[]=DameDesuYo +filter.groups.goldlist[]=DDY + +filter.groups.goldlist[]=UTW +filter.groups.goldlist[]=Chihiro +filter.groups.goldlist[]=Coalgirls +filter.groups.goldlist[]=FFF +filter.groups.goldlist[]=Asenshi +filter.groups.goldlist[]=Mezashite +filter.groups.goldlist[]=GJM +filter.groups.goldlist[]=CBM +filter.groups.goldlist[]=LNS +filter.groups.goldlist[]=Mazui +filter.groups.goldlist[]=Anime-Koi +filter.groups.goldlist[]=Underwater +filter.groups.goldlist[]=WhyNot +filter.groups.goldlist[]=Vivid +filter.groups.goldlist[]=SallySubs +filter.groups.goldlist[]=Elysium +filter.groups.goldlist[]=THORA +filter.groups.goldlist[]=KAA +filter.groups.goldlist[]=-__-' +filter.groups.goldlist[]=coldhell +filter.groups.goldlist[]=Hiryuu +filter.groups.goldlist[]=eraser +filter.groups.goldlist[]=Doki +filter.groups.goldlist[]=Hatsuyuki +filter.groups.goldlist[]=Mori +filter.groups.goldlist[]=MTBB +filter.groups.goldlist[]=Kantai + + +#Kametsu +filter.groups.goldlist[]=Kametsu +filter.groups.goldlist[]=deanzel +filter.groups.goldlist[]=Shirσ + +#( ͡° ͜ʖ ͡°) +filter.groups.goldlist[]=Commie +filter.groups.goldlist[]=gg +filter.groups.goldlist[]=Coldgirls + +#Collabs that do not follow normal naming +#Underwater + UTW +filter.groups.goldlist[]=FTW +#UTW +filter.groups.goldlist[]=Meguca +filter.groups.goldlist[]=Victorique +filter.groups.goldlist[]=Chibiki +#FFF +filter.groups.goldlist[]=FFFpeeps +#coldhell +filter.groups.goldlist[]=CH +#Hiryuu + CTSS +filter.groups.goldlist[]=CTSHiryuu + +#Extra Groups +filter.groups.goldlist[]=Dekinai +filter.groups.goldlist[]=a-S +filter.groups.goldlist[]=E-D +filter.groups.goldlist[]=kuchikirukia +filter.groups.goldlist[]=Scum +filter.groups.goldlist[]=Foxtrot +filter.groups.goldlist[]=Chyuu +filter.groups.goldlist[]=PAS +filter.groups.goldlist[]=RH +filter.groups.goldlist[]=pyroneko +filter.groups.goldlist[]=Kaitou +filter.groups.goldlist[]=:v +filter.groups.goldlist[]=ACSS +filter.groups.goldlist[]=SCP-2223 diff --git a/config/groupsGreylist.ini b/config/groupsGreylist.ini new file mode 100644 index 0000000..90e5c96 --- /dev/null +++ b/config/groupsGreylist.ini @@ -0,0 +1,18 @@ +#Anything here will be put at the bottom of the priority +#filter.groups.greylist[]=HorribleSubs +filter.groups.greylist[]=Merchant +filter.groups.greylist[]=MK +filter.groups.greylist[]=anon +filter.groups.greylist[]=Anon +filter.groups.greylist[]=AnonSubs +filter.groups.greylist[]=Anonymous +filter.groups.greylist[]=KamiFS +filter.groups.greylist[]=An-Online +filter.groups.greylist[]=An-Online.com +filter.groups.greylist[]=anime4life +filter.groups.greylist[]=Erai-raws +filter.groups.greylist[]=Ohys-Raws +filter.groups.greylist[]=Raws +filter.groups.greylist[]=raws +filter.groups.greylist[]=UNKNOWN + diff --git a/config/pedanticPriority.ini b/config/pedanticPriority.ini new file mode 100644 index 0000000..62cf865 --- /dev/null +++ b/config/pedanticPriority.ini @@ -0,0 +1,20 @@ + + +#Pedantic priority, used when two releases are the same priority. First one is picked, otherwise newest one. If same date, first one is picked. Keys are videoCodec, audioCodec, crc +priority.pedantic.list[]={"videoCodec": "H264_10", "audioCodec": "FLAC", "crc": true} +priority.pedantic.list[]={"videoCodec": "H264", "audioCodec": "FLAC", "crc": true} +priority.pedantic.list[]={"videoCodec": "H264_10", "audioCodec": "FLAC"} +priority.pedantic.list[]={"videoCodec": "H264", "audioCodec": "FLAC"} +priority.pedantic.list[]={"videoCodec": "H264_10", "crc": true} +priority.pedantic.list[]={"videoCodec": "H264", "crc": true} +priority.pedantic.list[]={"videoCodec": "UNKNOWN", "audioCodec": "FLAC", "crc": true} +priority.pedantic.list[]={"videoCodec": "UNKNOWN", "audioCodec": "FLAC"} +priority.pedantic.list[]={"videoCodec": "UNKNOWN", "crc": true} +priority.pedantic.list[]={"videoCodec": "H264_10"} +priority.pedantic.list[]={"videoCodec": "H264"} +priority.pedantic.list[]={"videoCodec": "HEVC"} +priority.pedantic.list[]={"videoCodec": "MPEG4"} +#Empty required to catch what is missing +priority.pedantic.list[]={} + +priority.pedantic.preferPublic=false diff --git a/config/priority.ini b/config/priority.ini new file mode 100644 index 0000000..0deff70 --- /dev/null +++ b/config/priority.ini @@ -0,0 +1,61 @@ + +#Priority list. Highest complete match will have priority. Keys are source, quality, best, trusted + +#Just everything marked as best, with order to fix old duplicates +priority.list[]={"source": "BLURAY", "quality": 1080, "best": true} +priority.list[]={"source": "BLURAY", "quality": 720, "best": true} +priority.list[]={"source": "BLURAY", "best": true} + +#1080p Bluray +priority.list[]={"source": "BLURAY", "quality": 1080, "trusted": true} +priority.list[]={"source": "BLURAY", "quality": 1080} + +#720p Bluray +priority.list[]={"source": "BLURAY", "quality": 720, "trusted": true} +priority.list[]={"source": "BLURAY", "quality": 720} + +priority.list[]={"quality": 1080, "best": true} +priority.list[]={"quality": 720, "best": true} +priority.list[]={"best": true} + +#Other Bluray +priority.list[]={"source": "BLURAY", "trusted": true} +priority.list[]={"source": "BLURAY"} + +#Other DVD +priority.list[]={"source": "DVD", "trusted": true} +priority.list[]={"source": "DVD"} + +#Other LASERDISC +priority.list[]={"source": "LASERDISC", "trusted": true} +priority.list[]={"source": "LASERDISC"} + +#TV +priority.list[]={"source": "TV", "quality": 1080, "trusted": true} +priority.list[]={"source": "TV", "quality": 720, "trusted": true} +priority.list[]={"source": "TV", "best": true} +priority.list[]={"source": "TV", "trusted": true} + +#WEB +priority.list[]={"source": "WEB", "quality": 1080, "trusted": true} +priority.list[]={"source": "WEB", "quality": 720, "trusted": true} +priority.list[]={"source": "WEB", "trusted": true} +priority.list[]={"source": "WEB", "quality": 1080} +priority.list[]={"source": "WEB", "quality": 720} + +#TV non-trusted +priority.list[]={"source": "TV", "quality": 1080} +priority.list[]={"source": "TV", "quality": 720} + +#Other +priority.list[]={"quality": 1080, "trusted": true} +priority.list[]={"quality": 720, "trusted": true} +priority.list[]={"quality": 576, "trusted": true} +priority.list[]={"quality": 480, "trusted": true} +priority.list[]={"trusted": true} +priority.list[]={"quality": 1080} +priority.list[]={"quality": 720} +priority.list[]={"quality": 576} +priority.list[]={"quality": 480} +#Empty required to catch what is missing +priority.list[]={} diff --git a/config/specials.ini b/config/specials.ini new file mode 100644 index 0000000..71ac1c1 --- /dev/null +++ b/config/specials.ini @@ -0,0 +1,8 @@ + +#Specials configuration + +handler.specials=true +handler.allowed.specials[]=OP +handler.allowed.specials[]=ED +handler.allowed.specials[]=OVA +handler.allowed.specials[]=PV diff --git a/config/webfeeds.ini b/config/webfeeds.ini new file mode 100644 index 0000000..0de3d85 --- /dev/null +++ b/config/webfeeds.ini @@ -0,0 +1,35 @@ + +#include config/feeds/GoodJobMedia.ini +#include config/feeds/Commie.ini +#include config/feeds/Asenshi.ini +#include config/feeds/DameDesuYo.ini +#include config/feeds/FFF.ini +#include config/feeds/Mezashite.ini +#include config/feeds/Chihiro.ini +#include config/feeds/Harunatsu.ini +#include config/feeds/Hatsuyuki.ini +##include config/feeds/SallySubs.ini +#include config/feeds/Tsundere.ini +#include config/feeds/Coalgirls.ini +##include config/feeds/Hiryuu.ini +#include config/feeds/SquareSubs.ini +#include config/feeds/HoshiNoYume.ini +#include config/feeds/UTW.ini +#include config/feeds/Kametsu.ini +##include config/feeds/Kaitou.ini +#include config/feeds/Kantai.ini +#include config/feeds/Mori.ini +#include config/feeds/gg.ini + +#include config/feeds/GANGO.ini +#include config/feeds/PAS.ini + +#Not needed due to having anidex.info already +#tracker.webfeed[Doki]=https://anidex.info/rss/group/1 +tracker.webfeed.Doki.modifyTitle=false +tracker.webfeed.Doki.pagination=false +tracker.webfeed.Doki.unknown.group=Doki +tracker.webfeed.Doki.trusted[Doki]=true +tracker.webfeed.Doki.unknown.source.default=TV +tracker.webfeed.Doki.unknown.quality.default=720 +tracker.webfeed.Doki.unknown.videoCodec.default=H264 diff --git a/data/anidb.extra.dat b/data/anidb.extra.dat new file mode 100755 index 0000000..c1171d7 --- /dev/null +++ b/data/anidb.extra.dat @@ -0,0 +1,93 @@ +11815|2|x-jat|Koukaku no Pandora +11265|2|en|Ajin: Demi-Human +11265|2|en|Ajin - Demi-Human +11577|2|en|Ajin Season 2 +11746|1|x-jat|Hibike! Euphonium S2 +7486|1|x-jat|Shinryaku! Ika Musume S1 +8294|1|x-jat|Shinryaku! Ika Musume S2 +10206|2|en|Jojo's Bizarre Adventure Stardust Crusaders Season 01 +10835|2|en|Jojo's Bizarre Adventure Stardust Crusaders Season 02 +10960|2|x-jat|Shouwa Genroku Rakugo Shinjuu +12062|1|x-jat|Shouwa Genroku Rakugo Shinjuu S2 +11881|2|x-jat|Sakamoto Desu ga +12116|2|x-jat|Zaregoto +12116|2|en|Zaregoto 01 - The Beheading Cycle +12235|1|x-jat|Little Witch Academia TV +12235|2|x-jat|Little Witch Academia +12112|2|x-jat|Saiki Kusuo no Psi-nan +4900|1|x-jat|Moonlight Mile S1 +5020|1|x-jat|Moonlight Mile S2 +7525|3|x-jat|Oreimo S1 +9134|3|x-jat|Oreimo S2 +7525|2|x-jat|Ore no Imouto ga Konna ni Kawaii Wake ga Nai First Season +9134|2|x-jat|Ore no Imouto ga Konna ni Kawaii Wake ga Nai Second Season +9134|1|x-jat|Ore no Imouto ga Konna ni Kawaii Wake ga Nai 2 +9324|2|en|The World God Only Knows: Tenri-hen +12407|2|en|Pokemon the Series: Sun & Moon +11905|2|x-jat|Youji Senki +919|3|x-jat|Dangaioh +12411|2|x-jat|Akiba`s Trip +11828|1|x-jat|Shokugeki no Souma S2 +12136|2|x-jat|ACCA - 13-Territory Inspection Department +9348|1|x-jat|Aikatsu! +12198|1|x-jat|12-Sai. Chicchana Mune no Tokimeki S2 +9016|2|en|Folktales from Japan +11488|1|x-jat|Binan Koukou Chikyuu Bouei Bu Love! S2 +8242|2|en|Kaiji 2 - Backslide Arc +8242|2|en|Kaiji S2 - Against All Rules +8242|1|x-jat|Kaiji S2 +11343|2|x-jat|Concrete Revolutio +11901|2|x-jat|Okusama ga Seitokaichou!+! +11690|2|x-jat|Active Raid +11835|4|en|Tabi machi Late Show +10197|1|x-jat|Seitokai Yakuindomo 2 +11992|1|x-jat|Kono Subarashii Sekai ni Shukufuku wo! 2 +11992|0|x-jat|Kono Subarashii Sekai ni Shukufuku wo! 2 +11982|2|x-jat|Mahou Tsukai no Yome ~Hoshi Matsu Hito~ +11974|2|x-jat|Sword Oratoria +10944|1|x-jat|Shingeki no Kyojin S2 +10944|1|x-jat|Shingeki no Kyojin (Season 2) +10944|1|x-jat|Shingeki no Kyojin 2 +11221|2|x-jat|Saenai Heroine no Sodatekata ♭ +11221|2|x-jat|Saenai Heroine no Sodatekata S2 +11221|2|x-jat|Saekano S2 +#11739|2|x-jat|Boku no Hero Academia S2 +12238|2|x-jat|Shuumatsu Nani Shitemasuka Isogashii Desuka Sukutte Moratte Ii Desuka +12238|2|x-jat|Shuumatsu Nani Shitemasu ka - Isogashii desu ka - Sukutte Moratte Ii desu ka +11480|3|x-jat|Netoge +13017|1|x-jat|Youkai Apartment no Yuuga na Nichijou +12141|1|en|High School Star Musical S2 +11991|4|en|Haikyuu!! Karasuno High School vs Shiratorizawa Academy +13033|4|en|Owarimonogatari Second Season +13033|4|en|Owarimonogatari 2nd Season +13033|1|en|Owarimonogatari S2 +13033|4|en|OWARIMONOGATARI Second Season +13033|4|en|OWARIMONOGATARI 2nd Season +9332|2|x-jat|Mondaiji-tachi ga Isekai kara Kuru Sou Desu yo +712|2|x-jat|Ninku +13153|2|x-jat|Youkoso Jitsuryoku Shijou Shugi no Kyoushitsu +10321|1|x-jat|Senki Zesshou Symphogear GX +12665|2|x-jat|Black Clover (TV) +12944|1|x-jat|Osomatsu-san S2 +12944|2|x-jat|Osomatsu-san 2 +12227|0|x-jat|UQ Holder! Mahou Sensei Negima! 2 +12227|2|x-jat|UQ Holder! +12712|2|x-jat|Kujira no Kora wa Sajou ni Utau - Children of the Whales +12942|2|x-jat|The Ancient Magus' Bride +13244|1|x-jat|Shokugeki no Soma S3 +13256|2|x-jat|Shoujo Shuumatsu Ryokou (Girls' Last Tour) +13038|1|x-jat|Itsudatte Bokura no Koi wa 10 cm Datta. +12954|1|x-jat|Hozuki no Reitetsu S2 +12897|1|x-jat|Love Live! Sunshine!! S2 +12897|2|x-jat|Love Live! Sunshine!! 2nd Season +12897|2|x-jat|Love Live! Sunshine!! Season 2 +162|2|en|Star Gunman Bismarck +13385|2|en|Ito Junji Collection +12500|2|x-jat|Yuki Yuna wa Yusha de Aru - Yusha no Shou +4953|2|en|The Gutsy Frog +13152|2|x-jat|Shoujo☆Kageki Revue Starlight +13899|2|x-jat|Boogiepop wa Warawanai (2019) +531|2|x-jat|Madou King Granzort +13795|2|x-jat|Kemurikusa +14111|2|x-jat|Kaguya-sama wa Kokurasetai +13533|2|x-jat|Date A Live S3 \ No newline at end of file diff --git a/db.sql b/db.sql new file mode 100644 index 0000000..2518744 --- /dev/null +++ b/db.sql @@ -0,0 +1,54 @@ + +CREATE TABLE releases +( + release_id TEXT PRIMARY KEY, + aid INTEGER NOT NULL, + release_type INTEGER NOT NULL, + release_data jsonb, + release_date INTEGER +); +CREATE INDEX releases_aid_key ON releases(aid); + +CREATE TABLE episodes_releases +( + aid INTEGER NOT NULL, + episode INTEGER NOT NULL, + release_id TEXT NOT NULL REFERENCES releases(release_id) ON DELETE CASCADE ON UPDATE CASCADE, + release_type INTEGER NOT NULL, + release_data jsonb NOT NULL + +); +CREATE INDEX episodes_releases_aid_key ON episodes_releases(aid); +CREATE INDEX episodes_releases_release_id_key ON episodes_releases(release_id); +ALTER TABLE ONLY episodes_releases ADD CONSTRAINT episodes_releases_pkey PRIMARY KEY (release_id, aid, episode, release_type); + +CREATE TABLE tracked_releases +( + aid INTEGER NOT NULL, + episode INTEGER NOT NULL, + release_id TEXT NOT NULL REFERENCES releases(release_id) ON DELETE CASCADE ON UPDATE CASCADE, + release_type INTEGER NOT NULL, + release_data jsonb NOT NULL +); +CREATE INDEX tracked_releases_aid_key ON tracked_releases(aid); +CREATE INDEX tracked_releases_release_id_key ON tracked_releases(release_id); +ALTER TABLE ONLY tracked_releases ADD CONSTRAINT tracked_releases_pkey PRIMARY KEY (release_id, aid, episode, release_type); + +CREATE TABLE tracked +( + aid INTEGER PRIMARY KEY, + episode_count INTEGER, + prefer_groups TEXT, + download_folder TEXT NOT NULL, + flags INTEGER +); + +CREATE TABLE alternate_titles +( + aid INTEGER, + title TEXT NOT NULL, + type INTEGER, + language TEXT NOT NULL +); + +ALTER TABLE ONLY alternate_titles ADD CONSTRAINT alternate_titles_pkey PRIMARY KEY (aid, type, language, title); diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..aa7350a --- /dev/null +++ b/nginx.conf @@ -0,0 +1,28 @@ +#Place this under sites-available or so + +server { + listen 8083 default_server; + listen [::]:8083 default_server; + + #Change this to your Animarr folder path + root /opt/animarr/Animarr/web; + + # Add index.php to the list if you are using PHP + index index.php index.html index.htm index.nginx-debian.html; + + server_name _; + + location / { + # First attempt to serve request as file, then + # as directory, then fall back to displaying a 404. + try_files $uri $uri/ =404; + } + + # pass PHP scripts to FastCGI server + # + location ~ \.php$ { + include snippets/fastcgi-php.conf; + fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; + } + +} diff --git a/rc.local b/rc.local new file mode 100644 index 0000000..9301049 --- /dev/null +++ b/rc.local @@ -0,0 +1,10 @@ +#!/bin/bash + + +SHELL=/bin/bash +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin + +#run this as user animarr +su - animarr -c 'cd "/opt/animarr/Animarr" && screen -fa -dmS "animarr" bash -c "./Animarr.sh; exec bash"' + +exit 0 diff --git a/src/Animarr.php b/src/Animarr.php new file mode 100644 index 0000000..e174c23 --- /dev/null +++ b/src/Animarr.php @@ -0,0 +1,401 @@ +getAlternateTitles() as $t){ + $aniDB->addEntryName($t["aid"], $t["language"], $t["title"], $t["type"]); +} + +$extractor = new \Animarr\Extractor\SceneExtractor($aniDB); + +$sources = new SourceList(); + +if(Database::getConfigKey("tracker.animebytes.enable", false)){ + $abCategory = constant(\Animarr\Source\AnimeBytes::class ."::" . Database::getConfigKey("tracker.animebytes.category", "CATEGORY_SUBS")); + + Downloader::log("Starting AnimeBytes..."); + $ab = new \Animarr\Source\AnimeBytes(new \Animarr\Extractor\AnimeBytesExtractor($aniDB), $abCategory); + $sources->addSource($ab); +} + +if(Database::getConfigKey("tracker.nyaa.enable", false)){ + $nyaaFilter = constant(\Animarr\Source\Nyaa::class ."::" . Database::getConfigKey("tracker.nyaa.filter", "FILTER_REMAKES")); + $nyaaCategory = constant(\Animarr\Source\Nyaa::class ."::" . Database::getConfigKey("tracker.nyaa.category", "CATEGORY_ANIME_ENGLISH")); + + Downloader::log("Starting Nyaa..."); + $nyaa = new \Animarr\Source\Nyaa($extractor, $nyaaCategory, $nyaaFilter); + $sources->addSource($nyaa); +} + +if(Database::getConfigKey("tracker.nyaasi.enable", false)){ + $nyaaSiFilter = constant(\Animarr\Source\NyaaSi::class ."::" . Database::getConfigKey("tracker.nyaasi.filter", "FILTER_REMAKES")); + $nyaaSiCategory = constant(\Animarr\Source\NyaaSi::class ."::" . Database::getConfigKey("tracker.nyaasi.category", "CATEGORY_ANIME_ENGLISH")); + + Downloader::log("Starting NyaaSi..."); + $nyaaSi = new \Animarr\Source\NyaaSi($extractor, $nyaaSiCategory, $nyaaSiFilter); + $sources->addSource($nyaaSi); +} + +if(Database::getConfigKey("tracker.anidex.enable", true)){ + $anidexFilterMode = constant(\Animarr\Source\AniDex::class ."::" . Database::getConfigKey("tracker.anidex.filterMode", "FILTER_MODE_INCLUDE")); + $anidexSelector = constant(\Animarr\Source\AniDex::class ."::" . Database::getConfigKey("tracker.anidex.selector", "SELECTOR_DEFAULT")); + $anidexLanguage = constant(\Animarr\Source\AniDex::class ."::" . Database::getConfigKey("tracker.anidex.language", "LANGUAGE_ENGLISH")); + + Downloader::log("Starting AniDex..."); + $anidex = new \Animarr\Source\AniDex($extractor, $anidexLanguage, $anidexSelector, $anidexFilterMode); + $sources->addSource($anidex); +} + +if(Database::getConfigKey("tracker.hs.enable", false)){ + Downloader::log("Starting HorribleSubs..."); + $hs = new \Animarr\Source\HorribleSubs($extractor); + $sources->addSource($hs); +} + +if(Database::getConfigKey("tracker.hsold.enable", false)){ + Downloader::log("Starting HorribleSubsOld..."); + $hs = new \Animarr\Source\HorribleSubsOld($extractor); + $sources->addSource($hs); +} + +foreach(Database::getConfigKey("tracker.webfeed", []) as $name => $feed){ + Downloader::log("Starting WebFeed $name..."); + $feed = new \Animarr\Source\WebFeed($extractor, Database::getConfigKey("tracker.webfeed[$name].", $feed), $name); + $sources->addSource($feed); +} + +$baseFilters = [ + [Filter::PROPERTY_SEEDS, Filter::LESS_THAN, (int) Database::getConfigKey("filter.minseeds", 2), [ + [Filter::PROPERTY_UPLOAD_DATE, Filter::LESS_THAN, time() - Database::getConfigKey("filter.newseed.time", 2400), Filter::ACTION_DROP] + ]], + [Filter::PROPERTY_ORIGINAL_TITLE, Filter::MATCH, "/[ _]preview/i", Filter::ACTION_DROP], + //[Filter::PROPERTY_ORIGINAL_TITLE, Filter::MATCH, "/[ _]short/i", Filter::ACTION_DROP], + //[Filter::PROPERTY_ORIGINAL_TITLE, Filter::MATCH, "/[ _]movie/i", Filter::ACTION_DROP], + //[Filter::PROPERTY_ORIGINAL_TITLE, Filter::MATCH, "/[ _]special/i", Filter::ACTION_DROP], +]; + +foreach(Database::getConfigKey("filter.keyword.blacklist", []) as $kw){ + $baseFilters[] = [Filter::PROPERTY_ORIGINAL_TITLE, Filter::MATCH, "/$kw/i", Filter::ACTION_DROP]; +} + +if(Database::getConfigKey("filter.dubs", true)){ + $baseFilters[] = [Filter::PROPERTY_ORIGINAL_TITLE, Filter::MATCH, "/(funi|simul)\\-?(dub|dl)/i", Filter::ACTION_DROP]; + $baseFilters[] = [Filter::PROPERTY_TAGS, Filter::MATCH, "/^(eng|english|)[ ]?dub(bed|)$/i", Filter::ACTION_DROP]; +} + +if(Database::getConfigKey("filter.invalidDownload", true)){ + $baseFilters[] = [Filter::PROPERTY_DOWNLOAD_LINK, Filter::LAMBDA, function($val){ + return !Torrent::isTorrentDownloadPath($val); + }, Filter::ACTION_DROP]; +} + +foreach (Database::getConfigKey("filter.groups.blacklist", []) as $group){ + $baseFilters[] = [Filter::PROPERTY_GROUP, Filter::EQUAL_THAN, $group, Filter::ACTION_DROP]; +} + +$extraQuery = ""; + +if(Database::getConfigKey("filter.groups.onlyGreyGoldGroups", false)){ + $extraQuery .= " && (".implode(" | ", Database::getConfigKey("filter.groups.goldlist", [])).")"; + //foreach(Database::getConfigKey("filter.groups.goldlist", []) as $g){ + // $extraQuery .= "[$g] | + //} + $baseFilters[] = [Filter::PROPERTY_GROUP, Filter::LAMBDA, function($group){ + foreach(array_merge([$group], explode("-", $group)) as $g){ + + if(in_array($g, Database::getConfigKey("filter.groups.goldlist", []), true)){ + return false; + }else if(in_array($g, Database::getConfigKey("filter.groups.greylist", []), true)){ + return false; + } + } + return true; + }, Filter::ACTION_DROP]; +} + +$filter = new Filter(Filter::ACTION_KEEP, $baseFilters); + +if(Database::getConfigKey("filter.invalidDownload", true)){ + $baseFilters[] = [Filter::PROPERTY_DOWNLOAD_LINK, Filter::LAMBDA, function($val){ + return !Torrent::isTorrentDownloadPath($val); + }, Filter::ACTION_DROP]; +} + +$existingFilter = new Filter(Filter::ACTION_KEEP, $baseFilters); + + +$selector = new \Animarr\Selector(); + +$downloader = new Downloader($database); + + +$checkLimit = (int) Database::getConfigKey("tracker.startpoll.limit", 1200); + +$counter = 0; +$fastCounter = 0; + +/** @var Release[] $releases */ +$releases = []; + +/* +foreach(scandir("data/database/track") as $f){ + if(preg_match("/anidb\\-([0-9]+)$/", $f, $matches) > 0){ + $aid = intval($matches[1]); + if(!$database->isTracking($aid)){ + echo "Want to track ".$aniDB->getAnime($aid)["title"]."\n"; + if(trim(fgets(STDIN)) === "y"){ + $database->addTrack($aid); + } + } + } + + +foreach($aniDB->getAllMatches("baka to test ni") as $aid => $lev){ + $info = $aniDB->getAnime($aid); + echo $info["title"] . ": $lev\n"; +} +}*/ + +$episodes = []; + +if(Database::getConfigKey("refresh.force", false)){ + foreach($database->getTracked() as $data){ + Downloader::log("Forcing refresh of \"".$aniDB->getAnime($data["aid"])["title"]."\"!"); + $episodes[$data["aid"]] = $database->getAnimeEpisodes($data["aid"]); + } +} + + +while(true){ + try{ + + if(Database::getConfigKey("interval.poll.anidb") !== false and ($counter % Database::getConfigKey("interval.poll.anidb", 172800)) === 0){ + Downloader::log("Doing anidb update..."); + foreach($database->getTracked() as $data){ + $xml = $aniDB->getAnimeData($data["aid"]); + Downloader::log("Fetched data of \"".$aniDB->getAnime($data["aid"])["title"]."\": " . strval($xml->type) . " (".$data["episode_count"]."/".$xml->episodecount.")"); + } + } + + if(Database::getConfigKey("interval.poll.new") !== false and ($counter % Database::getConfigKey("interval.poll.new", 60)) === 0){ + Downloader::log("Fetching new tracked..."); + foreach($database->getTracked() as $aid => $data){ + if(!$database->getTrackFlag($aid, Database::FLAG_LOCKED) and (($counter === 0 and Database::getConfigKey("search.force", false)) or $data["episode_count"] <= 0)){ + Downloader::log("Searching \"".$aniDB->getAnime($aid)["title"]."\" [anidb-$aid]"); + + if(($counter === 0 and Database::getConfigKey("search.forceclear", false)) or $data["episode_count"] < 0){ + $database->clearTrackedEpisodes($aid); + $database->updateTrackEpisodes($aid, 0); + $data = $database->getTrackInfo($aid); + }else if(($counter === 0 and Database::getConfigKey("search.force", false))){ + $database->updateTrackEpisodes($aid); + } + + $results = []; + + foreach($database->getAnimeReleases($aid) as $r){ + $results[] = $r; + } + + foreach($database->getAniDB()->getSearchQueries($aid, Database::getConfigKey("anidb.query.languages", ["en", "x-jat"])) as $q){ + if(strlen($q) < Database::getConfigKey("anidb.query.minlength", 4)){ + continue; + } + Downloader::log("Querying \"$q\""); + $results = array_merge($results, $sources->find($q, (int) Database::getConfigKey("tracker.firstpoll.limit", -1), $extraQuery)); + } + + Downloader::log("Found ".count($results)." result(s) [anidb-$aid]"); + + foreach($filter->applyFilter($results) as $release){ + $releases[$release->getId()] = [$release, true]; + Downloader::log("Found \"".$release->getOriginalTitle()."\""); + } + } + } + } + + if(Database::getConfigKey("interval.poll.tracker") !== false and ($counter % Database::getConfigKey("interval.poll.tracker", 10)) === 0){ + Downloader::log("Doing normal poll..."); + foreach($filter->applyFilter($sources->find(null, $checkLimit, $extraQuery)) as $release){ + if(!isset($releases[$release->getId()])){ + $releases[$release->getId()] = [$release, false]; + } + } + } + + if(count($releases) > 0){ + Downloader::log("Found ".count($releases)." new release(s), checking!"); + + foreach ($releases as $id => $r){ + /** @var Release $result */ + $result = $r[0]; + $result->setFilter($filter); + Downloader::debug("Checking \"".$result->getOriginalTitle()."\"..."); + $m = $database->matchRelease($result, Database::getConfigKey("database.forceclean", false)); + if($m === null){ + Downloader::log("Could not match \"".$result->getOriginalTitle()."\" (".$result->getTitle().")"); + continue; + } + + if(!$r[1] and !$m["new"] and !Database::getConfigKey("search.forcenew", false)){ + continue; + } + + if(($result->getType() === Release::TYPE_SINGLE and $result->getNumber() >= 0) or $result instanceof MultiRelease){ + foreach($result->getContents($extractor) as $rr){ + + $nm = $database->getAniDB()->matchRelease($rr); + + if($nm === null){ + Downloader::log("Invalid release \"".$rr->getOriginalTitle()."\" (base: \"".$result->getOriginalTitle()."\")"); + continue; + } + + if(!isset($episodes[$nm["aid"]])){ + $episodes[$nm["aid"]] = []; + } + + //if($m["new"]){ + Downloader::log("Found \"".$rr->getOriginalTitle()."\" for \"".$nm["title"]."\" (base: \"".$result->getOriginalTitle()."\")"); + //} + + $episodes[$nm["aid"]][$rr->getNumber()] = isset($episodes[$nm["aid"]][$rr->getNumber()]) ? $episodes[$nm["aid"]][$rr->getNumber()] or $m["new"] : $m["new"]; + } + }else{ + Downloader::log("Invalid release \"".$result->getOriginalTitle()."\""); + } + } + } + + + if(count($episodes) > 0){ + Downloader::log("Found ".count($episodes)." new shows(s) to match!"); + + foreach ($episodes as $aid => $list){ + Downloader::debug("Processing anidb-".$aid."..."); + if(!$database->isTracking($aid) or $database->getTrackFlag($aid, Database::FLAG_LOCKED)){ + continue; + } + $eList = $database->getAnimeEpisodes($aid); + + $info = $database->getAniDB()->getAnime($aid); + $groups = $database->getTrackGroups($aid); + + foreach ($list as $episode => $check){ + $trackEpisode = $database->getTrackEpisode($aid, $episode); + if($trackEpisode !== null){ + $trackEpisode = $existingFilter->applyFilterSingle($trackEpisode); + } + + if(isset($eList[$episode])){ + $best = $selector->findBestRelease($filter->applyFilter($eList[$episode]), $groups); + if($best === null){ + continue; + } + if($trackEpisode === null){ + $best->setFilter($filter); + $database->saveTrackEpisode($aid, $episode, $best); + $downloader->addToDownload($aid, $best); + }else{ + if($trackEpisode->getId() === $best->getId()){ //They are the same! + continue; + } + + if($selector->selectBest($trackEpisode, $best, $groups) === $trackEpisode){ //Other is still best! + continue; + } + $best->setFilter($filter); + $database->saveTrackEpisode($aid, $episode, $best); + + $downloader->addToDownload($aid, $best); + } + + $tList = $database->getTrackEpisodes($aid); + Downloader::log("Matching new episode $episode for \"".$info["title"]."\": \"".$best->getOriginalTitle()."\""); + } + } + + $database->updateTrackEpisodes($aid); + } + + Downloader::log("Trying to download torrents..."); + $downloader->handleNewDownloads(); + } + + + if(Database::getConfigKey("interval.poll.finished") !== false and ($counter % Database::getConfigKey("interval.poll.finished", 5)) === 0){ + Downloader::log("Polling finished downloads..."); + $downloader->setUseLink(false); + $added = $downloader->handleCompletedDownloads(Database::getConfigKey("torrent.folder.finished", "./Processing")); + $downloader->setUseLink(true); + $added += $downloader->handleCompletedDownloads(Database::getConfigKey("torrent.folder.private.finished", "./ProcessingPrivate")); + + if($added > 0){ + foreach(Database::getConfigKey("webhook.episodes.added", []) as $url){ + \Animarr\Request::getURL($url); + } + } + } + + //if($save){ + // Downloader::log("Saving database...", "SAVE"); + // $database->save(); + // Downloader::log("Database saved!", "SAVE"); + //} + + $releases = []; + + $episodes = []; + + sleep(60); + $checkLimit = (int) Database::getConfigKey("tracker.poll.limit", 0); + + $counter++; + + if(file_exists("dopoll.flag")){ + unlink("dopoll.flag"); + $counter = Database::getConfigKey("interval.poll.new", 60) * Database::getConfigKey("interval.poll.finished", 5) * Database::getConfigKey("interval.poll.tracker", 10); + $aniDB->resetCache($aniDBPath, false); + foreach($database->getAlternateTitles() as $t){ + $aniDB->addEntryName($t["aid"], $t["language"], $t["title"], $t["type"]); + } + } + + Torrent::$urls = []; + }catch(Exception $e){ + Downloader::log($e); + } + +} + +//$downloader = new \Animarr\Downloader($aniDB) + +//https://img7.anidb.net/pics/anime/177065.jpg diff --git a/src/Animarr/AniDB.php b/src/Animarr/AniDB.php new file mode 100644 index 0000000..191f597 --- /dev/null +++ b/src/Animarr/AniDB.php @@ -0,0 +1,313 @@ +initCache($path, $force); + $this->loadExceptions(); + } + + public function getAnimeAPI($aid, $fetch = true, $force = false){ + if(!$force and file_exists(Database::getConfigKey("database.api.folder", "./api") . "/$aid.xml")){ + $str = file_get_contents(Database::getConfigKey("database.api.folder", "./api") . "/$aid.xml"); + if(trim($str) != "" and trim($str) != 'banned'){ + return $str; + } + } + + if(!$fetch){ + return null; + } + + if(self::$ANIDB_API_LAST_REQUEST >= time() - 2){ + sleep(2); + } + $xml = Request::getURL(self::ANIDB_API_ENDPOINT . "?request=anime&client=" . self::ANIDB_API_CLIENT . "&clientver=" . self::ANIDB_API_CLIENTVER . "&protover=" . self::ANIDB_API_PROTOVER ."&aid=" . $aid); + file_put_contents(Database::getConfigKey("database.api.folder", "./api") . "/$aid.xml", $xml); + self::$ANIDB_API_LAST_REQUEST = time(); + return $xml; + } + + public function getAnimeData($aid){ + $xml = new \SimpleXMLElement($this->getAnimeAPI($aid, true, false)); + $cacheTime = filemtime(Database::getConfigKey("database.api.folder", "./api") . "/$aid.xml"); + $startTime = \DateTime::createFromFormat('Y-m-d', strval($xml->startdate)); + $endTime = isset($xml->enddate) ? \DateTime::createFromFormat('Y-m-d', strval($xml->enddate)) : PHP_INT_MAX; + $startTime = $startTime instanceof \DateTime ? $startTime->getTimestamp() : 0; + $endTime = $endTime instanceof \DateTime ? $endTime->getTimestamp() : PHP_INT_MAX; + if( + $endTime >= (time() - (Database::getConfigKey("database.api.enddelay", 336) * 3600)) + and + (time() - $cacheTime) >= (Database::getConfigKey("database.api.refreshdelay", 48) * 3600) + ){ + $xml = new \SimpleXMLElement($this->getAnimeAPI($aid, true, true)); + } + return $xml; + } + + private function loadExceptions(){ + foreach(Database::getConfigKey("anidb.exceptions", "[]") as $exception){ + $exception = json_decode($exception); + if(!isset($this->exceptions[$exception->aid])){ + $this->exceptions[$exception->aid] = []; + } + + $this->exceptions[$exception->aid][] = $exception; + } + } + + public function matchRelease(Release $release){ + $match = $this->matchTitle($release->getTitle()); + if($match !== null and isset($this->exceptions[$match["aid"]])){ + foreach($this->exceptions[$match["aid"]] as $exception){ + if(isset($exception->group) and $exception->group !== $release->getGroup()){ + continue; + } + + if(isset($exception->title) and $exception->title !== $release->getTitle()){ + continue; + } + + $match = $this->getAnime($exception->newAid); + } + } + + return $match; + } + + public function getAll(){ + return $this->db; + } + + public function getAllMatches($title, $limit = 20){ + $ids = []; + $ids2 = []; + $cleanTitle = strtolower($title); + + foreach ($this->titleToId as $t => $aid){ + $lev = levenshtein($cleanTitle, $t); + if($lev < 0 or isset($ids[$aid]) and $ids[$aid] < $lev){ + continue; + } + $ids[$aid] = $lev; + } + + $cleanTitle = $this->cleanTitle($cleanTitle); + + foreach ($this->titleToId as $t => $aid){ + if(strpos($t, $cleanTitle) !== false){ + $lev = levenshtein($cleanTitle, $t); + if($lev < 0 or isset($ids2[$aid]) and $ids2[$aid] < $lev){ + continue; + } + $ids2[$aid] = $lev; + } + } + + asort($ids); + asort($ids2); + + $returnIds = []; + + while((count($returnIds) < $limit or $limit === -1) and (count($ids) > 0 or count($ids2) > 0)){ + foreach ($ids2 as $aid => $lev){ + $returnIds[$aid] = $lev; + unset($ids2[$aid]); + break; + } + foreach ($ids as $aid => $lev){ + $returnIds[$aid] = $lev; + unset($ids[$aid]); + break; + } + } + + + //asort($returnIds); + + return $returnIds; + } + + public function matchTitle($title){ + if($title === ""){ + return null; + } + + $cleanTitle = $title; + if(isset($this->titleToId[$cleanTitle])){ + return $this->db[$this->titleToId[$cleanTitle]]; + } + + $cleanTitle = strtolower($cleanTitle); + if(isset($this->titleToId[$cleanTitle])){ + return $this->db[$this->titleToId[$cleanTitle]]; + } + + $cleanTitle = $this->cleanTitle($cleanTitle); + if(isset($this->titleToId[$cleanTitle])){ + return $this->db[$this->titleToId[$cleanTitle]]; + } + + $cleanTitle = str_replace(" ", "", $cleanTitle); + + if(isset($this->titleToId[$cleanTitle])){ + return $this->db[$this->titleToId[$cleanTitle]]; + } + + return null; + } + + public function getAnime($aid){ + if(isset($this->db[$aid])){ + return $this->db[$aid]; + } + + return null; + } + + public function getSearchQueries($aid, $langCodes = ["en", "x-jat"]){ + if(!isset($this->db[$aid])){ + return []; + } + + $queries = []; + + foreach($this->db[$aid]["languages"] as $langCode => $titles){ + if(in_array($langCode, $langCodes, true)){ + foreach($titles as $t){ + $baseTitle = strtolower($t["title"]); + $queries[$baseTitle] = $baseTitle; + + $t = $this->cleanTitle($baseTitle); + if(!isset($queries[$t])){ + $queries[$t] = $t; + } + + $t2 = $this->cleanTitle($baseTitle, " "); + if(!isset($queries[$t2])){ + $queries[$t2] = $t2; + } + } + } + } + + return $queries; + } + + private function addTitleToLookup($title, $aid, $priority = false){ + if(!isset($this->titleToId[$title]) or $priority){ + $this->titleToId[$title] = $aid; + } + } + + private function cleanBaseTitle($title, $replace = ""){ + return trim(preg_replace('!\s+!', ' ', str_ireplace(["the animation"], $replace, $title))); + } + + private function cleanTitle($title, $replace = ""){ + return trim(preg_replace('!\s+!', ' ', str_replace([" o "], [" wo "], str_replace([",", ":", "~", "-", "'", '"', "`", "/", "&", ".", "!", "the animation", " + "], $replace, strtolower($title))))); + } + + private function initCache($path, $force = false){ + if($force !== null and ($force or !file_exists($path) or filemtime($path) < (time() - 3600 * 36))){ //Download every 36 hours + $contents = file_get_contents(Database::getConfigKey("anidb.titles.url", "http://anidb.net/api/anime-titles.dat.gz")); + if(strlen($contents) > 4096){ + file_put_contents($path, zlib_decode($contents)); + } + touch($path); + } + + foreach(@file($path) as $line){ + if($line{0} == "#"){ + continue; + } + $fields = explode("|", trim($line)); + $aid = (int) $fields[0]; + $entryType = (int) $fields[1]; + $langCode = $fields[2]; + $title = $fields[3]; + + $this->addEntryName($aid, $langCode, $title, $entryType); + } + } + + public function resetCache($path, $force = false){ + $this->db = []; + $this->initCache($path, $force); + } + + public function loadExtra($path){ + @$this->initCache($path, null); + } + + public function addEntryName($aid, $langCode, $title, $entryType = 2){ + if(!isset($this->db[$aid])){ + $this->db[$aid] = [ + "aid" => $aid, + "title" => null, + "languages" => [] + ]; + } + + if(!isset($this->db[$aid]["languages"][$langCode])){ + $this->db[$aid]["languages"][$langCode] = []; + } + + if($title !== $this->cleanBaseTitle($title)){ + $this->db[$aid]["languages"][$langCode][] = ["type" => $entryType, "title" => $title]; + $title = $this->cleanBaseTitle($title); + } + + $this->db[$aid]["languages"][$langCode][] = ["type" => $entryType, "title" => $title]; + if($entryType <= 1){ + $this->db[$aid]["title"] = $title; + } + + $this->addTitleToLookup($title, $aid, true); + $this->addTitleToLookup(strtolower($title), $aid, true); + if(stripos($title, "ka?") !== false){ + $this->addTitleToLookup(rtrim(str_replace("ka?", "ka", strtolower($title)), '?!'), $aid, true); + } + + $this->addTitleToLookup($this->cleanTitle($title), $aid); + $this->addTitleToLookup(str_replace(" ", "", $this->cleanTitle($title)), $aid); + $this->addTitleToLookup(str_replace(" ", "", $this->cleanTitle($title) . " complete"), $aid); + $this->addTitleToLookup(str_replace(" ", "", $this->cleanTitle($title) . " complete series"), $aid); + + if(preg_match("/^(.+)([ \t]+season)[ \t]+([0-9])$/iu", $title, $matches) > 0){ + $title = $matches[1] . " S". $matches[3]; + $this->db[$aid]["languages"][$langCode][] = ["type" => $entryType === $entryType, "title" => $title]; + if($entryType === 1){ + $this->db[$aid]["title"] = $title; + } + + $this->addTitleToLookup($title, $aid, true); + + $this->addTitleToLookup(strtolower($title), $aid, true); + + $this->addTitleToLookup($this->cleanTitle($title), $aid); + $this->addTitleToLookup(str_replace(" ", "", $this->cleanTitle($title)), $aid); + $this->addTitleToLookup(str_replace(" ", "", $this->cleanTitle($title) . " complete"), $aid); + $this->addTitleToLookup(str_replace(" ", "", $this->cleanTitle($title) . " complete series"), $aid); + + } + } + + private $titleToId = []; + + private $db = []; + + private $exceptions = []; +} diff --git a/src/Animarr/Database.php b/src/Animarr/Database.php new file mode 100644 index 0000000..cde64b5 --- /dev/null +++ b/src/Animarr/Database.php @@ -0,0 +1,425 @@ + 0){ + $lines = array_merge($lines, file($matches[1])); + } + continue; + } + + $d = explode("=", $line); + $key = trim(array_shift($d)); + $value = trim(implode("=", $d)); + + switch ($value){ + case "true": + case "on": + case "yes": + $value = true; + break; + case "false": + case "off": + case "no": + $value = false; + break; + } + + if(preg_match("/^([^\\[\\]]+)\\[([^\\]=]*)\\]$/", $key, $matches) > 0){ + if(!isset(self::$config[$matches[1]])){ + self::$config[$matches[1]] = []; + } + if($matches[2] !== ""){ + self::$config[$matches[1]][$matches[2]] = $value; + }else{ + self::$config[$matches[1]][] = $value; + } + }else{ + self::$config[$key] = $value; + } + } + } + + public static function getConfigKey($key, $default = null){ + return isset(self::$config[$key]) ? self::$config[$key] : $default; + } + + public function __construct(AniDB $anidb){ + $this->anidb = $anidb; + + $this->extractor = new SceneExtractor($anidb); + + $user = Database::getConfigKey("database.psql.user"); + $pass = Database::getConfigKey("database.psql.password"); + $host = Database::getConfigKey("database.psql.host"); + $dbname = Database::getConfigKey("database.psql.dbname", "animarr"); + $this->db = pg_connect("host=$host user=$user password=$pass dbname=$dbname"); + + + //$this->isTracked = @json_decode(file_get_contents($this->path . "/track/all.json"), true); + //if(!is_array($this->isTracked)){ + // $this->isTracked = []; + //} + } + + public function getAniDB(){ + return $this->anidb; + } + + public function getTracked(){ + $entries = []; + $q = pg_query($this->db, "SELECT * FROM tracked;"); + while(($row = pg_fetch_assoc($q, null)) !== false){ + $entries[$row["aid"]] = $row; + } + return $entries; + } + + public function getAlternateTitles($aid = null){ + $entries = []; + if($aid === null){ + $q = pg_query($this->db, "SELECT * FROM alternate_titles;"); + }else{ + $q = pg_query_params($this->db, 'SELECT * FROM alternate_titles WHERE aid = $1;', [(int) $aid]); + } + while(($row = pg_fetch_assoc($q, null)) !== false){ + $entries[] = $row; + } + + return $entries; + } + + public function addAlternateTitle($aid, $langCode, $title, $entryType = 2){ + pg_query_params($this->db, 'INSERT INTO alternate_titles (aid, language, title, type) VALUES ($1, $2, $3, $4);', [$aid, $langCode, $title, $entryType]); + $this->anidb->addEntryName($aid, $langCode, $title, $entryType); + } + + public function matchRelease(Release $release, $force = false){ + $match = $this->anidb->matchRelease($release); + if($match !== null){ + return ["aid" => $match["aid"], "new" => $this->addReleaseToDatabase($match["aid"], $release, $force)]; + } + + return null; + } + + public function isReleaseInDatabase(Release $release){ + if(isset($this->cacheExists[$release->getId()])){ + return $this->cacheExists[$release->getId()]; + } + return $this->cacheExists[$release->getId()] = pg_fetch_assoc(pg_query_params($this->db, 'SELECT COUNT(release_id) as count FROM releases WHERE release_id = $1;', [$release->getId()]))["count"] > 0; + } + + private function addReleaseToDatabase($aid, Release $release, $force = false){ + if($release->getParent() !== null){ + return false; + } + + if($release->getId() === null or $release->getId() === ""){ + return false; + + } + + $isInDb = $this->isReleaseInDatabase($release); + + if($isInDb){ + if(!$force){ + return false; + } + + pg_query_params($this->db, 'DELETE FROM episodes_releases WHERE release_id = $1;', [$release->getId()]); + pg_query_params($this->db, 'INSERT INTO releases (release_id, aid, release_type, release_data, release_date) VALUES ($1, $2, $3, $4, $5) ON CONFLICT ON CONSTRAINT releases_pkey DO UPDATE SET aid = $2, release_type = $3, release_data = $4, release_date = $5;', [$release->getId(), $aid, $release->getType(), $release->encode(), $release->getUploadDate()]); + }else{ + pg_query_params($this->db, 'INSERT INTO releases (release_id, aid, release_type, release_data, release_date) VALUES ($1, $2, $3, $4, $5) ON CONFLICT ON CONSTRAINT releases_pkey DO UPDATE SET aid = $2, release_type = $3, release_data = $4, release_date = $5;', [$release->getId(), $aid, $release->getType(), $release->encode(), $release->getUploadDate()]); + } + + unset($this->cacheExists[$release->getId()]); + + if($release instanceof MultiRelease){ + foreach ($release->getContents($this->extractor) as $r){ + $m = $this->anidb->matchRelease($r); + if($r->getType() === Release::TYPE_SINGLE and $r->getNumber() >= 0 and $m !== null/* and $m["aid"] === $aid*/){ + pg_query_params($this->db, 'INSERT INTO episodes_releases (aid, episode, release_id, release_type, release_data) VALUES ($1, $2, $3, $4, $5) ON CONFLICT ON CONSTRAINT episodes_releases_pkey DO UPDATE SET aid = $1, episode = $2, release_id = $3, release_type = $4, release_data = $5;', [$m["aid"], $r->getNumber(), $r->getId(), $r->getType(), $r->encode()]); + } + } + }elseif($release->getType() === Release::TYPE_SINGLE and $release->getNumber() >= 0){ + pg_query_params($this->db, 'INSERT INTO episodes_releases (aid, episode, release_id, release_type, release_data) VALUES ($1, $2, $3, $4, $5);', [$aid, $release->getNumber(), $release->getId(), $release->getType(), $release->encode()]); + } + + return !$isInDb; + } + + /** + * @param $aid + * @return Release[][] + */ + public function getAnimeEpisodes($aid){ + $q = pg_query_params($this->db, 'SELECT * FROM episodes_releases WHERE aid = $1 AND release_type = $2;', [$aid, Release::TYPE_SINGLE]); + + $episodes = []; + + while(($row = pg_fetch_assoc($q, null)) !== false){ + if(!isset($episodes[$row["episode"]])){ + $episodes[$row["episode"]] = []; + } + + $episodes[$row["episode"]][$row["release_id"]] = Release::undecode($row["release_data"]); + } + + return $episodes; + } + + /** + * @param $aid + * @return Release[] + */ + public function getRecentReleases($limit = 100, $aid = null, $type = null){ + if($aid !== null){ + if($type !== null){ + $q = pg_query_params($this->db, 'SELECT * FROM releases WHERE aid = $1 AND release_type = $2 ORDER BY release_date DESC NULLS LAST LIMIT $3;', [$aid, $type, $limit]); + }else{ + $q = pg_query_params($this->db, 'SELECT * FROM releases WHERE aid = $1 ORDER BY release_date DESC NULLS LAST LIMIT $2;', [$aid, $limit]); + } + }else{ + $q = pg_query_params($this->db, 'SELECT * FROM releases ORDER BY release_date DESC NULLS LAST LIMIT $1;', [$limit]); + } + + $releases = []; + + while(($row = pg_fetch_assoc($q, null)) !== false){ + $releases[$row["release_id"]] = Release::undecode($row["release_data"]); + } + + return $releases; + } + + /** + * @param $aid + * @return Release[] + */ + public function getAnimeBaseReleases($aid){ + $q = pg_query_params($this->db, 'SELECT * FROM releases WHERE aid = $1;', [$aid]); + + $releases = []; + + while(($row = pg_fetch_assoc($q, null)) !== false){ + $releases[$row["release_id"]] = Release::undecode($row["release_data"]); + } + + return $releases; + } + + /** + * @param $aid + * @return Release[] + */ + public function getAnimeReleases($aid){ + $q = pg_query_params($this->db, 'SELECT * FROM episodes_releases WHERE aid = $1;', [$aid]); + + $releases = []; + + while(($row = pg_fetch_assoc($q, null)) !== false){ + $releases[$row["release_id"]] = Release::undecode($row["release_data"]); + } + + return $releases; + } + + public function isTracking($aid){ + return pg_fetch_assoc(pg_query_params($this->db, 'SELECT COUNT(aid) as count FROM tracked WHERE aid = $1;', [$aid]), null)["count"] > 0; + } + + public function getTrackInfo($aid){ + return pg_fetch_assoc(pg_query_params($this->db, 'SELECT * FROM tracked WHERE aid = $1;', [$aid]), null); + } + + /** + * @param $aid + * @param $episode + * @return MultiRelease|Release|null + */ + public function getTrackEpisode($aid, $episode){ + $row = pg_fetch_assoc(pg_query_params($this->db, 'SELECT * FROM tracked_releases WHERE aid = $1 AND episode = $2 AND release_type = $3;', [$aid, $episode, Release::TYPE_SINGLE]), null); + + return $row !== false ? Release::undecode($row["release_data"]) : null; + } + + /** + * @param $aid + * @return Release[] + */ + public function getTrackEpisodes($aid){ + $q = pg_query_params($this->db, 'SELECT * FROM tracked_releases WHERE aid = $1 AND release_type = $2 ORDER BY episode ASC;', [$aid, Release::TYPE_SINGLE]); + + $episodes = []; + + while(($row = pg_fetch_assoc($q, null)) !== false){ + if(isset($episodes[$row["episode"]])){ + Downloader::log("Duplicate episode ".$row["episode"]." for tracked anidb-$aid! Some results might be truncated.", "WARNING"); + $episodes[$row["episode"]] = []; + } + + $episodes[$row["episode"]] = Release::undecode($row["release_data"]); + } + + + return $episodes; + } + + /** + * @param $releaseId + * @return Release + */ + public function getRelease($releaseId){ + $row = pg_fetch_assoc(pg_query_params($this->db, 'SELECT * FROM releases WHERE release_id = $1;', [$releaseId]), null); + if(!is_array($row)){ + return null; + } + + return Release::undecode($row["release_data"]); + } + + /** + * @param $releaseId + * @param $episode + * @return Release + */ + public function getReleaseEpisode($releaseId, $episode){ + $row = pg_fetch_assoc(pg_query_params($this->db, 'SELECT * FROM episodes_releases WHERE release_id = $1 AND episode = $2;', [$releaseId, $episode]), null); + if(!is_array($row)){ + return null; + } + + return Release::undecode($row["release_data"]); + } + + public function clearTrackedEpisodes($aid){ + pg_query_params($this->db, 'DELETE FROM tracked_releases WHERE aid = $1;', [$aid]); + } + + public function clearEpisodes($aid){ + pg_query_params($this->db, 'DELETE FROM episodes_releases WHERE aid = $1;', [$aid]); + pg_query_params($this->db, 'DELETE FROM releases WHERE aid = $1;', [$aid]); + } + + public function saveTrackEpisode($aid, $episode, Release $release = null){ + if($release === null){ + pg_query_params($this->db, 'DELETE FROM tracked_releases WHERE aid = $1 AND episode = $2;', [$aid, $episode]); + }else{ + if($this->getTrackEpisode($aid, $episode) !== null){ //Update + pg_query_params($this->db, 'UPDATE tracked_releases SET aid = $1, episode = $2, release_id = $3, release_type = $4, release_data = $5 WHERE aid = $1 AND episode = $2;', [$aid, $episode, $release->getId(), $release->getType(), $release->encode()]); + }else{ + pg_query_params($this->db, 'INSERT INTO tracked_releases (aid, episode, release_id, release_type, release_data) VALUES ($1, $2, $3, $4, $5);', [$aid, $episode, $release->getId(), $release->getType(), $release->encode()]); + } + } + $this->updateTrackEpisodes($aid); + } + + public function updateTrackEpisodes($aid, $number = null){ + if($number === null){ + pg_query_params($this->db, "UPDATE tracked SET episode_count = (SELECT COUNT(episode) FROM tracked_releases WHERE aid = $1) WHERE aid = $1;", [$aid]); + }else{ + pg_query_params($this->db, "UPDATE tracked SET episode_count = $2 WHERE aid = $1;", [$aid, $number]); + } + + return $this->getTrackInfo($aid)["episode_count"]; + } + + public static function cleanNameForFolder($name){ + return str_replace(["../", "/..", "/", "\x00"], ["", "", "⁄", ""], $name); + } + + public function addTrack($aid, $download_folder = ""){ + if($download_folder === ""){ + $download_folder = Database::getConfigKey("download.folder", './Download') . "/[Animarr] " . $this->cleanNameForFolder($this->getAniDB()->getAnime($aid)["title"]) . " [anidb-$aid]/"; + } + if(!$this->isTracking($aid)){ + pg_query_params($this->db, "INSERT INTO tracked (aid, episode_count, prefer_groups, download_folder) VALUES ($1, -1, '', $2);", [$aid, $download_folder]); + } + } + + public function stopTrack($aid){ + if($this->isTracking($aid)){ + pg_query_params($this->db, "DELETE FROM tracked_releases WHERE aid = $1;", [$aid]); + pg_query_params($this->db, "DELETE FROM tracked WHERE aid = $1;", [$aid]); + $this->cacheExists = []; + } + } + + public function getTrackGroups($aid){ + if($this->isTracking($aid)){ + return explode(",", base64_decode($this->getTrackInfo($aid)["prefer_groups"])); + } + + return []; + } + + public function getTrackFolder($aid, $default = ""){ + if($this->isTracking($aid)){ + $folder = $this->getTrackInfo($aid)["download_folder"]; + if($folder != ""){ + return $folder; + } + } + + return $default; + } + + public function setTrackFolder($aid, $folder){ + pg_query_params($this->db, "UPDATE tracked SET download_folder = $1 WHERE aid = $2;", [$folder, $aid]); + } + + public function getTrackFlag($aid, $flag){ + if($this->isTracking($aid)){ + return ($this->getTrackInfo($aid)["flags"] & $flag) != 0; + } + + return false; + } + + public function setTrackFlag($aid, $flag, $value){ + if($this->isTracking($aid)){ + $flags = ($this->getTrackInfo($aid)["flags"] & ~($value)); + if($value){ + $flags |= $flag; + } + + pg_query_params($this->db, "UPDATE tracked SET flags = $1 WHERE aid = $2;", [$flags, $aid]); + } + + return false; + } + + public function saveTrackGroups($aid, array $groups){ + if($this->isTracking($aid)){ + pg_query_params($this->db, "UPDATE tracked SET prefer_groups = $1 WHERE aid = $2;", [base64_encode(implode(",", $groups)), $aid]); + } + } + + public function matchTitle($title){ + return $this->anidb->matchTitle($title); + } + +} diff --git a/src/Animarr/Downloader.php b/src/Animarr/Downloader.php new file mode 100755 index 0000000..a03b8b0 --- /dev/null +++ b/src/Animarr/Downloader.php @@ -0,0 +1,404 @@ +log("Starting up..."); + $this->extractor = new SceneExtractor($db->getAniDB()); + $this->db = $db; + $this->log("Done!"); + } + + public static function log($log, $type = "INFO"){ + if(defined("NO_LOG") and NO_LOG){ + return; + } + $log = "[$type] > $log" . PHP_EOL; + echo $log; + file_put_contents(Database::getConfigKey("log.path"), $log, FILE_APPEND); + } + + public static function debug($log){ + self::log($log, "DEBUG"); + } + + public function setUseLink($val){ + $this->useLink = (bool) $val; + } + + + /** + * @return Release[] + */ + public function getDownloads(){ + return $this->download; + } + + public function getAutoAddFolder($url){ + return Torrent::isPrivateTorrent($url) ? Database::getConfigKey("torrent.folder.private.blackhole", "./AutoAdd") : Database::getConfigKey("torrent.folder.blackhole", "./AutoAdd"); + } + + public function handleNewDownloads(){ + foreach($this->getDownloads() as $r){ + if(strpos($r->getDownloadLink(), "urn:btih:") !== false){ + //Magnet + file_put_contents($this->getAutoAddFolder($r->getDownloadLink()) . "/" . $r->getId() . ".magnet", $r->getDownloadLink() . PHP_EOL); + }else{ + file_put_contents($this->getAutoAddFolder($r->getDownloadLink()) . "/" . $r->getId() . ".torrent", Torrent::getTorrent($r->getDownloadLink(), Database::getConfigKey("torrent.cache.folder", null))); + } + $this->log("Downloaded \"".$r->getOriginalTitle()."\"", "FETCH"); + } + $this->download = []; + } + + private function handleDirCompletedDownloads($f, $downloadFolder, $moveToFolder, Release $release, $baseRelease = null){ + if($release->getType() === Release::TYPE_SINGLE or $release->getType() === Release::TYPE_SPECIAL){ + $this->log("Directory \"$f\" has single release type!", "WARNING"); + //$this->ignore[$f] = true; + //return false; + } + $this->log("Processing directory \"$f\"", "POST"); + $added = $this->handleCompletedDownloads($downloadFolder . "/" . $f, $moveToFolder, $release); + + if(Database::getConfigKey("post.deletefailed", true)){ + $files = new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator($downloadFolder . "/" . $f, \RecursiveDirectoryIterator::SKIP_DOTS), + \RecursiveIteratorIterator::CHILD_FIRST + ); + + foreach ($files as $fileinfo) { + if($fileinfo->isDir() and !$this->useLink){ + $this->log("Deleting remaining folder \"".$fileinfo->getRealPath()."\"", "POST"); + rmdir($fileinfo->getRealPath()); + } + //$todo = ($fileinfo->isDir() ? 'rmdir' : 'unlink'); + //$this->log("Deleting remaining \"".$fileinfo->getRealPath()."\"", "POST"); + //$todo($fileinfo->getRealPath()); + } + } + + if(!$this->useLink){ + rmdir($downloadFolder . "/" . $f); + } + + return $added; + } + + + public function handleCompletedDownloads($downloadFolder, $moveToFolder = null, $baseRelease = null){ + $added = 0; + foreach(scandir($downloadFolder) as $f){ + if($f{0} === "." or isset($this->ignore[$f])){ + continue; + } + + $oldAdded = $added; + + if($baseRelease !== null and is_dir($downloadFolder . "/" . $f)){ + $this->log("Ignoring nested folder \"$f\"", "ERROR"); + continue; + } + + $release = $this->extractor->extractInformation($f); + if($release === null){ + if(is_dir($downloadFolder . "/" . $f)){ + $this->log("Could not match \"$f\", but processing folder", "POST"); + $added += $this->handleCompletedDownloads($downloadFolder . "/" . $f, $moveToFolder, false); + }else{ + $this->log("Ignoring \"$f\"", "ERROR"); + } + + + if($oldAdded === $added){ + $this->ignore[$f] = true; + } + continue; + } + + $this->log("Processing \"$f\"", "POST"); + $info = $this->db->getAniDB()->matchRelease($release); + if($info === null){ + $this->log("Could not match \"$f\" [".$release->getTitle().", type: ".$release->getType()."]!", "ERROR"); + if(!is_dir($downloadFolder . "/" . $f)){ + if(!$this->useLink and Database::getConfigKey("post.deletefailed", true)){ + $this->log("Deleting release \"". $f . "\"", "POST"); + @unlink($downloadFolder . "/" . $f); + } + $this->ignore[$f] = true; + }else{ + $added += $this->handleDirCompletedDownloads($f, $downloadFolder, $moveToFolder, $release, $baseRelease); + } + + if($oldAdded === $added){ + $this->ignore[$f] = true; + } + continue; + } + + if(!$this->db->isTracking($info["aid"])){ + if(Database::getConfigKey("post.autotrack", false)){ + Downloader::log("Auto tracking \"".$info["title"]."\" [anidb-" . $info["aid"] ."]", "TRACK"); + $this->db->addTrack($info["aid"]); + //$this->db->updateTrackEpisodes($info["aid"], -1); + }else{ + continue; + } + } + + $this->log("Match found \"".$info["title"]."\" [anidb-" . $info["aid"]."]", "POST"); + + if(is_dir($downloadFolder . "/" . $f)){ + $added += $this->handleDirCompletedDownloads($f, $downloadFolder, $moveToFolder, $release, $baseRelease); + + if($oldAdded === $added){ + $this->ignore[$f] = true; + } + }else{ + //TODO: match files to see that they are correct + $this->log("Type: ".$release->getType().", episode ". $release->getNumber(), "POST"); + + if($release->getType() === Release::TYPE_SPECIAL or $release->getNumber() <= 0){ + if(!Database::getConfigKey("post.specials", true)){ + if(!$this->useLink and Database::getConfigKey("post.deletefailed", true)){ + $this->log("Deleting release \"". $f . "\"", "POST"); + @unlink($downloadFolder . "/" . $f); + } + $this->ignore[$f] = true; + continue; + } + + $downloadTo = $this->db->getTrackFolder($info["aid"]) . "/Specials"; + @mkdir($downloadTo, 0777, true); + + if(file_exists($downloadTo . "/" . $f)){ + $this->ignore[$f] = true; + continue; + } + }else{ + + $downloadTo = $this->db->getTrackFolder($info["aid"]); + @mkdir($downloadTo, 0777, true); + + if(file_exists($downloadTo . "/" . $f)){ + $this->log("Release already exists, aborting!", "ERROR"); + if(!$this->useLink){ + @unlink($downloadFolder . "/" . $f); + } + + $this->ignore[$f] = true; + continue; + } + $expected = $this->db->getTrackEpisode($info["aid"], $release->getNumber()); + if($expected !== null and Database::getConfigKey("post.matchrelease", true)){ + $c1 = str_replace(" ", "", self::removeExtension(strtolower($expected->getOriginalTitle()))); + $c2 = str_replace(" ", "", self::removeExtension(strtolower($release->getOriginalTitle()))); + if($c1 != $c2){ + $this->log("Expected \"".$expected->getOriginalTitle()."\", got \"".$release->getOriginalTitle()."\"! Check in progress...", "WARN"); + + if($expected->getCRC() !== null){ + if($expected->getCRC() === $release->getCRC()){ + $this->log("Title CRC matches, continue!", "POST"); + }else{ + $this->log("CRC mismatch! [". $expected->getCRC() ." != ". $release->getCRC() ."], aborting!", "ERROR"); + if(!$this->useLink and Database::getConfigKey("post.deletefailed", true)){ + $this->log("Deleting release \"". $f . "\"", "POST"); + @unlink($downloadFolder . "/" . $f); + }else{ + $this->ignore[$f] = true; + } + continue; + } + }else if($expected->getGroup() != $release->getGroup() or ($expected->getQuality() !== Release::QUALITY_UNKNOWN and $expected->getQuality() != $release->getQuality()) or ($expected->getSource() !== Release::SOURCE_UNKNOWN and $expected->getSource() != $release->getSource())){ + $this->log("Release does not match, aborting!", "ERROR"); + if(!$this->useLink and Database::getConfigKey("post.deletefailed", true)){ + $this->log("Deleting release \"". $f . "\"", "POST"); + @unlink($downloadFolder . "/" . $f); + }else{ + $this->ignore[$f] = true; + } + continue; + } + + } + } + + if(Database::getConfigKey("post.verifycrc", false) and $release->getCRC() !== null){ + $this->log("Checking CRC [". $release->getCRC() ."]", "POST"); + $CRC = strtoupper(hash_file('crc32b', $downloadFolder . "/" . $f)); + if($CRC !== $release->getCRC()){ + $this->log("CRC mismatch! [". $release->getCRC() ." != $CRC], aborting!", "ERROR"); + if(!$this->useLink and Database::getConfigKey("post.deletefailed", true)){ + $this->log("Deleting release \"". $f . "\"", "POST"); + @unlink($downloadFolder . "/" . $f); + }else{ + $this->ignore[$f] = true; + } + continue; + } + } + + if(Database::getConfigKey("post.deleteold", false)){ + foreach ($this->getReleasesInFolder($downloadTo, $info["aid"], $baseRelease) as $r2){ + if($r2->getType() === $release->getType() and $r2->getNumber() === $release->getNumber()){ + $this->log("Deleting old release \"". $r2->getOriginalTitle() . "\"", "POST"); + @unlink($downloadTo . "/" . $r2->getOriginalTitle()); + } + } + } + } + + $added++; + + if($this->useLink){ + $this->log("Ref-linking to \"".$downloadTo . "/" . $f."\"", "POST"); + //if(!self::createReflink($downloadFolder . "/" . $f, $downloadTo . "/" . $f)){ + //$this->log("Could not reflink, soft-linking!", "POST"); + if(!link($downloadFolder . "/" . $f, $downloadTo . "/" . $f)){ + $this->log("Could not link, copying!", "POST"); + copy($downloadFolder . "/" . $f, $downloadTo . "/" . $f); + } + //} + @chmod($downloadTo . "/" . $f, 0777); + }else{ + $this->log("Moving to \"".$downloadTo . "/" . $f."\"", "POST"); + if(!rename($downloadFolder . "/" . $f, $downloadTo . "/" . $f)){ + $this->log("Copy-moving to \"".$downloadTo . "/" . $f."\"", "POST"); + copy($downloadFolder . "/" . $f, $downloadTo . "/" . $f); + unlink($downloadFolder . "/" . $f); + } + @chmod($downloadTo . "/" . $f, 0777); + } + + $this->ignore[$f] = true; + } + } + + return $added; + } + + private static function createReflink($origin, $destination){ + $ret = null; + $out = []; + system("cp --reflink=always ". escapeshellarg($origin) ." ". escapeshellarg($destination) ."", $out, $ret); + return $ret === 0; + } + + private static function removeExtension($name){ + $pos = strrpos($name, "."); + if($pos !== false and $pos > strlen($name) - 8){ + return pathinfo($name, PATHINFO_FILENAME); + } + + return $name; + } + + /** + * @param $path + * @param null $aid + * @param Release|null $baseRelease + * @return Release[] + */ + public function getReleasesInFolder($path, $aid = null, $baseRelease = null){ + $releases = []; + foreach(scandir($path) as $f) { + if ($f{0} === ".") { + continue; + } + + $release = $this->extractor->extractInformation($f); + if($release === null){ + continue; + } + + if($aid !== null){ + $info = $this->db->getAniDB()->matchRelease($release); + if($info === null or $info["aid"] != $aid){ + continue; + } + } + + $releases[] = $release; + } + + return $releases; + } + + private function cleanNameForFolder($name){ + return str_replace(["../", "/..", "/", "\x00"], ["", "", "⁄", ""], $name); + } + + public function addToDownload($anidbId, Release $release, $moveToFolder = null){ + $toDownload = $release->getParent() !== null ? $release->getParent() : $release; + + if($moveToFolder !== null){ + $moveToFolder = $this->db->getTrackFolder($anidbId, $moveToFolder . "/[Animarr] " . $this->cleanNameForFolder($this->db->getAniDB()->getAnime($anidbId)["title"])) . (($release->getType() === Release::TYPE_SPECIAL or $release->getNumber() <= 0) ?"/Specials" : ""); + } + + if(($toDownload->getType() === Release::TYPE_SINGLE and $release->getNumber() >= 0) or $toDownload instanceof MultiRelease){ + if($toDownload instanceof MultiRelease and isset($this->download[$toDownload->getId()])){ + return true; + } + + $number = 0; + foreach($toDownload->getContents($this->extractor) as $r){ + if($r->getType() !== Release::TYPE_SINGLE or $r->getNumber() < 0){ + continue; + } + + $info = $this->db->getAniDB()->matchRelease($r); + if($info === null or $info["aid"] != $anidbId){ + continue; + } + + $existing = $this->db->getTrackEpisode($anidbId, $r->getNumber()); + + if($existing !== null and $existing->getId() !== $r->getId()){ + //TODO + Downloader::log("There is an already existing episode! \"".$r->getOriginalTitle()."\"", "ADD"); + continue; + //unset($this->download[$episodes[$r->getNumber()]["id"]]); + } + + $this->db->saveTrackEpisode($anidbId, $r->getNumber(), $r); + + if($moveToFolder !== null){ + if(file_exists($moveToFolder . "/" . $r->getOriginalTitle())){ + Downloader::log("Download already exists! \"".$r->getOriginalTitle()."\"", "ADD"); + continue; + } + } + Downloader::log("Added from batch: \"".$r->getOriginalTitle()."\"", "ADD"); + ++$number; + } + + if($number === 0){ + Downloader::log("Couldn't add any episode!", "ERROR"); + return false; + } + }else{ + return false; + } + + $this->forceAddToDownload($toDownload); + + return true; + } + + public function forceAddToDownload(Release $release){ + $this->download[$release->getId()] = $release; + } + +} diff --git a/src/Animarr/Extractor/AnimeBytesExtractor.php b/src/Animarr/Extractor/AnimeBytesExtractor.php new file mode 100644 index 0000000..1286b9b --- /dev/null +++ b/src/Animarr/Extractor/AnimeBytesExtractor.php @@ -0,0 +1,75 @@ +db = $aniDB; + } + + private function tryMatch($title){ + if($this->db === null){ + return true; + } + + return $this->db->matchTitle((string) $title) !== null; + } + + // + public function extractInformation($releaseTitle, $forceType = null){ + if(!is_array($forceType)){ + $forceType = []; + } + + parse_str($releaseTitle, $info); + + $tags = array_map("trim", explode("|", $info["info"])); + + $releaseTitle = $info["title"]; + if($info["aid"] != ""){ + $releaseTitle = $this->db->getAnime($info["aid"])["title"]; + } + + $group = ""; + + $newTags = []; + + $allow = false; + + foreach($tags as $t){ + if(preg_match("#subs[ ]*\\((.+)\\)#u", $t, $matches) > 0){ + $group = $matches[1]; + } + + foreach($forceType as $type){ + if(stripos($t, $type) !== false){ + $allow = true; + } + } + + foreach(explode(" ", str_replace(["(", ")"], " ", $t)) as $t2){ + $newTags[] = trim($t2); + } + } + + if(!$allow or in_array(strtolower(explode(" ", $tags[1])[0]), Database::getConfigKey("filter.extension.ignore", []))){ + return null; + } + + if(isset($info["edition"]) and preg_match("/Episode ([0-9]+)$/", $info["edition"], $matches) > 0){ + $episode = (int) $matches[1]; + return new Release("[$group] $releaseTitle ".str_pad($episode, 2, "0", STR_PAD_LEFT) ." [".implode("][", $tags) . "]", $releaseTitle, $group, Release::TYPE_SINGLE, $newTags, $episode); + }else{ + return new MultiRelease("[$group] $releaseTitle [".implode("][", $tags) . "]", $releaseTitle, $group, Release::TYPE_BATCH, $newTags); + } + } + +} diff --git a/src/Animarr/Extractor/Extractor.php b/src/Animarr/Extractor/Extractor.php new file mode 100755 index 0000000..8c19ee6 --- /dev/null +++ b/src/Animarr/Extractor/Extractor.php @@ -0,0 +1,14 @@ +db = $aniDB; + } + + private function tryMatch($title){ + if($this->db === null){ + return true; + } + + return $this->db->matchTitle((string) $title) !== null; + } + + public function extractInformation($releaseTitle, $deepMatch = false, &$debug = null){ + $baseExt = pathinfo(trim(strtolower($releaseTitle)), PATHINFO_EXTENSION); + if(in_array($baseExt, Database::getConfigKey("filter.extension.ignore", []))){ + return null; + } + + $id_start = "\\[\\(\\{"; + $id_end = "\\]\\)\\}"; + $space = " _\\."; + $tag = "^$id_end"; + $tag_separator = "$space,-"; + $split = "\\-‒–\\/#"; + + $releaseTitle = str_ireplace(["capitulo", "especial", "⁄"], ["episode", "special", "/"], $releaseTitle); + + $episodeWordRegex = "[Ee][Pp](|[\\.]|isode)"; + + $episode = "0-9"; + $name = "^$id_start$id_end";//"{$space}{$split}A-Za-z0-9~:;,'\\+!@?&\\."; + + $specials = "(O[Pp]|E[Dd]|OVA|ONA|OAD|SP|PV|CM|Teaser)"; + + $specials_find = [" opening ", " ending ", " movie ", /*" special ", */" picture drama ", " trailer "]; + + $episode_match = [ + "/^(?P.*)[{$split}]?[{$space}]?{$episodeWordRegex}[{$space}]*(?P<number>[{$episode}]+)(?P<version>([v\\. ][0-9]|))(?P<ename>(([{$space}]+[{$split}][{$space}]+|[{$space}]+).*|))$/u", + "/^(?P<title>.*)[{$split}][{$space}]+(?P<number>[{$episode}]+)(?P<version>([v\\. ][0-9]|))(?P<ename>[{$space}]+[{$split}][{$space}]+.+)$/u", + "/^(?P<title>.*)[{$split}][{$space}]+(?P<number>[{$episode}]+)(?P<version>([v\\. ][0-9]|))(?P<ename>(([{$space}]+[{$split}][{$space}]+|[{$space}]+).*|))$/u", + ]; + + $volume_match = [ + "/^(?P<title>.*)[{$split}]?[{$space}]+Vol(|[\\.]|ume)[{$space}]*(?P<number>[{$episode}]+)[\\- ]+((Vol(|[\\.]|ume))|)[\\-{$episode} ]+(END|End|)$/u", + "/^(?P<title>.*)[{$split}]?[{$space}]+[$id_start]Vol(|[\\.]|ume)[{$space}]*(?P<number>[{$episode}]+)[$id_end](|[\\- ][\\-{$episode} ]+)$/u", + "/^(?P<title>.*)[{$split}]?[{$space}]+Vol(|[\\.]|ume)[{$space}]*(?P<number>[{$episode}]+)$/u", + ]; + + $batch_match = [ + "/^(?P<title>.*)[{$space}]+(?P<number>[{$episode}]+[{$split}][{$episode}]+)[{$space}]+(.*)$/u", + "/^(?P<title>.*)[{$space}]+[{$split}][{$space}]+(.*)$/u", + "/^(?P<title>.*)[{$space}]+(?P<number>[{$episode}]+[{$split}][{$episode}]+)(.*)$/u", + ]; + + $special_match = [ + "/^(?P<title>.*)[{$split}][{$space}]*(?P<type>NC$specials)[{$space}]*[{$split}]?[{$space}]*(?P<number>[{$episode}]*)[A-Za-z]?(?P<version>([v\\. ][0-9]|))$/u", + "/^(?P<title>.*)[{$split}]?[{$space}]?(?P<type>NC$specials)[{$space}]*[{$split}]?[{$space}]*(?P<number>[{$episode}]*)[A-Za-z]?(?P<version>([v\\. ][0-9]|))$/u", + "/^(?P<title>.*)[{$split}][{$space}]*(?P<type>$specials)[{$space}]*[{$split}]?[{$space}]*(?P<number>[{$episode}]*)[A-Za-z]?(?P<version>([v\\. ][0-9]|))$/u", + "/^(?P<title>.*)[{$split}]?[{$space}]?(?P<type>$specials)[{$space}]*[{$split}]?[{$space}]*(?P<number>[{$episode}]*)[A-Za-z]?(?P<version>([v\\. ][0-9]|))$/u", + "/^(?P<title>.*)[{$split}][{$space}]*(?P<type>S)(?P<number>[{$episode}]+)[A-Za-z]?(?P<version>([v\\. ][0-9]|))$/u", + ]; + + $name_match = ""; + $tag_match = "/[{$id_start}](?P<tag>[{$tag}]+)[{$id_end}]/u"; + + $base_match = [ + "/^[{$id_start}](?P<group>[{$tag}]+)[{$id_end}][{$split}]?(?P<name>[{$name}]+(\\(([0-9]{4}|Season [0-9]+|S[0-9]+|TV)\\)[{$name}]*|))(?P<extra>.*)(?P<ext>(\\.[a-z0-9]{2,7}|))$/u", + ]; + + if($deepMatch){ + $episode_match[] = "/^(?P<title>.*)[{$space}]+(?P<number>[{$episode}]+)(?P<version>([v\\. ][0-9]|))(?P<ename>(([{$space}]+[{$split}][{$space}]+|[{$space}]+).*|))$/u"; + + //Bad match: [Commie] Silver Spoon 2 [BD 720p AAC] + $episode_match[] = "/^(?P<title>.*)[{$space}]+{$episodeWordRegex}[{$space}]*(?P<number>[{$episode}]+)(?P<version>([v\\. ][0-9]|))$/u"; + + $episode_match[] = "/^(?P<title>.*)([{$space}]+[{$split}]|)[{$space}]+S?(?P<season>[{$episode}]+)([xX]|E)(?P<number>[{$episode}]+)(?P<version>([v\\. ][0-9]|))(?P<ename>(([{$space}]+[{$split}][{$space}]+|[{$space}]+).*|))$/u"; + + $batch_match[] = "/^(?P<title>.*)[{$space}]*(?P<version>[v\\. ][0-9])(.*)$/u"; + $batch_match[] = "/^(?P<title>[{$name}]+(\\([0-9]{4}\\)|))(.*)$/u"; + + $base_match[] = "/^[{$id_start}](?P<group>[{$tag}]+)[{$id_end}][{$split}]?(?P<name>[{$name}]+(\\([0-9]{4}|TV\\)|))(?P<extra>.*)(?P<ext>(\\.[a-z0-9]{2,7}|))$/u"; + + $base_match[] = "/^(?P<group>)(?P<name>[{$name}]+(\\([0-9]{4}\\)|))(?P<extra>.*)$/u"; + } + + foreach($base_match as $bmatch){ + if(preg_match($bmatch, $releaseTitle, $matches) > 0){ + $group = $matches["group"]; + $rname = trim(str_replace(str_split("$space"), " ", $matches["name"])); + $tags = []; + + $ext = @ltrim(strtolower($matches["ext"]), "."); + + if(in_array($ext, Database::getConfigKey("filter.extension.ignore", []))){ + return null; + } + + if(preg_match_all($tag_match, $matches["extra"], $matches) > 0){ + foreach($matches["tag"] as $v){ + $v = str_replace(str_split("$tag_separator"), " ", $v); + foreach(explode(" ", $v) as $tag){ + $tags[] = $tag; + } + } + } + + $vmatch = null; + $smatch = null; + $ematch = null; + $bcmatch = null; + + $isVolume = false; + $isSpecial = false; + $isBatch = false; + + $number = null; + $title = null; + $version = null; + $specialType = null; + + foreach($volume_match as $r){ + if(preg_match($r, $rname, $matches) > 0){ + $isVolume = true; + $title = trim($matches["title"], " {$split}"); + $number = $matches["number"]; + $version = (isset($matches["version"]) and $matches["version"] !== "") ? $matches["version"] : "v1"; + $vmatch = $r; + break; + } + } + + if(!$isVolume){ + foreach($special_match as $r){ + if(preg_match($r, $rname, $matches) > 0){ + $title = trim($matches["title"], " -"); + $number = $matches["number"]; + $version = (isset($matches["version"]) and $matches["version"] !== "") ? $matches["version"] : "v1"; + $isSpecial = true; + + $typeConstant = Release::class . "::SPECIAL_TYPE_" . strtoupper($matches["type"]); + + if(defined($typeConstant)){ + $specialType = $typeConstant; + }else{ + $specialType = Release::SPECIAL_TYPE_UNKNOWN; + } + + $smatch = $r; + break; + } + } + + if(!$isSpecial and !$deepMatch){ + foreach($specials_find as $needle){ + if(stripos($rname . " ", $needle) !== false){ + $isSpecial = true; + continue; //Really strange special, TODO + } + } + } + } + + if(!$isVolume and !$isSpecial){ + foreach($episode_match as $r){ + if(preg_match($r, $rname, $matches) > 0){ + $title = trim($matches["title"], " -"); + $number = $matches["number"]; + $version = (isset($matches["version"]) and $matches["version"] !== "") ? $matches["version"] : "v1"; + $ematch = $r; + break; + } + } + } + + + if(($deepMatch and $number === null) or stripos($title, " batch") !== false or in_array("Batch", $tags) or in_array("batch", $tags) or (!$this->tryMatch($title) and $number === null)){ + foreach($batch_match as $r){ + if(preg_match($r, $rname, $matches) > 0){ + $title = trim($matches["title"], " -"); + $bcmatch = $r; + break; + } + } + + if($title === null){ + $title = $rname; + } + + $isBatch = true; + $isVolume = false; + $isSpecial = false; + } + + if(!$this->tryMatch($title)){ + continue; + } + + if($group === ""){ + $group = "UNKNOWN"; + } + + if($version != "" and $version === " 5"){ + //Half episode, abort! + return null; //??? + continue; + } + + $r = null; + + if($isVolume){ + $this->setDebug($debug, $title, $group, $tags, $rname, $version, $number, Release::TYPE_VOLUME, $bmatch, $vmatch, $smatch, $ematch, $bcmatch); + $r = new MultiRelease($releaseTitle, $title, $group, Release::TYPE_VOLUME, $tags, $number === null ? -1 : (int) $number); + }else if($isBatch){ + $this->setDebug($debug, $title, $group, $tags, $rname, $version, $number, Release::TYPE_BATCH, $bmatch, $vmatch, $smatch, $ematch, $bcmatch); + $r = new MultiRelease($releaseTitle, $title, $group, Release::TYPE_BATCH, $tags); + }else if($isSpecial){ + $this->setDebug($debug, $title, $group, $tags, $rname, $version, $number, Release::TYPE_SPECIAL, $bmatch, $vmatch, $smatch, $ematch, $bcmatch); + $r = new Release($releaseTitle, $title, $group, Release::TYPE_SPECIAL, $tags, $number === null ? -1 : (int) $number); + if($specialType !== null){ + $r->setSpecialType($specialType); + } + }else if($title !== null and $number !== null){ + $this->setDebug($debug, $title, $group, $tags, $rname, $version, $number, Release::TYPE_SINGLE, $bmatch, $vmatch, $smatch, $ematch, $bcmatch); + $r = new Release($releaseTitle, $title, $group, Release::TYPE_SINGLE, $tags, $number === null ? -1 : (int) $number); + } + + if($r !== null){ + if($version !== null and $version{0} === "v"){ + $r->setVersion((int) trim($version, " v.")); + } + return $r; + } + } + } + + return (!$deepMatch) ? $this->extractInformation($releaseTitle, true, $debug) : null; + } + + private function setDebug(&$debug, $title, $group, $tags, $rname, $version, $number, $type, $bmatch, $vmatch, $smatch, $ematch, $bcmatch){ + //var_dump($title . " " . "$group, $rname, $version, $number, $type"); + if(is_array($debug)){ + $debug["title"] = $title; + $debug["group"] = $group; + $debug["tags"] = implode(" ", $tags); + $debug["rname"] = $rname; + $debug["number"] = $number; + $debug["version"] = $version; + $debug["type"] = $type; + + $debug["base_match"] = htmlentities($bmatch); + $debug["volume_match"] = htmlentities($vmatch); + $debug["special_match"] = htmlentities($smatch); + $debug["episode_match"] = htmlentities($ematch); + $debug["batch_match"] = htmlentities($bcmatch); + } + } +} diff --git a/src/Animarr/Filter.php b/src/Animarr/Filter.php new file mode 100755 index 0000000..7bd522a --- /dev/null +++ b/src/Animarr/Filter.php @@ -0,0 +1,232 @@ +<?php + +namespace Animarr; + +use Animarr\Release\Release; + +class Filter{ + + const PROPERTY_TITLE = "title"; + const PROPERTY_ORIGINAL_TITLE = "original_title"; + const PROPERTY_GROUP = "group"; + const PROPERTY_NUMBER = "number"; + const PROPERTY_SEEDS = "seeds"; + const PROPERTY_TAGS = "tags"; + const PROPERTY_TYPE = "type"; + const PROPERTY_QUALITY = "quality"; + const PROPERTY_TRUSTED = "trusted"; + const PROPERTY_BEST = "best"; + const PROPERTY_UPLOAD_DATE = "upload_date"; + const PROPERTY_DOWNLOAD_LINK = "download_url"; + + const GREATHER_THAN = ">"; + const LESS_THAN = "<"; + const EQUAL_THAN = "="; + const DIFFERENT_THAN = "!="; + + const STARTS_WITH = "sub>"; + const ENDS_WITH = "<sub"; + const CONTAINS = ">sub<"; + const MATCH = ">match<"; + const LAMBDA = ">lambda<"; + + const ACTION_DROP = "drop"; + const ACTION_KEEP = "keep"; + const ACTION_FORCE_KEEP = "fkeep"; + const ACTION_DEFAULT = "default"; + + private $defaultAction; + private $tree; + + public function __construct($defaultAction, $tree){ + $this->tree = $tree; + $this->defaultAction = $defaultAction; + } + + /** + * @param Release[] $releases + * + * @return Release[] + */ + public function applyFilter(array $releases){ + $newReleases = []; + foreach($releases as $k => $r){ + $r = $this->applyFilterSingle($r); + if($r !== null){ + $newReleases[$k] = $r; + } + } + + return $newReleases; + } + + /** + * @param Release $r + * @return Release + */ + public function applyFilterSingle(Release $r){ + $ret = $this->filter($r, self::ACTION_DEFAULT, $this->tree); + if($ret === self::ACTION_DEFAULT){ + $ret = $this->defaultAction; + } + + if($ret === self::ACTION_KEEP){ + return $r; + } + + return null; + } + + private function filter(Release $release, $current, $tree){ + foreach($tree as $i){ + $value = null; + $ncurrent = null; + + switch($i[0]){ + case self::PROPERTY_NUMBER: + $value = $release->getNumber(); + break; + case self::PROPERTY_TITLE: + $value = $release->getTitle(); + break; + case self::PROPERTY_ORIGINAL_TITLE: + $value = $release->getOriginalTitle(); + break; + case self::PROPERTY_TYPE: + $value = $release->getType(); + break; + case self::PROPERTY_GROUP: + $value = $release->getGroup(); + break; + case self::PROPERTY_QUALITY: + $value = $release->getQuality(); + break; + case self::PROPERTY_TRUSTED: + $value = $release->isTrusted(); + break; + case self::PROPERTY_SEEDS: + $value = $release->getSeeds(); + break; + case self::PROPERTY_BEST: + $value = $release->isBest(); + break; + case self::PROPERTY_UPLOAD_DATE: + $value = $release->getUploadDate(); + break; + case self::PROPERTY_DOWNLOAD_LINK: + $value = $release->getDownloadLink(); + break; + case self::PROPERTY_TAGS: + $value = $release->getTags(); + break; + + default: + continue; + break; + } + + switch($i[1]){ + case self::LAMBDA: + if(is_callable($i[2]) and call_user_func($i[2], $value) === true){ + $ncurrent = $i[3]; + } + break; + case self::GREATHER_THAN: + if($value > $i[2]){ + $ncurrent = $i[3]; + } + break; + case self::LESS_THAN: + if($value < $i[2]){ + $ncurrent = $i[3]; + } + break; + case self::EQUAL_THAN: + if(is_array($value)){ + foreach($value as $v){ + if($v == $i[2]){ + $ncurrent = $i[3]; + } + } + }else if($value == $i[2]){ + $ncurrent = $i[3]; + } + break; + case self::DIFFERENT_THAN: + if($value != $i[2]){ + $ncurrent = $i[3]; + } + break; + + case self::MATCH: + if(is_array($value)){ + foreach($value as $v){ + if(preg_match($i[2], $v) > 0){ + $ncurrent = $i[3]; + } + } + }else if(preg_match($i[2], $value) > 0){ + $ncurrent = $i[3]; + } + break; + case self::CONTAINS: + if(is_array($value)){ + foreach($value as $v){ + if(strpos($value, $v) !== false){ + $ncurrent = $i[3]; + } + } + }else if(strpos($value, $i[2]) !== false){ + $ncurrent = $i[3]; + } + break; + case self::STARTS_WITH: + if(is_array($value)){ + foreach($value as $v){ + if(strpos($value, $v) === 0){ + $ncurrent = $i[3]; + } + } + }else if(strpos($value, $i[2]) === 0){ + $ncurrent = $i[3]; + } + break; + case self::ENDS_WITH: + if(is_array($value)){ + foreach($value as $v){ + if(strpos(strrev($v), strrev($i[2])) === 0){ + $ncurrent = $i[3]; + } + } + }else if(strpos(strrev($value), strrev($i[2])) === 0){ + $ncurrent = $i[3]; + } + break; + + default: + continue; + break; + } + + if($ncurrent === null){ + continue; + } + + if (is_array($ncurrent)){ + $ncurrent = $this->filter($release, $current, $ncurrent); + } + + if($ncurrent === self::ACTION_DROP){ + return self::ACTION_DROP; + } + + if($ncurrent === self::ACTION_FORCE_KEEP){ + return self::ACTION_KEEP; + } + + $current = $ncurrent; + } + + return $current; + } +} diff --git a/src/Animarr/Release/MultiRelease.php b/src/Animarr/Release/MultiRelease.php new file mode 100755 index 0000000..615537c --- /dev/null +++ b/src/Animarr/Release/MultiRelease.php @@ -0,0 +1,89 @@ +<?php + +namespace Animarr\Release; + +use Animarr\Extractor\SceneExtractor; +use Animarr\Torrent\Torrent; +use Animarr\Database; + +class MultiRelease extends Release{ + + public function __construct($originalTitle, $title, $group, $type, array $tags, $number = -1){ + parent::__construct($originalTitle, $title, $group, $type, $tags, $number); + } + + /** + * @return Release[] + */ + public function getContents(SceneExtractor $extractor = null){ + if($this->content !== null){ + return $this->content; + } + + $this->content = []; + + $extractor = $extractor === null ? new SceneExtractor() : $extractor; + + $torrent = Torrent::fromURL($this->getDownloadLink(), Database::getConfigKey("torrent.cache.folder", null)); + if($torrent === null and strpos($this->getDownloadLink(), "urn:btih:") !== false){ + //Support magnets? + return $this->content; + } + + foreach ($torrent->getFiles() as $file){ + if(count($file["path"]) > 2){ //In subfolder, let's ignore for now + continue; + } + + $baseName = $file["path"][count($file["path"]) - 1]; + $release = $extractor->extractInformation($baseName); + + if($release === null or $release->getType() !== Release::TYPE_SINGLE){ + continue; + } + + $release->setInfoLink($this->getInfoLink()); + $release->setDownloadLink($this->getDownloadLink()); + $release->setUploadDate($this->getUploadDate()); + $release->setTrusted($this->isTrusted()); + $release->setBest($this->isBest()); + + $release->setSeeds($this->getSeeds()); + $release->setSize($this->getSize()); + + $release->setParent($this); + + if($release->getSource() === Release::SOURCE_UNKNOWN){ + $release->setSource($this->getSource()); + } + + if($release->getQuality() === Release::QUALITY_UNKNOWN){ + $release->setQuality($this->getQuality()); + } + + if($release->getVideoCodec() === Release::VIDEO_CODEC_UNKNOWN){ + $release->setVideoCodec($this->getVideoCodec()); + } + + if($release->getAudioCodec() === Release::AUDIO_CODEC_UNKNOWN){ + $release->setAudioCodec($this->getAudioCodec()); + } + + $release->setProperties($this->getProperties()); + + if($this->filter !== null){ + $release = $this->filter->applyFilterSingle($release); + } + + if($release === null){ + continue; + } + + $this->content[] = $release; + } + + ksort($this->content); + + return $this->content; + } +} diff --git a/src/Animarr/Release/Release.php b/src/Animarr/Release/Release.php new file mode 100755 index 0000000..195846b --- /dev/null +++ b/src/Animarr/Release/Release.php @@ -0,0 +1,836 @@ +<?php + +namespace Animarr\Release; + +use Animarr\Extractor\SceneExtractor; +use Animarr\Filter; +use Animarr\Torrent\Torrent; +use Animarr\Database; + +class Release{ + const TYPE_SINGLE = 0; + const TYPE_VOLUME = 1; + const TYPE_BATCH = 2; + const TYPE_SPECIAL = 3; + + const SPECIAL_TYPE_UNKNOWN = -1; + const SPECIAL_TYPE_OVA = 0; + const SPECIAL_TYPE_MOVIE = 1; + const SPECIAL_TYPE_OP = 2; + const SPECIAL_TYPE_ED = 3; + const SPECIAL_TYPE_NCOP = self::SPECIAL_TYPE_OP; + const SPECIAL_TYPE_NCED = self::SPECIAL_TYPE_ED; + const SPECIAL_TYPE_PV = 4; + const SPECIAL_TYPE_CM = 5; + const SPECIAL_TYPE_SP = self::SPECIAL_TYPE_OVA; + #const SPECIAL_TYPE_S = self::SPECIAL_TYPE_OVA; + + const QUALITY_UNKNOWN = -1; + const QUALITY_480 = 480; + const QUALITY_576 = 576; + const QUALITY_720 = 720; + const QUALITY_1080 = 1080; + + const SOURCE_UNKNOWN = -1; + const SOURCE_WEB = 1; + const SOURCE_TV = 2; + const SOURCE_DVD = 3; + const SOURCE_BLURAY = 4; + const SOURCE_LASERDISC = 5; + + const VIDEO_CODEC_UNKNOWN = -1; + const VIDEO_CODEC_H264_10 = 1; + const VIDEO_CODEC_H264 = 2; + const VIDEO_CODEC_HEVC = 3; + const VIDEO_CODEC_MPEG4 = 4; + + + const AUDIO_CODEC_UNKNOWN = -1; + const AUDIO_CODEC_FLAC = 1; + const AUDIO_CODEC_AAC = 2; + const AUDIO_CODEC_AC3 = 3; + const AUDIO_CODEC_DTS = 3; + + protected $content = null; + + private $originalTitle; + private $title; + private $type; + private $specialType; + private $group; + private $tags = []; + private $number; + private $properties = []; + + private $quality; + private $source; + + private $audioCodec; + private $videoCodec; + + private $infoLink; + private $downloadLink; + private $uploadDate; + private $seeds = -1; + private $size; + + private $trusted = false; + private $best = false; + private $CRC = null; + + private $version = 1; + + /** @var Filter */ + protected $filter = null; + + + /** + * @return Release[] + */ + public function getContents(SceneExtractor $extractor = null){ + if($this->content !== null){ + return $this->content; + } + + $this->content = []; + + $extractor = $extractor === null ? new SceneExtractor() : $extractor; + + $torrent = Torrent::fromURL($this->getDownloadLink(), Database::getConfigKey("torrent.cache.folder", null)); + if($torrent === null and strpos($this->getDownloadLink(), "urn:btih:") !== false){ + //Support magnets + $this->content[$this->getNumber()] = $this; + return $this->content; + } + + foreach ($torrent->getFiles() as $file){ + if(count($file["path"]) > 1){ //In subfolder, let's ignore for now + continue; + } + + $baseName = $file["path"][count($file["path"]) - 1]; + $release = $extractor->extractInformation($baseName); + + if($release === null or $release->getType() !== Release::TYPE_SINGLE){ + continue; + } + + $release->setInfoLink($this->getInfoLink()); + $release->setDownloadLink($this->getDownloadLink()); + $release->setUploadDate($this->getUploadDate()); + $release->setTrusted($this->isTrusted()); + $release->setBest($this->isBest()); + + $release->setSeeds($this->getSeeds()); + $release->setSize($this->getSize()); + + $release->setParent($this); + + if($release->getSource() === Release::SOURCE_UNKNOWN){ + $release->setSource($this->getSource()); + } + + if($release->getQuality() === Release::QUALITY_UNKNOWN){ + $release->setQuality($this->getQuality()); + } + + if($release->getVideoCodec() === Release::VIDEO_CODEC_UNKNOWN){ + $release->setVideoCodec($this->getVideoCodec()); + } + + if($release->getAudioCodec() === Release::AUDIO_CODEC_UNKNOWN){ + $release->setAudioCodec($this->getAudioCodec()); + } + + $release->setProperties($this->getProperties()); + + if($this->filter !== null){ + $release = $this->filter->applyFilterSingle($release); + } + + + + if($release === null){ + continue; + } + + $this->content[$release->getNumber()] = $release; + } + + ksort($this->content); + + return $this->content; + } + + public function setProperty($k, $v){ + $this->properties[$k] = $v; + } + + public function getProperty($k, $default = null){ + return isset($this->properties[$k]) ? $this->properties[$k] : $default; + } + + public function setProperties($props){ + return $this->properties = $props; + } + + public function getProperties(){ + return $this->properties; + } + + + public function setFilter(Filter $filter = null){ + if($filter !== $this->filter){ + $this->content = null; + } + $this->filter = $filter; + } + + /** + * @return string + */ + public function getCRC(){ + return $this->CRC; + } + + /** @var Release */ + private $parent = null; + + /** + * @return Release|null + */ + public function getParent(){ + return $this->parent; + } + + /** + * @param Release $parent + */ + public function setParent(Release $parent){ + $this->parent = $parent; + $this->setFilter($parent->filter); + } + + /** + * @return boolean + */ + public function isBest(): bool{ + return $this->best; + } + + /** + * @param boolean $best + */ + public function setBest(bool $best){ + $this->best = $best; + } + + /** + * @return boolean + */ + public function isTrusted(): bool{ + return $this->trusted; + } + + /** + * @param boolean $trusted + */ + public function setTrusted(bool $trusted){ + $this->trusted = $trusted; + } + + /** + * @return mixed + */ + public function getVersion(){ + return $this->version; + } + + /** + * @param mixed $version + */ + public function setVersion($version){ + $this->version = $version; + } + + + /** + * @return mixed + */ + public function getInfoLink(){ + return $this->infoLink; + } + + /** + * @param mixed $infoLink + */ + public function setInfoLink($infoLink){ + $this->infoLink = html_entity_decode($infoLink); + } + + /** + * @return mixed + */ + public function getAudioCodec(){ + return $this->audioCodec; + } + + /** + * @param mixed $audioCodec + */ + public function setAudioCodec($audioCodec){ + $this->audioCodec = $audioCodec; + } + + /** + * @return mixed + */ + public function getVideoCodec(){ + return $this->videoCodec; + } + + /** + * @param mixed $videoCodec + */ + public function setVideoCodec($videoCodec){ + $this->videoCodec = $videoCodec; + } + + /** + * @return mixed + */ + public function getDownloadLink(){ + return $this->downloadLink; + } + + /** + * @param mixed $downloadLink + */ + public function setDownloadLink($downloadLink){ + $this->downloadLink = html_entity_decode($downloadLink); + } + + /** + * @return mixed + */ + public function getUploadDate(){ + return $this->uploadDate; + } + + /** + * @param mixed $uploadDate + */ + public function setUploadDate($uploadDate){ + $this->uploadDate = $uploadDate; + } + + /** + * @return mixed + */ + public function getSeeds(){ + return $this->seeds; + } + + /** + * @param mixed $seeds + */ + public function setSeeds($seeds){ + $this->seeds = $seeds; + } + + /** + * @return mixed + */ + public function getSize(){ + return $this->size; + } + + /** + * @param mixed $size + */ + public function setSize($size){ + $this->size = $size; + } + + + /** + * @return string + */ + public function getTitle(){ + return $this->title; + } + + /** + * @return string + */ + public function getOriginalTitle(){ + return $this->originalTitle; + } + + /** + * @param string $title + */ + public function setTitle($title){ + $this->title = $title; + } + + /** + * @return int + */ + public function getType(){ + return (int) $this->type; + } + + /** + * @param int $type + */ + public function setType($type){ + $this->type = $type; + } + + public function getSpecialType(){ + if($this->specialType === null){ + $this->guessSpecialType(); + } + return (int) $this->specialType; + } + + /** + * @param int $type + */ + public function setSpecialType($type){ + $this->specialType = $type; + } + + /** + * @return mixed + */ + public function getGroup(){ + return $this->group; + } + + public function getSourceString(){ + switch($this->getSource()){ + case self::SOURCE_LASERDISC: + return "LD"; + case self::SOURCE_BLURAY: + return "BLURAY"; + case self::SOURCE_DVD: + return "DVD"; + case self::SOURCE_TV: + return "TV"; + case self::SOURCE_WEB: + return "WEB"; + } + + return "UNKNOWN"; + } + + public function getTypeString(){ + switch($this->getType()){ + case self::TYPE_SINGLE: + return "SINGLE"; + case self::TYPE_VOLUME: + return "VOLUME"; + case self::TYPE_BATCH: + return "BATCH"; + case self::TYPE_SPECIAL: + return "SPECIAL"; + } + + return "UNKNOWN"; + } + + public function getQualityString(){ + return $this->getQuality() > 0 ? $this->getQuality() . "p" : "UNKNOWN"; + } + + /** + * @param mixed $group + */ + public function setGroup($group){ + $this->group = $group; + } + + /** + * @return string[] + */ + public function getTags(): array{ + return $this->tags; + } + + /** + * @param string[] $tags + */ + public function setTags(array $tags){ + $this->tags = $tags; + } + + /** + * @return int + */ + public function getNumber(): int{ + return $this->number; + } + + public function getId(){ + return sha1($this->getDownloadLink()); + } + + /** + * @param int $number + */ + public function setNumber(int $number){ + $this->number = $number; + } + + /** + * @return int + */ + public function getQuality(){ + return $this->quality; + } + + /** + * @param int $quality + */ + public function setQuality($quality){ + $this->quality = $quality; + } + + /** + * @return int + */ + public function getSource(){ + return $this->source; + } + + /** + * @param int $source + */ + public function setSource($source){ + $this->source = $source; + } + + public function __construct($originalTitle, $title, $group, $type, array $tags, $number = -1){ + $this->originalTitle = $originalTitle; + $this->title = $title; + $this->group = $group; + $this->type = $type; + $this->tags = $tags; + $this->number = $number; + $this->uploadDate = time(); + + $this->guessSource(); + $this->guessQuality(); + $this->guessAudioCodec(); + $this->guessVideoCodec(); + $this->guessCRC(); + + } + + private function guessQuality(){ + $this->quality = self::QUALITY_UNKNOWN; + + foreach($this->tags as $t){ + $quality = self::QUALITY_UNKNOWN; + + switch(strtolower($t)){ + case "1080p": + case "1920x1080": + case "1440x1080": //4:3 + case "900p": + case "810p": + case "bd1080p": + $quality = self::QUALITY_1080; + break; + case "700p": + case "720p": + case "1280x720": + case "1024x768": //4:3, strange res + case "1280x960": //4:3, strange res + case "768p": //wat https://www.nyaa.se/?page=view&tid=845988 + case "bd720p": + case "hdtv": + $quality = self::QUALITY_720; + break; + case "576p": + case "1024x576": + case "768x576": + case "1024x576p": + case "768x576p": + $quality = self::QUALITY_576; + break; + case "640x480": + case "848x480": + case "852x480": + case "720x480": + case "720x540": + case "640x480p": + case "848x480p": + case "852x480p": + case "720x480p": + case "720x540p": + case "480p": + $quality = self::QUALITY_480; + break; + } + + if($quality > $this->quality){ + $this->quality = $quality; + } + } + + if($this->quality === self::QUALITY_UNKNOWN){ + $quality = self::QUALITY_UNKNOWN; + + + if($this->getSource() === self::SOURCE_DVD){ + $quality = self::QUALITY_576; + }else if($this->getSource() === self::SOURCE_BLURAY){ + $quality = self::QUALITY_720; + }if($this->getSource() === self::SOURCE_TV){ + $quality = self::QUALITY_720; + } + + if($quality > $this->quality){ + $this->quality = $quality; + } + } + } + + private function guessSpecialType(){ + $this->specialType = Release::SPECIAL_TYPE_UNKNOWN;; + + foreach(preg_split("/[\\.\s,\\-\\[\\]\\(\\)]+/", $this->originalTitle) as $t){ + $source = self::SOURCE_UNKNOWN; + + $typeConstant = Release::class . "::SPECIAL_TYPE_" . strtoupper($t); + + if(defined($typeConstant)){ + $this->specialType = $typeConstant; + break; + } + } + } + + private function guessSource(){ + $this->source = self::SOURCE_UNKNOWN; + + foreach($this->tags as $t){ + $source = self::SOURCE_UNKNOWN; + + switch(strtolower($t)){ + case "bd": + case "bdmux": + case "bdremux": + case "blu": + case "bluray": + case "bdrip": + case "brrip": + case "bd720p": + case "bd1080p": + $source = self::SOURCE_BLURAY; + break; + case "hdtv": + case "tv": + $source = self::SOURCE_TV; + break; + case "cr": + case "web": + case "webrip": + case "webdl": + case "odrip": //On-Demand rip + case "dl": + case "funidl": + $source = self::SOURCE_WEB; + break; + case "ld": + case "ldrip": + case "laserdisc": + $source = self::SOURCE_LASERDISC; + break; + case "dvd": + case "dvdrip": + $source = self::SOURCE_DVD; + break; + } + + if($source > $this->source){ + $this->source = $source; + } + } + } + + + private function guessAudioCodec(){ + $this->audioCodec = self::AUDIO_CODEC_UNKNOWN; + + foreach($this->tags as $t){ + $audioCodec = self::AUDIO_CODEC_UNKNOWN; + + switch(strtolower($t)){ + case "ac": + case "ac3": + case "dd": + case "truehd": + $audioCodec = self::AUDIO_CODEC_AC3; + break; + case "dts": + $audioCodec = self::AUDIO_CODEC_DTS; + break; + case "flac": + case "flac2": + case "flac3": + case "flac5": + case "flacx2": + case "flacx3": + case "flacx5": + $audioCodec = self::AUDIO_CODEC_FLAC; + break; + case "aac": + case "aac2": + case "aac5": + $audioCodec = self::AUDIO_CODEC_AAC; + break; + } + + if($audioCodec > $this->audioCodec){ + $this->audioCodec = $audioCodec; + } + } + } + + + private function guessVideoCodec(){ + $this->videoCodec = self::VIDEO_CODEC_UNKNOWN; + + foreach($this->tags as $t){ + $videoCodec = self::VIDEO_CODEC_UNKNOWN; + + switch(strtolower($t)){ + case "265": + case "h265": + case "x265": + case "hevc": + case "hevc2": + $videoCodec = self::VIDEO_CODEC_HEVC; + break; + case "264": + case "h264": + case "x264": + case "8bit": + $videoCodec = self::VIDEO_CODEC_H264; + break; + case "10": + case "10bit": + case "10-bit": + case "hi10": + case "hi10p": + case "hi444p": + case "hi444pp": + $videoCodec = self::VIDEO_CODEC_H264_10; + break; + case "divx": + case "xvid": + case "mpeg4": + $videoCodec = self::VIDEO_CODEC_MPEG4; + break; + } + + if($videoCodec > $this->videoCodec){ + $this->videoCodec = $videoCodec; + } + } + } + + + + private function guessCRC(){ + $this->CRC = null; + + foreach($this->tags as $t){ + if(strlen($t) === 8 and preg_match("/[A-F0-9]{8}/", strtoupper($t)) > 0){ + $this->CRC = strtoupper($t); + break; + } + } + } + + public function serialize(){ + return [ + "id" => $this->getId(), + "name" => $this->getOriginalTitle(), + "title" => $this->getTitle(), + "number" => $this->getNumber(), + "group" => $this->getGroup(), + "type" => $this->getType(), + "source" => $this->getSource(), + "quality" => $this->getQuality(), + "version" => $this->getVersion(), + "properties" => $this->getProperties(), + "tags" => array_values($this->getTags()), + "trusted" => $this->isTrusted(), + "best" => $this->isBest(), + "seeds" => $this->getSeeds(), + "infoLink" => $this->getInfoLink(), + "specialType" => $this->getSpecialType(), + "downloadLink" => $this->getDownloadLink(), + "size" => $this->getSize(), + "uploadDate" => $this->getUploadDate(), + "parent" => $this->getParent() !== null ? $this->getParent()->serialize() : null + ]; + } + + public function encode(){ + return json_encode($this->serialize()); + } + + public static function undecode($data){ + return Release::unserialize(json_decode($data, true)); + } + + public static function unserialize(array $data){ + /** @var Release $release */ + $release = null; + switch ($data["type"]){ + case Release::TYPE_SINGLE: + $release = new Release($data["name"], $data["title"], $data["group"], $data["type"], $data["tags"], $data["number"]); + break; + case Release::TYPE_SPECIAL: + $release = new Release($data["name"], $data["title"], $data["group"], $data["type"], $data["tags"], $data["number"]); + break; + case Release::TYPE_VOLUME: + $release = new MultiRelease($data["name"], $data["title"], $data["group"], $data["type"], $data["tags"], $data["number"]); + break; + case Release::TYPE_BATCH: + $release = new MultiRelease($data["name"], $data["title"], $data["group"], $data["type"], $data["tags"], $data["number"]); + break; + } + + if($release !== null){ + $release->setSource($data["source"]); + $release->setQuality($data["quality"]); + $release->setTrusted($data["trusted"]); + $release->setBest($data["best"]); + $release->setSeeds($data["seeds"]); + $release->setInfoLink($data["infoLink"]); + $release->setDownloadLink($data["downloadLink"]); + $release->setSize($data["size"]); + $release->setUploadDate($data["uploadDate"]); + if(isset($data["properties"])){ + $release->setProperties($data["properties"]); + } + + if(isset($data["specialType"])){ + $release->setSpecialType($data["specialType"]); + } + + if($data["parent"] !== null){ + $release->setParent(Release::unserialize($data["parent"])); + } + } + + return $release; + } +} diff --git a/src/Animarr/Request.php b/src/Animarr/Request.php new file mode 100644 index 0000000..1c55b84 --- /dev/null +++ b/src/Animarr/Request.php @@ -0,0 +1,253 @@ +<?php + +namespace Animarr; + +class Request{ + + private static $USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"; + + private static $ch = []; + private static $cookie = []; + + public static function setCookie($n, $c){ + + if($c === null){ + self::$cookie[$n] = ""; + }else{ + self::$cookie[$n] .= $c; + } + unset(self::$ch[$n]); + curl_setopt(self::getHandlerInternal($n), CURLOPT_COOKIE, self::$cookie[$n]); + } + + public static function getHandleId($url){ + return parse_url($url)["host"]; + } + + public static function disableProxy($n){ + $ch = self::getHandlerInternal($n); + curl_setopt($ch, CURLOPT_PROXY, ""); + } + + public static function setHTTPProxy($n, $address){ + $ch = self::getHandlerInternal($n); + if(preg_match("/^([^@:]+:[^@:]+)@(.+)$/", $address, $matches) > 0){ + curl_setopt($ch, CURLOPT_PROXY, $matches[2]); + curl_setopt($ch, CURLOPT_PROXYUSERPWD, $matches[1]); + }else{ + curl_setopt($ch, CURLOPT_PROXY, $address); + } + curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); + } + + public static function setSocks4Proxy($n, $address){ + $ch = self::getHandlerInternal($n); + if(preg_match("/^([^@:]+:[^@:]+)@(.+)$/", $address, $matches) > 0){ + curl_setopt($ch, CURLOPT_PROXY, $matches[2]); + curl_setopt($ch, CURLOPT_PROXYUSERPWD, $matches[1]); + }else{ + curl_setopt($ch, CURLOPT_PROXY, $address); + } + curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4); + } + + public static function setSocks5Proxy($n, $address){ + $ch = self::getHandlerInternal($n); + if(preg_match("/^([^@:]+:[^@:]+)@(.+)$/", $address, $matches) > 0){ + curl_setopt($ch, CURLOPT_PROXY, $matches[2]); + curl_setopt($ch, CURLOPT_PROXYUSERPWD, $matches[1]); + }else{ + curl_setopt($ch, CURLOPT_PROXY, $address); + } + curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME); + } + + private static function getHandlerInternal($n, $page = null, $ignore = false){ + if($ignore){ + $ch = curl_init($page); + curl_setopt($ch, CURLOPT_COOKIE, self::$cookie[$n]); + return $ch; + } + + if(!isset(self::$ch[$n]) or self::$ch[$n] === null){ + self::$ch[$n] = curl_init($page); + }else{ + curl_setopt(self::$ch[$n], CURLOPT_URL, $page); + } + + return self::$ch[$n]; + } + + private static function getHandler($page, $ignore = false){ + return self::getHandlerInternal(self::getHandleId($page), $page, $ignore); + } + + public static function getHeaders($page, array $headers = [], $ignore = false, $timeout = 10){ + $ch = self::getHandler($page, $ignore); + curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NONE); + curl_setopt($ch, CURLOPT_POST, 0); + curl_setopt($ch, CURLOPT_NOPROGRESS, true); + curl_setopt($ch, CURLOPT_HEADER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); + curl_setopt($ch, CURLOPT_ENCODING, ""); + curl_setopt($ch, CURLOPT_AUTOREFERER, true); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); + curl_setopt($ch, CURLOPT_COOKIEFILE, ""); + curl_setopt($ch, CURLOPT_HTTPHEADER, array_merge(["User-Agent: " . self::$USER_AGENT, "Accept-Language: *", "Connection: Keep-Alive", "Keep-Alive: 300"], $headers)); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_HEADER, true); + curl_setopt($ch, CURLOPT_NOBODY, true); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, (int) $timeout); + + $ret = curl_exec($ch); + if(curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200){ + return ""; + } + + return $ret; + } + + public static function getHeaderURL($page, array $headers = [], $ignore = false, $timeout = 10){ + $ch = self::getHandler($page, $ignore); + + curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NONE); + curl_setopt($ch, CURLOPT_NOBODY, false); + curl_setopt($ch, CURLOPT_NOPROGRESS, true); + curl_setopt($ch, CURLOPT_POST, 0); + curl_setopt($ch, CURLOPT_HEADER, true); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); + curl_setopt($ch, CURLOPT_ENCODING, ""); + curl_setopt($ch, CURLOPT_AUTOREFERER, true); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); + curl_setopt($ch, CURLOPT_COOKIEFILE, ""); + curl_setopt($ch, CURLOPT_HTTPHEADER, array_merge(["User-Agent: " . self::$USER_AGENT, "Accept-Language: *"], $headers)); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, (int) $timeout); + curl_setopt($ch, CURLOPT_TIMEOUT, 30); + + $ret = curl_exec($ch); + if(curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200){ + return ""; + } + + return $ret; + } + + public static function getAuthURL($page, $user, $pwd, array $headers = [], $ignore = false, $timeout = 10){ + //Downloader::log("$page", "getAuthURL"); + $ch = self::getHandler($page, $ignore); + + curl_setopt($ch, CURLOPT_USERPWD, "$user:$pwd"); + curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); + curl_setopt($ch, CURLOPT_NOBODY, false); + curl_setopt($ch, CURLOPT_NOPROGRESS, true); + curl_setopt($ch, CURLOPT_POST, 0); + curl_setopt($ch, CURLOPT_HEADER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); + curl_setopt($ch, CURLOPT_ENCODING, ""); + curl_setopt($ch, CURLOPT_AUTOREFERER, true); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); + curl_setopt($ch, CURLOPT_COOKIEFILE, ""); + curl_setopt($ch, CURLOPT_HTTPHEADER, array_merge(["User-Agent: " . self::$USER_AGENT, "Accept-Language: *", "Accept: */*"], $headers)); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, (int) $timeout); + curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); + + $ret = curl_exec($ch); + if(curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200){ + return ""; + } + + return $ret; + } + + public static function getURL($page, array $headers = [], $ignore = false, $timeout = 10){ + //Downloader::log("$page", "getURL"); + $ch = self::getHandler($page, $ignore); + + curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NONE); + curl_setopt($ch, CURLOPT_NOBODY, false); + curl_setopt($ch, CURLOPT_NOPROGRESS, true); + curl_setopt($ch, CURLOPT_POST, 0); + curl_setopt($ch, CURLOPT_HEADER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); + curl_setopt($ch, CURLOPT_ENCODING, ""); + curl_setopt($ch, CURLOPT_AUTOREFERER, true); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); + curl_setopt($ch, CURLOPT_COOKIEFILE, ""); + curl_setopt($ch, CURLOPT_HTTPHEADER, array_merge(["User-Agent: " . self::$USER_AGENT, "Accept-Language: *", "Accept: */*"], $headers)); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, (int) $timeout); + curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); + + $ret = curl_exec($ch); + if(curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200){ + return ""; + } + + return $ret; + } + + public static function getFileURL($page, $fp, array $headers = [], $ignore = false, callable $progress = null, $timeout = 30){ + $ch = self::getHandler($page, $ignore); + + curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NONE); + curl_setopt($ch, CURLOPT_NOBODY, false); + curl_setopt($ch, CURLOPT_POST, 0); + curl_setopt($ch, CURLOPT_HEADER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); + curl_setopt($ch, CURLOPT_ENCODING, ""); + curl_setopt($ch, CURLOPT_AUTOREFERER, true); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); + curl_setopt($ch, CURLOPT_COOKIEFILE, ""); + curl_setopt($ch, CURLOPT_HTTPHEADER, array_merge(["User-Agent: " . self::$USER_AGENT, "Accept-Language: *"], $headers)); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, (int) $timeout); + curl_setopt($ch, CURLOPT_FILE, $fp); + + if($progress !== null){ + curl_setopt($ch, CURLOPT_NOPROGRESS, false); + curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, $progress); + //curl_setopt($ch, CURLOPT_BUFFERSIZE, 1024 * 512); + } + + curl_exec($ch); + + curl_setopt($ch, CURLOPT_NOPROGRESS, true); + curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, null); + curl_setopt($ch, CURLOPT_FILE, null); + } + + public static function postURL($page, $args, array $headers = [], $ignore = false, $timeout = 10){ + $ch = self::getHandler($page, $ignore); + curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NONE); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_NOBODY, false); + if(isset($args["returnheader"])){ + unset($args["returnheader"]); + curl_setopt($ch, CURLOPT_HEADER, true); + }else{ + curl_setopt($ch, CURLOPT_HEADER, false); + } + curl_setopt($ch, CURLOPT_NOPROGRESS, true); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); + curl_setopt($ch, CURLOPT_ENCODING, ""); + curl_setopt($ch, CURLOPT_POSTFIELDS, $args); + curl_setopt($ch, CURLOPT_AUTOREFERER, true); + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); + curl_setopt($ch, CURLOPT_COOKIEFILE, ""); + curl_setopt($ch, CURLOPT_HTTPHEADER, ["User-Agent: " . self::$USER_AGENT, "Accept-Language: *"] + $headers); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, (int) $timeout); + curl_setopt($ch, CURLOPT_TIMEOUT, 30); + + return curl_exec($ch); + } + +} diff --git a/src/Animarr/Selector.php b/src/Animarr/Selector.php new file mode 100755 index 0000000..d6594c5 --- /dev/null +++ b/src/Animarr/Selector.php @@ -0,0 +1,282 @@ +<?php + +namespace Animarr; + + +use Animarr\Release\Release; +use Animarr\Torrent\Torrent; + +class Selector{ + + private $priorities = []; + + private $pedanticPriorities = []; + + private $pedanticPreferPublic; + + private $greylist = []; + + private $goldlist = []; + + public function __construct(){ + foreach (Database::getConfigKey("priority.list", [[]]) as $entry){ + if($entry{0} === "{"){ + $entry = json_decode($entry); + $p = []; + if(isset($entry->source)){ + $p["source"] = constant(Release::class . "::SOURCE_" . $entry->source); + } + if(isset($entry->quality)){ + $p["quality"] = constant(Release::class . "::QUALITY_" . $entry->quality); + } + if(isset($entry->best)){ + $p["best"] = $entry->best; + } + if(isset($entry->trusted)){ + $p["trusted"] = $entry->trusted; + } + $this->priorities[] = $p; + } + } + + foreach (Database::getConfigKey("priority.pedantic.list", [[]]) as $entry){ + if($entry{0} === "{"){ + $entry = json_decode($entry); + $p = []; + if(isset($entry->videoCodec)){ + $p["videoCodec"] = constant(Release::class . "::VIDEO_CODEC_" . $entry->videoCodec); + } + if(isset($entry->audioCodec)){ + $p["audioCodec"] = constant(Release::class . "::AUDIO_CODEC_" . $entry->audioCodec); + } + if(isset($entry->crc)){ + $p["crc"] = $entry->crc; + } + + $this->pedanticPriorities[] = $p; + } + } + + $goldlist = Database::getConfigKey("filter.groups.goldlist", []); + + foreach ($goldlist as $k => $entry){ + $this->goldlist[strtolower($entry)] = count($goldlist) - $k; + } + + $greylist = Database::getConfigKey("filter.groups.greylist", []); + + foreach ($greylist as $entry){ + $this->greylist[strtolower($entry)] = $entry; + } + + $this->pedanticPreferPublic = Database::getConfigKey("priority.pedantic.preferPublic", true); + } + + public function calculatePriority(Release $release){ + $bestMatch = PHP_INT_MAX; + + foreach($this->priorities as $k => $match){ + if(isset($match["source"]) and $match["source"] !== $release->getSource()){ + continue; + } + if(isset($match["quality"]) and $match["quality"] !== $release->getQuality()){ + continue; + } + if(isset($match["trusted"]) and $match["trusted"] !== $release->isTrusted()){ + continue; + } + if(isset($match["best"]) and $match["best"] !== $release->isBest()){ + continue; + } + + if($bestMatch > $k){ + $bestMatch = $k; + } + } + + return $bestMatch; + } + + + public function calculatePedanticPriority(Release $release){ + $bestMatch = PHP_INT_MAX; + + foreach($this->pedanticPriorities as $k => $match){ + if(isset($match["videoCodec"]) and $match["videoCodec"] !== $release->getVideoCodec()){ + continue; + } + if(isset($match["audioCodec"]) and $match["audioCodec"] !== $release->getAudioCodec()){ + continue; + } + if(isset($match["crc"]) and $match["crc"] !== ($release->getCRC() !== null)){ + continue; + } + + if($bestMatch > $k){ + $bestMatch = $k; + } + } + + return $bestMatch; + } + + /** + * @param Release[] $listing + * @param array $preferGroups + * @return Release + */ + public function findBestRelease(array $listing, array $preferGroups = []){ + $best = null; + foreach ($listing as $entry){ + if($best === null){ + $best = $entry; + continue; + } + $old = $best; + $best = $this->selectBest($best, $entry, $preferGroups); + Downloader::log("\"".$best->getOriginalTitle()."\" is better than \"".($old === $best ? $entry->getOriginalTitle() : $old->getOriginalTitle())."\"", "SELECTOR"); + } + + return $best; + } + + private function isInList(Release $release, array $list){ + $c = isset($list[strtolower($release->getGroup())]) ? 1 : 0; + foreach(explode("-", strtolower($release->getGroup())) as $i => $k){ + if($k != "" and isset($list[$k])){ + ++$c; + } + } + + return $c; + } + + private function isInPriorityList(Release $release, array $list){ + $c = isset($list[strtolower($release->getGroup())]) ? $list[strtolower($release->getGroup())] : 0; + foreach(explode("-", strtolower($release->getGroup())) as $i => $k){ + if($k != "" and isset($list[$k])){ + if($list[$k] > $c){ + $c = $list[$k]; + } + } + } + + return $c; + } + + public function selectBest(Release $e1, Release $e2, array $preferGroups = []){ + $groups = []; + foreach ($preferGroups as $k){ + $groups[strtolower($k)] = $k; + } + + $priority1 = $this->calculatePriority($e1); + $priority2 = $this->calculatePriority($e2); + + if(in_array(pathinfo(trim(strtolower($e1->getOriginalTitle())), PATHINFO_EXTENSION), Database::getConfigKey("filter.extension.greylist", []))){ + $priority1 += 10000; + } + + if(in_array(pathinfo(trim(strtolower($e2->getOriginalTitle())), PATHINFO_EXTENSION), Database::getConfigKey("filter.extension.greylist", []))){ + $priority2 += 10000; + } + + if($this->isInList($e1, $this->greylist)){ + $priority1 += 5000; + } + + if($this->isInList($e2, $this->greylist)){ + $priority2 += 5000; + } + + if($this->isInList($e1, $groups)){ + $priority1 -= 10000; + } + + if($this->isInList($e2, $groups)){ + $priority2 -= 10000; + } + + if($e1->getSource() === $e2->getSource()){ + if($d = $this->isInPriorityList($e1, $this->goldlist)){ + $priority1 -= 1000; + } + + if($d = $this->isInPriorityList($e2, $this->goldlist)){ + $priority2 -= 1000; + } + } + + if($priority1 > $priority2){ + return $e2; + }elseif($priority1 < $priority2){ + return $e1; + } + + if($d = $this->isInPriorityList($e1, $this->goldlist)){ + $priority1 -= 1000 * $d; + } + + if($d = $this->isInPriorityList($e2, $this->goldlist)){ + $priority2 -= 1000 * $d; + } + + if($priority1 > $priority2){ + return $e2; + }elseif($priority1 < $priority2){ + return $e1; + } + + //AAAAHAHHA they are the same! + //Now starts the fun part! + + $ppriority1 = $this->calculatePedanticPriority($e1); + $ppriority2 = $this->calculatePedanticPriority($e2); + + if($ppriority1 > $ppriority2){ + return $e2; + }elseif($ppriority1 < $ppriority2){ + return $e1; + } + + if($this->pedanticPreferPublic){ + $e1IsPrivate = Torrent::isPrivateTorrent($e1->getDownloadLink()); + $e2IsPrivate = Torrent::isPrivateTorrent($e2->getDownloadLink()); + + if($e1IsPrivate and !$e2IsPrivate){ + return $e2; + }else if(!$e1IsPrivate and $e2IsPrivate){ + return $e1; + } + } + + //This handles v2s... mostly? + if($e1->getGroup() === $e2->getGroup() and $e1->getNumber() === $e2->getNumber() and $e1->getQuality() === $e2->getQuality() and $e1->getSource() === $e2->getSource() and $e1->getTitle() === $e2->getTitle() and $e1->getType() === $e2->getType()){ + + + if($e1->getVersion() > $e2->getVersion()){ + return $e1; + }else if($e1->getVersion() < $e2->getVersion()){ + return $e2; + } + + } + + if($e1->getSeeds() > $e2->getSeeds()){ + return $e1; + }else if($e1->getSeeds() < $e2->getSeeds()){ + return $e2; + } + + + if($e1->getUploadDate() < $e2->getUploadDate()){ + return $e1; + }else if($e1->getUploadDate() > $e2->getUploadDate()){ + return $e2; + } + + return $e1; + } + + +} diff --git a/src/Animarr/Source/AniDex.php b/src/Animarr/Source/AniDex.php new file mode 100644 index 0000000..0ff2898 --- /dev/null +++ b/src/Animarr/Source/AniDex.php @@ -0,0 +1,187 @@ +<?php + +namespace Animarr\Source; + +use Animarr\Database; +use Animarr\Downloader; +use Animarr\Extractor\SceneExtractor; +use Animarr\Release\Release; +use Animarr\Request; + +class AniDex implements Source{ + + const LANGUAGE_ALL = 0; + const LANGUAGE_ENGLISH = 1; + const LANGUAGE_SPANISH = "15,29"; + + const SELECTOR_BATCH = "&batch=1"; + const SELECTOR_RAW = "&raw=1"; + const SELECTOR_REMAKES = "&reencode=1"; + + const SELECTOR_DEFAULT = self::SELECTOR_BATCH . self::SELECTOR_REMAKES; + + const FILTER_MODE_INCLUDE = 1; + const FILTER_MODE_ONLY = 2; + + private $language; + private $selector; + private $filterMode; + private $uploader = null; + private $extractor; + + public function __construct(SceneExtractor $extractor, $language = self::LANGUAGE_ENGLISH, $selector = self::SELECTOR_DEFAULT, $filterMode = self::FILTER_MODE_INCLUDE){ + $this->language = $language; + $this->selector = $selector; + $this->filterMode = $filterMode; + $this->extractor = $extractor; + } + + public function canSearch(){ + return true; + } + + public function getName(){ + return "AniDex"; + } + + + /** + * @param $query + * @param int $maxResults + * @return Release[] + */ + public function find($query, $maxResults = -1, $extraQuery = ""){ + $url = Database::getConfigKey("tracker.anidex.ajax.baseurl", "https://anidex.info/ajax/page.ajax.php?page=torrents"); + + if($query !== null){ + $url .= "&filename=". urlencode($query); + } + + $itemsPerPage = 50; + + $url .= $this->selector; + $url .= "&lang_id={$this->language}"; + $url .= "&filter_mode={$this->filterMode}"; + $url .= "&limit=$itemsPerPage"; + $url .= "&category=1"; + + if($this->uploader !== null){ + $url .= "&group_id={$this->uploader}"; + } + + $results = []; + + $offset = 0; + + do{ + $lastCount = count($results); + $feed = Request::getURL($url . "&offset=" . ($offset * $itemsPerPage), [ + "X-Requested-With: XMLHttpRequest", + "Referer: https://anidex.info/", + ]); + + if($feed == ""){ + break; + } + + $dom = new \DOMDocument(); + @$dom->loadHTML($feed); + + foreach($dom->getElementsByTagName("tr") as $item){ + + if($item->getElementsByTagName("a")->length <= 0 or preg_match("#torrent#", $item->getElementsByTagName("a")->item(0)->getAttribute("class")) <= 0){ + continue; + } + + $isTrusted = ($item->getElementsByTagName("td")->item(1)->getElementsByTagName("span")->item(0) !== null ? true : false); + + $infoLink = trim($item->getElementsByTagName("td")->item(2)->getElementsByTagName("a")->item(0)->getAttribute("href")); + $title = trim($item->getElementsByTagName("td")->item(2)->getElementsByTagName("a")->item(0)->getElementsByTagName("span")->item(0)->textContent); + $torrentLink = trim($item->getElementsByTagName("td")->item(4)->getElementsByTagName("a")->item(0)->getAttribute("href")); + if($infoLink{0} === "?"){ + $data = parse_url($url); + $infoLink = $data["scheme"] . "://" . $data["host"] . "/" . $infoLink; + } + if($torrentLink{0} === "/"){ + $data = parse_url($url); + $torrentLink = $data["scheme"] . "://" . $data["host"] . $torrentLink; + } + $magnetLink = trim($item->getElementsByTagName("td")->item(5)->getElementsByTagName("a")->item(0)->getAttribute("href")); + $uploadDate = \DateTime::createFromFormat("Y-m-d H:i:s e", (string) $item->getElementsByTagName("td")->item(7)->getAttribute("title"))->getTimestamp(); + $seeds = intval($item->getElementsByTagName("td")->item(8)->textContent); + + $release = $this->extractor->extractInformation($title); + + if($release !== null){ + $release->setInfoLink($infoLink); + $release->setDownloadLink($torrentLink); + $release->setUploadDate($uploadDate); + + $release->setSeeds($seeds); + + if($isTrusted){ + $release->setTrusted(true); + } + + if(isset(Database::getConfigKey("tracker.anidex.trusted", [])[$release->getGroup()])){ + $release->setTrusted(Database::getConfigKey("tracker.anidex.trusted", [])[$release->getGroup()]); + }else if(Database::getConfigKey("tracker.anidex.goldlist.trusted", false)){ + $items = explode("-", strtolower($release->getGroup())); + foreach(Database::getConfigKey("filter.groups.goldlist", []) as $gold){ + if($release->isTrusted()){ + break; + } + + if(strtolower($release->getGroup()) == strtolower($gold)){ + $release->setTrusted(true); + } + + foreach($items as $i){ + if($i === strtolower($gold)){ + $release->setTrusted(true); + break; + } + } + } + } + + if($release->getSource() === Release::SOURCE_UNKNOWN){ + if(isset(Database::getConfigKey("tracker.anidex.unknown.source", [])[$release->getGroup()])){ + $release->setSource(constant(Release::class . "::SOURCE_" . Database::getConfigKey("tracker.anidex.unknown.source", [])[$release->getGroup()])); + }else{ + $release->setSource(constant(Release::class . "::SOURCE_" . Database::getConfigKey("tracker.anidex.unknown.source.default", "TV"))); + } + } + + if($release->getQuality() === Release::QUALITY_UNKNOWN){ + if(isset(Database::getConfigKey("tracker.nyaa.unknown.quality", [])[$release->getGroup()])){ + $release->setQuality(constant(Release::class . "::QUALITY_" . Database::getConfigKey("tracker.anidex.unknown.quality", [])[$release->getGroup()])); + }else{ + $release->setQuality(constant(Release::class . "::QUALITY_" . Database::getConfigKey("tracker.anidex.unknown.quality.default", "720"))); + } + } + + if($release->getVideoCodec() === Release::VIDEO_CODEC_UNKNOWN){ + if(isset(Database::getConfigKey("tracker.anidex.unknown.videoCodec", [])[$release->getGroup()])){ + $release->setVideoCodec(constant(Release::class . "::VIDEO_CODEC_" . Database::getConfigKey("tracker.anidex.unknown.videoCodec", [])[$release->getGroup()])); + }else{ + $release->setVideoCodec(constant(Release::class . "::VIDEO_CODEC_" . Database::getConfigKey("tracker.anidex.unknown.videoCodec.default", "H264"))); + } + } + + + $results[$release->getId()] = $release; + } + } + ++$offset; + }while(($maxResults == -1 or count($results) < $maxResults) and $lastCount !== count($results)); + + return $results; + } + + public function setUploader($uploader){ + $this->uploader = ($uploader === null ? null : $uploader); + } +} + + diff --git a/src/Animarr/Source/AnimeBytes.php b/src/Animarr/Source/AnimeBytes.php new file mode 100644 index 0000000..70135af --- /dev/null +++ b/src/Animarr/Source/AnimeBytes.php @@ -0,0 +1,224 @@ +<?php + +namespace Animarr\Source; + +use Animarr\Database; +use Animarr\Downloader; +use Animarr\Extractor\AnimeBytesExtractor; +use Animarr\Release\Release; +use Animarr\Request; + +class AnimeBytes implements Source{ + + const CATEGORY_RAW = "raw"; + const CATEGORY_SOFTSUBS = "softsubs"; + const CATEGORY_HARDSUBS = "hardsubs"; + const CATEGORY_SUBS = [self::CATEGORY_SOFTSUBS, self::CATEGORY_HARDSUBS]; + const CATEGORY_ALL = [self::CATEGORY_RAW, self::CATEGORY_SOFTSUBS, self::CATEGORY_HARDSUBS]; + + + private $category; + private $uploader = null; + private $loggedIn; + private $extractor; + private $username; + private $passkey; + + public function __construct(AnimeBytesExtractor $extractor, $category = self::CATEGORY_SUBS){ + $this->category = !is_array($category) ? [$category] : $category; + $this->extractor = $extractor; + + $this->username = Database::getConfigKey("tracker.animebytes.auth.username", null); + $this->passkey = trim(file_get_contents(Database::getConfigKey("tracker.animebytes.auth.passkeyFile", null))); + $this->loggedIn = ($this->username != null and $this->passkey != null); + } + + public function canSearch(){ + return true; + } + + public function getName(){ + return "AnimeBytes"; + } + + + /** + * @param $query + * @param int $maxResults + * @return Release[] + */ + public function find($query, $maxResults = -1, $extraQuery = ""){ + if(!$this->loggedIn){ + return []; + } + + $url = Database::getConfigKey("tracker.animebytes.scrapeUrl", "https://animebytes.tv/scrape.php"); + + $params = [ + "username" => $this->username, + "torrent_pass" => $this->passkey, + "type" => "anime", + "filter_cat[1]" => "1", + "searchstr" => "", + "actions" => "advanced", + "search_type" => "title", + "year" => "", + "year2" => "", + "tags" => "-lolicon", + "tags_type" => "1", + "sort" => "time_added", + "way" => "desc", + "hentai" => "0", + "showhidden" => "0", + "anime[tv_series]" => "1", + "anime[bd_special]" => "1", + "anime[dvd_special]" => "1", + //"anime[tv_special]" => "1", + "anime[ova]" => "1", + "anime[ona]" => "1", + "releasegroup" => "", + "epcount" => "", + "epcount2" => "", + "artbooktitle" => "", + "containers[avi]" => "1", + "containers[mkv]" => "1", + "containers[mp4]" => "1", + "containers[ogm]" => "1", + "containers[wmv]" => "1", + "containers[mpg]" => "1", + "containers[mpeg]" => "1", + ]; + + foreach($this->category as $category){ + $params["animetrans[$category]"] = "1"; + } + + if($this->uploader !== null){ + $params["releasegroup"] = $this->uploader; + } + + if($query !== null){ + $params["sort"] = "relevance"; + $params["way"] = "desc"; + $params["searchstr"] = $query; + } + + $results = []; + + $feed = Request::getURL($url . "?" . http_build_query($params)); + + if($feed == ""){ + return $results; + } + + $json = json_decode($feed, true); + if(isset($json["error"])){ + Downloader::log("[ERROR] " . $json["error"], $this->getName()); + return $results; + } + + if(!isset($json["Groups"])){ + return $results; + } + + foreach($json["Groups"] as $item){ + $title = $item["SeriesName"]; + $aid = ""; + + $rating = null;//$item["Rating"] //not implemented on AB; + $votes = $item["Votes"]; + + foreach($item["Links"] as $link){ + if(preg_match("#anidb\\.net/a([0-9]+)$#", $link, $matches) > 0){ + $aid = intval($matches[1]); + } + } + + foreach($item["Torrents"] as $torrent){ + $downloadInfo = $torrent["Property"]; + + $downloadInfoLink = "https://animebytes.tv/torrents.php?id=". $item["ID"] ."&torrentid=" . $torrent["ID"]; + $downloadLink = $torrent["Link"]; + + $releaseInfo = [ + //"group" => $item, + "title" => $title, + "aid" => $aid, + "info" => $downloadInfo, + "edition" => isset($torrent["EditionData"]["EditionTitle"]) ? $torrent["EditionData"]["EditionTitle"] : null, + ]; + + $release = $this->extractor->extractInformation(http_build_query($releaseInfo), $this->category); + + if($release === null){ + continue; + } + + $release->setInfoLink($downloadInfoLink); + $release->setDownloadLink($downloadLink); + $release->setUploadDate(\DateTime::createFromFormat("Y-m-d H:i:s", $torrent["UploadTime"], new \DateTimeZone("UTC"))->getTimestamp()); + + $release->setSeeds((int) $torrent["Seeders"]); + + $release->setProperty("animebytes:rating", $rating); + $release->setProperty("animebytes:votes", $votes); + + if(isset(Database::getConfigKey("tracker.animebytes.trusted", [])[$release->getGroup()])){ + $release->setTrusted(Database::getConfigKey("tracker.animebytes.trusted", [])[$release->getGroup()]); + }else if(Database::getConfigKey("tracker.animebytes.goldlist.trusted", false)){ + $items = explode("-", strtolower($release->getGroup())); + foreach(Database::getConfigKey("filter.groups.goldlist", []) as $gold){ + if($release->isTrusted()){ + break; + } + + if(strtolower($release->getGroup()) == strtolower($gold)){ + $release->setTrusted(true); + } + + foreach($items as $i){ + if($i === strtolower($gold)){ + $release->setTrusted(true); + break; + } + } + } + } + + if($release->getSource() === Release::SOURCE_UNKNOWN){ + if(isset(Database::getConfigKey("tracker.animebytes.unknown.source", [])[$release->getGroup()])){ + $release->setSource(constant(Release::class . "::SOURCE_" . Database::getConfigKey("tracker.animebytes.unknown.source", [])[$release->getGroup()])); + }else{ + $release->setSource(constant(Release::class . "::SOURCE_" . Database::getConfigKey("tracker.animebytes.unknown.source.default", "TV"))); + } + } + + if($release->getQuality() === Release::QUALITY_UNKNOWN){ + if(isset(Database::getConfigKey("tracker.nyaa.unknown.quality", [])[$release->getGroup()])){ + $release->setQuality(constant(Release::class . "::QUALITY_" . Database::getConfigKey("tracker.animebytes.unknown.quality", [])[$release->getGroup()])); + }else{ + $release->setQuality(constant(Release::class . "::QUALITY_" . Database::getConfigKey("tracker.animebytes.unknown.quality.default", "720"))); + } + } + + if($release->getVideoCodec() === Release::VIDEO_CODEC_UNKNOWN){ + if(isset(Database::getConfigKey("tracker.animebytes.unknown.videoCodec", [])[$release->getGroup()])){ + $release->setVideoCodec(constant(Release::class . "::VIDEO_CODEC_" . Database::getConfigKey("tracker.animebytes.unknown.videoCodec", [])[$release->getGroup()])); + }else{ + $release->setVideoCodec(constant(Release::class . "::VIDEO_CODEC_" . Database::getConfigKey("tracker.animebytes.unknown.videoCodec.default", "H264"))); + } + } + + $results[$release->getId()] = $release; + } + } + + return $results; + } + + public function setUploader($uploader){ + $this->uploader = ($uploader === null ? -1 : $uploader); + } +} + + diff --git a/src/Animarr/Source/HorribleSubs.php b/src/Animarr/Source/HorribleSubs.php new file mode 100644 index 0000000..c75cbdf --- /dev/null +++ b/src/Animarr/Source/HorribleSubs.php @@ -0,0 +1,82 @@ +<?php + +namespace Animarr\Source; + +use Animarr\Database; +use Animarr\Downloader; +use Animarr\Extractor\SceneExtractor; +use Animarr\Release\Release; +use Animarr\Request; + +class HorribleSubs implements Source{ + + private $extractor; + + public function __construct(SceneExtractor $extractor){ + $this->extractor = $extractor; + } + + public function canSearch(){ + return false; + } + + public function getName(){ + return "HorribleSubs"; + } + + /** + * @param $query + * @param int $maxResults + * @return Release[] + */ + public function find($query, $maxResults = -1, $extraQuery = ""){ + $url = Database::getConfigKey("tracker.hs.rss.baseurl", "https://horriblesubs.info/rss.php?res=all"); + + $results = []; + + $feed = Request::getURL($url); + if($feed == ""){ + return $results; + } + $xml = new \SimpleXMLElement($feed); + foreach($xml->channel->item as $item){ + $title = (string) $item->title; + $release = $this->extractor->extractInformation($title); + if($release !== null){ + $release->setInfoLink((string) $item->link); + $release->setDownloadLink((string) $item->link); + $release->setUploadDate(\DateTime::createFromFormat(\DateTime::RSS, (string) $item->pubDate)->getTimestamp()); + + $release->setSeeds(Database::getConfigKey("filter.minseeds", 3)); + $release->setTrusted(true); + + if($release->getSource() === Release::SOURCE_UNKNOWN){ + if(isset(Database::getConfigKey("tracker.hs.unknown.source", [])[$release->getGroup()])){ + $release->setSource(constant(Release::class . "::SOURCE_" . Database::getConfigKey("tracker.hs.unknown.source", [])[$release->getGroup()])); + }else{ + $release->setSource(constant(Release::class . "::SOURCE_" . Database::getConfigKey("tracker.hs.unknown.source.default", "WEB"))); + } + } + if($release->getQuality() === Release::QUALITY_UNKNOWN){ + if(isset(Database::getConfigKey("tracker.hs.unknown.quality", [])[$release->getGroup()])){ + $release->setQuality(constant(Release::class . "::QUALITY_" . Database::getConfigKey("tracker.hs.unknown.quality", [])[$release->getGroup()])); + }else{ + $release->setQuality(constant(Release::class . "::QUALITY_" . Database::getConfigKey("tracker.hs.unknown.quality.default", "720"))); + } + } + if($release->getVideoCodec() === Release::VIDEO_CODEC_UNKNOWN){ + if(isset(Database::getConfigKey("tracker.hs.unknown.videoCodec", [])[$release->getGroup()])){ + $release->setVideoCodec(constant(Release::class . "::VIDEO_CODEC_" . Database::getConfigKey("tracker.hs.unknown.videoCodec", [])[$release->getGroup()])); + }else{ + $release->setVideoCodec(constant(Release::class . "::VIDEO_CODEC_" . Database::getConfigKey("tracker.hs.unknown.videoCodec.default", "H264"))); + } + } + $results[$release->getId()] = $release; + } + } + + return $results; + } +} + + diff --git a/src/Animarr/Source/HorribleSubsOld.php b/src/Animarr/Source/HorribleSubsOld.php new file mode 100644 index 0000000..1b4879f --- /dev/null +++ b/src/Animarr/Source/HorribleSubsOld.php @@ -0,0 +1,109 @@ +<?php + +namespace Animarr\Source; + +use Animarr\Database; +use Animarr\Downloader; +use Animarr\Extractor\SceneExtractor; +use Animarr\Release\Release; +use Animarr\Request; + +class HorribleSubsOld implements Source{ + + private $extractor; + + public function __construct(SceneExtractor $extractor){ + $this->extractor = $extractor; + } + + public function canSearch(){ + return false; + } + + public function getName(){ + return "HorribleSubsOld"; + } + + /** + * @param $query + * @param int $maxResults + * @return Release[] + */ + public function find($query, $maxResults = -1, $extraQuery = ""){ + $url = Database::getConfigKey("tracker.hsold.feed.baseurl", "https://horriblesubs.info/lib/latest.php?mode=batch"); + + $results = []; + + $offset = 0; + + do{ + $lastCount = count($results); + $feed = Request::getURL($url . "&nextid=" . $offset); + if($feed == ""){ + return $results; + } + + $dom = new \DOMDocument(); + @$dom->loadHTML($feed); + foreach($dom->getElementsByTagName("tr") as $item){ + if($item->getElementsByTagName("td")->item(0)->getAttribute("class") != "dl-label"){ + continue; + } + + $title = "[HorribleSubs] " . $item->getElementsByTagName("td")->item(0)->textContent; + $magnetLink = null; + + foreach($item->getElementsByTagName("a") as $link){ + if(strpos($link->getAttribute("href"), "magnet:") === 0){ + $magnetLink = $link->getAttribute("href"); + break; + } + } + + $release = $this->extractor->extractInformation($title); + if($magnetLink !== null and $release !== null){ + $release->setInfoLink($magnetLink); + $release->setDownloadLink($magnetLink); + + $release->setSeeds(Database::getConfigKey("filter.minseeds", 3)); + $release->setTrusted(true); + + if($release->getSource() === Release::SOURCE_UNKNOWN){ + if(isset(Database::getConfigKey("tracker.hsold.unknown.source", [])[$release->getGroup()])){ + $release->setSource(constant(Release::class . "::SOURCE_" . Database::getConfigKey("tracker.hsold.unknown.source", [])[$release->getGroup()])); + }else{ + $release->setSource(constant(Release::class . "::SOURCE_" . Database::getConfigKey("tracker.hsold.unknown.source.default", "WEB"))); + } + } + if($release->getQuality() === Release::QUALITY_UNKNOWN){ + if(isset(Database::getConfigKey("tracker.hsold.unknown.quality", [])[$release->getGroup()])){ + $release->setQuality(constant(Release::class . "::QUALITY_" . Database::getConfigKey("tracker.hsold.unknown.quality", [])[$release->getGroup()])); + }else{ + $release->setQuality(constant(Release::class . "::QUALITY_" . Database::getConfigKey("tracker.hsold.unknown.quality.default", "720"))); + } + } + if($release->getVideoCodec() === Release::VIDEO_CODEC_UNKNOWN){ + if(isset(Database::getConfigKey("tracker.hsold.unknown.videoCodec", [])[$release->getGroup()])){ + $release->setVideoCodec(constant(Release::class . "::VIDEO_CODEC_" . Database::getConfigKey("tracker.hsold.unknown.videoCodec", [])[$release->getGroup()])); + }else{ + $release->setVideoCodec(constant(Release::class . "::VIDEO_CODEC_" . Database::getConfigKey("tracker.hsold.unknown.videoCodec.default", "H264"))); + } + } + + if($release instanceof MultiRelease and count($release->getContents()) <= 0 and Database::getConfigKey("magnet.unknownRelease.wait", false)){ + Torrent::queueMagnetTorrent($magnetLink, Database::getConfigKey("torrent.cache.folder", null)); + continue; + } + + $results[$release->getId()] = $release; + } + } + + ++$offset; + }while(($maxResults === -1 or count($results) < $maxResults) and $lastCount !== count($results)); + + return $results; + } +} + + diff --git a/src/Animarr/Source/Nyaa.php b/src/Animarr/Source/Nyaa.php new file mode 100755 index 0000000..446767e --- /dev/null +++ b/src/Animarr/Source/Nyaa.php @@ -0,0 +1,133 @@ +<?php + +namespace Animarr\Source; + +use Animarr\Database; +use Animarr\Downloader; +use Animarr\Extractor\SceneExtractor; +use Animarr\Release\Release; + +class Nyaa implements Source{ + + const CATEGORY_ANIME_RAW = "1_11"; + const CATEGORY_ANIME_ENGLISH = "1_37"; + const CATEGORY_ANIME_NON_ENGLISH = "1_38"; + + const FILTER_ALL = 0; + const FILTER_REMAKES = 1; + const FILTER_TRUSTED_ONLY = 2; + const FILTER_APLUS_ONLY = 3; + + private $category; + private $filter; + private $uploader = -1; + private $extractor; + + public function __construct(SceneExtractor $extractor, $category = self::CATEGORY_ANIME_ENGLISH, $filter = self::FILTER_ALL){ + $this->category = $category; + $this->filter = $filter; + $this->extractor = $extractor; + } + + public function canSearch(){ + return true; + } + + public function getName(){ + return "Nyaa"; + } + + + /** + * @param $query + * @param int $maxResults + * @return Release[] + */ + public function find($query, $maxResults = -1, $extraQuery = ""){ + $url = Database::getConfigKey("tracker.nyaa.rss.baseurl", "https://www.nyaa.se/?page=rss"); + + if($query !== null){ + $url .= "&term=". urlencode($query); + } + + $url .= "&cats={$this->category}"; + $url .= "&filter={$this->filter}"; + + if($this->uploader !== -1){ + $url .= "&uploader={$this->uploader}"; + } + + $results = []; + + $offset = 1; + + do{ + $lastCount = count($results); + //Downloader::log("Fetch $url . \"&offset={$offset}\"", "NYAA"); + $feed = file_get_contents($url . "&offset={$offset}"); + if($feed == ""){ + break; + } + $xml = new \SimpleXMLElement($feed); + foreach($xml->channel->item as $item){ + $title = (string) $item->title; + + $release = $this->extractor->extractInformation($title); + if($release !== null){ + $release->setInfoLink((string) $item->guid); + $release->setDownloadLink((string) $item->link); + $release->setUploadDate(\DateTime::createFromFormat(\DateTime::RSS, (string) $item->pubDate)->getTimestamp()); + + if(preg_match("/^(?P<seeds>[0-9]+) seeder\\(s\\), (?P<leechs>[0-9]+) leecher\\(s\\), (?P<downloads>[0-9]+) download\\(s\\) \\- (?P<size>[0-9\\.]+ [TGMK]iB)(?P<extra>.*)$/", (string) $item->description, $matches) > 0){ + $release->setSeeds((int) $matches["seeds"]); + foreach(explode("-", $matches["extra"]) as $w){ + $w = trim($w); + if($w === "Trusted"){ + $release->setTrusted(true); + } + if($w === "A+"){ + $release->setBest(true); + } + } + } + + if($release->getSource() === Release::SOURCE_UNKNOWN){ + if(isset(Database::getConfigKey("tracker.nyaa.unknown.source", [])[$release->getGroup()])){ + $release->setSource(constant(Release::class . "::SOURCE_" . Database::getConfigKey("tracker.nyaa.unknown.source", [])[$release->getGroup()])); + }else{ + $release->setSource(constant(Release::class . "::SOURCE_" . Database::getConfigKey("tracker.nyaa.unknown.source.default", "TV"))); + } + } + + if($release->getQuality() === Release::QUALITY_UNKNOWN){ + if(isset(Database::getConfigKey("tracker.nyaa.unknown.quality", [])[$release->getGroup()])){ + $release->setQuality(constant(Release::class . "::QUALITY_" . Database::getConfigKey("tracker.nyaa.unknown.quality", [])[$release->getGroup()])); + }else{ + $release->setQuality(constant(Release::class . "::QUALITY_" . Database::getConfigKey("tracker.nyaa.unknown.quality.default", "720"))); + } + } + + if($release->getVideoCodec() === Release::VIDEO_CODEC_UNKNOWN){ + if(isset(Database::getConfigKey("tracker.nyaa.unknown.videoCodec", [])[$release->getGroup()])){ + $release->setVideoCodec(constant(Release::class . "::VIDEO_CODEC_" . Database::getConfigKey("tracker.nyaa.unknown.videoCodec", [])[$release->getGroup()])); + }else{ + $release->setVideoCodec(constant(Release::class . "::VIDEO_CODEC_" . Database::getConfigKey("tracker.nyaa.unknown.videoCodec.default", "H264"))); + } + } + + + $results[$release->getId()] = $release; + } + } + ++$offset; + }while(($maxResults === -1 or count($results) < $maxResults) and $lastCount !== count($results)); + + return $results; + } + + public function setUploader($uploader){ + $this->uploader = ($uploader === null ? -1 : $uploader); + } +} + + diff --git a/src/Animarr/Source/NyaaSi.php b/src/Animarr/Source/NyaaSi.php new file mode 100644 index 0000000..544412e --- /dev/null +++ b/src/Animarr/Source/NyaaSi.php @@ -0,0 +1,167 @@ +<?php + +namespace Animarr\Source; + +use Animarr\Database; +use Animarr\Downloader; +use Animarr\Extractor\SceneExtractor; +use Animarr\Release\Release; +use Animarr\Request; + +class NyaaSi implements Source{ + + const CATEGORY_ANIME_RAW = "1_4"; + const CATEGORY_ANIME_ENGLISH = "1_2"; + const CATEGORY_ANIME_NON_ENGLISH = "1_3"; + + const FILTER_ALL = 0; + const FILTER_REMAKES = 1; + const FILTER_TRUSTED_ONLY = 2; + + private $category; + private $filter; + private $uploader = null; + private $extractor; + + public function __construct(SceneExtractor $extractor, $category = self::CATEGORY_ANIME_ENGLISH, $filter = self::FILTER_ALL){ + $this->category = $category; + $this->filter = $filter; + $this->extractor = $extractor; + } + + public function canSearch(){ + return true; + } + + public function getName(){ + return "NyaaSi"; + } + + public function getTorrentAPIInformation($id){ + //TODO: make this work + $json = Request::getAuthURL(Database::getConfigKey("tracker.nyaasi.api.baseurl", "https://nyaa.si/api/") ."info/$id", Database::getConfigKey("tracker.nyaasi.api.auth.username", null), trim(file_get_contents(Database::getConfigKey("tracker.nyaasi.api.auth.passwordFile", null)), "\r\n\t")); + $data = json_decode($json, true); + return $data; + } + + + /** + * @param $query + * @param int $maxResults + * @return Release[] + */ + public function find($query, $maxResults = -1, $extraQuery = ""){ + $url = Database::getConfigKey("tracker.nyaasi.rss.baseurl", "https://nyaa.si/?page=rss"); + + if($query !== null){ + $url .= "&q=". urlencode($query . $extraQuery); + } + + $url .= "&c={$this->category}"; + $url .= "&f={$this->filter}"; + + if($this->uploader !== null){ + $url .= "&u={$this->uploader}"; + } + + $results = []; + + $offset = 1; + + do{ + $lastCount = count($results); + $feed = Request::getURL($url/* . "&offset={$offset}"*/); //TODO: add offset later + if($feed == ""){ + break; + } + $xml = new \SimpleXMLElement($feed); + foreach($xml->channel->item as $item){ + $title = (string) $item->title; + + $release = $this->extractor->extractInformation($title); + if($release !== null){ + $extraInfo = $item->children("nyaa", true); + $release->setInfoLink((string) $item->guid); + $release->setDownloadLink((string) $item->link); + $release->setUploadDate(\DateTime::createFromFormat(\DateTime::RSS, (string) $item->pubDate)->getTimestamp()); + $release->setSeeds((string) $extraInfo->seeders); + + /*if(preg_match("/^(?P<seeds>[0-9]+) seeder\\(s\\), (?P<leechs>[0-9]+) leecher\\(s\\), (?P<downloads>[0-9]+) download\\(s\\) \\- (?P<size>[0-9\\.]+ [TGMK]iB)(?P<extra>.*)$/", (string) $item->description, $matches) > 0){ + $release->setSeeds((int) $matches["seeds"]); + foreach(explode("-", $matches["extra"]) as $w){ + $w = trim($w); + if($w === "Trusted"){ + $release->setTrusted(true); + } + if($w === "A+"){ + $release->setBest(true); + } + } + }*/ + + + + if(isset(Database::getConfigKey("tracker.nyaasi.trusted", [])[$release->getGroup()])){ + $release->setTrusted(Database::getConfigKey("tracker.nyaasi.trusted", [])[$release->getGroup()]); + }else if(Database::getConfigKey("tracker.nyaasi.goldlist.trusted", false)){ + $items = explode("-", strtolower($release->getGroup())); + foreach(Database::getConfigKey("filter.groups.goldlist", []) as $gold){ + if($release->isTrusted()){ + break; + } + + if(strtolower($release->getGroup()) == strtolower($gold)){ + $release->setTrusted(true); + } + + foreach($items as $i){ + if($i === strtolower($gold)){ + $release->setTrusted(true); + break; + } + } + } + } + + if($release->getSource() === Release::SOURCE_UNKNOWN){ + if(isset(Database::getConfigKey("tracker.nyaasi.unknown.source", [])[$release->getGroup()])){ + $release->setSource(constant(Release::class . "::SOURCE_" . Database::getConfigKey("tracker.nyaasi.unknown.source", [])[$release->getGroup()])); + }else{ + $release->setSource(constant(Release::class . "::SOURCE_" . Database::getConfigKey("tracker.nyaasi.unknown.source.default", "TV"))); + } + } + + if($release->getQuality() === Release::QUALITY_UNKNOWN){ + if(isset(Database::getConfigKey("tracker.nyaasi.unknown.quality", [])[$release->getGroup()])){ + $release->setQuality(constant(Release::class . "::QUALITY_" . Database::getConfigKey("tracker.nyaasi.unknown.quality", [])[$release->getGroup()])); + }else{ + $release->setQuality(constant(Release::class . "::QUALITY_" . Database::getConfigKey("tracker.nyaasi.unknown.quality.default", "720"))); + } + } + + if($release->getVideoCodec() === Release::VIDEO_CODEC_UNKNOWN){ + if(isset(Database::getConfigKey("tracker.nyaasi.unknown.videoCodec", [])[$release->getGroup()])){ + $release->setVideoCodec(constant(Release::class . "::VIDEO_CODEC_" . Database::getConfigKey("tracker.nyaasi.unknown.videoCodec", [])[$release->getGroup()])); + }else{ + $release->setVideoCodec(constant(Release::class . "::VIDEO_CODEC_" . Database::getConfigKey("tracker.nyaasi.unknown.videoCodec.default", "H264"))); + } + } + + + $results[$release->getId()] = $release; + } + } + ++$offset; + + break; //TODO: add offset later + }while(($maxResults === -1 or count($results) < $maxResults) and $lastCount !== count($results)); + + return $results; + } + + public function setUploader($uploader){ + $this->uploader = ($uploader === null ? null : $uploader); + } +} + + diff --git a/src/Animarr/Source/Source.php b/src/Animarr/Source/Source.php new file mode 100755 index 0000000..eccfa95 --- /dev/null +++ b/src/Animarr/Source/Source.php @@ -0,0 +1,12 @@ +<?php + +namespace Animarr\Source; + +interface Source{ + + public function find($query, $maxResults = -1, $extraQuery = ""); + + public function canSearch(); + + public function getName(); +} diff --git a/src/Animarr/Source/SourceList.php b/src/Animarr/Source/SourceList.php new file mode 100644 index 0000000..a69873a --- /dev/null +++ b/src/Animarr/Source/SourceList.php @@ -0,0 +1,37 @@ +<?php + +namespace Animarr\Source; + +class SourceList implements Source{ + private $sources = []; + public function find($query, $maxResults = -1, $extraQuery = ""){ + $results = []; + foreach($this->sources as $source){ + if($query !== null and !$source->canSearch()){ + continue; + } + if($query === null){ + \Animarr\Downloader::log("Polling " . $source->getName(), "POLL"); + } + try{ + $results = array_merge($results, $source->find($query, $maxResults, $extraQuery)); + }catch(\Throwable $e){ + echo $e . PHP_EOL; + } + } + + return $results; + } + + public function getName(){ + return "SourceList"; + } + + public function canSearch(){ + return true; + } + + public function addSource(Source $source){ + $this->sources[] = $source; + } +} diff --git a/src/Animarr/Source/WebFeed.php b/src/Animarr/Source/WebFeed.php new file mode 100644 index 0000000..c8500e0 --- /dev/null +++ b/src/Animarr/Source/WebFeed.php @@ -0,0 +1,185 @@ +<?php + +namespace Animarr\Source; + +use Animarr\Database; +use Animarr\Downloader; +use Animarr\Extractor\SceneExtractor; +use Animarr\Release\Release; +use Animarr\Torrent\Torrent; +use Animarr\Request; + +class WebFeed implements Source{ + + private $extractor; + private $url; + private $name; + + public function __construct(SceneExtractor $extractor, $url, $name){ + $this->extractor = $extractor; + $this->url = $url; + $this->name = $name; + } + + public function canSearch(){ + return false; + } + + public function getName(){ + return "WebFeed " . $this->name; + } + + /** + * @param $query + * @param int $maxResults + * @return Release[] + */ + public function find($query, $maxResults = -1, $extraQuery = ""){ + $url = $this->url; + + $results = []; + + $offset = 1; + + do{ + $lastCount = count($results); + $feed = Request::getURL($url . (Database::getConfigKey("tracker.webfeed.{$this->name}.pagination", true) ? (strpos($url, "?") !== false ? "&" : "?") . "paged=" . $offset : "")); + + if($feed == ""){ + Downloader::log("Error getting feed!", "WebFeed"); + return $results; + } + $xml = new \SimpleXMLElement($feed); + foreach($xml->channel->item as $item){ + $originalTitle = (string) $item->title; + $title = str_replace(["–", "(TV)", "(BD)", "(DVD)"], ["-", "", "", ""], $originalTitle); + $contents = (string) $item->asXML(); + $releases = []; + + if(preg_match_all("/href=[\"'](magnet:[^\"']+)[\"']/", $contents, $matches) > 0){ + foreach($matches[1] as $magnet){ + $magnet = html_entity_decode($magnet); + $props = Torrent::getMagnetProperties($magnet); + + $torrent = Torrent::fromURL($magnet, Database::getConfigKey("torrent.cache.folder", null)); + if(isset($props["dn"])){ + $r = ["magnet" => $magnet, "hasTorrent" => $torrent !== null, "release" => $props["dn"]]; + }else{ + $r = ["magnet" => $magnet, "hasTorrent" => $torrent !== null]; + if($torrent !== null){ + $files = $torrent->getFiles(); + $r["release"] = $files[0]["path"][0]; + } + } + + $releases[] = $r; + } + } + + if(preg_match_all("#href=[\"'](http[^\"']+)[\"']#", $contents, $matches) > 0){ + foreach($matches[1] as $tUrl){ + $tUrl = html_entity_decode($tUrl); + if(!Torrent::isTorrentDownloadPath($tUrl)){ + continue; + } + + $torrent = Torrent::fromURL($tUrl, Database::getConfigKey("torrent.cache.folder", null)); + + if($torrent !== null){ + $files = $torrent->getFiles(); + if(count($files) > 0){ + $releases[] = ["torrent" => $tUrl, "release" => $files[0]["path"][0], "hasTorrent" => true]; + } + } + } + } + + $tUrl = trim($item->link); + if(Torrent::isTorrentDownloadPath($tUrl)){ + $torrent = Torrent::fromURL($tUrl, Database::getConfigKey("torrent.cache.folder", null)); + + if($torrent !== null){ + $files = $torrent->getFiles(); + if(count($files) > 0){ + $releases[] = ["torrent" => $tUrl, "release" => $files[0]["path"][0], "hasTorrent" => true]; + } + } + } + + foreach($releases as $info){ + if(!isset($info["release"])){ + if(isset($info["magnet"]) and !$info["hasTorrent"] and Database::getConfigKey("magnet.unknownRelease.wait", false)){ + Torrent::queueMagnetTorrent($info["magnet"], Database::getConfigKey("torrent.cache.folder", null)); + continue; + } + + if(Database::getConfigKey("tracker.webfeed.{$this->name}.modifyTitle", true)){ + $group = Database::getConfigKey("tracker.webfeed.{$this->name}.unknown.group", $this->name); + $releaseTitle = "[$group] $title"; + }else{ + $releaseTitle = $title; + } + }else{ + $releaseTitle = $info["release"]; + } + + $release = $this->extractor->extractInformation($releaseTitle); + + if($release !== null){ + $release->setInfoLink(trim($item->link)); + $release->setDownloadLink(isset($info["magnet"]) ? $info["magnet"] : $info["torrent"]); + if(isset($item->pubDate)){ + $release->setUploadDate(\DateTime::createFromFormat(\DateTime::RSS, (string) $item->pubDate)->getTimestamp()); + } + + $release->setSeeds(Database::getConfigKey("filter.minseeds", 3)); + if(isset(Database::getConfigKey("tracker.webfeed.{$this->name}.trusted", [])[$release->getGroup()])){ + $release->setTrusted(Database::getConfigKey("tracker.webfeed.{$this->name}.trusted", [])[$release->getGroup()]); + } + + if($release->getSource() === Release::SOURCE_UNKNOWN){ + if(strpos($originalTitle, "(TV)") !== false){ + $release->setSource(Release::SOURCE_TV); + }else if(strpos($originalTitle, "(BD)") !== false){ + $release->setSource(Release::SOURCE_BLURAY); + }else if(strpos($originalTitle, "(DVD)") !== false){ + $release->setSource(Release::SOURCE_DVD); + }else if(isset(Database::getConfigKey("tracker.webfeed.{$this->name}.unknown.source", null)[$release->getGroup()])){ + $release->setSource(constant(Release::class . "::SOURCE_" . Database::getConfigKey("tracker.webfeed.{$this->name}.unknown.source", [])[$release->getGroup()])); + }else{ + $release->setSource(constant(Release::class . "::SOURCE_" . Database::getConfigKey("tracker.webfeed.{$this->name}.unknown.source.default", "WEB"))); + } + } + if($release->getQuality() === Release::QUALITY_UNKNOWN){ + if(isset(Database::getConfigKey("tracker.webfeed.{$this->name}.unknown.quality", [])[$release->getGroup()])){ + $release->setQuality(constant(Release::class . "::QUALITY_" . Database::getConfigKey("tracker.webfeed.{$this->name}.unknown.quality", [])[$release->getGroup()])); + }else{ + $release->setQuality(constant(Release::class . "::QUALITY_" . Database::getConfigKey("tracker.webfeed.{$this->name}.unknown.quality.default", "720"))); + } + } + if($release->getVideoCodec() === Release::VIDEO_CODEC_UNKNOWN){ + if(isset(Database::getConfigKey("tracker.webfeed.{$this->name}.unknown.videoCodec", [])[$release->getGroup()])){ + $release->setVideoCodec(constant(Release::class . "::VIDEO_CODEC_" . Database::getConfigKey("tracker.webfeed.{$this->name}.unknown.videoCodec", [])[$release->getGroup()])); + }else{ + $release->setVideoCodec(constant(Release::class . "::VIDEO_CODEC_" . Database::getConfigKey("tracker.webfeed.{$this->name}.unknown.videoCodec.default", "H264"))); + } + } + + if($release instanceof MultiRelease and count($release->getContents()) <= 0 and Database::getConfigKey("magnet.unknownRelease.wait", false)){ + Torrent::queueMagnetTorrent($info["magnet"], Database::getConfigKey("torrent.cache.folder", null)); + continue; + } + + $results[$release->getId()] = $release; + } + } + } + + ++$offset; + }while(Database::getConfigKey("tracker.webfeed.{$this->name}.pagination", true) and ($maxResults == -1 or count($results) < $maxResults) and $lastCount !== count($results)); + + return $results; + } +} + + diff --git a/src/Animarr/Torrent/Base32.php b/src/Animarr/Torrent/Base32.php new file mode 100644 index 0000000..1fd6cbf --- /dev/null +++ b/src/Animarr/Torrent/Base32.php @@ -0,0 +1,84 @@ +<?php + +namespace Animarr\Torrent; + +/** +* Encode in Base32 based on RFC 4648. +* Requires 20% more space than base64 +* Great for case-insensitive filesystems like Windows and URL's (except for = char which can be excluded using the pad option for urls) +* +* @package default +* @author Bryan Ruiz +**/ +class Base32 { + + private static $map = array( + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', // 7 + 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', // 15 + 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', // 23 + 'Y', 'Z', '2', '3', '4', '5', '6', '7', // 31 + '=' // padding char + ); + + private static $flippedMap = array( + 'A'=>'0', 'B'=>'1', 'C'=>'2', 'D'=>'3', 'E'=>'4', 'F'=>'5', 'G'=>'6', 'H'=>'7', + 'I'=>'8', 'J'=>'9', 'K'=>'10', 'L'=>'11', 'M'=>'12', 'N'=>'13', 'O'=>'14', 'P'=>'15', + 'Q'=>'16', 'R'=>'17', 'S'=>'18', 'T'=>'19', 'U'=>'20', 'V'=>'21', 'W'=>'22', 'X'=>'23', + 'Y'=>'24', 'Z'=>'25', '2'=>'26', '3'=>'27', '4'=>'28', '5'=>'29', '6'=>'30', '7'=>'31' + ); + + /** + * Use padding false when encoding for urls + * + * @return base32 encoded string + * @author Bryan Ruiz + **/ + public static function encode($input, $padding = true) { + if(empty($input)) return ""; + $input = str_split($input); + $binaryString = ""; + for($i = 0; $i < count($input); $i++) { + $binaryString .= str_pad(base_convert(ord($input[$i]), 10, 2), 8, '0', STR_PAD_LEFT); + } + $fiveBitBinaryArray = str_split($binaryString, 5); + $base32 = ""; + $i=0; + while($i < count($fiveBitBinaryArray)) { + $base32 .= self::$map[base_convert(str_pad($fiveBitBinaryArray[$i], 5,'0'), 2, 10)]; + $i++; + } + if($padding && ($x = strlen($binaryString) % 40) != 0) { + if($x == 8) $base32 .= str_repeat(self::$map[32], 6); + else if($x == 16) $base32 .= str_repeat(self::$map[32], 4); + else if($x == 24) $base32 .= str_repeat(self::$map[32], 3); + else if($x == 32) $base32 .= self::$map[32]; + } + return $base32; + } + + public static function decode($input) { + if(empty($input)) return; + $paddingCharCount = substr_count($input, self::$map[32]); + $allowedValues = array(6,4,3,1,0); + if(!in_array($paddingCharCount, $allowedValues)) return false; + for($i=0; $i<4; $i++){ + if($paddingCharCount == $allowedValues[$i] && + substr($input, -($allowedValues[$i])) != str_repeat(self::$map[32], $allowedValues[$i])) return false; + } + $input = str_replace('=','', $input); + $input = str_split($input); + $binaryString = ""; + for($i=0; $i < count($input); $i = $i+8) { + $x = ""; + if(!in_array($input[$i], self::$map)) return false; + for($j=0; $j < 8; $j++) { + $x .= str_pad(base_convert(@self::$flippedMap[@$input[$i + $j]], 10, 2), 5, '0', STR_PAD_LEFT); + } + $eightBits = str_split($x, 8); + for($z = 0; $z < count($eightBits); $z++) { + $binaryString .= ( ($y = chr(base_convert($eightBits[$z], 2, 10))) || ord($y) == 48 ) ? $y:""; + } + } + return $binaryString; + } +} diff --git a/src/Animarr/Torrent/Torrent.php b/src/Animarr/Torrent/Torrent.php new file mode 100755 index 0000000..06d99d5 --- /dev/null +++ b/src/Animarr/Torrent/Torrent.php @@ -0,0 +1,306 @@ +<?php + +namespace Animarr\Torrent; +use Animarr\Database; +use Animarr\Downloader; +use Animarr\Request; + +class Torrent{ + + private $announce; + + private $creationDate; + + private $info; + + private $info_hash; + + private $files = []; + + public static $urls = []; + + public static function isTorrentDownloadPath(&$url){ + $data = parse_url($url); + + if(isset($data["scheme"]) and $data["scheme"] == "magnet"){ + return true; + } + + if(isset($data["path"]) and substr($data["path"], -8) === ".torrent"){ + return true; + } + + if(isset($data["path"]) and ($data["host"] == "anidex.info" or $data["host"] == "anidex.moe") and preg_match("#^/dl/.*$#", $data["path"]) > 0){ + return true; + } + + if(isset($data["path"]) and ($data["host"] == "anirena.com" or $data["host"] == "www.anirena.com") and preg_match("#^/dl/[0-9]+$#", $data["path"]) > 0){ + return true; + } + + if(isset($data["path"]) and ($data["host"] == "www.frozen-layer.com" or $data["host"] == "frozen-layer.com") and preg_match("#^/descargas/([0-9]+.*)$#", $data["path"], $matches) > 0){ + $url = "https://www.frozen-layer.com/descargas/".$matches[1] .".torrent"; + return true; + } + + + if(isset($data["path"]) and ($data["host"] == "anidex.info" or $data["host"] == "anidex.moe") and preg_match("#page=torrent&id=([0-9]+)$#", $data["path"], $matches) > 0){ + $url = "https://anidex.info/dl/".$matches[1]; + return true; + } + + if(isset($data["path"]) and ($data["host"] == "anidex.info" or $data["host"] == "anidex.moe") and preg_match("#/torrent/([0-9]+)$#", $data["path"], $matches) > 0){ + $url = "https://anidex.info/dl/".$matches[1]; + return true; + } + + //if(isset($data["path"]) and ($data["host"] == "nyaa.se" or $data["host"] == "www.nyaa.se") and preg_match("#page=download&tid=/.*$#", $data["path"]) > 0){ + //return true; + //} + + if(isset($data["path"]) and ($data["host"] == "nyaa.si" or $data["host"] == "www.nyaa.si") and preg_match("#view/[0-9]+/torrent$#", $data["path"]) > 0){ + return true; + } + + if(isset($data["path"]) and $data["host"] == "animebytes.tv" and preg_match("#torrent/[0-9]+/download#", $data["path"]) > 0){ + return true; + } + + if(isset($data["path"]) and ($data["host"] == "nyaa.se" or $data["host"] == "nyaa.eu" or $data["host"] == "www.nyaa.se") and preg_match("#page=(view|download)&tid=/.*$#", $data["path"], $matches) > 0){ + $url = "https://nyaa.si/view/".$matches[1]."/torrent"; + return true; + } + + if(isset($data["path"]) and ($data["host"] == "nyaa.si" or $data["host"] == "www.nyaa.si") and preg_match("#view/([0-9]+)(|/torrent|\\.torrent)$#", $data["path"], $matches) > 0){ + $url = "https://nyaa.si/view/".$matches[1]."/torrent"; + return true; + } + + return false; + } + + public static function isPrivateTorrent($url){ + $data = parse_url($url); + + if(!isset($data["host"])){ + return false; + } + + $domains = Database::getConfigKey("tracker.domain.private", []); + + return in_array($data["host"], $domains); + } + + public static function getMagnetProperties($magnetUrl){ + $data = parse_url($magnetUrl); + + if(!isset($data["query"]) or $data["scheme"] != "magnet"){ + return []; + } + + parse_str($data["query"], $query); + return $query; + } + + public static function getMagnetHash($magnetUrl){ + $props = self::getMagnetProperties($magnetUrl); + if(isset($props["xt"]) and preg_match('/urn:btih:[ ]*([A-Za-z0-9]{32,40})/', $props["xt"], $matches) > 0){ + $hash = $matches[1]; + if(strlen($hash) == 32){ + $hash = bin2hex(Base32::decode($hash)); + } + + $hash = strtoupper($hash); + return $hash; + } + + return null; + } + + public static function queueMagnetTorrent($magnet, $cachePath = null){ + if(!Database::getConfigKey("magnet.service.enable", false) or Database::getConfigKey("magnet.service.folder", "") === ""){ + return false; + } + + $hash = self::getMagnetHash($magnet); + + if($hash !== null and $cachePath !== null and file_exists($cachePath . "/". $hash . ".torrent")){ + return true; + } + + if($hash === null){ + Downloader::log("Failed to magnet ".$hash." to MagnetService ($magnet)", "TORRENT"); + return false; + } + + file_put_contents(Database::getConfigKey("magnet.service.folder", "") . "/" . $hash . ".magnet", $magnet); + #Downloader::log("Added magnet ".$hash." to MagnetService", "TORRENT"); + + return true; + } + + public static function getTorrent($url, $cachePath = null){ + $contents = null; + if(strpos($url, "urn:btih:") !== false){ + $hash = self::getMagnetHash($url); + if($hash === null){ + return ""; + } + + $path = $cachePath . "/". $hash . ".torrent"; + if($cachePath !== null and file_exists($path)){ + $contents = file_get_contents($path); + }else{ + self::queueMagnetTorrent($url, $cachePath); + return null; + } + }else{ + $path = $cachePath . "/url_" . md5($url) . ".torrent"; + if($cachePath !== null and file_exists($path)){ + $contents = file_get_contents($path); + } + + if(($contents === "" and !Database::getConfigKey("torrent.cache.addEmpty", false)) or $contents === null){ + $contents = Request::getURL($url); + if(self::isPrivateTorrent($url)){ + sleep(Database::getConfigKey("tracker.private.fetchDelay", 5)); + } + if($cachePath !== null and strlen($contents) > 40){ + file_put_contents($path, $contents); + }elseif($cachePath !== null and Database::getConfigKey("torrent.cache.addEmpty", false)){ + file_put_contents($path, ""); + } + } + } + + return $contents; + } + + public static function fromURL($url, $cachePath = null){ + if(isset(self::$urls[$url])){ + return self::$urls[$url]; + } + + $contents = self::getTorrent($url, $cachePath); + if($contents === null){ + return null; + } + + $t = new Torrent($contents); + + $hash = $t->getInfoHash(); + + if($contents != "" and $hash != null and $cachePath !== null and !file_exists($cachePath . "/" . $hash . ".torrent")){ + file_put_contents($cachePath . "/" . $hash . ".torrent", $contents); + } + + if($contents == ""){ + return $t; + } + + return self::$urls[$url] = $t; + } + + public function __construct($contents){ + $c = self::bdecode($contents); + if(!is_array($c)){ + return; + } + $this->announce = isset($c["announce-list"]) ? $c["announce-list"] : isset($c["announce"]) ? [[$c["announce"]]] : []; + $this->creationDate = isset($c["creation-date"]) ? $c["creation-date"] : time(); + + if(isset($c["info"]["files"])){ + foreach($c["info"]["files"] as $file){ + //Damn padding files + if(strpos($file["path"][0], "_____padding_file") === 0){ + continue; + } + array_unshift($file["path"], $c["info"]["name"]); + $this->files[] = [ + "size" => $file["length"], + "path" => $file["path"], + "stringPath" => implode("/", $file["path"]), + ]; + } + }else{ + $this->files[] = [ + "size" => $c["info"]["length"], + "path" => [$c["info"]["name"]], + "stringPath" => $c["info"]["name"], + ]; + } + + $this->info = $c["info"]; + $this->info_hash = $c["info_hash"]; + } + + public function getCreationDate(){ + return $this->creationDate; + } + + public function getFiles(){ + return $this->files; + } + + public function getInfoHash(){ + return $this->info_hash; + } + + private static function bdecode($s, &$pos = 0, $depth = 0) { + if($pos>=strlen($s)) { + return null; + } + switch($s[$pos]){ + case 'd': + $pos++; + $retval=array(); + while (isset($s[$pos]) and $s[$pos]!='e'){ + $key=self::bdecode($s, $pos, $depth + 1); + $origPos = $pos; + $val=self::bdecode($s, $pos, $depth + 1); + if ($key===null || $val===null) + break; + $retval[$key]=$val; + if($key === "info" and $depth <= 1){ + $retval["info_hash"] = strtoupper(sha1(substr($s, $origPos, $pos - $origPos))); + } + } + $retval["isDct"]=true; + $pos++; + return $retval; + + case 'l': + $pos++; + $retval=array(); + while ($s[$pos]!='e'){ + $val=self::bdecode($s, $pos, $depth + 1); + if ($val===null) + break; + $retval[]=$val; + } + $pos++; + return $retval; + + case 'i': + $pos++; + $digits=strpos($s, 'e', $pos)-$pos; + $val=round((float)substr($s, $pos, $digits)); + $pos+=$digits+1; + return $val; + + // case "0": case "1": case "2": case "3": case "4": + // case "5": case "6": case "7": case "8": case "9": + default: + $digits=strpos($s, ':', $pos)-$pos; + if ($digits<0 || $digits >20) + return null; + $len=(int)substr($s, $pos, $digits); + $pos+=$digits+1; + $str=substr($s, $pos, $len); + $pos+=$len; + //echo "pos: $pos str: [$str] len: $len digits: $digits\n"; + return (string)$str; + } + return null; + } +} diff --git a/src/AutoLoader.php b/src/AutoLoader.php new file mode 100755 index 0000000..32f4a71 --- /dev/null +++ b/src/AutoLoader.php @@ -0,0 +1,16 @@ +<?php + +spl_autoload_register(function($class){ + $path = __DIR__; + + $l = explode("\\", $class); + + foreach($l as $part){ + + $path .= DIRECTORY_SEPARATOR . $part; + } + + if(file_exists($path . ".php")){ + include_once($path . ".php"); + } +}); diff --git a/src/ImportOldDatabase.php b/src/ImportOldDatabase.php new file mode 100644 index 0000000..6445a7d --- /dev/null +++ b/src/ImportOldDatabase.php @@ -0,0 +1,128 @@ +<?php + +include "AutoLoader.php"; + +use Animarr\Database; +use Animarr\Filter; +use Animarr\Release\Release; +use Animarr\Release\MultiRelease; +use Animarr\Downloader; +use Animarr\Torrent\Torrent; +use Animarr\Source\SourceList; + +/* +function errHandle($errNo, $errStr, $errFile, $errLine) { + $msg = "$errStr in $errFile on line $errLine"; + if ($errNo == E_NOTICE || $errNo == E_WARNING) { + throw new ErrorException($msg, $errNo); + } else { + echo $msg; + } +} + +set_error_handler('errHandle'); +*/ +ini_set('memory_limit', '2048M'); +setlocale(LC_CTYPE, "en_US.UTF-8"); + +chdir(__DIR__ . "/" . ".."); + +Database::parseConfig($argv[1]); +Downloader::log("Starting config..."); + +Downloader::log("Loading Database..."); + +$user = Database::getConfigKey("database.psql.user"); +$pass = Database::getConfigKey("database.psql.password"); +$host = Database::getConfigKey("database.psql.host"); +$dbname = Database::getConfigKey("database.psql.dbname", "animarr"); +$dbnew = pg_connect("host=$host user=$user password=$pass dbname=$dbname"); +//pg_query(file_get_contents("db.sql")); + +$dbold = new \SQLite3($argv[2]); + +$q = $dbold->query("SELECT * FROM tracked;"); +$count = $dbold->query("SELECT COUNT(*) as count FROM tracked;")->fetchArray(SQLITE3_ASSOC)["count"]; +pg_query($dbnew, "BEGIN"); +$i = 0; +while(($row = $q->fetchArray(SQLITE3_ASSOC)) !== false){ + echo "\rproc tracked ".(++$i)."/".$count. " " . $row["aid"]; + $sql = "INSERT INTO tracked ({keys}) VALUES ({kvalues}) ON CONFLICT DO NOTHING;"; + $keys = []; + $kvalues = []; + + foreach($row as $k => $value){ + $keys[] = $k; + $kvalues[] = '$' . (count($kvalues) + 1); + } + pg_query_params($dbnew, str_replace(["{keys}", "{kvalues}"], [implode(", ", $keys), implode(", ", $kvalues)], $sql), $row); +} +$q->finalize(); +pg_query($dbnew, "COMMIT"); + +$q = $dbold->query("SELECT * FROM releases;"); +$count = $dbold->query("SELECT COUNT(*) as count FROM releases;")->fetchArray(SQLITE3_ASSOC)["count"]; +pg_query($dbnew, "BEGIN"); +$i = 0; +while(($row = $q->fetchArray(SQLITE3_ASSOC)) !== false){ + echo "\rproc releases ".(++$i)."/".$count. " " . $row["release_id"]; + $sql = "INSERT INTO releases ({keys}) VALUES ({kvalues}) ON CONFLICT DO NOTHING;"; + $keys = []; + $kvalues = []; + + foreach($row as $k => $value){ + if($k === "release_data"){ + $row[$k] = base64_decode($value); + } + $keys[] = $k; + $kvalues[] = '$' . (count($kvalues) + 1); + } + pg_query_params($dbnew, str_replace(["{keys}", "{kvalues}"], [implode(", ", $keys), implode(", ", $kvalues)], $sql), $row); +} +$q->finalize(); +pg_query($dbnew, "COMMIT"); + + +$q = $dbold->query("SELECT * FROM episodes_releases;"); +$count = $dbold->query("SELECT COUNT(*) as count FROM episodes_releases;")->fetchArray(SQLITE3_ASSOC)["count"]; +pg_query($dbnew, "BEGIN"); +$i = 0; +while(($row = $q->fetchArray(SQLITE3_ASSOC)) !== false){ + echo "\rproc episodes_releases ".(++$i)."/".$count. " " . $row["release_id"]; + $sql = "INSERT INTO episodes_releases ({keys}) VALUES ({kvalues}) ON CONFLICT DO NOTHING;"; + $keys = []; + $kvalues = []; + + foreach($row as $k => $value){ + if($k === "release_data"){ + $row[$k] = base64_decode($value); + } + $keys[] = $k; + $kvalues[] = '$' . (count($kvalues) + 1); + } + pg_query_params($dbnew, str_replace(["{keys}", "{kvalues}"], [implode(", ", $keys), implode(", ", $kvalues)], $sql), $row); +} +$q->finalize(); +pg_query($dbnew, "COMMIT"); + +$q = $dbold->query("SELECT * FROM tracked_releases;"); +$count = $dbold->query("SELECT COUNT(*) as count FROM tracked_releases;")->fetchArray(SQLITE3_ASSOC)["count"]; +pg_query($dbnew, "BEGIN"); +$i = 0; +while(($row = $q->fetchArray(SQLITE3_ASSOC)) !== false){ + echo "\rproc tracked_releases ".(++$i)."/".$count. " " . $row["release_id"]; + $sql = "INSERT INTO tracked_releases ({keys}) VALUES ({kvalues}) ON CONFLICT DO NOTHING;"; + $keys = []; + $kvalues = []; + + foreach($row as $k => $value){ + if($k === "release_data"){ + $row[$k] = base64_decode($value); + } + $keys[] = $k; + $kvalues[] = '$' . (count($kvalues) + 1); + } + pg_query_params($dbnew, str_replace(["{keys}", "{kvalues}"], [implode(", ", $keys), implode(", ", $kvalues)], $sql), $row); +} +$q->finalize(); +pg_query($dbnew, "COMMIT"); \ No newline at end of file diff --git a/src/MagnetService.js b/src/MagnetService.js new file mode 100644 index 0000000..236d467 --- /dev/null +++ b/src/MagnetService.js @@ -0,0 +1,78 @@ +const DHT = require('bittorrent-dht') +const magnet = require('magnet-uri') +const sha1 = require('sha1') +const fetchMetadata = require('bep9-metadata-dl') +const bencode = require('bencode') +var fs = require('fs') + +var magnetFolder = process.argv[2]; +var torrentFolder = process.argv[3]; + +//var uri = 'magnet:?xt=urn:btih:e3811b9539cacff680e418124272177c47477157' +//var parsed = magnet(uri) + +//console.log(parsed.infoHash) // 'e3811b9539cacff680e418124272177c47477157' + +const dht = new DHT({ + nodeId: sha1("AnimarrDHTNode"), // 160-bit DHT node ID (Buffer or hex string, default: randomly generated) + bootstrap: [ + "router.bittorrent.com:6881", + "router.utorrent.com:6881", + "router.bitcomet.com:6881", + "dht.aelitis.com:6881", + "dht.transmissionbt.com:6881", + "dht.libtorrent.org:25401" + ], + host: false, + concurrency: 200 +}) + +dht.listen(function () { + console.log('[MagnetService] DHT node started!') + dht.on('ready', function () { + console.log('[MagnetService] Bootstrap completed') + }) +}) + +dht.on('peer', function (peer, infoHash, from) { + //console.log('found potential peer ' + peer.host + ':' + peer.port + ' through ' + from.address + ':' + from.port + ' for ' + infoHash.toString('hex')) +}) + + +updateFunction = function(){ + fs.readdir(magnetFolder, function(err, files){ + if(err){ + return; + } + + files.forEach( function( file, index ) { + if(file.charAt(0) == "."){ + return; + } + + var magnetFile = magnetFolder + "/" + file; + var magnetContents = fs.readFileSync(magnetFile).toString(); + var parsed = magnet(magnetContents); + //console.log('[MagnetService] Added ' + parsed.infoHash); + + fs.unlinkSync(magnetFile); + + fetchMetadata(parsed.infoHash, { maxConns: 200, fetchTimeout: 30000, socketTimeout: 5000, dht}).then(metadata => { + var contents = bencode.encode(metadata); + var infoContents = bencode.encode(metadata.info); + var hash = sha1(infoContents).toUpperCase(); + console.log('[MagnetService] Fetched ' + hash + ' (' + metadata.info.name + ')!'); + fs.writeFile(torrentFolder + "/" + hash + ".torrent", contents, function(err) {}); + }).catch(err => { + + }); + } ); + }); +}; + +setInterval(updateFunction, 10000) + +updateFunction(); + + + diff --git a/web/add.php b/web/add.php new file mode 100755 index 0000000..3f66387 --- /dev/null +++ b/web/add.php @@ -0,0 +1,95 @@ +<?php + +include "common.php"; + +printHeader("Add new show"); + +if(isset($_GET["aid"])){ + $simple = isset($_GET["simple"]) ? $_GET["simple"] == 1 : false; + $clearAll = isset($_GET["clear"]) ? $_GET["clear"] == 1 : false; + $aid = intval($_GET["aid"]); + $info = $aniDB->getAnime($aid); + if($info === null){ + header("Location: add.php"); + die(); + } + if($database->isTracking($aid) and !$simple){ + if($clearAll){ + $database->clearEpisodes($aid); + } + $database->clearTrackedEpisodes($aid); + } + + $database->addTrack($aid); + $database->updateTrackEpisodes($aid, $simple ? 0 : -1); //Force + header("Location: show.php?aid=$aid"); + die(); +} + +$showName = trim(isset($_GET["showName"]) ? $_GET["showName"] : ""); //XSS + +$suggestions = []; + +if($showName !== (string)((int)$showName) and $showName != ""){ + $suggestions = $aniDB->getAllMatches($showName); +}else if($showName === (string)((int)$showName)){ + $suggestions = [ + (int)$showName => 0 + ]; + /*$data = $aniDB->getAll(); + ksort($data); + $start = (int) $showName; + foreach($data as $aid => $info){ + if($aid >= $start){ + + $suggestions[$aid] = $aid - $start; + + if($aid <= $aid - 100){ + break; + } + } + }*/ +} + + +?> +<form method="GET" action="add.php"> + <div class="form-group"> + <label for="shownName">Show name</label> + <input type="text" class="form-control" id="showName" name="showName" value="<?php echo $showName;?>"/> + <label for="matchType">Match Limit</label> + <select name="matchType" id="matchType"> + <option value="100" <?php echo ((isset($_GET["matchType"]) and $_GET["matchType"] == 100) ? "selected" : "");?>>Any Match</option> + <option value="0" <?php echo ((isset($_GET["matchType"]) and $_GET["matchType"] == 0) ? "selected" : "");?>>Exact Match</option> + <option value="5" <?php echo ((isset($_GET["matchType"]) and $_GET["matchType"] == 5) ? "selected" : "");?>>Close Match</option> + </select> + </div> + <button type="submit" class="btn btn-default">Search</button> +</form> +<?php +if(count($suggestions) > 0){ + ?> + <table class="table table-striped table-hover"> + <tr><th>AniDB #</th><th>Show Info</th><th>Match value</th></tr> + + <?php + foreach($suggestions as $aid => $lev){ + if(isset($_GET["matchType"]) and $_GET["matchType"] < $lev){ + continue; + } + $info = $aniDB->getAnime($aid); + $xml = new \SimpleXMLElement($aniDB->getAnimeAPI($aid)); + $type = strval($xml->type); + if($type !== "" and $type !== "TV Series" and $type !== "ONA" and $type !== "OVA" and $type !== "Web"){ + continue; + } + $imgUrl = "https://img7.anidb.net/pics/anime/" . strval($xml->picture); + echo "<tr><td><a href=\"https://anidb.net/perl-bin/animedb.pl?show=anime&aid=$aid\" target=\"_blank\"><img src=\"$imgUrl\" width=120/><br/>$aid</a></td><td><a href=\"add.php?aid=$aid\" style=\"font-size: 150%;\">".$info["title"]." [$type ".strval($xml->startdate)."] </a><br/>".strval($xml->description)."</td><td>$lev</td></tr>"; + } + + ?> + </table> + <?php +} + +printFooter(); diff --git a/web/bg.jpg b/web/bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1f807c7640154b43aa386ff6df3590499e5ca335 GIT binary patch literal 120382 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 literal 0 HcmV?d00001 diff --git a/web/common.php b/web/common.php new file mode 100755 index 0000000..9870aba --- /dev/null +++ b/web/common.php @@ -0,0 +1,117 @@ +<?php + +include __DIR__ . "/../src/AutoLoader.php"; + + +use Animarr\Database; +use Animarr\Filter; +use Animarr\Release\Release; +use Animarr\Release\MultiRelease; +use Animarr\Downloader; +use Animarr\Torrent\Torrent; + + +define("NO_LOG", true); +chdir(__DIR__ . "/" . ".."); + +Database::parseConfig("config_".$_SERVER["SERVER_PORT"].".ini"); + +$aniDBPath = Database::getConfigKey("database.anidb", "/tmp/anidb.cache.dat"); + +$aniDB = new \Animarr\AniDB($aniDBPath, false); + +$database = new Database($aniDB); +foreach($database->getAlternateTitles() as $t){ + $aniDB->addEntryName($t["aid"], $t["language"], $t["title"], $t["type"]); +} + + +function getURLName(&$url){ + if($url == ""){ + return ""; + } + + if(preg_match("#nyaa\\.se/.*tid=([0-9]+)#", $url, $matches) > 0){ + return "Nyaa#" . $matches[1]; + } + + if(preg_match("#anidex\\.(info|moe)/.*id=([0-9]+)#", $url, $matches) > 0){ + return "AniDex#" . $matches[2]; + } + + if(preg_match("#anidex\\.(info|moe)/dl/([0-9]+)#", $url, $matches) > 0){ + $url = "https://anidex.info/torrent/" . $matches[1]; + return "AniDex#" . $matches[2]; + } + + //TODO: Remove this + if(preg_match("#^\\?page=torrent&id=([0-9]+)#", $url, $matches) > 0){ + $url = "https://anidex.info/?page=torrent&id=" . $matches[1]; + return "AniDex#" . $matches[1]; + } + + if(strpos($url, "urn:btih:") !== false){ + return "Magnet#<small>" . Torrent::getMagnetHash($url) . "</small>"; + } + + if(preg_match("#nyaa\\.si/.*view/([0-9]+)#", $url, $matches) > 0){ + return "NyaaSi#" . $matches[1]; + } + + if(preg_match("#animebytes\\.tv/torrents\\.php\\?.*torrentid=([0-9]+)#", $url, $matches) > 0){ + return "AnimeBytes#" . $matches[1]; + } + + return @parse_url($url)["host"]; +} + +function printHeader($title){ + ?> +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <title><?php echo $title; ?> - Animarr + + + + + + + +
+ +
+ + +
+
+ + +
+
+ + +li>a:focus,.dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.open>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:focus .badge,.list-group-item.active:hover .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} +/*# sourceMappingURL=bootstrap-theme.min.css.map */ \ No newline at end of file diff --git a/web/css/bootstrap-theme.min.css.map b/web/css/bootstrap-theme.min.css.map new file mode 100644 index 0000000..94813e9 --- /dev/null +++ b/web/css/bootstrap-theme.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file diff --git a/web/css/bootstrap.min.css b/web/css/bootstrap.min.css new file mode 100644 index 0000000..ed3905e --- /dev/null +++ b/web/css/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-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:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}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{padding:0;border: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-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-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:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;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,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.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,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.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:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.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:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.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-md-1,.col-md-10,.col-md-11,.col-md-12,.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-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.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-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{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-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{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-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{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-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{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:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;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>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{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;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{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=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(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,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.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{background-color:transparent;border:0}.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:34px}.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],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.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],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.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 .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.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:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}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.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{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.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;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.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{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.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{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.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{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.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{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.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{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.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{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.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{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.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;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:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].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-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.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}.dropdown,.dropup{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;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 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.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.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:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.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{margin-bottom:5px;text-align:center}.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:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{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]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.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{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.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;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.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,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left: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}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/web/css/bootstrap.min.css.map b/web/css/bootstrap.min.css.map new file mode 100644 index 0000000..6c7fa40 --- /dev/null +++ b/web/css/bootstrap.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["less/normalize.less","less/print.less","bootstrap.css","dist/css/bootstrap.css","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"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kDG,edokDH,MAAA,acpkDG,edukDH,MAAA,IcvkDG,ed0kDH,MAAA,ac1kDG,ed6kDH,MAAA,ac7kDG,edglDH,MAAA,IchlDG,edmlDH,MAAA,ac9kDG,edilDH,MAAA,YchmDG,edmmDH,MAAA,KcnmDG,gBdsmDH,KAAA,KctmDG,gBdymDH,KAAA,aczmDG,gBd4mDH,KAAA,ac5mDG,ed+mDH,KAAA,Ic/mDG,edknDH,KAAA,aclnDG,edqnDH,KAAA,acrnDG,edwnDH,KAAA,IcxnDG,ed2nDH,KAAA,ac3nDG,ed8nDH,KAAA,ac9nDG,edioDH,KAAA,IcjoDG,edooDH,KAAA,ac/nDG,edkoDH,KAAA,YcnnDG,edsnDH,KAAA,KctnDG,kBdynDH,YAAA,KcznDG,kBd4nDH,YAAA,ac5nDG,kBd+nDH,YAAA,ac/nDG,iBdkoDH,YAAA,IcloDG,iBdqoDH,YAAA,acroDG,iBdwoDH,YAAA,acxoDG,iBd2oDH,YAAA,Ic3oDG,iBd8oDH,YAAA,ac9oDG,iBdipDH,YAAA,acjpDG,iBdopDH,YAAA,IcppDG,iBdupDH,YAAA,acvpDG,iBd0pDH,YAAA,Yc5rDG,iBACE,YAAA,EAOJ,yBACE,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,Ud0rDD,MAAA,Kc1rDC,Wd6rDD,MAAA,Kc7rDC,WdgsDD,MAAA,achsDC,WdmsDD,MAAA,acnsDC,UdssDD,MAAA,IctsDC,UdysDD,MAAA,aczsDC,Ud4sDD,MAAA,ac5sDC,Ud+sDD,MAAA,Ic/sDC,UdktDD,MAAA,acltDC,UdqtDD,MAAA,acrtDC,UdwtDD,MAAA,IcxtDC,Ud2tDD,MAAA,ac5sDC,Ud+sDD,MAAA,Yc/sDC,gBdktDD,MAAA,KcltDC,gBdqtDD,MAAA,acrtDC,gBdwtDD,MAAA,acxtDC,ed2tDD,MAAA,Ic3tDC,ed8tDD,MAAA,ac9tDC,ediuDD,MAAA,acjuDC,edouDD,MAAA,IcpuDC,eduuDD,MAAA,acvuDC,ed0uDD,MAAA,ac1uDC,ed6uDD,MAAA,Ic7uDC,edgvDD,MAAA,ac3uDC,ed8uDD,MAAA,Yc7vDC,edgwDD,MAAA,KchwDC,gBdmwDD,KAAA,KcnwDC,gBdswDD,KAAA,actwDC,gBdywDD,KAAA,aczwDC,ed4wDD,KAAA,Ic5wDC,ed+wDD,KAAA,ac/wDC,edkxDD,KAAA,aclxDC,edqxDD,KAAA,IcrxDC,edwxDD,KAAA,acxxDC,ed2xDD,KAAA,ac3xDC,ed8xDD,KAAA,Ic9xDC,ediyDD,KAAA,ac5xDC,ed+xDD,KAAA,YchxDC,edmxDD,KAAA,KcnxDC,kBdsxDD,YAAA,KctxDC,kBdyxDD,YAAA,aczxDC,kBd4xDD,YAAA,ac5xDC,iBd+xDD,YAAA,Ic/xDC,iBdkyDD,YAAA,aclyDC,iBdqyDD,YAAA,acryDC,iBdwyDD,YAAA,IcxyDC,iBd2yDD,YAAA,ac3yDC,iBd8yDD,YAAA,ac9yDC,iBdizDD,YAAA,IcjzDC,iBdozDD,YAAA,acpzDC,iBduzDD,YAAA,YY9yDD,iBE3CE,YAAA,GAQF,yBACE,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,Udw1DD,MAAA,Kcx1DC,Wd21DD,MAAA,Kc31DC,Wd81DD,MAAA,ac91DC,Wdi2DD,MAAA,acj2DC,Udo2DD,MAAA,Icp2DC,Udu2DD,MAAA,acv2DC,Ud02DD,MAAA,ac12DC,Ud62DD,MAAA,Ic72DC,Udg3DD,MAAA,ach3DC,Udm3DD,MAAA,acn3DC,Uds3DD,MAAA,Ict3DC,Udy3DD,MAAA,ac12DC,Ud62DD,MAAA,Yc72DC,gBdg3DD,MAAA,Kch3DC,gBdm3DD,MAAA,acn3DC,gBds3DD,MAAA,act3DC,edy3DD,MAAA,Icz3DC,ed43DD,MAAA,ac53DC,ed+3DD,MAAA,ac/3DC,edk4DD,MAAA,Icl4DC,edq4DD,MAAA,acr4DC,edw4DD,MAAA,acx4DC,ed24DD,MAAA,Ic34DC,ed84DD,MAAA,acz4DC,ed44DD,MAAA,Yc35DC,ed85DD,MAAA,Kc95DC,gBdi6DD,KAAA,Kcj6DC,gBdo6DD,KAAA,acp6DC,gBdu6DD,KAAA,acv6DC,ed06DD,KAAA,Ic16DC,ed66DD,KAAA,ac76DC,edg7DD,KAAA,ach7DC,edm7DD,KAAA,Icn7DC,eds7DD,KAAA,act7DC,edy7DD,KAAA,acz7DC,ed47DD,KAAA,Ic57DC,ed+7DD,KAAA,ac17DC,ed67DD,KAAA,Yc96DC,edi7DD,KAAA,Kcj7DC,kBdo7DD,YAAA,Kcp7DC,kBdu7DD,YAAA,acv7DC,kBd07DD,YAAA,ac17DC,iBd67DD,YAAA,Ic77DC,iBdg8DD,YAAA,ach8DC,iBdm8DD,YAAA,acn8DC,iBds8DD,YAAA,Ict8DC,iBdy8DD,YAAA,acz8DC,iBd48DD,YAAA,ac58DC,iBd+8DD,YAAA,Ic/8DC,iBdk9DD,YAAA,acl9DC,iBdq9DD,YAAA,YYz8DD,iBE9CE,YAAA,GAQF,0BACE,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,Uds/DD,MAAA,Kct/DC,Wdy/DD,MAAA,Kcz/DC,Wd4/DD,MAAA,ac5/DC,Wd+/DD,MAAA,ac//DC,UdkgED,MAAA,IclgEC,UdqgED,MAAA,acrgEC,UdwgED,MAAA,acxgEC,Ud2gED,MAAA,Ic3gEC,Ud8gED,MAAA,ac9gEC,UdihED,MAAA,acjhEC,UdohED,MAAA,IcphEC,UduhED,MAAA,acxgEC,Ud2gED,MAAA,Yc3gEC,gBd8gED,MAAA,Kc9gEC,gBdihED,MAAA,acjhEC,gBdohED,MAAA,acphEC,eduhED,MAAA,IcvhEC,ed0hED,MAAA,ac1hEC,ed6hED,MAAA,ac7hEC,edgiED,MAAA,IchiEC,edmiED,MAAA,acniEC,edsiED,MAAA,actiEC,edyiED,MAAA,IcziEC,ed4iED,MAAA,acviEC,ed0iED,MAAA,YczjEC,ed4jED,MAAA,Kc5jEC,gBd+jED,KAAA,Kc/jEC,gBdkkED,KAAA,aclkEC,gBdqkED,KAAA,acrkEC,edwkED,KAAA,IcxkEC,ed2kED,KAAA,ac3kEC,ed8kED,KAAA,ac9kEC,edilED,KAAA,IcjlEC,edolED,KAAA,acplEC,edulED,KAAA,acvlEC,ed0lED,KAAA,Ic1lEC,ed6lED,KAAA,acxlEC,ed2lED,KAAA,Yc5kEC,ed+kED,KAAA,Kc/kEC,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A,KlBq7FM,WAAY,KkBn7FhB,QAAA,IASN,eC3DE,yBACA,eAAA,KpBi+FD,aoB99FC,MAAA,KnB0+FA,iBAAkB,KmBx+FhB,aAAA,KpBk+FH,mBoBh+FO,mBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpBi+FH,mBoB99FC,MAAA,KnB0+FA,iBAAkB,QAClB,aAAc,QmBt+FR,oBADJ,oBpBi+FH,mCoB99FG,MAAA,KnB0+FF,iBAAkB,QAClB,aAAc,QmBt+FN,0BnB4+FV,0BAHA,0BmB1+FM,0BnB4+FN,0BAHA,0BDFC,yCoBx+FK,yCnB4+FN,yCmBv+FE,MAAA,KnB++FA,iBAAkB,QAClB,aAAc,QmBx+FZ,oBpBg+FH,oBoBh+FG,mCnB6+FF,iBAAkB,KmBz+FV,4BnB8+FV,4BAHA,4BDHC,6BCOD,6BAHA,6BkB39FA,sCClBM,sCnB8+FN,sCmBx+FI,iBAAA,KACA,aAAA,KDcJ,oBC9DE,MAAA,KACA,iBAAA,KpB0hGD,aoBvhGC,MAAA,KnBmiGA,iBAAkB,QmBjiGhB,aAAA,QpB2hGH,mBoBzhGO,mBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpB0hGH,mBoBvhGC,MAAA,KnBmiGA,iBAAkB,QAClB,aAAc,QmB/hGR,oBADJ,oBpB0hGH,mCoBvhGG,MAAA,KnBmiGF,iBAAkB,QAClB,aAAc,QmB/hGN,0BnBqiGV,0BAHA,0BmBniGM,0BnBqiGN,0BAHA,0BDFC,yCoBjiGK,yCnBqiGN,yCmBhiGE,MAAA,KnBwiGA,iBAAkB,QAClB,aAAc,QmBjiGZ,oBpByhGH,oBoBzhGG,mCnBsiGF,iBAAkB,KmBliGV,4BnBuiGV,4BAHA,4BDHC,6BCOD,6BAHA,6BkBjhGA,sCCrBM,sCnBuiGN,sCmBjiGI,iBAAA,QACA,aAAA,QDkBJ,oBClEE,MAAA,QACA,iBAAA,KpBmlGD,aoBhlGC,MAAA,KnB4lGA,iBAAkB,QmB1lGhB,aAAA,QpBolGH,mBoBllGO,mBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpBmlGH,mBoBhlGC,MAAA,KnB4lGA,iBAAkB,QAClB,aAAc,QmBxlGR,oBADJ,oBpBmlGH,mCoBhlGG,MAAA,KnB4lGF,iBAAkB,QAClB,aAAc,QmBxlGN,0BnB8lGV,0BAHA,0BmB5lGM,0BnB8lGN,0BAHA,0BDFC,yCoB1lGK,yCnB8lGN,yCmBzlGE,MAAA,KnBimGA,iBAAkB,QAClB,aAAc,QmB1lGZ,oBpBklGH,oBoBllGG,mCnB+lGF,iBAAkB,KmB3lGV,4BnBgmGV,4BAHA,4BDHC,6BCOD,6BAHA,6BkBtkGA,sCCzBM,sCnBgmGN,sCmB1lGI,iBAAA,QACA,aAAA,QDsBJ,oBCtEE,MAAA,QACA,iBAAA,KpB4oGD,UoBzoGC,MAAA,KnBqpGA,iBAAkB,QmBnpGhB,aAAA,QpB6oGH,gBoB3oGO,gBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpB4oGH,gBoBzoGC,MAAA,KnBqpGA,iBAAkB,QAClB,aAAc,QmBjpGR,iBADJ,iBpB4oGH,gCoBzoGG,MAAA,KnBqpGF,iBAAkB,QAClB,aAAc,QmBjpGN,uBnBupGV,uBAHA,uBmBrpGM,uBnBupGN,uBAHA,uBDFC,sCoBnpGK,sCnBupGN,sCmBlpGE,MAAA,KnB0pGA,iBAAkB,QAClB,aAAc,QmBnpGZ,iBpB2oGH,iBoB3oGG,gCnBwpGF,iBAAkB,KmBppGV,yBnBypGV,yBAHA,yBDHC,0BCOD,0BAHA,0BkB3nGA,mCC7BM,mCnBypGN,mCmBnpGI,iBAAA,QACA,aAAA,QD0BJ,iBC1EE,MAAA,QACA,iBAAA,KpBqsGD,aoBlsGC,MAAA,KnB8sGA,iBAAkB,QmB5sGhB,aAAA,QpBssGH,mBoBpsGO,mBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpBqsGH,mBoBlsGC,MAAA,KnB8sGA,iBAAkB,QAClB,aAAc,QmB1sGR,oBADJ,oBpBqsGH,mCoBlsGG,MAAA,KnB8sGF,iBAAkB,QAClB,aAAc,QmB1sGN,0BnBgtGV,0BAHA,0BmB9sGM,0BnBgtGN,0BAHA,0BDFC,yCoB5sGK,yCnBgtGN,yCmB3sGE,MAAA,KnBmtGA,iBAAkB,QAClB,aAAc,QmB5sGZ,oBpBosGH,oBoBpsGG,mCnBitGF,iBAAkB,KmB7sGV,4BnBktGV,4BAHA,4BDHC,6BCOD,6BAHA,6BkBhrGA,sCCjC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A,QkDrxKC,WAAY,IAAI,MAAM,KjDizKtB,2BAA4B,IiD9yK1B,0BAAA,IAHJ,mBAAA,mCAMM,cAAA,ElDwxKL,oCkDnxKG,oDjD+yKF,aAAc,IAAI,EiD7yKZ,cAAA,EvBtEL,4D3B61KF,4EkDjxKG,WAAA,EjD6yKF,uBAAwB,IiD3yKlB,wBAAA,IvBtEL,0D3B21KF,0EkD1yKC,cAAe,EvB1Df,2BAAA,IACC,0BAAA,IuB0FH,+EAEI,uBAAA,ElD8wKH,wBAAA,EkD1wKC,wDlD6wKD,iBAAA,EC4BD,0BACE,iBAAkB,EiDlyKpB,8BlD0wKC,ckD1wKD,gCjDuyKE,cAAe,EiDvyKjB,sCAQM,sBlDwwKL,wCC4BC,cAAe,K0Br5Kf,aAAA,KuByGF,wDlDqxKC,0BC4BC,uBAAwB,IACxB,wBAAyB,IiDlzK3B,yFAoBQ,yFlDwwKP,2DkDzwKO,2DjDqyKN,uBAAwB,IACxB,wBAAyB,IAK3B,wGiD9zKA,wGjD4zKA,wGDtBC,wGCuBD,0EiD7zKA,0EjD2zKA,0EiDnyKU,0EjD2yKR,uBAAwB,IAK1B,uGiDx0KA,uGjDs0KA,uGDtBC,uGCuBD,yEiDv0KA,yEjDq0KA,yEiDzyKU,yEvB7HR,wBAAA,IuBiGF,sDlDqzKC,yBC4BC,2BAA4B,IAC5B,0BAA2B,IiDxyKrB,qFA1CR,qFAyCQ,wDlDmxKP,wDC4BC,2BAA4B,IAC5B,0BAA2B,IAG7B,oGDtBC,oGCwBD,oGiD91KA,oGjD21KA,uEiD7yKU,uEjD+yKV,uEiD71KA,uEjDm2KE,0BAA2B,IAG7B,mGDtBC,mGCwBD,mGiDx2KA,mGjDq2KA,sEiDnzKU,sEjDqzKV,sEiDv2KA,sEjD62KE,2BAA4B,IiDlzK1B,0BlD2xKH,qCkDt1KD,0BAAA,qCA+DI,WAAA,IAAA,MAAA,KA/DJ,kDAAA,kDAmEI,WAAA,EAnEJ,uBAAA,yCjD23KE,OAAQ,EiDjzKA,+CjDqzKV,+CiD/3KA,+CjDi4KA,+CAEA,+CANA,+CDjBC,iECoBD,iEiDh4KA,iEjDk4KA,iEAEA,iEANA,iEAWE,YAAa,EiD3zKL,8CjD+zKV,8CiD74KA,8CjD+4KA,8CAEA,8CANA,8CDjBC,gECoBD,gEiD94KA,gEjDg5KA,gEAEA,gEANA,gEAWE,aAAc,EAIhB,+CiD35KA,+CjDy5KA,+CiDl0KU,+CjDq0KV,iEiD55KA,iEjD05KA,iEDtBC,iEC6BC,cAAe,EAEjB,8CiDn0KU,8CjDq0KV,8CiDr6KA,8CjDo6KA,gEDtBC,gECwBD,gEiDh0KI,gEACA,cAAA,EAUJ,yBACE,cAAA,ElDmyKD,OAAA,EkD/xKG,aACA,cAAA,KANJ,oBASM,cAAA,ElDkyKL,cAAA,IkD7xKG,2BlDgyKH,WAAA,IC4BD,4BiDxzKM,cAAA,EAKF,wDAvBJ,wDlDqzKC,WAAA,IAAA,MAAA,KkD5xKK,2BlD+xKL,WAAA,EmDlhLC,uDnDqhLD,cAAA,IAAA,MAAA,KmDlhLG,eACA,aAAA,KnDshLH,8BmDxhLC,MAAA,KAMI,iBAAA,QnDqhLL,aAAA,KmDlhLK,0DACA,iBAAA,KAGJ,qCAEI,MAAA,QnDmhLL,iBAAA,KmDpiLC,yDnDuiLD,oBAAA,KmDpiLG,eACA,aAAA,QnDwiLH,8BmD1iLC,MAAA,KAMI,iBAAA,QnDuiLL,aAAA,QmDpiLK,0DACA,iBAAA,QAGJ,qCAEI,MAAA,QnDqiLL,iBAAA,KmDtjLC,yDnDyjLD,oBAAA,QmDtjLG,eACA,aAAA,QnD0jLH,8BmD5jLC,MAAA,QAMI,iBAAA,QnDyjLL,aAAA,QmDtjLK,0DACA,iBAAA,QAGJ,qCAEI,MAAA,QnDujLL,iBAAA,QmDxkLC,yDnD2kLD,oBAAA,QmDxkLG,YACA,aAAA,QnD4kLH,2BmD9kLC,MAAA,QAMI,iBAAA,QnD2kLL,aAAA,QmDxkLK,uDACA,iBAAA,QAGJ,kCAEI,MAAA,QnDykLL,iBAAA,QmD1lLC,sDnD6lLD,oBAAA,QmD1lLG,eACA,aAAA,QnD8lLH,8BmDhmLC,MAAA,QAMI,iBAAA,QnD6lLL,aAAA,QmD1lLK,0DACA,iBAAA,QAGJ,qCAEI,MAAA,QnD2lLL,iBAAA,QmD5mLC,yDnD+mLD,oBAAA,QmD5mLG,cACA,aAAA,QnDgnLH,6BmDlnLC,MAAA,QAMI,iBAAA,QnD+mLL,aAAA,QmD5mLK,yDACA,iBAAA,QAGJ,oCAEI,MAAA,QnD6mLL,iBAAA,QoD5nLC,wDACA,oBAAA,QAEA,kBACA,SAAA,SpD+nLD,QAAA,MoDpoLC,OAAQ,EnDgqLR,QAAS,EACT,SAAU,OAEZ,yCmDtpLI,wBADA,yBAEA,yBACA,wBACA,SAAA,SACA,IAAA,EACA,OAAA,EpD+nLH,KAAA,EoD1nLC,MAAO,KACP,OAAA,KpD4nLD,OAAA,EoDvnLC,wBpD0nLD,eAAA,OqDppLC,uBACA,eAAA,IAEA,MACA,WAAA,KACA,QAAA,KjDwDA,cAAA,KACQ,iBAAA,QJgmLT,OAAA,IAAA,MAAA,QqD/pLC,cAAe,IASb,mBAAA,MAAA,EAAA,IAAA,IAAA,gBACA,WAAA,MAAA,EAAA,IAAA,IAAA,gBAKJ,iBACE,aAAA,KACA,aAAA,gBAEF,SACE,QAAA,KACA,cAAA,ICtBF,SACE,QAAA,IACA,cAAA,IAEA,OACA,MAAA,MACA,UAAA,KjCRA,YAAA,IAGA,YAAA,ErBqrLD,MAAA,KsD7qLC,YAAA,EAAA,IAAA,EAAA,KrDysLA,OAAQ,kBqDvsLN,QAAA,GjCbF,aiCeE,ajCZF,MAAA,KrB6rLD,gBAAA,KsDzqLC,OAAA,QACE,OAAA,kBACA,QAAA,GAEA,aACA,mBAAA,KtD2qLH,QAAA,EuDhsLC,OAAQ,QACR,WAAA,IvDksLD,OAAA,EuD7rLC,YACA,SAAA,OAEA,OACA,SAAA,MACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EAIA,QAAA,KvD6rLD,QAAA,KuD1rLC,SAAA,OnD+GA,2BAAA,MACI,QAAA,EAEI,0BAkER,mBAAA,kBAAA,IAAA,SAEK,cAAA,aAAA,IAAA,SACG,WAAA,UAAA,IAAA,SJ6gLT,kBAAA,kBuDhsLC,cAAA,kBnD2GA,aAAA,kBACI,UAAA,kBAEI,wBJwlLT,kBAAA,euDpsLK,cAAe,eACnB,aAAA,eACA,UAAA,eAIF,mBACE,WAAA,OACA,WAAA,KvDqsLD,cuDhsLC,SAAU,SACV,MAAA,KACA,OAAA,KAEA,eACA,SAAA,SnDaA,iBAAA,KACQ,wBAAA,YmDZR,gBAAA,YtD4tLA,OsD5tLA,IAAA,MAAA,KAEA,OAAA,IAAA,MAAA,evDksLD,cAAA,IuD9rLC,QAAS,EACT,mBAAA,EAAA,IAAA,IAAA,eACA,WAAA,EAAA,IAAA,IAAA,eAEA,gBACA,SAAA,MACA,IAAA,EACA,MAAA,EvDgsLD,OAAA,EuD9rLC,KAAA,ElCrEA,QAAA,KAGA,iBAAA,KkCmEA,qBlCtEA,OAAA,iBAGA,QAAA,EkCwEF,mBACE,OAAA,kBACA,QAAA,GAIF,cACE,QAAA,KvDgsLD,cAAA,IAAA,MAAA,QuD3rLC,qBACA,WAAA,KAKF,aACE,OAAA,EACA,YAAA,WAIF,YACE,SAAA,SACA,QAAA,KvD0rLD,cuD5rLC,QAAS,KAQP,WAAA,MACA,WAAA,IAAA,MAAA,QATJ,wBAaI,cAAA,EvDsrLH,YAAA,IuDlrLG,mCvDqrLH,YAAA,KuD/qLC,oCACA,YAAA,EAEA,yBACA,SAAA,SvDkrLD,IAAA,QuDhqLC,MAAO,KAZP,OAAA,KACE,SAAA,OvDgrLD,yBuD7qLD,cnDvEA,MAAA,MACQ,OAAA,KAAA,KmD2ER,eAAY,mBAAA,EAAA,IAAA,KAAA,evD+qLX,WAAA,EAAA,IAAA,KAAA,euDzqLD,UAFA,MAAA,OvDirLD,yBwD/zLC,UACA,MAAA,OCNA,SAEA,SAAA,SACA,QAAA,KACA,QAAA,MACA,YAAA,iBAAA,UAAA,MAAA,WACA,UAAA,KACA,WAAA,OACA,YAAA,IACA,YAAA,WACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KACA,eAAA,ODHA,WAAA,OnCVA,aAAA,OAGA,UAAA,OrBs1LD,YAAA,OwD30LC,OAAA,iBnCdA,QAAA,ErB61LD,WAAA,KwD90LY,YAAmB,OAAA,kBxDk1L/B,QAAA,GwDj1LY,aAAmB,QAAA,IAAA,ExDq1L/B,WAAA,KwDp1LY,eAAmB,QAAA,EAAA,IxDw1L/B,YAAA,IwDv1LY,gBAAmB,QAAA,IAAA,ExD21L/B,WAAA,IwDt1LC,cACA,QAAA,EAAA,IACA,YAAA,KAEA,eACA,UAAA,MxDy1LD,QAAA,IAAA,IwDr1LC,MAAO,KACP,WAAA,OACA,iBAAA,KACA,cAAA,IAEA,exDu1LD,SAAA,SwDn1LC,MAAA,EACE,OAAA,EACA,aAAA,YACA,aAAA,MAEA,4BxDq1LH,OAAA,EwDn1LC,KAAA,IACE,YAAA,KACA,aAAA,IAAA,IAAA,EACA,iBAAA,KAEA,iCxDq1LH,MAAA,IwDn1LC,OAAA,EACE,cAAA,KACA,aAAA,IAAA,IAAA,EACA,iBAAA,KAEA,kCxDq1LH,OAAA,EwDn1LC,KAAA,IACE,cAAA,KACA,aAAA,IAAA,IAAA,EACA,iBAAA,KAEA,8BxDq1LH,IAAA,IwDn1LC,KAAA,EACE,WAAA,KACA,aAAA,IAAA,IAAA,IAAA,EACA,mBAAA,KAEA,6BxDq1LH,IAAA,IwDn1LC,MAAA,EACE,WAAA,KACA,aAAA,IAAA,EAAA,IAAA,IACA,kBAAA,KAEA,+BxDq1LH,IAAA,EwDn1LC,KAAA,IACE,YAAA,KACA,aAAA,EAAA,IAAA,IACA,oBAAA,KAEA,oCxDq1LH,IAAA,EwDn1LC,MAAA,IACE,WAAA,KACA,aAAA,EAAA,IAAA,IACA,oBAAA,KAEA,qCxDq1LH,IAAA,E0Dl7LC,KAAM,IACN,WAAA,KACA,aAAA,EAAA,IAAA,IACA,oBAAA,KAEA,SACA,SAAA,SACA,IAAA,EDXA,KAAA,EAEA,QAAA,KACA,QAAA,KACA,UAAA,MACA,QAAA,IACA,YAAA,iBAAA,UAAA,MAAA,WACA,UAAA,KACA,WAAA,OACA,YAAA,IACA,YAAA,WACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KCAA,eAAA,OAEA,WAAA,OACA,aAAA,OAAA,UAAA,OACA,YAAA,OACA,iBAAA,KACA,wBAAA,YtD8CA,gBAAA,YACQ,OAAA,IAAA,MAAA,KJk5LT,OAAA,IAAA,MAAA,e0D77LC,cAAA,IAAY,mBAAA,EAAA,IAAA,KAAA,e1Dg8Lb,WAAA,EAAA,IAAA,KAAA,e0D/7La,WAAA,KACZ,aAAY,WAAA,MACZ,eAAY,YAAA,KAGd,gBACE,WAAA,KAEA,cACA,YAAA,MAEA,e1Dq8LD,QAAA,IAAA,K0Dl8LC,OAAQ,EACR,UAAA,K1Do8LD,iBAAA,Q0D57LC,cAAA,IAAA,MAAA,QzDy9LA,cAAe,IAAI,IAAI,EAAE,EyDt9LvB,iBACA,QAAA,IAAA,KAEA,gBACA,sB1D87LH,SAAA,S0D37LC,QAAS,MACT,MAAA,E1D67LD,OAAA,E0D37LC,aAAc,YACd,aAAA,M1D87LD,gB0Dz7LC,aAAA,KAEE,sBACA,QAAA,GACA,aAAA,KAEA,oB1D27LH,OAAA,M0D17LG,KAAA,IACE,YAAA,MACA,iBAAA,KACA,iBAAA,gBACA,oBAAA,E1D67LL,0B0Dz7LC,OAAA,IACE,YAAA,MACA,QAAA,IACA,iBAAA,KACA,oBAAA,EAEA,sB1D27LH,IAAA,I0D17LG,KAAA,MACE,WAAA,MACA,mBAAA,KACA,mBAAA,gBACA,kBAAA,E1D67LL,4B0Dz7LC,OAAA,MACE,KAAA,IACA,QAAA,IACA,mBAAA,KACA,kBAAA,EAEA,uB1D27LH,IAAA,M0D17LG,KAAA,IACE,YAAA,MACA,iBAAA,EACA,oBAAA,KACA,oBAAA,gB1D67LL,6B0Dx7LC,IAAA,IACE,YAAA,MACA,QAAA,IACA,iBAAA,EACA,oBAAA,KAEA,qB1D07LH,IAAA,I0Dz7LG,MAAA,MACE,WAAA,MACA,mBAAA,EACA,kBAAA,KACA,kBAAA,gB1D47LL,2B2DpjMC,MAAO,IACP,OAAA,M3DsjMD,QAAA,I2DnjMC,mBAAoB,EACpB,kBAAA,KAEA,U3DqjMD,SAAA,S2DljMG,gBACA,SAAA,SvD6KF,MAAA,KACK,SAAA,OJ04LN,sB2D/jMC,SAAU,S1D4lMV,QAAS,K0D9kML,mBAAA,IAAA,YAAA,K3DqjML,cAAA,IAAA,YAAA,K2D3hMC,WAAA,IAAA,YAAA,KvDmKK,4BAFL,0BAGQ,YAAA,EA3JA,qDA+GR,sBAEQ,mBAAA,kBAAA,IAAA,YJ86LP,cAAA,aAAA,IAAA,Y2DzjMG,WAAA,UAAA,IAAA,YvDmHJ,4BAAA,OACQ,oBAAA,OuDjHF,oBAAA,O3D4jML,YAAA,OI58LD,mCHs+LA,2BGr+LQ,KAAA,EuD5GF,kBAAA,sB3D6jML,UAAA,sBC2BD,kCADA,2BG5+LA,KAAA,EACQ,kBAAA,uBuDtGF,UAAA,uBArCN,6B3DomMD,gC2DpmMC,iC1D+nME,KAAM,E0DllMN,kBAAA,mB3D4jMH,UAAA,oBAGA,wB2D5mMD,sBAAA,sBAsDI,QAAA,MAEA,wB3D0jMH,KAAA,E2DtjMG,sB3DyjMH,sB2DrnMC,SAAU,SA+DR,IAAA,E3DyjMH,MAAA,KC0BD,sB0D/kMI,KAAA,KAnEJ,sBAuEI,KAAA,MAvEJ,2BA0EI,4B3DwjMH,KAAA,E2D/iMC,6BACA,KAAA,MAEA,8BACA,KAAA,KtC3FA,kBsC6FA,SAAA,SACA,IAAA,EACA,OAAA,EACA,KAAA,EACA,MAAA,I3DmjMD,UAAA,K2D9iMC,MAAA,KdnGE,WAAA,OACA,YAAA,EAAA,IAAA,IAAA,eACA,iBAAA,cAAA,OAAA,kBACA,QAAA,G7CqpMH,uB2DljMC,iBAAA,sEACE,iBAAA,iEACA,iBAAA,uFdxGA,iBAAA,kEACA,OAAA,+GACA,kBAAA,SACA,wBACA,MAAA,E7C6pMH,KAAA,K2DpjMC,iBAAA,sE1DglMA,iBAAiB,iE0D9kMf,iBAAA,uFACA,iBAAA,kEACA,OAAA,+GtCvHF,kBAAA,SsCyFF,wB3DslMC,wBC4BC,MAAO,KACP,gBAAiB,KACjB,OAAQ,kB0D7kMN,QAAA,EACA,QAAA,G3DwjMH,0C2DhmMD,2CA2CI,6BADA,6B1DklMF,SAAU,S0D7kMR,IAAA,IACA,QAAA,E3DqjMH,QAAA,a2DrmMC,WAAY,MAqDV,0CADA,6B3DsjMH,KAAA,I2D1mMC,YAAa,MA0DX,2CADA,6BAEA,MAAA,IACA,aAAA,MAME,6BADF,6B3DmjMH,MAAA,K2D9iMG,OAAA,KACE,YAAA,M3DgjML,YAAA,E2DriMC,oCACA,QAAA,QAEA,oCACA,QAAA,QAEA,qBACA,SAAA,SACA,OAAA,K3DwiMD,KAAA,I2DjjMC,QAAS,GAYP,MAAA,IACA,aAAA,EACA,YAAA,KACA,WAAA,OACA,WAAA,KAEA,wBACA,QAAA,aAWA,MAAA,KACA,OAAA,K3D8hMH,OAAA,I2D7jMC,YAAa,OAkCX,OAAA,QACA,iBAAA,OACA,iBAAA,cACA,OAAA,IAAA,MAAA,K3D8hMH,cAAA,K2DthMC,6BACA,MAAA,KACA,OAAA,KACA,OAAA,EACA,iBAAA,KAEA,kBACA,SAAA,SACA,MAAA,IACA,OAAA,K3DyhMD,KAAA,I2DxhMC,QAAA,GACE,YAAA,K3D0hMH,eAAA,K2Dj/LC,MAAO,KAhCP,WAAA,O1D8iMA,YAAa,EAAE,IAAI,IAAI,eAEzB,uB0D3iMM,YAAA,KAEA,oCACA,0C3DmhMH,2C2D3hMD,6BAAA,6BAYI,MAAA,K3DmhMH,OAAA,K2D/hMD,WAAA,M1D2jME,UAAW,KDxBZ,0C2D9gMD,6BACE,YAAA,MAEA,2C3DghMD,6B2D5gMD,aAAA,M3D+gMC,kBACF,MAAA,I4D7wMC,KAAA,I3DyyME,eAAgB,KAElB,qBACE,OAAQ,MAkBZ,qCADA,sCADA,mBADA,oBAXA,gBADA,iBAOA,uBADA,wBADA,iBADA,kBADA,wBADA,yBASA,mCADA,oC2DpzME,oBAAA,qBAAA,oBAAA,qB3D2zMF,WADA,YAOA,uBADA,wBADA,qBADA,sBADA,cADA,e2D/zMI,a3Dq0MJ,cDvBC,kB4D7yMG,mB3DqzMJ,WADA,YAwBE,QAAS,MACT,QAAS,IASX,qCADA,mBANA,gBAGA,uBADA,iBADA,wBAIA,mCDhBC,oB6D/0MC,oB5Dk2MF,W+B51MA,uBhCo0MC,qB4D5zMG,cChBF,aACA,kB5D+1MF,W+Br1ME,MAAO,KhCy0MR,cgCt0MC,QAAS,MACT,aAAA,KhCw0MD,YAAA,KgC/zMC,YhCk0MD,MAAA,gBgC/zMC,WhCk0MD,MAAA,egC/zMC,MhCk0MD,QAAA,e8Dz1MC,MACA,QAAA,gBAEA,WACA,WAAA,O9B8BF,WACE,KAAA,EAAA,EAAA,EhCg0MD,MAAA,YgCzzMC,YAAa,KACb,iBAAA,YhC2zMD,OAAA,E+D31MC,Q/D81MD,QAAA,eC4BD,OACE,SAAU,M+Dn4MV,chE42MD,MAAA,aC+BD,YADA,YADA,YADA,YAIE,QAAS,e+Dp5MT,kBhEs4MC,mBgEr4MD,yBhEi4MD,kB+Dl1MD,mBA6IA,yB9D4tMA,kBACA,mB8Dj3ME,yB9D62MF,kBACA,mBACA,yB+Dv5MY,QAAA,eACV,yBAAU,YhE04MT,QAAA,gBC4BD,iB+Dp6MU,QAAA,gBhE64MX,c+D51MG,QAAS,oB/Dg2MV,c+Dl2MC,c/Dm2MH,QAAA,sB+D91MG,yB/Dk2MD,kBACF,QAAA,iB+D91MG,yB/Dk2MD,mBACF,QAAA,kBgEh6MC,yBhEo6MC,yBgEn6MD,QAAA,wBACA,+CAAU,YhEw6MT,QAAA,gBC4BD,iB+Dl8MU,QAAA,gBhE26MX,c+Dr2MG,QAAS,oB/Dy2MV,c+D32MC,c/D42MH,QAAA,sB+Dv2MG,+C/D22MD,kBACF,QAAA,iB+Dv2MG,+C/D22MD,mBACF,QAAA,kBgE97MC,+ChEk8MC,yBgEj8MD,QAAA,wBACA,gDAAU,YhEs8MT,QAAA,gBC4BD,iB+Dh+MU,QAAA,gBhEy8MX,c+D92MG,QAAS,oB/Dk3MV,c+Dp3MC,c/Dq3MH,QAAA,sB+Dh3MG,gD/Do3MD,kBACF,QAAA,iB+Dh3MG,gD/Do3MD,mBACF,QAAA,kBgE59MC,gDhEg+MC,yBgE/9MD,QAAA,wBACA,0BAAU,YhEo+MT,QAAA,gBC4BD,iB+D9/MU,QAAA,gBhEu+MX,c+Dv3MG,QAAS,oB/D23MV,c+D73MC,c/D83MH,QAAA,sB+Dz3MG,0B/D63MD,kBACF,QAAA,iB+Dz3MG,0B/D63MD,mBACF,QAAA,kBgEl/MC,0BhEs/MC,yBACF,QAAA,wBgEv/MC,yBhE2/MC,WACF,QAAA,gBgE5/MC,+ChEggNC,WACF,QAAA,gBgEjgNC,gDhEqgNC,WACF,QAAA,gBAGA,0B+Dh3MC,WA4BE,QAAS,gBC5LX,eAAU,QAAA,eACV,aAAU,ehEyhNT,QAAA,gBC4BD,oB+DnjNU,QAAA,gBhE4hNX,iB+D93MG,QAAS,oBAMX,iB/D23MD,iB+Dt2MG,QAAS,sB/D22MZ,qB+D/3MC,QAAS,e/Dk4MV,a+D53MC,qBAcE,QAAS,iB/Dm3MZ,sB+Dh4MC,QAAS,e/Dm4MV,a+D73MC,sBAOE,QAAS,kB/D23MZ,4B+D53MC,QAAS,eCpLT,ahEojNC,4BACF,QAAA,wBC6BD,aACE,cACE,QAAS","sourcesContent":["/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS and IE text size adjust after device orientation change,\n// without disabling user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability of focused elements when they are also in an\n// active/hover state.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: bold;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: italic;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: 80%;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n cursor: pointer; // 3\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n box-sizing: content-box; //2\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: bold;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important;\n box-shadow: none !important;\n text-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('../fonts/glyphicons-halflings-regular.eot');\n src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\002a\";\n}\n.glyphicon-plus:before {\n content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n background-color: #fcf8e3;\n padding: .2em;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n word-break: break-all;\n word-wrap: break-word;\n color: #333333;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n margin-right: auto;\n margin-left: auto;\n padding-left: 15px;\n padding-right: 15px;\n}\n.row {\n margin-left: -15px;\n margin-right: -15px;\n}\n.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 {\n position: relative;\n min-height: 1px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.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 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0%;\n}\n@media (min-width: 768px) {\n .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 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 992px) {\n .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 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0%;\n }\n}\n@media (min-width: 1200px) {\n .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 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0%;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-column;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n float: none;\n display: table-cell;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n min-width: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control::-ms-expand {\n border: 0;\n background-color: transparent;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eeeeee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-left: -20px;\n margin-top: 4px \\9;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n vertical-align: middle;\n font-weight: normal;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n min-height: 34px;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-left: 0;\n padding-right: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n border-color: #3c763d;\n background-color: #dff0d8;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n border-color: #8a6d3b;\n background-color: #fcf8e3;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n border-color: #a94442;\n background-color: #f2dede;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: 7px;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-left: -15px;\n margin-right: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: 7px;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n margin-bottom: 0;\n font-weight: normal;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none;\n border: 1px solid transparent;\n white-space: nowrap;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n border-radius: 4px;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n outline: 0;\n background-image: none;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n color: #337ab7;\n font-weight: normal;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity 0.15s linear;\n -o-transition: opacity 0.15s linear;\n transition: opacity 0.15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-property: height, visibility;\n transition-property: height, visibility;\n -webkit-transition-duration: 0.35s;\n transition-duration: 0.35s;\n -webkit-transition-timing-function: ease;\n transition-timing-function: ease;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n list-style: none;\n font-size: 14px;\n text-align: left;\n background-color: #fff;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n background-clip: padding-box;\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n text-decoration: none;\n color: #262626;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n outline: 0;\n background-color: #337ab7;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n cursor: not-allowed;\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n left: auto;\n right: 0;\n}\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n left: auto;\n right: 0;\n }\n .navbar-right .dropdown-menu-left {\n left: 0;\n right: auto;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group .form-control:focus {\n z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555555;\n text-align: center;\n background-color: #eeeeee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n margin-bottom: 0;\n padding-left: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.nav > li.disabled > a {\n color: #777777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777777;\n text-decoration: none;\n background-color: transparent;\n cursor: not-allowed;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eeeeee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eeeeee #eeeeee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555555;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n cursor: default;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n text-align: center;\n margin-bottom: 5px;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n overflow-x: visible;\n padding-right: 15px;\n padding-left: 15px;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n -webkit-overflow-scrolling: touch;\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-left: 0;\n padding-right: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n height: 50px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: 15px;\n padding: 9px 10px;\n margin-top: 8px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n margin-left: -15px;\n margin-right: -15px;\n padding: 10px 15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n margin-top: 8px;\n margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-left: 15px;\n margin-right: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n background-color: #e7e7e7;\n color: #555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n background-color: #080808;\n color: #fff;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n content: \"/\\00a0\";\n padding: 0 5px;\n color: #ccc;\n}\n.breadcrumb > .active {\n color: #777777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n line-height: 1.42857143;\n text-decoration: none;\n color: #337ab7;\n background-color: #fff;\n border: 1px solid #ddd;\n margin-left: -1px;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-bottom-left-radius: 4px;\n border-top-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-bottom-right-radius: 4px;\n border-top-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 2;\n color: #23527c;\n background-color: #eeeeee;\n border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 3;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n cursor: default;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777777;\n background-color: #fff;\n border-color: #ddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n list-style: none;\n text-align: center;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eeeeee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777777;\n background-color: #fff;\n cursor: not-allowed;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n color: #fff;\n line-height: 1;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: #777777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eeeeee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n border-radius: 6px;\n padding-left: 15px;\n padding-right: 15px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-left: 60px;\n padding-right: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border 0.2s ease-in-out;\n -o-transition: border 0.2s ease-in-out;\n transition: border 0.2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-left: auto;\n margin-right: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n background-color: #dff0d8;\n border-color: #d6e9c6;\n color: #3c763d;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n background-color: #d9edf7;\n border-color: #bce8f1;\n color: #31708f;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n background-color: #fcf8e3;\n border-color: #faebcc;\n color: #8a6d3b;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n background-color: #f2dede;\n border-color: #ebccd1;\n color: #a94442;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n overflow: hidden;\n height: 20px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n -webkit-transition: width 0.6s ease;\n -o-transition: width 0.6s ease;\n transition: width 0.6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n margin-bottom: 20px;\n padding-left: 0;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-right-radius: 4px;\n border-top-left-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n text-decoration: none;\n color: #555;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n background-color: #eeeeee;\n color: #777777;\n cursor: not-allowed;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-left: 15px;\n padding-right: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-right-radius: 3px;\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n border: 0;\n margin-bottom: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, 0.15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\nbutton.close {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n -webkit-transition: -webkit-transform 0.3s ease-out;\n -moz-transition: -moz-transform 0.3s ease-out;\n -o-transition: -o-transform 0.3s ease-out;\n transition: transform 0.3s ease-out;\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n background-clip: padding-box;\n outline: 0;\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n.modal-backdrop.fade {\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.modal-backdrop.in {\n opacity: 0.5;\n filter: alpha(opacity=50);\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 12px;\n opacity: 0;\n filter: alpha(opacity=0);\n}\n.tooltip.in {\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.tooltip.top {\n margin-top: -3px;\n padding: 5px 0;\n}\n.tooltip.right {\n margin-left: 3px;\n padding: 0 5px;\n}\n.tooltip.bottom {\n margin-top: 3px;\n padding: 5px 0;\n}\n.tooltip.left {\n margin-left: -3px;\n padding: 0 5px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n bottom: 0;\n right: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n line-break: auto;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n white-space: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n font-size: 14px;\n background-color: #fff;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n margin: 0;\n padding: 8px 14px;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n border-width: 10px;\n content: \"\";\n}\n.popover.top > .arrow {\n left: 50%;\n margin-left: -11px;\n border-bottom-width: 0;\n border-top-color: #999999;\n border-top-color: rgba(0, 0, 0, 0.25);\n bottom: -11px;\n}\n.popover.top > .arrow:after {\n content: \" \";\n bottom: 1px;\n margin-left: -10px;\n border-bottom-width: 0;\n border-top-color: #fff;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-left-width: 0;\n border-right-color: #999999;\n border-right-color: rgba(0, 0, 0, 0.25);\n}\n.popover.right > .arrow:after {\n content: \" \";\n left: 1px;\n bottom: -10px;\n border-left-width: 0;\n border-right-color: #fff;\n}\n.popover.bottom > .arrow {\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999999;\n border-bottom-color: rgba(0, 0, 0, 0.25);\n top: -11px;\n}\n.popover.bottom > .arrow:after {\n content: \" \";\n top: 1px;\n margin-left: -10px;\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999999;\n border-left-color: rgba(0, 0, 0, 0.25);\n}\n.popover.left > .arrow:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: #fff;\n bottom: -10px;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n}\n.carousel-inner > .item {\n display: none;\n position: relative;\n -webkit-transition: 0.6s ease-in-out left;\n -o-transition: 0.6s ease-in-out left;\n transition: 0.6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform 0.6s ease-in-out;\n -moz-transition: -moz-transform 0.6s ease-in-out;\n -o-transition: -o-transform 0.6s ease-in-out;\n transition: transform 0.6s ease-in-out;\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n -moz-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: 15%;\n opacity: 0.5;\n filter: alpha(opacity=50);\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n}\n.carousel-control.right {\n left: auto;\n right: 0;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n}\n.carousel-control:hover,\n.carousel-control:focus {\n outline: 0;\n color: #fff;\n text-decoration: none;\n opacity: 0.9;\n filter: alpha(opacity=90);\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n margin-top: -10px;\n z-index: 5;\n display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n line-height: 1;\n font-family: serif;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid #fff;\n border-radius: 10px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n}\n.carousel-indicators .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: #fff;\n}\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -10px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -10px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -10px;\n }\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n content: \" \";\n display: table;\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*!\n * Bootstrap v3.3.7 (http://getbootstrap.com)\n * Copyright 2011-2016 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -webkit-text-size-adjust: 100%;\n -ms-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: 1px dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n margin: .67em 0;\n font-size: 2em;\n}\nmark {\n color: #000;\n background: #ff0;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\nsup {\n top: -.5em;\n}\nsub {\n bottom: -.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n height: 0;\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n margin: 0;\n font: inherit;\n color: inherit;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n -webkit-appearance: textfield;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n padding: .35em .625em .75em;\n margin: 0 2px;\n border: 1px solid #c0c0c0;\n}\nlegend {\n padding: 0;\n border: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-spacing: 0;\n border-collapse: collapse;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n color: #000 !important;\n text-shadow: none !important;\n background: transparent !important;\n -webkit-box-shadow: none !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: 'Glyphicons Halflings';\n\n src: url('../fonts/glyphicons-halflings-regular.eot');\n src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"\\002a\";\n}\n.glyphicon-plus:before {\n content: \"\\002b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270f\";\n}\n.glyphicon-glass:before {\n content: \"\\e001\";\n}\n.glyphicon-music:before {\n content: \"\\e002\";\n}\n.glyphicon-search:before {\n content: \"\\e003\";\n}\n.glyphicon-heart:before {\n content: \"\\e005\";\n}\n.glyphicon-star:before {\n content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\e007\";\n}\n.glyphicon-user:before {\n content: \"\\e008\";\n}\n.glyphicon-film:before {\n content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n content: \"\\e010\";\n}\n.glyphicon-th:before {\n content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n content: \"\\e012\";\n}\n.glyphicon-ok:before {\n content: \"\\e013\";\n}\n.glyphicon-remove:before {\n content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\e016\";\n}\n.glyphicon-off:before {\n content: \"\\e017\";\n}\n.glyphicon-signal:before {\n content: \"\\e018\";\n}\n.glyphicon-cog:before {\n content: \"\\e019\";\n}\n.glyphicon-trash:before {\n content: \"\\e020\";\n}\n.glyphicon-home:before {\n content: \"\\e021\";\n}\n.glyphicon-file:before {\n content: \"\\e022\";\n}\n.glyphicon-time:before {\n content: \"\\e023\";\n}\n.glyphicon-road:before {\n content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\e025\";\n}\n.glyphicon-download:before {\n content: \"\\e026\";\n}\n.glyphicon-upload:before {\n content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\e032\";\n}\n.glyphicon-lock:before {\n content: \"\\e033\";\n}\n.glyphicon-flag:before {\n content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n content: \"\\e040\";\n}\n.glyphicon-tag:before {\n content: \"\\e041\";\n}\n.glyphicon-tags:before {\n content: \"\\e042\";\n}\n.glyphicon-book:before {\n content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\e044\";\n}\n.glyphicon-print:before {\n content: \"\\e045\";\n}\n.glyphicon-camera:before {\n content: \"\\e046\";\n}\n.glyphicon-font:before {\n content: \"\\e047\";\n}\n.glyphicon-bold:before {\n content: \"\\e048\";\n}\n.glyphicon-italic:before {\n content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\e055\";\n}\n.glyphicon-list:before {\n content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\e059\";\n}\n.glyphicon-picture:before {\n content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n content: \"\\e063\";\n}\n.glyphicon-tint:before {\n content: \"\\e064\";\n}\n.glyphicon-edit:before {\n content: \"\\e065\";\n}\n.glyphicon-share:before {\n content: \"\\e066\";\n}\n.glyphicon-check:before {\n content: \"\\e067\";\n}\n.glyphicon-move:before {\n content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\e070\";\n}\n.glyphicon-backward:before {\n content: \"\\e071\";\n}\n.glyphicon-play:before {\n content: \"\\e072\";\n}\n.glyphicon-pause:before {\n content: \"\\e073\";\n}\n.glyphicon-stop:before {\n content: \"\\e074\";\n}\n.glyphicon-forward:before {\n content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\e077\";\n}\n.glyphicon-eject:before {\n content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\e101\";\n}\n.glyphicon-gift:before {\n content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n content: \"\\e103\";\n}\n.glyphicon-fire:before {\n content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\e107\";\n}\n.glyphicon-plane:before {\n content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n content: \"\\e109\";\n}\n.glyphicon-random:before {\n content: \"\\e110\";\n}\n.glyphicon-comment:before {\n content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\e122\";\n}\n.glyphicon-bell:before {\n content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\e134\";\n}\n.glyphicon-globe:before {\n content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n content: \"\\e137\";\n}\n.glyphicon-filter:before {\n content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\e143\";\n}\n.glyphicon-link:before {\n content: \"\\e144\";\n}\n.glyphicon-phone:before {\n content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\e146\";\n}\n.glyphicon-usd:before {\n content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n content: \"\\e149\";\n}\n.glyphicon-sort:before {\n content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\e157\";\n}\n.glyphicon-expand:before {\n content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n content: \"\\e161\";\n}\n.glyphicon-flash:before {\n content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n content: \"\\e164\";\n}\n.glyphicon-record:before {\n content: \"\\e165\";\n}\n.glyphicon-save:before {\n content: \"\\e166\";\n}\n.glyphicon-open:before {\n content: \"\\e167\";\n}\n.glyphicon-saved:before {\n content: \"\\e168\";\n}\n.glyphicon-import:before {\n content: \"\\e169\";\n}\n.glyphicon-export:before {\n content: \"\\e170\";\n}\n.glyphicon-send:before {\n content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\e179\";\n}\n.glyphicon-header:before {\n content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\e183\";\n}\n.glyphicon-tower:before {\n content: \"\\e184\";\n}\n.glyphicon-stats:before {\n content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\e200\";\n}\n.glyphicon-cd:before {\n content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n content: \"\\e204\";\n}\n.glyphicon-copy:before {\n content: \"\\e205\";\n}\n.glyphicon-paste:before {\n content: \"\\e206\";\n}\n.glyphicon-alert:before {\n content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\e210\";\n}\n.glyphicon-king:before {\n content: \"\\e211\";\n}\n.glyphicon-queen:before {\n content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n content: \"\\e214\";\n}\n.glyphicon-knight:before {\n content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\e216\";\n}\n.glyphicon-tent:before {\n content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n content: \"\\e218\";\n}\n.glyphicon-bed:before {\n content: \"\\e219\";\n}\n.glyphicon-apple:before {\n content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\e227\";\n}\n.glyphicon-btc:before {\n content: \"\\e227\";\n}\n.glyphicon-xbt:before {\n content: \"\\e227\";\n}\n.glyphicon-yen:before {\n content: \"\\00a5\";\n}\n.glyphicon-jpy:before {\n content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20bd\";\n}\n.glyphicon-rub:before {\n content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\e232\";\n}\n.glyphicon-education:before {\n content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\e237\";\n}\n.glyphicon-oil:before {\n content: \"\\e238\";\n}\n.glyphicon-grain:before {\n content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\e253\";\n}\n.glyphicon-console:before {\n content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\e260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n display: inline-block;\n max-width: 100%;\n height: auto;\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all .2s ease-in-out;\n -o-transition: all .2s ease-in-out;\n transition: all .2s ease-in-out;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: normal;\n line-height: 1;\n color: #777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n padding: .2em;\n background-color: #fcf8e3;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n margin-left: -5px;\n list-style: none;\n}\n.list-inline > li {\n display: inline-block;\n padding-right: 5px;\n padding-left: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n overflow: hidden;\n clear: left;\n text-align: right;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted #777;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n text-align: right;\n border-right: 5px solid #eee;\n border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: '\\00A0 \\2014';\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n color: #333;\n word-break: break-all;\n word-wrap: break-word;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n.row {\n margin-right: -15px;\n margin-left: -15px;\n}\n.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 {\n position: relative;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n.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 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull-4 {\n right: 33.33333333%;\n}\n.col-xs-pull-3 {\n right: 25%;\n}\n.col-xs-pull-2 {\n right: 16.66666667%;\n}\n.col-xs-pull-1 {\n right: 8.33333333%;\n}\n.col-xs-pull-0 {\n right: auto;\n}\n.col-xs-push-12 {\n left: 100%;\n}\n.col-xs-push-11 {\n left: 91.66666667%;\n}\n.col-xs-push-10 {\n left: 83.33333333%;\n}\n.col-xs-push-9 {\n left: 75%;\n}\n.col-xs-push-8 {\n left: 66.66666667%;\n}\n.col-xs-push-7 {\n left: 58.33333333%;\n}\n.col-xs-push-6 {\n left: 50%;\n}\n.col-xs-push-5 {\n left: 41.66666667%;\n}\n.col-xs-push-4 {\n left: 33.33333333%;\n}\n.col-xs-push-3 {\n left: 25%;\n}\n.col-xs-push-2 {\n left: 16.66666667%;\n}\n.col-xs-push-1 {\n left: 8.33333333%;\n}\n.col-xs-push-0 {\n left: auto;\n}\n.col-xs-offset-12 {\n margin-left: 100%;\n}\n.col-xs-offset-11 {\n margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n margin-left: 75%;\n}\n.col-xs-offset-8 {\n margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n margin-left: 50%;\n}\n.col-xs-offset-5 {\n margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n margin-left: 25%;\n}\n.col-xs-offset-2 {\n margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .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 {\n float: left;\n }\n .col-sm-12 {\n width: 100%;\n }\n .col-sm-11 {\n width: 91.66666667%;\n }\n .col-sm-10 {\n width: 83.33333333%;\n }\n .col-sm-9 {\n width: 75%;\n }\n .col-sm-8 {\n width: 66.66666667%;\n }\n .col-sm-7 {\n width: 58.33333333%;\n }\n .col-sm-6 {\n width: 50%;\n }\n .col-sm-5 {\n width: 41.66666667%;\n }\n .col-sm-4 {\n width: 33.33333333%;\n }\n .col-sm-3 {\n width: 25%;\n }\n .col-sm-2 {\n width: 16.66666667%;\n }\n .col-sm-1 {\n width: 8.33333333%;\n }\n .col-sm-pull-12 {\n right: 100%;\n }\n .col-sm-pull-11 {\n right: 91.66666667%;\n }\n .col-sm-pull-10 {\n right: 83.33333333%;\n }\n .col-sm-pull-9 {\n right: 75%;\n }\n .col-sm-pull-8 {\n right: 66.66666667%;\n }\n .col-sm-pull-7 {\n right: 58.33333333%;\n }\n .col-sm-pull-6 {\n right: 50%;\n }\n .col-sm-pull-5 {\n right: 41.66666667%;\n }\n .col-sm-pull-4 {\n right: 33.33333333%;\n }\n .col-sm-pull-3 {\n right: 25%;\n }\n .col-sm-pull-2 {\n right: 16.66666667%;\n }\n .col-sm-pull-1 {\n right: 8.33333333%;\n }\n .col-sm-pull-0 {\n right: auto;\n }\n .col-sm-push-12 {\n left: 100%;\n }\n .col-sm-push-11 {\n left: 91.66666667%;\n }\n .col-sm-push-10 {\n left: 83.33333333%;\n }\n .col-sm-push-9 {\n left: 75%;\n }\n .col-sm-push-8 {\n left: 66.66666667%;\n }\n .col-sm-push-7 {\n left: 58.33333333%;\n }\n .col-sm-push-6 {\n left: 50%;\n }\n .col-sm-push-5 {\n left: 41.66666667%;\n }\n .col-sm-push-4 {\n left: 33.33333333%;\n }\n .col-sm-push-3 {\n left: 25%;\n }\n .col-sm-push-2 {\n left: 16.66666667%;\n }\n .col-sm-push-1 {\n left: 8.33333333%;\n }\n .col-sm-push-0 {\n left: auto;\n }\n .col-sm-offset-12 {\n margin-left: 100%;\n }\n .col-sm-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-sm-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-sm-offset-9 {\n margin-left: 75%;\n }\n .col-sm-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-sm-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-sm-offset-6 {\n margin-left: 50%;\n }\n .col-sm-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-sm-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-sm-offset-3 {\n margin-left: 25%;\n }\n .col-sm-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-sm-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-sm-offset-0 {\n margin-left: 0;\n }\n}\n@media (min-width: 992px) {\n .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 {\n float: left;\n }\n .col-md-12 {\n width: 100%;\n }\n .col-md-11 {\n width: 91.66666667%;\n }\n .col-md-10 {\n width: 83.33333333%;\n }\n .col-md-9 {\n width: 75%;\n }\n .col-md-8 {\n width: 66.66666667%;\n }\n .col-md-7 {\n width: 58.33333333%;\n }\n .col-md-6 {\n width: 50%;\n }\n .col-md-5 {\n width: 41.66666667%;\n }\n .col-md-4 {\n width: 33.33333333%;\n }\n .col-md-3 {\n width: 25%;\n }\n .col-md-2 {\n width: 16.66666667%;\n }\n .col-md-1 {\n width: 8.33333333%;\n }\n .col-md-pull-12 {\n right: 100%;\n }\n .col-md-pull-11 {\n right: 91.66666667%;\n }\n .col-md-pull-10 {\n right: 83.33333333%;\n }\n .col-md-pull-9 {\n right: 75%;\n }\n .col-md-pull-8 {\n right: 66.66666667%;\n }\n .col-md-pull-7 {\n right: 58.33333333%;\n }\n .col-md-pull-6 {\n right: 50%;\n }\n .col-md-pull-5 {\n right: 41.66666667%;\n }\n .col-md-pull-4 {\n right: 33.33333333%;\n }\n .col-md-pull-3 {\n right: 25%;\n }\n .col-md-pull-2 {\n right: 16.66666667%;\n }\n .col-md-pull-1 {\n right: 8.33333333%;\n }\n .col-md-pull-0 {\n right: auto;\n }\n .col-md-push-12 {\n left: 100%;\n }\n .col-md-push-11 {\n left: 91.66666667%;\n }\n .col-md-push-10 {\n left: 83.33333333%;\n }\n .col-md-push-9 {\n left: 75%;\n }\n .col-md-push-8 {\n left: 66.66666667%;\n }\n .col-md-push-7 {\n left: 58.33333333%;\n }\n .col-md-push-6 {\n left: 50%;\n }\n .col-md-push-5 {\n left: 41.66666667%;\n }\n .col-md-push-4 {\n left: 33.33333333%;\n }\n .col-md-push-3 {\n left: 25%;\n }\n .col-md-push-2 {\n left: 16.66666667%;\n }\n .col-md-push-1 {\n left: 8.33333333%;\n }\n .col-md-push-0 {\n left: auto;\n }\n .col-md-offset-12 {\n margin-left: 100%;\n }\n .col-md-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-md-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-md-offset-9 {\n margin-left: 75%;\n }\n .col-md-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-md-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-md-offset-6 {\n margin-left: 50%;\n }\n .col-md-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-md-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-md-offset-3 {\n margin-left: 25%;\n }\n .col-md-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-md-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-md-offset-0 {\n margin-left: 0;\n }\n}\n@media (min-width: 1200px) {\n .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 {\n float: left;\n }\n .col-lg-12 {\n width: 100%;\n }\n .col-lg-11 {\n width: 91.66666667%;\n }\n .col-lg-10 {\n width: 83.33333333%;\n }\n .col-lg-9 {\n width: 75%;\n }\n .col-lg-8 {\n width: 66.66666667%;\n }\n .col-lg-7 {\n width: 58.33333333%;\n }\n .col-lg-6 {\n width: 50%;\n }\n .col-lg-5 {\n width: 41.66666667%;\n }\n .col-lg-4 {\n width: 33.33333333%;\n }\n .col-lg-3 {\n width: 25%;\n }\n .col-lg-2 {\n width: 16.66666667%;\n }\n .col-lg-1 {\n width: 8.33333333%;\n }\n .col-lg-pull-12 {\n right: 100%;\n }\n .col-lg-pull-11 {\n right: 91.66666667%;\n }\n .col-lg-pull-10 {\n right: 83.33333333%;\n }\n .col-lg-pull-9 {\n right: 75%;\n }\n .col-lg-pull-8 {\n right: 66.66666667%;\n }\n .col-lg-pull-7 {\n right: 58.33333333%;\n }\n .col-lg-pull-6 {\n right: 50%;\n }\n .col-lg-pull-5 {\n right: 41.66666667%;\n }\n .col-lg-pull-4 {\n right: 33.33333333%;\n }\n .col-lg-pull-3 {\n right: 25%;\n }\n .col-lg-pull-2 {\n right: 16.66666667%;\n }\n .col-lg-pull-1 {\n right: 8.33333333%;\n }\n .col-lg-pull-0 {\n right: auto;\n }\n .col-lg-push-12 {\n left: 100%;\n }\n .col-lg-push-11 {\n left: 91.66666667%;\n }\n .col-lg-push-10 {\n left: 83.33333333%;\n }\n .col-lg-push-9 {\n left: 75%;\n }\n .col-lg-push-8 {\n left: 66.66666667%;\n }\n .col-lg-push-7 {\n left: 58.33333333%;\n }\n .col-lg-push-6 {\n left: 50%;\n }\n .col-lg-push-5 {\n left: 41.66666667%;\n }\n .col-lg-push-4 {\n left: 33.33333333%;\n }\n .col-lg-push-3 {\n left: 25%;\n }\n .col-lg-push-2 {\n left: 16.66666667%;\n }\n .col-lg-push-1 {\n left: 8.33333333%;\n }\n .col-lg-push-0 {\n left: auto;\n }\n .col-lg-offset-12 {\n margin-left: 100%;\n }\n .col-lg-offset-11 {\n margin-left: 91.66666667%;\n }\n .col-lg-offset-10 {\n margin-left: 83.33333333%;\n }\n .col-lg-offset-9 {\n margin-left: 75%;\n }\n .col-lg-offset-8 {\n margin-left: 66.66666667%;\n }\n .col-lg-offset-7 {\n margin-left: 58.33333333%;\n }\n .col-lg-offset-6 {\n margin-left: 50%;\n }\n .col-lg-offset-5 {\n margin-left: 41.66666667%;\n }\n .col-lg-offset-4 {\n margin-left: 33.33333333%;\n }\n .col-lg-offset-3 {\n margin-left: 25%;\n }\n .col-lg-offset-2 {\n margin-left: 16.66666667%;\n }\n .col-lg-offset-1 {\n margin-left: 8.33333333%;\n }\n .col-lg-offset-0 {\n margin-left: 0;\n }\n}\ntable {\n background-color: transparent;\n}\ncaption {\n padding-top: 8px;\n padding-bottom: 8px;\n color: #777;\n text-align: left;\n}\nth {\n text-align: left;\n}\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n padding: 8px;\n line-height: 1.42857143;\n vertical-align: top;\n border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n border-top: 0;\n}\n.table > tbody + tbody {\n border-top: 2px solid #ddd;\n}\n.table .table {\n background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n padding: 5px;\n}\n.table-bordered {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n position: static;\n display: table-column;\n float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n position: static;\n display: table-cell;\n float: none;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n background-color: #ebcccc;\n}\n.table-responsive {\n min-height: .01%;\n overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n .table-responsive {\n width: 100%;\n margin-bottom: 15px;\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid #ddd;\n }\n .table-responsive > .table {\n margin-bottom: 0;\n }\n .table-responsive > .table > thead > tr > th,\n .table-responsive > .table > tbody > tr > th,\n .table-responsive > .table > tfoot > tr > th,\n .table-responsive > .table > thead > tr > td,\n .table-responsive > .table > tbody > tr > td,\n .table-responsive > .table > tfoot > tr > td {\n white-space: nowrap;\n }\n .table-responsive > .table-bordered {\n border: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:first-child,\n .table-responsive > .table-bordered > tbody > tr > th:first-child,\n .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n .table-responsive > .table-bordered > thead > tr > td:first-child,\n .table-responsive > .table-bordered > tbody > tr > td:first-child,\n .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n }\n .table-responsive > .table-bordered > thead > tr > th:last-child,\n .table-responsive > .table-bordered > tbody > tr > th:last-child,\n .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n .table-responsive > .table-bordered > thead > tr > td:last-child,\n .table-responsive > .table-bordered > tbody > tr > td:last-child,\n .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n }\n .table-responsive > .table-bordered > tbody > tr:last-child > th,\n .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n .table-responsive > .table-bordered > tbody > tr:last-child > td,\n .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n border-bottom: 0;\n }\n}\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: 20px;\n font-size: 21px;\n line-height: inherit;\n color: #333;\n border: 0;\n border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n display: inline-block;\n max-width: 100%;\n margin-bottom: 5px;\n font-weight: bold;\n}\ninput[type=\"search\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9;\n line-height: normal;\n}\ninput[type=\"file\"] {\n display: block;\n}\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\nselect[multiple],\nselect[size] {\n height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\noutput {\n display: block;\n padding-top: 7px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555;\n}\n.form-control {\n display: block;\n width: 100%;\n height: 34px;\n padding: 6px 12px;\n font-size: 14px;\n line-height: 1.42857143;\n color: #555;\n background-color: #fff;\n background-image: none;\n border: 1px solid #ccc;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n border-color: #66afe9;\n outline: 0;\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n}\n.form-control::-moz-placeholder {\n color: #999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999;\n}\n.form-control::-ms-expand {\n background-color: transparent;\n border: 0;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n background-color: #eee;\n opacity: 1;\n}\n.form-control[disabled],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n}\ntextarea.form-control {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"].form-control,\n input[type=\"time\"].form-control,\n input[type=\"datetime-local\"].form-control,\n input[type=\"month\"].form-control {\n line-height: 34px;\n }\n input[type=\"date\"].input-sm,\n input[type=\"time\"].input-sm,\n input[type=\"datetime-local\"].input-sm,\n input[type=\"month\"].input-sm,\n .input-group-sm input[type=\"date\"],\n .input-group-sm input[type=\"time\"],\n .input-group-sm input[type=\"datetime-local\"],\n .input-group-sm input[type=\"month\"] {\n line-height: 30px;\n }\n input[type=\"date\"].input-lg,\n input[type=\"time\"].input-lg,\n input[type=\"datetime-local\"].input-lg,\n input[type=\"month\"].input-lg,\n .input-group-lg input[type=\"date\"],\n .input-group-lg input[type=\"time\"],\n .input-group-lg input[type=\"datetime-local\"],\n .input-group-lg input[type=\"month\"] {\n line-height: 46px;\n }\n}\n.form-group {\n margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n min-height: 20px;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n position: absolute;\n margin-top: 4px \\9;\n margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n position: relative;\n display: inline-block;\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n vertical-align: middle;\n cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n margin-top: 0;\n margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n cursor: not-allowed;\n}\n.form-control-static {\n min-height: 34px;\n padding-top: 7px;\n padding-bottom: 7px;\n margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n padding-right: 0;\n padding-left: 0;\n}\n.input-sm {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-sm {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n height: auto;\n}\n.form-group-sm .form-control {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.form-group-sm select.form-control {\n height: 30px;\n line-height: 30px;\n}\n.form-group-sm textarea.form-control,\n.form-group-sm select[multiple].form-control {\n height: auto;\n}\n.form-group-sm .form-control-static {\n height: 30px;\n min-height: 32px;\n padding: 6px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.input-lg {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-lg {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n height: auto;\n}\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.form-group-lg select.form-control {\n height: 46px;\n line-height: 46px;\n}\n.form-group-lg textarea.form-control,\n.form-group-lg select[multiple].form-control {\n height: auto;\n}\n.form-group-lg .form-control-static {\n height: 46px;\n min-height: 38px;\n padding: 11px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.has-feedback {\n position: relative;\n}\n.has-feedback .form-control {\n padding-right: 42.5px;\n}\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n display: block;\n width: 34px;\n height: 34px;\n line-height: 34px;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback,\n.input-group-lg + .form-control-feedback,\n.form-group-lg .form-control + .form-control-feedback {\n width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .form-control-feedback,\n.input-group-sm + .form-control-feedback,\n.form-group-sm .form-control + .form-control-feedback {\n width: 30px;\n height: 30px;\n line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n color: #3c763d;\n}\n.has-success .form-control {\n border-color: #3c763d;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-success .form-control:focus {\n border-color: #2b542c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n color: #8a6d3b;\n}\n.has-warning .form-control {\n border-color: #8a6d3b;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-warning .form-control:focus {\n border-color: #66512c;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n color: #a94442;\n}\n.has-error .form-control {\n border-color: #a94442;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-error .form-control:focus {\n border-color: #843534;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n color: #a94442;\n background-color: #f2dede;\n border-color: #a94442;\n}\n.has-error .form-control-feedback {\n color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n top: 0;\n}\n.help-block {\n display: block;\n margin-top: 5px;\n margin-bottom: 10px;\n color: #737373;\n}\n@media (min-width: 768px) {\n .form-inline .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .form-inline .form-control-static {\n display: inline-block;\n }\n .form-inline .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .form-inline .input-group .input-group-addon,\n .form-inline .input-group .input-group-btn,\n .form-inline .input-group .form-control {\n width: auto;\n }\n .form-inline .input-group > .form-control {\n width: 100%;\n }\n .form-inline .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio,\n .form-inline .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .form-inline .radio label,\n .form-inline .checkbox label {\n padding-left: 0;\n }\n .form-inline .radio input[type=\"radio\"],\n .form-inline .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .form-inline .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n padding-top: 7px;\n margin-top: 0;\n margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n min-height: 27px;\n}\n.form-horizontal .form-group {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .control-label {\n padding-top: 7px;\n margin-bottom: 0;\n text-align: right;\n }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n right: 15px;\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-lg .control-label {\n padding-top: 11px;\n font-size: 18px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\n font-size: 12px;\n }\n}\n.btn {\n display: inline-block;\n padding: 6px 12px;\n margin-bottom: 0;\n font-size: 14px;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n -ms-touch-action: manipulation;\n touch-action: manipulation;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333;\n text-decoration: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n outline: 0;\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n cursor: not-allowed;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n opacity: .65;\n}\na.btn.disabled,\nfieldset[disabled] a.btn {\n pointer-events: none;\n}\n.btn-default {\n color: #333;\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default:focus,\n.btn-default.focus {\n color: #333;\n background-color: #e6e6e6;\n border-color: #8c8c8c;\n}\n.btn-default:hover {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active:hover,\n.btn-default.active:hover,\n.open > .dropdown-toggle.btn-default:hover,\n.btn-default:active:focus,\n.btn-default.active:focus,\n.open > .dropdown-toggle.btn-default:focus,\n.btn-default:active.focus,\n.btn-default.active.focus,\n.open > .dropdown-toggle.btn-default.focus {\n color: #333;\n background-color: #d4d4d4;\n border-color: #8c8c8c;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus {\n background-color: #fff;\n border-color: #ccc;\n}\n.btn-default .badge {\n color: #fff;\n background-color: #333;\n}\n.btn-primary {\n color: #fff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:focus,\n.btn-primary.focus {\n color: #fff;\n background-color: #286090;\n border-color: #122b40;\n}\n.btn-primary:hover {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #fff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active:hover,\n.btn-primary.active:hover,\n.open > .dropdown-toggle.btn-primary:hover,\n.btn-primary:active:focus,\n.btn-primary.active:focus,\n.open > .dropdown-toggle.btn-primary:focus,\n.btn-primary:active.focus,\n.btn-primary.active.focus,\n.open > .dropdown-toggle.btn-primary.focus {\n color: #fff;\n background-color: #204d74;\n border-color: #122b40;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.btn-success {\n color: #fff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:focus,\n.btn-success.focus {\n color: #fff;\n background-color: #449d44;\n border-color: #255625;\n}\n.btn-success:hover {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #fff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active:hover,\n.btn-success.active:hover,\n.open > .dropdown-toggle.btn-success:hover,\n.btn-success:active:focus,\n.btn-success.active:focus,\n.open > .dropdown-toggle.btn-success:focus,\n.btn-success:active.focus,\n.btn-success.active.focus,\n.open > .dropdown-toggle.btn-success.focus {\n color: #fff;\n background-color: #398439;\n border-color: #255625;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #fff;\n}\n.btn-info {\n color: #fff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:focus,\n.btn-info.focus {\n color: #fff;\n background-color: #31b0d5;\n border-color: #1b6d85;\n}\n.btn-info:hover {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #fff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active:hover,\n.btn-info.active:hover,\n.open > .dropdown-toggle.btn-info:hover,\n.btn-info:active:focus,\n.btn-info.active:focus,\n.open > .dropdown-toggle.btn-info:focus,\n.btn-info:active.focus,\n.btn-info.active.focus,\n.open > .dropdown-toggle.btn-info.focus {\n color: #fff;\n background-color: #269abc;\n border-color: #1b6d85;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #fff;\n}\n.btn-warning {\n color: #fff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:focus,\n.btn-warning.focus {\n color: #fff;\n background-color: #ec971f;\n border-color: #985f0d;\n}\n.btn-warning:hover {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #fff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active:hover,\n.btn-warning.active:hover,\n.open > .dropdown-toggle.btn-warning:hover,\n.btn-warning:active:focus,\n.btn-warning.active:focus,\n.open > .dropdown-toggle.btn-warning:focus,\n.btn-warning:active.focus,\n.btn-warning.active.focus,\n.open > .dropdown-toggle.btn-warning.focus {\n color: #fff;\n background-color: #d58512;\n border-color: #985f0d;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #fff;\n}\n.btn-danger {\n color: #fff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:focus,\n.btn-danger.focus {\n color: #fff;\n background-color: #c9302c;\n border-color: #761c19;\n}\n.btn-danger:hover {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #fff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active:hover,\n.btn-danger.active:hover,\n.open > .dropdown-toggle.btn-danger:hover,\n.btn-danger:active:focus,\n.btn-danger.active:focus,\n.open > .dropdown-toggle.btn-danger:focus,\n.btn-danger:active.focus,\n.btn-danger.active.focus,\n.open > .dropdown-toggle.btn-danger.focus {\n color: #fff;\n background-color: #ac2925;\n border-color: #761c19;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #fff;\n}\n.btn-link {\n font-weight: normal;\n color: #337ab7;\n border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n background-color: transparent;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n color: #23527c;\n text-decoration: underline;\n background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n color: #777;\n text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n padding: 1px 5px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\n.btn-block {\n display: block;\n width: 100%;\n}\n.btn-block + .btn-block {\n margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n width: 100%;\n}\n.fade {\n opacity: 0;\n -webkit-transition: opacity .15s linear;\n -o-transition: opacity .15s linear;\n transition: opacity .15s linear;\n}\n.fade.in {\n opacity: 1;\n}\n.collapse {\n display: none;\n}\n.collapse.in {\n display: block;\n}\ntr.collapse.in {\n display: table-row;\n}\ntbody.collapse.in {\n display: table-row-group;\n}\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n -webkit-transition-timing-function: ease;\n -o-transition-timing-function: ease;\n transition-timing-function: ease;\n -webkit-transition-duration: .35s;\n -o-transition-duration: .35s;\n transition-duration: .35s;\n -webkit-transition-property: height, visibility;\n -o-transition-property: height, visibility;\n transition-property: height, visibility;\n}\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: 4px dashed;\n border-top: 4px solid \\9;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n position: relative;\n}\n.dropdown-toggle:focus {\n outline: 0;\n}\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: 1000;\n display: none;\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0;\n font-size: 14px;\n text-align: left;\n list-style: none;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, .15);\n border-radius: 4px;\n -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n}\n.dropdown-menu.pull-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu .divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: 1.42857143;\n color: #333;\n white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n color: #262626;\n text-decoration: none;\n background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n color: #fff;\n text-decoration: none;\n background-color: #337ab7;\n outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n color: #777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n background-image: none;\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n display: block;\n}\n.open > a {\n outline: 0;\n}\n.dropdown-menu-right {\n right: 0;\n left: auto;\n}\n.dropdown-menu-left {\n right: auto;\n left: 0;\n}\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: 12px;\n line-height: 1.42857143;\n color: #777;\n white-space: nowrap;\n}\n.dropdown-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 990;\n}\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n content: \"\";\n border-top: 0;\n border-bottom: 4px dashed;\n border-bottom: 4px solid \\9;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n .navbar-right .dropdown-menu {\n right: 0;\n left: auto;\n }\n .navbar-right .dropdown-menu-left {\n right: auto;\n left: 0;\n }\n}\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n position: relative;\n float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n margin-left: -1px;\n}\n.btn-toolbar {\n margin-left: -5px;\n}\n.btn-toolbar .btn,\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n.btn-group > .btn:first-child {\n margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n padding-right: 8px;\n padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-right: 12px;\n padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn .caret {\n margin-left: 0;\n}\n.btn-lg .caret {\n border-width: 5px 5px 0;\n border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n display: table-cell;\n float: none;\n width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0, 0, 0, 0);\n pointer-events: none;\n}\n.input-group {\n position: relative;\n display: table;\n border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n float: none;\n padding-right: 0;\n padding-left: 0;\n}\n.input-group .form-control {\n position: relative;\n z-index: 2;\n float: left;\n width: 100%;\n margin-bottom: 0;\n}\n.input-group .form-control:focus {\n z-index: 3;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle;\n}\n.input-group-addon {\n padding: 6px 12px;\n font-size: 14px;\n font-weight: normal;\n line-height: 1;\n color: #555;\n text-align: center;\n background-color: #eee;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\n.input-group-addon.input-sm {\n padding: 5px 10px;\n font-size: 12px;\n border-radius: 3px;\n}\n.input-group-addon.input-lg {\n padding: 10px 16px;\n font-size: 18px;\n border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n.input-group-btn {\n position: relative;\n font-size: 0;\n white-space: nowrap;\n}\n.input-group-btn > .btn {\n position: relative;\n}\n.input-group-btn > .btn + .btn {\n margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n z-index: 2;\n margin-left: -1px;\n}\n.nav {\n padding-left: 0;\n margin-bottom: 0;\n list-style: none;\n}\n.nav > li {\n position: relative;\n display: block;\n}\n.nav > li > a {\n position: relative;\n display: block;\n padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n text-decoration: none;\n background-color: #eee;\n}\n.nav > li.disabled > a {\n color: #777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n color: #777;\n text-decoration: none;\n cursor: not-allowed;\n background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n background-color: #eee;\n border-color: #337ab7;\n}\n.nav .nav-divider {\n height: 1px;\n margin: 9px 0;\n overflow: hidden;\n background-color: #e5e5e5;\n}\n.nav > li > a > img {\n max-width: none;\n}\n.nav-tabs {\n border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n float: left;\n margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n margin-right: 2px;\n line-height: 1.42857143;\n border: 1px solid transparent;\n border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n border-color: #eee #eee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n color: #555;\n cursor: default;\n background-color: #fff;\n border: 1px solid #ddd;\n border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n width: 100%;\n border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n float: none;\n}\n.nav-tabs.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-tabs.nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs.nav-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs.nav-justified > .active > a,\n .nav-tabs.nav-justified > .active > a:hover,\n .nav-tabs.nav-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.nav-pills > li {\n float: left;\n}\n.nav-pills > li > a {\n border-radius: 4px;\n}\n.nav-pills > li + li {\n margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n color: #fff;\n background-color: #337ab7;\n}\n.nav-stacked > li {\n float: none;\n}\n.nav-stacked > li + li {\n margin-top: 2px;\n margin-left: 0;\n}\n.nav-justified {\n width: 100%;\n}\n.nav-justified > li {\n float: none;\n}\n.nav-justified > li > a {\n margin-bottom: 5px;\n text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n}\n@media (min-width: 768px) {\n .nav-justified > li {\n display: table-cell;\n width: 1%;\n }\n .nav-justified > li > a {\n margin-bottom: 0;\n }\n}\n.nav-tabs-justified {\n border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n margin-right: 0;\n border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #ddd;\n border-radius: 4px 4px 0 0;\n }\n .nav-tabs-justified > .active > a,\n .nav-tabs-justified > .active > a:hover,\n .nav-tabs-justified > .active > a:focus {\n border-bottom-color: #fff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n}\n.tab-content > .active {\n display: block;\n}\n.nav-tabs .dropdown-menu {\n margin-top: -1px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.navbar {\n position: relative;\n min-height: 50px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n .navbar {\n border-radius: 4px;\n }\n}\n@media (min-width: 768px) {\n .navbar-header {\n float: left;\n }\n}\n.navbar-collapse {\n padding-right: 15px;\n padding-left: 15px;\n overflow-x: visible;\n -webkit-overflow-scrolling: touch;\n border-top: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n}\n.navbar-collapse.in {\n overflow-y: auto;\n}\n@media (min-width: 768px) {\n .navbar-collapse {\n width: auto;\n border-top: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .navbar-collapse.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0;\n overflow: visible !important;\n }\n .navbar-collapse.in {\n overflow-y: visible;\n }\n .navbar-fixed-top .navbar-collapse,\n .navbar-static-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n padding-right: 0;\n padding-left: 0;\n }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n .navbar-fixed-top .navbar-collapse,\n .navbar-fixed-bottom .navbar-collapse {\n max-height: 200px;\n }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n margin-right: -15px;\n margin-left: -15px;\n}\n@media (min-width: 768px) {\n .container > .navbar-header,\n .container-fluid > .navbar-header,\n .container > .navbar-collapse,\n .container-fluid > .navbar-collapse {\n margin-right: 0;\n margin-left: 0;\n }\n}\n.navbar-static-top {\n z-index: 1000;\n border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n .navbar-static-top {\n border-radius: 0;\n }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: 1030;\n}\n@media (min-width: 768px) {\n .navbar-fixed-top,\n .navbar-fixed-bottom {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0;\n border-width: 1px 0 0;\n}\n.navbar-brand {\n float: left;\n height: 50px;\n padding: 15px 15px;\n font-size: 18px;\n line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n text-decoration: none;\n}\n.navbar-brand > img {\n display: block;\n}\n@media (min-width: 768px) {\n .navbar > .container .navbar-brand,\n .navbar > .container-fluid .navbar-brand {\n margin-left: -15px;\n }\n}\n.navbar-toggle {\n position: relative;\n float: right;\n padding: 9px 10px;\n margin-top: 8px;\n margin-right: 15px;\n margin-bottom: 8px;\n background-color: transparent;\n background-image: none;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.navbar-toggle:focus {\n outline: 0;\n}\n.navbar-toggle .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n margin-top: 4px;\n}\n@media (min-width: 768px) {\n .navbar-toggle {\n display: none;\n }\n}\n.navbar-nav {\n margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: 20px;\n}\n@media (max-width: 767px) {\n .navbar-nav .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n .navbar-nav .open .dropdown-menu > li > a,\n .navbar-nav .open .dropdown-menu .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n .navbar-nav .open .dropdown-menu > li > a {\n line-height: 20px;\n }\n .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-nav .open .dropdown-menu > li > a:focus {\n background-image: none;\n }\n}\n@media (min-width: 768px) {\n .navbar-nav {\n float: left;\n margin: 0;\n }\n .navbar-nav > li {\n float: left;\n }\n .navbar-nav > li > a {\n padding-top: 15px;\n padding-bottom: 15px;\n }\n}\n.navbar-form {\n padding: 10px 15px;\n margin-top: 8px;\n margin-right: -15px;\n margin-bottom: 8px;\n margin-left: -15px;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n}\n@media (min-width: 768px) {\n .navbar-form .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .form-control {\n display: inline-block;\n width: auto;\n vertical-align: middle;\n }\n .navbar-form .form-control-static {\n display: inline-block;\n }\n .navbar-form .input-group {\n display: inline-table;\n vertical-align: middle;\n }\n .navbar-form .input-group .input-group-addon,\n .navbar-form .input-group .input-group-btn,\n .navbar-form .input-group .form-control {\n width: auto;\n }\n .navbar-form .input-group > .form-control {\n width: 100%;\n }\n .navbar-form .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio,\n .navbar-form .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n }\n .navbar-form .radio label,\n .navbar-form .checkbox label {\n padding-left: 0;\n }\n .navbar-form .radio input[type=\"radio\"],\n .navbar-form .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n .navbar-form .has-feedback .form-control-feedback {\n top: 0;\n }\n}\n@media (max-width: 767px) {\n .navbar-form .form-group {\n margin-bottom: 5px;\n }\n .navbar-form .form-group:last-child {\n margin-bottom: 0;\n }\n}\n@media (min-width: 768px) {\n .navbar-form {\n width: auto;\n padding-top: 0;\n padding-bottom: 0;\n margin-right: 0;\n margin-left: 0;\n border: 0;\n -webkit-box-shadow: none;\n box-shadow: none;\n }\n}\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.navbar-btn {\n margin-top: 8px;\n margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n margin-top: 10px;\n margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n margin-top: 14px;\n margin-bottom: 14px;\n}\n.navbar-text {\n margin-top: 15px;\n margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n .navbar-text {\n float: left;\n margin-right: 15px;\n margin-left: 15px;\n }\n}\n@media (min-width: 768px) {\n .navbar-left {\n float: left !important;\n }\n .navbar-right {\n float: right !important;\n margin-right: -15px;\n }\n .navbar-right ~ .navbar-right {\n margin-right: 0;\n }\n}\n.navbar-default {\n background-color: #f8f8f8;\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n color: #5e5e5e;\n background-color: transparent;\n}\n.navbar-default .navbar-text {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333;\n background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n color: #555;\n background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #333;\n background-color: transparent;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #555;\n background-color: #e7e7e7;\n }\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #ccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777;\n}\n.navbar-default .navbar-link:hover {\n color: #333;\n}\n.navbar-default .btn-link {\n color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n color: #ccc;\n}\n.navbar-inverse {\n background-color: #222;\n border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n color: #fff;\n background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n color: #fff;\n background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n color: #fff;\n background-color: #080808;\n}\n@media (max-width: 767px) {\n .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n border-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n color: #9d9d9d;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n color: #fff;\n background-color: transparent;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-color: #080808;\n }\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n color: #444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #fff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n color: #444;\n}\n.breadcrumb {\n padding: 8px 15px;\n margin-bottom: 20px;\n list-style: none;\n background-color: #f5f5f5;\n border-radius: 4px;\n}\n.breadcrumb > li {\n display: inline-block;\n}\n.breadcrumb > li + li:before {\n padding: 0 5px;\n color: #ccc;\n content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n color: #777;\n}\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: 20px 0;\n border-radius: 4px;\n}\n.pagination > li {\n display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n position: relative;\n float: left;\n padding: 6px 12px;\n margin-left: -1px;\n line-height: 1.42857143;\n color: #337ab7;\n text-decoration: none;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n margin-left: 0;\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n z-index: 2;\n color: #23527c;\n background-color: #eee;\n border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n z-index: 3;\n color: #fff;\n cursor: default;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n color: #777;\n cursor: not-allowed;\n background-color: #fff;\n border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.3333333;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n border-top-left-radius: 6px;\n border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n border-top-right-radius: 6px;\n border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n padding: 5px 10px;\n font-size: 12px;\n line-height: 1.5;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n border-top-left-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n border-top-right-radius: 3px;\n border-bottom-right-radius: 3px;\n}\n.pager {\n padding-left: 0;\n margin: 20px 0;\n text-align: center;\n list-style: none;\n}\n.pager li {\n display: inline;\n}\n.pager li > a,\n.pager li > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n text-decoration: none;\n background-color: #eee;\n}\n.pager .next > a,\n.pager .next > span {\n float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n color: #777;\n cursor: not-allowed;\n background-color: #fff;\n}\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.label:empty {\n display: none;\n}\n.btn .label {\n position: relative;\n top: -1px;\n}\n.label-default {\n background-color: #777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n background-color: #5e5e5e;\n}\n.label-primary {\n background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n background-color: #286090;\n}\n.label-success {\n background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n background-color: #449d44;\n}\n.label-info {\n background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n background-color: #31b0d5;\n}\n.label-warning {\n background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n background-color: #ec971f;\n}\n.label-danger {\n background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n background-color: #c9302c;\n}\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: 12px;\n font-weight: bold;\n line-height: 1;\n color: #fff;\n text-align: center;\n white-space: nowrap;\n vertical-align: middle;\n background-color: #777;\n border-radius: 10px;\n}\n.badge:empty {\n display: none;\n}\n.btn .badge {\n position: relative;\n top: -1px;\n}\n.btn-xs .badge,\n.btn-group-xs > .btn .badge {\n top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #fff;\n text-decoration: none;\n cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.list-group-item > .badge {\n float: right;\n}\n.list-group-item > .badge + .badge {\n margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n margin-left: 3px;\n}\n.jumbotron {\n padding-top: 30px;\n padding-bottom: 30px;\n margin-bottom: 30px;\n color: inherit;\n background-color: #eee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n color: inherit;\n}\n.jumbotron p {\n margin-bottom: 15px;\n font-size: 21px;\n font-weight: 200;\n}\n.jumbotron > hr {\n border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n padding-right: 15px;\n padding-left: 15px;\n border-radius: 6px;\n}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding-top: 48px;\n padding-bottom: 48px;\n }\n .container .jumbotron,\n .container-fluid .jumbotron {\n padding-right: 60px;\n padding-left: 60px;\n }\n .jumbotron h1,\n .jumbotron .h1 {\n font-size: 63px;\n }\n}\n.thumbnail {\n display: block;\n padding: 4px;\n margin-bottom: 20px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: border .2s ease-in-out;\n -o-transition: border .2s ease-in-out;\n transition: border .2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n margin-right: auto;\n margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n border-color: #337ab7;\n}\n.thumbnail .caption {\n padding: 9px;\n color: #333;\n}\n.alert {\n padding: 15px;\n margin-bottom: 20px;\n border: 1px solid transparent;\n border-radius: 4px;\n}\n.alert h4 {\n margin-top: 0;\n color: inherit;\n}\n.alert .alert-link {\n font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n margin-bottom: 0;\n}\n.alert > p + p {\n margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n}\n.alert-success {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.alert-success hr {\n border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n color: #2b542c;\n}\n.alert-info {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.alert-info hr {\n border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n color: #245269;\n}\n.alert-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.alert-warning hr {\n border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n color: #66512c;\n}\n.alert-danger {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.alert-danger hr {\n border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@-o-keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n@keyframes progress-bar-stripes {\n from {\n background-position: 40px 0;\n }\n to {\n background-position: 0 0;\n }\n}\n.progress {\n height: 20px;\n margin-bottom: 20px;\n overflow: hidden;\n background-color: #f5f5f5;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n}\n.progress-bar {\n float: left;\n width: 0;\n height: 100%;\n font-size: 12px;\n line-height: 20px;\n color: #fff;\n text-align: center;\n background-color: #337ab7;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n -webkit-transition: width .6s ease;\n -o-transition: width .6s ease;\n transition: width .6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n -webkit-background-size: 40px 40px;\n background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n -webkit-animation: progress-bar-stripes 2s linear infinite;\n -o-animation: progress-bar-stripes 2s linear infinite;\n animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.media {\n margin-top: 15px;\n}\n.media:first-child {\n margin-top: 0;\n}\n.media,\n.media-body {\n overflow: hidden;\n zoom: 1;\n}\n.media-body {\n width: 10000px;\n}\n.media-object {\n display: block;\n}\n.media-object.img-thumbnail {\n max-width: none;\n}\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n.media-middle {\n vertical-align: middle;\n}\n.media-bottom {\n vertical-align: bottom;\n}\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n.list-group {\n padding-left: 0;\n margin-bottom: 20px;\n}\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n margin-bottom: -1px;\n background-color: #fff;\n border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n margin-bottom: 0;\n border-bottom-right-radius: 4px;\n border-bottom-left-radius: 4px;\n}\na.list-group-item,\nbutton.list-group-item {\n color: #555;\n}\na.list-group-item .list-group-item-heading,\nbutton.list-group-item .list-group-item-heading {\n color: #333;\n}\na.list-group-item:hover,\nbutton.list-group-item:hover,\na.list-group-item:focus,\nbutton.list-group-item:focus {\n color: #555;\n text-decoration: none;\n background-color: #f5f5f5;\n}\nbutton.list-group-item {\n width: 100%;\n text-align: left;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n color: #777;\n cursor: not-allowed;\n background-color: #eee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n color: #777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n z-index: 2;\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n color: #c7ddef;\n}\n.list-group-item-success {\n color: #3c763d;\n background-color: #dff0d8;\n}\na.list-group-item-success,\nbutton.list-group-item-success {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading,\nbutton.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\nbutton.list-group-item-success:hover,\na.list-group-item-success:focus,\nbutton.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\nbutton.list-group-item-success.active,\na.list-group-item-success.active:hover,\nbutton.list-group-item-success.active:hover,\na.list-group-item-success.active:focus,\nbutton.list-group-item-success.active:focus {\n color: #fff;\n background-color: #3c763d;\n border-color: #3c763d;\n}\n.list-group-item-info {\n color: #31708f;\n background-color: #d9edf7;\n}\na.list-group-item-info,\nbutton.list-group-item-info {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading,\nbutton.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\nbutton.list-group-item-info:hover,\na.list-group-item-info:focus,\nbutton.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\nbutton.list-group-item-info.active,\na.list-group-item-info.active:hover,\nbutton.list-group-item-info.active:hover,\na.list-group-item-info.active:focus,\nbutton.list-group-item-info.active:focus {\n color: #fff;\n background-color: #31708f;\n border-color: #31708f;\n}\n.list-group-item-warning {\n color: #8a6d3b;\n background-color: #fcf8e3;\n}\na.list-group-item-warning,\nbutton.list-group-item-warning {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading,\nbutton.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\nbutton.list-group-item-warning:hover,\na.list-group-item-warning:focus,\nbutton.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\nbutton.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\nbutton.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus,\nbutton.list-group-item-warning.active:focus {\n color: #fff;\n background-color: #8a6d3b;\n border-color: #8a6d3b;\n}\n.list-group-item-danger {\n color: #a94442;\n background-color: #f2dede;\n}\na.list-group-item-danger,\nbutton.list-group-item-danger {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading,\nbutton.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\nbutton.list-group-item-danger:hover,\na.list-group-item-danger:focus,\nbutton.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\nbutton.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\nbutton.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus,\nbutton.list-group-item-danger.active:focus {\n color: #fff;\n background-color: #a94442;\n border-color: #a94442;\n}\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n.panel {\n margin-bottom: 20px;\n background-color: #fff;\n border: 1px solid transparent;\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n}\n.panel-body {\n padding: 15px;\n}\n.panel-heading {\n padding: 10px 15px;\n border-bottom: 1px solid transparent;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n color: inherit;\n}\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: 16px;\n color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n border-top: 0;\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n border-bottom: 0;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n border-top-width: 0;\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n padding-right: 15px;\n padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n border-bottom: 0;\n}\n.panel > .table-responsive {\n margin-bottom: 0;\n border: 0;\n}\n.panel-group {\n margin-bottom: 20px;\n}\n.panel-group .panel {\n margin-bottom: 0;\n border-radius: 4px;\n}\n.panel-group .panel + .panel {\n margin-top: 5px;\n}\n.panel-group .panel-heading {\n border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n border-bottom: 1px solid #ddd;\n}\n.panel-default {\n border-color: #ddd;\n}\n.panel-default > .panel-heading {\n color: #333;\n background-color: #f5f5f5;\n border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n color: #f5f5f5;\n background-color: #333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #fff;\n background-color: #337ab7;\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n color: #337ab7;\n background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #337ab7;\n}\n.panel-success {\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n color: #3c763d;\n background-color: #dff0d8;\n border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n color: #dff0d8;\n background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #d6e9c6;\n}\n.panel-info {\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n color: #31708f;\n background-color: #d9edf7;\n border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n color: #d9edf7;\n background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #bce8f1;\n}\n.panel-warning {\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n color: #8a6d3b;\n background-color: #fcf8e3;\n border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n color: #fcf8e3;\n background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #faebcc;\n}\n.panel-danger {\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n color: #a94442;\n background-color: #f2dede;\n border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n color: #f2dede;\n background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n height: 100%;\n border: 0;\n}\n.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive-4by3 {\n padding-bottom: 75%;\n}\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: #f5f5f5;\n border: 1px solid #e3e3e3;\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n}\n.well blockquote {\n border-color: #ddd;\n border-color: rgba(0, 0, 0, .15);\n}\n.well-lg {\n padding: 24px;\n border-radius: 6px;\n}\n.well-sm {\n padding: 9px;\n border-radius: 3px;\n}\n.close {\n float: right;\n font-size: 21px;\n font-weight: bold;\n line-height: 1;\n color: #000;\n text-shadow: 0 1px 0 #fff;\n filter: alpha(opacity=20);\n opacity: .2;\n}\n.close:hover,\n.close:focus {\n color: #000;\n text-decoration: none;\n cursor: pointer;\n filter: alpha(opacity=50);\n opacity: .5;\n}\nbutton.close {\n -webkit-appearance: none;\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n}\n.modal-open {\n overflow: hidden;\n}\n.modal {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1050;\n display: none;\n overflow: hidden;\n -webkit-overflow-scrolling: touch;\n outline: 0;\n}\n.modal.fade .modal-dialog {\n -webkit-transition: -webkit-transform .3s ease-out;\n -o-transition: -o-transform .3s ease-out;\n transition: transform .3s ease-out;\n -webkit-transform: translate(0, -25%);\n -ms-transform: translate(0, -25%);\n -o-transform: translate(0, -25%);\n transform: translate(0, -25%);\n}\n.modal.in .modal-dialog {\n -webkit-transform: translate(0, 0);\n -ms-transform: translate(0, 0);\n -o-transform: translate(0, 0);\n transform: translate(0, 0);\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n.modal-content {\n position: relative;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #999;\n border: 1px solid rgba(0, 0, 0, .2);\n border-radius: 6px;\n outline: 0;\n -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n}\n.modal-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1040;\n background-color: #000;\n}\n.modal-backdrop.fade {\n filter: alpha(opacity=0);\n opacity: 0;\n}\n.modal-backdrop.in {\n filter: alpha(opacity=50);\n opacity: .5;\n}\n.modal-header {\n padding: 15px;\n border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n margin-top: -2px;\n}\n.modal-title {\n margin: 0;\n line-height: 1.42857143;\n}\n.modal-body {\n position: relative;\n padding: 15px;\n}\n.modal-footer {\n padding: 15px;\n text-align: right;\n border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n margin-bottom: 0;\n margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n margin-left: 0;\n}\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n@media (min-width: 768px) {\n .modal-dialog {\n width: 600px;\n margin: 30px auto;\n }\n .modal-content {\n -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n }\n .modal-sm {\n width: 300px;\n }\n}\n@media (min-width: 992px) {\n .modal-lg {\n width: 900px;\n }\n}\n.tooltip {\n position: absolute;\n z-index: 1070;\n display: block;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 12px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n white-space: normal;\n filter: alpha(opacity=0);\n opacity: 0;\n\n line-break: auto;\n}\n.tooltip.in {\n filter: alpha(opacity=90);\n opacity: .9;\n}\n.tooltip.top {\n padding: 5px 0;\n margin-top: -3px;\n}\n.tooltip.right {\n padding: 0 5px;\n margin-left: 3px;\n}\n.tooltip.bottom {\n padding: 5px 0;\n margin-top: 3px;\n}\n.tooltip.left {\n padding: 0 5px;\n margin-left: -3px;\n}\n.tooltip-inner {\n max-width: 200px;\n padding: 3px 8px;\n color: #fff;\n text-align: center;\n background-color: #000;\n border-radius: 4px;\n}\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n right: 5px;\n bottom: 0;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n bottom: 0;\n left: 5px;\n margin-bottom: -5px;\n border-width: 5px 5px 0;\n border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -5px;\n border-width: 5px 5px 5px 0;\n border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -5px;\n border-width: 5px 0 5px 5px;\n border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n top: 0;\n right: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n top: 0;\n left: 5px;\n margin-top: -5px;\n border-width: 0 5px 5px;\n border-bottom-color: #000;\n}\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 1060;\n display: none;\n max-width: 276px;\n padding: 1px;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.42857143;\n text-align: left;\n text-align: start;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n letter-spacing: normal;\n word-break: normal;\n word-spacing: normal;\n word-wrap: normal;\n white-space: normal;\n background-color: #fff;\n -webkit-background-clip: padding-box;\n background-clip: padding-box;\n border: 1px solid #ccc;\n border: 1px solid rgba(0, 0, 0, .2);\n border-radius: 6px;\n -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n\n line-break: auto;\n}\n.popover.top {\n margin-top: -10px;\n}\n.popover.right {\n margin-left: 10px;\n}\n.popover.bottom {\n margin-top: 10px;\n}\n.popover.left {\n margin-left: -10px;\n}\n.popover-title {\n padding: 8px 14px;\n margin: 0;\n font-size: 14px;\n background-color: #f7f7f7;\n border-bottom: 1px solid #ebebeb;\n border-radius: 5px 5px 0 0;\n}\n.popover-content {\n padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n.popover > .arrow {\n border-width: 11px;\n}\n.popover > .arrow:after {\n content: \"\";\n border-width: 10px;\n}\n.popover.top > .arrow {\n bottom: -11px;\n left: 50%;\n margin-left: -11px;\n border-top-color: #999;\n border-top-color: rgba(0, 0, 0, .25);\n border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n bottom: 1px;\n margin-left: -10px;\n content: \" \";\n border-top-color: #fff;\n border-bottom-width: 0;\n}\n.popover.right > .arrow {\n top: 50%;\n left: -11px;\n margin-top: -11px;\n border-right-color: #999;\n border-right-color: rgba(0, 0, 0, .25);\n border-left-width: 0;\n}\n.popover.right > .arrow:after {\n bottom: -10px;\n left: 1px;\n content: \" \";\n border-right-color: #fff;\n border-left-width: 0;\n}\n.popover.bottom > .arrow {\n top: -11px;\n left: 50%;\n margin-left: -11px;\n border-top-width: 0;\n border-bottom-color: #999;\n border-bottom-color: rgba(0, 0, 0, .25);\n}\n.popover.bottom > .arrow:after {\n top: 1px;\n margin-left: -10px;\n content: \" \";\n border-top-width: 0;\n border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n top: 50%;\n right: -11px;\n margin-top: -11px;\n border-right-width: 0;\n border-left-color: #999;\n border-left-color: rgba(0, 0, 0, .25);\n}\n.popover.left > .arrow:after {\n right: 1px;\n bottom: -10px;\n content: \" \";\n border-right-width: 0;\n border-left-color: #fff;\n}\n.carousel {\n position: relative;\n}\n.carousel-inner {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n.carousel-inner > .item {\n position: relative;\n display: none;\n -webkit-transition: .6s ease-in-out left;\n -o-transition: .6s ease-in-out left;\n transition: .6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n .carousel-inner > .item {\n -webkit-transition: -webkit-transform .6s ease-in-out;\n -o-transition: -o-transform .6s ease-in-out;\n transition: transform .6s ease-in-out;\n\n -webkit-backface-visibility: hidden;\n backface-visibility: hidden;\n -webkit-perspective: 1000px;\n perspective: 1000px;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n left: 0;\n -webkit-transform: translate3d(100%, 0, 0);\n transform: translate3d(100%, 0, 0);\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\n left: 0;\n -webkit-transform: translate3d(-100%, 0, 0);\n transform: translate3d(-100%, 0, 0);\n }\n .carousel-inner > .item.next.left,\n .carousel-inner > .item.prev.right,\n .carousel-inner > .item.active {\n left: 0;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n display: block;\n}\n.carousel-inner > .active {\n left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n}\n.carousel-inner > .next {\n left: 100%;\n}\n.carousel-inner > .prev {\n left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n left: 0;\n}\n.carousel-inner > .active.left {\n left: -100%;\n}\n.carousel-inner > .active.right {\n left: 100%;\n}\n.carousel-control {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 15%;\n font-size: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n background-color: rgba(0, 0, 0, 0);\n filter: alpha(opacity=50);\n opacity: .5;\n}\n.carousel-control.left {\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));\n background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n background-repeat: repeat-x;\n}\n.carousel-control.right {\n right: 0;\n left: auto;\n background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));\n background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n color: #fff;\n text-decoration: none;\n filter: alpha(opacity=90);\n outline: 0;\n opacity: .9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n margin-top: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n width: 20px;\n height: 20px;\n font-family: serif;\n line-height: 1;\n}\n.carousel-control .icon-prev:before {\n content: '\\2039';\n}\n.carousel-control .icon-next:before {\n content: '\\203a';\n}\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n padding-left: 0;\n margin-left: -30%;\n text-align: center;\n list-style: none;\n}\n.carousel-indicators li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n cursor: pointer;\n background-color: #000 \\9;\n background-color: rgba(0, 0, 0, 0);\n border: 1px solid #fff;\n border-radius: 10px;\n}\n.carousel-indicators .active {\n width: 12px;\n height: 12px;\n margin: 0;\n background-color: #fff;\n}\n.carousel-caption {\n position: absolute;\n right: 15%;\n bottom: 20px;\n left: 15%;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: #fff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n}\n.carousel-caption .btn {\n text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-prev,\n .carousel-control .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -10px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -10px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -10px;\n }\n .carousel-caption {\n right: 20%;\n left: 20%;\n padding-bottom: 30px;\n }\n .carousel-indicators {\n bottom: 20px;\n }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-header:before,\n.modal-header:after,\n.modal-footer:before,\n.modal-footer:after {\n display: table;\n content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-header:after,\n.modal-footer:after {\n clear: both;\n}\n.center-block {\n display: block;\n margin-right: auto;\n margin-left: auto;\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n font: 0/0 a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n.hidden {\n display: none !important;\n}\n.affix {\n position: fixed;\n}\n@-ms-viewport {\n width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n@media (max-width: 767px) {\n .visible-xs {\n display: block !important;\n }\n table.visible-xs {\n display: table !important;\n }\n tr.visible-xs {\n display: table-row !important;\n }\n th.visible-xs,\n td.visible-xs {\n display: table-cell !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-block {\n display: block !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline {\n display: inline !important;\n }\n}\n@media (max-width: 767px) {\n .visible-xs-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm {\n display: block !important;\n }\n table.visible-sm {\n display: table !important;\n }\n tr.visible-sm {\n display: table-row !important;\n }\n th.visible-sm,\n td.visible-sm {\n display: table-cell !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-block {\n display: block !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline {\n display: inline !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .visible-sm-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md {\n display: block !important;\n }\n table.visible-md {\n display: table !important;\n }\n tr.visible-md {\n display: table-row !important;\n }\n th.visible-md,\n td.visible-md {\n display: table-cell !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-block {\n display: block !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline {\n display: inline !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .visible-md-inline-block {\n display: inline-block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg {\n display: block !important;\n }\n table.visible-lg {\n display: table !important;\n }\n tr.visible-lg {\n display: table-row !important;\n }\n th.visible-lg,\n td.visible-lg {\n display: table-cell !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-block {\n display: block !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline {\n display: inline !important;\n }\n}\n@media (min-width: 1200px) {\n .visible-lg-inline-block {\n display: inline-block !important;\n }\n}\n@media (max-width: 767px) {\n .hidden-xs {\n display: none !important;\n }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n .hidden-sm {\n display: none !important;\n }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n .hidden-md {\n display: none !important;\n }\n}\n@media (min-width: 1200px) {\n .hidden-lg {\n display: none !important;\n }\n}\n.visible-print {\n display: none !important;\n}\n@media print {\n .visible-print {\n display: block !important;\n }\n table.visible-print {\n display: table !important;\n }\n tr.visible-print {\n display: table-row !important;\n }\n th.visible-print,\n td.visible-print {\n display: table-cell !important;\n }\n}\n.visible-print-block {\n display: none !important;\n}\n@media print {\n .visible-print-block {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n}\n@media print {\n .visible-print-inline {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n}\n@media print {\n .visible-print-inline-block {\n display: inline-block !important;\n }\n}\n@media print {\n .hidden-print {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap.css.map */\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// Star\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\002a\"; } }\n.glyphicon-plus { &:before { content: \"\\002b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-btc { &:before { content: \"\\e227\"; } }\n.glyphicon-xbt { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-jpy { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-rub { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: @link-color;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n border-radius: @border-radius-large;\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(all .2s ease-in-out);\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n border-radius: 50%; // set radius in percents\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @line-height-computed;\n margin-bottom: @line-height-computed;\n border: 0;\n border-top: 1px solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n\n\n// iOS \"clickable elements\" fix for role=\"button\"\n//\n// Fixes \"clickability\" issue (and more generally, the firing of events such as focus as well)\n// for traditionally non-focusable elements with role=\"button\"\n// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n[role=\"button\"] {\n cursor: pointer;\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// WebKit-style focus\n\n.tab-focus() {\n // WebKit-specific. Other browsers will keep their default outline style.\n // (Initially tried to also force default via `outline: initial`,\n // but that seems to erroneously remove the outline in Firefox altogether.)\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n display: @display;\n max-width: 100%; // Part 1: Set a maximum relative to the parent\n height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n background-image: url(\"@{file-1x}\");\n\n @media\n only screen and (-webkit-min-device-pixel-ratio: 2),\n only screen and ( min--moz-device-pixel-ratio: 2),\n only screen and ( -o-min-device-pixel-ratio: 2/1),\n only screen and ( min-device-pixel-ratio: 2),\n only screen and ( min-resolution: 192dpi),\n only screen and ( min-resolution: 2dppx) {\n background-image: url(\"@{file-2x}\");\n background-size: @width-1x @height-1x;\n }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n font-family: @headings-font-family;\n font-weight: @headings-font-weight;\n line-height: @headings-line-height;\n color: @headings-color;\n\n small,\n .small {\n font-weight: normal;\n line-height: 1;\n color: @headings-small-color;\n }\n}\n\nh1, .h1,\nh2, .h2,\nh3, .h3 {\n margin-top: @line-height-computed;\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 65%;\n }\n}\nh4, .h4,\nh5, .h5,\nh6, .h6 {\n margin-top: (@line-height-computed / 2);\n margin-bottom: (@line-height-computed / 2);\n\n small,\n .small {\n font-size: 75%;\n }\n}\n\nh1, .h1 { font-size: @font-size-h1; }\nh2, .h2 { font-size: @font-size-h2; }\nh3, .h3 { font-size: @font-size-h3; }\nh4, .h4 { font-size: @font-size-h4; }\nh5, .h5 { font-size: @font-size-h5; }\nh6, .h6 { font-size: @font-size-h6; }\n\n\n// Body text\n// -------------------------\n\np {\n margin: 0 0 (@line-height-computed / 2);\n}\n\n.lead {\n margin-bottom: @line-height-computed;\n font-size: floor((@font-size-base * 1.15));\n font-weight: 300;\n line-height: 1.4;\n\n @media (min-width: @screen-sm-min) {\n font-size: (@font-size-base * 1.5);\n }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n font-size: floor((100% * @font-size-small / @font-size-base));\n}\n\nmark,\n.mark {\n background-color: @state-warning-bg;\n padding: .2em;\n}\n\n// Alignment\n.text-left { text-align: left; }\n.text-right { text-align: right; }\n.text-center { text-align: center; }\n.text-justify { text-align: justify; }\n.text-nowrap { white-space: nowrap; }\n\n// Transformation\n.text-lowercase { text-transform: lowercase; }\n.text-uppercase { text-transform: uppercase; }\n.text-capitalize { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n color: @text-muted;\n}\n.text-primary {\n .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n // Given the contrast here, this is the only class to have its color inverted\n // automatically.\n color: #fff;\n .bg-variant(@brand-primary);\n}\n.bg-success {\n .bg-variant(@state-success-bg);\n}\n.bg-info {\n .bg-variant(@state-info-bg);\n}\n.bg-warning {\n .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n padding-bottom: ((@line-height-computed / 2) - 1);\n margin: (@line-height-computed * 2) 0 @line-height-computed;\n border-bottom: 1px solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n margin-top: 0;\n margin-bottom: (@line-height-computed / 2);\n ul,\n ol {\n margin-bottom: 0;\n }\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n .list-unstyled();\n margin-left: -5px;\n\n > li {\n display: inline-block;\n padding-left: 5px;\n padding-right: 5px;\n }\n}\n\n// Description Lists\ndl {\n margin-top: 0; // Remove browser default\n margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n line-height: @line-height-base;\n}\ndt {\n font-weight: bold;\n}\ndd {\n margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n dd {\n &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n }\n\n @media (min-width: @dl-horizontal-breakpoint) {\n dt {\n float: left;\n width: (@dl-horizontal-offset - 20);\n clear: left;\n text-align: right;\n .text-overflow();\n }\n dd {\n margin-left: @dl-horizontal-offset;\n }\n }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n cursor: help;\n border-bottom: 1px dotted @abbr-border-color;\n}\n.initialism {\n font-size: 90%;\n .text-uppercase();\n}\n\n// Blockquotes\nblockquote {\n padding: (@line-height-computed / 2) @line-height-computed;\n margin: 0 0 @line-height-computed;\n font-size: @blockquote-font-size;\n border-left: 5px solid @blockquote-border-color;\n\n p,\n ul,\n ol {\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n // Note: Deprecated small and .small as of v3.1.0\n // Context: https://github.com/twbs/bootstrap/issues/11660\n footer,\n small,\n .small {\n display: block;\n font-size: 80%; // back to default font-size\n line-height: @line-height-base;\n color: @blockquote-small-color;\n\n &:before {\n content: '\\2014 \\00A0'; // em dash, nbsp\n }\n }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n border-right: 5px solid @blockquote-border-color;\n border-left: 0;\n text-align: right;\n\n // Account for citation\n footer,\n small,\n .small {\n &:before { content: ''; }\n &:after {\n content: '\\00A0 \\2014'; // nbsp, em dash\n }\n }\n}\n\n// Addresses\naddress {\n margin-bottom: @line-height-computed;\n font-style: normal;\n line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n color: @color;\n a&:hover,\n a&:focus {\n color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover,\n a&:focus {\n background-color: darken(@color, 10%);\n }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: @code-color;\n background-color: @code-bg;\n border-radius: @border-radius-base;\n}\n\n// User input typically entered via keyboard\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: @kbd-color;\n background-color: @kbd-bg;\n border-radius: @border-radius-small;\n box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);\n\n kbd {\n padding: 0;\n font-size: 100%;\n font-weight: bold;\n box-shadow: none;\n }\n}\n\n// Blocks of code\npre {\n display: block;\n padding: ((@line-height-computed - 1) / 2);\n margin: 0 0 (@line-height-computed / 2);\n font-size: (@font-size-base - 1); // 14px to 13px\n line-height: @line-height-base;\n word-break: break-all;\n word-wrap: break-word;\n color: @pre-color;\n background-color: @pre-bg;\n border: 1px solid @pre-border-color;\n border-radius: @border-radius-base;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n max-height: @pre-scrollable-max-height;\n overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n .container-fixed();\n\n @media (min-width: @screen-sm-min) {\n width: @container-sm;\n }\n @media (min-width: @screen-md-min) {\n width: @container-md;\n }\n @media (min-width: @screen-lg-min) {\n width: @container-lg;\n }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n margin-right: auto;\n margin-left: auto;\n padding-left: floor((@gutter / 2));\n padding-right: ceil((@gutter / 2));\n &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n margin-left: ceil((@gutter / -2));\n margin-right: floor((@gutter / -2));\n &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n float: left;\n width: percentage((@columns / @grid-columns));\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-sm-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-offset(@columns) {\n @media (min-width: @screen-sm-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-push(@columns) {\n @media (min-width: @screen-sm-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-sm-column-pull(@columns) {\n @media (min-width: @screen-sm-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-md-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-offset(@columns) {\n @media (min-width: @screen-md-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-push(@columns) {\n @media (min-width: @screen-md-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-md-column-pull(@columns) {\n @media (min-width: @screen-md-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n position: relative;\n min-height: 1px;\n padding-left: (@gutter / 2);\n padding-right: (@gutter / 2);\n\n @media (min-width: @screen-lg-min) {\n float: left;\n width: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-offset(@columns) {\n @media (min-width: @screen-lg-min) {\n margin-left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-push(@columns) {\n @media (min-width: @screen-lg-min) {\n left: percentage((@columns / @grid-columns));\n }\n}\n.make-lg-column-pull(@columns) {\n @media (min-width: @screen-lg-min) {\n right: percentage((@columns / @grid-columns));\n }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n // Common styles for all sizes of grid columns, widths 1-12\n .col(@index) { // initial\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n position: relative;\n // Prevent columns from collapsing when empty\n min-height: 1px;\n // Inner gutter via padding\n padding-left: ceil((@grid-gutter-width / 2));\n padding-right: floor((@grid-gutter-width / 2));\n }\n }\n .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n .col(@index) { // initial\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), @item);\n }\n .col(@index, @list) when (@index =< @grid-columns) { // general\n @item: ~\".col-@{class}-@{index}\";\n .col((@index + 1), ~\"@{list}, @{item}\");\n }\n .col(@index, @list) when (@index > @grid-columns) { // terminal\n @{list} {\n float: left;\n }\n }\n .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n .col-@{class}-@{index} {\n width: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n .col-@{class}-push-@{index} {\n left: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n .col-@{class}-push-0 {\n left: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n .col-@{class}-pull-@{index} {\n right: percentage((@index / @grid-columns));\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n .col-@{class}-pull-0 {\n right: auto;\n }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n .col-@{class}-offset-@{index} {\n margin-left: percentage((@index / @grid-columns));\n }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n .calc-grid-column(@index, @class, @type);\n // next iteration\n .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n .float-grid-columns(@class);\n .loop-grid-columns(@grid-columns, @class, width);\n .loop-grid-columns(@grid-columns, @class, pull);\n .loop-grid-columns(@grid-columns, @class, push);\n .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n background-color: @table-bg;\n}\ncaption {\n padding-top: @table-cell-padding;\n padding-bottom: @table-cell-padding;\n color: @text-muted;\n text-align: left;\n}\nth {\n text-align: left;\n}\n\n\n// Baseline styles\n\n.table {\n width: 100%;\n max-width: 100%;\n margin-bottom: @line-height-computed;\n // Cells\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-cell-padding;\n line-height: @line-height-base;\n vertical-align: top;\n border-top: 1px solid @table-border-color;\n }\n }\n }\n // Bottom align for column headings\n > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid @table-border-color;\n }\n // Remove top border from thead by default\n > caption + thead,\n > colgroup + thead,\n > thead:first-child {\n > tr:first-child {\n > th,\n > td {\n border-top: 0;\n }\n }\n }\n // Account for multiple tbody instances\n > tbody + tbody {\n border-top: 2px solid @table-border-color;\n }\n\n // Nesting\n .table {\n background-color: @body-bg;\n }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n padding: @table-condensed-cell-padding;\n }\n }\n }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n border: 1px solid @table-border-color;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n border: 1px solid @table-border-color;\n }\n }\n }\n > thead > tr {\n > th,\n > td {\n border-bottom-width: 2px;\n }\n }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n > tbody > tr:nth-of-type(odd) {\n background-color: @table-bg-accent;\n }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n > tbody > tr:hover {\n background-color: @table-bg-hover;\n }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-column;\n}\ntable {\n td,\n th {\n &[class*=\"col-\"] {\n position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n float: none;\n display: table-cell;\n }\n }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n overflow-x: auto;\n min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n @media screen and (max-width: @screen-xs-max) {\n width: 100%;\n margin-bottom: (@line-height-computed * 0.75);\n overflow-y: hidden;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n border: 1px solid @table-border-color;\n\n // Tighten up spacing\n > .table {\n margin-bottom: 0;\n\n // Ensure the content doesn't wrap\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th,\n > td {\n white-space: nowrap;\n }\n }\n }\n }\n\n // Special overrides for the bordered tables\n > .table-bordered {\n border: 0;\n\n // Nuke the appropriate borders so that the parent can handle them\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n\n // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n // chances are there will be only one `tr` in a `thead` and that would\n // remove the border altogether.\n > tbody,\n > tfoot {\n > tr:last-child {\n > th,\n > td {\n border-bottom: 0;\n }\n }\n }\n\n }\n }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n // Exact selectors below required to override `.table-striped` and prevent\n // inheritance to nested tables.\n .table > thead > tr,\n .table > tbody > tr,\n .table > tfoot > tr {\n > td.@{state},\n > th.@{state},\n &.@{state} > td,\n &.@{state} > th {\n background-color: @background;\n }\n }\n\n // Hover states for `.table-hover`\n // Note: this is not available for cells or rows within `thead` or `tfoot`.\n .table-hover > tbody > tr {\n > td.@{state}:hover,\n > th.@{state}:hover,\n &.@{state}:hover > td,\n &:hover > .@{state},\n &.@{state}:hover > th {\n background-color: darken(@background, 5%);\n }\n }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n padding: 0;\n margin: 0;\n border: 0;\n // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n // so we reset that to ensure it behaves more like a standard block element.\n // See https://github.com/twbs/bootstrap/issues/12359.\n min-width: 0;\n}\n\nlegend {\n display: block;\n width: 100%;\n padding: 0;\n margin-bottom: @line-height-computed;\n font-size: (@font-size-base * 1.5);\n line-height: inherit;\n color: @legend-color;\n border: 0;\n border-bottom: 1px solid @legend-border-color;\n}\n\nlabel {\n display: inline-block;\n max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n margin-bottom: 5px;\n font-weight: bold;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n margin: 4px 0 0;\n margin-top: 1px \\9; // IE8-9\n line-height: normal;\n}\n\ninput[type=\"file\"] {\n display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n display: block;\n width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n .tab-focus();\n}\n\n// Adjust output element\noutput {\n display: block;\n padding-top: (@padding-base-vertical + 1);\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n display: block;\n width: 100%;\n height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @input-color;\n background-color: @input-bg;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid @input-border;\n border-radius: @input-border-radius; // Note: This has no effect on s in CSS.\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075));\n .transition(~\"border-color ease-in-out .15s, box-shadow ease-in-out .15s\");\n\n // Customize the `:focus` state to imitate native WebKit styles.\n .form-control-focus();\n\n // Placeholder\n .placeholder();\n\n // Unstyle the caret on ``\n// element gets special love because it's special, and that's a fact!\n.input-size(@input-height; @padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n height: @input-height;\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n\n select& {\n height: @input-height;\n line-height: @input-height;\n }\n\n textarea&,\n select[multiple]& {\n height: auto;\n }\n}\n","//\n// Buttons\n// --------------------------------------------------\n\n\n// Base styles\n// --------------------------------------------------\n\n.btn {\n display: inline-block;\n margin-bottom: 0; // For input.btn\n font-weight: @btn-font-weight;\n text-align: center;\n vertical-align: middle;\n touch-action: manipulation;\n cursor: pointer;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n white-space: nowrap;\n .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);\n .user-select(none);\n\n &,\n &:active,\n &.active {\n &:focus,\n &.focus {\n .tab-focus();\n }\n }\n\n &:hover,\n &:focus,\n &.focus {\n color: @btn-default-color;\n text-decoration: none;\n }\n\n &:active,\n &.active {\n outline: 0;\n background-image: none;\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n .opacity(.65);\n .box-shadow(none);\n }\n\n a& {\n &.disabled,\n fieldset[disabled] & {\n pointer-events: none; // Future-proof disabling of clicks on `` elements\n }\n }\n}\n\n\n// Alternate buttons\n// --------------------------------------------------\n\n.btn-default {\n .button-variant(@btn-default-color; @btn-default-bg; @btn-default-border);\n}\n.btn-primary {\n .button-variant(@btn-primary-color; @btn-primary-bg; @btn-primary-border);\n}\n// Success appears as green\n.btn-success {\n .button-variant(@btn-success-color; @btn-success-bg; @btn-success-border);\n}\n// Info appears as blue-green\n.btn-info {\n .button-variant(@btn-info-color; @btn-info-bg; @btn-info-border);\n}\n// Warning appears as orange\n.btn-warning {\n .button-variant(@btn-warning-color; @btn-warning-bg; @btn-warning-border);\n}\n// Danger and error appear as red\n.btn-danger {\n .button-variant(@btn-danger-color; @btn-danger-bg; @btn-danger-border);\n}\n\n\n// Link buttons\n// -------------------------\n\n// Make a button look and behave like a link\n.btn-link {\n color: @link-color;\n font-weight: normal;\n border-radius: 0;\n\n &,\n &:active,\n &.active,\n &[disabled],\n fieldset[disabled] & {\n background-color: transparent;\n .box-shadow(none);\n }\n &,\n &:hover,\n &:focus,\n &:active {\n border-color: transparent;\n }\n &:hover,\n &:focus {\n color: @link-hover-color;\n text-decoration: @link-hover-decoration;\n background-color: transparent;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @btn-link-disabled-color;\n text-decoration: none;\n }\n }\n}\n\n\n// Button Sizes\n// --------------------------------------------------\n\n.btn-lg {\n // line-height: ensure even-numbered height of button next to large input\n .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);\n}\n.btn-sm {\n // line-height: ensure proper height of button next to small input\n .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);\n}\n\n\n// Block button\n// --------------------------------------------------\n\n.btn-block {\n display: block;\n width: 100%;\n}\n\n// Vertically space out multiple block buttons\n.btn-block + .btn-block {\n margin-top: 5px;\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n &.btn-block {\n width: 100%;\n }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n.button-variant(@color; @background; @border) {\n color: @color;\n background-color: @background;\n border-color: @border;\n\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 25%);\n }\n &:hover {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n color: @color;\n background-color: darken(@background, 10%);\n border-color: darken(@border, 12%);\n\n &:hover,\n &:focus,\n &.focus {\n color: @color;\n background-color: darken(@background, 17%);\n border-color: darken(@border, 25%);\n }\n }\n &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus,\n &.focus {\n background-color: @background;\n border-color: @border;\n }\n }\n\n .badge {\n color: @background;\n background-color: @color;\n }\n}\n\n// Button sizes\n.button-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n border-radius: @border-radius;\n}\n","// Opacity\n\n.opacity(@opacity) {\n opacity: @opacity;\n // IE8 filter\n @opacity-ie: (@opacity * 100);\n filter: ~\"alpha(opacity=@{opacity-ie})\";\n}\n","//\n// Component animations\n// --------------------------------------------------\n\n// Heads up!\n//\n// We don't use the `.opacity()` mixin here since it causes a bug with text\n// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.\n\n.fade {\n opacity: 0;\n .transition(opacity .15s linear);\n &.in {\n opacity: 1;\n }\n}\n\n.collapse {\n display: none;\n\n &.in { display: block; }\n tr&.in { display: table-row; }\n tbody&.in { display: table-row-group; }\n}\n\n.collapsing {\n position: relative;\n height: 0;\n overflow: hidden;\n .transition-property(~\"height, visibility\");\n .transition-duration(.35s);\n .transition-timing-function(ease);\n}\n","//\n// Dropdown menus\n// --------------------------------------------------\n\n\n// Dropdown arrow/caret\n.caret {\n display: inline-block;\n width: 0;\n height: 0;\n margin-left: 2px;\n vertical-align: middle;\n border-top: @caret-width-base dashed;\n border-top: @caret-width-base solid ~\"\\9\"; // IE8\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\n.dropup,\n.dropdown {\n position: relative;\n}\n\n// Prevent the focus on the dropdown toggle when closing dropdowns\n.dropdown-toggle:focus {\n outline: 0;\n}\n\n// The dropdown menu (ul)\n.dropdown-menu {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: @zindex-dropdown;\n display: none; // none by default, but block on \"open\" of the menu\n float: left;\n min-width: 160px;\n padding: 5px 0;\n margin: 2px 0 0; // override default ul\n list-style: none;\n font-size: @font-size-base;\n text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n background-color: @dropdown-bg;\n border: 1px solid @dropdown-fallback-border; // IE8 fallback\n border: 1px solid @dropdown-border;\n border-radius: @border-radius-base;\n .box-shadow(0 6px 12px rgba(0,0,0,.175));\n background-clip: padding-box;\n\n // Aligns the dropdown menu to right\n //\n // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`\n &.pull-right {\n right: 0;\n left: auto;\n }\n\n // Dividers (basically an hr) within the dropdown\n .divider {\n .nav-divider(@dropdown-divider-bg);\n }\n\n // Links within the dropdown menu\n > li > a {\n display: block;\n padding: 3px 20px;\n clear: both;\n font-weight: normal;\n line-height: @line-height-base;\n color: @dropdown-link-color;\n white-space: nowrap; // prevent links from randomly breaking onto new lines\n }\n}\n\n// Hover/Focus state\n.dropdown-menu > li > a {\n &:hover,\n &:focus {\n text-decoration: none;\n color: @dropdown-link-hover-color;\n background-color: @dropdown-link-hover-bg;\n }\n}\n\n// Active state\n.dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-active-color;\n text-decoration: none;\n outline: 0;\n background-color: @dropdown-link-active-bg;\n }\n}\n\n// Disabled state\n//\n// Gray out text and ensure the hover/focus state remains gray\n\n.dropdown-menu > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @dropdown-link-disabled-color;\n }\n\n // Nuke hover/focus effects\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: transparent;\n background-image: none; // Remove CSS gradient\n .reset-filter();\n cursor: @cursor-disabled;\n }\n}\n\n// Open state for the dropdown\n.open {\n // Show the menu\n > .dropdown-menu {\n display: block;\n }\n\n // Remove the outline when :focus is triggered\n > a {\n outline: 0;\n }\n}\n\n// Menu positioning\n//\n// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown\n// menu with the parent.\n.dropdown-menu-right {\n left: auto; // Reset the default from `.dropdown-menu`\n right: 0;\n}\n// With v3, we enabled auto-flipping if you have a dropdown within a right\n// aligned nav component. To enable the undoing of that, we provide an override\n// to restore the default dropdown menu alignment.\n//\n// This is only for left-aligning a dropdown menu within a `.navbar-right` or\n// `.pull-right` nav component.\n.dropdown-menu-left {\n left: 0;\n right: auto;\n}\n\n// Dropdown section headers\n.dropdown-header {\n display: block;\n padding: 3px 20px;\n font-size: @font-size-small;\n line-height: @line-height-base;\n color: @dropdown-header-color;\n white-space: nowrap; // as with > li > a\n}\n\n// Backdrop to catch body clicks on mobile, etc.\n.dropdown-backdrop {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n z-index: (@zindex-dropdown - 10);\n}\n\n// Right aligned dropdowns\n.pull-right > .dropdown-menu {\n right: 0;\n left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n//\n// Just add .dropup after the standard .dropdown class and you're set, bro.\n// TODO: abstract this so that the navbar fixed styles are not placed here?\n\n.dropup,\n.navbar-fixed-bottom .dropdown {\n // Reverse the caret\n .caret {\n border-top: 0;\n border-bottom: @caret-width-base dashed;\n border-bottom: @caret-width-base solid ~\"\\9\"; // IE8\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 2px;\n }\n}\n\n\n// Component alignment\n//\n// Reiterate per navbar.less and the modified component alignment there.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-right {\n .dropdown-menu {\n .dropdown-menu-right();\n }\n // Necessary for overrides of the default right aligned menu.\n // Will remove come v4 in all likelihood.\n .dropdown-menu-left {\n .dropdown-menu-left();\n }\n }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n.nav-divider(@color: #e5e5e5) {\n height: 1px;\n margin: ((@line-height-computed / 2) - 1) 0;\n overflow: hidden;\n background-color: @color;\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n","//\n// Button groups\n// --------------------------------------------------\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n position: relative;\n display: inline-block;\n vertical-align: middle; // match .btn alignment given font-size hack above\n > .btn {\n position: relative;\n float: left;\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active,\n &.active {\n z-index: 2;\n }\n }\n}\n\n// Prevent double borders when buttons are next to each other\n.btn-group {\n .btn + .btn,\n .btn + .btn-group,\n .btn-group + .btn,\n .btn-group + .btn-group {\n margin-left: -1px;\n }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n margin-left: -5px; // Offset the first child's margin\n &:extend(.clearfix all);\n\n .btn,\n .btn-group,\n .input-group {\n float: left;\n }\n > .btn,\n > .btn-group,\n > .input-group {\n margin-left: 5px;\n }\n}\n\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n border-radius: 0;\n}\n\n// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match\n.btn-group > .btn:first-child {\n margin-left: 0;\n &:not(:last-child):not(.dropdown-toggle) {\n .border-right-radius(0);\n }\n}\n// Need .dropdown-toggle since :last-child doesn't apply, given that a .dropdown-menu is used immediately after it\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n .border-left-radius(0);\n}\n\n// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)\n.btn-group > .btn-group {\n float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-left-radius(0);\n}\n\n// On active and open, don't show outline\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n outline: 0;\n}\n\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-xs > .btn { &:extend(.btn-xs); }\n.btn-group-sm > .btn { &:extend(.btn-sm); }\n.btn-group-lg > .btn { &:extend(.btn-lg); }\n\n\n// Split button dropdowns\n// ----------------------\n\n// Give the line between buttons some depth\n.btn-group > .btn + .dropdown-toggle {\n padding-left: 8px;\n padding-right: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n padding-left: 12px;\n padding-right: 12px;\n}\n\n// The clickable button for toggling the menu\n// Remove the gradient and set the same inset shadow as the :active state\n.btn-group.open .dropdown-toggle {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n\n // Show no shadow for `.btn-link` since it has no other button styles.\n &.btn-link {\n .box-shadow(none);\n }\n}\n\n\n// Reposition the caret\n.btn .caret {\n margin-left: 0;\n}\n// Carets in other button sizes\n.btn-lg .caret {\n border-width: @caret-width-large @caret-width-large 0;\n border-bottom-width: 0;\n}\n// Upside down carets for .dropup\n.dropup .btn-lg .caret {\n border-width: 0 @caret-width-large @caret-width-large;\n}\n\n\n// Vertical button groups\n// ----------------------\n\n.btn-group-vertical {\n > .btn,\n > .btn-group,\n > .btn-group > .btn {\n display: block;\n float: none;\n width: 100%;\n max-width: 100%;\n }\n\n // Clear floats so dropdown menus can be properly placed\n > .btn-group {\n &:extend(.clearfix all);\n > .btn {\n float: none;\n }\n }\n\n > .btn + .btn,\n > .btn + .btn-group,\n > .btn-group + .btn,\n > .btn-group + .btn-group {\n margin-top: -1px;\n margin-left: 0;\n }\n}\n\n.btn-group-vertical > .btn {\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n &:first-child:not(:last-child) {\n .border-top-radius(@btn-border-radius-base);\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n .border-top-radius(0);\n .border-bottom-radius(@btn-border-radius-base);\n }\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-bottom-radius(0);\n }\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n .border-top-radius(0);\n}\n\n\n// Justified button groups\n// ----------------------\n\n.btn-group-justified {\n display: table;\n width: 100%;\n table-layout: fixed;\n border-collapse: separate;\n > .btn,\n > .btn-group {\n float: none;\n display: table-cell;\n width: 1%;\n }\n > .btn-group .btn {\n width: 100%;\n }\n\n > .btn-group .dropdown-menu {\n left: auto;\n }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n[data-toggle=\"buttons\"] {\n > .btn,\n > .btn-group > .btn {\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n position: absolute;\n clip: rect(0,0,0,0);\n pointer-events: none;\n }\n }\n}\n","// Single side border-radius\n\n.border-top-radius(@radius) {\n border-top-right-radius: @radius;\n border-top-left-radius: @radius;\n}\n.border-right-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-top-right-radius: @radius;\n}\n.border-bottom-radius(@radius) {\n border-bottom-right-radius: @radius;\n border-bottom-left-radius: @radius;\n}\n.border-left-radius(@radius) {\n border-bottom-left-radius: @radius;\n border-top-left-radius: @radius;\n}\n","//\n// Input groups\n// --------------------------------------------------\n\n// Base styles\n// -------------------------\n.input-group {\n position: relative; // For dropdowns\n display: table;\n border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table\n\n // Undo padding and float of grid classes\n &[class*=\"col-\"] {\n float: none;\n padding-left: 0;\n padding-right: 0;\n }\n\n .form-control {\n // Ensure that the input is always above the *appended* addon button for\n // proper border colors.\n position: relative;\n z-index: 2;\n\n // IE9 fubars the placeholder attribute in text inputs and the arrows on\n // select elements in input groups. To fix it, we float the input. Details:\n // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855\n float: left;\n\n width: 100%;\n margin-bottom: 0;\n\n &:focus {\n z-index: 3;\n }\n }\n}\n\n// Sizing options\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n .input-lg();\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n .input-sm();\n}\n\n\n// Display as table-cell\n// -------------------------\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n display: table-cell;\n\n &:not(:first-child):not(:last-child) {\n border-radius: 0;\n }\n}\n// Addon and addon wrapper for buttons\n.input-group-addon,\n.input-group-btn {\n width: 1%;\n white-space: nowrap;\n vertical-align: middle; // Match the inputs\n}\n\n// Text input groups\n// -------------------------\n.input-group-addon {\n padding: @padding-base-vertical @padding-base-horizontal;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: 1;\n color: @input-color;\n text-align: center;\n background-color: @input-group-addon-bg;\n border: 1px solid @input-group-addon-border-color;\n border-radius: @input-border-radius;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @input-border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @input-border-radius-large;\n }\n\n // Nuke default margins from checkboxes and radios to vertically center within.\n input[type=\"radio\"],\n input[type=\"checkbox\"] {\n margin-top: 0;\n }\n}\n\n// Reset rounded corners\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n .border-right-radius(0);\n}\n.input-group-addon:first-child {\n border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n .border-left-radius(0);\n}\n.input-group-addon:last-child {\n border-left: 0;\n}\n\n// Button input groups\n// -------------------------\n.input-group-btn {\n position: relative;\n // Jankily prevent input button groups from wrapping with `white-space` and\n // `font-size` in combination with `inline-block` on buttons.\n font-size: 0;\n white-space: nowrap;\n\n // Negative margin for spacing, position for bringing hovered/focused/actived\n // element above the siblings.\n > .btn {\n position: relative;\n + .btn {\n margin-left: -1px;\n }\n // Bring the \"active\" button to the front\n &:hover,\n &:focus,\n &:active {\n z-index: 2;\n }\n }\n\n // Negative margin to only have a 1px border between the two\n &:first-child {\n > .btn,\n > .btn-group {\n margin-right: -1px;\n }\n }\n &:last-child {\n > .btn,\n > .btn-group {\n z-index: 2;\n margin-left: -1px;\n }\n }\n}\n","//\n// Navs\n// --------------------------------------------------\n\n\n// Base class\n// --------------------------------------------------\n\n.nav {\n margin-bottom: 0;\n padding-left: 0; // Override default ul/ol\n list-style: none;\n &:extend(.clearfix all);\n\n > li {\n position: relative;\n display: block;\n\n > a {\n position: relative;\n display: block;\n padding: @nav-link-padding;\n &:hover,\n &:focus {\n text-decoration: none;\n background-color: @nav-link-hover-bg;\n }\n }\n\n // Disabled state sets text to gray and nukes hover/tab effects\n &.disabled > a {\n color: @nav-disabled-link-color;\n\n &:hover,\n &:focus {\n color: @nav-disabled-link-hover-color;\n text-decoration: none;\n background-color: transparent;\n cursor: @cursor-disabled;\n }\n }\n }\n\n // Open dropdowns\n .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @nav-link-hover-bg;\n border-color: @link-color;\n }\n }\n\n // Nav dividers (deprecated with v3.0.1)\n //\n // This should have been removed in v3 with the dropping of `.nav-list`, but\n // we missed it. We don't currently support this anywhere, but in the interest\n // of maintaining backward compatibility in case you use it, it's deprecated.\n .nav-divider {\n .nav-divider();\n }\n\n // Prevent IE8 from misplacing imgs\n //\n // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989\n > li > a > img {\n max-width: none;\n }\n}\n\n\n// Tabs\n// -------------------------\n\n// Give the tabs something to sit on\n.nav-tabs {\n border-bottom: 1px solid @nav-tabs-border-color;\n > li {\n float: left;\n // Make the list-items overlay the bottom border\n margin-bottom: -1px;\n\n // Actual tabs (as links)\n > a {\n margin-right: 2px;\n line-height: @line-height-base;\n border: 1px solid transparent;\n border-radius: @border-radius-base @border-radius-base 0 0;\n &:hover {\n border-color: @nav-tabs-link-hover-border-color @nav-tabs-link-hover-border-color @nav-tabs-border-color;\n }\n }\n\n // Active state, and its :hover to override normal :hover\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-tabs-active-link-hover-color;\n background-color: @nav-tabs-active-link-hover-bg;\n border: 1px solid @nav-tabs-active-link-hover-border-color;\n border-bottom-color: transparent;\n cursor: default;\n }\n }\n }\n // pulling this in mainly for less shorthand\n &.nav-justified {\n .nav-justified();\n .nav-tabs-justified();\n }\n}\n\n\n// Pills\n// -------------------------\n.nav-pills {\n > li {\n float: left;\n\n // Links rendered as pills\n > a {\n border-radius: @nav-pills-border-radius;\n }\n + li {\n margin-left: 2px;\n }\n\n // Active state\n &.active > a {\n &,\n &:hover,\n &:focus {\n color: @nav-pills-active-link-hover-color;\n background-color: @nav-pills-active-link-hover-bg;\n }\n }\n }\n}\n\n\n// Stacked pills\n.nav-stacked {\n > li {\n float: none;\n + li {\n margin-top: 2px;\n margin-left: 0; // no need for this gap between nav items\n }\n }\n}\n\n\n// Nav variations\n// --------------------------------------------------\n\n// Justified nav links\n// -------------------------\n\n.nav-justified {\n width: 100%;\n\n > li {\n float: none;\n > a {\n text-align: center;\n margin-bottom: 5px;\n }\n }\n\n > .dropdown .dropdown-menu {\n top: auto;\n left: auto;\n }\n\n @media (min-width: @screen-sm-min) {\n > li {\n display: table-cell;\n width: 1%;\n > a {\n margin-bottom: 0;\n }\n }\n }\n}\n\n// Move borders to anchors instead of bottom of list\n//\n// Mixin for adding on top the shared `.nav-justified` styles for our tabs\n.nav-tabs-justified {\n border-bottom: 0;\n\n > li > a {\n // Override margin from .nav-tabs\n margin-right: 0;\n border-radius: @border-radius-base;\n }\n\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border: 1px solid @nav-tabs-justified-link-border-color;\n }\n\n @media (min-width: @screen-sm-min) {\n > li > a {\n border-bottom: 1px solid @nav-tabs-justified-link-border-color;\n border-radius: @border-radius-base @border-radius-base 0 0;\n }\n > .active > a,\n > .active > a:hover,\n > .active > a:focus {\n border-bottom-color: @nav-tabs-justified-active-link-border-color;\n }\n }\n}\n\n\n// Tabbable tabs\n// -------------------------\n\n// Hide tabbable panes to start, show them when `.active`\n.tab-content {\n > .tab-pane {\n display: none;\n }\n > .active {\n display: block;\n }\n}\n\n\n// Dropdowns\n// -------------------------\n\n// Specific dropdowns\n.nav-tabs .dropdown-menu {\n // make dropdown border overlap tab border\n margin-top: -1px;\n // Remove the top rounded corners here since there is a hard edge above the menu\n .border-top-radius(0);\n}\n","//\n// Navbars\n// --------------------------------------------------\n\n\n// Wrapper and base class\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n position: relative;\n min-height: @navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)\n margin-bottom: @navbar-margin-bottom;\n border: 1px solid transparent;\n\n // Prevent floats from breaking the navbar\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: @navbar-border-radius;\n }\n}\n\n\n// Navbar heading\n//\n// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy\n// styling of responsive aspects.\n\n.navbar-header {\n &:extend(.clearfix all);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n }\n}\n\n\n// Navbar collapse (body)\n//\n// Group your navbar content into this for easy collapsing and expanding across\n// various device sizes. By default, this content is collapsed when <768px, but\n// will expand past that for a horizontal display.\n//\n// To start (on mobile devices) the navbar links, forms, and buttons are stacked\n// vertically and include a `max-height` to overflow in case you have too much\n// content for the user's viewport.\n\n.navbar-collapse {\n overflow-x: visible;\n padding-right: @navbar-padding-horizontal;\n padding-left: @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n box-shadow: inset 0 1px 0 rgba(255,255,255,.1);\n &:extend(.clearfix all);\n -webkit-overflow-scrolling: touch;\n\n &.in {\n overflow-y: auto;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border-top: 0;\n box-shadow: none;\n\n &.collapse {\n display: block !important;\n height: auto !important;\n padding-bottom: 0; // Override default setting\n overflow: visible !important;\n }\n\n &.in {\n overflow-y: visible;\n }\n\n // Undo the collapse side padding for navbars with containers to ensure\n // alignment of right-aligned contents.\n .navbar-fixed-top &,\n .navbar-static-top &,\n .navbar-fixed-bottom & {\n padding-left: 0;\n padding-right: 0;\n }\n }\n}\n\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n .navbar-collapse {\n max-height: @navbar-collapse-max-height;\n\n @media (max-device-width: @screen-xs-min) and (orientation: landscape) {\n max-height: 200px;\n }\n }\n}\n\n\n// Both navbar header and collapse\n//\n// When a container is present, change the behavior of the header and collapse.\n\n.container,\n.container-fluid {\n > .navbar-header,\n > .navbar-collapse {\n margin-right: -@navbar-padding-horizontal;\n margin-left: -@navbar-padding-horizontal;\n\n @media (min-width: @grid-float-breakpoint) {\n margin-right: 0;\n margin-left: 0;\n }\n }\n}\n\n\n//\n// Navbar alignment options\n//\n// Display the navbar across the entirety of the page or fixed it to the top or\n// bottom of the page.\n\n// Static top (unfixed, but 100% wide) navbar\n.navbar-static-top {\n z-index: @zindex-navbar;\n border-width: 0 0 1px;\n\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n\n// Fix the top/bottom navbars when screen real estate supports it\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n position: fixed;\n right: 0;\n left: 0;\n z-index: @zindex-navbar-fixed;\n\n // Undo the rounded corners\n @media (min-width: @grid-float-breakpoint) {\n border-radius: 0;\n }\n}\n.navbar-fixed-top {\n top: 0;\n border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n bottom: 0;\n margin-bottom: 0; // override .navbar defaults\n border-width: 1px 0 0;\n}\n\n\n// Brand/project name\n\n.navbar-brand {\n float: left;\n padding: @navbar-padding-vertical @navbar-padding-horizontal;\n font-size: @font-size-large;\n line-height: @line-height-computed;\n height: @navbar-height;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n > img {\n display: block;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n .navbar > .container &,\n .navbar > .container-fluid & {\n margin-left: -@navbar-padding-horizontal;\n }\n }\n}\n\n\n// Navbar toggle\n//\n// Custom button for toggling the `.navbar-collapse`, powered by the collapse\n// JavaScript plugin.\n\n.navbar-toggle {\n position: relative;\n float: right;\n margin-right: @navbar-padding-horizontal;\n padding: 9px 10px;\n .navbar-vertical-align(34px);\n background-color: transparent;\n background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n border: 1px solid transparent;\n border-radius: @border-radius-base;\n\n // We remove the `outline` here, but later compensate by attaching `:hover`\n // styles to `:focus`.\n &:focus {\n outline: 0;\n }\n\n // Bars\n .icon-bar {\n display: block;\n width: 22px;\n height: 2px;\n border-radius: 1px;\n }\n .icon-bar + .icon-bar {\n margin-top: 4px;\n }\n\n @media (min-width: @grid-float-breakpoint) {\n display: none;\n }\n}\n\n\n// Navbar nav links\n//\n// Builds on top of the `.nav` components with its own modifier class to make\n// the nav the full height of the horizontal nav (above 768px).\n\n.navbar-nav {\n margin: (@navbar-padding-vertical / 2) -@navbar-padding-horizontal;\n\n > li > a {\n padding-top: 10px;\n padding-bottom: 10px;\n line-height: @line-height-computed;\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n position: static;\n float: none;\n width: auto;\n margin-top: 0;\n background-color: transparent;\n border: 0;\n box-shadow: none;\n > li > a,\n .dropdown-header {\n padding: 5px 15px 5px 25px;\n }\n > li > a {\n line-height: @line-height-computed;\n &:hover,\n &:focus {\n background-image: none;\n }\n }\n }\n }\n\n // Uncollapse the nav\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin: 0;\n\n > li {\n float: left;\n > a {\n padding-top: @navbar-padding-vertical;\n padding-bottom: @navbar-padding-vertical;\n }\n }\n }\n}\n\n\n// Navbar form\n//\n// Extension of the `.form-inline` with some extra flavor for optimum display in\n// our navbars.\n\n.navbar-form {\n margin-left: -@navbar-padding-horizontal;\n margin-right: -@navbar-padding-horizontal;\n padding: 10px @navbar-padding-horizontal;\n border-top: 1px solid transparent;\n border-bottom: 1px solid transparent;\n @shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n\n // Mixin behavior for optimum display\n .form-inline();\n\n .form-group {\n @media (max-width: @grid-float-breakpoint-max) {\n margin-bottom: 5px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n // Vertically center in expanded, horizontal navbar\n .navbar-vertical-align(@input-height-base);\n\n // Undo 100% width for pull classes\n @media (min-width: @grid-float-breakpoint) {\n width: auto;\n border: 0;\n margin-left: 0;\n margin-right: 0;\n padding-top: 0;\n padding-bottom: 0;\n .box-shadow(none);\n }\n}\n\n\n// Dropdown menus\n\n// Menu position and menu carets\n.navbar-nav > li > .dropdown-menu {\n margin-top: 0;\n .border-top-radius(0);\n}\n// Menu position and menu caret support for dropups via extra dropup class\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n margin-bottom: 0;\n .border-top-radius(@navbar-border-radius);\n .border-bottom-radius(0);\n}\n\n\n// Buttons in navbars\n//\n// Vertically center a button within a navbar (when *not* in a form).\n\n.navbar-btn {\n .navbar-vertical-align(@input-height-base);\n\n &.btn-sm {\n .navbar-vertical-align(@input-height-small);\n }\n &.btn-xs {\n .navbar-vertical-align(22);\n }\n}\n\n\n// Text in navbars\n//\n// Add a class to make any element properly align itself vertically within the navbars.\n\n.navbar-text {\n .navbar-vertical-align(@line-height-computed);\n\n @media (min-width: @grid-float-breakpoint) {\n float: left;\n margin-left: @navbar-padding-horizontal;\n margin-right: @navbar-padding-horizontal;\n }\n}\n\n\n// Component alignment\n//\n// Repurpose the pull utilities as their own navbar utilities to avoid specificity\n// issues with parents and chaining. Only do this when the navbar is uncollapsed\n// though so that navbar contents properly stack and align in mobile.\n//\n// Declared after the navbar components to ensure more specificity on the margins.\n\n@media (min-width: @grid-float-breakpoint) {\n .navbar-left { .pull-left(); }\n .navbar-right {\n .pull-right();\n margin-right: -@navbar-padding-horizontal;\n\n ~ .navbar-right {\n margin-right: 0;\n }\n }\n}\n\n\n// Alternate navbars\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n background-color: @navbar-default-bg;\n border-color: @navbar-default-border;\n\n .navbar-brand {\n color: @navbar-default-brand-color;\n &:hover,\n &:focus {\n color: @navbar-default-brand-hover-color;\n background-color: @navbar-default-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-default-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-default-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n\n .navbar-toggle {\n border-color: @navbar-default-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-default-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-default-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: @navbar-default-border;\n }\n\n // Dropdown menu items\n .navbar-nav {\n // Remove background color from open dropdown\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-default-link-active-bg;\n color: @navbar-default-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display when collapsed\n .open .dropdown-menu {\n > li > a {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n background-color: @navbar-default-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-active-color;\n background-color: @navbar-default-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n background-color: @navbar-default-link-disabled-bg;\n }\n }\n }\n }\n }\n\n\n // Links in navbars\n //\n // Add a class to ensure links outside the navbar nav are colored correctly.\n\n .navbar-link {\n color: @navbar-default-link-color;\n &:hover {\n color: @navbar-default-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-default-link-color;\n &:hover,\n &:focus {\n color: @navbar-default-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-default-link-disabled-color;\n }\n }\n }\n}\n\n// Inverse navbar\n\n.navbar-inverse {\n background-color: @navbar-inverse-bg;\n border-color: @navbar-inverse-border;\n\n .navbar-brand {\n color: @navbar-inverse-brand-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-brand-hover-color;\n background-color: @navbar-inverse-brand-hover-bg;\n }\n }\n\n .navbar-text {\n color: @navbar-inverse-color;\n }\n\n .navbar-nav {\n > li > a {\n color: @navbar-inverse-link-color;\n\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n\n // Darken the responsive nav toggle\n .navbar-toggle {\n border-color: @navbar-inverse-toggle-border-color;\n &:hover,\n &:focus {\n background-color: @navbar-inverse-toggle-hover-bg;\n }\n .icon-bar {\n background-color: @navbar-inverse-toggle-icon-bar-bg;\n }\n }\n\n .navbar-collapse,\n .navbar-form {\n border-color: darken(@navbar-inverse-bg, 7%);\n }\n\n // Dropdowns\n .navbar-nav {\n > .open > a {\n &,\n &:hover,\n &:focus {\n background-color: @navbar-inverse-link-active-bg;\n color: @navbar-inverse-link-active-color;\n }\n }\n\n @media (max-width: @grid-float-breakpoint-max) {\n // Dropdowns get custom display\n .open .dropdown-menu {\n > .dropdown-header {\n border-color: @navbar-inverse-border;\n }\n .divider {\n background-color: @navbar-inverse-border;\n }\n > li > a {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n background-color: @navbar-inverse-link-hover-bg;\n }\n }\n > .active > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-active-color;\n background-color: @navbar-inverse-link-active-bg;\n }\n }\n > .disabled > a {\n &,\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n background-color: @navbar-inverse-link-disabled-bg;\n }\n }\n }\n }\n }\n\n .navbar-link {\n color: @navbar-inverse-link-color;\n &:hover {\n color: @navbar-inverse-link-hover-color;\n }\n }\n\n .btn-link {\n color: @navbar-inverse-link-color;\n &:hover,\n &:focus {\n color: @navbar-inverse-link-hover-color;\n }\n &[disabled],\n fieldset[disabled] & {\n &:hover,\n &:focus {\n color: @navbar-inverse-link-disabled-color;\n }\n }\n }\n}\n","// Navbar vertical align\n//\n// Vertically center elements in the navbar.\n// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.\n\n.navbar-vertical-align(@element-height) {\n margin-top: ((@navbar-height - @element-height) / 2);\n margin-bottom: ((@navbar-height - @element-height) / 2);\n}\n","//\n// Utility classes\n// --------------------------------------------------\n\n\n// Floats\n// -------------------------\n\n.clearfix {\n .clearfix();\n}\n.center-block {\n .center-block();\n}\n.pull-right {\n float: right !important;\n}\n.pull-left {\n float: left !important;\n}\n\n\n// Toggling content\n// -------------------------\n\n// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1\n.hide {\n display: none !important;\n}\n.show {\n display: block !important;\n}\n.invisible {\n visibility: hidden;\n}\n.text-hide {\n .text-hide();\n}\n\n\n// Hide from screenreaders and browsers\n//\n// Credit: HTML5 Boilerplate\n\n.hidden {\n display: none !important;\n}\n\n\n// For Affix plugin\n// -------------------------\n\n.affix {\n position: fixed;\n}\n","//\n// Breadcrumbs\n// --------------------------------------------------\n\n\n.breadcrumb {\n padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal;\n margin-bottom: @line-height-computed;\n list-style: none;\n background-color: @breadcrumb-bg;\n border-radius: @border-radius-base;\n\n > li {\n display: inline-block;\n\n + li:before {\n content: \"@{breadcrumb-separator}\\00a0\"; // Unicode space added since inline-block means non-collapsing white-space\n padding: 0 5px;\n color: @breadcrumb-color;\n }\n }\n\n > .active {\n color: @breadcrumb-active-color;\n }\n}\n","//\n// Pagination (multiple pages)\n// --------------------------------------------------\n.pagination {\n display: inline-block;\n padding-left: 0;\n margin: @line-height-computed 0;\n border-radius: @border-radius-base;\n\n > li {\n display: inline; // Remove list-style and block-level defaults\n > a,\n > span {\n position: relative;\n float: left; // Collapse white-space\n padding: @padding-base-vertical @padding-base-horizontal;\n line-height: @line-height-base;\n text-decoration: none;\n color: @pagination-color;\n background-color: @pagination-bg;\n border: 1px solid @pagination-border;\n margin-left: -1px;\n }\n &:first-child {\n > a,\n > span {\n margin-left: 0;\n .border-left-radius(@border-radius-base);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius-base);\n }\n }\n }\n\n > li > a,\n > li > span {\n &:hover,\n &:focus {\n z-index: 2;\n color: @pagination-hover-color;\n background-color: @pagination-hover-bg;\n border-color: @pagination-hover-border;\n }\n }\n\n > .active > a,\n > .active > span {\n &,\n &:hover,\n &:focus {\n z-index: 3;\n color: @pagination-active-color;\n background-color: @pagination-active-bg;\n border-color: @pagination-active-border;\n cursor: default;\n }\n }\n\n > .disabled {\n > span,\n > span:hover,\n > span:focus,\n > a,\n > a:hover,\n > a:focus {\n color: @pagination-disabled-color;\n background-color: @pagination-disabled-bg;\n border-color: @pagination-disabled-border;\n cursor: @cursor-disabled;\n }\n }\n}\n\n// Sizing\n// --------------------------------------------------\n\n// Large\n.pagination-lg {\n .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\n line-height: @line-height;\n }\n &:first-child {\n > a,\n > span {\n .border-left-radius(@border-radius);\n }\n }\n &:last-child {\n > a,\n > span {\n .border-right-radius(@border-radius);\n }\n }\n }\n}\n","//\n// Pager pagination\n// --------------------------------------------------\n\n\n.pager {\n padding-left: 0;\n margin: @line-height-computed 0;\n list-style: none;\n text-align: center;\n &:extend(.clearfix all);\n li {\n display: inline;\n > a,\n > span {\n display: inline-block;\n padding: 5px 14px;\n background-color: @pager-bg;\n border: 1px solid @pager-border;\n border-radius: @pager-border-radius;\n }\n\n > a:hover,\n > a:focus {\n text-decoration: none;\n background-color: @pager-hover-bg;\n }\n }\n\n .next {\n > a,\n > span {\n float: right;\n }\n }\n\n .previous {\n > a,\n > span {\n float: left;\n }\n }\n\n .disabled {\n > a,\n > a:hover,\n > a:focus,\n > span {\n color: @pager-disabled-color;\n background-color: @pager-bg;\n cursor: @cursor-disabled;\n }\n }\n}\n","//\n// Labels\n// --------------------------------------------------\n\n.label {\n display: inline;\n padding: .2em .6em .3em;\n font-size: 75%;\n font-weight: bold;\n line-height: 1;\n color: @label-color;\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n border-radius: .25em;\n\n // Add hover effects, but only for links\n a& {\n &:hover,\n &:focus {\n color: @label-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Empty labels collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for labels in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n}\n\n// Colors\n// Contextual variations (linked labels get darker on :hover)\n\n.label-default {\n .label-variant(@label-default-bg);\n}\n\n.label-primary {\n .label-variant(@label-primary-bg);\n}\n\n.label-success {\n .label-variant(@label-success-bg);\n}\n\n.label-info {\n .label-variant(@label-info-bg);\n}\n\n.label-warning {\n .label-variant(@label-warning-bg);\n}\n\n.label-danger {\n .label-variant(@label-danger-bg);\n}\n","// Labels\n\n.label-variant(@color) {\n background-color: @color;\n\n &[href] {\n &:hover,\n &:focus {\n background-color: darken(@color, 10%);\n }\n }\n}\n","//\n// Badges\n// --------------------------------------------------\n\n\n// Base class\n.badge {\n display: inline-block;\n min-width: 10px;\n padding: 3px 7px;\n font-size: @font-size-small;\n font-weight: @badge-font-weight;\n color: @badge-color;\n line-height: @badge-line-height;\n vertical-align: middle;\n white-space: nowrap;\n text-align: center;\n background-color: @badge-bg;\n border-radius: @badge-border-radius;\n\n // Empty badges collapse automatically (not available in IE8)\n &:empty {\n display: none;\n }\n\n // Quick fix for badges in buttons\n .btn & {\n position: relative;\n top: -1px;\n }\n\n .btn-xs &,\n .btn-group-xs > .btn & {\n top: 0;\n padding: 1px 5px;\n }\n\n // Hover state, but only for links\n a& {\n &:hover,\n &:focus {\n color: @badge-link-hover-color;\n text-decoration: none;\n cursor: pointer;\n }\n }\n\n // Account for badges in navs\n .list-group-item.active > &,\n .nav-pills > .active > a > & {\n color: @badge-active-color;\n background-color: @badge-active-bg;\n }\n\n .list-group-item > & {\n float: right;\n }\n\n .list-group-item > & + & {\n margin-right: 5px;\n }\n\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding-top: @jumbotron-padding;\n padding-bottom: @jumbotron-padding;\n margin-bottom: @jumbotron-padding;\n color: @jumbotron-color;\n background-color: @jumbotron-bg;\n\n h1,\n .h1 {\n color: @jumbotron-heading-color;\n }\n\n p {\n margin-bottom: (@jumbotron-padding / 2);\n font-size: @jumbotron-font-size;\n font-weight: 200;\n }\n\n > hr {\n border-top-color: darken(@jumbotron-bg, 10%);\n }\n\n .container &,\n .container-fluid & {\n border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container\n padding-left: (@grid-gutter-width / 2);\n padding-right: (@grid-gutter-width / 2);\n }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding-top: (@jumbotron-padding * 1.6);\n padding-bottom: (@jumbotron-padding * 1.6);\n\n .container &,\n .container-fluid & {\n padding-left: (@jumbotron-padding * 2);\n padding-right: (@jumbotron-padding * 2);\n }\n\n h1,\n .h1 {\n font-size: @jumbotron-heading-font-size;\n }\n }\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n display: block;\n padding: @thumbnail-padding;\n margin-bottom: @line-height-computed;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: 1px solid @thumbnail-border;\n border-radius: @thumbnail-border-radius;\n .transition(border .2s ease-in-out);\n\n > img,\n a > img {\n &:extend(.img-responsive);\n margin-left: auto;\n margin-right: auto;\n }\n\n // Add a hover state for linked versions only\n a&:hover,\n a&:focus,\n a&.active {\n border-color: @link-color;\n }\n\n // Image captions\n .caption {\n padding: @thumbnail-caption-padding;\n color: @thumbnail-caption-color;\n }\n}\n","//\n// Alerts\n// --------------------------------------------------\n\n\n// Base styles\n// -------------------------\n\n.alert {\n padding: @alert-padding;\n margin-bottom: @line-height-computed;\n border: 1px solid transparent;\n border-radius: @alert-border-radius;\n\n // Headings for larger alerts\n h4 {\n margin-top: 0;\n // Specified for the h4 to prevent conflicts of changing @headings-color\n color: inherit;\n }\n\n // Provide class for links that match alerts\n .alert-link {\n font-weight: @alert-link-font-weight;\n }\n\n // Improve alignment and spacing of inner content\n > p,\n > ul {\n margin-bottom: 0;\n }\n\n > p + p {\n margin-top: 5px;\n }\n}\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.\n.alert-dismissible {\n padding-right: (@alert-padding + 20);\n\n // Adjust close link position\n .close {\n position: relative;\n top: -2px;\n right: -21px;\n color: inherit;\n }\n}\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n.alert-success {\n .alert-variant(@alert-success-bg; @alert-success-border; @alert-success-text);\n}\n\n.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\n}\n\n.alert-danger {\n .alert-variant(@alert-danger-bg; @alert-danger-border; @alert-danger-text);\n}\n","// Alerts\n\n.alert-variant(@background; @border; @text-color) {\n background-color: @background;\n border-color: @border;\n color: @text-color;\n\n hr {\n border-top-color: darken(@border, 5%);\n }\n .alert-link {\n color: darken(@text-color, 10%);\n }\n}\n","//\n// Progress bars\n// --------------------------------------------------\n\n\n// Bar animations\n// -------------------------\n\n// WebKit\n@-webkit-keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n// Spec and IE10+\n@keyframes progress-bar-stripes {\n from { background-position: 40px 0; }\n to { background-position: 0 0; }\n}\n\n\n// Bar itself\n// -------------------------\n\n// Outer container\n.progress {\n overflow: hidden;\n height: @line-height-computed;\n margin-bottom: @line-height-computed;\n background-color: @progress-bg;\n border-radius: @progress-border-radius;\n .box-shadow(inset 0 1px 2px rgba(0,0,0,.1));\n}\n\n// Bar of progress\n.progress-bar {\n float: left;\n width: 0%;\n height: 100%;\n font-size: @font-size-small;\n line-height: @line-height-computed;\n color: @progress-bar-color;\n text-align: center;\n background-color: @progress-bar-bg;\n .box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));\n .transition(width .6s ease);\n}\n\n// Striped bars\n//\n// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar-striped` class, which you just add to an existing\n// `.progress-bar`.\n.progress-striped .progress-bar,\n.progress-bar-striped {\n #gradient > .striped();\n background-size: 40px 40px;\n}\n\n// Call animation for the active one\n//\n// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the\n// `.progress-bar.active` approach.\n.progress.active .progress-bar,\n.progress-bar.active {\n .animation(progress-bar-stripes 2s linear infinite);\n}\n\n\n// Variations\n// -------------------------\n\n.progress-bar-success {\n .progress-bar-variant(@progress-bar-success-bg);\n}\n\n.progress-bar-info {\n .progress-bar-variant(@progress-bar-info-bg);\n}\n\n.progress-bar-warning {\n .progress-bar-variant(@progress-bar-warning-bg);\n}\n\n.progress-bar-danger {\n .progress-bar-variant(@progress-bar-danger-bg);\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Progress bars\n\n.progress-bar-variant(@color) {\n background-color: @color;\n\n // Deprecated parent class requirement as of v3.2.0\n .progress-striped & {\n #gradient > .striped();\n }\n}\n",".media {\n // Proper spacing between instances of .media\n margin-top: 15px;\n\n &:first-child {\n margin-top: 0;\n }\n}\n\n.media,\n.media-body {\n zoom: 1;\n overflow: hidden;\n}\n\n.media-body {\n width: 10000px;\n}\n\n.media-object {\n display: block;\n\n // Fix collapse in webkit from max-width: 100% and display: table-cell.\n &.img-thumbnail {\n max-width: none;\n }\n}\n\n.media-right,\n.media > .pull-right {\n padding-left: 10px;\n}\n\n.media-left,\n.media > .pull-left {\n padding-right: 10px;\n}\n\n.media-left,\n.media-right,\n.media-body {\n display: table-cell;\n vertical-align: top;\n}\n\n.media-middle {\n vertical-align: middle;\n}\n\n.media-bottom {\n vertical-align: bottom;\n}\n\n// Reset margins on headings for tighter default spacing\n.media-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n\n// Media list variation\n//\n// Undo default ul/ol styles\n.media-list {\n padding-left: 0;\n list-style: none;\n}\n","//\n// List groups\n// --------------------------------------------------\n\n\n// Base class\n//\n// Easily usable on