diff --git a/SickBeard.py b/SickBeard.py index ed1b91ded35b9ee5f118d428b9418155456ba560..7337435ec6908a8fa5cdc67a081d3dc429e328d3 100755 --- a/SickBeard.py +++ b/SickBeard.py @@ -526,16 +526,7 @@ class SickRage(object): if install_type in ('git', 'source'): popen_list = [sys.executable, sickbeard.MY_FULLNAME] elif install_type == 'win': - if hasattr(sys, 'frozen'): - # c:\dir\to\updater.exe 12345 c:\dir\to\sickbeard.exe - popen_list = [os.path.join(sickbeard.PROG_DIR, 'updater.exe'), str(sickbeard.PID), - sys.executable] - else: - logger.log(u"Unknown SR launch method, please file a bug report about this", logger.ERROR) - popen_list = [sys.executable, os.path.join(sickbeard.PROG_DIR, 'updater.py'), - str(sickbeard.PID), - sys.executable, - sickbeard.MY_FULLNAME] + logger.log(u"You are using a binary Windows build of SickRage. Please switch to using git.", logger.ERROR) if popen_list and not sickbeard.NO_RESTART: popen_list += sickbeard.MY_ARGS diff --git a/googlecode_upload.py b/googlecode_upload.py deleted file mode 100644 index 1b93492508acd1ab892735445a95690a7a32ce54..0000000000000000000000000000000000000000 --- a/googlecode_upload.py +++ /dev/null @@ -1,250 +0,0 @@ -#!/usr/bin/env python2 -# -# Copyright 2006, 2007 Google Inc. All Rights Reserved. -# Author: danderson@google.com (David Anderson) -# -# Script for uploading files to a Google Code project. -# -# This is intended to be both a useful script for people who want to -# streamline project uploads and a reference implementation for -# uploading files to Google Code projects. -# -# To upload a file to Google Code, you need to provide a path to the -# file on your local machine, a small summary of what the file is, a -# project name, and a valid account that is a member or owner of that -# project. You can optionally provide a list of labels that apply to -# the file. The file will be uploaded under the same name that it has -# in your local filesystem (that is, the "basename" or last path -# component). Run the script with '--help' to get the exact syntax -# and available options. -# -# Note that the upload script requests that you enter your -# googlecode.com password. This is NOT your Gmail account password! -# This is the password you use on googlecode.com for committing to -# Subversion and uploading files. You can find your password by going -# to http://code.google.com/hosting/settings when logged in with your -# Gmail account. If you have already committed to your project's -# Subversion repository, the script will automatically retrieve your -# credentials from there (unless disabled, see the output of '--help' -# for details). -# -# If you are looking at this script as a reference for implementing -# your own Google Code file uploader, then you should take a look at -# the upload() function, which is the meat of the uploader. You -# basically need to build a multipart/form-data POST request with the -# right fields and send it to https://PROJECT.googlecode.com/files . -# Authenticate the request using HTTP Basic authentication, as is -# shown below. -# -# Licensed under the terms of the Apache Software License 2.0: -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Questions, comments, feature requests and patches are most welcome. -# Please direct all of these to the Google Code users group: -# http://groups.google.com/group/google-code-hosting - -"""Google Code file uploader script. -""" - -__author__ = 'danderson@google.com (David Anderson)' - -import httplib -import os.path -import optparse -import getpass -import base64 -import sys - - -def upload(file, project_name, user_name, password, summary, labels=None): - """Upload a file to a Google Code project's file server. - - Args: - file: The local path to the file. - project_name: The name of your project on Google Code. - user_name: Your Google account name. - password: The googlecode.com password for your account. - Note that this is NOT your global Google Account password! - summary: A small description for the file. - labels: an optional list of label strings with which to tag the file. - - Returns: a tuple: - http_status: 201 if the upload succeeded, something else if an - error occured. - http_reason: The human-readable string associated with http_status - file_url: If the upload succeeded, the URL of the file on Google - Code, None otherwise. - """ - # The login is the user part of user@gmail.com. If the login provided - # is in the full user@domain form, strip it down. - if user_name.endswith('@gmail.com'): - user_name = user_name[:user_name.index('@gmail.com')] - - form_fields = [('summary', summary)] - if labels is not None: - form_fields.extend([('label', l.strip()) for l in labels]) - - content_type, body = encode_upload_request(form_fields, file) - - upload_host = '%s.googlecode.com' % project_name - upload_uri = '/files' - auth_token = base64.b64encode('%s:%s'% (user_name, password)) - headers = { - 'Authorization': 'Basic %s' % auth_token, - 'User-Agent': 'Googlecode.com uploader v0.9.4', - 'Content-Type': content_type, - } - - server = httplib.HTTPSConnection(upload_host) - server.request('POST', upload_uri, body, headers) - resp = server.getresponse() - server.close() - - if resp.status == 201: - location = resp.getheader('Location', None) - else: - location = None - return resp.status, resp.reason, location - - -def encode_upload_request(fields, file_path): - """Encode the given fields and file into a multipart form body. - - fields is a sequence of (name, value) pairs. file is the path of - the file to upload. The file will be uploaded to Google Code with - the same file name. - - Returns: (content_type, body) ready for httplib.HTTP instance - """ - BOUNDARY = '----------Googlecode_boundary_reindeer_flotilla' - CRLF = '\r\n' - - body = [] - - # Add the metadata about the upload first - for key, value in fields: - body.extend( - ['--' + BOUNDARY, - 'Content-Disposition: form-data; name="%s"' % key, - '', - value, - ]) - - # Now add the file itself - file_name = os.path.basename(file_path) - f = open(file_path, 'rb') - file_content = f.read() - f.close() - - body.extend( - ['--' + BOUNDARY, - 'Content-Disposition: form-data; name="filename"; filename="%s"' - % file_name, - # The upload server determines the mime-type, no need to set it. - 'Content-Type: application/octet-stream', - '', - file_content, - ]) - - # Finalize the form body - body.extend(['--' + BOUNDARY + '--', '']) - - return 'multipart/form-data; boundary=%s' % BOUNDARY, CRLF.join(body) - - -def upload_find_auth(file_path, project_name, summary, labels=None, - user_name=None, password=None, tries=3): - """Find credentials and upload a file to a Google Code project's file server. - - file_path, project_name, summary, and labels are passed as-is to upload. - - Args: - file_path: The local path to the file. - project_name: The name of your project on Google Code. - summary: A small description for the file. - labels: an optional list of label strings with which to tag the file. - config_dir: Path to Subversion configuration directory, 'none', or None. - user_name: Your Google account name. - tries: How many attempts to make. - """ - - while tries > 0: - if user_name is None: - # Read username if not specified or loaded from svn config, or on - # subsequent tries. - sys.stdout.write('Please enter your googlecode.com username: ') - sys.stdout.flush() - user_name = sys.stdin.readline().rstrip() - if password is None: - # Read password if not loaded from svn config, or on subsequent tries. - print 'Please enter your googlecode.com password.' - print '** Note that this is NOT your Gmail account password! **' - print 'It is the password you use to access Subversion repositories,' - print 'and can be found here: http://code.google.com/hosting/settings' - password = getpass.getpass() - - status, reason, url = upload(file_path, project_name, user_name, password, - summary, labels) - # Returns 403 Forbidden instead of 401 Unauthorized for bad - # credentials as of 2007-07-17. - if status in [httplib.FORBIDDEN, httplib.UNAUTHORIZED]: - # Rest for another try. - user_name = password = None - tries = tries - 1 - else: - # We're done. - break - - return status, reason, url - - -def main(): - parser = optparse.OptionParser(usage='googlecode-upload.py -s SUMMARY ' - '-p PROJECT [options] FILE') - parser.add_option('-s', '--summary', dest='summary', - help='Short description of the file') - parser.add_option('-p', '--project', dest='project', - help='Google Code project name') - parser.add_option('-u', '--user', dest='user', - help='Your Google Code username') - parser.add_option('-w', '--password', dest='password', - help='Your Google Code password') - parser.add_option('-l', '--labels', dest='labels', - help='An optional list of comma-separated labels to attach ' - 'to the file') - - options, args = parser.parse_args() - - if not options.summary: - parser.error('File summary is missing.') - elif not options.project: - parser.error('Project name is missing.') - elif len(args) < 1: - parser.error('File to upload not provided.') - elif len(args) > 1: - parser.error('Only one file may be specified.') - - file_path = args[0] - - if options.labels: - labels = options.labels.split(',') - else: - labels = None - -def upload_file(file, project, summary, labels, username, password): - - status, reason, url = upload_find_auth(file, project, - summary, labels, - username, password) - if url: - print 'The file was uploaded successfully.' - print 'URL: %s' % url - return 0 - else: - print 'An error occurred. Your file was not uploaded.' - print 'Google Code upload server said: %s (%s)' % (reason, status) - return 1 - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/gui/slick/css/browser.css b/gui/slick/css/browser.css index db5957ddcc634423e2ce908373091b3170dc42e9..2a3ae33d679e50735283b2ea5c0e1fd74968e7f5 100644 --- a/gui/slick/css/browser.css +++ b/gui/slick/css/browser.css @@ -1,50 +1,59 @@ #fileBrowserDialog { - max-height: 480px; - overflow-y: auto; + max-height: 480px; + overflow-y: auto; } + #fileBrowserDialog ul { - margin: 0; - padding: 0; + margin: 0; + padding: 0; } + #fileBrowserDialog ul li { - margin: 2px 0; - cursor: pointer; - list-style-type: none; + margin: 2px 0; + cursor: pointer; + list-style-type: none; } + #fileBrowserDialog ul li a { - display: block; - padding: 4px 0; + display: block; + padding: 4px 0; } + #fileBrowserDialog ul li a:hover { - color: #09A2FF; - background: none; + color: #09A2FF; + background: none; } + #fileBrowserDialog ul li a span.ui-icon { - margin: 0 4px; - float: left; + margin: 0 4px; + float: left; } -/* jquery ui autocomplete overrides to make it look more like the old autocomplete */ +/* jQuery-UI autocomplete overrides to make it look more like the old autocomplete */ .ui-autocomplete { - max-height: 180px; - overflow-y: auto; - /* prevent horizontal scrollbar */ - overflow-x: hidden; - /* add padding to account for vertical scrollbar */ - padding-right: 20px; + max-height: 180px; + overflow-y: auto; + /* prevent horizontal scrollbar */ + overflow-x: hidden; + /* add padding to account for vertical scrollbar */ + padding-right: 20px; } + * html .ui-autocomplete { - height: 180px; + height: 180px; } + .ui-menu .ui-menu-item { - background-color: #eeeeee; + background-color: #eeeeee; } + .ui-menu .ui-menu-item-alternate{ - background-color: #ffffff; + background-color: #ffffff; } + .ui-menu a.ui-state-hover{ - background: none; - background-color: #0A246A; - color: #ffffff; + background: none; + background-color: #0A246A; + color: #ffffff; } diff --git a/gui/slick/css/dark.css b/gui/slick/css/dark.css index e608042ae82ebc4e602b5aead6f9328041c66ae9..ccb8734ac2dad9b45d5644ff1f414f42446f1f16 100644 --- a/gui/slick/css/dark.css +++ b/gui/slick/css/dark.css @@ -1,305 +1,74 @@ /* ======================================================================= -fonts +inc_top.mako ========================================================================== */ -/* Open Sans */ -/* Regular */ -@font-face { - font-family: 'Open Sans'; - - src: url('fonts/OpenSans-Regular-webfont.eot'); - src: url('fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Regular-webfont.woff') format('woff'), - url('fonts/OpenSans-Regular-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Regular-webfont.svg#OpenSansRegular') format('svg'); - font-weight: normal; - font-weight: 400; - font-style: normal; -} - -/* Italic */ -@font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-Italic-webfont.eot'); - src: url('fonts/OpenSans-Italic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Italic-webfont.woff') format('woff'), - url('fonts/OpenSans-Italic-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Italic-webfont.svg#OpenSansItalic') format('svg'); - font-weight: normal; - font-weight: 400; - font-style: italic; -} - -/* Light */ -@font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-Light-webfont.eot'); - src: url('fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Light-webfont.woff') format('woff'), - url('fonts/OpenSans-Light-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Light-webfont.svg#OpenSansLight') format('svg'); - font-weight: 200; - font-style: normal; -} - -/* Light Italic */ -@font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-LightItalic-webfont.eot'); - src: url('fonts/OpenSans-LightItalic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-LightItalic-webfont.woff') format('woff'), - url('fonts/OpenSans-LightItalic-webfont.ttf') format('truetype'), - url('fonts/OpenSans-LightItalic-webfont.svg#OpenSansLightItalic') format('svg'); - font-weight: 200; - font-style: italic; -} - -/* Semibold */ -@font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-Semibold-webfont.eot'); - src: url('fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Semibold-webfont.woff') format('woff'), - url('fonts/OpenSans-Semibold-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg'); - font-weight: 600; - font-style: normal; -} - -/* Semibold Italic */ -@font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-SemiboldItalic-webfont.eot'); - src: url('fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'), - url('fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'), - url('fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') format('svg'); - font-weight: 600; - font-style: italic; -} - -/* Bold */ -@font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-Semibold-webfont.eot'); - src: url('fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Semibold-webfont.woff') format('woff'), - url('fonts/OpenSans-Semibold-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg'); - font-weight: bold; - font-weight: 700; - font-style: normal; -} - -/* Bold Italic */ -@font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-SemiboldItalic-webfont.eot'); - src: url('fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'), - url('fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'), - url('fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') format('svg'); - font-weight: bold; - font-weight: 700; - font-style: italic; -} - -/* Extra Bold */ -@font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-Bold-webfont.eot'); - src: url('fonts/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Bold-webfont.woff') format('woff'), - url('fonts/OpenSans-Bold-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Bold-webfont.svg#OpenSansBold') format('svg'); - font-weight: 900; - font-style: normal; -} - -/* Extra Bold Italic */ -@font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-BoldItalic-webfont.eot'); - src: url('fonts/OpenSans-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-BoldItalic-webfont.woff') format('woff'), - url('fonts/OpenSans-BoldItalic-webfont.ttf') format('truetype'), - url('fonts/OpenSans-BoldItalic-webfont.svg#OpenSansBoldItalic') format('svg'); - font-weight: 900; - font-style: italic; -} - -/* Droid Sans */ -@font-face { - font-family: 'droid_sans_mono'; - src: url('fonts/droidsansmono-webfont.eot'); - src: url('fonts/droidsansmono-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/droidsansmono-webfont.woff') format('woff'), - url('fonts/droidsansmono-webfont.ttf') format('truetype'), - url('fonts/droidsansmono-webfont.svg#droid_sans_monoregular') format('svg'); - font-weight: normal; - font-style: normal; -} - - -/* ======================================================================= -inc_top.tmpl -========================================================================== */ - -.navbaricon { - margin-top: -15px; - margin-bottom: -15px; -} - -#contentWrapper { -/* background: url("../images/bg.png") repeat 0 0 transparent; */ -} - -[class^="icon-"], -[class*=" icon-"] { - background-image: url("../images/glyphicons-halflings.png"); -} - -.icon-white { - background-image: url("../images/glyphicons-halflings-white.png"); -} - -.dropdown-menu li > a:hover > [class^="menu-icon-"], -.dropdown-menu li > a:hover > [class*=" menu-icon-"] { - background-image: url("../images/menu/menu-icons-white.png"); -} - -[class^="icon16-"], -[class*=" icon16-"] { - background-image: url("../images/glyphicons-config.png"); -} - -.ui-autocomplete-loading { - background: white url("../images/loading16.gif") right center no-repeat; -} - -.browserDialog.busy .ui-dialog-buttonpane { - background: url("../images/loading.gif") 10px 50% no-repeat !important; -} - -.ui-progressbar .ui-progressbar-overlay { - background: url("../css/lib/images/animated-overlay.gif"); -} - -.ui-dialog, -.ui-dialog-buttonpane { - background: #2a2a2a !important;; -} -.ui-accordion-content, -.ui-tabs-panel { - background: #ededed !important; - background-image: none !important; +.ui-dialog, +.ui-dialog-buttonpane { + background: #2a2a2a !important; } -.ui-widget-content { - background: #606060; - border: 1px solid #111; +.ui-widget-content { + background: #606060; + border: 1px solid #111; color: #fff; } .ui-widget-content a { - color: #fff; + color: #fff; } .ui-widget-content a:hover { - color: #09A2FF; + color: #09A2FF; text-decoration: none; } -.ui-widget-header { +.ui-widget-header { background: #3d3d3d; border: 1px solid #111; color: #fff; } -.ui-state-default, -.ui-widget-content .ui-state-default, -.ui-widget-header .ui-state-default { +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { border: 1px solid #111; } -.ui-state-hover, -.ui-widget-content .ui-state-hover, -.ui-widget-header .ui-state-hover, -.ui-state-focus, -.ui-widget-content .ui-state-focus, -.ui-widget-header .ui-state-focus { - background: #3d3d3d; -} - -.ui-state-active, -.ui-widget-content .ui-state-active, -.ui-widget-header .ui-state-active { +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus { background: #3d3d3d; } -.ui-state-highlight, -.ui-widget-content .ui-state-highlight, -.ui-widget-header .ui-state-highlight { - background: #fbf9ee url("../css/lib/images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x; -} - -.ui-state-error, -.ui-widget-content .ui-state-error, -.ui-widget-header .ui-state-error { - background: #fef1ec url("../css/lib/images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x; -} - -.ui-icon, -.ui-widget-content .ui-icon { - background-image: url("../css/lib/images/ui-icons_ffffff_256x240.png"); -} - -.ui-widget-header .ui-icon { - background-image: url("../css/lib/images/ui-icons_222222_256x240.png"); -} - -.ui-state-default .ui-icon { - background-image: url('../css/lib/images/ui-icons_09a2ff_256x240.png'); -} - -.ui-state-hover .ui-icon, -.ui-state-focus .ui-icon { - background-image: url("../css/lib/images/ui-icons_222222_256x240.png"); -} - -.ui-state-active .ui-icon { - background-image: url("../css/lib/images/ui-icons_8c291d_256x240.png"); -} - -.ui-state-highlight .ui-icon { - background-image: url("../css/lib/images/ui-icons_2e83ff_256x240.png"); -} - -.ui-state-error .ui-icon, -.ui-state-error-text .ui-icon { - background-image: url("../css/lib/images/ui-icons_cd0a0a_256x240.png"); +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active { + background: #3d3d3d; } -.ui-widget-overlay { - background: #000000 url("../css/lib/images/ui-bg_flat_0_000000_40x100.png") 50% 50% repeat-x; +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url("../css/lib/images/ui-icons_ffffff_256x240.png"); } -.ui-widget-shadow { - background: #000000 url("../css/lib/images/ui-bg_flat_0_000000_40x100.png") 50% 50% repeat-x; +.ui-state-default .ui-icon { + background-image: url('../css/lib/images/ui-icons_09a2ff_256x240.png'); } -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { - color: #140F06; - text-decoration: none; +.ui-widget-overlay { + background: #000000 url("../css/lib/images/ui-bg_flat_0_000000_40x100.png") 50% 50% repeat-x; } .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { - color: #fff; - text-decoration: none; + color: #fff; + text-decoration: none; } .ui-dialog .ui-dialog-titlebar-close { - background: #333; + background: #333; } .ui-tabs { @@ -308,58 +77,19 @@ inc_top.tmpl border-width: 0px; } -.ui-tabs .ui-tabs-nav { - padding-left: 0px; - background: transparent; - border-width: 0px 0px 0px 0px; - -moz-border-radius: 0px; - -webkit-border-radius: 0px; - border-radius: 0px; -} - -.ui-tabs .ui-tabs-panel { +.ui-tabs .ui-tabs-panel { background-color: #3d3d3d !important; border: 1px solid #111 !important; } -.ui-tabs .ui-tabs-nav li.ui-tabs-active { - border-top-left-radius: 5px; - border-top-right-radius: 5px; -} - .ui-tabs-nav > :not(.ui-tabs-active){ background: #333; border-top-left-radius: 5px; border-top-right-radius: 5px; } -#content { - width: 95%; - min-width: 875px; - padding: 15px; - margin-left: auto; - margin-right: auto; - clear: both; -} - -#SubMenu { - padding-right: 20px; - clear: both; - font-size: 12px; - float: right; -} - -.upgrade-notification { - width: 600px; - text-align: center; - margin-left: auto; - margin-right: auto; - margin-top: 50px; - margin-bottom: 0px; -} - [class^="menu-icon-"], [class*=" menu-icon-"] { - background: url("../images/menu/menu-icons-white.png"); + background: url("../images/menu/menu-icons-white.png"); height: 16px; width: 16px; display: inline-block; @@ -368,18 +98,6 @@ inc_top.tmpl float: left; } -@media(max-width:767px){ - [class^="menu-icon-"], [class*=" menu-icon-"] { - background: url("../images/menu/menu-icons-white.png"); - height: 16px; - width: 16px; - display: inline-block; - position: relative; - top: 2px; - float: left; - } -} - .menu-icon-addshow { background-position: 0px 0px; } @@ -461,7 +179,7 @@ inc_top.tmpl } [class^="submenu-icon-"], [class*=" submenu-icon-"] { - background: url("../images/menu/menu-icons-white.png"); + background: url("../images/menu/menu-icons-white.png"); height: 16px; width: 16px; } @@ -491,7 +209,7 @@ inc_top.tmpl } /* ======================================================================= -inc_bottom.tmpl +inc_bottom.mako ========================================================================== */ .footer { @@ -507,47 +225,33 @@ inc_bottom.tmpl display: inline; } - /* ======================================================================= -home.tmpl +home.mako ========================================================================== */ .imgbanner .banner { - border: 1px solid #111; - overflow: hidden; - height: 66px; - overflow: hidden; - border-radius: 8px; - vertical-align: top; - width: 360px; + border: 1px solid #111; + overflow: hidden; + height: 66px; + overflow: hidden; + border-radius: 8px; + vertical-align: top; + width: 360px; display: block; margin-left: auto; margin-right: auto; } .imgsmallposter .small { - height: 66px; - overflow: hidden; - border-radius: 3px; - vertical-align: middle; - width: 45px; + height: 66px; + overflow: hidden; + border-radius: 3px; + vertical-align: middle; + width: 45px; border: 1px solid #111; margin-right: 5px; } -.search { - margin-bottom: 10px; -} - -.ui-progressbar { - height: 20px; - line-height: 18px; -} - -.ui-progressbar .ui-progressbar-value { - box-sizing: content-box !important; -} - .progressbarText { position: absolute; top: 0; @@ -561,62 +265,8 @@ home.tmpl color: #fff; } -.progress-100 { - background-image: -moz-linear-gradient(#395f07, #2a4705) !important; - background-image: linear-gradient(#395f07, #2a4705) !important; - background-image: -webkit-linear-gradient(#395f07, #2a4705) !important; - background-image: -o-linear-gradient(#395f07, #2a4705) !important; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; -} - -.progress-80 { - background-image: -moz-linear-gradient(#a6cf41, #5b990d) !important; - background-image: linear-gradient(#a6cf41, #5b990d) !important; - background-image: -webkit-linear-gradient(#a6cf41, #5b990d) !important; - background-image: -o-linear-gradient(#a6cf41, #5b990d) !important; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; -} - -.progress-60 { - background-image: -moz-linear-gradient(#fad440, #f2a70d) !important; - background-image: linear-gradient(#fad440, #f2a70d) !important; - background-image: -webkit-linear-gradient(#fad440, #f2a70d) !important; - background-image: -o-linear-gradient(#fad440, #f2a70d) !important; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; -} - -.progress-40 { - background-image: -moz-linear-gradient(#fab543, #f2700d) !important; - background-image: linear-gradient(#fab543, #f2700d) !important; - background-image: -webkit-linear-gradient(#fab543, #f2700d) !important; - background-image: -o-linear-gradient(#fab543, #f2700d) !important; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; -} - -.progress-20 { - background-image: -moz-linear-gradient(#da5945, #b11a10) !important; - background-image: linear-gradient(#da5945, #b11a10) !important; - background-image: -webkit-linear-gradient(#da5945, #b11a10) !important; - background-image: -o-linear-gradient(#da5945, #b11a10) !important; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; -} - -#container, #container-anime { - margin: 0 auto; -} - .show { - margin: 12px; + margin: 12px; width: 188px; height: 352px; background-color: #333; @@ -624,73 +274,13 @@ home.tmpl border-radius: 6px; } -.show-image { - overflow: hidden; - height: 273px; - width: 186px; - border-top-left-radius: 5px; - border-top-right-radius: 5px; -} - -.show .ui-progressbar { - height: 7px !important; - top: -2px; -} - -.show .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { - border-bottom-right-radius: 0px; -} - -.show .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { - border-bottom-left-radius: 0px; -} - -.show .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { - border-top-right-radius: 0px; -} - -.show .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { - border-top-left-radius: 0px; -} - -.show .ui-widget-content { - border-top: 1px solid #111; - border-bottom: 1px solid #111; - border-left: 0px; - border-right: 0px; -} - -.show .progress-80 { - border-radius: 0px; -} - -.show .progress-60 { - border-radius: 0px; -} - -.show .progress-40 { - border-radius: 0px; -} - -.show .progress-20 { - border-radius: 0px; -} - -.show-title { - position: relative; - overflow: hidden; - white-space: nowrap; - font-size: 11px; - margin: 4px 4px 0px 4px; -} - .show-title:after { content: ""; pointer-events: none; position: absolute; width: 20px; height: 100%; - top: 0; + top: 0; right: 0; background-image: -webkit-linear-gradient(right, rgba(51, 51, 51, 1), rgba(51, 51, 51, 0)); background-image: -moz-linear-gradient(right, rgba(51, 51, 51, 1), rgba(51, 51, 51, 0)); @@ -699,21 +289,13 @@ home.tmpl background-image: linear-gradient(to left, rgba(51, 51, 51, 1), rgba(51, 51, 51, 0)); } -.show-date { - position: relative; - overflow: hidden; - white-space: nowrap; - font-size: 11px; - margin: 0px 4px 4px 4px; -} - .show-date:after { content: ""; pointer-events: none; position: absolute; width: 20px; height: 100%; - top: 0; + top: 0; right: 0; background-image: -webkit-linear-gradient(right, rgba(51, 51, 51, 1), rgba(51, 51, 51, 0)); background-image: -moz-linear-gradient(right, rgba(51, 51, 51, 1), rgba(51, 51, 51, 0)); @@ -722,126 +304,33 @@ home.tmpl background-image: linear-gradient(to left, rgba(51, 51, 51, 1), rgba(51, 51, 51, 0)); } -.show-table { - text-align:center; - vertical-align:middle; - width: 33% -} - -.show-add { - font-size: 11px; - text-align: left; - display: block; -} - -.show-status { - font-size: 11px; - text-align: left; - display: block; -} - -.show-network-image { - width: 50px; - height: auto; -} - -.show-dlstats { - font-size: 11px; - text-align: left; - display: block; - margin-left: 4px; -} - -.show-quality { - font-size: 11px; - text-align: right; - display: block; - margin-right: 4px; -} - -#sort-by { - display: inline; - list-style-type: none; - padding: 0; - margin-left: 5px; -} - -#sort-by ul, #sort-by li { - display: inline; - margin: 0; - padding: 0; -} - -.posterview { - margin: 0 auto; -} - td.tvShow a { - color: #fff; - text-decoration: none; + color: #fff; + text-decoration: none; } td.tvShow a:hover { - cursor: pointer; - color: #09A2FF; + cursor: pointer; + color: #09A2FF; } -#popover-target label { - margin: 0 5px; - display: block; -} -#popover-target input { - margin-left: 5px; -} .popover { - margin-left: -50px; - background-color: #333; + margin-left: -50px; + background-color: #333; } .popover-content { - background-color: #333; + background-color: #333; } .popover.bottom .arrow:after { - border-bottom-color: #333; + border-bottom-color: #333; } /* ======================================================================= -home_addShows.tmpl +home_addShows.mako ========================================================================== */ -#addShowPortal { - width: 700px; - padding: 10px 0; - margin-right: auto; - margin-left: auto; -} - -#addShowPortal a { - padding: 10px; -} - -div.button { - display: table-cell; - vertical-align: middle; - padding-left: 10px; -} - -div.buttontext { - display: table-cell; - padding-left: 20px; - text-align: left; - white-space: normal; -} - -div.buttontext h3 { - margin-top: 10px; -} - -div.buttontext p { - font-size: 13px; -} - .icon-addnewshow { background-image: url("../images/addshows/add-new32-white.png"); width: 32px; @@ -867,22 +356,8 @@ div.buttontext p { } /* ======================================================================= -home_newShow.tmpl +home_newShow.mako ========================================================================== */ -#addShowForm, #recommendedShowsForm { - width: 800px; - margin-left: auto; - margin-right: auto; - padding: 10px 0; - font-size:13px; -} - -#newShowPortal { - width: 960px; - padding: 10px 0; - margin-right: auto; - margin-left: auto; -} #displayText { padding: 8px; @@ -892,24 +367,10 @@ home_newShow.tmpl border: 1px solid #111; } -#searchResults input[type="radio"] { - vertical-align: -2px; -} - /* ======================================================================= -home_addExistingShow.tmpl +home_addExistingShow.mako ========================================================================== */ -.existingtabs { - padding: 1em 1.4em; -} - -ul#rootDirStaticList { - margin-right: auto; - margin-left: auto; - text-align: left; -} - ul#rootDirStaticList li { padding: 4px 5px 4px 5px; margin: 2px; @@ -918,93 +379,22 @@ ul#rootDirStaticList li { background: #3d3d3d; } -ul#rootDirStaticList li label { - margin-top: 5px; - margin-bottom: 5px; -} - -ul#rootDirStaticList li input[type="checkbox"] { - vertical-align: -2px; -} - /* ======================================================================= -home_trendingShows.tmpl +home_trendingShows.mako ========================================================================== */ -.traktShowTitleIcons { - float: right; - padding-right: 4px; - padding-bottom: 4px; -} - -.traktContainer p { - padding-top: 2px; -} - -.traktContainer p img { - position: relative; - top: -2px; -} - -.traktContainer p, .traktContainer i { - white-space: nowrap; - font-size: 12px; - overflow: hidden; -/* text-shadow: 1px 1px 0px #000;*/ - padding-left: 4px; - margin: 0; -} - .traktContainer { - margin: 12px; + margin: 12px; width: 188px; background-color: #333; border: 1px solid #111; border-radius: 6px; } -.trakt-image { - overflow: hidden; - height: 273px; - width: 186px; - border-top-left-radius: 5px; - border-top-right-radius: 5px; - border-bottom: 1px solid #111; -} - - -/* ======================================================================= -home_postprocess.tmpl -========================================================================== */ - -#postProcess { - width: 800px; - padding-top: 10px; - margin-right: auto; - margin-left: auto; -} - - /* ======================================================================= -displayShow.tmpl +displayShow.mako ========================================================================== */ -#posterCol { - float: left; - margin-right: 10px; - margin-bottom: 20px; -} - -#showCol { - overflow: hidden; - margin-bottom: 20px; -} - -.navShow { - display: inline; - cursor: pointer; -} - #prevShow, #nextShow, #topcontrol { @@ -1013,71 +403,25 @@ displayShow.tmpl } h1.title { - padding-bottom: 12px; - margin-bottom: 15px; - line-height: 30px; - text-align: left; - text-rendering: optimizelegibility; - border-bottom: 1px solid #555; + padding-bottom: 12px; + margin-bottom: 15px; + line-height: 30px; + text-align: left; + text-rendering: optimizelegibility; + border-bottom: 1px solid #555; } -.displayspecials { - position: relative; - top: -24px; -} - -#showinfo { - cursor: default; -} - -#showinfo { - display: inline-block; - position: relative; - top: -3px; -} - -span.imdbstars { - display: inline-block; - vertical-align: top; - cursor: help; - margin-top: 4px; -} - -span.imdbstars, span.imdbstars > * { - height: 12px; - background: url(../images/rating.png) 0 -12px repeat-x; - width: 120px; - display: inline-block; - vertical-align: top; -} - -span.imdbstars > * { - background-position: 0 0; - max-width:120px; -} - -ul.tags { - list-style-type: none; - position: relative; - top: -5px; - margin-left: -40px; -} - -ul.tags li { - margin-right: 4px; - margin-bottom: 5px; - padding: 3px 4px 3px 25px; - background: url(../images/tag.png) no-repeat scroll 5px 4px #15528F; - border-radius: 3px; - border: 1px solid #111; - color: #FFF; - font: 14px/18px "Open Sans", "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif; - text-shadow: 0px 1px rgba(0, 0, 0, 0.8); - float: left; -} - -ul.tags li a{ - color: #FFF; +ul.tags li { + margin-right: 4px; + margin-bottom: 5px; + padding: 3px 4px 3px 25px; + background: url(../images/tag.png) no-repeat scroll 5px 4px #15528F; + border-radius: 3px; + border: 1px solid #111; + color: #FFF; + font: 14px/18px "Open Sans", "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif; + text-shadow: 0px 1px rgba(0, 0, 0, 0.8); + float: left; } .tvshowImg { @@ -1098,127 +442,6 @@ ul.tags li a{ cursor: default; } -.summaryTable { - max-width: 70%; - overflow: hidden; -} - -#checkboxControls { - padding-top: 5px; -} - -#checkboxControls span { - padding: 5px; - font-size: 13px; - font-weight: bold; - border-radius: 5px; -} - -#checkboxControls label { - white-space: nowrap; - display: inline-block; -} - -#checkboxControls input[type="checkbox"] { - vertical-align: -2px; -} - -.unaired { - background-color: #f5f1e4; -} -.skipped { - background-color: #bedeed; -} -.good { - background-color: #c3e3c8; -} -.qual { - background-color: #ffda8a; -} -.wanted { - background-color: #ffb0b0; -} -.snatched { - background-color: #ebc1ea; -} - -span.unaired { - color: #584b20; - border: 1px solid #584b20; -} -span.skipped { - color: #1d5068; - border: 1px solid #1d5068; -} -span.good { - color: #295730; - border: 1px solid #295730; -} -span.qual { - color: #765100; - border: 1px solid #765100; -} -span.wanted { - color: #890000; - border: 1px solid #890000; -} -span.snatched { - color: #652164; - border: 1px solid #652164; -} - -span.unaired b, -span.skipped b, -span.good b, -span.qual b, -span.wanted b, -span.snatched b { - color: #000000; - font-weight: 800; -} - -.plotInfo { - cursor: help; - float: right; - position: relative; - top: 2px; -} - -.plotInfoNone { - cursor: help; - float: right; - position: relative; - top: 2px; - opacity: 0.4; -} - -.displayShowTable { - table-layout: auto; - width: 100%; - border-collapse: collapse; - border-spacing: 0; - text-align: center; - border: none; - empty-cells: show; - color: #000 !important; -} - -.displayShowTable.display_show { - clear:both -} - -.displayShowTable th.row-seasonheader { - border: none !important; - background-color: #222 !important; - color: #fff !important; - padding-top: 15px !important; - text-align: left !important; -} - -.displayShowTable td.col-search { - text-align: center; -} - .sickbeardTable { table-layout: auto; width: 100%; @@ -1237,7 +460,7 @@ span.snatched b { white-space: nowrap; } -.sickbeardTable th, +.sickbeardTable th, .sickbeardTable td { border-top: 1px solid #222; border-left: 1px solid #222; @@ -1266,130 +489,10 @@ td.col-checkbox { text-align: center; } -th.col-checkbox input[type="checkbox"], -td.col-checkbox input[type="checkbox"] { - vertical-align: -2px; -} - -th.col-metadata, -td.col-metadata { - width: 28px; -} - -th.col-ep, -td.col-ep { - width: 50px; - white-space: nowrap; -} - -th.col-airdate, -td.col-airdate { - width: 86px; - white-space: nowrap; -} - -th.col-name, -td.col-name { - min-width: 100px; -} - -td.col-name { - text-align: left; -} - -th.col-subtitles, -td.col-subtitles { - width: 150px; - text-align: center; -} - -th.col-status, -td.col-status { - width: 210px; - text-align: center; -} - -th.col-legend, -td.col-legend { - width: 80px; -} - -th.col-search, -td.col-search { - width: 46px; -} - -.showLegend { - padding-right: 6px; - padding-bottom: 1px; - width: 150px; -} - -.input-scene { - height: 20px; - line-height: 1.5; - border-radius: 3px; -} - -#editShow { - width: 700px; - padding-top: 10px; - margin-right: auto; - margin-left: auto; -} - /* ======================================================================= -comingEpisodes.tmpl +comingEpisodes.mako ========================================================================== */ -.sort_data { - display: none; -} - - -.listing-key { - padding: 5px; - font-size: 13px; - font-weight: bold; - border-radius: 5px; -} - -.listing-default { - background-color: #f5f1e4; -} - -.listing-current { - background-color: #dfd; -} - -.listing-overdue { - background-color: #fdd; -} - -.listing-toofar { - background-color: #bedeed; -} - -span.listing-default { - color: #826f30; - border: 1px solid #826f30; -} - -span.listing-current { - color: #295730; - border: 1px solid #295730; -} - -span.listing-overdue { - color: #890000; - border: 1px solid #890000; -} - -span.listing-toofar { - color: #1d5068; - border: 1px solid #1d5068; -} - h2.day, h2.network { margin: 10px 0; font-size: 24px; @@ -1403,13 +506,13 @@ h2.day, h2.network { } .tvshowDiv { - display: block; - clear: both; - border: 1px solid #ccc; - margin: auto; - padding: 0px; - text-align: left; - width: 750px; + display: block; + clear: both; + border: 1px solid #ccc; + margin: auto; + padding: 0px; + text-align: left; + width: 750px; border-radius: 5px; background: #fff; cursor: default; @@ -1418,73 +521,7 @@ h2.day, h2.network { } .tvshowDiv a:hover { - color: #09A2FF; -} - -.tvshowDiv a, .tvshowDiv a:link, .tvshowDiv a:visited, .tvshowDiv a:hover { - text-decoration: none; - background: none; -} - -.tvshowTitle a { - color: #000000; - float: left; - line-height: 1.4em; - font-size: 1.4em; - text-shadow: -1px -1px 0 #FFF); -} - -.tvshowTitleIcons { - float: right; - padding: 3px 5px; -} - -.tvshowDiv td { - padding: 5px 10px; -} - -.tvshowDiv td.next_episode { - width: 100%; - height: 90%; - border-bottom: 1px solid #ccc; - vertical-align: top; - color: #000; -} - -.bannerThumb { - vertical-align: top; - height: auto; - width: 748px; - border-bottom: 1px solid #ccc; -} - -.posterThumb { - vertical-align: top; - height: auto; - width: 180px; - border-right: 1px solid #ccc; -} - -.ep_listing { - width: auto; - border: 1px solid #ccc; - margin-bottom: 10px; - padding: 10px; -} - -.ep_summary { - margin-left: 5px; - font-style: italic; -} - -.ep_summaryTrigger { - cursor: pointer; - vertical-align: middle; -} - -.ep_summaryTriggerNone { - opacity: 0.4; - vertical-align: middle; + color: #09A2FF; } #showListTable td.tvShow a { @@ -1492,114 +529,43 @@ h2.day, h2.network { } #showListTable td.tvShow a:hover { - cursor: pointer; - color: #09A2FF; + cursor: pointer; + color: #09A2FF; } table.cal-odd { - background-color: #333; + background-color: #333; } + table.cal-even { - background-color: #3d3d3d; + background-color: #3d3d3d; } + .calendarShow .text .airtime { - color:#fff + color:#fff } + .calendarShow .text .episode-title { - color:#aaa + color:#aaa } /* ======================================================================= -config*.tmpl +config*.mako ========================================================================== */ -#config-content { - display: block; - width: 960px; - padding: 0 0 40px; - margin: 0 auto; - clear: both; - text-align: left; -} - .component-group { padding: 15px 15px 25px; border-bottom: 1px dotted #555; min-height: 200px; } -.component-item { - border-bottom: 1px dotted #666; - min-height: 200px; -} - -.component-group-desc{ - float: left; - width: 250px; -} - -.component-group-desc h3{ - margin-top: 5px; -} - .component-group-desc p { width: 90%; margin: 10px 0; color: #ddd; } -#config div.field-pair { - padding: 12px 0px; -} - -#config div.field-pair input { - float: left; - margin-right: 6px; -} - -#config .nocheck, #config div #customQuality, .metadataDiv { - padding-left: 20px; -} - -#config .metadataDiv { - display: none; -} - -.component-group-save { - float: right; - padding-top: 10px; -} - -select .selected { - font-weight: 700; -} - -.jumbo { - font-size: 15px !important; - line-height: 24px; -} - -.testNotification { - padding: 5px; - margin-bottom: 10px; - line-height: 20px; - border: 1px dotted #CCC; -} - -#providerOrderList { - width: 250px; - padding-left: 20px; - list-style-type: none; -} - -#provider_order_list, -#service_order_list { - width: 250px; - padding-left: 20px; - list-style-type: none; -} - -#provider_order_list li, +#provider_order_list li, #service_order_list li { padding: 5px; margin: 5px 0; @@ -1608,64 +574,23 @@ select .selected { color: #fff; } -#provider_order_list input, -#service_order_list input { - margin: 0px 2px; -} - -#config .tip_scale label span.component-title { - width: 85px !important; - font-size: 12px !important; - margin-top: 2px !important; -} - -#config .tip_scale label span.component-desc { - margin-left: 120px !important; - width: 220px !important; -} - -.infoTableHeader, -.infoTableCell { - padding: 5px; -} - -.infoTableSeperator { - border-top: 1px dotted #666666; -} - [class^="icon16-"], [class*=" icon16-"] { - background-image: url("../images/glyphicons-config-white.png"); - background-position: -40px 0; - background-repeat: no-repeat; - display: inline-block; - height: 16px; - line-height: 16px; - vertical-align: text-top; - width: 16px; -} - -.icon16-github { - background-position: 0 0; -} -.icon16-mirc { - background-position: -20px 0; -} -.icon16-sb { - background-position: -40px 0; -} -.icon16-web { - background-position: -60px 0; -} -.icon16-win { - background-position: -80px 0; + background-image: url("../images/glyphicons-config-white.png"); + background-position: -40px 0; + background-repeat: no-repeat; + display: inline-block; + height: 16px; + line-height: 16px; + vertical-align: text-top; + width: 16px; } /* ======================================================================= -config_postProcessing.tmpl +config_postProcessing.mako ========================================================================== */ #config div.example { - padding: 10px; + padding: 10px; background-color: #333333; border: 1px solid #111; } @@ -1688,10 +613,6 @@ config_postProcessing.tmpl background: #15528F; } -.Key td { - padding: 1px 5px !important; -} - .Key tr { border-bottom: 1px solid #111; } @@ -1700,25 +621,10 @@ config_postProcessing.tmpl background-color: #333; } -.legend { - position: relative; - top: 2px; -} - /* ======================================================================= -config_notifications.tmpl +config_notifications.mako ========================================================================== */ -div.metadata_options_wrapper { - float: left; - width: 190px; -} - -div.metadata_example_wrapper { - float: right; - width: 325px; -} - div.metadata_options { padding: 7px; overflow: auto; @@ -1740,10 +646,6 @@ div.metadata_options label { color: #fff; } -div.metadata_example { - padding: 8px; -} - div.metadata_example label { display: block; line-height: 21px; @@ -1751,78 +653,18 @@ div.metadata_example label { cursor: pointer; } -div.metadataDiv .disabled { - color: #ccc; -} - -.notifier-icon { - float: left; - margin: 6px 4px 0px 0px; -} - -.warning { - border-color: #F89406; - background: url("../images/warning16.png") no-repeat right 5px center #fff; -} - /* ======================================================================= -manage*.tmpl +manage*.mako ========================================================================== */ -.manageTable th { - white-space: normal; - line-height: 24px; -} - -.manageTable td.tableright { - text-align: left; -} - -td.tableright { - text-align: center; -} - -.optionWrapper { - width: 450px; - margin-left: auto; - margin-right: auto; - padding: 6px 12px; -} - -.optionWrapper span.selectTitle { - float: left; - text-align: left; - vertical-align: middle; - width: 225px; - padding: 6px 0px; -} - -.optionWrapper div.selectChoices { - float: left; - width: 175px; - margin-left: 25px; -} - -.optionWrapper br { - clear: both; -} - -.manageCustom { - text-align: center; - padding: 6px; - margin-left: 25px; -} - .separator { font-size: 90%; color: #fff; } a.whitelink { - } - /* ======================================================================= Global ========================================================================== */ @@ -1833,211 +675,27 @@ span.path { background-color: #333; } -.align-left { - text-align: left; -} - - -span.quality { - font: 12px/13px "Open Sans", verdana, sans-serif; - background-image:-webkit-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25)); - background-image:-moz-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25)); - background-image:-o-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25)); - background-image:linear-gradient(to bottom, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25)); - -webkit-box-shadow:inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15); - box-shadow:inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15); - text-shadow: 0px 1px rgba(0, 0, 0, 0.8); - color: #FFFFFF; - display: inline-block; - padding: 2px 4px; - text-align: center; - vertical-align: baseline; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -span.Custom { - background-color: #621993; -} - -span.HD { - background-color: #2672B6; -} - -span.HDTV { - background-color: #2672B6; -} - -span.HD720p { - background-color: #5b990d; -} - -span.HD1080p { - background-color: #2672B6; -} - -span.RawHD { - background-color: #cd7300; -} - -span.RawHDTV { - background-color: #cd7300; -} - -span.SD { - background-color: #BE2625; -} - -span.SDTV { - background-color: #BE2625; -} - -span.Any { - background-color: #666; -} - -span.Unknown { - background-color: #999; -} - -span.Proper { - background-color: #3F7F00; -} - -span.false { - color: #993333; - /* red */ -} - -span.true { - color: #669966; - /* green */ -} - -option.flag { - padding-left: 35px; - background-repeat: no-repeat; - background-position: 10px 50%; -} - -/* Anime section for editShow */ -.bwlWrapper { - height:auto; - margin: 0 auto; -} - -#Anime { - clear: both; - overflow-x: hidden; - overflow-y: hidden; - font-size: 14px; -} - -#Anime div.component-group-desc { - float: left; - width: 165px; -} - -#Anime div.component-group-desc p { - margin-bottom: 0.4em; - margin-left: 0; - margin-right: 0; - margin-top: 0.4em; - width: 95%; -} - -div.blackwhitelist{ - float:left; - text-align: center; -} -div.blackwhitelist input { - margin: 5px 0px; -} -div.blackwhitelist.pool select{ - min-width: 230px; -} -div.blackwhitelist.white select, div.blackwhitelist.black select { - min-width: 150px; -} -div.blackwhitelist span { - display: block; - text-align: center; -} -div.blackwhitelist.anidb, div.blackwhitelist.manual { - margin: 7px 0px; -} - - /* ======================================================================= bootstrap Overrides ========================================================================== */ -body { - padding-top: 60px; +body { + padding-top: 60px; overflow-y: scroll; font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; color: #fff; background-color: #222; } -html * { - outline: 0 !important; -} - - -input[type="radio"] { - margin: 2px 0px 0px; - line-height: normal; -} - -input, textarea, select, .uneditable-input { - width: auto; - color: #000; -} - -.container-fluid { - margin-left: 10px; - margin-right: 10px; -} - -.navbar-brand { - padding: 0px; -} - /* navbar styling */ .navbar-default { - background-color: #15528F; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#297AB8', endColorstr='#15528F'); - background: -webkit-gradient(linear, left top, left bottom, from(#297AB8), to(#15528F)); - background: -moz-linear-gradient(top, #297AB8, #15528F); + background-color: #15528F; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#297AB8', endColorstr='#15528F'); + background: -webkit-gradient(linear, left top, left bottom, from(#297AB8), to(#15528F)); + background: -moz-linear-gradient(top, #297AB8, #15528F); border-color: #3e3f3a; } -.navbar-default .navbar-brand { - color: #ffffff; -} - -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #ffffff; - background-color: transparent; -} - -.navbar-default .navbar-text { - color: #dddddd; -} - -.navbar-default .navbar-nav > li > a { - color: #dddddd; -} - -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #ffffff; - background-color: transparent; -} - .navbar-default .navbar-nav > .active > a, .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus { @@ -2045,17 +703,6 @@ input, textarea, select, .uneditable-input { background-color: #124477; } -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #cccccc; - background-color: transparent; -} - -.navbar-default .navbar-toggle { - border-color: #cccccc; -} - .navbar-default .navbar-toggle:hover, .navbar-default .navbar-toggle:focus { background-color: #124477; @@ -2065,11 +712,6 @@ input, textarea, select, .uneditable-input { background-color: #124477; } -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #3e3f3a; -} - .navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus { @@ -2078,77 +720,29 @@ input, textarea, select, .uneditable-input { } @media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #dddddd; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #ffffff; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #ffffff; - background-color: #124477; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #cccccc; - background-color: transparent; - } -} - -.navbar-default .navbar-link { - color: #dddddd; -} - -.navbar-default .navbar-link:hover { - color: #ffffff; -} - -.navbar-default .btn-link { - color: #98978b; -} - -.navbar-default .btn-link:hover, -.navbar-default .btn-link:focus { - color: #dddddd; -} - -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #cccccc; + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #124477; + } } .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { - color: #fff; - text-decoration: none; - background-color: #15528F; + color: #fff; + text-decoration: none; + background-color: #15528F; } .dropdown-menu > li > a { - padding: 4px 36px 4px 20px; + padding: 4px 36px 4px 20px; color: #fff; } .dropdown-menu { - background-color: #333; - border: 1px solid rgba(0, 0, 0, 0.15); - box-shadow: 0px 6px 12px rgba(0, 0, 0, 0.176); -} - -.form-control { - color: #000000; -} - -.form-control-inline { - min-width: 0; - width: auto; - display: inline; + background-color: #333; + border: 1px solid rgba(0, 0, 0, 0.15); + box-shadow: 0px 6px 12px rgba(0, 0, 0, 0.176); } .btn { @@ -2175,324 +769,79 @@ fieldset[disabled] .navbar-default .btn-link:focus { background-image: -moz-linear-gradient(top, #297AB8, #15528F); background-repeat: repeat-x; border: 1px solid #111; - *border: 0; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - border-color: #111 #111 #111; - border-bottom-color: #111; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#297AB8', endColorstr='#15528F', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); - *zoom: 1; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.0), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.0), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.0), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.btn:hover, -.btn:active, -.btn.active, -.btn.disabled, -.btn[disabled] { - background-color: #2672B6; - *background-color: #2672B6; - color: #fff; -} - -.btn:active, -.btn.active { - background-color: #cccccc \9; - color: #fff; -} - -.btn:first-child { - *margin-left: 0; -} - -.btn:hover { - color: #fff; - text-decoration: none; - background-color: #2672B6; - *background-color: #2672B6; - background-position: 0 -150px; - -webkit-transition: background-position 0.0s linear; - -moz-transition: background-position 0.0s linear; - -ms-transition: background-position 0.0s linear; - -o-transition: background-position 0.0s linear; - transition: background-position 0.0s linear; -} - -.btn:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; - color: #fff; -} - -.btn.active, -.btn:active { - background-color: #2672B6; - background-color: #2672B6 \9; - background-image: none; - color: #fff; - outline: 0; - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.btn.disabled, -.btn[disabled] { - cursor: default; - background-color: #15528F; - background-image: none; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} - -.btn-large { - padding: 9px 14px; - font-size: 15px; - line-height: normal; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} - -.btn-large [class^="icon-"] { - margin-top: 1px; -} - -.btn-small { - padding: 5px 9px; - font-size: 11px; - line-height: 16px; -} - -.btn-small [class^="icon-"] { - margin-top: -1px; -} - -.btn-mini { - padding: 2px 6px; - font-size: 11px; - line-height: 14px; -} - -.btn-primary, -.btn-primary:hover, -.btn-warning, -.btn-warning:hover, -.btn-danger, -.btn-danger:hover, -.btn-success, -.btn-success:hover, -.btn-info, -.btn-info:hover, -.btn-inverse, -.btn-inverse:hover { - color: #ffffff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} - -.btn-primary.active, -.btn-warning.active, -.btn-danger.active, -.btn-success.active, -.btn-info.active, -.btn-inverse.active { - color: rgba(255, 255, 255, 1.0); -} - -.btn-primary { - background-color: #0074cc; - *background-color: #0055cc; - background-image: -ms-linear-gradient(top, #0088cc, #0055cc); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0055cc)); - background-image: -webkit-linear-gradient(top, #0088cc, #0055cc); - background-image: -o-linear-gradient(top, #0088cc, #0055cc); - background-image: -moz-linear-gradient(top, #0088cc, #0055cc); - background-image: linear-gradient(top, #0088cc, #0055cc); - background-repeat: repeat-x; - border-color: #0055cc #0055cc #003580; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#0088cc', endColorstr='#0055cc', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); -} - -.btn-primary:hover, -.btn-primary:active, -.btn-primary.active, -.btn-primary.disabled, -.btn-primary[disabled] { - background-color: #0055cc; - *background-color: #004ab3; -} - -.btn-primary:active, -.btn-primary.active { - background-color: #004099 \9; -} - -.btn-warning { - background-color: #faa732; - *background-color: #f89406; - background-image: -ms-linear-gradient(top, #fbb450, #f89406); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); - background-image: -webkit-linear-gradient(top, #fbb450, #f89406); - background-image: -o-linear-gradient(top, #fbb450, #f89406); - background-image: -moz-linear-gradient(top, #fbb450, #f89406); - background-image: linear-gradient(top, #fbb450, #f89406); - background-repeat: repeat-x; - border-color: #f89406 #f89406 #ad6704; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); -} - -.btn-warning:hover, -.btn-warning:active, -.btn-warning.active, -.btn-warning.disabled, -.btn-warning[disabled] { - background-color: #f89406; - *background-color: #df8505; -} - -.btn-warning:active, -.btn-warning.active { - background-color: #c67605 \9; -} - -.btn-danger { - background-color: #da4f49; - *background-color: #bd362f; - background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); - background-image: linear-gradient(top, #ee5f5b, #bd362f); - background-repeat: repeat-x; - border-color: #bd362f #bd362f #802420; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); -} - -.btn-danger:hover, -.btn-danger:active, -.btn-danger.active, -.btn-danger.disabled, -.btn-danger[disabled] { - background-color: #bd362f; - *background-color: #a9302a; -} - -.btn-danger:active, -.btn-danger.active { - background-color: #942a25 \9; -} - -.btn-success { - background-color: #5bb75b; - *background-color: #51a351; - background-image: -ms-linear-gradient(top, #62c462, #51a351); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); - background-image: -webkit-linear-gradient(top, #62c462, #51a351); - background-image: -o-linear-gradient(top, #62c462, #51a351); - background-image: -moz-linear-gradient(top, #62c462, #51a351); - background-image: linear-gradient(top, #62c462, #51a351); - background-repeat: repeat-x; - border-color: #51a351 #51a351 #387038; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); -} - -.btn-success:hover, -.btn-success:active, -.btn-success.active, -.btn-success.disabled, -.btn-success[disabled] { - background-color: #51a351; - *background-color: #499249; -} - -.btn-success:active, -.btn-success.active { - background-color: #408140 \9; -} - -.btn-info { - background-color: #49afcd; - *background-color: #2f96b4; - background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); - background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); - background-image: linear-gradient(top, #5bc0de, #2f96b4); - background-repeat: repeat-x; - border-color: #2f96b4 #2f96b4 #1f6377; + *border: 0; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0); + border-color: #111 #111 #111; + border-bottom-color: #111; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:dximagetransform.microsoft.gradient(startColorstr='#297AB8', endColorstr='#15528F', GradientType=0); filter: progid:dximagetransform.microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.0), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.0), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.0), 0 1px 2px rgba(0, 0, 0, 0.05); } -.btn-info:hover, -.btn-info:active, -.btn-info.active, -.btn-info.disabled, -.btn-info[disabled] { - background-color: #2f96b4; - *background-color: #2a85a0; +.btn:hover, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + background-color: #2672B6; + *background-color: #2672B6; + color: #fff; } -.btn-info:active, -.btn-info.active { - background-color: #24748c \9; +.btn:active, +.btn.active { + background-color: #cccccc \9; + color: #fff; } -.btn-inverse { - background-color: #414141; - *background-color: #222222; - background-image: -ms-linear-gradient(top, #555555, #222222); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222)); - background-image: -webkit-linear-gradient(top, #555555, #222222); - background-image: -o-linear-gradient(top, #555555, #222222); - background-image: -moz-linear-gradient(top, #555555, #222222); - background-image: linear-gradient(top, #555555, #222222); - background-repeat: repeat-x; - border-color: #222222 #222222 #000000; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#555555', endColorstr='#222222', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); +.btn:hover { + color: #fff; + text-decoration: none; + background-color: #2672B6; + *background-color: #2672B6; + background-position: 0 -150px; + -webkit-transition: background-position 0.0s linear; + -moz-transition: background-position 0.0s linear; + -ms-transition: background-position 0.0s linear; + -o-transition: background-position 0.0s linear; + transition: background-position 0.0s linear; } -.btn-inverse:hover, -.btn-inverse:active, -.btn-inverse.active, -.btn-inverse.disabled, -.btn-inverse[disabled] { - background-color: #222222; - *background-color: #151515; +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; + color: #fff; } -.btn-inverse:active, -.btn-inverse.active { - background-color: #080808 \9; +.btn.active, +.btn:active { + background-color: #2672B6; + background-color: #2672B6 \9; + background-image: none; + color: #fff; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); } -.btn-xs { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; +.btn.disabled, +.btn[disabled] { + cursor: default; + background-color: #15528F; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; } @media(min-width:768px){ @@ -2508,84 +857,16 @@ fieldset[disabled] .navbar-default .btn-link:focus { } } -label { - font-weight: normal; -} - pre { - color: #fff; - background-color: #3d3d3d; - border-color: #111; -} - -.alert { - padding: 10px; - text-align: center; -} - -/* ======================================================================= -input sizing (for config pages) -========================================================================== */ - -#config select { - min-width: 0; - width: auto; - display: inline; - margin-top: -4px; -} - -.btn-inline { - margin-top: -3px; -} - -.input75 { - width: 75px; - margin-top: -4px; -} - -.input100 { - width: 100px; - margin-top: -4px; -} - -.input150 { - width: 150px; - margin-top: -4px; -} - -.input200 { - width: 200px; - margin-top: -4px; -} - -.input250 { - width: 250px; - margin-top: -4px; -} - -.input300 { - width: 300px; - margin-top: -4px; -} - -.input350 { - width: 350px; - margin-top: -4px; + color: #fff; + background-color: #3d3d3d; + border-color: #111; } /* ======================================================================= -browser.css +browser.css overrides ========================================================================== */ -#fileBrowserDialog { - overflow-y: auto; -} - -#fileBrowserDialog ul { - padding: 0; - margin: 0; -} - #fileBrowserDialog ul li { margin: 2px 0; list-style-type: none; @@ -2593,116 +874,29 @@ browser.css background: #333; } -#fileBrowserDialog ul li a { - display: block; - padding: 4px 0; -} - #fileBrowserDialog ul li a:hover { color: #09a2ff; background: none; } -#fileBrowserDialog ul li a span.ui-icon { - float: left; - margin: 0 4px; -} - -#fileBrowserDialog h2 { - font-size: 20px; -} - -.ui-autocomplete { - max-height: 180px; - overflow-x: hidden; - overflow-y: auto; -} - -/* IE6 hack since it doesn't support max-height */ -* html .ui-autocomplete { - height: 180px; - padding-right: 20px; -} - -.ui-menu .ui-menu-item { - background-color: #eee; -} - -.ui-menu .ui-menu-item-alternate { - background-color: #fff; -} - -.ui-autocomplete .ui-menu-item .ui-state-focus { - color: #fff; - background: none; - background-color: #0a246a; -} - -/* restore 1.8.x resize handle on dialog button pane */ -.ui-dialog .ui-resizable-se { - width: 14px; - height: 14px; - right: 3px; - bottom: 3px; - background-position: -80px -224px; -} - - /* ======================================================================= formWizard.css ========================================================================== */ -fieldset.sectionwrap { - width: 800px; - padding: 5px; - text-align: left; - border-width: 0; -} - legend.legendStep { color: #ffffff; margin-bottom: 0px; } -div.stepsguide { - margin-bottom: 15px; - overflow: hidden; - text-align: left; - cursor: pointer; -} - -div.stepsguide .step { - float: left; - width: 33%; - font: bold 24px Arial; -} - div.stepsguide .step p { margin: 12px 0; border-bottom: 4px solid #23AFDC; } -div.stepsguide .disabledstep { - color: #c4c4c4; -} - div.stepsguide .disabledstep p { border-bottom: 4px solid #1178B3; } -div.stepsguide .step .smalltext { - font-size: 13px; - font-weight: normal; -} - -div.formpaginate { - width: 800px; - margin-top: 1em; - overflow: auto; - font-weight: bold; - text-align: center; -} - div.formpaginate .prev, div.formpaginate .next { padding: 3px 6px; color: #fff; @@ -2714,31 +908,6 @@ div.formpaginate .prev, div.formpaginate .next { border-radius: 6px; } -.stepDiv { - padding: 15px 0; -} - -/* step 3 related */ -#customQuality { - display: block; - padding: 10px 0; - overflow: hidden; - clear: both; -} - -#customQualityWrapper div.component-group-desc { - float: left; - width: 172px; - margin-right: 10px; -} - -#customQualityWrapper div.component-group-desc p { - width: 85%; - margin: .8em 0; - font-size: 1.13em; - color: #666; -} - /* ======================================================================= pnotify.css ========================================================================== */ @@ -2787,12 +956,6 @@ tablesorter.css vertical-align: middle; } -/* remove extra border from left edge */ -.tablesorter th:first-child, -.tablesorter td:first-child { - border-left: none; -} - .tablesorter th { color: #fff; text-align: center; @@ -2802,15 +965,6 @@ tablesorter.css font-weight: normal; } -.tablesorter .tablesorter-header { - padding: 4px 18px 4px 18px; - cursor: pointer; - background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAAP///////yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==); - background-position: center right; - background-repeat: no-repeat; - /* background-image: url(../images/tablesorter/bg.gif); */ -} - .tablesorter thead .tablesorter-headerDesc { background-color: #297AB8; background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7); @@ -2823,12 +977,6 @@ tablesorter.css /* background-image: url(../images/tablesorter/desc.gif); */ } -.tablesorter thead .sorter-false { - background-image: none; - padding: 4px; - cursor: default; -} - thead.tablesorter-stickyHeader { border-top: 2px solid #222; border-bottom: 2px solid #222; @@ -2843,18 +991,6 @@ thead.tablesorter-stickyHeader { background-color: #2e2e2e; } -/* filter widget */ -.tablesorter .filtered { - display: none; -} -.tablesorter input.tablesorter-filter { - width: 98%; - height: auto; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - .tablesorter tr.tablesorter-filter-row, .tablesorter tr.tablesorter-filter-row td { text-align: center; @@ -2864,204 +1000,47 @@ thead.tablesorter-stickyHeader { /* hidden filter row */ .tablesorter-filter-row.hideme td { - /*** *********************************************** ***/ - /*** change this padding to modify the thickness ***/ - /*** of the closed filter row (height = padding x 2) ***/ - padding: 2px; - /*** *********************************************** ***/ - margin: 0; - line-height: 0; - cursor: pointer; -} -.tablesorter-filter-row.hideme * { - height: 1px; - min-height: 0; - border: 0; - padding: 0; - margin: 0; - /* don't use visibility: hidden because it disables tabbing */ - opacity: 0; - filter: alpha(opacity=0); -} - -/* optional disabled input styling */ -.tablesorter input.tablesorter-filter-row .disabled { - display: none; -} - -.tablesorter-header-inner { - padding: 0 2px; - text-align: center; -} - -.tablesorter tfoot tr { - color: #fff; - text-align: center; - text-shadow: -1px -1px 0 rgba(0,0,0,0.3); - background-color: #333; - border-collapse: collapse; + /*** *********************************************** ***/ + /*** change this padding to modify the thickness ***/ + /*** of the closed filter row (height = padding x 2) ***/ + padding: 2px; + /*** *********************************************** ***/ + margin: 0; + line-height: 0; + cursor: pointer; } -.tablesorter tfoot a { - color:#fff; - text-decoration: none; +.tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); } #showListTable tbody { color: #000; } - /* ======================================================================= token-input.css ========================================================================== */ -ul.token-input-list { - overflow: hidden; - height: auto !important; - height: 1%; - width: 273px; - border: 1px solid #ccc; - cursor: text; - font-size: 10px; - font-family: Verdana; - z-index: 999; - margin: 0; - padding: 0 0 1px 0; - background-color: #fff; - list-style-type: none; -/* clear: left; */ - border-top-left-radius: 3px; - border-top-right-radius: 3px; - border-bottom-left-radius: 3px; - border-bottom-right-radius: 3px; -} - -ul.token-input-list li { - list-style-type: none; -} - -ul.token-input-list li input { - border: 0; - padding: 3px 4px; - background-color: white; -/* -webkit-appearance: caret; */ -} - -li.token-input-token { - overflow: hidden; - height: auto !important; - height: 1%; - margin: 3px; - padding: 3px 5px 0 5px; - background-color: #d0efa0; - color: #000; - font-weight: bold; - cursor: default; - display: block; -} - -li.token-input-token img { - padding-top: 7px; - padding-right: 4px; - float: left; -} - -li.token-input-token input { - padding-top: 2px !important; - padding-right: 4px !important; - float: left; -} - -li.token-input-token p { - float: left; - padding: 0; - margin: 0; - line-height: 2.0 !important; -} - -li.token-input-token span { - float: right; - color: #777; - cursor: pointer; -} - -li.token-input-selected-token { - background-color: #08844e; - color: #fff; -} - -li.token-input-selected-token span { - color: #bbb; -} - -li.token-input-input-token input { - margin: 3px 3px 3px 3px !important; -} - div.token-input-dropdown { - background-color: #fff; - color: #000; - border-left-color: #ccc; - border-right-color: #ccc; - border-bottom-color: #ccc; -} - -div.token-input-dropdown p { - margin: 0; - padding: 3px; - font-weight: bold; - color: #777; -} - -div.token-input-dropdown ul { - margin: 0; - padding: 0; -} - -div.token-input-dropdown ul li { - background-color: #fff; - padding: 3px; - list-style-type: none; -} - -div.token-input-dropdown ul li.token-input-dropdown-item { - background-color: #fafafa; -} - -div.token-input-dropdown ul li.token-input-dropdown-item2 { - background-color: #fff; -} - -div.token-input-dropdown ul li em { - font-weight: bold; - font-style: normal; -} - -div.token-input-dropdown ul li.token-input-selected-dropdown-item { - background-color: #6196c2; -} - -span.token-input-delete-token { - margin: 0 1px; + background-color: #fff; + color: #000; + border-left-color: #ccc; + border-right-color: #ccc; + border-bottom-color: #ccc; } /* ======================================================================= jquery.confirm.css ========================================================================== */ -#confirmOverlay{ - width: 100%; - height: 100%; - position: fixed; - top: 0; - left: 0; - background: url('../images/bg.gif'); - background: -moz-linear-gradient(rgba(0,0,0,0.5), rgba(0,0,0,0.5)) repeat-x rgba(0,0,0,0.5); - background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.5))) repeat-x rgba(0,0,0,0.5); - z-index: 100000; -} - #confirmBox{ background: #222; width: 460px; @@ -3070,75 +1049,22 @@ jquery.confirm.css top: 50%; margin: -130px 0 0 -230px; border: 1px solid #111; - box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.175); -} - -#confirmBox h1, -#confirmBox p{ - padding: 6px 10px; + box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.175); } #confirmBox h1 { - background-color: #15528F; + background-color: #15528F; border-bottom: 1px solid #111; color: #fff; - margin: 0; - font-size: 22px; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.75); + margin: 0; + font-size: 22px; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.75); } #confirmBox p { padding-top: 20px; - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.75); -} - -#confirmButtons { - padding: 15px 0; - text-align: center; -} - -#confirmBox .button { - margin-right: 15px; - padding: 2px 20px; - text-decoration: none; - display: inline-block; color: #fff; - text-align:center; text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.75); - background-clip: padding-box; - border: 1px solid #111; - border-radius: 3px; - cursor: pointer; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25)); - background-image: -moz-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25)); - background-image: -o-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25)); - background-image: linear-gradient(to bottom, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25)); - -webkit-box-shadow: inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15); - box-shadow: inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15); -} - -#confirmBox .button:last-child { - margin-right:0; -} - -#confirmBox .green { - background-color: #3F7636; -} - -#confirmBox .green:hover { - background-color: #48873E; -} - -#confirmBox .red { - background-color: #8D2D2B; -} - -#confirmBox .red:hover { - background-color: #A13331; } /* ======================================================================= @@ -3146,20 +1072,21 @@ bootstarp modal ========================================================================== */ .modal-content { - background-color: #3D3D3D; + background-color: #3D3D3D; } + .modal-body { - background-color: #3D3D3D; + background-color: #3D3D3D; } .modal-header { - padding:9px 15px; - border-bottom:1px solid #eee; - background-color: #15528F; - -webkit-border-top-left-radius: 5px; - -webkit-border-top-right-radius: 5px; - -moz-border-radius-topleft: 5px; - -moz-border-radius-topright: 5px; - border-top-left-radius: 5px; - border-top-right-radius: 5px; - } + padding:9px 15px; + border-bottom:1px solid #eee; + background-color: #15528F; + -webkit-border-top-left-radius: 5px; + -webkit-border-top-right-radius: 5px; + -moz-border-radius-topleft: 5px; + -moz-border-radius-topright: 5px; + border-top-left-radius: 5px; + border-top-right-radius: 5px; +} diff --git a/gui/slick/css/fonts/glyphicons-halflings-regular.eot b/gui/slick/css/fonts/glyphicons-halflings-regular.eot index 4a4ca865d67e86f961bc6e2ef00bffa4e34bb9ed..b93a4953fff68df523aa7656497ee339d6026d64 100644 Binary files a/gui/slick/css/fonts/glyphicons-halflings-regular.eot and b/gui/slick/css/fonts/glyphicons-halflings-regular.eot differ diff --git a/gui/slick/css/fonts/glyphicons-halflings-regular.svg b/gui/slick/css/fonts/glyphicons-halflings-regular.svg index 25691af8f193a67185a696cb6626ea6418ff6a20..94fb5490a2ed10b2c69a4a567a4fd2e4f706d841 100644 Binary files a/gui/slick/css/fonts/glyphicons-halflings-regular.svg and b/gui/slick/css/fonts/glyphicons-halflings-regular.svg differ diff --git a/gui/slick/css/fonts/glyphicons-halflings-regular.ttf b/gui/slick/css/fonts/glyphicons-halflings-regular.ttf index 67fa00bf83801d2fa568546b982c80d27f6ef74e..1413fc609ab6f21774de0cb7e01360095584f65b 100644 Binary files a/gui/slick/css/fonts/glyphicons-halflings-regular.ttf and b/gui/slick/css/fonts/glyphicons-halflings-regular.ttf differ diff --git a/gui/slick/css/fonts/glyphicons-halflings-regular.woff b/gui/slick/css/fonts/glyphicons-halflings-regular.woff index 8c54182aa5d4d1ab3c9171976b615c1dcb1dc187..9e612858f802245ddcbf59788a0db942224bab35 100644 Binary files a/gui/slick/css/fonts/glyphicons-halflings-regular.woff and b/gui/slick/css/fonts/glyphicons-halflings-regular.woff differ diff --git a/gui/slick/css/fonts/glyphicons-halflings-regular.woff2 b/gui/slick/css/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0 Binary files /dev/null and b/gui/slick/css/fonts/glyphicons-halflings-regular.woff2 differ diff --git a/gui/slick/css/lib/bootstrap-formhelpers-2.3.0.css b/gui/slick/css/lib/bootstrap-formhelpers-2.3.0.css deleted file mode 100644 index 2def9b4873113d65763e66df654cc7b5e1aeb64e..0000000000000000000000000000000000000000 --- a/gui/slick/css/lib/bootstrap-formhelpers-2.3.0.css +++ /dev/null @@ -1,2140 +0,0 @@ -/** -* bootstrap-formhelpers.js v2.3.0 by @vincentlamanna -* Copyright 2013 Vincent Lamanna -* http://www.apache.org/licenses/LICENSE-2.0 -*/ -.bfh-flag-AD, -.bfh-flag-AE, -.bfh-flag-AF, -.bfh-flag-AG, -.bfh-flag-AI, -.bfh-flag-AL, -.bfh-flag-AM, -.bfh-flag-AN, -.bfh-flag-AO, -.bfh-flag-AQ, -.bfh-flag-AR, -.bfh-flag-AS, -.bfh-flag-AT, -.bfh-flag-AU, -.bfh-flag-AW, -.bfh-flag-AX, -.bfh-flag-AZ, -.bfh-flag-BA, -.bfh-flag-BB, -.bfh-flag-BD, -.bfh-flag-BE, -.bfh-flag-BG, -.bfh-flag-BH, -.bfh-flag-BI, -.bfh-flag-BJ, -.bfh-flag-BL, -.bfh-flag-BM, -.bfh-flag-BN, -.bfh-flag-BO, -.bfh-flag-BR, -.bfh-flag-BS, -.bfh-flag-BT, -.bfh-flag-BW, -.bfh-flag-BY, -.bfh-flag-BZ, -.bfh-flag-CA, -.bfh-flag-CD, -.bfh-flag-CF, -.bfh-flag-CG, -.bfh-flag-CH, -.bfh-flag-CI, -.bfh-flag-CL, -.bfh-flag-CM, -.bfh-flag-CN, -.bfh-flag-CO, -.bfh-flag-CR, -.bfh-flag-CV, -.bfh-flag-CY, -.bfh-flag-CZ, -.bfh-flag-DJ, -.bfh-flag-DK, -.bfh-flag-DM, -.bfh-flag-DO, -.bfh-flag-DZ, -.bfh-flag-EC, -.bfh-flag-EE, -.bfh-flag-EG, -.bfh-flag-EH, -.bfh-flag-ER, -.bfh-flag-ES, -.bfh-flag-ET, -.bfh-flag-EU, -.bfh-flag-FI, -.bfh-flag-FJ, -.bfh-flag-FK, -.bfh-flag-FM, -.bfh-flag-FO, -.bfh-flag-FR, -.bfh-flag-FX, -.bfh-flag-GF, -.bfh-flag-GP, -.bfh-flag-MQ, -.bfh-flag-NC, -.bfh-flag-PF, -.bfh-flag-PM, -.bfh-flag-RE, -.bfh-flag-TF, -.bfh-flag-WF, -.bfh-flag-GA, -.bfh-flag-GB, -.bfh-flag-GD, -.bfh-flag-GE, -.bfh-flag-GG, -.bfh-flag-GH, -.bfh-flag-GL, -.bfh-flag-GM, -.bfh-flag-GN, -.bfh-flag-GQ, -.bfh-flag-GR, -.bfh-flag-GS, -.bfh-flag-GT, -.bfh-flag-GU, -.bfh-flag-GW, -.bfh-flag-GY, -.bfh-flag-HK, -.bfh-flag-HN, -.bfh-flag-HR, -.bfh-flag-HT, -.bfh-flag-HU, -.bfh-flag-ID, -.bfh-flag-IE, -.bfh-flag-IL, -.bfh-flag-IM, -.bfh-flag-IN, -.bfh-flag-IQ, -.bfh-flag-IS, -.bfh-flag-IT, -.bfh-flag-JE, -.bfh-flag-JM, -.bfh-flag-JO, -.bfh-flag-JP, -.bfh-flag-KE, -.bfh-flag-KG, -.bfh-flag-KH, -.bfh-flag-KI, -.bfh-flag-KM, -.bfh-flag-KN, -.bfh-flag-KP, -.bfh-flag-KR, -.bfh-flag-KV, -.bfh-flag-KW, -.bfh-flag-KY, -.bfh-flag-LA, -.bfh-flag-LC, -.bfh-flag-LK, -.bfh-flag-LR, -.bfh-flag-LS, -.bfh-flag-LT, -.bfh-flag-LU, -.bfh-flag-LV, -.bfh-flag-LY, -.bfh-flag-MA, -.bfh-flag-ME, -.bfh-flag-MG, -.bfh-flag-MH, -.bfh-flag-ML, -.bfh-flag-MM, -.bfh-flag-MP, -.bfh-flag-MR, -.bfh-flag-MS, -.bfh-flag-MT, -.bfh-flag-MU, -.bfh-flag-MV, -.bfh-flag-MW, -.bfh-flag-MZ, -.bfh-flag-NA, -.bfh-flag-NE, -.bfh-flag-NF, -.bfh-flag-NG, -.bfh-flag-NI, -.bfh-flag-NL, -.bfh-flag-NO, -.bfh-flag-NP, -.bfh-flag-NR, -.bfh-flag-NZ, -.bfh-flag-OM, -.bfh-flag-PA, -.bfh-flag-PE, -.bfh-flag-PG, -.bfh-flag-PH, -.bfh-flag-PK, -.bfh-flag-PL, -.bfh-flag-PN, -.bfh-flag-PS, -.bfh-flag-PT, -.bfh-flag-PW, -.bfh-flag-PY, -.bfh-flag-QA, -.bfh-flag-RS, -.bfh-flag-RU, -.bfh-flag-RW, -.bfh-flag-SA, -.bfh-flag-SB, -.bfh-flag-SC, -.bfh-flag-SD, -.bfh-flag-SE, -.bfh-flag-SG, -.bfh-flag-SH, -.bfh-flag-SI, -.bfh-flag-SK, -.bfh-flag-SM, -.bfh-flag-SN, -.bfh-flag-SO, -.bfh-flag-SR, -.bfh-flag-SS, -.bfh-flag-ST, -.bfh-flag-SV, -.bfh-flag-SY, -.bfh-flag-SZ, -.bfh-flag-TC, -.bfh-flag-TD, -.bfh-flag-TG, -.bfh-flag-TH, -.bfh-flag-TJ, -.bfh-flag-TM, -.bfh-flag-TN, -.bfh-flag-TP, -.bfh-flag-TR, -.bfh-flag-TT, -.bfh-flag-TV, -.bfh-flag-TW, -.bfh-flag-TZ, -.bfh-flag-UA, -.bfh-flag-UG, -.bfh-flag-US, -.bfh-flag-UY, -.bfh-flag-UZ, -.bfh-flag-VC, -.bfh-flag-VE, -.bfh-flag-VG, -.bfh-flag-VI, -.bfh-flag-VN, -.bfh-flag-VU, -.bfh-flag-WS, -.bfh-flag-YE, -.bfh-flag-ZA, -.bfh-flag-ZM, -.bfh-flag-BF, -.bfh-flag-CU, -.bfh-flag-DE, -.bfh-flag-IR, -.bfh-flag-KZ, -.bfh-flag-LB, -.bfh-flag-LI, -.bfh-flag-MC, -.bfh-flag-MD, -.bfh-flag-MK, -.bfh-flag-MN, -.bfh-flag-MO, -.bfh-flag-MX, -.bfh-flag-MY, -.bfh-flag-PR, -.bfh-flag-RO, -.bfh-flag-SL, -.bfh-flag-TO, -.bfh-flag-VA, -.bfh-flag-ZW { - width: 16px; - height: 14px; - background: url(../img/bootstrap-formhelpers-countries.flags.png) no-repeat; -} - -.bfh-flag-AD:empty, -.bfh-flag-AE:empty, -.bfh-flag-AF:empty, -.bfh-flag-AG:empty, -.bfh-flag-AI:empty, -.bfh-flag-AL:empty, -.bfh-flag-AM:empty, -.bfh-flag-AN:empty, -.bfh-flag-AO:empty, -.bfh-flag-AQ:empty, -.bfh-flag-AR:empty, -.bfh-flag-AS:empty, -.bfh-flag-AT:empty, -.bfh-flag-AU:empty, -.bfh-flag-AW:empty, -.bfh-flag-AX:empty, -.bfh-flag-AZ:empty, -.bfh-flag-BA:empty, -.bfh-flag-BB:empty, -.bfh-flag-BD:empty, -.bfh-flag-BE:empty, -.bfh-flag-BG:empty, -.bfh-flag-BH:empty, -.bfh-flag-BI:empty, -.bfh-flag-BJ:empty, -.bfh-flag-BL:empty, -.bfh-flag-BM:empty, -.bfh-flag-BN:empty, -.bfh-flag-BO:empty, -.bfh-flag-BR:empty, -.bfh-flag-BS:empty, -.bfh-flag-BT:empty, -.bfh-flag-BW:empty, -.bfh-flag-BY:empty, -.bfh-flag-BZ:empty, -.bfh-flag-CA:empty, -.bfh-flag-CD:empty, -.bfh-flag-CF:empty, -.bfh-flag-CG:empty, -.bfh-flag-CH:empty, -.bfh-flag-CI:empty, -.bfh-flag-CL:empty, -.bfh-flag-CM:empty, -.bfh-flag-CN:empty, -.bfh-flag-CO:empty, -.bfh-flag-CR:empty, -.bfh-flag-CV:empty, -.bfh-flag-CY:empty, -.bfh-flag-CZ:empty, -.bfh-flag-DJ:empty, -.bfh-flag-DK:empty, -.bfh-flag-DM:empty, -.bfh-flag-DO:empty, -.bfh-flag-DZ:empty, -.bfh-flag-EC:empty, -.bfh-flag-EE:empty, -.bfh-flag-EG:empty, -.bfh-flag-EH:empty, -.bfh-flag-ER:empty, -.bfh-flag-ES:empty, -.bfh-flag-ET:empty, -.bfh-flag-EU:empty, -.bfh-flag-FI:empty, -.bfh-flag-FJ:empty, -.bfh-flag-FK:empty, -.bfh-flag-FM:empty, -.bfh-flag-FO:empty, -.bfh-flag-FR:empty, -.bfh-flag-FX:empty, -.bfh-flag-GF:empty, -.bfh-flag-GP:empty, -.bfh-flag-MQ:empty, -.bfh-flag-NC:empty, -.bfh-flag-PF:empty, -.bfh-flag-PM:empty, -.bfh-flag-RE:empty, -.bfh-flag-TF:empty, -.bfh-flag-WF:empty, -.bfh-flag-GA:empty, -.bfh-flag-GB:empty, -.bfh-flag-GD:empty, -.bfh-flag-GE:empty, -.bfh-flag-GG:empty, -.bfh-flag-GH:empty, -.bfh-flag-GL:empty, -.bfh-flag-GM:empty, -.bfh-flag-GN:empty, -.bfh-flag-GQ:empty, -.bfh-flag-GR:empty, -.bfh-flag-GS:empty, -.bfh-flag-GT:empty, -.bfh-flag-GU:empty, -.bfh-flag-GW:empty, -.bfh-flag-GY:empty, -.bfh-flag-HK:empty, -.bfh-flag-HN:empty, -.bfh-flag-HR:empty, -.bfh-flag-HT:empty, -.bfh-flag-HU:empty, -.bfh-flag-ID:empty, -.bfh-flag-IE:empty, -.bfh-flag-IL:empty, -.bfh-flag-IM:empty, -.bfh-flag-IN:empty, -.bfh-flag-IQ:empty, -.bfh-flag-IS:empty, -.bfh-flag-IT:empty, -.bfh-flag-JE:empty, -.bfh-flag-JM:empty, -.bfh-flag-JO:empty, -.bfh-flag-JP:empty, -.bfh-flag-KE:empty, -.bfh-flag-KG:empty, -.bfh-flag-KH:empty, -.bfh-flag-KI:empty, -.bfh-flag-KM:empty, -.bfh-flag-KN:empty, -.bfh-flag-KP:empty, -.bfh-flag-KR:empty, -.bfh-flag-KV:empty, -.bfh-flag-KW:empty, -.bfh-flag-KY:empty, -.bfh-flag-LA:empty, -.bfh-flag-LC:empty, -.bfh-flag-LK:empty, -.bfh-flag-LR:empty, -.bfh-flag-LS:empty, -.bfh-flag-LT:empty, -.bfh-flag-LU:empty, -.bfh-flag-LV:empty, -.bfh-flag-LY:empty, -.bfh-flag-MA:empty, -.bfh-flag-ME:empty, -.bfh-flag-MG:empty, -.bfh-flag-MH:empty, -.bfh-flag-ML:empty, -.bfh-flag-MM:empty, -.bfh-flag-MP:empty, -.bfh-flag-MR:empty, -.bfh-flag-MS:empty, -.bfh-flag-MT:empty, -.bfh-flag-MU:empty, -.bfh-flag-MV:empty, -.bfh-flag-MW:empty, -.bfh-flag-MZ:empty, -.bfh-flag-NA:empty, -.bfh-flag-NE:empty, -.bfh-flag-NF:empty, -.bfh-flag-NG:empty, -.bfh-flag-NI:empty, -.bfh-flag-NL:empty, -.bfh-flag-NO:empty, -.bfh-flag-NP:empty, -.bfh-flag-NR:empty, -.bfh-flag-NZ:empty, -.bfh-flag-OM:empty, -.bfh-flag-PA:empty, -.bfh-flag-PE:empty, -.bfh-flag-PG:empty, -.bfh-flag-PH:empty, -.bfh-flag-PK:empty, -.bfh-flag-PL:empty, -.bfh-flag-PN:empty, -.bfh-flag-PS:empty, -.bfh-flag-PT:empty, -.bfh-flag-PW:empty, -.bfh-flag-PY:empty, -.bfh-flag-QA:empty, -.bfh-flag-RS:empty, -.bfh-flag-RU:empty, -.bfh-flag-RW:empty, -.bfh-flag-SA:empty, -.bfh-flag-SB:empty, -.bfh-flag-SC:empty, -.bfh-flag-SD:empty, -.bfh-flag-SE:empty, -.bfh-flag-SG:empty, -.bfh-flag-SH:empty, -.bfh-flag-SI:empty, -.bfh-flag-SK:empty, -.bfh-flag-SM:empty, -.bfh-flag-SN:empty, -.bfh-flag-SO:empty, -.bfh-flag-SR:empty, -.bfh-flag-SS:empty, -.bfh-flag-ST:empty, -.bfh-flag-SV:empty, -.bfh-flag-SY:empty, -.bfh-flag-SZ:empty, -.bfh-flag-TC:empty, -.bfh-flag-TD:empty, -.bfh-flag-TG:empty, -.bfh-flag-TH:empty, -.bfh-flag-TJ:empty, -.bfh-flag-TM:empty, -.bfh-flag-TN:empty, -.bfh-flag-TP:empty, -.bfh-flag-TR:empty, -.bfh-flag-TT:empty, -.bfh-flag-TV:empty, -.bfh-flag-TW:empty, -.bfh-flag-TZ:empty, -.bfh-flag-UA:empty, -.bfh-flag-UG:empty, -.bfh-flag-US:empty, -.bfh-flag-UY:empty, -.bfh-flag-UZ:empty, -.bfh-flag-VC:empty, -.bfh-flag-VE:empty, -.bfh-flag-VG:empty, -.bfh-flag-VI:empty, -.bfh-flag-VN:empty, -.bfh-flag-VU:empty, -.bfh-flag-WS:empty, -.bfh-flag-YE:empty, -.bfh-flag-ZA:empty, -.bfh-flag-ZM:empty, -.bfh-flag-BF:empty, -.bfh-flag-CU:empty, -.bfh-flag-DE:empty, -.bfh-flag-IR:empty, -.bfh-flag-KZ:empty, -.bfh-flag-LB:empty, -.bfh-flag-LI:empty, -.bfh-flag-MC:empty, -.bfh-flag-MD:empty, -.bfh-flag-MK:empty, -.bfh-flag-MN:empty, -.bfh-flag-MO:empty, -.bfh-flag-MX:empty, -.bfh-flag-MY:empty, -.bfh-flag-PR:empty, -.bfh-flag-RO:empty, -.bfh-flag-SL:empty, -.bfh-flag-TO:empty, -.bfh-flag-VA:empty, -.bfh-flag-ZW:empty { - width: 16px; -} - -.bfh-flag-AD, -.bfh-flag-AE, -.bfh-flag-AF, -.bfh-flag-AG, -.bfh-flag-AI, -.bfh-flag-AL, -.bfh-flag-AM, -.bfh-flag-AN, -.bfh-flag-AO, -.bfh-flag-AQ, -.bfh-flag-AR, -.bfh-flag-AS, -.bfh-flag-AT, -.bfh-flag-AU, -.bfh-flag-AW, -.bfh-flag-AX, -.bfh-flag-AZ, -.bfh-flag-BA, -.bfh-flag-BB, -.bfh-flag-BD, -.bfh-flag-BE, -.bfh-flag-BG, -.bfh-flag-BH, -.bfh-flag-BI, -.bfh-flag-BJ, -.bfh-flag-BL, -.bfh-flag-BM, -.bfh-flag-BN, -.bfh-flag-BO, -.bfh-flag-BR, -.bfh-flag-BS, -.bfh-flag-BT, -.bfh-flag-BW, -.bfh-flag-BY, -.bfh-flag-BZ, -.bfh-flag-CA, -.bfh-flag-CD, -.bfh-flag-CF, -.bfh-flag-CG, -.bfh-flag-CH, -.bfh-flag-CI, -.bfh-flag-CL, -.bfh-flag-CM, -.bfh-flag-CN, -.bfh-flag-CO, -.bfh-flag-CR, -.bfh-flag-CV, -.bfh-flag-CY, -.bfh-flag-CZ, -.bfh-flag-DJ, -.bfh-flag-DK, -.bfh-flag-DM, -.bfh-flag-DO, -.bfh-flag-DZ, -.bfh-flag-EC, -.bfh-flag-EE, -.bfh-flag-EG, -.bfh-flag-EH, -.bfh-flag-ER, -.bfh-flag-ES, -.bfh-flag-ET, -.bfh-flag-EU, -.bfh-flag-FI, -.bfh-flag-FJ, -.bfh-flag-FK, -.bfh-flag-FM, -.bfh-flag-FO, -.bfh-flag-FR, -.bfh-flag-FX, -.bfh-flag-GF, -.bfh-flag-GP, -.bfh-flag-MQ, -.bfh-flag-NC, -.bfh-flag-PF, -.bfh-flag-PM, -.bfh-flag-RE, -.bfh-flag-TF, -.bfh-flag-WF, -.bfh-flag-GA, -.bfh-flag-GB, -.bfh-flag-GD, -.bfh-flag-GE, -.bfh-flag-GG, -.bfh-flag-GH, -.bfh-flag-GL, -.bfh-flag-GM, -.bfh-flag-GN, -.bfh-flag-GQ, -.bfh-flag-GR, -.bfh-flag-GS, -.bfh-flag-GT, -.bfh-flag-GU, -.bfh-flag-GW, -.bfh-flag-GY, -.bfh-flag-HK, -.bfh-flag-HN, -.bfh-flag-HR, -.bfh-flag-HT, -.bfh-flag-HU, -.bfh-flag-ID, -.bfh-flag-IE, -.bfh-flag-IL, -.bfh-flag-IM, -.bfh-flag-IN, -.bfh-flag-IQ, -.bfh-flag-IS, -.bfh-flag-IT, -.bfh-flag-JE, -.bfh-flag-JM, -.bfh-flag-JO, -.bfh-flag-JP, -.bfh-flag-KE, -.bfh-flag-KG, -.bfh-flag-KH, -.bfh-flag-KI, -.bfh-flag-KM, -.bfh-flag-KN, -.bfh-flag-KP, -.bfh-flag-KR, -.bfh-flag-KV, -.bfh-flag-KW, -.bfh-flag-KY, -.bfh-flag-LA, -.bfh-flag-LC, -.bfh-flag-LK, -.bfh-flag-LR, -.bfh-flag-LS, -.bfh-flag-LT, -.bfh-flag-LU, -.bfh-flag-LV, -.bfh-flag-LY, -.bfh-flag-MA, -.bfh-flag-ME, -.bfh-flag-MG, -.bfh-flag-MH, -.bfh-flag-ML, -.bfh-flag-MM, -.bfh-flag-MP, -.bfh-flag-MR, -.bfh-flag-MS, -.bfh-flag-MT, -.bfh-flag-MU, -.bfh-flag-MV, -.bfh-flag-MW, -.bfh-flag-MZ, -.bfh-flag-NA, -.bfh-flag-NE, -.bfh-flag-NF, -.bfh-flag-NG, -.bfh-flag-NI, -.bfh-flag-NL, -.bfh-flag-NO, -.bfh-flag-NP, -.bfh-flag-NR, -.bfh-flag-NZ, -.bfh-flag-OM, -.bfh-flag-PA, -.bfh-flag-PE, -.bfh-flag-PG, -.bfh-flag-PH, -.bfh-flag-PK, -.bfh-flag-PL, -.bfh-flag-PN, -.bfh-flag-PS, -.bfh-flag-PT, -.bfh-flag-PW, -.bfh-flag-PY, -.bfh-flag-QA, -.bfh-flag-RS, -.bfh-flag-RU, -.bfh-flag-RW, -.bfh-flag-SA, -.bfh-flag-SB, -.bfh-flag-SC, -.bfh-flag-SD, -.bfh-flag-SE, -.bfh-flag-SG, -.bfh-flag-SH, -.bfh-flag-SI, -.bfh-flag-SK, -.bfh-flag-SM, -.bfh-flag-SN, -.bfh-flag-SO, -.bfh-flag-SR, -.bfh-flag-SS, -.bfh-flag-ST, -.bfh-flag-SV, -.bfh-flag-SY, -.bfh-flag-SZ, -.bfh-flag-TC, -.bfh-flag-TD, -.bfh-flag-TG, -.bfh-flag-TH, -.bfh-flag-TJ, -.bfh-flag-TM, -.bfh-flag-TN, -.bfh-flag-TP, -.bfh-flag-TR, -.bfh-flag-TT, -.bfh-flag-TV, -.bfh-flag-TW, -.bfh-flag-TZ, -.bfh-flag-UA, -.bfh-flag-UG, -.bfh-flag-US, -.bfh-flag-UY, -.bfh-flag-UZ, -.bfh-flag-VC, -.bfh-flag-VE, -.bfh-flag-VG, -.bfh-flag-VI, -.bfh-flag-VN, -.bfh-flag-VU, -.bfh-flag-WS, -.bfh-flag-YE, -.bfh-flag-ZA, -.bfh-flag-ZM, -.bfh-flag-BF, -.bfh-flag-CU, -.bfh-flag-DE, -.bfh-flag-IR, -.bfh-flag-KZ, -.bfh-flag-LB, -.bfh-flag-LI, -.bfh-flag-MC, -.bfh-flag-MD, -.bfh-flag-MK, -.bfh-flag-MN, -.bfh-flag-MO, -.bfh-flag-MX, -.bfh-flag-MY, -.bfh-flag-PR, -.bfh-flag-RO, -.bfh-flag-SL, -.bfh-flag-TO, -.bfh-flag-VA, -.bfh-flag-ZW, -.bfh-flag-EUR, -.bfh-flag-XCD { - margin-right: 5px; -} - -.bfh-flag-AD { - background-position: -1921px 0; -} - -.bfh-flag-AE { - background-position: -1904px 0; -} - -.bfh-flag-AF { - background-position: -3689px 0; -} - -.bfh-flag-AG { - background-position: -34px 0; -} - -.bfh-flag-AI { - background-position: -51px 0; -} - -.bfh-flag-AL { - background-position: -68px 0; -} - -.bfh-flag-AM { - background-position: -85px 0; -} - -.bfh-flag-AN { - background-position: -102px 0; -} - -.bfh-flag-AO { - background-position: -119px 0; -} - -.bfh-flag-AQ { - background-position: -136px 0; -} - -.bfh-flag-AR { - background-position: -153px 0; -} - -.bfh-flag-AS { - background-position: -170px 0; -} - -.bfh-flag-AT { - background-position: -187px 0; -} - -.bfh-flag-AU { - background-position: -204px 0; -} - -.bfh-flag-AW { - background-position: -221px 0; -} - -.bfh-flag-AX { - background-position: -238px 0; -} - -.bfh-flag-AZ { - background-position: -255px 0; -} - -.bfh-flag-BA { - background-position: -272px 0; -} - -.bfh-flag-BB { - background-position: -289px 0; -} - -.bfh-flag-BD { - background-position: -306px 0; -} - -.bfh-flag-BE { - background-position: -323px 0; -} - -.bfh-flag-BG { - background-position: -340px 0; -} - -.bfh-flag-BH { - background-position: -357px 0; -} - -.bfh-flag-BI { - background-position: -374px 0; -} - -.bfh-flag-BJ { - background-position: -391px 0; -} - -.bfh-flag-BL { - background-position: -408px 0; -} - -.bfh-flag-BM { - background-position: -425px 0; -} - -.bfh-flag-BN { - background-position: -442px 0; -} - -.bfh-flag-BO { - background-position: -459px 0; -} - -.bfh-flag-BR { - background-position: -476px 0; -} - -.bfh-flag-BS { - background-position: -493px 0; -} - -.bfh-flag-BT { - background-position: -510px 0; -} - -.bfh-flag-BW { - background-position: -527px 0; -} - -.bfh-flag-BY { - background-position: -544px 0; -} - -.bfh-flag-BZ { - background-position: -561px 0; -} - -.bfh-flag-CA { - background-position: -578px 0; -} - -.bfh-flag-CD { - background-position: -595px 0; -} - -.bfh-flag-CF { - background-position: -612px 0; -} - -.bfh-flag-CG { - background-position: -629px 0; -} - -.bfh-flag-CH { - background-position: -646px 0; -} - -.bfh-flag-CI { - background-position: -663px 0; -} - -.bfh-flag-CL { - background-position: -680px 0; -} - -.bfh-flag-CM { - background-position: -697px 0; -} - -.bfh-flag-CN { - background-position: -714px 0; -} - -.bfh-flag-CO { - background-position: -731px 0; -} - -.bfh-flag-CR { - background-position: -748px 0; -} - -.bfh-flag-CV { - background-position: -765px 0; -} - -.bfh-flag-CY { - background-position: -782px 0; -} - -.bfh-flag-CZ { - background-position: -799px 0; -} - -.bfh-flag-DJ { - background-position: -816px 0; -} - -.bfh-flag-DK { - background-position: -833px 0; -} - -.bfh-flag-DM { - background-position: -850px 0; -} - -.bfh-flag-DO { - background-position: -867px 0; -} - -.bfh-flag-DZ { - background-position: -884px 0; -} - -.bfh-flag-EC { - background-position: -901px 0; -} - -.bfh-flag-EE { - background-position: -918px 0; -} - -.bfh-flag-EG { - background-position: -935px 0; -} - -.bfh-flag-EH { - background-position: -952px 0; -} - -.bfh-flag-ER { - background-position: -969px 0; -} - -.bfh-flag-ES { - background-position: -986px 0; -} - -.bfh-flag-ET { - background-position: -1003px 0; -} - -.bfh-flag-EU { - background-position: -1020px 0; -} - -.bfh-flag-FI { - background-position: -1037px 0; -} - -.bfh-flag-FJ { - background-position: -1054px 0; -} - -.bfh-flag-FK { - background-position: -1071px 0; -} - -.bfh-flag-FM { - background-position: -1088px 0; -} - -.bfh-flag-FO { - background-position: -1105px 0; -} - -.bfh-flag-FR, -.bfh-flag-FX, -.bfh-flag-GF, -.bfh-flag-GP, -.bfh-flag-MQ, -.bfh-flag-NC, -.bfh-flag-PF, -.bfh-flag-PM, -.bfh-flag-RE, -.bfh-flag-TF, -.bfh-flag-WF { - background-position: -1122px 0; -} - -.bfh-flag-GA { - background-position: -1139px 0; -} - -.bfh-flag-GB { - background-position: -1156px 0; -} - -.bfh-flag-GD { - background-position: -1173px 0; -} - -.bfh-flag-GE { - background-position: -1190px 0; -} - -.bfh-flag-GG { - background-position: -1207px 0; -} - -.bfh-flag-GH { - background-position: -1224px 0; -} - -.bfh-flag-GL { - background-position: -1241px 0; -} - -.bfh-flag-GM { - background-position: -1258px 0; -} - -.bfh-flag-GN { - background-position: -1275px 0; -} - -.bfh-flag-GQ { - background-position: -1292px 0; -} - -.bfh-flag-GR { - background-position: -1309px 0; -} - -.bfh-flag-GS { - background-position: -1326px 0; -} - -.bfh-flag-GT { - background-position: -1343px 0; -} - -.bfh-flag-GU { - background-position: -1360px 0; -} - -.bfh-flag-GW { - background-position: -1377px 0; -} - -.bfh-flag-GY { - background-position: -1394px 0; -} - -.bfh-flag-HK { - background-position: -1411px 0; -} - -.bfh-flag-HN { - background-position: -1428px 0; -} - -.bfh-flag-HR { - background-position: -1445px 0; -} - -.bfh-flag-HT { - background-position: -1462px 0; -} - -.bfh-flag-HU { - background-position: -1479px 0; -} - -.bfh-flag-ID { - background-position: -1496px 0; -} - -.bfh-flag-IE { - background-position: -1513px 0; -} - -.bfh-flag-IL { - background-position: -1530px 0; -} - -.bfh-flag-IM { - background-position: -1547px 0; -} - -.bfh-flag-IN { - background-position: -1564px 0; -} - -.bfh-flag-IQ { - background-position: -1581px 0; -} - -.bfh-flag-IS { - background-position: -1598px 0; -} - -.bfh-flag-IT { - background-position: -1615px 0; -} - -.bfh-flag-JE { - background-position: -1632px 0; -} - -.bfh-flag-JM { - background-position: -1649px 0; -} - -.bfh-flag-JO { - background-position: -1666px 0; -} - -.bfh-flag-JP { - background-position: -1683px 0; -} - -.bfh-flag-KE { - background-position: -1700px 0; -} - -.bfh-flag-KG { - background-position: -1717px 0; -} - -.bfh-flag-KH { - background-position: -1734px 0; -} - -.bfh-flag-KI { - background-position: -1751px 0; -} - -.bfh-flag-KM { - background-position: -1768px 0; -} - -.bfh-flag-KN { - background-position: -1785px 0; -} - -.bfh-flag-KP { - background-position: -1802px 0; -} - -.bfh-flag-KR { - background-position: -1819px 0; -} - -.bfh-flag-KV { - background-position: -1836px 0; -} - -.bfh-flag-KW { - background-position: -1853px 0; -} - -.bfh-flag-KY { - background-position: -1870px 0; -} - -.bfh-flag-LA { - background-position: -1887px 0; -} - -.bfh-flag-LC { - background-position: 0 0; -} - -.bfh-flag-LK { - background-position: -17px 0; -} - -.bfh-flag-LR { - background-position: -1938px 0; -} - -.bfh-flag-LS { - background-position: -1955px 0; -} - -.bfh-flag-LT { - background-position: -1972px 0; -} - -.bfh-flag-LU { - background-position: -1989px 0; -} - -.bfh-flag-LV { - background-position: -2006px 0; -} - -.bfh-flag-LY { - background-position: -2023px 0; -} - -.bfh-flag-MA { - background-position: -2040px 0; -} - -.bfh-flag-ME { - background-position: -2057px 0; -} - -.bfh-flag-MG { - background-position: -2074px 0; -} - -.bfh-flag-MH { - background-position: -2091px 0; -} - -.bfh-flag-ML { - background-position: -2108px 0; -} - -.bfh-flag-MM { - background-position: -2125px 0; -} - -.bfh-flag-MP { - background-position: -2142px 0; -} - -.bfh-flag-MR { - background-position: -2159px 0; -} - -.bfh-flag-MS { - background-position: -2176px 0; -} - -.bfh-flag-MT { - background-position: -2193px 0; -} - -.bfh-flag-MU { - background-position: -2210px 0; -} - -.bfh-flag-MV { - background-position: -2227px 0; -} - -.bfh-flag-MW { - background-position: -2244px 0; -} - -.bfh-flag-MZ { - background-position: -2261px 0; -} - -.bfh-flag-NA { - background-position: -2278px 0; -} - -.bfh-flag-NE { - background-position: -2295px 0; -} - -.bfh-flag-NF { - background-position: -2312px 0; -} - -.bfh-flag-NG { - background-position: -2329px 0; -} - -.bfh-flag-NI { - background-position: -2346px 0; -} - -.bfh-flag-NL { - background-position: -2363px 0; -} - -.bfh-flag-NO { - background-position: -2380px 0; -} - -.bfh-flag-NP { - background-position: -2397px 0; -} - -.bfh-flag-NR { - background-position: -2414px 0; -} - -.bfh-flag-NZ { - background-position: -2431px 0; -} - -.bfh-flag-OM { - background-position: -2448px 0; -} - -.bfh-flag-PA { - background-position: -2465px 0; -} - -.bfh-flag-PE { - background-position: -2482px 0; -} - -.bfh-flag-PG { - background-position: -2499px 0; -} - -.bfh-flag-PH { - background-position: -2516px 0; -} - -.bfh-flag-PK { - background-position: -2533px 0; -} - -.bfh-flag-PL { - background-position: -2550px 0; -} - -.bfh-flag-PN { - background-position: -2567px 0; -} - -.bfh-flag-PS { - background-position: -2584px 0; -} - -.bfh-flag-PT { - background-position: -2601px 0; -} - -.bfh-flag-PW { - background-position: -2618px 0; -} - -.bfh-flag-PY { - background-position: -2635px 0; -} - -.bfh-flag-QA { - background-position: -2652px 0; -} - -.bfh-flag-RS { - background-position: -2669px 0; -} - -.bfh-flag-RU { - background-position: -2686px 0; -} - -.bfh-flag-RW { - background-position: -2703px 0; -} - -.bfh-flag-SA { - background-position: -2720px 0; -} - -.bfh-flag-SB { - background-position: -2737px 0; -} - -.bfh-flag-SC { - background-position: -2754px 0; -} - -.bfh-flag-SD { - background-position: -2771px 0; -} - -.bfh-flag-SE { - background-position: -2788px 0; -} - -.bfh-flag-SG { - background-position: -2805px 0; -} - -.bfh-flag-SH { - background-position: -2822px 0; -} - -.bfh-flag-SI { - background-position: -2839px 0; -} - -.bfh-flag-SK { - background-position: -2856px 0; -} - -.bfh-flag-SM { - background-position: -2873px 0; -} - -.bfh-flag-SN { - background-position: -2890px 0; -} - -.bfh-flag-SO { - background-position: -2907px 0; -} - -.bfh-flag-SR { - background-position: -2924px 0; -} - -.bfh-flag-SS { - background-position: -2941px 0; -} - -.bfh-flag-ST { - background-position: -2958px 0; -} - -.bfh-flag-SV { - background-position: -2975px 0; -} - -.bfh-flag-SY { - background-position: -2992px 0; -} - -.bfh-flag-SZ { - background-position: -3009px 0; -} - -.bfh-flag-TC { - background-position: -3026px 0; -} - -.bfh-flag-TD { - background-position: -3043px 0; -} - -.bfh-flag-TG { - background-position: -3060px 0; -} - -.bfh-flag-TH { - background-position: -3077px 0; -} - -.bfh-flag-TJ { - background-position: -3094px 0; -} - -.bfh-flag-TM { - background-position: -3111px 0; -} - -.bfh-flag-TN { - background-position: -3128px 0; -} - -.bfh-flag-TP { - background-position: -3145px 0; -} - -.bfh-flag-TR { - background-position: -3162px 0; -} - -.bfh-flag-TT { - background-position: -3179px 0; -} - -.bfh-flag-TV { - background-position: -3196px 0; -} - -.bfh-flag-TW { - background-position: -3213px 0; -} - -.bfh-flag-TZ { - background-position: -3230px 0; -} - -.bfh-flag-UA { - background-position: -3247px 0; -} - -.bfh-flag-UG { - background-position: -3264px 0; -} - -.bfh-flag-US { - background-position: -3281px 0; -} - -.bfh-flag-UY { - background-position: -3298px 0; -} - -.bfh-flag-UZ { - background-position: -3315px 0; -} - -.bfh-flag-VC { - background-position: -3332px 0; -} - -.bfh-flag-VE { - background-position: -3349px 0; -} - -.bfh-flag-VG { - background-position: -3366px 0; -} - -.bfh-flag-VI { - background-position: -3383px 0; -} - -.bfh-flag-VN { - background-position: -3400px 0; -} - -.bfh-flag-VU { - background-position: -3417px 0; -} - -.bfh-flag-WS { - background-position: -3434px 0; -} - -.bfh-flag-YE { - background-position: -3451px 0; -} - -.bfh-flag-ZA { - background-position: -3468px 0; -} - -.bfh-flag-ZM { - background-position: -3485px 0; -} - -.bfh-flag-BF { - background-position: -3502px 0; -} - -.bfh-flag-CU { - background-position: -3519px 0; -} - -.bfh-flag-DE { - background-position: -3536px 0; -} - -.bfh-flag-IR { - background-position: -3553px 0; -} - -.bfh-flag-KZ { - background-position: -3570px 0; -} - -.bfh-flag-LB { - background-position: -3587px 0; -} - -.bfh-flag-LI { - background-position: -3604px 0; -} - -.bfh-flag-MC { - background-position: -3621px 0; -} - -.bfh-flag-MD { - background-position: -3638px 0; -} - -.bfh-flag-MK { - background-position: -3655px 0; -} - -.bfh-flag-MN { - background-position: -3672px 0; -} - -.bfh-flag-MO { - background-position: -3706px 0; -} - -.bfh-flag-MX { - background-position: -3723px 0; -} - -.bfh-flag-MY { - background-position: -3740px 0; -} - -.bfh-flag-PR { - background-position: -3757px 0; -} - -.bfh-flag-RO { - background-position: -3774px 0; -} - -.bfh-flag-SL { - background-position: -3791px 0; -} - -.bfh-flag-TO { - background-position: -3808px 0; -} - -.bfh-flag-VA { - background-position: -3825px 0; -} - -.bfh-flag-ZW { - background-position: -3842px 0; -} - -.bfh-flag-EUR { - background: url(../img/eu.png) no-repeat; -} - -.bfh-flag-XCD { - background: url(../img/xcd.png) no-repeat; -} - -.bfh-flag-AUD, -.bfh-flag-CHF, -.bfh-flag-DKK, -.bfh-flag-EUR, -.bfh-flag-XAF, -.bfh-flag-XCD, -.bfh-flag-XOF, -.bfh-flag-XPF, -.bfh-flag-ZAR { - width: 16px; - height: 14px; - background: url(../img/bootstrap-formhelpers-currencies.flags.png) no-repeat; -} - -.bfh-flag-AUD:empty, -.bfh-flag-CHF:empty, -.bfh-flag-DKK:empty, -.bfh-flag-EUR:empty, -.bfh-flag-XAF:empty, -.bfh-flag-XCD:empty, -.bfh-flag-XOF:empty, -.bfh-flag-XPF:empty, -.bfh-flag-ZAR:empty { - width: 16px; -} - -.bfh-flag-AUD, -.bfh-flag-CHF, -.bfh-flag-DKK, -.bfh-flag-EUR, -.bfh-flag-XAF, -.bfh-flag-XCD, -.bfh-flag-XOF, -.bfh-flag-XPF, -.bfh-flag-ZAR { - margin-right: 5px; -} - -.bfh-flag-AUD { - background-position: -32px 0; -} - -.bfh-flag-CHF { - background-position: -224px 0; -} - -.bfh-flag-DKK { - background-position: -64px -16px; -} - -.bfh-flag-EUR { - background-position: -96px -16px; -} - -.bfh-flag-XAF { - background-position: -160px -80px; -} - -.bfh-flag-XCD { - background-position: -176px -80px; -} - -.bfh-flag-XOF { - background-position: -192px -80px; -} - -.bfh-flag-XPF { - background-position: -208px -80px; -} - -.bfh-flag-ZAR { - background-position: -224px -80px; -} - -.bfh-selectbox { - position: relative; -} - -.bfh-selectbox .bfh-selectbox-toggle { - display: inline-block; - padding: 6px 24px 6px 12px; - text-decoration: none; -} - -.bfh-selectbox .bfh-selectbox-toggle:focus { - outline: 0; -} - -.bfh-selectbox .bfh-selectbox-toggle .bfh-selectbox-option { - display: inline-block; - float: left; - width: 100%; - height: 20px; - overflow: hidden; - text-overflow: ellipsis; -} - -.bfh-selectbox .bfh-selectbox-toggle .selectbox-caret { - float: right; - margin-top: 8px; - margin-right: -16px; - margin-left: -10px; -} - -.bfh-selectbox .bfh-selectbox-options { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 90px; - padding: 5px 0; - margin: -1px 0 0; - font-size: 14px; - background-color: #ffffff; - border: 1px solid #cccccc; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - background-clip: padding-box; -} - -.bfh-selectbox .bfh-selectbox-options.pull-right { - right: 0; - left: auto; -} - -.bfh-selectbox .bfh-selectbox-options .divider { - height: 1px; - margin: 9px 0; - overflow: hidden; - background-color: #e5e5e5; -} - -.bfh-selectbox .bfh-selectbox-options .bfh-selectbox-filter-container { - width: 100%; - padding: 5px; -} - -.bfh-selectbox .bfh-selectbox-options ul { - max-width: 500px; - max-height: 200px; - padding: 0; - margin: 5px 0 0 0; - overflow-x: hidden; - overflow-y: auto; - list-style: none; -} - -.bfh-selectbox .bfh-selectbox-options ul li > a { - display: block; - width: 100%; - min-height: 26px; - padding: 3px 20px; - overflow-x: hidden; - clear: both; - font-weight: normal; - line-height: 1.428571429; - color: #333333; - text-overflow: ellipsis; - white-space: nowrap; -} - -.bfh-selectbox .bfh-selectbox-options ul li > a:hover, -.bfh-selectbox .bfh-selectbox-options ul li > a:focus { - color: #262626; - text-decoration: none; - background-color: #f5f5f5; -} - -.bfh-selectbox .bfh-selectbox-options ul .bfh-selectbox-options-header { - display: block; - padding: 3px 20px; - font-size: 12px; - line-height: 1.428571429; - color: #999999; -} - -.bfh-selectbox .bfh-selectbox-options ul .disabled > a { - color: #999999; -} - -.bfh-selectbox .bfh-selectbox-options ul .disabled > a:hover, -.bfh-selectbox .bfh-selectbox-options ul .disabled > a:focus { - color: #999999; - text-decoration: none; - cursor: not-allowed; - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); -} - -.bfh-selectbox.open > .bfh-selectbox-options { - display: block; -} - -.bfh-selectbox.open a { - outline: 0; -} - -.pull-right > .bfh-selectbox-options { - right: 0; - left: auto; -} - -.bfh-selectbox-up .caret, -.navbar-fixed-bottom .bfh-selectbox .caret { - border-top: 0 dotted; - border-bottom: 4px solid #000000; - content: ""; -} - -.bfh-selectbox-up .bfh-selectbox-options, -.navbar-fixed-bottom .bfh-selectbox .bfh-selectbox-options { - top: auto; - bottom: 100%; - margin-bottom: 1px; -} - -@media (min-width: 768px) { - .navbar-right .bfh-selectbox-options { - right: 0; - left: auto; - } -} - -.bfh-googlefonts .bfh-selectbox-options a { - width: 230px; - height: 30px; - text-indent: -9999px; - background-image: url(../img/bootstrap-formhelpers-googlefonts.png); -} - -.bfh-googlefonts .bfh-selectbox-options a:focus { - background-color: transparent; - background-repeat: no-repeat; - outline: none; - filter: none; -} - -.bfh-googlefonts .bfh-selectbox-options .active > a, -.bfh-googlefonts .bfh-selectbox-options .active > a:hover { - background-color: transparent; - background-image: url(../img/bootstrap-formhelpers-googlefonts.png); - background-repeat: no-repeat; - outline: none; - filter: none; -} - -.bfh-datepicker-calendar { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 296px; -} - -.bfh-datepicker-calendar > table.calendar { - width: 376px; - background: #ffffff; -} - -.bfh-datepicker-calendar > table.calendar .months-header > th { - font-size: 12px; - text-align: center; -} - -.bfh-datepicker-calendar > table.calendar .months-header > th.month > span { - display: inline-block; - width: 100px; -} - -.bfh-datepicker-calendar > table.calendar .months-header > th.year > span { - display: inline-block; - width: 50px; -} - -.bfh-datepicker-calendar > table.calendar .days-header > th { - width: 30px; - font-size: 11px; - line-height: 12px; - text-align: center; -} - -.bfh-datepicker-calendar > table.calendar > tbody > tr > td { - width: 30px; - font-size: 11px; - line-height: 12px; - text-align: center; -} - -.bfh-datepicker-calendar > table.calendar > tbody > tr > td.today { - color: #ffffff; - background-color: #428bca; -} - -.bfh-datepicker-calendar > table.calendar > tbody > tr > td.off { - color: #999999; -} - -.bfh-datepicker-calendar > table.calendar > tbody > tr > td:not(.off):hover { - color: #262626; - cursor: pointer; - background-color: #f5f5f5; -} - -.bfh-datepicker { - position: relative; -} - -.bfh-datepicker-toggle { - *margin-bottom: -3px; -} - -.bfh-datepicker-toggle > input[readonly] { - cursor: inherit; - background-color: inherit; -} - -.open > .bfh-datepicker-calendar { - display: block; -} - -.bfh-timepicker-popover { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 100px; - background-color: #ffffff; - border: 1px solid #cccccc; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - background-clip: padding-box; -} - -.bfh-timepicker-popover > table { - width: 180px; - margin: 0; -} - -.bfh-timepicker-popover > table > tbody > tr > td { - text-align: center; - border: 0; -} - -.bfh-timepicker-popover > table > tbody > tr > td.separator { - font-size: 20px; - font-weight: bold; - line-height: 28px; -} - -.bfh-timepicker-popover > table > tbody > tr > td > div > input { - width: 42px !important; - text-align: center; -} - -.bfh-timepicker { - position: relative; -} - -.bfh-timepicker-toggle { - *margin-bottom: -3px; -} - -.bfh-timepicker-toggle > input[readonly] { - cursor: inherit; - background-color: inherit; -} - -.open > .bfh-timepicker-popover { - display: block; -} - -.bfh-slider { - height: 20px; - margin-top: 8px; - margin-bottom: 23px; - background-color: #ffffff; - border: 1px solid #cccccc; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 4px; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; -} - -.bfh-slider > .bfh-slider-handle { - position: absolute; - width: 20px; - height: 34px; - margin-top: -7px; - cursor: col-resize; - background: #efefef; - border: 1px solid #cccccc; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 4px; -} - -.bfh-slider > .bfh-slider-handle > .bfh-slider-value { - position: absolute; - width: 48px; - height: 20px; - margin-top: 5px; - margin-left: -15px; - line-height: 20px; - text-align: center; - cursor: col-resize; - background-color: #ffffff; - border: 1px solid #cccccc; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 4px; -} - -.bfh-slider > .bfh-slider-handle > .bfh-slider-value .disabled { - color: #999999; -} - -.bfh-slider.disabled .bfh-slider-value { - color: #999999; -} - -.bfh-colorpicker-popover { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 100px; - padding: 20px; - cursor: default; - background-color: #ffffff; - border: 1px solid #cccccc; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 4px; - -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); - background-clip: padding-box; -} - -.bfh-colorpicker-popover > canvas { - width: 384px; - height: 256px; -} - -.bfh-colorpicker { - position: relative; -} - -.bfh-colorpicker-toggle { - *margin-bottom: -3px; -} - -.bfh-colorpicker-toggle > input[readonly] { - cursor: inherit; - background-color: inherit; -} - -.bfh-colorpicker-toggle .bfh-colorpicker-icon { - display: block; - width: 16px; - height: 16px; -} - -.open > .bfh-colorpicker-popover { - display: block; -} - -.input-group > .bfh-number { - border-right: 0; -} - -.input-group > .bfh-number-btn:hover { - background-color: #cccccc; -} \ No newline at end of file diff --git a/gui/slick/css/lib/bootstrap-formhelpers.min-2.3.0.css b/gui/slick/css/lib/bootstrap-formhelpers.min-2.3.0.css deleted file mode 100644 index bc8364488655d4f6a494065d97ef9462a9c4b470..0000000000000000000000000000000000000000 --- a/gui/slick/css/lib/bootstrap-formhelpers.min-2.3.0.css +++ /dev/null @@ -1,6 +0,0 @@ -/** -* bootstrap-formhelpers.js v2.3.0 by @vincentlamanna -* Copyright 2013 Vincent Lamanna -* http://www.apache.org/licenses/LICENSE-2.0 -*/ -.bfh-flag-AD,.bfh-flag-AE,.bfh-flag-AF,.bfh-flag-AG,.bfh-flag-AI,.bfh-flag-AL,.bfh-flag-AM,.bfh-flag-AN,.bfh-flag-AO,.bfh-flag-AQ,.bfh-flag-AR,.bfh-flag-AS,.bfh-flag-AT,.bfh-flag-AU,.bfh-flag-AW,.bfh-flag-AX,.bfh-flag-AZ,.bfh-flag-BA,.bfh-flag-BB,.bfh-flag-BD,.bfh-flag-BE,.bfh-flag-BG,.bfh-flag-BH,.bfh-flag-BI,.bfh-flag-BJ,.bfh-flag-BL,.bfh-flag-BM,.bfh-flag-BN,.bfh-flag-BO,.bfh-flag-BR,.bfh-flag-BS,.bfh-flag-BT,.bfh-flag-BW,.bfh-flag-BY,.bfh-flag-BZ,.bfh-flag-CA,.bfh-flag-CD,.bfh-flag-CF,.bfh-flag-CG,.bfh-flag-CH,.bfh-flag-CI,.bfh-flag-CL,.bfh-flag-CM,.bfh-flag-CN,.bfh-flag-CO,.bfh-flag-CR,.bfh-flag-CV,.bfh-flag-CY,.bfh-flag-CZ,.bfh-flag-DJ,.bfh-flag-DK,.bfh-flag-DM,.bfh-flag-DO,.bfh-flag-DZ,.bfh-flag-EC,.bfh-flag-EE,.bfh-flag-EG,.bfh-flag-EH,.bfh-flag-ER,.bfh-flag-ES,.bfh-flag-ET,.bfh-flag-EU,.bfh-flag-FI,.bfh-flag-FJ,.bfh-flag-FK,.bfh-flag-FM,.bfh-flag-FO,.bfh-flag-FR,.bfh-flag-FX,.bfh-flag-GF,.bfh-flag-GP,.bfh-flag-MQ,.bfh-flag-NC,.bfh-flag-PF,.bfh-flag-PM,.bfh-flag-RE,.bfh-flag-TF,.bfh-flag-WF,.bfh-flag-GA,.bfh-flag-GB,.bfh-flag-GD,.bfh-flag-GE,.bfh-flag-GG,.bfh-flag-GH,.bfh-flag-GL,.bfh-flag-GM,.bfh-flag-GN,.bfh-flag-GQ,.bfh-flag-GR,.bfh-flag-GS,.bfh-flag-GT,.bfh-flag-GU,.bfh-flag-GW,.bfh-flag-GY,.bfh-flag-HK,.bfh-flag-HN,.bfh-flag-HR,.bfh-flag-HT,.bfh-flag-HU,.bfh-flag-ID,.bfh-flag-IE,.bfh-flag-IL,.bfh-flag-IM,.bfh-flag-IN,.bfh-flag-IQ,.bfh-flag-IS,.bfh-flag-IT,.bfh-flag-JE,.bfh-flag-JM,.bfh-flag-JO,.bfh-flag-JP,.bfh-flag-KE,.bfh-flag-KG,.bfh-flag-KH,.bfh-flag-KI,.bfh-flag-KM,.bfh-flag-KN,.bfh-flag-KP,.bfh-flag-KR,.bfh-flag-KV,.bfh-flag-KW,.bfh-flag-KY,.bfh-flag-LA,.bfh-flag-LC,.bfh-flag-LK,.bfh-flag-LR,.bfh-flag-LS,.bfh-flag-LT,.bfh-flag-LU,.bfh-flag-LV,.bfh-flag-LY,.bfh-flag-MA,.bfh-flag-ME,.bfh-flag-MG,.bfh-flag-MH,.bfh-flag-ML,.bfh-flag-MM,.bfh-flag-MP,.bfh-flag-MR,.bfh-flag-MS,.bfh-flag-MT,.bfh-flag-MU,.bfh-flag-MV,.bfh-flag-MW,.bfh-flag-MZ,.bfh-flag-NA,.bfh-flag-NE,.bfh-flag-NF,.bfh-flag-NG,.bfh-flag-NI,.bfh-flag-NL,.bfh-flag-NO,.bfh-flag-NP,.bfh-flag-NR,.bfh-flag-NZ,.bfh-flag-OM,.bfh-flag-PA,.bfh-flag-PE,.bfh-flag-PG,.bfh-flag-PH,.bfh-flag-PK,.bfh-flag-PL,.bfh-flag-PN,.bfh-flag-PS,.bfh-flag-PT,.bfh-flag-PW,.bfh-flag-PY,.bfh-flag-QA,.bfh-flag-RS,.bfh-flag-RU,.bfh-flag-RW,.bfh-flag-SA,.bfh-flag-SB,.bfh-flag-SC,.bfh-flag-SD,.bfh-flag-SE,.bfh-flag-SG,.bfh-flag-SH,.bfh-flag-SI,.bfh-flag-SK,.bfh-flag-SM,.bfh-flag-SN,.bfh-flag-SO,.bfh-flag-SR,.bfh-flag-SS,.bfh-flag-ST,.bfh-flag-SV,.bfh-flag-SY,.bfh-flag-SZ,.bfh-flag-TC,.bfh-flag-TD,.bfh-flag-TG,.bfh-flag-TH,.bfh-flag-TJ,.bfh-flag-TM,.bfh-flag-TN,.bfh-flag-TP,.bfh-flag-TR,.bfh-flag-TT,.bfh-flag-TV,.bfh-flag-TW,.bfh-flag-TZ,.bfh-flag-UA,.bfh-flag-UG,.bfh-flag-US,.bfh-flag-UY,.bfh-flag-UZ,.bfh-flag-VC,.bfh-flag-VE,.bfh-flag-VG,.bfh-flag-VI,.bfh-flag-VN,.bfh-flag-VU,.bfh-flag-WS,.bfh-flag-YE,.bfh-flag-ZA,.bfh-flag-ZM,.bfh-flag-BF,.bfh-flag-CU,.bfh-flag-DE,.bfh-flag-IR,.bfh-flag-KZ,.bfh-flag-LB,.bfh-flag-LI,.bfh-flag-MC,.bfh-flag-MD,.bfh-flag-MK,.bfh-flag-MN,.bfh-flag-MO,.bfh-flag-MX,.bfh-flag-MY,.bfh-flag-PR,.bfh-flag-RO,.bfh-flag-SL,.bfh-flag-TO,.bfh-flag-VA,.bfh-flag-ZW{width:16px;height:14px;background:url(../img/bootstrap-formhelpers-countries.flags.png) no-repeat}.bfh-flag-AD:empty,.bfh-flag-AE:empty,.bfh-flag-AF:empty,.bfh-flag-AG:empty,.bfh-flag-AI:empty,.bfh-flag-AL:empty,.bfh-flag-AM:empty,.bfh-flag-AN:empty,.bfh-flag-AO:empty,.bfh-flag-AQ:empty,.bfh-flag-AR:empty,.bfh-flag-AS:empty,.bfh-flag-AT:empty,.bfh-flag-AU:empty,.bfh-flag-AW:empty,.bfh-flag-AX:empty,.bfh-flag-AZ:empty,.bfh-flag-BA:empty,.bfh-flag-BB:empty,.bfh-flag-BD:empty,.bfh-flag-BE:empty,.bfh-flag-BG:empty,.bfh-flag-BH:empty,.bfh-flag-BI:empty,.bfh-flag-BJ:empty,.bfh-flag-BL:empty,.bfh-flag-BM:empty,.bfh-flag-BN:empty,.bfh-flag-BO:empty,.bfh-flag-BR:empty,.bfh-flag-BS:empty,.bfh-flag-BT:empty,.bfh-flag-BW:empty,.bfh-flag-BY:empty,.bfh-flag-BZ:empty,.bfh-flag-CA:empty,.bfh-flag-CD:empty,.bfh-flag-CF:empty,.bfh-flag-CG:empty,.bfh-flag-CH:empty,.bfh-flag-CI:empty,.bfh-flag-CL:empty,.bfh-flag-CM:empty,.bfh-flag-CN:empty,.bfh-flag-CO:empty,.bfh-flag-CR:empty,.bfh-flag-CV:empty,.bfh-flag-CY:empty,.bfh-flag-CZ:empty,.bfh-flag-DJ:empty,.bfh-flag-DK:empty,.bfh-flag-DM:empty,.bfh-flag-DO:empty,.bfh-flag-DZ:empty,.bfh-flag-EC:empty,.bfh-flag-EE:empty,.bfh-flag-EG:empty,.bfh-flag-EH:empty,.bfh-flag-ER:empty,.bfh-flag-ES:empty,.bfh-flag-ET:empty,.bfh-flag-EU:empty,.bfh-flag-FI:empty,.bfh-flag-FJ:empty,.bfh-flag-FK:empty,.bfh-flag-FM:empty,.bfh-flag-FO:empty,.bfh-flag-FR:empty,.bfh-flag-FX:empty,.bfh-flag-GF:empty,.bfh-flag-GP:empty,.bfh-flag-MQ:empty,.bfh-flag-NC:empty,.bfh-flag-PF:empty,.bfh-flag-PM:empty,.bfh-flag-RE:empty,.bfh-flag-TF:empty,.bfh-flag-WF:empty,.bfh-flag-GA:empty,.bfh-flag-GB:empty,.bfh-flag-GD:empty,.bfh-flag-GE:empty,.bfh-flag-GG:empty,.bfh-flag-GH:empty,.bfh-flag-GL:empty,.bfh-flag-GM:empty,.bfh-flag-GN:empty,.bfh-flag-GQ:empty,.bfh-flag-GR:empty,.bfh-flag-GS:empty,.bfh-flag-GT:empty,.bfh-flag-GU:empty,.bfh-flag-GW:empty,.bfh-flag-GY:empty,.bfh-flag-HK:empty,.bfh-flag-HN:empty,.bfh-flag-HR:empty,.bfh-flag-HT:empty,.bfh-flag-HU:empty,.bfh-flag-ID:empty,.bfh-flag-IE:empty,.bfh-flag-IL:empty,.bfh-flag-IM:empty,.bfh-flag-IN:empty,.bfh-flag-IQ:empty,.bfh-flag-IS:empty,.bfh-flag-IT:empty,.bfh-flag-JE:empty,.bfh-flag-JM:empty,.bfh-flag-JO:empty,.bfh-flag-JP:empty,.bfh-flag-KE:empty,.bfh-flag-KG:empty,.bfh-flag-KH:empty,.bfh-flag-KI:empty,.bfh-flag-KM:empty,.bfh-flag-KN:empty,.bfh-flag-KP:empty,.bfh-flag-KR:empty,.bfh-flag-KV:empty,.bfh-flag-KW:empty,.bfh-flag-KY:empty,.bfh-flag-LA:empty,.bfh-flag-LC:empty,.bfh-flag-LK:empty,.bfh-flag-LR:empty,.bfh-flag-LS:empty,.bfh-flag-LT:empty,.bfh-flag-LU:empty,.bfh-flag-LV:empty,.bfh-flag-LY:empty,.bfh-flag-MA:empty,.bfh-flag-ME:empty,.bfh-flag-MG:empty,.bfh-flag-MH:empty,.bfh-flag-ML:empty,.bfh-flag-MM:empty,.bfh-flag-MP:empty,.bfh-flag-MR:empty,.bfh-flag-MS:empty,.bfh-flag-MT:empty,.bfh-flag-MU:empty,.bfh-flag-MV:empty,.bfh-flag-MW:empty,.bfh-flag-MZ:empty,.bfh-flag-NA:empty,.bfh-flag-NE:empty,.bfh-flag-NF:empty,.bfh-flag-NG:empty,.bfh-flag-NI:empty,.bfh-flag-NL:empty,.bfh-flag-NO:empty,.bfh-flag-NP:empty,.bfh-flag-NR:empty,.bfh-flag-NZ:empty,.bfh-flag-OM:empty,.bfh-flag-PA:empty,.bfh-flag-PE:empty,.bfh-flag-PG:empty,.bfh-flag-PH:empty,.bfh-flag-PK:empty,.bfh-flag-PL:empty,.bfh-flag-PN:empty,.bfh-flag-PS:empty,.bfh-flag-PT:empty,.bfh-flag-PW:empty,.bfh-flag-PY:empty,.bfh-flag-QA:empty,.bfh-flag-RS:empty,.bfh-flag-RU:empty,.bfh-flag-RW:empty,.bfh-flag-SA:empty,.bfh-flag-SB:empty,.bfh-flag-SC:empty,.bfh-flag-SD:empty,.bfh-flag-SE:empty,.bfh-flag-SG:empty,.bfh-flag-SH:empty,.bfh-flag-SI:empty,.bfh-flag-SK:empty,.bfh-flag-SM:empty,.bfh-flag-SN:empty,.bfh-flag-SO:empty,.bfh-flag-SR:empty,.bfh-flag-SS:empty,.bfh-flag-ST:empty,.bfh-flag-SV:empty,.bfh-flag-SY:empty,.bfh-flag-SZ:empty,.bfh-flag-TC:empty,.bfh-flag-TD:empty,.bfh-flag-TG:empty,.bfh-flag-TH:empty,.bfh-flag-TJ:empty,.bfh-flag-TM:empty,.bfh-flag-TN:empty,.bfh-flag-TP:empty,.bfh-flag-TR:empty,.bfh-flag-TT:empty,.bfh-flag-TV:empty,.bfh-flag-TW:empty,.bfh-flag-TZ:empty,.bfh-flag-UA:empty,.bfh-flag-UG:empty,.bfh-flag-US:empty,.bfh-flag-UY:empty,.bfh-flag-UZ:empty,.bfh-flag-VC:empty,.bfh-flag-VE:empty,.bfh-flag-VG:empty,.bfh-flag-VI:empty,.bfh-flag-VN:empty,.bfh-flag-VU:empty,.bfh-flag-WS:empty,.bfh-flag-YE:empty,.bfh-flag-ZA:empty,.bfh-flag-ZM:empty,.bfh-flag-BF:empty,.bfh-flag-CU:empty,.bfh-flag-DE:empty,.bfh-flag-IR:empty,.bfh-flag-KZ:empty,.bfh-flag-LB:empty,.bfh-flag-LI:empty,.bfh-flag-MC:empty,.bfh-flag-MD:empty,.bfh-flag-MK:empty,.bfh-flag-MN:empty,.bfh-flag-MO:empty,.bfh-flag-MX:empty,.bfh-flag-MY:empty,.bfh-flag-PR:empty,.bfh-flag-RO:empty,.bfh-flag-SL:empty,.bfh-flag-TO:empty,.bfh-flag-VA:empty,.bfh-flag-ZW:empty{width:16px}.bfh-flag-AD,.bfh-flag-AE,.bfh-flag-AF,.bfh-flag-AG,.bfh-flag-AI,.bfh-flag-AL,.bfh-flag-AM,.bfh-flag-AN,.bfh-flag-AO,.bfh-flag-AQ,.bfh-flag-AR,.bfh-flag-AS,.bfh-flag-AT,.bfh-flag-AU,.bfh-flag-AW,.bfh-flag-AX,.bfh-flag-AZ,.bfh-flag-BA,.bfh-flag-BB,.bfh-flag-BD,.bfh-flag-BE,.bfh-flag-BG,.bfh-flag-BH,.bfh-flag-BI,.bfh-flag-BJ,.bfh-flag-BL,.bfh-flag-BM,.bfh-flag-BN,.bfh-flag-BO,.bfh-flag-BR,.bfh-flag-BS,.bfh-flag-BT,.bfh-flag-BW,.bfh-flag-BY,.bfh-flag-BZ,.bfh-flag-CA,.bfh-flag-CD,.bfh-flag-CF,.bfh-flag-CG,.bfh-flag-CH,.bfh-flag-CI,.bfh-flag-CL,.bfh-flag-CM,.bfh-flag-CN,.bfh-flag-CO,.bfh-flag-CR,.bfh-flag-CV,.bfh-flag-CY,.bfh-flag-CZ,.bfh-flag-DJ,.bfh-flag-DK,.bfh-flag-DM,.bfh-flag-DO,.bfh-flag-DZ,.bfh-flag-EC,.bfh-flag-EE,.bfh-flag-EG,.bfh-flag-EH,.bfh-flag-ER,.bfh-flag-ES,.bfh-flag-ET,.bfh-flag-EU,.bfh-flag-FI,.bfh-flag-FJ,.bfh-flag-FK,.bfh-flag-FM,.bfh-flag-FO,.bfh-flag-FR,.bfh-flag-FX,.bfh-flag-GF,.bfh-flag-GP,.bfh-flag-MQ,.bfh-flag-NC,.bfh-flag-PF,.bfh-flag-PM,.bfh-flag-RE,.bfh-flag-TF,.bfh-flag-WF,.bfh-flag-GA,.bfh-flag-GB,.bfh-flag-GD,.bfh-flag-GE,.bfh-flag-GG,.bfh-flag-GH,.bfh-flag-GL,.bfh-flag-GM,.bfh-flag-GN,.bfh-flag-GQ,.bfh-flag-GR,.bfh-flag-GS,.bfh-flag-GT,.bfh-flag-GU,.bfh-flag-GW,.bfh-flag-GY,.bfh-flag-HK,.bfh-flag-HN,.bfh-flag-HR,.bfh-flag-HT,.bfh-flag-HU,.bfh-flag-ID,.bfh-flag-IE,.bfh-flag-IL,.bfh-flag-IM,.bfh-flag-IN,.bfh-flag-IQ,.bfh-flag-IS,.bfh-flag-IT,.bfh-flag-JE,.bfh-flag-JM,.bfh-flag-JO,.bfh-flag-JP,.bfh-flag-KE,.bfh-flag-KG,.bfh-flag-KH,.bfh-flag-KI,.bfh-flag-KM,.bfh-flag-KN,.bfh-flag-KP,.bfh-flag-KR,.bfh-flag-KV,.bfh-flag-KW,.bfh-flag-KY,.bfh-flag-LA,.bfh-flag-LC,.bfh-flag-LK,.bfh-flag-LR,.bfh-flag-LS,.bfh-flag-LT,.bfh-flag-LU,.bfh-flag-LV,.bfh-flag-LY,.bfh-flag-MA,.bfh-flag-ME,.bfh-flag-MG,.bfh-flag-MH,.bfh-flag-ML,.bfh-flag-MM,.bfh-flag-MP,.bfh-flag-MR,.bfh-flag-MS,.bfh-flag-MT,.bfh-flag-MU,.bfh-flag-MV,.bfh-flag-MW,.bfh-flag-MZ,.bfh-flag-NA,.bfh-flag-NE,.bfh-flag-NF,.bfh-flag-NG,.bfh-flag-NI,.bfh-flag-NL,.bfh-flag-NO,.bfh-flag-NP,.bfh-flag-NR,.bfh-flag-NZ,.bfh-flag-OM,.bfh-flag-PA,.bfh-flag-PE,.bfh-flag-PG,.bfh-flag-PH,.bfh-flag-PK,.bfh-flag-PL,.bfh-flag-PN,.bfh-flag-PS,.bfh-flag-PT,.bfh-flag-PW,.bfh-flag-PY,.bfh-flag-QA,.bfh-flag-RS,.bfh-flag-RU,.bfh-flag-RW,.bfh-flag-SA,.bfh-flag-SB,.bfh-flag-SC,.bfh-flag-SD,.bfh-flag-SE,.bfh-flag-SG,.bfh-flag-SH,.bfh-flag-SI,.bfh-flag-SK,.bfh-flag-SM,.bfh-flag-SN,.bfh-flag-SO,.bfh-flag-SR,.bfh-flag-SS,.bfh-flag-ST,.bfh-flag-SV,.bfh-flag-SY,.bfh-flag-SZ,.bfh-flag-TC,.bfh-flag-TD,.bfh-flag-TG,.bfh-flag-TH,.bfh-flag-TJ,.bfh-flag-TM,.bfh-flag-TN,.bfh-flag-TP,.bfh-flag-TR,.bfh-flag-TT,.bfh-flag-TV,.bfh-flag-TW,.bfh-flag-TZ,.bfh-flag-UA,.bfh-flag-UG,.bfh-flag-US,.bfh-flag-UY,.bfh-flag-UZ,.bfh-flag-VC,.bfh-flag-VE,.bfh-flag-VG,.bfh-flag-VI,.bfh-flag-VN,.bfh-flag-VU,.bfh-flag-WS,.bfh-flag-YE,.bfh-flag-ZA,.bfh-flag-ZM,.bfh-flag-BF,.bfh-flag-CU,.bfh-flag-DE,.bfh-flag-IR,.bfh-flag-KZ,.bfh-flag-LB,.bfh-flag-LI,.bfh-flag-MC,.bfh-flag-MD,.bfh-flag-MK,.bfh-flag-MN,.bfh-flag-MO,.bfh-flag-MX,.bfh-flag-MY,.bfh-flag-PR,.bfh-flag-RO,.bfh-flag-SL,.bfh-flag-TO,.bfh-flag-VA,.bfh-flag-ZW,.bfh-flag-EUR,.bfh-flag-XCD{margin-right:5px}.bfh-flag-AD{background-position:-1921px 0}.bfh-flag-AE{background-position:-1904px 0}.bfh-flag-AF{background-position:-3689px 0}.bfh-flag-AG{background-position:-34px 0}.bfh-flag-AI{background-position:-51px 0}.bfh-flag-AL{background-position:-68px 0}.bfh-flag-AM{background-position:-85px 0}.bfh-flag-AN{background-position:-102px 0}.bfh-flag-AO{background-position:-119px 0}.bfh-flag-AQ{background-position:-136px 0}.bfh-flag-AR{background-position:-153px 0}.bfh-flag-AS{background-position:-170px 0}.bfh-flag-AT{background-position:-187px 0}.bfh-flag-AU{background-position:-204px 0}.bfh-flag-AW{background-position:-221px 0}.bfh-flag-AX{background-position:-238px 0}.bfh-flag-AZ{background-position:-255px 0}.bfh-flag-BA{background-position:-272px 0}.bfh-flag-BB{background-position:-289px 0}.bfh-flag-BD{background-position:-306px 0}.bfh-flag-BE{background-position:-323px 0}.bfh-flag-BG{background-position:-340px 0}.bfh-flag-BH{background-position:-357px 0}.bfh-flag-BI{background-position:-374px 0}.bfh-flag-BJ{background-position:-391px 0}.bfh-flag-BL{background-position:-408px 0}.bfh-flag-BM{background-position:-425px 0}.bfh-flag-BN{background-position:-442px 0}.bfh-flag-BO{background-position:-459px 0}.bfh-flag-BR{background-position:-476px 0}.bfh-flag-BS{background-position:-493px 0}.bfh-flag-BT{background-position:-510px 0}.bfh-flag-BW{background-position:-527px 0}.bfh-flag-BY{background-position:-544px 0}.bfh-flag-BZ{background-position:-561px 0}.bfh-flag-CA{background-position:-578px 0}.bfh-flag-CD{background-position:-595px 0}.bfh-flag-CF{background-position:-612px 0}.bfh-flag-CG{background-position:-629px 0}.bfh-flag-CH{background-position:-646px 0}.bfh-flag-CI{background-position:-663px 0}.bfh-flag-CL{background-position:-680px 0}.bfh-flag-CM{background-position:-697px 0}.bfh-flag-CN{background-position:-714px 0}.bfh-flag-CO{background-position:-731px 0}.bfh-flag-CR{background-position:-748px 0}.bfh-flag-CV{background-position:-765px 0}.bfh-flag-CY{background-position:-782px 0}.bfh-flag-CZ{background-position:-799px 0}.bfh-flag-DJ{background-position:-816px 0}.bfh-flag-DK{background-position:-833px 0}.bfh-flag-DM{background-position:-850px 0}.bfh-flag-DO{background-position:-867px 0}.bfh-flag-DZ{background-position:-884px 0}.bfh-flag-EC{background-position:-901px 0}.bfh-flag-EE{background-position:-918px 0}.bfh-flag-EG{background-position:-935px 0}.bfh-flag-EH{background-position:-952px 0}.bfh-flag-ER{background-position:-969px 0}.bfh-flag-ES{background-position:-986px 0}.bfh-flag-ET{background-position:-1003px 0}.bfh-flag-EU{background-position:-1020px 0}.bfh-flag-FI{background-position:-1037px 0}.bfh-flag-FJ{background-position:-1054px 0}.bfh-flag-FK{background-position:-1071px 0}.bfh-flag-FM{background-position:-1088px 0}.bfh-flag-FO{background-position:-1105px 0}.bfh-flag-FR,.bfh-flag-FX,.bfh-flag-GF,.bfh-flag-GP,.bfh-flag-MQ,.bfh-flag-NC,.bfh-flag-PF,.bfh-flag-PM,.bfh-flag-RE,.bfh-flag-TF,.bfh-flag-WF{background-position:-1122px 0}.bfh-flag-GA{background-position:-1139px 0}.bfh-flag-GB{background-position:-1156px 0}.bfh-flag-GD{background-position:-1173px 0}.bfh-flag-GE{background-position:-1190px 0}.bfh-flag-GG{background-position:-1207px 0}.bfh-flag-GH{background-position:-1224px 0}.bfh-flag-GL{background-position:-1241px 0}.bfh-flag-GM{background-position:-1258px 0}.bfh-flag-GN{background-position:-1275px 0}.bfh-flag-GQ{background-position:-1292px 0}.bfh-flag-GR{background-position:-1309px 0}.bfh-flag-GS{background-position:-1326px 0}.bfh-flag-GT{background-position:-1343px 0}.bfh-flag-GU{background-position:-1360px 0}.bfh-flag-GW{background-position:-1377px 0}.bfh-flag-GY{background-position:-1394px 0}.bfh-flag-HK{background-position:-1411px 0}.bfh-flag-HN{background-position:-1428px 0}.bfh-flag-HR{background-position:-1445px 0}.bfh-flag-HT{background-position:-1462px 0}.bfh-flag-HU{background-position:-1479px 0}.bfh-flag-ID{background-position:-1496px 0}.bfh-flag-IE{background-position:-1513px 0}.bfh-flag-IL{background-position:-1530px 0}.bfh-flag-IM{background-position:-1547px 0}.bfh-flag-IN{background-position:-1564px 0}.bfh-flag-IQ{background-position:-1581px 0}.bfh-flag-IS{background-position:-1598px 0}.bfh-flag-IT{background-position:-1615px 0}.bfh-flag-JE{background-position:-1632px 0}.bfh-flag-JM{background-position:-1649px 0}.bfh-flag-JO{background-position:-1666px 0}.bfh-flag-JP{background-position:-1683px 0}.bfh-flag-KE{background-position:-1700px 0}.bfh-flag-KG{background-position:-1717px 0}.bfh-flag-KH{background-position:-1734px 0}.bfh-flag-KI{background-position:-1751px 0}.bfh-flag-KM{background-position:-1768px 0}.bfh-flag-KN{background-position:-1785px 0}.bfh-flag-KP{background-position:-1802px 0}.bfh-flag-KR{background-position:-1819px 0}.bfh-flag-KV{background-position:-1836px 0}.bfh-flag-KW{background-position:-1853px 0}.bfh-flag-KY{background-position:-1870px 0}.bfh-flag-LA{background-position:-1887px 0}.bfh-flag-LC{background-position:0 0}.bfh-flag-LK{background-position:-17px 0}.bfh-flag-LR{background-position:-1938px 0}.bfh-flag-LS{background-position:-1955px 0}.bfh-flag-LT{background-position:-1972px 0}.bfh-flag-LU{background-position:-1989px 0}.bfh-flag-LV{background-position:-2006px 0}.bfh-flag-LY{background-position:-2023px 0}.bfh-flag-MA{background-position:-2040px 0}.bfh-flag-ME{background-position:-2057px 0}.bfh-flag-MG{background-position:-2074px 0}.bfh-flag-MH{background-position:-2091px 0}.bfh-flag-ML{background-position:-2108px 0}.bfh-flag-MM{background-position:-2125px 0}.bfh-flag-MP{background-position:-2142px 0}.bfh-flag-MR{background-position:-2159px 0}.bfh-flag-MS{background-position:-2176px 0}.bfh-flag-MT{background-position:-2193px 0}.bfh-flag-MU{background-position:-2210px 0}.bfh-flag-MV{background-position:-2227px 0}.bfh-flag-MW{background-position:-2244px 0}.bfh-flag-MZ{background-position:-2261px 0}.bfh-flag-NA{background-position:-2278px 0}.bfh-flag-NE{background-position:-2295px 0}.bfh-flag-NF{background-position:-2312px 0}.bfh-flag-NG{background-position:-2329px 0}.bfh-flag-NI{background-position:-2346px 0}.bfh-flag-NL{background-position:-2363px 0}.bfh-flag-NO{background-position:-2380px 0}.bfh-flag-NP{background-position:-2397px 0}.bfh-flag-NR{background-position:-2414px 0}.bfh-flag-NZ{background-position:-2431px 0}.bfh-flag-OM{background-position:-2448px 0}.bfh-flag-PA{background-position:-2465px 0}.bfh-flag-PE{background-position:-2482px 0}.bfh-flag-PG{background-position:-2499px 0}.bfh-flag-PH{background-position:-2516px 0}.bfh-flag-PK{background-position:-2533px 0}.bfh-flag-PL{background-position:-2550px 0}.bfh-flag-PN{background-position:-2567px 0}.bfh-flag-PS{background-position:-2584px 0}.bfh-flag-PT{background-position:-2601px 0}.bfh-flag-PW{background-position:-2618px 0}.bfh-flag-PY{background-position:-2635px 0}.bfh-flag-QA{background-position:-2652px 0}.bfh-flag-RS{background-position:-2669px 0}.bfh-flag-RU{background-position:-2686px 0}.bfh-flag-RW{background-position:-2703px 0}.bfh-flag-SA{background-position:-2720px 0}.bfh-flag-SB{background-position:-2737px 0}.bfh-flag-SC{background-position:-2754px 0}.bfh-flag-SD{background-position:-2771px 0}.bfh-flag-SE{background-position:-2788px 0}.bfh-flag-SG{background-position:-2805px 0}.bfh-flag-SH{background-position:-2822px 0}.bfh-flag-SI{background-position:-2839px 0}.bfh-flag-SK{background-position:-2856px 0}.bfh-flag-SM{background-position:-2873px 0}.bfh-flag-SN{background-position:-2890px 0}.bfh-flag-SO{background-position:-2907px 0}.bfh-flag-SR{background-position:-2924px 0}.bfh-flag-SS{background-position:-2941px 0}.bfh-flag-ST{background-position:-2958px 0}.bfh-flag-SV{background-position:-2975px 0}.bfh-flag-SY{background-position:-2992px 0}.bfh-flag-SZ{background-position:-3009px 0}.bfh-flag-TC{background-position:-3026px 0}.bfh-flag-TD{background-position:-3043px 0}.bfh-flag-TG{background-position:-3060px 0}.bfh-flag-TH{background-position:-3077px 0}.bfh-flag-TJ{background-position:-3094px 0}.bfh-flag-TM{background-position:-3111px 0}.bfh-flag-TN{background-position:-3128px 0}.bfh-flag-TP{background-position:-3145px 0}.bfh-flag-TR{background-position:-3162px 0}.bfh-flag-TT{background-position:-3179px 0}.bfh-flag-TV{background-position:-3196px 0}.bfh-flag-TW{background-position:-3213px 0}.bfh-flag-TZ{background-position:-3230px 0}.bfh-flag-UA{background-position:-3247px 0}.bfh-flag-UG{background-position:-3264px 0}.bfh-flag-US{background-position:-3281px 0}.bfh-flag-UY{background-position:-3298px 0}.bfh-flag-UZ{background-position:-3315px 0}.bfh-flag-VC{background-position:-3332px 0}.bfh-flag-VE{background-position:-3349px 0}.bfh-flag-VG{background-position:-3366px 0}.bfh-flag-VI{background-position:-3383px 0}.bfh-flag-VN{background-position:-3400px 0}.bfh-flag-VU{background-position:-3417px 0}.bfh-flag-WS{background-position:-3434px 0}.bfh-flag-YE{background-position:-3451px 0}.bfh-flag-ZA{background-position:-3468px 0}.bfh-flag-ZM{background-position:-3485px 0}.bfh-flag-BF{background-position:-3502px 0}.bfh-flag-CU{background-position:-3519px 0}.bfh-flag-DE{background-position:-3536px 0}.bfh-flag-IR{background-position:-3553px 0}.bfh-flag-KZ{background-position:-3570px 0}.bfh-flag-LB{background-position:-3587px 0}.bfh-flag-LI{background-position:-3604px 0}.bfh-flag-MC{background-position:-3621px 0}.bfh-flag-MD{background-position:-3638px 0}.bfh-flag-MK{background-position:-3655px 0}.bfh-flag-MN{background-position:-3672px 0}.bfh-flag-MO{background-position:-3706px 0}.bfh-flag-MX{background-position:-3723px 0}.bfh-flag-MY{background-position:-3740px 0}.bfh-flag-PR{background-position:-3757px 0}.bfh-flag-RO{background-position:-3774px 0}.bfh-flag-SL{background-position:-3791px 0}.bfh-flag-TO{background-position:-3808px 0}.bfh-flag-VA{background-position:-3825px 0}.bfh-flag-ZW{background-position:-3842px 0}.bfh-flag-EUR{background:url(../img/eu.png) no-repeat}.bfh-flag-XCD{background:url(../img/xcd.png) no-repeat}.bfh-flag-AUD,.bfh-flag-CHF,.bfh-flag-DKK,.bfh-flag-EUR,.bfh-flag-XAF,.bfh-flag-XCD,.bfh-flag-XOF,.bfh-flag-XPF,.bfh-flag-ZAR{width:16px;height:14px;background:url(../img/bootstrap-formhelpers-currencies.flags.png) no-repeat}.bfh-flag-AUD:empty,.bfh-flag-CHF:empty,.bfh-flag-DKK:empty,.bfh-flag-EUR:empty,.bfh-flag-XAF:empty,.bfh-flag-XCD:empty,.bfh-flag-XOF:empty,.bfh-flag-XPF:empty,.bfh-flag-ZAR:empty{width:16px}.bfh-flag-AUD,.bfh-flag-CHF,.bfh-flag-DKK,.bfh-flag-EUR,.bfh-flag-XAF,.bfh-flag-XCD,.bfh-flag-XOF,.bfh-flag-XPF,.bfh-flag-ZAR{margin-right:5px}.bfh-flag-AUD{background-position:-32px 0}.bfh-flag-CHF{background-position:-224px 0}.bfh-flag-DKK{background-position:-64px -16px}.bfh-flag-EUR{background-position:-96px -16px}.bfh-flag-XAF{background-position:-160px -80px}.bfh-flag-XCD{background-position:-176px -80px}.bfh-flag-XOF{background-position:-192px -80px}.bfh-flag-XPF{background-position:-208px -80px}.bfh-flag-ZAR{background-position:-224px -80px}.bfh-selectbox{position:relative}.bfh-selectbox .bfh-selectbox-toggle{display:inline-block;padding:6px 24px 6px 12px;text-decoration:none}.bfh-selectbox .bfh-selectbox-toggle:focus{outline:0}.bfh-selectbox .bfh-selectbox-toggle .bfh-selectbox-option{display:inline-block;float:left;width:100%;height:20px;overflow:hidden;text-overflow:ellipsis}.bfh-selectbox .bfh-selectbox-toggle .selectbox-caret{float:right;margin-top:8px;margin-right:-16px;margin-left:-10px}.bfh-selectbox .bfh-selectbox-options{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:90px;padding:5px 0;margin:-1px 0 0;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.bfh-selectbox .bfh-selectbox-options.pull-right{right:0;left:auto}.bfh-selectbox .bfh-selectbox-options .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.bfh-selectbox .bfh-selectbox-options .bfh-selectbox-filter-container{width:100%;padding:5px}.bfh-selectbox .bfh-selectbox-options ul{max-width:500px;max-height:200px;padding:0;margin:5px 0 0 0;overflow-x:hidden;overflow-y:auto;list-style:none}.bfh-selectbox .bfh-selectbox-options ul li>a{display:block;width:100%;min-height:26px;padding:3px 20px;overflow-x:hidden;clear:both;font-weight:normal;line-height:1.428571429;color:#333;text-overflow:ellipsis;white-space:nowrap}.bfh-selectbox .bfh-selectbox-options ul li>a:hover,.bfh-selectbox .bfh-selectbox-options ul li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.bfh-selectbox .bfh-selectbox-options ul .bfh-selectbox-options-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.bfh-selectbox .bfh-selectbox-options ul .disabled>a{color:#999}.bfh-selectbox .bfh-selectbox-options ul .disabled>a:hover,.bfh-selectbox .bfh-selectbox-options ul .disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.bfh-selectbox.open>.bfh-selectbox-options{display:block}.bfh-selectbox.open a{outline:0}.pull-right>.bfh-selectbox-options{right:0;left:auto}.bfh-selectbox-up .caret,.navbar-fixed-bottom .bfh-selectbox .caret{border-top:0 dotted;border-bottom:4px solid #000;content:""}.bfh-selectbox-up .bfh-selectbox-options,.navbar-fixed-bottom .bfh-selectbox .bfh-selectbox-options{top:auto;bottom:100%;margin-bottom:1px}@media(min-width:768px){.navbar-right .bfh-selectbox-options{right:0;left:auto}}.bfh-googlefonts .bfh-selectbox-options a{width:230px;height:30px;text-indent:-9999px;background-image:url(../img/bootstrap-formhelpers-googlefonts.png)}.bfh-googlefonts .bfh-selectbox-options a:focus{background-color:transparent;background-repeat:no-repeat;outline:0;filter:none}.bfh-googlefonts .bfh-selectbox-options .active>a,.bfh-googlefonts .bfh-selectbox-options .active>a:hover{background-color:transparent;background-image:url(../img/bootstrap-formhelpers-googlefonts.png);background-repeat:no-repeat;outline:0;filter:none}.bfh-datepicker-calendar{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:296px}.bfh-datepicker-calendar>table.calendar{width:376px;background:#fff}.bfh-datepicker-calendar>table.calendar .months-header>th{font-size:12px;text-align:center}.bfh-datepicker-calendar>table.calendar .months-header>th.month>span{display:inline-block;width:100px}.bfh-datepicker-calendar>table.calendar .months-header>th.year>span{display:inline-block;width:50px}.bfh-datepicker-calendar>table.calendar .days-header>th{width:30px;font-size:11px;line-height:12px;text-align:center}.bfh-datepicker-calendar>table.calendar>tbody>tr>td{width:30px;font-size:11px;line-height:12px;text-align:center}.bfh-datepicker-calendar>table.calendar>tbody>tr>td.today{color:#fff;background-color:#428bca}.bfh-datepicker-calendar>table.calendar>tbody>tr>td.off{color:#999}.bfh-datepicker-calendar>table.calendar>tbody>tr>td:not(.off):hover{color:#262626;cursor:pointer;background-color:#f5f5f5}.bfh-datepicker{position:relative}.bfh-datepicker-toggle{*margin-bottom:-3px}.bfh-datepicker-toggle>input[readonly]{cursor:inherit;background-color:inherit}.open>.bfh-datepicker-calendar{display:block}.bfh-timepicker-popover{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:100px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.bfh-timepicker-popover>table{width:180px;margin:0}.bfh-timepicker-popover>table>tbody>tr>td{text-align:center;border:0}.bfh-timepicker-popover>table>tbody>tr>td.separator{font-size:20px;font-weight:bold;line-height:28px}.bfh-timepicker-popover>table>tbody>tr>td>div>input{width:42px!important;text-align:center}.bfh-timepicker{position:relative}.bfh-timepicker-toggle{*margin-bottom:-3px}.bfh-timepicker-toggle>input[readonly]{cursor:inherit;background-color:inherit}.open>.bfh-timepicker-popover{display:block}.bfh-slider{height:20px;margin-top:8px;margin-bottom:23px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-o-user-select:none}.bfh-slider>.bfh-slider-handle{position:absolute;width:20px;height:34px;margin-top:-7px;cursor:col-resize;background:#efefef;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px}.bfh-slider>.bfh-slider-handle>.bfh-slider-value{position:absolute;width:48px;height:20px;margin-top:5px;margin-left:-15px;line-height:20px;text-align:center;cursor:col-resize;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px}.bfh-slider>.bfh-slider-handle>.bfh-slider-value .disabled{color:#999}.bfh-slider.disabled .bfh-slider-value{color:#999}.bfh-colorpicker-popover{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:100px;padding:20px;cursor:default;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.bfh-colorpicker-popover>canvas{width:384px;height:256px}.bfh-colorpicker{position:relative}.bfh-colorpicker-toggle{*margin-bottom:-3px}.bfh-colorpicker-toggle>input[readonly]{cursor:inherit;background-color:inherit}.bfh-colorpicker-toggle .bfh-colorpicker-icon{display:block;width:16px;height:16px}.open>.bfh-colorpicker-popover{display:block}.input-group>.bfh-number{border-right:0}.input-group>.bfh-number-btn:hover{background-color:#ccc} \ No newline at end of file diff --git a/gui/slick/css/lib/bootstrap.css b/gui/slick/css/lib/bootstrap.css deleted file mode 100644 index b5465ae14bc0345520c1f7e30809321ed96a7685..0000000000000000000000000000000000000000 --- a/gui/slick/css/lib/bootstrap.css +++ /dev/null @@ -1,6332 +0,0 @@ -/*! - * Bootstrap v3.3.1 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ -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: bold; -} -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 #c0c0c0; -} -legend { - padding: 0; - border: 0; -} -textarea { - overflow: auto; -} -optgroup { - font-weight: bold; -} -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 { - *, - *:before, - *:after { - color: #000 !important; - text-shadow: none !important; - background: transparent !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^="#"]:after, - a[href^="javascript:"]:after { - content: ""; - } - pre, - blockquote { - border: 1px solid #999; - - page-break-inside: avoid; - } - thead { - display: table-header-group; - } - tr, - img { - page-break-inside: avoid; - } - img { - max-width: 100% !important; - } - p, - h2, - h3 { - orphans: 3; - widows: 3; - } - h2, - h3 { - page-break-after: avoid; - } - select { - background: #fff !important; - } - .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 th, - .table-bordered td { - border: 1px solid #ddd !important; - } -} -@font-face { - font-family: 'Glyphicons Halflings'; - - src: url('../../../../../../../Desktop/dist/fonts/glyphicons-halflings-regular.eot'); - src: url('../../../../../../../Desktop/dist/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../../../../../../../Desktop/dist/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../../../../../../../Desktop/dist/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../../../../../../../Desktop/dist/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: normal; - line-height: 1; - - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -.glyphicon-asterisk:before { - content: "\2a"; -} -.glyphicon-plus:before { - content: "\2b"; -} -.glyphicon-euro:before, -.glyphicon-eur: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"; -} -* { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -*:before, -*:after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -html { - font-size: 10px; - - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} -body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 14px; - line-height: 1.42857143; - color: #333; - background-color: #fff; -} -input, -button, -select, -textarea { - font-family: inherit; - font-size: inherit; - line-height: inherit; -} -a { - color: #337ab7; - text-decoration: none; -} -a:hover, -a:focus { - color: #23527c; - text-decoration: underline; -} -a:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -figure { - margin: 0; -} -img { - vertical-align: middle; -} -.img-responsive, -.thumbnail > img, -.thumbnail a > img, -.carousel-inner > .item > img, -.carousel-inner > .item > a > 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; -} -h1, -h2, -h3, -h4, -h5, -h6, -.h1, -.h2, -.h3, -.h4, -.h5, -.h6 { - font-family: inherit; - font-weight: 500; - line-height: 1.1; - color: inherit; -} -h1 small, -h2 small, -h3 small, -h4 small, -h5 small, -h6 small, -.h1 small, -.h2 small, -.h3 small, -.h4 small, -.h5 small, -.h6 small, -h1 .small, -h2 .small, -h3 .small, -h4 .small, -h5 .small, -h6 .small, -.h1 .small, -.h2 .small, -.h3 .small, -.h4 .small, -.h5 .small, -.h6 .small { - font-weight: normal; - line-height: 1; - color: #777; -} -h1, -.h1, -h2, -.h2, -h3, -.h3 { - margin-top: 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, -.h4, -h5, -.h5, -h6, -.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: 1050px) { - .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:hover { - color: #286090; -} -.text-success { - color: #3c763d; -} -a.text-success:hover { - color: #2b542c; -} -.text-info { - color: #31708f; -} -a.text-info:hover { - color: #245269; -} -.text-warning { - color: #8a6d3b; -} -a.text-warning:hover { - color: #66512c; -} -.text-danger { - color: #a94442; -} -a.text-danger:hover { - color: #843534; -} -.bg-primary { - color: #fff; - background-color: #337ab7; -} -a.bg-primary:hover { - background-color: #286090; -} -.bg-success { - background-color: #dff0d8; -} -a.bg-success:hover { - background-color: #c1e2b3; -} -.bg-info { - background-color: #d9edf7; -} -a.bg-info:hover { - background-color: #afd9ee; -} -.bg-warning { - background-color: #fcf8e3; -} -a.bg-warning:hover { - background-color: #f7ecb5; -} -.bg-danger { - background-color: #f2dede; -} -a.bg-danger:hover { - background-color: #e4b9b9; -} -.page-header { - padding-bottom: 9px; - margin: 40px 0 20px; - border-bottom: 1px solid #eee; -} -ul, -ol { - margin-top: 0; - margin-bottom: 10px; -} -ul ul, -ol ul, -ul ol, -ol ol { - 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; -} -dt, -dd { - line-height: 1.42857143; -} -dt { - font-weight: bold; -} -dd { - margin-left: 0; -} -@media (min-width: 1050px) { - .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[title], -abbr[data-original-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 p:last-child, -blockquote ul:last-child, -blockquote ol:last-child { - margin-bottom: 0; -} -blockquote footer, -blockquote small, -blockquote .small { - display: block; - font-size: 80%; - line-height: 1.42857143; - color: #777; -} -blockquote footer:before, -blockquote small:before, -blockquote .small:before { - content: '\2014 \00A0'; -} -.blockquote-reverse, -blockquote.pull-right { - padding-right: 15px; - padding-left: 0; - text-align: right; - border-right: 5px solid #eee; - border-left: 0; -} -.blockquote-reverse footer:before, -blockquote.pull-right footer:before, -.blockquote-reverse small:before, -blockquote.pull-right small:before, -.blockquote-reverse .small:before, -blockquote.pull-right .small:before { - content: ''; -} -.blockquote-reverse footer:after, -blockquote.pull-right footer:after, -.blockquote-reverse small:after, -blockquote.pull-right small:after, -.blockquote-reverse .small:after, -blockquote.pull-right .small:after { - content: '\00A0 \2014'; -} -address { - margin-bottom: 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: bold; - -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: 1050px) { - .container { - width: 750px; - } -} -@media (min-width: 1051px) { - .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-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { - position: relative; - min-height: 1px; - padding-right: 15px; - padding-left: 15px; -} -.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { - float: left; -} -.col-xs-12 { - width: 100%; -} -.col-xs-11 { - width: 91.66666667%; -} -.col-xs-10 { - width: 83.33333333%; -} -.col-xs-9 { - width: 75%; -} -.col-xs-8 { - width: 66.66666667%; -} -.col-xs-7 { - width: 58.33333333%; -} -.col-xs-6 { - width: 50%; -} -.col-xs-5 { - width: 41.66666667%; -} -.col-xs-4 { - width: 33.33333333%; -} -.col-xs-3 { - width: 25%; -} -.col-xs-2 { - width: 16.66666667%; -} -.col-xs-1 { - width: 8.33333333%; -} -.col-xs-pull-12 { - right: 100%; -} -.col-xs-pull-11 { - right: 91.66666667%; -} -.col-xs-pull-10 { - right: 83.33333333%; -} -.col-xs-pull-9 { - right: 75%; -} -.col-xs-pull-8 { - right: 66.66666667%; -} -.col-xs-pull-7 { - right: 58.33333333%; -} -.col-xs-pull-6 { - right: 50%; -} -.col-xs-pull-5 { - right: 41.66666667%; -} -.col-xs-pull-4 { - right: 33.33333333%; -} -.col-xs-pull-3 { - right: 25%; -} -.col-xs-pull-2 { - right: 16.66666667%; -} -.col-xs-pull-1 { - right: 8.33333333%; -} -.col-xs-pull-0 { - right: auto; -} -.col-xs-push-12 { - left: 100%; -} -.col-xs-push-11 { - left: 91.66666667%; -} -.col-xs-push-10 { - left: 83.33333333%; -} -.col-xs-push-9 { - left: 75%; -} -.col-xs-push-8 { - left: 66.66666667%; -} -.col-xs-push-7 { - left: 58.33333333%; -} -.col-xs-push-6 { - left: 50%; -} -.col-xs-push-5 { - left: 41.66666667%; -} -.col-xs-push-4 { - left: 33.33333333%; -} -.col-xs-push-3 { - left: 25%; -} -.col-xs-push-2 { - left: 16.66666667%; -} -.col-xs-push-1 { - left: 8.33333333%; -} -.col-xs-push-0 { - left: auto; -} -.col-xs-offset-12 { - margin-left: 100%; -} -.col-xs-offset-11 { - margin-left: 91.66666667%; -} -.col-xs-offset-10 { - margin-left: 83.33333333%; -} -.col-xs-offset-9 { - margin-left: 75%; -} -.col-xs-offset-8 { - margin-left: 66.66666667%; -} -.col-xs-offset-7 { - margin-left: 58.33333333%; -} -.col-xs-offset-6 { - margin-left: 50%; -} -.col-xs-offset-5 { - margin-left: 41.66666667%; -} -.col-xs-offset-4 { - margin-left: 33.33333333%; -} -.col-xs-offset-3 { - margin-left: 25%; -} -.col-xs-offset-2 { - margin-left: 16.66666667%; -} -.col-xs-offset-1 { - margin-left: 8.33333333%; -} -.col-xs-offset-0 { - margin-left: 0; -} -@media (min-width: 1050px) { - .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { - float: left; - } - .col-sm-12 { - width: 100%; - } - .col-sm-11 { - width: 91.66666667%; - } - .col-sm-10 { - width: 83.33333333%; - } - .col-sm-9 { - width: 75%; - } - .col-sm-8 { - width: 66.66666667%; - } - .col-sm-7 { - width: 58.33333333%; - } - .col-sm-6 { - width: 50%; - } - .col-sm-5 { - width: 41.66666667%; - } - .col-sm-4 { - width: 33.33333333%; - } - .col-sm-3 { - width: 25%; - } - .col-sm-2 { - width: 16.66666667%; - } - .col-sm-1 { - width: 8.33333333%; - } - .col-sm-pull-12 { - right: 100%; - } - .col-sm-pull-11 { - right: 91.66666667%; - } - .col-sm-pull-10 { - right: 83.33333333%; - } - .col-sm-pull-9 { - right: 75%; - } - .col-sm-pull-8 { - right: 66.66666667%; - } - .col-sm-pull-7 { - right: 58.33333333%; - } - .col-sm-pull-6 { - right: 50%; - } - .col-sm-pull-5 { - right: 41.66666667%; - } - .col-sm-pull-4 { - right: 33.33333333%; - } - .col-sm-pull-3 { - right: 25%; - } - .col-sm-pull-2 { - right: 16.66666667%; - } - .col-sm-pull-1 { - right: 8.33333333%; - } - .col-sm-pull-0 { - right: auto; - } - .col-sm-push-12 { - left: 100%; - } - .col-sm-push-11 { - left: 91.66666667%; - } - .col-sm-push-10 { - left: 83.33333333%; - } - .col-sm-push-9 { - left: 75%; - } - .col-sm-push-8 { - left: 66.66666667%; - } - .col-sm-push-7 { - left: 58.33333333%; - } - .col-sm-push-6 { - left: 50%; - } - .col-sm-push-5 { - left: 41.66666667%; - } - .col-sm-push-4 { - left: 33.33333333%; - } - .col-sm-push-3 { - left: 25%; - } - .col-sm-push-2 { - left: 16.66666667%; - } - .col-sm-push-1 { - left: 8.33333333%; - } - .col-sm-push-0 { - left: auto; - } - .col-sm-offset-12 { - margin-left: 100%; - } - .col-sm-offset-11 { - margin-left: 91.66666667%; - } - .col-sm-offset-10 { - margin-left: 83.33333333%; - } - .col-sm-offset-9 { - margin-left: 75%; - } - .col-sm-offset-8 { - margin-left: 66.66666667%; - } - .col-sm-offset-7 { - margin-left: 58.33333333%; - } - .col-sm-offset-6 { - margin-left: 50%; - } - .col-sm-offset-5 { - margin-left: 41.66666667%; - } - .col-sm-offset-4 { - margin-left: 33.33333333%; - } - .col-sm-offset-3 { - margin-left: 25%; - } - .col-sm-offset-2 { - margin-left: 16.66666667%; - } - .col-sm-offset-1 { - margin-left: 8.33333333%; - } - .col-sm-offset-0 { - margin-left: 0; - } -} -@media (min-width: 1051px) { - .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { - float: left; - } - .col-md-12 { - width: 100%; - } - .col-md-11 { - width: 91.66666667%; - } - .col-md-10 { - width: 83.33333333%; - } - .col-md-9 { - width: 75%; - } - .col-md-8 { - width: 66.66666667%; - } - .col-md-7 { - width: 58.33333333%; - } - .col-md-6 { - width: 50%; - } - .col-md-5 { - width: 41.66666667%; - } - .col-md-4 { - width: 33.33333333%; - } - .col-md-3 { - width: 25%; - } - .col-md-2 { - width: 16.66666667%; - } - .col-md-1 { - width: 8.33333333%; - } - .col-md-pull-12 { - right: 100%; - } - .col-md-pull-11 { - right: 91.66666667%; - } - .col-md-pull-10 { - right: 83.33333333%; - } - .col-md-pull-9 { - right: 75%; - } - .col-md-pull-8 { - right: 66.66666667%; - } - .col-md-pull-7 { - right: 58.33333333%; - } - .col-md-pull-6 { - right: 50%; - } - .col-md-pull-5 { - right: 41.66666667%; - } - .col-md-pull-4 { - right: 33.33333333%; - } - .col-md-pull-3 { - right: 25%; - } - .col-md-pull-2 { - right: 16.66666667%; - } - .col-md-pull-1 { - right: 8.33333333%; - } - .col-md-pull-0 { - right: auto; - } - .col-md-push-12 { - left: 100%; - } - .col-md-push-11 { - left: 91.66666667%; - } - .col-md-push-10 { - left: 83.33333333%; - } - .col-md-push-9 { - left: 75%; - } - .col-md-push-8 { - left: 66.66666667%; - } - .col-md-push-7 { - left: 58.33333333%; - } - .col-md-push-6 { - left: 50%; - } - .col-md-push-5 { - left: 41.66666667%; - } - .col-md-push-4 { - left: 33.33333333%; - } - .col-md-push-3 { - left: 25%; - } - .col-md-push-2 { - left: 16.66666667%; - } - .col-md-push-1 { - left: 8.33333333%; - } - .col-md-push-0 { - left: auto; - } - .col-md-offset-12 { - margin-left: 100%; - } - .col-md-offset-11 { - margin-left: 91.66666667%; - } - .col-md-offset-10 { - margin-left: 83.33333333%; - } - .col-md-offset-9 { - margin-left: 75%; - } - .col-md-offset-8 { - margin-left: 66.66666667%; - } - .col-md-offset-7 { - margin-left: 58.33333333%; - } - .col-md-offset-6 { - margin-left: 50%; - } - .col-md-offset-5 { - margin-left: 41.66666667%; - } - .col-md-offset-4 { - margin-left: 33.33333333%; - } - .col-md-offset-3 { - margin-left: 25%; - } - .col-md-offset-2 { - margin-left: 16.66666667%; - } - .col-md-offset-1 { - margin-left: 8.33333333%; - } - .col-md-offset-0 { - margin-left: 0; - } -} -@media (min-width: 1200px) { - .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { - float: left; - } - .col-lg-12 { - width: 100%; - } - .col-lg-11 { - width: 91.66666667%; - } - .col-lg-10 { - width: 83.33333333%; - } - .col-lg-9 { - width: 75%; - } - .col-lg-8 { - width: 66.66666667%; - } - .col-lg-7 { - width: 58.33333333%; - } - .col-lg-6 { - width: 50%; - } - .col-lg-5 { - width: 41.66666667%; - } - .col-lg-4 { - width: 33.33333333%; - } - .col-lg-3 { - width: 25%; - } - .col-lg-2 { - width: 16.66666667%; - } - .col-lg-1 { - width: 8.33333333%; - } - .col-lg-pull-12 { - right: 100%; - } - .col-lg-pull-11 { - right: 91.66666667%; - } - .col-lg-pull-10 { - right: 83.33333333%; - } - .col-lg-pull-9 { - right: 75%; - } - .col-lg-pull-8 { - right: 66.66666667%; - } - .col-lg-pull-7 { - right: 58.33333333%; - } - .col-lg-pull-6 { - right: 50%; - } - .col-lg-pull-5 { - right: 41.66666667%; - } - .col-lg-pull-4 { - right: 33.33333333%; - } - .col-lg-pull-3 { - right: 25%; - } - .col-lg-pull-2 { - right: 16.66666667%; - } - .col-lg-pull-1 { - right: 8.33333333%; - } - .col-lg-pull-0 { - right: auto; - } - .col-lg-push-12 { - left: 100%; - } - .col-lg-push-11 { - left: 91.66666667%; - } - .col-lg-push-10 { - left: 83.33333333%; - } - .col-lg-push-9 { - left: 75%; - } - .col-lg-push-8 { - left: 66.66666667%; - } - .col-lg-push-7 { - left: 58.33333333%; - } - .col-lg-push-6 { - left: 50%; - } - .col-lg-push-5 { - left: 41.66666667%; - } - .col-lg-push-4 { - left: 33.33333333%; - } - .col-lg-push-3 { - left: 25%; - } - .col-lg-push-2 { - left: 16.66666667%; - } - .col-lg-push-1 { - left: 8.33333333%; - } - .col-lg-push-0 { - left: auto; - } - .col-lg-offset-12 { - margin-left: 100%; - } - .col-lg-offset-11 { - margin-left: 91.66666667%; - } - .col-lg-offset-10 { - margin-left: 83.33333333%; - } - .col-lg-offset-9 { - margin-left: 75%; - } - .col-lg-offset-8 { - margin-left: 66.66666667%; - } - .col-lg-offset-7 { - margin-left: 58.33333333%; - } - .col-lg-offset-6 { - margin-left: 50%; - } - .col-lg-offset-5 { - margin-left: 41.66666667%; - } - .col-lg-offset-4 { - margin-left: 33.33333333%; - } - .col-lg-offset-3 { - margin-left: 25%; - } - .col-lg-offset-2 { - margin-left: 16.66666667%; - } - .col-lg-offset-1 { - margin-left: 8.33333333%; - } - .col-lg-offset-0 { - margin-left: 0; - } -} -table { - background-color: transparent; -} -caption { - padding-top: 8px; - padding-bottom: 8px; - color: #777; - text-align: left; -} -th { - text-align: left; -} -.table { - width: 100%; - max-width: 100%; - margin-bottom: 20px; -} -.table > thead > tr > th, -.table > tbody > tr > th, -.table > tfoot > tr > th, -.table > thead > tr > td, -.table > tbody > tr > td, -.table > tfoot > tr > td { - padding: 8px; - line-height: 1.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 > th, -.table > colgroup + thead > tr:first-child > th, -.table > thead:first-child > tr:first-child > th, -.table > caption + thead > tr:first-child > td, -.table > colgroup + thead > tr:first-child > td, -.table > thead:first-child > tr:first-child > td { - border-top: 0; -} -.table > tbody + tbody { - border-top: 2px solid #ddd; -} -.table .table { - background-color: #fff; -} -.table-condensed > thead > tr > th, -.table-condensed > tbody > tr > th, -.table-condensed > tfoot > tr > th, -.table-condensed > thead > tr > td, -.table-condensed > tbody > tr > td, -.table-condensed > tfoot > tr > td { - padding: 5px; -} -.table-bordered { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > tbody > tr > th, -.table-bordered > tfoot > tr > th, -.table-bordered > thead > tr > td, -.table-bordered > tbody > tr > td, -.table-bordered > tfoot > tr > td { - border: 1px solid #ddd; -} -.table-bordered > thead > tr > th, -.table-bordered > thead > tr > td { - border-bottom-width: 2px; -} -.table-striped > tbody > tr:nth-child(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 > thead > tr > td.active, -.table > tbody > tr > td.active, -.table > tfoot > tr > td.active, -.table > thead > tr > th.active, -.table > tbody > tr > th.active, -.table > tfoot > tr > th.active, -.table > thead > tr.active > td, -.table > tbody > tr.active > td, -.table > tfoot > tr.active > td, -.table > thead > tr.active > th, -.table > tbody > tr.active > th, -.table > tfoot > tr.active > th { - background-color: #f5f5f5; -} -.table-hover > tbody > tr > td.active:hover, -.table-hover > tbody > tr > th.active:hover, -.table-hover > tbody > tr.active:hover > td, -.table-hover > tbody > tr:hover > .active, -.table-hover > tbody > tr.active:hover > th { - background-color: #e8e8e8; -} -.table > thead > tr > td.success, -.table > tbody > tr > td.success, -.table > tfoot > tr > td.success, -.table > thead > tr > th.success, -.table > tbody > tr > th.success, -.table > tfoot > tr > th.success, -.table > thead > tr.success > td, -.table > tbody > tr.success > td, -.table > tfoot > tr.success > td, -.table > thead > tr.success > th, -.table > tbody > tr.success > th, -.table > tfoot > tr.success > th { - background-color: #dff0d8; -} -.table-hover > tbody > tr > td.success:hover, -.table-hover > tbody > tr > th.success:hover, -.table-hover > tbody > tr.success:hover > td, -.table-hover > tbody > tr:hover > .success, -.table-hover > tbody > tr.success:hover > th { - background-color: #d0e9c6; -} -.table > thead > tr > td.info, -.table > tbody > tr > td.info, -.table > tfoot > tr > td.info, -.table > thead > tr > th.info, -.table > tbody > tr > th.info, -.table > tfoot > tr > th.info, -.table > thead > tr.info > td, -.table > tbody > tr.info > td, -.table > tfoot > tr.info > td, -.table > thead > tr.info > th, -.table > tbody > tr.info > th, -.table > tfoot > tr.info > th { - background-color: #d9edf7; -} -.table-hover > tbody > tr > td.info:hover, -.table-hover > tbody > tr > th.info:hover, -.table-hover > tbody > tr.info:hover > td, -.table-hover > tbody > tr:hover > .info, -.table-hover > tbody > tr.info:hover > th { - background-color: #c4e3f3; -} -.table > thead > tr > td.warning, -.table > tbody > tr > td.warning, -.table > tfoot > tr > td.warning, -.table > thead > tr > th.warning, -.table > tbody > tr > th.warning, -.table > tfoot > tr > th.warning, -.table > thead > tr.warning > td, -.table > tbody > tr.warning > td, -.table > tfoot > tr.warning > td, -.table > thead > tr.warning > th, -.table > tbody > tr.warning > th, -.table > tfoot > tr.warning > th { - background-color: #fcf8e3; -} -.table-hover > tbody > tr > td.warning:hover, -.table-hover > tbody > tr > th.warning:hover, -.table-hover > tbody > tr.warning:hover > td, -.table-hover > tbody > tr:hover > .warning, -.table-hover > tbody > tr.warning:hover > th { - background-color: #faf2cc; -} -.table > thead > tr > td.danger, -.table > tbody > tr > td.danger, -.table > tfoot > tr > td.danger, -.table > thead > tr > th.danger, -.table > tbody > tr > th.danger, -.table > tfoot > tr > th.danger, -.table > thead > tr.danger > td, -.table > tbody > tr.danger > td, -.table > tfoot > tr.danger > td, -.table > thead > tr.danger > th, -.table > tbody > tr.danger > th, -.table > tfoot > tr.danger > th { - background-color: #f2dede; -} -.table-hover > tbody > tr > td.danger:hover, -.table-hover > tbody > tr > th.danger:hover, -.table-hover > tbody > tr.danger:hover > td, -.table-hover > tbody > tr:hover > .danger, -.table-hover > tbody > tr.danger:hover > th { - background-color: #ebcccc; -} -.table-responsive { - 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 > thead > tr > th, - .table-responsive > .table > tbody > tr > th, - .table-responsive > .table > tfoot > tr > th, - .table-responsive > .table > thead > tr > td, - .table-responsive > .table > tbody > tr > td, - .table-responsive > .table > tfoot > tr > td { - white-space: nowrap; - } - .table-responsive > .table-bordered { - border: 0; - } - .table-responsive > .table-bordered > thead > tr > th:first-child, - .table-responsive > .table-bordered > tbody > tr > th:first-child, - .table-responsive > .table-bordered > tfoot > tr > th:first-child, - .table-responsive > .table-bordered > thead > tr > td:first-child, - .table-responsive > .table-bordered > tbody > tr > td:first-child, - .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; - } - .table-responsive > .table-bordered > thead > tr > th:last-child, - .table-responsive > .table-bordered > tbody > tr > th:last-child, - .table-responsive > .table-bordered > tfoot > tr > th:last-child, - .table-responsive > .table-bordered > thead > tr > td:last-child, - .table-responsive > .table-bordered > tbody > tr > td:last-child, - .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; - } - .table-responsive > .table-bordered > tbody > tr:last-child > th, - .table-responsive > .table-bordered > tfoot > tr:last-child > th, - .table-responsive > .table-bordered > tbody > tr:last-child > td, - .table-responsive > .table-bordered > tfoot > tr:last-child > td { - border-bottom: 0; - } -} -fieldset { - 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: bold; -} -input[type="search"] { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -input[type="radio"], -input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px \9; - line-height: normal; -} -input[type="file"] { - display: block; -} -input[type="range"] { - display: block; - width: 100%; -} -select[multiple], -select[size] { - height: auto; -} -input[type="file"]:focus, -input[type="radio"]:focus, -input[type="checkbox"]:focus { - outline: thin dotted; - 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[disabled], -.form-control[readonly], -fieldset[disabled] .form-control { - cursor: not-allowed; - background-color: #eee; - opacity: 1; -} -textarea.form-control { - height: auto; -} -input[type="search"] { - -webkit-appearance: none; -} -@media screen and (-webkit-min-device-pixel-ratio: 0) { - input[type="date"], - input[type="time"], - input[type="datetime-local"], - input[type="month"] { - line-height: 34px; - } - 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[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; -} -.radio, -.checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; -} -.radio label, -.checkbox label { - min-height: 20px; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - cursor: pointer; -} -.radio input[type="radio"], -.radio-inline input[type="radio"], -.checkbox input[type="checkbox"], -.checkbox-inline input[type="checkbox"] { - position: absolute; - margin-top: 4px \9; - margin-left: -20px; -} -.radio + .radio, -.checkbox + .checkbox { - margin-top: -5px; -} -.radio-inline, -.checkbox-inline { - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - font-weight: normal; - vertical-align: middle; - cursor: pointer; -} -.radio-inline + .radio-inline, -.checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; -} -input[type="radio"][disabled], -input[type="checkbox"][disabled], -input[type="radio"].disabled, -input[type="checkbox"].disabled, -fieldset[disabled] input[type="radio"], -fieldset[disabled] input[type="checkbox"] { - cursor: not-allowed; -} -.radio-inline.disabled, -.checkbox-inline.disabled, -fieldset[disabled] .radio-inline, -fieldset[disabled] .checkbox-inline { - cursor: not-allowed; -} -.radio.disabled label, -.checkbox.disabled label, -fieldset[disabled] .radio label, -fieldset[disabled] .checkbox label { - cursor: not-allowed; -} -.form-control-static { - padding-top: 7px; - padding-bottom: 7px; - margin-bottom: 0; -} -.form-control-static.input-lg, -.form-control-static.input-sm { - padding-right: 0; - padding-left: 0; -} -.input-sm, -.form-group-sm .form-control { - height: 30px; - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -select.input-sm, -select.form-group-sm .form-control { - height: 30px; - line-height: 30px; -} -textarea.input-sm, -textarea.form-group-sm .form-control, -select[multiple].input-sm, -select[multiple].form-group-sm .form-control { - height: auto; -} -.input-lg, -.form-group-lg .form-control { - height: 46px; - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} -select.input-lg, -select.form-group-lg .form-control { - height: 46px; - line-height: 46px; -} -textarea.input-lg, -textarea.form-group-lg .form-control, -select[multiple].input-lg, -select[multiple].form-group-lg .form-control { - height: auto; -} -.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; -} -.input-lg + .form-control-feedback { - width: 46px; - height: 46px; - line-height: 46px; -} -.input-sm + .form-control-feedback { - width: 30px; - height: 30px; - line-height: 30px; -} -.has-success .help-block, -.has-success .control-label, -.has-success .radio, -.has-success .checkbox, -.has-success .radio-inline, -.has-success .checkbox-inline, -.has-success.radio label, -.has-success.checkbox label, -.has-success.radio-inline label, -.has-success.checkbox-inline label { - color: #3c763d; -} -.has-success .form-control { - border-color: #3c763d; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .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 .help-block, -.has-warning .control-label, -.has-warning .radio, -.has-warning .checkbox, -.has-warning .radio-inline, -.has-warning .checkbox-inline, -.has-warning.radio label, -.has-warning.checkbox label, -.has-warning.radio-inline label, -.has-warning.checkbox-inline label { - color: #8a6d3b; -} -.has-warning .form-control { - border-color: #8a6d3b; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .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 .help-block, -.has-error .control-label, -.has-error .radio, -.has-error .checkbox, -.has-error .radio-inline, -.has-error .checkbox-inline, -.has-error.radio label, -.has-error.checkbox label, -.has-error.radio-inline label, -.has-error.checkbox-inline label { - color: #a94442; -} -.has-error .form-control { - border-color: #a94442; - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .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: 1050px) { - .form-inline .form-group { - display: inline-block; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .form-control { - display: inline-block; - width: auto; - vertical-align: middle; - } - .form-inline .form-control-static { - display: inline-block; - } - .form-inline .input-group { - display: inline-table; - vertical-align: middle; - } - .form-inline .input-group .input-group-addon, - .form-inline .input-group .input-group-btn, - .form-inline .input-group .form-control { - width: auto; - } - .form-inline .input-group > .form-control { - width: 100%; - } - .form-inline .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio, - .form-inline .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .form-inline .radio label, - .form-inline .checkbox label { - padding-left: 0; - } - .form-inline .radio input[type="radio"], - .form-inline .checkbox input[type="checkbox"] { - position: relative; - margin-left: 0; - } - .form-inline .has-feedback .form-control-feedback { - top: 0; - } -} -.form-horizontal .radio, -.form-horizontal .checkbox, -.form-horizontal .radio-inline, -.form-horizontal .checkbox-inline { - padding-top: 7px; - margin-top: 0; - margin-bottom: 0; -} -.form-horizontal .radio, -.form-horizontal .checkbox { - min-height: 27px; -} -.form-horizontal .form-group { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 1050px) { - .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: 1050px) { - .form-horizontal .form-group-lg .control-label { - padding-top: 14.3px; - } -} -@media (min-width: 1050px) { - .form-horizontal .form-group-sm .control-label { - padding-top: 6px; - } -} -.btn { - display: inline-block; - padding: 6px 12px; - margin-bottom: 0; - font-size: 14px; - font-weight: normal; - 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:focus, -.btn:active:focus, -.btn.active:focus, -.btn.focus, -.btn:active.focus, -.btn.active.focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus, -.btn.focus { - color: #333; - text-decoration: none; -} -.btn:active, -.btn.active { - 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 { - pointer-events: none; - cursor: not-allowed; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - box-shadow: none; - opacity: .65; -} -.btn-default { - color: #333; - background-color: #fff; - border-color: #ccc; -} -.btn-default:hover, -.btn-default:focus, -.btn-default.focus, -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - color: #333; - background-color: #e6e6e6; - border-color: #adadad; -} -.btn-default:active, -.btn-default.active, -.open > .dropdown-toggle.btn-default { - background-image: none; -} -.btn-default.disabled, -.btn-default[disabled], -fieldset[disabled] .btn-default, -.btn-default.disabled:hover, -.btn-default[disabled]:hover, -fieldset[disabled] .btn-default:hover, -.btn-default.disabled:focus, -.btn-default[disabled]:focus, -fieldset[disabled] .btn-default:focus, -.btn-default.disabled.focus, -.btn-default[disabled].focus, -fieldset[disabled] .btn-default.focus, -.btn-default.disabled:active, -.btn-default[disabled]:active, -fieldset[disabled] .btn-default:active, -.btn-default.disabled.active, -.btn-default[disabled].active, -fieldset[disabled] .btn-default.active { - 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:hover, -.btn-primary:focus, -.btn-primary.focus, -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - color: #fff; - background-color: #286090; - border-color: #204d74; -} -.btn-primary:active, -.btn-primary.active, -.open > .dropdown-toggle.btn-primary { - background-image: none; -} -.btn-primary.disabled, -.btn-primary[disabled], -fieldset[disabled] .btn-primary, -.btn-primary.disabled:hover, -.btn-primary[disabled]:hover, -fieldset[disabled] .btn-primary:hover, -.btn-primary.disabled:focus, -.btn-primary[disabled]:focus, -fieldset[disabled] .btn-primary:focus, -.btn-primary.disabled.focus, -.btn-primary[disabled].focus, -fieldset[disabled] .btn-primary.focus, -.btn-primary.disabled:active, -.btn-primary[disabled]:active, -fieldset[disabled] .btn-primary:active, -.btn-primary.disabled.active, -.btn-primary[disabled].active, -fieldset[disabled] .btn-primary.active { - 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:hover, -.btn-success:focus, -.btn-success.focus, -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - color: #fff; - background-color: #449d44; - border-color: #398439; -} -.btn-success:active, -.btn-success.active, -.open > .dropdown-toggle.btn-success { - background-image: none; -} -.btn-success.disabled, -.btn-success[disabled], -fieldset[disabled] .btn-success, -.btn-success.disabled:hover, -.btn-success[disabled]:hover, -fieldset[disabled] .btn-success:hover, -.btn-success.disabled:focus, -.btn-success[disabled]:focus, -fieldset[disabled] .btn-success:focus, -.btn-success.disabled.focus, -.btn-success[disabled].focus, -fieldset[disabled] .btn-success.focus, -.btn-success.disabled:active, -.btn-success[disabled]:active, -fieldset[disabled] .btn-success:active, -.btn-success.disabled.active, -.btn-success[disabled].active, -fieldset[disabled] .btn-success.active { - 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:hover, -.btn-info:focus, -.btn-info.focus, -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - color: #fff; - background-color: #31b0d5; - border-color: #269abc; -} -.btn-info:active, -.btn-info.active, -.open > .dropdown-toggle.btn-info { - background-image: none; -} -.btn-info.disabled, -.btn-info[disabled], -fieldset[disabled] .btn-info, -.btn-info.disabled:hover, -.btn-info[disabled]:hover, -fieldset[disabled] .btn-info:hover, -.btn-info.disabled:focus, -.btn-info[disabled]:focus, -fieldset[disabled] .btn-info:focus, -.btn-info.disabled.focus, -.btn-info[disabled].focus, -fieldset[disabled] .btn-info.focus, -.btn-info.disabled:active, -.btn-info[disabled]:active, -fieldset[disabled] .btn-info:active, -.btn-info.disabled.active, -.btn-info[disabled].active, -fieldset[disabled] .btn-info.active { - 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:hover, -.btn-warning:focus, -.btn-warning.focus, -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - color: #fff; - background-color: #ec971f; - border-color: #d58512; -} -.btn-warning:active, -.btn-warning.active, -.open > .dropdown-toggle.btn-warning { - background-image: none; -} -.btn-warning.disabled, -.btn-warning[disabled], -fieldset[disabled] .btn-warning, -.btn-warning.disabled:hover, -.btn-warning[disabled]:hover, -fieldset[disabled] .btn-warning:hover, -.btn-warning.disabled:focus, -.btn-warning[disabled]:focus, -fieldset[disabled] .btn-warning:focus, -.btn-warning.disabled.focus, -.btn-warning[disabled].focus, -fieldset[disabled] .btn-warning.focus, -.btn-warning.disabled:active, -.btn-warning[disabled]:active, -fieldset[disabled] .btn-warning:active, -.btn-warning.disabled.active, -.btn-warning[disabled].active, -fieldset[disabled] .btn-warning.active { - 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:hover, -.btn-danger:focus, -.btn-danger.focus, -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - color: #fff; - background-color: #c9302c; - border-color: #ac2925; -} -.btn-danger:active, -.btn-danger.active, -.open > .dropdown-toggle.btn-danger { - background-image: none; -} -.btn-danger.disabled, -.btn-danger[disabled], -fieldset[disabled] .btn-danger, -.btn-danger.disabled:hover, -.btn-danger[disabled]:hover, -fieldset[disabled] .btn-danger:hover, -.btn-danger.disabled:focus, -.btn-danger[disabled]:focus, -fieldset[disabled] .btn-danger:focus, -.btn-danger.disabled.focus, -.btn-danger[disabled].focus, -fieldset[disabled] .btn-danger.focus, -.btn-danger.disabled:active, -.btn-danger[disabled]:active, -fieldset[disabled] .btn-danger:active, -.btn-danger.disabled.active, -.btn-danger[disabled].active, -fieldset[disabled] .btn-danger.active { - background-color: #d9534f; - border-color: #d43f3a; -} -.btn-danger .badge { - color: #d9534f; - background-color: #fff; -} -.btn-link { - font-weight: normal; - 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:hover, -.btn-link:focus, -.btn-link:active { - border-color: transparent; -} -.btn-link:hover, -.btn-link:focus { - color: #23527c; - text-decoration: underline; - background-color: transparent; -} -.btn-link[disabled]:hover, -fieldset[disabled] .btn-link:hover, -.btn-link[disabled]:focus, -fieldset[disabled] .btn-link:focus { - color: #777; - text-decoration: none; -} -.btn-lg, -.btn-group-lg > .btn { - padding: 10px 16px; - font-size: 18px; - line-height: 1.33; - border-radius: 6px; -} -.btn-sm, -.btn-group-sm > .btn { - padding: 5px 10px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} -.btn-xs, -.btn-group-xs > .btn { - 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="submit"].btn-block, -input[type="reset"].btn-block, -input[type="button"].btn-block { - width: 100%; -} -.fade { - opacity: 0; - -webkit-transition: opacity .15s linear; - -o-transition: opacity .15s linear; - transition: opacity .15s linear; -} -.fade.in { - opacity: 1; -} -.collapse { - display: none; - visibility: hidden; -} -.collapse.in { - display: block; - visibility: visible; -} -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 solid; - border-right: 4px solid transparent; - border-left: 4px solid transparent; -} -.dropdown { - position: relative; -} -.dropdown-toggle:focus { - outline: 0; -} -.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - display: none; - float: left; - min-width: 160px; - padding: 5px 0; - margin: 2px 0 0; - 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: normal; - line-height: 1.42857143; - color: #333; - white-space: nowrap; -} -.dropdown-menu > li > a:hover, -.dropdown-menu > li > a:focus { - color: #262626; - text-decoration: none; - background-color: #f5f5f5; -} -.dropdown-menu > .active > a, -.dropdown-menu > .active > a:hover, -.dropdown-menu > .active > a:focus { - color: #fff; - text-decoration: none; - background-color: #337ab7; - outline: 0; -} -.dropdown-menu > .disabled > a, -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - color: #777; -} -.dropdown-menu > .disabled > a:hover, -.dropdown-menu > .disabled > a:focus { - text-decoration: none; - 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 solid; -} -.dropup .dropdown-menu, -.navbar-fixed-bottom .dropdown .dropdown-menu { - top: auto; - bottom: 100%; - margin-bottom: 1px; -} -@media (min-width: 1050px) { - .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 > .btn, -.btn-group-vertical > .btn { - position: relative; - float: left; -} -.btn-group > .btn:hover, -.btn-group-vertical > .btn:hover, -.btn-group > .btn:focus, -.btn-group-vertical > .btn:focus, -.btn-group > .btn:active, -.btn-group-vertical > .btn:active, -.btn-group > .btn.active, -.btn-group-vertical > .btn.active { - 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-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 > .btn:last-child, -.btn-group > .btn-group:first-child > .dropdown-toggle { - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} -.btn-group > .btn-group:last-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-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-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="radio"], -[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], -[data-toggle="buttons"] > .btn input[type="checkbox"], -[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { - 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-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.33; - 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; -} -textarea.input-group-lg > .form-control, -textarea.input-group-lg > .input-group-addon, -textarea.input-group-lg > .input-group-btn > .btn, -select[multiple].input-group-lg > .form-control, -select[multiple].input-group-lg > .input-group-addon, -select[multiple].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; -} -textarea.input-group-sm > .form-control, -textarea.input-group-sm > .input-group-addon, -textarea.input-group-sm > .input-group-btn > .btn, -select[multiple].input-group-sm > .form-control, -select[multiple].input-group-sm > .input-group-addon, -select[multiple].input-group-sm > .input-group-btn > .btn { - height: auto; -} -.input-group-addon, -.input-group-btn, -.input-group .form-control { - display: table-cell; -} -.input-group-addon:not(:first-child):not(:last-child), -.input-group-btn:not(:first-child):not(:last-child), -.input-group .form-control: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: normal; - 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="radio"], -.input-group-addon input[type="checkbox"] { - 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:not(:last-child):not(.dropdown-toggle), -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { - 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:last-child > .btn, -.input-group-btn:last-child > .btn-group > .btn, -.input-group-btn:last-child > .dropdown-toggle, -.input-group-btn:first-child > .btn:not(:first-child), -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { - 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:hover, -.input-group-btn > .btn:focus, -.input-group-btn > .btn:active { - 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 { - 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:hover, -.nav > li > a:focus { - text-decoration: none; - background-color: #eee; -} -.nav > li.disabled > a { - color: #777; -} -.nav > li.disabled > a:hover, -.nav > li.disabled > a:focus { - color: #777; - text-decoration: none; - cursor: not-allowed; - background-color: transparent; -} -.nav .open > a, -.nav .open > a:hover, -.nav .open > a:focus { - 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:hover, -.nav-tabs > li.active > a:focus { - 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: 1050px) { - .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:hover, -.nav-tabs.nav-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 1050px) { - .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:hover, - .nav-tabs.nav-justified > .active > a:focus { - 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:hover, -.nav-pills > li.active > a:focus { - 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: 1050px) { - .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:hover, -.nav-tabs-justified > .active > a:focus { - border: 1px solid #ddd; -} -@media (min-width: 1050px) { - .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:hover, - .nav-tabs-justified > .active > a:focus { - border-bottom-color: #fff; - } -} -.tab-content > .tab-pane { - display: none; - visibility: hidden; -} -.tab-content > .active { - display: block; - visibility: visible; -} -.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: 1050px) { - .navbar { - border-radius: 4px; - } -} -@media (min-width: 1050px) { - .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: 1050px) { - .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; - visibility: visible !important; - } - .navbar-collapse.in { - overflow-y: visible; - } - .navbar-fixed-top .navbar-collapse, - .navbar-static-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - padding-right: 0; - padding-left: 0; - } -} -.navbar-fixed-top .navbar-collapse, -.navbar-fixed-bottom .navbar-collapse { - max-height: 340px; -} -@media (max-device-width: 480px) and (orientation: landscape) { - .navbar-fixed-top .navbar-collapse, - .navbar-fixed-bottom .navbar-collapse { - max-height: 200px; - } -} -.container > .navbar-header, -.container-fluid > .navbar-header, -.container > .navbar-collapse, -.container-fluid > .navbar-collapse { - margin-right: -15px; - margin-left: -15px; -} -@media (min-width: 1050px) { - .container > .navbar-header, - .container-fluid > .navbar-header, - .container > .navbar-collapse, - .container-fluid > .navbar-collapse { - margin-right: 0; - margin-left: 0; - } -} -.navbar-static-top { - z-index: 1000; - border-width: 0 0 1px; -} -@media (min-width: 1050px) { - .navbar-static-top { - border-radius: 0; - } -} -.navbar-fixed-top, -.navbar-fixed-bottom { - position: fixed; - right: 0; - left: 0; - z-index: 1030; -} -@media (min-width: 1050px) { - .navbar-fixed-top, - .navbar-fixed-bottom { - 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:hover, -.navbar-brand:focus { - text-decoration: none; -} -.navbar-brand > img { - display: block; -} -@media (min-width: 1050px) { - .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: 1050px) { - .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 > li > a, - .navbar-nav .open .dropdown-menu .dropdown-header { - padding: 5px 15px 5px 25px; - } - .navbar-nav .open .dropdown-menu > li > a { - line-height: 20px; - } - .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-nav .open .dropdown-menu > li > a:focus { - background-image: none; - } -} -@media (min-width: 1050px) { - .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: 1050px) { - .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 .input-group-addon, - .navbar-form .input-group .input-group-btn, - .navbar-form .input-group .form-control { - width: auto; - } - .navbar-form .input-group > .form-control { - width: 100%; - } - .navbar-form .control-label { - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio, - .navbar-form .checkbox { - display: inline-block; - margin-top: 0; - margin-bottom: 0; - vertical-align: middle; - } - .navbar-form .radio label, - .navbar-form .checkbox label { - padding-left: 0; - } - .navbar-form .radio input[type="radio"], - .navbar-form .checkbox input[type="checkbox"] { - 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: 1050px) { - .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 { - 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: 1050px) { - .navbar-text { - float: left; - margin-right: 15px; - margin-left: 15px; - } -} -@media (min-width: 1050px) { - .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:hover, -.navbar-default .navbar-brand:focus { - 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:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #333; - background-color: transparent; -} -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #555; - background-color: #e7e7e7; -} -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #ccc; - background-color: transparent; -} -.navbar-default .navbar-toggle { - border-color: #ddd; -} -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - 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:hover, -.navbar-default .navbar-nav > .open > a:focus { - 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:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #333; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #555; - background-color: #e7e7e7; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - 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:hover, -.navbar-default .btn-link:focus { - color: #333; -} -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #ccc; -} -.navbar-inverse { - background-color: #222; - border-color: #080808; -} -.navbar-inverse .navbar-brand { - color: #9d9d9d; -} -.navbar-inverse .navbar-brand:hover, -.navbar-inverse .navbar-brand:focus { - 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:hover, -.navbar-inverse .navbar-nav > li > a:focus { - color: #fff; - background-color: transparent; -} -.navbar-inverse .navbar-nav > .active > a, -.navbar-inverse .navbar-nav > .active > a:hover, -.navbar-inverse .navbar-nav > .active > a:focus { - color: #fff; - background-color: #080808; -} -.navbar-inverse .navbar-nav > .disabled > a, -.navbar-inverse .navbar-nav > .disabled > a:hover, -.navbar-inverse .navbar-nav > .disabled > a:focus { - color: #444; - background-color: transparent; -} -.navbar-inverse .navbar-toggle { - border-color: #333; -} -.navbar-inverse .navbar-toggle:hover, -.navbar-inverse .navbar-toggle:focus { - 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:hover, -.navbar-inverse .navbar-nav > .open > a:focus { - 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:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { - color: #fff; - background-color: transparent; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #fff; - background-color: #080808; - } - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { - 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:hover, -.navbar-inverse .btn-link:focus { - color: #fff; -} -.navbar-inverse .btn-link[disabled]:hover, -fieldset[disabled] .navbar-inverse .btn-link:hover, -.navbar-inverse .btn-link[disabled]:focus, -fieldset[disabled] .navbar-inverse .btn-link:focus { - 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:hover, -.pagination > li > span:hover, -.pagination > li > a:focus, -.pagination > li > span:focus { - color: #23527c; - background-color: #eee; - border-color: #ddd; -} -.pagination > .active > a, -.pagination > .active > span, -.pagination > .active > a:hover, -.pagination > .active > span:hover, -.pagination > .active > a:focus, -.pagination > .active > span:focus { - z-index: 2; - color: #fff; - cursor: default; - background-color: #337ab7; - border-color: #337ab7; -} -.pagination > .disabled > span, -.pagination > .disabled > span:hover, -.pagination > .disabled > span:focus, -.pagination > .disabled > a, -.pagination > .disabled > a:hover, -.pagination > .disabled > a:focus { - 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; -} -.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; -} -.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:hover, -.pager li > a:focus { - 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:hover, -.pager .disabled > a:focus, -.pager .disabled > span { - color: #777; - cursor: not-allowed; - background-color: #fff; -} -.label { - display: inline; - padding: .2em .6em .3em; - font-size: 75%; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - border-radius: .25em; -} -a.label:hover, -a.label:focus { - color: #fff; - text-decoration: none; - cursor: pointer; -} -.label:empty { - display: none; -} -.btn .label { - position: relative; - top: -1px; -} -.label-default { - background-color: #777; -} -.label-default[href]:hover, -.label-default[href]:focus { - background-color: #5e5e5e; -} -.label-primary { - background-color: #337ab7; -} -.label-primary[href]:hover, -.label-primary[href]:focus { - background-color: #286090; -} -.label-success { - background-color: #5cb85c; -} -.label-success[href]:hover, -.label-success[href]:focus { - background-color: #449d44; -} -.label-info { - background-color: #5bc0de; -} -.label-info[href]:hover, -.label-info[href]:focus { - background-color: #31b0d5; -} -.label-warning { - background-color: #f0ad4e; -} -.label-warning[href]:hover, -.label-warning[href]:focus { - background-color: #ec971f; -} -.label-danger { - background-color: #d9534f; -} -.label-danger[href]:hover, -.label-danger[href]:focus { - background-color: #c9302c; -} -.badge { - display: inline-block; - min-width: 10px; - padding: 3px 7px; - font-size: 12px; - font-weight: bold; - line-height: 1; - color: #fff; - text-align: center; - white-space: nowrap; - vertical-align: baseline; - background-color: #777; - border-radius: 10px; -} -.badge:empty { - display: none; -} -.btn .badge { - position: relative; - top: -1px; -} -.btn-xs .badge { - top: 0; - padding: 1px 5px; -} -a.badge:hover, -a.badge:focus { - 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: 30px 15px; - 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 { - border-radius: 6px; -} -.jumbotron .container { - max-width: 100%; -} -@media screen and (min-width: 768px) { - .jumbotron { - padding: 48px 0; - } - .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 > img, -.thumbnail a > img { - margin-right: auto; - margin-left: auto; -} -a.thumbnail:hover, -a.thumbnail:focus, -a.thumbnail.active { - 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: bold; -} -.alert > p, -.alert > ul { - margin-bottom: 0; -} -.alert > p + p { - margin-top: 5px; -} -.alert-dismissable, -.alert-dismissible { - padding-right: 35px; -} -.alert-dismissable .close, -.alert-dismissible .close { - position: relative; - top: -2px; - right: -21px; - color: inherit; -} -.alert-success { - 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-striped .progress-bar, -.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); - -webkit-background-size: 40px 40px; - background-size: 40px 40px; -} -.progress.active .progress-bar, -.progress-bar.active { - -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-right, -.media > .pull-right { - padding-left: 10px; -} -.media-left, -.media > .pull-left { - padding-right: 10px; -} -.media-left, -.media-right, -.media-body { - 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 { - color: #555; -} -a.list-group-item .list-group-item-heading { - color: #333; -} -a.list-group-item:hover, -a.list-group-item:focus { - color: #555; - text-decoration: none; - background-color: #f5f5f5; -} -.list-group-item.disabled, -.list-group-item.disabled:hover, -.list-group-item.disabled:focus { - color: #777; - cursor: not-allowed; - background-color: #eee; -} -.list-group-item.disabled .list-group-item-heading, -.list-group-item.disabled:hover .list-group-item-heading, -.list-group-item.disabled:focus .list-group-item-heading { - color: inherit; -} -.list-group-item.disabled .list-group-item-text, -.list-group-item.disabled:hover .list-group-item-text, -.list-group-item.disabled:focus .list-group-item-text { - color: #777; -} -.list-group-item.active, -.list-group-item.active:hover, -.list-group-item.active:focus { - z-index: 2; - color: #fff; - background-color: #337ab7; - border-color: #337ab7; -} -.list-group-item.active .list-group-item-heading, -.list-group-item.active:hover .list-group-item-heading, -.list-group-item.active:focus .list-group-item-heading, -.list-group-item.active .list-group-item-heading > small, -.list-group-item.active:hover .list-group-item-heading > small, -.list-group-item.active:focus .list-group-item-heading > small, -.list-group-item.active .list-group-item-heading > .small, -.list-group-item.active:hover .list-group-item-heading > .small, -.list-group-item.active:focus .list-group-item-heading > .small { - color: inherit; -} -.list-group-item.active .list-group-item-text, -.list-group-item.active:hover .list-group-item-text, -.list-group-item.active:focus .list-group-item-text { - color: #c7ddef; -} -.list-group-item-success { - color: #3c763d; - background-color: #dff0d8; -} -a.list-group-item-success { - color: #3c763d; -} -a.list-group-item-success .list-group-item-heading { - color: inherit; -} -a.list-group-item-success:hover, -a.list-group-item-success:focus { - color: #3c763d; - background-color: #d0e9c6; -} -a.list-group-item-success.active, -a.list-group-item-success.active:hover, -a.list-group-item-success.active:focus { - color: #fff; - background-color: #3c763d; - border-color: #3c763d; -} -.list-group-item-info { - color: #31708f; - background-color: #d9edf7; -} -a.list-group-item-info { - color: #31708f; -} -a.list-group-item-info .list-group-item-heading { - color: inherit; -} -a.list-group-item-info:hover, -a.list-group-item-info:focus { - color: #31708f; - background-color: #c4e3f3; -} -a.list-group-item-info.active, -a.list-group-item-info.active:hover, -a.list-group-item-info.active:focus { - color: #fff; - background-color: #31708f; - border-color: #31708f; -} -.list-group-item-warning { - color: #8a6d3b; - background-color: #fcf8e3; -} -a.list-group-item-warning { - color: #8a6d3b; -} -a.list-group-item-warning .list-group-item-heading { - color: inherit; -} -a.list-group-item-warning:hover, -a.list-group-item-warning:focus { - color: #8a6d3b; - background-color: #faf2cc; -} -a.list-group-item-warning.active, -a.list-group-item-warning.active:hover, -a.list-group-item-warning.active:focus { - color: #fff; - background-color: #8a6d3b; - border-color: #8a6d3b; -} -.list-group-item-danger { - color: #a94442; - background-color: #f2dede; -} -a.list-group-item-danger { - color: #a94442; -} -a.list-group-item-danger .list-group-item-heading { - color: inherit; -} -a.list-group-item-danger:hover, -a.list-group-item-danger:focus { - color: #a94442; - background-color: #ebcccc; -} -a.list-group-item-danger.active, -a.list-group-item-danger.active:hover, -a.list-group-item-danger.active:focus { - 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 > 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-heading + .list-group .list-group-item:first-child { - border-top-width: 0; -} -.list-group + .panel-footer { - border-top-width: 0; -} -.panel > .table, -.panel > .table-responsive > .table, -.panel > .panel-collapse > .table { - margin-bottom: 0; -} -.panel > .table caption, -.panel > .table-responsive > .table caption, -.panel > .panel-collapse > .table caption { - padding-right: 15px; - padding-left: 15px; -} -.panel > .table:first-child, -.panel > .table-responsive:first-child > .table:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .table:first-child > thead: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-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { - border-top-left-radius: 3px; - border-top-right-radius: 3px; -} -.panel > .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 td:first-child, -.panel > .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 td:first-child, -.panel > .table:first-child > thead:first-child > tr:first-child th: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 th:first-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { - border-top-left-radius: 3px; -} -.panel > .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 td:last-child, -.panel > .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 td:last-child, -.panel > .table:first-child > thead:first-child > tr:first-child th: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 th:last-child, -.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { - border-top-right-radius: 3px; -} -.panel > .table:last-child, -.panel > .table-responsive:last-child > .table:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { - border-bottom-right-radius: 3px; - border-bottom-left-radius: 3px; -} -.panel > .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 td:first-child, -.panel > .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 td:first-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, -.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { - border-bottom-left-radius: 3px; -} -.panel > .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 td:last-child, -.panel > .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 td:last-child, -.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, -.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, -.panel > .table-responsive:last-child > .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 th, -.panel > .table > tbody:first-child > tr:first-child td { - border-top: 0; -} -.panel > .table-bordered, -.panel > .table-responsive > .table-bordered { - border: 0; -} -.panel > .table-bordered > thead > tr > th:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, -.panel > .table-bordered > tbody > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, -.panel > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, -.panel > .table-bordered > thead > tr > td:first-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, -.panel > .table-bordered > tbody > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, -.panel > .table-bordered > tfoot > tr > td:first-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { - border-left: 0; -} -.panel > .table-bordered > thead > tr > th:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, -.panel > .table-bordered > tbody > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, -.panel > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, -.panel > .table-bordered > thead > tr > td:last-child, -.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, -.panel > .table-bordered > tbody > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, -.panel > .table-bordered > tfoot > tr > td:last-child, -.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { - border-right: 0; -} -.panel > .table-bordered > thead > tr:first-child > td, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, -.panel > .table-bordered > tbody > tr:first-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, -.panel > .table-bordered > thead > tr:first-child > th, -.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, -.panel > .table-bordered > tbody > tr:first-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { - border-bottom: 0; -} -.panel > .table-bordered > tbody > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, -.panel > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, -.panel > .table-bordered > tbody > tr:last-child > th, -.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, -.panel > .table-bordered > tfoot > tr:last-child > th, -.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 > .panel-body, -.panel-group .panel-heading + .panel-collapse > .list-group { - 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 iframe, -.embed-responsive embed, -.embed-responsive object, -.embed-responsive video { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; -} -.embed-responsive.embed-responsive-16by9 { - padding-bottom: 56.25%; -} -.embed-responsive.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: bold; - line-height: 1; - color: #000; - text-shadow: 0 1px 0 #fff; - filter: alpha(opacity=20); - opacity: .2; -} -.close:hover, -.close:focus { - color: #000; - text-decoration: none; - cursor: pointer; - filter: alpha(opacity=50); - opacity: .5; -} -button.close { - -webkit-appearance: none; - padding: 0; - cursor: pointer; - background: transparent; - border: 0; -} -.modal-open { - overflow: hidden; -} -.modal { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 1040; - 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: absolute; - top: 0; - right: 0; - left: 0; - background-color: #000; -} -.modal-backdrop.fade { - filter: alpha(opacity=0); - opacity: 0; -} -.modal-backdrop.in { - filter: alpha(opacity=50); - opacity: .5; -} -.modal-header { - min-height: 16.42857143px; - 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: 1050px) { - .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: 1051px) { - .modal-lg { - width: 900px; - } -} -.tooltip { - position: absolute; - z-index: 1070; - display: block; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 12px; - font-weight: normal; - line-height: 1.4; - visibility: visible; - filter: alpha(opacity=0); - opacity: 0; -} -.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; - text-decoration: none; - 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-weight: normal; - line-height: 1.42857143; - text-align: left; - 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); -} -.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 > img, -.carousel-inner > .item > a > 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: 1000; - perspective: 1000; - } - .carousel-inner > .item.next, - .carousel-inner > .item.active.right { - left: 0; - -webkit-transform: translate3d(100%, 0, 0); - transform: translate3d(100%, 0, 0); - } - .carousel-inner > .item.prev, - .carousel-inner > .item.active.left { - left: 0; - -webkit-transform: translate3d(-100%, 0, 0); - transform: translate3d(-100%, 0, 0); - } - .carousel-inner > .item.next.left, - .carousel-inner > .item.prev.right, - .carousel-inner > .item.active { - 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); - 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:hover, -.carousel-control:focus { - color: #fff; - text-decoration: none; - filter: alpha(opacity=90); - outline: 0; - opacity: .9; -} -.carousel-control .icon-prev, -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-left, -.carousel-control .glyphicon-chevron-right { - position: absolute; - top: 50%; - z-index: 5; - display: inline-block; -} -.carousel-control .icon-prev, -.carousel-control .glyphicon-chevron-left { - left: 50%; - margin-left: -10px; -} -.carousel-control .icon-next, -.carousel-control .glyphicon-chevron-right { - right: 50%; - margin-right: -10px; -} -.carousel-control .icon-prev, -.carousel-control .icon-next { - width: 20px; - height: 20px; - margin-top: -10px; - font-family: serif; -} -.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: 1050px) { - .carousel-control .glyphicon-chevron-left, - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-prev, - .carousel-control .icon-next { - width: 30px; - height: 30px; - margin-top: -15px; - font-size: 30px; - } - .carousel-control .glyphicon-chevron-left, - .carousel-control .icon-prev { - margin-left: -15px; - } - .carousel-control .glyphicon-chevron-right, - .carousel-control .icon-next { - margin-right: -15px; - } - .carousel-caption { - right: 20%; - left: 20%; - padding-bottom: 30px; - } - .carousel-indicators { - bottom: 20px; - } -} -.clearfix:before, -.clearfix:after, -.dl-horizontal dd:before, -.dl-horizontal dd:after, -.container:before, -.container:after, -.container-fluid:before, -.container-fluid:after, -.row:before, -.row:after, -.form-horizontal .form-group:before, -.form-horizontal .form-group:after, -.btn-toolbar:before, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:before, -.btn-group-vertical > .btn-group:after, -.nav:before, -.nav:after, -.navbar:before, -.navbar:after, -.navbar-header:before, -.navbar-header:after, -.navbar-collapse:before, -.navbar-collapse:after, -.pager:before, -.pager:after, -.panel-body:before, -.panel-body:after, -.modal-footer:before, -.modal-footer:after { - display: table; - content: " "; -} -.clearfix:after, -.dl-horizontal dd:after, -.container:after, -.container-fluid:after, -.row:after, -.form-horizontal .form-group:after, -.btn-toolbar:after, -.btn-group-vertical > .btn-group:after, -.nav:after, -.navbar:after, -.navbar-header:after, -.navbar-collapse:after, -.pager:after, -.panel-body:after, -.modal-footer: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; - visibility: hidden !important; -} -.affix { - position: fixed; -} -@-ms-viewport { - width: device-width; -} -.visible-xs, -.visible-sm, -.visible-md, -.visible-lg { - display: none !important; -} -.visible-xs-block, -.visible-xs-inline, -.visible-xs-inline-block, -.visible-sm-block, -.visible-sm-inline, -.visible-sm-inline-block, -.visible-md-block, -.visible-md-inline, -.visible-md-inline-block, -.visible-lg-block, -.visible-lg-inline, -.visible-lg-inline-block { - display: none !important; -} -@media (max-width: 767px) { - .visible-xs { - display: block !important; - } - table.visible-xs { - display: table; - } - tr.visible-xs { - display: table-row !important; - } - th.visible-xs, - td.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: 1050px) and (max-width: 1012px) { - .visible-sm { - display: block !important; - } - table.visible-sm { - display: table; - } - tr.visible-sm { - display: table-row !important; - } - th.visible-sm, - td.visible-sm { - display: table-cell !important; - } -} -@media (min-width: 1050px) and (max-width: 1012px) { - .visible-sm-block { - display: block !important; - } -} -@media (min-width: 1050px) and (max-width: 1012px) { - .visible-sm-inline { - display: inline !important; - } -} -@media (min-width: 1050px) and (max-width: 1012px) { - .visible-sm-inline-block { - display: inline-block !important; - } -} -@media (min-width: 1051px) and (max-width: 1199px) { - .visible-md { - display: block !important; - } - table.visible-md { - display: table; - } - tr.visible-md { - display: table-row !important; - } - th.visible-md, - td.visible-md { - display: table-cell !important; - } -} -@media (min-width: 1051px) and (max-width: 1199px) { - .visible-md-block { - display: block !important; - } -} -@media (min-width: 1051px) and (max-width: 1199px) { - .visible-md-inline { - display: inline !important; - } -} -@media (min-width: 1051px) 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; - } - tr.visible-lg { - display: table-row !important; - } - th.visible-lg, - td.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: 1050px) and (max-width: 1012px) { - .hidden-sm { - display: none !important; - } -} -@media (min-width: 1051px) 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; - } - tr.visible-print { - display: table-row !important; - } - th.visible-print, - td.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.css.map */ diff --git a/gui/slick/css/lib/bootstrap.css.map b/gui/slick/css/lib/bootstrap.css.map deleted file mode 100644 index a02f6ba0a9602e353cf4a07f5ab7ad20a6dd7c96..0000000000000000000000000000000000000000 --- a/gui/slick/css/lib/bootstrap.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","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/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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AAA;EHsR9C;AGrRmC;EAAW,kBAAA;EHwR9C;AGvRmC;EAAW,kBAAA;EH0R9C;AGzRmC;EAAW,kBAAA;EH4R9C;AG3RmC;EAAW,kBAAA;EH8R9C;AG7RmC;EAAW,kBAAA;EHgS9C;AG/RmC;EAAW,kBAAA;EHkS9C;AGjSmC;EAAW,kBAAA;EHoS9C;AGnSmC;EAAW,kBAAA;EHsS9C;AGrSmC;EAAW,kBAAA;EHwS9C;AGvSmC;EAAW,kBAAA;EH0S9C;AGzSmC;EAAW,kBAAA;EH4S9C;AG3SmC;EAAW,kBAAA;EH8S9C;AG7SmC;EAAW,kBAAA;EHgT9C;AG/SmC;EAAW,kBAAA;EHkT9C;AGjTmC;EAAW,kBAAA;EHoT9C;AGnTmC;EAAW,kBAAA;EHsT9C;AGrTmC;EAAW,kBAAA;EHwT9C;AGvTmC;EAAW,kBAAA;EH0T9C;AGzTmC;EAAW,kBAAA;EH4T9C;AG3TmC;EAAW,kBAAA;EH8T9C;AG7TmC;EAAW,kBAAA;EHgU9C;AG/TmC;EAAW,kBAAA;EHkU9C;AGjUmC;EAAW,kBAAA;EHoU9C;AGnUmC;EAAW,kBAAA;EHsU9C;AGrUmC;EAAW,kBAAA;EHwU9C;AGvUmC;EAAW,kBAAA;EH0U9C;AGzUmC;EAAW,kBAAA;EH4U9C;AG3UmC;EAAW,kBAAA;EH8U9C;AG7UmC;EAAW,kBAAA;EHgV9C;AG/UmC;EAAW,kBAAA;EHkV9C;AGjVmC;EAAW,kBAAA;EHoV9C;AGnVmC;EAAW,kBAAA;EHsV9C;AGrVmC;EAAW,kBAAA;EHwV9C;AGvVmC;EAAW,kBAAA;EH0V9C;AGzVmC;EAAW,kBAAA;EH4V9C;AG3VmC;EAAW,kBAAA;EH8V9C;AG7VmC;EAAW,kBAAA;EHgW9C;AG/VmC;EAAW,kBAAA;EHkW9C;AGjWmC;EAAW,kBAAA;EHoW9C;AGnWmC;EAAW,kBAAA;EHsW9C;AGrWmC;EAAW,kBAAA;EHwW9C;AGvWmC;EAAW,kBAAA;EH0W9C;AGzWmC;EAAW,kBAAA;EH4W9C;AG3WmC;EAAW,kBAAA;EH8W9C;AG7WmC;EAAW,kBAAA;EHgX9C;AG/WmC;EAAW,kBAAA;EHkX9C;AGjXmC;EAAW,kBAAA;EHoX9C;AGnXmC;EAAW,kBAAA;EHsX9C;AGrXmC;EAAW,kBAAA;EHwX9C;AGvXmC;EAAW,kBAAA;EH0X9C;AGzXmC;EAAW,kBAAA;EH4X9C;AG3XmC;EAAW,kBAAA;EH8X9C;AG7XmC;EAAW,kBAAA;EHgY9C;AG/XmC;EAAW,kBAAA;EHkY9C;AGjYmC;EAAW,kBAAA;EHoY9C;AGnYmC;EAAW,kBAAA;EHsY9C;AGrYmC;EAAW,kBAAA;EHwY9C;AGvYmC;EAAW,kBAAA;EH0Y9C;AGzYmC;EAAW,kBAAA;EH4Y9C;AG3YmC;EAAW,kBAAA;EH8Y9C;AG7YmC;EAAW,kBAAA;EHgZ9C;AG/YmC;EAAW,kBAAA;EHkZ9C;AGjZmC;EAAW,kBAAA;EHoZ9C;AGnZmC;EAAW,kBAAA;EHsZ9C;AGrZmC;EAAW,kBAAA;EHwZ9C;AGvZmC;EAAW,kBAAA;EH0Z9C;AGzZmC;EAAW,kBAAA;EH4Z9C;AG3ZmC;EAAW,kBAAA;EH8Z9C;AG7ZmC;EAAW,kBAAA;EHga9C;AG/ZmC;EAAW,kBAAA;EHka9C;AGjamC;EAAW,kBAAA;EHoa9C;AGnamC;EAAW,kBAAA;EHsa9C;AGramC;EAAW,kBAAA;EHwa9C;AGvamC;EAAW,kBAAA;EH0a9C;AGzamC;EAAW,kBAAA;EH4a9C;AG3amC;EAAW,kBAAA;EH8a9C;AG7amC;EAAW,kBAAA;EHgb9C;AG/amC;EAAW,kBAAA;EHkb9C;AGjbmC;EAAW,kBAAA;EHob9C;AGnbmC;EAAW,kBAAA;EHsb9C;AGrbmC;EAAW,kBAAA;EHwb9C;AGvbmC;EAAW,kBAAA;EH0b9C;AGzbmC;EAAW,kBAAA;EH4b9C;AG3bmC;EAAW,kBAAA;EH8b9C;AG7bmC;EAAW,kBAAA;EHgc9C;AG/bmC;EAAW,kBAAA;EHkc9C;AGjcmC;EAAW,kBAAA;EHoc9C;AGncmC;EAAW,kBAAA;EHsc9C;AGrcmC;EAAW,kBAAA;EHwc9C;AGvcmC;EAAW,kBAAA;EH0c9C;AGzcmC;EAAW,kBAAA;EH4c9C;AG3cmC;EAAW,kBAAA;EH8c9C;AG7cmC;EAAW,kBAAA;EHgd9C;AG/cmC;EAAW,kBAAA;EHkd9C;AGjdmC;EAAW,kBAAA;EHod9C;AGndmC;EAAW,kBAAA;EHsd9C;AGrdmC;EAAW,kBAAA;EHwd9C;AGvdmC;EAAW,kBAAA;EH0d9C;AGzdmC;EAAW,kBAAA;EH4d9C;AG3dmC;EAAW,kBAAA;EH8d9C;AG7dmC;EAAW,kBAAA;EHge9C;AG/dmC;EAAW,kBAAA;EHke9C;AGjemC;EAAW,kBAAA;EHoe9C;AGnemC;EAAW,kBAAA;EHse9C;AGremC;EAAW,kBAAA;EHwe9C;AGvemC;EAAW,kBAAA;EH0e9C;AGzemC;EAAW,kBAAA;EH4e9C;AG3emC;EAAW,kBAAA;EH8e9C;AG7emC;EAAW,kBAAA;EHgf9C;AG/emC;EAAW,kBAAA;EHkf9C;AGjfmC;EAAW,kBAAA;EHof9C;AGnfmC;EAAW,kBAAA;EHsf9C;AGrfmC;EAAW,kBAAA;EHwf9C;AGvfmC;EAAW,kBAAA;EH0f9C;AGzfmC;EAAW,kBAAA;EH4f9C;AG3fmC;EAAW,kBAAA;EH8f9C;AG7fmC;EAAW,kBAAA;EHggB9C;AG/fmC;EAAW,kBAAA;EHkgB9C;AGjgBmC;EAAW,kBAAA;EHogB9C;AGngBmC;EAAW,kBAAA;EHsgB9C;AGrgBmC;EAAW,kBAAA;EHwgB9C;AGvgBmC;EAAW,kBAAA;EH0gB9C;AGzgBmC;EAAW,kBAAA;EH4gB9C;AG3gBmC;EAAW,kBAAA;EH8gB9C;AG7gBmC;EAAW,kBAAA;EHghB9C;AG/gBmC;EAAW,kBAAA;EHkhB9C;AGjhBmC;EAAW,kBAAA;EHohB9C;AGnhBmC;EAAW,kBAAA;EHshB9C;AGrhBmC;EAAW,kBAAA;EHwhB9C;AGvhBmC;EAAW,kBAAA;EH0hB9C;AGzhBmC;EAAW,kBAAA;EH4hB9C;AG3hBmC;EAAW,kBAAA;EH8hB9C;AG7hBmC;EAAW,kBAAA;EHgiB9C;AG/hBmC;EAAW,kBAAA;EHkiB9C;AGjiBmC;EAAW,kBAAA;EHoiB9C;AGniBmC;EAAW,kBAAA;EHsiB9C;AGriBmC;EAAW,kBAAA;EHwiB9C;AGviBmC;EAAW,kBAAA;EH0iB9C;AGziBmC;EAAW,kBAAA;EH4iB9C;AG3iBmC;EAAW,kBAAA;EH8iB9C;AG7iBmC;EAAW,kBAAA;EHgjB9C;AG/iBmC;EAAW,kBA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EACE,mBAAA;Efi7CH;Ael7CC;EACE,2BAAA;Efo7CH;Aer7CC;EACE,2BAAA;Efu7CH;Aex7CC;EACE,kBAAA;Ef07CH;Ae37CC;EACE,2BAAA;Ef67CH;Ae97CC;EACE,2BAAA;Efg8CH;Aej8CC;EACE,kBAAA;Efm8CH;Aep8CC;EACE,2BAAA;Efs8CH;Aev8CC;EACE,2BAAA;Efy8CH;Ae18CC;EACE,kBAAA;Ef48CH;Ae78CC;EACE,2BAAA;Ef+8CH;Aeh9CC;EACE,0BAAA;Efk9CH;Aen9CC;EACE,iBAAA;Efq9CH;Aaz9CD;EE9BI;IACE,aAAA;If0/CH;Een/CD;IACE,aAAA;Ifq/CD;Eet/CD;IACE,qBAAA;Ifw/CD;Eez/CD;IACE,qBAAA;If2/CD;Ee5/CD;IACE,YAAA;If8/CD;Ee//CD;IACE,qBAAA;IfigDD;EelgDD;IACE,qBAAA;IfogDD;EergDD;IACE,YAAA;IfugDD;EexgDD;IACE,qBAAA;If0gDD;Ee3gDD;IACE,qBAAA;If6gDD;Ee9gDD;IACE,YAAA;IfghDD;EejhDD;IACE,qBAAA;IfmhDD;EephDD;IACE,oBAAA;IfshDD;EexgDD;IACE,aAAA;If0gDD;Ee3gDD;IACE,qBAAA;If6gDD;Ee9gDD;IACE,qBAAA;IfghDD;EejhDD;IACE,YAAA;IfmhDD;EephDD;IACE,qBAAA;IfshDD;EevhDD;IACE,qBAAA;IfyhDD;Ee1hDD;IACE,YAAA;If4hDD;Ee7hDD;IACE,qBAAA;If+hDD;EehiDD;IACE,qBAAA;IfkiDD;EeniDD;IACE,YAAA;IfqiDD;EetiDD;IACE,qBAAA;IfwiDD;EeziDD;IACE,oBAAA;If2iDD;EeviDD;IACE,aAAA;IfyiDD;EezjDD;IACE,YAAA;If2jDD;Ee5jDD;IACE,oBAAA;If8jDD;Ee/jDD;IACE,oBAAA;IfikDD;EelkDD;IACE,WAAA;IfokDD;EerkDD;IACE,oBAAA;IfukDD;EexkDD;IACE,oBAAA;If0kDD;Ee3kDD;IACE,WAAA;If6kDD;Ee9kDD;IACE,oBAAA;IfglDD;EejlDD;IACE,oBAAA;IfmlDD;EeplDD;IACE,WAAA;IfslDD;EevlDD;IACE,oBAAA;IfylDD;Ee1lDD;IACE,mBAAA;If4lDD;EexlDD;IACE,YAAA;If0lDD;Ee5kDD;IACE,mBAAA;If8kDD;Ee/kDD;IACE,2BAAA;IfilDD;EellDD;IACE,2BAAA;IfolDD;EerlDD;IACE,kBAAA;IfulDD;EexlDD;IACE,2BAAA;If0lDD;Ee3lDD;IACE,2BAAA;If6lDD;Ee9lDD;IACE,kBAAA;IfgmDD;EejmDD;IACE,2BAAA;IfmmDD;EepmDD;IACE,2BAAA;IfsmDD;EevmDD;IACE,kBAAA;IfymDD;Ee1mDD;IACE,2BAAA;If4mDD;Ee7mDD;IACE,0BAAA;If+mDD;EehnDD;IACE,iBAAA;IfknDD;EACF;Aa9mDD;EEvCI;IACE,aAAA;IfwpDH;EejpDD;IACE,aAAA;IfmpDD;EeppDD;IACE,qBAAA;IfspDD;EevpDD;IACE,qBAAA;IfypDD;Ee1pDD;IACE,YAAA;If4pDD;Ee7pDD;IACE,qBAAA;If+pDD;EehqDD;IACE,qBAAA;IfkqDD;EenqDD;IACE,YAAA;IfqqDD;EetqDD;IACE,qBAAA;IfwqDD;EezqDD;IACE,qBAAA;If2qDD;Ee5qDD;IACE,YAAA;If8qDD;Ee/qDD;IACE,qBAAA;IfirDD;EelrDD;IACE,oBAAA;IforDD;EetqDD;IACE,aAAA;IfwqDD;EezqDD;IACE,qBAAA;If2qDD;Ee5qDD;IACE,qBAAA;If8qDD;Ee/qDD;IACE,YAAA;IfirDD;EelrDD;IACE,qBAAA;IforDD;EerrDD;IACE,qBAAA;IfurDD;EexrDD;IACE,YAAA;If0rDD;Ee3rDD;IACE,qBAAA;If6rDD;Ee9rDD;IACE,qBAAA;IfgsDD;EejsDD;IACE,YAAA;IfmsDD;EepsDD;IACE,qBAAA;IfssDD;EevsDD;IACE,oBAAA;IfysDD;EersDD;IACE,aAAA;IfusDD;EevtDD;IACE,YAAA;IfytDD;Ee1tDD;IACE,oBAAA;If4tDD;Ee7tDD;IACE,oBAAA;If+tDD;EehuDD;IACE,WAAA;IfkuDD;EenuDD;IACE,oBAAA;IfquDD;EetuDD;IACE,oBAAA;IfwuDD;EezuDD;IACE,WAAA;If2uDD;Ee5uDD;IACE,oBAAA;If8uDD;Ee/uDD;IACE,oBAAA;IfivDD;EelvDD;IACE,WAAA;IfovDD;EervDD;IACE,oBAAA;IfuvDD;EexvDD;IACE,mBAAA;If0vDD;EetvDD;IACE,YAAA;IfwvDD;Ee1uDD;IACE,mBAAA;If4uDD;Ee7uDD;IACE,2BAAA;If+uDD;EehvDD;IACE,2BAAA;IfkvDD;EenvDD;IACE,kBAAA;IfqvDD;EetvDD;IACE,2BAAA;IfwvDD;EezvDD;IACE,2BAAA;If2vDD;Ee5vDD;IACE,kBAAA;If8vDD;Ee/vDD;IACE,2BAAA;IfiwDD;EelwDD;IACE,2BAAA;IfowDD;EerwDD;IACE,kBAAA;IfuwDD;EexwDD;IACE,2BAAA;If0wDD;Ee3wDD;IACE,0BAAA;If6wDD;Ee9wDD;IACE,iBAAA;IfgxDD;EACF;AarwDD;EE9CI;IACE,aAAA;IfszDH;Ee/yDD;IACE,aAAA;IfizDD;EelzDD;IACE,qBAAA;IfozDD;EerzDD;IACE,qBAAA;IfuzDD;EexzDD;IACE,YAAA;If0zDD;Ee3zDD;IACE,qBAAA;If6zDD;Ee9zDD;IACE,qBAAA;Ifg0DD;Eej0DD;IACE,YAAA;Ifm0DD;Eep0DD;IACE,qBAAA;Ifs0DD;Eev0DD;IACE,qBAAA;Ify0DD;Ee10DD;IACE,YAAA;If40DD;Ee70DD;IACE,qBAAA;If+0DD;Eeh1DD;IACE,oBAAA;Ifk1DD;Eep0DD;IACE,aAAA;Ifs0DD;Eev0DD;IACE,qBAAA;Ify0DD;Ee10DD;IACE,qBAAA;If40DD;Ee70DD;IACE,YAAA;If+0DD;Eeh1DD;IACE,qBAAA;Ifk1DD;Een1DD;IACE,qBAAA;Ifq1DD;Eet1DD;IACE,YAAA;Ifw1DD;Eez1DD;IACE,qBAAA;If21DD;Ee51DD;IACE,qBAAA;If81DD;Ee/1DD;IACE,YAAA;Ifi2DD;Eel2DD;IACE,qBAAA;Ifo2DD;Eer2DD;IACE,oBAAA;Ifu2DD;Een2DD;IACE,aAAA;Ifq2DD;Eer3DD;IACE,YAAA;Ifu3DD;Eex3DD;IACE,oBAAA;If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EACA,uBAAA;ErB+tFD;AqB7tFC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErB+tFP;AqB7tFC;;;EAGE,wBAAA;ErB+tFH;AqB1tFG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBwuFT;AoBhtFD;ECnBI,gBAAA;EACA,2BAAA;ErBsuFH;AoBjtFD;ECxDE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErB4wFD;AqB1wFC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErB4wFP;AqB1wFC;;;EAGE,wBAAA;ErB4wFH;AqBvwFG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBqxFT;AoB1vFD;ECtBI,gBAAA;EACA,2BAAA;ErBmxFH;AoB1vFD;EC5DE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErByzFD;AqBvzFC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErByzFP;AqBvzFC;;;EAGE,wBAAA;ErByzFH;AqBpzFG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBk0FT;AoBnyFD;EC1BI,gBAAA;EACA,2BAAA;ErBg0FH;AoBnyFD;EChEE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErBs2FD;AqBp2FC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErBs2FP;AqBp2FC;;;EAGE,wBAAA;ErBs2FH;AqBj2FG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErB+2FT;AoB50FD;EC9BI,gBAAA;EACA,2BAAA;ErB62FH;AoB50FD;ECpEE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErBm5FD;AqBj5FC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErBm5FP;AqBj5FC;;;EAGE,wBAAA;ErBm5FH;AqB94FG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErB45FT;AoBr3FD;EClCI,gBAAA;EACA,2BAAA;ErB05FH;AoBr3FD;ECxEE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErBg8FD;AqB97FC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;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","file":"bootstrap.css","sourcesContent":["/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\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 -moz-box-sizing: content-box;\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 -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box;\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 select {\n background: #fff !important;\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.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: \"\\2a\";\n}\n.glyphicon-plus:before {\n content: \"\\2b\";\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* {\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: #ffffff;\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: thin dotted;\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: #ffffff;\n border: 1px solid #dddddd;\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}\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 {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover {\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: #ffffff;\n background-color: #333333;\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 #cccccc;\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 #dddddd;\n}\n.table > thead > tr > th {\n vertical-align: bottom;\n border-bottom: 2px solid #dddddd;\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 #dddddd;\n}\n.table .table {\n background-color: #ffffff;\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 #dddddd;\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 #dddddd;\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-child(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 #dddddd;\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: thin dotted;\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: #ffffff;\n background-image: none;\n border: 1px solid #cccccc;\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: #999999;\n opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n color: #999999;\n}\n.form-control::-webkit-input-placeholder {\n color: #999999;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n cursor: not-allowed;\n background-color: #eeeeee;\n opacity: 1;\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\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\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 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 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 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}\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.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}\nselect.input-sm,\nselect.form-group-sm .form-control {\n height: 30px;\n line-height: 30px;\n}\ntextarea.input-sm,\ntextarea.form-group-sm .form-control,\nselect[multiple].input-sm,\nselect[multiple].form-group-sm .form-control {\n height: auto;\n}\n.input-lg,\n.form-group-lg .form-control {\n height: 46px;\n padding: 10px 16px;\n font-size: 18px;\n line-height: 1.33;\n border-radius: 6px;\n}\nselect.input-lg,\nselect.form-group-lg .form-control {\n height: 46px;\n line-height: 46px;\n}\ntextarea.input-lg,\ntextarea.form-group-lg .form-control,\nselect[multiple].input-lg,\nselect[multiple].form-group-lg .form-control {\n height: auto;\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 width: 46px;\n height: 46px;\n line-height: 46px;\n}\n.input-sm + .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: 14.3px;\n }\n}\n@media (min-width: 768px) {\n .form-horizontal .form-group-sm .control-label {\n padding-top: 6px;\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: thin dotted;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n color: #333333;\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 pointer-events: none;\n opacity: 0.65;\n filter: alpha(opacity=65);\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default {\n color: #333333;\n background-color: #ffffff;\n border-color: #cccccc;\n}\n.btn-default:hover,\n.btn-default:focus,\n.btn-default.focus,\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n color: #333333;\n background-color: #e6e6e6;\n border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\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.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #ffffff;\n border-color: #cccccc;\n}\n.btn-default .badge {\n color: #ffffff;\n background-color: #333333;\n}\n.btn-primary {\n color: #ffffff;\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary:hover,\n.btn-primary:focus,\n.btn-primary.focus,\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n color: #ffffff;\n background-color: #286090;\n border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\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.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #337ab7;\n border-color: #2e6da4;\n}\n.btn-primary .badge {\n color: #337ab7;\n background-color: #ffffff;\n}\n.btn-success {\n color: #ffffff;\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success:hover,\n.btn-success:focus,\n.btn-success.focus,\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n color: #ffffff;\n background-color: #449d44;\n border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\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.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #5cb85c;\n border-color: #4cae4c;\n}\n.btn-success .badge {\n color: #5cb85c;\n background-color: #ffffff;\n}\n.btn-info {\n color: #ffffff;\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info:hover,\n.btn-info:focus,\n.btn-info.focus,\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n color: #ffffff;\n background-color: #31b0d5;\n border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\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.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #5bc0de;\n border-color: #46b8da;\n}\n.btn-info .badge {\n color: #5bc0de;\n background-color: #ffffff;\n}\n.btn-warning {\n color: #ffffff;\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning:hover,\n.btn-warning:focus,\n.btn-warning.focus,\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n color: #ffffff;\n background-color: #ec971f;\n border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\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.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #f0ad4e;\n border-color: #eea236;\n}\n.btn-warning .badge {\n color: #f0ad4e;\n background-color: #ffffff;\n}\n.btn-danger {\n color: #ffffff;\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger:hover,\n.btn-danger:focus,\n.btn-danger.focus,\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n color: #ffffff;\n background-color: #c9302c;\n border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\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.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #d9534f;\n border-color: #d43f3a;\n}\n.btn-danger .badge {\n color: #d9534f;\n background-color: #ffffff;\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.33;\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 visibility: hidden;\n}\n.collapse.in {\n display: block;\n visibility: visible;\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 solid;\n border-right: 4px solid transparent;\n border-left: 4px solid transparent;\n}\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: #ffffff;\n border: 1px solid #cccccc;\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: #ffffff;\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 solid;\n content: \"\";\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 1px;\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-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 > .btn:last-child,\n.btn-group > .btn-group:first-child > .dropdown-toggle {\n border-bottom-right-radius: 0;\n border-top-right-radius: 0;\n}\n.btn-group > .btn-group:last-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-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n border-bottom-left-radius: 4px;\n border-top-right-radius: 0;\n border-top-left-radius: 0;\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-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.33;\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 #cccccc;\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 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 #dddddd;\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 #dddddd;\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: #ffffff;\n border: 1px solid #dddddd;\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 #dddddd;\n}\n@media (min-width: 768px) {\n .nav-tabs.nav-justified > li > a {\n border-bottom: 1px solid #dddddd;\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: #ffffff;\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: #ffffff;\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 #dddddd;\n}\n@media (min-width: 768px) {\n .nav-tabs-justified > li > a {\n border-bottom: 1px solid #dddddd;\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: #ffffff;\n }\n}\n.tab-content > .tab-pane {\n display: none;\n visibility: hidden;\n}\n.tab-content > .active {\n display: block;\n visibility: visible;\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 visibility: visible !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 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: #777777;\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: #777777;\n}\n.navbar-default .navbar-nav > li > a {\n color: #777777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n color: #333333;\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: #555555;\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: #cccccc;\n background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n border-color: #dddddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n background-color: #dddddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n background-color: #888888;\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: #555555;\n}\n@media (max-width: 767px) {\n .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n color: #777777;\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: #333333;\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: #555555;\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: #cccccc;\n background-color: transparent;\n }\n}\n.navbar-default .navbar-link {\n color: #777777;\n}\n.navbar-default .navbar-link:hover {\n color: #333333;\n}\n.navbar-default .btn-link {\n color: #777777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n color: #333333;\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: #cccccc;\n}\n.navbar-inverse {\n background-color: #222222;\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: #ffffff;\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: #ffffff;\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: #ffffff;\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: #444444;\n background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n border-color: #333333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n background-color: #333333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n background-color: #ffffff;\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: #ffffff;\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: #ffffff;\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: #ffffff;\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: #444444;\n background-color: transparent;\n }\n}\n.navbar-inverse .navbar-link {\n color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n color: #ffffff;\n}\n.navbar-inverse .btn-link {\n color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n color: #ffffff;\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: #444444;\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: #cccccc;\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: #ffffff;\n border: 1px solid #dddddd;\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 color: #23527c;\n background-color: #eeeeee;\n border-color: #dddddd;\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: 2;\n color: #ffffff;\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: #ffffff;\n border-color: #dddddd;\n cursor: not-allowed;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n padding: 10px 16px;\n font-size: 18px;\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}\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: #ffffff;\n border: 1px solid #dddddd;\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: #ffffff;\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: #ffffff;\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: #ffffff;\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: #ffffff;\n line-height: 1;\n vertical-align: baseline;\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 top: 0;\n padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n color: #ffffff;\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: #ffffff;\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: 30px 15px;\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}\n.jumbotron .container {\n max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n .jumbotron {\n padding: 48px 0;\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: #ffffff;\n border: 1px solid #dddddd;\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: #ffffff;\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-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: #ffffff;\n border: 1px solid #dddddd;\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 {\n color: #555555;\n}\na.list-group-item .list-group-item-heading {\n color: #333333;\n}\na.list-group-item:hover,\na.list-group-item:focus {\n text-decoration: none;\n color: #555555;\n background-color: #f5f5f5;\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: #ffffff;\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 {\n color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-success:hover,\na.list-group-item-success:focus {\n color: #3c763d;\n background-color: #d0e9c6;\n}\na.list-group-item-success.active,\na.list-group-item-success.active:hover,\na.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 {\n color: #31708f;\n}\na.list-group-item-info .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-info:hover,\na.list-group-item-info:focus {\n color: #31708f;\n background-color: #c4e3f3;\n}\na.list-group-item-info.active,\na.list-group-item-info.active:hover,\na.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 {\n color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-warning:hover,\na.list-group-item-warning:focus {\n color: #8a6d3b;\n background-color: #faf2cc;\n}\na.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\na.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 {\n color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading {\n color: inherit;\n}\na.list-group-item-danger:hover,\na.list-group-item-danger:focus {\n color: #a94442;\n background-color: #ebcccc;\n}\na.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\na.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: #ffffff;\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 color: inherit;\n}\n.panel-footer {\n padding: 10px 15px;\n background-color: #f5f5f5;\n border-top: 1px solid #dddddd;\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-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 #dddddd;\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 #dddddd;\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 #dddddd;\n}\n.panel-default {\n border-color: #dddddd;\n}\n.panel-default > .panel-heading {\n color: #333333;\n background-color: #f5f5f5;\n border-color: #dddddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n border-top-color: #dddddd;\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: #dddddd;\n}\n.panel-primary {\n border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n color: #ffffff;\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: #ffffff;\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.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n}\n.embed-responsive.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: #000000;\n text-shadow: 0 1px 0 #ffffff;\n opacity: 0.2;\n filter: alpha(opacity=20);\n}\n.close:hover,\n.close:focus {\n color: #000000;\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: 1040;\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: #ffffff;\n border: 1px solid #999999;\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: absolute;\n top: 0;\n right: 0;\n left: 0;\n background-color: #000000;\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 min-height: 16.42857143px;\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 visibility: visible;\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 12px;\n font-weight: normal;\n line-height: 1.4;\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: #ffffff;\n text-align: center;\n text-decoration: none;\n background-color: #000000;\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: #000000;\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: #000000;\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: #000000;\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: #000000;\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: #000000;\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: #000000;\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: #000000;\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: #000000;\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-weight: normal;\n line-height: 1.42857143;\n text-align: left;\n background-color: #ffffff;\n background-clip: padding-box;\n border: 1px solid #cccccc;\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 white-space: normal;\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: #ffffff;\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: #ffffff;\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: #ffffff;\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: #ffffff;\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 transition: transform 0.6s ease-in-out;\n backface-visibility: hidden;\n perspective: 1000;\n }\n .carousel-inner > .item.next,\n .carousel-inner > .item.active.right {\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n .carousel-inner > .item.prev,\n .carousel-inner > .item.active.left {\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 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: #ffffff;\n text-align: center;\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\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: #ffffff;\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 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 margin-top: -10px;\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 #ffffff;\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: #ffffff;\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: #ffffff;\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: -15px;\n font-size: 30px;\n }\n .carousel-control .glyphicon-chevron-left,\n .carousel-control .icon-prev {\n margin-left: -15px;\n }\n .carousel-control .glyphicon-chevron-right,\n .carousel-control .icon-next {\n margin-right: -15px;\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-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-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 visibility: hidden !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;\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;\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;\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;\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;\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 */","/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS text size adjust after orientation change, without disabling\n// 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/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 when focused and also mouse hovered in all browsers.\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 -moz-box-sizing: content-box;\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// (include `-moz` to future-proof).\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box; // 2\n box-sizing: content-box;\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 // Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245\n // Once fixed, we can just straight up remove this.\n select {\n background: #fff !important;\n }\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// 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// <a href=\"#\"><span class=\"glyphicon glyphicon-star\"></span> Star</a>\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}.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: \"\\2a\"; } }\n.glyphicon-plus { &:before { content: \"\\2b\"; } }\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","//\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","// 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 will be 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; // 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 // Default\n outline: thin dotted;\n // WebKit\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: @grid-float-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-transform: 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 color: darken(@color, 10%);\n }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n background-color: @color;\n a&:hover {\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: (@gutter / 2);\n padding-right: (@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: (@gutter / -2);\n margin-right: (@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: (@grid-gutter-width / 2);\n padding-right: (@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-child(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/10 (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/10 (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\n// Set the height of file controls to match text inputs\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;\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 // Disabled and read-only inputs\n //\n // HTML5 says that controls under a fieldset > legend:first-child won't be\n // disabled if the fieldset is disabled. Due to implementation difficulty, we\n // don't honor that edge case; we style them as disabled anyway.\n &[disabled],\n &[readonly],\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n background-color: @input-bg-disabled;\n opacity: 1; // iOS fix for unreadable disabled content\n }\n\n // Reset height for `textarea`s\n textarea& {\n height: auto;\n }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n -webkit-appearance: none;\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari.\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n input[type=\"date\"],\n input[type=\"time\"],\n input[type=\"datetime-local\"],\n input[type=\"month\"] {\n line-height: @input-height-base;\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 line-height: @input-height-small;\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 line-height: @input-height-large;\n }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n margin-bottom: 15px;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n position: relative;\n display: block;\n margin-top: 10px;\n margin-bottom: 10px;\n\n label {\n min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text\n padding-left: 20px;\n margin-bottom: 0;\n font-weight: normal;\n cursor: pointer;\n }\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\n.radio + .radio,\n.checkbox + .checkbox {\n margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\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; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n// Some special care is needed because <label>s don't inherit their parent's `cursor`.\n//\n// Note: Neither radios nor checkboxes can be readonly.\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n &[disabled],\n &.disabled,\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n}\n// These classes are used directly on <label>s\n.radio-inline,\n.checkbox-inline {\n &.disabled,\n fieldset[disabled] & {\n cursor: @cursor-disabled;\n }\n}\n// These classes are used on elements with <label> descendants\n.radio,\n.checkbox {\n &.disabled,\n fieldset[disabled] & {\n label {\n cursor: @cursor-disabled;\n }\n }\n}\n\n\n// Static form control text\n//\n// Apply class to a `p` element to make any string of text align with labels in\n// a horizontal form layout.\n\n.form-control-static {\n // Size it appropriately next to real form controls\n padding-top: (@padding-base-vertical + 1);\n padding-bottom: (@padding-base-vertical + 1);\n // Remove default margin from `p`\n margin-bottom: 0;\n\n &.input-lg,\n &.input-sm {\n padding-left: 0;\n padding-right: 0;\n }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n\n.input-sm,\n.form-group-sm .form-control {\n .input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);\n}\n\n.input-lg,\n.form-group-lg .form-control {\n .input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);\n}\n\n\n// Form control feedback states\n//\n// Apply contextual and semantic states to individual form controls.\n\n.has-feedback {\n // Enable absolute positioning\n position: relative;\n\n // Ensure icons don't overlap text\n .form-control {\n padding-right: (@input-height-base * 1.25);\n }\n}\n// Feedback icon (requires .glyphicon classes)\n.form-control-feedback {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2; // Ensure icon is above input groups\n display: block;\n width: @input-height-base;\n height: @input-height-base;\n line-height: @input-height-base;\n text-align: center;\n pointer-events: none;\n}\n.input-lg + .form-control-feedback {\n width: @input-height-large;\n height: @input-height-large;\n line-height: @input-height-large;\n}\n.input-sm + .form-control-feedback {\n width: @input-height-small;\n height: @input-height-small;\n line-height: @input-height-small;\n}\n\n// Feedback states\n.has-success {\n .form-control-validation(@state-success-text; @state-success-text; @state-success-bg);\n}\n.has-warning {\n .form-control-validation(@state-warning-text; @state-warning-text; @state-warning-bg);\n}\n.has-error {\n .form-control-validation(@state-danger-text; @state-danger-text; @state-danger-bg);\n}\n\n// Reposition feedback icon if input has visible label above\n.has-feedback label {\n\n & ~ .form-control-feedback {\n top: (@line-height-computed + 5); // Height of the `label` and its margin\n }\n &.sr-only ~ .form-control-feedback {\n top: 0;\n }\n}\n\n\n// Help text\n//\n// Apply to any element you wish to create light text for placement immediately\n// below a form control. Use for general help, formatting, or instructional text.\n\n.help-block {\n display: block; // account for any element using help-block\n margin-top: 5px;\n margin-bottom: 10px;\n color: lighten(@text-color, 25%); // lighten the text some for contrast\n}\n\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n//\n// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.\n\n.form-inline {\n\n // Kick in the inline\n @media (min-width: @screen-sm-min) {\n // Inline-block all the things for \"inline\"\n .form-group {\n display: inline-block;\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // In navbar-form, allow folks to *not* use `.form-group`\n .form-control {\n display: inline-block;\n width: auto; // Prevent labels from stacking above inputs in `.form-group`\n vertical-align: middle;\n }\n\n // Make static controls behave like regular ones\n .form-control-static {\n display: inline-block;\n }\n\n .input-group {\n display: inline-table;\n vertical-align: middle;\n\n .input-group-addon,\n .input-group-btn,\n .form-control {\n width: auto;\n }\n }\n\n // Input groups need that 100% width though\n .input-group > .form-control {\n width: 100%;\n }\n\n .control-label {\n margin-bottom: 0;\n vertical-align: middle;\n }\n\n // Remove default margin on radios/checkboxes that were used for stacking, and\n // then undo the floating of radios and checkboxes to match (which also avoids\n // a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969).\n .radio,\n .checkbox {\n display: inline-block;\n margin-top: 0;\n margin-bottom: 0;\n vertical-align: middle;\n\n label {\n padding-left: 0;\n }\n }\n .radio input[type=\"radio\"],\n .checkbox input[type=\"checkbox\"] {\n position: relative;\n margin-left: 0;\n }\n\n // Re-override the feedback icon.\n .has-feedback .form-control-feedback {\n top: 0;\n }\n }\n}\n\n\n// Horizontal forms\n//\n// Horizontal forms are built on grid classes and allow you to create forms with\n// labels on the left and inputs on the right.\n\n.form-horizontal {\n\n // Consistent vertical alignment of radios and checkboxes\n //\n // Labels also get some reset styles, but that is scoped to a media query below.\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline {\n margin-top: 0;\n margin-bottom: 0;\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n }\n // Account for padding we're adding to ensure the alignment and of help text\n // and other content below items\n .radio,\n .checkbox {\n min-height: (@line-height-computed + (@padding-base-vertical + 1));\n }\n\n // Make form groups behave like rows\n .form-group {\n .make-row();\n }\n\n // Reset spacing and right align labels, but scope to media queries so that\n // labels on narrow viewports stack the same as a default form example.\n @media (min-width: @screen-sm-min) {\n .control-label {\n text-align: right;\n margin-bottom: 0;\n padding-top: (@padding-base-vertical + 1); // Default padding plus a border\n }\n }\n\n // Validation states\n //\n // Reposition the icon because it's now within a grid column and columns have\n // `position: relative;` on them. Also accounts for the grid gutter padding.\n .has-feedback .form-control-feedback {\n right: (@grid-gutter-width / 2);\n }\n\n // Form group sizes\n //\n // Quick utility class for applying `.input-lg` and `.input-sm` styles to the\n // inputs and labels within a `.form-group`.\n .form-group-lg {\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: ((@padding-large-vertical * @line-height-large) + 1);\n }\n }\n }\n .form-group-sm {\n @media (min-width: @screen-sm-min) {\n .control-label {\n padding-top: (@padding-small-vertical + 1);\n }\n }\n }\n}\n","// Form validation states\n//\n// Used in forms.less to generate the form validation CSS for warnings, errors,\n// and successes.\n\n.form-control-validation(@text-color: #555; @border-color: #ccc; @background-color: #f5f5f5) {\n // Color the label and help text\n .help-block,\n .control-label,\n .radio,\n .checkbox,\n .radio-inline,\n .checkbox-inline,\n &.radio label,\n &.checkbox label,\n &.radio-inline label,\n &.checkbox-inline label {\n color: @text-color;\n }\n // Set the border and box shadow on specific inputs to match\n .form-control {\n border-color: @border-color;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work\n &:focus {\n border-color: darken(@border-color, 10%);\n @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);\n .box-shadow(@shadow);\n }\n }\n // Set validation states also for addons\n .input-group-addon {\n color: @text-color;\n border-color: @border-color;\n background-color: @background-color;\n }\n // Optional feedback icon\n .form-control-feedback {\n color: @text-color;\n }\n}\n\n\n// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `@input-border-focus` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n.form-control-focus(@color: @input-border-focus) {\n @color-rgba: rgba(red(@color), green(@color), blue(@color), .6);\n &:focus {\n border-color: @color;\n outline: 0;\n .box-shadow(~\"inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px @{color-rgba}\");\n }\n}\n\n// Form control sizing\n//\n// Relative text size, padding, and border-radii changes for form controls. For\n// horizontal sizing, wrap controls in the predefined grid classes. `<select>`\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; @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 pointer-events: none; // Future-proof disabling of clicks\n .opacity(.65);\n .box-shadow(none);\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: underline;\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; @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; @border-radius-small);\n}\n.btn-xs {\n .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @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 &:hover,\n &:focus,\n &.focus,\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 &:active,\n &.active,\n .open > .dropdown-toggle& {\n background-image: none;\n }\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\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 visibility: hidden;\n\n &.in { display: block; visibility: visible; }\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 solid;\n border-right: @caret-width-base solid transparent;\n border-left: @caret-width-base solid transparent;\n}\n\n// The dropdown wrapper (div)\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 solid;\n content: \"\";\n }\n // Different positioning for bottom up menu\n .dropdown-menu {\n top: auto;\n bottom: 100%;\n margin-bottom: 1px;\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-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 a .dropdown-menu 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 {\n > .btn:last-child,\n > .dropdown-toggle {\n .border-right-radius(0);\n }\n}\n.btn-group > .btn-group:last-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-right-radius: @border-radius-base;\n .border-bottom-radius(0);\n }\n &:last-child:not(:first-child) {\n border-bottom-left-radius: @border-radius-base;\n .border-top-radius(0);\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}\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: @border-radius-base;\n\n // Sizing\n &.input-sm {\n padding: @padding-small-vertical @padding-small-horizontal;\n font-size: @font-size-small;\n border-radius: @border-radius-small;\n }\n &.input-lg {\n padding: @padding-large-vertical @padding-large-horizontal;\n font-size: @font-size-large;\n border-radius: @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 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 visibility: hidden;\n }\n > .active {\n display: block;\n visibility: visible;\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 visibility: visible !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 .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 visibility: hidden !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 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: 2;\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; @border-radius-large);\n}\n\n// Small\n.pagination-sm {\n .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @border-radius-small);\n}\n","// Pagination\n\n.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) {\n > li {\n > a,\n > span {\n padding: @padding-vertical @padding-horizontal;\n font-size: @font-size;\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: baseline;\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 .btn-xs & {\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 .list-group-item > & {\n float: right;\n }\n .list-group-item > & + & {\n margin-right: 5px;\n }\n .nav-pills > li > a > & {\n margin-left: 3px;\n }\n}\n","//\n// Jumbotron\n// --------------------------------------------------\n\n\n.jumbotron {\n padding: @jumbotron-padding (@jumbotron-padding / 2);\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 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 }\n\n .container {\n max-width: 100%;\n }\n\n @media screen and (min-width: @screen-sm-min) {\n padding: (@jumbotron-padding * 1.6) 0;\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: (@font-size-base * 4.5);\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 // 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 > 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.alert-info {\n .alert-variant(@alert-info-bg; @alert-info-border; @alert-info-text);\n}\n.alert-warning {\n .alert-variant(@alert-warning-bg; @alert-warning-border; @alert-warning-text);\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-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 <ul>, <ol>, or <div>.\n\n.list-group {\n // No need to set list-style: none; since .list-group-item is block level\n margin-bottom: 20px;\n padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -1px;\n background-color: @list-group-bg;\n border: 1px solid @list-group-border;\n\n // Round the first and last items\n &:first-child {\n .border-top-radius(@list-group-border-radius);\n }\n &:last-child {\n margin-bottom: 0;\n .border-bottom-radius(@list-group-border-radius);\n }\n}\n\n\n// Linked list items\n//\n// Use anchor elements instead of `li`s or `div`s to create linked list items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item {\n color: @list-group-link-color;\n\n .list-group-item-heading {\n color: @list-group-link-heading-color;\n }\n\n // Hover state\n &:hover,\n &:focus {\n text-decoration: none;\n color: @list-group-link-hover-color;\n background-color: @list-group-hover-bg;\n }\n}\n\n.list-group-item {\n // Disabled state\n &.disabled,\n &.disabled:hover,\n &.disabled:focus {\n background-color: @list-group-disabled-bg;\n color: @list-group-disabled-color;\n cursor: @cursor-disabled;\n\n // Force color to inherit for custom content\n .list-group-item-heading {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-disabled-text-color;\n }\n }\n\n // Active class on item itself, not parent\n &.active,\n &.active:hover,\n &.active:focus {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: @list-group-active-color;\n background-color: @list-group-active-bg;\n border-color: @list-group-active-border;\n\n // Force color to inherit for custom content\n .list-group-item-heading,\n .list-group-item-heading > small,\n .list-group-item-heading > .small {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-active-text-color;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\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","// List Groups\n\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a& {\n color: @color;\n\n .list-group-item-heading {\n color: inherit;\n }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n","//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n margin-bottom: @line-height-computed;\n background-color: @panel-bg;\n border: 1px solid transparent;\n border-radius: @panel-border-radius;\n .box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n padding: @panel-body-padding;\n &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n padding: @panel-heading-padding;\n border-bottom: 1px solid transparent;\n .border-top-radius((@panel-border-radius - 1));\n\n > .dropdown .dropdown-toggle {\n color: inherit;\n }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: ceil((@font-size-base * 1.125));\n color: inherit;\n\n > a {\n color: inherit;\n }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n padding: @panel-footer-padding;\n background-color: @panel-footer-bg;\n border-top: 1px solid @panel-inner-border;\n .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n > .list-group,\n > .panel-collapse > .list-group {\n margin-bottom: 0;\n\n .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n }\n\n // Add border top radius for first one\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n .border-top-radius((@panel-border-radius - 1));\n }\n }\n // Add border bottom radius for last one\n &:last-child {\n .list-group-item:last-child {\n border-bottom: 0;\n .border-bottom-radius((@panel-border-radius - 1));\n }\n }\n }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n .list-group-item:first-child {\n border-top-width: 0;\n }\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n > .table,\n > .table-responsive > .table,\n > .panel-collapse > .table {\n margin-bottom: 0;\n\n caption {\n padding-left: @panel-body-padding;\n padding-right: @panel-body-padding;\n }\n }\n // Add border top radius for first one\n > .table:first-child,\n > .table-responsive:first-child > .table:first-child {\n .border-top-radius((@panel-border-radius - 1));\n\n > thead:first-child,\n > tbody:first-child {\n > tr:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n border-top-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-top-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n // Add border bottom radius for last one\n > .table:last-child,\n > .table-responsive:last-child > .table:last-child {\n .border-bottom-radius((@panel-border-radius - 1));\n\n > tbody:last-child,\n > tfoot:last-child {\n > tr:last-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n border-bottom-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n > .panel-body + .table,\n > .panel-body + .table-responsive,\n > .table + .panel-body,\n > .table-responsive + .panel-body {\n border-top: 1px solid @table-border-color;\n }\n > .table > tbody:first-child > tr:first-child th,\n > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n }\n > .table-bordered,\n > .table-responsive > .table-bordered {\n border: 0;\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 > thead,\n > tbody {\n > tr:first-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n > tbody,\n > tfoot {\n > tr:last-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n }\n > .table-responsive {\n border: 0;\n margin-bottom: 0;\n }\n}\n\n\n// Collapsable panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n margin-bottom: @line-height-computed;\n\n // Tighten up margin so it's only between panels\n .panel {\n margin-bottom: 0;\n border-radius: @panel-border-radius;\n\n + .panel {\n margin-top: 5px;\n }\n }\n\n .panel-heading {\n border-bottom: 0;\n\n + .panel-collapse > .panel-body,\n + .panel-collapse > .list-group {\n border-top: 1px solid @panel-inner-border;\n }\n }\n\n .panel-footer {\n border-top: 0;\n + .panel-collapse .panel-body {\n border-bottom: 1px solid @panel-inner-border;\n }\n }\n}\n\n\n// Contextual variations\n.panel-default {\n .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","// Panels\n\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse > .panel-body {\n border-top-color: @border;\n }\n .badge {\n color: @heading-bg-color;\n background-color: @heading-text-color;\n }\n }\n & > .panel-footer {\n + .panel-collapse > .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n","// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n\n .embed-responsive-item,\n iframe,\n embed,\n object,\n video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n }\n\n // Modifier class for 16:9 aspect ratio\n &.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n }\n\n // Modifier class for 4:3 aspect ratio\n &.embed-responsive-4by3 {\n padding-bottom: 75%;\n }\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n blockquote {\n border-color: #ddd;\n border-color: rgba(0,0,0,.15);\n }\n}\n\n// Sizes\n.well-lg {\n padding: 24px;\n border-radius: @border-radius-large;\n}\n.well-sm {\n padding: 9px;\n border-radius: @border-radius-small;\n}\n","//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-size-base * 1.5);\n font-weight: @close-font-weight;\n line-height: 1;\n color: @close-color;\n text-shadow: @close-text-shadow;\n .opacity(.2);\n\n &:hover,\n &:focus {\n color: @close-color;\n text-decoration: none;\n cursor: pointer;\n .opacity(.5);\n }\n\n // Additional properties for button version\n // iOS requires the button element instead of an anchor tag.\n // If you want the anchor version, it requires `href=\"#\"`.\n button& {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\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: @zindex-modal;\n -webkit-overflow-scrolling: touch;\n\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n\n // When fading in the modal, animate it to slide down\n &.fade .modal-dialog {\n .translate(0, -25%);\n .transition-transform(~\"0.3s ease-out\");\n }\n &.in .modal-dialog { .translate(0, 0) }\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n background-color: @modal-content-bg;\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n border: 1px solid @modal-content-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 3px 9px rgba(0,0,0,.5));\n background-clip: padding-box;\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n background-color: @modal-backdrop-bg;\n // Fade for backdrop\n &.fade { .opacity(0); }\n &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n padding: @modal-title-padding;\n border-bottom: 1px solid @modal-header-border-color;\n min-height: (@modal-title-padding + @modal-title-line-height);\n}\n// Close icon\n.modal-header .close {\n margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n margin: 0;\n line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n padding: @modal-inner-padding;\n text-align: right; // right align buttons\n border-top: 1px solid @modal-footer-border-color;\n &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n // Properly space out buttons\n .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n }\n // but override that for button groups\n .btn-group .btn + .btn {\n margin-left: -1px;\n }\n // and override it for block buttons as well\n .btn-block + .btn-block {\n margin-left: 0;\n }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n width: @modal-md;\n margin: 30px auto;\n }\n .modal-content {\n .box-shadow(0 5px 15px rgba(0,0,0,.5));\n }\n\n // Modal sizes\n .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n .modal-lg { width: @modal-lg; }\n}\n","//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n position: absolute;\n z-index: @zindex-tooltip;\n display: block;\n visibility: visible;\n // Reset font and text propertes given new insertion method\n font-family: @font-family-base;\n font-size: @font-size-small;\n font-weight: normal;\n line-height: 1.4;\n .opacity(0);\n\n &.in { .opacity(@tooltip-opacity); }\n &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; }\n &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; }\n &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; }\n &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: @tooltip-max-width;\n padding: 3px 8px;\n color: @tooltip-color;\n text-align: center;\n text-decoration: none;\n background-color: @tooltip-bg;\n border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1\n.tooltip {\n &.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-left .tooltip-arrow {\n bottom: 0;\n right: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-right .tooltip-arrow {\n bottom: 0;\n left: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n border-right-color: @tooltip-arrow-color;\n }\n &.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-left-color: @tooltip-arrow-color;\n }\n &.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-left .tooltip-arrow {\n top: 0;\n right: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-right .tooltip-arrow {\n top: 0;\n left: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: @zindex-popover;\n display: none;\n max-width: @popover-max-width;\n padding: 1px;\n // Reset font and text propertes given new insertion method\n font-family: @font-family-base;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: @line-height-base;\n text-align: left;\n background-color: @popover-bg;\n background-clip: padding-box;\n border: 1px solid @popover-fallback-border-color;\n border: 1px solid @popover-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n // Overrides for proper insertion\n white-space: normal;\n\n // Offset the popover to account for the popover arrow\n &.top { margin-top: -@popover-arrow-width; }\n &.right { margin-left: @popover-arrow-width; }\n &.bottom { margin-top: @popover-arrow-width; }\n &.left { margin-left: -@popover-arrow-width; }\n}\n\n.popover-title {\n margin: 0; // reset heading margin\n padding: 8px 14px;\n font-size: @font-size-base;\n background-color: @popover-title-bg;\n border-bottom: 1px solid darken(@popover-title-bg, 5%);\n border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;\n}\n\n.popover-content {\n padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover > .arrow {\n &,\n &:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n}\n.popover > .arrow {\n border-width: @popover-arrow-outer-width;\n}\n.popover > .arrow:after {\n border-width: @popover-arrow-width;\n content: \"\";\n}\n\n.popover {\n &.top > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-top-color: @popover-arrow-outer-color;\n bottom: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n bottom: 1px;\n margin-left: -@popover-arrow-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-color;\n }\n }\n &.right > .arrow {\n top: 50%;\n left: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-right-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n left: 1px;\n bottom: -@popover-arrow-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-color;\n }\n }\n &.bottom > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-bottom-color: @popover-arrow-outer-color;\n top: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n top: 1px;\n margin-left: -@popover-arrow-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-color;\n }\n }\n\n &.left > .arrow {\n top: 50%;\n right: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-right-width: 0;\n border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-left-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: @popover-arrow-color;\n bottom: -@popover-arrow-width;\n }\n }\n}\n","//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n\n > .item {\n display: none;\n position: relative;\n .transition(.6s ease-in-out left);\n\n // Account for jankitude on images\n > img,\n > a > img {\n &:extend(.img-responsive);\n line-height: 1;\n }\n\n // WebKit CSS3 transforms for supported devices\n @media all and (transform-3d), (-webkit-transform-3d) {\n transition: transform .6s ease-in-out;\n backface-visibility: hidden;\n perspective: 1000;\n\n &.next,\n &.active.right {\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n &.prev,\n &.active.left {\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n &.next.left,\n &.prev.right,\n &.active {\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n }\n }\n\n > .active,\n > .next,\n > .prev {\n display: block;\n }\n\n > .active {\n left: 0;\n }\n\n > .next,\n > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n > .next {\n left: 100%;\n }\n > .prev {\n left: -100%;\n }\n > .next.left,\n > .prev.right {\n left: 0;\n }\n\n > .active.left {\n left: -100%;\n }\n > .active.right {\n left: 100%;\n }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: @carousel-control-width;\n .opacity(@carousel-control-opacity);\n font-size: @carousel-control-font-size;\n color: @carousel-control-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n // We can't have this transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Set gradients for backgrounds\n &.left {\n #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n }\n &.right {\n left: auto;\n right: 0;\n #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n }\n\n // Hover/focus state\n &:hover,\n &:focus {\n outline: 0;\n color: @carousel-control-color;\n text-decoration: none;\n .opacity(.9);\n }\n\n // Toggles\n .icon-prev,\n .icon-next,\n .glyphicon-chevron-left,\n .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n }\n .icon-prev,\n .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n }\n .icon-next,\n .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n }\n .icon-prev,\n .icon-next {\n width: 20px;\n height: 20px;\n margin-top: -10px;\n font-family: serif;\n }\n\n\n .icon-prev {\n &:before {\n content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n }\n }\n .icon-next {\n &:before {\n content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n }\n }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\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 li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid @carousel-indicator-border-color;\n border-radius: 10px;\n cursor: pointer;\n\n // IE8-9 hack for event handling\n //\n // Internet Explorer 8-9 does not support clicks on elements without a set\n // `background-color`. We cannot use `filter` since that's not viewed as a\n // background color by the browser. Thus, a hack is needed.\n //\n // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n // set alpha transparency for the best results possible.\n background-color: #000 \\9; // IE8\n background-color: rgba(0,0,0,0); // IE9\n }\n .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: @carousel-indicator-active-bg;\n }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\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: @carousel-caption-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n & .btn {\n text-shadow: none; // No shadow for button elements in carousel-caption\n }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n // Scale up the controls a smidge\n .carousel-control {\n .glyphicon-chevron-left,\n .glyphicon-chevron-right,\n .icon-prev,\n .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .glyphicon-chevron-left,\n .icon-prev {\n margin-left: -15px;\n }\n .glyphicon-chevron-right,\n .icon-next {\n margin-right: -15px;\n }\n }\n\n // Show and left align the captions\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n\n // Move up the indicators\n .carousel-indicators {\n bottom: 20px;\n }\n}\n","// Clearfix\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contenteditable attribute is included anywhere else in the document.\n// Otherwise it causes space to appear at the top and bottom of elements\n// that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n// `:before` to contain the top-margins of child elements.\n//\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n\n.clearfix() {\n &:before,\n &:after {\n content: \" \"; // 1\n display: table; // 2\n }\n &:after {\n clear: both;\n }\n}\n","// Center-align a block level element\n\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n","// CSS image replacement\n//\n// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n","//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#support-ie10-width\n// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n width: device-width;\n}\n\n\n// Visibility utilities\n// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n .responsive-invisibility();\n}\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\n.visible-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-visibility();\n }\n}\n.visible-xs-block {\n @media (max-width: @screen-xs-max) {\n display: block !important;\n }\n}\n.visible-xs-inline {\n @media (max-width: @screen-xs-max) {\n display: inline !important;\n }\n}\n.visible-xs-inline-block {\n @media (max-width: @screen-xs-max) {\n display: inline-block !important;\n }\n}\n\n.visible-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-visibility();\n }\n}\n.visible-sm-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: block !important;\n }\n}\n.visible-sm-inline {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline !important;\n }\n}\n.visible-sm-inline-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline-block !important;\n }\n}\n\n.visible-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-visibility();\n }\n}\n.visible-md-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: block !important;\n }\n}\n.visible-md-inline {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline !important;\n }\n}\n.visible-md-inline-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline-block !important;\n }\n}\n\n.visible-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-visibility();\n }\n}\n.visible-lg-block {\n @media (min-width: @screen-lg-min) {\n display: block !important;\n }\n}\n.visible-lg-inline {\n @media (min-width: @screen-lg-min) {\n display: inline !important;\n }\n}\n.visible-lg-inline-block {\n @media (min-width: @screen-lg-min) {\n display: inline-block !important;\n }\n}\n\n.hidden-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-invisibility();\n }\n}\n.hidden-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-invisibility();\n }\n}\n.hidden-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-invisibility();\n }\n}\n.hidden-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-invisibility();\n }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n// Note: Deprecated .visible-print as of v3.2.0\n.visible-print {\n .responsive-invisibility();\n\n @media print {\n .responsive-visibility();\n }\n}\n.visible-print-block {\n display: none !important;\n\n @media print {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n\n @media print {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n\n @media print {\n display: inline-block !important;\n }\n}\n\n.hidden-print {\n @media print {\n .responsive-invisibility();\n }\n}\n","// Responsive utilities\n\n//\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n display: block !important;\n table& { display: table; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n display: none !important;\n}\n"]} \ No newline at end of file diff --git a/gui/slick/css/lib/bootstrap.min.css b/gui/slick/css/lib/bootstrap.min.css index 517f756696ebe24b8d62ee412d5283bb78cfd1db..d65c66b1ba297eeb3b5976b71c64c736b41bb763 100644 Binary files a/gui/slick/css/lib/bootstrap.min.css and b/gui/slick/css/lib/bootstrap.min.css differ diff --git a/gui/slick/css/lib/images/ui-bg_flat_0_000000_40x100.png b/gui/slick/css/lib/images/ui-bg_flat_0_000000_40x100.png index 3815e78a6dc4a1e2a06f7c7e408d1bd52ca9f91d..a6cdf6fad1aadee1dcbaab1585efca119763be58 100644 Binary files a/gui/slick/css/lib/images/ui-bg_flat_0_000000_40x100.png and b/gui/slick/css/lib/images/ui-bg_flat_0_000000_40x100.png differ diff --git a/gui/slick/css/lib/images/ui-bg_flat_0_aaaaaa_40x100.png b/gui/slick/css/lib/images/ui-bg_flat_0_aaaaaa_40x100.png index 5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4..5cbfd5e48b226389c50061ae3c273e9ef1f0083d 100644 Binary files a/gui/slick/css/lib/images/ui-bg_flat_0_aaaaaa_40x100.png and b/gui/slick/css/lib/images/ui-bg_flat_0_aaaaaa_40x100.png differ diff --git a/gui/slick/css/lib/images/ui-bg_flat_0_ffffff_40x100.png b/gui/slick/css/lib/images/ui-bg_flat_0_ffffff_40x100.png index 74d39425c3745c60011f314ed1c3578bdf42dbb6..671b76a378bda22b654356f4e224f97db00bf5bf 100644 Binary files a/gui/slick/css/lib/images/ui-bg_flat_0_ffffff_40x100.png and b/gui/slick/css/lib/images/ui-bg_flat_0_ffffff_40x100.png differ diff --git a/gui/slick/css/lib/images/ui-bg_glass_55_fbf9ee_1x400.png b/gui/slick/css/lib/images/ui-bg_glass_55_fbf9ee_1x400.png index 448f5ffe858b483353bed25002edd4bba14c8ab5..da641533642a611580bbc9a00601ed29412f8509 100644 Binary files a/gui/slick/css/lib/images/ui-bg_glass_55_fbf9ee_1x400.png and b/gui/slick/css/lib/images/ui-bg_glass_55_fbf9ee_1x400.png differ diff --git a/gui/slick/css/lib/images/ui-bg_glass_95_fef1ec_1x400.png b/gui/slick/css/lib/images/ui-bg_glass_95_fef1ec_1x400.png index 20eb6cab098981e24fdf0355889964af5ec6e1df..ef6166187604dda6166e56d3434e4a9226cfea38 100644 Binary files a/gui/slick/css/lib/images/ui-bg_glass_95_fef1ec_1x400.png and b/gui/slick/css/lib/images/ui-bg_glass_95_fef1ec_1x400.png differ diff --git a/gui/slick/css/lib/images/ui-bg_highlight-soft_75_dcdcdc_1x100.png b/gui/slick/css/lib/images/ui-bg_highlight-soft_75_dcdcdc_1x100.png index 26edadf48dd6bfc6391846a02da1dd729a671e1a..c439a85028bf02176eb098829d9c4cc41155668b 100644 Binary files a/gui/slick/css/lib/images/ui-bg_highlight-soft_75_dcdcdc_1x100.png and b/gui/slick/css/lib/images/ui-bg_highlight-soft_75_dcdcdc_1x100.png differ diff --git a/gui/slick/css/lib/images/ui-bg_highlight-soft_75_dddddd_1x100.png b/gui/slick/css/lib/images/ui-bg_highlight-soft_75_dddddd_1x100.png index e60afb4efb49ad7eb126067bab8ac61c879860f1..aa0022e3b3a3e5e93d35651b5db08a626349f6b8 100644 Binary files a/gui/slick/css/lib/images/ui-bg_highlight-soft_75_dddddd_1x100.png and b/gui/slick/css/lib/images/ui-bg_highlight-soft_75_dddddd_1x100.png differ diff --git a/gui/slick/css/lib/images/ui-bg_highlight-soft_75_efefef_1x100.png b/gui/slick/css/lib/images/ui-bg_highlight-soft_75_efefef_1x100.png index 265552081d58898bb3b85083e8294693bc528cca..862b9c0cd844d76ba49fe1912ff5540ea303546d 100644 Binary files a/gui/slick/css/lib/images/ui-bg_highlight-soft_75_efefef_1x100.png and b/gui/slick/css/lib/images/ui-bg_highlight-soft_75_efefef_1x100.png differ diff --git a/gui/slick/css/lib/images/ui-bg_inset-soft_75_dfdfdf_1x100.png b/gui/slick/css/lib/images/ui-bg_inset-soft_75_dfdfdf_1x100.png index 05373b49d4b1649d40315ea9c390e3d3638ee38e..a5d4c5b2ab2d9e3b48755b34f162b11c514647b3 100644 Binary files a/gui/slick/css/lib/images/ui-bg_inset-soft_75_dfdfdf_1x100.png and b/gui/slick/css/lib/images/ui-bg_inset-soft_75_dfdfdf_1x100.png differ diff --git a/gui/slick/css/lib/images/ui-icons_222222_256x240.png b/gui/slick/css/lib/images/ui-icons_222222_256x240.png index c1cb1170c8b3795835b8831ab81fa9ae63b606b1..e9c8e16ac5e7f61c843fbac290ce30c5de7e40b6 100644 Binary files a/gui/slick/css/lib/images/ui-icons_222222_256x240.png and b/gui/slick/css/lib/images/ui-icons_222222_256x240.png differ diff --git a/gui/slick/css/lib/images/ui-icons_2e83ff_256x240.png b/gui/slick/css/lib/images/ui-icons_2e83ff_256x240.png index 84b601bf0f726bf95801da487deaf2344a32e4b8..f2bf8388370920783b94285cb75827ce4b4cc1c5 100644 Binary files a/gui/slick/css/lib/images/ui-icons_2e83ff_256x240.png and b/gui/slick/css/lib/images/ui-icons_2e83ff_256x240.png differ diff --git a/gui/slick/css/lib/images/ui-icons_8c291d_256x240.png b/gui/slick/css/lib/images/ui-icons_8c291d_256x240.png index 168def7426de04faf27d2a5bc4956e842b675175..a35a1a60febbcd0742a97b24a1943099f7fead92 100644 Binary files a/gui/slick/css/lib/images/ui-icons_8c291d_256x240.png and b/gui/slick/css/lib/images/ui-icons_8c291d_256x240.png differ diff --git a/gui/slick/css/lib/images/ui-icons_cd0a0a_256x240.png b/gui/slick/css/lib/images/ui-icons_cd0a0a_256x240.png index ed5b6b0930f672fa08e9b9bdbe5e55370fd1dc30..49370189231d006600b0f0c2967cad1583eba634 100644 Binary files a/gui/slick/css/lib/images/ui-icons_cd0a0a_256x240.png and b/gui/slick/css/lib/images/ui-icons_cd0a0a_256x240.png differ diff --git a/gui/slick/css/lib/jquery-ui-1.10.4.custom.css b/gui/slick/css/lib/jquery-ui-1.10.4.custom.css deleted file mode 100644 index a61154cf77cde4cc99b0157d223a3214ada4380e..0000000000000000000000000000000000000000 --- a/gui/slick/css/lib/jquery-ui-1.10.4.custom.css +++ /dev/null @@ -1,855 +0,0 @@ -/*! jQuery UI - v1.10.4 - 2014-02-03 -* http://jqueryui.com -* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.tabs.css, jquery.ui.theme.css -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=%23ffffff&bgTextureHeader=flat&bgImgOpacityHeader=0&borderColorHeader=%23aaaaaa&fcHeader=%23222222&iconColorHeader=%23222222&bgColorContent=%23dcdcdc&bgTextureContent=highlight_soft&bgImgOpacityContent=75&borderColorContent=%23aaaaaa&fcContent=%23222222&iconColorContent=%23222222&bgColorDefault=%23efefef&bgTextureDefault=highlight_soft&bgImgOpacityDefault=75&borderColorDefault=%23aaaaaa&fcDefault=%23222222&iconColorDefault=%238c291d&bgColorHover=%23dddddd&bgTextureHover=highlight_soft&bgImgOpacityHover=75&borderColorHover=%23999999&fcHover=%23222222&iconColorHover=%23222222&bgColorActive=%23dfdfdf&bgTextureActive=inset_soft&bgImgOpacityActive=75&borderColorActive=%23aaaaaa&fcActive=%23140f06&iconColorActive=%238c291d&bgColorHighlight=%23fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=%23aaaaaa&fcHighlight=%23363636&iconColorHighlight=%232e83ff&bgColorError=%23fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=%23aaaaaa&fcError=%238c291d&iconColorError=%23cd0a0a&bgColorOverlay=%23aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=35&bgColorShadow=%23000000&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=35&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px&ctl=themeroller -* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ - -/* Layout helpers -----------------------------------*/ -.ui-helper-hidden { - display: none; -} -.ui-helper-hidden-accessible { - border: 0; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; -} -.ui-helper-reset { - margin: 0; - padding: 0; - border: 0; - outline: 0; - line-height: 1.3; - text-decoration: none; - font-size: 100%; - list-style: none; -} -.ui-helper-clearfix:before, -.ui-helper-clearfix:after { - content: ""; - display: table; - border-collapse: collapse; -} -.ui-helper-clearfix:after { - clear: both; -} -.ui-helper-clearfix { - min-height: 0; /* support: IE7 */ -} -.ui-helper-zfix { - width: 100%; - height: 100%; - top: 0; - left: 0; - position: absolute; - opacity: 0; - filter:Alpha(Opacity=0); -} - -.ui-front { - z-index: 100; -} - - -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { - cursor: default !important; -} - - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { - display: block; - text-indent: -99999px; - overflow: hidden; - background-repeat: no-repeat; -} - - -/* Misc visuals -----------------------------------*/ - -/* Overlays */ -.ui-widget-overlay { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; -} -.ui-resizable { - position: relative; -} -.ui-resizable-handle { - position: absolute; - font-size: 0.1px; - display: block; -} -.ui-resizable-disabled .ui-resizable-handle, -.ui-resizable-autohide .ui-resizable-handle { - display: none; -} -.ui-resizable-n { - cursor: n-resize; - height: 7px; - width: 100%; - top: -5px; - left: 0; -} -.ui-resizable-s { - cursor: s-resize; - height: 7px; - width: 100%; - bottom: -5px; - left: 0; -} -.ui-resizable-e { - cursor: e-resize; - width: 7px; - right: -5px; - top: 0; - height: 100%; -} -.ui-resizable-w { - cursor: w-resize; - width: 7px; - left: -5px; - top: 0; - height: 100%; -} -.ui-resizable-se { - cursor: se-resize; - width: 12px; - height: 12px; - right: 1px; - bottom: 1px; -} -.ui-resizable-sw { - cursor: sw-resize; - width: 9px; - height: 9px; - left: -5px; - bottom: -5px; -} -.ui-resizable-nw { - cursor: nw-resize; - width: 9px; - height: 9px; - left: -5px; - top: -5px; -} -.ui-resizable-ne { - cursor: ne-resize; - width: 9px; - height: 9px; - right: -5px; - top: -5px; -} -.ui-selectable-helper { - position: absolute; - z-index: 100; - border: 1px dotted black; -} -.ui-autocomplete { - position: absolute; - top: 0; - left: 0; - cursor: default; -} -.ui-button { - display: inline-block; - position: relative; - padding: 0; - line-height: normal; - margin-right: .1em; - cursor: pointer; - vertical-align: middle; - text-align: center; - overflow: visible; /* removes extra width in IE */ -} -.ui-button, -.ui-button:link, -.ui-button:visited, -.ui-button:hover, -.ui-button:active { - text-decoration: none; -} -/* to make room for the icon, a width needs to be set here */ -.ui-button-icon-only { - width: 2.2em; -} -/* button elements seem to need a little more width */ -button.ui-button-icon-only { - width: 2.4em; -} -.ui-button-icons-only { - width: 3.4em; -} -button.ui-button-icons-only { - width: 3.7em; -} - -/* button text element */ -.ui-button .ui-button-text { - display: block; - line-height: normal; -} -.ui-button-text-only .ui-button-text { - padding: .4em 1em; -} -.ui-button-icon-only .ui-button-text, -.ui-button-icons-only .ui-button-text { - padding: .4em; - text-indent: -9999999px; -} -.ui-button-text-icon-primary .ui-button-text, -.ui-button-text-icons .ui-button-text { - padding: .4em 1em .4em 2.1em; -} -.ui-button-text-icon-secondary .ui-button-text, -.ui-button-text-icons .ui-button-text { - padding: .4em 2.1em .4em 1em; -} -.ui-button-text-icons .ui-button-text { - padding-left: 2.1em; - padding-right: 2.1em; -} -/* no icon support for input elements, provide padding by default */ -input.ui-button { - padding: .4em 1em; -} - -/* button icon element(s) */ -.ui-button-icon-only .ui-icon, -.ui-button-text-icon-primary .ui-icon, -.ui-button-text-icon-secondary .ui-icon, -.ui-button-text-icons .ui-icon, -.ui-button-icons-only .ui-icon { - position: absolute; - top: 50%; - margin-top: -8px; -} -.ui-button-icon-only .ui-icon { - left: 50%; - margin-left: -8px; -} -.ui-button-text-icon-primary .ui-button-icon-primary, -.ui-button-text-icons .ui-button-icon-primary, -.ui-button-icons-only .ui-button-icon-primary { - left: .5em; -} -.ui-button-text-icon-secondary .ui-button-icon-secondary, -.ui-button-text-icons .ui-button-icon-secondary, -.ui-button-icons-only .ui-button-icon-secondary { - right: .5em; -} - -/* button sets */ -.ui-buttonset { - margin-right: 7px; -} -.ui-buttonset .ui-button { - margin-left: 0; - margin-right: -.3em; -} - -/* workarounds */ -/* reset extra padding in Firefox, see h5bp.com/l */ -input.ui-button::-moz-focus-inner, -button.ui-button::-moz-focus-inner { - border: 0; - padding: 0; -} -.ui-dialog { - overflow: hidden; - position: absolute; - top: 0; - left: 0; - padding: .2em; - outline: 0; -} -.ui-dialog .ui-dialog-titlebar { - padding: .4em 1em; - position: relative; -} -.ui-dialog .ui-dialog-title { - float: left; - margin: .1em 0; - white-space: nowrap; - width: 90%; - overflow: hidden; - text-overflow: ellipsis; -} -.ui-dialog .ui-dialog-titlebar-close { - position: absolute; - right: .3em; - top: 50%; - width: 20px; - margin: -10px 0 0 0; - padding: 1px; - height: 20px; -} -.ui-dialog .ui-dialog-content { - position: relative; - border: 0; - padding: .5em 1em; - background: none; - overflow: auto; -} -.ui-dialog .ui-dialog-buttonpane { - text-align: left; - border-width: 1px 0 0 0; - background-image: none; - margin-top: .5em; - padding: .3em 1em .5em .4em; -} -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { - float: right; -} -.ui-dialog .ui-dialog-buttonpane button { - margin: .5em .4em .5em 0; - cursor: pointer; -} -.ui-dialog .ui-resizable-se { - width: 12px; - height: 12px; - right: -5px; - bottom: -5px; - background-position: 16px 16px; -} -.ui-draggable .ui-dialog-titlebar { - cursor: move; -} -.ui-menu { - list-style: none; - padding: 2px; - margin: 0; - display: block; - outline: none; -} -.ui-menu .ui-menu { - margin-top: -3px; - position: absolute; -} -.ui-menu .ui-menu-item { - margin: 0; - padding: 0; - width: 100%; - /* support: IE10, see #8844 */ - list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); -} -.ui-menu .ui-menu-divider { - margin: 5px -2px 5px -2px; - height: 0; - font-size: 0; - line-height: 0; - border-width: 1px 0 0 0; -} -.ui-menu .ui-menu-item a { - text-decoration: none; - display: block; - padding: 2px .4em; - line-height: 1.5; - min-height: 0; /* support: IE7 */ - font-weight: normal; -} -.ui-menu .ui-menu-item a.ui-state-focus, -.ui-menu .ui-menu-item a.ui-state-active { - font-weight: normal; - margin: -1px; -} - -.ui-menu .ui-state-disabled { - font-weight: normal; - margin: .4em 0 .2em; - line-height: 1.5; -} -.ui-menu .ui-state-disabled a { - cursor: default; -} - -/* icon support */ -.ui-menu-icons { - position: relative; -} -.ui-menu-icons .ui-menu-item a { - position: relative; - padding-left: 2em; -} - -/* left-aligned */ -.ui-menu .ui-icon { - position: absolute; - top: .2em; - left: .2em; -} - -/* right-aligned */ -.ui-menu .ui-menu-icon { - position: static; - float: right; -} -.ui-progressbar { - height: 2em; - text-align: left; - overflow: hidden; -} -.ui-progressbar .ui-progressbar-value { - margin: -1px; - height: 100%; -} -.ui-progressbar .ui-progressbar-overlay { - /* background: url("images/animated-overlay.gif"); */ - height: 100%; - filter: alpha(opacity=25); - opacity: 0.25; -} -.ui-progressbar-indeterminate .ui-progressbar-value { - background-image: none; -} -.ui-tabs { - position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ - padding: .2em; -} -.ui-tabs .ui-tabs-nav { - margin: 0; - padding: .2em .2em 0; -} -.ui-tabs .ui-tabs-nav li { - list-style: none; - float: left; - position: relative; - top: 0; - margin: 1px .2em 0 0; - border-bottom-width: 0; - padding: 0; - white-space: nowrap; -} -.ui-tabs .ui-tabs-nav .ui-tabs-anchor { - float: left; - padding: .5em 1em; - text-decoration: none; -} -.ui-tabs .ui-tabs-nav li.ui-tabs-active { - margin-bottom: -1px; - padding-bottom: 1px; -} -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { - cursor: text; -} -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { - cursor: pointer; -} -.ui-tabs .ui-tabs-panel { - display: block; - border-width: 0; - background: none; -} - -/* Component containers -----------------------------------*/ -.ui-widget { - -} -.ui-widget .ui-widget { - -} -.ui-widget input, -.ui-widget select, -.ui-widget textarea, -.ui-widget button { - -} -.ui-widget-content { - border: 1px solid #aaaaaa; - /* background: #dcdcdc url(images/ui-bg_highlight-soft_75_dcdcdc_1x100.png) 50% top repeat-x; */ - color: #222222; -} -.ui-widget-content a { - color: #222222; -} -.ui-widget-header { - border: 1px solid #aaaaaa; - /* background: #ffffff url(images/ui-bg_flat_0_ffffff_40x100.png) 50% 50% repeat-x; */ - color: #222222; - font-weight: bold; -} -.ui-widget-header a { - color: #222222; -} - -/* Interaction states -----------------------------------*/ -.ui-state-default, -.ui-widget-content .ui-state-default, -.ui-widget-header .ui-state-default { - border: 1px solid #aaaaaa; - /* background: #efefef url(images/ui-bg_highlight-soft_75_efefef_1x100.png) 50% 50% repeat-x; */ - font-weight: bold; - color: #222222; -} -.ui-state-default a, -.ui-state-default a:link, -.ui-state-default a:visited { - color: #222222; - text-decoration: none; -} -.ui-state-hover, -.ui-widget-content .ui-state-hover, -.ui-widget-header .ui-state-hover, -.ui-state-focus, -.ui-widget-content .ui-state-focus, -.ui-widget-header .ui-state-focus { - border: 1px solid #999999; - /* background: #dddddd url(images/ui-bg_highlight-soft_75_dddddd_1x100.png) 50% 50% repeat-x; */ - font-weight: bold; - color: #222222; -} -.ui-state-hover a, -.ui-state-hover a:hover, -.ui-state-hover a:link, -.ui-state-hover a:visited, -.ui-state-focus a, -.ui-state-focus a:hover, -.ui-state-focus a:link, -.ui-state-focus a:visited { - color: #222222; - text-decoration: none; -} -.ui-state-active, -.ui-widget-content .ui-state-active, -.ui-widget-header .ui-state-active { - border: 1px solid #aaaaaa; - background: #dfdfdf url(images/ui-bg_inset-soft_75_dfdfdf_1x100.png) 50% 50% repeat-x; - font-weight: bold; - color: #140f06; -} -.ui-state-active a, -.ui-state-active a:link, -.ui-state-active a:visited { - color: #140f06; - text-decoration: none; -} - -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, -.ui-widget-content .ui-state-highlight, -.ui-widget-header .ui-state-highlight { - border: 1px solid #aaaaaa; - /* background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; */ - color: #363636; -} -.ui-state-highlight a, -.ui-widget-content .ui-state-highlight a, -.ui-widget-header .ui-state-highlight a { - color: #363636; -} -.ui-state-error, -.ui-widget-content .ui-state-error, -.ui-widget-header .ui-state-error { - border: 1px solid #aaaaaa; - /* background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; */ - color: #8c291d; -} -.ui-state-error a, -.ui-widget-content .ui-state-error a, -.ui-widget-header .ui-state-error a { - color: #8c291d; -} -.ui-state-error-text, -.ui-widget-content .ui-state-error-text, -.ui-widget-header .ui-state-error-text { - color: #8c291d; -} -.ui-priority-primary, -.ui-widget-content .ui-priority-primary, -.ui-widget-header .ui-priority-primary { - font-weight: bold; -} -.ui-priority-secondary, -.ui-widget-content .ui-priority-secondary, -.ui-widget-header .ui-priority-secondary { - opacity: .7; - filter:Alpha(Opacity=70); - font-weight: normal; -} -.ui-state-disabled, -.ui-widget-content .ui-state-disabled, -.ui-widget-header .ui-state-disabled { - opacity: .35; - filter:Alpha(Opacity=35); - background-image: none; -} -.ui-state-disabled .ui-icon { - filter:Alpha(Opacity=35); /* For IE8 - See #6059 */ -} - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { - width: 16px; - height: 16px; -} -/* -.ui-icon, -.ui-widget-content .ui-icon { - background-image: url(images/ui-icons_222222_256x240.png); -} -.ui-widget-header .ui-icon { - background-image: url(images/ui-icons_222222_256x240.png); -} -.ui-state-default .ui-icon { - background-image: url(images/ui-icons_8c291d_256x240.png); -} -.ui-state-hover .ui-icon, -.ui-state-focus .ui-icon { - background-image: url(images/ui-icons_222222_256x240.png); -} -.ui-state-active .ui-icon { - background-image: url(images/ui-icons_8c291d_256x240.png); -} -.ui-state-highlight .ui-icon { - background-image: url(images/ui-icons_2e83ff_256x240.png); -} -.ui-state-error .ui-icon, -.ui-state-error-text .ui-icon { - background-image: url(images/ui-icons_cd0a0a_256x240.png); -} -*/ - -/* positioning */ -.ui-icon-blank { background-position: 16px 16px; } -.ui-icon-carat-1-n { background-position: 0 0; } -.ui-icon-carat-1-ne { background-position: -16px 0; } -.ui-icon-carat-1-e { background-position: -32px 0; } -.ui-icon-carat-1-se { background-position: -48px 0; } -.ui-icon-carat-1-s { background-position: -64px 0; } -.ui-icon-carat-1-sw { background-position: -80px 0; } -.ui-icon-carat-1-w { background-position: -96px 0; } -.ui-icon-carat-1-nw { background-position: -112px 0; } -.ui-icon-carat-2-n-s { background-position: -128px 0; } -.ui-icon-carat-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -64px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -64px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 0 -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background-position: -16px -144px; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-on { background-position: -96px -144px; } -.ui-icon-radio-off { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-start { background-position: -80px -160px; } -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-all, -.ui-corner-top, -.ui-corner-left, -.ui-corner-tl { - border-top-left-radius: 4px; -} -.ui-corner-all, -.ui-corner-top, -.ui-corner-right, -.ui-corner-tr { - border-top-right-radius: 4px; -} -.ui-corner-all, -.ui-corner-bottom, -.ui-corner-left, -.ui-corner-bl { - border-bottom-left-radius: 4px; -} -.ui-corner-all, -.ui-corner-bottom, -.ui-corner-right, -.ui-corner-br { - border-bottom-right-radius: 4px; -} - -/* Overlays */ -.ui-widget-overlay { - /* background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; */ - opacity: .35; - filter: Alpha(Opacity=35); -} -.ui-widget-shadow { - margin: -8px 0 0 -8px; - padding: 8px; - /* background: #000000 url(images/ui-bg_flat_0_000000_40x100.png) 50% 50% repeat-x; */ - opacity: .35; - filter: Alpha(Opacity=35); - border-radius: 8px; -} diff --git a/gui/slick/css/lib/jquery-ui-1.10.4.custom.min.css b/gui/slick/css/lib/jquery-ui-1.10.4.custom.min.css new file mode 100755 index 0000000000000000000000000000000000000000..b84acdccdb760465bcea11ba2666f20bd9fd79cd Binary files /dev/null and b/gui/slick/css/lib/jquery-ui-1.10.4.custom.min.css differ diff --git a/gui/slick/css/light.css b/gui/slick/css/light.css index c75cbdd08c8bf6d7b1cf0c715fd81116adb7aaa0..0b5212cc10c070a0d898b1ee4f521ce98bd42071 100644 --- a/gui/slick/css/light.css +++ b/gui/slick/css/light.css @@ -1,547 +1,6 @@ /* ======================================================================= -fonts +home.mako ========================================================================== */ -/* Open Sans */ -/* Regular */ -@font-face { - font-family: 'Open Sans'; - - src: url('fonts/OpenSans-Regular-webfont.eot'); - src: url('fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Regular-webfont.woff') format('woff'), - url('fonts/OpenSans-Regular-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Regular-webfont.svg#OpenSansRegular') format('svg'); - font-weight: normal; - font-weight: 400; - font-style: normal; -} - -/* Italic */ -@font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-Italic-webfont.eot'); - src: url('fonts/OpenSans-Italic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Italic-webfont.woff') format('woff'), - url('fonts/OpenSans-Italic-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Italic-webfont.svg#OpenSansItalic') format('svg'); - font-weight: normal; - font-weight: 400; - font-style: italic; -} - -/* Light */ -@font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-Light-webfont.eot'); - src: url('fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Light-webfont.woff') format('woff'), - url('fonts/OpenSans-Light-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Light-webfont.svg#OpenSansLight') format('svg'); - font-weight: 200; - font-style: normal; -} - -/* Light Italic */ -@font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-LightItalic-webfont.eot'); - src: url('fonts/OpenSans-LightItalic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-LightItalic-webfont.woff') format('woff'), - url('fonts/OpenSans-LightItalic-webfont.ttf') format('truetype'), - url('fonts/OpenSans-LightItalic-webfont.svg#OpenSansLightItalic') format('svg'); - font-weight: 200; - font-style: italic; -} - -/* Semibold */ -@font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-Semibold-webfont.eot'); - src: url('fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Semibold-webfont.woff') format('woff'), - url('fonts/OpenSans-Semibold-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg'); - font-weight: 600; - font-style: normal; -} - -/* Semibold Italic */ -@font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-SemiboldItalic-webfont.eot'); - src: url('fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'), - url('fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'), - url('fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') format('svg'); - font-weight: 600; - font-style: italic; -} - -/* Bold */ -@font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-Semibold-webfont.eot'); - src: url('fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Semibold-webfont.woff') format('woff'), - url('fonts/OpenSans-Semibold-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg'); - font-weight: bold; - font-weight: 700; - font-style: normal; -} - -/* Bold Italic */ -@font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-SemiboldItalic-webfont.eot'); - src: url('fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'), - url('fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'), - url('fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') format('svg'); - font-weight: bold; - font-weight: 700; - font-style: italic; -} - -/* Extra Bold */ -@font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-Bold-webfont.eot'); - src: url('fonts/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Bold-webfont.woff') format('woff'), - url('fonts/OpenSans-Bold-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Bold-webfont.svg#OpenSansBold') format('svg'); - font-weight: 900; - font-style: normal; -} - -/* Extra Bold Italic */ -@font-face { - font-family: 'Open Sans'; - src: url('fonts/OpenSans-BoldItalic-webfont.eot'); - src: url('fonts/OpenSans-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-BoldItalic-webfont.woff') format('woff'), - url('fonts/OpenSans-BoldItalic-webfont.ttf') format('truetype'), - url('fonts/OpenSans-BoldItalic-webfont.svg#OpenSansBoldItalic') format('svg'); - font-weight: 900; - font-style: italic; -} - -/* Droid Sans */ -@font-face { - font-family: 'droid_sans_mono'; - src: url('fonts/droidsansmono-webfont.eot'); - src: url('fonts/droidsansmono-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/droidsansmono-webfont.woff') format('woff'), - url('fonts/droidsansmono-webfont.ttf') format('truetype'), - url('fonts/droidsansmono-webfont.svg#droid_sans_monoregular') format('svg'); - font-weight: normal; - font-style: normal; -} - - -/* ======================================================================= -inc_top.tmpl -========================================================================== */ - -.navbaricon { - margin-top: -15px; - margin-bottom: -15px; -} - -#contentWrapper { -/* background: url("../images/bg.png") repeat 0 0 transparent; */ -} - -[class^="icon-"], -[class*=" icon-"] { - background-image: url("../images/glyphicons-halflings.png"); -} - -.icon-white { - background-image: url("../images/glyphicons-halflings-white.png"); -} - -.dropdown-menu li > a:hover > [class^="menu-icon-"], -.dropdown-menu li > a:hover > [class*=" menu-icon-"] { - background-image: url("../images/menu/menu-icons-white.png"); -} - -[class^="icon16-"], -[class*=" icon16-"] { - background-image: url("../images/glyphicons-config.png"); -} - -.ui-autocomplete-loading { - background: white url("../images/loading16.gif") right center no-repeat; -} - -.browserDialog.busy .ui-dialog-buttonpane { - background: url("../images/loading.gif") 10px 50% no-repeat !important; -} - -.ui-progressbar .ui-progressbar-overlay { - background: url("../css/lib/images/animated-overlay.gif"); -} - -.ui-dialog, -.ui-dialog-buttonpane { - background: #eceadf url("../css/lib/images/ui-bg_fine-grain_10_eceadf_60x60.png") 50% 50% repeat !important; -} - -.ui-accordion-content, -.ui-tabs-panel { - background: #ededed !important; - background-image: none !important; -} - -.ui-widget-content { - background: #dcdcdc url("../css/lib/images/ui-bg_highlight-soft_75_dcdcdc_1x100.png") 50% top repeat-x; -} - -.ui-widget-header { - background: #ffffff url("../css/lib/images/ui-bg_flat_0_ffffff_40x100.png") 50% 50% repeat-x; -} - -.ui-state-default, -.ui-widget-content .ui-state-default, -.ui-widget-header .ui-state-default { - background: #ffffff; - border: 1px solid #CCCCCC; -} - -.ui-state-hover, -.ui-widget-content .ui-state-hover, -.ui-widget-header .ui-state-hover, -.ui-state-focus, -.ui-widget-content .ui-state-focus, -.ui-widget-header .ui-state-focus { - background: #ffffff; -} - -.ui-state-active, -.ui-widget-content .ui-state-active, -.ui-widget-header .ui-state-active { - background: #F7F7F7; -} - -.ui-state-highlight, -.ui-widget-content .ui-state-highlight, -.ui-widget-header .ui-state-highlight { - background: #fbf9ee url("../css/lib/images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x; -} - -.ui-state-error, -.ui-widget-content .ui-state-error, -.ui-widget-header .ui-state-error { - background: #fef1ec url("../css/lib/images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x; -} - -.ui-icon, -.ui-widget-content .ui-icon { - background-image: url("../css/lib/images/ui-icons_222222_256x240.png"); -} - -.ui-widget-header .ui-icon { - background-image: url("../css/lib/images/ui-icons_222222_256x240.png"); -} - -.ui-state-default .ui-icon { - background-image: url("../css/lib/images/ui-icons_8c291d_256x240.png"); -} - -.ui-state-hover .ui-icon, -.ui-state-focus .ui-icon { - background-image: url("../css/lib/images/ui-icons_222222_256x240.png"); -} - -.ui-state-active .ui-icon { - background-image: url("../css/lib/images/ui-icons_8c291d_256x240.png"); -} - -.ui-state-highlight .ui-icon { - background-image: url("../css/lib/images/ui-icons_2e83ff_256x240.png"); -} - -.ui-state-error .ui-icon, -.ui-state-error-text .ui-icon { - background-image: url("../css/lib/images/ui-icons_cd0a0a_256x240.png"); -} - -.ui-widget-overlay { - background: #aaaaaa url("../css/lib/images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x; -} - -.ui-widget-shadow { - background: #000000 url("../css/lib/images/ui-bg_flat_0_000000_40x100.png") 50% 50% repeat-x; -} - -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { - color: #140F06; - text-decoration: none; -} -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { - color: #222; - text-decoration: none; -} - -.ui-tabs { - padding: 0px; - background: none; - border-width: 0px; -} - -.ui-tabs .ui-tabs-nav { - padding-left: 0px; - background: transparent; - border-width: 0px 0px 0px 0px; - -moz-border-radius: 0px; - -webkit-border-radius: 0px; - border-radius: 0px; -} - -.ui-tabs .ui-tabs-panel { - background-color: #F7F7F7 !important; - border: 1px solid #CCCCCC !important; -} - -.ui-tabs .ui-tabs-nav li.ui-tabs-active { - border-top-left-radius: 5px; - border-top-right-radius: 5px; -} - -.ui-tabs-nav > :not(.ui-tabs-active){ - border-top-left-radius: 5px; - border-top-right-radius: 5px; -} - -#content { - width: 95%; - min-width: 875px; - padding: 15px; - margin-left: auto; - margin-right: auto; - clear: both; -} - -#SubMenu { - padding-right: 20px; - clear: both; - font-size: 12px; - float: right; -} - -.upgrade-notification { - width: 600px; - text-align: center; - margin-left: auto; - margin-right: auto; - margin-top: 50px; - margin-bottom: 0px; -} - -[class^="menu-icon-"], [class*=" menu-icon-"] { - background: url("../images/menu/menu-icons-black.png"); - height: 16px; - width: 16px; - display: inline-block; - position: relative; - top: 2px; - float: left; -} - -@media(max-width:767px){ - [class^="menu-icon-"], [class*=" menu-icon-"] { - background: url("../images/menu/menu-icons-white.png"); - height: 16px; - width: 16px; - display: inline-block; - position: relative; - top: 2px; - float: left; - } -} - -.menu-icon-addshow { - background-position: 0px 0px; -} - -.menu-icon-anime { - background-position: -21px 0px; -} - -.menu-icon-backlog-view { - background-position: -42px 0px; -} - -.menu-icon-backlog { - background-position: -63px 0px; -} - -.menu-icon-bittorrent { - background-position: -84px 0px; -} - -.menu-icon-config-index { - background-position: -105px 0px; -} - -.menu-icon-config { - background-position: -126px 0px; -} - -.menu-icon-failed-download { - background-position: -147px 0px; -} - -.menu-icon-home { - background-position: -168px 0px; -} - -.menu-icon-manage { - background-position: -189px 0px; -} - -.menu-icon-manage-searches { - background-position: -210px 0px; -} - -.menu-icon-poster { - background-position: -231px 0px; -} - -.menu-icon-postprocess { - background-position: -252px 0px; -} - -.menu-icon-restart { - background-position: -273px 0px; -} - -.menu-icon-shutdown { - background-position: -294px 0px; -} - -.menu-icon-update { - background-position: -315px 0px; -} - -.menu-icon-viewlog-errors { - background-position: -336px 0px; -} - -.menu-icon-viewlog { - background-position: -357px 0px; -} - -.menu-icon-kodi { - background-position: -378px 0px; -} - -.menu-icon-help { - background-position: -399px 0px; -} - -[class^="submenu-icon-"], [class*=" submenu-icon-"] { - background: url("../images/menu/menu-icons-black.png"); - height: 16px; - width: 16px; -} - -.submenu-icon-anime { - background-position: -21px 0px; -} - -.submenu-icon-bittorrent { - background-position: -84px 0px; -} - -.submenu-icon-failed-download { - background-position: -147px 0px; -} - -.submenu-icon-restart { - background-position: -273px 0px; -} - -.submenu-icon-shutdown { - background-position: -294px 0px; -} - -.submenu-icon-kodi { - background-position: -378px 0px; -} - -/* ======================================================================= -inc_bottom.tmpl -========================================================================== */ - -.footer { - width: 100%; - padding: 20px 0; - color: #4e4e4e; - text-align: center; - font-size: 12px; -} - -.footerhighlight { - color: #111; - display: inline; -} - - -/* ======================================================================= -home.tmpl -========================================================================== */ - -.imgbanner .banner { - border: 1px solid #ccc; - overflow: hidden; - height: 66px; - overflow: hidden; - border-radius: 8px; - vertical-align: top; - width: 360px; - display: block; - margin-left: auto; - margin-right: auto; -} - -.imgsmallposter .small { - height: 66px; - overflow: hidden; - border-radius: 3px; - vertical-align: middle; - width: 45px; - border: 1px solid #ccc; - margin-right: 5px; -} - -.search { - margin-bottom: 10px; -} - -.ui-progressbar { - height: 20px; - line-height: 18px; -} - -.ui-progressbar .ui-progressbar-value { - box-sizing: content-box !important; -} - -.progressbarText { - position: absolute; - top: 0; - width: 100%; - height: 100%; - overflow: visible; - text-align: center; - text-shadow: 0 0 0.1em #fff; - vertical-align: middle; - font-size: 12px; - color: #000000; -} .progress-100 { background-image: -moz-linear-gradient(#a6cf41, #5b990d) !important; @@ -593,2340 +52,108 @@ home.tmpl border-radius: 3px; } -#container, #container-anime { - margin: 0 auto; -} - -.show { - margin: 12px; - width: 188px; - height: 352px; - background-color: #DFDACF; - border: 1px solid #111; - border-radius: 6px; -} - -.show-image { - overflow: hidden; - height: 273px; - width: 186px; - border-top-left-radius: 5px; - border-top-right-radius: 5px; -} +/* ======================================================================= +displayShow.mako +========================================================================== */ -.show .ui-progressbar { - height: 7px !important; - top: -2px; +.displayShowTable th.row-seasonheader { + border: none !important; + background-color: #fff !important; + color: #000 !important; + padding-top: 15px !important; + text-align: left !important; } -.show .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { - border-bottom-right-radius: 0px; -} +/* ======================================================================= +comingEpisodes.mako +========================================================================== */ -.show .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { - border-bottom-left-radius: 0px; +table.cal-odd { + background-color: #ddd; } -.show .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { - border-top-right-radius: 0px; +table.cal-even { + background-color: #d2d2d2; } -.show .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { - border-top-left-radius: 0px; +.calendarShow .text .airtime { + color:#000 } -.show .ui-widget-content { - border-top: 1px solid #111; - border-bottom: 1px solid #111; - border-left: 0px; - border-right: 0px; +.calendarShow .text .episode-title { + color:#888 } -.show .progress-80 { - border-radius: 0px; -} +/* ======================================================================= +bootstrap Overrides +========================================================================== */ -.show .progress-60 { - border-radius: 0px; +/* navbar styling */ +.navbar-default { + background-color: #333333; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#333333'); + background: -webkit-gradient(linear, left top, left bottom, from(#555), to(#333)); + background: -moz-linear-gradient(top, #555, #333); + border-color: #3e3f3a; } -.show .progress-40 { - border-radius: 0px; +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #3e3f3a; } -.show .progress-20 { - border-radius: 0px; +.dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { + color: #fff; + text-decoration: none; + background-color: #333; } -.show-title { - position: relative; - overflow: hidden; - white-space: nowrap; - font-size: 11px; - margin: 4px 4px 0px 4px; +pre { + color: #000; + background-color: #F5F5F5; + border-color: #ccc; } -.show-title:after { - content: ""; - pointer-events: none; - position: absolute; - width: 20px; - height: 100%; - top: 0; - right: 0; - background-image: -webkit-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); - background-image: -moz-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); - background-image: -ms-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); - background-image: -o-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); - background-image: linear-gradient(to left, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); -} +/* ======================================================================= +tablesorter.css +========================================================================== */ -.show-date { - position: relative; - overflow: hidden; - white-space: nowrap; - font-size: 11px; - margin: 0px 4px 4px 4px; +.tablesorter { + width: 100%; + margin-right: auto; + margin-left: auto; + color: #000; + text-align: left; + background-color: #ddd; + border-spacing: 0; } -.show-date:after { - content: ""; - pointer-events: none; - position: absolute; - width: 20px; - height: 100%; - top: 0; - right: 0; - background-image: -webkit-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); - background-image: -moz-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); - background-image: -ms-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); - background-image: -o-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); - background-image: linear-gradient(to left, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); +/* hidden filter row */ +.tablesorter-filter-row.hideme td { + /*** *********************************************** ***/ + /*** change this padding to modify the thickness ***/ + /*** of the closed filter row (height = padding x 2) ***/ + padding: 2px; + /*** *********************************************** ***/ + margin: 0; + line-height: 0; + cursor: pointer; } -.show-table { - text-align:center; - vertical-align:middle; - width: 33% +.tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); } -.show-add { - font-size: 11px; - text-align: left; - display: block; -} - -.show-status { - font-size: 11px; - text-align: left; - display: block; -} - -.show-network-image { - width: 50px; - height: auto; -} - -.show-dlstats { - font-size: 11px; - text-align: left; - display: block; - margin-left: 4px; -} - -.show-quality { - font-size: 11px; - text-align: right; - display: block; - margin-right: 4px; -} - -#sort-by { - display: inline; - list-style-type: none; - padding: 0; - margin-left: 5px; -} - -#sort-by ul, #sort-by li { - display: inline; - margin: 0; - padding: 0; -} - -.posterview { - margin: 0 auto; -} - -td.tvShow a { - color: #000; - text-decoration: none; -} - -td.tvShow a:hover { - cursor: pointer; - color: #428BCA; -} - -#popover-target label { - margin: 0 5px; - display: block; -} -#popover-target input { - margin-left: 5px; -} -.popover { - margin-left: -50px; -} - -/* ======================================================================= -home_addShows.tmpl -========================================================================== */ - -#addShowPortal { - width: 700px; - padding: 10px 0; - margin-right: auto; - margin-left: auto; -} - -#addShowPortal a { - padding: 10px; -} - -div.button { - display: table-cell; - vertical-align: middle; - padding-left: 10px; -} - -div.buttontext { - display: table-cell; - padding-left: 20px; - text-align: left; - white-space: normal; -} - -div.buttontext h3 { - margin-top: 10px; -} - -div.buttontext p { - font-size: 13px; -} - -.icon-addnewshow { - background-image: url("../images/addshows/add-new32-black.png"); - width: 32px; - height: 32px; -} - -.icon-addtrendingshow { - background-image: url("../images/addshows/add-trending32-black.png"); - width: 32px; - height: 32px; -} - -.icon-addrecommendedshow { - background-image: url("../images/addshows/add-trakt32-black.png"); - width: 32px; - height: 32px; -} - -.icon-addexistingshow { - background-image: url("../images/addshows/add-existing32-black.png"); - width: 32px; - height: 32px; -} - -/* ======================================================================= -home_newShow.tmpl -========================================================================== */ -#addShowForm, #recommendedShowsForm { - width: 800px; - margin-left: auto; - margin-right: auto; - padding: 10px 0; - font-size:13px; -} - -#newShowPortal { - width: 960px; - padding: 10px 0; - margin-right: auto; - margin-left: auto; -} - -#displayText { - padding: 8px; - overflow: hidden; - font-size: 14px; - background-color: #efefef; - border: 1px solid #dfdede; -} - -#searchResults input[type="radio"] { - vertical-align: -2px; -} - -/* ======================================================================= -home_addExistingShow.tmpl -========================================================================== */ - -.existingtabs { - padding: 1em 1.4em; -} - -ul#rootDirStaticList { - margin-right: auto; - margin-left: auto; - text-align: left; -} - -ul#rootDirStaticList li { - padding: 4px 5px 4px 5px; - margin: 2px; - list-style: none outside none; - cursor: pointer; - background: url('../css/lib/images/ui-bg_highlight-soft_75_efefef_1x100.png') repeat-x scroll 50% 50% #EFEFEF; -} - -ul#rootDirStaticList li label { - margin-top: 5px; - margin-bottom: 5px; -} - -ul#rootDirStaticList li input[type="checkbox"] { - vertical-align: -2px; -} - -/* ======================================================================= -home_trendingShows.tmpl -========================================================================== */ - -.traktShowTitleIcons { - float: right; - padding-right: 4px; - padding-bottom: 4px; -} - -.traktContainer p { - padding-top: 2px; -} - -.traktContainer p img { - position: relative; - top: -2px; -} - -.traktContainer p, .traktContainer i { - white-space: nowrap; - font-size: 12px; - overflow: hidden; -/* text-shadow: 1px 1px 0px #000;*/ - padding-left: 4px; - margin: 0; -} - -.traktContainer { - margin: 12px; - width: 188px; - background-color: #DFDACF; - border: 1px solid #111; - border-radius: 6px; -} - -.trakt-image { - overflow: hidden; - height: 273px; - width: 186px; - border-top-left-radius: 5px; - border-top-right-radius: 5px; - border-bottom: 1px solid #111; -} - - -/* ======================================================================= -home_postprocess.tmpl -========================================================================== */ - -#postProcess { - width: 800px; - padding-top: 10px; - margin-right: auto; - margin-left: auto; -} - - -/* ======================================================================= -displayShow.tmpl -========================================================================== */ - -#posterCol { - float: left; - margin-right: 10px; - margin-bottom: 20px; -} - -#showCol { - overflow: hidden; - margin-bottom: 20px; -} - -.navShow { - display: inline; - cursor: pointer; -} - -#prevShow, -#nextShow, -#topcontrol { - -webkit-filter: grayscale(100%); - filter: grayscale(100%); - filter: gray; - filter: url("data:image/svg+xml;utf8,<svg version='1.1' xmlns='http://www.w3.org/2000/svg' height='0'><filter id='greyscale'><feColorMatrix type='matrix' values='0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0' /></filter></svg>#greyscale"); -} - -h1.title { - padding-bottom: 12px; - margin-bottom: 15px; - line-height: 30px; - text-align: left; - text-rendering: optimizelegibility; - border-bottom: 1px solid #888; -} - -.displayspecials { - position: relative; - top: -24px; -} - -#showinfo { - cursor: default; -} - -#showinfo { - display: inline-block; - position: relative; - top: -3px; -} - -span.imdbstars { - display: inline-block; - vertical-align: top; - cursor: help; - margin-top: 4px; -} - -span.imdbstars, span.imdbstars > * { - height: 12px; - background: url(../images/rating.png) 0 -12px repeat-x; - width: 120px; - display: inline-block; - vertical-align: top; -} - -span.imdbstars > * { - background-position: 0 0; - max-width:120px; -} - -ul.tags { - list-style-type: none; - position: relative; - top: -5px; - margin-left: -40px; -} - -ul.tags li { - margin-right: 4px; - margin-bottom: 5px; - padding: 3px 4px 3px 25px; - background: url(../images/tag.png) no-repeat scroll 5px 4px #555; - border-radius: 3px; - border: 1px solid #111; - color: #FFF; - font: 14px/18px "Open Sans", "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif; - text-shadow: 0px 1px rgba(0, 0, 0, 0.8); - float: left; -} - -ul.tags li a{ - color: #FFF; -} - -.tvshowImg { - border: 1px solid #ccc; - border-radius: 5px; - height: 311px; - width: auto; - float: left; -} - -#summary { - padding: 10px; - background-color: #efefef; - border: 1px solid #dfdede; - width: 100%; - height: 250px; - overflow: auto; - cursor: default; -} - -.summaryTable { - max-width: 70%; - overflow: hidden; -} - -#checkboxControls { - padding-top: 5px; -} - -#checkboxControls span { - padding: 5px; - font-size: 13px; - font-weight: bold; - border-radius: 5px; -} - -#checkboxControls label { - white-space: nowrap; - display: inline-block; -} - -#checkboxControls input[type="checkbox"] { - vertical-align: -2px; -} - -.unaired { - background-color: #f5f1e4; -} -.skipped { - background-color: #bedeed; -} -.good { - background-color: #c3e3c8; -} -.qual { - background-color: #ffda8a; -} -.wanted { - background-color: #ffb0b0; -} -.snatched { - background-color: #ebc1ea; -} - -span.unaired { - color: #584b20; - border: 1px solid #584b20; -} -span.skipped { - color: #1d5068; - border: 1px solid #1d5068; -} -span.good { - color: #295730; - border: 1px solid #295730; -} -span.qual { - color: #765100; - border: 1px solid #765100; -} -span.wanted { - color: #890000; - border: 1px solid #890000; -} -span.snatched { - color: #652164; - border: 1px solid #652164; -} - -span.unaired b, -span.skipped b, -span.good b, -span.qual b, -span.wanted b, -span.snatched b { - color: #000000; - font-weight: 800; -} - -.plotInfo { - cursor: help; - float: right; - position: relative; - top: 2px; -} - -.plotInfoNone { - cursor: help; - float: right; - position: relative; - top: 2px; - opacity: 0.4; -} - -.displayShowTable { - table-layout: auto; - width: 100%; - border-collapse: collapse; - border-spacing: 0; - text-align: center; - border: none; - empty-cells: show; - color: #000 !important; -} - -.displayShowTable.display_show { - clear:both -} - -.displayShowTable th.row-seasonheader { - border: none !important; - background-color: #fff !important; - color: #000 !important; - padding-top: 15px !important; - text-align: left !important; -} - -.displayShowTable td.col-search { - text-align: center; -} - -.sickbeardTable { - table-layout: auto; - width: 100%; - border-collapse: collapse; - border-spacing: 0; - text-align: center; - border: none; - empty-cells: show; -} - -.sickbeardTable th{ - color: #fff; - text-align: center; - background-color: #333; - white-space: nowrap; -} - -.sickbeardTable th, -.sickbeardTable td { - border-top: 1px solid #fff; - border-left: 1px solid #fff; - padding: 4px; -} - -th.row-seasonheader { - border: none; - background-color: #fff; - color: #000; - padding-top: 15px; - text-align: left; -} - -tr.seasonheader { - padding-bottom: 5px; - padding-top: 10px; - text-align: left; - border: none; - color: #fff; -} - -th.col-checkbox, -td.col-checkbox { - width: 30px; - border-left: none; - text-align: center; -} - -th.col-checkbox input[type="checkbox"], -td.col-checkbox input[type="checkbox"] { - vertical-align: -2px; -} - -th.col-metadata, -td.col-metadata { - width: 28px; -} - -th.col-ep, -td.col-ep { - width: 50px; - white-space: nowrap; -} - -th.col-airdate, -td.col-airdate { - width: 86px; - white-space: nowrap; -} - -th.col-name, -td.col-name { - min-width: 100px; -} - -td.col-name { - text-align: left; -} - -th.col-subtitles, -td.col-subtitles { - width: 150px; - text-align: center; -} - -th.col-status, -td.col-status { - width: 210px; - text-align: center; -} - -th.col-legend, -td.col-legend { - width: 80px; -} - -th.col-search, -td.col-search { - width: 46px; -} - -.showLegend { - padding-right: 6px; - padding-bottom: 1px; - width: 150px; -} - -.input-scene { - height: 20px; - line-height: 1.5; - border-radius: 3px; -} - -#editShow { - width: 700px; - padding-top: 10px; - margin-right: auto; - margin-left: auto; -} - -/* ======================================================================= -comingEpisodes.tmpl -========================================================================== */ - -.sort_data { - display: none; -} - -.key { - margin-bottom: 20px; -} - -.listing-key { - padding: 5px; - font-size: 13px; - font-weight: bold; - border-radius: 5px; -} - -.listing-default { - background-color: #f5f1e4; -} - -.listing-current { - background-color: #dfd; -} - -.listing-overdue { - background-color: #fdd; -} - -.listing-toofar { - background-color: #bedeed; -} - -span.listing-default { - color: #826f30; - border: 1px solid #826f30; -} - -span.listing-current { - color: #295730; - border: 1px solid #295730; -} - -span.listing-overdue { - color: #890000; - border: 1px solid #890000; -} - -span.listing-toofar { - color: #1d5068; - border: 1px solid #1d5068; -} - -h2.day, h2.network { - margin: 10px 0; - font-size: 24px; - line-height: 36px; - font-weight: bold; - letter-spacing: 1px; - color: #FFF; - text-align: center; - text-shadow: -1px -1px 0px rgba(0, 0, 0, 0.3); - background-color: #333; -} - -.tvshowDiv { - display: block; - clear: both; - border: 1px solid #ccc; - margin: auto; - padding: 0px; - text-align: left; - width: 750px; - border-radius: 5px; - background: #fff; - cursor: default; - overflow: hidden; -} - -.tvshowDiv a:hover { - color: #428BCA; -} - -.tvshowDiv a, .tvshowDiv a:link, .tvshowDiv a:visited, .tvshowDiv a:hover { - text-decoration: none; - background: none; -} - -.tvshowTitle a { - color: #000000; - float: left; - line-height: 1.4em; - font-size: 1.4em; - text-shadow: -1px -1px 0 #FFF); -} - -.tvshowTitleIcons { - float: right; - padding: 3px 5px; -} - -.tvshowDiv td { - padding: 5px 10px; -} - -.tvshowDiv td.next_episode { - width: 100%; - height: 90%; - border-bottom: 1px solid #ccc; - vertical-align: top; - color: #000; -} - -.bannerThumb { - vertical-align: top; - height: auto; - width: 748px; - border-bottom: 1px solid #ccc; -} - -.posterThumb { - vertical-align: top; - height: auto; - width: 180px; - border-right: 1px solid #ccc; -} - -.ep_listing { - width: auto; - border: 1px solid #ccc; - margin-bottom: 10px; - padding: 10px; -} - -.ep_summary { - margin-left: 5px; - font-style: italic; -} - -.ep_summaryTrigger { - cursor: pointer; - vertical-align: middle; -} - -.ep_summaryTriggerNone { - opacity: 0.4; - vertical-align: middle; -} - -table.cal-odd { - background-color: #ddd; -} -table.cal-even { - background-color: #d2d2d2; -} -.calendarShow .text .airtime { - color:#000 -} -.calendarShow .text .episode-title { - color:#888 -} - -/* ======================================================================= -config*.tmpl -========================================================================== */ - -#config-content { - display: block; - width: 960px; - padding: 0 0 40px; - margin: 0 auto; - clear: both; - text-align: left; -} - -.component-group { - padding: 15px 15px 25px; - border-bottom: 1px dotted #ccc; - min-height: 200px; -} - -.component-item { - border-bottom: 1px dotted #666; - min-height: 200px; -} - -.component-group-desc{ - float: left; - width: 250px; -} - -.component-group-desc h3{ - margin-top: 5px; -} - -.component-group-desc p { - width: 90%; - margin: 10px 0; - color: #666; -} - -#config div.field-pair { - padding: 12px 0px; -} - -#config div.field-pair input { - float: left; - margin-right: 6px; -} - -#config .nocheck, #config div #customQuality, .metadataDiv { - padding-left: 20px; -} - -#config .metadataDiv { - display: none; -} - -.component-group-save { - float: right; - padding-top: 10px; -} - -select .selected { - font-weight: 700; -} - -.jumbo { - font-size: 15px !important; - line-height: 24px; -} - -.testNotification { - padding: 5px; - margin-bottom: 10px; - line-height: 20px; - border: 1px dotted #CCC; -} - -#providerOrderList { - width: 250px; - padding-left: 20px; - list-style-type: none; -} - -#provider_order_list, -#service_order_list { - width: 250px; - padding-left: 20px; - list-style-type: none; -} - -#provider_order_list li, -#service_order_list li { - padding: 5px; - margin: 5px 0; - font-size: 14px; -} - -#provider_order_list input, -#service_order_list input { - margin: 0px 2px; -} - -#config .tip_scale label span.component-title { - width: 85px !important; - font-size: 12px !important; - margin-top: 2px !important; -} - -#config .tip_scale label span.component-desc { - margin-left: 120px !important; - width: 220px !important; -} - -.infoTableHeader, -.infoTableCell { - padding: 5px; -} - -.infoTableSeperator { - border-top: 1px dotted #666666; -} - -[class^="icon16-"], [class*=" icon16-"] { - background-image: url("../images/glyphicons-config-black.png"); - background-position: -40px 0; - background-repeat: no-repeat; - display: inline-block; - height: 16px; - line-height: 16px; - vertical-align: text-top; - width: 16px; -} - -.icon16-github { - background-position: 0 0; -} -.icon16-mirc { - background-position: -20px 0; -} -.icon16-sb { - background-position: -40px 0; -} -.icon16-web { - background-position: -60px 0; -} -.icon16-win { - background-position: -80px 0; -} - -/* ======================================================================= -config_postProcessing.tmpl -========================================================================== */ - -#config div.example { - padding: 10px; background-color: #efefef; -} - -.Key { - width: 100%; - padding: 6px; - font-size: 13px; - background-color: #f4f4f4; - border: 1px solid #ccc; - border-collapse: collapse; - border-spacing: 0; -} - -.Key th, .tableHeader { - padding: 3px 9px; - margin: 0; - color: #fff; - text-align: center; - background: none repeat scroll 0 0 #666; -} - -.Key td { - padding: 1px 5px !important; -} - -.Key tr { - border-bottom: 1px solid #ccc; -} - -.Key tr.even { - background-color: #dfdede; -} - -.legend { - position: relative; - top: 2px; -} - -/* ======================================================================= -config_notifications.tmpl -========================================================================== */ - -div.metadata_options_wrapper { - float: left; - width: 190px; -} - -div.metadata_example_wrapper { - float: right; - width: 325px; -} - -div.metadata_options { - padding: 7px; - overflow: auto; - background: #f5f1e4; - border: 1px solid #ccc; -} - -div.metadata_options label:hover { - color: #fff; - background-color: #57442b; - cursor: pointer; -} - -div.metadata_options label { - display: block; - padding-left: 7px; - line-height: 20px; - color: #036; -} - -div.metadata_example { - padding: 8px; -} - -div.metadata_example label { - display: block; - line-height: 21px; - color: #000; - cursor: pointer; -} - -div.metadataDiv .disabled { - color: #ccc; -} - -.notifier-icon { - float: left; - margin: 6px 4px 0px 0px; -} - -.warning { - border-color: #F89406; - background: url("../images/warning16.png") no-repeat right 5px center #fff; -} - -/* ======================================================================= -manage*.tmpl -========================================================================== */ - -.manageTable th { - white-space: normal; - line-height: 24px; -} - -.manageTable td.tableright { - text-align: left; -} - -td.tableright { - text-align: center; -} - -.optionWrapper { - width: 450px; - margin-left: auto; - margin-right: auto; - padding: 6px 12px; -} - -.optionWrapper span.selectTitle { - float: left; - text-align: left; - vertical-align: middle; - width: 225px; - padding: 6px 0px; -} - -.optionWrapper div.selectChoices { - float: left; - width: 175px; - margin-left: 25px; -} - -.optionWrapper br { - clear: both; -} - -.manageCustom { - text-align: center; - padding: 6px; - margin-left: 25px; -} - -.separator { - font-size: 90%; - color: #333333; -} - -a.whitelink { - color: #fff; -} - - -/* ======================================================================= -Global -========================================================================== */ - -span.path { - padding: 3px 6px; - color: #8b0000; - background-color: #f5f1e4; -} - -.align-left { - text-align: left; -} - -.h2footer { - margin: -45px 0 8px; - line-height: 18px; -} - -span.quality { - font: 12px/13px "Open Sans", verdana, sans-serif; - background-image:-webkit-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25)); - background-image:-moz-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25)); - background-image:-o-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25)); - background-image:linear-gradient(to bottom, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 50%,rgba(0,0,0,0.25)); - -webkit-box-shadow:inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15); - box-shadow:inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15); - text-shadow: 0px 1px rgba(0, 0, 0, 0.8); - color: #FFFFFF; - display: inline-block; - padding: 2px 4px; - text-align: center; - vertical-align: baseline; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -span.Custom { - background-color: #621993; -} - -span.HD { - background-color: #2672B6; -} - -span.HDTV { - background-color: #2672B6; -} - -span.HD720p { - background-color: #5b990d; -} - -span.HD1080p { - background-color: #2672B6; -} - -span.RawHD { - background-color: #cd7300; -} - -span.RawHDTV { - background-color: #cd7300; -} - -span.SD { - background-color: #BE2625; -} - -span.SDTV { - background-color: #BE2625; -} - -span.Any { - background-color: #666; -} - -span.Unknown { - background-color: #999; -} - -span.Proper { - background-color: #3F7F00; -} - -span.false { - color: #993333; - /* red */ -} - -span.true { - color: #669966; - /* green */ -} - -option.flag { - padding-left: 35px; - background-repeat: no-repeat; - background-position: 10px 50%; -} - -/* Anime section for editShow */ -.bwlWrapper { - height:auto; - margin: 0 auto; -} - -#Anime { - clear: both; - overflow-x: hidden; - overflow-y: hidden; - font-size: 14px; -} - -#Anime div.component-group-desc { - float: left; - width: 165px; -} - -#Anime div.component-group-desc p { - margin-bottom: 0.4em; - margin-left: 0; - margin-right: 0; - margin-top: 0.4em; - width: 95%; -} - -div.blackwhitelist{ - float:left; - text-align: center; -} -div.blackwhitelist input { - margin: 5px 0px; -} -div.blackwhitelist.pool select{ - width: 230px; -} -div.blackwhitelist.white select, div.blackwhitelist.black select { - width: 150px; -} -div.blackwhitelist span { - display: block; - text-align: center; -} -div.blackwhitelist.anidb, div.blackwhitelist.manual { - margin: 7px 0px; -} - - -/* ======================================================================= -bootstrap Overrides -========================================================================== */ - -body { - padding-top: 60px; - overflow-y: scroll; - font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; - color: #000; -} - -html * { - outline: 0 !important; -} - -input[type="radio"] { - margin: 2px 0px 0px; - line-height: normal; -} - -input, textarea, select, .uneditable-input { - width: auto; - color: #000; -} - -.container-fluid { - margin-left: 10px; - margin-right: 10px; -} - -.navbar-brand { - padding: 0px; -} - -/* navbar styling */ -.navbar-default { - background-color: #333333; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#333333'); - background: -webkit-gradient(linear, left top, left bottom, from(#555), to(#333)); - background: -moz-linear-gradient(top, #555, #333); - border-color: #3e3f3a; -} - -.navbar-default .navbar-brand { - color: #ffffff; -} - -.navbar-default .navbar-brand:hover, -.navbar-default .navbar-brand:focus { - color: #ffffff; - background-color: transparent; -} - -.navbar-default .navbar-text { - color: #dddddd; -} - -.navbar-default .navbar-nav > li > a { - color: #dddddd; -} - -.navbar-default .navbar-nav > li > a:hover, -.navbar-default .navbar-nav > li > a:focus { - color: #ffffff; - background-color: transparent; -} - -.navbar-default .navbar-nav > .active > a, -.navbar-default .navbar-nav > .active > a:hover, -.navbar-default .navbar-nav > .active > a:focus { - color: #ffffff; - background-color: #333333; -} - -.navbar-default .navbar-nav > .disabled > a, -.navbar-default .navbar-nav > .disabled > a:hover, -.navbar-default .navbar-nav > .disabled > a:focus { - color: #cccccc; - background-color: transparent; -} - -.navbar-default .navbar-toggle { - border-color: #cccccc; -} - -.navbar-default .navbar-toggle:hover, -.navbar-default .navbar-toggle:focus { - background-color: #333333; -} - -.navbar-default .navbar-toggle .icon-bar { - background-color: #333333; -} - -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #3e3f3a; -} - -.navbar-default .navbar-nav > .open > a, -.navbar-default .navbar-nav > .open > a:hover, -.navbar-default .navbar-nav > .open > a:focus { - background-color: #333333; - color: #ffffff; -} - -@media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #dddddd; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #ffffff; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #ffffff; - background-color: #333333; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #cccccc; - background-color: transparent; - } -} - -.navbar-default .navbar-link { - color: #dddddd; -} - -.navbar-default .navbar-link:hover { - color: #ffffff; -} - -.navbar-default .btn-link { - color: #98978b; -} - -.navbar-default .btn-link:hover, -.navbar-default .btn-link:focus { - color: #dddddd; -} - -.navbar-default .btn-link[disabled]:hover, -fieldset[disabled] .navbar-default .btn-link:hover, -.navbar-default .btn-link[disabled]:focus, -fieldset[disabled] .navbar-default .btn-link:focus { - color: #cccccc; -} - -.dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus { - color: #fff; - text-decoration: none; - background-color: #333; -} - -.dropdown-menu > li > a { - padding: 4px 36px 4px 20px; -} - -.dropdown-menu { - background-color: #F5F1E4; - border: 1px solid rgba(0, 0, 0, 0.15); - box-shadow: 0px 6px 12px rgba(0, 0, 0, 0.176); -} - -.form-control { - color: #000000; -} - -.form-control-inline { - min-width: 0; - width: auto; - display: inline; -} - -.btn { - display: inline-block; - *display: inline; - padding: 4px 10px 4px; - margin-bottom: 0; - *margin-left: .3em; - font-size: 12px; - line-height: 16px; - *line-height: 20px; - color: #333333; - text-align: center; - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); - vertical-align: middle; - cursor: pointer; - background-color: #f5f5f5; - *background-color: #e6e6e6; - background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); - background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); - background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); - background-image: linear-gradient(top, #ffffff, #e6e6e6); - background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); - background-repeat: repeat-x; - border: 1px solid #cccccc; - *border: 0; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - border-color: #e6e6e6 #e6e6e6 #bfbfbf; - border-bottom-color: #b3b3b3; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); - *zoom: 1; - -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.btn:hover, -.btn:active, -.btn.active, -.btn.disabled, -.btn[disabled] { - background-color: #e6e6e6; - *background-color: #d9d9d9; -} - -.btn:active, -.btn.active { - background-color: #cccccc \9; -} - -.btn:first-child { - *margin-left: 0; -} - -.btn:hover { - color: #333333; - text-decoration: none; - background-color: #e6e6e6; - *background-color: #d9d9d9; - background-position: 0 -15px; - -webkit-transition: background-position 0.1s linear; - -moz-transition: background-position 0.1s linear; - -ms-transition: background-position 0.1s linear; - -o-transition: background-position 0.1s linear; - transition: background-position 0.1s linear; -} - -.btn:focus { - outline: thin dotted #333; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} - -.btn.active, -.btn:active { - background-color: #e6e6e6; - background-color: #d9d9d9 \9; - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); - box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); -} - -.btn.disabled, -.btn[disabled] { - cursor: default; - background-color: #e6e6e6; - background-image: none; - opacity: 0.65; - filter: alpha(opacity=65); - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; -} - -.btn-large { - padding: 9px 14px; - font-size: 15px; - line-height: normal; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; -} - -.btn-large [class^="icon-"] { - margin-top: 1px; -} - -.btn-small { - padding: 5px 9px; - font-size: 11px; - line-height: 16px; -} - -.btn-small [class^="icon-"] { - margin-top: -1px; -} - -.btn-mini { - padding: 2px 6px; - font-size: 11px; - line-height: 14px; -} - -.btn-primary, -.btn-primary:hover, -.btn-warning, -.btn-warning:hover, -.btn-danger, -.btn-danger:hover, -.btn-success, -.btn-success:hover, -.btn-info, -.btn-info:hover, -.btn-inverse, -.btn-inverse:hover { - color: #ffffff; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} - -.btn-primary.active, -.btn-warning.active, -.btn-danger.active, -.btn-success.active, -.btn-info.active, -.btn-inverse.active { - color: rgba(255, 255, 255, 0.75); -} - -.btn-primary { - background-color: #0074cc; - *background-color: #0055cc; - background-image: -ms-linear-gradient(top, #0088cc, #0055cc); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0055cc)); - background-image: -webkit-linear-gradient(top, #0088cc, #0055cc); - background-image: -o-linear-gradient(top, #0088cc, #0055cc); - background-image: -moz-linear-gradient(top, #0088cc, #0055cc); - background-image: linear-gradient(top, #0088cc, #0055cc); - background-repeat: repeat-x; - border-color: #0055cc #0055cc #003580; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#0088cc', endColorstr='#0055cc', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); -} - -.btn-primary:hover, -.btn-primary:active, -.btn-primary.active, -.btn-primary.disabled, -.btn-primary[disabled] { - background-color: #0055cc; - *background-color: #004ab3; -} - -.btn-primary:active, -.btn-primary.active { - background-color: #004099 \9; -} - -.btn-warning { - background-color: #faa732; - *background-color: #f89406; - background-image: -ms-linear-gradient(top, #fbb450, #f89406); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); - background-image: -webkit-linear-gradient(top, #fbb450, #f89406); - background-image: -o-linear-gradient(top, #fbb450, #f89406); - background-image: -moz-linear-gradient(top, #fbb450, #f89406); - background-image: linear-gradient(top, #fbb450, #f89406); - background-repeat: repeat-x; - border-color: #f89406 #f89406 #ad6704; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); -} - -.btn-warning:hover, -.btn-warning:active, -.btn-warning.active, -.btn-warning.disabled, -.btn-warning[disabled] { - background-color: #f89406; - *background-color: #df8505; -} - -.btn-warning:active, -.btn-warning.active { - background-color: #c67605 \9; -} - -.btn-danger { - background-color: #da4f49; - *background-color: #bd362f; - background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); - background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); - background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); - background-image: linear-gradient(top, #ee5f5b, #bd362f); - background-repeat: repeat-x; - border-color: #bd362f #bd362f #802420; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); -} - -.btn-danger:hover, -.btn-danger:active, -.btn-danger.active, -.btn-danger.disabled, -.btn-danger[disabled] { - background-color: #bd362f; - *background-color: #a9302a; -} - -.btn-danger:active, -.btn-danger.active { - background-color: #942a25 \9; -} - -.btn-success { - background-color: #5bb75b; - *background-color: #51a351; - background-image: -ms-linear-gradient(top, #62c462, #51a351); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); - background-image: -webkit-linear-gradient(top, #62c462, #51a351); - background-image: -o-linear-gradient(top, #62c462, #51a351); - background-image: -moz-linear-gradient(top, #62c462, #51a351); - background-image: linear-gradient(top, #62c462, #51a351); - background-repeat: repeat-x; - border-color: #51a351 #51a351 #387038; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); -} - -.btn-success:hover, -.btn-success:active, -.btn-success.active, -.btn-success.disabled, -.btn-success[disabled] { - background-color: #51a351; - *background-color: #499249; -} - -.btn-success:active, -.btn-success.active { - background-color: #408140 \9; -} - -.btn-info { - background-color: #49afcd; - *background-color: #2f96b4; - background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); - background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); - background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); - background-image: linear-gradient(top, #5bc0de, #2f96b4); - background-repeat: repeat-x; - border-color: #2f96b4 #2f96b4 #1f6377; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); -} - -.btn-info:hover, -.btn-info:active, -.btn-info.active, -.btn-info.disabled, -.btn-info[disabled] { - background-color: #2f96b4; - *background-color: #2a85a0; -} - -.btn-info:active, -.btn-info.active { - background-color: #24748c \9; -} - -.btn-inverse { - background-color: #414141; - *background-color: #222222; - background-image: -ms-linear-gradient(top, #555555, #222222); - background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222)); - background-image: -webkit-linear-gradient(top, #555555, #222222); - background-image: -o-linear-gradient(top, #555555, #222222); - background-image: -moz-linear-gradient(top, #555555, #222222); - background-image: linear-gradient(top, #555555, #222222); - background-repeat: repeat-x; - border-color: #222222 #222222 #000000; - border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); - filter: progid:dximagetransform.microsoft.gradient(startColorstr='#555555', endColorstr='#222222', GradientType=0); - filter: progid:dximagetransform.microsoft.gradient(enabled=false); -} - -.btn-inverse:hover, -.btn-inverse:active, -.btn-inverse.active, -.btn-inverse.disabled, -.btn-inverse[disabled] { - background-color: #222222; - *background-color: #151515; -} - -.btn-inverse:active, -.btn-inverse.active { - background-color: #080808 \9; -} - -.btn-xs { - padding: 1px 5px; - font-size: 12px; - line-height: 1.5; - border-radius: 3px; -} - -@media(min-width:768px){ - .navbar .nav > li > .dropdown-menu:after { - position: absolute; - top: -6px; - right: 12px; - display: inline-block; - border-right: 6px solid transparent; - border-bottom: 6px solid #F5F1E4; - border-left: 6px solid transparent; - content: ""; - } -} - -label { - font-weight: normal; -} - -pre { - color: #000; - background-color: #F5F5F5; - border-color: #ccc; -} - -.alert { - padding: 10px; - text-align: center; -} - -/* ======================================================================= -input sizing (for config pages) -========================================================================== */ - -#config select { - min-width: 0; - width: auto; - display: inline; - margin-top: -4px; -} - -.btn-inline { - margin-top: -3px; -} - -.input75 { - width: 75px; - margin-top: -4px; -} - -.input100 { - width: 100px; - margin-top: -4px; -} - -.input150 { - width: 150px; - margin-top: -4px; -} - -.input200 { - width: 200px; - margin-top: -4px; -} - -.input250 { - width: 250px; - margin-top: -4px; -} - -.input300 { - width: 300px; - margin-top: -4px; -} - -.input350 { - width: 350px; - margin-top: -4px; -} - -/* ======================================================================= -browser.css -========================================================================== */ - -#fileBrowserDialog { - overflow-y: auto; -} - -#fileBrowserDialog ul { - padding: 0; - margin: 0; -} - -#fileBrowserDialog ul li { - margin: 2px 0; - list-style-type: none; - cursor: pointer; -} - -#fileBrowserDialog ul li a { - display: block; - padding: 4px 0; -} - -#fileBrowserDialog ul li a:hover { - color: #00f; - background: none; -} - -#fileBrowserDialog ul li a span.ui-icon { - float: left; - margin: 0 4px; -} - -#fileBrowserDialog h2 { - font-size: 20px; -} - -.ui-autocomplete { - max-height: 180px; - overflow-x: hidden; - overflow-y: auto; -} - -/* IE6 hack since it doesn't support max-height */ -* html .ui-autocomplete { - height: 180px; - padding-right: 20px; -} - -.ui-menu .ui-menu-item { - background-color: #eee; -} - -.ui-menu .ui-menu-item-alternate { - background-color: #fff; -} - -.ui-autocomplete .ui-menu-item .ui-state-focus { - color: #fff; - background: none; - background-color: #0a246a; -} - -/* restore 1.8.x resize handle on dialog button pane */ -.ui-dialog .ui-resizable-se { - width: 14px; - height: 14px; - right: 3px; - bottom: 3px; - background-position: -80px -224px; -} - - -/* ======================================================================= -formWizard.css -========================================================================== */ - -fieldset.sectionwrap { - width: 800px; - padding: 5px; - text-align: left; - border-width: 0; -} - -legend.legendStep { - color: #57442b; - margin-bottom: 0px; -} - -div.stepsguide { - margin-bottom: 15px; - overflow: hidden; - text-align: left; - cursor: pointer; -} - -div.stepsguide .step { - float: left; - width: 33%; - font: bold 24px Arial; -} - -div.stepsguide .step p { - margin: 12px 0; - border-bottom: 4px solid #57442b; -} - -div.stepsguide .disabledstep { - color: #c4c4c4; -} - -div.stepsguide .disabledstep p { - border-bottom: 4px solid #8a775e; -} - -div.stepsguide .step .smalltext { - font-size: 13px; - font-weight: normal; -} - -div.formpaginate { - width: 800px; - margin-top: 1em; - overflow: auto; - font-weight: bold; - text-align: center; -} - -div.formpaginate .prev, div.formpaginate .next { - padding: 3px 6px; - color: #fff; - cursor: hand; - cursor: pointer; - background: #57442b; - -webkit-border-radius: 6px; - -moz-border-radius: 6px; - border-radius: 6px; -} - -.stepDiv { - padding: 15px 0; -} - -/* step 3 related */ -#customQuality { - display: block; - padding: 10px 0; - overflow: hidden; - clear: both; -} - -#customQualityWrapper div.component-group-desc { - float: left; - width: 172px; - margin-right: 10px; -} - -#customQualityWrapper div.component-group-desc p { - width: 85%; - margin: .8em 0; - font-size: 1.13em; - color: #666; -} - -/* ======================================================================= -tablesorter.css -========================================================================== */ - -.tablesorter { - width: 100%; - margin-right: auto; - margin-left: auto; - color: #000; - text-align: left; - background-color: #ddd; - border-spacing: 0; -} - -.tablesorter th, -.tablesorter td { - padding: 4px; - border-top: #fff 1px solid; - border-left: #fff 1px solid; - vertical-align: middle; -} - -/* remove extra border from left edge */ -.tablesorter th:first-child, -.tablesorter td:first-child { - border-left: none; -} - -.tablesorter th { - color: #fff; - text-align: center; - text-shadow: -1px -1px 0 rgba(0,0,0,0.3); - background-color: #333; - border-collapse: collapse; - font-weight: normal; -} - -.tablesorter .tablesorter-header { - padding: 4px 18px 4px 18px; - cursor: pointer; - background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAAP///////yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==); - background-position: center right; - background-repeat: no-repeat; - /* background-image: url(../images/tablesorter/bg.gif); */ -} - -.tablesorter thead .tablesorter-headerDesc { - background-color: #555; - background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7); - /* background-image: url(../images/tablesorter/asc.gif); */ -} - -.tablesorter thead .tablesorter-headerAsc { - background-color: #555; - background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7); - /* background-image: url(../images/tablesorter/desc.gif); */ -} - -.tablesorter thead .sorter-false { - background-image: none; - padding: 4px; - cursor: default; -} - -thead.tablesorter-stickyHeader { - border-top: 2px solid #fff; - border-bottom: 2px solid #fff; -} - -/* Zebra Widget - row alternating colors */ -.tablesorter tr.odd, .sickbeardTable tr.odd { - background-color: #f5f1e4; -} - -.tablesorter tr.even, .sickbeardTable tr.even { - background-color: #dfdacf; -} - -/* filter widget */ -.tablesorter .filtered { - display: none; -} -.tablesorter input.tablesorter-filter { - width: 98%; - height: auto; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} - -.tablesorter tr.tablesorter-filter-row, -.tablesorter tr.tablesorter-filter-row td { - text-align: center; - background: #eee; - border-bottom: 1px solid #ddd; -} - -/* optional disabled input styling */ -.tablesorter input.tablesorter-filter-row .disabled { - display: none; -} - -/* hidden filter row */ -.tablesorter-filter-row.hideme td { - /*** *********************************************** ***/ - /*** change this padding to modify the thickness ***/ - /*** of the closed filter row (height = padding x 2) ***/ - padding: 2px; - /*** *********************************************** ***/ - margin: 0; - line-height: 0; - cursor: pointer; -} -.tablesorter-filter-row.hideme * { - height: 1px; - min-height: 0; - border: 0; - padding: 0; - margin: 0; - /* don't use visibility: hidden because it disables tabbing */ - opacity: 0; - filter: alpha(opacity=0); -} - - -.tablesorter-header-inner { - padding: 0 2px; - text-align: center; -} - -.tablesorter tfoot tr { - color: #fff; - text-align: center; - text-shadow: -1px -1px 0 rgba(0,0,0,0.3); - background-color: #333; - border-collapse: collapse; -} - -.tablesorter tfoot a { - color:#fff; - text-decoration: none; -} - -/* ======================================================================= -token-input.css -========================================================================== */ - -ul.token-input-list { - overflow: hidden; - height: auto !important; - height: 1%; - width: 273px; - border: 1px solid #ccc; - cursor: text; - font-size: 10px; - font-family: Verdana; - z-index: 999; - margin: 0; - padding: 0 0 1px 0; - background-color: #fff; - list-style-type: none; -/* clear: left; */ - border-top-left-radius: 3px; - border-top-right-radius: 3px; - border-bottom-left-radius: 3px; - border-bottom-right-radius: 3px; -} - -ul.token-input-list li { - list-style-type: none; -} - -ul.token-input-list li input { - border: 0; - padding: 3px 4px; - background-color: white; -/* -webkit-appearance: caret; */ -} - -li.token-input-token { - overflow: hidden; - height: auto !important; - height: 1%; - margin: 3px; - padding: 3px 5px 0 5px; - background-color: #d0efa0; - color: #000; - font-weight: bold; - cursor: default; - display: block; -} - -li.token-input-token img { - padding-top: 7px; - padding-right: 4px; - float: left; -} - -li.token-input-token input { - padding-top: 2px !important; - padding-right: 4px !important; - float: left; -} - -li.token-input-token p { - float: left; - padding: 0; - margin: 0; - line-height: 2.0 !important; -} - -li.token-input-token span { - float: right; - color: #777; - cursor: pointer; -} - -li.token-input-selected-token { - background-color: #08844e; - color: #fff; -} - -li.token-input-selected-token span { - color: #bbb; -} - -li.token-input-input-token input { - margin: 3px 3px 3px 3px !important; -} +/* ======================================================================= +token-input.css +========================================================================== */ div.token-input-dropdown { background-color: #fff; @@ -2936,140 +163,6 @@ div.token-input-dropdown { border-bottom-color: #ccc; } -div.token-input-dropdown p { - margin: 0; - padding: 3px; - font-weight: bold; - color: #777; -} - -div.token-input-dropdown ul { - margin: 0; - padding: 0; -} - -div.token-input-dropdown ul li { - background-color: #fff; - padding: 3px; - list-style-type: none; -} - -div.token-input-dropdown ul li.token-input-dropdown-item { - background-color: #fafafa; -} - -div.token-input-dropdown ul li.token-input-dropdown-item2 { - background-color: #fff; -} - -div.token-input-dropdown ul li em { - font-weight: bold; - font-style: normal; -} - -div.token-input-dropdown ul li.token-input-selected-dropdown-item { - background-color: #6196c2; -} - -span.token-input-delete-token { - margin: 0 1px; -} - -/* ======================================================================= -jquery.confirm.css -========================================================================== */ - -#confirmOverlay{ - width: 100%; - height: 100%; - position: fixed; - top: 0; - left: 0; - background: url('../images/bg.gif'); - background: -moz-linear-gradient(rgba(0,0,0,0.5), rgba(0,0,0,0.5)) repeat-x rgba(0,0,0,0.5); - background:-webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,0.5))) repeat-x rgba(0,0,0,0.5); - z-index: 100000; -} - -#confirmBox{ - background: #F5F1E4; - width: 460px; - position: fixed; - left: 50%; - top: 50%; - margin: -130px 0 0 -230px; - border: 1px solid #111; - box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.175); -} - -#confirmBox h1, -#confirmBox p{ - padding: 6px 10px; -} - -#confirmBox h1 { - background-color: #333; - border-bottom: 1px solid #111; - color: #fff; - margin: 0; - font-size: 22px; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.75); -} - -#confirmBox p { - padding-top: 20px; - color: #000; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.75); -} - -#confirmButtons { - padding: 15px 0; - text-align: center; -} - -#confirmBox .button { - margin-right: 15px; - padding: 2px 20px; - text-decoration: none; - display: inline-block; - color: #fff; - text-align:center; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.75); - background-clip: padding-box; - border: 1px solid #111; - border-radius: 3px; - cursor: pointer; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - background-image: -webkit-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25)); - background-image: -moz-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25)); - background-image: -o-linear-gradient(top, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25)); - background-image: linear-gradient(to bottom, rgba(255,255,255,0.08),rgba(255,255,255,0) 50%,rgba(0,0,0,0) 51%,rgba(0,0,0,0.25)); - -webkit-box-shadow: inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15); - box-shadow: inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15); -} - -#confirmBox .button:last-child { - margin-right:0; -} - -#confirmBox .green { - background-color: #3F7636; -} - -#confirmBox .green:hover { - background-color: #48873E; -} - -#confirmBox .red { - background-color: #8D2D2B; -} - -#confirmBox .red:hover { - background-color: #A13331; -} - /* ======================================================================= bootstarp modal ========================================================================== */ diff --git a/gui/slick/css/print.css b/gui/slick/css/print.css new file mode 100644 index 0000000000000000000000000000000000000000..680e5faf08ffe4a780d66543c84f18ff1597e75e --- /dev/null +++ b/gui/slick/css/print.css @@ -0,0 +1,16 @@ +@media print { + /* Remove the top padding because we don't print the top bar */ + body { + padding-top: 0; + } + + /* Hide URLs */ + a[href]:after { + content: none !important; + } + + #content { + margin-left: 0; + margin-right: 0; + } +} diff --git a/gui/slick/css/style.css b/gui/slick/css/style.css index 0eaa72bcefe36486b327026f958c7ef265737b5a..00ade317f9583a7cc70ea6938c8e8c43a5cd6920 100644 --- a/gui/slick/css/style.css +++ b/gui/slick/css/style.css @@ -6,11 +6,11 @@ fonts @font-face { font-family: 'Open Sans'; - src:url('fonts/OpenSans-Regular-webfont.eot'); - src:url('fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Regular-webfont.woff') format('woff'), - url('fonts/OpenSans-Regular-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Regular-webfont.svg#OpenSansRegular') format('svg'); + src: url('fonts/OpenSans-Regular-webfont.eot'); + src: url('fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/OpenSans-Regular-webfont.woff') format('woff'), + url('fonts/OpenSans-Regular-webfont.ttf') format('truetype'), + url('fonts/OpenSans-Regular-webfont.svg#OpenSansRegular') format('svg'); font-weight: normal; font-weight: 400; font-style: normal; @@ -19,11 +19,11 @@ fonts /* Italic */ @font-face { font-family: 'Open Sans'; - src:url('fonts/OpenSans-Italic-webfont.eot'); - src:url('fonts/OpenSans-Italic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Italic-webfont.woff') format('woff'), - url('fonts/OpenSans-Italic-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Italic-webfont.svg#OpenSansItalic') format('svg'); + src: url('fonts/OpenSans-Italic-webfont.eot'); + src: url('fonts/OpenSans-Italic-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/OpenSans-Italic-webfont.woff') format('woff'), + url('fonts/OpenSans-Italic-webfont.ttf') format('truetype'), + url('fonts/OpenSans-Italic-webfont.svg#OpenSansItalic') format('svg'); font-weight: normal; font-weight: 400; font-style: italic; @@ -32,11 +32,11 @@ fonts /* Light */ @font-face { font-family: 'Open Sans'; - src:url('fonts/OpenSans-Light-webfont.eot'); - src:url('fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Light-webfont.woff') format('woff'), - url('fonts/OpenSans-Light-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Light-webfont.svg#OpenSansLight') format('svg'); + src: url('fonts/OpenSans-Light-webfont.eot'); + src: url('fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/OpenSans-Light-webfont.woff') format('woff'), + url('fonts/OpenSans-Light-webfont.ttf') format('truetype'), + url('fonts/OpenSans-Light-webfont.svg#OpenSansLight') format('svg'); font-weight: 200; font-style: normal; } @@ -44,11 +44,11 @@ fonts /* Light Italic */ @font-face { font-family: 'Open Sans'; - src:url('fonts/OpenSans-LightItalic-webfont.eot'); - src:url('fonts/OpenSans-LightItalic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-LightItalic-webfont.woff') format('woff'), - url('fonts/OpenSans-LightItalic-webfont.ttf') format('truetype'), - url('fonts/OpenSans-LightItalic-webfont.svg#OpenSansLightItalic') format('svg'); + src: url('fonts/OpenSans-LightItalic-webfont.eot'); + src: url('fonts/OpenSans-LightItalic-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/OpenSans-LightItalic-webfont.woff') format('woff'), + url('fonts/OpenSans-LightItalic-webfont.ttf') format('truetype'), + url('fonts/OpenSans-LightItalic-webfont.svg#OpenSansLightItalic') format('svg'); font-weight: 200; font-style: italic; } @@ -56,11 +56,11 @@ fonts /* Semibold */ @font-face { font-family: 'Open Sans'; - src:url('fonts/OpenSans-Semibold-webfont.eot'); - src:url('fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Semibold-webfont.woff') format('woff'), - url('fonts/OpenSans-Semibold-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg'); + src: url('fonts/OpenSans-Semibold-webfont.eot'); + src: url('fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/OpenSans-Semibold-webfont.woff') format('woff'), + url('fonts/OpenSans-Semibold-webfont.ttf') format('truetype'), + url('fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg'); font-weight: 600; font-style: normal; } @@ -68,11 +68,11 @@ fonts /* Semibold Italic */ @font-face { font-family: 'Open Sans'; - src:url('fonts/OpenSans-SemiboldItalic-webfont.eot'); - src:url('fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'), - url('fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'), - url('fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') format('svg'); + src: url('fonts/OpenSans-SemiboldItalic-webfont.eot'); + src: url('fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'), + url('fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'), + url('fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') format('svg'); font-weight: 600; font-style: italic; } @@ -80,11 +80,11 @@ fonts /* Bold */ @font-face { font-family: 'Open Sans'; - src:url('fonts/OpenSans-Semibold-webfont.eot'); - src:url('fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Semibold-webfont.woff') format('woff'), - url('fonts/OpenSans-Semibold-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg'); + src: url('fonts/OpenSans-Semibold-webfont.eot'); + src: url('fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/OpenSans-Semibold-webfont.woff') format('woff'), + url('fonts/OpenSans-Semibold-webfont.ttf') format('truetype'), + url('fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg'); font-weight: bold; font-weight: 700; font-style: normal; @@ -93,11 +93,11 @@ fonts /* Bold Italic */ @font-face { font-family: 'Open Sans'; - src:url('fonts/OpenSans-SemiboldItalic-webfont.eot'); - src:url('fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'), - url('fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'), - url('fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') format('svg'); + src: url('fonts/OpenSans-SemiboldItalic-webfont.eot'); + src: url('fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'), + url('fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'), + url('fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') format('svg'); font-weight: bold; font-weight: 700; font-style: italic; @@ -106,11 +106,11 @@ fonts /* Extra Bold */ @font-face { font-family: 'Open Sans'; - src:url('fonts/OpenSans-Bold-webfont.eot'); - src:url('fonts/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-Bold-webfont.woff') format('woff'), - url('fonts/OpenSans-Bold-webfont.ttf') format('truetype'), - url('fonts/OpenSans-Bold-webfont.svg#OpenSansBold') format('svg'); + src: url('fonts/OpenSans-Bold-webfont.eot'); + src: url('fonts/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/OpenSans-Bold-webfont.woff') format('woff'), + url('fonts/OpenSans-Bold-webfont.ttf') format('truetype'), + url('fonts/OpenSans-Bold-webfont.svg#OpenSansBold') format('svg'); font-weight: 900; font-style: normal; } @@ -118,11 +118,11 @@ fonts /* Extra Bold Italic */ @font-face { font-family: 'Open Sans'; - src:url('fonts/OpenSans-BoldItalic-webfont.eot'); - src:url('fonts/OpenSans-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/OpenSans-BoldItalic-webfont.woff') format('woff'), - url('fonts/OpenSans-BoldItalic-webfont.ttf') format('truetype'), - url('fonts/OpenSans-BoldItalic-webfont.svg#OpenSansBoldItalic') format('svg'); + src: url('fonts/OpenSans-BoldItalic-webfont.eot'); + src: url('fonts/OpenSans-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/OpenSans-BoldItalic-webfont.woff') format('woff'), + url('fonts/OpenSans-BoldItalic-webfont.ttf') format('truetype'), + url('fonts/OpenSans-BoldItalic-webfont.svg#OpenSansBoldItalic') format('svg'); font-weight: 900; font-style: italic; } @@ -130,18 +130,18 @@ fonts /* Droid Sans */ @font-face { font-family: 'droid_sans_mono'; - src:url('fonts/droidsansmono-webfont.eot'); - src:url('fonts/droidsansmono-webfont.eot?#iefix') format('embedded-opentype'), - url('fonts/droidsansmono-webfont.woff') format('woff'), - url('fonts/droidsansmono-webfont.ttf') format('truetype'), - url('fonts/droidsansmono-webfont.svg#droid_sans_monoregular') format('svg'); + src: url('fonts/droidsansmono-webfont.eot'); + src: url('fonts/droidsansmono-webfont.eot?#iefix') format('embedded-opentype'), + url('fonts/droidsansmono-webfont.woff') format('woff'), + url('fonts/droidsansmono-webfont.ttf') format('truetype'), + url('fonts/droidsansmono-webfont.svg#droid_sans_monoregular') format('svg'); font-weight: normal; font-style: normal; } /* ======================================================================= -inc_top.tmpl +inc_top.mako ========================================================================== */ .navbaricon { @@ -149,137 +149,138 @@ inc_top.tmpl margin-bottom: -15px; } -#contentWrapper { +#contentWrapper { /* background: url("../images/bg.png") repeat 0 0 transparent; */ } -[class^="icon-"], -[class*=" icon-"] { - background-image: url("../images/glyphicons-halflings.png"); +[class^="icon-"], +[class*=" icon-"] { + background-image: url("../images/glyphicons-halflings.png"); } -.icon-white { - background-image: url("../images/glyphicons-halflings-white.png"); +.icon-white { + background-image: url("../images/glyphicons-halflings-white.png"); } -.dropdown-menu li > a:hover > [class^="menu-icon-"], -.dropdown-menu li > a:hover > [class*=" menu-icon-"] { - background-image: url("../images/menu/menu-icons-white.png"); +.dropdown-menu li > a:hover > [class^="menu-icon-"], +.dropdown-menu li > a:hover > [class*=" menu-icon-"] { + background-image: url("../images/menu/menu-icons-white.png"); } -[class^="icon16-"], -[class*=" icon16-"] { +[class^="icon16-"], +[class*=" icon16-"] { background-image: url("../images/glyphicons-config.png"); } -.ui-autocomplete-loading { - background: white url("../images/loading16.gif") right center no-repeat; +.ui-autocomplete-loading { + background: white url("../images/loading16.gif") right center no-repeat; } -.browserDialog.busy .ui-dialog-buttonpane { - background: url("../images/loading.gif") 10px 50% no-repeat !important; +.browserDialog.busy .ui-dialog-buttonpane { + background: url("../images/loading.gif") 10px 50% no-repeat !important; } -.ui-progressbar .ui-progressbar-overlay { - background: url("../css/lib/images/animated-overlay.gif"); +.ui-progressbar .ui-progressbar-overlay { + background: url("../css/lib/images/animated-overlay.gif"); } -.ui-dialog, -.ui-dialog-buttonpane { - background: #eceadf url("../css/lib/images/ui-bg_fine-grain_10_eceadf_60x60.png") 50% 50% repeat !important; +.ui-dialog, +.ui-dialog-buttonpane { + background: #eceadf url("../css/lib/images/ui-bg_fine-grain_10_eceadf_60x60.png") 50% 50% repeat !important; } -.ui-accordion-content, -.ui-tabs-panel { - background: #ededed !important; - background-image: none !important; +.ui-accordion-content, +.ui-tabs-panel { + background: #ededed !important; + background-image: none !important; } -.ui-widget-content { - background: #dcdcdc url("../css/lib/images/ui-bg_highlight-soft_75_dcdcdc_1x100.png") 50% top repeat-x; +.ui-widget-content { + background: #dcdcdc url("../css/lib/images/ui-bg_highlight-soft_75_dcdcdc_1x100.png") 50% top repeat-x; } -.ui-widget-header { - background: #ffffff url("../css/lib/images/ui-bg_flat_0_ffffff_40x100.png") 50% 50% repeat-x; +.ui-widget-header { + background: #ffffff url("../css/lib/images/ui-bg_flat_0_ffffff_40x100.png") 50% 50% repeat-x; } -.ui-state-default, -.ui-widget-content .ui-state-default, -.ui-widget-header .ui-state-default { - background: #ffffff; +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + background: #ffffff; border: 1px solid #CCCCCC; } -.ui-state-hover, -.ui-widget-content .ui-state-hover, -.ui-widget-header .ui-state-hover, -.ui-state-focus, -.ui-widget-content .ui-state-focus, -.ui-widget-header .ui-state-focus { - background: #ffffff; +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus { + background: #ffffff; } -.ui-state-active, -.ui-widget-content .ui-state-active, -.ui-widget-header .ui-state-active { +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active { background: #F7F7F7; } -.ui-state-highlight, -.ui-widget-content .ui-state-highlight, -.ui-widget-header .ui-state-highlight { - background: #fbf9ee url("../css/lib/images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x; +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + background: #fbf9ee url("../css/lib/images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x; } -.ui-state-error, -.ui-widget-content .ui-state-error, -.ui-widget-header .ui-state-error { - background: #fef1ec url("../css/lib/images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x; +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + background: #fef1ec url("../css/lib/images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x; } -.ui-icon, -.ui-widget-content .ui-icon { - background-image: url("../css/lib/images/ui-icons_222222_256x240.png"); +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url("../css/lib/images/ui-icons_222222_256x240.png"); } -.ui-widget-header .ui-icon { - background-image: url("../css/lib/images/ui-icons_222222_256x240.png"); +.ui-widget-header .ui-icon { + background-image: url("../css/lib/images/ui-icons_222222_256x240.png"); } -.ui-state-default .ui-icon { - background-image: url("../css/lib/images/ui-icons_8c291d_256x240.png"); +.ui-state-default .ui-icon { + background-image: url("../css/lib/images/ui-icons_8c291d_256x240.png"); } -.ui-state-hover .ui-icon, -.ui-state-focus .ui-icon { - background-image: url("../css/lib/images/ui-icons_222222_256x240.png"); +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon { + background-image: url("../css/lib/images/ui-icons_222222_256x240.png"); } -.ui-state-active .ui-icon { - background-image: url("../css/lib/images/ui-icons_8c291d_256x240.png"); +.ui-state-active .ui-icon { + background-image: url("../css/lib/images/ui-icons_8c291d_256x240.png"); } -.ui-state-highlight .ui-icon { - background-image: url("../css/lib/images/ui-icons_2e83ff_256x240.png"); +.ui-state-highlight .ui-icon { + background-image: url("../css/lib/images/ui-icons_2e83ff_256x240.png"); } -.ui-state-error .ui-icon, -.ui-state-error-text .ui-icon { - background-image: url("../css/lib/images/ui-icons_cd0a0a_256x240.png"); +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url("../css/lib/images/ui-icons_cd0a0a_256x240.png"); } -.ui-widget-overlay { - background: #aaaaaa url("../css/lib/images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x; +.ui-widget-overlay { + background: #aaaaaa url("../css/lib/images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x; } -.ui-widget-shadow { - background: #000000 url("../css/lib/images/ui-bg_flat_0_000000_40x100.png") 50% 50% repeat-x; +.ui-widget-shadow { + background: #000000 url("../css/lib/images/ui-bg_flat_0_000000_40x100.png") 50% 50% repeat-x; } .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #140F06; text-decoration: none; } + .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #222; text-decoration: none; @@ -300,7 +301,7 @@ inc_top.tmpl border-radius: 0px; } -.ui-tabs .ui-tabs-panel { +.ui-tabs .ui-tabs-panel { background-color: #F7F7F7 !important; border: 1px solid #CCCCCC !important; } @@ -310,7 +311,7 @@ inc_top.tmpl border-top-right-radius: 5px; } -.ui-tabs-nav > :not(.ui-tabs-active){ +.ui-tabs-nav > :not(.ui-tabs-active){ border-top-left-radius: 5px; border-top-right-radius: 5px; } @@ -332,11 +333,11 @@ inc_top.tmpl } .upgrade-notification { - width: 600px; - text-align: center; - margin-left: auto; - margin-right: auto; - margin-top: 50px; + width: 600px; + text-align: center; + margin-left: auto; + margin-right: auto; + margin-top: 50px; margin-bottom: 0px; } @@ -473,7 +474,7 @@ inc_top.tmpl } /* ======================================================================= -inc_bottom.tmpl +inc_bottom.mako ========================================================================== */ .footer { @@ -490,7 +491,7 @@ inc_bottom.tmpl } /* ======================================================================= -inc_rootDirs.tmpl +inc_rootDirs.mako ========================================================================== */ .rootdir-selectbox, .rootdir-selectbox #rootDirs, @@ -505,7 +506,7 @@ inc_rootDirs.tmpl } /* ======================================================================= -home.tmpl +home.mako ========================================================================== */ .imgbanner .banner { @@ -665,23 +666,8 @@ home.tmpl .show .progress-40, .show .progress-60, .show .progress-80 { - height: 7px -} - -.show .progress-80 { - border-radius: 0px; -} - -.show .progress-60 { - border-radius: 0px; -} - -.show .progress-40 { - border-radius: 0px; -} - -.show .progress-20 { border-radius: 0px; + height: 7px } .show-title { @@ -698,7 +684,7 @@ home.tmpl position: absolute; width: 20px; height: 100%; - top: 0; + top: 0; right: 0; background-image: -webkit-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); background-image: -moz-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); @@ -721,7 +707,7 @@ home.tmpl position: absolute; width: 20px; height: 100%; - top: 0; + top: 0; right: 0; background-image: -webkit-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); background-image: -moz-linear-gradient(right, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); @@ -730,8 +716,8 @@ home.tmpl background-image: linear-gradient(to left, rgba(223, 218, 207, 1), rgba(223, 218, 207, 0)); } -.show-table { - text-align:center; +.show-table { + text-align:center; vertical-align:middle; width: 33% } @@ -769,7 +755,7 @@ home.tmpl #sort-by { display: inline; - list-style-type: none; + list-style-type: none; padding: 0; margin-left: 5px; } @@ -795,18 +781,20 @@ td.tvShow a:hover { } #popover-target label { - margin: 0 5px; - display: block; + margin: 0 5px; + display: block; } + #popover-target input { - margin-left: 5px; + margin-left: 5px; } + .popover { - margin-left: -50px; + margin-left: -50px; } /* ======================================================================= -home_addShows.tmpl +home_addShows.mako ========================================================================== */ #addShowPortal { @@ -866,8 +854,9 @@ div.buttontext p { } /* ======================================================================= -home_newShow.tmpl +home_newShow.mako ========================================================================== */ + #addShowForm, #recommendedShowsForm { width: 800px; margin-left: auto; @@ -896,7 +885,7 @@ home_newShow.tmpl } /* ======================================================================= -home_addExistingShow.tmpl +home_addExistingShow.mako ========================================================================== */ .existingtabs { @@ -927,7 +916,7 @@ ul#rootDirStaticList li input[type="checkbox"] { } /* ======================================================================= -home_trendingShows.tmpl +home_trendingShows.mako ========================================================================== */ .traktShowTitleIcons { @@ -936,16 +925,16 @@ home_trendingShows.tmpl padding-bottom: 4px; } -.traktContainer p { +.traktContainer p { padding-top: 2px; } -.traktContainer p img { +.traktContainer p img { position: relative; top: -2px; } -.traktContainer p, .traktContainer i { +.traktContainer p, .traktContainer i { white-space: nowrap; font-size: 12px; overflow: hidden; @@ -971,9 +960,8 @@ home_trendingShows.tmpl border-bottom: 1px solid #111; } - /* ======================================================================= -home_postprocess.tmpl +home_postprocess.mako ========================================================================== */ #postProcess { @@ -983,9 +971,8 @@ home_postprocess.tmpl margin-left: auto; } - /* ======================================================================= -displayShow.tmpl +displayShow.mako ========================================================================== */ #posterCol { @@ -1023,7 +1010,7 @@ h1.title { } .displayspecials { - position: relative; + position: relative; top: -24px; } @@ -1031,14 +1018,14 @@ h1.title { cursor: default; } -#showinfo { +#showinfo { display: inline-block; position: relative; top: -3px; } span.imdbstars { - display: inline-block; + display: inline-block; vertical-align: top; cursor: help; margin-top: 4px; @@ -1125,22 +1112,22 @@ ul.tags li a{ } .unaired { - background-color: #f5f1e4; + background-color: #f5f1e4; } .skipped { - background-color: #bedeed; + background-color: #bedeed; } .good { - background-color: #c3e3c8; + background-color: #c3e3c8; } .qual { - background-color: #ffda8a; + background-color: #ffda8a; } .wanted { - background-color: #ffb0b0; + background-color: #ffb0b0; } .snatched { - background-color: #ebc1ea; + background-color: #ebc1ea; } span.unaired { @@ -1217,7 +1204,7 @@ span.snatched b { } .displayShowTable td.col-search { - text-align: center; + text-align: center; } .sickbeardTable { @@ -1229,6 +1216,7 @@ span.snatched b { border: none; empty-cells: show; } + .sickbeardTable.display_show { clear:both } @@ -1240,7 +1228,7 @@ span.snatched b { white-space: nowrap; } -.sickbeardTable th, +.sickbeardTable th, .sickbeardTable td { border-top: 1px solid #fff; border-left: 1px solid #fff; @@ -1313,6 +1301,11 @@ td.col-status { text-align: center; } +th.col-quality, +td.col-quality { + width: 110px; +} + th.col-legend, td.col-legend { width: 80px; @@ -1343,7 +1336,7 @@ td.col-search { } /* ======================================================================= -comingEpisodes.tmpl +comingEpisodes.mako ========================================================================== */ .sort_data { @@ -1437,7 +1430,7 @@ h2.day, h2.network { float: left; line-height: 1.4em; font-size: 1.4em; - text-shadow: -1px -1px 0 #FFF); + text-shadow: -1px -1px 0 #FFF; } .tvshowTitleIcons { @@ -1494,7 +1487,7 @@ h2.day, h2.network { } .calendarWrapper { - width:1000px; + width:1000px; margin:0 auto; padding:0 3px } @@ -1513,6 +1506,7 @@ h2.day, h2.network { .calendarShow .poster { padding-bottom:2px } + .calendarShow .poster img { width:142px; height:auto @@ -1536,7 +1530,7 @@ h2.day, h2.network { } /* ======================================================================= -config*.tmpl +config*.mako ========================================================================== */ #config-content { @@ -1610,6 +1604,7 @@ config*.tmpl #config label.space-right { margin-right:10px } + #config .metadataDiv { display: none; } @@ -1641,21 +1636,21 @@ select .selected { list-style-type: none; } -#provider_order_list, +#provider_order_list, #service_order_list { width: 250px; padding-left: 20px; list-style-type: none; } -#provider_order_list li, +#provider_order_list li, #service_order_list li { padding: 5px; margin: 5px 0; font-size: 14px; } -#provider_order_list input, +#provider_order_list input, #service_order_list input { margin: 0px 2px; } @@ -1671,13 +1666,13 @@ select .selected { width: 220px !important; } -.infoTableHeader, +.infoTableHeader, .infoTableCell { padding: 5px; } -.infoTableSeperator { - border-top: 1px dotted #666666; +.infoTableSeperator { + border-top: 1px dotted #666666; } [class^="icon16-"], [class*=" icon16-"] { @@ -1708,7 +1703,7 @@ select .selected { } /* ======================================================================= -config_postProcessing.tmpl +config_postProcessing.mako ========================================================================== */ #config div.example { @@ -1751,7 +1746,7 @@ config_postProcessing.tmpl } /* ======================================================================= -config_notifications.tmpl +config_notifications.mako ========================================================================== */ div.metadata_options_wrapper { @@ -1810,7 +1805,7 @@ div.metadataDiv .disabled { } /* ======================================================================= -manage*.tmpl +manage*.mako ========================================================================== */ .manageTable th { @@ -1866,7 +1861,6 @@ a.whitelink { color: #fff; } - /* ======================================================================= Global ========================================================================== */ @@ -1905,6 +1899,17 @@ span.quality { border-radius: 4px; } +span.any-hd { + background-color: #2672b6; + background: repeating-linear-gradient( + -45deg, + #2672b6, + #2672b6 10px, + #5b990d 10px, + #5b990d 20px + ); +} + span.Custom { background-color: #621993; } @@ -1941,6 +1946,10 @@ span.SDTV { background-color: #BE2625; } +span.SDDVD { + background-color: #BE2625; +} + span.Any { background-color: #666; } @@ -1997,39 +2006,43 @@ option.flag { div.blackwhitelist{ float:left; - text-align: center; + text-align: center; } + div.blackwhitelist input { margin: 5px 0px; } + div.blackwhitelist.pool select{ width: 230px; } + div.blackwhitelist.white select, div.blackwhitelist.black select { width: 150px; } + div.blackwhitelist span { display: block; text-align: center; } + div.blackwhitelist.anidb, div.blackwhitelist.manual { margin: 7px 0px; } - /* ======================================================================= bootstrap Overrides ========================================================================== */ -body { - padding-top: 60px; +body { + padding-top: 60px; overflow-y: scroll; font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; color: #000; } -html * { - outline: 0 !important; +html * { + outline: 0 !important; } input[type="checkbox"] { @@ -2108,11 +2121,6 @@ input, textarea, select, .uneditable-input { background-color: #333333; } -.navbar-default .navbar-collapse, -.navbar-default .navbar-form { - border-color: #3e3f3a; -} - .navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus { @@ -2121,26 +2129,26 @@ input, textarea, select, .uneditable-input { } @media (max-width: 767px) { - .navbar-default .navbar-nav .open .dropdown-menu > li > a { - color: #dddddd; - } - .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { - color: #ffffff; - background-color: transparent; - } - .navbar-default .navbar-nav .open .dropdown-menu > .active > a, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { - color: #ffffff; - background-color: #333333; - } - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, - .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { - color: #cccccc; - background-color: transparent; - } + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #dddddd; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #ffffff; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #ffffff; + background-color: #333333; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #cccccc; + background-color: transparent; + } } .navbar-default .navbar-link { @@ -2610,39 +2618,18 @@ input sizing (for config pages) } /* ======================================================================= -browser.css +browser.css overrides ========================================================================== */ #fileBrowserDialog { overflow-y: auto; } -#fileBrowserDialog ul { - padding: 0; - margin: 0; -} - -#fileBrowserDialog ul li { - margin: 2px 0; - list-style-type: none; - cursor: pointer; -} - -#fileBrowserDialog ul li a { - display: block; - padding: 4px 0; -} - #fileBrowserDialog ul li a:hover { color: #00f; background: none; } -#fileBrowserDialog ul li a span.ui-icon { - float: left; - margin: 0 4px; -} - #fileBrowserDialog h2 { font-size: 20px; } @@ -2659,14 +2646,6 @@ browser.css padding-right: 20px; } -.ui-menu .ui-menu-item { - background-color: #eee; -} - -.ui-menu .ui-menu-item-alternate { - background-color: #fff; -} - .ui-autocomplete .ui-menu-item .ui-state-focus { color: #fff; background: none; @@ -2682,7 +2661,6 @@ browser.css background-position: -80px -224px; } - /* ======================================================================= formWizard.css ========================================================================== */ @@ -2795,7 +2773,7 @@ div.field-pair input { float: left; width: 172px; margin-right: 10px; -} +} #customQualityWrapper div.component-group-desc p { width: 85%; @@ -2886,6 +2864,7 @@ thead.tablesorter-stickyHeader { .tablesorter .filtered { display: none; } + .tablesorter input.tablesorter-filter { width: 98%; height: auto; @@ -3074,6 +3053,7 @@ span.token-input-delete-token { z-index: 0; background-image: url(/images/poster-dark.jpg) } + /* ======================================================================= jquery.confirm.css ========================================================================== */ @@ -3149,7 +3129,7 @@ jquery.confirm.css box-shadow: inset 0 1px rgba(255,255,255,0.1),inset 0 -1px 3px rgba(0,0,0,0.3),inset 0 0 0 1px rgba(255,255,255,0.08),0 1px 2px rgba(0,0,0,0.15); } -#confirmBox .button:last-child { +#confirmBox .button:last-child { margin-right:0; } @@ -3174,12 +3154,12 @@ pnotify.css ========================================================================== */ .ui-pnotify-sticker { - margin-top: -12px; + margin-top: -12px; } .ui-pnotify-closer { - margin-top: -12px; - margin-right: -10px; + margin-top: -12px; + margin-right: -10px; } /* ======================================================================= @@ -3190,67 +3170,67 @@ login.css display: block; } - .login h1 { - padding: 0 0 10px; - font-size: 60px; - font-family: Lobster; - font-weight: normal; - } +.login h1 { + padding: 0 0 10px; + font-size: 60px; + font-family: Lobster; + font-weight: normal; +} - .login form { - padding: 0; - height: 300px; - width: 400px; - position: fixed; - left: 50%; - top: 50%; - margin: -200px 0 0 -200px; - } - @media all and (max-width: 480px) { - - .login form { - padding: 0; - height: 300px; - width: 90%; - position: absolute; - left: 5%; - top: 10px; - margin: 0; - } - - } - - .login .ctrlHolder { - padding: 0; - margin: 0 0 20px; - } - .login .ctrlHolder:hover { - background: none; - } - - .login input[type=text], - .login input[type=password] { - width: 100% !important; - font-size: 25px; - padding: 14px !important; - } +.login form { + padding: 0; + height: 300px; + width: 400px; + position: fixed; + left: 50%; + top: 50%; + margin: -200px 0 0 -200px; +} - .login .remember_me { - font-size: 15px; - float: left; - width: 150px; - padding: 20px 0; - } +@media all and (max-width: 480px) { + .login form { + padding: 0; + height: 300px; + width: 90%; + position: absolute; + left: 5%; + top: 10px; + margin: 0; + } +} - .login .remember_me .check { - margin: 5px 5px 0 0; - } +.login .ctrlHolder { + padding: 0; + margin: 0 0 20px; +} - .login .button { - font-size: 25px; - padding: 20px; - float: right; - } +.login .ctrlHolder:hover { + background: none; +} + +.login input[type=text], +.login input[type=password] { + width: 100% !important; + font-size: 25px; + padding: 14px !important; +} + +.login .remember_me { + font-size: 15px; + float: left; + width: 150px; + padding: 20px 0; +} + +.login .remember_me .check { + margin: 5px 5px 0 0; +} + +.login .button { + font-size: 25px; + padding: 20px; + float: right; +} /* ======================================================================= IMDB Popular @@ -3296,4 +3276,4 @@ IMDB Popular .popularShow p{ margin-bottom:0px; -} \ No newline at end of file +} diff --git a/gui/slick/images/network/crackle.png b/gui/slick/images/network/crackle.png index 5f3ab658ae86356a824fcb9765c71a3417c6385c..d46a69572152f949b4e5bebe99865f2fa861127b 100644 Binary files a/gui/slick/images/network/crackle.png and b/gui/slick/images/network/crackle.png differ diff --git a/gui/slick/images/network/yorin.png b/gui/slick/images/network/yorin.png new file mode 100644 index 0000000000000000000000000000000000000000..cf6a306d01ada1c083afa5cf0fda78a864b06b51 Binary files /dev/null and b/gui/slick/images/network/yorin.png differ diff --git a/gui/slick/interfaces/default/comingEpisodes.mako b/gui/slick/interfaces/default/comingEpisodes.mako index 0c16007460a045b600c682a47662cde44cb55764..5eb8c52c862324f1f76a7ef98909bfec2da74db1 100644 --- a/gui/slick/interfaces/default/comingEpisodes.mako +++ b/gui/slick/interfaces/default/comingEpisodes.mako @@ -2,7 +2,6 @@ import sickbeard from sickbeard.helpers import anon_url from sickbeard import sbdatetime - from sickbeard.common import qualityPresets, qualityPresetStrings import datetime import time import re @@ -10,6 +9,7 @@ <% sort = sickbeard.COMING_EPS_SORT %> +<%namespace file="/inc_defs.mako" import="renderQualityPill"/> <%include file="/inc_top.mako"/> <script type="text/javascript" src="${sbRoot}/js/ajaxEpSearch.js?${sbPID}"></script> <h1 class="header">${header}</h1> @@ -221,11 +221,7 @@ $(document).ready(function(){ </td> <td align="center"> -% if int(cur_result['quality']) in qualityPresets: - <span class="quality ${qualityPresetStrings[int(cur_result['quality'])]}">${qualityPresetStrings[int(cur_result['quality'])]}</span> -% else: - <span class="quality Custom">Custom</span> -% endif + ${renderQualityPill(cur_result['quality'])} </td> <td align="center" style="vertical-align: middle;"> @@ -428,11 +424,7 @@ $(document).ready(function(){ <div class="clearfix"> <span class="title">Quality:</span> - % if int(cur_result['quality']) in qualityPresets: - <span class="quality ${qualityPresetStrings[int(cur_result['quality'])]}">${qualityPresetStrings[int(cur_result['quality'])]}</span> - % else: - <span class="quality Custom">Custom</span> - % endif + ${renderQualityPill(cur_result['quality'])} </div> </td> </tr> diff --git a/gui/slick/interfaces/default/displayShow.mako b/gui/slick/interfaces/default/displayShow.mako index 9df75375cf7ed0b3ba2f28e561b41b1ceb611746..c08b5fb4c5f46a2fa50694091c5fc5c049d4201f 100644 --- a/gui/slick/interfaces/default/displayShow.mako +++ b/gui/slick/interfaces/default/displayShow.mako @@ -7,11 +7,11 @@ import sickbeard.helpers from sickbeard.common import SKIPPED, WANTED, UNAIRED, ARCHIVED, IGNORED, SNATCHED, SNATCHED_PROPER, SNATCHED_BEST, FAILED - from sickbeard.common import Quality, qualityPresets, qualityPresetStrings, statusStrings, Overview + from sickbeard.common import Quality, qualityPresets, statusStrings, Overview from sickbeard.helpers import anon_url %> - +<%namespace file="/inc_defs.mako" import="renderQualityPill"/> <%include file="/inc_top.mako"/> <script type="text/javascript" src="${sbRoot}/js/lib/jquery.bookmarkscroll.js?${sbPID}"></script> @@ -204,13 +204,13 @@ $(document).ready(function(){ <% anyQualities, bestQualities = Quality.splitQuality(int(show.quality)) %> <tr><td class="showLegend">Quality: </td><td> % if show.quality in qualityPresets: - <span class="quality ${qualityPresetStrings[show.quality]}">${qualityPresetStrings[show.quality]}</span> + ${renderQualityPill(show.quality)} % else: % if anyQualities: - <i>Initial:</i> ${", ".join([Quality.qualityStrings[x] for x in sorted(anyQualities)])}${("", "</br>")[bool(bestQualities)]} + <i>Initial:</i> ${", ".join([capture(renderQualityPill, x) for x in sorted(anyQualities)])}${("", "</br>")[bool(bestQualities)]} % endif % if bestQualities: - <i>Replace with:</i> ${", ".join([Quality.qualityStrings[x] for x in sorted(bestQualities)])} + <i>Replace with:</i> ${", ".join([capture(renderQualityPill, x) for x in sorted(bestQualities)])} % endif % endif @@ -559,7 +559,7 @@ $(document).ready(function(){ </td> <% curStatus, curQuality = Quality.splitCompositeStatus(int(epResult["status"])) %> % if curQuality != Quality.NONE: - <td class="col-status">${statusStrings[curStatus]} <span class="quality ${Quality.qualityStrings[curQuality].replace("720p","HD720p").replace("1080p","HD1080p").replace("HDTV", "HD720p")}">${Quality.qualityStrings[curQuality]}</span></td> + <td class="col-status">${statusStrings[curStatus]} ${renderQualityPill(curQuality)}</td> % else: <td class="col-status">${statusStrings[curStatus]}</td> % endif diff --git a/gui/slick/interfaces/default/history.mako b/gui/slick/interfaces/default/history.mako index fc1818746a838e4647208cc9a2713df38ca87674..bdba48fd79a112f9957dcd7cec8ffe5c6aa8633d 100644 --- a/gui/slick/interfaces/default/history.mako +++ b/gui/slick/interfaces/default/history.mako @@ -11,12 +11,13 @@ from sickbeard.providers import generic from sickbeard.common import SKIPPED, WANTED, UNAIRED, ARCHIVED, IGNORED, SNATCHED, SNATCHED_PROPER, SNATCHED_BEST, FAILED, DOWNLOADED, SUBTITLED - from sickbeard.common import Quality, qualityPresets, qualityPresetStrings, statusStrings, Overview + from sickbeard.common import Quality, statusStrings, Overview %> <% layout = sickbeard.HISTORY_LAYOUT history_limit = sickbeard.HISTORY_LIMIT %> +<%namespace file="/inc_defs.mako" import="renderQualityPill"/> <%include file="/inc_top.mako"/> <style type="text/css"> @@ -155,7 +156,7 @@ $(document).ready(function(){ % endif </td> <span style="display: none;">${curQuality}</span> - <td align="center"><span class="quality ${Quality.qualityStrings[curQuality].replace("720p","HD720p").replace("1080p","HD1080p").replace("HDTV", "HD720p")}">${Quality.qualityStrings[curQuality]}</span></td> + <td align="center">${renderQualityPill(curQuality)}</td> </tr> % endfor </tbody> @@ -228,7 +229,7 @@ $(document).ready(function(){ % endfor </td> % endif - <td align="center" width="14%" quality="${curQuality}"><span class="quality ${Quality.qualityStrings[curQuality].replace("720p","HD720p").replace("1080p","HD1080p").replace("RawHD TV", "RawHD").replace("HD TV", "HD720p")}">${Quality.qualityStrings[curQuality]}</span></td> + <td align="center" width="14%" quality="${curQuality}">${renderQualityPill(curQuality)}</td> </tr> % endfor </tbody> diff --git a/gui/slick/interfaces/default/home.mako b/gui/slick/interfaces/default/home.mako index 909aadb0479e16ebb790f771f6f3cc9b1b570898..debfaecc8359cff4f6819c8977160dcd4a515ace 100644 --- a/gui/slick/interfaces/default/home.mako +++ b/gui/slick/interfaces/default/home.mako @@ -7,6 +7,7 @@ import datetime import re %> +<%namespace file="/inc_defs.mako" import="renderQualityPill"/> <%include file="/inc_top.mako"/> <% myDB = db.DBConnection() @@ -42,7 +43,6 @@ %> <script type="text/javascript" charset="utf-8"> - $.tablesorter.addParser({ id: 'loadingNames', is: function(s) { @@ -108,6 +108,20 @@ $.tablesorter.addParser({ $(document).ready(function(){ + $('[data-src]').each(function(){ + $(this).attr('src', $(this).data('src')); + }); + + // This needs to be refined to work a little faster. + $('.progressbar').each(function(progressbar){ + var showId = $(this).data('show-id'); + var percentage = $(this).data('progress-percentage'); + var classToAdd = percentage == 100 ? 100 : percentage > 80 ? 80 : percentage > 60 ? 60 : percentage > 40 ? 40 : 20; + $(this).progressbar({ value: percentage }); + $(this).data('progress-text') ? $(this).append('<div class="progressbarText" title="' + $(this).data('progress-tip') + '">' + $(this).data('progress-text') + '</div>') : ''; + $(this).find('.ui-progressbar-value').addClass('progress-' + classToAdd); + }); + $("img#network").on('error', function(){ $(this).parent().text($(this).attr('alt')); $(this).remove(); @@ -120,7 +134,7 @@ $(document).ready(function(){ 1: function(node) { return $(node).find("span").text().toLowerCase(); }, 3: function(node) { return $(node).find("span").prop("title").toLowerCase(); }, 4: function(node) { return $(node).find("span").text().toLowerCase(); }, - 5: function(node) { return $(node).find("span").text(); }, + 5: function(node) { return $(node).find("span:first").text(); }, 6: function(node) { return $(node).find("img").attr("alt"); } }, widgets: ['saveSort', 'zebra', 'stickyHeaders', 'filter', 'columnSelector'], @@ -211,7 +225,7 @@ $(document).ready(function(){ 1: function(node) { return $(node).find("span").text().toLowerCase(); }, 3: function(node) { return $(node).find("span").prop("title").toLowerCase(); }, 4: function(node) { return $(node).find("span").text().toLowerCase(); }, - 5: function(node) { return $(node).find("span").text(); }, + 5: function(node) { return $(node).find("span:first").text(); }, 6: function(node) { return $(node).find("img").attr("alt"); } }, widgets: ['saveSort', 'zebra', 'stickyHeaders', 'filter', 'columnSelector'], @@ -388,7 +402,7 @@ $(document).ready(function(){ <h1 class="title">${title}</h1> % endif -<div id="HomeLayout" class="pull-right" style="margin-top: -40px;"> +<div id="HomeLayout" class="pull-right hidden-print" style="margin-top: -40px;"> % if layout != 'poster': <button id="popover" type="button" class="btn btn-inline">Select Column</button> % endif @@ -440,7 +454,7 @@ $(document).ready(function(){ % for curLoadingShow in sickbeard.showQueueScheduler.action.loadingShowList: % if curLoadingShow.show == None: <div class="show" data-name="0" data-date="010101" data-network="0" data-progress="101"> - <img alt="" title="${curLoadingShow.show_name}" class="show-image" style="border-bottom: 1px solid #111;" src="${sbRoot}/images/poster.png" /> + <img alt="" title="${curLoadingShow.show_name}" class="show-image" style="border-bottom: 1px solid #111;" data-src="${sbRoot}/images/poster.png" /> <div class="show-details"> <div class="show-add">Loading... (${curLoadingShow.show_name})</div> </div> @@ -514,33 +528,10 @@ $(document).ready(function(){ %> <div class="show" id="show${curShow.indexerid}" data-name="${curShow.name}" data-date="${data_date}" data-network="${curShow.network}" data-progress="${progressbar_percent}"> <div class="show-image"> - <a href="${sbRoot}/home/displayShow?show=${curShow.indexerid}"><img alt="" class="show-image" src="${sbRoot}/showPoster/?show=${curShow.indexerid}&which=poster_thumb" /></a> + <a href="${sbRoot}/home/displayShow?show=${curShow.indexerid}"><img alt="" class="show-image" data-src="${sbRoot}/showPoster/?show=${curShow.indexerid}&which=poster_thumb" /></a> </div> - <div id="progressbar${curShow.indexerid}"></div> - <script type="text/javascript"> - $(function() { - $("#progressbar${curShow.indexerid}").progressbar({ - value: ${progressbar_percent} }); - classvalue = ${progressbar_percent} - if (classvalue<20) { - classtoadd = "progress-20" - } - if (classvalue>=20 && classvalue<40) { - classtoadd = "progress-40" - } - if (classvalue>=40 && classvalue<80) { - classtoadd = "progress-60" - } - if (classvalue>=80 && classvalue<100) { - classtoadd = "progress-80" - } - if (classvalue==100) { - classtoadd = "progress-100" - } - $("#progressbar${curShow.indexerid} > .ui-progressbar-value").addClass(classtoadd); - }); - </script> + <div class="progressbar hidden-print" style="position:relative;" data-show-id="${curShow.indexerid}" data-progress-percentage="${progressbar_percent}"></div> <div class="show-title"> ${curShow.name} @@ -581,9 +572,9 @@ $(document).ready(function(){ <td class="show-table"> % if layout != 'simple': % if curShow.network: - <span title="${curShow.network}"><img class="show-network-image" src="${sbRoot}/showNetworkLogo/?show=${curShow.indexerid}" alt="${curShow.network}" title="${curShow.network}" /></span> + <span title="${curShow.network}"><img class="show-network-image" data-src="${sbRoot}/showNetworkLogo/?show=${curShow.indexerid}" alt="${curShow.network}" title="${curShow.network}" /></span> % else: - <span title="No Network"><img class="show-network-image" src="${sbRoot}/images/network/nonetwork.png" alt="No Network" title="No Network" /></span> + <span title="No Network"><img class="show-network-image" data-src="${sbRoot}/images/network/nonetwork.png" alt="No Network" title="No Network" /></span> % endif % else: <span title="${curShow.network}">${curShow.network}</span> @@ -591,11 +582,7 @@ $(document).ready(function(){ </td> <td class="show-table"> - % if curShow.quality in qualityPresets: - <span class="show-quality">${qualityPresetStrings[curShow.quality]}</span> - % else: - <span class="show-quality">Custom</span> - % endif + ${renderQualityPill(curShow.quality, overrideClass="show-quality")} </td> </tr> </table> @@ -623,7 +610,7 @@ $(document).ready(function(){ </tr> </thead> - <tfoot> + <tfoot class="hidden-print"> <tr> <th rowspan="1" colspan="1" align="center"><a href="${sbRoot}/home/addShows/">Add Show</a></th> <th> </th> @@ -750,7 +737,7 @@ $(document).ready(function(){ <td class="tvShow"> <div class="imgsmallposter ${layout}"> <a href="${sbRoot}/showPoster/?show=${curShow.indexerid}&which=${layout}" rel="dialog" title="${curShow.name}"> - <img src="${sbRoot}/showPoster/?show=${curShow.indexerid}&which=poster_thumb" class="${layout}" alt="${curShow.indexerid}"/> + <img data-src="${sbRoot}/showPoster/?show=${curShow.indexerid}&which=poster_thumb" class="${layout}" alt="${curShow.indexerid}"/> </a> <a href="${sbRoot}/home/displayShow?show=${curShow.indexerid}" style="vertical-align: middle;">${curShow.name}</a> </div> @@ -760,7 +747,7 @@ $(document).ready(function(){ <span style="display: none;">${curShow.name}</span> <div class="imgbanner ${layout}"> <a href="${sbRoot}/home/displayShow?show=${curShow.indexerid}"> - <img src="${sbRoot}/showPoster/?show=${curShow.indexerid}&which=banner" class="${layout}" alt="${curShow.indexerid}" title="${curShow.name}"/> + <img data-src="${sbRoot}/showPoster/?show=${curShow.indexerid}&which=banner" class="${layout}" alt="${curShow.indexerid}" title="${curShow.name}"/> </div> </td> % elif layout == 'simple': @@ -770,9 +757,11 @@ $(document).ready(function(){ % if layout != 'simple': <td align="center"> % if curShow.network: - <span title="${curShow.network}"><img id="network" width="54" height="27" src="${sbRoot}/showNetworkLogo/?show=${curShow.indexerid}" alt="${curShow.network}" title="${curShow.network}" /></span> + <span title="${curShow.network}" class="hidden-print"><img id="network" width="54" height="27" data-src="${sbRoot}/showNetworkLogo/?show=${curShow.indexerid}" alt="${curShow.network}" title="${curShow.network}" /></span> + <span class="visible-print-inline">${curShow.network}</span> % else: - <span title="No Network"><img id="network" width="54" height="27" src="${sbRoot}/images/network/nonetwork.png" alt="No Network" title="No Network" /></span> + <span title="No Network" class="hidden-print"><img id="network" width="54" height="27" data-src="${sbRoot}/images/network/nonetwork.png" alt="No Network" title="No Network" /></span> + <span class="visible-print-inline">No Network</span> % endif </td> % else: @@ -781,41 +770,17 @@ $(document).ready(function(){ </td> % endif - % if curShow.quality in qualityPresets: - <td align="center"><span class="quality ${qualityPresetStrings[curShow.quality]}">${qualityPresetStrings[curShow.quality]}</span></td> - % else: - <td align="center"><span class="quality Custom">Custom</span></td> - % endif + <td align="center">${renderQualityPill(curShow.quality)}</td> - <td align="center"><span style="display: none;">${download_stat}</span><div id="progressbar${curShow.indexerid}" style="position:relative;"></div> - <script type="text/javascript"> - $(function() { - $("#progressbar${curShow.indexerid}").progressbar({ - value: ${progressbar_percent} }); - $("#progressbar${curShow.indexerid}").append( "<div class='progressbarText' title='${download_stat_tip}'>${download_stat}</div>" ) - classvalue = ${progressbar_percent} - if (classvalue<20) { - classtoadd = "progress-20" - } - if (classvalue>=20 && classvalue<40) { - classtoadd = "progress-40" - } - if (classvalue>=40 && classvalue<80) { - classtoadd = "progress-60" - } - if (classvalue>=80 && classvalue<100) { - classtoadd = "progress-80" - } - if (classvalue==100) { - classtoadd = "progress-100" - } - $("#progressbar${curShow.indexerid} > .ui-progressbar-value").addClass(classtoadd); - }); - </script> + <td align="center"> + ## This first span is used for sorting and is never displayed to user + <span style="display: none;">${download_stat}</span> + <div class="progressbar hidden-print" style="position:relative;" data-show-id="${curShow.indexerid}" data-progress-percentage="${progressbar_percent}" data-progress-text="${download_stat}" data-progress-tip="${download_stat_tip}"></div> + <span class="visible-print-inline">${download_stat}</span> </td> <td align="center"> - <img src="${sbRoot}/images/${('no16.png", alt="No"', 'yes16.png", alt="Yes"')[int(curShow.paused) == 0 and curShow.status == 'Continuing']} width="16" height="16" /> + <img data-src="${sbRoot}/images/${('no16.png" alt="No"', 'yes16.png" alt="Yes"')[int(curShow.paused) == 0 and curShow.status == 'Continuing']} width="16" height="16" /> </td> <td align="center"> diff --git a/gui/slick/interfaces/default/inc_defs.mako b/gui/slick/interfaces/default/inc_defs.mako new file mode 100644 index 0000000000000000000000000000000000000000..2d44ac5b3e7bd5c313209ba9c82f727a5e3aaaf3 --- /dev/null +++ b/gui/slick/interfaces/default/inc_defs.mako @@ -0,0 +1,23 @@ +<%! + from sickbeard.common import Quality, qualityPresets, qualityPresetStrings +%> +<%def name="renderQualityPill(quality, overrideClass=None)"><% + if quality in qualityPresets: + cssClass = qualityPresetStrings[quality] + qualityString = qualityPresetStrings[quality] + elif quality in Quality.combinedQualityStrings: + cssClass = Quality.cssClassStrings[quality] + qualityString = Quality.combinedQualityStrings[quality] + elif quality in Quality.qualityStrings: + cssClass = Quality.cssClassStrings[quality] + qualityString = Quality.qualityStrings[quality] + else: + cssClass = "Custom" + qualityString = "Custom" + + if overrideClass == None: + cssClass = "quality " + cssClass + else: + cssClass = overrideClass + +%><span class="${cssClass}">${qualityString}</span></%def> diff --git a/gui/slick/interfaces/default/inc_top.mako b/gui/slick/interfaces/default/inc_top.mako index a5ede60447b25de329231aaade64f0e18d25bb6b..d8bcb92a2770778fa297bfa1efcfeb3bf90e542e 100644 --- a/gui/slick/interfaces/default/inc_top.mako +++ b/gui/slick/interfaces/default/inc_top.mako @@ -43,12 +43,13 @@ <meta name="msapplication-TileImage" content="${sbRoot}/images/ico/favicon-144.png"> <meta name="msapplication-config" content="${sbRoot}/css/browserconfig.xml"> - <link rel="stylesheet" type="text/css" href="${sbRoot}/css/lib/bootstrap.css?${sbPID}"/> + <link rel="stylesheet" type="text/css" href="${sbRoot}/css/lib/bootstrap.min.css?${sbPID}"/> <link rel="stylesheet" type="text/css" href="${sbRoot}/css/browser.css?${sbPID}" /> - <link rel="stylesheet" type="text/css" href="${sbRoot}/css/lib/jquery-ui-1.10.4.custom.css?${sbPID}" /> + <link rel="stylesheet" type="text/css" href="${sbRoot}/css/lib/jquery-ui-1.10.4.custom.min.css?${sbPID}" /> <link rel="stylesheet" type="text/css" href="${sbRoot}/css/lib/jquery.qtip-2.2.1.min.css?${sbPID}"/> <link rel="stylesheet" type="text/css" href="${sbRoot}/css/style.css?${sbPID}"/> <link rel="stylesheet" type="text/css" href="${sbRoot}/css/${sickbeard.THEME_NAME}.css?${sbPID}" /> + <link rel="stylesheet" type="text/css" href="${sbRoot}/css/print.css?${sbPID}" /> % if sbLogin: <link rel="stylesheet" type="text/css" href="${sbRoot}/css/lib/pnotify.custom.min.css?${sbPID}" /> <link rel="stylesheet" type="text/css" href="${sbRoot}/css/country-flags.css?${sbPID}"/> @@ -142,7 +143,7 @@ </head> <body> - <nav class="navbar navbar-default navbar-fixed-top" role="navigation"> + <nav class="navbar navbar-default navbar-fixed-top hidden-print" role="navigation"> <div class="container-fluid"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> @@ -245,7 +246,7 @@ </nav> % if not submenu is UNDEFINED: - <div id="SubMenu"> + <div id="SubMenu" class="hidden-print"> <span> <% first = True %> % for menuItem in submenu: @@ -271,13 +272,13 @@ % endif % if sickbeard.BRANCH and sickbeard.BRANCH != 'master' and not sickbeard.DEVELOPER and sbLogin: - <div class="alert alert-danger upgrade-notification" role="alert"> + <div class="alert alert-danger upgrade-notification hidden-print" role="alert"> <span>You're using the ${sickbeard.BRANCH} branch. Please use 'master' unless specifically asked</span> </div> % endif % if sickbeard.NEWEST_VERSION_STRING and sbLogin: - <div class="alert alert-success upgrade-notification" role="alert"> + <div class="alert alert-success upgrade-notification hidden-print" role="alert"> <span>${sickbeard.NEWEST_VERSION_STRING}</span> </div> % endif diff --git a/gui/slick/interfaces/default/manage.mako b/gui/slick/interfaces/default/manage.mako index ceb4bbb8f8b9c8f373f8b1a59dc8c4b128a6f5d9..a444883f4ade65a635a27c1d55ee919e0d847779 100644 --- a/gui/slick/interfaces/default/manage.mako +++ b/gui/slick/interfaces/default/manage.mako @@ -1,8 +1,9 @@ <%! import sickbeard from sickbeard.common import SKIPPED, WANTED, UNAIRED, ARCHIVED, IGNORED, SNATCHED, SNATCHED_PROPER, SNATCHED_BEST, FAILED - from sickbeard.common import Quality, qualityPresets, qualityPresetStrings, statusStrings + from sickbeard.common import statusStrings %> +<%namespace file="/inc_defs.mako" import="renderQualityPill"/> <%include file="/inc_top.mako"/> <script type="text/javascript" src="${sbRoot}/js/lib/bootbox.min.js?${sbPID}"></script> <script type="text/javascript" charset="utf-8"> @@ -81,7 +82,7 @@ $(document).ready(function() <tr> <th class="col-checkbox">Edit<br/><input type="checkbox" class="bulkCheck" id="editCheck" /></th> <th class="nowrap" style="text-align: left;">Show Name</th> - <th class="col-legend">Quality</th> + <th class="col-quality">Quality</th> <th class="col-legend">Sports</th> <th class="col-legend">Scene</th> <th class="col-legend">Anime</th> @@ -160,11 +161,7 @@ $(document).ready(function() <tr> <td align="center"><input type="checkbox" class="editCheck" id="edit-${curShow.indexerid}" /></td> <td class="tvShow"><a href="${sbRoot}/home/displayShow?show=${curShow.indexerid}">${curShow.name}</a></td> - % if curShow.quality in qualityPresets: - <td align="center"><span class="quality ${qualityPresetStrings[curShow.quality]}">${qualityPresetStrings[curShow.quality]}</span></td> - % else: - <td align="center"><span class="quality Custom">Custom</span></td> - % endif + <td align="center">${renderQualityPill(curShow.quality)}</td> <td align="center"><img src="${sbRoot}/images/${('no16.png" alt="N"', 'yes16.png" alt="Y"')[int(curShow.is_sports) == 1]} width="16" height="16" /></td> <td align="center"><img src="${sbRoot}/images/${('no16.png" alt="N"', 'yes16.png" alt="Y"')[int(curShow.is_scene) == 1]} width="16" height="16" /></td> <td align="center"><img src="${sbRoot}/images/${('no16.png" alt="N"', 'yes16.png" alt="Y"')[int(curShow.is_anime) == 1]} width="16" height="16" /></td> diff --git a/gui/slick/js/displayShow.js b/gui/slick/js/displayShow.js index fb13af78ae2b75e31d81470b27313683f018dd9f..c7d59a8beb134cbf0261e8de65186d14421b5680 100644 --- a/gui/slick/js/displayShow.js +++ b/gui/slick/js/displayShow.js @@ -47,6 +47,7 @@ $(document).ready(function () { var seasCheck = this; var seasNo = $(seasCheck).attr('id'); + $('#collapseSeason-' + seasNo).collapse('show'); $('.epCheck:visible').each(function () { var epParts = $(this).attr('id').split('x'); diff --git a/gui/slick/js/fancybox/jquery.fancybox.js b/gui/slick/js/fancybox/jquery.fancybox.js deleted file mode 100644 index e8e1987c6cbd752cf39f724e084865a85b56ac9f..0000000000000000000000000000000000000000 --- a/gui/slick/js/fancybox/jquery.fancybox.js +++ /dev/null @@ -1,2020 +0,0 @@ -/*! - * fancyBox - jQuery Plugin - * version: 2.1.5 (Fri, 14 Jun 2013) - * @requires jQuery v1.6 or later - * - * Examples at http://fancyapps.com/fancybox/ - * License: www.fancyapps.com/fancybox/#license - * - * Copyright 2012 Janis Skarnelis - janis@fancyapps.com - * - */ - -(function (window, document, $, undefined) { - "use strict"; - - var H = $("html"), - W = $(window), - D = $(document), - F = $.fancybox = function () { - F.open.apply( this, arguments ); - }, - IE = navigator.userAgent.match(/msie/i), - didUpdate = null, - isTouch = document.createTouch !== undefined, - - isQuery = function(obj) { - return obj && obj.hasOwnProperty && obj instanceof $; - }, - isString = function(str) { - return str && $.type(str) === "string"; - }, - isPercentage = function(str) { - return isString(str) && str.indexOf('%') > 0; - }, - isScrollable = function(el) { - return (el && !(el.style.overflow && el.style.overflow === 'hidden') && ((el.clientWidth && el.scrollWidth > el.clientWidth) || (el.clientHeight && el.scrollHeight > el.clientHeight))); - }, - getScalar = function(orig, dim) { - var value = parseInt(orig, 10) || 0; - - if (dim && isPercentage(orig)) { - value = F.getViewport()[ dim ] / 100 * value; - } - - return Math.ceil(value); - }, - getValue = function(value, dim) { - return getScalar(value, dim) + 'px'; - }; - - $.extend(F, { - // The current version of fancyBox - version: '2.1.5', - - defaults: { - padding : 15, - margin : 20, - - width : 800, - height : 600, - minWidth : 100, - minHeight : 100, - maxWidth : 9999, - maxHeight : 9999, - pixelRatio: 1, // Set to 2 for retina display support - - autoSize : true, - autoHeight : false, - autoWidth : false, - - autoResize : true, - autoCenter : !isTouch, - fitToView : true, - aspectRatio : false, - topRatio : 0.5, - leftRatio : 0.5, - - scrolling : 'auto', // 'auto', 'yes' or 'no' - wrapCSS : '', - - arrows : true, - closeBtn : true, - closeClick : false, - nextClick : false, - mouseWheel : true, - autoPlay : false, - playSpeed : 3000, - preload : 3, - modal : false, - loop : true, - - ajax : { - dataType : 'html', - headers : { 'X-fancyBox': true } - }, - iframe : { - scrolling : 'auto', - preload : true - }, - swf : { - wmode: 'transparent', - allowfullscreen : 'true', - allowscriptaccess : 'always' - }, - - keys : { - next : { - 13 : 'left', // enter - 34 : 'up', // page down - 39 : 'left', // right arrow - 40 : 'up' // down arrow - }, - prev : { - 8 : 'right', // backspace - 33 : 'down', // page up - 37 : 'right', // left arrow - 38 : 'down' // up arrow - }, - close : [27], // escape key - play : [32], // space - start/stop slideshow - toggle : [70] // letter "f" - toggle fullscreen - }, - - direction : { - next : 'left', - prev : 'right' - }, - - scrollOutside : true, - - // Override some properties - index : 0, - type : null, - href : null, - content : null, - title : null, - - // HTML templates - tpl: { - wrap : '<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>', - image : '<img class="fancybox-image" src="{href}" alt="" />', - iframe : '<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen' + (IE ? ' allowtransparency="true"' : '') + '></iframe>', - error : '<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>', - closeBtn : '<a title="Close" class="fancybox-item fancybox-close" href="javascript:;"></a>', - next : '<a title="Next" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>', - prev : '<a title="Previous" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>' - }, - - // Properties for each animation type - // Opening fancyBox - openEffect : 'fade', // 'elastic', 'fade' or 'none' - openSpeed : 250, - openEasing : 'swing', - openOpacity : true, - openMethod : 'zoomIn', - - // Closing fancyBox - closeEffect : 'fade', // 'elastic', 'fade' or 'none' - closeSpeed : 250, - closeEasing : 'swing', - closeOpacity : true, - closeMethod : 'zoomOut', - - // Changing next gallery item - nextEffect : 'elastic', // 'elastic', 'fade' or 'none' - nextSpeed : 250, - nextEasing : 'swing', - nextMethod : 'changeIn', - - // Changing previous gallery item - prevEffect : 'elastic', // 'elastic', 'fade' or 'none' - prevSpeed : 250, - prevEasing : 'swing', - prevMethod : 'changeOut', - - // Enable default helpers - helpers : { - overlay : true, - title : true - }, - - // Callbacks - onCancel : $.noop, // If canceling - beforeLoad : $.noop, // Before loading - afterLoad : $.noop, // After loading - beforeShow : $.noop, // Before changing in current item - afterShow : $.noop, // After opening - beforeChange : $.noop, // Before changing gallery item - beforeClose : $.noop, // Before closing - afterClose : $.noop // After closing - }, - - //Current state - group : {}, // Selected group - opts : {}, // Group options - previous : null, // Previous element - coming : null, // Element being loaded - current : null, // Currently loaded element - isActive : false, // Is activated - isOpen : false, // Is currently open - isOpened : false, // Have been fully opened at least once - - wrap : null, - skin : null, - outer : null, - inner : null, - - player : { - timer : null, - isActive : false - }, - - // Loaders - ajaxLoad : null, - imgPreload : null, - - // Some collections - transitions : {}, - helpers : {}, - - /* - * Static methods - */ - - open: function (group, opts) { - if (!group) { - return; - } - - if (!$.isPlainObject(opts)) { - opts = {}; - } - - // Close if already active - if (false === F.close(true)) { - return; - } - - // Normalize group - if (!$.isArray(group)) { - group = isQuery(group) ? $(group).get() : [group]; - } - - // Recheck if the type of each element is `object` and set content type (image, ajax, etc) - $.each(group, function(i, element) { - var obj = {}, - href, - title, - content, - type, - rez, - hrefParts, - selector; - - if ($.type(element) === "object") { - // Check if is DOM element - if (element.nodeType) { - element = $(element); - } - - if (isQuery(element)) { - obj = { - href : element.data('fancybox-href') || element.attr('href'), - title : element.data('fancybox-title') || element.attr('title'), - isDom : true, - element : element - }; - - if ($.metadata) { - $.extend(true, obj, element.metadata()); - } - - } else { - obj = element; - } - } - - href = opts.href || obj.href || (isString(element) ? element : null); - title = opts.title !== undefined ? opts.title : obj.title || ''; - - content = opts.content || obj.content; - type = content ? 'html' : (opts.type || obj.type); - - if (!type && obj.isDom) { - type = element.data('fancybox-type'); - - if (!type) { - rez = element.prop('class').match(/fancybox\.(\w+)/); - type = rez ? rez[1] : null; - } - } - - if (isString(href)) { - // Try to guess the content type - if (!type) { - if (F.isImage(href)) { - type = 'image'; - - } else if (F.isSWF(href)) { - type = 'swf'; - - } else if (href.charAt(0) === '#') { - type = 'inline'; - - } else if (isString(element)) { - type = 'html'; - content = element; - } - } - - // Split url into two pieces with source url and content selector, e.g, - // "/mypage.html #my_id" will load "/mypage.html" and display element having id "my_id" - if (type === 'ajax') { - hrefParts = href.split(/\s+/, 2); - href = hrefParts.shift(); - selector = hrefParts.shift(); - } - } - - if (!content) { - if (type === 'inline') { - if (href) { - content = $( isString(href) ? href.replace(/.*(?=#[^\s]+$)/, '') : href ); //strip for ie7 - - } else if (obj.isDom) { - content = element; - } - - } else if (type === 'html') { - content = href; - - } else if (!type && !href && obj.isDom) { - type = 'inline'; - content = element; - } - } - - $.extend(obj, { - href : href, - type : type, - content : content, - title : title, - selector : selector - }); - - group[ i ] = obj; - }); - - // Extend the defaults - F.opts = $.extend(true, {}, F.defaults, opts); - - // All options are merged recursive except keys - if (opts.keys !== undefined) { - F.opts.keys = opts.keys ? $.extend({}, F.defaults.keys, opts.keys) : false; - } - - F.group = group; - - return F._start(F.opts.index); - }, - - // Cancel image loading or abort ajax request - cancel: function () { - var coming = F.coming; - - if (!coming || false === F.trigger('onCancel')) { - return; - } - - F.hideLoading(); - - if (F.ajaxLoad) { - F.ajaxLoad.abort(); - } - - F.ajaxLoad = null; - - if (F.imgPreload) { - F.imgPreload.onload = F.imgPreload.onerror = null; - } - - if (coming.wrap) { - coming.wrap.stop(true, true).trigger('onReset').remove(); - } - - F.coming = null; - - // If the first item has been canceled, then clear everything - if (!F.current) { - F._afterZoomOut( coming ); - } - }, - - // Start closing animation if is open; remove immediately if opening/closing - close: function (event) { - F.cancel(); - - if (false === F.trigger('beforeClose')) { - return; - } - - F.unbindEvents(); - - if (!F.isActive) { - return; - } - - if (!F.isOpen || event === true) { - $('.fancybox-wrap').stop(true).trigger('onReset').remove(); - - F._afterZoomOut(); - - } else { - F.isOpen = F.isOpened = false; - F.isClosing = true; - - $('.fancybox-item, .fancybox-nav').remove(); - - F.wrap.stop(true, true).removeClass('fancybox-opened'); - - F.transitions[ F.current.closeMethod ](); - } - }, - - // Manage slideshow: - // $.fancybox.play(); - toggle slideshow - // $.fancybox.play( true ); - start - // $.fancybox.play( false ); - stop - play: function ( action ) { - var clear = function () { - clearTimeout(F.player.timer); - }, - set = function () { - clear(); - - if (F.current && F.player.isActive) { - F.player.timer = setTimeout(F.next, F.current.playSpeed); - } - }, - stop = function () { - clear(); - - D.unbind('.player'); - - F.player.isActive = false; - - F.trigger('onPlayEnd'); - }, - start = function () { - if (F.current && (F.current.loop || F.current.index < F.group.length - 1)) { - F.player.isActive = true; - - D.bind({ - 'onCancel.player beforeClose.player' : stop, - 'onUpdate.player' : set, - 'beforeLoad.player' : clear - }); - - set(); - - F.trigger('onPlayStart'); - } - }; - - if (action === true || (!F.player.isActive && action !== false)) { - start(); - } else { - stop(); - } - }, - - // Navigate to next gallery item - next: function ( direction ) { - var current = F.current; - - if (current) { - if (!isString(direction)) { - direction = current.direction.next; - } - - F.jumpto(current.index + 1, direction, 'next'); - } - }, - - // Navigate to previous gallery item - prev: function ( direction ) { - var current = F.current; - - if (current) { - if (!isString(direction)) { - direction = current.direction.prev; - } - - F.jumpto(current.index - 1, direction, 'prev'); - } - }, - - // Navigate to gallery item by index - jumpto: function ( index, direction, router ) { - var current = F.current; - - if (!current) { - return; - } - - index = getScalar(index); - - F.direction = direction || current.direction[ (index >= current.index ? 'next' : 'prev') ]; - F.router = router || 'jumpto'; - - if (current.loop) { - if (index < 0) { - index = current.group.length + (index % current.group.length); - } - - index = index % current.group.length; - } - - if (current.group[ index ] !== undefined) { - F.cancel(); - - F._start(index); - } - }, - - // Center inside viewport and toggle position type to fixed or absolute if needed - reposition: function (e, onlyAbsolute) { - var current = F.current, - wrap = current ? current.wrap : null, - pos; - - if (wrap) { - pos = F._getPosition(onlyAbsolute); - - if (e && e.type === 'scroll') { - delete pos.position; - - wrap.stop(true, true).animate(pos, 200); - - } else { - wrap.css(pos); - - current.pos = $.extend({}, current.dim, pos); - } - } - }, - - update: function (e) { - var type = (e && e.type), - anyway = !type || type === 'orientationchange'; - - if (anyway) { - clearTimeout(didUpdate); - - didUpdate = null; - } - - if (!F.isOpen || didUpdate) { - return; - } - - didUpdate = setTimeout(function() { - var current = F.current; - - if (!current || F.isClosing) { - return; - } - - F.wrap.removeClass('fancybox-tmp'); - - if (anyway || type === 'load' || (type === 'resize' && current.autoResize)) { - F._setDimension(); - } - - if (!(type === 'scroll' && current.canShrink)) { - F.reposition(e); - } - - F.trigger('onUpdate'); - - didUpdate = null; - - }, (anyway && !isTouch ? 0 : 300)); - }, - - // Shrink content to fit inside viewport or restore if resized - toggle: function ( action ) { - if (F.isOpen) { - F.current.fitToView = $.type(action) === "boolean" ? action : !F.current.fitToView; - - // Help browser to restore document dimensions - if (isTouch) { - F.wrap.removeAttr('style').addClass('fancybox-tmp'); - - F.trigger('onUpdate'); - } - - F.update(); - } - }, - - hideLoading: function () { - D.unbind('.loading'); - - $('#fancybox-loading').remove(); - }, - - showLoading: function () { - var el, viewport; - - F.hideLoading(); - - el = $('<div id="fancybox-loading"><div></div></div>').click(F.cancel).appendTo('body'); - - // If user will press the escape-button, the request will be canceled - D.bind('keydown.loading', function(e) { - if ((e.which || e.keyCode) === 27) { - e.preventDefault(); - - F.cancel(); - } - }); - - if (!F.defaults.fixed) { - viewport = F.getViewport(); - - el.css({ - position : 'absolute', - top : (viewport.h * 0.5) + viewport.y, - left : (viewport.w * 0.5) + viewport.x - }); - } - }, - - getViewport: function () { - var locked = (F.current && F.current.locked) || false, - rez = { - x: W.scrollLeft(), - y: W.scrollTop() - }; - - if (locked) { - rez.w = locked[0].clientWidth; - rez.h = locked[0].clientHeight; - - } else { - // See http://bugs.jquery.com/ticket/6724 - rez.w = isTouch && window.innerWidth ? window.innerWidth : W.width(); - rez.h = isTouch && window.innerHeight ? window.innerHeight : W.height(); - } - - return rez; - }, - - // Unbind the keyboard / clicking actions - unbindEvents: function () { - if (F.wrap && isQuery(F.wrap)) { - F.wrap.unbind('.fb'); - } - - D.unbind('.fb'); - W.unbind('.fb'); - }, - - bindEvents: function () { - var current = F.current, - keys; - - if (!current) { - return; - } - - // Changing document height on iOS devices triggers a 'resize' event, - // that can change document height... repeating infinitely - W.bind('orientationchange.fb' + (isTouch ? '' : ' resize.fb') + (current.autoCenter && !current.locked ? ' scroll.fb' : ''), F.update); - - keys = current.keys; - - if (keys) { - D.bind('keydown.fb', function (e) { - var code = e.which || e.keyCode, - target = e.target || e.srcElement; - - // Skip esc key if loading, because showLoading will cancel preloading - if (code === 27 && F.coming) { - return false; - } - - // Ignore key combinations and key events within form elements - if (!e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey && !(target && (target.type || $(target).is('[contenteditable]')))) { - $.each(keys, function(i, val) { - if (current.group.length > 1 && val[ code ] !== undefined) { - F[ i ]( val[ code ] ); - - e.preventDefault(); - return false; - } - - if ($.inArray(code, val) > -1) { - F[ i ] (); - - e.preventDefault(); - return false; - } - }); - } - }); - } - - if ($.fn.mousewheel && current.mouseWheel) { - F.wrap.bind('mousewheel.fb', function (e, delta, deltaX, deltaY) { - var target = e.target || null, - parent = $(target), - canScroll = false; - - while (parent.length) { - if (canScroll || parent.is('.fancybox-skin') || parent.is('.fancybox-wrap')) { - break; - } - - canScroll = isScrollable( parent[0] ); - parent = $(parent).parent(); - } - - if (delta !== 0 && !canScroll) { - if (F.group.length > 1 && !current.canShrink) { - if (deltaY > 0 || deltaX > 0) { - F.prev( deltaY > 0 ? 'down' : 'left' ); - - } else if (deltaY < 0 || deltaX < 0) { - F.next( deltaY < 0 ? 'up' : 'right' ); - } - - e.preventDefault(); - } - } - }); - } - }, - - trigger: function (event, o) { - var ret, obj = o || F.coming || F.current; - - if (!obj) { - return; - } - - if ($.isFunction( obj[event] )) { - ret = obj[event].apply(obj, Array.prototype.slice.call(arguments, 1)); - } - - if (ret === false) { - return false; - } - - if (obj.helpers) { - $.each(obj.helpers, function (helper, opts) { - if (opts && F.helpers[helper] && $.isFunction(F.helpers[helper][event])) { - F.helpers[helper][event]($.extend(true, {}, F.helpers[helper].defaults, opts), obj); - } - }); - } - - D.trigger(event); - }, - - isImage: function (str) { - return isString(str) && str.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i); - }, - - isSWF: function (str) { - return isString(str) && str.match(/\.(swf)((\?|#).*)?$/i); - }, - - _start: function (index) { - var coming = {}, - obj, - href, - type, - margin, - padding; - - index = getScalar( index ); - obj = F.group[ index ] || null; - - if (!obj) { - return false; - } - - coming = $.extend(true, {}, F.opts, obj); - - // Convert margin and padding properties to array - top, right, bottom, left - margin = coming.margin; - padding = coming.padding; - - if ($.type(margin) === 'number') { - coming.margin = [margin, margin, margin, margin]; - } - - if ($.type(padding) === 'number') { - coming.padding = [padding, padding, padding, padding]; - } - - // 'modal' propery is just a shortcut - if (coming.modal) { - $.extend(true, coming, { - closeBtn : false, - closeClick : false, - nextClick : false, - arrows : false, - mouseWheel : false, - keys : null, - helpers: { - overlay : { - closeClick : false - } - } - }); - } - - // 'autoSize' property is a shortcut, too - if (coming.autoSize) { - coming.autoWidth = coming.autoHeight = true; - } - - if (coming.width === 'auto') { - coming.autoWidth = true; - } - - if (coming.height === 'auto') { - coming.autoHeight = true; - } - - /* - * Add reference to the group, so it`s possible to access from callbacks, example: - * afterLoad : function() { - * this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : ''); - * } - */ - - coming.group = F.group; - coming.index = index; - - // Give a chance for callback or helpers to update coming item (type, title, etc) - F.coming = coming; - - if (false === F.trigger('beforeLoad')) { - F.coming = null; - - return; - } - - type = coming.type; - href = coming.href; - - if (!type) { - F.coming = null; - - //If we can not determine content type then drop silently or display next/prev item if looping through gallery - if (F.current && F.router && F.router !== 'jumpto') { - F.current.index = index; - - return F[ F.router ]( F.direction ); - } - - return false; - } - - F.isActive = true; - - if (type === 'image' || type === 'swf') { - coming.autoHeight = coming.autoWidth = false; - coming.scrolling = 'visible'; - } - - if (type === 'image') { - coming.aspectRatio = true; - } - - if (type === 'iframe' && isTouch) { - coming.scrolling = 'scroll'; - } - - // Build the neccessary markup - coming.wrap = $(coming.tpl.wrap).addClass('fancybox-' + (isTouch ? 'mobile' : 'desktop') + ' fancybox-type-' + type + ' fancybox-tmp ' + coming.wrapCSS).appendTo( coming.parent || 'body' ); - - $.extend(coming, { - skin : $('.fancybox-skin', coming.wrap), - outer : $('.fancybox-outer', coming.wrap), - inner : $('.fancybox-inner', coming.wrap) - }); - - $.each(["Top", "Right", "Bottom", "Left"], function(i, v) { - coming.skin.css('padding' + v, getValue(coming.padding[ i ])); - }); - - F.trigger('onReady'); - - // Check before try to load; 'inline' and 'html' types need content, others - href - if (type === 'inline' || type === 'html') { - if (!coming.content || !coming.content.length) { - return F._error( 'content' ); - } - - } else if (!href) { - return F._error( 'href' ); - } - - if (type === 'image') { - F._loadImage(); - - } else if (type === 'ajax') { - F._loadAjax(); - - } else if (type === 'iframe') { - F._loadIframe(); - - } else { - F._afterLoad(); - } - }, - - _error: function ( type ) { - $.extend(F.coming, { - type : 'html', - autoWidth : true, - autoHeight : true, - minWidth : 0, - minHeight : 0, - scrolling : 'no', - hasError : type, - content : F.coming.tpl.error - }); - - F._afterLoad(); - }, - - _loadImage: function () { - // Reset preload image so it is later possible to check "complete" property - var img = F.imgPreload = new Image(); - - img.onload = function () { - this.onload = this.onerror = null; - - F.coming.width = this.width / F.opts.pixelRatio; - F.coming.height = this.height / F.opts.pixelRatio; - - F._afterLoad(); - }; - - img.onerror = function () { - this.onload = this.onerror = null; - - F._error( 'image' ); - }; - - img.src = F.coming.href; - - if (img.complete !== true) { - F.showLoading(); - } - }, - - _loadAjax: function () { - var coming = F.coming; - - F.showLoading(); - - F.ajaxLoad = $.ajax($.extend({}, coming.ajax, { - url: coming.href, - error: function (jqXHR, textStatus) { - if (F.coming && textStatus !== 'abort') { - F._error( 'ajax', jqXHR ); - - } else { - F.hideLoading(); - } - }, - success: function (data, textStatus) { - if (textStatus === 'success') { - coming.content = data; - - F._afterLoad(); - } - } - })); - }, - - _loadIframe: function() { - var coming = F.coming, - iframe = $(coming.tpl.iframe.replace(/\{rnd\}/g, new Date().getTime())) - .attr('scrolling', isTouch ? 'auto' : coming.iframe.scrolling) - .attr('src', coming.href); - - // This helps IE - $(coming.wrap).bind('onReset', function () { - try { - $(this).find('iframe').hide().attr('src', '//about:blank').end().empty(); - } catch (e) {} - }); - - if (coming.iframe.preload) { - F.showLoading(); - - iframe.one('load', function() { - $(this).data('ready', 1); - - // iOS will lose scrolling if we resize - if (!isTouch) { - $(this).bind('load.fb', F.update); - } - - // Without this trick: - // - iframe won't scroll on iOS devices - // - IE7 sometimes displays empty iframe - $(this).parents('.fancybox-wrap').width('100%').removeClass('fancybox-tmp').show(); - - F._afterLoad(); - }); - } - - coming.content = iframe.appendTo( coming.inner ); - - if (!coming.iframe.preload) { - F._afterLoad(); - } - }, - - _preloadImages: function() { - var group = F.group, - current = F.current, - len = group.length, - cnt = current.preload ? Math.min(current.preload, len - 1) : 0, - item, - i; - - for (i = 1; i <= cnt; i += 1) { - item = group[ (current.index + i ) % len ]; - - if (item.type === 'image' && item.href) { - new Image().src = item.href; - } - } - }, - - _afterLoad: function () { - var coming = F.coming, - previous = F.current, - placeholder = 'fancybox-placeholder', - current, - content, - type, - scrolling, - href, - embed; - - F.hideLoading(); - - if (!coming || F.isActive === false) { - return; - } - - if (false === F.trigger('afterLoad', coming, previous)) { - coming.wrap.stop(true).trigger('onReset').remove(); - - F.coming = null; - - return; - } - - if (previous) { - F.trigger('beforeChange', previous); - - previous.wrap.stop(true).removeClass('fancybox-opened') - .find('.fancybox-item, .fancybox-nav') - .remove(); - } - - F.unbindEvents(); - - current = coming; - content = coming.content; - type = coming.type; - scrolling = coming.scrolling; - - $.extend(F, { - wrap : current.wrap, - skin : current.skin, - outer : current.outer, - inner : current.inner, - current : current, - previous : previous - }); - - href = current.href; - - switch (type) { - case 'inline': - case 'ajax': - case 'html': - if (current.selector) { - content = $('<div>').html(content).find(current.selector); - - } else if (isQuery(content)) { - if (!content.data(placeholder)) { - content.data(placeholder, $('<div class="' + placeholder + '"></div>').insertAfter( content ).hide() ); - } - - content = content.show().detach(); - - current.wrap.bind('onReset', function () { - if ($(this).find(content).length) { - content.hide().replaceAll( content.data(placeholder) ).data(placeholder, false); - } - }); - } - break; - - case 'image': - content = current.tpl.image.replace('{href}', href); - break; - - case 'swf': - content = '<object id="fancybox-swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="movie" value="' + href + '"></param>'; - embed = ''; - - $.each(current.swf, function(name, val) { - content += '<param name="' + name + '" value="' + val + '"></param>'; - embed += ' ' + name + '="' + val + '"'; - }); - - content += '<embed src="' + href + '" type="application/x-shockwave-flash" width="100%" height="100%"' + embed + '></embed></object>'; - break; - } - - if (!(isQuery(content) && content.parent().is(current.inner))) { - current.inner.append( content ); - } - - // Give a chance for helpers or callbacks to update elements - F.trigger('beforeShow'); - - // Set scrolling before calculating dimensions - current.inner.css('overflow', scrolling === 'yes' ? 'scroll' : (scrolling === 'no' ? 'hidden' : scrolling)); - - // Set initial dimensions and start position - F._setDimension(); - - F.reposition(); - - F.isOpen = false; - F.coming = null; - - F.bindEvents(); - - if (!F.isOpened) { - $('.fancybox-wrap').not( current.wrap ).stop(true).trigger('onReset').remove(); - - } else if (previous.prevMethod) { - F.transitions[ previous.prevMethod ](); - } - - F.transitions[ F.isOpened ? current.nextMethod : current.openMethod ](); - - F._preloadImages(); - }, - - _setDimension: function () { - var viewport = F.getViewport(), - steps = 0, - canShrink = false, - canExpand = false, - wrap = F.wrap, - skin = F.skin, - inner = F.inner, - current = F.current, - width = current.width, - height = current.height, - minWidth = current.minWidth, - minHeight = current.minHeight, - maxWidth = current.maxWidth, - maxHeight = current.maxHeight, - scrolling = current.scrolling, - scrollOut = current.scrollOutside ? current.scrollbarWidth : 0, - margin = current.margin, - wMargin = getScalar(margin[1] + margin[3]), - hMargin = getScalar(margin[0] + margin[2]), - wPadding, - hPadding, - wSpace, - hSpace, - origWidth, - origHeight, - origMaxWidth, - origMaxHeight, - ratio, - width_, - height_, - maxWidth_, - maxHeight_, - iframe, - body; - - // Reset dimensions so we could re-check actual size - wrap.add(skin).add(inner).width('auto').height('auto').removeClass('fancybox-tmp'); - - wPadding = getScalar(skin.outerWidth(true) - skin.width()); - hPadding = getScalar(skin.outerHeight(true) - skin.height()); - - // Any space between content and viewport (margin, padding, border, title) - wSpace = wMargin + wPadding; - hSpace = hMargin + hPadding; - - origWidth = isPercentage(width) ? (viewport.w - wSpace) * getScalar(width) / 100 : width; - origHeight = isPercentage(height) ? (viewport.h - hSpace) * getScalar(height) / 100 : height; - - if (current.type === 'iframe') { - iframe = current.content; - - if (current.autoHeight && iframe.data('ready') === 1) { - try { - if (iframe[0].contentWindow.document.location) { - inner.width( origWidth ).height(9999); - - body = iframe.contents().find('body'); - - if (scrollOut) { - body.css('overflow-x', 'hidden'); - } - - origHeight = body.outerHeight(true); - } - - } catch (e) {} - } - - } else if (current.autoWidth || current.autoHeight) { - inner.addClass( 'fancybox-tmp' ); - - // Set width or height in case we need to calculate only one dimension - if (!current.autoWidth) { - inner.width( origWidth ); - } - - if (!current.autoHeight) { - inner.height( origHeight ); - } - - if (current.autoWidth) { - origWidth = inner.width(); - } - - if (current.autoHeight) { - origHeight = inner.height(); - } - - inner.removeClass( 'fancybox-tmp' ); - } - - width = getScalar( origWidth ); - height = getScalar( origHeight ); - - ratio = origWidth / origHeight; - - // Calculations for the content - minWidth = getScalar(isPercentage(minWidth) ? getScalar(minWidth, 'w') - wSpace : minWidth); - maxWidth = getScalar(isPercentage(maxWidth) ? getScalar(maxWidth, 'w') - wSpace : maxWidth); - - minHeight = getScalar(isPercentage(minHeight) ? getScalar(minHeight, 'h') - hSpace : minHeight); - maxHeight = getScalar(isPercentage(maxHeight) ? getScalar(maxHeight, 'h') - hSpace : maxHeight); - - // These will be used to determine if wrap can fit in the viewport - origMaxWidth = maxWidth; - origMaxHeight = maxHeight; - - if (current.fitToView) { - maxWidth = Math.min(viewport.w - wSpace, maxWidth); - maxHeight = Math.min(viewport.h - hSpace, maxHeight); - } - - maxWidth_ = viewport.w - wMargin; - maxHeight_ = viewport.h - hMargin; - - if (current.aspectRatio) { - if (width > maxWidth) { - width = maxWidth; - height = getScalar(width / ratio); - } - - if (height > maxHeight) { - height = maxHeight; - width = getScalar(height * ratio); - } - - if (width < minWidth) { - width = minWidth; - height = getScalar(width / ratio); - } - - if (height < minHeight) { - height = minHeight; - width = getScalar(height * ratio); - } - - } else { - width = Math.max(minWidth, Math.min(width, maxWidth)); - - if (current.autoHeight && current.type !== 'iframe') { - inner.width( width ); - - height = inner.height(); - } - - height = Math.max(minHeight, Math.min(height, maxHeight)); - } - - // Try to fit inside viewport (including the title) - if (current.fitToView) { - inner.width( width ).height( height ); - - wrap.width( width + wPadding ); - - // Real wrap dimensions - width_ = wrap.width(); - height_ = wrap.height(); - - if (current.aspectRatio) { - while ((width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight) { - if (steps++ > 19) { - break; - } - - height = Math.max(minHeight, Math.min(maxHeight, height - 10)); - width = getScalar(height * ratio); - - if (width < minWidth) { - width = minWidth; - height = getScalar(width / ratio); - } - - if (width > maxWidth) { - width = maxWidth; - height = getScalar(width / ratio); - } - - inner.width( width ).height( height ); - - wrap.width( width + wPadding ); - - width_ = wrap.width(); - height_ = wrap.height(); - } - - } else { - width = Math.max(minWidth, Math.min(width, width - (width_ - maxWidth_))); - height = Math.max(minHeight, Math.min(height, height - (height_ - maxHeight_))); - } - } - - if (scrollOut && scrolling === 'auto' && height < origHeight && (width + wPadding + scrollOut) < maxWidth_) { - width += scrollOut; - } - - inner.width( width ).height( height ); - - wrap.width( width + wPadding ); - - width_ = wrap.width(); - height_ = wrap.height(); - - canShrink = (width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight; - canExpand = current.aspectRatio ? (width < origMaxWidth && height < origMaxHeight && width < origWidth && height < origHeight) : ((width < origMaxWidth || height < origMaxHeight) && (width < origWidth || height < origHeight)); - - $.extend(current, { - dim : { - width : getValue( width_ ), - height : getValue( height_ ) - }, - origWidth : origWidth, - origHeight : origHeight, - canShrink : canShrink, - canExpand : canExpand, - wPadding : wPadding, - hPadding : hPadding, - wrapSpace : height_ - skin.outerHeight(true), - skinSpace : skin.height() - height - }); - - if (!iframe && current.autoHeight && height > minHeight && height < maxHeight && !canExpand) { - inner.height('auto'); - } - }, - - _getPosition: function (onlyAbsolute) { - var current = F.current, - viewport = F.getViewport(), - margin = current.margin, - width = F.wrap.width() + margin[1] + margin[3], - height = F.wrap.height() + margin[0] + margin[2], - rez = { - position: 'absolute', - top : margin[0], - left : margin[3] - }; - - if (current.autoCenter && current.fixed && !onlyAbsolute && height <= viewport.h && width <= viewport.w) { - rez.position = 'fixed'; - - } else if (!current.locked) { - rez.top += viewport.y; - rez.left += viewport.x; - } - - rez.top = getValue(Math.max(rez.top, rez.top + ((viewport.h - height) * current.topRatio))); - rez.left = getValue(Math.max(rez.left, rez.left + ((viewport.w - width) * current.leftRatio))); - - return rez; - }, - - _afterZoomIn: function () { - var current = F.current; - - if (!current) { - return; - } - - F.isOpen = F.isOpened = true; - - F.wrap.css('overflow', 'visible').addClass('fancybox-opened'); - - F.update(); - - // Assign a click event - if ( current.closeClick || (current.nextClick && F.group.length > 1) ) { - F.inner.css('cursor', 'pointer').bind('click.fb', function(e) { - if (!$(e.target).is('a') && !$(e.target).parent().is('a')) { - e.preventDefault(); - - F[ current.closeClick ? 'close' : 'next' ](); - } - }); - } - - // Create a close button - if (current.closeBtn) { - $(current.tpl.closeBtn).appendTo(F.skin).bind('click.fb', function(e) { - e.preventDefault(); - - F.close(); - }); - } - - // Create navigation arrows - if (current.arrows && F.group.length > 1) { - if (current.loop || current.index > 0) { - $(current.tpl.prev).appendTo(F.outer).bind('click.fb', F.prev); - } - - if (current.loop || current.index < F.group.length - 1) { - $(current.tpl.next).appendTo(F.outer).bind('click.fb', F.next); - } - } - - F.trigger('afterShow'); - - // Stop the slideshow if this is the last item - if (!current.loop && current.index === current.group.length - 1) { - F.play( false ); - - } else if (F.opts.autoPlay && !F.player.isActive) { - F.opts.autoPlay = false; - - F.play(); - } - }, - - _afterZoomOut: function ( obj ) { - obj = obj || F.current; - - $('.fancybox-wrap').trigger('onReset').remove(); - - $.extend(F, { - group : {}, - opts : {}, - router : false, - current : null, - isActive : false, - isOpened : false, - isOpen : false, - isClosing : false, - wrap : null, - skin : null, - outer : null, - inner : null - }); - - F.trigger('afterClose', obj); - } - }); - - /* - * Default transitions - */ - - F.transitions = { - getOrigPosition: function () { - var current = F.current, - element = current.element, - orig = current.orig, - pos = {}, - width = 50, - height = 50, - hPadding = current.hPadding, - wPadding = current.wPadding, - viewport = F.getViewport(); - - if (!orig && current.isDom && element.is(':visible')) { - orig = element.find('img:first'); - - if (!orig.length) { - orig = element; - } - } - - if (isQuery(orig)) { - pos = orig.offset(); - - if (orig.is('img')) { - width = orig.outerWidth(); - height = orig.outerHeight(); - } - - } else { - pos.top = viewport.y + (viewport.h - height) * current.topRatio; - pos.left = viewport.x + (viewport.w - width) * current.leftRatio; - } - - if (F.wrap.css('position') === 'fixed' || current.locked) { - pos.top -= viewport.y; - pos.left -= viewport.x; - } - - pos = { - top : getValue(pos.top - hPadding * current.topRatio), - left : getValue(pos.left - wPadding * current.leftRatio), - width : getValue(width + wPadding), - height : getValue(height + hPadding) - }; - - return pos; - }, - - step: function (now, fx) { - var ratio, - padding, - value, - prop = fx.prop, - current = F.current, - wrapSpace = current.wrapSpace, - skinSpace = current.skinSpace; - - if (prop === 'width' || prop === 'height') { - ratio = fx.end === fx.start ? 1 : (now - fx.start) / (fx.end - fx.start); - - if (F.isClosing) { - ratio = 1 - ratio; - } - - padding = prop === 'width' ? current.wPadding : current.hPadding; - value = now - padding; - - F.skin[ prop ]( getScalar( prop === 'width' ? value : value - (wrapSpace * ratio) ) ); - F.inner[ prop ]( getScalar( prop === 'width' ? value : value - (wrapSpace * ratio) - (skinSpace * ratio) ) ); - } - }, - - zoomIn: function () { - var current = F.current, - startPos = current.pos, - effect = current.openEffect, - elastic = effect === 'elastic', - endPos = $.extend({opacity : 1}, startPos); - - // Remove "position" property that breaks older IE - delete endPos.position; - - if (elastic) { - startPos = this.getOrigPosition(); - - if (current.openOpacity) { - startPos.opacity = 0.1; - } - - } else if (effect === 'fade') { - startPos.opacity = 0.1; - } - - F.wrap.css(startPos).animate(endPos, { - duration : effect === 'none' ? 0 : current.openSpeed, - easing : current.openEasing, - step : elastic ? this.step : null, - complete : F._afterZoomIn - }); - }, - - zoomOut: function () { - var current = F.current, - effect = current.closeEffect, - elastic = effect === 'elastic', - endPos = {opacity : 0.1}; - - if (elastic) { - endPos = this.getOrigPosition(); - - if (current.closeOpacity) { - endPos.opacity = 0.1; - } - } - - F.wrap.animate(endPos, { - duration : effect === 'none' ? 0 : current.closeSpeed, - easing : current.closeEasing, - step : elastic ? this.step : null, - complete : F._afterZoomOut - }); - }, - - changeIn: function () { - var current = F.current, - effect = current.nextEffect, - startPos = current.pos, - endPos = { opacity : 1 }, - direction = F.direction, - distance = 200, - field; - - startPos.opacity = 0.1; - - if (effect === 'elastic') { - field = direction === 'down' || direction === 'up' ? 'top' : 'left'; - - if (direction === 'down' || direction === 'right') { - startPos[ field ] = getValue(getScalar(startPos[ field ]) - distance); - endPos[ field ] = '+=' + distance + 'px'; - - } else { - startPos[ field ] = getValue(getScalar(startPos[ field ]) + distance); - endPos[ field ] = '-=' + distance + 'px'; - } - } - - // Workaround for http://bugs.jquery.com/ticket/12273 - if (effect === 'none') { - F._afterZoomIn(); - - } else { - F.wrap.css(startPos).animate(endPos, { - duration : current.nextSpeed, - easing : current.nextEasing, - complete : F._afterZoomIn - }); - } - }, - - changeOut: function () { - var previous = F.previous, - effect = previous.prevEffect, - endPos = { opacity : 0.1 }, - direction = F.direction, - distance = 200; - - if (effect === 'elastic') { - endPos[ direction === 'down' || direction === 'up' ? 'top' : 'left' ] = ( direction === 'up' || direction === 'left' ? '-' : '+' ) + '=' + distance + 'px'; - } - - previous.wrap.animate(endPos, { - duration : effect === 'none' ? 0 : previous.prevSpeed, - easing : previous.prevEasing, - complete : function () { - $(this).trigger('onReset').remove(); - } - }); - } - }; - - /* - * Overlay helper - */ - - F.helpers.overlay = { - defaults : { - closeClick : true, // if true, fancyBox will be closed when user clicks on the overlay - speedOut : 200, // duration of fadeOut animation - showEarly : true, // indicates if should be opened immediately or wait until the content is ready - css : {}, // custom CSS properties - locked : !isTouch, // if true, the content will be locked into overlay - fixed : true // if false, the overlay CSS position property will not be set to "fixed" - }, - - overlay : null, // current handle - fixed : false, // indicates if the overlay has position "fixed" - el : $('html'), // element that contains "the lock" - - // Public methods - create : function(opts) { - opts = $.extend({}, this.defaults, opts); - - if (this.overlay) { - this.close(); - } - - this.overlay = $('<div class="fancybox-overlay"></div>').appendTo( F.coming ? F.coming.parent : opts.parent ); - this.fixed = false; - - if (opts.fixed && F.defaults.fixed) { - this.overlay.addClass('fancybox-overlay-fixed'); - - this.fixed = true; - } - }, - - open : function(opts) { - var that = this; - - opts = $.extend({}, this.defaults, opts); - - if (this.overlay) { - this.overlay.unbind('.overlay').width('auto').height('auto'); - - } else { - this.create(opts); - } - - if (!this.fixed) { - W.bind('resize.overlay', $.proxy( this.update, this) ); - - this.update(); - } - - if (opts.closeClick) { - this.overlay.bind('click.overlay', function(e) { - if ($(e.target).hasClass('fancybox-overlay')) { - if (F.isActive) { - F.close(); - } else { - that.close(); - } - - return false; - } - }); - } - - this.overlay.css( opts.css ).show(); - }, - - close : function() { - var scrollV, scrollH; - - W.unbind('resize.overlay'); - - if (this.el.hasClass('fancybox-lock')) { - $('.fancybox-margin').removeClass('fancybox-margin'); - - scrollV = W.scrollTop(); - scrollH = W.scrollLeft(); - - this.el.removeClass('fancybox-lock'); - - W.scrollTop( scrollV ).scrollLeft( scrollH ); - } - - $('.fancybox-overlay').remove().hide(); - - $.extend(this, { - overlay : null, - fixed : false - }); - }, - - // Private, callbacks - - update : function () { - var width = '100%', offsetWidth; - - // Reset width/height so it will not mess - this.overlay.width(width).height('100%'); - - // jQuery does not return reliable result for IE - if (IE) { - offsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth); - - if (D.width() > offsetWidth) { - width = D.width(); - } - - } else if (D.width() > W.width()) { - width = D.width(); - } - - this.overlay.width(width).height(D.height()); - }, - - // This is where we can manipulate DOM, because later it would cause iframes to reload - onReady : function (opts, obj) { - var overlay = this.overlay; - - $('.fancybox-overlay').stop(true, true); - - if (!overlay) { - this.create(opts); - } - - if (opts.locked && this.fixed && obj.fixed) { - if (!overlay) { - this.margin = D.height() > W.height() ? $('html').css('margin-right').replace("px", "") : false; - } - - obj.locked = this.overlay.append( obj.wrap ); - obj.fixed = false; - } - - if (opts.showEarly === true) { - this.beforeShow.apply(this, arguments); - } - }, - - beforeShow : function(opts, obj) { - var scrollV, scrollH; - - if (obj.locked) { - if (this.margin !== false) { - $('*').filter(function(){ - return ($(this).css('position') === 'fixed' && !$(this).hasClass("fancybox-overlay") && !$(this).hasClass("fancybox-wrap") ); - }).addClass('fancybox-margin'); - - this.el.addClass('fancybox-margin'); - } - - scrollV = W.scrollTop(); - scrollH = W.scrollLeft(); - - this.el.addClass('fancybox-lock'); - - W.scrollTop( scrollV ).scrollLeft( scrollH ); - } - - this.open(opts); - }, - - onUpdate : function() { - if (!this.fixed) { - this.update(); - } - }, - - afterClose: function (opts) { - // Remove overlay if exists and fancyBox is not opening - // (e.g., it is not being open using afterClose callback) - //if (this.overlay && !F.isActive) { - if (this.overlay && !F.coming) { - this.overlay.fadeOut(opts.speedOut, $.proxy( this.close, this )); - } - } - }; - - /* - * Title helper - */ - - F.helpers.title = { - defaults : { - type : 'float', // 'float', 'inside', 'outside' or 'over', - position : 'bottom' // 'top' or 'bottom' - }, - - beforeShow: function (opts) { - var current = F.current, - text = current.title, - type = opts.type, - title, - target; - - if ($.isFunction(text)) { - text = text.call(current.element, current); - } - - if (!isString(text) || $.trim(text) === '') { - return; - } - - title = $('<div class="fancybox-title fancybox-title-' + type + '-wrap">' + text + '</div>'); - - switch (type) { - case 'inside': - target = F.skin; - break; - - case 'outside': - target = F.wrap; - break; - - case 'over': - target = F.inner; - break; - - default: // 'float' - target = F.skin; - - title.appendTo('body'); - - if (IE) { - title.width( title.width() ); - } - - title.wrapInner('<span class="child"></span>'); - - //Increase bottom margin so this title will also fit into viewport - F.current.margin[2] += Math.abs( getScalar(title.css('margin-bottom')) ); - break; - } - - title[ (opts.position === 'top' ? 'prependTo' : 'appendTo') ](target); - } - }; - - // jQuery plugin initialization - $.fn.fancybox = function (options) { - var index, - that = $(this), - selector = this.selector || '', - run = function(e) { - var what = $(this).blur(), idx = index, relType, relVal; - - if (!(e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) && !what.is('.fancybox-wrap')) { - relType = options.groupAttr || 'data-fancybox-group'; - relVal = what.attr(relType); - - if (!relVal) { - relType = 'rel'; - relVal = what.get(0)[ relType ]; - } - - if (relVal && relVal !== '' && relVal !== 'nofollow') { - what = selector.length ? $(selector) : that; - what = what.filter('[' + relType + '="' + relVal + '"]'); - idx = what.index(this); - } - - options.index = idx; - - // Stop an event from bubbling if everything is fine - if (F.open(what, options) !== false) { - e.preventDefault(); - } - } - }; - - options = options || {}; - index = options.index || 0; - - if (!selector || options.live === false) { - that.unbind('click.fb-start').bind('click.fb-start', run); - - } else { - D.undelegate(selector, 'click.fb-start').delegate(selector + ":not('.fancybox-item, .fancybox-nav')", 'click.fb-start', run); - } - - this.filter('[data-fancybox-start=1]').trigger('click'); - - return this; - }; - - // Tests that need a body at doc ready - D.ready(function() { - var w1, w2; - - if ( $.scrollbarWidth === undefined ) { - // http://benalman.com/projects/jquery-misc-plugins/#scrollbarwidth - $.scrollbarWidth = function() { - var parent = $('<div style="width:50px;height:50px;overflow:auto"><div/></div>').appendTo('body'), - child = parent.children(), - width = child.innerWidth() - child.height( 99 ).innerWidth(); - - parent.remove(); - - return width; - }; - } - - if ( $.support.fixedPosition === undefined ) { - $.support.fixedPosition = (function() { - var elem = $('<div style="position:fixed;top:20px;"></div>').appendTo('body'), - fixed = ( elem[0].offsetTop === 20 || elem[0].offsetTop === 15 ); - - elem.remove(); - - return fixed; - }()); - } - - $.extend(F.defaults, { - scrollbarWidth : $.scrollbarWidth(), - fixed : $.support.fixedPosition, - parent : $('body') - }); - - //Get real width of page scroll-bar - w1 = $(window).width(); - - H.addClass('fancybox-lock-test'); - - w2 = $(window).width(); - - H.removeClass('fancybox-lock-test'); - - $("<style type='text/css'>.fancybox-margin{margin-right:" + (w2 - w1) + "px;}</style>").appendTo("head"); - }); - -}(window, document, jQuery)); \ No newline at end of file diff --git a/gui/slick/js/lib/bootstrap-formhelpers-2.3.0.js b/gui/slick/js/lib/bootstrap-formhelpers-2.3.0.js deleted file mode 100644 index 9d2da5a66f4b4f5a07e50cfb8889fd116f0d2127..0000000000000000000000000000000000000000 --- a/gui/slick/js/lib/bootstrap-formhelpers-2.3.0.js +++ /dev/null @@ -1,17922 +0,0 @@ -/** -* bootstrap-formhelpers.js v2.3.0 by @vincentlamanna -* Copyright 2013 Vincent Lamanna -* http://www.apache.org/licenses/LICENSE-2.0 -*/ -if (!jQuery) { throw new Error("Bootstrap Form Helpers requires jQuery"); } - -/* ========================================================== - * bootstrap-formhelpers-countries.en_US.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -var BFHCountriesList = { - 'AF': 'Afghanistan', - 'AL': 'Albania', - 'DZ': 'Algeria', - 'AS': 'American Samoa', - 'AD': 'Andorra', - 'AO': 'Angola', - 'AI': 'Anguilla', - 'AQ': 'Antarctica', - 'AG': 'Antigua and Barbuda', - 'AR': 'Argentina', - 'AM': 'Armenia', - 'AW': 'Aruba', - 'AU': 'Australia', - 'AT': 'Austria', - 'AZ': 'Azerbaijan', - 'BH': 'Bahrain', - 'BD': 'Bangladesh', - 'BB': 'Barbados', - 'BY': 'Belarus', - 'BE': 'Belgium', - 'BZ': 'Belize', - 'BJ': 'Benin', - 'BM': 'Bermuda', - 'BT': 'Bhutan', - 'BO': 'Bolivia', - 'BA': 'Bosnia and Herzegovina', - 'BW': 'Botswana', - 'BV': 'Bouvet Island', - 'BR': 'Brazil', - 'IO': 'British Indian Ocean Territory', - 'VG': 'British Virgin Islands', - 'BN': 'Brunei', - 'BG': 'Bulgaria', - 'BF': 'Burkina Faso', - 'BI': 'Burundi', - 'CI': 'Côte d\'Ivoire', - 'KH': 'Cambodia', - 'CM': 'Cameroon', - 'CA': 'Canada', - 'CV': 'Cape Verde', - 'KY': 'Cayman Islands', - 'CF': 'Central African Republic', - 'TD': 'Chad', - 'CL': 'Chile', - 'CN': 'China', - 'CX': 'Christmas Island', - 'CC': 'Cocos (Keeling) Islands', - 'CO': 'Colombia', - 'KM': 'Comoros', - 'CG': 'Congo', - 'CK': 'Cook Islands', - 'CR': 'Costa Rica', - 'HR': 'Croatia', - 'CU': 'Cuba', - 'CY': 'Cyprus', - 'CZ': 'Czech Republic', - 'CD': 'Democratic Republic of the Congo', - 'DK': 'Denmark', - 'DJ': 'Djibouti', - 'DM': 'Dominica', - 'DO': 'Dominican Republic', - 'TP': 'East Timor', - 'EC': 'Ecuador', - 'EG': 'Egypt', - 'SV': 'El Salvador', - 'GQ': 'Equatorial Guinea', - 'ER': 'Eritrea', - 'EE': 'Estonia', - 'ET': 'Ethiopia', - 'FO': 'Faeroe Islands', - 'FK': 'Falkland Islands', - 'FJ': 'Fiji', - 'FI': 'Finland', - 'MK': 'Former Yugoslav Republic of Macedonia', - 'FR': 'France', - 'FX': 'France, Metropolitan', - 'GF': 'French Guiana', - 'PF': 'French Polynesia', - 'TF': 'French Southern Territories', - 'GA': 'Gabon', - 'GE': 'Georgia', - 'DE': 'Germany', - 'GH': 'Ghana', - 'GI': 'Gibraltar', - 'GR': 'Greece', - 'GL': 'Greenland', - 'GD': 'Grenada', - 'GP': 'Guadeloupe', - 'GU': 'Guam', - 'GT': 'Guatemala', - 'GN': 'Guinea', - 'GW': 'Guinea-Bissau', - 'GY': 'Guyana', - 'HT': 'Haiti', - 'HM': 'Heard and Mc Donald Islands', - 'HN': 'Honduras', - 'HK': 'Hong Kong', - 'HU': 'Hungary', - 'IS': 'Iceland', - 'IN': 'India', - 'ID': 'Indonesia', - 'IR': 'Iran', - 'IQ': 'Iraq', - 'IE': 'Ireland', - 'IL': 'Israel', - 'IT': 'Italy', - 'JM': 'Jamaica', - 'JP': 'Japan', - 'JO': 'Jordan', - 'KZ': 'Kazakhstan', - 'KE': 'Kenya', - 'KI': 'Kiribati', - 'KW': 'Kuwait', - 'KG': 'Kyrgyzstan', - 'LA': 'Laos', - 'LV': 'Latvia', - 'LB': 'Lebanon', - 'LS': 'Lesotho', - 'LR': 'Liberia', - 'LY': 'Libya', - 'LI': 'Liechtenstein', - 'LT': 'Lithuania', - 'LU': 'Luxembourg', - 'MO': 'Macau', - 'MG': 'Madagascar', - 'MW': 'Malawi', - 'MY': 'Malaysia', - 'MV': 'Maldives', - 'ML': 'Mali', - 'MT': 'Malta', - 'MH': 'Marshall Islands', - 'MQ': 'Martinique', - 'MR': 'Mauritania', - 'MU': 'Mauritius', - 'YT': 'Mayotte', - 'MX': 'Mexico', - 'FM': 'Micronesia', - 'MD': 'Moldova', - 'MC': 'Monaco', - 'MN': 'Mongolia', - 'ME': 'Montenegro', - 'MS': 'Montserrat', - 'MA': 'Morocco', - 'MZ': 'Mozambique', - 'MM': 'Myanmar', - 'NA': 'Namibia', - 'NR': 'Nauru', - 'NP': 'Nepal', - 'NL': 'Netherlands', - 'AN': 'Netherlands Antilles', - 'NC': 'New Caledonia', - 'NZ': 'New Zealand', - 'NI': 'Nicaragua', - 'NE': 'Niger', - 'NG': 'Nigeria', - 'NU': 'Niue', - 'NF': 'Norfolk Island', - 'KP': 'North Korea', - 'MP': 'Northern Marianas', - 'NO': 'Norway', - 'OM': 'Oman', - 'PK': 'Pakistan', - 'PW': 'Palau', - 'PS': 'Palestine', - 'PA': 'Panama', - 'PG': 'Papua New Guinea', - 'PY': 'Paraguay', - 'PE': 'Peru', - 'PH': 'Philippines', - 'PN': 'Pitcairn Islands', - 'PL': 'Poland', - 'PT': 'Portugal', - 'PR': 'Puerto Rico', - 'QA': 'Qatar', - 'RE': 'Reunion', - 'RO': 'Romania', - 'RU': 'Russia', - 'RW': 'Rwanda', - 'ST': 'São Tomé and Príncipe', - 'SH': 'Saint Helena', - 'PM': 'St. Pierre and Miquelon', - 'KN': 'Saint Kitts and Nevis', - 'LC': 'Saint Lucia', - 'VC': 'Saint Vincent and the Grenadines', - 'WS': 'Samoa', - 'SM': 'San Marino', - 'SA': 'Saudi Arabia', - 'SN': 'Senegal', - 'RS': 'Serbia', - 'SC': 'Seychelles', - 'SL': 'Sierra Leone', - 'SG': 'Singapore', - 'SK': 'Slovakia', - 'SI': 'Slovenia', - 'SB': 'Solomon Islands', - 'SO': 'Somalia', - 'ZA': 'South Africa', - 'GS': 'South Georgia and the South Sandwich Islands', - 'KR': 'South Korea', - 'ES': 'Spain', - 'LK': 'Sri Lanka', - 'SD': 'Sudan', - 'SR': 'Suriname', - 'SJ': 'Svalbard and Jan Mayen Islands', - 'SZ': 'Swaziland', - 'SE': 'Sweden', - 'CH': 'Switzerland', - 'SY': 'Syria', - 'TW': 'Taiwan', - 'TJ': 'Tajikistan', - 'TZ': 'Tanzania', - 'TH': 'Thailand', - 'BS': 'The Bahamas', - 'GM': 'The Gambia', - 'TG': 'Togo', - 'TK': 'Tokelau', - 'TO': 'Tonga', - 'TT': 'Trinidad and Tobago', - 'TN': 'Tunisia', - 'TR': 'Turkey', - 'TM': 'Turkmenistan', - 'TC': 'Turks and Caicos Islands', - 'TV': 'Tuvalu', - 'VI': 'US Virgin Islands', - 'UG': 'Uganda', - 'UA': 'Ukraine', - 'AE': 'United Arab Emirates', - 'GB': 'United Kingdom', - 'US': 'United States', - 'UM': 'United States Minor Outlying Islands', - 'UY': 'Uruguay', - 'UZ': 'Uzbekistan', - 'VU': 'Vanuatu', - 'VA': 'Vatican City', - 'VE': 'Venezuela', - 'VN': 'Vietnam', - 'WF': 'Wallis and Futuna Islands', - 'EH': 'Western Sahara', - 'YE': 'Yemen', - 'ZM': 'Zambia', - 'ZW': 'Zimbabwe' -}; - - /* ========================================================== - * bootstrap-formhelpers-currencies.en_US.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2013 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -var BFHCurrenciesList = { - 'AED':{'label':'United Arab Emirates dirham','currencyflag':'','symbol':'د.إ'}, - 'AFN':{'label':'Afghan afghani','currencyflag':'','symbol':'؋'}, - 'ALL':{'label':'Albanian lek','currencyflag':'','symbol':'L'}, - 'AMD':{'label':'Armenian dram','currencyflag':'','symbol':'դր'}, - 'AOA':{'label':'Angolan kwanza','currencyflag':'','symbol':'Kz'}, - 'ARS':{'label':'Argentine peso','currencyflag':'','symbol':'$'}, - 'AUD':{'label':'Australian dollar','currencyflag':'AUD','symbol':'$'}, - 'AWG':{'label':'Aruban florin','currencyflag':'','symbol':'ƒ'}, - 'AZN':{'label':'Azerbaijani manat','currencyflag':'','symbol':''}, - 'BAM':{'label':'Bosnia and Herzegovina convertible mark','currencyflag':'','symbol':'KM'}, - 'BBD':{'label':'Barbadian dollar','currencyflag':'','symbol':'$'}, - 'BDT':{'label':'Bangladeshi taka','currencyflag':'','symbol':'৳'}, - 'BGN':{'label':'Bulgarian lev','currencyflag':'','symbol':'лв'}, - 'BHD':{'label':'Bahraini dinar','currencyflag':'','symbol':'.د.ب'}, - 'BIF':{'label':'Burundian franc','currencyflag':'','symbol':'Fr'}, - 'BMD':{'label':'Bermudian dollar','currencyflag':'','symbol':'$'}, - 'BND':{'label':'Brunei dollar','currencyflag':'','symbol':'$'}, - 'BOB':{'label':'Bolivian boliviano','currencyflag':'','symbol':'Bs'}, - 'BRL':{'label':'Brazilian real','currencyflag':'','symbol':'R$'}, - 'BSD':{'label':'Bahamian dollar','currencyflag':'','symbol':'$'}, - 'BTN':{'label':'Bhutanese ngultrum','currencyflag':'','symbol':'Nu'}, - 'BWP':{'label':'Botswana pula','currencyflag':'','symbol':'P'}, - 'BYR':{'label':'Belarusian ruble','currencyflag':'','symbol':'Br'}, - 'BZD':{'label':'Belize dollar','currencyflag':'','symbol':'$'}, - 'CAD':{'label':'Canadian dollar','currencyflag':'','symbol':'$'}, - 'CDF':{'label':'Congolese franc','currencyflag':'','symbol':'Fr'}, - 'CHF':{'label':'Swiss franc','currencyflag':'CHF','symbol':'Fr'}, - 'CLP':{'label':'Chilean peso','currencyflag':'','symbol':'$'}, - 'CNY':{'label':'Chinese yuan','currencyflag':'','symbol':'¥'}, - 'COP':{'label':'Colombian peso','currencyflag':'','symbol':'$'}, - 'CRC':{'label':'Costa Rican colón','currencyflag':'','symbol':'₡'}, - 'CUP':{'label':'Cuban convertible peso','currencyflag':'','symbol':'$'}, - 'CVE':{'label':'Cape Verdean escudo','currencyflag':'','symbol':'$'}, - 'CZK':{'label':'Czech koruna','currencyflag':'','symbol':'Kč'}, - 'DJF':{'label':'Djiboutian franc','currencyflag':'','symbol':'Fr'}, - 'DKK':{'label':'Danish krone','currencyflag':'DKK','symbol':'kr'}, - 'DOP':{'label':'Dominican peso','currencyflag':'','symbol':'$'}, - 'DZD':{'label':'Algerian dinar','currencyflag':'','symbol':'د.ج'}, - 'EGP':{'label':'Egyptian pound','currencyflag':'','symbol':'ج.م'}, - 'ERN':{'label':'Eritrean nakfa','currencyflag':'','symbol':'Nfk'}, - 'ETB':{'label':'Ethiopian birr','currencyflag':'','symbol':'Br'}, - 'EUR':{'label':'Euro','currencyflag':'EUR','symbol':'€'}, - 'FJD':{'label':'Fijian dollar','currencyflag':'','symbol':'$'}, - 'FKP':{'label':'Falkland Islands pound','currencyflag':'','symbol':'£'}, - 'GBP':{'label':'British pound','currencyflag':'','symbol':'£'}, - 'GEL':{'label':'Georgian lari','currencyflag':'','symbol':'ლ'}, - 'GHS':{'label':'Ghana cedi','currencyflag':'','symbol':'₵'}, - 'GMD':{'label':'Gambian dalasi','currencyflag':'','symbol':'D'}, - 'GNF':{'label':'Guinean franc','currencyflag':'','symbol':'Fr'}, - 'GTQ':{'label':'Guatemalan quetzal','currencyflag':'','symbol':'Q'}, - 'GYD':{'label':'Guyanese dollar','currencyflag':'','symbol':'$'}, - 'HKD':{'label':'Hong Kong dollar','currencyflag':'','symbol':'$'}, - 'HNL':{'label':'Honduran lempira','currencyflag':'','symbol':'L'}, - 'HRK':{'label':'Croatian kuna','currencyflag':'','symbol':'kn'}, - 'HTG':{'label':'Haitian gourde','currencyflag':'','symbol':'G'}, - 'HUF':{'label':'Hungarian forint','currencyflag':'','symbol':'Ft'}, - 'IDR':{'label':'Indonesian rupiah','currencyflag':'','symbol':'Rp'}, - 'ILS':{'label':'Israeli new shekel','currencyflag':'','symbol':'₪'}, - 'IMP':{'label':'Manx pound','currencyflag':'','symbol':'£'}, - 'INR':{'label':'Indian rupee','currencyflag':'','symbol':''}, - 'IQD':{'label':'Iraqi dinar','currencyflag':'','symbol':'ع.د'}, - 'IRR':{'label':'Iranian rial','currencyflag':'','symbol':'﷼'}, - 'ISK':{'label':'Icelandic króna','currencyflag':'','symbol':'kr'}, - 'JEP':{'label':'Jersey pound','currencyflag':'','symbol':'£'}, - 'JMD':{'label':'Jamaican dollar','currencyflag':'','symbol':'$'}, - 'JOD':{'label':'Jordanian dinar','currencyflag':'','symbol':'د.ا'}, - 'JPY':{'label':'Japanese yen','currencyflag':'','symbol':'¥'}, - 'KES':{'label':'Kenyan shilling','currencyflag':'','symbol':'Sh'}, - 'KGS':{'label':'Kyrgyzstani som','currencyflag':'','symbol':'лв'}, - 'KHR':{'label':'Cambodian riel','currencyflag':'','symbol':'៛'}, - 'KMF':{'label':'Comorian franc','currencyflag':'','symbol':'Fr'}, - 'KPW':{'label':'North Korean won','currencyflag':'','symbol':'₩'}, - 'KRW':{'label':'South Korean won','currencyflag':'','symbol':'₩'}, - 'KWD':{'label':'Kuwaiti dinar','currencyflag':'','symbol':'د.ك'}, - 'KYD':{'label':'Cayman Islands dollar','currencyflag':'','symbol':'$'}, - 'KZT':{'label':'Kazakhstani tenge','currencyflag':'','symbol':'₸'}, - 'LAK':{'label':'Lao kip','currencyflag':'','symbol':'₭'}, - 'LBP':{'label':'Lebanese pound','currencyflag':'','symbol':'ل.ل'}, - 'LKR':{'label':'Sri Lankan rupee','currencyflag':'','symbol':'Rs'}, - 'LRD':{'label':'Liberian dollar','currencyflag':'','symbol':'$'}, - 'LSL':{'label':'Lesotho loti','currencyflag':'','symbol':'L'}, - 'LTL':{'label':'Lithuanian litas','currencyflag':'','symbol':'Lt'}, - 'LVL':{'label':'Latvian lats','currencyflag':'','symbol':'Ls'}, - 'LYD':{'label':'Libyan dinar','currencyflag':'','symbol':'ل.د'}, - 'MAD':{'label':'Moroccan dirham','currencyflag':'','symbol':'د.م.'}, - 'MDL':{'label':'Moldovan leu','currencyflag':'','symbol':'L'}, - 'MGA':{'label':'Malagasy ariary','currencyflag':'','symbol':'Ar'}, - 'MKD':{'label':'Macedonian denar','currencyflag':'','symbol':'ден'}, - 'MMK':{'label':'Burmese kyat','currencyflag':'','symbol':'Ks'}, - 'MNT':{'label':'Mongolian tögrög','currencyflag':'','symbol':'₮'}, - 'MOP':{'label':'Macanese pataca','currencyflag':'','symbol':'P'}, - 'MRO':{'label':'Mauritanian ouguiya','currencyflag':'','symbol':'UM'}, - 'MUR':{'label':'Mauritian rupee','currencyflag':'','symbol':'Rs'}, - 'MVR':{'label':'Maldivian rufiyaa','currencyflag':'','symbol':'.ރ'}, - 'MWK':{'label':'Malawian kwacha','currencyflag':'','symbol':'MK'}, - 'MXN':{'label':'Mexican peso','currencyflag':'','symbol':'$'}, - 'MYR':{'label':'Malaysian ringgit','currencyflag':'','symbol':'MR'}, - 'MZN':{'label':'Mozambican metical','currencyflag':'','symbol':'MT'}, - 'NAD':{'label':'Namibian dollar','currencyflag':'','symbol':'$'}, - 'NGN':{'label':'Nigerian naira','currencyflag':'','symbol':'₦'}, - 'NIO':{'label':'Nicaraguan córdoba','currencyflag':'','symbol':'C$'}, - 'NOK':{'label':'Norwegian krone','currencyflag':'','symbol':'kr'}, - 'NPR':{'label':'Nepalese rupee','currencyflag':'','symbol':'Rs'}, - 'NZD':{'label':'New Zealand dollar','currencyflag':'','symbol':'$'}, - 'OMR':{'label':'Omani rial','currencyflag':'','symbol':'ر.ع.'}, - 'PAB':{'label':'Panamanian balboa','currencyflag':'','symbol':'B/.'}, - 'PEN':{'label':'Peruvian nuevo sol','currencyflag':'','symbol':'S/.'}, - 'PGK':{'label':'Papua New Guinean kina','currencyflag':'','symbol':'K'}, - 'PHP':{'label':'Philippine peso','currencyflag':'','symbol':'₱'}, - 'PKR':{'label':'Pakistani rupee','currencyflag':'','symbol':'Rs'}, - 'PLN':{'label':'Polish złoty','currencyflag':'','symbol':'zł'}, - 'PRB':{'label':'Transnistrian ruble','currencyflag':'','symbol':'р.'}, - 'PYG':{'label':'Paraguayan guaraní','currencyflag':'','symbol':'₲'}, - 'QAR':{'label':'Qatari riyal','currencyflag':'','symbol':'ر.ق'}, - 'RON':{'label':'Romanian leu','currencyflag':'','symbol':'L'}, - 'RSD':{'label':'Serbian dinar','currencyflag':'','symbol':'дин'}, - 'RUB':{'label':'Russian ruble','currencyflag':'','symbol':'руб.'}, - 'RWF':{'label':'Rwandan franc','currencyflag':'','symbol':'Fr'}, - 'SAR':{'label':'Saudi riyal','currencyflag':'','symbol':'ر.س'}, - 'SBD':{'label':'Solomon Islands dollar','currencyflag':'','symbol':'$'}, - 'SCR':{'label':'Seychellois rupee','currencyflag':'','symbol':'Rs'}, - 'SDG':{'label':'Singapore dollar','currencyflag':'','symbol':'$'}, - 'SEK':{'label':'Swedish krona','currencyflag':'','symbol':'kr'}, - 'SGD':{'label':'Singapore dollar','currencyflag':'','symbol':'$'}, - 'SHP':{'label':'Saint Helena pound','currencyflag':'','symbol':'£'}, - 'SLL':{'label':'Sierra Leonean leone','currencyflag':'','symbol':'Le'}, - 'SOS':{'label':'Somali shilling','currencyflag':'','symbol':'Sh'}, - 'SRD':{'label':'Surinamese dollar','currencyflag':'','symbol':'$'}, - 'SSP':{'label':'South Sudanese pound','currencyflag':'','symbol':'£'}, - 'STD':{'label':'São Tomé and Príncipe dobra','currencyflag':'','symbol':'Db'}, - 'SVC':{'label':'Salvadoran colón','currencyflag':'','symbol':'₡'}, - 'SYP':{'label':'Syrian pound','currencyflag':'','symbol':'£'}, - 'SZL':{'label':'Swazi lilangeni','currencyflag':'','symbol':'L'}, - 'THB':{'label':'Thai baht','currencyflag':'','symbol':'฿'}, - 'TJS':{'label':'Tajikistani somoni','currencyflag':'','symbol':'SM'}, - 'TMT':{'label':'Turkmenistan manat','currencyflag':'','symbol':'m'}, - 'TND':{'label':'Tunisian dinar','currencyflag':'','symbol':'د.ت'}, - 'TOP':{'label':'Tongan paʻanga','currencyflag':'','symbol':'T$'}, - 'TRY':{'label':'Turkish lira','currencyflag':'','symbol':'₺'}, - 'TTD':{'label':'Trinidad and Tobago dollar','currencyflag':'','symbol':'$'}, - 'TWD':{'label':'New Taiwan dollar','currencyflag':'','symbol':'$'}, - 'TZS':{'label':'Tanzanian shilling','currencyflag':'','symbol':'Sh'}, - 'UAH':{'label':'Ukrainian hryvnia','currencyflag':'','symbol':'₴'}, - 'UGX':{'label':'Ugandan shilling','currencyflag':'','symbol':'Sh'}, - 'USD':{'label':'United States dollar','currencyflag':'','symbol':'$'}, - 'UYU':{'label':'Uruguayan peso','currencyflag':'','symbol':'$'}, - 'UZS':{'label':'Uzbekistani som','currencyflag':'','symbol':'лв'}, - 'VEF':{'label':'Venezuelan bolívar','currencyflag':'','symbol':'Bs F'}, - 'VND':{'label':'Vietnamese đồng','currencyflag':'','symbol':'₫'}, - 'VUV':{'label':'Vanuatu vatu','currencyflag':'','symbol':'Vt'}, - 'WST':{'label':'Samoan tālā','currencyflag':'','symbol':'T'}, - 'XAF':{'label':'Central African CFA franc','currencyflag':'XAF','symbol':'Fr'}, - 'XCD':{'label':'East Caribbean dollar','currencyflag':'XCD','symbol':'$'}, - 'XOF':{'label':'West African CFA franc','currencyflag':'XOF','symbol':'Fr'}, - 'XPF':{'label':'CFP franc','currencyflag':'XPF','symbol':'Fr'}, - 'YER':{'label':'Yemeni rial','currencyflag':'','symbol':'﷼'}, - 'ZAR':{'label':'South African rand','currencyflag':'ZAR','symbol':'R'}, - 'ZMW':{'label':'Zambian kwacha','currencyflag':'','symbol':'ZK'}, - 'ZWL':{'label':'Zimbabwean dollar','currencyflag':'','symbol':'$'} -}; - -/* ========================================================== - * bootstrap-formhelpers-datepicker.en_US.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -var BFHMonthsList = [ - 'January', - 'February', - 'March', - 'April', - 'May', - 'June', - 'July', - 'August', - 'September', - 'October', - 'November', - 'December' -]; - -var BFHDaysList = [ - 'SUN', - 'MON', - 'TUE', - 'WED', - 'THU', - 'FRI', - 'SAT' -]; - -var BFHDayOfWeekStart = 0; - -/* ========================================================== - * bootstrap-formhelpers-fonts.en_US.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -var BFHFontsList = { - 'Andale Mono': '"Andale Mono", AndaleMono, monospace', - 'Arial': 'Arial, "Helvetica Neue", Helvetica, sans-serif', - 'Arial Black': '"Arial Black", "Arial Bold", Gadget, sans-serif', - 'Arial Narrow': '"Arial Narrow", Arial, sans-serif', - 'Arial Rounded MT Bold': '"Arial Rounded MT Bold", "Helvetica Rounded", Arial, sans-serif', - 'Avant Garde': '"Avant Garde", Avantgarde, "Century Gothic", CenturyGothic, "AppleGothic", sans-serif', - 'Baskerville': 'Baskerville, "Baskerville Old Face", "Hoefler Text", Garamond, "Times New Roman", serif', - 'Big Caslon': '"Big Caslon", "Book Antiqua", "Palatino Linotype", Georgia, serif', - 'Bodoni MT': '"Bodoni MT", Didot, "Didot LT STD", "Hoefler Text", Garamond, "Times New Roman", serif', - 'Book Antiqua': '"Book Antiqua", Palatino, "Palatino Linotype", "Palatino LT STD", Georgia, serif', - 'Brush Script MT': '"Brush Script MT", cursive', - 'Calibri': 'Calibri, Candara, Segoe, "Segoe UI", Optima, Arial, sans-serif', - 'Calisto MT': '"Calisto MT", "Bookman Old Style", Bookman, "Goudy Old Style", Garamond, "Hoefler Text", "Bitstream Charter", Georgia, serif', - 'Cambrio': 'Cambria, Georgia, serif', - 'Candara': 'Candara, Calibri, Segoe, "Segoe UI", Optima, Arial, sans-serif', - 'Century Gothic': '"Century Gothic", CenturyGothic, AppleGothic, sans-serif', - 'Consolas': 'Consolas, monaco, monospace', - 'Copperplate': 'Copperplate, "Copperplate Gothic Light", fantasy', - 'Courier New': '"Courier New", Courier, "Lucida Sans Typewriter", "Lucida Typewriter", monospace', - 'Didot': 'Didot, "Didot LT STD", "Hoefler Text", Garamond, "Times New Roman", serif', - 'Franklin Gothic Medium': '"Franklin Gothic Medium", "Franklin Gothic", "ITC Franklin Gothic", Arial, sans-serif', - 'Futura': 'Futura, "Trebuchet MS", Arial, sans-serif', - 'Garamond': 'Garamond, Baskerville, "Baskerville Old Face", "Hoefler Text", "Times New Roman", serif', - 'Geneva': 'Geneva, Tahoma, Verdana, sans-serif', - 'Georgia': 'Georgia, Times, "Times New Roman", serif', - 'Gill Sans': '"Gill Sans", "Gill Sans MT", Calibri, sans-serif', - 'Goudy Old Style': '"Goudy Old Style", Garamond, "Big Caslon", "Times New Roman", serif', - 'Helvetica': '"Helvetica Neue", Helvetica, Arial, sans-serif', - 'Hoefler Text': '"Hoefler Text", "Baskerville old face", Garamond, "Times New Roman", serif', - 'Impact': 'Impact, Haettenschweiler, "Franklin Gothic Bold", Charcoal, "Helvetica Inserat", "Bitstream Vera Sans Bold", "Arial Black", sans serif', - 'Lucida Bright': '"Lucida Bright", Georgia, serif', - 'Lucida Console': '"Lucida Console", "Lucida Sans Typewriter", Monaco, "Bitstream Vera Sans Mono", monospace', - 'Lucida Sans Typewriter': '"Lucida Sans Typewriter", "Lucida Console", Monaco, "Bitstream Vera Sans Mono", monospace', - 'Lucida Grande': '"Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif', - 'Monaco': 'Monaco, Consolas, "Lucida Console", monospace', - 'Optima': 'Optima, Segoe, "Segoe UI", Candara, Calibri, Arial, sans-serif', - 'Palatino': 'Palatino, "Palatino Linotype", "Palatino LT STD", "Book Antiqua", Georgia, serif', - 'Papyrus': 'Papyrus, fantasy', - 'Perpetua': 'Perpetua, Baskerville, "Big Caslon", "Palatino Linotype", Palatino, "URW Palladio L", "Nimbus Roman No9 L", serif', - 'Rockwell': 'Rockwell, "Courier Bold", Courier, Georgia, Times, "Times New Roman", serif', - 'Rockwell Extra Bold': '"Rockwell Extra Bold", "Rockwell Bold", monospace', - 'Segoe UI': '"Segoe UI", Frutiger, "Frutiger Linotype', - 'Tahoma': 'Tahoma, Verdana, Segoe, sans-serif', - 'Times New Roman': 'TimesNewRoman, "Times New Roman", Times, Baskerville, Georgia, serif', - 'Trebuchet MS': '"Trebuchet MS", "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Tahoma, sans-serif', - 'Verdana': 'Verdana, Geneva, sans-serif' -}; - -/* ========================================================== - * bootstrap-formhelpers-fontsizes.en_US.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License") - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -var BFHFontSizesList = { - '8': '8px', - '9': '9px', - '10': '10px', - '11': '11px', - '12': '12px', - '14': '14px', - '16': '16px', - '18': '18px', - '20': '20px', - '24': '24px', - '28': '28px', - '36': '36px', - '48': '48px' -}; - -/* ========================================================== - * bootstrap-formhelpers-googlefonts.en_US.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * contributed by Aaron Collegeman, Squidoo, 2012 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -var BFHGoogleFontsList = { - 'kind': 'webfonts#webfontList', - 'items': [ - { - 'kind': 'webfonts#webfont', - 'family': 'ABeeZee', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Abel', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Abril Fatface', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Aclonica', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Acme', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Actor', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Adamina', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Advent Pro', - 'variants': [ - '100', - '200', - '300', - 'regular', - '500', - '600', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin', - 'greek' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Aguafina Script', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Akronim', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Aladin', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Aldrich', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Alegreya', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic', - '900', - '900italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Alegreya SC', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic', - '900', - '900italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Alex Brush', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Alfa Slab One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Alice', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Alike', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Alike Angular', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Allan', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Allerta', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Allerta Stencil', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Allura', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Almendra', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Almendra Display', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Almendra SC', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Amarante', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Amaranth', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Amatic SC', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Amethysta', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Anaheim', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Andada', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Andika', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin', - 'cyrillic-ext' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Angkor', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Annie Use Your Telescope', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Anonymous Pro', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'cyrillic', - 'greek-ext', - 'latin-ext', - 'latin', - 'greek', - 'cyrillic-ext' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Antic', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Antic Didone', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Antic Slab', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Anton', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Arapey', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Arbutus', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Arbutus Slab', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Architects Daughter', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Archivo Black', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Archivo Narrow', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Arimo', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Arizonia', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Armata', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Artifika', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Arvo', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Asap', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Asset', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Astloch', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Asul', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Atomic Age', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Aubrey', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Audiowide', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Autour One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Average', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Average Sans', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Averia Gruesa Libre', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Averia Libre', - 'variants': [ - '300', - '300italic', - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Averia Sans Libre', - 'variants': [ - '300', - '300italic', - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Averia Serif Libre', - 'variants': [ - '300', - '300italic', - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Bad Script', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Balthazar', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Bangers', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Basic', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Battambang', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Baumans', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Bayon', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Belgrano', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Belleza', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'BenchNine', - 'variants': [ - '300', - 'regular', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Bentham', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Berkshire Swash', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Bevan', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Bigelow Rules', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Bigshot One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Bilbo', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Bilbo Swash Caps', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Bitter', - 'variants': [ - 'regular', - 'italic', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Black Ops One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Bokor', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Bonbon', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Boogaloo', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Bowlby One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Bowlby One SC', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Brawler', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Bree Serif', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Bubblegum Sans', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Bubbler One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Buda', - 'variants': [ - '300' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Buenard', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Butcherman', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Butterfly Kids', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Cabin', - 'variants': [ - 'regular', - 'italic', - '500', - '500italic', - '600', - '600italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Cabin Condensed', - 'variants': [ - 'regular', - '500', - '600', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Cabin Sketch', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Caesar Dressing', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Cagliostro', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Calligraffitti', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Cambo', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Candal', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Cantarell', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Cantata One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Cantora One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Capriola', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Cardo', - 'variants': [ - 'regular', - 'italic', - '700' - ], - 'subsets': [ - 'greek-ext', - 'latin-ext', - 'latin', - 'greek' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Carme', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Carrois Gothic', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Carrois Gothic SC', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Carter One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Caudex', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'greek-ext', - 'latin-ext', - 'latin', - 'greek' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Cedarville Cursive', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Ceviche One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Changa One', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Chango', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Chau Philomene One', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Chela One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Chelsea Market', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Chenla', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Cherry Cream Soda', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Cherry Swash', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Chewy', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Chicle', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Chivo', - 'variants': [ - 'regular', - 'italic', - '900', - '900italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Cinzel', - 'variants': [ - 'regular', - '700', - '900' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Cinzel Decorative', - 'variants': [ - 'regular', - '700', - '900' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Clicker Script', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Coda', - 'variants': [ - 'regular', - '800' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Coda Caption', - 'variants': [ - '800' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Codystar', - 'variants': [ - '300', - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Combo', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Comfortaa', - 'variants': [ - '300', - 'regular', - '700' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin', - 'greek', - 'cyrillic-ext' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Coming Soon', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Concert One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Condiment', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Content', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Contrail One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Convergence', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Cookie', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Copse', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Corben', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Courgette', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Cousine', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Coustard', - 'variants': [ - 'regular', - '900' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Covered By Your Grace', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Crafty Girls', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Creepster', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Crete Round', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Crimson Text', - 'variants': [ - 'regular', - 'italic', - '600', - '600italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Croissant One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Crushed', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Cuprum', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Cutive', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Cutive Mono', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Damion', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Dancing Script', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Dangrek', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Dawning of a New Day', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Days One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Delius', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Delius Swash Caps', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Delius Unicase', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Della Respira', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Devonshire', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Didact Gothic', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'greek-ext', - 'latin-ext', - 'latin', - 'greek', - 'cyrillic-ext' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Diplomata', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Diplomata SC', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Doppio One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Dorsa', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Dosis', - 'variants': [ - '200', - '300', - 'regular', - '500', - '600', - '700', - '800' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Dr Sugiyama', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Droid Sans', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Droid Sans Mono', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Droid Serif', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Duru Sans', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Dynalight', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'EB Garamond', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin', - 'vietnamese', - 'cyrillic-ext' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Eagle Lake', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Eater', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Economica', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Electrolize', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Emblema One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Emilys Candy', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Engagement', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Englebert', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Enriqueta', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Erica One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Esteban', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Euphoria Script', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Ewert', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Exo', - 'variants': [ - '100', - '100italic', - '200', - '200italic', - '300', - '300italic', - 'regular', - 'italic', - '500', - '500italic', - '600', - '600italic', - '700', - '700italic', - '800', - '800italic', - '900', - '900italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Expletus Sans', - 'variants': [ - 'regular', - 'italic', - '500', - '500italic', - '600', - '600italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Fanwood Text', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Fascinate', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Fascinate Inline', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Faster One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Fasthand', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Federant', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Federo', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Felipa', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Fenix', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Finger Paint', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Fjord One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Flamenco', - 'variants': [ - '300', - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Flavors', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Fondamento', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Fontdiner Swanky', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Forum', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin', - 'cyrillic-ext' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Francois One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Freckle Face', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Fredericka the Great', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Fredoka One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Freehand', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Fresca', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Frijole', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Fugaz One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'GFS Didot', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'greek' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'GFS Neohellenic', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'greek' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Gafata', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Galdeano', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Galindo', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Gentium Basic', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Gentium Book Basic', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Geo', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Geostar', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Geostar Fill', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Germania One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Gilda Display', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Give You Glory', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Glass Antiqua', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Glegoo', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Gloria Hallelujah', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Goblin One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Gochi Hand', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Gorditas', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Goudy Bookletter 1911', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Graduate', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Gravitas One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Great Vibes', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Griffy', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Gruppo', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Gudea', - 'variants': [ - 'regular', - 'italic', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Habibi', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Hammersmith One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Hanalei', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Hanalei Fill', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Handlee', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Hanuman', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Happy Monkey', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Headland One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Henny Penny', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Herr Von Muellerhoff', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Holtwood One SC', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Homemade Apple', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Homenaje', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'IM Fell DW Pica', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'IM Fell DW Pica SC', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'IM Fell Double Pica', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'IM Fell Double Pica SC', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'IM Fell English', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'IM Fell English SC', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'IM Fell French Canon', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'IM Fell French Canon SC', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'IM Fell Great Primer', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'IM Fell Great Primer SC', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Iceberg', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Iceland', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Imprima', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Inconsolata', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Inder', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Indie Flower', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Inika', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Irish Grover', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Istok Web', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin', - 'cyrillic-ext' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Italiana', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Italianno', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Jacques Francois', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Jacques Francois Shadow', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Jim Nightshade', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Jockey One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Jolly Lodger', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Josefin Sans', - 'variants': [ - '100', - '100italic', - '300', - '300italic', - 'regular', - 'italic', - '600', - '600italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Josefin Slab', - 'variants': [ - '100', - '100italic', - '300', - '300italic', - 'regular', - 'italic', - '600', - '600italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Joti One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Judson', - 'variants': [ - 'regular', - 'italic', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Julee', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Julius Sans One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Junge', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Jura', - 'variants': [ - '300', - 'regular', - '500', - '600' - ], - 'subsets': [ - 'cyrillic', - 'greek-ext', - 'latin-ext', - 'latin', - 'greek', - 'cyrillic-ext' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Just Another Hand', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Just Me Again Down Here', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Kameron', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Karla', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Kaushan Script', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Keania One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Kelly Slab', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Kenia', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Khmer', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Kite One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Knewave', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Kotta One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Koulen', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Kranky', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Kreon', - 'variants': [ - '300', - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Kristi', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Krona One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'La Belle Aurore', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Lancelot', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Lato', - 'variants': [ - '100', - '100italic', - '300', - '300italic', - 'regular', - 'italic', - '700', - '700italic', - '900', - '900italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'League Script', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Leckerli One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Ledger', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Lekton', - 'variants': [ - 'regular', - 'italic', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Lemon', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Life Savers', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Lilita One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Limelight', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Linden Hill', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Lobster', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin', - 'cyrillic-ext' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Lobster Two', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Londrina Outline', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Londrina Shadow', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Londrina Sketch', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Londrina Solid', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Lora', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Love Ya Like A Sister', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Loved by the King', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Lovers Quarrel', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Luckiest Guy', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Lusitana', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Lustria', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Macondo', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Macondo Swash Caps', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Magra', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Maiden Orange', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Mako', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Marcellus', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Marcellus SC', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Marck Script', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Margarine', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Marko One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Marmelad', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Marvel', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Mate', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Mate SC', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Maven Pro', - 'variants': [ - 'regular', - '500', - '700', - '900' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'McLaren', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Meddon', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'MedievalSharp', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Medula One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Megrim', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Meie Script', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Merienda', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Merienda One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Merriweather', - 'variants': [ - '300', - 'regular', - '700', - '900' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Metal', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Metal Mania', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Metamorphous', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Metrophobic', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Michroma', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Miltonian', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Miltonian Tattoo', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Miniver', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Miss Fajardose', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Modern Antiqua', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Molengo', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Molle', - 'variants': [ - 'italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Monofett', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Monoton', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Monsieur La Doulaise', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Montaga', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Montez', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Montserrat', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Montserrat Alternates', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Montserrat Subrayada', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Moul', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Moulpali', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Mountains of Christmas', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Mouse Memoirs', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Mr Bedfort', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Mr Dafoe', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Mr De Haviland', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Mrs Saint Delafield', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Mrs Sheppards', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Muli', - 'variants': [ - '300', - '300italic', - 'regular', - 'italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Mystery Quest', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Neucha', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Neuton', - 'variants': [ - '200', - '300', - 'regular', - 'italic', - '700', - '800' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'News Cycle', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Niconne', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Nixie One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Nobile', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Nokora', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Norican', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Nosifer', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Nothing You Could Do', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Noticia Text', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin-ext', - 'latin', - 'vietnamese' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Nova Cut', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Nova Flat', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Nova Mono', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin', - 'greek' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Nova Oval', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Nova Round', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Nova Script', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Nova Slim', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Nova Square', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Numans', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Nunito', - 'variants': [ - '300', - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Odor Mean Chey', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Offside', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Old Standard TT', - 'variants': [ - 'regular', - 'italic', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Oldenburg', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Oleo Script', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Oleo Script Swash Caps', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Open Sans', - 'variants': [ - '300', - '300italic', - 'regular', - 'italic', - '600', - '600italic', - '700', - '700italic', - '800', - '800italic' - ], - 'subsets': [ - 'cyrillic', - 'greek-ext', - 'latin-ext', - 'latin', - 'vietnamese', - 'greek', - 'cyrillic-ext' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Open Sans Condensed', - 'variants': [ - '300', - '300italic', - '700' - ], - 'subsets': [ - 'cyrillic', - 'greek-ext', - 'latin-ext', - 'latin', - 'vietnamese', - 'greek', - 'cyrillic-ext' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Oranienbaum', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin', - 'cyrillic-ext' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Orbitron', - 'variants': [ - 'regular', - '500', - '700', - '900' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Oregano', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Orienta', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Original Surfer', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Oswald', - 'variants': [ - '300', - 'regular', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Over the Rainbow', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Overlock', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic', - '900', - '900italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Overlock SC', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Ovo', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Oxygen', - 'variants': [ - '300', - 'regular', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Oxygen Mono', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'PT Mono', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin', - 'cyrillic-ext' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'PT Sans', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'PT Sans Caption', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'PT Sans Narrow', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'PT Serif', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'cyrillic', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'PT Serif Caption', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'cyrillic', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Pacifico', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Paprika', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Parisienne', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Passero One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Passion One', - 'variants': [ - 'regular', - '700', - '900' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Patrick Hand', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Patua One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Paytone One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Peralta', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Permanent Marker', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Petit Formal Script', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Petrona', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Philosopher', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'cyrillic', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Piedra', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Pinyon Script', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Pirata One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Plaster', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Play', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'cyrillic', - 'greek-ext', - 'latin-ext', - 'latin', - 'greek', - 'cyrillic-ext' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Playball', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Playfair Display', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic', - '900', - '900italic' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Playfair Display SC', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic', - '900', - '900italic' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Podkova', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Poiret One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Poller One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Poly', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Pompiere', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Pontano Sans', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Port Lligat Sans', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Port Lligat Slab', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Prata', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Preahvihear', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Press Start 2P', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin', - 'greek' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Princess Sofia', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Prociono', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Prosto One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Puritan', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Purple Purse', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Quando', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Quantico', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Quattrocento', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Quattrocento Sans', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Questrial', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Quicksand', - 'variants': [ - '300', - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Quintessential', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Qwigley', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Racing Sans One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Radley', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Raleway', - 'variants': [ - '100', - '200', - '300', - 'regular', - '500', - '600', - '700', - '800', - '900' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Raleway Dots', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Rambla', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Rammetto One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Ranchers', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Rancho', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Rationale', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Redressed', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Reenie Beanie', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Revalia', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Ribeye', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Ribeye Marrow', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Righteous', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Risque', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Rochester', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Rock Salt', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Rokkitt', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Romanesco', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Ropa Sans', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Rosario', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Rosarivo', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Rouge Script', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Ruda', - 'variants': [ - 'regular', - '700', - '900' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Rufina', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Ruge Boogie', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Ruluko', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Rum Raisin', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Ruslan Display', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin', - 'cyrillic-ext' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Russo One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Ruthie', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Rye', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Sacramento', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Sail', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Salsa', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Sanchez', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Sancreek', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Sansita One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Sarina', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Satisfy', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Scada', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Schoolbell', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Seaweed Script', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Sevillana', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Seymour One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Shadows Into Light', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Shadows Into Light Two', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Shanti', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Share', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Share Tech', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Share Tech Mono', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Shojumaru', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Short Stack', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Siemreap', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Sigmar One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Signika', - 'variants': [ - '300', - 'regular', - '600', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Signika Negative', - 'variants': [ - '300', - 'regular', - '600', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Simonetta', - 'variants': [ - 'regular', - 'italic', - '900', - '900italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Sirin Stencil', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Six Caps', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Skranji', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Slackey', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Smokum', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Smythe', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Sniglet', - 'variants': [ - '800' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Snippet', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Snowburst One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Sofadi One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Sofia', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Sonsie One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Sorts Mill Goudy', - 'variants': [ - 'regular', - 'italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Source Code Pro', - 'variants': [ - '200', - '300', - 'regular', - '600', - '700', - '900' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Source Sans Pro', - 'variants': [ - '200', - '200italic', - '300', - '300italic', - 'regular', - 'italic', - '600', - '600italic', - '700', - '700italic', - '900', - '900italic' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Special Elite', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Spicy Rice', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Spinnaker', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Spirax', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Squada One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Stalemate', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Stalinist One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Stardos Stencil', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Stint Ultra Condensed', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Stint Ultra Expanded', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Stoke', - 'variants': [ - '300', - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Strait', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Sue Ellen Francisco', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Sunshiney', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Supermercado One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Suwannaphum', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Swanky and Moo Moo', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Syncopate', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Tangerine', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Taprom', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'khmer' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Telex', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Tenor Sans', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin', - 'cyrillic-ext' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Text Me One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'The Girl Next Door', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Tienne', - 'variants': [ - 'regular', - '700', - '900' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Tinos', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Titan One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Titillium Web', - 'variants': [ - '200', - '200italic', - '300', - '300italic', - 'regular', - 'italic', - '600', - '600italic', - '700', - '700italic', - '900' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Trade Winds', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Trocchi', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Trochut', - 'variants': [ - 'regular', - 'italic', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Trykker', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Tulpen One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Ubuntu', - 'variants': [ - '300', - '300italic', - 'regular', - 'italic', - '500', - '500italic', - '700', - '700italic' - ], - 'subsets': [ - 'cyrillic', - 'greek-ext', - 'latin-ext', - 'latin', - 'greek', - 'cyrillic-ext' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Ubuntu Condensed', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'greek-ext', - 'latin-ext', - 'latin', - 'greek', - 'cyrillic-ext' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Ubuntu Mono', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'cyrillic', - 'greek-ext', - 'latin-ext', - 'latin', - 'greek', - 'cyrillic-ext' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Ultra', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Uncial Antiqua', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Underdog', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Unica One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'UnifrakturCook', - 'variants': [ - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'UnifrakturMaguntia', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Unkempt', - 'variants': [ - 'regular', - '700' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Unlock', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Unna', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'VT323', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Vampiro One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Varela', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Varela Round', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Vast Shadow', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Vibur', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Vidaloka', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Viga', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Voces', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Volkhov', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Vollkorn', - 'variants': [ - 'regular', - 'italic', - '700', - '700italic' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Voltaire', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Waiting for the Sunrise', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Wallpoet', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Walter Turncoat', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Warnes', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Wellfleet', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Wire One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Yanone Kaffeesatz', - 'variants': [ - '200', - '300', - 'regular', - '700' - ], - 'subsets': [ - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Yellowtail', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Yeseva One', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'cyrillic', - 'latin-ext', - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Yesteryear', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - }, - { - 'kind': 'webfonts#webfont', - 'family': 'Zeyada', - 'variants': [ - 'regular' - ], - 'subsets': [ - 'latin' - ] - } - ] -}; - -/* ========================================================== - * bootstrap-formhelpers-languages.en_US.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -var BFHLanguagesList = { - 'om': 'Afaan Oromoo', - 'aa': 'Afaraf', - 'af': 'Afrikaans', - 'ak': 'Akan', - 'an': 'aragonés', - 'ig': 'Asụsụ Igbo', - 'gn': 'Avañe\'ẽ', - 'ae': 'avesta', - 'ay': 'aymar aru', - 'az': 'azərbaycan dili', - 'id': 'Bahasa Indonesia', - 'ms': 'bahasa Melayu', - 'bm': 'bamanankan', - 'jv': 'basa Jawa', - 'su': 'Basa Sunda', - 'bi': 'Bislama', - 'bs': 'bosanski jezik', - 'br': 'brezhoneg', - 'ca': 'català', - 'ch': 'Chamoru', - 'ny': 'chiCheŵa', - 'sn': 'chiShona', - 'co': 'corsu', - 'cy': 'Cymraeg', - 'da': 'dansk', - 'se': 'Davvisámegiella', - 'de': 'Deutsch', - 'nv': 'Diné bizaad', - 'et': 'eesti', - 'na': 'Ekakairũ Naoero', - 'en': 'English', - 'es': 'español', - 'eo': 'Esperanto', - 'eu': 'euskara', - 'ee': 'Eʋegbe', - 'to': 'faka Tonga', - 'mg': 'fiteny malagasy', - 'fr': 'français', - 'fy': 'Frysk', - 'ff': 'Fulfulde', - 'fo': 'føroyskt', - 'ga': 'Gaeilge', - 'gv': 'Gaelg', - 'sm': 'gagana fa\'a Samoa', - 'gl': 'galego', - 'sq': 'gjuha shqipe', - 'gd': 'Gàidhlig', - 'ki': 'Gĩkũyũ', - 'ha': 'Hausa', - 'ho': 'Hiri Motu', - 'hr': 'hrvatski jezik', - 'io': 'Ido', - 'rw': 'Ikinyarwanda', - 'rn': 'Ikirundi', - 'ia': 'Interlingua', - 'nd': 'isiNdebele', - 'nr': 'isiNdebele', - 'xh': 'isiXhosa', - 'zu': 'isiZulu', - 'it': 'italiano', - 'ik': 'Iñupiaq', - 'pl': 'polski', - 'mh': 'Kajin M̧ajeļ', - 'kl': 'kalaallisut', - 'kr': 'Kanuri', - 'kw': 'Kernewek', - 'kg': 'KiKongo', - 'sw': 'Kiswahili', - 'ht': 'Kreyòl ayisyen', - 'kj': 'Kuanyama', - 'ku': 'Kurdî', - 'la': 'latine', - 'lv': 'latviešu valoda', - 'lt': 'lietuvių kalba', - 'ro': 'limba română', - 'li': 'Limburgs', - 'ln': 'Lingála', - 'lg': 'Luganda', - 'lb': 'Lëtzebuergesch', - 'hu': 'magyar', - 'mt': 'Malti', - 'nl': 'Nederlands', - 'no': 'Norsk', - 'nb': 'Norsk bokmål', - 'nn': 'Norsk nynorsk', - 'uz': 'O\'zbek', - 'oc': 'occitan', - 'ie': 'Interlingue', - 'hz': 'Otjiherero', - 'ng': 'Owambo', - 'pt': 'português', - 'ty': 'Reo Tahiti', - 'rm': 'rumantsch grischun', - 'qu': 'Runa Simi', - 'sc': 'sardu', - 'za': 'Saɯ cueŋƅ', - 'st': 'Sesotho', - 'tn': 'Setswana', - 'ss': 'SiSwati', - 'sl': 'slovenski jezik', - 'sk': 'slovenčina', - 'so': 'Soomaaliga', - 'fi': 'suomi', - 'sv': 'Svenska', - 'mi': 'te reo Māori', - 'vi': 'Tiếng Việt', - 'lu': 'Tshiluba', - 've': 'Tshivenḓa', - 'tw': 'Twi', - 'tk': 'Türkmen', - 'tr': 'Türkçe', - 'ug': 'Uyƣurqə', - 'vo': 'Volapük', - 'fj': 'vosa Vakaviti', - 'wa': 'walon', - 'tl': 'Wikang Tagalog', - 'wo': 'Wollof', - 'ts': 'Xitsonga', - 'yo': 'Yorùbá', - 'sg': 'yângâ tî sängö', - 'is': 'Íslenska', - 'cs': 'čeština', - 'el': 'ελληνικά', - 'av': 'авар мацӀ', - 'ab': 'аҧсуа бызшәа', - 'ba': 'башҡорт теле', - 'be': 'беларуская мова', - 'bg': 'български език', - 'os': 'ирон æвзаг', - 'kv': 'коми кыв', - 'ky': 'Кыргызча', - 'mk': 'македонски јазик', - 'mn': 'монгол', - 'ce': 'нохчийн мотт', - 'ru': 'русский язык', - 'sr': 'српски језик', - 'tt': 'татар теле', - 'tg': 'тоҷикӣ', - 'uk': 'українська мова', - 'cv': 'чӑваш чӗлхи', - 'cu': 'ѩзыкъ словѣньскъ', - 'kk': 'қазақ тілі', - 'hy': 'Հայերեն', - 'yi': 'ייִדיש', - 'he': 'עברית', - 'ur': 'اردو', - 'ar': 'العربية', - 'fa': 'فارسی', - 'ps': 'پښتو', - 'ks': 'कश्मीरी', - 'ne': 'नेपाली', - 'pi': 'पाऴि', - 'bh': 'भोजपुरी', - 'mr': 'मराठी', - 'sa': 'संस्कृतम्', - 'sd': 'सिन्धी', - 'hi': 'हिन्दी', - 'as': 'অসমীয়া', - 'bn': 'বাংলা', - 'pa': 'ਪੰਜਾਬੀ', - 'gu': 'ગુજરાતી', - 'or': 'ଓଡ଼ିଆ', - 'ta': 'தமிழ்', - 'te': 'తెలుగు', - 'kn': 'ಕನ್ನಡ', - 'ml': 'മലയാളം', - 'si': 'සිංහල', - 'th': 'ไทย', - 'lo': 'ພາສາລາວ', - 'bo': 'བོད་ཡིག', - 'dz': 'རྫོང་ཁ', - 'my': 'ဗမာစာ', - 'ka': 'ქართული', - 'ti': 'ትግርኛ', - 'am': 'አማርኛ', - 'iu': 'ᐃᓄᒃᑎᑐᑦ', - 'oj': 'ᐊᓂᔑᓈᐯᒧᐎᓐ', - 'cr': 'ᓀᐦᐃᔭᐍᐏᐣ', - 'km': 'ខ្មែរ', - 'zh': '中文 (Zhōngwén)', - 'ja': '日本語 (にほんご)', - 'ii': 'ꆈꌠ꒿ Nuosuhxop', - 'ko': '한국어 (韓國語)' -}; - -/* ========================================================== - * bootstrap-formhelpers-phone.en_US.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file edcept in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either edpress or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -var BFHPhoneFormatList = { - 'AF': '+93 0dd ddd dddd', - 'AL': '+355 0dd ddd ddd', - 'DZ': '+213 0ddd dd dd dd', - 'AS': '+1 (ddd) ddd-dddd', - 'AD': '+376 ddddddddd', - 'AO': '+244 ddd ddd ddd', - 'AI': '+1 (ddd) ddd-dddd', - 'AQ': '+672 ddddddddd', - 'AG': '+1 (ddd) ddd-dddd', - 'AR': '+54 ddddddddd', - 'AM': '+374 0dd dddddd', - 'AW': '+297 ddd dddd', - 'AU': '+61 ddd ddd ddd', - 'AT': '+43 0dddd ddddddddd', - 'AZ': '+994 ddddddddd', - 'BH': '+973 ddddddddd', - 'BD': '+880 ddddddddd', - 'BB': '+1 ddddddddd', - 'BY': '+375 ddddddddd', - 'BE': '+32 ddddddddd', - 'BZ': '+501 ddddddddd', - 'BJ': '+229 ddddddddd', - 'BM': '+1 (ddd) ddd-dddd', - 'BT': '+975 ddddddddd', - 'BO': '+591 ddddddddd', - 'BA': '+387 ddddddddd', - 'BW': '+267 ddddddddd', - 'BV': '+0 ddddddddd', - 'BR': '+55 ddddddddd', - 'IO': '+0 ddddddddd', - 'VG': '+1 (ddd) ddd-dddd', - 'BN': '+673 ddddddddd', - 'BG': '+359 ddddddddd', - 'BF': '+226 ddddddddd', - 'BI': '+257 ddddddddd', - 'CI': '+225 ddddddddd', - 'KH': '+855 ddddddddd', - 'CM': '+237 ddddddddd', - 'CA': '+1 (ddd) ddd-dddd', - 'CV': '+238 ddddddddd', - 'KY': '+1 (ddd) ddd-dddd', - 'CF': '+236 ddddddddd', - 'TD': '+235 ddddddddd', - 'CL': '+56 ddddddddd', - 'CN': '+86 ddddddddd', - 'CX': '+61 ddddddddd', - 'CC': '+61 ddddddddd', - 'CO': '+57 ddddddddd', - 'KM': '+269 ddddddddd', - 'CG': '+242 ddddddddd', - 'CK': '+682 ddddddddd', - 'CR': '+506 ddddddddd', - 'HR': '+385 ddddddddd', - 'CU': '+53 ddddddddd', - 'CY': '+357 ddddddddd', - 'CZ': '+420 ddddddddd', - 'CD': '+243 ddddddddd', - 'DK': '+45 ddddddddd', - 'DJ': '+253 ddddddddd', - 'DM': '+1 (ddd) ddd-dddd', - 'DO': '+1 (ddd) ddd-dddd', - 'TL': '+670 ddddddddd', - 'EC': '+593 ddddddddd', - 'EG': '+20 ddddddddd', - 'SV': '+503 ddddddddd', - 'GQ': '+240 ddddddddd', - 'ER': '+291 ddddddddd', - 'EE': '+372 ddddddddd', - 'ET': '+251 ddddddddd', - 'FO': '+298 ddddddddd', - 'FK': '+500 ddddddddd', - 'FJ': '+679 ddddddddd', - 'FI': '+358 ddddddddd', - 'MK': '+389 ddddddddd', - 'FR': '+33 d dd dd dd dd', - 'GF': '+594 ddddddddd', - 'PF': '+689 ddddddddd', - 'TF': '+262 ddddddddd', - 'GA': '+241 ddddddddd', - 'GE': '+995 ddddddddd', - 'DE': '+49 ddddddddd', - 'GH': '+233 ddddddddd', - 'GI': '+350 ddddddddd', - 'GR': '+30 ddddddddd', - 'GL': '+299 ddddddddd', - 'GD': '+1 (ddd) ddd-dddd', - 'GP': '+590 ddddddddd', - 'GU': '+1 (ddd) ddd-dddd', - 'GT': '+502 ddddddddd', - 'GN': '+224 ddddddddd', - 'GW': '+245 ddddddddd', - 'GY': '+592 ddddddddd', - 'HT': '+509 ddddddddd', - 'HM': '+0 ddddddddd', - 'HN': '+504 ddddddddd', - 'HK': '+852 ddddddddd', - 'HU': '+36 ddddddddd', - 'IS': '+354 ddddddddd', - 'IN': '+91 ddddddddd', - 'ID': '+62 ddddddddd', - 'IR': '+98 ddddddddd', - 'IQ': '+964 ddddddddd', - 'IE': '+353 ddddddddd', - 'IL': '+972 ddddddddd', - 'IT': '+39 ddddddddd', - 'JM': '+1 (ddd) ddd-dddd', - 'JP': '+81 ddddddddd', - 'JO': '+962 ddddddddd', - 'KZ': '+7 ddddddddd', - 'KE': '+254 ddddddddd', - 'KI': '+686 ddddddddd', - 'KW': '+965 ddddddddd', - 'KG': '+996 ddddddddd', - 'LA': '+856 ddddddddd', - 'LV': '+371 ddddddddd', - 'LB': '+961 ddddddddd', - 'LS': '+266 ddddddddd', - 'LR': '+231 ddddddddd', - 'LY': '+218 ddddddddd', - 'LI': '+423 ddddddddd', - 'LT': '+370 ddddddddd', - 'LU': '+352 ddddddddd', - 'MO': '+853 ddddddddd', - 'MG': '+261 ddddddddd', - 'MW': '+265 ddddddddd', - 'MY': '+60 ddddddddd', - 'MV': '+960 ddddddddd', - 'ML': '+223 ddddddddd', - 'MT': '+356 ddddddddd', - 'MH': '+692 ddddddddd', - 'MQ': '+596 ddddddddd', - 'MR': '+222 ddddddddd', - 'MU': '+230 ddddddddd', - 'YT': '+262 ddddddddd', - 'MX': '+52 ddddddddd', - 'FM': '+691 ddddddddd', - 'MD': '+373 ddddddddd', - 'MC': '+377 ddddddddd', - 'MN': '+976 ddddddddd', - 'MS': '+1 (ddd) ddd-dddd', - 'MA': '+212 ddddddddd', - 'MZ': '+258 ddddddddd', - 'MM': '+95 ddddddddd', - 'NA': '+264 ddddddddd', - 'NR': '+674 ddddddddd', - 'NP': '+977 ddddddddd', - 'NL': '+31 ddddddddd', - 'AN': '+599 ddddddddd', - 'NC': '+687 ddddddddd', - 'NZ': '+64 ddddddddd', - 'NI': '+505 ddddddddd', - 'NE': '+227 ddddddddd', - 'NG': '+234 ddddddddd', - 'NU': '+683 ddddddddd', - 'NF': '+672 ddddddddd', - 'KP': '+850 ddddddddd', - 'MP': '+1 (ddd) ddd-dddd', - 'NO': '+47 ddddddddd', - 'OM': '+968 ddddddddd', - 'PK': '+92 ddddddddd', - 'PW': '+680 ddddddddd', - 'PA': '+507 ddddddddd', - 'PG': '+675 ddddddddd', - 'PY': '+595 ddddddddd', - 'PE': '+51 ddddddddd', - 'PH': '+63 ddddddddd', - 'PN': '+870 ddddddddd', - 'PL': '+48 ddddddddd', - 'PT': '+351 ddddddddd', - 'PR': '+1 (ddd) ddd-dddd', - 'QA': '+974 ddddddddd', - 'RE': '+262 ddddddddd', - 'RO': '+40 ddddddddd', - 'RU': '+7 ddddddddd', - 'RW': '+250 ddddddddd', - 'ST': '+239 ddddddddd', - 'SH': '+290 ddddddddd', - 'KN': '+1 (ddd) ddd-dddd', - 'LC': '+1 (ddd) ddd-dddd', - 'PM': '+508 ddddddddd', - 'VC': '+1 (ddd) ddd-dddd', - 'WS': '+685 ddddddddd', - 'SM': '+378 ddddddddd', - 'SA': '+966 ddddddddd', - 'SN': '+221 ddddddddd', - 'SC': '+248 ddddddddd', - 'SL': '+232 ddddddddd', - 'SG': '+65 ddddddddd', - 'SK': '+421 ddddddddd', - 'SI': '+386 ddddddddd', - 'SB': '+677 ddddddddd', - 'SO': '+252 ddddddddd', - 'ZA': '+27 ddddddddd', - 'GS': '+0 ddddddddd', - 'KR': '+82 ddddddddd', - 'ES': '+34 ddddddddd', - 'LK': '+94 ddddddddd', - 'SD': '+249 ddddddddd', - 'SR': '+597 ddddddddd', - 'SJ': '+0 ddddddddd', - 'SZ': '+268 ddddddddd', - 'SE': '+46 ddddddddd', - 'CH': '+41 ddddddddd', - 'SY': '+963 ddddddddd', - 'TW': '+886 ddddddddd', - 'TJ': '+992 ddddddddd', - 'TZ': '+255 ddddddddd', - 'TH': '+66 ddddddddd', - 'BS': '+1 (ddd) ddd-dddd', - 'GM': '+220 ddddddddd', - 'TG': '+228 ddddddddd', - 'TK': '+690 ddddddddd', - 'TO': '+676 ddddddddd', - 'TT': '+1 (ddd) ddd-dddd', - 'TN': '+216 ddddddddd', - 'TR': '+90 ddddddddd', - 'TM': '+993 ddddddddd', - 'TC': '+1 (ddd) ddd-dddd', - 'TV': '+688 ddddddddd', - 'VI': '+1 (ddd) ddd-dddd', - 'UG': '+256 ddddddddd', - 'UA': '+380 ddddddddd', - 'AE': '+971 ddddddddd', - 'GB': '+44 (ddd) dddd dddd', - 'US': '+1 (ddd) ddd-dddd', - 'UM': '+0 ddddddddd', - 'UY': '+598 ddddddddd', - 'UZ': '+998 ddddddddd', - 'VU': '+678 ddddddddd', - 'VA': '+39 ddddddddd', - 'VE': '+58 ddddddddd', - 'VN': '+84 ddddddddd', - 'WF': '+681 ddddddddd', - 'EH': '+0 ddddddddd', - 'YE': '+967 ddddddddd', - 'YU': '+0 ddddddddd', - 'ZM': '+260 ddddddddd', - 'ZW': '+263 ddddddddd' -}; - -/* ========================================================== - * bootstrap-formhelpers-states.en_US.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -var BFHStatesList = { - 'AF':{ - '1' : {'code':'BAL','name':'Balkh'}, - '2' : {'code':'BAM','name':'Bamian'}, - '3' : {'code':'BDG','name':'Badghis'}, - '4' : {'code':'BDS','name':'Badakhshan'}, - '5' : {'code':'BGL','name':'Baghlan'}, - '6' : {'code':'FRA','name':'Farah'}, - '7' : {'code':'FYB','name':'Faryab'}, - '8' : {'code':'GHA','name':'Ghazni'}, - '9' : {'code':'GHO','name':'Ghowr'}, - '10' : {'code':'HEL','name':'Helmand'}, - '11' : {'code':'HER','name':'Herat'}, - '12' : {'code':'JOW','name':'Jowzjan'}, - '13' : {'code':'KAB','name':'Kabul'}, - '14' : {'code':'KAN','name':'Kandahar'}, - '15' : {'code':'KAP','name':'Kapisa'}, - '16' : {'code':'KDZ','name':'Kondoz'}, - '17' : {'code':'KHO','name':'Khost'}, - '18' : {'code':'KNR','name':'Konar'}, - '19' : {'code':'LAG','name':'Laghman'}, - '20' : {'code':'LOW','name':'Lowgar'}, - '21' : {'code':'NAN','name':'Nangrahar'}, - '22' : {'code':'NIM','name':'Nimruz'}, - '23' : {'code':'NUR','name':'Nurestan'}, - '24' : {'code':'ORU','name':'Oruzgan'}, - '25' : {'code':'PAR','name':'Parwan'}, - '26' : {'code':'PIA','name':'Paktia'}, - '27' : {'code':'PKA','name':'Paktika'}, - '28' : {'code':'SAM','name':'Samangan'}, - '29' : {'code':'SAR','name':'Sar-e Pol'}, - '30' : {'code':'TAK','name':'Takhar'}, - '31' : {'code':'WAR','name':'Wardak'}, - '32' : {'code':'ZAB','name':'Zabol'} - }, - 'AL':{ - '1' : {'code':'BR','name':'Berat'}, - '2' : {'code':'BU','name':'Bulqize'}, - '3' : {'code':'DI','name':'Diber'}, - '4' : {'code':'DL','name':'Delvine'}, - '5' : {'code':'DR','name':'Durres'}, - '6' : {'code':'DV','name':'Devoll'}, - '7' : {'code':'EL','name':'Elbasan'}, - '8' : {'code':'ER','name':'Kolonje'}, - '9' : {'code':'FR','name':'Fier'}, - '10' : {'code':'GJ','name':'Gjirokaster'}, - '11' : {'code':'GR','name':'Gramsh'}, - '12' : {'code':'HA','name':'Has'}, - '13' : {'code':'KA','name':'Kavaje'}, - '14' : {'code':'KB','name':'Kurbin'}, - '15' : {'code':'KC','name':'Kucove'}, - '16' : {'code':'KO','name':'Korce'}, - '17' : {'code':'KR','name':'Kruje'}, - '18' : {'code':'KU','name':'Kukes'}, - '19' : {'code':'LB','name':'Librazhd'}, - '20' : {'code':'LE','name':'Lezhe'}, - '21' : {'code':'LU','name':'Lushnje'}, - '22' : {'code':'MK','name':'Mallakaster'}, - '23' : {'code':'MM','name':'Malesi e Madhe'}, - '24' : {'code':'MR','name':'Mirdite'}, - '25' : {'code':'MT','name':'Mat'}, - '26' : {'code':'PG','name':'Pogradec'}, - '27' : {'code':'PQ','name':'Peqin'}, - '28' : {'code':'PR','name':'Permet'}, - '29' : {'code':'PU','name':'Puke'}, - '30' : {'code':'SH','name':'Shkoder'}, - '31' : {'code':'SK','name':'Skrapar'}, - '32' : {'code':'SR','name':'Sarande'}, - '33' : {'code':'TE','name':'Tepelene'}, - '34' : {'code':'TP','name':'Tropoje'}, - '35' : {'code':'TR','name':'Tirane'}, - '36' : {'code':'VL','name':'Vlore'} - }, - 'DZ':{ - '1' : {'code':'ADE','name':'Ain Defla'}, - '2' : {'code':'ADR','name':'Adrar'}, - '3' : {'code':'ALG','name':'Alger'}, - '4' : {'code':'ANN','name':'Annaba'}, - '5' : {'code':'ATE','name':'Ain Temouchent'}, - '6' : {'code':'BAT','name':'Batna'}, - '7' : {'code':'BBA','name':'Bordj Bou Arreridj'}, - '8' : {'code':'BEC','name':'Bechar'}, - '9' : {'code':'BEJ','name':'Bejaia'}, - '10' : {'code':'BIS','name':'Biskra'}, - '11' : {'code':'BLI','name':'Blida'}, - '12' : {'code':'BMD','name':'Boumerdes'}, - '13' : {'code':'BOA','name':'Bouira'}, - '14' : {'code':'CHL','name':'Chlef'}, - '15' : {'code':'CON','name':'Constantine'}, - '16' : {'code':'DJE','name':'Djelfa'}, - '17' : {'code':'EBA','name':'El Bayadh'}, - '18' : {'code':'EOU','name':'El Oued'}, - '19' : {'code':'ETA','name':'El Tarf'}, - '20' : {'code':'GHA','name':'Ghardaia'}, - '21' : {'code':'GUE','name':'Guelma'}, - '22' : {'code':'ILL','name':'Illizi'}, - '23' : {'code':'JIJ','name':'Jijel'}, - '24' : {'code':'KHE','name':'Khenchela'}, - '25' : {'code':'LAG','name':'Laghouat'}, - '26' : {'code':'MED','name':'Medea'}, - '27' : {'code':'MIL','name':'Mila'}, - '28' : {'code':'MOS','name':'Mostaganem'}, - '29' : {'code':'MSI','name':'M\'Sila'}, - '30' : {'code':'MUA','name':'Muaskar'}, - '31' : {'code':'NAA','name':'Naama'}, - '32' : {'code':'OEB','name':'Oum el-Bouaghi'}, - '33' : {'code':'ORA','name':'Oran'}, - '34' : {'code':'OUA','name':'Ouargla'}, - '35' : {'code':'REL','name':'Relizane'}, - '36' : {'code':'SAH','name':'Souk Ahras'}, - '37' : {'code':'SAI','name':'Saida'}, - '38' : {'code':'SBA','name':'Sidi Bel Abbes'}, - '39' : {'code':'SET','name':'Setif'}, - '40' : {'code':'SKI','name':'Skikda'}, - '41' : {'code':'TAM','name':'Tamanghasset'}, - '42' : {'code':'TEB','name':'Tebessa'}, - '43' : {'code':'TIA','name':'Tiaret'}, - '44' : {'code':'TIN','name':'Tindouf'}, - '45' : {'code':'TIP','name':'Tipaza'}, - '46' : {'code':'TIS','name':'Tissemsilt'}, - '47' : {'code':'TLE','name':'Tlemcen'}, - '48' : {'code':'TOU','name':'Tizi Ouzou'} - }, - 'AS':{ - '1' : {'code':'E','name':'Eastern'}, - '2' : {'code':'M','name':'Manu\'a'}, - '3' : {'code':'R','name':'Rose Island'}, - '4' : {'code':'S','name':'Swains Island'}, - '5' : {'code':'W','name':'Western'} - }, - 'AD':{ - '1' : {'code':'ALV','name':'Andorra la Vella'}, - '2' : {'code':'CAN','name':'Canillo'}, - '3' : {'code':'ENC','name':'Encamp'}, - '4' : {'code':'ESE','name':'Escaldes-Engordany'}, - '5' : {'code':'LMA','name':'La Massana'}, - '6' : {'code':'ORD','name':'Ordino'}, - '7' : {'code':'SJL','name':'Sant Julià de Lòria'} - }, - 'AO':{ - '1' : {'code':'BGO','name':'Bengo'}, - '2' : {'code':'BGU','name':'Benguela'}, - '3' : {'code':'BIE','name':'Bie'}, - '4' : {'code':'CAB','name':'Cabinda'}, - '5' : {'code':'CCU','name':'Cuando-Cubango'}, - '6' : {'code':'CNO','name':'Cuanza Norte'}, - '7' : {'code':'CUS','name':'Cuanza Sul'}, - '8' : {'code':'CNN','name':'Cunene'}, - '9' : {'code':'HUA','name':'Huambo'}, - '10' : {'code':'HUI','name':'Huila'}, - '11' : {'code':'LUA','name':'Luanda'}, - '12' : {'code':'LNO','name':'Lunda Norte'}, - '13' : {'code':'LSU','name':'Lunda Sul'}, - '14' : {'code':'MAL','name':'Malange'}, - '15' : {'code':'MOX','name':'Moxico'}, - '16' : {'code':'NAM','name':'Namibe'}, - '17' : {'code':'UIG','name':'Uige'}, - '18' : {'code':'ZAI','name':'Zaire'} - }, - 'AI':{ - '1' : {'code':'ANG','name':'Anguillita'}, - '2' : {'code':'ANG','name':'Anguila'}, - '3' : {'code':'DOG','name':'Dog'}, - '4' : {'code':'LIT','name':'Little Scrub'}, - '5' : {'code':'PRI','name':'Prickly Pear'}, - '6' : {'code':'SAN','name':'Sandy'}, - '7' : {'code':'SCR','name':'Scrub'}, - '8' : {'code':'SEA','name':'Seal'}, - '9' : {'code':'SOM','name':'Sombrero'} - }, - 'AQ':{ - '1' : {'code':'ASG','name':'Saint George'}, - '2' : {'code':'ASH','name':'Saint Philip'}, - '3' : {'code':'ASJ','name':'Saint John'}, - '4' : {'code':'ASL','name':'Saint Paul'}, - '5' : {'code':'ASM','name':'Saint Mary'}, - '6' : {'code':'ASR','name':'Saint Peter'}, - '7' : {'code':'BAR','name':'Barbuda'}, - '8' : {'code':'RED','name':'Redonda'} - }, - 'AR':{ - '1' : {'code':'AN','name':'Antartida e Islas del Atlantico'}, - '2' : {'code':'BA','name':'Buenos Aires'}, - '3' : {'code':'CA','name':'Catamarca'}, - '4' : {'code':'CH','name':'Chaco'}, - '5' : {'code':'CU','name':'Chubut'}, - '6' : {'code':'CO','name':'Cordoba'}, - '7' : {'code':'CR','name':'Corrientes'}, - '8' : {'code':'CF','name':'Capital Federal'}, - '9' : {'code':'ER','name':'Entre Rios'}, - '10' : {'code':'FO','name':'Formosa'}, - '11' : {'code':'JU','name':'Jujuy'}, - '12' : {'code':'LP','name':'La Pampa'}, - '13' : {'code':'LR','name':'La Rioja'}, - '14' : {'code':'ME','name':'Mendoza'}, - '15' : {'code':'MI','name':'Misiones'}, - '16' : {'code':'NE','name':'Neuquen'}, - '17' : {'code':'RN','name':'Rio Negro'}, - '18' : {'code':'SA','name':'Salta'}, - '19' : {'code':'SJ','name':'San Juan'}, - '20' : {'code':'SL','name':'San Luis'}, - '21' : {'code':'SC','name':'Santa Cruz'}, - '22' : {'code':'SF','name':'Santa Fe'}, - '23' : {'code':'SD','name':'Santiago del Estero'}, - '24' : {'code':'TF','name':'Tierra del Fuego'}, - '25' : {'code':'TU','name':'Tucuman'} - }, - 'AM':{ - '1' : {'code':'AGT','name':'Aragatsotn'}, - '2' : {'code':'ARR','name':'Ararat'}, - '3' : {'code':'ARM','name':'Armavir'}, - '4' : {'code':'GEG','name':'Geghark \'unik\''}, - '5' : {'code':'KOT','name':'Kotayk\''}, - '6' : {'code':'LOR','name':'Lorri'}, - '7' : {'code':'SHI','name':'Shirak'}, - '8' : {'code':'SYU','name':'Syunik\''}, - '9' : {'code':'TAV','name':'Tavush'}, - '10' : {'code':'VAY','name':'Vayots\' Dzor'}, - '11' : {'code':'YER','name':'Yerevan'} - }, - 'AW':{ - '1' : {'code':'ARU','name':'Aruba'}, - '2' : {'code':'DRU','name':'Druif Beach'}, - '3' : {'code':'MAN','name':'Manchebo Beach'}, - '4' : {'code':'NOO','name':'Noord'}, - '5' : {'code':'ORA','name':'Oranjestad'}, - '6' : {'code':'PAL','name':'Palm Beach'}, - '7' : {'code':'ROO','name':'Rooi Thomas'}, - '8' : {'code':'SIN','name':'Sint Nicolaas'}, - '9' : {'code':'SIN','name':'Sint Nicolas'}, - '10' : {'code':'WAY','name':'Wayaca'} - }, - 'AU':{ - '1' : {'code':'ACT','name':'Australian Capital Territory'}, - '2' : {'code':'NSW','name':'New South Wales'}, - '3' : {'code':'NT','name':'Northern Territory'}, - '4' : {'code':'QLD','name':'Queensland'}, - '5' : {'code':'SA','name':'South Australia'}, - '6' : {'code':'TAS','name':'Tasmania'}, - '7' : {'code':'VIC','name':'Victoria'}, - '8' : {'code':'WA','name':'Western Australia'} - }, - 'AT':{ - '1' : {'code':'BUR','name':'Burgenland'}, - '2' : {'code':'KAR','name':'Krnten'}, - '3' : {'code':'NOS','name':'Niederöesterreich'}, - '4' : {'code':'OOS','name':'Oberöesterreich'}, - '5' : {'code':'SAL','name':'Salzburg'}, - '6' : {'code':'STE','name':'Steiermark'}, - '7' : {'code':'TIR','name':'Tirol'}, - '8' : {'code':'VOR','name':'Vorarlberg'}, - '9' : {'code':'WIE','name':'Wien'} - }, - 'AZ':{ - '1' : {'code':'AB','name':'Ali Bayramli'}, - '2' : {'code':'ABS','name':'Abseron'}, - '3' : {'code':'AGC','name':'AgcabAdi'}, - '4' : {'code':'AGM','name':'Agdam'}, - '5' : {'code':'AGS','name':'Agdas'}, - '6' : {'code':'AGA','name':'Agstafa'}, - '7' : {'code':'AGU','name':'Agsu'}, - '8' : {'code':'AST','name':'Astara'}, - '9' : {'code':'BA','name':'Baki'}, - '10' : {'code':'BAB','name':'BabAk'}, - '11' : {'code':'BAL','name':'BalakAn'}, - '12' : {'code':'BAR','name':'BArdA'}, - '13' : {'code':'BEY','name':'Beylaqan'}, - '14' : {'code':'BIL','name':'Bilasuvar'}, - '15' : {'code':'CAB','name':'Cabrayil'}, - '16' : {'code':'CAL','name':'Calilabab'}, - '17' : {'code':'CUL','name':'Culfa'}, - '18' : {'code':'DAS','name':'Daskasan'}, - '19' : {'code':'DAV','name':'Davaci'}, - '20' : {'code':'FUZ','name':'Fuzuli'}, - '21' : {'code':'GA','name':'Ganca'}, - '22' : {'code':'GAD','name':'Gadabay'}, - '23' : {'code':'GOR','name':'Goranboy'}, - '24' : {'code':'GOY','name':'Goycay'}, - '25' : {'code':'HAC','name':'Haciqabul'}, - '26' : {'code':'IMI','name':'Imisli'}, - '27' : {'code':'ISM','name':'Ismayilli'}, - '28' : {'code':'KAL','name':'Kalbacar'}, - '29' : {'code':'KUR','name':'Kurdamir'}, - '30' : {'code':'LA','name':'Lankaran'}, - '31' : {'code':'LAC','name':'Lacin'}, - '32' : {'code':'LAN','name':'Lankaran'}, - '33' : {'code':'LER','name':'Lerik'}, - '34' : {'code':'MAS','name':'Masalli'}, - '35' : {'code':'MI','name':'Mingacevir'}, - '36' : {'code':'NA','name':'Naftalan'}, - '37' : {'code':'NX','name':'Naxcivan'}, - '38' : {'code':'NEF','name':'Neftcala'}, - '39' : {'code':'OGU','name':'Oguz'}, - '40' : {'code':'ORD','name':'Ordubad'}, - '41' : {'code':'QAB','name':'Qabala'}, - '42' : {'code':'QAX','name':'Qax'}, - '43' : {'code':'QAZ','name':'Qazax'}, - '44' : {'code':'QOB','name':'Qobustan'}, - '45' : {'code':'QBA','name':'Quba'}, - '46' : {'code':'QBI','name':'Qubadli'}, - '47' : {'code':'QUS','name':'Qusar'}, - '48' : {'code':'SA','name':'Saki'}, - '49' : {'code':'SAT','name':'Saatli'}, - '50' : {'code':'SAB','name':'Sabirabad'}, - '51' : {'code':'SAD','name':'Sadarak'}, - '52' : {'code':'SAH','name':'Sahbuz'}, - '53' : {'code':'SAK','name':'Saki'}, - '54' : {'code':'SAL','name':'Salyan'}, - '55' : {'code':'SM','name':'Sumqayit'}, - '56' : {'code':'SMI','name':'Samaxi'}, - '57' : {'code':'SKR','name':'Samkir'}, - '58' : {'code':'SMX','name':'Samux'}, - '59' : {'code':'SAR','name':'Sarur'}, - '60' : {'code':'SIY','name':'Siyazan'}, - '61' : {'code':'SS','name':'Susa'}, - '62' : {'code':'SUS','name':'Susa'}, - '63' : {'code':'TAR','name':'Tartar'}, - '64' : {'code':'TOV','name':'Tovuz'}, - '65' : {'code':'UCA','name':'Ucar'}, - '66' : {'code':'XA','name':'Xankandi'}, - '67' : {'code':'XAC','name':'Xacmaz'}, - '68' : {'code':'XAN','name':'Xanlar'}, - '69' : {'code':'XIZ','name':'Xizi'}, - '70' : {'code':'XCI','name':'Xocali'}, - '71' : {'code':'XVD','name':'Xocavand'}, - '72' : {'code':'YAR','name':'Yardimli'}, - '73' : {'code':'YEV','name':'Yevlax'}, - '74' : {'code':'ZAN','name':'Zangilan'}, - '75' : {'code':'ZAQ','name':'Zaqatala'}, - '76' : {'code':'ZAR','name':'Zardab'} - }, - 'BS':{ - '1' : {'code':'ACK','name':'Acklins'}, - '2' : {'code':'BER','name':'Berry Islands'}, - '3' : {'code':'BIM','name':'Bimini'}, - '4' : {'code':'BLK','name':'Black Point'}, - '5' : {'code':'CAT','name':'Cat Island'}, - '6' : {'code':'CAB','name':'Central Abaco'}, - '7' : {'code':'CAN','name':'Central Andros'}, - '8' : {'code':'CEL','name':'Central Eleuthera'}, - '9' : {'code':'FRE','name':'City of Freeport'}, - '10' : {'code':'CRO','name':'Crooked Island'}, - '11' : {'code':'EGB','name':'East Grand Bahama'}, - '12' : {'code':'EXU','name':'Exuma'}, - '13' : {'code':'GRD','name':'Grand Cay'}, - '14' : {'code':'HAR','name':'Harbour Island'}, - '15' : {'code':'HOP','name':'Hope Town'}, - '16' : {'code':'INA','name':'Inagua'}, - '17' : {'code':'LNG','name':'Long Island'}, - '18' : {'code':'MAN','name':'Mangrove Cay'}, - '19' : {'code':'MAY','name':'Mayaguana'}, - '20' : {'code':'MOO','name':'Moore\'s Island'}, - '21' : {'code':'NAB','name':'North Abaco'}, - '22' : {'code':'NAN','name':'North Andros'}, - '23' : {'code':'NEL','name':'North Eleuthera'}, - '24' : {'code':'RAG','name':'Ragged Island'}, - '25' : {'code':'RUM','name':'Rum Cay'}, - '26' : {'code':'SAL','name':'San Salvador'}, - '27' : {'code':'SAB','name':'South Abaco'}, - '28' : {'code':'SAN','name':'South Andros'}, - '29' : {'code':'SEL','name':'South Eleuthera'}, - '30' : {'code':'SWE','name':'Spanish Wells'}, - '31' : {'code':'WGB','name':'West Grand Bahama'} - }, - 'BH':{ - '1' : {'code':'CAP','name':'Capital'}, - '2' : {'code':'CEN','name':'Central'}, - '3' : {'code':'MUH','name':'Muharraq'}, - '4' : {'code':'NOR','name':'Northern'}, - '5' : {'code':'SOU','name':'Southern'} - }, - 'BD':{ - '1' : {'code':'BAR','name':'Barisal'}, - '2' : {'code':'CHI','name':'Chittagong'}, - '3' : {'code':'DHA','name':'Dhaka'}, - '4' : {'code':'KHU','name':'Khulna'}, - '5' : {'code':'RAJ','name':'Rajshahi'}, - '6' : {'code':'SYL','name':'Sylhet'} - }, - 'BB':{ - '1' : {'code':'CC','name':'Christ Church'}, - '2' : {'code':'AND','name':'Saint Andrew'}, - '3' : {'code':'GEO','name':'Saint George'}, - '4' : {'code':'JAM','name':'Saint James'}, - '5' : {'code':'JOH','name':'Saint John'}, - '6' : {'code':'JOS','name':'Saint Joseph'}, - '7' : {'code':'LUC','name':'Saint Lucy'}, - '8' : {'code':'MIC','name':'Saint Michael'}, - '9' : {'code':'PET','name':'Saint Peter'}, - '10' : {'code':'PHI','name':'Saint Philip'}, - '11' : {'code':'THO','name':'Saint Thomas'} - }, - 'BY':{ - '1' : {'code':'BR','name':'Brestskaya (Brest)'}, - '2' : {'code':'HO','name':'Homyel\'skaya (Homyel\')'}, - '3' : {'code':'HM','name':'Horad Minsk'}, - '4' : {'code':'HR','name':'Hrodzyenskaya (Hrodna)'}, - '5' : {'code':'MA','name':'Mahilyowskaya (Mahilyow)'}, - '6' : {'code':'MI','name':'Minskaya'}, - '7' : {'code':'VI','name':'Vitsyebskaya (Vitsyebsk)'} - }, - 'BE':{ - '1' : {'code':'VAN','name':'Antwerpen'}, - '2' : {'code':'WBR','name':'Brabant Wallon'}, - '3' : {'code':'WHT','name':'Hainaut'}, - '4' : {'code':'WLG','name':'Liege'}, - '5' : {'code':'VLI','name':'Limburg'}, - '6' : {'code':'WLX','name':'Luxembourg'}, - '7' : {'code':'WNA','name':'Namur'}, - '8' : {'code':'VOV','name':'Oost-Vlaanderen'}, - '9' : {'code':'VBR','name':'Vlaams Brabant'}, - '10' : {'code':'VWV','name':'West-Vlaanderen'} - }, - 'BZ':{ - '1' : {'code':'BZ','name':'Belize'}, - '2' : {'code':'CY','name':'Cayo'}, - '3' : {'code':'CR','name':'Corozal'}, - '4' : {'code':'OW','name':'Orange Walk'}, - '5' : {'code':'SC','name':'Stann Creek'}, - '6' : {'code':'TO','name':'Toledo'} - }, - 'BJ':{ - '1' : {'code':'AL','name':'Alibori'}, - '2' : {'code':'AK','name':'Atakora'}, - '3' : {'code':'AQ','name':'Atlantique'}, - '4' : {'code':'BO','name':'Borgou'}, - '5' : {'code':'CO','name':'Collines'}, - '6' : {'code':'DO','name':'Donga'}, - '7' : {'code':'KO','name':'Kouffo'}, - '8' : {'code':'LI','name':'Littoral'}, - '9' : {'code':'MO','name':'Mono'}, - '10' : {'code':'OU','name':'Oueme'}, - '11' : {'code':'PL','name':'Plateau'}, - '12' : {'code':'ZO','name':'Zou'} - }, - 'BM':{ - '1' : {'code':'DS','name':'Devonshire'}, - '2' : {'code':'HC','name':'Hamilton City'}, - '3' : {'code':'HA','name':'Hamilton'}, - '4' : {'code':'PG','name':'Paget'}, - '5' : {'code':'PB','name':'Pembroke'}, - '6' : {'code':'GC','name':'Saint George City'}, - '7' : {'code':'SG','name':'Saint George\'s'}, - '8' : {'code':'SA','name':'Sandys'}, - '9' : {'code':'SM','name':'Smith\'s'}, - '10' : {'code':'SH','name':'Southampton'}, - '11' : {'code':'WA','name':'Warwick'} - }, - 'BT':{ - '1' : {'code':'BUM','name':'Bumthang'}, - '2' : {'code':'CHU','name':'Chukha'}, - '3' : {'code':'DAG','name':'Dagana'}, - '4' : {'code':'GAS','name':'Gasa'}, - '5' : {'code':'HAA','name':'Haa'}, - '6' : {'code':'LHU','name':'Lhuntse'}, - '7' : {'code':'MON','name':'Mongar'}, - '8' : {'code':'PAR','name':'Paro'}, - '9' : {'code':'PEM','name':'Pemagatshel'}, - '10' : {'code':'PUN','name':'Punakha'}, - '11' : {'code':'SJO','name':'Samdrup Jongkhar'}, - '12' : {'code':'SAT','name':'Samtse'}, - '13' : {'code':'SAR','name':'Sarpang'}, - '14' : {'code':'THI','name':'Thimphu'}, - '15' : {'code':'TRG','name':'Trashigang'}, - '16' : {'code':'TRY','name':'Trashiyangste'}, - '17' : {'code':'TRO','name':'Trongsa'}, - '18' : {'code':'TSI','name':'Tsirang'}, - '19' : {'code':'WPH','name':'Wangdue Phodrang'}, - '20' : {'code':'ZHE','name':'Zhemgang'} - }, - 'BO':{ - '1' : {'code':'BEN','name':'Beni'}, - '2' : {'code':'CHU','name':'Chuquisaca'}, - '3' : {'code':'COC','name':'Cochabamba'}, - '4' : {'code':'LPZ','name':'La Paz'}, - '5' : {'code':'ORU','name':'Oruro'}, - '6' : {'code':'PAN','name':'Pando'}, - '7' : {'code':'POT','name':'Potosi'}, - '8' : {'code':'SCZ','name':'Santa Cruz'}, - '9' : {'code':'TAR','name':'Tarija'} - }, - 'BA':{ - '1' : {'code':'BRO','name':'Brcko district'}, - '2' : {'code':'FBP','name':'Bosanskopodrinjski Kanton'}, - '3' : {'code':'FHN','name':'Hercegovacko-neretvanski Kanton'}, - '4' : {'code':'FPO','name':'Posavski Kanton'}, - '5' : {'code':'FSA','name':'Kanton Sarajevo'}, - '6' : {'code':'FSB','name':'Srednjebosanski Kanton'}, - '7' : {'code':'FTU','name':'Tuzlanski Kanton'}, - '8' : {'code':'FUS','name':'Unsko-Sanski Kanton'}, - '9' : {'code':'FZA','name':'Zapadnobosanska'}, - '10' : {'code':'FZE','name':'Zenicko-Dobojski Kanton'}, - '11' : {'code':'FZH','name':'Zapadnohercegovacka Zupanija'}, - '12' : {'code':'SBI','name':'Bijeljina'}, - '13' : {'code':'SBL','name':'Banja Luka'}, - '14' : {'code':'SDO','name':'Doboj'}, - '15' : {'code':'SFO','name':'Foca'}, - '16' : {'code':'SSR','name':'Sarajevo-Romanija or Sokolac'}, - '17' : {'code':'STR','name':'Trebinje'}, - '18' : {'code':'SVL','name':'Vlasenica'} - }, - 'BW':{ - '1' : {'code':'CE','name':'Central'}, - '2' : {'code':'GH','name':'Ghanzi'}, - '3' : {'code':'KD','name':'Kgalagadi'}, - '4' : {'code':'KT','name':'Kgatleng'}, - '5' : {'code':'KW','name':'Kweneng'}, - '6' : {'code':'NG','name':'Ngamiland'}, - '7' : {'code':'NE','name':'North East'}, - '8' : {'code':'NW','name':'North West'}, - '9' : {'code':'SE','name':'South East'}, - '10' : {'code':'SO','name':'Southern'} - }, - 'BR':{ - '1' : {'code':'AC','name':'Acre'}, - '2' : {'code':'AL','name':'Alagoas'}, - '3' : {'code':'AP','name':'Amapa'}, - '4' : {'code':'AM','name':'Amazonas'}, - '5' : {'code':'BA','name':'Bahia'}, - '6' : {'code':'CE','name':'Ceara'}, - '7' : {'code':'DF','name':'Distrito Federal'}, - '8' : {'code':'ES','name':'Espirito Santo'}, - '9' : {'code':'GO','name':'Goias'}, - '10' : {'code':'MA','name':'Maranhao'}, - '11' : {'code':'MT','name':'Mato Grosso'}, - '12' : {'code':'MS','name':'Mato Grosso do Sul'}, - '13' : {'code':'MG','name':'Minas Gerais'}, - '14' : {'code':'PA','name':'Para'}, - '15' : {'code':'PB','name':'Paraiba'}, - '16' : {'code':'PR','name':'Parana'}, - '17' : {'code':'PE','name':'Pernambuco'}, - '18' : {'code':'PI','name':'Piaui'}, - '19' : {'code':'RJ','name':'Rio de Janeiro'}, - '20' : {'code':'RN','name':'Rio Grande do Norte'}, - '21' : {'code':'RS','name':'Rio Grande do Sul'}, - '22' : {'code':'RO','name':'Rondonia'}, - '23' : {'code':'RR','name':'Roraima'}, - '24' : {'code':'SC','name':'Santa Catarina'}, - '25' : {'code':'SP','name':'Sao Paulo'}, - '26' : {'code':'SE','name':'Sergipe'}, - '27' : {'code':'TO','name':'Tocantins'} - }, - 'IO':{ - '1' : {'code':'DG','name':'Diego Garcia'}, - '2' : {'code':'DI','name':'Danger Island'}, - '3' : {'code':'EA','name':'Eagle Islands'}, - '4' : {'code':'EG','name':'Egmont Islands'}, - '5' : {'code':'NI','name':'Nelsons Island'}, - '6' : {'code':'PB','name':'Peros Banhos'}, - '7' : {'code':'SI','name':'Salomon Islands'}, - '8' : {'code':'TB','name':'Three Brothers'} - }, - 'BN':{ - '1' : {'code':'BEL','name':'Belait'}, - '2' : {'code':'BRM','name':'Brunei and Muara'}, - '3' : {'code':'TEM','name':'Temburong'}, - '4' : {'code':'TUT','name':'Tutong'} - }, - 'BG':{ - '1' : {'code':'BG-01','name':'Blagoevgrad'}, - '2' : {'code':'BG-02','name':'Burgas'}, - '3' : {'code':'BG-03','name':'Dobrich'}, - '4' : {'code':'BG-04','name':'Gabrovo'}, - '5' : {'code':'BG-05','name':'Haskovo'}, - '6' : {'code':'BG-06','name':'Kardjali'}, - '7' : {'code':'BG-07','name':'Kyustendil'}, - '8' : {'code':'BG-08','name':'Lovech'}, - '9' : {'code':'BG-09','name':'Montana'}, - '10' : {'code':'BG-10','name':'Pazardjik'}, - '11' : {'code':'BG-11','name':'Pernik'}, - '12' : {'code':'BG-12','name':'Pleven'}, - '13' : {'code':'BG-13','name':'Plovdiv'}, - '14' : {'code':'BG-14','name':'Razgrad'}, - '15' : {'code':'BG-15','name':'Shumen'}, - '16' : {'code':'BG-16','name':'Silistra'}, - '17' : {'code':'BG-17','name':'Sliven'}, - '18' : {'code':'BG-18','name':'Smolyan'}, - '19' : {'code':'BG-19','name':'Sofia'}, - '20' : {'code':'BG-20','name':'Sofia - town'}, - '21' : {'code':'BG-21','name':'Stara Zagora'}, - '22' : {'code':'BG-22','name':'Targovishte'}, - '23' : {'code':'BG-23','name':'Varna'}, - '24' : {'code':'BG-24','name':'Veliko Tarnovo'}, - '25' : {'code':'BG-25','name':'Vidin'}, - '26' : {'code':'BG-26','name':'Vratza'}, - '27' : {'code':'BG-27','name':'Yambol'} - }, - 'BF':{ - '1' : {'code':'BAL','name':'Bale'}, - '2' : {'code':'BAM','name':'Bam'}, - '3' : {'code':'BAN','name':'Banwa'}, - '4' : {'code':'BAZ','name':'Bazega'}, - '5' : {'code':'BOR','name':'Bougouriba'}, - '6' : {'code':'BLG','name':'Boulgou'}, - '7' : {'code':'BOK','name':'Boulkiemde'}, - '8' : {'code':'COM','name':'Comoe'}, - '9' : {'code':'GAN','name':'Ganzourgou'}, - '10' : {'code':'GNA','name':'Gnagna'}, - '11' : {'code':'GOU','name':'Gourma'}, - '12' : {'code':'HOU','name':'Houet'}, - '13' : {'code':'IOA','name':'Ioba'}, - '14' : {'code':'KAD','name':'Kadiogo'}, - '15' : {'code':'KEN','name':'Kenedougou'}, - '16' : {'code':'KOD','name':'Komondjari'}, - '17' : {'code':'KOP','name':'Kompienga'}, - '18' : {'code':'KOS','name':'Kossi'}, - '19' : {'code':'KOL','name':'Koulpelogo'}, - '20' : {'code':'KOT','name':'Kouritenga'}, - '21' : {'code':'KOW','name':'Kourweogo'}, - '22' : {'code':'LER','name':'Leraba'}, - '23' : {'code':'LOR','name':'Loroum'}, - '24' : {'code':'MOU','name':'Mouhoun'}, - '25' : {'code':'NAH','name':'Nahouri'}, - '26' : {'code':'NAM','name':'Namentenga'}, - '27' : {'code':'NAY','name':'Nayala'}, - '28' : {'code':'NOU','name':'Noumbiel'}, - '29' : {'code':'OUB','name':'Oubritenga'}, - '30' : {'code':'OUD','name':'Oudalan'}, - '31' : {'code':'PAS','name':'Passore'}, - '32' : {'code':'PON','name':'Poni'}, - '33' : {'code':'SAG','name':'Sanguie'}, - '34' : {'code':'SAM','name':'Sanmatenga'}, - '35' : {'code':'SEN','name':'Seno'}, - '36' : {'code':'SIS','name':'Sissili'}, - '37' : {'code':'SOM','name':'Soum'}, - '38' : {'code':'SOR','name':'Sourou'}, - '39' : {'code':'TAP','name':'Tapoa'}, - '40' : {'code':'TUY','name':'Tuy'}, - '41' : {'code':'YAG','name':'Yagha'}, - '42' : {'code':'YAT','name':'Yatenga'}, - '43' : {'code':'ZIR','name':'Ziro'}, - '44' : {'code':'ZOD','name':'Zondoma'}, - '45' : {'code':'ZOW','name':'Zoundweogo'} - }, - 'BI':{ - '1' : {'code':'BB','name':'Bubanza'}, - '2' : {'code':'BJ','name':'Bujumbura'}, - '3' : {'code':'BR','name':'Bururi'}, - '4' : {'code':'CA','name':'Cankuzo'}, - '5' : {'code':'CI','name':'Cibitoke'}, - '6' : {'code':'GI','name':'Gitega'}, - '7' : {'code':'KR','name':'Karuzi'}, - '8' : {'code':'KY','name':'Kayanza'}, - '9' : {'code':'KI','name':'Kirundo'}, - '10' : {'code':'MA','name':'Makamba'}, - '11' : {'code':'MU','name':'Muramvya'}, - '12' : {'code':'MY','name':'Muyinga'}, - '13' : {'code':'MW','name':'Mwaro'}, - '14' : {'code':'NG','name':'Ngozi'}, - '15' : {'code':'RT','name':'Rutana'}, - '16' : {'code':'RY','name':'Ruyigi'} - }, - 'KH':{ - '1' : {'code':'BA','name':'Battambang'}, - '2' : {'code':'BM','name':'Banteay Meanchey'}, - '3' : {'code':'KB','name':'Keb'}, - '4' : {'code':'KK','name':'Kaoh Kong'}, - '5' : {'code':'KL','name':'Kandal'}, - '6' : {'code':'KM','name':'Kampong Cham'}, - '7' : {'code':'KN','name':'Kampong Chhnang'}, - '8' : {'code':'KO','name':'Kampong Som'}, - '9' : {'code':'KP','name':'Kampot'}, - '10' : {'code':'KR','name':'Kratie'}, - '11' : {'code':'KT','name':'Kampong Thom'}, - '12' : {'code':'KU','name':'Kampong Speu'}, - '13' : {'code':'MK','name':'Mondul Kiri'}, - '14' : {'code':'OM','name':'Oddar Meancheay'}, - '15' : {'code':'PA','name':'Pailin'}, - '16' : {'code':'PG','name':'Prey Veng'}, - '17' : {'code':'PP','name':'Phnom Penh'}, - '18' : {'code':'PR','name':'Preah Vihear'}, - '19' : {'code':'PS','name':'Preah Seihanu (Kompong Som or Si)'}, - '20' : {'code':'PU','name':'Pursat'}, - '21' : {'code':'RK','name':'Ratanak Kiri'}, - '22' : {'code':'SI','name':'Siemreap'}, - '23' : {'code':'SR','name':'Svay Rieng'}, - '24' : {'code':'ST','name':'Stung Treng'}, - '25' : {'code':'TK','name':'Takeo'} - }, - 'CM':{ - '1' : {'code':'ADA','name':'Adamawa (Adamaoua)'}, - '2' : {'code':'CEN','name':'Centre'}, - '3' : {'code':'EST','name':'East (Est)'}, - '4' : {'code':'EXN','name':'Extrême-Nord'}, - '5' : {'code':'LIT','name':'Littoral'}, - '6' : {'code':'NOR','name':'North (Nord)'}, - '7' : {'code':'NOT','name':'Northwest (Nord-Ouest)'}, - '8' : {'code':'OUE','name':'West (Ouest)'}, - '9' : {'code':'SUD','name':'South (Sud)'}, - '10' : {'code':'SOU','name':'Southwest (Sud-Ouest)'} - }, - 'CA':{ - '1' : {'code':'AB','name':'Alberta'}, - '2' : {'code':'BC','name':'British Columbia'}, - '3' : {'code':'MB','name':'Manitoba'}, - '4' : {'code':'NB','name':'New Brunswick'}, - '5' : {'code':'NL','name':'Newfoundland and Labrador'}, - '6' : {'code':'NT','name':'Northwest Territories'}, - '7' : {'code':'NS','name':'Nova Scotia'}, - '8' : {'code':'NU','name':'Nunavut'}, - '9' : {'code':'ON','name':'Ontario'}, - '10' : {'code':'PE','name':'Prince Edward Island'}, - '11' : {'code':'QC','name':'Québec'}, - '12' : {'code':'SK','name':'Saskatchewan'}, - '13' : {'code':'YT','name':'Yukon Territory'} - }, - 'CV':{ - '1' : {'code':'BV','name':'Boa Vista'}, - '2' : {'code':'BR','name':'Brava'}, - '3' : {'code':'CS','name':'Calheta de Sao Miguel'}, - '4' : {'code':'MA','name':'Maio'}, - '5' : {'code':'MO','name':'Mosteiros'}, - '6' : {'code':'PA','name':'Paul'}, - '7' : {'code':'PN','name':'Porto Novo'}, - '8' : {'code':'PR','name':'Praia'}, - '9' : {'code':'RG','name':'Ribeira Grande'}, - '10' : {'code':'SL','name':'Sal'}, - '11' : {'code':'CA','name':'Santa Catarina'}, - '12' : {'code':'CR','name':'Santa Cruz'}, - '13' : {'code':'SD','name':'Sao Domingos'}, - '14' : {'code':'SF','name':'Sao Filipe'}, - '15' : {'code':'SN','name':'Sao Nicolau'}, - '16' : {'code':'SV','name':'Sao Vicente'}, - '17' : {'code':'TA','name':'Tarrafal'} - }, - 'KY':{ - '1' : {'code':'CR','name':'Creek'}, - '2' : {'code':'EA','name':'Eastern'}, - '3' : {'code':'ML','name':'Midland'}, - '4' : {'code':'ST','name':'South Town'}, - '5' : {'code':'SP','name':'Spot Bay'}, - '6' : {'code':'SK','name':'Stake Bay'}, - '7' : {'code':'WD','name':'West End'}, - '8' : {'code':'WN','name':'Western'} - }, - 'CF':{ - '1' : {'code':'BAN','name':'Bangui'}, - '2' : {'code':'BBA','name':'Bamingui-Bangoran'}, - '3' : {'code':'BKO','name':'Basse-Kotto'}, - '4' : {'code':'HKO','name':'Haute-Kotto'}, - '5' : {'code':'HMB','name':'Haut-Mbomou'}, - '6' : {'code':'KEM','name':'Kemo'}, - '7' : {'code':'LOB','name':'Lobaye'}, - '8' : {'code':'MBO','name':'Mbomou'}, - '9' : {'code':'MKD','name':'Mambéré-Kadéï'}, - '10' : {'code':'NGR','name':'Nana-Grebizi'}, - '11' : {'code':'NMM','name':'Nana-Mambere'}, - '12' : {'code':'OMP','name':'Ombella-M\'Poko'}, - '13' : {'code':'OPE','name':'Ouham-Pende'}, - '14' : {'code':'OUH','name':'Ouham'}, - '15' : {'code':'OUK','name':'Ouaka'}, - '16' : {'code':'SMB','name':'Sangha-Mbaere'}, - '17' : {'code':'VAK','name':'Vakaga'} - }, - 'TD':{ - '1' : {'code':'BA','name':'Batha'}, - '2' : {'code':'BI','name':'Biltine'}, - '3' : {'code':'BE','name':'Borkou-Ennedi-Tibesti'}, - '4' : {'code':'CB','name':'Chari-Baguirmi'}, - '5' : {'code':'GU','name':'Guera'}, - '6' : {'code':'KA','name':'Kanem'}, - '7' : {'code':'LA','name':'Lac'}, - '8' : {'code':'LC','name':'Logone Occidental'}, - '9' : {'code':'LR','name':'Logone Oriental'}, - '10' : {'code':'MK','name':'Mayo-Kebbi'}, - '11' : {'code':'MC','name':'Moyen-Chari'}, - '12' : {'code':'OU','name':'Ouaddai'}, - '13' : {'code':'SA','name':'Salamat'}, - '14' : {'code':'TA','name':'Tandjile'} - }, - 'CL':{ - '1' : {'code':'AI','name':'Aisen del General Carlos Ibanez'}, - '2' : {'code':'AN','name':'Antofagasta'}, - '3' : {'code':'AR','name':'Araucania'}, - '4' : {'code':'AT','name':'Atacama'}, - '5' : {'code':'BI','name':'Bio-Bio'}, - '6' : {'code':'CO','name':'Coquimbo'}, - '7' : {'code':'LI','name':'Libertador General Bernardo O\'Hi'}, - '8' : {'code':'LL','name':'Los Lagos'}, - '9' : {'code':'MA','name':'Magallanes y de la Antartica Chi'}, - '10' : {'code':'ML','name':'Maule'}, - '11' : {'code':'RM','name':'Region Metropolitana'}, - '12' : {'code':'TA','name':'Tarapaca'}, - '13' : {'code':'VS','name':'Valparaiso'} - }, - 'CN':{ - '1' : {'code':'AN','name':'Anhui'}, - '2' : {'code':'BE','name':'Beijing'}, - '3' : {'code':'CH','name':'Chongqing'}, - '4' : {'code':'FU','name':'Fujian'}, - '5' : {'code':'GA','name':'Gansu'}, - '6' : {'code':'GU','name':'Guangdong'}, - '7' : {'code':'GX','name':'Guangxi'}, - '8' : {'code':'GZ','name':'Guizhou'}, - '9' : {'code':'HA','name':'Hainan'}, - '10' : {'code':'HB','name':'Hebei'}, - '11' : {'code':'HL','name':'Heilongjiang'}, - '12' : {'code':'HE','name':'Henan'}, - '13' : {'code':'HK','name':'Hong Kong'}, - '14' : {'code':'HU','name':'Hubei'}, - '15' : {'code':'HN','name':'Hunan'}, - '16' : {'code':'IM','name':'Inner Mongolia'}, - '17' : {'code':'JI','name':'Jiangsu'}, - '18' : {'code':'JX','name':'Jiangxi'}, - '19' : {'code':'JL','name':'Jilin'}, - '20' : {'code':'LI','name':'Liaoning'}, - '21' : {'code':'MA','name':'Macau'}, - '22' : {'code':'NI','name':'Ningxia'}, - '23' : {'code':'SH','name':'Shaanxi'}, - '24' : {'code':'SA','name':'Shandong'}, - '25' : {'code':'SG','name':'Shanghai'}, - '26' : {'code':'SX','name':'Shanxi'}, - '27' : {'code':'SI','name':'Sichuan'}, - '28' : {'code':'TI','name':'Tianjin'}, - '29' : {'code':'XI','name':'Xinjiang'}, - '30' : {'code':'YU','name':'Yunnan'}, - '31' : {'code':'ZH','name':'Zhejiang'} - }, - 'CC':{ - '1' : {'code':'D','name':'Direction Island'}, - '2' : {'code':'H','name':'Home Island'}, - '3' : {'code':'O','name':'Horsburgh Island'}, - '4' : {'code':'S','name':'South Island'}, - '5' : {'code':'W','name':'West Island'} - }, - 'CO':{ - '1' : {'code':'AMZ','name':'Amazonas'}, - '2' : {'code':'ANT','name':'Antioquia'}, - '3' : {'code':'ARA','name':'Arauca'}, - '4' : {'code':'ATL','name':'Atlantico'}, - '5' : {'code':'BDC','name':'Bogota D.C.'}, - '6' : {'code':'BOL','name':'Bolivar'}, - '7' : {'code':'BOY','name':'Boyaca'}, - '8' : {'code':'CAL','name':'Caldas'}, - '9' : {'code':'CAQ','name':'Caqueta'}, - '10' : {'code':'CAS','name':'Casanare'}, - '11' : {'code':'CAU','name':'Cauca'}, - '12' : {'code':'CES','name':'Cesar'}, - '13' : {'code':'CHO','name':'Choco'}, - '14' : {'code':'COR','name':'Cordoba'}, - '15' : {'code':'CAM','name':'Cundinamarca'}, - '16' : {'code':'GNA','name':'Guainia'}, - '17' : {'code':'GJR','name':'Guajira'}, - '18' : {'code':'GVR','name':'Guaviare'}, - '19' : {'code':'HUI','name':'Huila'}, - '20' : {'code':'MAG','name':'Magdalena'}, - '21' : {'code':'MET','name':'Meta'}, - '22' : {'code':'NAR','name':'Narino'}, - '23' : {'code':'NDS','name':'Norte de Santander'}, - '24' : {'code':'PUT','name':'Putumayo'}, - '25' : {'code':'QUI','name':'Quindio'}, - '26' : {'code':'RIS','name':'Risaralda'}, - '27' : {'code':'SAP','name':'San Andres y Providencia'}, - '28' : {'code':'SAN','name':'Santander'}, - '29' : {'code':'SUC','name':'Sucre'}, - '30' : {'code':'TOL','name':'Tolima'}, - '31' : {'code':'VDC','name':'Valle del Cauca'}, - '32' : {'code':'VAU','name':'Vaupes'}, - '33' : {'code':'VIC','name':'Vichada'} - }, - 'KM':{ - '1' : {'code':'G','name':'Grande Comore'}, - '2' : {'code':'A','name':'Anjouan'}, - '3' : {'code':'M','name':'Moheli'} - }, - 'CG':{ - '1' : {'code':'BO','name':'Bouenza'}, - '2' : {'code':'BR','name':'Brazzaville'}, - '3' : {'code':'CU','name':'Cuvette'}, - '4' : {'code':'CO','name':'Cuvette-Ouest'}, - '5' : {'code':'KO','name':'Kouilou'}, - '6' : {'code':'LE','name':'Lekoumou'}, - '7' : {'code':'LI','name':'Likouala'}, - '8' : {'code':'NI','name':'Niari'}, - '9' : {'code':'PL','name':'Plateaux'}, - '10' : {'code':'PO','name':'Pool'}, - '11' : {'code':'SA','name':'Sangha'} - }, - 'CK':{ - '1' : {'code':'AI','name':'Aitutaki'}, - '2' : {'code':'AT','name':'Atiu'}, - '3' : {'code':'MA','name':'Manuae'}, - '4' : {'code':'MG','name':'Mangaia'}, - '5' : {'code':'MK','name':'Manihiki'}, - '6' : {'code':'MT','name':'Mitiaro'}, - '7' : {'code':'MU','name':'Mauke'}, - '8' : {'code':'NI','name':'Nassau Island'}, - '9' : {'code':'PA','name':'Palmerston'}, - '10' : {'code':'PE','name':'Penrhyn'}, - '11' : {'code':'PU','name':'Pukapuka'}, - '12' : {'code':'RK','name':'Rakahanga'}, - '13' : {'code':'RR','name':'Rarotonga'}, - '14' : {'code':'SU','name':'Surwarrow'}, - '15' : {'code':'TA','name':'Takutea'} - }, - 'CR':{ - '1' : {'code':'AL','name':'Alajuela'}, - '2' : {'code':'CA','name':'Cartago'}, - '3' : {'code':'GU','name':'Guanacaste'}, - '4' : {'code':'HE','name':'Heredia'}, - '5' : {'code':'LI','name':'Limon'}, - '6' : {'code':'PU','name':'Puntarenas'}, - '7' : {'code':'SJ','name':'San Jose'} - }, - 'CI':{ - '1' : {'code':'ABE','name':'Abengourou'}, - '2' : {'code':'ABI','name':'Abidjan'}, - '3' : {'code':'ABO','name':'Aboisso'}, - '4' : {'code':'ADI','name':'Adiake'}, - '5' : {'code':'ADZ','name':'Adzope'}, - '6' : {'code':'AGB','name':'Agboville'}, - '7' : {'code':'AGN','name':'Agnibilekrou'}, - '8' : {'code':'ALE','name':'Alepe'}, - '9' : {'code':'BOC','name':'Bocanda'}, - '10' : {'code':'BAN','name':'Bangolo'}, - '11' : {'code':'BEO','name':'Beoumi'}, - '12' : {'code':'BIA','name':'Biankouma'}, - '13' : {'code':'BDK','name':'Bondoukou'}, - '14' : {'code':'BGN','name':'Bongouanou'}, - '15' : {'code':'BFL','name':'Bouafle'}, - '16' : {'code':'BKE','name':'Bouake'}, - '17' : {'code':'BNA','name':'Bouna'}, - '18' : {'code':'BDL','name':'Boundiali'}, - '19' : {'code':'DKL','name':'Dabakala'}, - '20' : {'code':'DBU','name':'Dabou'}, - '21' : {'code':'DAL','name':'Daloa'}, - '22' : {'code':'DAN','name':'Danane'}, - '23' : {'code':'DAO','name':'Daoukro'}, - '24' : {'code':'DIM','name':'Dimbokro'}, - '25' : {'code':'DIV','name':'Divo'}, - '26' : {'code':'DUE','name':'Duekoue'}, - '27' : {'code':'FER','name':'Ferkessedougou'}, - '28' : {'code':'GAG','name':'Gagnoa'}, - '29' : {'code':'GBA','name':'Grand-Bassam'}, - '30' : {'code':'GLA','name':'Grand-Lahou'}, - '31' : {'code':'GUI','name':'Guiglo'}, - '32' : {'code':'ISS','name':'Issia'}, - '33' : {'code':'JAC','name':'Jacqueville'}, - '34' : {'code':'KAT','name':'Katiola'}, - '35' : {'code':'KOR','name':'Korhogo'}, - '36' : {'code':'LAK','name':'Lakota'}, - '37' : {'code':'MAN','name':'Man'}, - '38' : {'code':'MKN','name':'Mankono'}, - '39' : {'code':'MBA','name':'Mbahiakro'}, - '40' : {'code':'ODI','name':'Odienne'}, - '41' : {'code':'OUM','name':'Oume'}, - '42' : {'code':'SAK','name':'Sakassou'}, - '43' : {'code':'SPE','name':'San-Pedro'}, - '44' : {'code':'SAS','name':'Sassandra'}, - '45' : {'code':'SEG','name':'Seguela'}, - '46' : {'code':'SIN','name':'Sinfra'}, - '47' : {'code':'SOU','name':'Soubre'}, - '48' : {'code':'TAB','name':'Tabou'}, - '49' : {'code':'TAN','name':'Tanda'}, - '50' : {'code':'TIE','name':'Tiebissou'}, - '51' : {'code':'TIN','name':'Tingrela'}, - '52' : {'code':'TIA','name':'Tiassale'}, - '53' : {'code':'TBA','name':'Touba'}, - '54' : {'code':'TLP','name':'Toulepleu'}, - '55' : {'code':'TMD','name':'Toumodi'}, - '56' : {'code':'VAV','name':'Vavoua'}, - '57' : {'code':'YAM','name':'Yamoussoukro'}, - '58' : {'code':'ZUE','name':'Zuenoula'} - }, - 'HR':{ - '1' : {'code':'BB','name':'Bjelovar-Bilogora'}, - '2' : {'code':'CZ','name':'City of Zagreb'}, - '3' : {'code':'DN','name':'Dubrovnik-Neretva'}, - '4' : {'code':'IS','name':'Istra'}, - '5' : {'code':'KA','name':'Karlovac'}, - '6' : {'code':'KK','name':'Koprivnica-Krizevci'}, - '7' : {'code':'KZ','name':'Krapina-Zagorje'}, - '8' : {'code':'LS','name':'Lika-Senj'}, - '9' : {'code':'ME','name':'Medimurje'}, - '10' : {'code':'OB','name':'Osijek-Baranja'}, - '11' : {'code':'PS','name':'Pozega-Slavonia'}, - '12' : {'code':'PG','name':'Primorje-Gorski Kotar'}, - '13' : {'code':'SI','name':'Sibenik'}, - '14' : {'code':'SM','name':'Sisak-Moslavina'}, - '15' : {'code':'SB','name':'Slavonski Brod-Posavina'}, - '16' : {'code':'SD','name':'Split-Dalmatia'}, - '17' : {'code':'VA','name':'Varazdin'}, - '18' : {'code':'VP','name':'Virovitica-Podravina'}, - '19' : {'code':'VS','name':'Vukovar-Srijem'}, - '20' : {'code':'ZK','name':'Zadar-Knin'}, - '21' : {'code':'ZA','name':'Zagreb'} - }, - 'CU':{ - '1' : {'code':'CA','name':'Camaguey'}, - '2' : {'code':'CD','name':'Ciego de Avila'}, - '3' : {'code':'CI','name':'Cienfuegos'}, - '4' : {'code':'CH','name':'Ciudad de La Habana'}, - '5' : {'code':'GR','name':'Granma'}, - '6' : {'code':'GU','name':'Guantanamo'}, - '7' : {'code':'HO','name':'Holguin'}, - '8' : {'code':'IJ','name':'Isla de la Juventud'}, - '9' : {'code':'LH','name':'La Habana'}, - '10' : {'code':'LT','name':'Las Tunas'}, - '11' : {'code':'MA','name':'Matanzas'}, - '12' : {'code':'PR','name':'Pinar del Rio'}, - '13' : {'code':'SS','name':'Sancti Spiritus'}, - '14' : {'code':'SC','name':'Santiago de Cuba'}, - '15' : {'code':'VC','name':'Villa Clara'} - }, - 'CY':{ - '1' : {'code':'F','name':'Famagusta'}, - '2' : {'code':'K','name':'Kyrenia'}, - '3' : {'code':'A','name':'Larnaca'}, - '4' : {'code':'I','name':'Limassol'}, - '5' : {'code':'N','name':'Nicosia'}, - '6' : {'code':'P','name':'Paphos'} - }, - 'CZ':{ - '1' : {'code':'A','name':'Hlavní město Praha'}, - '2' : {'code':'B','name':'Jihomoravský'}, - '3' : {'code':'C','name':'Jihočeský'}, - '4' : {'code':'E','name':'Pardubický'}, - '5' : {'code':'H','name':'Královéhradecký'}, - '6' : {'code':'J','name':'Vysočina'}, - '7' : {'code':'K','name':'Karlovarský'}, - '8' : {'code':'L','name':'Liberecký'}, - '9' : {'code':'M','name':'Olomoucký'}, - '10' : {'code':'P','name':'Plzeňský'}, - '11' : {'code':'S','name':'Středočeský'}, - '12' : {'code':'T','name':'Moravskoslezský'}, - '13' : {'code':'U','name':'Ústecký'}, - '14' : {'code':'Z','name':'Zlínský'} - }, - 'DK':{ - '1' : {'code':'AR','name':'Arhus'}, - '2' : {'code':'BH','name':'Bornholm'}, - '3' : {'code':'CO','name':'Copenhagen'}, - '4' : {'code':'FO','name':'Faroe Islands'}, - '5' : {'code':'FR','name':'Frederiksborg'}, - '6' : {'code':'FY','name':'Fyn'}, - '7' : {'code':'KO','name':'Kobenhavn'}, - '8' : {'code':'NO','name':'Nordjylland'}, - '9' : {'code':'RI','name':'Ribe'}, - '10' : {'code':'RK','name':'Ringkobing'}, - '11' : {'code':'RO','name':'Roskilde'}, - '12' : {'code':'SO','name':'Sonderjylland'}, - '13' : {'code':'ST','name':'Storstrom'}, - '14' : {'code':'VK','name':'Vejle'}, - '15' : {'code':'VJ','name':'Vestjælland'}, - '16' : {'code':'VB','name':'Viborg'} - }, - 'DJ':{ - '1' : {'code':'S','name':'\'Ali Sabih'}, - '2' : {'code':'K','name':'Dikhil'}, - '3' : {'code':'J','name':'Djibouti'}, - '4' : {'code':'O','name':'Obock'}, - '5' : {'code':'T','name':'Tadjoura'} - }, - 'DM':{ - '1' : {'code':'AND','name':'Saint Andrew Parish'}, - '2' : {'code':'DAV','name':'Saint David Parish'}, - '3' : {'code':'GEO','name':'Saint George Parish'}, - '4' : {'code':'JOH','name':'Saint John Parish'}, - '5' : {'code':'JOS','name':'Saint Joseph Parish'}, - '6' : {'code':'LUK','name':'Saint Luke Parish'}, - '7' : {'code':'MAR','name':'Saint Mark Parish'}, - '8' : {'code':'PAT','name':'Saint Patrick Parish'}, - '9' : {'code':'PAU','name':'Saint Paul Parish'}, - '10' : {'code':'PET','name':'Saint Peter Parish'} - }, - 'DO':{ - '1' : {'code':'DN','name':'Distrito Nacional'}, - '2' : {'code':'AZ','name':'Azua'}, - '3' : {'code':'BC','name':'Baoruco'}, - '4' : {'code':'BH','name':'Barahona'}, - '5' : {'code':'DJ','name':'Dajabon'}, - '6' : {'code':'DU','name':'Duarte'}, - '7' : {'code':'EL','name':'Elias Pina'}, - '8' : {'code':'SY','name':'El Seybo'}, - '9' : {'code':'ET','name':'Espaillat'}, - '10' : {'code':'HM','name':'Hato Mayor'}, - '11' : {'code':'IN','name':'Independencia'}, - '12' : {'code':'AL','name':'La Altagracia'}, - '13' : {'code':'RO','name':'La Romana'}, - '14' : {'code':'VE','name':'La Vega'}, - '15' : {'code':'MT','name':'Maria Trinidad Sanchez'}, - '16' : {'code':'MN','name':'Monsenor Nouel'}, - '17' : {'code':'MC','name':'Monte Cristi'}, - '18' : {'code':'MP','name':'Monte Plata'}, - '19' : {'code':'PD','name':'Pedernales'}, - '20' : {'code':'PR','name':'Peravia (Bani)'}, - '21' : {'code':'PP','name':'Puerto Plata'}, - '22' : {'code':'SL','name':'Salcedo'}, - '23' : {'code':'SM','name':'Samana'}, - '24' : {'code':'SH','name':'Sanchez Ramirez'}, - '25' : {'code':'SC','name':'San Cristobal'}, - '26' : {'code':'JO','name':'San Jose de Ocoa'}, - '27' : {'code':'SJ','name':'San Juan'}, - '28' : {'code':'PM','name':'San Pedro de Macoris'}, - '29' : {'code':'SA','name':'Santiago'}, - '30' : {'code':'ST','name':'Santiago Rodriguez'}, - '31' : {'code':'SD','name':'Santo Domingo'}, - '32' : {'code':'VA','name':'Valverde'} - }, - 'TP':{ - '1' : {'code':'AL','name':'Aileu'}, - '2' : {'code':'AN','name':'Ainaro'}, - '3' : {'code':'BA','name':'Baucau'}, - '4' : {'code':'BO','name':'Bobonaro'}, - '5' : {'code':'CO','name':'Cova Lima'}, - '6' : {'code':'DI','name':'Dili'}, - '7' : {'code':'ER','name':'Ermera'}, - '8' : {'code':'LA','name':'Lautem'}, - '9' : {'code':'LI','name':'Liquica'}, - '10' : {'code':'MT','name':'Manatuto'}, - '11' : {'code':'MF','name':'Manufahi'}, - '12' : {'code':'OE','name':'Oecussi'}, - '13' : {'code':'VI','name':'Viqueque'} - }, - 'EC':{ - '1' : {'code':'AZU','name':'Azuay'}, - '2' : {'code':'BOL','name':'Bolivar'}, - '3' : {'code':'CAN','name':'Cañar'}, - '4' : {'code':'CAR','name':'Carchi'}, - '5' : {'code':'CHI','name':'Chimborazo'}, - '6' : {'code':'COT','name':'Cotopaxi'}, - '7' : {'code':'EOR','name':'El Oro'}, - '8' : {'code':'ESM','name':'Esmeraldas'}, - '9' : {'code':'GPS','name':'Galápagos'}, - '10' : {'code':'GUA','name':'Guayas'}, - '11' : {'code':'IMB','name':'Imbabura'}, - '12' : {'code':'LOJ','name':'Loja'}, - '13' : {'code':'LRO','name':'Los Ríos'}, - '14' : {'code':'MAN','name':'Manabí'}, - '15' : {'code':'MSA','name':'Morona Santiago'}, - '16' : {'code':'NAP','name':'Napo'}, - '17' : {'code':'ORE','name':'Orellana'}, - '18' : {'code':'PAS','name':'Pastaza'}, - '19' : {'code':'PIC','name':'Pichincha'}, - '20' : {'code':'SUC','name':'Sucumbíos'}, - '21' : {'code':'TUN','name':'Tungurahua'}, - '22' : {'code':'ZCH','name':'Zamora Chinchipe'} - }, - 'EG':{ - '1' : {'code':'DHY','name':'Ad Daqahliyah'}, - '2' : {'code':'BAM','name':'Al Bahr al Ahmar'}, - '3' : {'code':'BHY','name':'Al Buhayrah'}, - '4' : {'code':'FYM','name':'Al Fayyum'}, - '5' : {'code':'GBY','name':'Al Gharbiyah'}, - '6' : {'code':'IDR','name':'Al Iskandariyah'}, - '7' : {'code':'IML','name':'Al Isma \'iliyah'}, - '8' : {'code':'JZH','name':'Al Jizah'}, - '9' : {'code':'MFY','name':'Al Minufiyah'}, - '10' : {'code':'MNY','name':'Al Minya'}, - '11' : {'code':'QHR','name':'Al Qahirah'}, - '12' : {'code':'QLY','name':'Al Qalyubiyah'}, - '13' : {'code':'WJD','name':'Al Wadi al Jadid'}, - '14' : {'code':'SHQ','name':'Ash Sharqiyah'}, - '15' : {'code':'SWY','name':'As Suways'}, - '16' : {'code':'ASW','name':'Aswan'}, - '17' : {'code':'ASY','name':'Asyut'}, - '18' : {'code':'BSW','name':'Bani Suwayf'}, - '19' : {'code':'BSD','name':'Bur Sa\'id'}, - '20' : {'code':'DMY','name':'Dumyat'}, - '21' : {'code':'JNS','name':'Janub Sina\''}, - '22' : {'code':'KSH','name':'Kafr ash Shaykh'}, - '23' : {'code':'MAT','name':'Matruh'}, - '24' : {'code':'QIN','name':'Qina'}, - '25' : {'code':'SHS','name':'Shamal Sina\''}, - '26' : {'code':'SUH','name':'Suhaj'} - }, - 'SV':{ - '1' : {'code':'AH','name':'Ahuachapan'}, - '2' : {'code':'CA','name':'Cabanas'}, - '3' : {'code':'CH','name':'Chalatenango'}, - '4' : {'code':'CU','name':'Cuscatlan'}, - '5' : {'code':'LB','name':'La Libertad'}, - '6' : {'code':'PZ','name':'La Paz'}, - '7' : {'code':'UN','name':'La Union'}, - '8' : {'code':'MO','name':'Morazan'}, - '9' : {'code':'SM','name':'San Miguel'}, - '10' : {'code':'SS','name':'San Salvador'}, - '11' : {'code':'SV','name':'San Vicente'}, - '12' : {'code':'SA','name':'Santa Ana'}, - '13' : {'code':'SO','name':'Sonsonate'}, - '14' : {'code':'US','name':'Usulutan'} - }, - 'GQ':{ - '1' : {'code':'AN','name':'Provincia Annobon'}, - '2' : {'code':'BN','name':'Provincia Bioko Norte'}, - '3' : {'code':'BS','name':'Provincia Bioko Sur'}, - '4' : {'code':'CS','name':'Provincia Centro Sur'}, - '5' : {'code':'KN','name':'Provincia Kie-Ntem'}, - '6' : {'code':'LI','name':'Provincia Litoral'}, - '7' : {'code':'WN','name':'Provincia Wele-Nzas'} - }, - 'ER':{ - '1' : {'code':'MA','name':'Central (Maekel)'}, - '2' : {'code':'KE','name':'Anseba (Keren)'}, - '3' : {'code':'DK','name':'Southern Red Sea (Debub-Keih-Bah)'}, - '4' : {'code':'SK','name':'Northern Red Sea (Semien-Keih-Ba)'}, - '5' : {'code':'DE','name':'Southern (Debub)'}, - '6' : {'code':'BR','name':'Gash-Barka (Barentu)'} - }, - 'EE':{ - '1' : {'code':'HA','name':'Harjumaa (Tallinn)'}, - '2' : {'code':'HI','name':'Hiiumaa (Kardla)'}, - '3' : {'code':'IV','name':'Ida-Virumaa (Johvi)'}, - '4' : {'code':'JA','name':'Jarvamaa (Paide)'}, - '5' : {'code':'JO','name':'Jogevamaa (Jogeva)'}, - '6' : {'code':'LV','name':'Laane-Virumaa (Rakvere)'}, - '7' : {'code':'LA','name':'Laanemaa (Haapsalu)'}, - '8' : {'code':'PA','name':'Parnumaa (Parnu)'}, - '9' : {'code':'PO','name':'Polvamaa (Polva)'}, - '10' : {'code':'RA','name':'Raplamaa (Rapla)'}, - '11' : {'code':'SA','name':'Saaremaa (Kuessaare)'}, - '12' : {'code':'TA','name':'Tartumaa (Tartu)'}, - '13' : {'code':'VA','name':'Valgamaa (Valga)'}, - '14' : {'code':'VI','name':'Viljandimaa (Viljandi)'}, - '15' : {'code':'VO','name':'Vorumaa (Voru)'} - }, - 'ET':{ - '1' : {'code':'AF','name':'Afar'}, - '2' : {'code':'AH','name':'Amhara'}, - '3' : {'code':'BG','name':'Benishangul-Gumaz'}, - '4' : {'code':'GB','name':'Gambela'}, - '5' : {'code':'HR','name':'Hariai'}, - '6' : {'code':'OR','name':'Oromia'}, - '7' : {'code':'SM','name':'Somali'}, - '8' : {'code':'SN','name':'Southern Nations - Nationalities'}, - '9' : {'code':'TG','name':'Tigray'}, - '10' : {'code':'AA','name':'Addis Ababa'}, - '11' : {'code':'DD','name':'Dire Dawa'} - }, - 'FO':{ - '1' : {'code':'TÛR','name':'Tûrshavnar Kommuna'}, - '2' : {'code':'KLA','name':'Klaksvík'}, - '3' : {'code':'RUN','name':'Runavík'}, - '4' : {'code':'TVØ','name':'Tvøroyri'}, - '5' : {'code':'FUG','name':'Fuglafjørður'}, - '6' : {'code':'SUN','name':'Sunda Kommuna'}, - '7' : {'code':'VáG','name':'Vágur'}, - '8' : {'code':'NES','name':'Nes'}, - '9' : {'code':'VES','name':'Vestmanna'}, - '10' : {'code':'MIð','name':'Miðvágur'}, - '11' : {'code':'SØR','name':'Sørvágur'}, - '12' : {'code':'GØT','name':'Gøtu Kommuna'}, - '13' : {'code':'SJû','name':'Sjûvar Kommuna'}, - '14' : {'code':'LEI','name':'Leirvík'}, - '15' : {'code':'SAN','name':'Sandavágur'}, - '16' : {'code':'HVA','name':'Hvalba'}, - '17' : {'code':'EIð','name':'Eiði'}, - '18' : {'code':'KVí','name':'Kvívík'}, - '19' : {'code':'SAN','name':'Sandur'}, - '20' : {'code':'SKO','name':'Skopun'}, - '21' : {'code':'HVA','name':'Hvannasund'}, - '22' : {'code':'SUM','name':'Sumba'}, - '23' : {'code':'VIð','name':'Viðareiði'}, - '24' : {'code':'POR','name':'Porkeri'}, - '25' : {'code':'SKá','name':'Skálavík'}, - '26' : {'code':'KUN','name':'Kunoy'}, - '27' : {'code':'HÚS','name':'HÚsavík'}, - '28' : {'code':'HOV','name':'Hov'}, - '29' : {'code':'FáM','name':'Fámjin'}, - '30' : {'code':'FUN','name':'Funningur'}, - '31' : {'code':'HÚS','name':'HÚsar'}, - '32' : {'code':'SKÚ','name':'SkÚvoy'}, - '33' : {'code':'SVí','name':'Svínoy'}, - '34' : {'code':'FUG','name':'Fugloy'} - }, - 'FJ':{ - '1' : {'code':'C','name':'Central Division'}, - '2' : {'code':'E','name':'Eastern Division'}, - '3' : {'code':'N','name':'Northern Division'}, - '4' : {'code':'R','name':'Rotuma'}, - '5' : {'code':'W','name':'Western Division'} - }, - 'FI':{ - '1' : {'code':'AL','name':'Ahvenanmaan Laani'}, - '2' : {'code':'ES','name':'Etela-Suomen Laani'}, - '3' : {'code':'IS','name':'Ita-Suomen Laani'}, - '4' : {'code':'LS','name':'Lansi-Suomen Laani'}, - '5' : {'code':'LA','name':'Lapin Lanani'}, - '6' : {'code':'OU','name':'Oulun Laani'} - }, - 'FR':{ - '1' : {'code':'AL','name':'Alsace'}, - '2' : {'code':'AQ','name':'Aquitaine'}, - '3' : {'code':'AU','name':'Auvergne'}, - '4' : {'code':'BR','name':'Brittany'}, - '5' : {'code':'BU','name':'Burgundy'}, - '6' : {'code':'CE','name':'Center Loire Valley'}, - '7' : {'code':'CH','name':'Champagne'}, - '8' : {'code':'CO','name':'Corse'}, - '9' : {'code':'FR','name':'France Comte'}, - '10' : {'code':'LA','name':'Languedoc Roussillon'}, - '11' : {'code':'LI','name':'Limousin'}, - '12' : {'code':'LO','name':'Lorraine'}, - '13' : {'code':'MI','name':'Midi Pyrenees'}, - '14' : {'code':'NO','name':'Nord Pas de Calais'}, - '15' : {'code':'NR','name':'Normandy'}, - '16' : {'code':'PA','name':'Paris / Ile de France'}, - '17' : {'code':'PI','name':'Picardie'}, - '18' : {'code':'PO','name':'Poitou Charente'}, - '19' : {'code':'PR','name':'Provence'}, - '20' : {'code':'RH','name':'Rhone Alps'}, - '21' : {'code':'RI','name':'Riviera'}, - '22' : {'code':'WE','name':'Western Loire Valley'} - }, - 'FX':{ - '1' : {'code':'Et','name':'Etranger'}, - '2' : {'code':'01','name':'Ain'}, - '3' : {'code':'02','name':'Aisne'}, - '4' : {'code':'03','name':'Allier'}, - '5' : {'code':'04','name':'Alpes de Haute Provence'}, - '6' : {'code':'05','name':'Hautes-Alpes'}, - '7' : {'code':'06','name':'Alpes Maritimes'}, - '8' : {'code':'07','name':'Ardèche'}, - '9' : {'code':'08','name':'Ardennes'}, - '10' : {'code':'09','name':'Ariège'}, - '11' : {'code':'10','name':'Aube'}, - '12' : {'code':'11','name':'Aude'}, - '13' : {'code':'12','name':'Aveyron'}, - '14' : {'code':'13','name':'Bouches du Rhône'}, - '15' : {'code':'14','name':'Calvados'}, - '16' : {'code':'15','name':'Cantal'}, - '17' : {'code':'16','name':'Charente'}, - '18' : {'code':'17','name':'Charente Maritime'}, - '19' : {'code':'18','name':'Cher'}, - '20' : {'code':'19','name':'Corrèze'}, - '21' : {'code':'2A','name':'Corse du Sud'}, - '22' : {'code':'2B','name':'Haute Corse'}, - '23' : {'code':'21','name':'Côte d\'or'}, - '24' : {'code':'22','name':'Côtes d\'Armor'}, - '25' : {'code':'23','name':'Creuse'}, - '26' : {'code':'24','name':'Dordogne'}, - '27' : {'code':'25','name':'Doubs'}, - '28' : {'code':'26','name':'Drôme'}, - '29' : {'code':'27','name':'Eure'}, - '30' : {'code':'28','name':'Eure et Loir'}, - '31' : {'code':'29','name':'Finistère'}, - '32' : {'code':'30','name':'Gard'}, - '33' : {'code':'31','name':'Haute Garonne'}, - '34' : {'code':'32','name':'Gers'}, - '35' : {'code':'33','name':'Gironde'}, - '36' : {'code':'34','name':'Hérault'}, - '37' : {'code':'35','name':'Ille et Vilaine'}, - '38' : {'code':'36','name':'Indre'}, - '39' : {'code':'37','name':'Indre et Loire'}, - '40' : {'code':'38','name':'Isére'}, - '41' : {'code':'39','name':'Jura'}, - '42' : {'code':'40','name':'Landes'}, - '43' : {'code':'41','name':'Loir et Cher'}, - '44' : {'code':'42','name':'Loire'}, - '45' : {'code':'43','name':'Haute Loire'}, - '46' : {'code':'44','name':'Loire Atlantique'}, - '47' : {'code':'45','name':'Loiret'}, - '48' : {'code':'46','name':'Lot'}, - '49' : {'code':'47','name':'Lot et Garonne'}, - '50' : {'code':'48','name':'Lozère'}, - '51' : {'code':'49','name':'Maine et Loire'}, - '52' : {'code':'50','name':'Manche'}, - '53' : {'code':'51','name':'Marne'}, - '54' : {'code':'52','name':'Haute Marne'}, - '55' : {'code':'53','name':'Mayenne'}, - '56' : {'code':'54','name':'Meurthe et Moselle'}, - '57' : {'code':'55','name':'Meuse'}, - '58' : {'code':'56','name':'Morbihan'}, - '59' : {'code':'57','name':'Moselle'}, - '60' : {'code':'58','name':'Nièvre'}, - '61' : {'code':'59','name':'Nord'}, - '62' : {'code':'60','name':'Oise'}, - '63' : {'code':'61','name':'Orne'}, - '64' : {'code':'62','name':'Pas de Calais'}, - '65' : {'code':'63','name':'Puy de Dôme'}, - '66' : {'code':'64','name':'Pyrenees Atlantique'}, - '67' : {'code':'65','name':'Hautes Pyrenees'}, - '68' : {'code':'66','name':'Pyrenees Orientale'}, - '69' : {'code':'67','name':'Bas Rhin'}, - '70' : {'code':'68','name':'Haut Rhin'}, - '71' : {'code':'69','name':'Rhône'}, - '72' : {'code':'70','name':'Haute Saône'}, - '73' : {'code':'71','name':'Saône et Loire'}, - '74' : {'code':'72','name':'Sarthe'}, - '75' : {'code':'73','name':'Savoie'}, - '76' : {'code':'74','name':'Haute Savoie'}, - '77' : {'code':'75','name':'Paris'}, - '78' : {'code':'76','name':'Seine Martitime'}, - '79' : {'code':'77','name':'Seine et Marne'}, - '80' : {'code':'78','name':'Yvelines'}, - '81' : {'code':'79','name':'Deux Sèvres'}, - '82' : {'code':'80','name':'Somme'}, - '83' : {'code':'81','name':'Tarn'}, - '84' : {'code':'82','name':'Tarn et Garonne'}, - '85' : {'code':'83','name':'Var'}, - '86' : {'code':'84','name':'Vaucluse'}, - '87' : {'code':'85','name':'Vendée'}, - '88' : {'code':'86','name':'Vienne'}, - '89' : {'code':'87','name':'Haute Vienne'}, - '90' : {'code':'88','name':'Vosges'}, - '91' : {'code':'89','name':'Yonne'}, - '92' : {'code':'90','name':'Territoire de Belfort'}, - '93' : {'code':'91','name':'Essonne'}, - '94' : {'code':'92','name':'Hauts de Seine'}, - '95' : {'code':'93','name':'Seine St-Denis'}, - '96' : {'code':'94','name':'Val de Marne'}, - '97' : {'code':'95','name':'Val d\'oise'} - }, - 'GF':{ - '1' : {'code':'AWA','name':'Awala-Yalimapo'}, - '2' : {'code':'MAN','name':'Mana'}, - '3' : {'code':'SAI','name':'Saint-Laurent-Du-Maroni'}, - '4' : {'code':'APA','name':'Apatou'}, - '5' : {'code':'GRA','name':'Grand-Santi'}, - '6' : {'code':'PAP','name':'Papaïchton'}, - '7' : {'code':'SAÜ','name':'SaÜl'}, - '8' : {'code':'MAR','name':'Maripasoula'}, - '9' : {'code':'CAM','name':'Camopi'}, - '10' : {'code':'SAI','name':'Saint-Georges'}, - '11' : {'code':'OUA','name':'Ouanary'}, - '12' : {'code':'RéG','name':'Régina'}, - '13' : {'code':'ROU','name':'Roura'}, - '14' : {'code':'SAI','name':'Saint-élie'}, - '15' : {'code':'IRA','name':'Iracoubo'}, - '16' : {'code':'SIN','name':'Sinnamary'}, - '17' : {'code':'KOU','name':'Kourou'}, - '18' : {'code':'MAC','name':'Macouria'}, - '19' : {'code':'MON','name':'Montsinéry-Tonnegrande'}, - '20' : {'code':'MAT','name':'Matoury'}, - '21' : {'code':'CAY','name':'Cayenne'}, - '22' : {'code':'REM','name':'Remire-Montjoly'} - }, - 'PF':{ - '1' : {'code':'M','name':'Archipel des Marquises'}, - '2' : {'code':'T','name':'Archipel des Tuamotu'}, - '3' : {'code':'I','name':'Archipel des Tubuai'}, - '4' : {'code':'V','name':'Iles du Vent'}, - '5' : {'code':'S','name':'Iles Sous-le-Vent'} - }, - 'TF':{ - '1' : {'code':'C','name':'Iles Crozet'}, - '2' : {'code':'K','name':'Iles Kerguelen'}, - '3' : {'code':'A','name':'Ile Amsterdam'}, - '4' : {'code':'P','name':'Ile Saint-Paul'}, - '5' : {'code':'D','name':'Adelie Land'} - }, - 'GA':{ - '1' : {'code':'ES','name':'Estuaire'}, - '2' : {'code':'HO','name':'Haut-Ogooue'}, - '3' : {'code':'MO','name':'Moyen-Ogooue'}, - '4' : {'code':'NG','name':'Ngounie'}, - '5' : {'code':'NY','name':'Nyanga'}, - '6' : {'code':'OI','name':'Ogooue-Ivindo'}, - '7' : {'code':'OL','name':'Ogooue-Lolo'}, - '8' : {'code':'OM','name':'Ogooue-Maritime'}, - '9' : {'code':'WN','name':'Woleu-Ntem'} - }, - 'GM':{ - '1' : {'code':'BJ','name':'Banjul'}, - '2' : {'code':'BS','name':'Basse'}, - '3' : {'code':'BR','name':'Brikama'}, - '4' : {'code':'JA','name':'Janjangbure'}, - '5' : {'code':'KA','name':'Kanifeng'}, - '6' : {'code':'KE','name':'Kerewan'}, - '7' : {'code':'KU','name':'Kuntaur'}, - '8' : {'code':'MA','name':'Mansakonko'}, - '9' : {'code':'LR','name':'Lower River'}, - '10' : {'code':'CR','name':'Central River'}, - '11' : {'code':'NB','name':'North Bank'}, - '12' : {'code':'UR','name':'Upper River'}, - '13' : {'code':'WE','name':'Western'} - }, - 'GE':{ - '1' : {'code':'AB','name':'Abkhazia'}, - '2' : {'code':'AJ','name':'Ajaria'}, - '3' : {'code':'GU','name':'Guria'}, - '4' : {'code':'IM','name':'Imereti'}, - '5' : {'code':'KA','name':'Kakheti'}, - '6' : {'code':'KK','name':'Kvemo Kartli'}, - '7' : {'code':'MM','name':'Mtskheta-Mtianeti'}, - '8' : {'code':'RL','name':'Racha Lechkhumi and Kvemo Svanet'}, - '9' : {'code':'SJ','name':'Samtskhe-Javakheti'}, - '10' : {'code':'SK','name':'Shida Kartli'}, - '11' : {'code':'SZ','name':'Samegrelo-Zemo Svaneti'}, - '12' : {'code':'TB','name':'Tbilisi'} - }, - 'DE':{ - '1' : {'code':'BAW','name':'Baden-Württemberg'}, - '2' : {'code':'BAY','name':'Bayern'}, - '3' : {'code':'BER','name':'Berlin'}, - '4' : {'code':'BRG','name':'Brandenburg'}, - '5' : {'code':'BRE','name':'Bremen'}, - '6' : {'code':'HAM','name':'Hamburg'}, - '7' : {'code':'HES','name':'Hessen'}, - '8' : {'code':'MEC','name':'Mecklenburg-Vorpommern'}, - '9' : {'code':'NDS','name':'Niedersachsen'}, - '10' : {'code':'NRW','name':'Nordrhein-Westfalen'}, - '11' : {'code':'RHE','name':'Rheinland-Pfalz'}, - '12' : {'code':'SAR','name':'Saarland'}, - '13' : {'code':'SAS','name':'Sachsen'}, - '14' : {'code':'SAC','name':'Sachsen-Anhalt'}, - '15' : {'code':'SCN','name':'Schleswig-Holstein'}, - '16' : {'code':'THE','name':'Thüringen'} - }, - 'GH':{ - '1' : {'code':'AS','name':'Ashanti Region'}, - '2' : {'code':'BA','name':'Brong-Ahafo Region'}, - '3' : {'code':'CE','name':'Central Region'}, - '4' : {'code':'EA','name':'Eastern Region'}, - '5' : {'code':'GA','name':'Greater Accra Region'}, - '6' : {'code':'NO','name':'Northern Region'}, - '7' : {'code':'UE','name':'Upper East Region'}, - '8' : {'code':'UW','name':'Upper West Region'}, - '9' : {'code':'VO','name':'Volta Region'}, - '10' : {'code':'WE','name':'Western Region'} - }, - 'GI':{ - '1' : {'code':'EAS','name':'East Side'}, - '2' : {'code':'NOR','name':'North District'}, - '3' : {'code':'REC','name':'Reclamation Areas'}, - '4' : {'code':'SAN','name':'Sandpits Area'}, - '5' : {'code':'SOU','name':'South District'}, - '6' : {'code':'TOW','name':'Town Area'}, - '7' : {'code':'UPP','name':'Upper Town'}, - '8' : {'code':'OTH','name':'Other'} - }, - 'GR':{ - '1' : {'code':'AT','name':'Attica'}, - '2' : {'code':'CN','name':'Central Greece'}, - '3' : {'code':'CM','name':'Central Macedonia'}, - '4' : {'code':'CR','name':'Crete'}, - '5' : {'code':'EM','name':'East Macedonia and Thrace'}, - '6' : {'code':'EP','name':'Epirus'}, - '7' : {'code':'II','name':'Ionian Islands'}, - '8' : {'code':'NA','name':'North Aegean'}, - '9' : {'code':'PP','name':'Peloponnesos'}, - '10' : {'code':'SA','name':'South Aegean'}, - '11' : {'code':'TH','name':'Thessaly'}, - '12' : {'code':'WG','name':'West Greece'}, - '13' : {'code':'WM','name':'West Macedonia'} - }, - 'GL':{ - '1' : {'code':'A','name':'Avannaa'}, - '2' : {'code':'T','name':'Tunu'}, - '3' : {'code':'K','name':'Kitaa'} - }, - '86':{ - '1' : {'code':'A','name':'Saint Andrew'}, - '2' : {'code':'D','name':'Saint David'}, - '3' : {'code':'G','name':'Saint George'}, - '4' : {'code':'J','name':'Saint John'}, - '5' : {'code':'M','name':'Saint Mark'}, - '6' : {'code':'P','name':'Saint Patrick'}, - '7' : {'code':'C','name':'Carriacou'}, - '8' : {'code':'Q','name':'Petit Martinique'} - }, - 'GP':{ - '1' : {'code':'ARR','name':'Arrondissements Of The Guadeloup'}, - '2' : {'code':'CAN','name':'Cantons Of The Guadeloup Depart'}, - '3' : {'code':'COM','name':'Communes Of The Guadeloup Depart'} - }, - 'GU':{ - '1' : {'code':'AGA','name':'Agana Heights'}, - '2' : {'code':'AGA','name':'Agat'}, - '3' : {'code':'ASA','name':'Asan Maina'}, - '4' : {'code':'BAR','name':'Barrigada'}, - '5' : {'code':'CHA','name':'Chalan Pago Ordot'}, - '6' : {'code':'DED','name':'Dededo'}, - '7' : {'code':'HAG','name':'HagÅtña'}, - '8' : {'code':'INA','name':'Inarajan'}, - '9' : {'code':'MAN','name':'Mangilao'}, - '10' : {'code':'MER','name':'Merizo'}, - '11' : {'code':'MON','name':'Mongmong Toto Maite'}, - '12' : {'code':'PIT','name':'Piti'}, - '13' : {'code':'SAN','name':'Santa Rita'}, - '14' : {'code':'SIN','name':'Sinajana'}, - '15' : {'code':'TAL','name':'Talofofo'}, - '16' : {'code':'TAM','name':'Tamuning'}, - '17' : {'code':'UMA','name':'Umatac'}, - '18' : {'code':'YIG','name':'Yigo'}, - '19' : {'code':'YON','name':'Yona'} - }, - 'GT':{ - '1' : {'code':'AV','name':'Alta Verapaz'}, - '2' : {'code':'BV','name':'Baja Verapaz'}, - '3' : {'code':'CM','name':'Chimaltenango'}, - '4' : {'code':'CQ','name':'Chiquimula'}, - '5' : {'code':'PE','name':'El Peten'}, - '6' : {'code':'PR','name':'El Progreso'}, - '7' : {'code':'QC','name':'El Quiche'}, - '8' : {'code':'ES','name':'Escuintla'}, - '9' : {'code':'GU','name':'Guatemala'}, - '10' : {'code':'HU','name':'Huehuetenango'}, - '11' : {'code':'IZ','name':'Izabal'}, - '12' : {'code':'JA','name':'Jalapa'}, - '13' : {'code':'JU','name':'Jutiapa'}, - '14' : {'code':'QZ','name':'Quetzaltenango'}, - '15' : {'code':'RE','name':'Retalhuleu'}, - '16' : {'code':'ST','name':'Sacatepequez'}, - '17' : {'code':'SM','name':'San Marcos'}, - '18' : {'code':'SR','name':'Santa Rosa'}, - '19' : {'code':'SO','name':'Solola'}, - '20' : {'code':'SU','name':'Suchitepequez'}, - '21' : {'code':'TO','name':'Totonicapan'}, - '22' : {'code':'ZA','name':'Zacapa'} - }, - 'GN':{ - '1' : {'code':'CNK','name':'Conakry'}, - '2' : {'code':'BYL','name':'Beyla'}, - '3' : {'code':'BFA','name':'Boffa'}, - '4' : {'code':'BOK','name':'Boke'}, - '5' : {'code':'COY','name':'Coyah'}, - '6' : {'code':'DBL','name':'Dabola'}, - '7' : {'code':'DLB','name':'Dalaba'}, - '8' : {'code':'DGR','name':'Dinguiraye'}, - '9' : {'code':'DBR','name':'Dubreka'}, - '10' : {'code':'FRN','name':'Faranah'}, - '11' : {'code':'FRC','name':'Forecariah'}, - '12' : {'code':'FRI','name':'Fria'}, - '13' : {'code':'GAO','name':'Gaoual'}, - '14' : {'code':'GCD','name':'Gueckedou'}, - '15' : {'code':'KNK','name':'Kankan'}, - '16' : {'code':'KRN','name':'Kerouane'}, - '17' : {'code':'KND','name':'Kindia'}, - '18' : {'code':'KSD','name':'Kissidougou'}, - '19' : {'code':'KBA','name':'Koubia'}, - '20' : {'code':'KDA','name':'Koundara'}, - '21' : {'code':'KRA','name':'Kouroussa'}, - '22' : {'code':'LAB','name':'Labe'}, - '23' : {'code':'LLM','name':'Lelouma'}, - '24' : {'code':'LOL','name':'Lola'}, - '25' : {'code':'MCT','name':'Macenta'}, - '26' : {'code':'MAL','name':'Mali'}, - '27' : {'code':'MAM','name':'Mamou'}, - '28' : {'code':'MAN','name':'Mandiana'}, - '29' : {'code':'NZR','name':'Nzerekore'}, - '30' : {'code':'PIT','name':'Pita'}, - '31' : {'code':'SIG','name':'Siguiri'}, - '32' : {'code':'TLM','name':'Telimele'}, - '33' : {'code':'TOG','name':'Tougue'}, - '34' : {'code':'YOM','name':'Yomou'} - }, - 'GW':{ - '1' : {'code':'BF','name':'Bafata Region'}, - '2' : {'code':'BB','name':'Biombo Region'}, - '3' : {'code':'BS','name':'Bissau Region'}, - '4' : {'code':'BL','name':'Bolama Region'}, - '5' : {'code':'CA','name':'Cacheu Region'}, - '6' : {'code':'GA','name':'Gabu Region'}, - '7' : {'code':'OI','name':'Oio Region'}, - '8' : {'code':'QU','name':'Quinara Region'}, - '9' : {'code':'TO','name':'Tombali Region'} - }, - 'GY':{ - '1' : {'code':'BW','name':'Barima-Waini'}, - '2' : {'code':'CM','name':'Cuyuni-Mazaruni'}, - '3' : {'code':'DM','name':'Demerara-Mahaica'}, - '4' : {'code':'EC','name':'East Berbice-Corentyne'}, - '5' : {'code':'EW','name':'Essequibo Islands-West Demerara'}, - '6' : {'code':'MB','name':'Mahaica-Berbice'}, - '7' : {'code':'PM','name':'Pomeroon-Supenaam'}, - '8' : {'code':'PI','name':'Potaro-Siparuni'}, - '9' : {'code':'UD','name':'Upper Demerara-Berbice'}, - '10' : {'code':'UT','name':'Upper Takutu-Upper Essequibo'} - }, - 'HT':{ - '1' : {'code':'AR','name':'Artibonite'}, - '2' : {'code':'CE','name':'Centre'}, - '3' : {'code':'GA','name':'Grand\'Anse'}, - '4' : {'code':'ND','name':'Nord'}, - '5' : {'code':'NE','name':'Nord-Est'}, - '6' : {'code':'NO','name':'Nord-Ouest'}, - '7' : {'code':'OU','name':'Ouest'}, - '8' : {'code':'SD','name':'Sud'}, - '9' : {'code':'SE','name':'Sud-Est'} - }, - 'HM':{ - '1' : {'code':'F','name':'Flat Island'}, - '2' : {'code':'M','name':'McDonald Island'}, - '3' : {'code':'S','name':'Shag Island'}, - '4' : {'code':'H','name':'Heard Island'} - }, - 'HN':{ - '1' : {'code':'AT','name':'Atlantida'}, - '2' : {'code':'CH','name':'Choluteca'}, - '3' : {'code':'CL','name':'Colon'}, - '4' : {'code':'CM','name':'Comayagua'}, - '5' : {'code':'CP','name':'Copan'}, - '6' : {'code':'CR','name':'Cortes'}, - '7' : {'code':'PA','name':'El Paraiso'}, - '8' : {'code':'FM','name':'Francisco Morazan'}, - '9' : {'code':'GD','name':'Gracias a Dios'}, - '10' : {'code':'IN','name':'Intibuca'}, - '11' : {'code':'IB','name':'Islas de la Bahia (Bay Islands)'}, - '12' : {'code':'PZ','name':'La Paz'}, - '13' : {'code':'LE','name':'Lempira'}, - '14' : {'code':'OC','name':'Ocotepeque'}, - '15' : {'code':'OL','name':'Olancho'}, - '16' : {'code':'SB','name':'Santa Barbara'}, - '17' : {'code':'VA','name':'Valle'}, - '18' : {'code':'YO','name':'Yoro'} - }, - 'HK':{ - '1' : {'code':'HCW','name':'Central and Western Hong Kong Is'}, - '2' : {'code':'HEA','name':'Eastern Hong Kong Island'}, - '3' : {'code':'HSO','name':'Southern Hong Kong Island'}, - '4' : {'code':'HWC','name':'Wan Chai Hong Kong Island'}, - '5' : {'code':'KKC','name':'Kowloon City Kowloon'}, - '6' : {'code':'KKT','name':'Kwun Tong Kowloon'}, - '7' : {'code':'KSS','name':'Sham Shui Po Kowloon'}, - '8' : {'code':'KWT','name':'Wong Tai Sin Kowloon'}, - '9' : {'code':'KYT','name':'Yau Tsim Mong Kowloon'}, - '10' : {'code':'NIS','name':'Islands New Territories'}, - '11' : {'code':'NKT','name':'Kwai Tsing New Territories'}, - '12' : {'code':'NNO','name':'North New Territories'}, - '13' : {'code':'NSK','name':'Sai Kung New Territories'}, - '14' : {'code':'NST','name':'Sha Tin New Territories'}, - '15' : {'code':'NTP','name':'Tai Po New Territories'}, - '16' : {'code':'NTW','name':'Tsuen Wan New Territories'}, - '17' : {'code':'NTM','name':'Tuen Mun New Territories'}, - '18' : {'code':'NYL','name':'Yuen Long New Territories'} - }, - 'HU':{ - '1' : {'code':'BK','name':'Bacs-Kiskun'}, - '2' : {'code':'BA','name':'Baranya'}, - '3' : {'code':'BE','name':'Bekes'}, - '4' : {'code':'BS','name':'Bekescsaba'}, - '5' : {'code':'BZ','name':'Borsod-Abauj-Zemplen'}, - '6' : {'code':'BU','name':'Budapest'}, - '7' : {'code':'CS','name':'Csongrad'}, - '8' : {'code':'DE','name':'Debrecen'}, - '9' : {'code':'DU','name':'Dunaujvaros'}, - '10' : {'code':'EG','name':'Eger'}, - '11' : {'code':'FE','name':'Fejer'}, - '12' : {'code':'GY','name':'Gyor'}, - '13' : {'code':'GM','name':'Gyor-Moson-Sopron'}, - '14' : {'code':'HB','name':'Hajdu-Bihar'}, - '15' : {'code':'HE','name':'Heves'}, - '16' : {'code':'HO','name':'Hodmezovasarhely'}, - '17' : {'code':'JN','name':'Jasz-Nagykun-Szolnok'}, - '18' : {'code':'KA','name':'Kaposvar'}, - '19' : {'code':'KE','name':'Kecskemet'}, - '20' : {'code':'KO','name':'Komarom-Esztergom'}, - '21' : {'code':'MI','name':'Miskolc'}, - '22' : {'code':'NA','name':'Nagykanizsa'}, - '23' : {'code':'NO','name':'Nograd'}, - '24' : {'code':'NY','name':'Nyiregyhaza'}, - '25' : {'code':'PE','name':'Pecs'}, - '26' : {'code':'PS','name':'Pest'}, - '27' : {'code':'SO','name':'Somogy'}, - '28' : {'code':'SP','name':'Sopron'}, - '29' : {'code':'SS','name':'Szabolcs-Szatmar-Bereg'}, - '30' : {'code':'SZ','name':'Szeged'}, - '31' : {'code':'SE','name':'Szekesfehervar'}, - '32' : {'code':'SL','name':'Szolnok'}, - '33' : {'code':'SM','name':'Szombathely'}, - '34' : {'code':'TA','name':'Tatabanya'}, - '35' : {'code':'TO','name':'Tolna'}, - '36' : {'code':'VA','name':'Vas'}, - '37' : {'code':'VE','name':'Veszprem'}, - '38' : {'code':'ZA','name':'Zala'}, - '39' : {'code':'ZZ','name':'Zalaegerszeg'} - }, - 'IS':{ - '1' : {'code':'AL','name':'Austurland'}, - '2' : {'code':'HF','name':'Hofuoborgarsvaeoi'}, - '3' : {'code':'NE','name':'Norourland eystra'}, - '4' : {'code':'NV','name':'Norourland vestra'}, - '5' : {'code':'SL','name':'Suourland'}, - '6' : {'code':'SN','name':'Suournes'}, - '7' : {'code':'VF','name':'Vestfiroir'}, - '8' : {'code':'VL','name':'Vesturland'} - }, - 'IN':{ - '1' : {'code':'AN','name':'Andaman and Nicobar Islands'}, - '2' : {'code':'AP','name':'Andhra Pradesh'}, - '3' : {'code':'AR','name':'Arunachal Pradesh'}, - '4' : {'code':'AS','name':'Assam'}, - '5' : {'code':'BI','name':'Bihar'}, - '6' : {'code':'CH','name':'Chandigarh'}, - '7' : {'code':'DA','name':'Dadra and Nagar Haveli'}, - '8' : {'code':'DM','name':'Daman and Diu'}, - '9' : {'code':'DE','name':'Delhi'}, - '10' : {'code':'GO','name':'Goa'}, - '11' : {'code':'GU','name':'Gujarat'}, - '12' : {'code':'HA','name':'Haryana'}, - '13' : {'code':'HP','name':'Himachal Pradesh'}, - '14' : {'code':'JA','name':'Jammu and Kashmir'}, - '15' : {'code':'KA','name':'Karnataka'}, - '16' : {'code':'KE','name':'Kerala'}, - '17' : {'code':'LI','name':'Lakshadweep Islands'}, - '18' : {'code':'MP','name':'Madhya Pradesh'}, - '19' : {'code':'MA','name':'Maharashtra'}, - '20' : {'code':'MN','name':'Manipur'}, - '21' : {'code':'ME','name':'Meghalaya'}, - '22' : {'code':'MI','name':'Mizoram'}, - '23' : {'code':'NA','name':'Nagaland'}, - '24' : {'code':'OR','name':'Orissa'}, - '25' : {'code':'PO','name':'Pondicherry'}, - '26' : {'code':'PU','name':'Punjab'}, - '27' : {'code':'RA','name':'Rajasthan'}, - '28' : {'code':'SI','name':'Sikkim'}, - '29' : {'code':'TN','name':'Tamil Nadu'}, - '30' : {'code':'TR','name':'Tripura'}, - '31' : {'code':'UP','name':'Uttar Pradesh'}, - '32' : {'code':'WB','name':'West Bengal'} - }, - 'ID':{ - '1' : {'code':'DA','name':'Daista Aceh'}, - '2' : {'code':'SU','name':'Sumatera Utara'}, - '3' : {'code':'SB','name':'Sumatera Barat'}, - '4' : {'code':'SI','name':'Riau'}, - '5' : {'code':'JA','name':'Jambi'}, - '6' : {'code':'SS','name':'Sumatera Selatan'}, - '7' : {'code':'BE','name':'Bengkulu'}, - '8' : {'code':'LA','name':'Lampung'}, - '9' : {'code':'JK','name':'Dki Jakarta'}, - '10' : {'code':'JB','name':'Jawa Barat'}, - '11' : {'code':'JT','name':'Jawa Tengah'}, - '12' : {'code':'DY','name':'Daista Yogyakarta'}, - '13' : {'code':'JT','name':'Jawa Timur'}, - '14' : {'code':'KB','name':'Kalimantan Barat'}, - '15' : {'code':'KT','name':'Kalimantan Tengah'}, - '16' : {'code':'KI','name':'Kalimantan Timur'}, - '17' : {'code':'KS','name':'Kalimantan Selatan'}, - '18' : {'code':'BA','name':'Bali'}, - '19' : {'code':'NB','name':'Nusa Tenggara Barat'}, - '20' : {'code':'NT','name':'Nusa Tenggara Timur'}, - '21' : {'code':'SN','name':'Sulawesi Selatan'}, - '22' : {'code':'ST','name':'Sulawesi Tengah'}, - '23' : {'code':'SA','name':'Sulawesi Utara'}, - '24' : {'code':'SG','name':'Sulawesi Tenggara'}, - '25' : {'code':'MA','name':'Maluku'}, - '26' : {'code':'MU','name':'Maluku Utara'}, - '27' : {'code':'IJ','name':'Irian Jaya Timur'}, - '28' : {'code':'IT','name':'Irian Jaya Tengah'}, - '29' : {'code':'IB','name':'Irian Jawa Barat'}, - '30' : {'code':'BT','name':'Banten'}, - '31' : {'code':'BB','name':'Bangka Belitung'}, - '32' : {'code':'GO','name':'Gorontalo'} - }, - 'IR':{ - '1' : {'code':'ARD','name':'Ardabil'}, - '2' : {'code':'BSH','name':'Bushehr'}, - '3' : {'code':'CMB','name':'Chahar Mahaal and Bakhtiari'}, - '4' : {'code':'EAZ','name':'East Azarbaijan'}, - '5' : {'code':'EFH','name':'Esfahan'}, - '6' : {'code':'FAR','name':'Fars'}, - '7' : {'code':'GIL','name':'Gilan'}, - '8' : {'code':'GLS','name':'Golestan'}, - '9' : {'code':'HMD','name':'Hamadan'}, - '10' : {'code':'HRM','name':'Hormozgan'}, - '11' : {'code':'ILM','name':'Ilam'}, - '12' : {'code':'KBA','name':'Kohkiluyeh and Buyer Ahmad'}, - '13' : {'code':'KRB','name':'Kerman'}, - '14' : {'code':'KRD','name':'Kurdistan'}, - '15' : {'code':'KRM','name':'Kermanshah'}, - '16' : {'code':'KZT','name':'Khuzestan'}, - '17' : {'code':'LRS','name':'Lorestan'}, - '18' : {'code':'MKZ','name':'Markazi'}, - '19' : {'code':'MZD','name':'Mazandaran'}, - '20' : {'code':'NKH','name':'North Khorasan'}, - '21' : {'code':'QAZ','name':'Qazvin'}, - '22' : {'code':'QOM','name':'Qom'}, - '23' : {'code':'RKH','name':'Razavi Khorasan'}, - '24' : {'code':'SBL','name':'Sistan and Baluchistan'}, - '25' : {'code':'SKH','name':'South Khorasan'}, - '26' : {'code':'SMN','name':'Semnan'}, - '27' : {'code':'TEH','name':'Tehran'}, - '28' : {'code':'WEZ','name':'West Azarbaijan'}, - '29' : {'code':'YZD','name':'Yazd'}, - '30' : {'code':'ZAN','name':'Zanjan'} - }, - 'IQ':{ - '1' : {'code':'AB','name':'Al Anbar'}, - '2' : {'code':'AL','name':'Arbil'}, - '3' : {'code':'BA','name':'Al Basrah'}, - '4' : {'code':'BB','name':'Babil'}, - '5' : {'code':'BD','name':'Baghdad'}, - '6' : {'code':'DH','name':'Dahuk'}, - '7' : {'code':'DQ','name':'Dhi Qar'}, - '8' : {'code':'DY','name':'Diyala'}, - '9' : {'code':'KB','name':'Al Karbala'}, - '10' : {'code':'MU','name':'Al Muthanna'}, - '11' : {'code':'MY','name':'Maysan'}, - '12' : {'code':'NJ','name':'An Najaf'}, - '13' : {'code':'NN','name':'Ninawa'}, - '14' : {'code':'QA','name':'Al Qadisyah'}, - '15' : {'code':'SD','name':'Salah ad Din'}, - '16' : {'code':'SL','name':'As Sulaymaniyah'}, - '17' : {'code':'TM','name':'At Ta\'mim'}, - '18' : {'code':'WS','name':'Wasit'} - }, - 'IE':{ - '1' : {'code':'CA','name':'Carlow'}, - '2' : {'code':'CV','name':'Cavan'}, - '3' : {'code':'CL','name':'Clare'}, - '4' : {'code':'CO','name':'Cork'}, - '5' : {'code':'DO','name':'Donegal'}, - '6' : {'code':'DU','name':'Dublin'}, - '7' : {'code':'GA','name':'Galway'}, - '8' : {'code':'KE','name':'Kerry'}, - '9' : {'code':'KI','name':'Kildare'}, - '10' : {'code':'KL','name':'Kilkenny'}, - '11' : {'code':'LA','name':'Laois'}, - '12' : {'code':'LE','name':'Leitrim'}, - '13' : {'code':'LI','name':'Limerick'}, - '14' : {'code':'LO','name':'Longford'}, - '15' : {'code':'LU','name':'Louth'}, - '16' : {'code':'MA','name':'Mayo'}, - '17' : {'code':'ME','name':'Meath'}, - '18' : {'code':'MO','name':'Monaghan'}, - '19' : {'code':'OF','name':'Offaly'}, - '20' : {'code':'RO','name':'Roscommon'}, - '21' : {'code':'SL','name':'Sligo'}, - '22' : {'code':'TI','name':'Tipperary'}, - '23' : {'code':'WA','name':'Waterford'}, - '24' : {'code':'WE','name':'Westmeath'}, - '25' : {'code':'WX','name':'Wexford'}, - '26' : {'code':'WI','name':'Wicklow'} - }, - 'IL':{ - '1' : {'code':'BS','name':'Be\'er Sheva'}, - '2' : {'code':'BH','name':'Bika\'at Hayarden'}, - '3' : {'code':'EA','name':'Eilat and Arava'}, - '4' : {'code':'GA','name':'Galil'}, - '5' : {'code':'HA','name':'Haifa'}, - '6' : {'code':'JM','name':'Jehuda Mountains'}, - '7' : {'code':'JE','name':'Jerusalem'}, - '8' : {'code':'NE','name':'Negev'}, - '10' : {'code':'SE','name':'Semaria'}, - '11' : {'code':'SH','name':'Sharon'}, - '12' : {'code':'TA','name':'Tel Aviv (Gosh Dan)'} - }, - 'IT':{ - '1' : {'code':'AG','name':'Agrigento'}, - '2' : {'code':'AL','name':'Alessandria'}, - '3' : {'code':'AN','name':'Ancona'}, - '4' : {'code':'AO','name':'Aosta'}, - '5' : {'code':'AR','name':'Arezzo'}, - '6' : {'code':'AP','name':'Ascoli Piceno'}, - '7' : {'code':'AT','name':'Asti'}, - '8' : {'code':'AV','name':'Avellino'}, - '9' : {'code':'BA','name':'Bari'}, - '10' : {'code':'BL','name':'Belluno'}, - '11' : {'code':'BN','name':'Benevento'}, - '12' : {'code':'BG','name':'Bergamo'}, - '13' : {'code':'BI','name':'Biella'}, - '14' : {'code':'BO','name':'Bologna'}, - '15' : {'code':'BZ','name':'Bolzano'}, - '16' : {'code':'BS','name':'Brescia'}, - '17' : {'code':'BR','name':'Brindisi'}, - '18' : {'code':'CA','name':'Cagliari'}, - '19' : {'code':'CL','name':'Caltanissetta'}, - '20' : {'code':'CB','name':'Campobasso'}, - '21' : {'code':'CE','name':'Caserta'}, - '22' : {'code':'CT','name':'Catania'}, - '23' : {'code':'CZ','name':'Catanzaro'}, - '24' : {'code':'CH','name':'Chieti'}, - '25' : {'code':'CO','name':'Como'}, - '26' : {'code':'CS','name':'Cosenza'}, - '27' : {'code':'CR','name':'Cremona'}, - '28' : {'code':'KR','name':'Crotone'}, - '29' : {'code':'CN','name':'Cuneo'}, - '30' : {'code':'EN','name':'Enna'}, - '31' : {'code':'FE','name':'Ferrara'}, - '32' : {'code':'FI','name':'Firenze'}, - '33' : {'code':'FG','name':'Foggia'}, - '34' : {'code':'FO','name':'Forlì'}, - '35' : {'code':'FR','name':'Frosinone'}, - '36' : {'code':'GE','name':'Genova'}, - '37' : {'code':'GO','name':'Gorizia'}, - '38' : {'code':'GR','name':'Grosseto'}, - '39' : {'code':'IM','name':'Imperia'}, - '40' : {'code':'IS','name':'Isernia'}, - '41' : {'code':'AQ','name':'Aquila'}, - '42' : {'code':'SP','name':'La Spezia'}, - '43' : {'code':'LT','name':'Latina'}, - '44' : {'code':'LE','name':'Lecce'}, - '45' : {'code':'LC','name':'Lecco'}, - '46' : {'code':'LI','name':'Livorno'}, - '47' : {'code':'LO','name':'Lodi'}, - '48' : {'code':'LU','name':'Lucca'}, - '49' : {'code':'MC','name':'Macerata'}, - '50' : {'code':'MN','name':'Mantova'}, - '51' : {'code':'MS','name':'Massa-Carrara'}, - '52' : {'code':'MT','name':'Matera'}, - '53' : {'code':'ME','name':'Messina'}, - '54' : {'code':'MI','name':'Milano'}, - '55' : {'code':'MO','name':'Modena'}, - '56' : {'code':'NA','name':'Napoli'}, - '57' : {'code':'NO','name':'Novara'}, - '58' : {'code':'NU','name':'Nuoro'}, - '59' : {'code':'OR','name':'Oristano'}, - '60' : {'code':'PD','name':'Padova'}, - '61' : {'code':'PA','name':'Palermo'}, - '62' : {'code':'PR','name':'Parma'}, - '63' : {'code':'PG','name':'Perugia'}, - '64' : {'code':'PV','name':'Pavia'}, - '65' : {'code':'PU','name':'Pesaro Urbino'}, - '66' : {'code':'PE','name':'Pescara'}, - '67' : {'code':'PC','name':'Piacenza'}, - '68' : {'code':'PI','name':'Pisa'}, - '69' : {'code':'PT','name':'Pistoia'}, - '70' : {'code':'PN','name':'Pordenone'}, - '71' : {'code':'PZ','name':'Potenza'}, - '72' : {'code':'PO','name':'Prato'}, - '73' : {'code':'RG','name':'Ragusa'}, - '74' : {'code':'RA','name':'Ravenna'}, - '75' : {'code':'RC','name':'Reggio Calabria'}, - '76' : {'code':'RE','name':'Reggio Emilia'}, - '77' : {'code':'RI','name':'Rieti'}, - '78' : {'code':'RN','name':'Rimini'}, - '79' : {'code':'RM','name':'Roma'}, - '80' : {'code':'RO','name':'Rovigo'}, - '81' : {'code':'SA','name':'Salerno'}, - '82' : {'code':'SS','name':'Sassari'}, - '83' : {'code':'SV','name':'Savona'}, - '84' : {'code':'SI','name':'Siena'}, - '85' : {'code':'SR','name':'Siracusa'}, - '86' : {'code':'SO','name':'Sondrio'}, - '87' : {'code':'TA','name':'Taranto'}, - '88' : {'code':'TE','name':'Teramo'}, - '89' : {'code':'TR','name':'Terni'}, - '90' : {'code':'TO','name':'Torino'}, - '91' : {'code':'TP','name':'Trapani'}, - '92' : {'code':'TN','name':'Trento'}, - '93' : {'code':'TV','name':'Treviso'}, - '94' : {'code':'TS','name':'Trieste'}, - '95' : {'code':'UD','name':'Udine'}, - '96' : {'code':'VA','name':'Varese'}, - '97' : {'code':'VE','name':'Venezia'}, - '98' : {'code':'VB','name':'Verbania'}, - '99' : {'code':'VC','name':'Vercelli'}, - '100' : {'code':'VR','name':'Verona'}, - '101' : {'code':'VV','name':'Vibo Valentia'}, - '102' : {'code':'VI','name':'Vicenza'}, - '103' : {'code':'VT','name':'Viterbo'}, - '104' : {'code':'CI','name':'Carbonia-Iglesias'}, - '105' : {'code':'VS','name':'Medio Campidano'}, - '106' : {'code':'OG','name':'Ogliastra'}, - '107' : {'code':'OT','name':'Olbia-Tempio'}, - '108' : {'code':'MB','name':'Monza e Brianza'}, - '109' : {'code':'FM','name':'Fermo'}, - '110' : {'code':'BT','name':'Barletta-Andria-Trani'} - }, - 'JM':{ - '1' : {'code':'CLA','name':'Clarendon Parish'}, - '2' : {'code':'HAN','name':'Hanover Parish'}, - '3' : {'code':'KIN','name':'Kingston Parish'}, - '4' : {'code':'MAN','name':'Manchester Parish'}, - '5' : {'code':'POR','name':'Portland Parish'}, - '6' : {'code':'AND','name':'Saint Andrew Parish'}, - '7' : {'code':'ANN','name':'Saint Ann Parish'}, - '8' : {'code':'CAT','name':'Saint Catherine Parish'}, - '9' : {'code':'ELI','name':'Saint Elizabeth Parish'}, - '10' : {'code':'JAM','name':'Saint James Parish'}, - '11' : {'code':'MAR','name':'Saint Mary Parish'}, - '12' : {'code':'THO','name':'Saint Thomas Parish'}, - '13' : {'code':'TRL','name':'Trelawny Parish'}, - '14' : {'code':'WML','name':'Westmoreland Parish'} - }, - 'JP':{ - '1' : {'code':'AI','name':'Aichi'}, - '2' : {'code':'AK','name':'Akita'}, - '3' : {'code':'AO','name':'Aomori'}, - '4' : {'code':'CH','name':'Chiba'}, - '5' : {'code':'EH','name':'Ehime'}, - '6' : {'code':'FK','name':'Fukui'}, - '7' : {'code':'FU','name':'Fukuoka'}, - '8' : {'code':'FS','name':'Fukushima'}, - '9' : {'code':'GI','name':'Gifu'}, - '10' : {'code':'GU','name':'Gumma'}, - '11' : {'code':'HI','name':'Hiroshima'}, - '12' : {'code':'HO','name':'Hokkaido'}, - '13' : {'code':'HY','name':'Hyogo'}, - '14' : {'code':'IB','name':'Ibaraki'}, - '15' : {'code':'IS','name':'Ishikawa'}, - '16' : {'code':'IW','name':'Iwate'}, - '17' : {'code':'KA','name':'Kagawa'}, - '18' : {'code':'KG','name':'Kagoshima'}, - '19' : {'code':'KN','name':'Kanagawa'}, - '20' : {'code':'KO','name':'Kochi'}, - '21' : {'code':'KU','name':'Kumamoto'}, - '22' : {'code':'KY','name':'Kyoto'}, - '23' : {'code':'MI','name':'Mie'}, - '24' : {'code':'MY','name':'Miyagi'}, - '25' : {'code':'MZ','name':'Miyazaki'}, - '26' : {'code':'NA','name':'Nagano'}, - '27' : {'code':'NG','name':'Nagasaki'}, - '28' : {'code':'NR','name':'Nara'}, - '29' : {'code':'NI','name':'Niigata'}, - '30' : {'code':'OI','name':'Oita'}, - '31' : {'code':'OK','name':'Okayama'}, - '32' : {'code':'ON','name':'Okinawa'}, - '33' : {'code':'OS','name':'Osaka'}, - '34' : {'code':'SA','name':'Saga'}, - '35' : {'code':'SI','name':'Saitama'}, - '36' : {'code':'SH','name':'Shiga'}, - '37' : {'code':'SM','name':'Shimane'}, - '38' : {'code':'SZ','name':'Shizuoka'}, - '39' : {'code':'TO','name':'Tochigi'}, - '40' : {'code':'TS','name':'Tokushima'}, - '41' : {'code':'TK','name':'Tokyo'}, - '42' : {'code':'TT','name':'Tottori'}, - '43' : {'code':'TY','name':'Toyama'}, - '44' : {'code':'WA','name':'Wakayama'}, - '45' : {'code':'YA','name':'Yamagata'}, - '46' : {'code':'YM','name':'Yamaguchi'}, - '47' : {'code':'YN','name':'Yamanashi'} - }, - 'JO':{ - '1' : {'code':'AM','name':'\'Amman'}, - '2' : {'code':'AJ','name':'Ajlun'}, - '3' : {'code':'AA','name':'Al\'Aqabah'}, - '4' : {'code':'AB','name':'Al Balqa\''}, - '5' : {'code':'AK','name':'Al Karak'}, - '6' : {'code':'AL','name':'Al Mafraq'}, - '7' : {'code':'AT','name':'At Tafilah'}, - '8' : {'code':'AZ','name':'Az Zarqa\''}, - '9' : {'code':'IR','name':'Irbid'}, - '10' : {'code':'JA','name':'Jarash'}, - '11' : {'code':'MA','name':'Ma\'an'}, - '12' : {'code':'MD','name':'Madaba'} - }, - 'KZ':{ - '1' : {'code':'AL','name':'Almaty'}, - '2' : {'code':'AC','name':'Almaty City'}, - '3' : {'code':'AM','name':'Aqmola'}, - '4' : {'code':'AQ','name':'Aqtobe'}, - '5' : {'code':'AS','name':'Astana City'}, - '6' : {'code':'AT','name':'Atyrau'}, - '7' : {'code':'BA','name':'Batys Qazaqstan'}, - '8' : {'code':'BY','name':'Bayqongyr City'}, - '9' : {'code':'MA','name':'Mangghystau'}, - '10' : {'code':'ON','name':'Ongtustik Qazaqstan'}, - '11' : {'code':'PA','name':'Pavlodar'}, - '12' : {'code':'QA','name':'Qaraghandy'}, - '13' : {'code':'QO','name':'Qostanay'}, - '14' : {'code':'QY','name':'Qyzylorda'}, - '15' : {'code':'SH','name':'Shyghys Qazaqstan'}, - '16' : {'code':'SO','name':'Soltustik Qazaqstan'}, - '17' : {'code':'ZH','name':'Zhambyl'} - }, - 'KE':{ - '1' : {'code':'CE','name':'Central'}, - '2' : {'code':'CO','name':'Coast'}, - '3' : {'code':'EA','name':'Eastern'}, - '4' : {'code':'NA','name':'Nairobi Area'}, - '5' : {'code':'NE','name':'North Eastern'}, - '6' : {'code':'NY','name':'Nyanza'}, - '7' : {'code':'RV','name':'Rift Valley'}, - '8' : {'code':'WE','name':'Western'} - }, - 'KI':{ - '1' : {'code':'AG','name':'Abaiang'}, - '2' : {'code':'AM','name':'Abemama'}, - '3' : {'code':'AK','name':'Aranuka'}, - '4' : {'code':'AO','name':'Arorae'}, - '5' : {'code':'BA','name':'Banaba'}, - '6' : {'code':'BE','name':'Beru'}, - '7' : {'code':'bT','name':'Butaritari'}, - '8' : {'code':'KA','name':'Kanton'}, - '9' : {'code':'KR','name':'Kiritimati'}, - '10' : {'code':'KU','name':'Kuria'}, - '11' : {'code':'MI','name':'Maiana'}, - '12' : {'code':'MN','name':'Makin'}, - '13' : {'code':'ME','name':'Marakei'}, - '14' : {'code':'NI','name':'Nikunau'}, - '15' : {'code':'NO','name':'Nonouti'}, - '16' : {'code':'ON','name':'Onotoa'}, - '17' : {'code':'TT','name':'Tabiteuea'}, - '18' : {'code':'TR','name':'Tabuaeran'}, - '19' : {'code':'TM','name':'Tamana'}, - '20' : {'code':'TW','name':'Tarawa'}, - '21' : {'code':'TE','name':'Teraina'} - }, - 'KP':{ - '1' : {'code':'CHA','name':'Chagang-do'}, - '2' : {'code':'HAB','name':'Hamgyong-bukto'}, - '3' : {'code':'HAN','name':'Hamgyong-namdo'}, - '4' : {'code':'HWB','name':'Hwanghae-bukto'}, - '5' : {'code':'HWN','name':'Hwanghae-namdo'}, - '6' : {'code':'KAN','name':'Kangwon-do'}, - '7' : {'code':'PYB','name':'P\'yongan-bukto'}, - '8' : {'code':'PYN','name':'P\'yongan-namdo'}, - '9' : {'code':'YAN','name':'Ryanggang-do (Yanggang-do)'}, - '10' : {'code':'NAJ','name':'Rason Directly Governed City'}, - '11' : {'code':'PYO','name':'P\'yongyang Special City'} - }, - 'KR':{ - '1' : {'code':'CO','name':'Ch\'ungch\'ong-bukto'}, - '2' : {'code':'CH','name':'Ch\'ungch\'ong-namdo'}, - '3' : {'code':'CD','name':'Cheju-do'}, - '4' : {'code':'CB','name':'Cholla-bukto'}, - '5' : {'code':'CN','name':'Cholla-namdo'}, - '6' : {'code':'IG','name':'Inch\'on-gwangyoksi'}, - '7' : {'code':'KA','name':'Kangwon-do'}, - '8' : {'code':'KG','name':'Kwangju-gwangyoksi'}, - '9' : {'code':'KD','name':'Kyonggi-do'}, - '10' : {'code':'KB','name':'Kyongsang-bukto'}, - '11' : {'code':'KN','name':'Kyongsang-namdo'}, - '12' : {'code':'PG','name':'Pusan-gwangyoksi'}, - '13' : {'code':'SO','name':'Soul-t\'ukpyolsi'}, - '14' : {'code':'TA','name':'Taegu-gwangyoksi'}, - '15' : {'code':'TG','name':'Taejon-gwangyoksi'} - }, - 'KW':{ - '1' : {'code':'AL','name':'Al\'Asimah'}, - '2' : {'code':'AA','name':'Al Ahmadi'}, - '3' : {'code':'AF','name':'Al Farwaniyah'}, - '4' : {'code':'AJ','name':'Al Jahra\''}, - '5' : {'code':'HA','name':'Hawalli'} - }, - 'KG':{ - '1' : {'code':'GB','name':'Bishkek'}, - '2' : {'code':'B','name':'Batken'}, - '3' : {'code':'C','name':'Chu'}, - '4' : {'code':'J','name':'Jalal-Abad'}, - '5' : {'code':'N','name':'Naryn'}, - '6' : {'code':'O','name':'Osh'}, - '7' : {'code':'T','name':'Talas'}, - '8' : {'code':'Y','name':'Ysyk-Kol'} - }, - 'LA':{ - '1' : {'code':'VT','name':'Vientiane'}, - '2' : {'code':'AT','name':'Attapu'}, - '3' : {'code':'BK','name':'Bokeo'}, - '4' : {'code':'BL','name':'Bolikhamxai'}, - '5' : {'code':'CH','name':'Champasak'}, - '6' : {'code':'HO','name':'Houaphan'}, - '7' : {'code':'KH','name':'Khammouan'}, - '8' : {'code':'LM','name':'Louang Namtha'}, - '9' : {'code':'LP','name':'Louangphabang'}, - '10' : {'code':'OU','name':'Oudomxai'}, - '11' : {'code':'PH','name':'Phongsali'}, - '12' : {'code':'SL','name':'Salavan'}, - '13' : {'code':'SV','name':'Savannakhet'}, - '14' : {'code':'VI','name':'Vientiane'}, - '15' : {'code':'XA','name':'Xaignabouli'}, - '16' : {'code':'XE','name':'Xekong'}, - '17' : {'code':'XI','name':'Xiangkhoang'}, - '18' : {'code':'XN','name':'Xaisomboun'} - }, - 'LV':{ - '1' : {'code':'AIZ','name':'Aizkraukles Rajons'}, - '2' : {'code':'ALU','name':'Aluksnes Rajons'}, - '3' : {'code':'BAL','name':'Balvu Rajons'}, - '4' : {'code':'BAU','name':'Bauskas Rajons'}, - '5' : {'code':'CES','name':'Cesu Rajons'}, - '6' : {'code':'DGR','name':'Daugavpils Rajons'}, - '7' : {'code':'DOB','name':'Dobeles Rajons'}, - '8' : {'code':'GUL','name':'Gulbenes Rajons'}, - '9' : {'code':'JEK','name':'Jekabpils Rajons'}, - '10' : {'code':'JGR','name':'Jelgavas Rajons'}, - '11' : {'code':'KRA','name':'Kraslavas Rajons'}, - '12' : {'code':'KUL','name':'Kuldigas Rajons'}, - '13' : {'code':'LPR','name':'Liepajas Rajons'}, - '14' : {'code':'LIM','name':'Limbazu Rajons'}, - '15' : {'code':'LUD','name':'Ludzas Rajons'}, - '16' : {'code':'MAD','name':'Madonas Rajons'}, - '17' : {'code':'OGR','name':'Ogres Rajons'}, - '18' : {'code':'PRE','name':'Preilu Rajons'}, - '19' : {'code':'RZR','name':'Rezeknes Rajons'}, - '20' : {'code':'RGR','name':'Rigas Rajons'}, - '21' : {'code':'SAL','name':'Saldus Rajons'}, - '22' : {'code':'TAL','name':'Talsu Rajons'}, - '23' : {'code':'TUK','name':'Tukuma Rajons'}, - '24' : {'code':'VLK','name':'Valkas Rajons'}, - '25' : {'code':'VLM','name':'Valmieras Rajons'}, - '26' : {'code':'VSR','name':'Ventspils Rajons'}, - '27' : {'code':'DGV','name':'Daugavpils'}, - '28' : {'code':'JGV','name':'Jelgava'}, - '29' : {'code':'JUR','name':'Jurmala'}, - '30' : {'code':'LPK','name':'Liepaja'}, - '31' : {'code':'RZK','name':'Rezekne'}, - '32' : {'code':'RGA','name':'Riga'}, - '33' : {'code':'VSL','name':'Ventspils'} - }, - 'LB':{ - '1' : {'code':'BIN','name':'Bint Jbeil'}, - '2' : {'code':'HAS','name':'Hasbaya'}, - '3' : {'code':'MAR','name':'Marjeyoun'}, - '4' : {'code':'NAB','name':'Nabatieh'}, - '5' : {'code':'BAA','name':'Baalbek'}, - '6' : {'code':'HER','name':'Hermel'}, - '7' : {'code':'RAS','name':'Rashaya'}, - '8' : {'code':'WES','name':'Western Beqaa'}, - '9' : {'code':'ZAH','name':'Zahle'}, - '10' : {'code':'AKK','name':'Akkar'}, - '11' : {'code':'BAT','name':'Batroun'}, - '12' : {'code':'BSH','name':'Bsharri'}, - '13' : {'code':'KOU','name':'Koura'}, - '14' : {'code':'MIN','name':'Miniyeh-Danniyeh'}, - '15' : {'code':'TRI','name':'Tripoli'}, - '16' : {'code':'ZGH','name':'Zgharta'}, - '17' : {'code':'ALE','name':'Aley'}, - '18' : {'code':'BAA','name':'Baabda'}, - '19' : {'code':'BYB','name':'Byblos'}, - '20' : {'code':'CHO','name':'Chouf'}, - '21' : {'code':'KES','name':'Kesrwan'}, - '22' : {'code':'MAT','name':'Matn'}, - '23' : {'code':'JEZ','name':'Jezzine'}, - '24' : {'code':'SID','name':'Sidon'}, - '25' : {'code':'TYR','name':'Tyre'} - }, - 'LS':{ - '1' : {'code':'BE','name':'Berea'}, - '2' : {'code':'BB','name':'Butha-Buthe'}, - '3' : {'code':'LE','name':'Leribe'}, - '4' : {'code':'MF','name':'Mafeteng'}, - '5' : {'code':'MS','name':'Maseru'}, - '6' : {'code':'MH','name':'Mohale\'s Hoek'}, - '7' : {'code':'MK','name':'Mokhotlong'}, - '8' : {'code':'QN','name':'Qacha\'s Nek'}, - '9' : {'code':'QT','name':'Quthing'}, - '10' : {'code':'TT','name':'Thaba-Tseka'} - }, - 'LR':{ - '1' : {'code':'BI','name':'Bomi'}, - '2' : {'code':'BG','name':'Bong'}, - '3' : {'code':'GB','name':'Grand Bassa'}, - '4' : {'code':'CM','name':'Grand Cape Mount'}, - '5' : {'code':'GG','name':'Grand Gedeh'}, - '6' : {'code':'GK','name':'Grand Kru'}, - '7' : {'code':'LO','name':'Lofa'}, - '8' : {'code':'MG','name':'Margibi'}, - '9' : {'code':'ML','name':'Maryland'}, - '10' : {'code':'MS','name':'Montserrado'}, - '11' : {'code':'NB','name':'Nimba'}, - '12' : {'code':'RC','name':'River Cess'}, - '13' : {'code':'SN','name':'Sinoe'} - }, - 'LY':{ - '1' : {'code':'AJ','name':'Ajdabiya'}, - '2' : {'code':'AZ','name':'Al \'Aziziyah'}, - '3' : {'code':'FA','name':'Al Fatih'}, - '4' : {'code':'JA','name':'Al Jabal al Akhdar'}, - '5' : {'code':'JU','name':'Al Jufrah'}, - '6' : {'code':'KH','name':'Al Khums'}, - '7' : {'code':'KU','name':'Al Kufrah'}, - '8' : {'code':'NK','name':'An Nuqat al Khams'}, - '9' : {'code':'AS','name':'Ash Shati\''}, - '10' : {'code':'AW','name':'Awbari'}, - '11' : {'code':'ZA','name':'Az Zawiyah'}, - '12' : {'code':'BA','name':'Banghazi'}, - '13' : {'code':'DA','name':'Darnah'}, - '14' : {'code':'GD','name':'Ghadamis'}, - '15' : {'code':'GY','name':'Gharyan'}, - '16' : {'code':'MI','name':'Misratah'}, - '17' : {'code':'MZ','name':'Murzuq'}, - '18' : {'code':'SB','name':'Sabha'}, - '19' : {'code':'SW','name':'Sawfajjin'}, - '20' : {'code':'SU','name':'Surt'}, - '21' : {'code':'TL','name':'Tarabulus (Tripoli)'}, - '22' : {'code':'TH','name':'Tarhunah'}, - '23' : {'code':'TU','name':'Tubruq'}, - '24' : {'code':'YA','name':'Yafran'}, - '25' : {'code':'ZL','name':'Zlitan'} - }, - 'LI':{ - '1' : {'code':'V','name':'Vaduz'}, - '2' : {'code':'A','name':'Schaan'}, - '3' : {'code':'B','name':'Balzers'}, - '4' : {'code':'N','name':'Triesen'}, - '5' : {'code':'E','name':'Eschen'}, - '6' : {'code':'M','name':'Mauren'}, - '7' : {'code':'T','name':'Triesenberg'}, - '8' : {'code':'R','name':'Ruggell'}, - '9' : {'code':'G','name':'Gamprin'}, - '10' : {'code':'L','name':'Schellenberg'}, - '11' : {'code':'P','name':'Planken'} - }, - 'LT':{ - '1' : {'code':'AL','name':'Alytus'}, - '2' : {'code':'KA','name':'Kaunas'}, - '3' : {'code':'KL','name':'Klaipeda'}, - '4' : {'code':'MA','name':'Marijampole'}, - '5' : {'code':'PA','name':'Panevezys'}, - '6' : {'code':'SI','name':'Siauliai'}, - '7' : {'code':'TA','name':'Taurage'}, - '8' : {'code':'TE','name':'Telsiai'}, - '9' : {'code':'UT','name':'Utena'}, - '10' : {'code':'VI','name':'Vilnius'} - }, - 'LU':{ - '1' : {'code':'DD','name':'Diekirch'}, - '2' : {'code':'DC','name':'Clervaux'}, - '3' : {'code':'DR','name':'Redange'}, - '4' : {'code':'DV','name':'Vianden'}, - '5' : {'code':'DW','name':'Wiltz'}, - '6' : {'code':'GG','name':'Grevenmacher'}, - '7' : {'code':'GE','name':'Echternach'}, - '8' : {'code':'GR','name':'Remich'}, - '9' : {'code':'LL','name':'Luxembourg'}, - '10' : {'code':'LC','name':'Capellen'}, - '11' : {'code':'LE','name':'Esch-sur-Alzette'}, - '12' : {'code':'LM','name':'Mersch'} - }, - 'MO':{ - '1' : {'code':'OLF','name':'Our Lady Fatima Parish'}, - '2' : {'code':'ANT','name':'St. Anthony Parish'}, - '3' : {'code':'LAZ','name':'St. Lazarus Parish'}, - '4' : {'code':'CAT','name':'Cathedral Parish'}, - '5' : {'code':'LAW','name':'St. Lawrence Parish'} - }, - 'MK':{ - '1' : {'code':'AER','name':'Aerodrom'}, - '2' : {'code':'ARA','name':'Aračinovo'}, - '3' : {'code':'BER','name':'Berovo'}, - '4' : {'code':'BIT','name':'Bitola'}, - '5' : {'code':'BOG','name':'Bogdanci'}, - '6' : {'code':'BOG','name':'Bogovinje'}, - '7' : {'code':'BOS','name':'Bosilovo'}, - '8' : {'code':'BRV','name':'Brvenica'}, - '9' : {'code':'BUT','name':'Butel'}, - '10' : {'code':'ČAI','name':'Čair'}, - '11' : {'code':'ČAš','name':'Čaška'}, - '12' : {'code':'CEN','name':'Centar'}, - '13' : {'code':'CEN','name':'Centar Župa'}, - '14' : {'code':'Češ','name':'Češinovo-Obleš'}, - '15' : {'code':'ČUČ','name':'Čučer-Sandevo'}, - '16' : {'code':'DEB','name':'Debar'}, - '17' : {'code':'DEB','name':'Debarca'}, - '18' : {'code':'DEL','name':'Delčevo'}, - '19' : {'code':'DEM','name':'Demir Hisar'}, - '20' : {'code':'DEM','name':'Demir Kapija'}, - '21' : {'code':'DOL','name':'Dolneni'}, - '22' : {'code':'DRU','name':'Drugovo'}, - '23' : {'code':'GAZ','name':'Gazi Baba'}, - '24' : {'code':'GEV','name':'Gevgelija'}, - '25' : {'code':'GJO','name':'Gjorče Petrov'}, - '26' : {'code':'GOS','name':'Gostivar'}, - '27' : {'code':'GRA','name':'Gradsko'}, - '28' : {'code':'ILI','name':'Ilinden'}, - '29' : {'code':'JEG','name':'Jegunovce'}, - '30' : {'code':'KAR','name':'Karbinci'}, - '31' : {'code':'KAR','name':'Karpoš'}, - '32' : {'code':'KAV','name':'Kavadarci'}, - '33' : {'code':'KIČ','name':'Kičevo'}, - '34' : {'code':'KIS','name':'Kisela Voda'}, - '35' : {'code':'KOč','name':'Kočani'}, - '36' : {'code':'KON','name':'Konče'}, - '37' : {'code':'KRA','name':'Kratovo'}, - '38' : {'code':'KRI','name':'Kriva Palanka'}, - '39' : {'code':'KRI','name':'Krivogaštani'}, - '40' : {'code':'KRU','name':'Kruševo'}, - '41' : {'code':'KUM','name':'Kumanovo'}, - '42' : {'code':'LIP','name':'Lipkovo'}, - '43' : {'code':'LOZ','name':'Lozovo'}, - '44' : {'code':'MAK','name':'Makedonska Kamenica'}, - '45' : {'code':'MAK','name':'Makedonski Brod'}, - '46' : {'code':'MAV','name':'Mavrovo and Rostuša'}, - '47' : {'code':'MOG','name':'Mogila'}, - '48' : {'code':'NEG','name':'Negotino'}, - '49' : {'code':'NOV','name':'Novaci'}, - '50' : {'code':'NOV','name':'Novo Selo'}, - '51' : {'code':'OHR','name':'Ohrid'}, - '52' : {'code':'OSL','name':'Oslomej'}, - '53' : {'code':'PEH','name':'Pehčevo'}, - '54' : {'code':'PET','name':'Petrovec'}, - '55' : {'code':'PLA','name':'Plasnica'}, - '56' : {'code':'PRI','name':'Prilep'}, - '57' : {'code':'PRO','name':'Probištip'}, - '58' : {'code':'RAD','name':'Radoviš'}, - '59' : {'code':'RAN','name':'Rankovce'}, - '60' : {'code':'RES','name':'Resen'}, - '61' : {'code':'ROS','name':'Rosoman'}, - '62' : {'code':'SAR','name':'Saraj'}, - '63' : {'code':'SOP','name':'Sopište'}, - '64' : {'code':'STA','name':'Star Dojran'}, - '65' : {'code':'STA','name':'Staro Nagoričane'}, - '66' : {'code':'ŠTI','name':'Štip'}, - '67' : {'code':'STR','name':'Struga'}, - '68' : {'code':'STR','name':'Strumica'}, - '69' : {'code':'STU','name':'Studeničani'}, - '70' : {'code':'ŠUT','name':'Šuto Orizari'}, - '71' : {'code':'SVE','name':'Sveti Nikole'}, - '72' : {'code':'TEA','name':'Tearce'}, - '73' : {'code':'TET','name':'Tetovo'}, - '74' : {'code':'VAL','name':'Valandovo'}, - '75' : {'code':'VAS','name':'Vasilevo'}, - '76' : {'code':'VEL','name':'Veles'}, - '77' : {'code':'VEV','name':'Vevčani'}, - '78' : {'code':'VIN','name':'Vinica'}, - '79' : {'code':'VRA','name':'Vraneštica'}, - '80' : {'code':'VRA','name':'Vrapčište'}, - '81' : {'code':'ZAJ','name':'Zajas'}, - '82' : {'code':'ZEL','name':'Zelenikovo'}, - '83' : {'code':'ŽEL','name':'Želino'}, - '84' : {'code':'ZRN','name':'Zrnovci'} - }, - 'MG':{ - '1' : {'code':'AN','name':'Antananarivo'}, - '2' : {'code':'AS','name':'Antsiranana'}, - '3' : {'code':'FN','name':'Fianarantsoa'}, - '4' : {'code':'MJ','name':'Mahajanga'}, - '5' : {'code':'TM','name':'Toamasina'}, - '6' : {'code':'TL','name':'Toliara'} - }, - 'MW':{ - '1' : {'code':'BLK','name':'Balaka'}, - '2' : {'code':'BLT','name':'Blantyre'}, - '3' : {'code':'CKW','name':'Chikwawa'}, - '4' : {'code':'CRD','name':'Chiradzulu'}, - '5' : {'code':'CTP','name':'Chitipa'}, - '6' : {'code':'DDZ','name':'Dedza'}, - '7' : {'code':'DWA','name':'Dowa'}, - '8' : {'code':'KRG','name':'Karonga'}, - '9' : {'code':'KSG','name':'Kasungu'}, - '10' : {'code':'LKM','name':'Likoma'}, - '11' : {'code':'LLG','name':'Lilongwe'}, - '12' : {'code':'MCG','name':'Machinga'}, - '13' : {'code':'MGC','name':'Mangochi'}, - '14' : {'code':'MCH','name':'Mchinji'}, - '15' : {'code':'MLJ','name':'Mulanje'}, - '16' : {'code':'MWZ','name':'Mwanza'}, - '17' : {'code':'MZM','name':'Mzimba'}, - '18' : {'code':'NTU','name':'Ntcheu'}, - '19' : {'code':'NKB','name':'Nkhata Bay'}, - '20' : {'code':'NKH','name':'Nkhotakota'}, - '21' : {'code':'NSJ','name':'Nsanje'}, - '22' : {'code':'NTI','name':'Ntchisi'}, - '23' : {'code':'PHL','name':'Phalombe'}, - '24' : {'code':'RMP','name':'Rumphi'}, - '25' : {'code':'SLM','name':'Salima'}, - '26' : {'code':'THY','name':'Thyolo'}, - '27' : {'code':'ZBA','name':'Zomba'} - }, - 'MY':{ - '1' : {'code':'Johor','name':'Johor'}, - '2' : {'code':'Kedah','name':'Kedah'}, - '3' : {'code':'Kelantan','name':'Kelantan'}, - '4' : {'code':'Labuan','name':'Labuan'}, - '5' : {'code':'Melaka','name':'Melaka'}, - '6' : {'code':'Negeri Sembilan','name':'Negeri Sembilan'}, - '7' : {'code':'Pahang','name':'Pahang'}, - '8' : {'code':'Perak','name':'Perak'}, - '9' : {'code':'Perlis','name':'Perlis'}, - '10' : {'code':'Pulau Pinang','name':'Pulau Pinang'}, - '11' : {'code':'Sabah','name':'Sabah'}, - '12' : {'code':'Sarawak','name':'Sarawak'}, - '13' : {'code':'Selangor','name':'Selangor'}, - '14' : {'code':'Terengganu','name':'Terengganu'}, - '15' : {'code':'Kuala Lumpur','name':'Kuala Lumpur'} - }, - 'MV':{ - '1' : {'code':'AAD','name':'Ari Atoll Dheknu'}, - '2' : {'code':'AAU','name':'Ari Atoll Uthuru'}, - '3' : {'code':'ADD','name':'Addu'}, - '4' : {'code':'FAA','name':'Faadhippolhu'}, - '5' : {'code':'FEA','name':'Felidhe Atoll'}, - '6' : {'code':'FMU','name':'Fua Mulaku'}, - '7' : {'code':'HAD','name':'Huvadhu Atoll Dhekunu'}, - '8' : {'code':'HAU','name':'Huvadhu Atoll Uthuru'}, - '9' : {'code':'HDH','name':'Hadhdhunmathi'}, - '10' : {'code':'KLH','name':'Kolhumadulu'}, - '11' : {'code':'MAA','name':'Male Atoll'}, - '12' : {'code':'MAD','name':'Maalhosmadulu Dhekunu'}, - '13' : {'code':'MAU','name':'Maalhosmadulu Uthuru'}, - '14' : {'code':'MLD','name':'Miladhunmadulu Dhekunu'}, - '15' : {'code':'MLU','name':'Miladhunmadulu Uthuru'}, - '16' : {'code':'MUA','name':'Mulaku Atoll'}, - '17' : {'code':'NAD','name':'Nilandhe Atoll Dhekunu'}, - '18' : {'code':'NAU','name':'Nilandhe Atoll Uthuru'}, - '19' : {'code':'THD','name':'Thiladhunmathi Dhekunu'}, - '20' : {'code':'THU','name':'Thiladhunmathi Uthuru'} - }, - 'ML':{ - '1' : {'code':'GA','name':'Gao'}, - '2' : {'code':'KY','name':'Kayes'}, - '3' : {'code':'KD','name':'Kidal'}, - '4' : {'code':'KL','name':'Koulikoro'}, - '5' : {'code':'MP','name':'Mopti'}, - '6' : {'code':'SG','name':'Segou'}, - '7' : {'code':'SK','name':'Sikasso'}, - '8' : {'code':'TB','name':'Tombouctou'}, - '9' : {'code':'CD','name':'Bamako Capital District'} - }, - 'MT':{ - '1' : {'code':'ATT','name':'Attard'}, - '2' : {'code':'BAL','name':'Balzan'}, - '3' : {'code':'BGU','name':'Birgu'}, - '4' : {'code':'BKK','name':'Birkirkara'}, - '5' : {'code':'BRZ','name':'Birzebbuga'}, - '6' : {'code':'BOR','name':'Bormla'}, - '7' : {'code':'DIN','name':'Dingli'}, - '8' : {'code':'FGU','name':'Fgura'}, - '9' : {'code':'FLO','name':'Floriana'}, - '10' : {'code':'GDJ','name':'Gudja'}, - '11' : {'code':'GZR','name':'Gzira'}, - '12' : {'code':'GRG','name':'Gargur'}, - '13' : {'code':'GXQ','name':'Gaxaq'}, - '14' : {'code':'HMR','name':'Hamrun'}, - '15' : {'code':'IKL','name':'Iklin'}, - '16' : {'code':'ISL','name':'Isla'}, - '17' : {'code':'KLK','name':'Kalkara'}, - '18' : {'code':'KRK','name':'Kirkop'}, - '19' : {'code':'LIJ','name':'Lija'}, - '20' : {'code':'LUQ','name':'Luqa'}, - '21' : {'code':'MRS','name':'Marsa'}, - '22' : {'code':'MKL','name':'Marsaskala'}, - '23' : {'code':'MXL','name':'Marsaxlokk'}, - '24' : {'code':'MDN','name':'Mdina'}, - '25' : {'code':'MEL','name':'Melliea'}, - '26' : {'code':'MGR','name':'Mgarr'}, - '27' : {'code':'MST','name':'Mosta'}, - '28' : {'code':'MQA','name':'Mqabba'}, - '29' : {'code':'MSI','name':'Msida'}, - '30' : {'code':'MTF','name':'Mtarfa'}, - '31' : {'code':'NAX','name':'Naxxar'}, - '32' : {'code':'PAO','name':'Paola'}, - '33' : {'code':'PEM','name':'Pembroke'}, - '34' : {'code':'PIE','name':'Pieta'}, - '35' : {'code':'QOR','name':'Qormi'}, - '36' : {'code':'QRE','name':'Qrendi'}, - '37' : {'code':'RAB','name':'Rabat'}, - '38' : {'code':'SAF','name':'Safi'}, - '39' : {'code':'SGI','name':'San Giljan'}, - '40' : {'code':'SLU','name':'Santa Lucija'}, - '41' : {'code':'SPB','name':'San Pawl il-Bahar'}, - '42' : {'code':'SGW','name':'San Gwann'}, - '43' : {'code':'SVE','name':'Santa Venera'}, - '44' : {'code':'SIG','name':'Siggiewi'}, - '45' : {'code':'SLM','name':'Sliema'}, - '46' : {'code':'SWQ','name':'Swieqi'}, - '47' : {'code':'TXB','name':'Ta Xbiex'}, - '48' : {'code':'TRX','name':'Tarxien'}, - '49' : {'code':'VLT','name':'Valletta'}, - '50' : {'code':'XGJ','name':'Xgajra'}, - '51' : {'code':'ZBR','name':'Zabbar'}, - '52' : {'code':'ZBG','name':'Zebbug'}, - '53' : {'code':'ZJT','name':'Zejtun'}, - '54' : {'code':'ZRQ','name':'Zurrieq'}, - '55' : {'code':'FNT','name':'Fontana'}, - '56' : {'code':'GHJ','name':'Ghajnsielem'}, - '57' : {'code':'GHR','name':'Gharb'}, - '58' : {'code':'GHS','name':'Ghasri'}, - '59' : {'code':'KRC','name':'Kercem'}, - '60' : {'code':'MUN','name':'Munxar'}, - '61' : {'code':'NAD','name':'Nadur'}, - '62' : {'code':'QAL','name':'Qala'}, - '63' : {'code':'VIC','name':'Victoria'}, - '64' : {'code':'SLA','name':'San Lawrenz'}, - '65' : {'code':'SNT','name':'Sannat'}, - '66' : {'code':'ZAG','name':'Xagra'}, - '67' : {'code':'XEW','name':'Xewkija'}, - '68' : {'code':'ZEB','name':'Zebbug'} - }, - 'MH':{ - '1' : {'code':'ALG','name':'Ailinginae'}, - '2' : {'code':'ALL','name':'Ailinglaplap'}, - '3' : {'code':'ALK','name':'Ailuk'}, - '4' : {'code':'ARN','name':'Arno'}, - '5' : {'code':'AUR','name':'Aur'}, - '6' : {'code':'BKR','name':'Bikar'}, - '7' : {'code':'BKN','name':'Bikini'}, - '8' : {'code':'BKK','name':'Bokak'}, - '9' : {'code':'EBN','name':'Ebon'}, - '10' : {'code':'ENT','name':'Enewetak'}, - '11' : {'code':'EKB','name':'Erikub'}, - '12' : {'code':'JBT','name':'Jabat'}, - '13' : {'code':'JLT','name':'Jaluit'}, - '14' : {'code':'JEM','name':'Jemo'}, - '15' : {'code':'KIL','name':'Kili'}, - '16' : {'code':'KWJ','name':'Kwajalein'}, - '17' : {'code':'LAE','name':'Lae'}, - '18' : {'code':'LIB','name':'Lib'}, - '19' : {'code':'LKP','name':'Likiep'}, - '20' : {'code':'MJR','name':'Majuro'}, - '21' : {'code':'MLP','name':'Maloelap'}, - '22' : {'code':'MJT','name':'Mejit'}, - '23' : {'code':'MIL','name':'Mili'}, - '24' : {'code':'NMK','name':'Namorik'}, - '25' : {'code':'NAM','name':'Namu'}, - '26' : {'code':'RGL','name':'Rongelap'}, - '27' : {'code':'RGK','name':'Rongrik'}, - '28' : {'code':'TOK','name':'Toke'}, - '29' : {'code':'UJA','name':'Ujae'}, - '30' : {'code':'UJL','name':'Ujelang'}, - '31' : {'code':'UTK','name':'Utirik'}, - '32' : {'code':'WTH','name':'Wotho'}, - '33' : {'code':'WTJ','name':'Wotje'} - }, - 'MQ':{ - '1' : {'code':'LAJ','name':'L\'Ajoupa-Bouillon'}, - '2' : {'code':'LES','name':'Les Anses-d\'Arlet'}, - '3' : {'code':'BAS','name':'Basse-Pointe'}, - '4' : {'code':'BEL','name':'Bellefontaine'}, - '5' : {'code':'LE','name':'Le Carbet'}, - '6' : {'code':'CAS','name':'Case-Pilote'}, - '7' : {'code':'LE','name':'Le Diamant'}, - '8' : {'code':'DUC','name':'Ducos'}, - '9' : {'code':'FON','name':'Fonds-Saint-Denis'}, - '10' : {'code':'FOR','name':'Fort-De-France'}, - '11' : {'code':'LE','name':'Le François'}, - '12' : {'code':'GRA','name':'Grand\'Rivière'}, - '13' : {'code':'GRO','name':'Gros-Morne'}, - '14' : {'code':'LE','name':'Le Lamentin'}, - '15' : {'code':'LE','name':'Le Lorrain'}, - '16' : {'code':'MAC','name':'Macouba'}, - '17' : {'code':'LE','name':'Le Marigot'}, - '18' : {'code':'LE','name':'Le Marin'}, - '19' : {'code':'LE','name':'Le Morne-Rouge'}, - '20' : {'code':'LE','name':'Le Morne-Vert'}, - '21' : {'code':'LE','name':'Le Prêcheur'}, - '22' : {'code':'RIV','name':'Rivière-Pilote'}, - '23' : {'code':'RIV','name':'Rivière-Salée'}, - '24' : {'code':'LE','name':'Le Robert'}, - '25' : {'code':'SAI','name':'Sainte-Anne'}, - '26' : {'code':'SAI','name':'Sainte-Luce'}, - '27' : {'code':'SAI','name':'Sainte-Marie'}, - '28' : {'code':'SAI','name':'Saint-Esprit'}, - '29' : {'code':'SAI','name':'Saint-Joseph'}, - '30' : {'code':'SAI','name':'Saint-Pierre'}, - '31' : {'code':'SCH','name':'Schœlcher'}, - '32' : {'code':'LA','name':'La Trinité'}, - '33' : {'code':'LES','name':'Les Trois-Îlets'}, - '34' : {'code':'LE','name':'Le Vauclin'} - }, - 'MR':{ - '1' : {'code':'AD','name':'Adrar'}, - '2' : {'code':'AS','name':'Assaba'}, - '3' : {'code':'BR','name':'Brakna'}, - '4' : {'code':'DN','name':'Dakhlet Nouadhibou'}, - '5' : {'code':'GO','name':'Gorgol'}, - '6' : {'code':'GM','name':'Guidimaka'}, - '7' : {'code':'HC','name':'Hodh Ech Chargui'}, - '8' : {'code':'HG','name':'Hodh El Gharbi'}, - '9' : {'code':'IN','name':'Inchiri'}, - '10' : {'code':'TA','name':'Tagant'}, - '11' : {'code':'TZ','name':'Tiris Zemmour'}, - '12' : {'code':'TR','name':'Trarza'}, - '13' : {'code':'NO','name':'Nouakchott'} - }, - 'MU':{ - '1' : {'code':'AG','name':'Agalega Islands'}, - '2' : {'code':'BL','name':'Black River'}, - '3' : {'code':'BR','name':'Beau Bassin-Rose Hill'}, - '4' : {'code':'CC','name':'Cargados Carajos Shoals (Saint B)'}, - '5' : {'code':'CU','name':'Curepipe'}, - '6' : {'code':'FL','name':'Flacq'}, - '7' : {'code':'GP','name':'Grand Port'}, - '8' : {'code':'MO','name':'Moka'}, - '9' : {'code':'PA','name':'Pamplemousses'}, - '10' : {'code':'PL','name':'Port Louis'}, - '11' : {'code':'PU','name':'Port Louis'}, - '12' : {'code':'PW','name':'Plaines Wilhems'}, - '13' : {'code':'QB','name':'Quatre Bornes'}, - '14' : {'code':'RO','name':'Rodrigues'}, - '15' : {'code':'RR','name':'Riviere du Rempart'}, - '16' : {'code':'SA','name':'Savanne'}, - '17' : {'code':'VP','name':'Vacoas-Phoenix'} - }, - 'YT':{ - '1' : {'code':'DZA','name':'Dzaoudzi'}, - '2' : {'code':'PAM','name':'Pamandzi'}, - '3' : {'code':'MAM','name':'Mamoudzou'}, - '4' : {'code':'DEM','name':'Dembeni'}, - '5' : {'code':'BAN','name':'Bandrele'}, - '6' : {'code':'KAN','name':'Kani-Kéli'}, - '7' : {'code':'BOU','name':'Bouéni'}, - '8' : {'code':'CHI','name':'Chirongui'}, - '9' : {'code':'SAD','name':'Sada'}, - '10' : {'code':'OUA','name':'Ouangani'}, - '11' : {'code':'CHI','name':'Chiconi'}, - '12' : {'code':'TSI','name':'Tsingoni'}, - '13' : {'code':'MTS','name':'M\'Tsangamouji'}, - '14' : {'code':'ACO','name':'Acoua'}, - '15' : {'code':'MTS','name':'Mtsamboro'}, - '16' : {'code':'BAN','name':'Bandraboua'}, - '17' : {'code':'KOU','name':'Koungou'} - }, - 'MX':{ - '1' : {'code':'AGU','name':'Aguascalientes'}, - '2' : {'code':'BCN','name':'Baja California Norte'}, - '3' : {'code':'BCS','name':'Baja California Sur'}, - '4' : {'code':'CAM','name':'Campeche'}, - '5' : {'code':'CHP','name':'Chiapas'}, - '6' : {'code':'CHH','name':'Chihuahua'}, - '7' : {'code':'COA','name':'Coahuila de Zaragoza'}, - '8' : {'code':'COL','name':'Colima'}, - '9' : {'code':'DIF','name':'Distrito Federal'}, - '10' : {'code':'DUR','name':'Durango'}, - '11' : {'code':'GUA','name':'Guanajuato'}, - '12' : {'code':'GRO','name':'Guerrero'}, - '13' : {'code':'HID','name':'Hidalgo'}, - '14' : {'code':'JAL','name':'Jalisco'}, - '15' : {'code':'MEX','name':'Mexico'}, - '16' : {'code':'MIC','name':'Michoacan de Ocampo'}, - '17' : {'code':'MOR','name':'Morelos'}, - '18' : {'code':'NAY','name':'Nayarit'}, - '19' : {'code':'NLE','name':'Nuevo Leon'}, - '20' : {'code':'OAX','name':'Oaxaca'}, - '21' : {'code':'PUE','name':'Puebla'}, - '22' : {'code':'QUE','name':'Queretaro de Arteaga'}, - '23' : {'code':'ROO','name':'Quintana Roo'}, - '24' : {'code':'SLP','name':'San Luis Potosi'}, - '25' : {'code':'SIN','name':'Sinaloa'}, - '26' : {'code':'SON','name':'Sonora'}, - '27' : {'code':'TAB','name':'Tabasco'}, - '28' : {'code':'TAM','name':'Tamaulipas'}, - '29' : {'code':'TLA','name':'Tlaxcala'}, - '30' : {'code':'VER','name':'Veracruz-Llave'}, - '31' : {'code':'YUC','name':'Yucatan'}, - '32' : {'code':'ZAC','name':'Zacatecas'} - }, - 'FM':{ - '1' : {'code':'C','name':'Chuuk'}, - '2' : {'code':'K','name':'Kosrae'}, - '3' : {'code':'P','name':'Pohnpei'}, - '4' : {'code':'Y','name':'Yap'} - }, - 'MD':{ - '1' : {'code':'GA','name':'Gagauzia'}, - '2' : {'code':'CU','name':'Chisinau'}, - '3' : {'code':'BA','name':'Balti'}, - '4' : {'code':'CA','name':'Cahul'}, - '5' : {'code':'ED','name':'Edinet'}, - '6' : {'code':'LA','name':'Lapusna'}, - '7' : {'code':'OR','name':'Orhei'}, - '8' : {'code':'SO','name':'Soroca'}, - '9' : {'code':'TI','name':'Tighina'}, - '10' : {'code':'UN','name':'Ungheni'}, - '11' : {'code':'SN','name':'Stânga Nistrului'} - }, - 'MC':{ - '1' : {'code':'FV','name':'Fontvieille'}, - '2' : {'code':'LC','name':'La Condamine'}, - '3' : {'code':'MV','name':'Monaco-Ville'}, - '4' : {'code':'MC','name':'Monte-Carlo'} - }, - 'MN':{ - '1' : {'code':'1','name':'Ulanbaatar'}, - '2' : {'code':'035','name':'Orhon'}, - '3' : {'code':'037','name':'Darhan uul'}, - '4' : {'code':'039','name':'Hentiy'}, - '5' : {'code':'041','name':'Hovsgol'}, - '6' : {'code':'043','name':'Hovd'}, - '7' : {'code':'046','name':'Uvs'}, - '8' : {'code':'047','name':'Tov'}, - '9' : {'code':'049','name':'Selenge'}, - '10' : {'code':'051','name':'Suhbaatar'}, - '11' : {'code':'053','name':'Omnogovi'}, - '12' : {'code':'055','name':'Ovorhangay'}, - '13' : {'code':'057','name':'Dzavhan'}, - '14' : {'code':'059','name':'DundgovL'}, - '15' : {'code':'061','name':'Dornod'}, - '16' : {'code':'063','name':'Dornogov'}, - '17' : {'code':'064','name':'Govi-Sumber'}, - '18' : {'code':'065','name':'Govi-Altay'}, - '19' : {'code':'067','name':'Bulgan'}, - '20' : {'code':'069','name':'Bayanhongor'}, - '21' : {'code':'071','name':'Bayan-Olgiy'}, - '22' : {'code':'073','name':'Arhangay'} - }, - 'MS':{ - '1' : {'code':'A','name':'Saint Anthony'}, - '2' : {'code':'G','name':'Saint Georges'}, - '3' : {'code':'P','name':'Saint Peter'} - }, - 'MA':{ - '1' : {'code':'AGD','name':'Agadir'}, - '2' : {'code':'HOC','name':'Al Hoceima'}, - '3' : {'code':'AZI','name':'Azilal'}, - '4' : {'code':'BME','name':'Beni Mellal'}, - '5' : {'code':'BSL','name':'Ben Slimane'}, - '6' : {'code':'BLM','name':'Boulemane'}, - '7' : {'code':'CBL','name':'Casablanca'}, - '8' : {'code':'CHA','name':'Chaouen'}, - '9' : {'code':'EJA','name':'El Jadida'}, - '10' : {'code':'EKS','name':'El Kelaa des Sraghna'}, - '11' : {'code':'ERA','name':'Er Rachidia'}, - '12' : {'code':'ESS','name':'Essaouira'}, - '13' : {'code':'FES','name':'Fes'}, - '14' : {'code':'FIG','name':'Figuig'}, - '15' : {'code':'GLM','name':'Guelmim'}, - '16' : {'code':'IFR','name':'Ifrane'}, - '17' : {'code':'KEN','name':'Kenitra'}, - '18' : {'code':'KHM','name':'Khemisset'}, - '19' : {'code':'KHN','name':'Khenifra'}, - '20' : {'code':'KHO','name':'Khouribga'}, - '21' : {'code':'LYN','name':'Laayoune'}, - '22' : {'code':'LAR','name':'Larache'}, - '23' : {'code':'MRK','name':'Marrakech'}, - '24' : {'code':'MKN','name':'Meknes'}, - '25' : {'code':'NAD','name':'Nador'}, - '26' : {'code':'ORZ','name':'Ouarzazate'}, - '27' : {'code':'OUJ','name':'Oujda'}, - '28' : {'code':'RSA','name':'Rabat-Sale'}, - '29' : {'code':'SAF','name':'Safi'}, - '30' : {'code':'SET','name':'Settat'}, - '31' : {'code':'SKA','name':'Sidi Kacem'}, - '32' : {'code':'TGR','name':'Tangier'}, - '33' : {'code':'TAN','name':'Tan-Tan'}, - '34' : {'code':'TAO','name':'Taounate'}, - '35' : {'code':'TRD','name':'Taroudannt'}, - '36' : {'code':'TAT','name':'Tata'}, - '37' : {'code':'TAZ','name':'Taza'}, - '38' : {'code':'TET','name':'Tetouan'}, - '39' : {'code':'TIZ','name':'Tiznit'}, - '40' : {'code':'ADK','name':'Ad Dakhla'}, - '41' : {'code':'BJD','name':'Boujdour'}, - '42' : {'code':'ESM','name':'Es Smara'} - }, - 'MZ':{ - '1' : {'code':'CD','name':'Cabo Delgado'}, - '2' : {'code':'GZ','name':'Gaza'}, - '3' : {'code':'IN','name':'Inhambane'}, - '4' : {'code':'MN','name':'Manica'}, - '5' : {'code':'MC','name':'Maputo (city)'}, - '6' : {'code':'MP','name':'Maputo'}, - '7' : {'code':'NA','name':'Nampula'}, - '8' : {'code':'NI','name':'Niassa'}, - '9' : {'code':'SO','name':'Sofala'}, - '10' : {'code':'TE','name':'Tete'}, - '11' : {'code':'ZA','name':'Zambezia'} - }, - 'MM':{ - '1' : {'code':'AY','name':'Ayeyarwady'}, - '2' : {'code':'BG','name':'Bago'}, - '3' : {'code':'MG','name':'Magway'}, - '4' : {'code':'MD','name':'Mandalay'}, - '5' : {'code':'SG','name':'Sagaing'}, - '6' : {'code':'TN','name':'Tanintharyi'}, - '7' : {'code':'YG','name':'Yangon'}, - '8' : {'code':'CH','name':'Chin State'}, - '9' : {'code':'KC','name':'Kachin State'}, - '10' : {'code':'KH','name':'Kayah State'}, - '11' : {'code':'KN','name':'Kayin State'}, - '12' : {'code':'MN','name':'Mon State'}, - '13' : {'code':'RK','name':'Rakhine State'}, - '14' : {'code':'SH','name':'Shan State'} - }, - 'NA':{ - '1' : {'code':'CA','name':'Caprivi'}, - '2' : {'code':'ER','name':'Erongo'}, - '3' : {'code':'HA','name':'Hardap'}, - '4' : {'code':'KR','name':'Karas'}, - '5' : {'code':'KV','name':'Kavango'}, - '6' : {'code':'KH','name':'Khomas'}, - '7' : {'code':'KU','name':'Kunene'}, - '8' : {'code':'OW','name':'Ohangwena'}, - '9' : {'code':'OK','name':'Omaheke'}, - '10' : {'code':'OT','name':'Omusati'}, - '11' : {'code':'ON','name':'Oshana'}, - '12' : {'code':'OO','name':'Oshikoto'}, - '13' : {'code':'OJ','name':'Otjozondjupa'} - }, - 'NR':{ - '1' : {'code':'AO','name':'Aiwo'}, - '2' : {'code':'AA','name':'Anabar'}, - '3' : {'code':'AT','name':'Anetan'}, - '4' : {'code':'AI','name':'Anibare'}, - '5' : {'code':'BA','name':'Baiti'}, - '6' : {'code':'BO','name':'Boe'}, - '7' : {'code':'BU','name':'Buada'}, - '8' : {'code':'DE','name':'Denigomodu'}, - '9' : {'code':'EW','name':'Ewa'}, - '10' : {'code':'IJ','name':'Ijuw'}, - '11' : {'code':'ME','name':'Meneng'}, - '12' : {'code':'NI','name':'Nibok'}, - '13' : {'code':'UA','name':'Uaboe'}, - '14' : {'code':'YA','name':'Yaren'} - }, - 'NP':{ - '1' : {'code':'BA','name':'Bagmati'}, - '2' : {'code':'BH','name':'Bheri'}, - '3' : {'code':'DH','name':'Dhawalagiri'}, - '4' : {'code':'GA','name':'Gandaki'}, - '5' : {'code':'JA','name':'Janakpur'}, - '6' : {'code':'KA','name':'Karnali'}, - '7' : {'code':'KO','name':'Kosi'}, - '8' : {'code':'LU','name':'Lumbini'}, - '9' : {'code':'MA','name':'Mahakali'}, - '10' : {'code':'ME','name':'Mechi'}, - '11' : {'code':'NA','name':'Narayani'}, - '12' : {'code':'RA','name':'Rapti'}, - '13' : {'code':'SA','name':'Sagarmatha'}, - '14' : {'code':'SE','name':'Seti'} - }, - 'NL':{ - '1' : {'code':'DR','name':'Drenthe'}, - '2' : {'code':'FL','name':'Flevoland'}, - '3' : {'code':'FR','name':'Friesland'}, - '4' : {'code':'GE','name':'Gelderland'}, - '5' : {'code':'GR','name':'Groningen'}, - '6' : {'code':'LI','name':'Limburg'}, - '7' : {'code':'NB','name':'Noord Brabant'}, - '8' : {'code':'NH','name':'Noord Holland'}, - '9' : {'code':'OV','name':'Overijssel'}, - '10' : {'code':'UT','name':'Utrecht'}, - '11' : {'code':'ZE','name':'Zeeland'}, - '12' : {'code':'ZH','name':'Zuid Holland'} - }, - 'AN':{ - '1' : {'code':'BON','name':'Bonaire'}, - '2' : {'code':'CUR','name':'Curaçao'}, - '3' : {'code':'SAB','name':'Saba'}, - '4' : {'code':'SEU','name':'Sint Eustatius'}, - '5' : {'code':'SMA','name':'Sint Maarten'} - }, - 'NC':{ - '1' : {'code':'L','name':'Iles Loyaute'}, - '2' : {'code':'N','name':'Nord'}, - '3' : {'code':'S','name':'Sud'} - }, - 'NZ':{ - '1' : {'code':'AUK','name':'Auckland'}, - '2' : {'code':'BOP','name':'Bay of Plenty'}, - '3' : {'code':'CAN','name':'Canterbury'}, - '4' : {'code':'COR','name':'Coromandel'}, - '5' : {'code':'GIS','name':'Gisborne'}, - '6' : {'code':'FIO','name':'Fiordland'}, - '7' : {'code':'HKB','name':'Hawke\'s Bay'}, - '8' : {'code':'MBH','name':'Marlborough'}, - '9' : {'code':'MWT','name':'Manawatu-Wanganui'}, - '10' : {'code':'MCM','name':'Mt Cook-Mackenzie'}, - '11' : {'code':'NSN','name':'Nelson'}, - '12' : {'code':'NTL','name':'Northland'}, - '13' : {'code':'OTA','name':'Otago'}, - '14' : {'code':'STL','name':'Southland'}, - '15' : {'code':'TKI','name':'Taranaki'}, - '16' : {'code':'WGN','name':'Wellington'}, - '17' : {'code':'WKO','name':'Waikato'}, - '18' : {'code':'WAI','name':'Wairprarapa'}, - '19' : {'code':'WTC','name':'West Coast'} - }, - 'NI':{ - '1' : {'code':'AN','name':'Atlantico Norte'}, - '2' : {'code':'AS','name':'Atlantico Sur'}, - '3' : {'code':'BO','name':'Boaco'}, - '4' : {'code':'CA','name':'Carazo'}, - '5' : {'code':'CI','name':'Chinandega'}, - '6' : {'code':'CO','name':'Chontales'}, - '7' : {'code':'ES','name':'Esteli'}, - '8' : {'code':'GR','name':'Granada'}, - '9' : {'code':'JI','name':'Jinotega'}, - '10' : {'code':'LE','name':'Leon'}, - '11' : {'code':'MD','name':'Madriz'}, - '12' : {'code':'MN','name':'Managua'}, - '13' : {'code':'MS','name':'Masaya'}, - '14' : {'code':'MT','name':'Matagalpa'}, - '15' : {'code':'NS','name':'Nuevo Segovia'}, - '16' : {'code':'RS','name':'Rio San Juan'}, - '17' : {'code':'RI','name':'Rivas'} - }, - 'NE':{ - '1' : {'code':'AG','name':'Agadez'}, - '2' : {'code':'DF','name':'Diffa'}, - '3' : {'code':'DS','name':'Dosso'}, - '4' : {'code':'MA','name':'Maradi'}, - '5' : {'code':'NM','name':'Niamey'}, - '6' : {'code':'TH','name':'Tahoua'}, - '7' : {'code':'TL','name':'Tillaberi'}, - '8' : {'code':'ZD','name':'Zinder'} - }, - 'NG':{ - '1' : {'code':'AB','name':'Abia'}, - '2' : {'code':'CT','name':'Abuja Federal Capital Territory'}, - '3' : {'code':'AD','name':'Adamawa'}, - '4' : {'code':'AK','name':'Akwa Ibom'}, - '5' : {'code':'AN','name':'Anambra'}, - '6' : {'code':'BC','name':'Bauchi'}, - '7' : {'code':'BY','name':'Bayelsa'}, - '8' : {'code':'BN','name':'Benue'}, - '9' : {'code':'BO','name':'Borno'}, - '10' : {'code':'CR','name':'Cross River'}, - '11' : {'code':'DE','name':'Delta'}, - '12' : {'code':'EB','name':'Ebonyi'}, - '13' : {'code':'ED','name':'Edo'}, - '14' : {'code':'EK','name':'Ekiti'}, - '15' : {'code':'EN','name':'Enugu'}, - '16' : {'code':'GO','name':'Gombe'}, - '17' : {'code':'IM','name':'Imo'}, - '18' : {'code':'JI','name':'Jigawa'}, - '19' : {'code':'KD','name':'Kaduna'}, - '20' : {'code':'KN','name':'Kano'}, - '21' : {'code':'KT','name':'Katsina'}, - '22' : {'code':'KE','name':'Kebbi'}, - '23' : {'code':'KO','name':'Kogi'}, - '24' : {'code':'KW','name':'Kwara'}, - '25' : {'code':'LA','name':'Lagos'}, - '26' : {'code':'NA','name':'Nassarawa'}, - '27' : {'code':'NI','name':'Niger'}, - '28' : {'code':'OG','name':'Ogun'}, - '29' : {'code':'ONG','name':'Ondo'}, - '30' : {'code':'OS','name':'Osun'}, - '31' : {'code':'OY','name':'Oyo'}, - '32' : {'code':'PL','name':'Plateau'}, - '33' : {'code':'RI','name':'Rivers'}, - '34' : {'code':'SO','name':'Sokoto'}, - '35' : {'code':'TA','name':'Taraba'}, - '36' : {'code':'YO','name':'Yobe'}, - '37' : {'code':'ZA','name':'Zamfara'} - }, - 'NU':{ - '1' : {'code':'MAK','name':'Makefu'}, - '2' : {'code':'TUA','name':'Tuapa'}, - '3' : {'code':'NAM','name':'Namukulu'}, - '4' : {'code':'HIK','name':'Hikutavake'}, - '5' : {'code':'TOI','name':'Toi'}, - '6' : {'code':'MUT','name':'Mutalau'}, - '7' : {'code':'LAK','name':'Lakepa'}, - '8' : {'code':'LIK','name':'Liku'}, - '9' : {'code':'HAK','name':'Hakupu'}, - '10' : {'code':'VAI','name':'Vaiea'}, - '11' : {'code':'AVA','name':'Avatele'}, - '12' : {'code':'TAM','name':'Tamakautoga'}, - '13' : {'code':'ALO','name':'Alofi South'}, - '14' : {'code':'ALO','name':'Alofi North'} - }, - 'NF':{ - '1' : {'code':'NOR','name':'Norfolk Island'} - }, - 'MP':{ - '1' : {'code':'N','name':'Northern Islands'}, - '2' : {'code':'R','name':'Rota'}, - '3' : {'code':'S','name':'Saipan'}, - '4' : {'code':'T','name':'Tinian'} - }, - 'NO':{ - '1' : {'code':'AK','name':'Akershus'}, - '2' : {'code':'AA','name':'Aust-Agder'}, - '3' : {'code':'BU','name':'Buskerud'}, - '4' : {'code':'FM','name':'Finnmark'}, - '5' : {'code':'HM','name':'Hedmark'}, - '6' : {'code':'HL','name':'Hordaland'}, - '7' : {'code':'MR','name':'Møre og Romsdal'}, - '8' : {'code':'NL','name':'Nordland'}, - '9' : {'code':'NT','name':'Nord-Trøndelag'}, - '10' : {'code':'OP','name':'Oppland'}, - '11' : {'code':'OL','name':'Oslo'}, - '12' : {'code':'RL','name':'Rogaland'}, - '13' : {'code':'SJ','name':'Sogn og Fjordane'}, - '14' : {'code':'ST','name':'Sør-Trøndelag'}, - '15' : {'code':'SV','name':'Svalbard'}, - '16' : {'code':'TM','name':'Telemark'}, - '17' : {'code':'TR','name':'Troms'}, - '18' : {'code':'VA','name':'Vest-Agder'}, - '19' : {'code':'VF','name':'Vestfold'}, - '20' : {'code':'OF','name':'Østfold'} - }, - 'OM':{ - '1' : {'code':'DA','name':'Ad Dakhiliyah'}, - '2' : {'code':'BA','name':'Al Batinah'}, - '3' : {'code':'WU','name':'Al Wusta'}, - '4' : {'code':'SH','name':'Ash Sharqiyah'}, - '5' : {'code':'ZA','name':'Az Zahirah'}, - '6' : {'code':'MA','name':'Masqat'}, - '7' : {'code':'MU','name':'Musandam'}, - '8' : {'code':'ZU','name':'Zufar'} - }, - 'PK':{ - '1' : {'code':'B','name':'Balochistan'}, - '2' : {'code':'T','name':'Federally Administered Tribal Ar'}, - '3' : {'code':'I','name':'Islamabad Capital Territory'}, - '4' : {'code':'N','name':'North-West Frontier'}, - '5' : {'code':'P','name':'Punjab'}, - '6' : {'code':'S','name':'Sindh'} - }, - 'PW':{ - '1' : {'code':'AM','name':'Aimeliik'}, - '2' : {'code':'AR','name':'Airai'}, - '3' : {'code':'AN','name':'Angaur'}, - '4' : {'code':'HA','name':'Hatohobei'}, - '5' : {'code':'KA','name':'Kayangel'}, - '6' : {'code':'KO','name':'Koror'}, - '7' : {'code':'ME','name':'Melekeok'}, - '8' : {'code':'NA','name':'Ngaraard'}, - '9' : {'code':'NG','name':'Ngarchelong'}, - '10' : {'code':'ND','name':'Ngardmau'}, - '11' : {'code':'NT','name':'Ngatpang'}, - '12' : {'code':'NC','name':'Ngchesar'}, - '13' : {'code':'NR','name':'Ngeremlengui'}, - '14' : {'code':'NW','name':'Ngiwal'}, - '15' : {'code':'PE','name':'Peleliu'}, - '16' : {'code':'SO','name':'Sonsorol'} - }, - 'PA':{ - '1' : {'code':'BT','name':'Bocas del Toro'}, - '2' : {'code':'CH','name':'Chiriqui'}, - '3' : {'code':'CC','name':'Cocle'}, - '4' : {'code':'CL','name':'Colon'}, - '5' : {'code':'DA','name':'Darien'}, - '6' : {'code':'HE','name':'Herrera'}, - '7' : {'code':'LS','name':'Los Santos'}, - '8' : {'code':'PA','name':'Panama'}, - '9' : {'code':'SB','name':'San Blas'}, - '10' : {'code':'VG','name':'Veraguas'} - }, - 'PG':{ - '1' : {'code':'BV','name':'Bougainville'}, - '2' : {'code':'CE','name':'Central'}, - '3' : {'code':'CH','name':'Chimbu'}, - '4' : {'code':'EH','name':'Eastern Highlands'}, - '5' : {'code':'EB','name':'East New Britain'}, - '6' : {'code':'ES','name':'East Sepik'}, - '7' : {'code':'EN','name':'Enga'}, - '8' : {'code':'GU','name':'Gulf'}, - '9' : {'code':'MD','name':'Madang'}, - '10' : {'code':'MN','name':'Manus'}, - '11' : {'code':'MB','name':'Milne Bay'}, - '12' : {'code':'MR','name':'Morobe'}, - '13' : {'code':'NC','name':'National Capital'}, - '14' : {'code':'NI','name':'New Ireland'}, - '15' : {'code':'NO','name':'Northern'}, - '16' : {'code':'SA','name':'Sandaun'}, - '17' : {'code':'SH','name':'Southern Highlands'}, - '18' : {'code':'WE','name':'Western'}, - '19' : {'code':'WH','name':'Western Highlands'}, - '20' : {'code':'WB','name':'West New Britain'} - }, - 'PY':{ - '1' : {'code':'AG','name':'Alto Paraguay'}, - '2' : {'code':'AN','name':'Alto Parana'}, - '3' : {'code':'AM','name':'Amambay'}, - '4' : {'code':'AS','name':'Asuncion'}, - '5' : {'code':'BO','name':'Boqueron'}, - '6' : {'code':'CG','name':'Caaguazu'}, - '7' : {'code':'CZ','name':'Caazapa'}, - '8' : {'code':'CN','name':'Canindeyu'}, - '9' : {'code':'CE','name':'Central'}, - '10' : {'code':'CC','name':'Concepcion'}, - '11' : {'code':'CD','name':'Cordillera'}, - '12' : {'code':'GU','name':'Guaira'}, - '13' : {'code':'IT','name':'Itapua'}, - '14' : {'code':'MI','name':'Misiones'}, - '15' : {'code':'NE','name':'Neembucu'}, - '16' : {'code':'PA','name':'Paraguari'}, - '17' : {'code':'PH','name':'Presidente Hayes'}, - '18' : {'code':'SP','name':'San Pedro'} - }, - 'PE':{ - '1' : {'code':'AM','name':'Amazonas'}, - '2' : {'code':'AN','name':'Ancash'}, - '3' : {'code':'AP','name':'Apurimac'}, - '4' : {'code':'AR','name':'Arequipa'}, - '5' : {'code':'AY','name':'Ayacucho'}, - '6' : {'code':'CJ','name':'Cajamarca'}, - '7' : {'code':'CL','name':'Callao'}, - '8' : {'code':'CU','name':'Cusco'}, - '9' : {'code':'HV','name':'Huancavelica'}, - '10' : {'code':'HO','name':'Huanuco'}, - '11' : {'code':'IC','name':'Ica'}, - '12' : {'code':'JU','name':'Junin'}, - '13' : {'code':'LD','name':'La Libertad'}, - '14' : {'code':'LY','name':'Lambayeque'}, - '15' : {'code':'LI','name':'Lima'}, - '16' : {'code':'LO','name':'Loreto'}, - '17' : {'code':'MD','name':'Madre de Dios'}, - '18' : {'code':'MO','name':'Moquegua'}, - '19' : {'code':'PA','name':'Pasco'}, - '20' : {'code':'PI','name':'Piura'}, - '21' : {'code':'PU','name':'Puno'}, - '22' : {'code':'SM','name':'San Martin'}, - '23' : {'code':'TA','name':'Tacna'}, - '24' : {'code':'TU','name':'Tumbes'}, - '25' : {'code':'UC','name':'Ucayali'} - }, - 'PH':{ - '1' : {'code':'ABR','name':'Abra'}, - '2' : {'code':'ANO','name':'Agusan del Norte'}, - '3' : {'code':'ASU','name':'Agusan del Sur'}, - '4' : {'code':'AKL','name':'Aklan'}, - '5' : {'code':'ALB','name':'Albay'}, - '6' : {'code':'ANT','name':'Antique'}, - '7' : {'code':'APY','name':'Apayao'}, - '8' : {'code':'AUR','name':'Aurora'}, - '9' : {'code':'BAS','name':'Basilan'}, - '10' : {'code':'BTA','name':'Bataan'}, - '11' : {'code':'BTE','name':'Batanes'}, - '12' : {'code':'BTG','name':'Batangas'}, - '13' : {'code':'BLR','name':'Biliran'}, - '14' : {'code':'BEN','name':'Benguet'}, - '15' : {'code':'BOL','name':'Bohol'}, - '16' : {'code':'BUK','name':'Bukidnon'}, - '17' : {'code':'BUL','name':'Bulacan'}, - '18' : {'code':'CAG','name':'Cagayan'}, - '19' : {'code':'CNO','name':'Camarines Norte'}, - '20' : {'code':'CSU','name':'Camarines Sur'}, - '21' : {'code':'CAM','name':'Camiguin'}, - '22' : {'code':'CAP','name':'Capiz'}, - '23' : {'code':'CAT','name':'Catanduanes'}, - '24' : {'code':'CAV','name':'Cavite'}, - '25' : {'code':'CEB','name':'Cebu'}, - '26' : {'code':'CMP','name':'Compostela'}, - '27' : {'code':'DNO','name':'Davao del Norte'}, - '28' : {'code':'DSU','name':'Davao del Sur'}, - '29' : {'code':'DOR','name':'Davao Oriental'}, - '30' : {'code':'ESA','name':'Eastern Samar'}, - '31' : {'code':'GUI','name':'Guimaras'}, - '32' : {'code':'IFU','name':'Ifugao'}, - '33' : {'code':'INO','name':'Ilocos Norte'}, - '34' : {'code':'ISU','name':'Ilocos Sur'}, - '35' : {'code':'ILO','name':'Iloilo'}, - '36' : {'code':'ISA','name':'Isabela'}, - '37' : {'code':'KAL','name':'Kalinga'}, - '38' : {'code':'LAG','name':'Laguna'}, - '39' : {'code':'LNO','name':'Lanao del Norte'}, - '40' : {'code':'LSU','name':'Lanao del Sur'}, - '41' : {'code':'UNI','name':'La Union'}, - '42' : {'code':'LEY','name':'Leyte'}, - '43' : {'code':'MAG','name':'Maguindanao'}, - '44' : {'code':'MRN','name':'Marinduque'}, - '45' : {'code':'MSB','name':'Masbate'}, - '46' : {'code':'MIC','name':'Mindoro Occidental'}, - '47' : {'code':'MIR','name':'Mindoro Oriental'}, - '48' : {'code':'MSC','name':'Misamis Occidental'}, - '49' : {'code':'MOR','name':'Misamis Oriental'}, - '50' : {'code':'MOP','name':'Mountain'}, - '51' : {'code':'NOC','name':'Negros Occidental'}, - '52' : {'code':'NOR','name':'Negros Oriental'}, - '53' : {'code':'NCT','name':'North Cotabato'}, - '54' : {'code':'NSM','name':'Northern Samar'}, - '55' : {'code':'NEC','name':'Nueva Ecija'}, - '56' : {'code':'NVZ','name':'Nueva Vizcaya'}, - '57' : {'code':'PLW','name':'Palawan'}, - '58' : {'code':'PMP','name':'Pampanga'}, - '59' : {'code':'PNG','name':'Pangasinan'}, - '60' : {'code':'QZN','name':'Quezon'}, - '61' : {'code':'QRN','name':'Quirino'}, - '62' : {'code':'RIZ','name':'Rizal'}, - '63' : {'code':'ROM','name':'Romblon'}, - '64' : {'code':'SMR','name':'Samar'}, - '65' : {'code':'SRG','name':'Sarangani'}, - '66' : {'code':'SQJ','name':'Siquijor'}, - '67' : {'code':'SRS','name':'Sorsogon'}, - '68' : {'code':'SCO','name':'South Cotabato'}, - '69' : {'code':'SLE','name':'Southern Leyte'}, - '70' : {'code':'SKU','name':'Sultan Kudarat'}, - '71' : {'code':'SLU','name':'Sulu'}, - '72' : {'code':'SNO','name':'Surigao del Norte'}, - '73' : {'code':'SSU','name':'Surigao del Sur'}, - '74' : {'code':'TAR','name':'Tarlac'}, - '75' : {'code':'TAW','name':'Tawi-Tawi'}, - '76' : {'code':'ZBL','name':'Zambales'}, - '77' : {'code':'ZNO','name':'Zamboanga del Norte'}, - '78' : {'code':'ZSU','name':'Zamboanga del Sur'}, - '79' : {'code':'ZSI','name':'Zamboanga Sibugay'} - }, - 'PN':{ - '1' : {'code':'PIT','name':'Pitcairn Island'} - }, - 'PL':{ - '1': {'code':'DO','name':'Dolnośląskie'}, - '2' : {'code':'KP','name':'Kujawsko-Pomorskie'}, - '3': {'code':'LL','name':'Lubelskie'}, - '4': {'code':'LU','name':'Lubuskie'}, - '5': {'code':'LO','name':'Łódzkie'}, - '6': {'code':'ML','name':'Małopolskie'}, - '7' : {'code':'MZ','name':'Mazowieckie'}, - '8' : {'code':'OP','name':'Opolskie'}, - '9' : {'code':'PP','name':'Podkarpackie'}, - '10' : {'code':'PL','name':'Podlaskie'}, - '11' : {'code':'PM','name':'Pomorskie'}, - '12': {'code':'SL','name':'Śląskie'}, - '13': {'code':'SW','name':'Świętokrzyskie'}, - '14': {'code':'WM','name':'Warmińsko-Mazurskie'}, - '15' : {'code':'WP','name':'Wielkopolskie'}, - '16' : {'code':'ZA','name':'Zachodniopomorskie'} - }, - 'PT':{ - '1' : {'code':'AC','name':'Açores'}, - '2' : {'code':'AV','name':'Aveiro'}, - '3' : {'code':'BE','name':'Beja'}, - '4' : {'code':'BR','name':'Braga'}, - '5' : {'code':'BA','name':'Bragança'}, - '6' : {'code':'CB','name':'Castelo Branco'}, - '7' : {'code':'CO','name':'Coimbra'}, - '8' : {'code':'EV','name':'évora'}, - '9' : {'code':'FA','name':'Faro'}, - '10' : {'code':'GU','name':'Guarda'}, - '12' : {'code':'LE','name':'Leiria'}, - '13' : {'code':'LI','name':'Lisboa'}, - '14' : {'code':'ME','name':'Madeira'}, - '15' : {'code':'PO','name':'Portalegre'}, - '16' : {'code':'PR','name':'Porto'}, - '17' : {'code':'SA','name':'Santarém'}, - '18' : {'code':'SE','name':'SetÚbal'}, - '19' : {'code':'VC','name':'Viana do Castelo'}, - '20' : {'code':'VR','name':'Vila Real'}, - '21' : {'code':'VI','name':'Viseu'} - }, - 'PR':{ - '1' : {'code':'A-A','name':'Añasco'}, - '2' : {'code':'ADJ','name':'Adjuntas'}, - '3' : {'code':'AGU','name':'Aguada'}, - '4' : {'code':'AGU','name':'Aguadilla'}, - '5' : {'code':'AGU','name':'Aguas Buenas'}, - '6' : {'code':'AIB','name':'Aibonito'}, - '7' : {'code':'ARE','name':'Arecibo'}, - '8' : {'code':'ARR','name':'Arroyo'}, - '9' : {'code':'BAR','name':'Barceloneta'}, - '10' : {'code':'BAR','name':'Barranquitas'}, - '11' : {'code':'BAY','name':'Bayamón'}, - '12' : {'code':'CAB','name':'Cabo Rojo'}, - '13' : {'code':'CAG','name':'Caguas'}, - '14' : {'code':'CAM','name':'Camuy'}, - '15' : {'code':'CAN','name':'Canóvanas'}, - '16' : {'code':'CAR','name':'Carolina'}, - '17' : {'code':'CAT','name':'Cataño'}, - '18' : {'code':'CAY','name':'Cayey'}, - '19' : {'code':'CEI','name':'Ceiba'}, - '20' : {'code':'CIA','name':'Ciales'}, - '21' : {'code':'CID','name':'Cidra'}, - '22' : {'code':'COA','name':'Coamo'}, - '23' : {'code':'COM','name':'Comerío'}, - '24' : {'code':'COR','name':'Corozal'}, - '25' : {'code':'CUL','name':'Culebra'}, - '26' : {'code':'DOR','name':'Dorado'}, - '27' : {'code':'FAJ','name':'Fajardo'}, - '28' : {'code':'FLO','name':'Florida'}, - '29' : {'code':'GUA','name':'Guayama'}, - '30' : {'code':'GUA','name':'Guayanilla'}, - '31' : {'code':'GUA','name':'Guaynabo'}, - '32' : {'code':'GUR','name':'Gurabo'}, - '33' : {'code':'GU¡','name':'Guánica'}, - '34' : {'code':'HAT','name':'Hatillo'}, - '35' : {'code':'HOR','name':'Hormigueros'}, - '36' : {'code':'HUM','name':'Humacao'}, - '37' : {'code':'ISA','name':'Isabela'}, - '38' : {'code':'JAY','name':'Jayuya'}, - '39' : {'code':'JUA','name':'Juana Díaz'}, - '40' : {'code':'JUN','name':'Juncos'}, - '41' : {'code':'LAJ','name':'Lajas'}, - '42' : {'code':'LAR','name':'Lares'}, - '43' : {'code':'LAS','name':'Las Marías'}, - '44' : {'code':'LAS','name':'Las Piedras'}, - '45' : {'code':'LOÕ','name':'Loíza'}, - '46' : {'code':'LUQ','name':'Luquillo'}, - '47' : {'code':'MAN','name':'Manatí'}, - '48' : {'code':'MAR','name':'Maricao'}, - '49' : {'code':'MAU','name':'Maunabo'}, - '50' : {'code':'MAY','name':'Mayagüez'}, - '51' : {'code':'MOC','name':'Moca'}, - '52' : {'code':'MOR','name':'Morovis'}, - '53' : {'code':'NAG','name':'Naguabo'}, - '54' : {'code':'NAR','name':'Naranjito'}, - '55' : {'code':'ORO','name':'Orocovis'}, - '56' : {'code':'PAT','name':'Patillas'}, - '57' : {'code':'PE-','name':'Peñuelas'}, - '58' : {'code':'PON','name':'Ponce'}, - '59' : {'code':'QUE','name':'Quebradillas'}, - '60' : {'code':'RIN','name':'Rincón'}, - '61' : {'code':'RIO','name':'Rio Grande'}, - '62' : {'code':'SAB','name':'Sabana Grande'}, - '63' : {'code':'SAL','name':'Salinas'}, - '64' : {'code':'SAN','name':'San Germàn'}, - '65' : {'code':'SAN','name':'San Juan'}, - '66' : {'code':'SAN','name':'San Lorenzo'}, - '67' : {'code':'SAN','name':'San Sebastiàn'}, - '68' : {'code':'SAN','name':'Santa Isabel'}, - '69' : {'code':'TOA','name':'Toa Alta'}, - '70' : {'code':'TOA','name':'Toa Baja'}, - '71' : {'code':'TRU','name':'Trujillo Alto'}, - '72' : {'code':'UTU','name':'Utuado'}, - '73' : {'code':'VEG','name':'Vega Alta'}, - '74' : {'code':'VEG','name':'Vega Baja'}, - '75' : {'code':'VIE','name':'Vieques'}, - '76' : {'code':'VIL','name':'Villalba'}, - '77' : {'code':'YAB','name':'Yabucoa'}, - '78' : {'code':'YAU','name':'Yauco'} - }, - 'QA':{ - '1' : {'code':'DW','name':'Ad Dawhah'}, - '2' : {'code':'GW','name':'Al Ghuwayriyah'}, - '3' : {'code':'JM','name':'Al Jumayliyah'}, - '4' : {'code':'KR','name':'Al Khawr'}, - '5' : {'code':'WK','name':'Al Wakrah'}, - '6' : {'code':'RN','name':'Ar Rayyan'}, - '7' : {'code':'JB','name':'Jarayan al Batinah'}, - '8' : {'code':'MS','name':'Madinat ash Shamal'}, - '9' : {'code':'UD','name':'Umm Sa\'id'}, - '10' : {'code':'UL','name':'Umm Salal'} - }, - 'RO':{ - '1' : {'code':'AB','name':'Alba'}, - '2' : {'code':'AR','name':'Arad'}, - '3' : {'code':'AG','name':'Arges'}, - '4' : {'code':'BC','name':'Bacau'}, - '5' : {'code':'BH','name':'Bihor'}, - '6' : {'code':'BN','name':'Bistrita-Nasaud'}, - '7' : {'code':'BT','name':'Botosani'}, - '8' : {'code':'BV','name':'Brasov'}, - '9' : {'code':'BR','name':'Braila'}, - '10' : {'code':'B','name':'Bucuresti'}, - '11' : {'code':'BZ','name':'Buzau'}, - '12' : {'code':'CS','name':'Caras-Severin'}, - '13' : {'code':'CL','name':'Calarasi'}, - '14' : {'code':'CJ','name':'Cluj'}, - '15' : {'code':'CT','name':'Constanta'}, - '16' : {'code':'CV','name':'Covasna'}, - '17' : {'code':'DB','name':'Dimbovita'}, - '18' : {'code':'DJ','name':'Dolj'}, - '19' : {'code':'GL','name':'Galati'}, - '20' : {'code':'GR','name':'Giurgiu'}, - '21' : {'code':'GJ','name':'Gorj'}, - '22' : {'code':'HR','name':'Harghita'}, - '23' : {'code':'HD','name':'Hunedoara'}, - '24' : {'code':'IL','name':'Ialomita'}, - '25' : {'code':'IS','name':'Iasi'}, - '26' : {'code':'IF','name':'Ilfov'}, - '27' : {'code':'MM','name':'Maramures'}, - '28' : {'code':'MH','name':'Mehedinti'}, - '29' : {'code':'MS','name':'Mures'}, - '30' : {'code':'NT','name':'Neamt'}, - '31' : {'code':'OT','name':'Olt'}, - '32' : {'code':'PH','name':'Prahova'}, - '33' : {'code':'SM','name':'Satu-Mare'}, - '34' : {'code':'SJ','name':'Salaj'}, - '35' : {'code':'SB','name':'Sibiu'}, - '36' : {'code':'SV','name':'Suceava'}, - '37' : {'code':'TR','name':'Teleorman'}, - '38' : {'code':'TM','name':'Timis'}, - '39' : {'code':'TL','name':'Tulcea'}, - '40' : {'code':'VS','name':'Vaslui'}, - '41' : {'code':'VL','name':'Valcea'}, - '42' : {'code':'VN','name':'Vrancea'} - }, - 'RU':{ - '1' : {'code':'AB','name':'Abakan'}, - '2' : {'code':'AG','name':'Aginskoye'}, - '3' : {'code':'AN','name':'Anadyr'}, - '4' : {'code':'AR','name':'Arkahangelsk'}, - '5' : {'code':'AS','name':'Astrakhan'}, - '6' : {'code':'BA','name':'Barnaul'}, - '7' : {'code':'BE','name':'Belgorod'}, - '8' : {'code':'BI','name':'Birobidzhan'}, - '9' : {'code':'BL','name':'Blagoveshchensk'}, - '10' : {'code':'BR','name':'Bryansk'}, - '11' : {'code':'CH','name':'Cheboksary'}, - '12' : {'code':'CL','name':'Chelyabinsk'}, - '13' : {'code':'CR','name':'Cherkessk'}, - '14' : {'code':'CI','name':'Chita'}, - '15' : {'code':'DU','name':'Dudinka'}, - '16' : {'code':'EL','name':'Elista'}, - '17' : {'code':'GO','name':'Gomo-Altaysk'}, - '18' : {'code':'GA','name':'Gorno-Altaysk'}, - '19' : {'code':'GR','name':'Groznyy'}, - '20' : {'code':'IR','name':'Irkutsk'}, - '21' : {'code':'IV','name':'Ivanovo'}, - '22' : {'code':'IZ','name':'Izhevsk'}, - '23' : {'code':'KA','name':'Kalinigrad'}, - '24' : {'code':'KL','name':'Kaluga'}, - '25' : {'code':'KS','name':'Kasnodar'}, - '26' : {'code':'KZ','name':'Kazan'}, - '27' : {'code':'KE','name':'Kemerovo'}, - '28' : {'code':'KH','name':'Khabarovsk'}, - '29' : {'code':'KM','name':'Khanty-Mansiysk'}, - '30' : {'code':'KO','name':'Kostroma'}, - '31' : {'code':'KR','name':'Krasnodar'}, - '32' : {'code':'KN','name':'Krasnoyarsk'}, - '33' : {'code':'KU','name':'Kudymkar'}, - '34' : {'code':'KG','name':'Kurgan'}, - '35' : {'code':'KK','name':'Kursk'}, - '36' : {'code':'KY','name':'Kyzyl'}, - '37' : {'code':'LI','name':'Lipetsk'}, - '38' : {'code':'MA','name':'Magadan'}, - '39' : {'code':'MK','name':'Makhachkala'}, - '40' : {'code':'MY','name':'Maykop'}, - '41' : {'code':'MO','name':'Moscow'}, - '42' : {'code':'MU','name':'Murmansk'}, - '43' : {'code':'NA','name':'Nalchik'}, - '44' : {'code':'NR','name':'Naryan Mar'}, - '45' : {'code':'NZ','name':'Nazran'}, - '46' : {'code':'NI','name':'Nizhniy Novgorod'}, - '47' : {'code':'NO','name':'Novgorod'}, - '48' : {'code':'NV','name':'Novosibirsk'}, - '49' : {'code':'OM','name':'Omsk'}, - '50' : {'code':'OR','name':'Orel'}, - '51' : {'code':'OE','name':'Orenburg'}, - '52' : {'code':'PA','name':'Palana'}, - '53' : {'code':'PE','name':'Penza'}, - '54' : {'code':'PR','name':'Perm'}, - '55' : {'code':'PK','name':'Petropavlovsk-Kamchatskiy'}, - '56' : {'code':'PT','name':'Petrozavodsk'}, - '57' : {'code':'PS','name':'Pskov'}, - '58' : {'code':'RO','name':'Rostov-na-Donu'}, - '59' : {'code':'RY','name':'Ryazan'}, - '60' : {'code':'SL','name':'Salekhard'}, - '61' : {'code':'SA','name':'Samara'}, - '62' : {'code':'SR','name':'Saransk'}, - '63' : {'code':'SV','name':'Saratov'}, - '64' : {'code':'SM','name':'Smolensk'}, - '65' : {'code':'SP','name':'St. Petersburg'}, - '66' : {'code':'ST','name':'Stavropol'}, - '67' : {'code':'SY','name':'Syktyvkar'}, - '68' : {'code':'TA','name':'Tambov'}, - '69' : {'code':'TO','name':'Tomsk'}, - '70' : {'code':'TU','name':'Tula'}, - '71' : {'code':'TR','name':'Tura'}, - '72' : {'code':'TV','name':'Tver'}, - '73' : {'code':'TY','name':'Tyumen'}, - '74' : {'code':'UF','name':'Ufa'}, - '75' : {'code':'UL','name':'Ul\'yanovsk'}, - '76' : {'code':'UU','name':'Ulan-Ude'}, - '77' : {'code':'US','name':'Ust\'-Ordynskiy'}, - '78' : {'code':'VL','name':'Vladikavkaz'}, - '79' : {'code':'VA','name':'Vladimir'}, - '80' : {'code':'VV','name':'Vladivostok'}, - '81' : {'code':'VG','name':'Volgograd'}, - '82' : {'code':'VD','name':'Vologda'}, - '83' : {'code':'VO','name':'Voronezh'}, - '84' : {'code':'VY','name':'Vyatka'}, - '85' : {'code':'YA','name':'Yakutsk'}, - '86' : {'code':'YR','name':'Yaroslavl'}, - '87' : {'code':'YE','name':'Yekaterinburg'}, - '88' : {'code':'YO','name':'Yoshkar-Ola'} - }, - 'RW':{ - '1' : {'code':'BU','name':'Butare'}, - '2' : {'code':'BY','name':'Byumba'}, - '3' : {'code':'CY','name':'Cyangugu'}, - '4' : {'code':'GK','name':'Gikongoro'}, - '5' : {'code':'GS','name':'Gisenyi'}, - '6' : {'code':'GT','name':'Gitarama'}, - '7' : {'code':'KG','name':'Kibungo'}, - '8' : {'code':'KY','name':'Kibuye'}, - '9' : {'code':'KR','name':'Kigali Rurale'}, - '10' : {'code':'KV','name':'Kigali-ville'}, - '11' : {'code':'RU','name':'Ruhengeri'}, - '12' : {'code':'UM','name':'Umutara'} - }, - 'KN':{ - '1' : {'code':'CCN','name':'Christ Church Nichola Town'}, - '2' : {'code':'SAS','name':'Saint Anne Sandy Point'}, - '3' : {'code':'SGB','name':'Saint George Basseterre'}, - '4' : {'code':'SGG','name':'Saint George Gingerland'}, - '5' : {'code':'SJW','name':'Saint James Windward'}, - '6' : {'code':'SJC','name':'Saint John Capesterre'}, - '7' : {'code':'SJF','name':'Saint John Figtree'}, - '8' : {'code':'SMC','name':'Saint Mary Cayon'}, - '9' : {'code':'CAP','name':'Saint Paul Capesterre'}, - '10' : {'code':'CHA','name':'Saint Paul Charlestown'}, - '11' : {'code':'SPB','name':'Saint Peter Basseterre'}, - '12' : {'code':'STL','name':'Saint Thomas Lowland'}, - '13' : {'code':'STM','name':'Saint Thomas Middle Island'}, - '14' : {'code':'TPP','name':'Trinity Palmetto Point'} - }, - 'LC':{ - '1' : {'code':'AR','name':'Anse-la-Raye'}, - '2' : {'code':'CA','name':'Castries'}, - '3' : {'code':'CH','name':'Choiseul'}, - '4' : {'code':'DA','name':'Dauphin'}, - '5' : {'code':'DE','name':'Dennery'}, - '6' : {'code':'GI','name':'Gros-Islet'}, - '7' : {'code':'LA','name':'Laborie'}, - '8' : {'code':'MI','name':'Micoud'}, - '9' : {'code':'PR','name':'Praslin'}, - '10' : {'code':'SO','name':'Soufriere'}, - '11' : {'code':'VF','name':'Vieux-Fort'} - }, - 'VC':{ - '1' : {'code':'C','name':'Charlotte'}, - '2' : {'code':'R','name':'Grenadines'}, - '3' : {'code':'A','name':'Saint Andrew'}, - '4' : {'code':'D','name':'Saint David'}, - '5' : {'code':'G','name':'Saint George'}, - '6' : {'code':'P','name':'Saint Patrick'} - }, - 'WS':{ - '1' : {'code':'AN','name':'A\'ana'}, - '2' : {'code':'AI','name':'Aiga-i-le-Tai'}, - '3' : {'code':'AT','name':'Atua'}, - '4' : {'code':'FA','name':'Fa\'asaleleaga'}, - '5' : {'code':'GE','name':'Gaga\'emauga'}, - '6' : {'code':'GF','name':'Gagaifomauga'}, - '7' : {'code':'PA','name':'Palauli'}, - '8' : {'code':'SA','name':'Satupa\'itea'}, - '9' : {'code':'TU','name':'Tuamasaga'}, - '10' : {'code':'VF','name':'Va\'a-o-Fonoti'}, - '11' : {'code':'VS','name':'Vaisigano'} - }, - 'SM':{ - '1' : {'code':'AC','name':'Acquaviva'}, - '2' : {'code':'BM','name':'Borgo Maggiore'}, - '3' : {'code':'CH','name':'Chiesanuova'}, - '4' : {'code':'DO','name':'Domagnano'}, - '5' : {'code':'FA','name':'Faetano'}, - '6' : {'code':'FI','name':'Fiorentino'}, - '7' : {'code':'MO','name':'Montegiardino'}, - '8' : {'code':'SM','name':'Citta di San Marino'}, - '9' : {'code':'SE','name':'Serravalle'} - }, - 'ST':{ - '1' : {'code':'S','name':'Sao Tome'}, - '2' : {'code':'P','name':'Principe'} - }, - 'SA':{ - '1' : {'code':'BH','name':'Al Bahah'}, - '2' : {'code':'HS','name':'Al Hudud ash Shamaliyah'}, - '3' : {'code':'JF','name':'Al Jawf'}, - '4' : {'code':'MD','name':'Al Madinah'}, - '5' : {'code':'QS','name':'Al Qasim'}, - '6' : {'code':'RD','name':'Ar Riyad'}, - '7' : {'code':'AQ','name':'Ash Sharqiyah (Eastern)'}, - '8' : {'code':'AS','name':'\'Asir'}, - '9' : {'code':'HL','name':'Ha\'il'}, - '10' : {'code':'JZ','name':'Jizan'}, - '11' : {'code':'ML','name':'Makkah'}, - '12' : {'code':'NR','name':'Najran'}, - '13' : {'code':'TB','name':'Tabuk'} - }, - 'SN':{ - '1' : {'code':'DA','name':'Dakar'}, - '2' : {'code':'DI','name':'Diourbel'}, - '3' : {'code':'FA','name':'Fatick'}, - '4' : {'code':'KA','name':'Kaolack'}, - '5' : {'code':'KO','name':'Kolda'}, - '6' : {'code':'LO','name':'Louga'}, - '7' : {'code':'MA','name':'Matam'}, - '8' : {'code':'SL','name':'Saint-Louis'}, - '9' : {'code':'TA','name':'Tambacounda'}, - '10' : {'code':'TH','name':'Thies'}, - '11' : {'code':'ZI','name':'Ziguinchor'} - }, - 'SC':{ - '1' : {'code':'AP','name':'Anse aux Pins'}, - '2' : {'code':'AB','name':'Anse Boileau'}, - '3' : {'code':'AE','name':'Anse Etoile'}, - '4' : {'code':'AL','name':'Anse Louis'}, - '5' : {'code':'AR','name':'Anse Royale'}, - '6' : {'code':'BL','name':'Baie Lazare'}, - '7' : {'code':'BS','name':'Baie Sainte Anne'}, - '8' : {'code':'BV','name':'Beau Vallon'}, - '9' : {'code':'BA','name':'Bel Air'}, - '10' : {'code':'BO','name':'Bel Ombre'}, - '11' : {'code':'CA','name':'Cascade'}, - '12' : {'code':'GL','name':'Glacis'}, - '13' : {'code':'GM','name':'Grand\' Anse (on Mahe)'}, - '14' : {'code':'GP','name':'Grand\' Anse (on Praslin)'}, - '15' : {'code':'DG','name':'La Digue'}, - '16' : {'code':'RA','name':'La Riviere Anglaise'}, - '17' : {'code':'MB','name':'Mont Buxton'}, - '18' : {'code':'MF','name':'Mont Fleuri'}, - '19' : {'code':'PL','name':'Plaisance'}, - '20' : {'code':'PR','name':'Pointe La Rue'}, - '21' : {'code':'PG','name':'Port Glaud'}, - '22' : {'code':'SL','name':'Saint Louis'}, - '23' : {'code':'TA','name':'Takamaka'} - }, - 'SL':{ - '1' : {'code':'E','name':'Eastern'}, - '2' : {'code':'N','name':'Northern'}, - '3' : {'code':'S','name':'Southern'}, - '4' : {'code':'W','name':'Western'} - }, - 'SK':{ - '1' : {'code':'BA','name':'Banskobystricky'}, - '2' : {'code':'BR','name':'Bratislavsky'}, - '3' : {'code':'KO','name':'Kosicky'}, - '4' : {'code':'NI','name':'Nitriansky'}, - '5' : {'code':'PR','name':'Presovsky'}, - '6' : {'code':'TC','name':'Trenciansky'}, - '7' : {'code':'TV','name':'Trnavsky'}, - '8' : {'code':'ZI','name':'Zilinsky'} - }, - 'SI':{ - '1' : {'code':'4','name':'Štajerska'}, - '2' : {'code':'2A','name':'Gorenjska'}, - '3' : {'code':'5','name':'Prekmurje'}, - '4' : {'code':'3','name':'Koroška'}, - '5' : {'code':'2B','name':'Notranjska'}, - '6' : {'code':'1','name':'Primorska'}, - '7' : {'code':'2C','name':'Dolenjska'}, - '8' : {'code':'2C','name':'Bela Krajina'} - }, - 'SB':{ - '1' : {'code':'CE','name':'Central'}, - '2' : {'code':'CH','name':'Choiseul'}, - '3' : {'code':'GC','name':'Guadalcanal'}, - '4' : {'code':'HO','name':'Honiara'}, - '5' : {'code':'IS','name':'Isabel'}, - '6' : {'code':'MK','name':'Makira'}, - '7' : {'code':'ML','name':'Malaita'}, - '8' : {'code':'RB','name':'Rennell and Bellona'}, - '9' : {'code':'TM','name':'Temotu'}, - '10' : {'code':'WE','name':'Western'} - }, - 'SO':{ - '1' : {'code':'AW','name':'Awdal'}, - '2' : {'code':'BK','name':'Bakool'}, - '3' : {'code':'BN','name':'Banaadir'}, - '4' : {'code':'BR','name':'Bari'}, - '5' : {'code':'BY','name':'Bay'}, - '6' : {'code':'GA','name':'Galguduud'}, - '7' : {'code':'GE','name':'Gedo'}, - '8' : {'code':'HI','name':'Hiiraan'}, - '9' : {'code':'JD','name':'Jubbada Dhexe'}, - '10' : {'code':'JH','name':'Jubbada Hoose'}, - '11' : {'code':'MU','name':'Mudug'}, - '12' : {'code':'NU','name':'Nugaal'}, - '13' : {'code':'SA','name':'Sanaag'}, - '14' : {'code':'SD','name':'Shabeellaha Dhexe'}, - '15' : {'code':'SH','name':'Shabeellaha Hoose'}, - '16' : {'code':'SL','name':'Sool'}, - '17' : {'code':'TO','name':'Togdheer'}, - '18' : {'code':'WG','name':'Woqooyi Galbeed'} - }, - 'ZA':{ - '1' : {'code':'EC','name':'Eastern Cape'}, - '2' : {'code':'FS','name':'Free State'}, - '3' : {'code':'GT','name':'Gauteng'}, - '4' : {'code':'KN','name':'KwaZulu-Natal'}, - '5' : {'code':'LP','name':'Limpopo'}, - '6' : {'code':'MP','name':'Mpumalanga'}, - '7' : {'code':'NW','name':'North West'}, - '8' : {'code':'NC','name':'Northern Cape'}, - '9' : {'code':'WC','name':'Western Cape'} - }, - 'ES':{ - '1' : {'code':'CA','name':'La Coruña'}, - '2' : {'code':'AL','name':'Álava'}, - '3' : {'code':'AB','name':'Albacete'}, - '4' : {'code':'AC','name':'Alicante'}, - '5' : {'code':'AM','name':'Almeria'}, - '6' : {'code':'AS','name':'Asturias'}, - '7' : {'code':'AV','name':'Ávila'}, - '8' : {'code':'BJ','name':'Badajoz'}, - '9' : {'code':'IB','name':'Baleares'}, - '10' : {'code':'BA','name':'Barcelona'}, - '11' : {'code':'BU','name':'Burgos'}, - '12' : {'code':'CC','name':'Cáceres'}, - '13' : {'code':'CZ','name':'Cádiz'}, - '14' : {'code':'CT','name':'Cantabria'}, - '15' : {'code':'CL','name':'Castellón'}, - '16' : {'code':'CE','name':'Ceuta'}, - '17' : {'code':'CR','name':'Ciudad Real'}, - '18' : {'code':'CD','name':'Córdoba'}, - '19' : {'code':'CU','name':'Cuenca'}, - '20' : {'code':'GI','name':'Gerona'}, - '21' : {'code':'GD','name':'Granada'}, - '22' : {'code':'GJ','name':'Guadalajara'}, - '23' : {'code':'GP','name':'Guipúzcoa'}, - '24' : {'code':'HL','name':'Huelva'}, - '25' : {'code':'HS','name':'Huesca'}, - '26' : {'code':'JN','name':'Jaén'}, - '27' : {'code':'RJ','name':'La Rioja'}, - '28' : {'code':'PM','name':'Las Palmas'}, - '29' : {'code':'LE','name':'León'}, - '30' : {'code':'LL','name':'Lérida'}, - '31' : {'code':'LG','name':'Lugo'}, - '32' : {'code':'MD','name':'Madrid'}, - '33' : {'code':'MA','name':'Málaga'}, - '34' : {'code':'ML','name':'Melilla'}, - '35' : {'code':'MU','name':'Murcia'}, - '36' : {'code':'NV','name':'Navarra'}, - '37' : {'code':'OU','name':'Ourense'}, - '38' : {'code':'PL','name':'Palencia'}, - '39' : {'code':'PO','name':'Pontevedra'}, - '40' : {'code':'SL','name':'Salamanca'}, - '41' : {'code':'SC','name':'Santa Cruz de Tenerife'}, - '42' : {'code':'SG','name':'Segovia'}, - '43' : {'code':'SV','name':'Sevilla'}, - '44' : {'code':'SO','name':'Soria'}, - '45' : {'code':'TA','name':'Tarragona'}, - '46' : {'code':'TE','name':'Teruel'}, - '47' : {'code':'TO','name':'Toledo'}, - '48' : {'code':'VC','name':'Valencia'}, - '49' : {'code':'VD','name':'Valladolid'}, - '50' : {'code':'VZ','name':'Vizcaya'}, - '51' : {'code':'ZM','name':'Zamora'}, - '52' : {'code':'ZR','name':'Zaragoza'} - }, - 'LK':{ - '1' : {'code':'CE','name':'Central'}, - '2' : {'code':'EA','name':'Eastern'}, - '3' : {'code':'NC','name':'North Central'}, - '4' : {'code':'NO','name':'Northern'}, - '5' : {'code':'NW','name':'North Western'}, - '6' : {'code':'SA','name':'Sabaragamuwa'}, - '7' : {'code':'SO','name':'Southern'}, - '8' : {'code':'UV','name':'Uva'}, - '9' : {'code':'WE','name':'Western'} - }, - 'SH':{ - '1' : {'code':'A','name':'Ascension'}, - '2' : {'code':'S','name':'Saint Helena'}, - '3' : {'code':'T','name':'Tristan da Cunha'} - }, - 'PM':{ - '1' : {'code':'P','name':'Saint Pierre'}, - '2' : {'code':'M','name':'Miquelon'} - }, - 'SD':{ - '1' : {'code':'ANL','name':'A\'ali an Nil'}, - '2' : {'code':'BAM','name':'Al Bahr al Ahmar'}, - '3' : {'code':'BRT','name':'Al Buhayrat'}, - '4' : {'code':'JZR','name':'Al Jazirah'}, - '5' : {'code':'KRT','name':'Al Khartum'}, - '6' : {'code':'QDR','name':'Al Qadarif'}, - '7' : {'code':'WDH','name':'Al Wahdah'}, - '8' : {'code':'ANB','name':'An Nil al Abyad'}, - '9' : {'code':'ANZ','name':'An Nil al Azraq'}, - '10' : {'code':'ASH','name':'Ash Shamaliyah'}, - '11' : {'code':'BJA','name':'Bahr al Jabal'}, - '12' : {'code':'GIS','name':'Gharb al Istiwa\'iyah'}, - '13' : {'code':'GBG','name':'Gharb Bahr al Ghazal'}, - '14' : {'code':'GDA','name':'Gharb Darfur'}, - '15' : {'code':'GKU','name':'Gharb Kurdufan'}, - '16' : {'code':'JDA','name':'Janub Darfur'}, - '17' : {'code':'JKU','name':'Janub Kurdufan'}, - '18' : {'code':'JQL','name':'Junqali'}, - '19' : {'code':'KSL','name':'Kassala'}, - '20' : {'code':'NNL','name':'Nahr an Nil'}, - '21' : {'code':'SBG','name':'Shamal Bahr al Ghazal'}, - '22' : {'code':'SDA','name':'Shamal Darfur'}, - '23' : {'code':'SKU','name':'Shamal Kurdufan'}, - '24' : {'code':'SIS','name':'Sharq al Istiwa\'iyah'}, - '25' : {'code':'SNR','name':'Sinnar'}, - '26' : {'code':'WRB','name':'Warab'} - }, - 'SR':{ - '1' : {'code':'BR','name':'Brokopondo'}, - '2' : {'code':'CM','name':'Commewijne'}, - '3' : {'code':'CR','name':'Coronie'}, - '4' : {'code':'MA','name':'Marowijne'}, - '5' : {'code':'NI','name':'Nickerie'}, - '6' : {'code':'PA','name':'Para'}, - '7' : {'code':'PM','name':'Paramaribo'}, - '9' : {'code':'SA','name':'Saramacca'}, - '10' : {'code':'SI','name':'Sipaliwini'}, - '11' : {'code':'WA','name':'Wanica'} - }, - 'SZ':{ - '1' : {'code':'H','name':'Hhohho'}, - '2' : {'code':'L','name':'Lubombo'}, - '3' : {'code':'M','name':'Manzini'}, - '4' : {'code':'S','name':'Shishelweni'} - }, - 'SE':{ - '1' : {'code':'K','name':'Blekinge'}, - '2' : {'code':'W','name':'Dalama'}, - '3' : {'code':'I','name':'Gotland'}, - '4' : {'code':'X','name':'Gävleborg'}, - '5' : {'code':'N','name':'Halland'}, - '6' : {'code':'Z','name':'Jämtland'}, - '7' : {'code':'F','name':'Jönköping'}, - '8' : {'code':'H','name':'Kalmar'}, - '9' : {'code':'G','name':'Kronoberg'}, - '10' : {'code':'BD','name':'Norrbotten'}, - '11' : {'code':'M','name':'Skåne'}, - '12' : {'code':'AB','name':'Stockholm'}, - '13' : {'code':'D','name':'Södermanland'}, - '14' : {'code':'C','name':'Uppsala'}, - '15' : {'code':'S','name':'Värmland'}, - '16' : {'code':'AC','name':'Västerbotten'}, - '17' : {'code':'Y','name':'Västernorrland'}, - '18' : {'code':'U','name':'Västmanland'}, - '19' : {'code':'O','name':'Västra Götaland'}, - '20' : {'code':'T','name':'Örebro'}, - '21' : {'code':'E','name':'Östergötland'} - }, - 'CH':{ - '1' : {'code':'AG','name':'Aargau'}, - '2' : {'code':'AR','name':'Appenzell Ausserrhoden'}, - '3' : {'code':'AI','name':'Appenzell Innerrhoden'}, - '4' : {'code':'BS','name':'Basel-Stadt'}, - '5' : {'code':'BL','name':'Basel-Landschaft'}, - '6' : {'code':'BE','name':'Bern'}, - '7' : {'code':'FR','name':'Fribourg'}, - '8' : {'code':'GE','name':'Genève'}, - '9' : {'code':'GL','name':'Glarus'}, - '10' : {'code':'GR','name':'Graubünden'}, - '11' : {'code':'JU','name':'Jura'}, - '12' : {'code':'LU','name':'Lucerne'}, - '13' : {'code':'NE','name':'Neuchâtel'}, - '14' : {'code':'NW','name':'Nidwalden'}, - '15' : {'code':'OW','name':'Obwalden'}, - '16' : {'code':'SG','name':'St. Gallen'}, - '17' : {'code':'SH','name':'Schaffhausen'}, - '18' : {'code':'SZ','name':'Schwyz'}, - '19' : {'code':'SO','name':'Solothurn'}, - '20' : {'code':'TG','name':'Thurgau'}, - '21' : {'code':'TI','name':'Ticino'}, - '22' : {'code':'UR','name':'Uri'}, - '23' : {'code':'VS','name':'Valais'}, - '24' : {'code':'VD','name':'Vaud'}, - '25' : {'code':'ZG','name':'Zug'}, - '26' : {'code':'ZH','name':'Zürich'} - }, - 'SY':{ - '1' : {'code':'HA','name':'Al Hasakah'}, - '2' : {'code':'LA','name':'Al Ladhiqiyah'}, - '3' : {'code':'QU','name':'Al Qunaytirah'}, - '4' : {'code':'RQ','name':'Ar Raqqah'}, - '5' : {'code':'SU','name':'As Suwayda'}, - '6' : {'code':'DA','name':'Dara'}, - '7' : {'code':'DZ','name':'Dayr az Zawr'}, - '8' : {'code':'DI','name':'Dimashq'}, - '9' : {'code':'HL','name':'Halab'}, - '10' : {'code':'HM','name':'Hamah'}, - '11' : {'code':'HI','name':'Hims'}, - '12' : {'code':'ID','name':'Idlib'}, - '13' : {'code':'RD','name':'Rif Dimashq'}, - '14' : {'code':'TA','name':'Tartus'} - }, - 'TW':{ - '1' : {'code':'CH','name':'Chang-hua'}, - '2' : {'code':'CI','name':'Chia-i'}, - '3' : {'code':'HS','name':'Hsin-chu'}, - '4' : {'code':'HL','name':'Hua-lien'}, - '5' : {'code':'IL','name':'I-lan'}, - '6' : {'code':'KH','name':'Kao-hsiung county'}, - '7' : {'code':'KM','name':'Kin-men'}, - '8' : {'code':'LC','name':'Lien-chiang'}, - '9' : {'code':'ML','name':'Miao-li'}, - '10' : {'code':'NT','name':'Nan-t\'ou'}, - '11' : {'code':'PH','name':'P\'eng-hu'}, - '12' : {'code':'PT','name':'P\'ing-tung'}, - '13' : {'code':'TG','name':'T\'ai-chung'}, - '14' : {'code':'TA','name':'T\'ai-nan'}, - '15' : {'code':'TP','name':'T\'ai-pei county'}, - '16' : {'code':'TT','name':'T\'ai-tung'}, - '17' : {'code':'TY','name':'T\'ao-yuan'}, - '18' : {'code':'YL','name':'Yun-lin'}, - '19' : {'code':'CC','name':'Chia-i city'}, - '20' : {'code':'CL','name':'Chi-lung'}, - '21' : {'code':'HC','name':'Hsin-chu'}, - '22' : {'code':'TH','name':'T\'ai-chung'}, - '23' : {'code':'TN','name':'T\'ai-nan'}, - '24' : {'code':'KC','name':'Kao-hsiung city'}, - '25' : {'code':'TC','name':'T\'ai-pei city'} - }, - 'TJ':{ - '1' : {'code':'GB','name':'Gorno-Badakhstan'}, - '2' : {'code':'KT','name':'Khatlon'}, - '3' : {'code':'SU','name':'Sughd'} - }, - 'TZ':{ - '1' : {'code':'AR','name':'Arusha'}, - '2' : {'code':'DS','name':'Dar es Salaam'}, - '3' : {'code':'DO','name':'Dodoma'}, - '4' : {'code':'IR','name':'Iringa'}, - '5' : {'code':'KA','name':'Kagera'}, - '6' : {'code':'KI','name':'Kigoma'}, - '7' : {'code':'KJ','name':'Kilimanjaro'}, - '8' : {'code':'LN','name':'Lindi'}, - '9' : {'code':'MY','name':'Manyara'}, - '10' : {'code':'MR','name':'Mara'}, - '11' : {'code':'MB','name':'Mbeya'}, - '12' : {'code':'MO','name':'Morogoro'}, - '13' : {'code':'MT','name':'Mtwara'}, - '14' : {'code':'MW','name':'Mwanza'}, - '15' : {'code':'PN','name':'Pemba North'}, - '16' : {'code':'PS','name':'Pemba South'}, - '17' : {'code':'PW','name':'Pwani'}, - '18' : {'code':'RK','name':'Rukwa'}, - '19' : {'code':'RV','name':'Ruvuma'}, - '20' : {'code':'SH','name':'Shinyanga'}, - '21' : {'code':'SI','name':'Singida'}, - '22' : {'code':'TB','name':'Tabora'}, - '23' : {'code':'TN','name':'Tanga'}, - '24' : {'code':'ZC','name':'Zanzibar Central/South'}, - '25' : {'code':'ZN','name':'Zanzibar North'}, - '26' : {'code':'ZU','name':'Zanzibar Urban/West'} - }, - 'TH':{ - '1' : {'code':'Amnat Charoen','name':'Amnat Charoen'}, - '2' : {'code':'Ang Thong','name':'Ang Thong'}, - '3' : {'code':'Ayutthaya','name':'Ayutthaya'}, - '4' : {'code':'Bangkok','name':'Bangkok'}, - '5' : {'code':'Buriram','name':'Buriram'}, - '6' : {'code':'Chachoengsao','name':'Chachoengsao'}, - '7' : {'code':'Chai Nat','name':'Chai Nat'}, - '8' : {'code':'Chaiyaphum','name':'Chaiyaphum'}, - '9' : {'code':'Chanthaburi','name':'Chanthaburi'}, - '10' : {'code':'Chiang Mai','name':'Chiang Mai'}, - '11' : {'code':'Chiang Rai','name':'Chiang Rai'}, - '12' : {'code':'Chon Buri','name':'Chon Buri'}, - '13' : {'code':'Chumphon','name':'Chumphon'}, - '14' : {'code':'Kalasin','name':'Kalasin'}, - '15' : {'code':'Kamphaeng Phet','name':'Kamphaeng Phet'}, - '16' : {'code':'Kanchanaburi','name':'Kanchanaburi'}, - '17' : {'code':'Khon Kaen','name':'Khon Kaen'}, - '18' : {'code':'Krabi','name':'Krabi'}, - '19' : {'code':'Lampang','name':'Lampang'}, - '20' : {'code':'Lamphun','name':'Lamphun'}, - '21' : {'code':'Loei','name':'Loei'}, - '22' : {'code':'Lop Buri','name':'Lop Buri'}, - '23' : {'code':'Mae Hong Son','name':'Mae Hong Son'}, - '24' : {'code':'Maha Sarakham','name':'Maha Sarakham'}, - '25' : {'code':'Mukdahan','name':'Mukdahan'}, - '26' : {'code':'Nakhon Nayok','name':'Nakhon Nayok'}, - '27' : {'code':'Nakhon Pathom','name':'Nakhon Pathom'}, - '28' : {'code':'Nakhon Phanom','name':'Nakhon Phanom'}, - '29' : {'code':'Nakhon Ratchasima','name':'Nakhon Ratchasima'}, - '30' : {'code':'Nakhon Sawan','name':'Nakhon Sawan'}, - '31' : {'code':'Nakhon Si Thammarat','name':'Nakhon Si Thammarat'}, - '32' : {'code':'Nan','name':'Nan'}, - '33' : {'code':'Narathiwat','name':'Narathiwat'}, - '34' : {'code':'Nong Bua Lamphu','name':'Nong Bua Lamphu'}, - '35' : {'code':'Nong Khai','name':'Nong Khai'}, - '36' : {'code':'Nonthaburi','name':'Nonthaburi'}, - '37' : {'code':'Pathum Thani','name':'Pathum Thani'}, - '38' : {'code':'Pattani','name':'Pattani'}, - '39' : {'code':'Phangnga','name':'Phangnga'}, - '40' : {'code':'Phatthalung','name':'Phatthalung'}, - '41' : {'code':'Phayao','name':'Phayao'}, - '42' : {'code':'Phetchabun','name':'Phetchabun'}, - '43' : {'code':'Phetchaburi','name':'Phetchaburi'}, - '44' : {'code':'Phichit','name':'Phichit'}, - '45' : {'code':'Phitsanulok','name':'Phitsanulok'}, - '46' : {'code':'Phrae','name':'Phrae'}, - '47' : {'code':'Phuket','name':'Phuket'}, - '48' : {'code':'Prachin Buri','name':'Prachin Buri'}, - '49' : {'code':'Prachuap Khiri Khan','name':'Prachuap Khiri Khan'}, - '50' : {'code':'Ranong','name':'Ranong'}, - '51' : {'code':'Ratchaburi','name':'Ratchaburi'}, - '52' : {'code':'Rayong','name':'Rayong'}, - '53' : {'code':'Roi Et','name':'Roi Et'}, - '54' : {'code':'Sa Kaeo','name':'Sa Kaeo'}, - '55' : {'code':'Sakon Nakhon','name':'Sakon Nakhon'}, - '56' : {'code':'Samut Prakan','name':'Samut Prakan'}, - '57' : {'code':'Samut Sakhon','name':'Samut Sakhon'}, - '58' : {'code':'Samut Songkhram','name':'Samut Songkhram'}, - '59' : {'code':'Sara Buri','name':'Sara Buri'}, - '60' : {'code':'Satun','name':'Satun'}, - '61' : {'code':'Sing Buri','name':'Sing Buri'}, - '62' : {'code':'Sisaket','name':'Sisaket'}, - '63' : {'code':'Songkhla','name':'Songkhla'}, - '64' : {'code':'Sukhothai','name':'Sukhothai'}, - '65' : {'code':'Suphan Buri','name':'Suphan Buri'}, - '66' : {'code':'Surat Thani','name':'Surat Thani'}, - '67' : {'code':'Surin','name':'Surin'}, - '68' : {'code':'Tak','name':'Tak'}, - '69' : {'code':'Trang','name':'Trang'}, - '70' : {'code':'Trat','name':'Trat'}, - '71' : {'code':'Ubon Ratchathani','name':'Ubon Ratchathani'}, - '72' : {'code':'Udon Thani','name':'Udon Thani'}, - '73' : {'code':'Uthai Thani','name':'Uthai Thani'}, - '74' : {'code':'Uttaradit','name':'Uttaradit'}, - '75' : {'code':'Yala','name':'Yala'}, - '76' : {'code':'Yasothon','name':'Yasothon'} - }, - 'TG':{ - '1' : {'code':'K','name':'Kara'}, - '2' : {'code':'P','name':'Plateaux'}, - '3' : {'code':'S','name':'Savanes'}, - '4' : {'code':'C','name':'Centrale'}, - '5' : {'code':'M','name':'Maritime'} - }, - 'TK':{ - '1' : {'code':'A','name':'Atafu'}, - '2' : {'code':'F','name':'Fakaofo'}, - '3' : {'code':'N','name':'Nukunonu'} - }, - 'TO':{ - '1' : {'code':'H','name':'Ha\'apai'}, - '2' : {'code':'T','name':'Tongatapu'}, - '3' : {'code':'V','name':'Vava\'u'} - }, - 'TT':{ - '1' : {'code':'CT','name':'Couva/Tabaquite/Talparo'}, - '2' : {'code':'DM','name':'Diego Martin'}, - '3' : {'code':'MR','name':'Mayaro/Rio Claro'}, - '4' : {'code':'PD','name':'Penal/Debe'}, - '5' : {'code':'PT','name':'Princes Town'}, - '6' : {'code':'SG','name':'Sangre Grande'}, - '7' : {'code':'SL','name':'San Juan/Laventille'}, - '8' : {'code':'SI','name':'Siparia'}, - '9' : {'code':'TP','name':'Tunapuna/Piarco'}, - '10' : {'code':'PS','name':'Port of Spain'}, - '11' : {'code':'SF','name':'San Fernando'}, - '12' : {'code':'AR','name':'Arima'}, - '13' : {'code':'PF','name':'Point Fortin'}, - '14' : {'code':'CH','name':'Chaguanas'}, - '15' : {'code':'TO','name':'Tobago'} - }, - 'TN':{ - '1' : {'code':'AR','name':'Ariana'}, - '2' : {'code':'BJ','name':'Beja'}, - '3' : {'code':'BA','name':'Ben Arous'}, - '4' : {'code':'BI','name':'Bizerte'}, - '5' : {'code':'GB','name':'Gabes'}, - '6' : {'code':'GF','name':'Gafsa'}, - '7' : {'code':'JE','name':'Jendouba'}, - '8' : {'code':'KR','name':'Kairouan'}, - '9' : {'code':'KS','name':'Kasserine'}, - '10' : {'code':'KB','name':'Kebili'}, - '11' : {'code':'KF','name':'Kef'}, - '12' : {'code':'MH','name':'Mahdia'}, - '13' : {'code':'MN','name':'Manouba'}, - '14' : {'code':'ME','name':'Medenine'}, - '15' : {'code':'MO','name':'Monastir'}, - '16' : {'code':'NA','name':'Nabeul'}, - '17' : {'code':'SF','name':'Sfax'}, - '18' : {'code':'SD','name':'Sidi'}, - '19' : {'code':'SL','name':'Siliana'}, - '20' : {'code':'SO','name':'Sousse'}, - '21' : {'code':'TA','name':'Tataouine'}, - '22' : {'code':'TO','name':'Tozeur'}, - '23' : {'code':'TU','name':'Tunis'}, - '24' : {'code':'ZA','name':'Zaghouan'} - }, - 'TR':{ - '1' : {'code':'ADA','name':'Adana'}, - '2' : {'code':'ADI','name':'Adiyaman'}, - '3' : {'code':'AFY','name':'Afyonkarahisar'}, - '4' : {'code':'AGR','name':'Agri'}, - '5' : {'code':'AKS','name':'Aksaray'}, - '6' : {'code':'AMA','name':'Amasya'}, - '7' : {'code':'ANK','name':'Ankara'}, - '8' : {'code':'ANT','name':'Antalya'}, - '9' : {'code':'ARD','name':'Ardahan'}, - '10' : {'code':'ART','name':'Artvin'}, - '11' : {'code':'AYI','name':'Aydin'}, - '12' : {'code':'BAL','name':'Balikesir'}, - '13' : {'code':'BAR','name':'Bartin'}, - '14' : {'code':'BAT','name':'Batman'}, - '15' : {'code':'BAY','name':'Bayburt'}, - '16' : {'code':'BIL','name':'Bilecik'}, - '17' : {'code':'BIN','name':'Bingol'}, - '18' : {'code':'BIT','name':'Bitlis'}, - '19' : {'code':'BOL','name':'Bolu'}, - '20' : {'code':'BRD','name':'Burdur'}, - '21' : {'code':'BRS','name':'Bursa'}, - '22' : {'code':'CKL','name':'Canakkale'}, - '23' : {'code':'CKR','name':'Cankiri'}, - '24' : {'code':'COR','name':'Corum'}, - '25' : {'code':'DEN','name':'Denizli'}, - '26' : {'code':'DIY','name':'Diyarbakir'}, - '27' : {'code':'DUZ','name':'Duzce'}, - '28' : {'code':'EDI','name':'Edirne'}, - '29' : {'code':'ELA','name':'Elazig'}, - '30' : {'code':'EZC','name':'Erzincan'}, - '31' : {'code':'EZR','name':'Erzurum'}, - '32' : {'code':'ESK','name':'Eskisehir'}, - '33' : {'code':'GAZ','name':'Gaziantep'}, - '34' : {'code':'GIR','name':'Giresun'}, - '35' : {'code':'GMS','name':'Gumushane'}, - '36' : {'code':'HKR','name':'Hakkari'}, - '37' : {'code':'HTY','name':'Hatay'}, - '38' : {'code':'IGD','name':'Igdir'}, - '39' : {'code':'ISP','name':'Isparta'}, - '40' : {'code':'IST','name':'Istanbul'}, - '41' : {'code':'IZM','name':'Izmir'}, - '42' : {'code':'KAH','name':'Kahramanmaras'}, - '43' : {'code':'KRB','name':'Karabuk'}, - '44' : {'code':'KRM','name':'Karaman'}, - '45' : {'code':'KRS','name':'Kars'}, - '46' : {'code':'KAS','name':'Kastamonu'}, - '47' : {'code':'KAY','name':'Kayseri'}, - '48' : {'code':'KLS','name':'Kilis'}, - '49' : {'code':'KRK','name':'Kirikkale'}, - '50' : {'code':'KLR','name':'Kirklareli'}, - '51' : {'code':'KRH','name':'Kirsehir'}, - '52' : {'code':'KOC','name':'Kocaeli'}, - '53' : {'code':'KON','name':'Konya'}, - '54' : {'code':'KUT','name':'Kutahya'}, - '55' : {'code':'MAL','name':'Malatya'}, - '56' : {'code':'MAN','name':'Manisa'}, - '57' : {'code':'MAR','name':'Mardin'}, - '58' : {'code':'MER','name':'Mersin'}, - '59' : {'code':'MUG','name':'Mugla'}, - '60' : {'code':'MUS','name':'Mus'}, - '61' : {'code':'NEV','name':'Nevsehir'}, - '62' : {'code':'NIG','name':'Nigde'}, - '63' : {'code':'ORD','name':'Ordu'}, - '64' : {'code':'OSM','name':'Osmaniye'}, - '65' : {'code':'RIZ','name':'Rize'}, - '66' : {'code':'SAK','name':'Sakarya'}, - '67' : {'code':'SAM','name':'Samsun'}, - '68' : {'code':'SAN','name':'Sanliurfa'}, - '69' : {'code':'SII','name':'Siirt'}, - '70' : {'code':'SIN','name':'Sinop'}, - '71' : {'code':'SIR','name':'Sirnak'}, - '72' : {'code':'SIV','name':'Sivas'}, - '73' : {'code':'TEL','name':'Tekirdag'}, - '74' : {'code':'TOK','name':'Tokat'}, - '75' : {'code':'TRA','name':'Trabzon'}, - '76' : {'code':'TUN','name':'Tunceli'}, - '77' : {'code':'USK','name':'Usak'}, - '78' : {'code':'VAN','name':'Van'}, - '79' : {'code':'YAL','name':'Yalova'}, - '80' : {'code':'YOZ','name':'Yozgat'}, - '81' : {'code':'ZON','name':'Zonguldak'} - }, - 'TM':{ - '1' : {'code':'A','name':'Ahal Welayaty'}, - '2' : {'code':'B','name':'Balkan Welayaty'}, - '3' : {'code':'D','name':'Dashhowuz Welayaty'}, - '4' : {'code':'L','name':'Lebap Welayaty'}, - '5' : {'code':'M','name':'Mary Welayaty'} - }, - 'TC':{ - '1' : {'code':'AC','name':'Ambergris Cays'}, - '2' : {'code':'DC','name':'Dellis Cay'}, - '3' : {'code':'FC','name':'French Cay'}, - '4' : {'code':'LW','name':'Little Water Cay'}, - '5' : {'code':'RC','name':'Parrot Cay'}, - '6' : {'code':'PN','name':'Pine Cay'}, - '7' : {'code':'SL','name':'Salt Cay'}, - '8' : {'code':'GT','name':'Grand Turk'}, - '9' : {'code':'SC','name':'South Caicos'}, - '10' : {'code':'EC','name':'East Caicos'}, - '11' : {'code':'MC','name':'Middle Caicos'}, - '12' : {'code':'NC','name':'North Caicos'}, - '13' : {'code':'PR','name':'Providenciales'}, - '14' : {'code':'WC','name':'West Caicos'} - }, - 'TV':{ - '1' : {'code':'NMG','name':'Nanumanga'}, - '2' : {'code':'NLK','name':'Niulakita'}, - '3' : {'code':'NTO','name':'Niutao'}, - '4' : {'code':'FUN','name':'Funafuti'}, - '5' : {'code':'NME','name':'Nanumea'}, - '6' : {'code':'NUI','name':'Nui'}, - '7' : {'code':'NFT','name':'Nukufetau'}, - '8' : {'code':'NLL','name':'Nukulaelae'}, - '9' : {'code':'VAI','name':'Vaitupu'} - }, - 'UG':{ - '1' : {'code':'KAL','name':'Kalangala'}, - '2' : {'code':'KMP','name':'Kampala'}, - '3' : {'code':'KAY','name':'Kayunga'}, - '4' : {'code':'KIB','name':'Kiboga'}, - '5' : {'code':'LUW','name':'Luwero'}, - '6' : {'code':'MAS','name':'Masaka'}, - '7' : {'code':'MPI','name':'Mpigi'}, - '8' : {'code':'MUB','name':'Mubende'}, - '9' : {'code':'MUK','name':'Mukono'}, - '10' : {'code':'NKS','name':'Nakasongola'}, - '11' : {'code':'RAK','name':'Rakai'}, - '12' : {'code':'SEM','name':'Sembabule'}, - '13' : {'code':'WAK','name':'Wakiso'}, - '14' : {'code':'BUG','name':'Bugiri'}, - '15' : {'code':'BUS','name':'Busia'}, - '16' : {'code':'IGA','name':'Iganga'}, - '17' : {'code':'JIN','name':'Jinja'}, - '18' : {'code':'KAB','name':'Kaberamaido'}, - '19' : {'code':'KML','name':'Kamuli'}, - '20' : {'code':'KPC','name':'Kapchorwa'}, - '21' : {'code':'KTK','name':'Katakwi'}, - '22' : {'code':'KUM','name':'Kumi'}, - '23' : {'code':'MAY','name':'Mayuge'}, - '24' : {'code':'MBA','name':'Mbale'}, - '25' : {'code':'PAL','name':'Pallisa'}, - '26' : {'code':'SIR','name':'Sironko'}, - '27' : {'code':'SOR','name':'Soroti'}, - '28' : {'code':'TOR','name':'Tororo'}, - '29' : {'code':'ADJ','name':'Adjumani'}, - '30' : {'code':'APC','name':'Apac'}, - '31' : {'code':'ARU','name':'Arua'}, - '32' : {'code':'GUL','name':'Gulu'}, - '33' : {'code':'KIT','name':'Kitgum'}, - '34' : {'code':'KOT','name':'Kotido'}, - '35' : {'code':'LIR','name':'Lira'}, - '36' : {'code':'MRT','name':'Moroto'}, - '37' : {'code':'MOY','name':'Moyo'}, - '38' : {'code':'NAK','name':'Nakapiripirit'}, - '39' : {'code':'NEB','name':'Nebbi'}, - '40' : {'code':'PAD','name':'Pader'}, - '41' : {'code':'YUM','name':'Yumbe'}, - '42' : {'code':'BUN','name':'Bundibugyo'}, - '43' : {'code':'BSH','name':'Bushenyi'}, - '44' : {'code':'HOI','name':'Hoima'}, - '45' : {'code':'KBL','name':'Kabale'}, - '46' : {'code':'KAR','name':'Kabarole'}, - '47' : {'code':'KAM','name':'Kamwenge'}, - '48' : {'code':'KAN','name':'Kanungu'}, - '49' : {'code':'KAS','name':'Kasese'}, - '50' : {'code':'KBA','name':'Kibaale'}, - '51' : {'code':'KIS','name':'Kisoro'}, - '52' : {'code':'KYE','name':'Kyenjojo'}, - '53' : {'code':'MSN','name':'Masindi'}, - '54' : {'code':'MBR','name':'Mbarara'}, - '55' : {'code':'NTU','name':'Ntungamo'}, - '56' : {'code':'RUK','name':'Rukungiri'} - }, - 'UA':{ - '1' : {'code':'CK','name':'Cherkasy'}, - '2' : {'code':'CH','name':'Chernihiv'}, - '3' : {'code':'CV','name':'Chernivtsi'}, - '4' : {'code':'CR','name':'Crimea'}, - '5' : {'code':'DN','name':'Dnipropetrovs\'k'}, - '6' : {'code':'DO','name':'Donets\'k'}, - '7' : {'code':'IV','name':'Ivano-Frankivs\'k'}, - '8' : {'code':'KL','name':'Kharkiv Kherson'}, - '9' : {'code':'KM','name':'Khmel\'nyts\'kyy'}, - '10' : {'code':'KR','name':'Kirovohrad'}, - '11' : {'code':'KV','name':'Kiev'}, - '12' : {'code':'KY','name':'Kyyiv'}, - '13' : {'code':'LU','name':'Luhans\'k'}, - '14' : {'code':'LV','name':'L\'viv'}, - '15' : {'code':'MY','name':'Mykolayiv'}, - '16' : {'code':'OD','name':'Odesa'}, - '17' : {'code':'PO','name':'Poltava'}, - '18' : {'code':'RI','name':'Rivne'}, - '19' : {'code':'SE','name':'Sevastopol'}, - '20' : {'code':'SU','name':'Sumy'}, - '21' : {'code':'TE','name':'Ternopil\''}, - '22' : {'code':'VI','name':'Vinnytsya'}, - '23' : {'code':'VO','name':'Volyn\''}, - '24' : {'code':'ZK','name':'Zakarpattya'}, - '25' : {'code':'ZA','name':'Zaporizhzhya'}, - '26' : {'code':'ZH','name':'Zhytomyr'} - }, - 'AE':{ - '1' : {'code':'AZ','name':'Abu Zaby'}, - '2' : {'code':'AJ','name':'\'Ajman'}, - '3' : {'code':'FU','name':'Al Fujayrah'}, - '4' : {'code':'SH','name':'Ash Shariqah'}, - '5' : {'code':'DU','name':'Dubayy'}, - '6' : {'code':'RK','name':'R\'as al Khaymah'}, - '7' : {'code':'UQ','name':'Umm al Qaywayn'} - }, - 'GB':{ - '1' : {'code':'ABN','name':'Aberdeen'}, - '2' : {'code':'ABNS','name':'Aberdeenshire'}, - '3' : {'code':'ANG','name':'Anglesey'}, - '4' : {'code':'AGS','name':'Angus'}, - '5' : {'code':'ARY','name':'Argyll and Bute'}, - '6' : {'code':'BEDS','name':'Bedfordshire'}, - '7' : {'code':'BERKS','name':'Berkshire'}, - '8' : {'code':'BLA','name':'Blaenau Gwent'}, - '9' : {'code':'BRI','name':'Bridgend'}, - '10' : {'code':'BSTL','name':'Bristol'}, - '11' : {'code':'BUCKS','name':'Buckinghamshire'}, - '12' : {'code':'CAE','name':'Caerphilly'}, - '13' : {'code':'CAMBS','name':'Cambridgeshire'}, - '14' : {'code':'CDF','name':'Cardiff'}, - '15' : {'code':'CARM','name':'Carmarthenshire'}, - '16' : {'code':'CDGN','name':'Ceredigion'}, - '17' : {'code':'CHES','name':'Cheshire'}, - '18' : {'code':'CLACK','name':'Clackmannanshire'}, - '19' : {'code':'CON','name':'Conwy'}, - '20' : {'code':'CORN','name':'Cornwall'}, - '21' : {'code':'DNBG','name':'Denbighshire'}, - '22' : {'code':'DERBY','name':'Derbyshire'}, - '23' : {'code':'DVN','name':'Devon'}, - '24' : {'code':'DOR','name':'Dorset'}, - '25' : {'code':'DGL','name':'Dumfries and Galloway'}, - '26' : {'code':'DUND','name':'Dundee'}, - '27' : {'code':'DHM','name':'Durham'}, - '28' : {'code':'ARYE','name':'East Ayrshire'}, - '29' : {'code':'DUNBE','name':'East Dunbartonshire'}, - '30' : {'code':'LOTE','name':'East Lothian'}, - '31' : {'code':'RENE','name':'East Renfrewshire'}, - '32' : {'code':'ERYS','name':'East Riding of Yorkshire'}, - '33' : {'code':'SXE','name':'East Sussex'}, - '34' : {'code':'EDIN','name':'Edinburgh'}, - '35' : {'code':'ESX','name':'Essex'}, - '36' : {'code':'FALK','name':'Falkirk'}, - '37' : {'code':'FFE','name':'Fife'}, - '38' : {'code':'FLINT','name':'Flintshire'}, - '39' : {'code':'GLAS','name':'Glasgow'}, - '40' : {'code':'GLOS','name':'Gloucestershire'}, - '41' : {'code':'LDN','name':'Greater London'}, - '42' : {'code':'MCH','name':'Greater Manchester'}, - '43' : {'code':'GDD','name':'Gwynedd'}, - '44' : {'code':'HANTS','name':'Hampshire'}, - '45' : {'code':'HWR','name':'Herefordshire'}, - '46' : {'code':'HERTS','name':'Hertfordshire'}, - '47' : {'code':'HLD','name':'Highlands'}, - '48' : {'code':'IVER','name':'Inverclyde'}, - '49' : {'code':'IOW','name':'Isle of Wight'}, - '50' : {'code':'KNT','name':'Kent'}, - '51' : {'code':'LANCS','name':'Lancashire'}, - '52' : {'code':'LEICS','name':'Leicestershire'}, - '53' : {'code':'LINCS','name':'Lincolnshire'}, - '54' : {'code':'MSY','name':'Merseyside'}, - '55' : {'code':'MERT','name':'Merthyr Tydfil'}, - '56' : {'code':'MLOT','name':'Midlothian'}, - '57' : {'code':'MMOUTH','name':'Monmouthshire'}, - '58' : {'code':'MORAY','name':'Moray'}, - '59' : {'code':'NPRTAL','name':'Neath Port Talbot'}, - '60' : {'code':'NEWPT','name':'Newport'}, - '61' : {'code':'NOR','name':'Norfolk'}, - '62' : {'code':'ARYN','name':'North Ayrshire'}, - '63' : {'code':'LANN','name':'North Lanarkshire'}, - '64' : {'code':'YSN','name':'North Yorkshire'}, - '65' : {'code':'NHM','name':'Northamptonshire'}, - '66' : {'code':'NLD','name':'Northumberland'}, - '67' : {'code':'NOT','name':'Nottinghamshire'}, - '68' : {'code':'ORK','name':'Orkney Islands'}, - '69' : {'code':'OFE','name':'Oxfordshire'}, - '70' : {'code':'PEM','name':'Pembrokeshire'}, - '71' : {'code':'PERTH','name':'Perth and Kinross'}, - '72' : {'code':'PWS','name':'Powys'}, - '73' : {'code':'REN','name':'Renfrewshire'}, - '74' : {'code':'RHON','name':'Rhondda Cynon Taff'}, - '75' : {'code':'RUT','name':'Rutland'}, - '76' : {'code':'BOR','name':'Scottish Borders'}, - '77' : {'code':'SHET','name':'Shetland Islands'}, - '78' : {'code':'SPE','name':'Shropshire'}, - '79' : {'code':'SOM','name':'Somerset'}, - '80' : {'code':'ARYS','name':'South Ayrshire'}, - '81' : {'code':'LANS','name':'South Lanarkshire'}, - '82' : {'code':'YSS','name':'South Yorkshire'}, - '83' : {'code':'SFD','name':'Staffordshire'}, - '84' : {'code':'STIR','name':'Stirling'}, - '85' : {'code':'SFK','name':'Suffolk'}, - '86' : {'code':'SRY','name':'Surrey'}, - '87' : {'code':'SWAN','name':'Swansea'}, - '88' : {'code':'TORF','name':'Torfaen'}, - '89' : {'code':'TWR','name':'Tyne and Wear'}, - '90' : {'code':'VGLAM','name':'Vale of Glamorgan'}, - '91' : {'code':'WARKS','name':'Warwickshire'}, - '92' : {'code':'WDUN','name':'West Dunbartonshire'}, - '93' : {'code':'WLOT','name':'West Lothian'}, - '94' : {'code':'WMD','name':'West Midlands'}, - '95' : {'code':'SXW','name':'West Sussex'}, - '96' : {'code':'YSW','name':'West Yorkshire'}, - '97' : {'code':'WIL','name':'Western Isles'}, - '98' : {'code':'WLT','name':'Wiltshire'}, - '99' : {'code':'WORCS','name':'Worcestershire'}, - '100' : {'code':'WRX','name':'Wrexham'} - }, - 'US':{ - '1' : {'code':'AL','name':'Alabama'}, - '2' : {'code':'AK','name':'Alaska'}, - '3' : {'code':'AS','name':'American Samoa'}, - '4' : {'code':'AZ','name':'Arizona'}, - '5' : {'code':'AR','name':'Arkansas'}, - '6' : {'code':'AF','name':'Armed Forces Africa'}, - '7' : {'code':'AA','name':'Armed Forces Americas'}, - '8' : {'code':'AC','name':'Armed Forces Canada'}, - '9' : {'code':'AE','name':'Armed Forces Europe'}, - '10' : {'code':'AM','name':'Armed Forces Middle East'}, - '11' : {'code':'AP','name':'Armed Forces Pacific'}, - '12' : {'code':'CA','name':'California'}, - '13' : {'code':'CO','name':'Colorado'}, - '14' : {'code':'CT','name':'Connecticut'}, - '15' : {'code':'DE','name':'Delaware'}, - '16' : {'code':'DC','name':'District of Columbia'}, - '17' : {'code':'FM','name':'Federated States Of Micronesia'}, - '18' : {'code':'FL','name':'Florida'}, - '19' : {'code':'GA','name':'Georgia'}, - '20' : {'code':'GU','name':'Guam'}, - '21' : {'code':'HI','name':'Hawaii'}, - '22' : {'code':'ID','name':'Idaho'}, - '23' : {'code':'IL','name':'Illinois'}, - '24' : {'code':'IN','name':'Indiana'}, - '25' : {'code':'IA','name':'Iowa'}, - '26' : {'code':'KS','name':'Kansas'}, - '27' : {'code':'KY','name':'Kentucky'}, - '28' : {'code':'LA','name':'Louisiana'}, - '29' : {'code':'ME','name':'Maine'}, - '30' : {'code':'MH','name':'Marshall Islands'}, - '31' : {'code':'MD','name':'Maryland'}, - '32' : {'code':'MA','name':'Massachusetts'}, - '33' : {'code':'MI','name':'Michigan'}, - '34' : {'code':'MN','name':'Minnesota'}, - '35' : {'code':'MS','name':'Mississippi'}, - '36' : {'code':'MO','name':'Missouri'}, - '37' : {'code':'MT','name':'Montana'}, - '38' : {'code':'NE','name':'Nebraska'}, - '39' : {'code':'NV','name':'Nevada'}, - '40' : {'code':'NH','name':'New Hampshire'}, - '41' : {'code':'NJ','name':'New Jersey'}, - '42' : {'code':'NM','name':'New Mexico'}, - '43' : {'code':'NY','name':'New York'}, - '44' : {'code':'NC','name':'North Carolina'}, - '45' : {'code':'ND','name':'North Dakota'}, - '46' : {'code':'MP','name':'Northern Mariana Islands'}, - '47' : {'code':'OH','name':'Ohio'}, - '48' : {'code':'OK','name':'Oklahoma'}, - '49' : {'code':'OR','name':'Oregon'}, - '50' : {'code':'PW','name':'Palau'}, - '51' : {'code':'PA','name':'Pennsylvania'}, - '52' : {'code':'PR','name':'Puerto Rico'}, - '53' : {'code':'RI','name':'Rhode Island'}, - '54' : {'code':'SC','name':'South Carolina'}, - '55' : {'code':'SD','name':'South Dakota'}, - '56' : {'code':'TN','name':'Tennessee'}, - '57' : {'code':'TX','name':'Texas'}, - '58' : {'code':'UT','name':'Utah'}, - '59' : {'code':'VT','name':'Vermont'}, - '60' : {'code':'VI','name':'Virgin Islands'}, - '61' : {'code':'VA','name':'Virginia'}, - '62' : {'code':'WA','name':'Washington'}, - '63' : {'code':'WV','name':'West Virginia'}, - '64' : {'code':'WI','name':'Wisconsin'}, - '65' : {'code':'WY','name':'Wyoming'} - }, - 'UM':{ - '1' : {'code':'BI','name':'Baker Island'}, - '2' : {'code':'HI','name':'Howland Island'}, - '3' : {'code':'JI','name':'Jarvis Island'}, - '4' : {'code':'JA','name':'Johnston Atoll'}, - '5' : {'code':'KR','name':'Kingman Reef'}, - '6' : {'code':'MA','name':'Midway Atoll'}, - '7' : {'code':'NI','name':'Navassa Island'}, - '8' : {'code':'PA','name':'Palmyra Atoll'}, - '9' : {'code':'WI','name':'Wake Island'} - }, - 'UY':{ - '1' : {'code':'AR','name':'Artigas'}, - '2' : {'code':'CA','name':'Canelones'}, - '3' : {'code':'CL','name':'Cerro Largo'}, - '4' : {'code':'CO','name':'Colonia'}, - '5' : {'code':'DU','name':'Durazno'}, - '6' : {'code':'FS','name':'Flores'}, - '7' : {'code':'FA','name':'Florida'}, - '8' : {'code':'LA','name':'Lavalleja'}, - '9' : {'code':'MA','name':'Maldonado'}, - '10' : {'code':'MO','name':'Montevideo'}, - '11' : {'code':'PA','name':'Paysandu'}, - '12' : {'code':'RN','name':'Rio Negro'}, - '13' : {'code':'RV','name':'Rivera'}, - '14' : {'code':'RO','name':'Rocha'}, - '15' : {'code':'SL','name':'Salto'}, - '16' : {'code':'SJ','name':'San Jose'}, - '17' : {'code':'SO','name':'Soriano'}, - '18' : {'code':'TA','name':'Tacuarembo'}, - '19' : {'code':'TT','name':'Treinta y Tres'} - }, - 'UZ':{ - '1' : {'code':'AN','name':'Andijon'}, - '2' : {'code':'BU','name':'Buxoro'}, - '3' : {'code':'FA','name':'Farg\'ona'}, - '4' : {'code':'JI','name':'Jizzax'}, - '5' : {'code':'NG','name':'Namangan'}, - '6' : {'code':'NW','name':'Navoiy'}, - '7' : {'code':'QA','name':'Qashqadaryo'}, - '8' : {'code':'QR','name':'Qoraqalpog\'iston Republikasi'}, - '9' : {'code':'SA','name':'Samarqand'}, - '10' : {'code':'SI','name':'Sirdaryo'}, - '11' : {'code':'SU','name':'Surxondaryo'}, - '12' : {'code':'TK','name':'Toshkent City'}, - '13' : {'code':'TO','name':'Toshkent Region'}, - '14' : {'code':'XO','name':'Xorazm'} - }, - 'VU':{ - '1' : {'code':'MA','name':'Malampa'}, - '2' : {'code':'PE','name':'Penama'}, - '3' : {'code':'SA','name':'Sanma'}, - '4' : {'code':'SH','name':'Shefa'}, - '5' : {'code':'TA','name':'Tafea'}, - '6' : {'code':'TO','name':'Torba'} - }, - 'VE':{ - '1' : {'code':'AM','name':'Amazonas'}, - '2' : {'code':'AN','name':'Anzoategui'}, - '3' : {'code':'AP','name':'Apure'}, - '4' : {'code':'AR','name':'Aragua'}, - '5' : {'code':'BA','name':'Barinas'}, - '6' : {'code':'BO','name':'Bolivar'}, - '7' : {'code':'CA','name':'Carabobo'}, - '8' : {'code':'CO','name':'Cojedes'}, - '9' : {'code':'DA','name':'Delta Amacuro'}, - '10' : {'code':'DF','name':'Dependencias Federales'}, - '11' : {'code':'DI','name':'Distrito Federal'}, - '12' : {'code':'FA','name':'Falcon'}, - '13' : {'code':'GU','name':'Guarico'}, - '14' : {'code':'LA','name':'Lara'}, - '15' : {'code':'ME','name':'Merida'}, - '16' : {'code':'MI','name':'Miranda'}, - '17' : {'code':'MO','name':'Monagas'}, - '18' : {'code':'NE','name':'Nueva Esparta'}, - '19' : {'code':'PO','name':'Portuguesa'}, - '20' : {'code':'SU','name':'Sucre'}, - '21' : {'code':'TA','name':'Tachira'}, - '22' : {'code':'TR','name':'Trujillo'}, - '23' : {'code':'VA','name':'Vargas'}, - '24' : {'code':'YA','name':'Yaracuy'}, - '25' : {'code':'ZU','name':'Zulia'} - }, - 'VN':{ - '1' : {'code':'AG','name':'An Giang'}, - '2' : {'code':'BG','name':'Bac Giang'}, - '3' : {'code':'BK','name':'Bac Kan'}, - '4' : {'code':'BL','name':'Bac Lieu'}, - '5' : {'code':'BC','name':'Bac Ninh'}, - '6' : {'code':'BR','name':'Ba Ria-Vung Tau'}, - '7' : {'code':'BN','name':'Ben Tre'}, - '8' : {'code':'BH','name':'Binh Dinh'}, - '9' : {'code':'BU','name':'Binh Duong'}, - '10' : {'code':'BP','name':'Binh Phuoc'}, - '11' : {'code':'BT','name':'Binh Thuan'}, - '12' : {'code':'CM','name':'Ca Mau'}, - '13' : {'code':'CT','name':'Can Tho'}, - '14' : {'code':'CB','name':'Cao Bang'}, - '15' : {'code':'DL','name':'Dak Lak'}, - '16' : {'code':'DG','name':'Dak Nong'}, - '17' : {'code':'DN','name':'Da Nang'}, - '18' : {'code':'DB','name':'Dien Bien'}, - '19' : {'code':'DI','name':'Dong Nai'}, - '20' : {'code':'DT','name':'Dong Thap'}, - '21' : {'code':'GL','name':'Gia Lai'}, - '22' : {'code':'HG','name':'Ha Giang'}, - '23' : {'code':'HD','name':'Hai Duong'}, - '24' : {'code':'HP','name':'Hai Phong'}, - '25' : {'code':'HM','name':'Ha Nam'}, - '26' : {'code':'HI','name':'Ha Noi'}, - '27' : {'code':'HT','name':'Ha Tay'}, - '28' : {'code':'HH','name':'Ha Tinh'}, - '29' : {'code':'HB','name':'Hoa Binh'}, - '30' : {'code':'HC','name':'Ho Chin Minh'}, - '31' : {'code':'HU','name':'Hau Giang'}, - '32' : {'code':'HY','name':'Hung Yen'} - }, - 'VI':{ - '1' : {'code':'C','name':'Saint Croix'}, - '2' : {'code':'J','name':'Saint John'}, - '3' : {'code':'T','name':'Saint Thomas'} - }, - 'WF':{ - '1' : {'code':'A','name':'Alo'}, - '2' : {'code':'S','name':'Sigave'}, - '3' : {'code':'W','name':'Wallis'} - }, - 'YE':{ - '1' : {'code':'AB','name':'Abyan'}, - '2' : {'code':'AD','name':'Adan'}, - '3' : {'code':'AM','name':'Amran'}, - '4' : {'code':'BA','name':'Al Bayda'}, - '5' : {'code':'DA','name':'Ad Dali'}, - '6' : {'code':'DH','name':'Dhamar'}, - '7' : {'code':'HD','name':'Hadramawt'}, - '8' : {'code':'HJ','name':'Hajjah'}, - '9' : {'code':'HU','name':'Al Hudaydah'}, - '10' : {'code':'IB','name':'Ibb'}, - '11' : {'code':'JA','name':'Al Jawf'}, - '12' : {'code':'LA','name':'Lahij'}, - '13' : {'code':'MA','name':'Ma\'rib'}, - '14' : {'code':'MR','name':'Al Mahrah'}, - '15' : {'code':'MW','name':'Al Mahwit'}, - '16' : {'code':'SD','name':'Sa\'dah'}, - '17' : {'code':'SN','name':'San\'a'}, - '18' : {'code':'SH','name':'Shabwah'}, - '19' : {'code':'TA','name':'Ta\'izz'} - }, - 'YU':{ - '1' : {'code':'KOS','name':'Kosovo'}, - '2' : {'code':'MON','name':'Montenegro'}, - '3' : {'code':'SER','name':'Serbia'}, - '4' : {'code':'VOJ','name':'Vojvodina'} - }, - 'ZR':{ - '1' : {'code':'BC','name':'Bas-Congo'}, - '2' : {'code':'BN','name':'Bandundu'}, - '3' : {'code':'EQ','name':'Equateur'}, - '4' : {'code':'KA','name':'Katanga'}, - '5' : {'code':'KE','name':'Kasai-Oriental'}, - '6' : {'code':'KN','name':'Kinshasa'}, - '7' : {'code':'KW','name':'Kasai-Occidental'}, - '8' : {'code':'MA','name':'Maniema'}, - '9' : {'code':'NK','name':'Nord-Kivu'}, - '10' : {'code':'OR','name':'Orientale'}, - '11' : {'code':'SK','name':'Sud-Kivu'} - }, - 'ZM':{ - '1' : {'code':'CE','name':'Central'}, - '2' : {'code':'CB','name':'Copperbelt'}, - '3' : {'code':'EA','name':'Eastern'}, - '4' : {'code':'LP','name':'Luapula'}, - '5' : {'code':'LK','name':'Lusaka'}, - '6' : {'code':'NO','name':'Northern'}, - '7' : {'code':'NW','name':'North-Western'}, - '8' : {'code':'SO','name':'Southern'}, - '9' : {'code':'WE','name':'Western'} - }, - 'ZW':{ - '1' : {'code':'BU','name':'Bulawayo'}, - '2' : {'code':'HA','name':'Harare'}, - '3' : {'code':'ML','name':'Manicaland'}, - '4' : {'code':'MC','name':'Mashonaland Central'}, - '5' : {'code':'ME','name':'Mashonaland East'}, - '6' : {'code':'MW','name':'Mashonaland West'}, - '7' : {'code':'MV','name':'Masvingo'}, - '8' : {'code':'MN','name':'Matabeleland North'}, - '9' : {'code':'MS','name':'Matabeleland South'}, - '10' : {'code':'MD','name':'Midlands'} - } -}; - -/* ========================================================== - * bootstrap-formhelpers-timepicker.en_US.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -var BFHTimePickerDelimiter = ':'; - -var BFHTimePickerModes = { - 'am': 'AM', - 'pm': 'PM' -}; -/* ========================================================== - * bootstrap-formhelpers-timezones.en_US.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -var BFHTimezonesList = { - 'AF': { - 'Asia/Kabul': 'Kabul' - }, - 'AL': { - 'Europe/Tirane': 'Tirane' - }, - 'DZ': { - 'Africa/Algiers': 'Algiers' - }, - 'AS': { - 'Pacific/Pago_Pago': 'Pago Pago' - }, - 'AD': { - 'Europe/Andorra': 'Andorra' - }, - 'AO': { - 'Africa/Luanda': 'Luanda' - }, - 'AI': { - 'America/Anguilla': 'Anguilla' - }, - 'AQ': { - 'Antarctica/Casey': 'Casey', - 'Antarctica/Davis': 'Davis', - 'Antarctica/DumontDUrville': 'DumontDUrville', - 'Antarctica/Macquarie': 'Macquarie', - 'Antarctica/Mawson': 'Mawson', - 'Antarctica/McMurdo': 'McMurdo', - 'Antarctica/Palmer': 'Palmer', - 'Antarctica/Rothera': 'Rothera', - 'Antarctica/South_Pole': 'South Pole', - 'Antarctica/Syowa': 'Syowa', - 'Antarctica/Vostok': 'Vostok' - }, - 'AG': { - 'America/Antigua': 'Antigua' - }, - 'AR': { - 'America/Argentina/Buenos_Aires': 'Argentina / Buenos Aires', - 'America/Argentina/Catamarca': 'Argentina / Catamarca', - 'America/Argentina/Cordoba': 'Argentina / Cordoba', - 'America/Argentina/Jujuy': 'Argentina / Jujuy', - 'America/Argentina/La_Rioja': 'Argentina / La Rioja', - 'America/Argentina/Mendoza': 'Argentina / Mendoza', - 'America/Argentina/Rio_Gallegos': 'Argentina / Rio Gallegos', - 'America/Argentina/Salta': 'Argentina / Salta', - 'America/Argentina/San_Juan': 'Argentina / San Juan', - 'America/Argentina/San_Luis': 'Argentina / San Luis', - 'America/Argentina/Tucuman': 'Argentina / Tucuman', - 'America/Argentina/Ushuaia': 'Argentina / Ushuaia' - }, - 'AM': { - 'Asia/Yerevan': 'Yerevan' - }, - 'AW': { - 'America/Aruba': 'Aruba' - }, - 'AU': { - 'Australia/Adelaide': 'Adelaide', - 'Australia/Brisbane': 'Brisbane', - 'Australia/Broken_Hill': 'Broken Hill', - 'Australia/Currie': 'Currie', - 'Australia/Darwin': 'Darwin', - 'Australia/Eucla': 'Eucla', - 'Australia/Hobart': 'Hobart', - 'Australia/Lindeman': 'Lindeman', - 'Australia/Lord_Howe': 'Lord Howe', - 'Australia/Melbourne': 'Melbourne', - 'Australia/Perth': 'Perth', - 'Australia/Sydney': 'Sydney' - }, - 'AT': { - 'Europe/Vienna': 'Vienna' - }, - 'AZ': { - 'Asia/Baku': 'Baku' - }, - 'BH': { - 'Asia/Bahrain': 'Bahrain' - }, - 'BD': { - 'Asia/Dhaka': 'Dhaka' - }, - 'BB': { - 'America/Barbados': 'Barbados' - }, - 'BY': { - 'Europe/Minsk': 'Minsk' - }, - 'BE': { - 'Europe/Brussels': 'Brussels' - }, - 'BZ': { - 'America/Belize': 'Belize' - }, - 'BJ': { - 'Africa/Porto-Novo': 'Porto-Novo' - }, - 'BM': { - 'Atlantic/Bermuda': 'Bermuda' - }, - 'BT': { - 'Asia/Thimphu': 'Thimphu' - }, - 'BO': { - 'America/La_Paz': 'La Paz' - }, - 'BA': { - 'Europe/Sarajevo': 'Sarajevo' - }, - 'BW': { - 'Africa/Gaborone': 'Gaborone' - }, - 'BR': { - 'America/Araguaina': 'Araguaina', - 'America/Bahia': 'Bahia', - 'America/Belem': 'Belem', - 'America/Boa_Vista': 'Boa Vista', - 'America/Campo_Grande': 'Campo Grande', - 'America/Cuiaba': 'Cuiaba', - 'America/Eirunepe': 'Eirunepe', - 'America/Fortaleza': 'Fortaleza', - 'America/Maceio': 'Maceio', - 'America/Manaus': 'Manaus', - 'America/Noronha': 'Noronha', - 'America/Porto_Velho': 'Porto Velho', - 'America/Recife': 'Recife', - 'America/Rio_Branco': 'Rio Branco', - 'America/Santarem': 'Santarem', - 'America/Sao_Paulo': 'Sao Paulo' - }, - 'VG': { - 'America/Tortola': 'Tortola' - }, - 'BN': { - 'Asia/Brunei': 'Brunei' - }, - 'BG': { - 'Europe/Sofia': 'Sofia' - }, - 'BF': { - 'Africa/Ouagadougou': 'Ouagadougou' - }, - 'BI': { - 'Africa/Bujumbura': 'Bujumbura' - }, - 'CI': { - 'Africa/Abidjan': 'Abidjan' - }, - 'KH': { - 'Asia/Phnom_Penh': 'Phnom Penh' - }, - 'CM': { - 'Africa/Douala': 'Douala' - }, - 'CA': { - 'America/Atikokan': 'Atikokan', - 'America/Blanc-Sablon': 'Blanc-Sablon', - 'America/Cambridge_Bay': 'Cambridge Bay', - 'America/Creston': 'Creston', - 'America/Dawson': 'Dawson', - 'America/Dawson_Creek': 'Dawson Creek', - 'America/Edmonton': 'Edmonton', - 'America/Glace_Bay': 'Glace Bay', - 'America/Goose_Bay': 'Goose Bay', - 'America/Halifax': 'Halifax', - 'America/Inuvik': 'Inuvik', - 'America/Iqaluit': 'Iqaluit', - 'America/Moncton': 'Moncton', - 'America/Montreal': 'Montreal', - 'America/Nipigon': 'Nipigon', - 'America/Pangnirtung': 'Pangnirtung', - 'America/Rainy_River': 'Rainy River', - 'America/Rankin_Inlet': 'Rankin Inlet', - 'America/Regina': 'Regina', - 'America/Resolute': 'Resolute', - 'America/St_Johns': 'St Johns', - 'America/Swift_Current': 'Swift Current', - 'America/Thunder_Bay': 'Thunder Bay', - 'America/Toronto': 'Toronto', - 'America/Vancouver': 'Vancouver', - 'America/Whitehorse': 'Whitehorse', - 'America/Winnipeg': 'Winnipeg', - 'America/Yellowknife': 'Yellowknife' - }, - 'CV': { - 'Atlantic/Cape_Verde': 'Cape Verde' - }, - 'KY': { - 'America/Cayman': 'Cayman' - }, - 'CF': { - 'Africa/Bangui': 'Bangui' - }, - 'TD': { - 'Africa/Ndjamena': 'Ndjamena' - }, - 'CL': { - 'America/Santiago': 'Santiago', - 'Pacific/Easter': 'Easter' - }, - 'CN': { - 'Asia/Chongqing': 'Chongqing', - 'Asia/Harbin': 'Harbin', - 'Asia/Kashgar': 'Kashgar', - 'Asia/Shanghai': 'Shanghai', - 'Asia/Urumqi': 'Urumqi' - }, - 'CO': { - 'America/Bogota': 'Bogota' - }, - 'KM': { - 'Indian/Comoro': 'Comoro' - }, - 'CG': { - 'Africa/Brazzaville': 'Brazzaville' - }, - 'CR': { - 'America/Costa_Rica': 'Costa Rica' - }, - 'HR': { - 'Europe/Zagreb': 'Zagreb' - }, - 'CU': { - 'America/Havana': 'Havana' - }, - 'CY': { - 'Asia/Nicosia': 'Nicosia' - }, - 'CZ': { - 'Europe/Prague': 'Prague' - }, - 'CD': { - 'Africa/Kinshasa': 'Kinshasa', - 'Africa/Lubumbashi': 'Lubumbashi' - }, - 'DK': { - 'Europe/Copenhagen': 'Copenhagen' - }, - 'DJ': { - 'Africa/Djibouti': 'Djibouti' - }, - 'DM': { - 'America/Dominica': 'Dominica' - }, - 'DO': { - 'America/Santo_Domingo': 'Santo Domingo' - }, - 'TP': { - }, - 'EC': { - 'America/Guayaquil': 'Guayaquil', - 'Pacific/Galapagos': 'Galapagos' - }, - 'EG': { - 'Africa/Cairo': 'Cairo' - }, - 'SV': { - 'America/El_Salvador': 'El Salvador' - }, - 'GQ': { - 'Africa/Malabo': 'Malabo' - }, - 'ER': { - 'Africa/Asmara': 'Asmara' - }, - 'EE': { - 'Europe/Tallinn': 'Tallinn' - }, - 'ET': { - 'Africa/Addis_Ababa': 'Addis Ababa' - }, - 'FO': { - 'Atlantic/Faroe': 'Faroe' - }, - 'FK': { - 'Atlantic/Stanley': 'Stanley' - }, - 'FJ': { - 'Pacific/Fiji': 'Fiji' - }, - 'FI': { - 'Europe/Helsinki': 'Helsinki' - }, - 'MK': { - 'Europe/Skopje': 'Skopje' - }, - 'FR': { - 'Europe/Paris': 'Paris' - }, - 'GA': { - 'Africa/Libreville': 'Libreville' - }, - 'GE': { - 'Asia/Tbilisi': 'Tbilisi' - }, - 'DE': { - 'Europe/Berlin': 'Berlin' - }, - 'GH': { - 'Africa/Accra': 'Accra' - }, - 'GR': { - 'Europe/Athens': 'Athens' - }, - 'GL': { - 'America/Danmarkshavn': 'Danmarkshavn', - 'America/Godthab': 'Godthab', - 'America/Scoresbysund': 'Scoresbysund', - 'America/Thule': 'Thule' - }, - 'GD': { - 'America/Grenada': 'Grenada' - }, - 'GU': { - 'Pacific/Guam': 'Guam' - }, - 'GT': { - 'America/Guatemala': 'Guatemala' - }, - 'GN': { - 'Africa/Conakry': 'Conakry' - }, - 'GW': { - 'Africa/Bissau': 'Bissau' - }, - 'GY': { - 'America/Guyana': 'Guyana' - }, - 'HT': { - 'America/Port-au-Prince': 'Port-au-Prince' - }, - 'HN': { - 'America/Tegucigalpa': 'Tegucigalpa' - }, - 'HK': { - 'Asia/Hong_Kong': 'Hong Kong' - }, - 'HU': { - 'Europe/Budapest': 'Budapest' - }, - 'IS': { - 'Atlantic/Reykjavik': 'Reykjavik' - }, - 'IN': { - 'Asia/Kolkata': 'Kolkata' - }, - 'ID': { - 'Asia/Jakarta': 'Jakarta', - 'Asia/Jayapura': 'Jayapura', - 'Asia/Makassar': 'Makassar', - 'Asia/Pontianak': 'Pontianak' - }, - 'IR': { - 'Asia/Tehran': 'Tehran' - }, - 'IQ': { - 'Asia/Baghdad': 'Baghdad' - }, - 'IE': { - 'Europe/Dublin': 'Dublin' - }, - 'IL': { - 'Asia/Jerusalem': 'Jerusalem' - }, - 'IT': { - 'Europe/Rome': 'Rome' - }, - 'JM': { - 'America/Jamaica': 'Jamaica' - }, - 'JP': { - 'Asia/Tokyo': 'Tokyo' - }, - 'JO': { - 'Asia/Amman': 'Amman' - }, - 'KZ': { - 'Asia/Almaty': 'Almaty', - 'Asia/Aqtau': 'Aqtau', - 'Asia/Aqtobe': 'Aqtobe', - 'Asia/Oral': 'Oral', - 'Asia/Qyzylorda': 'Qyzylorda' - }, - 'KE': { - 'Africa/Nairobi': 'Nairobi' - }, - 'KI': { - 'Pacific/Enderbury': 'Enderbury', - 'Pacific/Kiritimati': 'Kiritimati', - 'Pacific/Tarawa': 'Tarawa' - }, - 'KW': { - 'Asia/Kuwait': 'Kuwait' - }, - 'KG': { - 'Asia/Bishkek': 'Bishkek' - }, - 'LA': { - 'Asia/Vientiane': 'Vientiane' - }, - 'LV': { - 'Europe/Riga': 'Riga' - }, - 'LB': { - 'Asia/Beirut': 'Beirut' - }, - 'LS': { - 'Africa/Maseru': 'Maseru' - }, - 'LR': { - 'Africa/Monrovia': 'Monrovia' - }, - 'LY': { - 'Africa/Tripoli': 'Tripoli' - }, - 'LI': { - 'Europe/Vaduz': 'Vaduz' - }, - 'LT': { - 'Europe/Vilnius': 'Vilnius' - }, - 'LU': { - 'Europe/Luxembourg': 'Luxembourg' - }, - 'MO': { - 'Asia/Macau': 'Macau' - }, - 'MG': { - 'Indian/Antananarivo': 'Antananarivo' - }, - 'MW': { - 'Africa/Blantyre': 'Blantyre' - }, - 'MY': { - 'Asia/Kuala_Lumpur': 'Kuala Lumpur', - 'Asia/Kuching': 'Kuching' - }, - 'MV': { - 'Indian/Maldives': 'Maldives' - }, - 'ML': { - 'Africa/Bamako': 'Bamako' - }, - 'MT': { - 'Europe/Malta': 'Malta' - }, - 'MH': { - 'Pacific/Kwajalein': 'Kwajalein', - 'Pacific/Majuro': 'Majuro' - }, - 'MR': { - 'Africa/Nouakchott': 'Nouakchott' - }, - 'MU': { - 'Indian/Mauritius': 'Mauritius' - }, - 'MX': { - 'America/Bahia_Banderas': 'Bahia Banderas', - 'America/Cancun': 'Cancun', - 'America/Chihuahua': 'Chihuahua', - 'America/Hermosillo': 'Hermosillo', - 'America/Matamoros': 'Matamoros', - 'America/Mazatlan': 'Mazatlan', - 'America/Merida': 'Merida', - 'America/Mexico_City': 'Mexico City', - 'America/Monterrey': 'Monterrey', - 'America/Ojinaga': 'Ojinaga', - 'America/Santa_Isabel': 'Santa Isabel', - 'America/Tijuana': 'Tijuana' - }, - 'FM': { - 'Pacific/Chuuk': 'Chuuk', - 'Pacific/Kosrae': 'Kosrae', - 'Pacific/Pohnpei': 'Pohnpei' - }, - 'MD': { - 'Europe/Chisinau': 'Chisinau' - }, - 'MC': { - 'Europe/Monaco': 'Monaco' - }, - 'MN': { - 'Asia/Choibalsan': 'Choibalsan', - 'Asia/Hovd': 'Hovd', - 'Asia/Ulaanbaatar': 'Ulaanbaatar' - }, - 'ME': { - 'Europe/Podgorica': 'Podgorica' - }, - 'MS': { - 'America/Montserrat': 'Montserrat' - }, - 'MA': { - 'Africa/Casablanca': 'Casablanca' - }, - 'MZ': { - 'Africa/Maputo': 'Maputo' - }, - 'MM': { - 'Asia/Rangoon': 'Rangoon' - }, - 'NA': { - 'Africa/Windhoek': 'Windhoek' - }, - 'NR': { - 'Pacific/Nauru': 'Nauru' - }, - 'NP': { - 'Asia/Kathmandu': 'Kathmandu' - }, - 'NL': { - 'Europe/Amsterdam': 'Amsterdam' - }, - 'AN': { - }, - 'NZ': { - 'Pacific/Auckland': 'Auckland', - 'Pacific/Chatham': 'Chatham' - }, - 'NI': { - 'America/Managua': 'Managua' - }, - 'NE': { - 'Africa/Niamey': 'Niamey' - }, - 'NG': { - 'Africa/Lagos': 'Lagos' - }, - 'NF': { - 'Pacific/Norfolk': 'Norfolk' - }, - 'KP': { - 'Asia/Pyongyang': 'Pyongyang' - }, - 'MP': { - 'Pacific/Saipan': 'Saipan' - }, - 'NO': { - 'Europe/Oslo': 'Oslo' - }, - 'OM': { - 'Asia/Muscat': 'Muscat' - }, - 'PK': { - 'Asia/Karachi': 'Karachi' - }, - 'PW': { - 'Pacific/Palau': 'Palau' - }, - 'PA': { - 'America/Panama': 'Panama' - }, - 'PG': { - 'Pacific/Port_Moresby': 'Port Moresby' - }, - 'PY': { - 'America/Asuncion': 'Asuncion' - }, - 'PE': { - 'America/Lima': 'Lima' - }, - 'PH': { - 'Asia/Manila': 'Manila' - }, - 'PN': { - 'Pacific/Pitcairn': 'Pitcairn' - }, - 'PL': { - 'Europe/Warsaw': 'Warsaw' - }, - 'PT': { - 'Atlantic/Azores': 'Azores', - 'Atlantic/Madeira': 'Madeira', - 'Europe/Lisbon': 'Lisbon' - }, - 'PR': { - 'America/Puerto_Rico': 'Puerto Rico' - }, - 'QA': { - 'Asia/Qatar': 'Qatar' - }, - 'RO': { - 'Europe/Bucharest': 'Bucharest' - }, - 'RU': { - 'Asia/Anadyr': 'Anadyr', - 'Asia/Irkutsk': 'Irkutsk', - 'Asia/Kamchatka': 'Kamchatka', - 'Asia/Krasnoyarsk': 'Krasnoyarsk', - 'Asia/Magadan': 'Magadan', - 'Asia/Novokuznetsk': 'Novokuznetsk', - 'Asia/Novosibirsk': 'Novosibirsk', - 'Asia/Omsk': 'Omsk', - 'Asia/Sakhalin': 'Sakhalin', - 'Asia/Vladivostok': 'Vladivostok', - 'Asia/Yakutsk': 'Yakutsk', - 'Asia/Yekaterinburg': 'Yekaterinburg', - 'Europe/Kaliningrad': 'Kaliningrad', - 'Europe/Moscow': 'Moscow', - 'Europe/Samara': 'Samara', - 'Europe/Volgograd': 'Volgograd' - }, - 'RW': { - 'Africa/Kigali': 'Kigali' - }, - 'ST': { - 'Africa/Sao_Tome': 'Sao Tome' - }, - 'SH': { - 'Atlantic/St_Helena': 'St Helena' - }, - 'KN': { - 'America/St_Kitts': 'St Kitts' - }, - 'LC': { - 'America/St_Lucia': 'St Lucia' - }, - 'VC': { - 'America/St_Vincent': 'St Vincent' - }, - 'WS': { - 'Pacific/Apia': 'Apia' - }, - 'SM': { - 'Europe/San_Marino': 'San Marino' - }, - 'SA': { - 'Asia/Riyadh': 'Riyadh' - }, - 'SN': { - 'Africa/Dakar': 'Dakar' - }, - 'RS': { - 'Europe/Belgrade': 'Belgrade' - }, - 'SC': { - 'Indian/Mahe': 'Mahe' - }, - 'SL': { - 'Africa/Freetown': 'Freetown' - }, - 'SG': { - 'Asia/Singapore': 'Singapore' - }, - 'SK': { - 'Europe/Bratislava': 'Bratislava' - }, - 'SI': { - 'Europe/Ljubljana': 'Ljubljana' - }, - 'SB': { - 'Pacific/Guadalcanal': 'Guadalcanal' - }, - 'SO': { - 'Africa/Mogadishu': 'Mogadishu' - }, - 'ZA': { - 'Africa/Johannesburg': 'Johannesburg' - }, - 'GS': { - 'Atlantic/South_Georgia': 'South Georgia' - }, - 'KR': { - 'Asia/Seoul': 'Seoul' - }, - 'ES': { - 'Africa/Ceuta': 'Ceuta', - 'Atlantic/Canary': 'Canary', - 'Europe/Madrid': 'Madrid' - }, - 'LK': { - 'Asia/Colombo': 'Colombo' - }, - 'SD': { - 'Africa/Khartoum': 'Khartoum' - }, - 'SR': { - 'America/Paramaribo': 'Paramaribo' - }, - 'SZ': { - 'Africa/Mbabane': 'Mbabane' - }, - 'SE': { - 'Europe/Stockholm': 'Stockholm' - }, - 'CH': { - 'Europe/Zurich': 'Zurich' - }, - 'SY': { - 'Asia/Damascus': 'Damascus' - }, - 'TW': { - 'Asia/Taipei': 'Taipei' - }, - 'TJ': { - 'Asia/Dushanbe': 'Dushanbe' - }, - 'TZ': { - 'Africa/Dar_es_Salaam': 'Dar es Salaam' - }, - 'TH': { - 'Asia/Bangkok': 'Bangkok' - }, - 'BS': { - 'America/Nassau': 'Nassau' - }, - 'GM': { - 'Africa/Banjul': 'Banjul' - }, - 'TG': { - 'Africa/Lome': 'Lome' - }, - 'TO': { - 'Pacific/Tongatapu': 'Tongatapu' - }, - 'TT': { - 'America/Port_of_Spain': 'Port of Spain' - }, - 'TN': { - 'Africa/Tunis': 'Tunis' - }, - 'TR': { - 'Europe/Istanbul': 'Istanbul' - }, - 'TM': { - 'Asia/Ashgabat': 'Ashgabat' - }, - 'TC': { - 'America/Grand_Turk': 'Grand Turk' - }, - 'TV': { - 'Pacific/Funafuti': 'Funafuti' - }, - 'VI': { - 'America/St_Thomas': 'St Thomas' - }, - 'UG': { - 'Africa/Kampala': 'Kampala' - }, - 'UA': { - 'Europe/Kiev': 'Kiev', - 'Europe/Simferopol': 'Simferopol', - 'Europe/Uzhgorod': 'Uzhgorod', - 'Europe/Zaporozhye': 'Zaporozhye' - }, - 'AE': { - 'Asia/Dubai': 'Dubai' - }, - 'GB': { - 'Europe/London': 'London' - }, - 'US': { - 'America/Adak': 'Adak', - 'America/Anchorage': 'Anchorage', - 'America/Boise': 'Boise', - 'America/Chicago': 'Chicago', - 'America/Denver': 'Denver', - 'America/Detroit': 'Detroit', - 'America/Indiana/Indianapolis': 'Indiana / Indianapolis', - 'America/Indiana/Knox': 'Indiana / Knox', - 'America/Indiana/Marengo': 'Indiana / Marengo', - 'America/Indiana/Petersburg': 'Indiana / Petersburg', - 'America/Indiana/Tell_City': 'Indiana / Tell City', - 'America/Indiana/Vevay': 'Indiana / Vevay', - 'America/Indiana/Vincennes': 'Indiana / Vincennes', - 'America/Indiana/Winamac': 'Indiana / Winamac', - 'America/Juneau': 'Juneau', - 'America/Kentucky/Louisville': 'Kentucky / Louisville', - 'America/Kentucky/Monticello': 'Kentucky / Monticello', - 'America/Los_Angeles': 'Los Angeles', - 'America/Menominee': 'Menominee', - 'America/Metlakatla': 'Metlakatla', - 'America/New_York': 'New York', - 'America/Nome': 'Nome', - 'America/North_Dakota/Beulah': 'North Dakota / Beulah', - 'America/North_Dakota/Center': 'North Dakota / Center', - 'America/North_Dakota/New_Salem': 'North Dakota / New Salem', - 'America/Phoenix': 'Phoenix', - 'America/Shiprock': 'Shiprock', - 'America/Sitka': 'Sitka', - 'America/Yakutat': 'Yakutat', - 'Pacific/Honolulu': 'Honolulu' - }, - 'UY': { - 'America/Montevideo': 'Montevideo' - }, - 'UZ': { - 'Asia/Samarkand': 'Samarkand', - 'Asia/Tashkent': 'Tashkent' - }, - 'VU': { - 'Pacific/Efate': 'Efate' - }, - 'VA': { - 'Europe/Vatican': 'Vatican' - }, - 'VE': { - 'America/Caracas': 'Caracas' - }, - 'VN': { - 'Asia/Ho_Chi_Minh': 'Ho Chi Minh' - }, - 'EH': { - 'Africa/El_Aaiun': 'El Aaiun' - }, - 'YE': { - 'Asia/Aden': 'Aden' - }, - 'ZM': { - 'Africa/Lusaka': 'Lusaka' - }, - 'ZW': { - 'Africa/Harare': 'Harare' - } -}; - -/* ========================================================== - * bootstrap-formhelpers-colorpicker.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - - -+function ($) { - - 'use strict'; - - - /* COLORPICKER CLASS DEFINITION - * ========================= */ - - var toggle = '[data-toggle=bfh-colorpicker]', - BFHColorPicker = function (element, options) { - this.options = $.extend({}, $.fn.bfhcolorpicker.defaults, options); - this.$element = $(element); - - this.initPopover(); - }; - - BFHColorPicker.prototype = { - - constructor: BFHColorPicker, - - initPalette: function() { - var $canvas, - context, - gradient; - - $canvas = this.$element.find('canvas'); - context = $canvas[0].getContext('2d'); - - gradient = context.createLinearGradient(0, 0, $canvas.width(), 0); - - gradient.addColorStop(0, 'rgb(255, 255, 255)'); - gradient.addColorStop(0.1, 'rgb(255, 0, 0)'); - gradient.addColorStop(0.25, 'rgb(255, 0, 255)'); - gradient.addColorStop(0.4, 'rgb(0, 0, 255)'); - gradient.addColorStop(0.55, 'rgb(0, 255, 255)'); - gradient.addColorStop(0.7, 'rgb(0, 255, 0)'); - gradient.addColorStop(0.85, 'rgb(255, 255, 0)'); - gradient.addColorStop(1, 'rgb(255, 0, 0)'); - - context.fillStyle = gradient; - context.fillRect(0, 0, context.canvas.width, context.canvas.height); - - gradient = context.createLinearGradient(0, 0, 0, $canvas.height()); - gradient.addColorStop(0, 'rgba(255, 255, 255, 1)'); - gradient.addColorStop(0.5, 'rgba(255, 255, 255, 0)'); - gradient.addColorStop(0.5, 'rgba(0, 0, 0, 0)'); - gradient.addColorStop(1, 'rgba(0, 0, 0, 1)'); - - context.fillStyle = gradient; - context.fillRect(0, 0, context.canvas.width, context.canvas.height); - }, - - initPopover: function() { - var iconLeft, - iconRight; - - iconLeft = ''; - iconRight = ''; - if (this.options.align === 'right') { - iconRight = '<span class="input-group-addon"><span class="bfh-colorpicker-icon"></span></span>'; - } else { - iconLeft = '<span class="input-group-addon"><span class="bfh-colorpicker-icon"></span></span>'; - } - - this.$element.html( - '<div class="input-group bfh-colorpicker-toggle" data-toggle="bfh-colorpicker">' + - iconLeft + - '<input type="text" name="' + this.options.name + '" class="' + this.options.input + '" placeholder="' + this.options.placeholder + '" readonly>' + - iconRight + - '</div>' + - '<div class="bfh-colorpicker-popover">' + - '<canvas class="bfh-colorpicker-palette" width="384" height="256"></canvas>' + - '</div>' - ); - - this.$element - .on('click.bfhcolorpicker.data-api touchstart.bfhcolorpicker.data-api', toggle, BFHColorPicker.prototype.toggle) - .on('mousedown.bfhcolorpicker.data-api', 'canvas', BFHColorPicker.prototype.mouseDown) - .on('click.bfhcolorpicker.data-api touchstart.bfhcolorpicker.data-api', '.bfh-colorpicker-popover', function() { return false; }); - - this.initPalette(); - - this.$element.val(this.options.color); - }, - - updateVal: function(positionX, positionY) { - var $canvas, - context, - colorX, - colorY, - snappiness, - imageData, - newColor; - - snappiness = 5; - - $canvas = this.$element.find('canvas'); - context = $canvas[0].getContext('2d'); - - colorX = positionX - $canvas.offset().left; - colorY = positionY - $canvas.offset().top; - - colorX = Math.round(colorX / snappiness) * snappiness; - colorY = Math.round(colorY / snappiness) * snappiness; - - if (colorX < 0) { - colorX = 0; - } - if (colorX >= $canvas.width()) { - colorX = $canvas.width() - 1; - } - - if (colorY < 0) { - colorY = 0; - } - if (colorY > $canvas.height()) { - colorY = $canvas.height(); - } - - imageData = context.getImageData(colorX, colorY, 1, 1); - newColor = rgbToHex(imageData.data[0], imageData.data[1], imageData.data[2]); - - if (newColor !== this.$element.val()) { - this.$element.val(newColor); - - this.$element.trigger('change.bfhcolorpicker'); - } - }, - - mouseDown: function(e) { - var $this, - $parent; - - $this = $(this); - $parent = getParent($this); - - $(document) - .on('mousemove.bfhcolorpicker.data-api', {colorpicker: $parent}, BFHColorPicker.prototype.mouseMove) - .one('mouseup.bfhcolorpicker.data-api', {colorpicker: $parent}, BFHColorPicker.prototype.mouseUp); - }, - - mouseMove: function(e) { - var $this; - - $this = e.data.colorpicker; - - $this.data('bfhcolorpicker').updateVal(e.pageX, e.pageY); - }, - - mouseUp: function(e) { - var $this; - - $this = e.data.colorpicker; - - $this.data('bfhcolorpicker').updateVal(e.pageX, e.pageY); - - $(document).off('mousemove.bfhcolorpicker.data-api'); - - if ($this.data('bfhcolorpicker').options.close === true) { - clearMenus(); - } - }, - - toggle: function (e) { - var $this, - $parent, - isActive; - - $this = $(this); - $parent = getParent($this); - - if ($parent.is('.disabled') || $parent.attr('disabled') !== undefined) { - return true; - } - - isActive = $parent.hasClass('open'); - - clearMenus(); - - if (!isActive) { - $parent.trigger(e = $.Event('show.bfhcolorpicker')); - - if (e.isDefaultPrevented()) { - return true; - } - - $parent - .toggleClass('open') - .trigger('shown.bfhcolorpicker'); - - $this.focus(); - } - - return false; - } - }; - - function componentToHex(c) { - var hex = c.toString(16); - return hex.length === 1 ? '0' + hex : hex; - } - - function rgbToHex(r, g, b) { - return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b); - } - - function clearMenus() { - var $parent; - - $(toggle).each(function (e) { - $parent = getParent($(this)); - - if (!$parent.hasClass('open')) { - return true; - } - - $parent.trigger(e = $.Event('hide.bfhcolorpicker')); - - if (e.isDefaultPrevented()) { - return true; - } - - $parent - .removeClass('open') - .trigger('hidden.bfhcolorpicker'); - }); - } - - function getParent($this) { - return $this.closest('.bfh-colorpicker'); - } - - - /* COLORPICKER PLUGIN DEFINITION - * ========================== */ - - var old = $.fn.bfhcolorpicker; - - $.fn.bfhcolorpicker = function (option) { - return this.each(function () { - var $this, - data, - options; - - $this = $(this); - data = $this.data('bfhcolorpicker'); - options = typeof option === 'object' && option; - this.type = 'bfhcolorpicker'; - - if (!data) { - $this.data('bfhcolorpicker', (data = new BFHColorPicker(this, options))); - } - if (typeof option === 'string') { - data[option].call($this); - } - }); - }; - - $.fn.bfhcolorpicker.Constructor = BFHColorPicker; - - $.fn.bfhcolorpicker.defaults = { - align: 'left', - input: 'form-control', - placeholder: '', - name: '', - color: '#000000', - close: true - }; - - - /* COLORPICKER NO CONFLICT - * ========================== */ - - $.fn.bfhcolorpicker.noConflict = function () { - $.fn.bfhcolorpicker = old; - return this; - }; - - - /* COLORPICKER VALHOOKS - * ========================== */ - - var origHook; - if ($.valHooks.div){ - origHook = $.valHooks.div; - } - $.valHooks.div = { - get: function(el) { - if ($(el).hasClass('bfh-colorpicker')) { - return $(el).find('input[type="text"]').val(); - } else if (origHook) { - return origHook.get(el); - } - }, - set: function(el, val) { - if ($(el).hasClass('bfh-colorpicker')) { - $(el).find('.bfh-colorpicker-icon').css('background-color', val); - $(el).find('input[type="text"]').val(val); - } else if (origHook) { - return origHook.set(el,val); - } - } - }; - - - /* COLORPICKER DATA-API - * ============== */ - - $(document).ready( function () { - $('div.bfh-colorpicker').each(function () { - var $colorpicker; - - $colorpicker = $(this); - - $colorpicker.bfhcolorpicker($colorpicker.data()); - }); - }); - - - /* APPLY TO STANDARD COLORPICKER ELEMENTS - * =================================== */ - - $(document) - .on('click.bfhcolorpicker.data-api', clearMenus); - -}(window.jQuery); -/* ========================================================== - * bootstrap-formhelpers-countries.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -+function ($) { - - 'use strict'; - - - /* COUNTRIES CLASS DEFINITION - * ====================== */ - - var BFHCountries = function (element, options) { - this.options = $.extend({}, $.fn.bfhcountries.defaults, options); - this.$element = $(element); - - if (this.$element.is('select')) { - this.addCountries(); - } - - if (this.$element.hasClass('bfh-selectbox')) { - this.addBootstrapCountries(); - } - - if (this.$element.is('span')) { - this.displayCountry(); - } - }; - - BFHCountries.prototype = { - - constructor: BFHCountries, - - getCountries: function() { - var country, - countries; - - if (this.options.available) { - if (typeof this.options.available === 'string') { - countries = []; - - this.options.available = this.options.available.split(','); - - for (country in BFHCountriesList) { - if (BFHCountriesList.hasOwnProperty(country)) { - if ($.inArray(country, this.options.available) >= 0) { - countries[country] = BFHCountriesList[country]; - } - } - } - } else { - countries = this.options.available; - } - - return countries; - } else { - return BFHCountriesList; - } - }, - - addCountries: function () { - var value, - country, - countries; - - value = this.options.country; - countries = this.getCountries(); - - this.$element.html(''); - - if (this.options.blank === true) { - this.$element.append('<option value=""></option>'); - } - - for (country in countries) { - if (countries.hasOwnProperty(country)) { - this.$element.append('<option value="' + country + '">' + countries[country] + '</option>'); - } - } - - this.$element.val(value); - }, - - addBootstrapCountries: function() { - var $input, - $toggle, - $options, - value, - country, - countries; - - value = this.options.country; - $input = this.$element.find('input[type="hidden"]'); - $toggle = this.$element.find('.bfh-selectbox-option'); - $options = this.$element.find('[role=option]'); - countries = this.getCountries(); - - $options.html(''); - - if (this.options.blank === true) { - $options.append('<li><a tabindex="-1" href="#" data-option=""></a></li>'); - } - - for (country in countries) { - if (countries.hasOwnProperty(country)) { - if (this.options.flags === true) { - $options.append('<li><a tabindex="-1" href="#" data-option="' + country + '"><i class="glyphicon bfh-flag-' + country + '"></i>' + countries[country] + '</a></li>'); - } else { - $options.append('<li><a tabindex="-1" href="#" data-option="' + country + '">' + countries[country] + '</a></li>'); - } - } - } - - this.$element.val(value); - }, - - displayCountry: function () { - var value; - - value = this.options.country; - - if (this.options.flags === true) { - this.$element.html('<i class="glyphicon bfh-flag-' + value + '"></i> ' + BFHCountriesList[value]); - } else { - this.$element.html(BFHCountriesList[value]); - } - } - - }; - - - /* COUNTRY PLUGIN DEFINITION - * ======================= */ - - var old = $.fn.bfhcountries; - - $.fn.bfhcountries = function (option) { - return this.each(function () { - var $this, - data, - options; - - $this = $(this); - data = $this.data('bfhcountries'); - options = typeof option === 'object' && option; - - if (!data) { - $this.data('bfhcountries', (data = new BFHCountries(this, options))); - } - if (typeof option === 'string') { - data[option].call($this); - } - }); - }; - - $.fn.bfhcountries.Constructor = BFHCountries; - - $.fn.bfhcountries.defaults = { - country: '', - available: '', - flags: false, - blank: true - }; - - - /* COUNTRY NO CONFLICT - * ========================== */ - - $.fn.bfhcountries.noConflict = function () { - $.fn.bfhcountries = old; - return this; - }; - - - /* COUNTRY DATA-API - * ============== */ - - $(document).ready( function () { - $('form select.bfh-countries, span.bfh-countries, div.bfh-countries').each(function () { - var $countries; - - $countries = $(this); - - if ($countries.hasClass('bfh-selectbox')) { - $countries.bfhselectbox($countries.data()); - } - $countries.bfhcountries($countries.data()); - }); - }); - -}(window.jQuery); - -/* ========================================================== - * bootstrap-formhelpers-currencies.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2013 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -+function ($) { - - 'use strict'; - - - /* COUNTRIES CLASS DEFINITION - * ====================== */ - - var BFHCurrencies = function (element, options) { - this.options = $.extend({}, $.fn.bfhcurrencies.defaults, options); - this.$element = $(element); - - if (this.$element.is('select')) { - this.addCurrencies(); - } - - if (this.$element.hasClass('bfh-selectbox')) { - this.addBootstrapCurrencies(); - } - - if (this.$element.is('span')) { - this.displayCurrency(); - } - }; - - BFHCurrencies.prototype = { - - constructor: BFHCurrencies, - - getCurrencies: function () { - var currency, - currencies; - - if (this.options.available) { - currencies = []; - - this.options.available = this.options.available.split(','); - - for (currency in BFHCurrenciesList) { - if (BFHCurrenciesList.hasOwnProperty(currency)) { - if ($.inArray(currency, this.options.available) >= 0) { - currencies[currency] = BFHCurrenciesList[currency]; - } - } - } - - return currencies; - } else { - return BFHCurrenciesList; - } - }, - - addCurrencies: function () { - var value, - currency, - currencies; - - value = this.options.currency; - currencies = this.getCurrencies(); - - this.$element.html(''); - - if (this.options.blank === true) { - this.$element.append('<option value=""></option>'); - } - - for (currency in currencies) { - if (currencies.hasOwnProperty(currency)) { - this.$element.append('<option value="' + currency + '">' + currencies[currency].label + '</option>'); - } - } - - this.$element.val(value); - }, - - - addBootstrapCurrencies: function() { - var $input, - $toggle, - $options, - value, - currency, - currencies, - flag; - - value = this.options.currency; - $input = this.$element.find('input[type="hidden"]'); - $toggle = this.$element.find('.bfh-selectbox-option'); - $options = this.$element.find('[role=option]'); - currencies = this.getCurrencies(); - - $options.html(''); - - if (this.options.blank === true) { - $options.append('<li><a tabindex="-1" href="#" data-option=""></a></li>'); - } - - for (currency in currencies) { - if (currencies.hasOwnProperty(currency)) { - if (this.options.flags === true) { - if (currencies[currency].currencyflag) { - flag = currencies[currency].currencyflag; - } else { - flag = currency.substr(0,2); - } - $options.append('<li><a tabindex="-1" href="#" data-option="' + currency + '"><i class="glyphicon bfh-flag-' + flag + '"></i>' + currencies[currency].label + '</a></li>'); - } else { - $options.append('<li><a tabindex="-1" href="#" data-option="' + currency + '">' + currencies[currency].label + '</a></li>'); - } - } - } - - this.$element.val(value); - }, - - displayCurrency: function () { - var value, - flag; - - value = this.options.currency; - - if (this.options.flags === true) { - if (BFHCurrenciesList[value].currencyflag) { - flag = BFHCurrenciesList[value].currencyflag; - } else { - flag = value.substr(0,2); - } - this.$element.html('<i class="glyphicon bfh-flag-' + flag + '"></i> ' + BFHCurrenciesList[value].label); - } else { - this.$element.html(BFHCurrenciesList[value].label); - } - } - - }; - - - /* CURRENCY PLUGIN DEFINITION - * ======================= */ - - var old = $.fn.bfhcurrencies; - - $.fn.bfhcurrencies = function (option) { - return this.each(function () { - var $this, - data, - options; - - $this = $(this); - data = $this.data('bfhcurrencies'); - options = typeof option === 'object' && option; - - if (!data) { - $this.data('bfhcurrencies', (data = new BFHCurrencies(this, options))); - } - if (typeof option === 'string') { - data[option].call($this); - } - }); - }; - - $.fn.bfhcurrencies.Constructor = BFHCurrencies; - - $.fn.bfhcurrencies.defaults = { - currency: '', - available: '', - flags: false, - blank: true - }; - - - /* CURRENCY NO CONFLICT - * ========================== */ - - $.fn.bfhcurrencies.noConflict = function () { - $.fn.bfhcurrencies = old; - return this; - }; - - - /* CURRENCY DATA-API - * ============== */ - - $(document).ready( function () { - $('form select.bfh-currencies, span.bfh-currencies, div.bfh-currencies').each(function () { - var $currencies; - - $currencies = $(this); - - if ($currencies.hasClass('bfh-selectbox')) { - $currencies.bfhselectbox($currencies.data()); - } - $currencies.bfhcurrencies($currencies.data()); - }); - }); - - -}(window.jQuery); - -/* ========================================================== - * bootstrap-formhelpers-datepicker.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -+function ($) { - - 'use strict'; - - - /* BFHDATEPICKER CLASS DEFINITION - * ========================= */ - - var toggle = '[data-toggle=bfh-datepicker]', - BFHDatePicker = function (element, options) { - this.options = $.extend({}, $.fn.bfhdatepicker.defaults, options); - this.$element = $(element); - - this.initCalendar(); - }; - - BFHDatePicker.prototype = { - - constructor: BFHDatePicker, - - setDate: function() { - var date, - today, - format; - - date = this.options.date; - format = this.options.format; - - if (date === '' || date === 'today' || date === undefined) { - today = new Date(); - - if (date === 'today') { - this.$element.val(formatDate(format, today.getMonth(), today.getFullYear(), today.getDate())); - } - - this.$element.data('month', today.getMonth()); - this.$element.data('year', today.getFullYear()); - } else { - this.$element.val(date); - this.$element.data('month', Number(getDatePart(format, date, 'm') - 1)); - this.$element.data('year', Number(getDatePart(format, date, 'y'))); - } - }, - - setDateLimit: function(date, limitPrefix) { - var today, - format; - - format = this.options.format; - - if (date !== '') { - this.$element.data(limitPrefix + 'limit', true); - - if (date === 'today') { - today = new Date(); - - this.$element.data(limitPrefix + 'day', today.getDate()); - this.$element.data(limitPrefix + 'month', today.getMonth()); - this.$element.data(limitPrefix + 'year', today.getFullYear()); - } else { - this.$element.data(limitPrefix + 'day', Number(getDatePart(format, date, 'd'))); - this.$element.data(limitPrefix + 'month', Number(getDatePart(format, date, 'm') - 1)); - this.$element.data(limitPrefix + 'year', Number(getDatePart(format, date, 'y'))); - } - } else { - this.$element.data(limitPrefix + 'limit', false); - } - }, - - initCalendar: function() { - var iconLeft, - iconRight, - iconAddon; - - iconLeft = ''; - iconRight = ''; - iconAddon = ''; - if (this.options.icon !== '') { - if (this.options.align === 'right') { - iconRight = '<span class="input-group-addon"><i class="' + this.options.icon + '"></i></span>'; - } else { - iconLeft = '<span class="input-group-addon"><i class="' + this.options.icon + '"></i></span>'; - } - iconAddon = 'input-group'; - } - - this.$element.html( - '<div class="' + iconAddon + ' bfh-datepicker-toggle" data-toggle="bfh-datepicker">' + - iconLeft + - '<input type="text" name="' + this.options.name + '" class="' + this.options.input + '" placeholder="' + this.options.placeholder + '" readonly>' + - iconRight + - '</div>' + - '<div class="bfh-datepicker-calendar">' + - '<table class="calendar table table-bordered">' + - '<thead>' + - '<tr class="months-header">' + - '<th class="month" colspan="4">' + - '<a class="previous" href="#"><i class="glyphicon glyphicon-chevron-left"></i></a>' + - '<span></span>' + - '<a class="next" href="#"><i class="glyphicon glyphicon-chevron-right"></i></a>' + - '</th>' + - '<th class="year" colspan="3">' + - '<a class="previous" href="#"><i class="glyphicon glyphicon-chevron-left"></i></a>' + - '<span></span>' + - '<a class="next" href="#"><i class="glyphicon glyphicon-chevron-right"></i></a>' + - '</th>' + - '</tr>' + - '<tr class="days-header">' + - '</tr>' + - '</thead>' + - '<tbody>' + - '</tbody>' + - '</table>' + - '</div>' - ); - - this.$element - .on('click.bfhdatepicker.data-api touchstart.bfhdatepicker.data-api', toggle, BFHDatePicker.prototype.toggle) - .on('click.bfhdatepicker.data-api touchstart.bfhdatepicker.data-api', '.bfh-datepicker-calendar > table.calendar .month > .previous', BFHDatePicker.prototype.previousMonth) - .on('click.bfhdatepicker.data-api touchstart.bfhdatepicker.data-api', '.bfh-datepicker-calendar > table.calendar .month > .next', BFHDatePicker.prototype.nextMonth) - .on('click.bfhdatepicker.data-api touchstart.bfhdatepicker.data-api', '.bfh-datepicker-calendar > table.calendar .year > .previous', BFHDatePicker.prototype.previousYear) - .on('click.bfhdatepicker.data-api touchstart.bfhdatepicker.data-api', '.bfh-datepicker-calendar > table.calendar .year > .next', BFHDatePicker.prototype.nextYear) - .on('click.bfhdatepicker.data-api touchstart.bfhdatepicker.data-api', '.bfh-datepicker-calendar > table.calendar td:not(.off)', BFHDatePicker.prototype.select) - .on('click.bfhdatepicker.data-api touchstart.bfhdatepicker.data-api', '.bfh-datepicker-calendar > table.calendar', function() { return false; }); - - this.setDate(); - this.setDateLimit(this.options.min, 'lower'); - this.setDateLimit(this.options.max, 'higher'); - - this.updateCalendar(); - }, - - updateCalendarHeader: function($calendar, month, year) { - var $daysHeader, - day; - - $calendar.find('table > thead > tr > th.month > span').text(BFHMonthsList[month]); - $calendar.find('table > thead > tr > th.year > span').text(year); - - $daysHeader = $calendar.find('table > thead > tr.days-header'); - $daysHeader.html(''); - for (day=BFHDayOfWeekStart; day < BFHDaysList.length; day=day+1) { - $daysHeader.append('<th>' + BFHDaysList[day] + '</th>'); - } - for (day=0; day < BFHDayOfWeekStart; day=day+1) { - $daysHeader.append('<th>' + BFHDaysList[day] + '</th>'); - } - }, - - checkMinDate: function(day, month, year) { - var lowerlimit, - lowerday, - lowermonth, - loweryear; - - lowerlimit = this.$element.data('lowerlimit'); - - if (lowerlimit === true) { - lowerday = this.$element.data('lowerday'); - lowermonth = this.$element.data('lowermonth'); - loweryear = this.$element.data('loweryear'); - - if ((day < lowerday && month === lowermonth && year === loweryear) || (month < lowermonth && year === loweryear) || (year < loweryear)) { - return true; - } - } - - return false; - }, - - checkMaxDate: function(day, month, year) { - var higherlimit, - higherday, - highermonth, - higheryear; - - higherlimit = this.$element.data('higherlimit'); - - if (higherlimit === true) { - higherday = this.$element.data('higherday'); - highermonth = this.$element.data('highermonth'); - higheryear = this.$element.data('higheryear'); - - if ((day > higherday && month === highermonth && year === higheryear) || (month > highermonth && year === higheryear) || (year > higheryear)) { - return true; - } - } - - return false; - }, - - checkToday: function(day, month, year) { - var today; - - today = new Date(); - - if (day === today.getDate() && month === today.getMonth() && year === today.getFullYear()) { - return true; - } - - return false; - }, - - updateCalendarDays: function($calendar, month, year) { - var $days, - numDaysPreviousMonth, - numDaysCurrentMonth, - firstDay, - lastDay, - row, - day; - - $days = $calendar.find('table > tbody').html(''); - numDaysPreviousMonth = getNumDaysInMonth(month, year); - numDaysCurrentMonth = getNumDaysInMonth(month + 1, year); - firstDay = getDayOfWeek(month, year, 1); - lastDay = getDayOfWeek(month, year, numDaysCurrentMonth); - - row = ''; - for (day=0; day < (firstDay - BFHDayOfWeekStart + 7) % 7; day=day+1) { - row += '<td class="off">' + (numDaysPreviousMonth - (firstDay - BFHDayOfWeekStart + 7) % 7 + day + 1) + '</td>'; - } - - for (day=1; day <= numDaysCurrentMonth; day=day+1) { - if (this.checkMinDate(day, month, year)) { - row += '<td data-day="' + day + '" class="off">' + day + '</td>'; - } else if (this.checkMaxDate(day, month, year)) { - row += '<td data-day="' + day + '" class="off">' + day + '</td>'; - } else if (this.checkToday(day, month, year)) { - row += '<td data-day="' + day + '" class="today">' + day + '</td>'; - } else { - row += '<td data-day="' + day + '">' + day + '</td>'; - } - if (getDayOfWeek(month, year, day) === (6 + BFHDayOfWeekStart) % 7) { - $days.append('<tr>' + row + '</tr>'); - row = ''; - } - } - - for (day=1; day <= (7 - ((lastDay + 1 - BFHDayOfWeekStart + 7) % 7)) % 7 + 1; day=day+1) { - row += '<td class="off">' + day + '</td>'; - if (day === (7 - ((lastDay + 1 - BFHDayOfWeekStart + 7) % 7)) % 7) { - $days.append('<tr>' + row + '</tr>'); - } - } - }, - - updateCalendar: function () { - var $calendar, - month, - year; - - $calendar = this.$element.find('.bfh-datepicker-calendar'); - month = this.$element.data('month'); - year = this.$element.data('year'); - - this.updateCalendarHeader($calendar, month, year); - this.updateCalendarDays($calendar, month, year); - }, - - previousMonth: function () { - var $this, - $parent, - $datePicker; - - $this = $(this); - $parent = getParent($this); - - if (Number($parent.data('month')) === 0) { - $parent.data('month', 11); - $parent.data('year', Number($parent.data('year')) - 1); - } else { - $parent.data('month', Number($parent.data('month')) - 1); - } - - $datePicker = $parent.data('bfhdatepicker'); - $datePicker.updateCalendar(); - - return false; - }, - - nextMonth: function () { - var $this, - $parent, - $datePicker; - - $this = $(this); - $parent = getParent($this); - - if (Number($parent.data('month')) === 11) { - $parent.data('month', 0); - $parent.data('year', Number($parent.data('year')) + 1); - } else { - $parent.data('month', Number($parent.data('month')) + 1); - } - - $datePicker = $parent.data('bfhdatepicker'); - $datePicker.updateCalendar(); - - return false; - }, - - previousYear: function () { - var $this, - $parent, - $datePicker; - - $this = $(this); - $parent = getParent($this); - - $parent.data('year', Number($parent.data('year')) - 1); - - $datePicker = $parent.data('bfhdatepicker'); - $datePicker.updateCalendar(); - - return false; - }, - - nextYear: function () { - var $this, - $parent, - $datePicker; - - $this = $(this); - $parent = getParent($this); - - $parent.data('year', Number($parent.data('year')) + 1); - - $datePicker = $parent.data('bfhdatepicker'); - $datePicker.updateCalendar(); - - return false; - }, - - select: function (e) { - var $this, - $parent, - $datePicker, - month, - year, - day; - - $this = $(this); - - e.preventDefault(); - e.stopPropagation(); - - $parent = getParent($this); - $datePicker = $parent.data('bfhdatepicker'); - month = $parent.data('month'); - year = $parent.data('year'); - day = $this.data('day'); - - $parent.val(formatDate($datePicker.options.format, month, year, day)); - $parent.trigger('change.bfhdatepicker'); - - if ($datePicker.options.close === true) { - clearMenus(); - } - }, - - toggle: function (e) { - var $this, - $parent, - isActive; - - $this = $(this); - $parent = getParent($this); - - if ($parent.is('.disabled') || $parent.attr('disabled') !== undefined) { - return true; - } - - isActive = $parent.hasClass('open'); - - clearMenus(); - - if (!isActive) { - $parent.trigger(e = $.Event('show.bfhdatepicker')); - - if (e.isDefaultPrevented()) { - return true; - } - - $parent - .toggleClass('open') - .trigger('shown.bfhdatepicker'); - - $this.focus(); - } - - return false; - } - }; - - function getNumDaysInMonth(month, year) { - return new Date(year, month, 0).getDate(); - } - - function getDayOfWeek(month, year, day) { - return new Date(year, month, day).getDay(); - } - - function formatDate(format, month, year, day) { - month += 1; - month = String(month); - day = String(day); - - if (month.length === 1) { - month = '0' + month; - } - if (day.length === 1) { - day = '0' + day; - } - - return format.replace('m', month).replace('y', year).replace('d', day); - } - - function getDatePart(format, date, part) { - var partPositions, - partPosition, - parts; - - partPositions = [ - {'part': 'm', 'position': format.indexOf('m')}, - {'part': 'y', 'position': format.indexOf('y')}, - {'part': 'd', 'position': format.indexOf('d')} - ]; - - partPositions.sort(function(a, b) {return a.position - b.position;}); - - parts = date.match(/(\d+)/g); - - for (partPosition in partPositions) { - if (partPositions.hasOwnProperty(partPosition)) { - if (partPositions[partPosition].part === part) { - return Number(parts[partPosition]).toString(); - } - } - } - } - - function clearMenus() { - var $parent; - - $(toggle).each(function (e) { - $parent = getParent($(this)); - - if (!$parent.hasClass('open')) { - return true; - } - - $parent.trigger(e = $.Event('hide.bfhdatepicker')); - - if (e.isDefaultPrevented()) { - return true; - } - - $parent - .removeClass('open') - .trigger('hidden.bfhdatepicker'); - }); - } - - function getParent($this) { - return $this.closest('.bfh-datepicker'); - } - - - /* DATEPICKER PLUGIN DEFINITION - * ========================== */ - - var old = $.fn.bfhdatepicker; - - $.fn.bfhdatepicker = function (option) { - return this.each(function () { - var $this, - data, - options; - - $this = $(this); - data = $this.data('bfhdatepicker'); - options = typeof option === 'object' && option; - this.type = 'bfhdatepicker'; - - if (!data) { - $this.data('bfhdatepicker', (data = new BFHDatePicker(this, options))); - } - if (typeof option === 'string') { - data[option].call($this); - } - }); - }; - - $.fn.bfhdatepicker.Constructor = BFHDatePicker; - - $.fn.bfhdatepicker.defaults = { - icon: 'glyphicon glyphicon-calendar', - align: 'left', - input: 'form-control', - placeholder: '', - name: '', - date: 'today', - format: 'm/d/y', - min: '', - max: '', - close: true - }; - - - /* DATEPICKER NO CONFLICT - * ========================== */ - - $.fn.bfhdatepicker.noConflict = function () { - $.fn.bfhdatepicker = old; - return this; - }; - - - /* DATEPICKER VALHOOKS - * ========================== */ - - var origHook; - if ($.valHooks.div){ - origHook = $.valHooks.div; - } - $.valHooks.div = { - get: function(el) { - if ($(el).hasClass('bfh-datepicker')) { - return $(el).find('input[type="text"]').val(); - } else if (origHook) { - return origHook.get(el); - } - }, - set: function(el, val) { - if ($(el).hasClass('bfh-datepicker')) { - $(el).find('input[type="text"]').val(val); - } else if (origHook) { - return origHook.set(el,val); - } - } - }; - - - /* DATEPICKER DATA-API - * ============== */ - - $(document).ready( function () { - $('div.bfh-datepicker').each(function () { - var $datepicker; - - $datepicker = $(this); - - $datepicker.bfhdatepicker($datepicker.data()); - }); - }); - - - /* APPLY TO STANDARD DATEPICKER ELEMENTS - * =================================== */ - - $(document) - .on('click.bfhdatepicker.data-api', clearMenus); - -}(window.jQuery); - -/* ========================================================== - * bootstrap-formhelpers-fonts.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * contributed by Aaron Collegeman, Squidoo, 2012 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -+function ($) { - - 'use strict'; - - - /* FONTS CLASS DEFINITION - * ====================== */ - - var BFHFonts = function (element, options) { - this.options = $.extend({}, $.fn.bfhfonts.defaults, options); - this.$element = $(element); - - if (this.$element.is('select')) { - this.addFonts(); - } - - if (this.$element.hasClass('bfh-selectbox')) { - this.addBootstrapFonts(); - } - }; - - BFHFonts.prototype = { - - constructor: BFHFonts, - - getFonts: function() { - var font, - fonts; - - if (this.options.available) { - fonts = []; - - this.options.available = this.options.available.split(','); - - for (font in BFHFontsList) { - if (BFHFontsList.hasOwnProperty(font)) { - if ($.inArray(font, this.options.available) >= 0) { - fonts[font] = BFHFontsList[font]; - } - } - } - - return fonts; - } else { - return BFHFontsList; - } - }, - - addFonts: function () { - var value, - font, - fonts; - - value = this.options.font; - fonts = this.getFonts(); - - this.$element.html(''); - - if (this.options.blank === true) { - this.$element.append('<option value=""></option>'); - } - - for (font in fonts) { - if (fonts.hasOwnProperty(font)) { - this.$element.append('<option value="' + font + '">' + font + '</option>'); - } - } - - this.$element.val(value); - }, - - addBootstrapFonts: function() { - var $input, - $toggle, - $options, - value, - font, - fonts; - - value = this.options.font; - $input = this.$element.find('input[type="hidden"]'); - $toggle = this.$element.find('.bfh-selectbox-option'); - $options = this.$element.find('[role=option]'); - fonts = this.getFonts(); - - $options.html(''); - - if (this.options.blank === true) { - $options.append('<li><a tabindex="-1" href="#" data-option=""></a></li>'); - } - - for (font in fonts) { - if (fonts.hasOwnProperty(font)) { - $options.append('<li><a tabindex="-1" href="#" style=\'font-family: ' + fonts[font] + '\' data-option="' + font + '">' + font + '</a></li>'); - } - } - - this.$element.val(value); - } - - }; - - - /* FONTS PLUGIN DEFINITION - * ======================= */ - - var old = $.fn.bfhfonts; - - $.fn.bfhfonts = function (option) { - return this.each(function () { - var $this, - data, - options; - - $this = $(this); - data = $this.data('bfhfonts'); - options = typeof option === 'object' && option; - - if (!data) { - $this.data('bfhfonts', (data = new BFHFonts(this, options))); - } - if (typeof option === 'string') { - data[option].call($this); - } - }); - }; - - $.fn.bfhfonts.Constructor = BFHFonts; - - $.fn.bfhfonts.defaults = { - font: '', - available: '', - blank: true - }; - - - /* FONTS NO CONFLICT - * ========================== */ - - $.fn.bfhfonts.noConflict = function () { - $.fn.bfhfonts = old; - return this; - }; - - - /* FONTS DATA-API - * ============== */ - - $(document).ready( function () { - $('form select.bfh-fonts, span.bfh-fonts, div.bfh-fonts').each(function () { - var $fonts; - - $fonts = $(this); - - if ($fonts.hasClass('bfh-selectbox')) { - $fonts.bfhselectbox($fonts.data()); - } - $fonts.bfhfonts($fonts.data()); - }); - }); - -}(window.jQuery); - -/* ========================================================== - * bootstrap-formhelpers-fontsizes.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * contributed by Aaron Collegeman, Squidoo, 2012 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -+function ($) { - - 'use strict'; - - - /* FONTSIZES CLASS DEFINITION - * ====================== */ - - var BFHFontSizes = function (element, options) { - this.options = $.extend({}, $.fn.bfhfontsizes.defaults, options); - this.$element = $(element); - - if (this.$element.is('select')) { - this.addFontSizes(); - } - - if (this.$element.hasClass('bfh-selectbox')) { - this.addBootstrapFontSizes(); - } - }; - - BFHFontSizes.prototype = { - - constructor: BFHFontSizes, - - getFontsizes: function() { - var fontsize, - fontsizes; - - if (this.options.available) { - fontsizes = []; - - this.options.available = this.options.available.split(','); - - for (fontsize in BFHFontSizesList) { - if (BFHFontSizesList.hasOwnProperty(fontsize)) { - if ($.inArray(fontsize, this.options.available) >= 0) { - fontsizes[fontsize] = BFHFontSizesList[fontsize]; - } - } - } - - return fontsizes; - } else { - return BFHFontSizesList; - } - }, - - addFontSizes: function () { - var value, - fontsize, - fontsizes; - - value = this.options.fontsize; - fontsizes = this.getFontsizes(); - - this.$element.html(''); - - if (this.options.blank === true) { - this.$element.append('<option value=""></option>'); - } - - for (fontsize in fontsizes) { - if (fontsizes.hasOwnProperty(fontsize)) { - this.$element.append('<option value="' + fontsize + '">' + fontsizes[fontsize] + '</option>'); - } - } - - this.$element.val(value); - }, - - addBootstrapFontSizes: function() { - var $input, - $toggle, - $options, - value, - fontsize, - fontsizes; - - value = this.options.fontsize; - $input = this.$element.find('input[type="hidden"]'); - $toggle = this.$element.find('.bfh-selectbox-option'); - $options = this.$element.find('[role=option]'); - fontsizes = this.getFontsizes(); - - $options.html(''); - - if (this.options.blank === true) { - $options.append('<li><a tabindex="-1" href="#" data-option=""></a></li>'); - } - - for (fontsize in fontsizes) { - if (fontsizes.hasOwnProperty(fontsize)) { - $options.append('<li><a tabindex="-1" href="#" data-option="' + fontsize + '">' + fontsizes[fontsize] + '</a></li>'); - } - } - - this.$element.val(value); - } - - }; - - - /* FONTSIZES PLUGIN DEFINITION - * ======================= */ - - var old = $.fn.bfhfontsizes; - - $.fn.bfhfontsizes = function (option) { - return this.each(function () { - var $this, - data, - options; - - $this = $(this); - data = $this.data('bfhfontsizes'); - options = typeof option === 'object' && option; - - if (!data) { - $this.data('bfhfontsizes', (data = new BFHFontSizes(this, options))); - } - if (typeof option === 'string') { - data[option].call($this); - } - }); - }; - - $.fn.bfhfontsizes.Constructor = BFHFontSizes; - - $.fn.bfhfontsizes.defaults = { - fontsize: '', - available: '', - blank: true - }; - - - /* FONTSIZES NO CONFLICT - * ========================== */ - - $.fn.bfhfontsizes.noConflict = function () { - $.fn.bfhfontsizes = old; - return this; - }; - - - /* FONTSIZES DATA-API - * ============== */ - - $(document).ready( function () { - $('form select.bfh-fontsizes, span.bfh-fontsizes, div.bfh-fontsizes').each(function () { - var $fontSizes; - - $fontSizes = $(this); - - if ($fontSizes.hasClass('bfh-selectbox')) { - $fontSizes.bfhselectbox($fontSizes.data()); - } - $fontSizes.bfhfontsizes($fontSizes.data()); - }); - }); - -}(window.jQuery); - -/* ========================================================== - * bootstrap-formhelpers-googlefonts.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * contributed by Aaron Collegeman, Squidoo, 2012 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -+function ($) { - - 'use strict'; - - - /* GOOGLE FONTS CLASS DEFINITION - * ====================== */ - - var BFHGoogleFonts = function (element, options) { - this.options = $.extend({}, $.fn.bfhgooglefonts.defaults, options); - this.$element = $(element); - - if (this.$element.is('select')) { - this.addFonts(); - } - - if (this.$element.hasClass('bfh-selectbox')) { - this.addBootstrapFonts(); - } - }; - - BFHGoogleFonts.prototype = { - - constructor: BFHGoogleFonts, - - getFonts: function() { - var font, - fonts; - - fonts = []; - - if (this.options.subset) { - for (font in BFHGoogleFontsList.items) { - if (BFHGoogleFontsList.items.hasOwnProperty(font)) { - if ($.inArray(this.options.subset, BFHGoogleFontsList.items[font].subsets) >= 0) { - fonts[BFHGoogleFontsList.items[font].family] = { - 'info': BFHGoogleFontsList.items[font], - 'index': parseInt(font, 10) - }; - } - } - } - } else if (this.options.available) { - this.options.available = this.options.available.split(','); - - for (font in BFHGoogleFontsList.items) { - if (BFHGoogleFontsList.items.hasOwnProperty(font)) { - if ($.inArray(BFHGoogleFontsList.items[font].family, this.options.available) >= 0) { - fonts[BFHGoogleFontsList.items[font].family] = { - 'info': BFHGoogleFontsList.items[font], - 'index': parseInt(font, 10) - }; - } - } - } - } else { - for (font in BFHGoogleFontsList.items) { - if (BFHGoogleFontsList.items.hasOwnProperty(font)) { - fonts[BFHGoogleFontsList.items[font].family] = { - 'info': BFHGoogleFontsList.items[font], - 'index': parseInt(font, 10) - }; - } - } - } - - return fonts; - }, - - addFonts: function () { - var value, - font, - fonts; - - value = this.options.font; - fonts = this.getFonts(); - - this.$element.html(''); - - if (this.options.blank === true) { - this.$element.append('<option value=""></option>'); - } - - for (font in fonts) { - if (fonts.hasOwnProperty(font)) { - this.$element.append('<option value="' + fonts[font].info.family + '">' + fonts[font].info.family + '</option>'); - } - } - - this.$element.val(value); - }, - - addBootstrapFonts: function() { - var $input, - $toggle, - $options, - value, - font, - fonts; - - value = this.options.font; - $input = this.$element.find('input[type="hidden"]'); - $toggle = this.$element.find('.bfh-selectbox-option'); - $options = this.$element.find('[role=option]'); - fonts = this.getFonts(); - - $options.html(''); - - if (this.options.blank === true) { - $options.append('<li><a tabindex="-1" href="#" data-option="" style="background-image: none;"></a></li>'); - } - - for (font in fonts) { - if (fonts.hasOwnProperty(font)) { - $options.append('<li><a tabindex="-1" href="#" style="background-position: 0 -' + ((fonts[font].index * 30) - 2) + 'px;" data-option="' + fonts[font].info.family + '">' + fonts[font].info.family + '</a></li>'); - } - } - - this.$element.val(value); - } - - }; - - - /* GOOGLE FONTS PLUGIN DEFINITION - * ======================= */ - - var old = $.fn.bfhgooglefonts; - - $.fn.bfhgooglefonts = function (option) { - return this.each(function () { - var $this, - data, - options; - - $this = $(this); - data = $this.data('bfhgooglefonts'); - options = typeof option === 'object' && option; - - if (!data) { - $this.data('bfhgooglefonts', (data = new BFHGoogleFonts(this, options))); - } - if (typeof option === 'string') { - data[option].call($this); - } - }); - }; - - $.fn.bfhgooglefonts.Constructor = BFHGoogleFonts; - - $.fn.bfhgooglefonts.defaults = { - font: '', - available: '', - subset: '', - blank: true - }; - - - /* GOOGLE FONTS NO CONFLICT - * ========================== */ - - $.fn.bfhgooglefonts.noConflict = function () { - $.fn.bfhgooglefonts = old; - return this; - }; - - - /* GOOGLE FONTS DATA-API - * ============== */ - - $(document).ready( function () { - $('form select.bfh-googlefonts, span.bfh-googlefonts, div.bfh-googlefonts').each(function () { - var $googleFonts; - - $googleFonts = $(this); - - if ($googleFonts.hasClass('bfh-selectbox')) { - $googleFonts.bfhselectbox($googleFonts.data()); - } - $googleFonts.bfhgooglefonts($googleFonts.data()); - }); - }); - -}(window.jQuery); - -/* ========================================================== - * bootstrap-formhelpers-languages.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * Contribution 2013 Tomasz Kuter - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -+function ($) { - - 'use strict'; - - - /* LANGUAGES CLASS DEFINITION - * ====================== */ - - var BFHLanguages = function (element, options) { - this.options = $.extend({}, $.fn.bfhlanguages.defaults, options); - this.$element = $(element); - - if (this.$element.is('select')) { - this.addLanguages(); - } - - if (this.$element.is('span')) { - this.displayLanguage(); - } - - if (this.$element.hasClass('bfh-selectbox')) { - this.addBootstrapLanguages(); - } - }; - - BFHLanguages.prototype = { - - constructor: BFHLanguages, - - getLanguages: function () { - var split, - language, - languages; - - if (this.options.available) { - languages = []; - - this.options.available = this.options.available.split(','); - - for (language in this.options.available) { - if (this.options.available.hasOwnProperty(language)) { - if (this.options.available[language].indexOf('_') !== -1) { - split = this.options.available[language].split('_'); - languages[split[0]] = {name: BFHLanguagesList[split[0]], country: split[1]}; - } else { - languages[this.options.available[language]] = BFHLanguagesList[this.options.available[language]]; - } - } - } - - return languages; - } else { - return BFHLanguagesList; - } - }, - - addLanguages: function () { - var split, - value, - languages, - language; - - value = this.options.language; - languages = this.getLanguages(); - - this.$element.html(''); - - if (this.options.blank === true) { - this.$element.append('<option value=""></option>'); - } - - for (language in languages) { - if (languages.hasOwnProperty(language)) { - if (languages[language].hasOwnProperty('name')) { - this.$element.append('<option value="' + language + '_' + languages[language].country + '">' + languages[language].name.toProperCase() + ' (' + BFHCountriesList[languages[language].country] + ')</option>'); - } else { - this.$element.append('<option value="' + language + '">' + languages[language].toProperCase() + '</option>'); - } - } - } - - this.$element.val(value); - }, - - addBootstrapLanguages: function() { - var $input, - $toggle, - $options, - value, - languages, - language, - split; - - value = this.options.language; - $input = this.$element.find('input[type="hidden"]'); - $toggle = this.$element.find('.bfh-selectbox-option'); - $options = this.$element.find('[role=option]'); - languages = this.getLanguages(); - - $options.html(''); - - if (this.options.blank === true) { - $options.append('<li><a tabindex="-1" href="#" data-option=""></a></li>'); - } - - for (language in languages) { - if (languages.hasOwnProperty(language)) { - if (languages[language].hasOwnProperty('name')) { - if (this.options.flags === true) { - $options.append('<li><a tabindex="-1" href="#" data-option="' + language + '_' + languages[language].country + '"><i class="glyphicon bfh-flag-' + languages[language].country + '"></i>' + languages[language].name.toProperCase() + '</a></li>'); - } else { - $options.append('<li><a tabindex="-1" href="#" data-option="' + language + '_' + languages[language].country + '">' + languages[language].name.toProperCase() + ' (' + BFHCountriesList[languages[language].country] + ')</a></li>'); - } - } else { - $options.append('<li><a tabindex="-1" href="#" data-option="' + language + '">' + languages[language] + '</a></li>'); - } - } - } - - this.$element.val(value); - }, - - displayLanguage: function () { - var value; - - value = this.options.language; - - if (value.indexOf('_') !== -1) { - value = value.split('_'); - if (this.options.flags === true) { - this.$element.html('<i class="glyphicon bfh-flag-' + value[1] + '"></i> ' + BFHLanguagesList[value[0]].toProperCase()); - } else { - this.$element.html(BFHLanguagesList[value[0]].toProperCase() + ' (' + BFHCountriesList[value[1]] + ')'); - } - } else { - this.$element.html(BFHLanguagesList[value].toProperCase()); - } - } - - }; - - - /* LANGUAGES PLUGIN DEFINITION - * ======================= */ - - var old = $.fn.bfhlanguages; - - $.fn.bfhlanguages = function (option) { - return this.each(function () { - var $this, - data, - options; - - $this = $(this); - data = $this.data('bfhlanguages'); - options = typeof option === 'object' && option; - - if (!data) { - $this.data('bfhlanguages', (data = new BFHLanguages(this, options))); - } - if (typeof option === 'string') { - data[option].call($this); - } - }); - }; - - $.fn.bfhlanguages.Constructor = BFHLanguages; - - $.fn.bfhlanguages.defaults = { - language: '', - available: '', - flags: false, - blank: true - }; - - - /* LANGUAGES NO CONFLICT - * ========================== */ - - $.fn.bfhlanguages.noConflict = function () { - $.fn.bfhlanguages = old; - return this; - }; - - - /* LANGUAGES DATA-API - * ============== */ - - $(document).ready( function () { - $('form select.bfh-languages, span.bfh-languages, div.bfh-languages').each(function () { - var $languages; - - $languages = $(this); - - if ($languages.hasClass('bfh-selectbox')) { - $languages.bfhselectbox($languages.data()); - } - $languages.bfhlanguages($languages.data()); - }); - }); - - - /* LANGUAGES HELPERS - * ============== */ - - String.prototype.toProperCase = function () { - return this.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); - }; - -}(window.jQuery); - -/* ========================================================== - * bootstrap-formhelpers-number.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -+function ($) { - - 'use strict'; - - - /* NUMBER CLASS DEFINITION - * ====================== */ - - var BFHNumber = function (element, options) { - this.options = $.extend({}, $.fn.bfhnumber.defaults, options); - this.$element = $(element); - - this.initInput(); - }; - - BFHNumber.prototype = { - - constructor: BFHNumber, - - initInput: function() { - var value; - - if (this.options.buttons === true) { - this.$element.wrap('<div class="input-group"></div>'); - this.$element.parent().append('<span class="input-group-addon bfh-number-btn inc"><span class="glyphicon glyphicon-chevron-up"></span></span>'); - this.$element.parent().append('<span class="input-group-addon bfh-number-btn dec"><span class="glyphicon glyphicon-chevron-down"></span></span>'); - } - - this.$element.on('change.bfhnumber.data-api', BFHNumber.prototype.change); - - if (this.options.keyboard === true) { - this.$element.on('keydown.bfhnumber.data-api', BFHNumber.prototype.keydown); - } - - if (this.options.buttons === true) { - this.$element.parent() - .on('mousedown.bfhnumber.data-api', '.inc', BFHNumber.prototype.btninc) - .on('mousedown.bfhnumber.data-api', '.dec', BFHNumber.prototype.btndec); - } - - this.formatNumber(); - }, - - keydown: function(e) { - var $this; - - $this = $(this).data('bfhnumber'); - - if ($this.$element.is('.disabled') || $this.$element.attr('disabled') !== undefined) { - return true; - } - - switch (e.which) { - case 38: - $this.increment(); - break; - case 40: - $this.decrement(); - break; - default: - } - - return true; - }, - - mouseup: function(e) { - var $this, - timer, - interval; - - $this = e.data.btn; - timer = $this.$element.data('timer'); - interval = $this.$element.data('interval'); - - clearTimeout(timer); - clearInterval(interval); - }, - - btninc: function() { - var $this, - timer; - - $this = $(this).parent().find('.bfh-number').data('bfhnumber'); - - if ($this.$element.is('.disabled') || $this.$element.attr('disabled') !== undefined) { - return true; - } - - $this.increment(); - - timer = setTimeout(function() { - var interval; - interval = setInterval(function() { - $this.increment(); - }, 80); - $this.$element.data('interval', interval); - }, 750); - $this.$element.data('timer', timer); - - $(document).one('mouseup', {btn: $this}, BFHNumber.prototype.mouseup); - - return true; - }, - - btndec: function() { - var $this, - timer; - - $this = $(this).parent().find('.bfh-number').data('bfhnumber'); - - if ($this.$element.is('.disabled') || $this.$element.attr('disabled') !== undefined) { - return true; - } - - $this.decrement(); - - timer = setTimeout(function() { - var interval; - interval = setInterval(function() { - $this.decrement(); - }, 80); - $this.$element.data('interval', interval); - }, 750); - $this.$element.data('timer', timer); - - $(document).one('mouseup', {btn: $this}, BFHNumber.prototype.mouseup); - - return true; - }, - - change: function() { - var $this; - - $this = $(this).data('bfhnumber'); - - if ($this.$element.is('.disabled') || $this.$element.attr('disabled') !== undefined) { - return true; - } - - $this.formatNumber(); - - return true; - }, - - increment: function() { - var value; - - value = this.getValue(); - - value = value + 1; - - this.$element.val(value).change(); - }, - - decrement: function() { - var value; - - value = this.getValue(); - - value = value - 1; - - this.$element.val(value).change(); - }, - - getValue: function() { - var value; - - value = this.$element.val(); - if (value !== '-1') { - value = String(value).replace(/\D/g, ''); - } - if (String(value).length === 0) { - value = this.options.min; - } - - return parseInt(value); - }, - - formatNumber: function() { - var value, - maxLength, - length, - zero; - - value = this.getValue(); - - if (value > this.options.max) { - if (this.options.wrap === true) { - value = this.options.min; - } else { - value = this.options.max; - } - } - - if (value < this.options.min) { - if (this.options.wrap === true) { - value = this.options.max; - } else { - value = this.options.min; - } - } - - if (this.options.zeros === true) { - maxLength = String(this.options.max).length; - length = String(value).length; - for (zero=length; zero < maxLength; zero = zero + 1) { - value = '0' + value; - } - } - - if (value !== this.$element.val()) { - this.$element.val(value); - } - } - - }; - - /* NUMBER PLUGIN DEFINITION - * ======================= */ - - var old = $.fn.bfhnumber; - - $.fn.bfhnumber = function (option) { - return this.each(function () { - var $this, - data, - options; - - $this = $(this); - data = $this.data('bfhnumber'); - options = typeof option === 'object' && option; - - if (!data) { - $this.data('bfhnumber', (data = new BFHNumber(this, options))); - } - if (typeof option === 'string') { - data[option].call($this); - } - }); - }; - - $.fn.bfhnumber.Constructor = BFHNumber; - - $.fn.bfhnumber.defaults = { - min: 0, - max: 9999, - zeros: false, - keyboard: true, - buttons: true, - wrap: false - }; - - - /* NUMBER NO CONFLICT - * ========================== */ - - $.fn.bfhnumber.noConflict = function () { - $.fn.bfhnumber = old; - return this; - }; - - - /* NUMBER DATA-API - * ============== */ - - $(document).ready( function () { - $('form input[type="text"].bfh-number, form input[type="number"].bfh-number').each(function () { - var $number; - - $number = $(this); - - $number.bfhnumber($number.data()); - }); - }); - - - /* APPLY TO STANDARD NUMBER ELEMENTS - * =================================== */ - - -}(window.jQuery); - -/* ========================================================== - * bootstrap-formhelpers-phone.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -+function ($) { - - 'use strict'; - - - /* PHONE CLASS DEFINITION - * ====================== */ - - var BFHPhone = function (element, options) { - this.options = $.extend({}, $.fn.bfhphone.defaults, options); - this.$element = $(element); - - if (this.$element.is('input[type="text"]') || this.$element.is('input[type="tel"]')) { - this.addFormatter(); - } - - if (this.$element.is('span')) { - this.displayFormatter(); - } - }; - - BFHPhone.prototype = { - - constructor: BFHPhone, - - addFormatter: function() { - var $country; - - if (this.options.country !== '') { - $country = $(document).find('#' + this.options.country); - - if ($country.length !== 0) { - this.options.format = BFHPhoneFormatList[$country.val()]; - $country.on('change', {phone: this}, this.changeCountry); - } else { - this.options.format = BFHPhoneFormatList[this.options.country]; - } - } - - this.$element.on('keyup.bfhphone.data-api', BFHPhone.prototype.change); - - this.loadFormatter(); - }, - - loadFormatter: function () { - var formattedNumber; - - formattedNumber = formatNumber(this.options.format, this.$element.val()); - - this.$element.val(formattedNumber); - }, - - displayFormatter: function () { - var formattedNumber; - - if (this.options.country !== '') { - this.options.format = BFHPhoneFormatList[this.options.country]; - } - - formattedNumber = formatNumber(this.options.format, this.options.number); - - this.$element.html(formattedNumber); - }, - - changeCountry: function (e) { - var $this, - $phone; - - $this = $(this); - $phone = e.data.phone; - - $phone.$element.val(String($phone.$element.val()).replace(/\+\d*/g, '')); - $phone.options.format = BFHPhoneFormatList[$this.val()]; - - $phone.loadFormatter(); - }, - - change: function(e) { - var $this, - cursorPosition, - cursorEnd, - formattedNumber; - - $this = $(this).data('bfhphone'); - - if ($this.$element.is('.disabled') || $this.$element.attr('disabled') !== undefined) { - return true; - } - - cursorPosition = getCursorPosition($this.$element[0]); - - cursorEnd = false; - if (cursorPosition === $this.$element.val().length) { - cursorEnd = true; - } - - if (e.which === 8 && $this.options.format.charAt($this.$element.val().length) !== 'd') { - $this.$element.val(String($this.$element.val()).substring(0, $this.$element.val().length - 1)); - } - - formattedNumber = formatNumber($this.options.format, $this.$element.val()); - - if (formattedNumber === $this.$element.val()) { - return true; - } - - $this.$element.val(formattedNumber); - - if (cursorEnd) { - cursorPosition = $this.$element.val().length; - } - - setCursorPosition($this.$element[0], cursorPosition); - - return true; - } - - }; - - function formatNumber(format, number) { - var formattedNumber, - indexFormat, - indexNumber, - lastCharacter; - - formattedNumber = ''; - number = String(number).replace(/\D/g, ''); - - for (indexFormat = 0, indexNumber = 0; indexFormat < format.length; indexFormat = indexFormat + 1) { - if (/\d/g.test(format.charAt(indexFormat))) { - if (format.charAt(indexFormat) === number.charAt(indexNumber)) { - formattedNumber += number.charAt(indexNumber); - indexNumber = indexNumber + 1; - } else { - formattedNumber += format.charAt(indexFormat); - } - } else if (format.charAt(indexFormat) !== 'd') { - if (number.charAt(indexNumber) !== '' || format.charAt(indexFormat) === '+') { - formattedNumber += format.charAt(indexFormat); - } - } else { - if (number.charAt(indexNumber) === '') { - formattedNumber += ''; - } else { - formattedNumber += number.charAt(indexNumber); - indexNumber = indexNumber + 1; - } - } - } - - lastCharacter = format.charAt(formattedNumber.length); - if (lastCharacter !== 'd') { - formattedNumber += lastCharacter; - } - - return formattedNumber; - } - - function getCursorPosition($element) { - var position = 0, - selection; - - if (document.selection) { - // IE Support - $element.focus(); - selection = document.selection.createRange(); - selection.moveStart ('character', -$element.value.length); - position = selection.text.length; - } else if ($element.selectionStart || $element.selectionStart === 0) { - position = $element.selectionStart; - } - - return position; - } - - function setCursorPosition($element, position) { - var selection; - - if (document.selection) { - // IE Support - $element.focus (); - selection = document.selection.createRange(); - selection.moveStart ('character', -$element.value.length); - selection.moveStart ('character', position); - selection.moveEnd ('character', 0); - selection.select (); - } else if ($element.selectionStart || $element.selectionStart === 0) { - $element.selectionStart = position; - $element.selectionEnd = position; - $element.focus (); - } - } - - /* PHONE PLUGIN DEFINITION - * ======================= */ - - var old = $.fn.bfhphone; - - $.fn.bfhphone = function (option) { - return this.each(function () { - var $this, - data, - options; - - $this = $(this); - data = $this.data('bfhphone'); - options = typeof option === 'object' && option; - - if (!data) { - $this.data('bfhphone', (data = new BFHPhone(this, options))); - } - if (typeof option === 'string') { - data[option].call($this); - } - }); - }; - - $.fn.bfhphone.Constructor = BFHPhone; - - $.fn.bfhphone.defaults = { - format: '', - number: '', - country: '' - }; - - - /* PHONE NO CONFLICT - * ========================== */ - - $.fn.bfhphone.noConflict = function () { - $.fn.bfhphone = old; - return this; - }; - - - /* PHONE DATA-API - * ============== */ - - $(document).ready( function () { - $('form input[type="text"].bfh-phone, form input[type="tel"].bfh-phone, span.bfh-phone').each(function () { - var $phone; - - $phone = $(this); - - $phone.bfhphone($phone.data()); - }); - }); - -}(window.jQuery); - -/* ========================================================== - * bootstrap-formhelpers-selectbox.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -+function ($) { - - 'use strict'; - - - /* SELECTBOX CLASS DEFINITION - * ========================= */ - - var toggle = '[data-toggle=bfh-selectbox]', - BFHSelectBox = function (element, options) { - this.options = $.extend({}, $.fn.bfhselectbox.defaults, options); - this.$element = $(element); - - this.initSelectBox(); - }; - - BFHSelectBox.prototype = { - - constructor: BFHSelectBox, - - initSelectBox: function () { - var options; - - options = ''; - this.$element.find('div').each(function() { - options = options + '<li><a tabindex="-1" href="#" data-option="' + $(this).data('value') + '">' + $(this).html() + '</a></li>'; - }); - - this.$element.html( - '<input type="hidden" name="' + this.options.name + '" value="">' + - '<a class="bfh-selectbox-toggle ' + this.options.input + '" role="button" data-toggle="bfh-selectbox" href="#">' + - '<span class="bfh-selectbox-option"></span>' + - '<span class="' + this.options.icon + ' selectbox-caret"></span>' + - '</a>' + - '<div class="bfh-selectbox-options">' + - '<div role="listbox">' + - '<ul role="option">' + - '</ul>' + - '</div>' + - '</div>' - ); - - this.$element.find('[role=option]').html(options); - - if (this.options.filter === true) { - this.$element.find('.bfh-selectbox-options').prepend('<div class="bfh-selectbox-filter-container"><input type="text" class="bfh-selectbox-filter form-control"></div>'); - } - - this.$element.val(this.options.value); - - this.$element - .on('click.bfhselectbox.data-api touchstart.bfhselectbox.data-api', toggle, BFHSelectBox.prototype.toggle) - .on('keydown.bfhselectbox.data-api', toggle + ', [role=option]' , BFHSelectBox.prototype.keydown) - .on('mouseenter.bfhselectbox.data-api', '[role=option] > li > a', BFHSelectBox.prototype.mouseenter) - .on('click.bfhselectbox.data-api', '[role=option] > li > a', BFHSelectBox.prototype.select) - .on('click.bfhselectbox.data-api', '.bfh-selectbox-filter', function () { return false; }) - .on('propertychange.bfhselectbox.data-api change.bfhselectbox.data-api input.bfhselectbox.data-api paste.bfhselectbox.data-api', '.bfh-selectbox-filter', BFHSelectBox.prototype.filter); - }, - - toggle: function (e) { - var $this, - $parent, - isActive; - - $this = $(this); - $parent = getParent($this); - - if ($parent.is('.disabled') || $parent.attr('disabled') !== undefined) { - return true; - } - - isActive = $parent.hasClass('open'); - - clearMenus(); - - if (!isActive) { - $parent.trigger(e = $.Event('show.bfhselectbox')); - - if (e.isDefaultPrevented()) { - return true; - } - - $parent - .toggleClass('open') - .trigger('shown.bfhselectbox') - .find('[role=option] > li > [data-option="' + $parent.val() + '"]').focus(); - } - - return false; - }, - - filter: function() { - var $this, - $parent, - $items; - - $this = $(this); - $parent = getParent($this); - - $items = $('[role=option] li a', $parent); - $items - .hide() - .filter(function() { - return ($(this).text().toUpperCase().indexOf($this.val().toUpperCase()) !== -1); - }) - .show(); - }, - - keydown: function (e) { - var $this, - $items, - $parent, - $subItems, - isActive, - index, - selectedIndex; - - if (!/(38|40|27)/.test(e.keyCode)) { - return true; - } - - $this = $(this); - - e.preventDefault(); - e.stopPropagation(); - - $parent = getParent($this); - isActive = $parent.hasClass('open'); - - if (!isActive || (isActive && e.keyCode === 27)) { - if (e.which === 27) { - $parent.find(toggle).focus(); - } - - return $this.click(); - } - - $items = $('[role=option] li:not(.divider) a:visible', $parent); - - if (!$items.length) { - return true; - } - - $('body').off('mouseenter.bfh-selectbox.data-api', '[role=option] > li > a', BFHSelectBox.prototype.mouseenter); - index = $items.index($items.filter(':focus')); - - if (e.keyCode === 38 && index > 0) { - index = index - 1; - } - - if (e.keyCode === 40 && index < $items.length - 1) { - index = index + 1; - } - - if (!index) { - index = 0; - } - - $items.eq(index).focus(); - $('body').on('mouseenter.bfh-selectbox.data-api', '[role=option] > li > a', BFHSelectBox.prototype.mouseenter); - }, - - mouseenter: function () { - var $this; - - $this = $(this); - - $this.focus(); - }, - - select: function (e) { - var $this, - $parent, - $span, - $input; - - $this = $(this); - - e.preventDefault(); - e.stopPropagation(); - - if ($this.is('.disabled') || $this.attr('disabled') !== undefined) { - return true; - } - - $parent = getParent($this); - - $parent.val($this.data('option')); - $parent.trigger('change.bfhselectbox'); - - clearMenus(); - } - - }; - - function clearMenus() { - var $parent; - - $(toggle).each(function (e) { - $parent = getParent($(this)); - - if (!$parent.hasClass('open')) { - return true; - } - - $parent.trigger(e = $.Event('hide.bfhselectbox')); - - if (e.isDefaultPrevented()) { - return true; - } - - $parent - .removeClass('open') - .trigger('hidden.bfhselectbox'); - }); - } - - function getParent($this) { - return $this.closest('.bfh-selectbox'); - } - - - /* SELECTBOX PLUGIN DEFINITION - * ========================== */ - - var old = $.fn.bfhselectbox; - - $.fn.bfhselectbox = function (option) { - return this.each(function () { - var $this, - data, - options; - - $this = $(this); - data = $this.data('bfhselectbox'); - options = typeof option === 'object' && option; - this.type = 'bfhselectbox'; - - if (!data) { - $this.data('bfhselectbox', (data = new BFHSelectBox(this, options))); - } - if (typeof option === 'string') { - data[option].call($this); - } - }); - }; - - $.fn.bfhselectbox.Constructor = BFHSelectBox; - - $.fn.bfhselectbox.defaults = { - icon: 'caret', - input: 'form-control', - name: '', - value: '', - filter: false - }; - - - /* SELECTBOX NO CONFLICT - * ========================== */ - - $.fn.bfhselectbox.noConflict = function () { - $.fn.bfhselectbox = old; - return this; - }; - - - /* SELECTBOX VALHOOKS - * ========================== */ - - var origHook; - if ($.valHooks.div){ - origHook = $.valHooks.div; - } - $.valHooks.div = { - get: function(el) { - if ($(el).hasClass('bfh-selectbox')) { - return $(el).find('input[type="hidden"]').val(); - } else if (origHook) { - return origHook.get(el); - } - }, - set: function(el, val) { - var $el, - html; - - if ($(el).hasClass('bfh-selectbox')) { - - $el = $(el); - if ($el.find('li a[data-option=\'' + val + '\']').length > 0) { - html = $el.find('li a[data-option=\'' + val + '\']').html(); - } else if ($el.find('li a').length > 0) { - html = $el.find('li a').eq(0).html(); - } else { - val = ''; - html = ''; - } - - $el.find('input[type="hidden"]').val(val); - $el.find('.bfh-selectbox-option').html(html); - } else if (origHook) { - return origHook.set(el,val); - } - } - }; - - - /* SELECTBOX DATA-API - * ============== */ - - $(document).ready( function () { - $('div.bfh-selectbox').each(function () { - var $selectbox; - - $selectbox = $(this); - - $selectbox.bfhselectbox($selectbox.data()); - }); - }); - - - /* APPLY TO STANDARD SELECTBOX ELEMENTS - * =================================== */ - - $(document) - .on('click.bfhselectbox.data-api', clearMenus); - -}(window.jQuery); - -/* ========================================================== - * bootstrap-formhelpers-slider.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -+function ($) { - - 'use strict'; - - - /* BFHSLIDER CLASS DEFINITION - * ========================= */ - - var BFHSlider = function (element, options) { - this.options = $.extend({}, $.fn.bfhslider.defaults, options); - this.$element = $(element); - - this.initSlider(); - }; - - BFHSlider.prototype = { - - constructor: BFHSlider, - - initSlider: function() { - if (this.options.value === '') { - this.options.value = this.options.min; - } - - this.$element.html( - '<input type="hidden" name="' + this.options.name + '" value="">' + - '<div class="bfh-slider-handle"><div class="bfh-slider-value"></div></div>' - ); - - this.$element.find('input[type="hidden"]').val(this.options.value); - this.updateHandle(this.options.value); - - this.$element.on('mousedown.bfhslider.data-api', BFHSlider.prototype.mouseDown); - }, - - updateHandle: function(val) { - var positionX, - width, - left, - span; - - span = this.options.max - this.options.min; - width = this.$element.width(); - left = this.$element.position().left; - - positionX = Math.round((val - this.options.min) * (width - 20) / span + left); - - this.$element.find('.bfh-slider-handle').css('left', positionX + 'px'); - this.$element.find('.bfh-slider-value').text(val); - }, - - updateVal: function(positionX) { - var width, - left, - right, - val, - span; - - span = this.options.max - this.options.min; - width = this.$element.width(); - left = this.$element.offset().left; - right = left + width; - - if (positionX < left) { - positionX = left; - } - - if (positionX + 20 > right) { - positionX = right; - } - - val = (positionX - left) / width; - val = Math.ceil(val * span + this.options.min); - - if (val === this.$element.val()) { - return true; - } - - this.$element.val(val); - - this.$element.trigger('change.bfhslider'); - }, - - mouseDown: function() { - var $this; - - $this = $(this); - - if ($this.is('.disabled') || $this.attr('disabled') !== undefined) { - return true; - } - - $(document) - .on('mousemove.bfhslider.data-api', {slider: $this}, BFHSlider.prototype.mouseMove) - .one('mouseup.bfhslider.data-api', {slider: $this}, BFHSlider.prototype.mouseUp); - }, - - mouseMove: function(e) { - var $this; - - $this = e.data.slider; - - $this.data('bfhslider').updateVal(e.pageX); - }, - - mouseUp: function(e) { - var $this; - - $this = e.data.slider; - - $this.data('bfhslider').updateVal(e.pageX); - - $(document).off('mousemove.bfhslider.data-api'); - } - }; - - - /* SLIDER PLUGIN DEFINITION - * ========================== */ - - var old = $.fn.bfhslider; - - $.fn.bfhslider = function (option) { - return this.each(function () { - var $this, - data, - options; - - $this = $(this); - data = $this.data('bfhslider'); - options = typeof option === 'object' && option; - this.type = 'bfhslider'; - - if (!data) { - $this.data('bfhslider', (data = new BFHSlider(this, options))); - } - if (typeof option === 'string') { - data[option].call($this); - } - }); - }; - - $.fn.bfhslider.Constructor = BFHSlider; - - $.fn.bfhslider.defaults = { - name: '', - value: '', - min: 0, - max: 100 - }; - - - /* SLIDER NO CONFLICT - * ========================== */ - - $.fn.bfhslider.noConflict = function () { - $.fn.bfhslider = old; - return this; - }; - - - /* SLIDER VALHOOKS - * ========================== */ - - var origHook; - if ($.valHooks.div){ - origHook = $.valHooks.div; - } - $.valHooks.div = { - get: function(el) { - if ($(el).hasClass('bfh-slider')) { - return $(el).find('input[type="hidden"]').val(); - } else if (origHook) { - return origHook.get(el); - } - }, - set: function(el, val) { - if ($(el).hasClass('bfh-slider')) { - $(el).find('input[type="hidden"]').val(val); - $(el).data('bfhslider').updateHandle(val); - } else if (origHook) { - return origHook.set(el,val); - } - } - }; - - - /* SLIDER DATA-API - * ============== */ - - $(document).ready( function () { - $('div.bfh-slider').each(function () { - var $slider; - - $slider = $(this); - - $slider.bfhslider($slider.data()); - }); - }); - -}(window.jQuery); - -/* ========================================================== - * bootstrap-formhelpers-states.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -+function ($) { - - 'use strict'; - - - /* STATES CLASS DEFINITION - * ====================== */ - - var BFHStates = function (element, options) { - this.options = $.extend({}, $.fn.bfhstates.defaults, options); - this.$element = $(element); - - if (this.$element.is('select')) { - this.addStates(); - } - - if (this.$element.hasClass('bfh-selectbox')) { - this.addBootstrapStates(); - } - - if (this.$element.is('span')) { - this.displayState(); - } - }; - - BFHStates.prototype = { - - constructor: BFHStates, - - addStates: function () { - var country, - $country; - - country = this.options.country; - - if (country !== '') { - $country = $(document).find('#' + country); - - if ($country.length !== 0) { - country = $country.val(); - $country.on('change', {state: this}, this.changeCountry); - } - } - - this.loadStates(country); - }, - - loadStates: function (country) { - var value, - state; - - value = this.options.state; - - this.$element.html(''); - - if (this.options.blank === true) { - this.$element.append('<option value=""></option>'); - } - - for (state in BFHStatesList[country]) { - if (BFHStatesList[country].hasOwnProperty(state)) { - this.$element.append('<option value="' + BFHStatesList[country][state].code + '">' + BFHStatesList[country][state].name + '</option>'); - } - } - - this.$element.val(value); - }, - - changeCountry: function (e) { - var $this, - $state, - country; - - $this = $(this); - $state = e.data.state; - country = $this.val(); - - $state.loadStates(country); - }, - - addBootstrapStates: function() { - var country, - $country; - - country = this.options.country; - - if (country !== '') { - $country = $(document).find('#' + country); - - if ($country.length !== 0) { - country = $country.find('input[type="hidden"]').val(); - $country.on('change.bfhselectbox', {state: this}, this.changeBootstrapCountry); - } - } - - this.loadBootstrapStates(country); - }, - - loadBootstrapStates: function(country) { - var $input, - $toggle, - $options, - stateCode, - stateName, - state; - - stateCode = this.options.state; - stateName = ''; - $input = this.$element.find('input[type="hidden"]'); - $toggle = this.$element.find('.bfh-selectbox-option'); - $options = this.$element.find('[role=option]'); - - $options.html(''); - - if (this.options.blank === true) { - $options.append('<li><a tabindex="-1" href="#" data-option=""></a></li>'); - } - - for (state in BFHStatesList[country]) { - if (BFHStatesList[country].hasOwnProperty(state)) { - $options.append('<li><a tabindex="-1" href="#" data-option="' + BFHStatesList[country][state].code + '">' + BFHStatesList[country][state].name + '</a></li>'); - - if (BFHStatesList[country][state].code === stateCode) { - stateName = BFHStatesList[country][state].name; - } - } - } - - this.$element.val(stateCode); - }, - - changeBootstrapCountry: function (e) { - var $this, - $state, - country; - - $this = $(this); - $state = e.data.state; - country = $this.val(); - - $state.loadBootstrapStates(country); - }, - - displayState: function () { - var country, - stateCode, - stateName, - state; - - country = this.options.country; - stateCode = this.options.state; - stateName = ''; - - for (state in BFHStatesList[country]) { - if (BFHStatesList[country].hasOwnProperty(state)) { - if (BFHStatesList[country][state].code === stateCode) { - stateName = BFHStatesList[country][state].name; - break; - } - } - } - this.$element.html(stateName); - } - - }; - - - /* STATES PLUGIN DEFINITION - * ======================= */ - - var old = $.fn.bfhstates; - - $.fn.bfhstates = function (option) { - return this.each(function () { - var $this, - data, - options; - - $this = $(this); - data = $this.data('bfhstates'); - options = typeof option === 'object' && option; - - if (!data) { - $this.data('bfhstates', (data = new BFHStates(this, options))); - } - if (typeof option === 'string') { - data[option].call($this); - } - }); - }; - - $.fn.bfhstates.Constructor = BFHStates; - - $.fn.bfhstates.defaults = { - country: '', - state: '', - blank: true - }; - - - /* STATES NO CONFLICT - * ========================== */ - - $.fn.bfhstates.noConflict = function () { - $.fn.bfhstates = old; - return this; - }; - - - /* STATES DATA-API - * ============== */ - - $(document).ready( function () { - $('form select.bfh-states, span.bfh-states, div.bfh-states').each(function () { - var $states; - - $states = $(this); - - if ($states.hasClass('bfh-selectbox')) { - $states.bfhselectbox($states.data()); - } - $states.bfhstates($states.data()); - }); - }); - -}(window.jQuery); - -/* ========================================================== - * bootstrap-formhelpers-timepicker.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - - -+function ($) { - - 'use strict'; - - - /* TIMEPICKER CLASS DEFINITION - * ========================= */ - - var toggle = '[data-toggle=bfh-timepicker]', - BFHTimePicker = function (element, options) { - this.options = $.extend({}, $.fn.bfhtimepicker.defaults, options); - this.$element = $(element); - - this.initPopover(); - }; - - BFHTimePicker.prototype = { - - constructor: BFHTimePicker, - - setTime: function() { - var time, - today, - timeParts, - hours, - minutes, - mode, - currentMode; - - time = this.options.time; - mode = ''; - currentMode = ''; - - if (time === '' || time === 'now' || time === undefined) { - today = new Date(); - - hours = today.getHours(); - minutes = today.getMinutes(); - - if (this.options.mode === '12h') { - if (hours > 12) { - hours = hours - 12; - mode = ' ' + BFHTimePickerModes.pm; - currentMode = 'pm'; - } else { - mode = ' ' + BFHTimePickerModes.am; - currentMode = 'am'; - } - } - - if (time === 'now') { - this.$element.find('.bfh-timepicker-toggle > input[type="text"]').val(formatTime(hours, minutes) + mode); - } - - this.$element.data('hour', hours); - this.$element.data('minute', minutes); - this.$element.data('mode', currentMode); - } else { - timeParts = String(time).split(BFHTimePickerDelimiter); - hours = timeParts[0]; - minutes = timeParts[1]; - - if (this.options.mode === '12h') { - timeParts = String(minutes).split(' '); - minutes = timeParts[0]; - if (timeParts[1] === BFHTimePickerModes.pm) { - currentMode = 'pm'; - } else { - currentMode = 'am'; - } - } - - this.$element.find('.bfh-timepicker-toggle > input[type="text"]').val(time); - this.$element.data('hour', hours); - this.$element.data('minute', minutes); - this.$element.data('mode', currentMode); - } - }, - - initPopover: function() { - var iconLeft, - iconRight, - iconAddon, - modeAddon, - modeMax; - - iconLeft = ''; - iconRight = ''; - iconAddon = ''; - if (this.options.icon !== '') { - if (this.options.align === 'right') { - iconRight = '<span class="input-group-addon"><i class="' + this.options.icon + '"></i></span>'; - } else { - iconLeft = '<span class="input-group-addon"><i class="' + this.options.icon + '"></i></span>'; - } - iconAddon = 'input-group'; - } - - modeAddon = ''; - modeMax = '23'; - if (this.options.mode === '12h') { - modeAddon = '<td>' + - '<div class="bfh-selectbox" data-input="' + this.options.input + '" data-value="am">' + - '<div data-value="am">' + BFHTimePickerModes.am + '</div>' + - '<div data-value="pm">' + BFHTimePickerModes.pm + '</div>' + - '</div>'; - modeMax = '11'; - } - - this.$element.html( - '<div class="' + iconAddon + ' bfh-timepicker-toggle" data-toggle="bfh-timepicker">' + - iconLeft + - '<input type="text" name="' + this.options.name + '" class="' + this.options.input + '" placeholder="' + this.options.placeholder + '" readonly>' + - iconRight + - '</div>' + - '<div class="bfh-timepicker-popover">' + - '<table class="table">' + - '<tbody>' + - '<tr>' + - '<td class="hour">' + - '<input type="text" class="' + this.options.input + ' bfh-number" data-min="0" data-max="' + modeMax + '" data-zeros="true" data-wrap="true">' + - '</td>' + - '<td class="separator">' + BFHTimePickerDelimiter + '</td>' + - '<td class="minute">' + - '<input type="text" class="' + this.options.input + ' bfh-number" data-min="0" data-max="59" data-zeros="true" data-wrap="true">' + - '</td>' + - modeAddon + - '</tr>' + - '</tbody>' + - '</table>' + - '</div>' - ); - - this.$element - .on('click.bfhtimepicker.data-api touchstart.bfhtimepicker.data-api', toggle, BFHTimePicker.prototype.toggle) - .on('click.bfhtimepicker.data-api touchstart.bfhtimepicker.data-api', '.bfh-timepicker-popover > table', function() { return false; }); - - this.$element.find('.bfh-number').each(function () { - var $number; - - $number = $(this); - - $number.bfhnumber($number.data()); - - $number.on('change', BFHTimePicker.prototype.change); - }); - - this.$element.find('.bfh-selectbox').each(function() { - var $selectbox; - - $selectbox = $(this); - - $selectbox.bfhselectbox($selectbox.data()); - - $selectbox.on('change.bfhselectbox', BFHTimePicker.prototype.change); - }); - - this.setTime(); - - this.updatePopover(); - }, - - updatePopover: function() { - var hour, - minute, - mode; - - hour = this.$element.data('hour'); - minute = this.$element.data('minute'); - mode = this.$element.data('mode'); - - this.$element.find('.hour input[type=text]').val(hour).change(); - this.$element.find('.minute input[type=text]').val(minute).change(); - this.$element.find('.bfh-selectbox').val(mode); - }, - - change: function() { - var $this, - $parent, - $timePicker, - mode; - - $this = $(this); - $parent = getParent($this); - - $timePicker = $parent.data('bfhtimepicker'); - - if ($timePicker && $timePicker !== 'undefined') { - mode = ''; - if ($timePicker.options.mode === '12h') { - mode = ' ' + BFHTimePickerModes[$parent.find('.bfh-selectbox').val()]; - } - - $parent.find('.bfh-timepicker-toggle > input[type="text"]').val($parent.find('.hour input[type=text]').val() + BFHTimePickerDelimiter + $parent.find('.minute input[type=text]').val() + mode); - - $parent.trigger('change.bfhtimepicker'); - } - - return false; - }, - - toggle: function(e) { - var $this, - $parent, - isActive; - - $this = $(this); - $parent = getParent($this); - - if ($parent.is('.disabled') || $parent.attr('disabled') !== undefined) { - return true; - } - - isActive = $parent.hasClass('open'); - - clearMenus(); - - if (!isActive) { - $parent.trigger(e = $.Event('show.bfhtimepicker')); - - if (e.isDefaultPrevented()) { - return true; - } - - $parent - .toggleClass('open') - .trigger('shown.bfhtimepicker'); - - $this.focus(); - } - - return false; - } - }; - - function formatTime(hour, minute) { - hour = String(hour); - if (hour.length === 1) { - hour = '0' + hour; - } - - minute = String(minute); - if (minute.length === 1) { - minute = '0' + minute; - } - - return hour + BFHTimePickerDelimiter + minute; - } - - function clearMenus() { - var $parent; - - $(toggle).each(function (e) { - $parent = getParent($(this)); - - if (!$parent.hasClass('open')) { - return true; - } - - $parent.trigger(e = $.Event('hide.bfhtimepicker')); - - if (e.isDefaultPrevented()) { - return true; - } - - $parent - .removeClass('open') - .trigger('hidden.bfhtimepicker'); - }); - } - - function getParent($this) { - return $this.closest('.bfh-timepicker'); - } - - - /* TIMEPICKER PLUGIN DEFINITION - * ========================== */ - - var old = $.fn.bfhtimepicker; - - $.fn.bfhtimepicker = function (option) { - return this.each(function () { - var $this, - data, - options; - - $this = $(this); - data = $this.data('bfhtimepicker'); - options = typeof option === 'object' && option; - this.type = 'bfhtimepicker'; - - if (!data) { - $this.data('bfhtimepicker', (data = new BFHTimePicker(this, options))); - } - if (typeof option === 'string') { - data[option].call($this); - } - }); - }; - - $.fn.bfhtimepicker.Constructor = BFHTimePicker; - - $.fn.bfhtimepicker.defaults = { - icon: 'glyphicon glyphicon-time', - align: 'left', - input: 'form-control', - placeholder: '', - name: '', - time: 'now', - mode: '24h' - }; - - - /* TIMEPICKER NO CONFLICT - * ========================== */ - - $.fn.bfhtimepicker.noConflict = function () { - $.fn.bfhtimepicker = old; - return this; - }; - - - /* TIMEPICKER VALHOOKS - * ========================== */ - - var origHook; - if ($.valHooks.div){ - origHook = $.valHooks.div; - } - $.valHooks.div = { - get: function(el) { - if ($(el).hasClass('bfh-timepicker')) { - return $(el).find('.bfh-timepicker-toggle > input[type="text"]').val(); - } else if (origHook) { - return origHook.get(el); - } - }, - set: function(el, val) { - var $timepicker; - if ($(el).hasClass('bfh-timepicker')) { - $timepicker = $(el).data('bfhtimepicker'); - $timepicker.options.time = val; - $timepicker.setTime(); - $timepicker.updatePopover(); - } else if (origHook) { - return origHook.set(el,val); - } - } - }; - - - /* TIMEPICKER DATA-API - * ============== */ - - $(document).ready( function () { - $('div.bfh-timepicker').each(function () { - var $timepicker; - - $timepicker = $(this); - - $timepicker.bfhtimepicker($timepicker.data()); - }); - }); - - - /* APPLY TO STANDARD TIMEPICKER ELEMENTS - * =================================== */ - - $(document) - .on('click.bfhtimepicker.data-api', clearMenus); - -}(window.jQuery); - -/* ========================================================== - * bootstrap-formhelpers-timezones.js - * https://github.com/vlamanna/BootstrapFormHelpers - * ========================================================== - * Copyright 2012 Vincent Lamanna - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - -+function ($) { - - 'use strict'; - - - /* TIMEZONES CLASS DEFINITION - * ====================== */ - - var BFHTimezones = function (element, options) { - this.options = $.extend({}, $.fn.bfhtimezones.defaults, options); - this.$element = $(element); - - if (this.$element.is('select')) { - this.addTimezones(); - } - - if (this.$element.hasClass('bfh-selectbox')) { - this.addBootstrapTimezones(); - } - }; - - BFHTimezones.prototype = { - - constructor: BFHTimezones, - - addTimezones: function () { - var country, - $country; - - country = this.options.country; - - if (country !== '') { - $country = $(document).find('#' + country); - - if ($country.length !== 0) { - country = $country.val(); - $country.on('change', {timezone: this}, this.changeCountry); - } - } - - this.loadTimezones(country); - }, - - loadTimezones: function (country) { - var value, - timezone; - - value = this.options.timezone; - - this.$element.html(''); - - if (this.options.blank === true) { - this.$element.append('<option value=""></option>'); - } - - for (timezone in BFHTimezonesList[country]) { - if (BFHTimezonesList[country].hasOwnProperty(timezone)) { - this.$element.append('<option value="' + timezone + '">' + BFHTimezonesList[country][timezone] + '</option>'); - } - } - - this.$element.val(value); - }, - - changeCountry: function (e) { - var $this, - $timezone, - country; - - $this = $(this); - $timezone = e.data.timezone; - country = $this.val(); - - $timezone.loadTimezones(country); - }, - - addBootstrapTimezones: function() { - var country, - $country; - - country = this.options.country; - - if (country !== '') { - $country = $(document).find('#' + country); - - if ($country.length !== 0) { - country = $country.find('input[type="hidden"]').val(); - $country.on('change.bfhselectbox', {timezone: this}, this.changeBootstrapCountry); - } - } - - this.loadBootstrapTimezones(country); - }, - - loadBootstrapTimezones: function(country) { - var $input, - $toggle, - $options, - value, - timezone; - - value = this.options.timezone; - $input = this.$element.find('input[type="hidden"]'); - $toggle = this.$element.find('.bfh-selectbox-option'); - $options = this.$element.find('[role=option]'); - - $options.html(''); - - if (this.options.blank === true) { - $options.append('<li><a tabindex="-1" href="#" data-option=""></a></li>'); - } - - for (timezone in BFHTimezonesList[country]) { - if (BFHTimezonesList[country].hasOwnProperty(timezone)) { - $options.append('<li><a tabindex="-1" href="#" data-option="' + timezone + '">' + BFHTimezonesList[country][timezone] + '</a></li>'); - } - } - - this.$element.val(value); - }, - - changeBootstrapCountry: function (e) { - var $this, - $timezone, - country; - - $this = $(this); - $timezone = e.data.timezone; - country = $this.val(); - - $timezone.loadBootstrapTimezones(country); - } - - }; - - - /* TIMEZONES PLUGIN DEFINITION - * ======================= */ - - var old = $.fn.bfhtimezones; - - $.fn.bfhtimezones = function (option) { - return this.each(function () { - var $this, - data, - options; - - $this = $(this); - data = $this.data('bfhtimezones'); - options = typeof option === 'object' && option; - - if (!data) { - $this.data('bfhtimezones', (data = new BFHTimezones(this, options))); - } - if (typeof option === 'string') { - data[option].call($this); - } - }); - }; - - $.fn.bfhtimezones.Constructor = BFHTimezones; - - $.fn.bfhtimezones.defaults = { - country: '', - timezone: '', - blank: true - }; - - - /* TIMEZONES NO CONFLICT - * ========================== */ - - $.fn.bfhtimezones.noConflict = function () { - $.fn.bfhtimezones = old; - return this; - }; - - - /* TIMEZONES DATA-API - * ============== */ - - $(document).ready( function () { - $('form select.bfh-timezones, div.bfh-timezones').each(function () { - var $timezones; - - $timezones = $(this); - - if ($timezones.hasClass('bfh-selectbox')) { - $timezones.bfhselectbox($timezones.data()); - } - $timezones.bfhtimezones($timezones.data()); - }); - }); - -}(window.jQuery); diff --git a/gui/slick/js/lib/bootstrap.js b/gui/slick/js/lib/bootstrap.js deleted file mode 100644 index b6ac8d9903bd002426887977dd457f19b8fa9bb9..0000000000000000000000000000000000000000 --- a/gui/slick/js/lib/bootstrap.js +++ /dev/null @@ -1,2320 +0,0 @@ -/*! - * Bootstrap v3.3.1 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -if (typeof jQuery === 'undefined') { - throw new Error('Bootstrap\'s JavaScript requires jQuery') -} - -+function ($) { - var version = $.fn.jquery.split(' ')[0].split('.') - if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) { - throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher') - } -}(jQuery); - -/* ======================================================================== - * Bootstrap: transition.js v3.3.1 - * http://getbootstrap.com/javascript/#transitions - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) - // ============================================================ - - function transitionEnd() { - var el = document.createElement('bootstrap') - - var transEndEventNames = { - WebkitTransition : 'webkitTransitionEnd', - MozTransition : 'transitionend', - OTransition : 'oTransitionEnd otransitionend', - transition : 'transitionend' - } - - for (var name in transEndEventNames) { - if (el.style[name] !== undefined) { - return { end: transEndEventNames[name] } - } - } - - return false // explicit for ie8 ( ._.) - } - - // http://blog.alexmaccaw.com/css-transitions - $.fn.emulateTransitionEnd = function (duration) { - var called = false - var $el = this - $(this).one('bsTransitionEnd', function () { called = true }) - var callback = function () { if (!called) $($el).trigger($.support.transition.end) } - setTimeout(callback, duration) - return this - } - - $(function () { - $.support.transition = transitionEnd() - - if (!$.support.transition) return - - $.event.special.bsTransitionEnd = { - bindType: $.support.transition.end, - delegateType: $.support.transition.end, - handle: function (e) { - if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) - } - } - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: alert.js v3.3.1 - * http://getbootstrap.com/javascript/#alerts - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // ALERT CLASS DEFINITION - // ====================== - - var dismiss = '[data-dismiss="alert"]' - var Alert = function (el) { - $(el).on('click', dismiss, this.close) - } - - Alert.VERSION = '3.3.1' - - Alert.TRANSITION_DURATION = 150 - - Alert.prototype.close = function (e) { - var $this = $(this) - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = $(selector) - - if (e) e.preventDefault() - - if (!$parent.length) { - $parent = $this.closest('.alert') - } - - $parent.trigger(e = $.Event('close.bs.alert')) - - if (e.isDefaultPrevented()) return - - $parent.removeClass('in') - - function removeElement() { - // detach from parent, fire event then clean up data - $parent.detach().trigger('closed.bs.alert').remove() - } - - $.support.transition && $parent.hasClass('fade') ? - $parent - .one('bsTransitionEnd', removeElement) - .emulateTransitionEnd(Alert.TRANSITION_DURATION) : - removeElement() - } - - - // ALERT PLUGIN DEFINITION - // ======================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.alert') - - if (!data) $this.data('bs.alert', (data = new Alert(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - var old = $.fn.alert - - $.fn.alert = Plugin - $.fn.alert.Constructor = Alert - - - // ALERT NO CONFLICT - // ================= - - $.fn.alert.noConflict = function () { - $.fn.alert = old - return this - } - - - // ALERT DATA-API - // ============== - - $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: button.js v3.3.1 - * http://getbootstrap.com/javascript/#buttons - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // BUTTON PUBLIC CLASS DEFINITION - // ============================== - - var Button = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Button.DEFAULTS, options) - this.isLoading = false - } - - Button.VERSION = '3.3.1' - - Button.DEFAULTS = { - loadingText: 'loading...' - } - - Button.prototype.setState = function (state) { - var d = 'disabled' - var $el = this.$element - var val = $el.is('input') ? 'val' : 'html' - var data = $el.data() - - state = state + 'Text' - - if (data.resetText == null) $el.data('resetText', $el[val]()) - - // push to event loop to allow forms to submit - setTimeout($.proxy(function () { - $el[val](data[state] == null ? this.options[state] : data[state]) - - if (state == 'loadingText') { - this.isLoading = true - $el.addClass(d).attr(d, d) - } else if (this.isLoading) { - this.isLoading = false - $el.removeClass(d).removeAttr(d) - } - }, this), 0) - } - - Button.prototype.toggle = function () { - var changed = true - var $parent = this.$element.closest('[data-toggle="buttons"]') - - if ($parent.length) { - var $input = this.$element.find('input') - if ($input.prop('type') == 'radio') { - if ($input.prop('checked') && this.$element.hasClass('active')) changed = false - else $parent.find('.active').removeClass('active') - } - if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') - } else { - this.$element.attr('aria-pressed', !this.$element.hasClass('active')) - } - - if (changed) this.$element.toggleClass('active') - } - - - // BUTTON PLUGIN DEFINITION - // ======================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.button') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.button', (data = new Button(this, options))) - - if (option == 'toggle') data.toggle() - else if (option) data.setState(option) - }) - } - - var old = $.fn.button - - $.fn.button = Plugin - $.fn.button.Constructor = Button - - - // BUTTON NO CONFLICT - // ================== - - $.fn.button.noConflict = function () { - $.fn.button = old - return this - } - - - // BUTTON DATA-API - // =============== - - $(document) - .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { - var $btn = $(e.target) - if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') - Plugin.call($btn, 'toggle') - e.preventDefault() - }) - .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { - $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: carousel.js v3.3.1 - * http://getbootstrap.com/javascript/#carousel - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // CAROUSEL CLASS DEFINITION - // ========================= - - var Carousel = function (element, options) { - this.$element = $(element) - this.$indicators = this.$element.find('.carousel-indicators') - this.options = options - this.paused = - this.sliding = - this.interval = - this.$active = - this.$items = null - - this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) - - this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element - .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) - .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) - } - - Carousel.VERSION = '3.3.1' - - Carousel.TRANSITION_DURATION = 600 - - Carousel.DEFAULTS = { - interval: 5000, - pause: 'hover', - wrap: true, - keyboard: true - } - - Carousel.prototype.keydown = function (e) { - if (/input|textarea/i.test(e.target.tagName)) return - switch (e.which) { - case 37: this.prev(); break - case 39: this.next(); break - default: return - } - - e.preventDefault() - } - - Carousel.prototype.cycle = function (e) { - e || (this.paused = false) - - this.interval && clearInterval(this.interval) - - this.options.interval - && !this.paused - && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) - - return this - } - - Carousel.prototype.getItemIndex = function (item) { - this.$items = item.parent().children('.item') - return this.$items.index(item || this.$active) - } - - Carousel.prototype.getItemForDirection = function (direction, active) { - var delta = direction == 'prev' ? -1 : 1 - var activeIndex = this.getItemIndex(active) - var itemIndex = (activeIndex + delta) % this.$items.length - return this.$items.eq(itemIndex) - } - - Carousel.prototype.to = function (pos) { - var that = this - var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) - - if (pos > (this.$items.length - 1) || pos < 0) return - - if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" - if (activeIndex == pos) return this.pause().cycle() - - return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) - } - - Carousel.prototype.pause = function (e) { - e || (this.paused = true) - - if (this.$element.find('.next, .prev').length && $.support.transition) { - this.$element.trigger($.support.transition.end) - this.cycle(true) - } - - this.interval = clearInterval(this.interval) - - return this - } - - Carousel.prototype.next = function () { - if (this.sliding) return - return this.slide('next') - } - - Carousel.prototype.prev = function () { - if (this.sliding) return - return this.slide('prev') - } - - Carousel.prototype.slide = function (type, next) { - var $active = this.$element.find('.item.active') - var $next = next || this.getItemForDirection(type, $active) - var isCycling = this.interval - var direction = type == 'next' ? 'left' : 'right' - var fallback = type == 'next' ? 'first' : 'last' - var that = this - - if (!$next.length) { - if (!this.options.wrap) return - $next = this.$element.find('.item')[fallback]() - } - - if ($next.hasClass('active')) return (this.sliding = false) - - var relatedTarget = $next[0] - var slideEvent = $.Event('slide.bs.carousel', { - relatedTarget: relatedTarget, - direction: direction - }) - this.$element.trigger(slideEvent) - if (slideEvent.isDefaultPrevented()) return - - this.sliding = true - - isCycling && this.pause() - - if (this.$indicators.length) { - this.$indicators.find('.active').removeClass('active') - var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) - $nextIndicator && $nextIndicator.addClass('active') - } - - var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" - if ($.support.transition && this.$element.hasClass('slide')) { - $next.addClass(type) - $next[0].offsetWidth // force reflow - $active.addClass(direction) - $next.addClass(direction) - $active - .one('bsTransitionEnd', function () { - $next.removeClass([type, direction].join(' ')).addClass('active') - $active.removeClass(['active', direction].join(' ')) - that.sliding = false - setTimeout(function () { - that.$element.trigger(slidEvent) - }, 0) - }) - .emulateTransitionEnd(Carousel.TRANSITION_DURATION) - } else { - $active.removeClass('active') - $next.addClass('active') - this.sliding = false - this.$element.trigger(slidEvent) - } - - isCycling && this.cycle() - - return this - } - - - // CAROUSEL PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.carousel') - var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) - var action = typeof option == 'string' ? option : options.slide - - if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) - if (typeof option == 'number') data.to(option) - else if (action) data[action]() - else if (options.interval) data.pause().cycle() - }) - } - - var old = $.fn.carousel - - $.fn.carousel = Plugin - $.fn.carousel.Constructor = Carousel - - - // CAROUSEL NO CONFLICT - // ==================== - - $.fn.carousel.noConflict = function () { - $.fn.carousel = old - return this - } - - - // CAROUSEL DATA-API - // ================= - - var clickHandler = function (e) { - var href - var $this = $(this) - var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 - if (!$target.hasClass('carousel')) return - var options = $.extend({}, $target.data(), $this.data()) - var slideIndex = $this.attr('data-slide-to') - if (slideIndex) options.interval = false - - Plugin.call($target, options) - - if (slideIndex) { - $target.data('bs.carousel').to(slideIndex) - } - - e.preventDefault() - } - - $(document) - .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) - .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) - - $(window).on('load', function () { - $('[data-ride="carousel"]').each(function () { - var $carousel = $(this) - Plugin.call($carousel, $carousel.data()) - }) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: collapse.js v3.3.1 - * http://getbootstrap.com/javascript/#collapse - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // COLLAPSE PUBLIC CLASS DEFINITION - // ================================ - - var Collapse = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, Collapse.DEFAULTS, options) - this.$trigger = $(this.options.trigger).filter('[href="#' + element.id + '"], [data-target="#' + element.id + '"]') - this.transitioning = null - - if (this.options.parent) { - this.$parent = this.getParent() - } else { - this.addAriaAndCollapsedClass(this.$element, this.$trigger) - } - - if (this.options.toggle) this.toggle() - } - - Collapse.VERSION = '3.3.1' - - Collapse.TRANSITION_DURATION = 350 - - Collapse.DEFAULTS = { - toggle: true, - trigger: '[data-toggle="collapse"]' - } - - Collapse.prototype.dimension = function () { - var hasWidth = this.$element.hasClass('width') - return hasWidth ? 'width' : 'height' - } - - Collapse.prototype.show = function () { - if (this.transitioning || this.$element.hasClass('in')) return - - var activesData - var actives = this.$parent && this.$parent.find('> .panel').children('.in, .collapsing') - - if (actives && actives.length) { - activesData = actives.data('bs.collapse') - if (activesData && activesData.transitioning) return - } - - var startEvent = $.Event('show.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - if (actives && actives.length) { - Plugin.call(actives, 'hide') - activesData || actives.data('bs.collapse', null) - } - - var dimension = this.dimension() - - this.$element - .removeClass('collapse') - .addClass('collapsing')[dimension](0) - .attr('aria-expanded', true) - - this.$trigger - .removeClass('collapsed') - .attr('aria-expanded', true) - - this.transitioning = 1 - - var complete = function () { - this.$element - .removeClass('collapsing') - .addClass('collapse in')[dimension]('') - this.transitioning = 0 - this.$element - .trigger('shown.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - var scrollSize = $.camelCase(['scroll', dimension].join('-')) - - this.$element - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) - } - - Collapse.prototype.hide = function () { - if (this.transitioning || !this.$element.hasClass('in')) return - - var startEvent = $.Event('hide.bs.collapse') - this.$element.trigger(startEvent) - if (startEvent.isDefaultPrevented()) return - - var dimension = this.dimension() - - this.$element[dimension](this.$element[dimension]())[0].offsetHeight - - this.$element - .addClass('collapsing') - .removeClass('collapse in') - .attr('aria-expanded', false) - - this.$trigger - .addClass('collapsed') - .attr('aria-expanded', false) - - this.transitioning = 1 - - var complete = function () { - this.transitioning = 0 - this.$element - .removeClass('collapsing') - .addClass('collapse') - .trigger('hidden.bs.collapse') - } - - if (!$.support.transition) return complete.call(this) - - this.$element - [dimension](0) - .one('bsTransitionEnd', $.proxy(complete, this)) - .emulateTransitionEnd(Collapse.TRANSITION_DURATION) - } - - Collapse.prototype.toggle = function () { - this[this.$element.hasClass('in') ? 'hide' : 'show']() - } - - Collapse.prototype.getParent = function () { - return $(this.options.parent) - .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') - .each($.proxy(function (i, element) { - var $element = $(element) - this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) - }, this)) - .end() - } - - Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { - var isOpen = $element.hasClass('in') - - $element.attr('aria-expanded', isOpen) - $trigger - .toggleClass('collapsed', !isOpen) - .attr('aria-expanded', isOpen) - } - - function getTargetFromTrigger($trigger) { - var href - var target = $trigger.attr('data-target') - || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 - - return $(target) - } - - - // COLLAPSE PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.collapse') - var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data && options.toggle && option == 'show') options.toggle = false - if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.collapse - - $.fn.collapse = Plugin - $.fn.collapse.Constructor = Collapse - - - // COLLAPSE NO CONFLICT - // ==================== - - $.fn.collapse.noConflict = function () { - $.fn.collapse = old - return this - } - - - // COLLAPSE DATA-API - // ================= - - $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { - var $this = $(this) - - if (!$this.attr('data-target')) e.preventDefault() - - var $target = getTargetFromTrigger($this) - var data = $target.data('bs.collapse') - var option = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this }) - - Plugin.call($target, option) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: dropdown.js v3.3.1 - * http://getbootstrap.com/javascript/#dropdowns - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // DROPDOWN CLASS DEFINITION - // ========================= - - var backdrop = '.dropdown-backdrop' - var toggle = '[data-toggle="dropdown"]' - var Dropdown = function (element) { - $(element).on('click.bs.dropdown', this.toggle) - } - - Dropdown.VERSION = '3.3.1' - - Dropdown.prototype.toggle = function (e) { - var $this = $(this) - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - clearMenus() - - if (!isActive) { - if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { - // if mobile we use a backdrop because click events don't delegate - $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus) - } - - var relatedTarget = { relatedTarget: this } - $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) - - if (e.isDefaultPrevented()) return - - $this - .trigger('focus') - .attr('aria-expanded', 'true') - - $parent - .toggleClass('open') - .trigger('shown.bs.dropdown', relatedTarget) - } - - return false - } - - Dropdown.prototype.keydown = function (e) { - if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return - - var $this = $(this) - - e.preventDefault() - e.stopPropagation() - - if ($this.is('.disabled, :disabled')) return - - var $parent = getParent($this) - var isActive = $parent.hasClass('open') - - if ((!isActive && e.which != 27) || (isActive && e.which == 27)) { - if (e.which == 27) $parent.find(toggle).trigger('focus') - return $this.trigger('click') - } - - var desc = ' li:not(.divider):visible a' - var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc) - - if (!$items.length) return - - var index = $items.index(e.target) - - if (e.which == 38 && index > 0) index-- // up - if (e.which == 40 && index < $items.length - 1) index++ // down - if (!~index) index = 0 - - $items.eq(index).trigger('focus') - } - - function clearMenus(e) { - if (e && e.which === 3) return - $(backdrop).remove() - $(toggle).each(function () { - var $this = $(this) - var $parent = getParent($this) - var relatedTarget = { relatedTarget: this } - - if (!$parent.hasClass('open')) return - - $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) - - if (e.isDefaultPrevented()) return - - $this.attr('aria-expanded', 'false') - $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget) - }) - } - - function getParent($this) { - var selector = $this.attr('data-target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - var $parent = selector && $(selector) - - return $parent && $parent.length ? $parent : $this.parent() - } - - - // DROPDOWN PLUGIN DEFINITION - // ========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.dropdown') - - if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - var old = $.fn.dropdown - - $.fn.dropdown = Plugin - $.fn.dropdown.Constructor = Dropdown - - - // DROPDOWN NO CONFLICT - // ==================== - - $.fn.dropdown.noConflict = function () { - $.fn.dropdown = old - return this - } - - - // APPLY TO STANDARD DROPDOWN ELEMENTS - // =================================== - - $(document) - .on('click.bs.dropdown.data-api', clearMenus) - .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) - .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) - .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) - .on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown) - .on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: modal.js v3.3.1 - * http://getbootstrap.com/javascript/#modals - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // MODAL CLASS DEFINITION - // ====================== - - var Modal = function (element, options) { - this.options = options - this.$body = $(document.body) - this.$element = $(element) - this.$backdrop = - this.isShown = null - this.scrollbarWidth = 0 - - if (this.options.remote) { - this.$element - .find('.modal-content') - .load(this.options.remote, $.proxy(function () { - this.$element.trigger('loaded.bs.modal') - }, this)) - } - } - - Modal.VERSION = '3.3.1' - - Modal.TRANSITION_DURATION = 300 - Modal.BACKDROP_TRANSITION_DURATION = 150 - - Modal.DEFAULTS = { - backdrop: true, - keyboard: true, - show: true - } - - Modal.prototype.toggle = function (_relatedTarget) { - return this.isShown ? this.hide() : this.show(_relatedTarget) - } - - Modal.prototype.show = function (_relatedTarget) { - var that = this - var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) - - this.$element.trigger(e) - - if (this.isShown || e.isDefaultPrevented()) return - - this.isShown = true - - this.checkScrollbar() - this.setScrollbar() - this.$body.addClass('modal-open') - - this.escape() - this.resize() - - this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) - - this.backdrop(function () { - var transition = $.support.transition && that.$element.hasClass('fade') - - if (!that.$element.parent().length) { - that.$element.appendTo(that.$body) // don't move modals dom position - } - - that.$element - .show() - .scrollTop(0) - - if (that.options.backdrop) that.adjustBackdrop() - that.adjustDialog() - - if (transition) { - that.$element[0].offsetWidth // force reflow - } - - that.$element - .addClass('in') - .attr('aria-hidden', false) - - that.enforceFocus() - - var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) - - transition ? - that.$element.find('.modal-dialog') // wait for modal to slide in - .one('bsTransitionEnd', function () { - that.$element.trigger('focus').trigger(e) - }) - .emulateTransitionEnd(Modal.TRANSITION_DURATION) : - that.$element.trigger('focus').trigger(e) - }) - } - - Modal.prototype.hide = function (e) { - if (e) e.preventDefault() - - e = $.Event('hide.bs.modal') - - this.$element.trigger(e) - - if (!this.isShown || e.isDefaultPrevented()) return - - this.isShown = false - - this.escape() - this.resize() - - $(document).off('focusin.bs.modal') - - this.$element - .removeClass('in') - .attr('aria-hidden', true) - .off('click.dismiss.bs.modal') - - $.support.transition && this.$element.hasClass('fade') ? - this.$element - .one('bsTransitionEnd', $.proxy(this.hideModal, this)) - .emulateTransitionEnd(Modal.TRANSITION_DURATION) : - this.hideModal() - } - - Modal.prototype.enforceFocus = function () { - $(document) - .off('focusin.bs.modal') // guard against infinite focus loop - .on('focusin.bs.modal', $.proxy(function (e) { - if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { - this.$element.trigger('focus') - } - }, this)) - } - - Modal.prototype.escape = function () { - if (this.isShown && this.options.keyboard) { - this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { - e.which == 27 && this.hide() - }, this)) - } else if (!this.isShown) { - this.$element.off('keydown.dismiss.bs.modal') - } - } - - Modal.prototype.resize = function () { - if (this.isShown) { - $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) - } else { - $(window).off('resize.bs.modal') - } - } - - Modal.prototype.hideModal = function () { - var that = this - this.$element.hide() - this.backdrop(function () { - that.$body.removeClass('modal-open') - that.resetAdjustments() - that.resetScrollbar() - that.$element.trigger('hidden.bs.modal') - }) - } - - Modal.prototype.removeBackdrop = function () { - this.$backdrop && this.$backdrop.remove() - this.$backdrop = null - } - - Modal.prototype.backdrop = function (callback) { - var that = this - var animate = this.$element.hasClass('fade') ? 'fade' : '' - - if (this.isShown && this.options.backdrop) { - var doAnimate = $.support.transition && animate - - this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />') - .prependTo(this.$element) - .on('click.dismiss.bs.modal', $.proxy(function (e) { - if (e.target !== e.currentTarget) return - this.options.backdrop == 'static' - ? this.$element[0].focus.call(this.$element[0]) - : this.hide.call(this) - }, this)) - - if (doAnimate) this.$backdrop[0].offsetWidth // force reflow - - this.$backdrop.addClass('in') - - if (!callback) return - - doAnimate ? - this.$backdrop - .one('bsTransitionEnd', callback) - .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : - callback() - - } else if (!this.isShown && this.$backdrop) { - this.$backdrop.removeClass('in') - - var callbackRemove = function () { - that.removeBackdrop() - callback && callback() - } - $.support.transition && this.$element.hasClass('fade') ? - this.$backdrop - .one('bsTransitionEnd', callbackRemove) - .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : - callbackRemove() - - } else if (callback) { - callback() - } - } - - // these following methods are used to handle overflowing modals - - Modal.prototype.handleUpdate = function () { - if (this.options.backdrop) this.adjustBackdrop() - this.adjustDialog() - } - - Modal.prototype.adjustBackdrop = function () { - this.$backdrop - .css('height', 0) - .css('height', this.$element[0].scrollHeight) - } - - Modal.prototype.adjustDialog = function () { - var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight - - this.$element.css({ - paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', - paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' - }) - } - - Modal.prototype.resetAdjustments = function () { - this.$element.css({ - paddingLeft: '', - paddingRight: '' - }) - } - - Modal.prototype.checkScrollbar = function () { - this.bodyIsOverflowing = document.body.scrollHeight > document.documentElement.clientHeight - this.scrollbarWidth = this.measureScrollbar() - } - - Modal.prototype.setScrollbar = function () { - var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) - if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) - } - - Modal.prototype.resetScrollbar = function () { - this.$body.css('padding-right', '') - } - - Modal.prototype.measureScrollbar = function () { // thx walsh - var scrollDiv = document.createElement('div') - scrollDiv.className = 'modal-scrollbar-measure' - this.$body.append(scrollDiv) - var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth - this.$body[0].removeChild(scrollDiv) - return scrollbarWidth - } - - - // MODAL PLUGIN DEFINITION - // ======================= - - function Plugin(option, _relatedTarget) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.modal') - var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data) $this.data('bs.modal', (data = new Modal(this, options))) - if (typeof option == 'string') data[option](_relatedTarget) - else if (options.show) data.show(_relatedTarget) - }) - } - - var old = $.fn.modal - - $.fn.modal = Plugin - $.fn.modal.Constructor = Modal - - - // MODAL NO CONFLICT - // ================= - - $.fn.modal.noConflict = function () { - $.fn.modal = old - return this - } - - - // MODAL DATA-API - // ============== - - $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { - var $this = $(this) - var href = $this.attr('href') - var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 - var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) - - if ($this.is('a')) e.preventDefault() - - $target.one('show.bs.modal', function (showEvent) { - if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown - $target.one('hidden.bs.modal', function () { - $this.is(':visible') && $this.trigger('focus') - }) - }) - Plugin.call($target, option, this) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: tooltip.js v3.3.1 - * http://getbootstrap.com/javascript/#tooltip - * Inspired by the original jQuery.tipsy by Jason Frame - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // TOOLTIP PUBLIC CLASS DEFINITION - // =============================== - - var Tooltip = function (element, options) { - this.type = - this.options = - this.enabled = - this.timeout = - this.hoverState = - this.$element = null - - this.init('tooltip', element, options) - } - - Tooltip.VERSION = '3.3.1' - - Tooltip.TRANSITION_DURATION = 150 - - Tooltip.DEFAULTS = { - animation: true, - placement: 'top', - selector: false, - template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>', - trigger: 'hover focus', - title: '', - delay: 0, - html: false, - container: false, - viewport: { - selector: 'body', - padding: 0 - } - } - - Tooltip.prototype.init = function (type, element, options) { - this.enabled = true - this.type = type - this.$element = $(element) - this.options = this.getOptions(options) - this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport) - - var triggers = this.options.trigger.split(' ') - - for (var i = triggers.length; i--;) { - var trigger = triggers[i] - - if (trigger == 'click') { - this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) - } else if (trigger != 'manual') { - var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' - var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' - - this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) - this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) - } - } - - this.options.selector ? - (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : - this.fixTitle() - } - - Tooltip.prototype.getDefaults = function () { - return Tooltip.DEFAULTS - } - - Tooltip.prototype.getOptions = function (options) { - options = $.extend({}, this.getDefaults(), this.$element.data(), options) - - if (options.delay && typeof options.delay == 'number') { - options.delay = { - show: options.delay, - hide: options.delay - } - } - - return options - } - - Tooltip.prototype.getDelegateOptions = function () { - var options = {} - var defaults = this.getDefaults() - - this._options && $.each(this._options, function (key, value) { - if (defaults[key] != value) options[key] = value - }) - - return options - } - - Tooltip.prototype.enter = function (obj) { - var self = obj instanceof this.constructor ? - obj : $(obj.currentTarget).data('bs.' + this.type) - - if (self && self.$tip && self.$tip.is(':visible')) { - self.hoverState = 'in' - return - } - - if (!self) { - self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) - $(obj.currentTarget).data('bs.' + this.type, self) - } - - clearTimeout(self.timeout) - - self.hoverState = 'in' - - if (!self.options.delay || !self.options.delay.show) return self.show() - - self.timeout = setTimeout(function () { - if (self.hoverState == 'in') self.show() - }, self.options.delay.show) - } - - Tooltip.prototype.leave = function (obj) { - var self = obj instanceof this.constructor ? - obj : $(obj.currentTarget).data('bs.' + this.type) - - if (!self) { - self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) - $(obj.currentTarget).data('bs.' + this.type, self) - } - - clearTimeout(self.timeout) - - self.hoverState = 'out' - - if (!self.options.delay || !self.options.delay.hide) return self.hide() - - self.timeout = setTimeout(function () { - if (self.hoverState == 'out') self.hide() - }, self.options.delay.hide) - } - - Tooltip.prototype.show = function () { - var e = $.Event('show.bs.' + this.type) - - if (this.hasContent() && this.enabled) { - this.$element.trigger(e) - - var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) - if (e.isDefaultPrevented() || !inDom) return - var that = this - - var $tip = this.tip() - - var tipId = this.getUID(this.type) - - this.setContent() - $tip.attr('id', tipId) - this.$element.attr('aria-describedby', tipId) - - if (this.options.animation) $tip.addClass('fade') - - var placement = typeof this.options.placement == 'function' ? - this.options.placement.call(this, $tip[0], this.$element[0]) : - this.options.placement - - var autoToken = /\s?auto?\s?/i - var autoPlace = autoToken.test(placement) - if (autoPlace) placement = placement.replace(autoToken, '') || 'top' - - $tip - .detach() - .css({ top: 0, left: 0, display: 'block' }) - .addClass(placement) - .data('bs.' + this.type, this) - - this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) - - var pos = this.getPosition() - var actualWidth = $tip[0].offsetWidth - var actualHeight = $tip[0].offsetHeight - - if (autoPlace) { - var orgPlacement = placement - var $container = this.options.container ? $(this.options.container) : this.$element.parent() - var containerDim = this.getPosition($container) - - placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top' : - placement == 'top' && pos.top - actualHeight < containerDim.top ? 'bottom' : - placement == 'right' && pos.right + actualWidth > containerDim.width ? 'left' : - placement == 'left' && pos.left - actualWidth < containerDim.left ? 'right' : - placement - - $tip - .removeClass(orgPlacement) - .addClass(placement) - } - - var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) - - this.applyPlacement(calculatedOffset, placement) - - var complete = function () { - var prevHoverState = that.hoverState - that.$element.trigger('shown.bs.' + that.type) - that.hoverState = null - - if (prevHoverState == 'out') that.leave(that) - } - - $.support.transition && this.$tip.hasClass('fade') ? - $tip - .one('bsTransitionEnd', complete) - .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : - complete() - } - } - - Tooltip.prototype.applyPlacement = function (offset, placement) { - var $tip = this.tip() - var width = $tip[0].offsetWidth - var height = $tip[0].offsetHeight - - // manually read margins because getBoundingClientRect includes difference - var marginTop = parseInt($tip.css('margin-top'), 10) - var marginLeft = parseInt($tip.css('margin-left'), 10) - - // we must check for NaN for ie 8/9 - if (isNaN(marginTop)) marginTop = 0 - if (isNaN(marginLeft)) marginLeft = 0 - - offset.top = offset.top + marginTop - offset.left = offset.left + marginLeft - - // $.fn.offset doesn't round pixel values - // so we use setOffset directly with our own function B-0 - $.offset.setOffset($tip[0], $.extend({ - using: function (props) { - $tip.css({ - top: Math.round(props.top), - left: Math.round(props.left) - }) - } - }, offset), 0) - - $tip.addClass('in') - - // check to see if placing tip in new offset caused the tip to resize itself - var actualWidth = $tip[0].offsetWidth - var actualHeight = $tip[0].offsetHeight - - if (placement == 'top' && actualHeight != height) { - offset.top = offset.top + height - actualHeight - } - - var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) - - if (delta.left) offset.left += delta.left - else offset.top += delta.top - - var isVertical = /top|bottom/.test(placement) - var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight - var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' - - $tip.offset(offset) - this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) - } - - Tooltip.prototype.replaceArrow = function (delta, dimension, isHorizontal) { - this.arrow() - .css(isHorizontal ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') - .css(isHorizontal ? 'top' : 'left', '') - } - - Tooltip.prototype.setContent = function () { - var $tip = this.tip() - var title = this.getTitle() - - $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) - $tip.removeClass('fade in top bottom left right') - } - - Tooltip.prototype.hide = function (callback) { - var that = this - var $tip = this.tip() - var e = $.Event('hide.bs.' + this.type) - - function complete() { - if (that.hoverState != 'in') $tip.detach() - that.$element - .removeAttr('aria-describedby') - .trigger('hidden.bs.' + that.type) - callback && callback() - } - - this.$element.trigger(e) - - if (e.isDefaultPrevented()) return - - $tip.removeClass('in') - - $.support.transition && this.$tip.hasClass('fade') ? - $tip - .one('bsTransitionEnd', complete) - .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : - complete() - - this.hoverState = null - - return this - } - - Tooltip.prototype.fixTitle = function () { - var $e = this.$element - if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') { - $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') - } - } - - Tooltip.prototype.hasContent = function () { - return this.getTitle() - } - - Tooltip.prototype.getPosition = function ($element) { - $element = $element || this.$element - - var el = $element[0] - var isBody = el.tagName == 'BODY' - - var elRect = el.getBoundingClientRect() - if (elRect.width == null) { - // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 - elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) - } - var elOffset = isBody ? { top: 0, left: 0 } : $element.offset() - var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } - var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null - - return $.extend({}, elRect, scroll, outerDims, elOffset) - } - - Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { - return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : - placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : - placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : - /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } - - } - - Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { - var delta = { top: 0, left: 0 } - if (!this.$viewport) return delta - - var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 - var viewportDimensions = this.getPosition(this.$viewport) - - if (/right|left/.test(placement)) { - var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll - var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight - if (topEdgeOffset < viewportDimensions.top) { // top overflow - delta.top = viewportDimensions.top - topEdgeOffset - } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow - delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset - } - } else { - var leftEdgeOffset = pos.left - viewportPadding - var rightEdgeOffset = pos.left + viewportPadding + actualWidth - if (leftEdgeOffset < viewportDimensions.left) { // left overflow - delta.left = viewportDimensions.left - leftEdgeOffset - } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow - delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset - } - } - - return delta - } - - Tooltip.prototype.getTitle = function () { - var title - var $e = this.$element - var o = this.options - - title = $e.attr('data-original-title') - || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) - - return title - } - - Tooltip.prototype.getUID = function (prefix) { - do prefix += ~~(Math.random() * 1000000) - while (document.getElementById(prefix)) - return prefix - } - - Tooltip.prototype.tip = function () { - return (this.$tip = this.$tip || $(this.options.template)) - } - - Tooltip.prototype.arrow = function () { - return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) - } - - Tooltip.prototype.enable = function () { - this.enabled = true - } - - Tooltip.prototype.disable = function () { - this.enabled = false - } - - Tooltip.prototype.toggleEnabled = function () { - this.enabled = !this.enabled - } - - Tooltip.prototype.toggle = function (e) { - var self = this - if (e) { - self = $(e.currentTarget).data('bs.' + this.type) - if (!self) { - self = new this.constructor(e.currentTarget, this.getDelegateOptions()) - $(e.currentTarget).data('bs.' + this.type, self) - } - } - - self.tip().hasClass('in') ? self.leave(self) : self.enter(self) - } - - Tooltip.prototype.destroy = function () { - var that = this - clearTimeout(this.timeout) - this.hide(function () { - that.$element.off('.' + that.type).removeData('bs.' + that.type) - }) - } - - - // TOOLTIP PLUGIN DEFINITION - // ========================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.tooltip') - var options = typeof option == 'object' && option - var selector = options && options.selector - - if (!data && option == 'destroy') return - if (selector) { - if (!data) $this.data('bs.tooltip', (data = {})) - if (!data[selector]) data[selector] = new Tooltip(this, options) - } else { - if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) - } - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.tooltip - - $.fn.tooltip = Plugin - $.fn.tooltip.Constructor = Tooltip - - - // TOOLTIP NO CONFLICT - // =================== - - $.fn.tooltip.noConflict = function () { - $.fn.tooltip = old - return this - } - -}(jQuery); - -/* ======================================================================== - * Bootstrap: popover.js v3.3.1 - * http://getbootstrap.com/javascript/#popovers - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // POPOVER PUBLIC CLASS DEFINITION - // =============================== - - var Popover = function (element, options) { - this.init('popover', element, options) - } - - if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') - - Popover.VERSION = '3.3.1' - - Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { - placement: 'right', - trigger: 'click', - content: '', - template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' - }) - - - // NOTE: POPOVER EXTENDS tooltip.js - // ================================ - - Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) - - Popover.prototype.constructor = Popover - - Popover.prototype.getDefaults = function () { - return Popover.DEFAULTS - } - - Popover.prototype.setContent = function () { - var $tip = this.tip() - var title = this.getTitle() - var content = this.getContent() - - $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) - $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events - this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' - ](content) - - $tip.removeClass('fade top bottom left right in') - - // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do - // this manually by checking the contents. - if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() - } - - Popover.prototype.hasContent = function () { - return this.getTitle() || this.getContent() - } - - Popover.prototype.getContent = function () { - var $e = this.$element - var o = this.options - - return $e.attr('data-content') - || (typeof o.content == 'function' ? - o.content.call($e[0]) : - o.content) - } - - Popover.prototype.arrow = function () { - return (this.$arrow = this.$arrow || this.tip().find('.arrow')) - } - - Popover.prototype.tip = function () { - if (!this.$tip) this.$tip = $(this.options.template) - return this.$tip - } - - - // POPOVER PLUGIN DEFINITION - // ========================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.popover') - var options = typeof option == 'object' && option - var selector = options && options.selector - - if (!data && option == 'destroy') return - if (selector) { - if (!data) $this.data('bs.popover', (data = {})) - if (!data[selector]) data[selector] = new Popover(this, options) - } else { - if (!data) $this.data('bs.popover', (data = new Popover(this, options))) - } - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.popover - - $.fn.popover = Plugin - $.fn.popover.Constructor = Popover - - - // POPOVER NO CONFLICT - // =================== - - $.fn.popover.noConflict = function () { - $.fn.popover = old - return this - } - -}(jQuery); - -/* ======================================================================== - * Bootstrap: scrollspy.js v3.3.1 - * http://getbootstrap.com/javascript/#scrollspy - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // SCROLLSPY CLASS DEFINITION - // ========================== - - function ScrollSpy(element, options) { - var process = $.proxy(this.process, this) - - this.$body = $('body') - this.$scrollElement = $(element).is('body') ? $(window) : $(element) - this.options = $.extend({}, ScrollSpy.DEFAULTS, options) - this.selector = (this.options.target || '') + ' .nav li > a' - this.offsets = [] - this.targets = [] - this.activeTarget = null - this.scrollHeight = 0 - - this.$scrollElement.on('scroll.bs.scrollspy', process) - this.refresh() - this.process() - } - - ScrollSpy.VERSION = '3.3.1' - - ScrollSpy.DEFAULTS = { - offset: 10 - } - - ScrollSpy.prototype.getScrollHeight = function () { - return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) - } - - ScrollSpy.prototype.refresh = function () { - var offsetMethod = 'offset' - var offsetBase = 0 - - if (!$.isWindow(this.$scrollElement[0])) { - offsetMethod = 'position' - offsetBase = this.$scrollElement.scrollTop() - } - - this.offsets = [] - this.targets = [] - this.scrollHeight = this.getScrollHeight() - - var self = this - - this.$body - .find(this.selector) - .map(function () { - var $el = $(this) - var href = $el.data('target') || $el.attr('href') - var $href = /^#./.test(href) && $(href) - - return ($href - && $href.length - && $href.is(':visible') - && [[$href[offsetMethod]().top + offsetBase, href]]) || null - }) - .sort(function (a, b) { return a[0] - b[0] }) - .each(function () { - self.offsets.push(this[0]) - self.targets.push(this[1]) - }) - } - - ScrollSpy.prototype.process = function () { - var scrollTop = this.$scrollElement.scrollTop() + this.options.offset - var scrollHeight = this.getScrollHeight() - var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() - var offsets = this.offsets - var targets = this.targets - var activeTarget = this.activeTarget - var i - - if (this.scrollHeight != scrollHeight) { - this.refresh() - } - - if (scrollTop >= maxScroll) { - return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) - } - - if (activeTarget && scrollTop < offsets[0]) { - this.activeTarget = null - return this.clear() - } - - for (i = offsets.length; i--;) { - activeTarget != targets[i] - && scrollTop >= offsets[i] - && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) - && this.activate(targets[i]) - } - } - - ScrollSpy.prototype.activate = function (target) { - this.activeTarget = target - - this.clear() - - var selector = this.selector + - '[data-target="' + target + '"],' + - this.selector + '[href="' + target + '"]' - - var active = $(selector) - .parents('li') - .addClass('active') - - if (active.parent('.dropdown-menu').length) { - active = active - .closest('li.dropdown') - .addClass('active') - } - - active.trigger('activate.bs.scrollspy') - } - - ScrollSpy.prototype.clear = function () { - $(this.selector) - .parentsUntil(this.options.target, '.active') - .removeClass('active') - } - - - // SCROLLSPY PLUGIN DEFINITION - // =========================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.scrollspy') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.scrollspy - - $.fn.scrollspy = Plugin - $.fn.scrollspy.Constructor = ScrollSpy - - - // SCROLLSPY NO CONFLICT - // ===================== - - $.fn.scrollspy.noConflict = function () { - $.fn.scrollspy = old - return this - } - - - // SCROLLSPY DATA-API - // ================== - - $(window).on('load.bs.scrollspy.data-api', function () { - $('[data-spy="scroll"]').each(function () { - var $spy = $(this) - Plugin.call($spy, $spy.data()) - }) - }) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: tab.js v3.3.1 - * http://getbootstrap.com/javascript/#tabs - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // TAB CLASS DEFINITION - // ==================== - - var Tab = function (element) { - this.element = $(element) - } - - Tab.VERSION = '3.3.1' - - Tab.TRANSITION_DURATION = 150 - - Tab.prototype.show = function () { - var $this = this.element - var $ul = $this.closest('ul:not(.dropdown-menu)') - var selector = $this.data('target') - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 - } - - if ($this.parent('li').hasClass('active')) return - - var $previous = $ul.find('.active:last a') - var hideEvent = $.Event('hide.bs.tab', { - relatedTarget: $this[0] - }) - var showEvent = $.Event('show.bs.tab', { - relatedTarget: $previous[0] - }) - - $previous.trigger(hideEvent) - $this.trigger(showEvent) - - if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return - - var $target = $(selector) - - this.activate($this.closest('li'), $ul) - this.activate($target, $target.parent(), function () { - $previous.trigger({ - type: 'hidden.bs.tab', - relatedTarget: $this[0] - }) - $this.trigger({ - type: 'shown.bs.tab', - relatedTarget: $previous[0] - }) - }) - } - - Tab.prototype.activate = function (element, container, callback) { - var $active = container.find('> .active') - var transition = callback - && $.support.transition - && (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length) - - function next() { - $active - .removeClass('active') - .find('> .dropdown-menu > .active') - .removeClass('active') - .end() - .find('[data-toggle="tab"]') - .attr('aria-expanded', false) - - element - .addClass('active') - .find('[data-toggle="tab"]') - .attr('aria-expanded', true) - - if (transition) { - element[0].offsetWidth // reflow for transition - element.addClass('in') - } else { - element.removeClass('fade') - } - - if (element.parent('.dropdown-menu')) { - element - .closest('li.dropdown') - .addClass('active') - .end() - .find('[data-toggle="tab"]') - .attr('aria-expanded', true) - } - - callback && callback() - } - - $active.length && transition ? - $active - .one('bsTransitionEnd', next) - .emulateTransitionEnd(Tab.TRANSITION_DURATION) : - next() - - $active.removeClass('in') - } - - - // TAB PLUGIN DEFINITION - // ===================== - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.tab') - - if (!data) $this.data('bs.tab', (data = new Tab(this))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.tab - - $.fn.tab = Plugin - $.fn.tab.Constructor = Tab - - - // TAB NO CONFLICT - // =============== - - $.fn.tab.noConflict = function () { - $.fn.tab = old - return this - } - - - // TAB DATA-API - // ============ - - var clickHandler = function (e) { - e.preventDefault() - Plugin.call($(this), 'show') - } - - $(document) - .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) - .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) - -}(jQuery); - -/* ======================================================================== - * Bootstrap: affix.js v3.3.1 - * http://getbootstrap.com/javascript/#affix - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // AFFIX CLASS DEFINITION - // ====================== - - var Affix = function (element, options) { - this.options = $.extend({}, Affix.DEFAULTS, options) - - this.$target = $(this.options.target) - .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) - .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) - - this.$element = $(element) - this.affixed = - this.unpin = - this.pinnedOffset = null - - this.checkPosition() - } - - Affix.VERSION = '3.3.1' - - Affix.RESET = 'affix affix-top affix-bottom' - - Affix.DEFAULTS = { - offset: 0, - target: window - } - - Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { - var scrollTop = this.$target.scrollTop() - var position = this.$element.offset() - var targetHeight = this.$target.height() - - if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false - - if (this.affixed == 'bottom') { - if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' - return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' - } - - var initializing = this.affixed == null - var colliderTop = initializing ? scrollTop : position.top - var colliderHeight = initializing ? targetHeight : height - - if (offsetTop != null && colliderTop <= offsetTop) return 'top' - if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' - - return false - } - - Affix.prototype.getPinnedOffset = function () { - if (this.pinnedOffset) return this.pinnedOffset - this.$element.removeClass(Affix.RESET).addClass('affix') - var scrollTop = this.$target.scrollTop() - var position = this.$element.offset() - return (this.pinnedOffset = position.top - scrollTop) - } - - Affix.prototype.checkPositionWithEventLoop = function () { - setTimeout($.proxy(this.checkPosition, this), 1) - } - - Affix.prototype.checkPosition = function () { - if (!this.$element.is(':visible')) return - - var height = this.$element.height() - var offset = this.options.offset - var offsetTop = offset.top - var offsetBottom = offset.bottom - var scrollHeight = $('body').height() - - if (typeof offset != 'object') offsetBottom = offsetTop = offset - if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) - if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) - - var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) - - if (this.affixed != affix) { - if (this.unpin != null) this.$element.css('top', '') - - var affixType = 'affix' + (affix ? '-' + affix : '') - var e = $.Event(affixType + '.bs.affix') - - this.$element.trigger(e) - - if (e.isDefaultPrevented()) return - - this.affixed = affix - this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null - - this.$element - .removeClass(Affix.RESET) - .addClass(affixType) - .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') - } - - if (affix == 'bottom') { - this.$element.offset({ - top: scrollHeight - height - offsetBottom - }) - } - } - - - // AFFIX PLUGIN DEFINITION - // ======================= - - function Plugin(option) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.affix') - var options = typeof option == 'object' && option - - if (!data) $this.data('bs.affix', (data = new Affix(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - var old = $.fn.affix - - $.fn.affix = Plugin - $.fn.affix.Constructor = Affix - - - // AFFIX NO CONFLICT - // ================= - - $.fn.affix.noConflict = function () { - $.fn.affix = old - return this - } - - - // AFFIX DATA-API - // ============== - - $(window).on('load', function () { - $('[data-spy="affix"]').each(function () { - var $spy = $(this) - var data = $spy.data() - - data.offset = data.offset || {} - - if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom - if (data.offsetTop != null) data.offset.top = data.offsetTop - - Plugin.call($spy, data) - }) - }) - -}(jQuery); diff --git a/gui/slick/js/lib/bootstrap.min.js b/gui/slick/js/lib/bootstrap.min.js index d839865900c1ab1245618347dcb0a0d4bb01b893..133aeecb98aa2b05d2dc1fcd623afcb37204828a 100644 Binary files a/gui/slick/js/lib/bootstrap.min.js and b/gui/slick/js/lib/bootstrap.min.js differ diff --git a/gui/slick/js/lib/jquery-1.11.2.min.map b/gui/slick/js/lib/jquery-1.11.2.min.map deleted file mode 100644 index 837de0b541282ce2acb49f6020ce30f73f18c1bb..0000000000000000000000000000000000000000 --- a/gui/slick/js/lib/jquery-1.11.2.min.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"jquery-1.11.2.min.js","sources":["jquery-1.11.2.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","deletedIds","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","support","version","jQuery","selector","context","fn","init","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","prototype","jquery","constructor","length","toArray","call","get","num","pushStack","elems","ret","merge","prevObject","each","callback","args","map","elem","i","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","src","copyIsArray","copy","name","options","clone","target","deep","isFunction","isPlainObject","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","obj","type","Array","isWindow","isNumeric","parseFloat","isEmptyObject","key","nodeType","e","ownLast","globalEval","data","trim","execScript","camelCase","string","nodeName","toLowerCase","value","isArraylike","text","makeArray","arr","results","Object","inArray","max","second","grep","invert","callbackInverse","matches","callbackExpect","arg","guid","proxy","tmp","now","Date","split","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","MAX_NEGATIVE","pop","push_native","list","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","unloadHandler","childNodes","els","seed","match","m","groups","old","nid","newContext","newSelector","ownerDocument","exec","getElementById","parentNode","id","getElementsByTagName","getElementsByClassName","qsa","test","getAttribute","setAttribute","toSelector","testContext","join","querySelectorAll","qsaError","removeAttribute","keys","cache","cacheLength","shift","markFunction","assert","div","createElement","removeChild","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","parent","doc","defaultView","top","addEventListener","attachEvent","className","appendChild","createComment","getById","getElementsByName","find","filter","attrId","getAttributeNode","tag","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","val","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","dir"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","div1","defaultValue","unique","isXMLDoc","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","is","rootjQuery","charAt","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","next","prev","until","sibling","n","r","targets","closest","l","pos","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","contentWindow","reverse","rnotwhite","optionsCache","createOptions","object","flag","Callbacks","firing","memory","fired","firingLength","firingIndex","firingStart","stack","once","fire","stopOnFalse","disable","remove","lock","locked","fireWith","Deferred","func","tuples","state","promise","always","deferred","fail","then","fns","newDefer","tuple","returned","resolve","reject","progress","notify","pipe","stateString","when","subordinate","resolveValues","remaining","updateFunc","values","progressValues","notifyWith","resolveWith","progressContexts","resolveContexts","readyList","readyWait","holdReady","hold","wait","body","setTimeout","triggerHandler","off","detach","removeEventListener","completed","detachEvent","event","readyState","frameElement","doScroll","doScrollCheck","strundefined","inlineBlockNeedsLayout","container","style","cssText","zoom","offsetWidth","deleteExpando","acceptData","noData","rbrace","rmultiDash","dataAttr","parseJSON","isEmptyDataObject","internalData","pvt","thisCache","internalKey","isNode","toJSON","internalRemoveData","cleanData","applet ","embed ","object ","hasData","removeData","_data","_removeData","queue","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","cssExpand","isHidden","el","css","access","chainable","emptyGet","raw","bulk","rcheckableType","fragment","createDocumentFragment","leadingWhitespace","tbody","htmlSerialize","html5Clone","cloneNode","outerHTML","appendChecked","noCloneChecked","checkClone","noCloneEvent","click","eventName","change","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","types","events","t","handleObjIn","special","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","trigger","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","namespace_re","noBubble","parentWindow","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","prop","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","props","srcElement","metaKey","original","which","charCode","keyCode","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","load","blur","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","attaches","on","one","origFn","createSafeFragment","nodeNames","safeFrag","rinlinejQuery","rnoshimcache","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","rchecked","rscriptType","rscriptTypeMasked","rcleanScript","wrapMap","option","legend","area","param","thead","tr","col","td","safeFragment","fragmentDiv","optgroup","tfoot","colgroup","caption","th","getAll","found","fixDefaultChecked","defaultChecked","manipulationTarget","content","disableScript","restoreScript","setGlobalEval","refElements","cloneCopyEvent","dest","oldData","curData","fixCloneNodeIssues","defaultSelected","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","buildFragment","scripts","selection","wrap","safe","nodes","createTextNode","append","domManip","prepend","insertBefore","before","after","keepData","html","replaceWith","replaceChild","hasScripts","set","iNoClone","_evalUrl","appendTo","prependTo","insertAfter","replaceAll","insert","iframe","elemdisplay","actualDisplay","display","getDefaultComputedStyle","defaultDisplay","write","close","shrinkWrapBlocksVal","shrinkWrapBlocks","width","rmargin","rnumnonpx","getStyles","curCSS","rposition","getComputedStyle","opener","computed","minWidth","maxWidth","getPropertyValue","currentStyle","left","rs","rsLeft","runtimeStyle","pixelLeft","addGetHookIf","conditionFn","hookFn","condition","pixelPositionVal","boxSizingReliableVal","reliableHiddenOffsetsVal","reliableMarginRightVal","opacity","cssFloat","backgroundClip","clearCloneStyle","boxSizing","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","computeStyleTests","boxSizingReliable","pixelPosition","reliableMarginRight","marginRight","offsetHeight","swap","ralpha","ropacity","rdisplayswap","rnumsplit","rrelNum","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","vendorPropName","capName","origName","showHide","show","hidden","setPositiveNumber","subtract","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","cssHooks","cssNumber","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","cssProps","float","$1","margin","padding","border","prefix","suffix","expand","expanded","parts","hide","toggle","Tween","easing","unit","propHooks","run","percent","eased","duration","step","tween","fx","linear","p","swing","cos","PI","fxNow","timerId","rfxtypes","rfxnum","rrun","animationPrefilters","defaultPrefilter","tweeners","*","createTween","scale","maxIterations","createFxNow","genFx","includeWidth","height","animation","collection","opts","oldfire","checkDisplay","anim","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","Animation","properties","stopped","tick","currentTime","startTime","tweens","originalProperties","originalOptions","gotoEnd","rejectWith","timer","complete","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","clearTimeout","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","valHooks","optionSet","scrollHeight","nodeHook","boolHook","ruseDefault","getSetInput","removeAttr","nType","attrHooks","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rfocusable","rclickable","removeProp","for","class","notxml","tabindex","parseInt","rclass","addClass","classes","clazz","finalValue","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","nonce","rquery","rvalidtokens","JSON","parse","requireNonComma","depth","str","comma","open","Function","parseXML","DOMParser","parseFromString","ActiveXObject","async","loadXML","ajaxLocParts","ajaxLocation","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","prefilters","transports","allTypes","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","firstDataType","ct","finalDataType","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","responseFields","dataFilter","active","lastModified","etag","url","isLocal","processData","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","cacheURL","responseHeadersString","timeoutTimer","fireGlobals","transport","responseHeaders","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","code","status","abort","statusText","finalText","success","method","crossDomain","traditional","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","modified","getJSON","getScript","throws","wrapAll","wrapInner","unwrap","visible","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","v","encodeURIComponent","serialize","serializeArray","xhr","createStandardXHR","createActiveXHR","xhrId","xhrCallbacks","xhrSupported","cors","username","xhrFields","isAbort","onreadystatechange","responseText","XMLHttpRequest","script","text script","head","scriptCharset","charset","onload","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","getWindow","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","box","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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"} \ No newline at end of file diff --git a/gui/slick/js/lib/jquery-ui-1.10.4.custom.min.js b/gui/slick/js/lib/jquery-ui-1.10.4.custom.min.js index b384e05049605c00b56d92b2e1e66017d951231c..ce23cf3e604b1ce1abbdf84d3cb40d6bf3eaa2af 100644 Binary files a/gui/slick/js/lib/jquery-ui-1.10.4.custom.min.js and b/gui/slick/js/lib/jquery-ui-1.10.4.custom.min.js differ diff --git a/gui/slick/js/lib/npm.js b/gui/slick/js/lib/npm.js deleted file mode 100644 index bf6aa80602d9303b61e8d5e63c10568e55b6a4d8..0000000000000000000000000000000000000000 --- a/gui/slick/js/lib/npm.js +++ /dev/null @@ -1,13 +0,0 @@ -// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. -require('../../js/transition.js') -require('../../js/alert.js') -require('../../js/button.js') -require('../../js/carousel.js') -require('../../js/collapse.js') -require('../../js/dropdown.js') -require('../../js/modal.js') -require('../../js/tooltip.js') -require('../../js/popover.js') -require('../../js/scrollspy.js') -require('../../js/tab.js') -require('../../js/affix.js') \ No newline at end of file diff --git a/gui/slick/js/script.js b/gui/slick/js/script.js index a3882d44b2d15846bd2bbf5687e2ab50f6df1651..d1be809feb07db04d984d66ff96e20fa03993f38 100644 --- a/gui/slick/js/script.js +++ b/gui/slick/js/script.js @@ -63,7 +63,7 @@ function resetFilters(text) { function initFancybox() { if ($("a[rel=dialog]").length > 0) { - $.getScript(sbRoot + '/js/fancybox/jquery.fancybox.js', function () { + $.getScript(sbRoot + '/js/fancybox/jquery.fancybox.pack.js', function () { $("head").append("<link rel='stylesheet' href='" + sbRoot + "/js/fancybox/jquery.fancybox.css'>"); $("a[rel=dialog]").fancybox({ type: "image", @@ -99,7 +99,7 @@ function initTabs() { } //Dont use the builtin fx effects. This will fade in/out both tabs, we dont want that - //Fadein the new tab yourself + //Fadein the new tab yourself $(ui.newPanel).hide().fadeIn(0); if (lastOpenedPanel) { diff --git a/lib/guessit/__init__.py b/lib/guessit/__init__.py index c89c19c07f95b4a992d16917cb3e99933eea934f..269566e75c36369d033aba53e792b687899e51eb 100644 --- a/lib/guessit/__init__.py +++ b/lib/guessit/__init__.py @@ -93,6 +93,10 @@ from copy import deepcopy import babelfish import os.path import logging +from guessit.options import get_opts +import shlex +# Needed for guessit.plugins.transformers.reload() to be called. +from guessit.plugins import transformers log = logging.getLogger(__name__) @@ -271,8 +275,16 @@ def guess_file_info(filename, info=None, options=None, **kwargs): """ info = info or 'filename' options = options or {} + + if isinstance(options, base_text_type): + args = shlex.split(options) + options = vars(get_opts().parse_args(args)) if default_options: - merged_options = deepcopy(default_options) + if isinstance(default_options, base_text_type): + default_args = shlex.split(default_options) + merged_options = vars(get_opts().parse_args(default_args)) + else: + merged_options = deepcopy(default_options) merged_options.update(options) options = merged_options diff --git a/lib/guessit/__main__.py b/lib/guessit/__main__.py index a44b7d5c8ed1c9a7ab2bedf79f3486018bdcc15b..a8ff99746f847f8878a1a5afa71ece9c485dea7a 100644 --- a/lib/guessit/__main__.py +++ b/lib/guessit/__main__.py @@ -181,16 +181,16 @@ def submit_bug(filename, options): opts = dict((k, v) for k, v in options.__dict__.items() if v and k != 'submit_bug') - r = requests.post('http://localhost:5000/bugs', {'filename': filename, + r = requests.post('http://guessit.io/bugs', {'filename': filename, 'version': __version__, 'options': str(opts)}) if r.status_code == 200: print('Successfully submitted file: %s' % r.text) else: - print('Could not submit bug at the moment, please try again later.') + print('Could not submit bug at the moment, please try again later: %s %s' % (r.status_code, r.reason)) except RequestException as e: - print('Could not submit bug at the moment, please try again later.') + print('Could not submit bug at the moment, please try again later: %s' % e) def main(args=None, setup_logging=True): diff --git a/lib/guessit/__version__.py b/lib/guessit/__version__.py index b4dd8f8ec51d5d0c9b82fb2b1b3abbc07dc60317..e24d8dea4851f5714d50f0c877d4b99f33108f6c 100644 --- a/lib/guessit/__version__.py +++ b/lib/guessit/__version__.py @@ -17,4 +17,4 @@ # You should have received a copy of the Lesser GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. # -__version__ = '0.10.4.dev0' +__version__ = '0.11.0.dev0' diff --git a/lib/guessit/containers.py b/lib/guessit/containers.py index ab97e6f1600e6df71aecce67eb6b9a2bc6793fea..30d7871fa15cfa888048bdb1f5415955c3df7abb 100644 --- a/lib/guessit/containers.py +++ b/lib/guessit/containers.py @@ -153,12 +153,16 @@ class DefaultValidator(object): def validate(self, prop, string, node, match, entry_start, entry_end): span = _get_span(prop, match) span = _trim_span(span, string[span[0]:span[1]]) + return DefaultValidator.validate_string(string, span, entry_start, entry_end) + + @staticmethod + def validate_string(string, span, entry_start=None, entry_end=None): start, end = span sep_start = start <= 0 or string[start - 1] in sep sep_end = end >= len(string) or string[end] in sep - start_by_other = start in entry_end - end_by_other = end in entry_start + start_by_other = start in entry_end if entry_end else False + end_by_other = end in entry_start if entry_start else False if (sep_start or start_by_other) and (sep_end or end_by_other): return True return False @@ -235,6 +239,13 @@ class NeighborValidator(DefaultValidator): return False +class FullMatchValidator(DefaultValidator): + """Make sure the node match fully""" + def validate(self, prop, string, node, match, entry_start, entry_end): + at_start, at_end = _get_positions(prop, string, node, match, entry_start, entry_end) + + return at_start and at_end + class LeavesValidator(DefaultValidator): def __init__(self, lambdas=None, previous_lambdas=None, next_lambdas=None, both_side=False, default_=True): @@ -290,7 +301,7 @@ class LeavesValidator(DefaultValidator): class _Property: """Represents a property configuration.""" - def __init__(self, keys=None, pattern=None, canonical_form=None, canonical_from_pattern=True, confidence=1.0, enhance=True, global_span=False, validator=DefaultValidator(), formatter=None, disabler=None, confidence_lambda=None): + def __init__(self, keys=None, pattern=None, canonical_form=None, canonical_from_pattern=True, confidence=1.0, enhance=True, global_span=False, validator=DefaultValidator(), formatter=None, disabler=None, confidence_lambda=None, remove_duplicates=False): """ :param keys: Keys of the property (format, screenSize, ...) :type keys: string @@ -309,6 +320,8 @@ class _Property: :type validator: :class:`DefaultValidator` :param formatter: Formater to use :type formatter: function + :param remove_duplicates: Keep only the last match if multiple values are found + :type remove_duplicates: bool """ if isinstance(keys, list): self.keys = keys @@ -335,6 +348,7 @@ class _Property: self.validator = validator self.formatter = formatter self.disabler = disabler + self.remove_duplicates = remove_duplicates def disabled(self, options): if self.disabler: @@ -479,7 +493,8 @@ class PropertiesContainer(object): entries.append((prop, match)) else: matches = list(prop.compiled.finditer(string)) - duplicate_matches[prop] = matches + if prop.remove_duplicates: + duplicate_matches[prop] = matches for match in matches: entries.append((prop, match)) @@ -490,6 +505,9 @@ class PropertiesContainer(object): if computed_confidence is not None: prop.confidence = computed_confidence + entries.sort(key=lambda entry: -entry[0].confidence) + # sort entries, from most confident to less confident + if validate: # compute entries start and ends for prop, match in entries: @@ -531,7 +549,7 @@ class PropertiesContainer(object): del entry_end[end] for prop, prop_duplicate_matches in duplicate_matches.items(): - # Keeping the last valid match. + # Keeping the last valid match only. # Needed for the.100.109.hdtv-lol.mp4 for duplicate_match in prop_duplicate_matches[:-1]: entries.remove((prop, duplicate_match)) @@ -561,8 +579,8 @@ class PropertiesContainer(object): for prop, match in key_entries: start, end = _get_span(prop, match) if not best_prop or \ - best_prop.confidence < best_prop.confidence or \ - best_prop.confidence == best_prop.confidence and \ + best_prop.confidence < prop.confidence or \ + best_prop.confidence == prop.confidence and \ best_match.span()[1] - best_match.span()[0] < match.span()[1] - match.span()[0]: best_prop, best_match = prop, match diff --git a/lib/guessit/guess.py b/lib/guessit/guess.py index c8e4720f33a88ed48bdc2391b9b8e007895ce31b..133c1769d3954a28c2e980cf0a4a2839fb0a0ed4 100644 --- a/lib/guessit/guess.py +++ b/lib/guessit/guess.py @@ -503,7 +503,7 @@ def smart_merge(guesses): # 1- try to merge similar information together and give it a higher # confidence - for int_part in ('year', 'season', 'episodeNumber'): + for int_part in ('year', 'season'): merge_similar_guesses(guesses, int_part, choose_int) for string_part in ('title', 'series', 'container', 'format', diff --git a/lib/guessit/language.py b/lib/guessit/language.py index 9654b624acb1fbe83fe549833a5de46f054b3802..0d7b6bc4cd130beab76d76615bd8121bd6107bad 100644 --- a/lib/guessit/language.py +++ b/lib/guessit/language.py @@ -186,7 +186,7 @@ LNG_COMMON_WORDS = frozenset([ 'la', 'el', 'del', 'por', 'mar', 'al', # other 'ind', 'arw', 'ts', 'ii', 'bin', 'chan', 'ss', 'san', 'oss', 'iii', - 'vi', 'ben', 'da', 'lt', 'ch', 'sr', + 'vi', 'ben', 'da', 'lt', 'ch', 'sr', 'ps', 'cx', # new from babelfish 'mkv', 'avi', 'dmd', 'the', 'dis', 'cut', 'stv', 'des', 'dia', 'and', 'cab', 'sub', 'mia', 'rim', 'las', 'une', 'par', 'srt', 'ano', 'toy', @@ -207,7 +207,7 @@ LNG_COMMON_WORDS_STRICT = frozenset(['brazil']) subtitle_prefixes = ['sub', 'subs', 'st', 'vost', 'subforced', 'fansub', 'hardsub'] -subtitle_suffixes = ['subforced', 'fansub', 'hardsub'] +subtitle_suffixes = ['subforced', 'fansub', 'hardsub', 'sub', 'subs'] lang_prefixes = ['true'] diff --git a/lib/guessit/matcher.py b/lib/guessit/matcher.py index ba233d6c3209cc72c7f7041f582a6c7d0477f222..e1ed26f1b2fec36ea1c1653a7b3dc3d3027d3a4e 100644 --- a/lib/guessit/matcher.py +++ b/lib/guessit/matcher.py @@ -269,35 +269,29 @@ class GuessFinder(object): self.process_node(node, partial_span=relative_span) return - # restore sentinels compensation if isinstance(result, Guess): guess = result else: - guess = Guess(result, confidence=self.confidence, input=string, span=span) + no_sentinel_string =string[1:-1] + guess = Guess(result, confidence=self.confidence, input=no_sentinel_string, span=span) if not iterative: found_guess(node, guess, logger=self.logger) else: absolute_span = (span[0] + node.offset, span[1] + node.offset) node.partition(span) + found_child = None - if node.is_leaf(): - # FIXME: this seems like it is dead code... - found_guess(node, guess, logger=self.logger) + for child in node.children: + if child.span == absolute_span: + # if we have a match on one of our children, mark it as such... + found_guess(child, guess, logger=self.logger) + found_child = child + break - else: - found_child = None - - for child in node.children: - if child.span == absolute_span: - # if we have a match on one of our children, mark it as such... - found_guess(child, guess, logger=self.logger) - found_child = child - break - - # ...and only then recurse on the other children - for child in node.children: - if child is not found_child: - self.process_node(child) + # ...and only then recurse on the other children + for child in node.children: + if child is not found_child: + self.process_node(child) diff --git a/lib/guessit/matchtree.py b/lib/guessit/matchtree.py index 4b6d85e5c3d7f12579c9dbe6e50d2449263985f3..dc4304ddebcbff186b4833f5f05d7a0432c0d723 100644 --- a/lib/guessit/matchtree.py +++ b/lib/guessit/matchtree.py @@ -30,7 +30,6 @@ from guessit.patterns import group_delimiters from guessit.guess import (smart_merge, Guess) - log = logging.getLogger(__name__) @@ -75,7 +74,7 @@ class BaseMatchTree(UnicodeMixin): (as shown by the ``f``'s on the last-but-one line). """ - def __init__(self, string='', span=None, parent=None, clean_function=None): + def __init__(self, string='', span=None, parent=None, clean_function=None, category=None): self.string = string self.span = span or (0, len(string)) self.parent = parent @@ -83,6 +82,7 @@ class BaseMatchTree(UnicodeMixin): self.guess = Guess() self._clean_value = None self._clean_function = clean_function or clean_default + self.category = category @property def value(self): @@ -116,6 +116,32 @@ class BaseMatchTree(UnicodeMixin): return result + @property + def raw(self): + result = {} + for guess in self.guesses: + for k in guess.keys(): + result[k] = guess.raw(k) + return result + + @property + def guesses(self): + """ + List all guesses, including children ones. + + :return: list of guesses objects + """ + + result = [] + + if self.guess: + result.append(self.guess) + + for c in self.children: + result.extend(c.guesses) + + return result + @property def root(self): """Return the root node of the tree.""" @@ -124,6 +150,23 @@ class BaseMatchTree(UnicodeMixin): return self.parent.root + @property + def ancestors(self): + """ + Retrieve all ancestors, from this node to root node. + + :return: a list of MatchTree objects + """ + ret = [self] + + if not self.parent: + return ret + + parent_ancestors = self.parent.ancestors + ret.extend(parent_ancestors) + + return ret + @property def depth(self): """Return the depth of this node.""" @@ -136,16 +179,25 @@ class BaseMatchTree(UnicodeMixin): """Return whether this node is a leaf or not.""" return self.children == [] - def add_child(self, span): - """Add a new child node to this node with the given span.""" - child = MatchTree(self.string, span=span, parent=self, clean_function=self._clean_function) + def add_child(self, span, category=None): + """Add a new child node to this node with the given span. + + :param span: span of the new MatchTree + :param category: category of the new MatchTree + :return: A new MatchTree instance having self as a parent + """ + child = MatchTree(self.string, span=span, parent=self, clean_function=self._clean_function, category=category) self.children.append(child) return child def get_partition_spans(self, indices): """Return the list of absolute spans for the regions of the original string defined by splitting this node at the given indices (relative - to this node)""" + to this node) + + :param indices: indices of the partition spans + :return: a list of tuple of the spans + """ indices = sorted(indices) if indices[-1] > len(self.value): log.error('Filename: {}'.format(self.string)) @@ -163,20 +215,29 @@ class BaseMatchTree(UnicodeMixin): return spans - def partition(self, indices): + def partition(self, indices, category=None): """Partition this node by splitting it at the given indices, - relative to this node.""" + relative to this node. + + :param indices: indices of the partition spans + :param category: category of the new MatchTree + :return: a list of created MatchTree instances + """ + created = [] for partition_span in self.get_partition_spans(indices): - self.add_child(span=partition_span) + created.append(self.add_child(span=partition_span, category=category)) + return created - def split_on_components(self, components): + def split_on_components(self, components, category=None): offset = 0 + created = [] for c in components: start = self.value.find(c, offset) end = start + len(c) - self.add_child(span=(self.offset + start, - self.offset + end)) + created.append(self.add_child(span=(self.offset + start, + self.offset + end), category=category)) offset = end + return created def nodes_at_depth(self, depth): """Return all the nodes at a given depth in the tree""" @@ -213,7 +274,7 @@ class BaseMatchTree(UnicodeMixin): raise ValueError('Non-existent node index: %s' % (idx,)) def nodes(self): - """Return all the nodes and subnodes in this tree.""" + """Return a generator of all nodes and subnodes in this tree.""" yield self for child in self.children: for node in child.nodes(): @@ -225,7 +286,6 @@ class BaseMatchTree(UnicodeMixin): yield self else: for child in self.children: - # pylint: disable=W0212 for leaf in child.leaves(): yield leaf diff --git a/lib/guessit/patterns/list.py b/lib/guessit/patterns/list.py new file mode 100644 index 0000000000000000000000000000000000000000..3ca9a50fb8427cc55da2ebfdf500199a8b84e413 --- /dev/null +++ b/lib/guessit/patterns/list.py @@ -0,0 +1,80 @@ +import re +from guessit.patterns import sep, build_or_pattern +from guessit.patterns.numeral import parse_numeral + +range_separators = ['-', 'to', 'a'] +discrete_separators = ['&', 'and', 'et'] +excluded_separators = ['.'] # Dot cannot serve as a discrete_separator + +discrete_sep = sep +for range_separator in range_separators: + discrete_sep = discrete_sep.replace(range_separator, '') +for excluded_separator in excluded_separators: + discrete_sep = discrete_sep.replace(excluded_separator, '') +discrete_separators.append(discrete_sep) +all_separators = list(range_separators) +all_separators.extend(discrete_separators) + +range_separators_re = re.compile(build_or_pattern(range_separators), re.IGNORECASE) +discrete_separators_re = re.compile(build_or_pattern(discrete_separators), re.IGNORECASE) +all_separators_re = re.compile(build_or_pattern(all_separators), re.IGNORECASE) + + +def list_parser(value, property_list_name, discrete_separators_re=discrete_separators_re, range_separators_re=range_separators_re, allow_discrete=False, fill_gaps=False): + discrete_elements = filter(lambda x: x != '', discrete_separators_re.split(value)) + discrete_elements = [x.strip() for x in discrete_elements] + + proper_discrete_elements = [] + i = 0 + while i < len(discrete_elements): + if i < len(discrete_elements) - 2 and range_separators_re.match(discrete_elements[i+1]): + proper_discrete_elements.append(discrete_elements[i] + discrete_elements[i+1] + discrete_elements[i+2]) + i += 3 + else: + match = range_separators_re.search(discrete_elements[i]) + if match and match.start() == 0: + proper_discrete_elements[i - 1] += discrete_elements[i] + elif match and match.end() == len(discrete_elements[i]): + proper_discrete_elements.append(discrete_elements[i] + discrete_elements[i + 1]) + else: + proper_discrete_elements.append(discrete_elements[i]) + i += 1 + + discrete_elements = proper_discrete_elements + + ret = [] + + for discrete_element in discrete_elements: + range_values = filter(lambda x: x != '', range_separators_re.split(discrete_element)) + range_values = [x.strip() for x in range_values] + if len(range_values) > 1: + for x in range(0, len(range_values) - 1): + start_range_ep = parse_numeral(range_values[x]) + end_range_ep = parse_numeral(range_values[x+1]) + for range_ep in range(start_range_ep, end_range_ep + 1): + if range_ep not in ret: + ret.append(range_ep) + else: + discrete_value = parse_numeral(discrete_element) + if discrete_value not in ret: + ret.append(discrete_value) + + if len(ret) > 1: + if not allow_discrete: + valid_ret = list() + # replace discrete elements by ranges + valid_ret.append(ret[0]) + for i in range(0, len(ret) - 1): + previous = valid_ret[len(valid_ret) - 1] + if ret[i+1] < previous: + pass + else: + valid_ret.append(ret[i+1]) + ret = valid_ret + if fill_gaps: + ret = list(range(min(ret), max(ret) + 1)) + if len(ret) > 1: + return {None: ret[0], property_list_name: ret} + if len(ret) > 0: + return ret[0] + return None \ No newline at end of file diff --git a/lib/guessit/test/episodes.yaml b/lib/guessit/test/episodes.yaml index 2542a7dbefdad51d68343479abf46ca85f3bd33f..55165ba3ceaa6e95e9671c2575cda3b4cd0acc26 100644 --- a/lib/guessit/test/episodes.yaml +++ b/lib/guessit/test/episodes.yaml @@ -629,7 +629,7 @@ format: HDTV releaseGroup: lol -? 03-Criminal.Minds.5x03.Reckoner.ENG.-.sub.FR.HDTV.XviD-STi.[tvu.org.ru].avi +? Criminal.Minds.5x03.Reckoner.ENG.-.sub.FR.HDTV.XviD-STi.[tvu.org.ru].avi : series: Criminal Minds language: English subtitleLanguage: French @@ -1187,3 +1187,620 @@ episodeNumber: 6 title: I'm Sorry, Who's Yosi? +? 24.S05E07.FRENCH.DVDRip.XviD-FiXi0N.avi +: episodeNumber: 7 + format: DVD + language: fr + season: 5 + series: '24' + videoCodec: XviD + releaseGroup: FiXi0N + +? 12.Monkeys.S01E12.FRENCH.BDRip.x264-VENUE.mkv +: episodeNumber: 12 + format: BluRay + language: fr + releaseGroup: VENUE + season: 1 + series: 12 Monkeys + videoCodec: h264 + +? The.Daily.Show.2015.07.01.Kirsten.Gillibrand.Extended.720p.CC.WEBRip.AAC2.0.x264-BTW.mkv +: audioChannels: '2.0' + audioCodec: AAC + date: 2015-07-01 + format: WEBRip + other: CC + releaseGroup: BTW + screenSize: 720p + series: The Daily Show + title: Kirsten Gillibrand Extended + videoCodec: h264 + +? The.Daily.Show.2015.07.02.Sarah.Vowell.CC.WEBRip.AAC2.0.x264-BTW.mkv +: audioChannels: '2.0' + audioCodec: AAC + date: 2015-07-02 + format: WEBRip + other: CC + releaseGroup: BTW + series: The Daily Show + title: Sarah Vowell + videoCodec: h264 + +? 90.Day.Fiance.S02E07.I.Have.To.Tell.You.Something.720p.HDTV.x264-W4F +: options: -n + episodeNumber: 7 + format: HDTV + screenSize: 720p + season: 2 + series: 90 Day Fiance + title: I Have To Tell You Something + +? Doctor.Who.2005.S04E06.FRENCH.LD.DVDRip.XviD-TRACKS.avi +: episodeNumber: 6 + format: DVD + language: fr + releaseGroup: TRACKS + season: 4 + series: Doctor Who + other: LD + videoCodec: XviD + year: 2005 + +? Astro.Le.Petit.Robot.S01E01+02.FRENCH.DVDRiP.X264.INT-BOOLZ.mkv +: episodeNumber: 1 + episodeList: [1, 2] + format: DVD + language: fr + releaseGroup: INT-BOOLZ + season: 1 + series: Astro Le Petit Robot + videoCodec: h264 + +? Annika.Bengtzon.2012.E01.Le.Testament.De.Nobel.FRENCH.DVDRiP.XViD-STVFRV.avi +: episodeNumber: 1 + format: DVD + language: fr + releaseGroup: STVFRV + series: Annika Bengtzon + title: Le Testament De Nobel + videoCodec: XviD + year: 2012 + +? Dead.Set.02.FRENCH.LD.DVDRip.XviD-EPZ.avi +: episodeNumber: 2 + format: DVD + language: fr + other: LD + releaseGroup: EPZ + series: Dead Set + videoCodec: XviD + +? Phineas and Ferb S01E00 & S01E01 & S01E02 +: options: -n + episodeList: + - 0 + - 1 + - 2 + episodeNumber: 0 + season: 1 + series: Phineas and Ferb + +? Show.Name.S01E02.S01E03.HDTV.XViD.Etc-Group +: options: -n + episodeList: + - 2 + - 3 + episodeNumber: 2 + format: HDTV + releaseGroup: Etc-Group + season: 1 + series: Show Name + videoCodec: XviD + +? Show Name - S01E02 - S01E03 - S01E04 - Ep Name +: options: -n + episodeList: + - 2 + - 3 + - 4 + episodeNumber: 2 + season: 1 + series: Show Name + title: Ep Name + +? Show.Name.1x02.1x03.HDTV.XViD.Etc-Group +: options: -n + episodeList: + - 2 + - 3 + episodeNumber: 2 + format: HDTV + releaseGroup: Etc-Group + season: 1 + series: Show Name + videoCodec: XviD + +? Show Name - 1x02 - 1x03 - 1x04 - Ep Name +: options: -n + episodeList: + - 2 + - 3 + - 4 + episodeNumber: 2 + season: 1 + series: Show Name + title: Ep Name + +? Show.Name.S01E02.HDTV.XViD.Etc-Group +: options: -n + episodeNumber: 2 + format: HDTV + releaseGroup: Etc-Group + season: 1 + series: Show Name + videoCodec: XviD + +? Show Name - S01E02 - My Ep Name +: options: -n + episodeNumber: 2 + season: 1 + series: Show Name + title: My Ep Name + +? Show Name - S01.E03 - My Ep Name +: options: -n + episodeNumber: 3 + season: 1 + series: Show Name + title: My Ep Name + +? Show.Name.S01E02E03.HDTV.XViD.Etc-Group +: options: -n + episodeList: + - 2 + - 3 + episodeNumber: 2 + format: HDTV + releaseGroup: Etc-Group + season: 1 + series: Show Name + videoCodec: XviD + +? Show Name - S01E02-03 - My Ep Name +: options: -n + episodeList: + - 2 + - 3 + episodeNumber: 2 + season: 1 + series: Show Name + title: My Ep Name + +? Show.Name.S01.E02.E03 +: options: -n + episodeList: + - 2 + - 3 + episodeNumber: 2 + season: 1 + series: Show Name + +? Show_Name.1x02.HDTV_XViD_Etc-Group +: options: -n + episodeNumber: 2 + format: HDTV + releaseGroup: Etc-Group + season: 1 + series: Show Name + videoCodec: XviD + +? Show Name - 1x02 - My Ep Name +: options: -n + episodeNumber: 2 + season: 1 + series: Show Name + title: My Ep Name + +? Show_Name.1x02x03x04.HDTV_XViD_Etc-Group +: options: -n + episodeList: + - 2 + - 3 + - 4 + episodeNumber: 2 + format: HDTV + releaseGroup: Etc-Group + season: 1 + series: Show Name + videoCodec: XviD + +? Show Name - 1x02-03-04 - My Ep Name +: options: -n + episodeList: + - 2 + - 3 + - 4 + episodeNumber: 2 + season: 1 + series: Show Name + title: My Ep Name + +? Show.Name.100.Event.2010.11.23.HDTV.XViD.Etc-Group +: options: -n + date: 2010-11-23 + episodeNumber: 100 + format: HDTV + releaseGroup: Etc-Group + series: Show Name + title: Event + videoCodec: XviD + +? Show.Name.2010.11.23.HDTV.XViD.Etc-Group +: options: -n + date: 2010-11-23 + format: HDTV + releaseGroup: Etc-Group + series: Show Name + +? Show Name - 2010-11-23 - Ep Name +: options: -n + date: 2010-11-23 + series: Show Name + title: Ep Name + +? Show Name Season 1 Episode 2 Ep Name +: options: -n + episodeNumber: 2 + season: 1 + series: Show Name + title: Ep Name + +? Show.Name.S01.HDTV.XViD.Etc-Group +: options: -n + format: HDTV + releaseGroup: Etc-Group + season: 1 + series: Show Name + videoCodec: XviD + +? Show.Name.E02-03 +: options: -n + episodeNumber: 2 + episodeList: + - 2 + - 3 + series: Show Name + +? Show.Name.E02.2010 +: options: -n + episodeNumber: 2 + year: 2010 + series: Show Name + +? Show.Name.E23.Test +: options: -n + episodeNumber: 23 + series: Show Name + title: Test + +? Show.Name.Part.3.HDTV.XViD.Etc-Group +: options: -n -t episode + part: 3 + series: Show Name + format: HDTV + videoCodec: XviD + releaseGroup: Etc-Group + +? Show.Name.Part.1.and.Part.2.Blah-Group +: options: -n -t episode + part: 1 + partList: + - 1 + - 2 + series: Show Name + +? Show Name - 01 - Ep Name +: options: -n + episodeNumber: 1 + series: Show Name + title: Ep Name + +? 01 - Ep Name +: options: -n + episodeNumber: 1 + series: Ep Name + +? Show.Name.102.HDTV.XViD.Etc-Group +: options: -n + episodeNumber: 2 + format: HDTV + releaseGroup: Etc-Group + season: 1 + series: Show Name + videoCodec: XviD + +? '[HorribleSubs] Maria the Virgin Witch - 01 [720p].mkv' +: episodeNumber: 1 + releaseGroup: HorribleSubs + screenSize: 720p + series: Maria the Virgin Witch + +? '[ISLAND]One_Piece_679_[VOSTFR]_[V1]_[8bit]_[720p]_[EB7838FC].mp4' +: options: -E + crc32: EB7838FC + episodeNumber: 679 + releaseGroup: ISLAND + screenSize: 720p + series: One Piece + subtitleLanguage: fr + videoProfile: 8bit + version: 1 + + +? '[ISLAND]One_Piece_679_[VOSTFR]_[8bit]_[720p]_[EB7838FC].mp4' +: options: -E + crc32: EB7838FC + episodeNumber: 679 + releaseGroup: ISLAND + screenSize: 720p + series: One Piece + subtitleLanguage: fr + videoProfile: 8bit + +? '[Kaerizaki-Fansub]_One_Piece_679_[VOSTFR][HD_1280x720].mp4' +: options: -E + episodeNumber: 679 + other: HD + releaseGroup: Kaerizaki-Fansub + screenSize: 720p + series: One Piece + subtitleLanguage: fr + +? '[Kaerizaki-Fansub]_One_Piece_679_[VOSTFR][FANSUB][HD_1280x720].mp4' +: options: -E + episodeNumber: 679 + other: + - Fansub + - HD + releaseGroup: Kaerizaki-Fansub + screenSize: 720p + series: One Piece + subtitleLanguage: fr + +? '[Kaerizaki-Fansub]_One_Piece_681_[VOSTFR][HD_1280x720]_V2.mp4' +: options: -E + episodeNumber: 681 + other: HD + releaseGroup: Kaerizaki-Fansub + screenSize: 720p + series: One Piece + subtitleLanguage: fr + version: 2 + +? '[Kaerizaki-Fansub] High School DxD New 04 VOSTFR HD (1280x720) V2.mp4' +: options: -E + episodeNumber: 4 + other: HD + releaseGroup: Kaerizaki-Fansub + screenSize: 720p + series: High School DxD New + subtitleLanguage: fr + version: 2 + +? '[Kaerizaki-Fansub] One Piece 603 VOSTFR PS VITA (960x544) V2.mp4' +: options: -E + episodeNumber: 603 + releaseGroup: Kaerizaki-Fansub + screenSize: 960x544 + series: One Piece + subtitleLanguage: fr + version: 2 + +? '[Group Name] Show Name.13' +: options: -n + episodeNumber: 13 + releaseGroup: Group Name + series: Show Name + +? '[Group Name] Show Name - 13' +: options: -n + episodeNumber: 13 + releaseGroup: Group Name + series: Show Name + +? '[Group Name] Show Name 13' +: options: -n + episodeNumber: 13 + releaseGroup: Group Name + series: Show Name + +# [Group Name] Show Name.13-14 +# [Group Name] Show Name - 13-14 +# Show Name 13-14 + +? '[Stratos-Subs]_Infinite_Stratos_-_12_(1280x720_H.264_AAC)_[379759DB]' +: options: -n + audioCodec: AAC + crc32: 379759DB + episodeNumber: 12 + releaseGroup: Stratos-Subs + screenSize: 720p + series: Infinite Stratos + videoCodec: h264 + +# [ShinBunBu-Subs] Bleach - 02-03 (CX 1280x720 x264 AAC) + +? '[SGKK] Bleach 312v1 [720p/MKV]' +: options: -n + episodeNumber: 312 + releaseGroup: SGKK + screenSize: 720p + series: Bleach + version: 1 + +? '[Ayako]_Infinite_Stratos_-_IS_-_07_[H264][720p][EB7838FC]' +: options: -n + crc32: EB7838FC + episodeNumber: 7 + releaseGroup: Ayako + screenSize: 720p + series: Infinite Stratos + videoCodec: h264 + +? '[Ayako] Infinite Stratos - IS - 07v2 [H264][720p][44419534]' +: options: -n + crc32: '44419534' + episodeNumber: 7 + releaseGroup: Ayako + screenSize: 720p + series: Infinite Stratos + videoCodec: h264 + version: 2 + +? '[Ayako-Shikkaku] Oniichan no Koto Nanka Zenzen Suki Janain Dakara ne - 10 [LQ][h264][720p] [8853B21C]' +: options: -n + crc32: 8853B21C + episodeNumber: 10 + releaseGroup: Ayako-Shikkaku + screenSize: 720p + series: Oniichan no Koto Nanka Zenzen Suki Janain Dakara ne + videoCodec: h264 + +# Add support for absolute episodes +? Bleach - s16e03-04 - 313-314 +: options: -n + episodeList: + - 3 + - 4 + episodeNumber: 3 + season: 16 + series: Bleach + +? Bleach.s16e03-04.313-314 +: options: -n + episodeList: + - 3 + - 4 + episodeNumber: 3 + season: 16 + series: Bleach + +? Bleach.s16e03-04.313-314 +: options: -n + episodeList: + - 3 + - 4 + episodeNumber: 3 + season: 16 + series: Bleach + +? Bleach - 313-314 +: options: -En + episodeList: + - 313 + - 314 + episodeNumber: 313 + series: Bleach + +? Bleach - s16e03-04 - 313-314 +: options: -n + episodeList: + - 3 + - 4 + episodeNumber: 3 + season: 16 + series: Bleach + +? Bleach.s16e03-04.313-314 +: options: -n + episodeList: + - 3 + - 4 + episodeNumber: 3 + season: 16 + series: Bleach + + +? Bleach s16e03e04 313-314 +: options: -n + episodeList: + - 3 + - 4 + episodeNumber: 3 + season: 16 + series: Bleach + +? '[ShinBunBu-Subs] Bleach - 02-03 (CX 1280x720 x264 AAC)' +: audioCodec: AAC + episodeList: + - 2 + - 3 + episodeNumber: 2 + releaseGroup: ShinBunBu-Subs + screenSize: 720p + series: Bleach + videoCodec: h264 + +? 003. Show Name - Ep Name.ext +: episodeNumber: 3 + series: Show Name + title: Ep Name + +? 003-004. Show Name - Ep Name.ext +: episodeList: + - 3 + - 4 + episodeNumber: 3 + series: Show Name + title: Ep Name + +? One Piece - 102 +: options: -n -t episode + episodeNumber: 2 + season: 1 + series: One Piece + +? "[ACX]_Wolf's_Spirit_001.mkv" +: episodeNumber: 1 + releaseGroup: ACX + series: "Wolf's Spirit" + +? Project.Runway.S14E00.and.S14E01.(Eng.Subs).SDTV.x264-[2Maverick].mp4 +: episodeList: + - 0 + - 1 + episodeNumber: 0 + format: TV + subtitleLanguage: en + releaseGroup: 2Maverick + season: 14 + series: Project Runway + videoCodec: h264 + +? '[Hatsuyuki-Kaitou]_Fairy_Tail_2_-_16-20_[720p][10bit].torrent' +: episodeList: + - 16 + - 17 + - 18 + - 19 + - 20 + episodeNumber: 16 + releaseGroup: Hatsuyuki-Kaitou + screenSize: 720p + series: Fairy Tail 2 + videoProfile: 10bit + +? '[Hatsuyuki-Kaitou]_Fairy_Tail_2_-_16-20_(191-195)_[720p][10bit].torrent' +: options: -E + episodeList: + - 16 + - 17 + - 18 + - 19 + - 20 + episodeNumber: 16 + releaseGroup: Hatsuyuki-Kaitou + screenSize: 720p + series: Fairy Tail 2 \ No newline at end of file diff --git a/lib/guessit/test/guessittest.py b/lib/guessit/test/guessittest.py index 5fafb656717033fc4111bef6794178bdda896db3..c08d19feecc2ac8066b8e64a08ea717a58ba5d05 100644 --- a/lib/guessit/test/guessittest.py +++ b/lib/guessit/test/guessittest.py @@ -22,7 +22,6 @@ from __future__ import absolute_import, division, print_function, unicode_litera from collections import defaultdict from unittest import TestCase, TestLoader -import shlex import logging import os import sys @@ -86,10 +85,6 @@ class TestGuessit(TestCase): options = required_fields.pop('options') if 'options' in required_fields else None - if options: - args = shlex.split(options) - options = get_opts().parse_args(args) - options = vars(options) try: found = guess_func(filename, options) except Exception as e: diff --git a/lib/guessit/test/movies.yaml b/lib/guessit/test/movies.yaml index 0ea23a745dcb62995091bf72a765e2e90771af81..75715c6ff1d7f20cafbc3e54e7bb8c90fd02dbd3 100644 --- a/lib/guessit/test/movies.yaml +++ b/lib/guessit/test/movies.yaml @@ -606,7 +606,9 @@ ? Yves.Saint.Laurent.2013.FRENCH.DVDSCR.MD.XviD-ViVARiUM.avi : format: DVD language: French - other: Screener + other: + - MD + - Screener releaseGroup: ViVARiUM title: Yves Saint Laurent videoCodec: XviD @@ -759,3 +761,16 @@ screenSize: 1080p title: transformers 2 videoCodec: h265 + +? 1.Angry.Man.1957.mkv +: title: 1 Angry Man + year: 1957 + +? 12.Angry.Men.1957.mkv +: title: 12 Angry Men + year: 1957 + +? 123.Angry.Men.1957.mkv +: title: 123 Angry Men + year: 1957 + diff --git a/lib/guessit/transfo/guess_date.py b/lib/guessit/transfo/guess_date.py index 0aa7fe16054ad1ccee8751f435c16820ab40e604..c4bfe5cd4ce7e06f0366e04f0c5d17b4963aa93d 100644 --- a/lib/guessit/transfo/guess_date.py +++ b/lib/guessit/transfo/guess_date.py @@ -19,6 +19,7 @@ # from __future__ import absolute_import, division, print_function, unicode_literals +from guessit.containers import DefaultValidator from guessit.plugins.transformers import Transformer from guessit.matcher import GuessFinder @@ -41,10 +42,9 @@ class GuessDate(Transformer): @staticmethod def guess_date(string, node=None, options=None): date, span = search_date(string, options.get('date_year_first') if options else False, options.get('date_day_first') if options else False) - if date: + if date and span and DefaultValidator.validate_string(string, span): # ensure we have a separator before and after date return {'date': date}, span - else: - return None, None + return None, None def process(self, mtree, options=None): GuessFinder(self.guess_date, 1.0, self.log, options).process_nodes(mtree.unidentified_leaves()) diff --git a/lib/guessit/transfo/guess_episode_info_from_position.py b/lib/guessit/transfo/guess_episode_info_from_position.py index 91c8392976290a2351808773fd4fcac48cc19ba4..8706d0193941deb2d5b8aa732519f68d2d70c8c9 100644 --- a/lib/guessit/transfo/guess_episode_info_from_position.py +++ b/lib/guessit/transfo/guess_episode_info_from_position.py @@ -128,13 +128,14 @@ class GuessEpisodeInfoFromPosition(Transformer): if not eps: eps = [node for node in mtree.leaves() if 'date' in node.guess] + eps = sorted(eps, key=lambda ep: -ep.guess.confidence()) if eps: self.match_from_epnum_position(mtree, eps[0], options) else: # if we don't have the episode number, but at least 2 groups in the # basename, then it's probably series - eptitle - basename = mtree.node_at((-2,)) + basename = list(filter(lambda x: x.category == 'path', mtree.nodes()))[-2] title_candidates = self._filter_candidates(basename.unidentified_leaves(), options) @@ -147,9 +148,10 @@ class GuessEpisodeInfoFromPosition(Transformer): # if we only have 1 remaining valid group in the folder containing the # file, then it's likely that it is the series name + path_nodes = list(filter(lambda x: x.category == 'path', mtree.nodes())) try: - series_candidates = list(mtree.node_at((-3,)).unidentified_leaves()) - except ValueError: + series_candidates = list(path_nodes[-3].unidentified_leaves()) + except IndexError: series_candidates = [] if len(series_candidates) == 1: diff --git a/lib/guessit/transfo/guess_episodes_rexps.py b/lib/guessit/transfo/guess_episodes_rexps.py index 1fd9b1dd4a870a455522b498892ff4c5a33ddb56..f6fca1ab208ca3327c3903ebe05609a89e3f134c 100644 --- a/lib/guessit/transfo/guess_episodes_rexps.py +++ b/lib/guessit/transfo/guess_episodes_rexps.py @@ -21,6 +21,7 @@ from __future__ import absolute_import, division, print_function, unicode_literals import re +from guessit.patterns.list import list_parser, all_separators_re from guessit.plugins.transformers import Transformer from guessit.matcher import GuessFinder @@ -34,9 +35,8 @@ class GuessEpisodesRexps(Transformer): def __init__(self): Transformer.__init__(self, 20) - range_separators = ['-', 'to', 'a'] - discrete_separators = ['&', 'and', 'et'] of_separators = ['of', 'sur', '/', '\\'] + of_separators_re = re.compile(build_or_pattern(of_separators, escape=True), re.IGNORECASE) season_words = ['seasons?', 'saisons?', 'series?'] episode_words = ['episodes?'] @@ -44,85 +44,14 @@ class GuessEpisodesRexps(Transformer): season_markers = ['s'] episode_markers = ['e', 'ep'] - discrete_sep = sep - for range_separator in range_separators: - discrete_sep = discrete_sep.replace(range_separator, '') - discrete_separators.append(discrete_sep) - all_separators = list(range_separators) - all_separators.extend(discrete_separators) - self.container = PropertiesContainer(enhance=False, canonical_from_pattern=False) - range_separators_re = re.compile(build_or_pattern(range_separators), re.IGNORECASE) - discrete_separators_re = re.compile(build_or_pattern(discrete_separators), re.IGNORECASE) - all_separators_re = re.compile(build_or_pattern(all_separators), re.IGNORECASE) - of_separators_re = re.compile(build_or_pattern(of_separators, escape=True), re.IGNORECASE) - season_words_re = re.compile(build_or_pattern(season_words), re.IGNORECASE) episode_words_re = re.compile(build_or_pattern(episode_words), re.IGNORECASE) season_markers_re = re.compile(build_or_pattern(season_markers), re.IGNORECASE) episode_markers_re = re.compile(build_or_pattern(episode_markers), re.IGNORECASE) - def list_parser(value, property_list_name, discrete_separators_re=discrete_separators_re, range_separators_re=range_separators_re, allow_discrete=False, fill_gaps=False): - discrete_elements = filter(lambda x: x != '', discrete_separators_re.split(value)) - discrete_elements = [x.strip() for x in discrete_elements] - - proper_discrete_elements = [] - i = 0 - while i < len(discrete_elements): - if i < len(discrete_elements) - 2 and range_separators_re.match(discrete_elements[i+1]): - proper_discrete_elements.append(discrete_elements[i] + discrete_elements[i+1] + discrete_elements[i+2]) - i += 3 - else: - match = range_separators_re.search(discrete_elements[i]) - if match and match.start() == 0: - proper_discrete_elements[i - 1] += discrete_elements[i] - elif match and match.end() == len(discrete_elements[i]): - proper_discrete_elements.append(discrete_elements[i] + discrete_elements[i + 1]) - else: - proper_discrete_elements.append(discrete_elements[i]) - i += 1 - - discrete_elements = proper_discrete_elements - - ret = [] - - for discrete_element in discrete_elements: - range_values = filter(lambda x: x != '', range_separators_re.split(discrete_element)) - range_values = [x.strip() for x in range_values] - if len(range_values) > 1: - for x in range(0, len(range_values) - 1): - start_range_ep = parse_numeral(range_values[x]) - end_range_ep = parse_numeral(range_values[x+1]) - for range_ep in range(start_range_ep, end_range_ep + 1): - if range_ep not in ret: - ret.append(range_ep) - else: - discrete_value = parse_numeral(discrete_element) - if discrete_value not in ret: - ret.append(discrete_value) - - if len(ret) > 1: - if not allow_discrete: - valid_ret = list() - # replace discrete elements by ranges - valid_ret.append(ret[0]) - for i in range(0, len(ret) - 1): - previous = valid_ret[len(valid_ret) - 1] - if ret[i+1] < previous: - pass - else: - valid_ret.append(ret[i+1]) - ret = valid_ret - if fill_gaps: - ret = list(range(min(ret), max(ret) + 1)) - if len(ret) > 1: - return {None: ret[0], property_list_name: ret} - if len(ret) > 0: - return ret[0] - return None - def episode_parser_x(value): return list_parser(value, 'episodeList', discrete_separators_re=re.compile('x', re.IGNORECASE)) @@ -138,34 +67,33 @@ class GuessEpisodesRexps(Transformer): class ResolutionCollisionValidator(object): @staticmethod def validate(prop, string, node, match, entry_start, entry_end): - return len(match.group(2)) < 3 # limit + return len(match.group(2)) < 3 # limit self.container.register_property(None, r'(' + season_words_re.pattern + sep + '?(?P<season>' + numeral + ')' + sep + '?' + season_words_re.pattern + '?)', confidence=1.0, formatter=parse_numeral) self.container.register_property(None, r'(' + season_words_re.pattern + sep + '?(?P<season>' + digital_numeral + '(?:' + sep + '?' + all_separators_re.pattern + sep + '?' + digital_numeral + ')*)' + sep + '?' + season_words_re.pattern + '?)' + sep, confidence=1.0, formatter={None: parse_numeral, 'season': season_parser}, validator=ChainedValidator(DefaultValidator(), FormatterValidator('season', lambda x: len(x) > 1 if hasattr(x, '__len__') else False))) self.container.register_property(None, r'(' + season_markers_re.pattern + '(?P<season>' + digital_numeral + ')[^0-9]?' + sep + '?(?P<episodeNumber>(?:e' + digital_numeral + '(?:' + sep + '?[e-]' + digital_numeral + ')*)))', confidence=1.0, formatter={None: parse_numeral, 'episodeNumber': episode_parser_e, 'season': season_parser}, validator=NoValidator()) - # self.container.register_property(None, r'[^0-9]((?P<season>' + digital_numeral + ')[^0-9 .-]?-?(?P<episodeNumber>(?:x' + digital_numeral + '(?:' + sep + '?[x-]' + digital_numeral + ')*)))', confidence=1.0, formatter={None: parse_numeral, 'episodeNumber': episode_parser_x, 'season': season_parser}, validator=ChainedValidator(DefaultValidator(), ResolutionCollisionValidator())) + self.container.register_property(None, r'(' + season_markers_re.pattern + '(?P<season>' + digital_numeral + ')[^0-9]?' + sep + '?(?P<episodeNumber>(?:e' + digital_numeral + '(?:' + sep + '?' + all_separators_re.pattern + sep + '?' + digital_numeral + ')*)))', confidence=1.0, formatter={None: parse_numeral, 'episodeNumber': episode_parser, 'season': season_parser}, validator=NoValidator()) + self.container.register_property(None, sep + r'((?P<season>' + digital_numeral + ')' + sep + '' + '(?P<episodeNumber>(?:x' + sep + digital_numeral + '(?:' + sep + '[x-]' + digital_numeral + ')*)))', confidence=1.0, formatter={None: parse_numeral, 'episodeNumber': episode_parser_x, 'season': season_parser}, validator=ChainedValidator(DefaultValidator(), ResolutionCollisionValidator())) self.container.register_property(None, r'((?P<season>' + digital_numeral + ')' + '(?P<episodeNumber>(?:x' + digital_numeral + '(?:[x-]' + digital_numeral + ')*)))', confidence=1.0, formatter={None: parse_numeral, 'episodeNumber': episode_parser_x, 'season': season_parser}, validator=ChainedValidator(DefaultValidator(), ResolutionCollisionValidator())) self.container.register_property(None, r'(' + season_markers_re.pattern + '(?P<season>' + digital_numeral + '(?:' + sep + '?' + all_separators_re.pattern + sep + '?' + digital_numeral + ')*))', confidence=0.6, formatter={None: parse_numeral, 'season': season_parser}, validator=NoValidator()) self.container.register_property(None, r'((?P<episodeNumber>' + digital_numeral + ')' + sep + '?v(?P<version>\d+))', confidence=0.6, formatter=parse_numeral) + self.container.register_property('version', sep + r'(V\d+)' + sep, confidence=0.6, formatter=parse_numeral, validator=NoValidator()) self.container.register_property(None, r'(ep' + sep + r'?(?P<episodeNumber>' + digital_numeral + ')' + sep + '?)', confidence=0.7, formatter=parse_numeral) self.container.register_property(None, r'(ep' + sep + r'?(?P<episodeNumber>' + digital_numeral + ')' + sep + '?v(?P<version>\d+))', confidence=0.7, formatter=parse_numeral) - self.container.register_property(None, r'(' + episode_markers_re.pattern + '(?P<episodeNumber>' + digital_numeral + '(?:' + sep + '?' + all_separators_re.pattern + sep + '?' + digital_numeral + ')*))', confidence=0.6, formatter={None: parse_numeral, 'episodeNumber': episode_parser}) self.container.register_property(None, r'(' + episode_words_re.pattern + sep + '?(?P<episodeNumber>' + digital_numeral + '(?:' + sep + '?' + all_separators_re.pattern + sep + '?' + digital_numeral + ')*)' + sep + '?' + episode_words_re.pattern + '?)', confidence=0.8, formatter={None: parse_numeral, 'episodeNumber': episode_parser}) - self.container.register_property(None, r'(' + episode_markers_re.pattern + '(?P<episodeNumber>' + digital_numeral + ')' + sep + '?v(?P<version>\d+))', confidence=0.6, formatter={None: parse_numeral, 'episodeNumber': episode_parser}) - self.container.register_property(None, r'(' + episode_words_re.pattern + sep + '?(?P<episodeNumber>' + digital_numeral + ')' + sep + '?v(?P<version>\d+))', confidence=0.8, formatter={None: parse_numeral, 'episodeNumber': episode_parser}) + self.container.register_property(None, r'(' + episode_markers_re.pattern + '(?P<episodeNumber>' + digital_numeral + ')' + sep + '?v(?P<version>\d+))', confidence=0.6, formatter={None: parse_numeral, 'episodeNumber': episode_parser}) + self.container.register_property(None, r'(' + episode_words_re.pattern + sep + '?(?P<episodeNumber>' + digital_numeral + ')' + sep + '?v(?P<version>\d+))', confidence=0.8, formatter={None: parse_numeral, 'episodeNumber': episode_parser}) - - self.container.register_property('episodeNumber', r'^ ?(\d{2})' + sep, confidence=0.4, formatter=parse_numeral) - self.container.register_property('episodeNumber', r'^ ?(\d{2})' + sep, confidence=0.4, formatter=parse_numeral) - self.container.register_property('episodeNumber', r'^ ?0(\d{1,2})' + sep, confidence=0.4, formatter=parse_numeral) - self.container.register_property('episodeNumber', sep + r'(\d{2}) ?$', confidence=0.4, formatter=parse_numeral) - self.container.register_property('episodeNumber', sep + r'0(\d{1,2}) ?$', confidence=0.4, formatter=parse_numeral) + self.container.register_property('episodeNumber', r'^' + sep + '+(\d{2}' + '(?:' + sep + '?' + all_separators_re.pattern + sep + '?' + '\d{2}' + ')*)' + sep, confidence=0.4, formatter=episode_parser) + self.container.register_property('episodeNumber', r'^' + sep + '+0(\d{1,2}' + '(?:' + sep + '?' + all_separators_re.pattern + sep + '?' + '0\d{1,2}' + ')*)' + sep, confidence=0.4, formatter=episode_parser) + self.container.register_property('episodeNumber', sep + r'(\d{2}' + '(?:' + sep + '?' + all_separators_re.pattern + sep + '?' + r'\d{2}' + ')*)' + sep + '+$', confidence=0.4, formatter=episode_parser) + self.container.register_property('episodeNumber', sep + r'0(\d{1,2}' + '(?:' + sep + '?' + all_separators_re.pattern + sep + '?' + r'0\d{1,2}' + ')*)' + sep + '+$', confidence=0.4, formatter=episode_parser) self.container.register_property(None, r'((?P<episodeNumber>' + numeral + ')' + sep + '?' + of_separators_re.pattern + sep + '?(?P<episodeCount>' + numeral + ')(?:' + sep + '?(?:episodes?|eps?))?)', confidence=0.7, formatter=parse_numeral) self.container.register_property(None, r'((?:episodes?|eps?)' + sep + '?(?P<episodeNumber>' + numeral + ')' + sep + '?' + of_separators_re.pattern + sep + '?(?P<episodeCount>' + numeral + '))', confidence=0.7, formatter=parse_numeral) @@ -186,7 +114,29 @@ class GuessEpisodesRexps(Transformer): def guess_episodes_rexps(self, string, node=None, options=None): found = self.container.find_properties(string, node, options) - return self.container.as_guess(found, string) + guess = self.container.as_guess(found, string) + if guess and node: + if 'season' in guess and 'episodeNumber' in guess: + # If two guesses contains both season and episodeNumber in same group, create an episodeList + for existing_guess in node.group_node().guesses: + if 'season' in existing_guess and 'episodeNumber' in existing_guess: + if 'episodeList' not in existing_guess: + existing_guess['episodeList'] = [existing_guess['episodeNumber']] + existing_guess['episodeList'].append(guess['episodeNumber']) + existing_guess['episodeList'].sort() + if existing_guess['episodeNumber'] > guess['episodeNumber']: + existing_guess.set_confidence('episodeNumber', 0) + else: + guess.set_confidence('episodeNumber', 0) + guess['episodeList'] = list(existing_guess['episodeList']) + elif 'episodeNumber' in guess: + # If two guesses contains only episodeNumber in same group, remove the existing one. + for existing_guess in node.group_node().guesses: + if 'episodeNumber' in existing_guess: + for k, v in existing_guess.items(): + if k in guess: + del guess[k] + return guess def should_process(self, mtree, options=None): return mtree.guess.get('type', '').startswith('episode') diff --git a/lib/guessit/transfo/guess_filetype.py b/lib/guessit/transfo/guess_filetype.py index 03fb5d5c4f1557eac7424f8875d3edb86756ceb4..7725e1293f1cb0a472349da7425d15badca380c9 100644 --- a/lib/guessit/transfo/guess_filetype.py +++ b/lib/guessit/transfo/guess_filetype.py @@ -156,6 +156,13 @@ class GuessFiletype(Transformer): weak_episode_transformer = get_transformer('guess_weak_episodes_rexps') if weak_episode_transformer: + found = weak_episode_transformer.container.find_properties(filename, mtree, options, 'episodeNumber') + guess = weak_episode_transformer.container.as_guess(found, filename) + if guess and (guess.raw('episodeNumber')[0] == '0' or guess['episodeNumber'] >= 10): + self.log.debug('Found characteristic property of episodes: %s"', guess) + upgrade_episode() + return filetype_container[0], other + found = properties_transformer.container.find_properties(filename, mtree, options, 'crc32') guess = properties_transformer.container.as_guess(found, filename) if guess: @@ -217,7 +224,8 @@ class GuessFiletype(Transformer): if mime is not None: filetype_info.update({'mimetype': mime}, confidence=1.0) - node_ext = mtree.node_at((-1,)) + # Retrieve the last node of category path (extension node) + node_ext = list(filter(lambda x: x.category == 'path', mtree.nodes()))[-1] found_guess(node_ext, filetype_info) if mtree.guess.get('type') in [None, 'unknown']: @@ -226,12 +234,21 @@ class GuessFiletype(Transformer): else: raise TransformerException(__name__, 'Unknown file type') - def post_process(self, mtree, options=None): - # now look whether there are some specific hints for episode vs movie - # If we have a date and no year, this is a TV Show. - if 'date' in mtree.info and 'year' not in mtree.info and mtree.info.get('type') != 'episode': - mtree.guess['type'] = 'episode' - for type_leaves in mtree.leaves_containing('type'): - type_leaves.guess['type'] = 'episode' - for title_leaves in mtree.leaves_containing('title'): - title_leaves.guess.rename('title', 'series') \ No newline at end of file + def second_pass_options(self, mtree, options=None): + if 'type' not in options or not options['type']: + if mtree.info.get('type') != 'episode': + # now look whether there are some specific hints for episode vs movie + # If we have a date and no year, this is a TV Show. + if 'date' in mtree.info and 'year' not in mtree.info: + return {'type': 'episode'} + + if mtree.info.get('type') != 'movie': + # If we have a year, no season but raw episodeNumber is a number not starting with '0', this is a movie. + if 'year' in mtree.info and 'episodeNumber' in mtree.info and not 'season' in mtree.info: + try: + int(mtree.raw['episodeNumber']) + return {'type': 'movie'} + except ValueError: + pass + + diff --git a/lib/guessit/transfo/guess_language.py b/lib/guessit/transfo/guess_language.py index 666b41b00c89b00fae7cf5985d91e6ec65cfb842..f045930a25ca2ade65a7fe5ff329336561f325bb 100644 --- a/lib/guessit/transfo/guess_language.py +++ b/lib/guessit/transfo/guess_language.py @@ -133,6 +133,8 @@ class GuessLanguage(Transformer): def post_process(self, mtree, options=None): # 1- try to promote language to subtitle language where it makes sense + prefixes = [] + for node in mtree.nodes(): if 'language' not in node.guess: continue @@ -141,7 +143,8 @@ class GuessLanguage(Transformer): # the group is the last group of the filename, it is probably the # language of the subtitle # (eg: 'xxx.english.srt') - if (mtree.node_at((-1,)).value.lower() in subtitle_exts and + ext_node = list(filter(lambda x: x.category == 'path', mtree.nodes()))[-1] + if (ext_node.value.lower() in subtitle_exts and node == list(mtree.leaves())[-2]): self.promote_subtitle(node) @@ -155,11 +158,7 @@ class GuessLanguage(Transformer): for sub_prefix in subtitle_prefixes: if (sub_prefix in find_words(group_str) and 0 <= group_str.find(sub_prefix) < (node.span[0] - explicit_group.span[0])): - self.promote_subtitle(node) - - for sub_suffix in subtitle_suffixes: - if (sub_suffix in find_words(group_str) and - (node.span[0] - explicit_group.span[0]) < group_str.find(sub_suffix)): + prefixes.append((explicit_group, sub_prefix)) self.promote_subtitle(node) # - if a language is in an explicit group just preceded by "st", @@ -171,3 +170,21 @@ class GuessLanguage(Transformer): self.promote_subtitle(node) except IndexError: pass + + for node in mtree.nodes(): + if 'language' not in node.guess: + continue + + explicit_group = mtree.node_at(node.node_idx[:2]) + group_str = explicit_group.value.lower() + + for sub_suffix in subtitle_suffixes: + if (sub_suffix in find_words(group_str) and + (node.span[0] - explicit_group.span[0]) < group_str.find(sub_suffix)): + is_a_prefix = False + for prefix in prefixes: + if prefix[0] == explicit_group and group_str.find(prefix[1]) == group_str.find(sub_suffix): + is_a_prefix = True + break + if not is_a_prefix: + self.promote_subtitle(node) diff --git a/lib/guessit/transfo/guess_movie_title_from_position.py b/lib/guessit/transfo/guess_movie_title_from_position.py index 671e4cb5be3ca3f0f81fb5ee3dbaa889575090cd..e93c67dc07dbc3414ba4a24fa8ab84ef01646af2 100644 --- a/lib/guessit/transfo/guess_movie_title_from_position.py +++ b/lib/guessit/transfo/guess_movie_title_from_position.py @@ -44,14 +44,16 @@ class GuessMovieTitleFromPosition(Transformer): if 'title' in mtree.info: return - basename = mtree.node_at((-2,)) + path_nodes = list(filter(lambda x: x.category == 'path', mtree.nodes())) + + basename = path_nodes[-2] all_valid = lambda leaf: len(leaf.clean_value) > 0 basename_leftover = list(basename.unidentified_leaves(valid=all_valid)) try: - folder = mtree.node_at((-3,)) + folder = path_nodes[-3] folder_leftover = list(folder.unidentified_leaves()) - except ValueError: + except IndexError: folder = None folder_leftover = [] @@ -164,7 +166,6 @@ class GuessMovieTitleFromPosition(Transformer): # if nothing worked, look if we have a very small group at the beginning # of the basename - basename = mtree.node_at((-2,)) basename_leftover = basename.unidentified_leaves(valid=lambda leaf: True) try: found_property(next(basename_leftover), 'title', confidence=0.4) diff --git a/lib/guessit/transfo/guess_properties.py b/lib/guessit/transfo/guess_properties.py index c66b02d5d513d9f046159d9ec9beeb82bce3c6de..136a216e641677b2ae671c1bdddc08f48b91a4f5 100644 --- a/lib/guessit/transfo/guess_properties.py +++ b/lib/guessit/transfo/guess_properties.py @@ -22,7 +22,7 @@ from __future__ import absolute_import, division, print_function, unicode_litera import re -from guessit.containers import PropertiesContainer, WeakValidator, LeavesValidator, QualitiesContainer, ChainedValidator, DefaultValidator, OnlyOneValidator, LeftValidator, NeighborValidator +from guessit.containers import PropertiesContainer, WeakValidator, LeavesValidator, QualitiesContainer, ChainedValidator, DefaultValidator, OnlyOneValidator, LeftValidator, NeighborValidator, FullMatchValidator from guessit.patterns import sep, build_or_pattern from guessit.patterns.extension import subtitle_exts, video_exts, info_exts from guessit.patterns.numeral import numeral, parse_numeral @@ -239,8 +239,8 @@ class GuessProperties(Transformer): self.container.register_property('crc32', '(?:[a-fA-F]|[0-9]){8}', enhance=False, canonical_from_pattern=False) - weak_episode_words = ['pt', 'part'] - self.container.register_property(None, '(' + build_or_pattern(weak_episode_words) + sep + '?(?P<part>' + numeral + '))[^0-9]', enhance=False, canonical_from_pattern=False, confidence=0.4, formatter=parse_numeral) + part_words = ['pt', 'part'] + self.container.register_property(None, '(' + build_or_pattern(part_words) + sep + '?(?P<part>' + numeral + '))[^0-9]', enhance=False, canonical_from_pattern=False, confidence=0.4, formatter=parse_numeral) register_property('other', {'AudioFix': ['Audio-Fix', 'Audio-Fixed'], 'SyncFix': ['Sync-Fix', 'Sync-Fixed'], @@ -249,13 +249,15 @@ class GuessProperties(Transformer): 'Netflix': ['Netflix', 'NF'] }) - self.container.register_property('other', 'Real', 'Fix', canonical_form='Proper', validator=NeighborValidator()) + self.container.register_property('other', 'Real', 'Fix', canonical_form='Proper', validator=ChainedValidator(FullMatchValidator(), NeighborValidator())) self.container.register_property('other', 'Proper', 'Repack', 'Rerip', canonical_form='Proper') - self.container.register_property('other', 'Fansub', canonical_form='Fansub') - self.container.register_property('other', 'Fastsub', canonical_form='Fastsub') + self.container.register_property('other', 'Fansub', canonical_form='Fansub', validator=ChainedValidator(FullMatchValidator(), NeighborValidator())) + self.container.register_property('other', 'Fastsub', canonical_form='Fastsub', validator=ChainedValidator(FullMatchValidator(), NeighborValidator())) self.container.register_property('other', '(?:Seasons?' + sep + '?)?Complete', canonical_form='Complete') self.container.register_property('other', 'R5', 'RC', canonical_form='R5') self.container.register_property('other', 'Pre-Air', 'Preair', canonical_form='Preair') + self.container.register_property('other', 'CC') # Close Caption + self.container.register_property('other', 'LD', 'MD') # Line/Mic Dubbed self.container.register_canonical_properties('other', 'Screener', 'Remux', '3D', 'HD', 'mHD', 'HDLight', 'HQ', 'DDC', @@ -271,10 +273,29 @@ class GuessProperties(Transformer): def guess_properties(self, string, node=None, options=None): found = self.container.find_properties(string, node, options) - return self.container.as_guess(found, string) + guess = self.container.as_guess(found, string) + + if guess and node: + if 'part' in guess: + # If two guesses contains both part in same group, create an partList + for existing_guess in node.group_node().guesses: + if 'part' in existing_guess: + if 'partList' not in existing_guess: + existing_guess['partList'] = [existing_guess['part']] + existing_guess['partList'].append(guess['part']) + existing_guess['partList'].sort() + if existing_guess['part'] > guess['part']: + existing_guess.set_confidence('part', 0) + else: + guess.set_confidence('part', 0) + guess['partList'] = list(existing_guess['partList']) + + return guess def supported_properties(self): - return self.container.get_supported_properties() + supported_properties = list(self.container.get_supported_properties()) + supported_properties.append('partList') + return supported_properties def process(self, mtree, options=None): GuessFinder(self.guess_properties, 1.0, self.log, options).process_nodes(mtree.unidentified_leaves()) diff --git a/lib/guessit/transfo/guess_weak_episodes_rexps.py b/lib/guessit/transfo/guess_weak_episodes_rexps.py index 71a74cd1d8033c94bbcbd0a8cbb46e249a162a11..23dfc3f91253f9428677d735268f872a19d7ef25 100644 --- a/lib/guessit/transfo/guess_weak_episodes_rexps.py +++ b/lib/guessit/transfo/guess_weak_episodes_rexps.py @@ -21,6 +21,7 @@ from __future__ import absolute_import, division, print_function, unicode_literals import re +from guessit.patterns.list import list_parser, all_separators_re from guessit.plugins.transformers import Transformer @@ -38,11 +39,14 @@ class GuessWeakEpisodesRexps(Transformer): of_separators = ['of', 'sur', '/', '\\'] of_separators_re = re.compile(build_or_pattern(of_separators, escape=True), re.IGNORECASE) - self.container = PropertiesContainer(enhance=False, canonical_from_pattern=False) + self.container = PropertiesContainer(enhance=False, canonical_from_pattern=False, remove_duplicates=True) episode_words = ['episodes?'] - def _formater(episode_number): + def episode_list_parser(value): + return list_parser(value, 'episodeList') + + def season_episode_parser(episode_number): epnum = parse_numeral(episode_number) if not valid_year(epnum): if epnum > 100: @@ -55,24 +59,46 @@ class GuessWeakEpisodesRexps(Transformer): else: return epnum - self.container.register_property(['episodeNumber', 'season'], '[0-9]{2,4}', confidence=0.6, formatter=_formater, disabler=lambda options: options.get('episode_prefer_number') if options else False) - self.container.register_property(['episodeNumber', 'season'], '[0-9]{4}', confidence=0.6, formatter=_formater) - self.container.register_property('episodeNumber', '[^0-9](\d{1,3})', confidence=0.6, formatter=parse_numeral, disabler=lambda options: not options.get('episode_prefer_number') if options else True) + self.container.register_property(['episodeNumber', 'season'], '[0-9]{2,4}', confidence=0.6, formatter=season_episode_parser, disabler=lambda options: options.get('episode_prefer_number') if options else False) + self.container.register_property(['episodeNumber', 'season'], '[0-9]{4}', confidence=0.6, formatter=season_episode_parser) self.container.register_property(None, '(' + build_or_pattern(episode_words) + sep + '?(?P<episodeNumber>' + numeral + '))[^0-9]', confidence=0.4, formatter=parse_numeral) self.container.register_property(None, r'(?P<episodeNumber>' + numeral + ')' + sep + '?' + of_separators_re.pattern + sep + '?(?P<episodeCount>' + numeral +')', confidence=0.6, formatter=parse_numeral) - self.container.register_property('episodeNumber', r'^' + sep + '?(\d{1,3})' + sep, confidence=0.4, formatter=parse_numeral, disabler=lambda options: not options.get('episode_prefer_number') if options else True) - self.container.register_property('episodeNumber', sep + r'(\d{1,3})' + sep + '?$', confidence=0.4, formatter=parse_numeral, disabler=lambda options: not options.get('episode_prefer_number') if options else True) + self.container.register_property('episodeNumber', '[^0-9](\d{2,3}' + '(?:' + sep + '?' + all_separators_re.pattern + sep + '?' + '\d{2,3}' + ')*)', confidence=0.4, formatter=episode_list_parser, disabler=lambda options: not options.get('episode_prefer_number') if options else True) + self.container.register_property('episodeNumber', r'^' + sep + '?(\d{2,3}' + '(?:' + sep + '?' + all_separators_re.pattern + sep + '?' + '\d{2,3}' + ')*)' + sep, confidence=0.4, formatter=episode_list_parser, disabler=lambda options: not options.get('episode_prefer_number') if options else True) + self.container.register_property('episodeNumber', sep + r'(\d{2,3}' + '(?:' + sep + '?' + all_separators_re.pattern + sep + '?' + '\d{2,3}' + ')*)' + sep + '?$', confidence=0.4, formatter=episode_list_parser, disabler=lambda options: not options.get('episode_prefer_number') if options else True) def supported_properties(self): return self.container.get_supported_properties() def guess_weak_episodes_rexps(self, string, node=None, options=None): - if node and 'episodeNumber' in node.root.info: - return None - properties = self.container.find_properties(string, node, options) guess = self.container.as_guess(properties, string) + if node and guess: + if 'episodeNumber' in guess and 'season' in guess: + existing_guesses = list(filter(lambda x: 'season' in x and 'episodeNumber' in x, node.group_node().guesses)) + if existing_guesses: + return None + elif 'episodeNumber' in guess: + # If we only have episodeNumber in the guess, and another node contains both season and episodeNumber + # keep only the second. + safe_guesses = list(filter(lambda x: 'season' in x and 'episodeNumber' in x, node.group_node().guesses)) + if safe_guesses: + return None + else: + # If we have other nodes containing episodeNumber, create an episodeList. + existing_guesses = list(filter(lambda x: 'season' not in x and 'episodeNumber' in x, node.group_node().guesses)) + for existing_guess in existing_guesses: + if 'episodeList' not in existing_guess: + existing_guess['episodeList'] = [existing_guess['episodeNumber']] + existing_guess['episodeList'].append(guess['episodeNumber']) + existing_guess['episodeList'].sort() + if existing_guess['episodeNumber'] > guess['episodeNumber']: + existing_guess.set_confidence('episodeNumber', 0) + else: + guess.set_confidence('episodeNumber', 0) + guess['episodeList'] = list(existing_guess['episodeList']) + return guess def should_process(self, mtree, options=None): diff --git a/lib/guessit/transfo/split_explicit_groups.py b/lib/guessit/transfo/split_explicit_groups.py index 17041b3a5f2cef97210bafe491a740cd3543e27c..263a5b443b08db186d08027a9ec6040c24b42e0f 100644 --- a/lib/guessit/transfo/split_explicit_groups.py +++ b/lib/guessit/transfo/split_explicit_groups.py @@ -37,7 +37,7 @@ class SplitExplicitGroups(Transformer): :return: return the string split into explicit groups, that is, those either between parenthese, square brackets or curly braces, and those separated by a dash.""" - for c in mtree.children: + for c in mtree.unidentified_leaves(): groups = find_first_level_groups(c.value, group_delimiters[0]) for delimiters in group_delimiters: flatten = lambda l, x: l + find_first_level_groups(x, delimiters) @@ -47,4 +47,4 @@ class SplitExplicitGroups(Transformer): # patterns, such as dates, etc... # groups = functools.reduce(lambda l, x: l + x.split('-'), groups, []) - c.split_on_components(groups) + c.split_on_components(groups, category='explicit') diff --git a/lib/guessit/transfo/split_on_dash.py b/lib/guessit/transfo/split_on_dash.py index 24e888f381f0aabc1f84af6d101ffb1c5e14f62f..4cb2607c98116f38fce302e682a1c1b6882cd349 100644 --- a/lib/guessit/transfo/split_on_dash.py +++ b/lib/guessit/transfo/split_on_dash.py @@ -45,4 +45,4 @@ class SplitOnDash(Transformer): match = pattern.search(node.value, span[1]) if indices: - node.partition(indices) + node.partition(indices, category='dash') diff --git a/lib/guessit/transfo/split_path_components.py b/lib/guessit/transfo/split_path_components.py index 8f2b13760ceab7151cb2aa1b403948e821747046..9ddda3f29823c8a6a56fd60710109135c766f841 100644 --- a/lib/guessit/transfo/split_path_components.py +++ b/lib/guessit/transfo/split_path_components.py @@ -41,6 +41,6 @@ class SplitPathComponents(Transformer): components += list(splitext(basename)) components[-1] = components[-1][1:] # remove the '.' from the extension - mtree.split_on_components(components) + mtree.split_on_components(components, category='path') else: - mtree.split_on_components([mtree.value, '']) + mtree.split_on_components([mtree.value, ''], category='path') diff --git a/lib/hachoir_metadata/metadata.py b/lib/hachoir_metadata/metadata.py index 37461c9d55986fdaea68b7d35d7f1a093e87dc00..dbdc411bc8a6ec96616480f3753b4fa3065a0ede 100644 --- a/lib/hachoir_metadata/metadata.py +++ b/lib/hachoir_metadata/metadata.py @@ -284,6 +284,10 @@ def extractMetadata(parser, quality=QUALITY_NORMAL): metadata.extract(parser) except HACHOIR_ERRORS, err: error("Error during metadata extraction: %s" % unicode(err)) + return None + except Exception, err: + error("Error during metadata extraction: %s" % unicode(err)) + return None if metadata: metadata.mime_type = parser.mime_type metadata.endian = endian_name[parser.endian] diff --git a/setup.py b/setup.py deleted file mode 100644 index 67058ae9c1d64220ab86798969b8c9abada95a81..0000000000000000000000000000000000000000 --- a/setup.py +++ /dev/null @@ -1,286 +0,0 @@ -import re -import urllib -import ConfigParser -import sys -import os -import zipfile -import subprocess -import fnmatch -import googlecode_upload - -from distutils.core import setup - -import shutil -import shutil_custom - -shutil.copyfile = shutil_custom.copyfile_custom - -try: - import py2exe -except: - print "The Python module py2exe is required" - sys.exit(1) - -try: - import pygithub.github -except: - print "The Python module pyGitHub is required" - sys.exit(1) - -# mostly stolen from the SABnzbd package.py file -name = 'SickRage' -version = '0.1' - -release = name + '-' + version - -Win32ConsoleName = 'SickBeard-console.exe' -Win32WindowName = 'SickBeard.exe' - - -def findLatestBuild(): - regex = "http\://sickrage\.googlecode\.com/files/SickRage\-win32\-alpha\-build(\d+)(?:\.\d+)?\.zip" - - svnFile = urllib.urlopen("http://code.google.com/p/sickrage/downloads/list") - - for curLine in svnFile.readlines(): - match = re.search(regex, curLine) - if match: - groups = match.groups() - return int(groups[0]) - - return None - - -def recursive_find_data_files(root_dir, allowed_extensions=('*')): - to_return = {} - for (dirpath, dirnames, filenames) in os.walk(root_dir): - if not filenames: - continue - - for cur_filename in filenames: - - matches_pattern = False - for cur_pattern in allowed_extensions: - if fnmatch.fnmatch(cur_filename, '*.' + cur_pattern): - matches_pattern = True - if not matches_pattern: - continue - - cur_filepath = os.path.join(dirpath, cur_filename) - to_return.setdefault(dirpath, []).append(cur_filepath) - - return sorted(to_return.items()) - - -def find_all_libraries(root_dirs): - libs = [] - - for cur_root_dir in root_dirs: - for (dirpath, dirnames, filenames) in os.walk(cur_root_dir): - if '__init__.py' not in filenames: - continue - - libs.append(dirpath.replace(os.sep, '.')) - - return libs - - -def allFiles(dir): - files = [] - for file in os.listdir(dir): - fullFile = os.path.join(dir, file) - if os.path.isdir(fullFile): - files += allFiles(fullFile) - else: - files.append(fullFile) - - return files - -# save the original arguments and replace them with the py2exe args -oldArgs = [] -if len(sys.argv) > 1: - oldArgs = sys.argv[1:] - del sys.argv[1:] - -sys.argv.append('py2exe') - -# clear the dist dir -if os.path.isdir('dist'): - shutil.rmtree('dist') - -# root source dir -compile_dir = os.path.dirname(os.path.normpath(os.path.abspath(sys.argv[0]))) - -if not 'nopull' in oldArgs: - # pull new source from git - print 'Updating source from git' - p = subprocess.Popen('git pull origin master', shell=True, cwd=compile_dir) - o, e = p.communicate() - -# figure out what build this is going to be -latestBuild = findLatestBuild() -if 'test' in oldArgs: - currentBuildNumber = str(latestBuild) + 'a' -else: - currentBuildNumber = latestBuild + 1 - -# set up the compilation options -data_files = recursive_find_data_files('data', ['gif', 'png', 'jpg', 'ico', 'js', 'css', 'tmpl']) - -options = dict( - name=name, - version=release, - author='echel0n', - author_email='sickrage.tv@gmail.com', - description=name + ' ' + release, - scripts=['SickBeard.py'], - packages=find_all_libraries(['sickbeard', 'lib']), -) - -# set up py2exe to generate the console app -program = [{'script': 'SickBeard.py'}] -options['options'] = {'py2exe': - { - 'bundle_files': 3, - 'packages': ['Cheetah'], - 'excludes': ['Tkconstants', 'Tkinter', 'tcl'], - 'optimize': 2, - 'compressed': 0 - } -} -options['zipfile'] = 'lib/sickrage.zip' -options['console'] = program -options['data_files'] = data_files - -# compile sickbeard-console.exe -setup(**options) - -# rename the exe to sickbeard-console.exe -try: - if os.path.exists("dist/%s" % Win32ConsoleName): - os.remove("dist/%s" % Win32ConsoleName) - os.rename("dist/%s" % Win32WindowName, "dist/%s" % Win32ConsoleName) -except: - print "Cannot create dist/%s" % Win32ConsoleName - # sys.exit(1) - -# we don't need this stuff when we make the 2nd exe -del options['console'] -del options['data_files'] -options['windows'] = program - -# compile sickbeard.exe -setup(**options) - -# compile sabToSickbeard.exe using the existing setup.py script -auto_process_dir = os.path.join(compile_dir, 'autoProcessTV') -p = subprocess.Popen([sys.executable, os.path.join(auto_process_dir, 'setup.py')], cwd=auto_process_dir, shell=True) -o, e = p.communicate() - -# copy autoProcessTV files to the dist dir -auto_process_files = ['autoProcessTV/sabToSickBeard.py', - 'autoProcessTV/hellaToSickBeard.py', - 'autoProcessTV/autoProcessTV.py', - 'autoProcessTV/autoProcessTV.cfg.sample', - 'autoProcessTV/sabToSickBeard.exe'] - -os.makedirs('dist/autoProcessTV') - -for curFile in auto_process_files: - newFile = os.path.join('dist', curFile) - print "Copying file from", curFile, "to", newFile - shutil.copy(curFile, newFile) - -# compile updater.exe -setup( - options={'py2exe': {'bundle_files': 1}}, - zipfile=None, - console=['updater.py'], requires=['Cheetah'] -) - -if 'test' in oldArgs: - print "Ignoring changelog for test build" -else: - # start building the CHANGELOG.txt - print 'Creating changelog' - gh = github.GitHub() - - # read the old changelog and find the last commit from that build - lastCommit = "" - try: - cl = open("CHANGELOG.txt", "r") - lastCommit = cl.readlines()[0].strip() - cl.close() - except: - print "I guess there's no changelog" - - newestCommit = "" - changeString = "" - - # cycle through all the git commits and save their commit messages - for curCommit in gh.commits.forBranch('echel0n', 'SickRage'): - if curCommit.id == lastCommit: - break - - if newestCommit == "": - newestCommit = curCommit.id - - changeString += curCommit.message + "\n\n" - - # if we didn't find any changes don't make a changelog file - if newestCommit != "": - newChangelog = open("CHANGELOG.txt", "w") - newChangelog.write(newestCommit + "\n\n") - newChangelog.write("Changelog for build " + str(currentBuildNumber) + "\n\n") - newChangelog.write(changeString) - newChangelog.close() - else: - print "No changes found, keeping old changelog" - -# put the changelog in the compile dir -if os.path.exists("CHANGELOG.txt"): - shutil.copy('CHANGELOG.txt', 'dist/') - -# figure out what we're going to call the zip file -print 'Zipping files...' -zipFilename = 'SickRage-win32-alpha-build' + str(currentBuildNumber) -if os.path.isfile(zipFilename + '.zip'): - zipNum = 2 - while os.path.isfile(zipFilename + '.{0:0>2}.zip'.format(str(zipNum))): - zipNum += 1 - zipFilename = zipFilename + '.{0:0>2}'.format(str(zipNum)) - -# get a list of files to add to the zip -zipFileList = allFiles('dist/') - -# add all files to the zip -z = zipfile.ZipFile(zipFilename + '.zip', 'w', zipfile.ZIP_DEFLATED) -for file in zipFileList: - z.write(file, file.replace('dist/', zipFilename + '/')) -z.close() - -print "Created zip at", zipFilename - -# i store my google code username/pw in a config so i can have this file in public source control -config = ConfigParser.ConfigParser() -configFilename = os.path.join(compile_dir, "gc.ini") -config.read(configFilename) - -gc_username = config.get("GC", "username") -gc_password = config.get("GC", "password") - -# upload to google code unless I tell it not to -if "noup" not in oldArgs and "test" not in oldArgs: - print "Uploading zip to google code" - googlecode_upload.upload(os.path.abspath(zipFilename + ".zip"), "sickrage", gc_username, gc_password, - "Win32 alpha build " + str(currentBuildNumber) + " (unstable/development release)", - ["Featured", "Type-Executable", "OpSys-Windows"]) - -if 'nopush' not in oldArgs and 'test' not in oldArgs: - # tag commit as a new build and push changes to github - print 'Tagging commit and pushing' - p = subprocess.Popen('git tag -a "build-' + str(currentBuildNumber) + '" -m "Windows build ' + zipFilename + '"', - shell=True, cwd=compile_dir) - o, e = p.communicate() - p = subprocess.Popen('git push --tags origin windows_binaries', shell=True, cwd=compile_dir) - o, e = p.communicate() diff --git a/sickbeard/clients/deluged_client.py b/sickbeard/clients/deluged_client.py index da11cd432d7675ca29349f8a155d1dd11b9e60d3..9c2e00b56189abd0c4a8023e62d0caa977a732c3 100644 --- a/sickbeard/clients/deluged_client.py +++ b/sickbeard/clients/deluged_client.py @@ -1,4 +1,5 @@ # Author: Paul Wollaston +# Contributions: Luke Mullan # # This client script allows connection to Deluge Daemon directly, completely # circumventing the requirement to use the WebUI. @@ -41,7 +42,7 @@ class DelugeDAPI(GenericClient): 'add_paused': sickbeard.TORRENT_PAUSED } - remote_torrent = self.drpc.add_torrent_magnet(result.url, options) + remote_torrent = self.drpc.add_torrent_magnet(result.url, options, result.hash) if not remote_torrent: return None @@ -64,7 +65,7 @@ class DelugeDAPI(GenericClient): 'add_paused': sickbeard.TORRENT_PAUSED } - remote_torrent = self.drpc.add_torrent_file(result.name + '.torrent', result.content, options) + remote_torrent = self.drpc.add_torrent_file(result.name + '.torrent', result.content, options, result.hash) if not remote_torrent: return None @@ -107,7 +108,6 @@ class DelugeDAPI(GenericClient): return True def testAuthentication(self): - print "Test Auth" if self.connect(True) and self.drpc.test(): return True, 'Success: Connected and Authenticated' else: @@ -140,15 +140,14 @@ class DelugeRPC(object): return False return True - def add_torrent_magnet(self, torrent, options): + def add_torrent_magnet(self, torrent, options, torrent_hash): torrent_id = False try: self.connect() torrent_id = self.client.core.add_torrent_magnet(torrent, options).get() if not torrent_id: - torrent_id = self._check_torrent(True, torrent) + torrent_id = self._check_torrent(torrent_hash) except Exception as err: - print "ERRERR: %s" % err return False finally: if self.client: @@ -156,13 +155,13 @@ class DelugeRPC(object): return torrent_id - def add_torrent_file(self, filename, torrent, options): + def add_torrent_file(self, filename, torrent, options, torrent_hash): torrent_id = False try: self.connect() torrent_id = self.client.core.add_torrent_file(filename, b64encode(torrent), options).get() if not torrent_id: - torrent_id = self._check_torrent(False, torrent) + torrent_id = self._check_torrent(torrent_hash) except Exception as err: return False finally: @@ -211,23 +210,11 @@ class DelugeRPC(object): def disconnect(self): self.client.disconnect() - def _check_torrent(self, magnet, torrent): - # Torrent not added, check if it already existed. - if magnet: - torrent_hash = re.findall('urn:btih:([\w]{32,40})', torrent)[0] - else: - info = bdecode(torrent)["info"] - torrent_hash = sha1(benc(info)).hexdigest() - - # Convert base 32 to hex - if len(torrent_hash) == 32: - torrent_hash = b16encode(b32decode(torrent_hash)) - - torrent_hash = torrent_hash.lower() - torrent_check = self.client.core.get_torrent_status(torrent_hash, {}).get() - if torrent_check['hash']: + def _check_torrent(self, torrent_hash): + torrent_id = self.client.core.get_torrent_status(torrent_hash, {}).get() + if torrent_id['hash']: + logger.log('DelugeD: Torrent already exists in Deluge', logger.DEBUG) return torrent_hash - return False api = DelugeDAPI() diff --git a/sickbeard/common.py b/sickbeard/common.py index 34f9fad114c4fae7b6b1529e96619f16b8c3b099..ebed6f136983aa5d7e82944b8a9605829d29e9c4 100644 --- a/sickbeard/common.py +++ b/sickbeard/common.py @@ -118,6 +118,9 @@ class Quality: FULLHDWEBDL = 1 << 6 # 64 -- 1080p web-dl HDBLURAY = 1 << 7 # 128 FULLHDBLURAY = 1 << 8 # 256 + ANYHDTV = HDTV | FULLHDTV # 20 + ANYWEBDL = HDWEBDL | FULLHDWEBDL # 96 + ANYBLURAY = HDBLURAY | FULLHDBLURAY # 384 # put these bits at the other end of the spectrum, far enough out that they shouldn't interfere UNKNOWN = 1 << 15 # 32768 @@ -126,7 +129,7 @@ class Quality: UNKNOWN: "Unknown", SDTV: "SDTV", SDDVD: "SD DVD", - HDTV: "HDTV", + HDTV: "720p HDTV", RAWHDTV: "RawHD", FULLHDTV: "1080p HDTV", HDWEBDL: "720p WEB-DL", @@ -134,6 +137,25 @@ class Quality: HDBLURAY: "720p BluRay", FULLHDBLURAY: "1080p BluRay"} + combinedQualityStrings = {ANYHDTV: "HDTV", + ANYWEBDL: "WEB-DL", + ANYBLURAY: "BluRay"} + + cssClassStrings = {NONE: "N/A", + UNKNOWN: "Unknown", + SDTV: "SDTV", + SDDVD: "SDDVD", + HDTV: "HD720p", + RAWHDTV: "RawHD", + FULLHDTV: "HD1080p", + HDWEBDL: "HD720p", + FULLHDWEBDL: "HD1080p", + HDBLURAY: "HD720p", + FULLHDBLURAY: "HD1080p", + ANYHDTV: "any-hd", + ANYWEBDL: "any-hd", + ANYBLURAY: "any-hd"} + statusPrefixes = {DOWNLOADED: "Downloaded", SNATCHED: "Snatched", SNATCHED_PROPER: "Snatched (Proper)", @@ -182,17 +204,9 @@ class Quality: if quality != Quality.UNKNOWN: return quality - name = os.path.basename(name) - - # if we have our exact text then assume we put it there - for x in sorted(Quality.qualityStrings.keys(), reverse=True): - if x == Quality.UNKNOWN or x == Quality.NONE: - continue - - regex = '\W' + Quality.qualityStrings[x].replace(' ', '\W') + '\W' - regex_match = re.search(regex, name, re.I) - if regex_match: - return x + quality = Quality.assumeQuality(name) + if quality != Quality.UNKNOWN: + return quality return Quality.UNKNOWN @@ -232,27 +246,27 @@ class Quality: else: return Quality.UNKNOWN - if checkName(["(pdtv|hdtv|dsr|tvrip).(xvid|x264|h.?264)"], all) and not checkName(["(720|1080)[pi]"], all) and\ - not checkName(["hr.ws.pdtv.x264"], any): + if checkName(["(pdtv|hdtv|dsr|tvrip).(xvid|x26[45]|h.?26[45])"], all) and not checkName(["(720|1080)[pi]"], all) and\ + not checkName(["hr.ws.pdtv.x26[45]"], any): return Quality.SDTV - elif checkName(["web.dl|webrip", "xvid|x264|h.?264"], all) and not checkName(["(720|1080)[pi]"], all): + elif checkName(["web.dl|webrip", "xvid|x26[45]|h.?26[45]"], all) and not checkName(["(720|1080)[pi]"], all): return Quality.SDTV - elif checkName(["(dvdrip|b[rd]rip|blue?-?ray)(.ws)?.(xvid|divx|x264)"], any) and not checkName(["(720|1080)[pi]"], all): + elif checkName(["(dvdrip|b[rd]rip|blue?-?ray)(.ws)?.(xvid|divx|x26[45])"], any) and not checkName(["(720|1080)[pi]"], all): return Quality.SDDVD - elif checkName(["720p", "hdtv", "x264"], all) or checkName(["hr.ws.pdtv.x264"], any) and not checkName( + elif checkName(["720p", "hdtv", "x26[45]"], all) or checkName(["hr.ws.pdtv.x26[45]"], any) and not checkName( ["1080[pi]"], all): return Quality.HDTV - elif checkName(["720p|1080i", "hdtv", "mpeg-?2"], all) or checkName(["1080[pi].hdtv", "h.?264"], all): + elif checkName(["720p|1080i", "hdtv", "mpeg-?2"], all) or checkName(["1080[pi].hdtv", "h.?26[45]"], all): return Quality.RAWHDTV - elif checkName(["1080p", "hdtv", "x264"], all): + elif checkName(["1080p", "hdtv", "x26[45]"], all): return Quality.FULLHDTV - elif checkName(["720p", "web.dl|webrip"], all) or checkName(["720p", "itunes", "h.?264"], all): + elif checkName(["720p", "web.dl|webrip"], all) or checkName(["720p", "itunes", "h.?26[45]"], all): return Quality.HDWEBDL - elif checkName(["1080p", "web.dl|webrip"], all) or checkName(["1080p", "itunes", "h.?264"], all): + elif checkName(["1080p", "web.dl|webrip"], all) or checkName(["1080p", "itunes", "h.?26[45]"], all): return Quality.FULLHDWEBDL - elif checkName(["720p", "blue?-?ray|hddvd|b[rd]rip", "x264"], all): + elif checkName(["720p", "blue?-?ray|hddvd|b[rd]rip", "x26[45]"], all): return Quality.HDBLURAY - elif checkName(["1080p", "blue?-?ray|hddvd|b[rd]rip", "x264"], all): + elif checkName(["1080p", "blue?-?ray|hddvd|b[rd]rip", "x26[45]"], all): return Quality.FULLHDBLURAY else: return Quality.UNKNOWN @@ -263,9 +277,7 @@ class Quality: if quality != Quality.UNKNOWN: return quality - if name.lower().endswith((".avi", ".mp4")): - return Quality.SDTV - elif name.lower().endswith(".ts"): + if name.lower().endswith(".ts"): return Quality.RAWHDTV else: return Quality.UNKNOWN @@ -290,7 +302,10 @@ class Quality: metadata = None pass - del parser + try: + parser.stream._input.close() + except: + pass if not metadata: return Quality.UNKNOWN @@ -305,8 +320,6 @@ class Quality: if metagroup.has('height'): height = int(metagroup.get('height') or 0) - del metadata - if not height: return Quality.UNKNOWN diff --git a/sickbeard/exceptions.py b/sickbeard/exceptions.py index 58fc9df2878ad081b752a2de6235e2b5d6880757..b1040043fa2e3bcb06981b759a1cc95715337978 100644 --- a/sickbeard/exceptions.py +++ b/sickbeard/exceptions.py @@ -119,6 +119,8 @@ class CantRefreshException(SickBeardException): class CantUpdateException(SickBeardException): "The show can't be updated right now" +class CantRemoveException(SickBeardException): + "The show can't be removed right now" class PostProcessingFailed(SickBeardException): "Post-processing the episode failed" diff --git a/sickbeard/helpers.py b/sickbeard/helpers.py index 966372fdcd6cd77e14cedd30a35fee21a84ef467..e41f48b4bc43e41c4bea7289ba09736e60893b55 100644 --- a/sickbeard/helpers.py +++ b/sickbeard/helpers.py @@ -145,6 +145,7 @@ def remove_non_release_groups(name): '\[silv4\]$': 'searchre', '\[Seedbox\]$': 'searchre', '\[AndroidTwoU\]$': 'searchre', + '\.\[BT\]$': 'searchre', ' \[1044\]$': 'searchre', '\.RiPSaLoT$': 'searchre', '\.GiuseppeTnT$': 'searchre', diff --git a/sickbeard/providers/alpharatio.py b/sickbeard/providers/alpharatio.py index 3e9fcce6a30187744756e603f9e11dd703683cec..5cb040fd6733417d70fb1a671404094a4e112338 100644 --- a/sickbeard/providers/alpharatio.py +++ b/sickbeard/providers/alpharatio.py @@ -142,7 +142,7 @@ class AlphaRatioProvider(generic.TorrentProvider): search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ + ep_string = sanitizeSceneName(show_name) + ' ' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} + ' %s' % add_string diff --git a/sickbeard/providers/bitsoup.py b/sickbeard/providers/bitsoup.py index 8805bbc3dcb2e7316c5a49539aad1bf68a26f781..f6f24bbe525e54b5ba11c066b97af36fcc0d4165 100644 --- a/sickbeard/providers/bitsoup.py +++ b/sickbeard/providers/bitsoup.py @@ -142,7 +142,7 @@ class BitSoupProvider(generic.TorrentProvider): search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ + ep_string = sanitizeSceneName(show_name) + ' ' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} + ' %s' % add_string diff --git a/sickbeard/providers/bluetigers.py b/sickbeard/providers/bluetigers.py index bd711e185a8623966956feb500084edd30ee87a0..4afa66425632f482190a52e5dc5ffc6817a3b4e9 100644 --- a/sickbeard/providers/bluetigers.py +++ b/sickbeard/providers/bluetigers.py @@ -73,13 +73,13 @@ class BLUETIGERSProvider(generic.TorrentProvider): quality = Quality.sceneQuality(item[0], anime) return quality - def _doLogin(self): + def _doLogin(self): if any(requests.utils.dict_from_cookiejar(self.session.cookies).values()): return True - + login_params = {'username': self.username, 'password': self.password, 'take_login' : '1' @@ -97,9 +97,9 @@ class BLUETIGERSProvider(generic.TorrentProvider): if re.search('/account-logout.php', response.text): logger.log(u'Login to ' + self.name + ' was successful.', logger.DEBUG) - return True + return True else: - logger.log(u'Login to ' + self.name + ' was unsuccessful.', logger.DEBUG) + logger.log(u'Login to ' + self.name + ' was unsuccessful.', logger.DEBUG) return False return True @@ -144,7 +144,7 @@ class BLUETIGERSProvider(generic.TorrentProvider): search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name_helpers.sanitizeSceneName(show_name) + '.' + \ + ep_string = sanitizeSceneName(show_name) + '.' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} + ' %s' % add_string @@ -166,11 +166,11 @@ class BLUETIGERSProvider(generic.TorrentProvider): if isinstance(search_string, unicode): search_string = unidecode(search_string) - + searchURL = self.urls['search'] % (urllib.quote(search_string), self.categories) logger.log(u"Search string: " + searchURL, logger.DEBUG) - + data = self.getURL(searchURL) if not data: continue @@ -178,20 +178,20 @@ class BLUETIGERSProvider(generic.TorrentProvider): try: with BS4Parser(data, features=["html5lib", "permissive"]) as html: result_linkz = html.findAll('a', href=re.compile("torrents-details")) - + if not result_linkz: logger.log(u"The Data returned from " + self.name + " do not contains any torrent", logger.DEBUG) continue - + if result_linkz: - for link in result_linkz: + for link in result_linkz: title = link.text - logger.log(u"BLUETIGERS TITLE TEMP: " + title, logger.DEBUG) - download_url = self.urls['base_url'] + "/" + link['href'] - download_url = download_url.replace("torrents-details","download") + logger.log(u"BLUETIGERS TITLE TEMP: " + title, logger.DEBUG) + download_url = self.urls['base_url'] + "/" + link['href'] + download_url = download_url.replace("torrents-details","download") logger.log(u"BLUETIGERS downloadURL: " + download_url, logger.DEBUG) - + if not title or not download_url: continue diff --git a/sickbeard/providers/btdigg.py b/sickbeard/providers/btdigg.py index 2b63a96d5e7f05d93dc3a24db26fde39892bdd63..944d102b70ee5a0ba0a3dc27514339c4f31aa486 100644 --- a/sickbeard/providers/btdigg.py +++ b/sickbeard/providers/btdigg.py @@ -30,6 +30,7 @@ from sickbeard import db from sickbeard.common import WANTED from sickbeard.exceptions import ex from sickbeard.config import naming_ep_type +from sickbeard.helpers import sanitizeSceneName class BTDIGGProvider(generic.TorrentProvider): @@ -78,10 +79,10 @@ class BTDIGGProvider(generic.TorrentProvider): for sqlEp in sqlResults: for show_name in set(show_name_helpers.allPossibleShowNames(show)): if show.air_by_date: - ep_string = show_name_helpers.sanitizeSceneName(show_name) +' '+ str(datetime.date.fromordinal(sqlEp["airdate"])).replace('-', '.') + ep_string = sanitizeSceneName(show_name) +' '+ str(datetime.date.fromordinal(sqlEp["airdate"])).replace('-', '.') search_string.append(ep_string) else: - ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' S%02d' % sqlEp["season"] + ep_string = sanitizeSceneName(show_name) + ' S%02d' % sqlEp["season"] search_string.append(ep_string) return search_string @@ -95,7 +96,7 @@ class BTDIGGProvider(generic.TorrentProvider): search_string = [] for show_name in set(show_name_helpers.allPossibleShowNames(ep_obj.show)): - ep_string = show_name_helpers.sanitizeSceneName(show_name) + ep_string = sanitizeSceneName(show_name) if ep_obj.show.air_by_date: ep_string += ' ' + str(ep_obj.airdate).replace('-', '.') else: diff --git a/sickbeard/providers/cpasbien.py b/sickbeard/providers/cpasbien.py index ad4a0b43ebff34d257445dbccac0d8aee531ff51..70bbc0244615d3f39b7c7cf887fb84988613b705 100644 --- a/sickbeard/providers/cpasbien.py +++ b/sickbeard/providers/cpasbien.py @@ -103,7 +103,7 @@ class CpasbienProvider(generic.TorrentProvider): search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name_helpers.sanitizeSceneName(show_name) + '.' + \ + ep_string = sanitizeSceneName(show_name) + '.' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} + ' %s' % add_string diff --git a/sickbeard/providers/fnt.py b/sickbeard/providers/fnt.py index dc3092067bc1fabaf91f92ab862b61ca14e592ac..28fa138c66ee52868c8cf90021a5b206e5846ed0 100644 --- a/sickbeard/providers/fnt.py +++ b/sickbeard/providers/fnt.py @@ -143,7 +143,7 @@ class FNTProvider(generic.TorrentProvider): search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name_helpers.sanitizeSceneName(show_name) + '.' + \ + ep_string = sanitizeSceneName(show_name) + '.' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} + ' %s' % add_string diff --git a/sickbeard/providers/frenchtorrentdb.py b/sickbeard/providers/frenchtorrentdb.py index 13b78f3418c7a3104a134d3c904baa0ecd4f3b1e..1611a3cf2d27352060c92f0d369117f6e329d581 100644 --- a/sickbeard/providers/frenchtorrentdb.py +++ b/sickbeard/providers/frenchtorrentdb.py @@ -161,7 +161,7 @@ class FrenchTorrentDBProvider(generic.TorrentProvider): search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name_helpers.sanitizeSceneName(show_name) + '.' + \ + ep_string = sanitizeSceneName(show_name) + '.' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} + ' %s' % add_string diff --git a/sickbeard/providers/freshontv.py b/sickbeard/providers/freshontv.py index 36c4f1f009ef6357822aca759d99f57842483d4f..2f3a9b277ea19b979877b9f3fdb9a0696a158108 100644 --- a/sickbeard/providers/freshontv.py +++ b/sickbeard/providers/freshontv.py @@ -176,7 +176,7 @@ class FreshOnTVProvider(generic.TorrentProvider): search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ + ep_string = sanitizeSceneName(show_name) + ' ' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} + ' %s' % add_string diff --git a/sickbeard/providers/hdtorrents.py b/sickbeard/providers/hdtorrents.py index 1989fbc43ea316b37ecc181a50c055dfd747a12e..82900b55ca36c5bd5b2bc55b29fb321e4a423d9d 100644 --- a/sickbeard/providers/hdtorrents.py +++ b/sickbeard/providers/hdtorrents.py @@ -136,7 +136,7 @@ class HDTorrentsProvider(generic.TorrentProvider): ep_string = sanitizeSceneName(show_name) + ' ' + \ "%i" % int(ep_obj.scene_absolute_number) else: - ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ + ep_string = sanitizeSceneName(show_name) + ' ' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} if add_string: diff --git a/sickbeard/providers/hounddawgs.py b/sickbeard/providers/hounddawgs.py index f906e57ed79a2e6a55fb5943aabb1e50394304d7..285a9e675120318a195a8f7c7752814e5b12cd7b 100644 --- a/sickbeard/providers/hounddawgs.py +++ b/sickbeard/providers/hounddawgs.py @@ -143,7 +143,7 @@ class HoundDawgsProvider(generic.TorrentProvider): search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ + ep_string = sanitizeSceneName(show_name) + ' ' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} diff --git a/sickbeard/providers/iptorrents.py b/sickbeard/providers/iptorrents.py index d8eaf5dea334d95f4f00931c9ff9d4cb0b3ae0b0..f81b994dea260a0cac5a81e511478d6eca2f9e3c 100644 --- a/sickbeard/providers/iptorrents.py +++ b/sickbeard/providers/iptorrents.py @@ -132,7 +132,7 @@ class IPTorrentsProvider(generic.TorrentProvider): search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ + ep_string = sanitizeSceneName(show_name) + ' ' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} + '|' + \ sickbeard.config.naming_ep_type[0] % {'seasonnumber': ep_obj.scene_season, diff --git a/sickbeard/providers/kat.py b/sickbeard/providers/kat.py index dc5898fc9fbbbd6f2e0d1fa363985e2ba6668f3c..80d85e8918e407cd3254adc57ef86a9bb941047e 100644 --- a/sickbeard/providers/kat.py +++ b/sickbeard/providers/kat.py @@ -65,102 +65,6 @@ class KATProvider(generic.TorrentProvider): def imageName(self): return 'kat.png' - def getQuality(self, item, anime=False): - - quality = Quality.sceneQuality(item[0], anime) - return quality - - def _reverseQuality(self, quality): - - quality_string = '' - - if quality == Quality.SDTV: - quality_string = 'HDTV x264' - if quality == Quality.SDDVD: - quality_string = 'DVDRIP' - elif quality == Quality.HDTV: - quality_string = '720p HDTV x264' - elif quality == Quality.FULLHDTV: - quality_string = '1080p HDTV x264' - elif quality == Quality.RAWHDTV: - quality_string = '1080i HDTV mpeg2' - elif quality == Quality.HDWEBDL: - quality_string = '720p WEB-DL h264' - elif quality == Quality.FULLHDWEBDL: - quality_string = '1080p WEB-DL h264' - elif quality == Quality.HDBLURAY: - quality_string = '720p Bluray x264' - elif quality == Quality.FULLHDBLURAY: - quality_string = '1080p Bluray x264' - - return quality_string - - def _find_season_quality(self, title, torrent_link, ep_number): - """ Return the modified title of a Season Torrent with the quality found inspecting torrent file list """ - - mediaExtensions = ['avi', 'mkv', 'wmv', 'divx', - 'vob', 'dvr-ms', 'wtv', 'ts' - 'ogv', 'rar', 'zip', 'mp4'] - - quality = Quality.UNKNOWN - - fileName = None - - data = self.getURL(torrent_link) - if not data: - return None - - try: - with BS4Parser(data, features=["html5lib", "permissive"]) as soup: - file_table = soup.find('table', attrs={'class': 'torrentFileList'}) - - if not file_table: - return None - - files = [x.text for x in file_table.find_all('td', attrs={'class': 'torFileName'})] - videoFiles = filter(lambda x: x.rpartition(".")[2].lower() in mediaExtensions, files) - - #Filtering SingleEpisode/MultiSeason Torrent - if len(videoFiles) < ep_number or len(videoFiles) > float(ep_number * 1.1): - logger.log(u"Result " + title + " have " + str( - ep_number) + " episode and episodes retrived in torrent are " + str(len(videoFiles)), logger.DEBUG) - logger.log( - u"Result " + title + " Seem to be a Single Episode or MultiSeason torrent, skipping result...", - logger.DEBUG) - return None - - if Quality.sceneQuality(title) != Quality.UNKNOWN: - return title - - for fileName in videoFiles: - quality = Quality.sceneQuality(os.path.basename(fileName)) - if quality != Quality.UNKNOWN: break - - #if fileName is not None and quality == Quality.UNKNOWN: - # quality = Quality.assumeQuality(fileName) - - if quality == Quality.UNKNOWN: - logger.log(u"Unable to obtain a Season Quality for " + title, logger.DEBUG) - return None - - try: - myParser = NameParser(showObj=self.show) - parse_result = myParser.parse(fileName) - except (InvalidNameException, InvalidShowException): - return None - - logger.log(u"Season quality for " + title + " is " + Quality.qualityStrings[quality], logger.DEBUG) - - if parse_result.series_name and parse_result.season_number: - title = parse_result.series_name + ' S%02d' % int( - parse_result.season_number) + ' ' + self._reverseQuality(quality) - - return title - - except Exception, e: - logger.log(u"Failed parsing " + self.name + " Traceback: " + traceback.format_exc(), logger.ERROR) - - def _get_season_search_strings(self, ep_obj): search_string = {'Season': []} @@ -203,13 +107,11 @@ class KATProvider(generic.TorrentProvider): return [search_string] - def _get_size(self, item): title, url, id, seeders, leechers, size, pubdate = item return size or -1 def _doSearch(self, search_params, search_mode='eponly', epcount=0, age=0, epObj=None): - results = [] items = {'Season': [], 'Episode': [], 'RSS': []} @@ -244,16 +146,9 @@ class KATProvider(generic.TorrentProvider): continue if self.confirmed and not verified: - logger.log( - u"KAT Provider found result " + title + " but that doesn't seem like a verified result so I'm ignoring it", - logger.DEBUG) + logger.log(u"KAT Provider found result " + title + " but that doesn't seem like a verified result so I'm ignoring it", logger.DEBUG) continue - #Check number video files = episode in season and find the real Quality for full season torrent analyzing files in torrent - if mode == 'Season' and search_mode == 'sponly': - ep_number = int(epcount / len(set(allPossibleShowNames(self.show)))) - title = self._find_season_quality(title, link, ep_number) - if not title or not url: continue @@ -287,7 +182,6 @@ class KATProvider(generic.TorrentProvider): return results def _get_title_and_url(self, item): - title, url, id, seeders, leechers, size, pubdate = item if title: @@ -299,7 +193,6 @@ class KATProvider(generic.TorrentProvider): return (title, url) def findPropers(self, search_date=datetime.datetime.today()): - results = [] myDB = db.DBConnection() diff --git a/sickbeard/providers/libertalia.py b/sickbeard/providers/libertalia.py index 4670b11de0c5eb43f55e2315d688271de20846f7..9f558b22f0cb4982fd0488ab202a669476db1668 100644 --- a/sickbeard/providers/libertalia.py +++ b/sickbeard/providers/libertalia.py @@ -113,7 +113,7 @@ class LibertaliaProvider(generic.TorrentProvider): search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name_helpers.sanitizeSceneName(show_name) + '.' + \ + ep_string = sanitizeSceneName(show_name) + '.' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} + ' %s' % add_string diff --git a/sickbeard/providers/morethantv.py b/sickbeard/providers/morethantv.py index d1a452f86e29018e7418b0e1692e4d09f9b4c39e..1ca452a155ad7fcf835a43f7063c4a4d9aabba27 100644 --- a/sickbeard/providers/morethantv.py +++ b/sickbeard/providers/morethantv.py @@ -158,7 +158,7 @@ class MoreThanTVProvider(generic.TorrentProvider): search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ + ep_string = sanitizeSceneName(show_name) + ' ' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} + ' %s' % add_string diff --git a/sickbeard/providers/nextgen.py b/sickbeard/providers/nextgen.py index 8d2640ac2a6e7f9182429dfeb4afccf9db9ef792..2b4e17b95d8f70a9fe8f71de206ef1ca1a8ffc9e 100644 --- a/sickbeard/providers/nextgen.py +++ b/sickbeard/providers/nextgen.py @@ -177,7 +177,7 @@ class NextGenProvider(generic.TorrentProvider): search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ + ep_string = sanitizeSceneName(show_name) + ' ' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} + ' %s' % add_string diff --git a/sickbeard/providers/rarbg.py b/sickbeard/providers/rarbg.py index b8236fbba3a66a486947461b92ae85796c7c94b1..3a32bbaaeb8e292fdc0ef8cb5490e51b7a20461f 100644 --- a/sickbeard/providers/rarbg.py +++ b/sickbeard/providers/rarbg.py @@ -83,7 +83,7 @@ class RarbgProvider(generic.TorrentProvider): 'ranked': '&ranked={ranked}', 'token': '&token={token}', } - + self.defaultOptions = self.urlOptions['categories'].format(categories='tv') + \ self.urlOptions['limit'].format(limit='100') + \ self.urlOptions['format'].format(format='json') @@ -91,7 +91,7 @@ class RarbgProvider(generic.TorrentProvider): self.next_request = datetime.datetime.now() self.cache = RarbgCache(self) - + self.headers = {'User-Agent': USER_AGENT} def isEnabled(self): @@ -224,7 +224,7 @@ class RarbgProvider(generic.TorrentProvider): if self.minseed: searchURL += self.urlOptions['seeders'].format(min_seeders=int(self.minseed)) - + if self.sorting: searchURL += self.urlOptions['sorting'].format(sorting=self.sorting) diff --git a/sickbeard/providers/scc.py b/sickbeard/providers/scc.py index 89405fb9ce0ecc35d62f4be06c934aaf3b182e34..bbfe4c715998a1eddc5957dfd31a0c8f4b2b7dbb 100644 --- a/sickbeard/providers/scc.py +++ b/sickbeard/providers/scc.py @@ -138,7 +138,7 @@ class SCCProvider(generic.TorrentProvider): elif self.show.anime: ep_string = sanitizeSceneName(show_name) + ' %i' % int(ep_obj.scene_absolute_number) else: - ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ + ep_string = sanitizeSceneName(show_name) + ' ' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} diff --git a/sickbeard/providers/scenetime.py b/sickbeard/providers/scenetime.py index 317bc3ff56954684e15a0c80fb2c00a179f25ef7..6cd1511af7642073f35717a3ce88d12005d97f3a 100644 --- a/sickbeard/providers/scenetime.py +++ b/sickbeard/providers/scenetime.py @@ -138,7 +138,7 @@ class SceneTimeProvider(generic.TorrentProvider): search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ + ep_string = sanitizeSceneName(show_name) + ' ' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} + ' %s' % add_string diff --git a/sickbeard/providers/speedcd.py b/sickbeard/providers/speedcd.py index 15242804f4918d9b14fc60de5dfd1aea9437eb21..d7e5f37d82a356040d07620bbe952c571b7ed5b9 100644 --- a/sickbeard/providers/speedcd.py +++ b/sickbeard/providers/speedcd.py @@ -138,7 +138,7 @@ class SpeedCDProvider(generic.TorrentProvider): search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ + ep_string = sanitizeSceneName(show_name) + ' ' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} + ' %s' % add_string @@ -257,4 +257,3 @@ class SpeedCDCache(tvcache.TVCache): return {'entries': self.provider._doSearch(search_params)} provider = SpeedCDProvider() - diff --git a/sickbeard/providers/thepiratebay.py b/sickbeard/providers/thepiratebay.py index 30a40113e2c47b78f5c70351143344dc3f83ff06..3350ed2ae0edf70173760768cc5648074879d4ef 100644 --- a/sickbeard/providers/thepiratebay.py +++ b/sickbeard/providers/thepiratebay.py @@ -73,98 +73,6 @@ class ThePirateBayProvider(generic.TorrentProvider): def imageName(self): return 'thepiratebay.png' - def getQuality(self, item, anime=False): - - quality = Quality.sceneQuality(item[0], anime) - return quality - - def _reverseQuality(self, quality): - - quality_string = '' - - if quality == Quality.SDTV: - quality_string = 'HDTV x264' - if quality == Quality.SDDVD: - quality_string = 'DVDRIP' - elif quality == Quality.HDTV: - quality_string = '720p HDTV x264' - elif quality == Quality.FULLHDTV: - quality_string = '1080p HDTV x264' - elif quality == Quality.RAWHDTV: - quality_string = '1080i HDTV mpeg2' - elif quality == Quality.HDWEBDL: - quality_string = '720p WEB-DL h264' - elif quality == Quality.FULLHDWEBDL: - quality_string = '1080p WEB-DL h264' - elif quality == Quality.HDBLURAY: - quality_string = '720p Bluray x264' - elif quality == Quality.FULLHDBLURAY: - quality_string = '1080p Bluray x264' - - return quality_string - - def _find_season_quality(self, title, torrent_id, ep_number): - """ Return the modified title of a Season Torrent with the quality found inspecting torrent file list """ - - mediaExtensions = ['avi', 'mkv', 'wmv', 'divx', - 'vob', 'dvr-ms', 'wtv', 'ts' - 'ogv', 'rar', 'zip', 'mp4'] - - quality = Quality.UNKNOWN - - fileName = None - - fileURL = self.url + 'ajax_details_filelist.php?id=' + str(torrent_id) - data = self.getURL(fileURL) - if not data: - return None - - filesList = re.findall('<td.+>(.*?)</td>', data) - - if not filesList: - # disabled errormsg for now - # logger.log(u"Unable to get the torrent file list for " + title, logger.ERROR) - return None - - videoFiles = filter(lambda x: x.rpartition(".")[2].lower() in mediaExtensions, filesList) - - #Filtering SingleEpisode/MultiSeason Torrent - if len(videoFiles) < ep_number or len(videoFiles) > float(ep_number * 1.1): - logger.log( - u"Result " + title + " have " + str(ep_number) + " episode and episodes retrived in torrent are " + str( - len(videoFiles)), logger.DEBUG) - logger.log(u"Result " + title + " Seem to be a Single Episode or MultiSeason torrent, skipping result...", - logger.DEBUG) - return None - - if Quality.sceneQuality(title) != Quality.UNKNOWN: - return title - - for fileName in videoFiles: - quality = Quality.sceneQuality(os.path.basename(fileName)) - if quality != Quality.UNKNOWN: break - - #if fileName is not None and quality == Quality.UNKNOWN: - # quality = Quality.assumeQuality(fileName) - - if quality == Quality.UNKNOWN: - logger.log(u"Unable to obtain a Season Quality for " + title, logger.DEBUG) - return None - - try: - myParser = NameParser(showObj=self.show) - parse_result = myParser.parse(fileName) - except (InvalidNameException, InvalidShowException): - return None - - logger.log(u"Season quality for " + title + " is " + Quality.qualityStrings[quality], logger.DEBUG) - - if parse_result.series_name and parse_result.season_number: - title = parse_result.series_name + ' S%02d' % int(parse_result.season_number) + ' ' + self._reverseQuality( - quality) - - return title - def _get_season_search_strings(self, ep_obj): search_string = {'Season': []} @@ -242,27 +150,22 @@ class ThePirateBayProvider(generic.TorrentProvider): re_title_url = self.proxy._buildRE(self.re_title_url).replace('&f=norefer', '') matches = re.compile(re_title_url, re.DOTALL).finditer(urllib.unquote(data)) for torrent in matches: - title = torrent.group('title').replace('_', - '.') #Do not know why but SickBeard skip release with '_' in name + title = torrent.group('title') url = torrent.group('url') id = int(torrent.group('id')) seeders = int(torrent.group('seeders')) leechers = int(torrent.group('leechers')) + #Filter unseeded torrent if mode != 'RSS' and (seeders < self.minseed or leechers < self.minleech): continue - #Accept Torrent only from Good People for every Episode Search + #Accept Torrent only from Good People for every Episode Search if self.confirmed and re.search('(VIP|Trusted|Helper|Moderator)', torrent.group(0)) is None: logger.log(u"ThePirateBay Provider found result " + torrent.group( 'title') + " but that doesn't seem like a trusted result so I'm ignoring it", logger.DEBUG) continue - #Check number video files = episode in season and find the real Quality for full season torrent analyzing files in torrent - if mode == 'Season' and search_mode == 'sponly': - ep_number = int(epcount / len(set(allPossibleShowNames(self.show)))) - title = self._find_season_quality(title, id, ep_number) - if not title or not url: continue @@ -315,7 +218,7 @@ class ThePirateBayProvider(generic.TorrentProvider): for item in self._doSearch(searchString[0]): title, url = self._get_title_and_url(item) - results.append(classes.Proper(title, url, datetime.datetime.today(), self.show)) + results.append(classes.Proper(title, url, search_date, self.show)) return results diff --git a/sickbeard/providers/tntvillage.py b/sickbeard/providers/tntvillage.py index 83e26e084c7ca303d895aceb4fdbc61d842f1c60..bd68139c9f96df7743a5fa07dafc955f50e6af40 100644 --- a/sickbeard/providers/tntvillage.py +++ b/sickbeard/providers/tntvillage.py @@ -204,7 +204,7 @@ class TNTVillageProvider(generic.TorrentProvider): search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ + ep_string = sanitizeSceneName(show_name) + ' ' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} + ' %s' % add_string diff --git a/sickbeard/providers/torrentbytes.py b/sickbeard/providers/torrentbytes.py index da39b75453cc83f06495aa3fb7bb356f58a7cb5c..01df268d5177e1f34e9cf0448e49fe2aa5424f95 100644 --- a/sickbeard/providers/torrentbytes.py +++ b/sickbeard/providers/torrentbytes.py @@ -139,7 +139,7 @@ class TorrentBytesProvider(generic.TorrentProvider): search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ + ep_string = sanitizeSceneName(show_name) + ' ' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} + ' %s' % add_string diff --git a/sickbeard/providers/torrentday.py b/sickbeard/providers/torrentday.py index b3df3040c6d8460064d847e6db69e5a61b8f1ca2..6cc32bea901ff3fca678b91e61c88413b4bbd194 100644 --- a/sickbeard/providers/torrentday.py +++ b/sickbeard/providers/torrentday.py @@ -167,7 +167,7 @@ class TorrentDayProvider(generic.TorrentProvider): search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ + ep_string = sanitizeSceneName(show_name) + ' ' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} + ' %s' % add_string diff --git a/sickbeard/providers/torrentleech.py b/sickbeard/providers/torrentleech.py index 6a2a368d940b28a0d2fd4e6f5d0a5c10850e4ea0..4a94cacf865205a6c736392c74ad24acddb07779 100644 --- a/sickbeard/providers/torrentleech.py +++ b/sickbeard/providers/torrentleech.py @@ -145,7 +145,7 @@ class TorrentLeechProvider(generic.TorrentProvider): search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name_helpers.sanitizeSceneName(show_name) + ' ' + \ + ep_string = sanitizeSceneName(show_name) + ' ' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} + ' %s' % add_string diff --git a/sickbeard/providers/xthor.py b/sickbeard/providers/xthor.py index 188c6fd12e6e66e6ab675568e91b7055b0cf48e1..4c5de0527c10ccd9ea7f243bac553b22fd239d0e 100644 --- a/sickbeard/providers/xthor.py +++ b/sickbeard/providers/xthor.py @@ -105,7 +105,7 @@ class XthorProvider(generic.TorrentProvider): search_string['Episode'].append(ep_string) else: for show_name in set(show_name_helpers.allPossibleShowNames(self.show)): - ep_string = show_name_helpers.sanitizeSceneName(show_name) + '.' + \ + ep_string = sanitizeSceneName(show_name) + '.' + \ sickbeard.config.naming_ep_type[2] % {'seasonnumber': ep_obj.scene_season, 'episodenumber': ep_obj.scene_episode} + ' %s' % add_string diff --git a/sickbeard/show_queue.py b/sickbeard/show_queue.py index 49a0812e130f2b817387797321bc138c9b45c282..4d2ec47e43af2dfb548f65b4d30d64c696b8f2b4 100644 --- a/sickbeard/show_queue.py +++ b/sickbeard/show_queue.py @@ -30,7 +30,8 @@ from sickbeard import generic_queue from sickbeard import name_cache from sickbeard.exceptions import ex from sickbeard.blackandwhitelist import BlackAndWhiteList, short_group_names - +from libtrakt import TraktAPI +from libtrakt.exceptions import traktException, traktServerBusy, traktAuthException class ShowQueue(generic_queue.GenericQueue): def __init__(self): @@ -38,7 +39,7 @@ class ShowQueue(generic_queue.GenericQueue): self.queue_name = "SHOWQUEUE" def _isInQueue(self, show, actions): - return show in [x.show for x in self.queue if x.action_id in actions] + return show.indexerid in [x.show.indexerid for x in self.queue if x.action_id in actions] def _isBeingSomethinged(self, show, actions): return self.currentItem != None and show == self.currentItem.show and \ @@ -147,6 +148,19 @@ class ShowQueue(generic_queue.GenericQueue): return queueItemObj + def removeShow(self, show, full=False): + if self._isInQueue(show, ShowQueueActions.REMOVE): + raise sickbeard.exceptions.CantRemoveException("This show is already queued to be removed") + + # remove other queued actions for this show. + for x in self.queue: + if show.indexerid == x.show.indexerid and x != self.currentItem: + self.queue.remove(x) + + queueItemObj = QueueItemRemove(show=show, full=full) + self.add_item(queueItemObj) + + return queueItemObj class ShowQueueActions: REFRESH = 1 @@ -155,6 +169,7 @@ class ShowQueueActions: FORCEUPDATE = 4 RENAME = 5 SUBTITLE = 6 + REMOVE = 7 names = {REFRESH: 'Refresh', ADD: 'Add', @@ -162,6 +177,7 @@ class ShowQueueActions: FORCEUPDATE: 'Force Update', RENAME: 'Rename', SUBTITLE: 'Subtitle', + REMOVE: 'Remove Show' } @@ -282,12 +298,35 @@ class QueueItemAdd(ShowQueueItem): self._finishEarly() return except Exception, e: - logger.log(u"Show name with ID %s don't exist in %s anymore. Please change/delete your local .nfo file or remove it from your TRAKT watchlist" % + logger.log(u"Show name with ID %s doesn't exist on %s anymore. If you are using trakt, it will be removed from your TRAKT watchlist. If you are adding manually, try removing the nfo and adding again" % (self.indexer_id,sickbeard.indexerApi(self.indexer).name) , logger.ERROR) + ui.notifications.error("Unable to add show", "Unable to look up the show in " + self.showDir + " on " + str(sickbeard.indexerApi( self.indexer).name) + " using ID " + str( self.indexer_id) + ", not using the NFO. Delete .nfo and try adding manually again.") + + if sickbeard.USE_TRAKT and sickbeard.TRAKT_SYNC_WATCHLIST: + + trakt_id = sickbeard.indexerApi(self.indexer).config['trakt_id'] + trakt_api = TraktAPI(sickbeard.TRAKT_DISABLE_SSL_VERIFY, sickbeard.TRAKT_TIMEOUT) + + title = self.showDir.split("/")[-1] + data = { + 'shows': [ + { + 'title': title, + 'ids': {} + } + ] + } + if trakt_id == 'tvdb_id': + data['shows'][0]['ids']['tvdb'] = self.indexer_id + else: + data['shows'][0]['ids']['tvrage'] = self.indexer_id + + trakt_api.traktRequest("sync/watchlist/remove", data, method='POST') + self._finishEarly() return @@ -409,7 +448,7 @@ class QueueItemAdd(ShowQueueItem): if sickbeard.TRAKT_SYNC_WATCHLIST: logger.log(u"update watchlist") - notifiers.trakt_notifier.update_watchlist(self.show) + notifiers.trakt_notifier.update_watchlist(show_obj=self.show) # Load XEM data to DB for show sickbeard.scene_numbering.xem_refresh(self.show.indexerid, self.show.indexer, force=True) @@ -426,7 +465,7 @@ class QueueItemAdd(ShowQueueItem): def _finishEarly(self): if self.show != None: - self.show.deleteShow() + sickbeard.showQueueScheduler.action.removeShow(self.show) self.finish() @@ -455,7 +494,7 @@ class QueueItemRefresh(ShowQueueItem): # Load XEM data to DB for show sickbeard.scene_numbering.xem_refresh(self.show.indexerid, self.show.indexer) - self.inProgress = False + self.finish() class QueueItemRename(ShowQueueItem): def __init__(self, show=None): @@ -495,8 +534,7 @@ class QueueItemRename(ShowQueueItem): for cur_ep_obj in ep_obj_rename_list: cur_ep_obj.rename() - self.inProgress = False - + self.finish() class QueueItemSubtitle(ShowQueueItem): def __init__(self, show=None): @@ -508,9 +546,7 @@ class QueueItemSubtitle(ShowQueueItem): logger.log(u"Downloading subtitles for " + self.show.name) self.show.downloadSubtitles() - - self.inProgress = False - + self.finish() class QueueItemUpdate(ShowQueueItem): def __init__(self, show=None): @@ -598,8 +634,31 @@ class QueueItemUpdate(ShowQueueItem): logger.log(u"Finished update of " + self.show.name, logger.DEBUG) sickbeard.showQueueScheduler.action.refreshShow(self.show, self.force) + self.finish() class QueueItemForceUpdate(QueueItemUpdate): def __init__(self, show=None): ShowQueueItem.__init__(self, ShowQueueActions.FORCEUPDATE, show) self.force = True + +class QueueItemRemove(ShowQueueItem): + def __init__(self, show=None, full=False): + ShowQueueItem.__init__(self, ShowQueueActions.REMOVE, show) + + # lets make sure this happens before any other high priority actions + self.priority = generic_queue.QueuePriorities.HIGH + generic_queue.QueuePriorities.HIGH + self.full = full + + def run(self): + ShowQueueItem.run(self) + logger.log(u"Removing %s" % self.show.name) + self.show.deleteShow(full=self.full) + + if sickbeard.USE_TRAKT and sickbeard.TRAKT_SYNC: + try: + sickbeard.traktCheckerScheduler.action.removeShowFromTraktLibrary(self.show) + except Exception as e: + logger.log(u"Unable to delete show from Trakt: %s. Error: %s" % (showObj.name, ex(e)),logger.WARNING) + pass + + self.finish() diff --git a/sickbeard/traktChecker.py b/sickbeard/traktChecker.py index 2dd8bf67eb218bb5a649afe43c3d94cf7caa5236..6c3ab121def28934f200688b9087e0fb9eb9a2ce 100644 --- a/sickbeard/traktChecker.py +++ b/sickbeard/traktChecker.py @@ -70,7 +70,7 @@ class TraktChecker(): self.amActive = False def run(self, force=False): - + self.amActive = True # add shows from trakt.tv watchlist @@ -90,7 +90,7 @@ class TraktChecker(): self.syncLibrary() except Exception: logger.log(traceback.format_exc(), logger.DEBUG) - + self.amActive = False def findShow(self, indexer, indexerid): @@ -320,7 +320,7 @@ class TraktChecker(): if sickbeard.TRAKT_SYNC_WATCHLIST and sickbeard.USE_TRAKT and sickbeard.TRAKT_REMOVE_SHOW_FROM_SICKRAGE: logger.log(u"SHOW_SICKRAGE::REMOVE::START - Look for Shows to remove from SickRage", logger.DEBUG) - if sickbeard.showList is not None: + if sickbeard.showList: for show in sickbeard.showList: if show.status == "Ended": try: @@ -330,7 +330,7 @@ class TraktChecker(): return if 'aired' in progress and 'completed' in progress and progress['aired'] == progress['completed']: - show.deleteShow(full=True) + sickbeard.showQueueScheduler.action.removeShow(show, full=True) logger.log(u"Show: " + show.name + " has been removed from SickRage", logger.DEBUG) logger.log(u"SHOW_SICKRAGE::REMOVE::FINISH - Trakt Show Watchlist", logger.DEBUG) diff --git a/sickbeard/webapi.py b/sickbeard/webapi.py index 97a2ea7018a298bbd3fa481073715039013a658d..7d045c7e43978e51e2e7f536ab462f96b043b6f0 100644 --- a/sickbeard/webapi.py +++ b/sickbeard/webapi.py @@ -2360,17 +2360,12 @@ class CMD_ShowDelete(ApiCall): if not showObj: return _responds(RESULT_FAILURE, msg="Show not found") - if sickbeard.showQueueScheduler.action.isBeingAdded( - showObj) or sickbeard.showQueueScheduler.action.isBeingUpdated(showObj): # @UndefinedVariable - return _responds(RESULT_FAILURE, msg="Show can not be deleted while being added or updated") - - if sickbeard.USE_TRAKT and sickbeard.TRAKT_SYNC: - # remove show from trakt.tv library - sickbeard.traktCheckerScheduler.action.removeShowFromTraktLibrary(showObj) - - showObj.deleteShow(bool(self.removefiles)) + try: + sickbeard.showQueueScheduler.action.removeShow(showObj, bool(self.removefiles)) + except sickbeard.exceptions.CantRemoveException as e: + return _responds(RESULT_FAILURE, msg=ex(e)) - return _responds(RESULT_SUCCESS, msg=str(showObj.name) + " has been deleted") + return _responds(RESULT_SUCCESS, msg=showObj.name + " has been queued to be deleted") class CMD_ShowGetQuality(ApiCall): diff --git a/sickbeard/webserve.py b/sickbeard/webserve.py index 4e52d53c83121df7cf92fc7247429ac3a354b0a3..5b1d5343a85b9d0855c8493aa12f5d22636280f1 100644 --- a/sickbeard/webserve.py +++ b/sickbeard/webserve.py @@ -1591,24 +1591,18 @@ class Home(WebRoot): if showObj is None: return self._genericMessage("Error", "Unable to find the specified show") - if sickbeard.showQueueScheduler.action.isBeingAdded( - showObj) or sickbeard.showQueueScheduler.action.isBeingUpdated(showObj): - return self._genericMessage("Error", "Shows can't be deleted while they're being added or updated.") - - if sickbeard.USE_TRAKT and sickbeard.TRAKT_SYNC: - # remove show from trakt.tv library - try: - sickbeard.traktCheckerScheduler.action.removeShowFromTraktLibrary(showObj) - except traktException as e: - logger.log("Trakt: Unable to delete show: {0}. Error: {1}".format(showObj.name, ex(e)),logger.ERROR) - return self._genericMessage("Error", "Unable to delete show: {0}".format(showObj.name)) - - showObj.deleteShow(bool(full)) + try: + sickbeard.showQueueScheduler.action.removeShow(showObj, bool(full)) + except Exception as e: + logger.log(u"Unable to delete show: %s. Error: %s" % (showObj.name, ex(e)),logger.WARNING) + return self._genericMessage("Error", "Unable to delete show: %s" % showObj.name) ui.notifications.message('%s has been %s %s' % (showObj.name, ('deleted', 'trashed')[bool(sickbeard.TRASH_REMOVE_SHOW)], ('(media untouched)', '(with all related media)')[bool(full)])) + + time.sleep(cpu_presets[sickbeard.CPU_PRESET]) #Dont redirect to default page so user can confirm show was deleted return self.redirect('/home/') @@ -3427,12 +3421,12 @@ class Manage(Home, WebRoot): continue if curShowID in toDelete: - showObj.deleteShow(True) + sickbeard.showQueueScheduler.action.removeShow(showObj, True) # don't do anything else if it's being deleted continue if curShowID in toRemove: - showObj.deleteShow() + sickbeard.showQueueScheduler.action.removeShow(showObj) # don't do anything else if it's being remove continue diff --git a/tests/common_tests.py b/tests/common_tests.py index 62922c84d61d8e152e89f965cd0ddc73dcc00a53..5e2563067b77460c399afa6f7ce5606df1317bb7 100644 --- a/tests/common_tests.py +++ b/tests/common_tests.py @@ -87,17 +87,17 @@ class QualityTests(unittest.TestCase): def test_UNKNOWN(self): self.assertEqual(common.Quality.UNKNOWN, common.Quality.nameQuality("Test.Show.S01E02-SiCKBEARD")) - def test_reverse_parsing(self): - self.assertEqual(common.Quality.SDTV, common.Quality.nameQuality("Test Show - S01E02 - SDTV - GROUP")) - self.assertEqual(common.Quality.SDDVD, common.Quality.nameQuality("Test Show - S01E02 - SD DVD - GROUP")) - self.assertEqual(common.Quality.HDTV, common.Quality.nameQuality("Test Show - S01E02 - HDTV - GROUP")) - self.assertEqual(common.Quality.RAWHDTV, common.Quality.nameQuality("Test Show - S01E02 - RawHD - GROUP")) - self.assertEqual(common.Quality.FULLHDTV, common.Quality.nameQuality("Test Show - S01E02 - 1080p HDTV - GROUP")) - self.assertEqual(common.Quality.HDWEBDL, common.Quality.nameQuality("Test Show - S01E02 - 720p WEB-DL - GROUP")) - self.assertEqual(common.Quality.FULLHDWEBDL, common.Quality.nameQuality("Test Show - S01E02 - 1080p WEB-DL - GROUP")) - self.assertEqual(common.Quality.HDBLURAY, common.Quality.nameQuality("Test Show - S01E02 - 720p BluRay - GROUP")) - self.assertEqual(common.Quality.FULLHDBLURAY, common.Quality.nameQuality("Test Show - S01E02 - 1080p BluRay - GROUP")) - self.assertEqual(common.Quality.UNKNOWN, common.Quality.nameQuality("Test Show - S01E02 - Unknown - SiCKBEARD")) +# def test_reverse_parsing(self): +# self.assertEqual(common.Quality.SDTV, common.Quality.nameQuality("Test Show - S01E02 - SDTV - GROUP")) +# self.assertEqual(common.Quality.SDDVD, common.Quality.nameQuality("Test Show - S01E02 - SD DVD - GROUP")) +# self.assertEqual(common.Quality.HDTV, common.Quality.nameQuality("Test Show - S01E02 - HDTV - GROUP")) +# self.assertEqual(common.Quality.RAWHDTV, common.Quality.nameQuality("Test Show - S01E02 - RawHD - GROUP")) +# self.assertEqual(common.Quality.FULLHDTV, common.Quality.nameQuality("Test Show - S01E02 - 1080p HDTV - GROUP")) +# self.assertEqual(common.Quality.HDWEBDL, common.Quality.nameQuality("Test Show - S01E02 - 720p WEB-DL - GROUP")) +# self.assertEqual(common.Quality.FULLHDWEBDL, common.Quality.nameQuality("Test Show - S01E02 - 1080p WEB-DL - GROUP")) +# self.assertEqual(common.Quality.HDBLURAY, common.Quality.nameQuality("Test Show - S01E02 - 720p BluRay - GROUP")) +# self.assertEqual(common.Quality.FULLHDBLURAY, common.Quality.nameQuality("Test Show - S01E02 - 1080p BluRay - GROUP")) +# self.assertEqual(common.Quality.UNKNOWN, common.Quality.nameQuality("Test Show - S01E02 - Unknown - SiCKBEARD")) if __name__ == '__main__': suite = unittest.TestLoader().loadTestsFromTestCase(QualityTests) diff --git a/updater.py b/updater.py deleted file mode 100644 index 15b1dbedd40f21cd1fd40c852d335e605f0a839d..0000000000000000000000000000000000000000 --- a/updater.py +++ /dev/null @@ -1,101 +0,0 @@ -import subprocess, os, time, sys, os.path, re - -import shutil -import shutil_custom - -shutil.copyfile = shutil_custom.copyfile_custom - -try: - log_file = open('sb-update.log', 'w') -except: - print "Unable to open sb-update.log, not saving output" - log_file = None - -def log(string): - if log_file: - log_file.write(string+'\n') - print string - -def isProcRunning(pid): - """See if a pid is running or not""" - - tasklist_cmd = 'tasklist /FI "PID eq '+str(pid)+'" /FO CSV' - - p = subprocess.Popen(tasklist_cmd, stdout=subprocess.PIPE) - out, err = p.communicate() - - results = out.split('\r\n') - - regex = '".*\\.exe","'+str(pid)+'",("[^"]*",?){3}' - - for cur_line in results: - if re.match(regex, cur_line, re.I): - return True - - return False - -if len(sys.argv) < 3: - log("Invalid call.") - sys.exit() - -try: - - # this should be retrieved from sys.args - pid = sys.argv[1] - - # process to re-launch - sb_executable = sys.argv[2:] - - sb_closed = False - - # try 15 times to make sure it's closed - for i in range(15): - isRunning = isProcRunning(pid) - if isRunning: - time.sleep(5) - continue - else: - sb_closed = True - break - - if not sb_closed: - log("SickRage didn't close, unable to update. You'll have to manually restart it.") - sys.exit() - - sb_root = os.path.dirname(sb_executable[0]) - sb_update_dir = os.path.join(sb_root, 'sb-update') - - # do the update if applicable - if os.path.isdir(sb_update_dir): - # find update dir name - update_dir_contents = os.listdir(sb_update_dir) - if len(update_dir_contents) != 1: - log("Invalid update data, update failed.") - sys.exit() - content_dir = os.path.join(sb_update_dir, update_dir_contents[0]) - - # copy everything from sb_update_dir to sb_root - for dirname, dirnames, filenames in os.walk(content_dir): - dirname = dirname[len(content_dir)+1:] - for curfile in filenames: - if curfile == 'updater.exe': - continue - old_path = os.path.join(content_dir, dirname, curfile) - new_path = os.path.join(sb_root, dirname, curfile) - - if os.path.isfile(new_path): - os.remove(new_path) - os.renames(old_path, new_path) - - if os.path.isdir(sb_update_dir): - shutil.rmtree(sb_update_dir) - - # re-launch SB - p = subprocess.Popen(sb_executable, cwd=os.getcwd()) - -except Exception, e: - log("Exception while updating: "+str(e)) - raise - -if log_file: - log_file.close()