diff --git a/.prow.sh b/.prow.sh index 6977484f..1f501045 100755 --- a/.prow.sh +++ b/.prow.sh @@ -1,8 +1,3 @@ #!/bin/bash set -xeuo pipefail - -# This script is run by prow using the coreos-assembler container. - -make syntax-check -# And disable the container again until we figure out about Prow -> internal -# make container +# Nothing for now diff --git a/Dockerfile.rollup b/Dockerfile.rollup deleted file mode 100644 index 77bacef4..00000000 --- a/Dockerfile.rollup +++ /dev/null @@ -1,16 +0,0 @@ -# This file is used from Jenkinsfile.treecompose to generate -# the "oscontainer" image which has an embedded ostree repo inside. -# It expects "repo" to exist in the current directory. -FROM registry.fedoraproject.org/fedora:28 -ARG OS_VERSION="" -ARG OS_COMMIT="" -LABEL io.openshift.os-version="$OS_VERSION" \ - io.openshift.os-commit="$OS_COMMIT" \ - com.coreos.ostree-commit="$OS_COMMIT" -RUN yum -y install ostree nginx && yum clean all -COPY treecompose/repo /srv/repo -# Keep this in sync with Dockerfile -COPY nginx.conf /etc/nginx/nginx.conf -COPY index.html subdomain.css /srv/repo/ -EXPOSE 8080 -CMD ["nginx", "-c", "/etc/nginx/nginx.conf"] diff --git a/Jenkinsfile.aws-test b/Jenkinsfile.aws-test deleted file mode 100644 index 4460a1c6..00000000 --- a/Jenkinsfile.aws-test +++ /dev/null @@ -1,137 +0,0 @@ -def NODE = "rhcos-jenkins" -// Our primary -def AWS_REGION = "us-east-1" -def API_CI_REGISTRY = "registry.svc.ci.openshift.org" -def OS_NAME = "maipo"; -def OSCONTAINER_IMG = API_CI_REGISTRY + "/rhcos/os-${OS_NAME}" -def OPENSHIFT_URL = "https://api.ci.openshift.org"; - -// We copy tested AMIs to other regions; this -// list is hardcoded right now pending discussion -// with ops about which regions we should target -def OTHER_AWS_REGIONS = ["us-east-2", "us-west-1"] - -// location on the server we'll rsync to/from our $WORKSPACE -def images = "/srv/rhcos/output/images" - -node(NODE) { - stage("Clean workspace") { - step([$class: 'WsCleanup']) - } - checkout scm - utils = load("pipeline-utils.groovy") - - // This job should only be triggered by Jenkinsfile.cloud - utils.define_properties(null) - - if (params.DRY_RUN) { - echo "DRY_RUN set, skipping aws tests and launch permissions" - currentBuild.result = 'NOT_BUILT' - currentBuild.description = '(dry run)' - return - } - - // We're only ever triggered by the cloud job, so we know the latest build is in latest/ - // We immediately resolve it back to the specific images/ dir - def latest_meta, ostree_commit, version - try { - utils.inside_assembler_container("") { - stage("Sync In") { - withCredentials([ - string(credentialsId: params.ARTIFACT_SERVER, variable: 'ARTIFACT_SERVER'), - sshUserPrivateKey(credentialsId: params.ARTIFACT_SSH_CREDS_ID, keyFileVariable: 'KEY_FILE'), - ]) { - utils.rsync_file_in_dest(ARTIFACT_SERVER, KEY_FILE, "${images}/cloud/latest/meta.json", "${WORKSPACE}/meta.json") - latest_meta = readJSON file: "meta.json"; - ostree_commit = latest_meta["ostree-commit"]; - version = latest_meta["ostree-version"]; - // resolve to original dir to avoid races in the next rsync in - def imgv = latest_meta["image-version"] - utils.rsync_file_in_dest(ARTIFACT_SERVER, KEY_FILE, "${images}/cloud/${imgv}/aws-${AWS_REGION}.json", "${WORKSPACE}/aws-${AWS_REGION}.json") - } - } - - // Number of parallel kola tests - def NUM_VMS = "10" - def aws_json - try { - stage("Run Kola tests on intermediate aws image") { - withCredentials([ - [$class: 'AmazonWebServicesCredentialsBinding', credentialsId: params.AWS_CREDENTIALS], - string(credentialsId: params.S3_PRIVATE_BUCKET, variable: 'S3_PRIVATE_BUCKET'), - string(credentialsId: params.AWS_CI_ACCOUNT, variable: 'AWS_CI_ACCOUNT'), - string(credentialsId: params.S3_PUBLIC_BUCKET, variable: 'S3_PUBLIC_BUCKET'), - usernameColonPassword(credentialsId: params.REGISTRY_CREDENTIALS, variable: 'CREDS'), - ]) { - aws_json = readJSON file: "aws-${AWS_REGION}.json"; - def ami_intermediate = aws_json["HVM"]; - - // login to OpenShift + registry and setup container storage - utils.openshift_login("${OPENSHIFT_URL}", "${CREDS}", "rhcos"); - utils.registry_login("${OSCONTAINER_IMG}", "${CREDS}"); - utils.prep_container_storage("${WORKSPACE}"); - - currentBuild.description = "version=${version} ami=${ami_intermediate}"; - sh """ - # Do testing with intermediate aws image passed in by cloud job - if ! kola -b rhcos -p aws --aws-type t2.small --tapfile rhcos-aws.tap --aws-ami ${ami_intermediate} --aws-region ${AWS_REGION} -j ${NUM_VMS} run; then - # if the tests fail, GC the ostree commit tag - oc tag -d os-${OS_NAME}:${ostree_commit} - exit 1 - fi - - # Tests pass, tag the json in the artifact server to a persistent location - # and give launch permissions to OpenShift CI - export AWS_DEFAULT_REGION=${AWS_REGION} - aws ec2 create-tags \ - --resources ${ami_intermediate} \ - --tags Key=rhcos_tag,Value=alpha - aws ec2 modify-image-attribute \ - --image-id ${ami_intermediate} \ - --launch-permission '{"Add":[{"Group":"all"}]}' - # And upload to more regions - ./scripts/ami-copy-regions --source-region ${AWS_REGION} \ - --source-image-id ${ami_intermediate} \ - --name rhcos_dev_${version} \ - --copy-tags rhcos_tag,ostree_version,ostree_commit \ - --regions ${OTHER_AWS_REGIONS.join(',')} \ - --out ${WORKSPACE}/aws.json - - # Upload the json files to a public location - aws s3 cp --acl public-read \ - ${WORKSPACE}/aws-${AWS_REGION}.json \ - s3://${S3_PUBLIC_BUCKET}/aws-${AWS_REGION}-tested.json - aws s3 cp --acl public-read \ - ${WORKSPACE}/aws.json \ - s3://${S3_PUBLIC_BUCKET}/aws-tested.json - - # Tag the image to alpha; GC the ostree commit tag - oc tag os-${OS_NAME}:${ostree_commit} os-${OS_NAME}:alpha - oc tag -d os-${OS_NAME}:${ostree_commit} - """ - } - } - } finally { - sh 'if test -e _kola_temp; then tar -cJf _kola_temp.tar.xz _kola_temp; fi' - archiveArtifacts artifacts: "_kola_temp.tar.xz", allowEmptyArchive: true - archiveArtifacts artifacts: "rhcos-aws.tap", allowEmptyArchive: true - archiveArtifacts artifacts: "*.json", allowEmptyArchive: true - } - - stage("rsync out") { - withCredentials([ - string(credentialsId: params.ARTIFACT_SERVER, variable: 'ARTIFACT_SERVER'), - sshUserPrivateKey(credentialsId: params.ARTIFACT_SSH_CREDS_ID, keyFileVariable: 'KEY_FILE'), - ]) { - utils.rsync_file_out_dest(ARTIFACT_SERVER, KEY_FILE, "${WORKSPACE}/aws-${AWS_REGION}.json", "${images}/aws-${AWS_REGION}-tested.json") - utils.rsync_file_out_dest(ARTIFACT_SERVER, KEY_FILE, "${WORKSPACE}/aws.json", "${images}/aws-tested.json") - } - } - } - } catch (Throwable e) { - currentBuild.result = 'FAILURE' - throw e - } finally { - utils.notify_status_change currentBuild - } -} diff --git a/Jenkinsfile.backup b/Jenkinsfile.backup deleted file mode 100644 index a42e55b5..00000000 --- a/Jenkinsfile.backup +++ /dev/null @@ -1,45 +0,0 @@ -def TIMER = "H/30 * * * *" -def NODE = "rhcos-jenkins" - -def dirs_to_backup = ["rdgo", "images" ]; - -node(NODE) { - def par_stages = [:] - stage("Clean workspace") { - step([$class: 'WsCleanup']) - } - checkout scm - utils = load("pipeline-utils.groovy") - utils.define_properties(TIMER) - - for (dir in dirs_to_backup) { - // Avoid iteration+closure trap - def basetarget = dir; - par_stages["backup-" + basetarget] = { -> stage("Backup " + basetarget) { - utils.inside_assembler_container("") { - def remote = "/srv/rhcos/output/${basetarget}"; - def local = "${WORKSPACE}/${basetarget}"; - stage("Sync In") { - withCredentials([ - string(credentialsId: params.ARTIFACT_SERVER, variable: 'ARTIFACT_SERVER'), - sshUserPrivateKey(credentialsId: params.ARTIFACT_SSH_CREDS_ID, keyFileVariable: 'KEY_FILE'), - ]) { - sh "mkdir -p ${local}" - utils.rsync_dir_in_dest(ARTIFACT_SERVER, KEY_FILE, remote, local) - } - } - - stage("Sync Out") { - withCredentials([ - [$class: 'AmazonWebServicesCredentialsBinding', credentialsId: params.AWS_CREDENTIALS], - ]) { - sh "aws s3 sync --delete ${local}/ s3://rhcos/${basetarget}" - } - } - } - } } } - - // Execute - parallel par_stages; par_stages = [:] -} - diff --git a/Jenkinsfile.cloud b/Jenkinsfile.cloud deleted file mode 100644 index 823cd85e..00000000 --- a/Jenkinsfile.cloud +++ /dev/null @@ -1,262 +0,0 @@ -def TIMER = "H H/3 * * *" -def NODE = "rhcos-jenkins" - -// Are there really other regions? We're sending explorers to find out -def AWS_REGION = "us-east-1" - -// this var conveniently refers to a location on the server as well as the -// local dir we sync to/from -def images = "/srv/rhcos/output/images" - -node(NODE) { - def par_stages = [:] - stage("Clean workspace") { - step([$class: 'WsCleanup']) - } - checkout scm - utils = load("pipeline-utils.groovy") - utils.define_properties(TIMER) - - try { - def manifest = "host-maipo.yaml" - def manifest_data = readYaml file: "${manifest}"; - def ref = manifest_data.ref; - - utils.inside_assembler_container("-v /srv:/srv") { - stage("Sync In") { - withCredentials([ - string(credentialsId: params.ARTIFACT_SERVER, variable: 'ARTIFACT_SERVER'), - sshUserPrivateKey(credentialsId: params.ARTIFACT_SSH_CREDS_ID, keyFileVariable: 'KEY_FILE'), - ]) { - sh "mkdir -p ${images}" - utils.rsync_dir_in(ARTIFACT_SERVER, KEY_FILE, images) - } - - // Also initialize an ostree repo for change detection - withCredentials([ - string(credentialsId: params.OSTREE_INSTALL_URL, variable: 'OSTREE_INSTALL_URL'), - ]) { - sh """ - rm -rf repo && ostree init --repo=repo --mode=bare-user - ostree --repo=repo remote add rhcos --no-gpg-verify ${OSTREE_INSTALL_URL} - ostree --repo=repo pull --mirror --commit-metadata-only rhcos - """ - } - } - - // Check if there's a new version out. - // Really, we should be checksumming e.g. the ks and tdl too. - def latest_commit, last_build_meta, latest_version, force_nocache - stage("Check for Changes") { - latest_commit = utils.sh_capture("ostree --repo=repo rev-parse ${ref}") - latest_version = utils.get_rev_version("repo", "${latest_commit}") - if (fileExists('force-nocache-build')) { - force_nocache = readFile('force-nocache-build').trim(); - } - def previous = "${images}/cloud/latest"; - def previous_meta_path = "${previous}/meta.json"; - // I tried with fileExists before, but that only operates on ${WORKSPACE} - if (sh(script: "stat ${previous_meta_path}>/dev/null", returnStatus: true) == 0) { - // readJSON only operates on the ${WORKSPACE} too - sh "cp --reflink=auto ${previous_meta_path} ${WORKSPACE}/previous-meta.json"; - last_build_meta = readJSON file: "previous-meta.json"; - echo "Previous build: ${last_build_meta}"; - } else { - echo "No previous build."; - } - } - - def previously_built_commit = (last_build_meta != null && latest_commit == last_build_meta["ostree-commit"]); - if (!params.DRY_RUN && previously_built_commit && latest_commit != force_nocache) { - echo "Last built ${latest_version} (${latest_commit}) - no changes" - currentBuild.result = 'SUCCESS' - currentBuild.description = '(No changes)' - return - } - - stage("Prepare Configs") { - withCredentials([ - string(credentialsId: params.OSTREE_INSTALL_URL, variable: 'OSTREE_INSTALL_URL'), - ]) { - sh "sed -i 's,@@OSTREE_INSTALL_URL@@,${OSTREE_INSTALL_URL},' cloud.ks" - sh "sed -i 's,@@OSTREE_INSTALL_REF@@,${ref},' cloud.ks" - } - } - - // Note this runs unprivileged to avoid the virt stack trying to use privileges - // We run in bwrap which sets up a pid namespace +init to ensure qemu is reaped, - // which libvirt relies on. - def imageFile = "rhcos.qcow2" - def imagePath = "/tmp/${imageFile}" - try { - withCredentials([ - string(credentialsId: params.INSTALLER_TREE_URL, variable: 'INSTALLER_TREE_URL')]) { - stage("Running coreos-virt-install") { sh """ - chmod a+rw /dev/kvm - setfacl -m u:builder:rwX ${WORKSPACE} - bwrap --bind / / --dev-bind /dev /dev --proc /proc --unshare-pid runuser -u builder -- coreos-virt-install --dest ${imagePath} --create-disk \ - --console-log-file ${WORKSPACE}/rhcos-qcow2-install.txt \ - --wait=25 --kickstart cloud.ks --location "${INSTALLER_TREE_URL}" - """ - } } - } finally { - archiveArtifacts artifacts: "rhcos-qcow2-install.txt", allowEmptyArchive: true - } - - // Quick kola sanity test - try { - stage("Kola rhcos.basic") { sh """ - kola version - if ! kola -b rhcos --tapfile rhcos-basic.tap --qemu-image ${imagePath} run rhcos.basic; then - cp ${imagePath} ${WORKSPACE} - exit 1 - fi - """ } - } finally { - sh 'tar -cJf _kola_temp.tar.xz _kola_temp' - archiveArtifacts artifacts: "_kola_temp.tar.xz", allowEmptyArchive: true - archiveArtifacts artifacts: "rhcos-basic.tap", allowEmptyArchive: true - archiveArtifacts artifacts: "${imageFile}", allowEmptyArchive: true - } - - // We write this to meta.json - def meta = [:]; - Integer image_genver; - if (previously_built_commit) { - image_genver = Integer.parseInt(last_build_meta["image-genver"]) + 1; - } else { - image_genver = 1; - } - meta["image-genver"] = image_genver; - def img_prefix, commit, version, dirpath, qcow, vmdk, ec2 - stage("Postprocessing") { - // just introspect after the fact to avoid race conditions - // FIXME: Use labels like https://github.com/coreos/coreos-assembler/pull/95 - // But probably better to ditch all of this and use the assembler - commit = utils.sh_capture(""" - LIBGUESTFS_BACKEND=direct virt-cat -a ${imagePath} -m /dev/sda2:/ \ - /ostree/repo/refs/remotes/rhcos/${ref} - """) - - // do this again *after* running imgfac to close race - sh "ostree --repo=repo pull --mirror --depth=0 --commit-metadata-only rhcos ${commit}" - version = utils.get_rev_version("repo", commit) - meta["git-commit"] = utils.sh_capture("git describe --tags --always --abbrev=42"); - meta["ostree-commit"] = commit; - meta["ostree-version"] = version; - meta["image-genver"] = "${image_genver}"; - meta["image-version"] = "${version}-${image_genver}"; - currentBuild.description = "${meta['image-version']} (${commit})" - - dirpath = "${images}/cloud/${meta['image-version']}" - img_prefix = "${dirpath}/rhcos-${version}" - qcow = "${img_prefix}.qcow2" - vmdk = "${img_prefix}.vmdk" - sh "mkdir -p ${dirpath}" - sh "mv ${imagePath} ${qcow}" - - writeFile file: "meta.json", text: groovy.json.JsonOutput.toJson(meta); - archiveArtifacts artifacts: "meta.json"; - sh "cp --reflink=auto ${WORKSPACE}/meta.json ${dirpath}/meta.json"; - } - // These three are generated from the QCOW2 - par_stages["vmdk"] = { -> stage("Generate vmdk") { - sh """coreos-oemid ${qcow} ${vmdk}.tmp vmware - qemu-img convert -f qcow2 -O vmdk ${vmdk}.tmp -o adapter_type=lsilogic,subformat=streamOptimized,compat6 ${vmdk} - rm ${vmdk}.tmp""" - } } - // But note that EC2 goes into workspace, we upload it directly - ec2 = "${WORKSPACE}/rhcos-${version}-aws.vmdk" - par_stages["ec2"] = { -> stage("Generate EC2") { - sh """coreos-oemid ${qcow} ${WORKSPACE}/rhcos-aws.qcow2 ec2 - qemu-img convert -f qcow2 -O vmdk ${WORKSPACE}/rhcos-aws.qcow2 -o adapter_type=lsilogic,subformat=streamOptimized,compat6 ${ec2} - rm ${WORKSPACE}/rhcos-aws.qcow2""" - } } - par_stages["openstack"] = { -> stage("Generate OpenStack") { - def img_openstack = "${img_prefix}-openstack.qcow2" - sh """coreos-oemid ${qcow} ${img_openstack} openstack - gzip ${img_openstack} - ln -sr ${img_openstack}.gz ${dirpath}/rhcos-openstack.qcow2.gz - """ - } } - // Execute parallel group - parallel par_stages; par_stages = [:] - - stage("Finalizing, generate metadata") { - // See https://github.com/openshift/installer/blob/master/Documentation/dev/libvirt-howto.md#13a-rhcos - sh "qemu-img resize ${qcow} +8G" - sh "gzip < ${qcow} > ${img_prefix}-qemu.qcow2.gz" - sh "ln -sr ${img_prefix}-qemu.qcow2.gz ${dirpath}/rhcos-qemu.qcow2.gz" - // Everything above in parallel worked on qcow, we're done with it now - sh "rm ${qcow}" - sh "ln -sfn ${meta['image-version']} ${images}/cloud/latest" - // just keep the last 2 (+ latest symlink) - sh "cd ${images}/cloud && (ls | head -n -3 | xargs -r rm -rf)" - sh """ - rpm-ostree db list --repo=repo ${commit} > /${dirpath}/pkglist.txt - cd ${dirpath} && find . -name '*.gz' -o -name '*.box' -o -name '*.vmdk' | \ - while read f; do - test -f \${f} - sha256sum \${f} | awk '{print \$1}' > \${f}.sha256sum - done - """ - } - - if (params.DRY_RUN) { - echo "DRY_RUN set, skipping push" - currentBuild.result = 'SUCCESS' - currentBuild.description = '(dry run)' - return - } - - stage("Create Intermediate AMI") { - withCredentials([ - [$class: 'AmazonWebServicesCredentialsBinding', credentialsId: params.AWS_CREDENTIALS], - string(credentialsId: params.S3_PRIVATE_BUCKET, variable: 'S3_PRIVATE_BUCKET'), - string(credentialsId: params.AWS_CI_ACCOUNT, variable: 'AWS_CI_ACCOUNT'), - ]) { - sh """ - amijson=${dirpath}/aws-${AWS_REGION}.json - ore aws upload --region ${AWS_REGION} \ - --ami-name 'rhcos_dev_${version}' \ - --ami-description 'Red Hat CoreOS ${version} (${commit})' \ - --bucket 's3://${S3_PRIVATE_BUCKET}/rhcos/cloud' \ - --file ${ec2} \ - --name "rhcos_dev_${version}" \ - --delete-object | tee \${amijson} - rm ${ec2} - - export AWS_DEFAULT_REGION=${AWS_REGION} - - # Add the version and commit as tags to both the AMI and the underlying snapshot. - # We should teach mantle to apply extra tags. - ami=\$(jq -r .HVM \${amijson}) - snapshot=\$(jq -r .SnapshotID \${amijson}) - aws ec2 create-tags \ - --resources \${ami} \${snapshot} \ - --tags Key=ostree_commit,Value=${commit} \ - Key=ostree_version,Value=${version} - """ - } - } - - par_stages["rsync-out"] = { -> stage("rsync out") { - withCredentials([ - string(credentialsId: params.ARTIFACT_SERVER, variable: 'ARTIFACT_SERVER'), - sshUserPrivateKey(credentialsId: params.ARTIFACT_SSH_CREDS_ID, keyFileVariable: 'KEY_FILE'), - ]) { - utils.rsync_dir_out(ARTIFACT_SERVER, KEY_FILE, images) - } - } } - parallel par_stages; par_stages = [:] - - // Build the job responsible for testing and publishing the ami - build job: 'coreos-rhcos-aws-test', wait: false - } - } catch (Throwable e) { - currentBuild.result = 'FAILURE' - throw e - } finally { - utils.notify_status_change currentBuild - } -} diff --git a/Jenkinsfile.treecompose b/Jenkinsfile.treecompose deleted file mode 100644 index 72af0706..00000000 --- a/Jenkinsfile.treecompose +++ /dev/null @@ -1,148 +0,0 @@ -def TIMER = "H/30 * * * *" -def NODE = "rhcos-jenkins" -def API_CI_REGISTRY = "registry.svc.ci.openshift.org" -def OS_NAME = "maipo"; -def OSCONTAINER_IMG = API_CI_REGISTRY + "/rhcos/os-${OS_NAME}" -def OPENSHIFT_URL = "https://api.ci.openshift.org"; -def COMPOSEFLAGS = ""; - -// We write to this one for now -def artifact_repo = "/srv/rhcos/output/repo" - -node(NODE) { - def par_stages = [:] - stage("Clean workspace") { - step([$class: 'WsCleanup']) - } - checkout scm - utils = load("pipeline-utils.groovy") - utils.define_properties(TIMER) - - try { - def manifest = "host-${OS_NAME}.yaml" - def manifest_data = readYaml file: "${manifest}"; - // TODO - stop using the ref in favor of oscontainer:// pivot - def ref = manifest_data.ref; - def version_prefix = manifest_data["mutate-os-release"]; - - utils.inside_assembler_container("") { - def treecompose_workdir = "${WORKSPACE}/treecompose"; - def repo = "${treecompose_workdir}/repo"; - - stage("Prepare configuration") { - utils.prepare_configuration(); - } - - stage("Pull and run oscontainer") { - withCredentials([ - usernameColonPassword(credentialsId: params.REGISTRY_CREDENTIALS, variable: 'CREDS'), - ]) { - utils.openshift_login("${OPENSHIFT_URL}", "${CREDS}", "rhcos") - utils.registry_login("${OSCONTAINER_IMG}", "${CREDS}") - sh """ - if ! skopeo inspect docker://${OSCONTAINER_IMG}:buildmaster; then - ./scripts/pull-mount-oscontainer ${treecompose_workdir} ${OSCONTAINER_IMG}:latest - else - ./scripts/pull-mount-oscontainer ${treecompose_workdir} ${OSCONTAINER_IMG}:buildmaster - fi - """ - } - } - - def last_build_version, force_nocache - stage("Check for Changes") { sh """ - rpm-ostree compose tree --dry-run --repo=${repo} --touch-if-changed=$WORKSPACE/build.stamp ${manifest} - """ - last_build_version = utils.get_rev_version(repo, ref) - if (fileExists('force-nocache-build')) { - force_nocache = readFile('force-nocache-build').trim(); - } - } - - if (!params.DRY_RUN && !fileExists('build.stamp') && last_build_version != force_nocache) { - echo "No changes." - currentBuild.result = 'SUCCESS' - currentBuild.description = '(No changes)' - return - } - - // Note that we don't keep history in the ostree repo, so we - // delete the ref head (so rpm-ostree won't add a parent) and - // then we do a repo prune after. - def composeMeta; - try { - stage("Compose Tree") { - sh """./scripts/run-treecompose ${repo} ${ref} ${manifest} ${COMPOSEFLAGS} --add-metadata-string=version=${version_prefix}.${env.BUILD_NUMBER}""" - composeMeta = readJSON file: "compose.json" - currentBuild.description = "🆕 ${composeMeta.version} (commit ${composeMeta.commit})"; - } - } finally { - archiveArtifacts artifacts: "compose.json" - archiveArtifacts artifacts: "pkg-diff.txt", allowEmptyArchive: true - } - - // This takes OSTree repo and copies it out of the original - // container into our working directory, which then gets put - // into a new container image. This is slow, but it's hard to do better - // with Docker/OCI images. Ideally there'd be a way to "bind mount" content - // into the build environment rather than copying. - stage("Prepare repo copy") { sh """ - original_repo=\$(readlink ${treecompose_workdir}/repo) - rm ${repo} - cp -a --reflink=auto \${original_repo} ${repo} - podman kill oscontainer - podman rm oscontainer - """ } - - stage("Build new container") { sh """ - podman build --build-arg OS_VERSION=${composeMeta.version} \ - --build-arg OS_COMMIT=${composeMeta.commit} \ - -t ${OSCONTAINER_IMG}:buildmaster \ - -f ${WORKSPACE}/Dockerfile.rollup ${WORKSPACE} - podman tag ${OSCONTAINER_IMG}:buildmaster ${OSCONTAINER_IMG}:${composeMeta.commit} - """ } - - if (params.DRY_RUN) { - echo "DRY_RUN set, skipping push" - currentBuild.result = 'SUCCESS' - currentBuild.description = '(dry run)' - return - } - - stage("Push container") { sh """ - podman push ${OSCONTAINER_IMG}:buildmaster - skopeo inspect docker://${OSCONTAINER_IMG}:buildmaster | jq '.Digest' > imgid.txt - """ - def cid = readFile('imgid.txt').trim().replaceAll('"',''); - // tag the image by SHA256 using OpenShift means - sh """oc tag os-${OS_NAME}@${cid} os-${OS_NAME}:${composeMeta.commit}""" - currentBuild.description = "🆕 ${OSCONTAINER_IMG}@${cid} (${composeMeta.version})"; - } - - stage("rsync out") { - withCredentials([ - string(credentialsId: params.ARTIFACT_SERVER, variable: 'ARTIFACT_SERVER'), - sshUserPrivateKey(credentialsId: params.ARTIFACT_SSH_CREDS_ID, keyFileVariable: 'KEY_FILE'), - ]) { - sh """ - /usr/app/ostree-releng-scripts/rsync-repos \ - --dest ${ARTIFACT_SERVER}:${artifact_repo} --src=${repo}/ \ - --rsync-opt=--stats --rsync-opt=-e \ - --rsync-opt='ssh -i ${KEY_FILE} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' - """ - } } - - stage("Cleanup") { sh """ - rm ${treecompose_workdir} -rf - """ } - - // Trigger downstream jobs - build job: 'coreos-rhcos-cloud', wait: false - } - } catch (Throwable e) { - currentBuild.result = 'FAILURE' - throw e - } finally { - utils.notify_status_change currentBuild - } -} diff --git a/Makefile b/Makefile deleted file mode 100644 index 54f46f32..00000000 --- a/Makefile +++ /dev/null @@ -1,80 +0,0 @@ -# Use for e.g. --cache-only -COMPOSEFLAGS ?= -ROOT_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) -CACHE_ARGS := $(shell if test -d cache; then echo $(shell pwd)/cache; fi) - -REPO ?= /srv/rhcos/repo -INSTALLER_TREE_URL ?= https://download.fedoraproject.org/pub/fedora/linux/releases/28/Everything/x86_64/os/ -OSTREE_INSTALL_URL ?= ${REPO} -REF ?= openshift/3.10/x86_64/os - -all: rpmostree-compose - -.PHONY: syntax-check -syntax-check: - @set -e; for jsonfile in $$(find ${ROOT_DIR} -name '*.json'); do \ - echo -n "Checking JSON syntax for $${jsonfile}... "; \ - jq < $${jsonfile} . >/dev/null; \ - echo "OK"; \ - done - @set -e; for yamlfile in $$(find ${ROOT_DIR} -name '*.yaml' -o -name '*.yml'); do \ - echo -n "Checking YAML syntax for $${yamlfile}... "; \ - python3 -c "import yaml; yaml.safe_load(open('$${yamlfile}'))"; \ - echo "OK"; \ - done - -.PHONY: repo-refresh -repo-refresh: - ${ROOT_DIR}/generate-openshift-repo - -.PHONY: init-ostree-repo -init-ostree-repo: - ostree --repo=build-repo init --mode=bare-user - ostree --repo=repo init --mode=archive - -.PHONY: check-tools -check-tools: - which ostree - which rpm-ostree - which rpmdistro-gitoverlay - which imagefactory - which qemu-img - which mock - - -# Runs all targets needed to create an image -.PHONY: build-rhcos -build-rhcos: check-tools clean repo-refresh rdgo rpmostree-compose os-image - -# Cleans up -.PHONY: clean -clean: - rm -rf build build-0 build-1 src snapshot ${REPO} - -# Pulls sources, builds packages, and creates a dnf repo for use -.PHONY: rdgo -rdgo: - rpmdistro-gitoverlay init - rpmdistro-gitoverlay resolve --fetch-all - rpmdistro-gitoverlay build - - -# Composes an ostree -.PHONY: rpmostree-compose -rpmostree-compose: ${ROOT_DIR}/openshift.repo init-ostree-repo - mkdir -p ${REPO} - ostree init --repo=${REPO} --mode=archive - if test -d cache; then cachedir='--cachedir $(shell pwd)/cache'; fi && \ - cd ${ROOT_DIR} && set -x && \ - rpm-ostree compose tree $(COMPOSEFLAGS) $${cachedir:-} --repo=$(shell pwd)/build-repo host-maipo.yaml - ostree --repo=repo pull-local build-repo - ostree --repo=repo summary -u - -# Makes an image using the ostree -.PHONY: os-image -os-image: - ostree --repo=repo remote add rhcos --no-gpg-verify ${OSTREE_INSTALL_URL} - ostree --repo=repo pull --mirror --commit-metadata-only rhcos - sed -i 's,@@OSTREE_INSTALL_URL@@,${OSTREE_INSTALL_URL},' cloud.ks - sed -i 's,@@OSTREE_INSTALL_REF@@,${REF},' cloud.ks - coreos-virt-install --dest rhcos-devel.qcow2 --create-disk --kickstart cloud.ks --location $(INSTALLER_TREE_URL) diff --git a/README-development.md b/README-development.md deleted file mode 100644 index 61cd4dd8..00000000 --- a/README-development.md +++ /dev/null @@ -1,91 +0,0 @@ -# Operating System - -## Prerequisites - -### Usually packaged by operating systems - -- git -- ostree -- rpm-ostree -- qemu-img -- fedpkg -- mock - -### May need to be built from source - -- [rpmdistro-gitoverlay](https://github.com/projectatomic/rpmdistro-gitoverlay) -- [imagefactory-plugins-TinMan](https://github.com/redhat-imaging/imagefactory) - -## Building - -NOTE: this is not actually how the pipeline builds -artifacts. The canonical way to build RHCOS are in the -`Jenkinsfile.*` pipeline files. The basic idea of `rdgo`, -`rpm-ostree compose tree`, then `imagefactory` is the same -though. - -Right now, each of the `make` targets below are -"independent" of each other, rather than one feeding off the -output of the previous. So additional work is required to -re-use content. - -Correspondingly, you don't have to run all of the targets. -E.g. running `make rpmostree-compose` by default will use -the latest RPMs. To make it instead use the RPMs from a -`make rdgo`, one must create a repo file pointing to rdgo's -`build/` dir and add the repo name to `host.yaml`. - -- Clone `openshift/os` -- Move into the cloned repo -- Build packages from source repos: `make rdgo` -- Make the ostree: ``make rpmostree-compose`` - - Note that this will copy any missing RPM-GPG keys from - this repo to your environment's `/etc/pki/rpm-gpg/`. -- Make the qcow2: `make os-image` - - Requires virtualization. For simplicity, it's easier - to run this outside a container rather than inside. - See also - https://github.com/cgwalters/coreos-assembler/issues/7. - - This takes a `OSTREE_INSTALL_URL` arg which should be - a URL to either the internal RHCOS OSTree repo or a - repo you previously built with `make - rpmostree-compose`. - - In many cases, it's much easier to instead build an - OSTree and then use an existing RHCOS image and - `rpm-ostree rebase` to the built OSTree. You only need - to build images if e.g. you make modifications to - `cloud.ks` or the TDL. (For ignition, one can force it - to rerun after the first boot by playing with the - kernel cmdline, deleting `/etc/machine-id`, etc...) - -# Container Image - -This repository uses [https://docs.docker.com/develop/develop-images/multistage-build/](multi-stage) builds. -If you're using Project Atomic/RHEL Docker, your best bet is to build [OpenShift imagebuilder](https://github.com/openshift/imagebuilder) -docker. - -If you're going to iterate a lot on the host, it's recommended to stand up -a persistent "pet" development container, install `rpm-ostree` inside that, -as well as persistent OSTree repositories. - -You'll also want to use the `--cachedir` argument to avoid repeatedly -downloading RPMs. More information in -the [rpm-ostree docs](https://github.com/projectatomic/rpm-ostree/blob/master/docs/manual/compose-server.md). - -Example setup (in a container, though /srv should be a persistent mount) ---- - -``` -# mkdir -p /srv/origin-os -# cd /srv/origin-os -# mkdir cache -# git clone https://github.com/openshift/os (or symlink it from your user's directory) -# (cd os && make repo-refresh) -# ln -s os/Makefile . -# make -``` - -Iterating more quickly with `--cache-only`: -``` -# make COMPOSEFLAGS=--cache-only -``` diff --git a/atomic-centos-continuous.repo b/atomic-centos-continuous.repo deleted file mode 100644 index 30aede5c..00000000 --- a/atomic-centos-continuous.repo +++ /dev/null @@ -1,5 +0,0 @@ -[atomic-centos-continuous] -name=CentOS OSTree bleeding edge -baseurl=https://ci.centos.org/artifacts/sig-atomic/centos-continuous/rdgo/build/ -enabled=1 -gpgcheck=0 diff --git a/cloud.ks b/cloud.ks deleted file mode 100644 index a6ac31f8..00000000 --- a/cloud.ks +++ /dev/null @@ -1,66 +0,0 @@ -# This line is interpreted by coreos-virt-install -#--coreos-virt-install-disk-size-gb: 8 -text -lang en_US.UTF-8 -keyboard us -timezone --utc Etc/UTC -auth --useshadow --passalgo=sha512 -selinux --enforcing -rootpw --lock --iscrypted locked -# create core user for now -# https://github.com/openshift/os/issues/96 -user --name=core --groups='wheel,sudo,adm,systemd-journal' - -# Explicitly disable firewall since cloud providers generally provide -# higher level firewall constructs (i.e. security groups). -firewall --disabled - -network --bootproto=dhcp --onboot=on -services --enabled=sshd -services --disabled=network,avahi-daemon - -zerombr -clearpart --initlabel --all -# Add the following to kernel boot args: -# - ip=dhcp # how to get network -# - rd.neednet=1 # tell dracut we need network -# - $coreos_firstboot # This is actually a GRUB variable -bootloader --timeout=1 --append="no_timer_check console=ttyS0,115200n8 console=tty0 net.ifnames=0 biosdevname=0 ip=eth0:dhcp rd.neednet=1 rw $coreos_firstboot" - -part /boot --size=300 --fstype="xfs" --label=boot -part / --size=3000 --fstype="xfs" --label=root --grow - -ostreesetup --nogpg --osname=rhcos --remote=rhcos --url=@@OSTREE_INSTALL_URL@@ --ref=@@OSTREE_INSTALL_REF@@ - - -reboot - -%post --erroronfail - -# https://github.com/dustymabe/ignition-dracut/pull/12 -touch /boot/coreos-firstboot - -# Remove any persistent NIC rules generated by udev -rm -vf /etc/udev/rules.d/*persistent-net*.rules - -# simple eth0 config, again not hard-coded to the build hardware -cat < /etc/sysconfig/network-scripts/ifcfg-eth0 -DEVICE="eth0" -BOOTPROTO="dhcp" -ONBOOT="yes" -TYPE="Ethernet" -PERSISTENT_DHCLIENT="yes" -NM_CONTROLLED="yes" -EOF - -# Anaconda is writing a /etc/resolv.conf from the generating environment. -# The system should start out with an empty file. -truncate -s 0 /etc/resolv.conf - -# clean-up -echo "Removing random-seed so it's not the same in every image." -rm -f /var/lib/random-seed - -echo "Removing /root/anaconda-ks.cfg" -rm -f /root/anaconda-ks.cfg -%end diff --git a/coreos-metadata.repo b/coreos-metadata.repo deleted file mode 100644 index e7a63ac6..00000000 --- a/coreos-metadata.repo +++ /dev/null @@ -1,10 +0,0 @@ -[lucab-rhcos-coreos-metadata] -name=Copr repo for rhcos-coreos-metadata owned by lucab -baseurl=https://copr-be.cloud.fedoraproject.org/results/lucab/rhcos-coreos-metadata/epel-7-$basearch/ -type=rpm-md -skip_if_unavailable=True -gpgcheck=1 -gpgkey=https://copr-be.cloud.fedoraproject.org/results/lucab/rhcos-coreos-metadata/pubkey.gpg -repo_gpgcheck=0 -enabled=1 -enabled_metadata=1 \ No newline at end of file diff --git a/cri-o-tested.repo b/cri-o-tested.repo deleted file mode 100644 index e6c5f9f8..00000000 --- a/cri-o-tested.repo +++ /dev/null @@ -1,10 +0,0 @@ -[cri-o-tested] -name=RHEL tested cri-o repo with dependencies -baseurl=https://mirror.ops.rhcloud.com/enterprise/rhel/cri-o-tested/3.11/x86_64/os/ -type=rpm-md -skip_if_unavailable=True -gpgcheck=0 -enabled=1 -sslverify=0 -sslclientkey=WORKSPACE/ops-mirror.pem -sslclientcert=WORKSPACE/ops-mirror.pem diff --git a/generate-openshift-repo b/generate-openshift-repo deleted file mode 100755 index 91581980..00000000 --- a/generate-openshift-repo +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -set -xeuo pipefail - -LATEST_OPENSHIFT_REPO=`curl https://storage.googleapis.com/origin-ci-test/releases/openshift/origin/master/.latest-rpms` - -echo "[openshift] -name=openshift -baseurl=${LATEST_OPENSHIFT_REPO} -type=rpm -enabled=1 -gpgcheck=0" > openshift.repo diff --git a/group b/group deleted file mode 100644 index 75b0d4f5..00000000 --- a/group +++ /dev/null @@ -1,44 +0,0 @@ -root:x:0: -bin:x:1: -daemon:x:2: -sys:x:3: -adm:x:4: -tty:x:5: -disk:x:6: -lp:x:7: -mem:x:8: -kmem:x:9: -wheel:x:10: -cdrom:x:11: -mail:x:12: -man:x:15: -sudo:x:16: -dialout:x:18: -floppy:x:19: -games:x:20: -tape:x:30: -video:x:39: -ftp:x:50: -lock:x:54: -audio:x:63: -nobody:x:99: -users:x:100: -utmp:x:22: -utempter:x:35: -ssh_keys:x:999: -systemd-journal:x:190: -dbus:x:81: -polkitd:x:998: -etcd:x:997: -dip:x:40: -cgred:x:996: -tss:x:59: -avahi-autoipd:x:170: -rpc:x:32: -sssd:x:993: -dockerroot:x:986: -rpcuser:x:29: -nfsnobody:x:65534: -kube:x:994: -sshd:x:74: -chrony:x:992: \ No newline at end of file diff --git a/host-base.yaml b/host-base.yaml deleted file mode 100644 index 75e7fe7f..00000000 --- a/host-base.yaml +++ /dev/null @@ -1,175 +0,0 @@ -install-langs: - - en_US -documentation: false -# This should really be the default... -boot_location: new -# See https://pagure.io/fedora-atomic/pull-request/62 -tmp-is-dir: true -initramfs-args: - - "--no-hostonly" - - "--add" - - "iscsi" - - "ignition" -# https://github.com/projectatomic/rpm-ostree/pull/1425 -machineid-compat: false -postprocess: - - | - #!/usr/bin/env bash - set -xeo pipefail - - # See machineid-compat in host-base.yaml. - # Since that makes presets run on boot, we need to have our defaults in /usr - ln -sfr /usr/lib/systemd/system/{multi-user,default}.target - - # The canonical copy of this is in fedora-coreos-config. If - # making changes, please do them there first! - cat > /usr/libexec/coreos-growpart << 'EOF' - #!/bin/bash - set -euo pipefail - path=$1 - shift - majmin=$(findmnt -nvr -o MAJ:MIN $path) - devpath=$(realpath /sys/dev/block/$majmin) - partition=$(cat $devpath/partition) - parent_path=$(dirname $devpath) - parent_device=/dev/$(basename ${parent_path}) - # TODO: make this idempotent, and don't error out if - # we can't resize. - growpart ${parent_device} ${partition} || true - xfs_growfs /sysroot # this is already idempotent - touch /var/lib/coreos-growpart.stamp - EOF - chmod a+x /usr/libexec/coreos-growpart - - cat > /usr/lib/systemd/system/coreos-growpart.service <<'EOF' - [Unit] - ConditionPathExists=!/var/lib/coreos-growpart.stamp - Before=sshd.service - [Service] - ExecStart=/usr/libexec/coreos-growpart / - RemainAfterExit=yes - [Install] - WantedBy=multi-user.target - EOF - cat >/usr/lib/systemd/system-preset/42-coreos-growpart.preset << EOF - enable coreos-growpart.service - EOF - - # Persistent journal by default, because Atomic doesn't have syslog - echo 'Storage=persistent' >> /etc/systemd/journald.conf - - # See: https://bugzilla.redhat.com/show_bug.cgi?id=1051816 - # and: https://bugzilla.redhat.com/show_bug.cgi?id=1186757 - # Keep this in sync with the `install-langs` in the treefile JSON - KEEPLANGS=" - en_US - " - # The loops below are too spammy otherwise... - set +x - # Filter out locales from glibc which aren't UTF-8 and in the above set. - # TODO: https://github.com/projectatomic/rpm-ostree/issues/526 - localedef --list-archive | while read locale; do - lang=${locale%%.*} - lang=${lang%%@*} - if [[ $locale != *.utf8 ]] || ! grep -q "$lang" <<< "$KEEPLANGS"; then - localedef --delete-from-archive "$locale" - fi - done - - set -x - - # Rebuild locales - cp -f /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl - build-locale-archive - - # https://github.com/openshift/os/issues/96 - # sudo group https://github.com/openshift/os/issues/96 - echo '%sudo ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/coreos-sudo-group - - # Nuke network.service from orbit - # https://github.com/openshift/os/issues/117 - rm -rf /etc/rc.d/init.d/network /etc/rc.d/rc*.d/*network - - # And readahead https://bugzilla.redhat.com/show_bug.cgi?id=1594984 - # It's long dead upstream, we definitely don't want it. - rm -f /usr/lib/systemd/systemd-readahead /usr/lib/systemd/system/systemd-readahead-* - - # We're not using resolved yet - rm -f /usr/lib/systemd/system/systemd-resolved.service - - # Let's have a non-boring motd, just like CL (although theirs is more subdued - # nowadays compared to early versions with ASCII art). One thing we do here - # is add --- as a "separator"; the idea is that any "dynamic" information should - # be below that. - cat > /etc/motd < - - - - OSTree repo service - - - - - -
-

Welcome to the OSTree update service.

-

- This service provides the latest OSTree repo within an OpenShift cluster. You may also view the - OSTree repo directly. -

-

Using this container in a cluster

-
-        $ ssh root@NODE_HOST
-        $ ostree remote add --no-gpg-verify os-svc http://os-content.namespace.svc:8080/
-        $ rpm-ostree rebase -r os-svc:openshift/3.10/x86_64/os
-
-        # wait, SSH back in
-        $ openshift version
-        
- -

Found a bug?

- If so, please report it using this link. -
- - - - - - diff --git a/maipo.repo b/maipo.repo deleted file mode 100644 index f22b0491..00000000 --- a/maipo.repo +++ /dev/null @@ -1,41 +0,0 @@ -[maipo-server] -enabled=1 -baseurl=http://pulp.dist.prod.ext.phx2.redhat.com/content/dist/rhel/server/7/7Server/x86_64/os/ -metadata_expire=1m -gpgcheck=0 -gpgkey=file:///usr/share/distribution-gpg-keys/redhat/RPM-GPG-KEY-redhat7-release - -[maipo-server-optional] -enabled=1 -baseurl=http://pulp.dist.prod.ext.phx2.redhat.com/content/dist/rhel/server/7/7Server/x86_64/optional/os/ -metadata_expire=1m -gpgcheck=0 -gpgkey=file:///usr/share/distribution-gpg-keys/redhat/RPM-GPG-KEY-redhat7-release - -[maipo-server-extras] -enabled=1 -baseurl=http://pulp.dist.prod.ext.phx2.redhat.com/content/dist/rhel/server/7/7Server/x86_64/extras/os/ -metadata_expire=1m -gpgcheck=0 -gpgkey=file:///usr/share/distribution-gpg-keys/redhat/RPM-GPG-KEY-redhat7-release - -[maipo-atomic] -enabled=1 -baseurl=http://cdn.stage.redhat.com/content/dist/rhel/atomic/7/7Server/x86_64/os/ -metadata_expire=1m -gpgcheck=1 -gpgkey=file:///usr/share/distribution-gpg-keys/redhat/RPM-GPG-KEY-redhat7-release - -[maipo-ceph-tools-2] -enabled=1 -baseurl=http://pulp.dist.prod.ext.phx2.redhat.com/content/dist/rhel/server/7/7Server/x86_64/ceph-tools/2/os/ -metadata_expire=1m -gpgcheck=1 -gpgkey=file:///usr/share/distribution-gpg-keys/redhat/RPM-GPG-KEY-redhat7-release - -[maipo-glusterfs] -enabled=1 -baseurl=http://pulp.dist.prod.ext.phx2.redhat.com/content/dist/rhel/server/7/7Server/x86_64/rhs-client/os/ -metadata_expire=1m -gpgcheck=1 -gpgkey=file:///usr/share/distribution-gpg-keys/redhat/RPM-GPG-KEY-redhat7-release diff --git a/nginx.conf b/nginx.conf deleted file mode 100644 index 2c5f13cc..00000000 --- a/nginx.conf +++ /dev/null @@ -1,57 +0,0 @@ -user nginx; -worker_processes auto; -daemon off; -error_log /dev/stdout info; -pid /run/nginx.pid; - -# Load dynamic modules. See /usr/share/nginx/README.dynamic. -include /usr/share/nginx/modules/*.conf; - -events { - worker_connections 1024; -} - -http { - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - - access_log /dev/stdout main; - - sendfile on; - tcp_nopush on; - tcp_nodelay on; - keepalive_timeout 65; - types_hash_max_size 2048; - - include /etc/nginx/mime.types; - default_type application/octet-stream; - - # Load modular configuration files from the /etc/nginx/conf.d directory. - # See http://nginx.org/en/docs/ngx_core_module.html#include - # for more information. - include /etc/nginx/conf.d/*.conf; - - server { - listen 8080 default_server; - listen [::]:8080 default_server; - server_name _; - root /srv/repo; - - # Load configuration files for the default server block. - include /etc/nginx/default.d/*.conf; - - location / { - } - - error_page 404 /404.html; - location = /40x.html { - } - - error_page 500 502 503 504 /50x.html; - location = /50x.html { - } - } -} - - diff --git a/ootpa.repo.in b/ootpa.repo.in deleted file mode 100644 index d05ca655..00000000 --- a/ootpa.repo.in +++ /dev/null @@ -1,17 +0,0 @@ -[ootpa-baseos] -id=ootpa-baseos -baseurl=@OOTPA_COMPOSE@/BaseOS/$basearch/os -enabled=1 -gpgcheck=0 - -[ootpa-appstream] -id=ootpa-appstream -baseurl=@OOTPA_COMPOSE@/AppStream/$basearch/os -enabled=1 -gpgcheck=0 - -[ootpa-buildroot] -id=ootpa-buildroot -baseurl=@OOTPA_BUILDROOT_COMPOSE@/Buildroot/$basearch/os -enabled=1 -gpgcheck=0 diff --git a/passwd b/passwd deleted file mode 100644 index 7a569082..00000000 --- a/passwd +++ /dev/null @@ -1,26 +0,0 @@ -root:x:0:0:root:/root:/bin/bash -bin:x:1:1:bin:/bin:/sbin/nologin -daemon:x:2:2:daemon:/sbin:/sbin/nologin -adm:x:3:4:adm:/var/adm:/sbin/nologin -lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin -sync:x:5:0:sync:/sbin:/bin/sync -shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown -halt:x:7:0:halt:/sbin:/sbin/halt -mail:x:8:12:mail:/var/spool/mail:/sbin/nologin -operator:x:11:0:operator:/root:/sbin/nologin -games:x:12:100:games:/usr/games:/sbin/nologin -ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin -nobody:x:99:99:Nobody:/:/sbin/nologin -dbus:x:81:81:System message bus:/:/sbin/nologin -polkitd:x:999:998:User for polkitd:/:/sbin/nologin -etcd:x:998:997:etcd user:/var/lib/etcd:/sbin/nologin -tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin -avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin -rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin -sssd:x:995:993:User for sssd:/:/sbin/nologin -dockerroot:x:997:986:Docker User:/var/lib/docker:/sbin/nologin -rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin -nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin -kube:x:996:994:Kubernetes user:/:/sbin/nologin -sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin -chrony:x:994:992::/var/lib/chrony:/sbin/nologin \ No newline at end of file diff --git a/pipeline-utils.groovy b/pipeline-utils.groovy deleted file mode 100644 index d26b64cb..00000000 --- a/pipeline-utils.groovy +++ /dev/null @@ -1,248 +0,0 @@ -/* This is sourced by the various Jenkins pipeline files. It - * provides some commonly used functions. - */ - -// let's try not to use env vars here to keep things -// decoupled and easier to grok - -def define_properties(timer) { - - // Name your test jobs something not starting with rhcos- - def developmentPipeline = !env.JOB_NAME.startsWith("coreos-rhcos-"); - - if (developmentPipeline) - timer = null; - - echo("Development pipeline: ${developmentPipeline}"); - - /* There's a subtle gotcha here. Don't use `env.$PARAM`, but `params.$PARAM` - * instead. The former will *not* be set on the first run, since the - * parameters are not set yet. The latter will be set on the first run as - * soon as the below is executed. See: - * https://issues.jenkins-ci.org/browse/JENKINS-40574 */ - properties([ - pipelineTriggers(timer == null ? [] : [cron(timer)]), - parameters([ - credentials(name: 'ARTIFACT_SSH_CREDS_ID', - credentialType: 'com.cloudbees.jenkins.plugins.sshcredentials.impl.BasicSSHUserPrivateKey', - description: "SSH key for artifact server.", - defaultValue: 'a5990862-8650-411c-9c19-049ee09344e5', - required: true), - credentials(name: 'AWS_CREDENTIALS', - credentialType: 'com.cloudbees.jenkins.plugins.awscredentials.AWSCredentialsImpl', - description: "AWS credentials.", - defaultValue: 'd08c733e-63e0-48f4-a2c4-4e060068f94e', - required: true), - credentials(name: 'AWS_CI_ACCOUNT', - credentialType: 'org.jenkinsci.plugins.plaincredentials.impl.StringCredentialsImpl', - description: "OpenShift AWS CI root account number.", - defaultValue: '4d186169-c856-4da0-bd9e-0c976c264e83', - required: true), - credentials(name: 'REGISTRY_CREDENTIALS', - credentialType: 'com.cloudbees.plugins.credentials.impl.UsernamePasswordCredentialsImpl', - description: "Credentials for Docker registry.", - defaultValue: 'e3fd566b-46c1-44e4-aec9-bb59214c1926', - required: true), - credentials(name: 'OPENSHIFT_MIRROR_CREDENTIALS_FILE', - credentialType: 'org.jenkinsci.plugins.plaincredentials.impl.FileCredentialsImpl', - description: "OpenShift shared-secrets mirror cred as file.", - defaultValue: '299ad25c-f8d1-4f56-9f00-06a85490321a', - required: true), - // Past here, we're just using parameters as a way to avoid hardcoding internal values; they - // are not actually secret. - booleanParam(name: 'DRY_RUN', defaultValue: developmentPipeline, description: 'If true, do not push changes'), - credentials(name: 'ARTIFACT_SERVER', - credentialType: 'org.jenkinsci.plugins.plaincredentials.impl.StringCredentialsImpl', - description: "(not secret) Server used to push/receive built artifacts.", - defaultValue: 'c051c78a-7210-4dec-92de-6f51616aac79', - required: true), - credentials(name: 'S3_PRIVATE_BUCKET', - credentialType: 'org.jenkinsci.plugins.plaincredentials.impl.StringCredentialsImpl', - description: "(not secret) Private S3 bucket to use when uploading AMIs.", - defaultValue: '5c9571a2-c492-421f-b506-ba469afffc10', - required: true), - credentials(name: 'S3_PUBLIC_BUCKET', - credentialType: 'org.jenkinsci.plugins.plaincredentials.impl.StringCredentialsImpl', - description: "(not secret) Public S3 bucket to push public files.", - defaultValue: '17f001fc-6b07-4233-aee2-3e8448459cf5', - required: true), - credentials(name: 'OSTREE_INSTALL_URL', - credentialType: 'org.jenkinsci.plugins.plaincredentials.impl.StringCredentialsImpl', - description: "(not secret) Remote OSTree repo URL to install from when running imagefactory.", - defaultValue: '2d6637ef-7f53-4ee2-bd35-7865908560c7', - required: true), - credentials(name: 'INSTALLER_TREE_URL', - credentialType: 'org.jenkinsci.plugins.plaincredentials.impl.StringCredentialsImpl', - description: "(not secret) Local installer tree mirror to use when running imagefactory.", - defaultValue: '50db8fac-f9d8-44e1-af0f-be29325a2896', - required: true), - credentials(name: 'OOTPA_COMPOSE', - credentialType: 'org.jenkinsci.plugins.plaincredentials.impl.StringCredentialsImpl', - description: "(not secret) URL for compose of ootpa base/appstream content", - defaultValue: 'fc28db5f-62cc-4386-866d-ea69d2088410', - required: true), - credentials(name: 'OOTPA_BUILDROOT_COMPOSE', - credentialType: 'org.jenkinsci.plugins.plaincredentials.impl.StringCredentialsImpl', - description: "(not secret) URL for compose of ootpa buildroot content", - defaultValue: 'aa396a81-6adc-44e8-8fbc-7ecc54bf883f', - required: true), - ]) - ]) -} - -def rsync_dir_in(server, key, dir) { - rsync_dir(key, "${server}:${dir}", dir) -} - -def rsync_dir_out(server, key, dir) { - rsync_dir(key, dir, "${server}:${dir}") -} - -def rsync_dir_in_dest(server, key, srcdir, destdir) { - rsync_dir(key, "${server}:${srcdir}", destdir) -} - -def rsync_dir_out_dest(server, key, srcdir, destdir) { - rsync_dir(key, srcdir, "${server}:${destdir}") -} - -def rsync_dir(key, from_dir, to_dir) { - sh """ - rsync -Hrlpt --stats --delete --delete-after \ - -e 'ssh -i ${key} \ - -o UserKnownHostsFile=/dev/null \ - -o StrictHostKeyChecking=no' \ - ${from_dir}/ ${to_dir} - """ -} - -def rsync_file_in(server, key, file) { - rsync_file(key, "${server}:${file}", file) -} - -def rsync_file_in_dest(server, key, srcfile, destfile) { - rsync_file(key, "${server}:${srcfile}", destfile) -} - -def rsync_file_out(server, key, file) { - rsync_file(key, file, "${server}:${file}") -} - -def rsync_file_out_dest(server, key, srcfile, destfile) { - rsync_file(key, srcfile, "${server}:${destfile}") -} - -def rsync_file(key, from_file, to_file) { - sh """ - rsync -Hlpt --stats \ - -e 'ssh -i ${key} \ - -o UserKnownHostsFile=/dev/null \ - -o StrictHostKeyChecking=no' \ - ${from_file} ${to_file} - """ -} - -def get_rev_version(repo, rev) { - version = sh_capture("ostree show --repo=${repo} --print-metadata-key=version ${rev}") - assert (version.startsWith("'") && version.endsWith("'")) - return version[1..-2] // trim single quotes -} - -def sh_capture(cmd) { - return sh(returnStdout: true, script: cmd).trim() -} - -def registry_login(oscontainer_name, creds) { - def registry = oscontainer_name.split('/')[0]; - def (username, password) = creds.split(':'); - sh "echo podman login -u ${username} -p '' ${registry}"; - sh "set +x; podman login -u '${username}' -p '${password}' ${registry}"; -} - -def openshift_login(url, creds, project) { - def (username, password) = creds.split(':'); - sh "echo oc login --token '' ${url}"; - sh "set +x; oc login --token '${password}' ${url}"; - sh "oc project '${project}'"; -} - -// re-implementation of some functionality from scripts/pull-mount-oscontainer -// takes a directory mounted in from the host, creates a new location to -// store containers, and bind mounts it to '/var/lib/containers` -def prep_container_storage(dirFromHost) { - sh """ - container_storage=/var/lib/containers - fstype=\$(df -P ${dirFromHost} | awk 'END{print \$6}' | xargs findmnt -n -o FSTYPE) - if [ \$fstype == 'overlay' ]; then - echo 'Must supply non-overlay location' - exit 1 - fi - rm -rf \${container_storage} && mkdir -p \${container_storage} - rm -rf ${dirFromHost}/containers && mkdir -p ${dirFromHost}/containers - mount --bind ${dirFromHost}/containers \${container_storage} - """ -} - -// Substitute secrets from credentials into files in the git repo -def prepare_configuration() { - withCredentials([ - string(credentialsId: params.OOTPA_COMPOSE, variable: 'OOTPA_COMPOSE'), - string(credentialsId: params.OOTPA_BUILDROOT_COMPOSE, variable: 'OOTPA_BUILDROOT_COMPOSE'), - file(credentialsId: params.OPENSHIFT_MIRROR_CREDENTIALS_FILE, variable: 'OPENSHIFT_MIRROR_CREDENTIALS_FILE'), - ]) { - sh """ - make repo-refresh - sed -e 's,@OOTPA_COMPOSE@,${OOTPA_COMPOSE},' -e 's,@OOTPA_BUILDROOT_COMPOSE@,${OOTPA_BUILDROOT_COMPOSE},' < ootpa.repo.in > ootpa.repo - cp ${OPENSHIFT_MIRROR_CREDENTIALS_FILE} ${WORKSPACE}/ops-mirror.pem && sed -i -e "s~WORKSPACE~$WORKSPACE~g" ${WORKSPACE}/cri-o-tested.repo - """ - } -} - -// Helper function to run code inside our assembler container. -// Takes args (string) of extra args for docker, and `fn` to execute. -def inside_assembler_container(args, fn) { - // We're using the alpha tag; :latest may have breaking changes - def assembler = "quay.io/cgwalters/coreos-assembler:alpha" - docker.image(assembler).pull(); - // All of our tasks currently require privileges since they use - // nested containerization. We also might as well provide KVM access. - // The --entrypoint is a hack, see https://issues.jenkins-ci.org/browse/JENKINS-33149 - // Also it'd clearly be better if the inside() API took an array of arguments. - docker.image(assembler).inside("--entrypoint \"\" --privileged --device /dev/kvm ${args}") { - fn() - } -} - -// Send a notification when a job's status changes. -// Treat non-SUCCESS states the same, so it does not send notifications when -// changes go between UNSTABLE and FAILURE. -def notify_status_change(build) { - def color = '' - def message = "<${env.BUILD_URL}|Build ${env.BUILD_NUMBER} of ${env.JOB_NAME}>" - - if (build.currentResult == build.previousBuild?.result || params.DRY_RUN) - return - - if (build.previousBuild?.result == null) { - echo 'The previous build is still running; ignoring its build state.' - return - } else if (build.currentResult == 'SUCCESS') { - message = ":partyparrot: ${message} is working again." - color = 'good' - } else if (build.previousBuild.result == 'SUCCESS') { - message = ":trashfire: ${message} has started failing." - color = 'danger' - } else { - echo 'This and the previous build have different non-success states.' - return - } - - try { - slackSend channel: '#jenkins-coreos', color: color, message: message - } catch (NoSuchMethodError err) { - // Log the message in the console if the Slack plugin is not installed. - echo message - } -} - -return this diff --git a/rhcos-continuous.repo b/rhcos-continuous.repo deleted file mode 100644 index 913a80b1..00000000 --- a/rhcos-continuous.repo +++ /dev/null @@ -1,5 +0,0 @@ -[rhcos-continuous] -name=Packages built by this pipeline -baseurl=http://aos-ostree.rhev-ci-vms.eng.rdu2.redhat.com/rhcos/rdgo/build/ -enabled=1 -gpgcheck=0 diff --git a/scripts/ami-copy-regions b/scripts/ami-copy-regions deleted file mode 100755 index 86d17d6d..00000000 --- a/scripts/ami-copy-regions +++ /dev/null @@ -1,124 +0,0 @@ -#!/usr/bin/python3 -u -# Copy an AMI to multiple regions, generating an "AMI JSON" -# file matching the Container Linux schema: -# https://alpha.release.core-os.net/amd64-usr/current/coreos_production_ami_all.json -# Note this assumes the images are HVM. -# The images are also made public. - -import os,sys,argparse,subprocess,io,time,re,multiprocessing -import tempfile, json, collections - -AMI = collections.namedtuple('AMI', ['region', 'iid']) - -def fatal(msg): - print('error: {}'.format(msg), file=sys.stderr) - raise SystemExit(1) - -def csv_list(string): - return string.split(',') - -parser = argparse.ArgumentParser() -parser.add_argument("--source-region", help="Source region", - action='store', required=True) -parser.add_argument("--source-image-id", help="Source AMI", - action='store', required=True) -parser.add_argument("--name", help="AMI name", - action='store', required=True) -# These could be repeated args, but I find the comma-separated to be far less -# verbose. -parser.add_argument("--copy-tags", help="Copy the given tags (comma separated)", - action='store', type=csv_list) -parser.add_argument("--regions", help="Upload to regions (comma separated)", - action='store', required=True, - type=csv_list) -parser.add_argument("--out", help="Store output in FILE", - action='store', metavar='FILE', - required=True) - -args = parser.parse_args() - -# So...we could use an API, but it'd (probably) add a huge new dependency, and -# right now the low-tech aspect of this is OK. -def runaws(args): - return json.loads(subprocess.check_output(['aws', '--output', 'json'] + args)) - -# Gather tags to copy from the source AMI -tags_to_copy = [] -if len(args.copy_tags) > 0: - res = runaws(['ec2', 'describe-tags', '--filters', - 'Name=resource-id,Values={}'.format(args.source_image_id)]) - current_tags = {} - for tag in res['Tags']: - key = tag['Key'] - current_tags[tag['Key']] = tag['Value'] - tags_to_copy = [] - for tag in args.copy_tags: - val = current_tags.get(tag) - if val is None: - fatal("ami-{} is missing tag: {}".format(args.source_image_id, tag)) - tags_to_copy.append("Key={},Value={}".format(tag, val)) - print("Tags to copy: {}".format(tags_to_copy)) - -# Upload to all the regions -amis = [] -for region in args.regions: - print("Uploading to: {}".format(region)) - res = runaws(['ec2', 'copy-image', '--source-region', args.source_region, - '--source-image-id', args.source_image_id, - '--name', args.name, '--region', region]) - iid = res['ImageId'] - print("Complete, ImageId={}".format(iid)) - - print("Copying tags...") - subprocess.check_call(['aws', 'ec2', 'create-tags', '--region', region, - '--resources', iid, '--tags'] + tags_to_copy) - amis.append(AMI(region, iid)) - -def wait_image(ami, dry_run=False): - args = ['aws', 'ec2', '--region', ami.region, - 'wait', 'image-available'] - if dry_run: - args.append('--dry-run') - args.extend(['--image-id', ami.iid]) - if dry_run: - output = subprocess.run(args, stderr=subprocess.PIPE) - # WTF, why does --dry-run exit with an error code if it would - # have succeeded? And there's apparently no structured error - # output from the CLI. - if not b'Request would have succeeded' in output.stderr: - raise SystemExit("wait_image failed") - else: - return subprocess.call(args) == 0 - -print("Using modify-image-attribute to make AMIs public (may take a while)") -amis_succeeded = set() -# Try waiting for each AMI twice; if we were close to the timeout -# this could take a long time, but in practice EC2 parallelizes -# so this way we avoid failing if the first image or two happens -# to take too long. -for _ in range(2): - for ami in amis: - # First use --dry-run to ensure that we have permissions - wait_image(ami, dry_run=True) - print("Waiting on {}".format(ami)) - if wait_image(ami): - subprocess.check_call(['aws', 'ec2', '--region', - ami.region, 'modify-image-attribute', - '--image-id', ami.iid, - '--launch-permission', '{"Add":[{"Group":"all"}]}']) - print("AMI is now public: {}".format(ami)) - amis_succeeded.add(ami) -for ami in amis: - if ami not in amis_succeeded: - print("Failed to await: {}".format(ami)) - -# Write our output JSON -ami_json = [{'name': args.source_region, - 'hvm': args.source_image_id}] -for ami in amis: - ami_json.append({'name': ami.region, - 'hvm': ami.iid}) -# Be consistent -ami_json.sort(key=lambda x: x['name']) -with open(args.out, 'w') as f: - json.dump({'amis': ami_json}, f) diff --git a/scripts/pull-mount-oscontainer b/scripts/pull-mount-oscontainer deleted file mode 100755 index cbc1ce2a..00000000 --- a/scripts/pull-mount-oscontainer +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/bash -set -xeuo pipefail - -# Parse arguments and mount the image. -dest=$1; shift -img=$1; shift -rm ${dest} -rf -mkdir -p ${dest}/containers -# This ensures that we have container storage on overlayfs -# on the host. -containers_storage=/var/lib/containers -rm -rf ${containers_storage} && mkdir ${containers_storage} -mount --bind ${dest}/containers ${containers_storage} - -skopeo inspect docker://${img} -podman pull ${img} -cid=$(podman run --net=host -d --name oscontainer --entrypoint sleep ${img} infinity) -ln -sf $(podman mount ${cid})/srv/repo ${dest}/repo diff --git a/scripts/run-treecompose b/scripts/run-treecompose deleted file mode 100755 index 068595ce..00000000 --- a/scripts/run-treecompose +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/bash -set -xeuo pipefail - -repo=$1; shift -ref=$1; shift - -# We don't keep history in the tree. -previous_commit=$(ostree --repo="${repo}" rev-parse "${ref}" || true) -rm ${repo}/refs/heads/* -rf - -# Generate cache directory -cachedir=${WORKSPACE}/rpmostree-cache -mkdir -p ${cachedir} -build_repo=${cachedir}/build-repo -ostree --repo=${build_repo} init --mode=bare-user - -# This should be the default. It'll help us trace down a -# coredump we're seeing periodically. -export G_DEBUG=fatal-warnings -rpm-ostree compose tree --repo=${build_repo} --cachedir=$WORKSPACE/rpmostree-cache "$@" -commit=$(ostree --repo=${build_repo} rev-parse ${ref}) -ostree --repo=${repo} pull-local ${build_repo} -version=$(ostree --repo=${repo} show --print-metadata-key=version ${commit} | sed -e "s,',,g") - -# Generate a package-level diff -if [ -n "${previous_commit}" ]; then - rpm-ostree --repo=${repo} db diff "${previous_commit}" "${commit}" > pkg-diff.txt -fi - -# Now do a prune (again no history in the repo) -ostree --repo=${repo} prune --refs-only --depth=0 -ostree --repo=${repo} summary -u - -# Generate JSON -if [ -n "${previous_commit}" ]; then - previous_commit_json='"'"${previous_commit}"'"' -else - previous_commit_json=null -fi -# This is easy to parse from Groovy -cat > compose.json <.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}}*{-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:"Open Sans", Helvetica, Arial, sans-serif;font-size:14px;line-height:1.42857143;color:#404040;background-color:white}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#2275b4;text-decoration:none}a:hover,a:focus{color:#1c6094;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{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:white;border:1px solid #dddddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #e7e7e7}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:"Open Sans", Helvetica, Arial, sans-serif;font-weight:300;line-height:1.1;color:black}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,h4 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:normal;line-height:1;color:#bdbdbd}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,h4 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:28px}h2,.h2{font-size:24px}h3,.h3{font-size:21px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase,.initialism{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#bdbdbd}.text-primary{color:#337ab7}a.text-primary:hover,a.text-primary:focus{color:#286090}.text-success{color:#3c763d}a.text-success:hover,a.text-success:focus{color:#2b542c}.text-info{color:#31708f}a.text-info:hover,a.text-info:focus{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover,a.text-warning:focus{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover,a.text-danger:focus{color:#843534}.bg-primary{color:#fff}.bg-primary{background-color:#337ab7}a.bg-primary:hover,a.bg-primary:focus{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #e7e7e7}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #bdbdbd}.initialism{font-size:90%}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #e7e7e7}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:#bdbdbd}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #e7e7e7;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right 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:#cc0000;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:white;background-color:#333333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#003d6e;background-color:#f0f3f5;border:1px solid #cccccc;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{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container-fluid:before,.container-fluid:after{content:" ";display:table}.container-fluid:after{clear:both}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-1{width:8.33333333%}.col-xs-2{width:16.66666667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333333%}.col-xs-5{width:41.66666667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333333%}.col-xs-8{width:66.66666667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333333%}.col-xs-11{width:91.66666667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333333%}.col-xs-push-2{left:16.66666667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333333%}.col-xs-push-5{left:41.66666667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333333%}.col-xs-push-8{left:66.66666667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333333%}.col-xs-push-11{left:91.66666667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-12{margin-left:100%}@media (min-width: 768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.33333333%}.col-sm-2{width:16.66666667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333%}.col-sm-5{width:41.66666667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333333%}.col-sm-8{width:66.66666667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333%}.col-sm-11{width:91.66666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333333%}.col-sm-push-2{left:16.66666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333%}.col-sm-push-5{left:41.66666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333333%}.col-sm-push-8{left:66.66666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333%}.col-sm-push-11{left:91.66666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-12{margin-left:100%}}@media (min-width: 992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-1{width:8.33333333%}.col-md-2{width:16.66666667%}.col-md-3{width:25%}.col-md-4{width:33.33333333%}.col-md-5{width:41.66666667%}.col-md-6{width:50%}.col-md-7{width:58.33333333%}.col-md-8{width:66.66666667%}.col-md-9{width:75%}.col-md-10{width:83.33333333%}.col-md-11{width:91.66666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333333%}.col-md-pull-2{right:16.66666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333%}.col-md-pull-5{right:41.66666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333333%}.col-md-pull-8{right:66.66666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333%}.col-md-pull-11{right:91.66666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333333%}.col-md-push-2{left:16.66666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333%}.col-md-push-5{left:41.66666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333333%}.col-md-push-8{left:66.66666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333%}.col-md-push-11{left:91.66666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-12{margin-left:100%}}@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-1{width:8.33333333%}.col-lg-2{width:16.66666667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333%}.col-lg-5{width:41.66666667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333333%}.col-lg-8{width:66.66666667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333%}.col-lg-11{width:91.66666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333333%}.col-lg-push-2{left:16.66666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333%}.col-lg-push-5{left:41.66666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333333%}.col-lg-push-8{left:66.66666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333%}.col-lg-push-11{left:91.66666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-12{margin-left:100%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#bdbdbd;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>thead>tr>td,.table>tbody>tr>th,.table>tbody>tr>td,.table>tfoot>tr>th,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #dddddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #dddddd}.table>caption+thead>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>th,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #dddddd}.table .table{background-color:white}.table-condensed>thead>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>td{border:1px solid #dddddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:whitesmoke}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>thead>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th{background-color:whitesmoke}.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>thead>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>tfoot>tr.success>td,.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>thead>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>tfoot>tr.info>td,.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>thead>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>tfoot>tr.warning>td,.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>thead>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #dddddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>th,.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>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th: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>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th: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>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#404040;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:#929292}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#929292;background-color:white;background-image:none;border:1px solid #cccccc;border-radius:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999999;opacity:1}.form-control:-ms-input-placeholder{color:#999999}.form-control::-webkit-input-placeholder{color:#999999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#e7e7e7;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:34px}input[type="date"].input-sm,.input-group-sm>input[type="date"].form-control,.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,.input-group-sm input[type="date"],input[type="time"].input-sm,.input-group-sm>input[type="time"].form-control,.input-group-sm>input[type="time"].input-group-addon,.input-group-sm>.input-group-btn>input[type="time"].btn,.input-group-sm input[type="time"],input[type="datetime-local"].input-sm,.input-group-sm>input[type="datetime-local"].form-control,.input-group-sm>input[type="datetime-local"].input-group-addon,.input-group-sm>.input-group-btn>input[type="datetime-local"].btn,.input-group-sm input[type="datetime-local"],input[type="month"].input-sm,.input-group-sm>input[type="month"].form-control,.input-group-sm>input[type="month"].input-group-addon,.input-group-sm>.input-group-btn>input[type="month"].btn,.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,.input-group-lg>input[type="date"].form-control,.input-group-lg>input[type="date"].input-group-addon,.input-group-lg>.input-group-btn>input[type="date"].btn,.input-group-lg input[type="date"],input[type="time"].input-lg,.input-group-lg>input[type="time"].form-control,.input-group-lg>input[type="time"].input-group-addon,.input-group-lg>.input-group-btn>input[type="time"].btn,.input-group-lg input[type="time"],input[type="datetime-local"].input-lg,.input-group-lg>input[type="datetime-local"].form-control,.input-group-lg>input[type="datetime-local"].input-group-addon,.input-group-lg>.input-group-btn>input[type="datetime-local"].btn,.input-group-lg input[type="datetime-local"],input[type="month"].input-lg,.input-group-lg>input[type="month"].form-control,.input-group-lg>input[type="month"].input-group-addon,.input-group-lg>.input-group-btn>input[type="month"].btn,.input-group-lg input[type="month"]{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-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"].disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"].disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,fieldset[disabled] .radio-inline,.checkbox-inline.disabled,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,fieldset[disabled] .radio label,.checkbox.disabled label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.form-control-static.input-sm,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-sm,.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-sm,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,.input-group-sm>.input-group-btn>select.btn{height:30px;line-height:30px}textarea.input-sm,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,.input-group-sm>.input-group-btn>textarea.btn,select[multiple].input-sm,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>.input-group-btn>select[multiple].btn{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,.input-group-lg>.input-group-btn>select.btn{height:46px;line-height:46px}textarea.input-lg,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,.input-group-lg>.input-group-btn>textarea.btn,select[multiple].input-lg,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>.input-group-btn>select[multiple].btn{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.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,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:gray}@media (min-width: 768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{content:" ";display:table}.form-horizontal .form-group:after{clear:both}@media (min-width: 768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:14.333333px;font-size:18px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn.focus,.btn:active:focus,.btn:active.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:#333333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333333;background-color:white;border-color:#cccccc}.btn-default:focus,.btn-default.focus{color:#333333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{color:#333333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active:hover,.btn-default:active:focus,.btn-default:active.focus,.btn-default.active:hover,.btn-default.active:focus,.btn-default.active.focus,.open>.btn-default.dropdown-toggle:hover,.open>.btn-default.dropdown-toggle:focus,.open>.btn-default.dropdown-toggle.focus{color:#333333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{background-image:none}.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active{background-color:white;border-color:#cccccc}.btn-default .badge{color:white;background-color:#333333}.btn-primary{color:white;background-color:#337ab7;border-color:#2e6da4}.btn-primary:focus,.btn-primary.focus{color:white;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:white;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{color:white;background-color:#286090;border-color:#204d74}.btn-primary:active:hover,.btn-primary:active:focus,.btn-primary:active.focus,.btn-primary.active:hover,.btn-primary.active:focus,.btn-primary.active.focus,.open>.btn-primary.dropdown-toggle:hover,.open>.btn-primary.dropdown-toggle:focus,.open>.btn-primary.dropdown-toggle.focus{color:white;background-color:#204d74;border-color:#122b40}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{background-image:none}.btn-primary.disabled,.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled.active,.btn-primary[disabled],.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary.active{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:white}.btn-success{color:white;background-color:#5cb85c;border-color:#4cae4c}.btn-success:focus,.btn-success.focus{color:white;background-color:#449d44;border-color:#255625}.btn-success:hover{color:white;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:white;background-color:#449d44;border-color:#398439}.btn-success:active:hover,.btn-success:active:focus,.btn-success:active.focus,.btn-success.active:hover,.btn-success.active:focus,.btn-success.active.focus,.open>.btn-success.dropdown-toggle:hover,.open>.btn-success.dropdown-toggle:focus,.open>.btn-success.dropdown-toggle.focus{color:white;background-color:#398439;border-color:#255625}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled.active,.btn-success[disabled],.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled].active,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:white}.btn-info{color:white;background-color:#5bc0de;border-color:#46b8da}.btn-info:focus,.btn-info.focus{color:white;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:white;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:white;background-color:#31b0d5;border-color:#269abc}.btn-info:active:hover,.btn-info:active:focus,.btn-info:active.focus,.btn-info.active:hover,.btn-info.active:focus,.btn-info.active.focus,.open>.btn-info.dropdown-toggle:hover,.open>.btn-info.dropdown-toggle:focus,.open>.btn-info.dropdown-toggle.focus{color:white;background-color:#269abc;border-color:#1b6d85}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled,.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled.active,.btn-info[disabled],.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled].active,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:white}.btn-warning{color:white;background-color:#f0ad4e;border-color:#eea236}.btn-warning:focus,.btn-warning.focus{color:white;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:white;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:white;background-color:#ec971f;border-color:#d58512}.btn-warning:active:hover,.btn-warning:active:focus,.btn-warning:active.focus,.btn-warning.active:hover,.btn-warning.active:focus,.btn-warning.active.focus,.open>.btn-warning.dropdown-toggle:hover,.open>.btn-warning.dropdown-toggle:focus,.open>.btn-warning.dropdown-toggle.focus{color:white;background-color:#d58512;border-color:#985f0d}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled,.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled.active,.btn-warning[disabled],.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:white}.btn-danger{color:white;background-color:#d9534f;border-color:#d43f3a}.btn-danger:focus,.btn-danger.focus{color:white;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:white;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:white;background-color:#c9302c;border-color:#ac2925}.btn-danger:active:hover,.btn-danger:active:focus,.btn-danger:active.focus,.btn-danger.active:hover,.btn-danger.active:focus,.btn-danger.active.focus,.open>.btn-danger.dropdown-toggle:hover,.open>.btn-danger.dropdown-toggle:focus,.open>.btn-danger.dropdown-toggle.focus{color:white;background-color:#ac2925;border-color:#761c19}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled,.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled.active,.btn-danger[disabled],.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:white}.btn-link{color:#2275b4;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#1c6094;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus{color:#bdbdbd;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.3333333;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 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:white;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}.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:#404040;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#333333;background-color:whitesmoke}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:white;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#bdbdbd}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#bdbdbd;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width: 768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.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>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.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:before,.btn-toolbar:after{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle,.btn-group-lg.btn-group>.btn+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret,.btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg>.btn .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:before,.btn-group-vertical>.btn-group:after{content:" ";display:table}.btn-group-vertical>.btn-group:after{clear:both}.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-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.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-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;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 input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[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-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.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:#929292;text-align:center;background-color:#e7e7e7;border:1px solid #cccccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{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-bottom-right-radius:0;border-top-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-bottom-left-radius:0;border-top-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{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:before,.nav:after{content:" ";display:table}.nav:after{clear:both}.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:#e7e7e7}.nav>li.disabled>a{color:#bdbdbd}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#bdbdbd;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#e7e7e7;border-color:#2275b4}.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 #dddddd}.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:#e7e7e7 #e7e7e7 #dddddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#929292;background-color:white;border:1px solid #dddddd;border-bottom-color:transparent;cursor:default}.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:white;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li,.nav-tabs.nav-justified>li{float:none}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #dddddd}@media (min-width: 768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #dddddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:white}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:70px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{content:" ";display:table}.navbar:after{clear:both}@media (min-width: 768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{content:" ";display:table}.navbar-header:after{clear:both}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:25px;padding-left:25px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right: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>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:-25px;margin-left:-25px}@media (min-width: 768px){.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 768px){.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;padding:25px 25px;font-size:18px;line-height:20px;height:70px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-25px}}.navbar-toggle{position:relative;float:right;margin-right:25px;padding:9px 10px;margin-top:18px;margin-bottom:18px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:12.5px -25px}.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;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: 768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:25px;padding-bottom:25px}}.navbar-form{margin-left:-25px;margin-right:-25px;padding:10px 25px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:18px;margin-bottom:18px}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .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: 768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:18px;margin-bottom:18px}.navbar-btn.btn-sm,.btn-group-sm>.navbar-btn.btn{margin-top:20px;margin-bottom:20px}.navbar-btn.btn-xs,.btn-group-xs>.navbar-btn.btn{margin-top:24px;margin-bottom:24px}.navbar-text{margin-top:25px;margin-bottom:25px}@media (min-width: 768px){.navbar-text{float:left;margin-left:25px;margin-right:25px}}@media (min-width: 768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-25px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#dedede}.navbar-default .navbar-brand{color:#333333}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#1a1a1a;background-color:transparent}.navbar-default .navbar-text{color:#333333}.navbar-default .navbar-nav>li>a{color:#333333}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555555;background-color:#e7e7e7}.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:#dddddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#dddddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#dedede}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555555}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#333333}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333333;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:#555555;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:#cccccc;background-color:transparent}}.navbar-default .navbar-link{color:#333333}.navbar-default .navbar-link:hover{color:#333333}.navbar-default .btn-link{color:#333333}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333333}.navbar-default .btn-link[disabled]:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:hover,fieldset[disabled] .navbar-default .btn-link:focus{color:#cccccc}.navbar-inverse{background-color:#222222;border-color:#090909}.navbar-inverse .navbar-brand{color:#e3e3e3}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:white;background-color:transparent}.navbar-inverse .navbar-text{color:#e3e3e3}.navbar-inverse .navbar-nav>li>a{color:#e3e3e3}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:white;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:white;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333333}.navbar-inverse .navbar-toggle .icon-bar{background-color:white}.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{background-color:#090909;color:white}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#e3e3e3}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:white;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:white;background-color:#090909}.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:#444444;background-color:transparent}}.navbar-inverse .navbar-link{color:#e3e3e3}.navbar-inverse .navbar-link:hover{color:white}.navbar-inverse .btn-link{color:#e3e3e3}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:white}.navbar-inverse .btn-link[disabled]:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:hover,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:transparent;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#bdbdbd}.breadcrumb>.active{color:inherit}.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;line-height:1.42857143;text-decoration:none;color:#2275b4;background-color:white;border:1px solid #dddddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>a:focus,.pagination>li>span:hover,.pagination>li>span:focus{z-index:3;color:#1c6094;background-color:#e7e7e7;border-color:#dddddd}.pagination>.active>a,.pagination>.active>a:hover,.pagination>.active>a:focus,.pagination>.active>span,.pagination>.active>span:hover,.pagination>.active>span:focus{z-index:2;color:white;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#bdbdbd;background-color:white;border-color:#dddddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:before,.pager:after{content:" ";display:table}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:white;border:1px solid #dddddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#e7e7e7}.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:#bdbdbd;background-color:white;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:white;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:hover,a.label:focus{color:white;text-decoration:none;cursor:pointer}.label-default{background-color:#bdbdbd}.label-default[href]:hover,.label-default[href]:focus{background-color:#a4a4a4}.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;color:white;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#bdbdbd;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#2275b4;background-color:white}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:hover,a.badge:focus{color:white;text-decoration:none;cursor:pointer}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#e7e7e7}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#cecece}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:white;border:1px solid #dddddd;border-radius:4px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#404040}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#2275b4}.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{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-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{overflow:hidden;height:20px;margin-bottom:20px;background-color:whitesmoke;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:white;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{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);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);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);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,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);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);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)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{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);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);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)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{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);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);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)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{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);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);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)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-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{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:white;border:1px solid #dddddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333333}a.list-group-item:hover,a.list-group-item:focus,button.list-group-item:hover,button.list-group-item:focus{text-decoration:none;color:#555555;background-color:whitesmoke}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#e7e7e7;color:#bdbdbd;cursor:not-allowed}.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:#bdbdbd}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:white;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>.small{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,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:hover,button.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,button.list-group-item-success.active,button.list-group-item-success.active:hover,button.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,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:hover,button.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,button.list-group-item-info.active,button.list-group-item-info.active:hover,button.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,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:hover,button.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,button.list-group-item-warning.active,button.list-group-item-warning.active:hover,button.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,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:hover,button.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,button.list-group-item-danger.active,button.list-group-item-danger.active:hover,button.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:white;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{content:" ";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-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,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:whitesmoke;border-top:1px solid #dddddd;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-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.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-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.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>thead: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:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{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:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{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 #dddddd}.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-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th: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-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th: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-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom: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 #dddddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #dddddd}.panel-default{border-color:#dddddd}.panel-default>.panel-heading{color:#404040;background-color:whitesmoke;border-color:#dddddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#dddddd}.panel-default>.panel-heading .badge{color:whitesmoke;background-color:#404040}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#dddddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:white;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:white}.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;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:whitesmoke;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:black;text-shadow:0 1px 0 white;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:black;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:white;border:1px solid #999999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:black}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857143px}.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:before,.modal-footer:after{content:" ";display:table}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Open Sans", Helvetica, Arial, sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:white;text-align:center;background-color:black;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:black}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:black}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:black}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:black}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:black}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:black}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:black}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:black}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Open Sans", Helvetica, Arial, sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:white;background-clip:padding-box;border:1px solid #cccccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,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{margin:0;padding:8px 14px;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{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:white}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:white}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:white}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:white;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto;line-height:1}@media all and (transform-3d), (-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform 0.6s ease-in-out;-moz-transition:-moz-transform 0.6s ease-in-out;-o-transition:-o-transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left: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;left:0;bottom:0;width:15%;opacity:0.5;filter:alpha(opacity=50);font-size:20px;color:white;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.0001) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0%,rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0%, rgba(0,0,0,0.5) 100%);background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0%,rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:white;text-decoration:none;opacity:0.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;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;line-height:1;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%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid white;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:white}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:white;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width: 768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-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{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@at-root{@-ms-viewport{width:device-width}}.visible-xs{display:none !important}.visible-sm{display:none !important}.visible-md{display:none !important}.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 !important}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: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}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: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}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}}/*! - * Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:'FontAwesome';src:url(/content/fontawesome-webfont.eot?v=4.1.0);src:url(/content/fontawesome-webfont.eot?#iefix&v=4.1.0) format("embedded-opentype"),url(/content/fontawesome-webfont.woff?v=4.1.0) format("woff"),url(/content/fontawesome-webfont.ttf?v=4.1.0) format("truetype"),url(/content/fontawesome-webfont.svg?v=4.1.0#fontawesomeregular) format("svg");font-weight:normal;font-style:normal}.fa{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:0.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:0.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid 0.08em #eeeeee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:spin 2s infinite linear;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0);-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1)}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:white}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-square:before,.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}code,kbd,pre,samp{font-family:Menlo, Monaco, Consolas, "Courier New", monospace}code{padding:2px 4px;font-size:90%;color:#cc0000;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:white;background-color:#333333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;box-shadow:none}pre{display:block;padding:0.75em 0.5em;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#003d6e;background-color:#f0f3f5;border:0;border-radius:4px}pre code{display:block;padding:.75em 2em;text-shadow:0 1px white;font-size:inherit;color:#003d6e;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.breadcrumb,.breadcrumbs{border-radius:0;font-weight:300}.breadcrumb a,.breadcrumbs a{color:inherit}.breadcrumb .sitename a,.breadcrumbs .sitename a{color:#cc0000;font-size:20px}.cushion{padding:40px 0}.cushion-top{padding-top:40px}.page-header{padding:0;border:0;margin:0;height:125px}.page-header h1{font-size:58px;font-weight:200;color:#c00;letter-spacing:-1px;margin:20px 0 10px -15px}.page-header .search-form{background-color:#f8f8f8;padding:5px;margin-top:25px}form.search.has-button{border-collapse:separate;display:table;background:#fff;border:1px solid #ddd;padding:5px}form.search.has-button .form-control{border:0;box-shadow:none;font-size:18px;float:left}form.search.has-button .form-group{display:table-cell;width:100%}form.search.has-button button.btn.btn-default{border:0;border-radius:0;float:left}form.search.has-button button.btn.btn-default:hover{background-color:transparent}h1,.h1{margin-top:20px}h2,.h2,h3,.h3{margin-top:40px}h4,.h4{font-weight:400;text-transform:uppercase}h4,.h4,h5,.h5,h6,.h6{margin-top:30px}h5,h6,.h5,.h6{font-weight:700}p{line-height:1.6;color:#545454}ul,ol{color:#545454}img{max-width:100%;width:auto\9;height:auto;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}@media screen and (min-width: 768px){.lead{font-size:20.02px}}.row.row-gutter{margin-bottom:30px}.videoblock{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.videoblock embed,.videoblock iframe,.videoblock object{position:absolute;top:0;left:0;width:100%;height:100%}.videoblock embed img,.videoblock iframe img,.videoblock object img{width:100% !important}@media (min-width: 1200px){.videoblock{max-width:90%}}.col-centered{float:none;margin:0 auto}@font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:url(/content/OpenSans-Light-webfont.eot);src:url(/content/OpenSans-Light-webfont.eot?#iefix) format("embedded-opentype"),url(/content/OpenSans-Light-webfont.woff) format("woff"),url(/content/OpenSans-Light-webfont.ttf) format("truetype"),url(/content/OpenSans-Light-webfont.svg#OpenSansLight) format("svg")}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:url(/content/OpenSans-Regular-webfont.eot);src:url(/content/OpenSans-Regular-webfont.eot?#iefix) format("embedded-opentype"),url(/content/OpenSans-Regular-webfont.woff) format("woff"),url(/content/OpenSans-Regular-webfont.ttf) format("truetype"),url(/content/OpenSans-Regular-webfont.svg#OpenSansRegular) format("svg")}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:url(/content/OpenSans-Semibold-webfont.eot);src:url(/content/OpenSans-Semibold-webfont.eot?#iefix) format("embedded-opentype"),url(/content/OpenSans-Semibold-webfont.woff) format("woff"),url(/content/OpenSans-Semibold-webfont.ttf) format("truetype"),url(/content/OpenSans-Semibold-webfont.svg#OpenSansSemibold) format("svg")}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:url(/content/OpenSans-Bold-webfont.eot);src:url(/content/OpenSans-Bold-webfont.eot?#iefix) format("embedded-opentype"),url(/content/OpenSans-Bold-webfont.woff) format("woff"),url(/content/OpenSans-Bold-webfont.ttf) format("truetype"),url(/content/OpenSans-Bold-webfont.svg#OpenSansBold) format("svg")}@font-face{font-family:'Open Sans';font-style:normal;font-weight:800;src:url(/content/OpenSans-ExtraBold-webfont.eot);src:url(/content/OpenSans-ExtraBold-webfont.eot?#iefix) format("embedded-opentype"),url(/content/OpenSans-ExtraBold-webfont.woff) format("woff"),url(/content/OpenSans-ExtraBold-webfont.ttf) format("truetype"),url(/content/OpenSans-ExtraBold-webfont.svg#OpenSansExtrabold) format("svg")}@font-face{font-family:'Overpass';src:url(/content/overpass_bold-webfont.eot);src:url(/content/overpass_bold-webfont.eot?#iefix) format("embedded-opentype"),url(/content/overpass_bold-webfont.woff) format("woff"),url(/content/overpass_bold-webfont.svg#overpassbold) format("svg");font-weight:800;font-style:normal}@font-face{font-family:'Overpass';src:url(/content/overpass_regular-webfont.eot);src:url(/content/overpass_regular-webfont.eot?#iefix) format("embedded-opentype"),url(/content/overpass_regular-webfont.woff) format("woff"),url(/content/overpass_regular-webfont.svg#overpassregular) format("svg");font-weight:600;font-style:normal}@font-face{font-family:'Overpass';src:url(/content/overpass_light-webfont.eot);src:url(/content/overpass_light-webfont.eot?#iefix) format("embedded-opentype"),url(/content/overpass_light-webfont.woff) format("woff"),url(/content/overpass_light-webfont.svg#overpasslight) format("svg");font-weight:400;font-style:normal}html{min-height:100%;position:relative}body{margin-bottom:140px}.footer-openshift{background-color:#fff;border-bottom:38px solid #00171d;bottom:0;font-size:12px;height:100px;left:0;position:absolute;width:100%}.footer-openshift a{color:#131313;margin-left:30px;position:relative;top:12px}@media screen and (max-width: 400px){.footer-openshift a{margin-left:15px}}.footer-openshift a:hover{color:#cc0000}.footer-openshift .logo a{background:url(/content/subdomain/redhat.png) no-repeat;display:inline-block;height:34px;margin:0;top:auto;width:110px}.footer-openshift-new{background-color:#010101;bottom:0;font-size:12px;height:60px;padding:15px 0;left:0;position:absolute;width:100%}.footer-openshift-new a{color:#DEE0DC;margin-left:30px;position:relative;top:7px}@media screen and (max-width: 400px){.footer-openshift-new a{margin-left:15px}}.footer-openshift-new a:hover{color:#ebecea}.footer-openshift-new .logo a{background:url(/content/subdomain/redhat_reverse.png) no-repeat;background-size:93.4px 30px;display:inline-block;height:34px;margin:0;top:auto;width:93.4px}#cse-search-form{padding:15px 30px;position:relative}#cse-search-form .btn{background:transparent;border:0;padding-left:0;padding-right:9px;position:absolute;right:26px;top:13px}#cse-search-form .form-control{border:0;-webkit-box-shadow:none;box-shadow:none;color:#333333;height:auto;padding:2px 26px 2px 4px}#cse-search-form ::-webkit-input-placeholder{font-size:13px;font-weight:700;text-transform:uppercase}#cse-search-form :-moz-placeholder{font-size:13px;font-weight:700;text-transform:uppercase}#cse-search-form ::-moz-placeholder{font-size:13px;font-weight:700;text-transform:uppercase}#cse-search-form :-ms-input-placeholder{font-size:13px;font-weight:700;text-transform:uppercase}.navbar.navbar-default.navbar-openshift{background-color:#f8f8f8;border:none;border-radius:0;-webkit-box-shadow:0 0 4px rgba(0,0,0,0.15);box-shadow:0 0 4px rgba(0,0,0,0.15);color:#333333}.navbar.navbar-default.navbar-openshift .dropdown-menu{background-color:#eff0ef;border:0;border-radius:0;-webkit-box-shadow:0 3px 3px rgba(0,0,0,0.1);box-shadow:0 3px 3px rgba(0,0,0,0.1);margin-top:0;padding-bottom:0;padding-top:0;top:70px;width:100%}@media (min-width: 600px){.navbar.navbar-default.navbar-openshift .dropdown-menu{width:auto}}.navbar.navbar-default.navbar-openshift .dropdown-menu>li+li{border-top:1px solid #dedede}.navbar.navbar-default.navbar-openshift .dropdown-menu>li>a{font-size:13px;font-weight:700;padding:15px;text-transform:uppercase}.navbar.navbar-default.navbar-openshift .dropdown-menu>li>a:hover,.navbar.navbar-default.navbar-openshift .dropdown-menu>li>a:focus,.navbar.navbar-default.navbar-openshift .dropdown-menu>li>a:active{background-color:#e8eae8;color:black}.navbar.navbar-default.navbar-openshift .dropdown-menu>li.hover>a{background-color:#e8eae8;color:black}.navbar.navbar-default.navbar-openshift .dropdown-menu>li.hover .dropdown-submenu{display:block}.navbar.navbar-default.navbar-openshift .dropdown-menu>li.submenu>a{padding-right:43px;position:relative}.navbar.navbar-default.navbar-openshift .dropdown-menu>li.submenu>a:after{content:'';border:5px solid #333333;border-bottom-color:transparent;border-top-color:transparent;border-right-width:0;height:0;position:absolute;right:27px;top:20px;width:0}@media (min-width: 600px){.navbar.navbar-default.navbar-openshift .dropdown-menu>li.submenu.hover>a:after{border-left-color:black}}@media (max-width: 599px){.navbar.navbar-default.navbar-openshift .dropdown-menu>li.submenu.hover>a:after{border-bottom-width:0;border-left-color:transparent;border-right-color:transparent;border-right-width:5px;border-top-color:black;top:22px}}.navbar.navbar-default.navbar-openshift .dropdown-menu .dropdown-submenu{background-color:#e8eae8;display:none;font-size:13px;list-style:none;margin:0;padding:15px 30px;min-height:100%;z-index:-1}@media (min-width: 600px){.navbar.navbar-default.navbar-openshift .dropdown-menu .dropdown-submenu{-webkit-box-shadow:0 3px 3px rgba(0,0,0,0.1);box-shadow:0 3px 3px rgba(0,0,0,0.1);left:100%;min-width:300px;position:absolute;top:0}}.navbar.navbar-default.navbar-openshift .dropdown-menu .dropdown-submenu a{color:#333333;font-weight:600}.navbar.navbar-default.navbar-openshift .dropdown-menu .dropdown-submenu a:hover{color:black;text-decoration:none}.navbar.navbar-default.navbar-openshift .dropdown-menu .dropdown-submenu a .fa-external-link{color:#777;font-size:12px;margin-top:4px}.navbar.navbar-default.navbar-openshift .dropdown-menu .dropdown-submenu li{margin:0 0 15px}.navbar.navbar-default.navbar-openshift .dropdown-menu .dropdown-submenu li+.submenu-heading{margin-top:25px}.navbar.navbar-default.navbar-openshift .dropdown-menu .dropdown-submenu .submenu-divider{border-top:1px solid #d6d6d6;margin:25px 0}.navbar.navbar-default.navbar-openshift .dropdown-menu .dropdown-submenu .submenu-heading{border-bottom:1px solid #d6d6d6;color:#333333;font-weight:700;padding-bottom:5px;text-transform:uppercase}.navbar.navbar-default.navbar-openshift .dropdown-menu .dropdown-submenu .submenu-item-desc{color:#777;display:none;font-size:11px;font-weight:400}@media (min-width: 600px){.navbar.navbar-default.navbar-openshift .dropdown-menu .dropdown-submenu .submenu-item-desc{display:block}}.navbar.navbar-default.navbar-openshift .navbar-brand{background:transparent url(/content/subdomain/openshift-logo-horizontal.svg) no-repeat 50% 21px;background-size:contain;margin-left:119px;margin-right:15px;padding-top:22px;width:158px}.ie6 .navbar.navbar-default.navbar-openshift .navbar-brand,.ie7 .navbar.navbar-default.navbar-openshift .navbar-brand,.ie8 .navbar.navbar-default.navbar-openshift .navbar-brand{background-image:url(/content/subdomain/openshift-logo158.png)}@media (min-width: 360px){.navbar.navbar-default.navbar-openshift .navbar-brand{background-position:50% 15px;width:220px}.ie6 .navbar.navbar-default.navbar-openshift .navbar-brand,.ie7 .navbar.navbar-default.navbar-openshift .navbar-brand,.ie8 .navbar.navbar-default.navbar-openshift .navbar-brand{background-image:url(/content/subdomain/openshift-logo220.png);background-position:50% 14px}}.navbar.navbar-default.navbar-openshift .navbar-menu>li>a{padding-left:30px}.navbar.navbar-default.navbar-openshift .navbar-menu-toggle{border-right:1px solid #dedede;color:#333333;display:block;float:left;font-weight:700;line-height:1;padding:16px 30px 22px;position:absolute;text-decoration:none}.navbar.navbar-default.navbar-openshift .navbar-menu-toggle:hover{background-color:#eff0ef;color:black}.navbar.navbar-default.navbar-openshift .navbar-menu-toggle:hover .icon-bar{background-color:black}.navbar.navbar-default.navbar-openshift .navbar-menu-toggle:hover .navbar-menu-title{color:black}.navbar.navbar-default.navbar-openshift .navbar-menu-toggle .icon-bar{background-color:#333333;border-radius:1px;display:block;height:2px;margin-top:4px;width:27px}.navbar.navbar-default.navbar-openshift .navbar-menu-toggle .navbar-menu-title{display:inline-block;font-size:9px}.navbar.navbar-default.navbar-openshift .navbar-nav>li>a{font-weight:700;padding-left:30px;padding-right:30px;text-transform:uppercase}.navbar.navbar-default.navbar-openshift .navbar-nav>li>a:hover{background-color:#eff0ef;color:black}.navbar.navbar-default.navbar-openshift .navbar-nav>li>a>.caret{border-width:5px;border-bottom-width:0;margin-left:8px;margin-top:-4px}.navbar.navbar-default.navbar-openshift .navbar-quicklinks li>a{padding-left:15px;padding-right:15px}.navbar.navbar-default.navbar-openshift .navbar-right>li>a.nav-sign-up{background-color:#cc0000;color:#fff}.navbar.navbar-default.navbar-openshift .navbar-right>li>a.nav-sign-up:hover,.navbar.navbar-default.navbar-openshift .navbar-right>li>a.nav-sign-up:active{background-color:#bf0000}.navbar.navbar-default.navbar-openshift .navbar-right>li>.dropdown-menu a{padding-left:30px;padding-right:30px}.navbar.navbar-default.navbar-openshift .open .dropdown-toggle{background-color:#eff0ef;color:black}.navbar.navbar-default.navbar-openshift .open .dropdown-toggle .icon-bar{background-color:black}.navbar.navbar-default.navbar-openshift .open .dropdown-toggle .navbar-menu-title{color:black}@font-face{font-family:'openshift-logos-icon';src:url(/content/openshift-logos-icon.eot);src:url(/content/openshift-logos-icon.eot?#iefix) format("embedded-opentype"),url(/content/openshift-logos-icon.woff) format("woff"),url(/content/openshift-logos-icon.ttf) format("truetype"),url(/content/openshift-logos-icon.svg#openshift-logos-icon) format("svg");font-weight:normal;font-style:normal}.os{font-family:'openshift-logos-icon';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.os-github:before{content:"\f101"}.os-git:before{content:"\f102"}.os-openjdk:before{content:"\f103"}.os-rails:before{content:"\f104"}.os-php:before{content:"\f105"}.os-ruby:before{content:"\f106"}.os-django:before{content:"\f107"}.os-nodejs:before{content:"\f108"}.os-jenkins:before{content:"\f109"}.os-python:before{content:"\f110"}.os-perl:before{content:"\f112"}.os-zend:before{content:"\f113"}.os-jboss:before{content:"\f114"}.os-tomcat:before{content:"\f115"}.os-spring:before{content:"\f116"}.os-mysql-database:before{content:"\f117"}.os-postgresql:before{content:"\f118"}.os-mongodb:before{content:"\f119"}.os-mariadb:before{content:"\f120"}.os-wordpress:before{content:"\f121"}.os-drupal:before{content:"\f122"}.os-codeigniter:before{content:"\f123"}.os-shadowman:before{content:"\f124"}.os-stackoverflow:before{content:"\f125"}.os-aerogear:before{content:"\f126"}.os-capedwarf:before{content:"\f127"}.os-redis:before{content:"\f128"}.os-clojure:before{content:"\f130"}.os-scala:before{content:"\f131"}.os-grails:before{content:"\f132"}.os-beaker:before{content:"\f133"}.os-go-gopher:before{content:"\f111"}.os-joomla:before{content:"\f134"}.os-load-balancer:before{content:"\f136"}.os-wildfly:before{content:"\f135"}.os-play:before{content:"\f129"}.os-laravel:before{content:"\f137"}.os-magento:before{content:"\f138"}.os-ghost:before{content:"\f139"}.os-angularjs:before{content:"\f140"}.os-hhvm:before{content:"\f141"}.os-hack:before{content:"\f142"}.os-ceylon:before{content:"\f143"}.os-middleman:before{content:"\f144"}.os-owncloud:before{content:"\f145"}@font-face{font-family:"rh-iconfont";src:url(/content/rh-iconfont.eot);src:url(/content/rh-iconfont.eot?#iefix) format("embedded-opentype"),url(/content/rh-iconfont.woff) format("woff"),url(/content/rh-iconfont.ttf) format("truetype");font-weight:normal;font-style:normal}.rh{display:inline-block;font:normal normal normal 14px/1 rh-iconfont;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0);line-height:1}.rh .pull-left{margin-right:.3em}.rh .pull-right{margin-left:.3em}.rh-inverse{color:#fff}.rh-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.rh-2x{font-size:2em}.rh-3x{font-size:3em}.rh-4x{font-size:4em}.rh-5x{font-size:5em}.rh-6x{font-size:6em}.rh-7x{font-size:7em}.rh-8x{font-size:8em}.rh-9x{font-size:9em}.rh-10x{font-size:10em}.rh-fw{width:1.28571429em;text-align:center}.rh-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.rh-ul>li{position:relative}.rh-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.rh-li.fa-lg{left:-1.85714286em}.rh-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.rh-aed:before{content:"\f101"}.rh-alert-downtime:before{content:"\f102"}.rh-application-alt:before{content:"\f103"}.rh-application:before{content:"\f104"}.rh-atom:before{content:"\f105"}.rh-award-ribbon:before{content:"\f106"}.rh-bar-graph:before{content:"\f107"}.rh-battery:before{content:"\f108"}.rh-bike:before{content:"\f109"}.rh-blueprint:before{content:"\f10a"}.rh-book:before{content:"\f10b"}.rh-bus-front-view:before{content:"\f10c"}.rh-bus-side-view:before{content:"\f10d"}.rh-calculator:before{content:"\f10e"}.rh-calendar:before{content:"\f10f"}.rh-can:before{content:"\f110"}.rh-cardboardrecycling:before{content:"\f111"}.rh-cd-disk:before{content:"\f112"}.rh-check-yes:before{content:"\f113"}.rh-circle-sphere:before{content:"\f114"}.rh-circuit:before{content:"\f115"}.rh-clock:before{content:"\f116"}.rh-cloud-admin:before{content:"\f117"}.rh-cloud:before{content:"\f118"}.rh-code:before{content:"\f119"}.rh-compass:before{content:"\f11a"}.rh-competitive-analysis:before{content:"\f11b"}.rh-complexity:before{content:"\f11c"}.rh-construction-hard-hat:before{content:"\f11d"}.rh-control-panel:before{content:"\f11e"}.rh-create-cloud:before{content:"\f11f"}.rh-cube:before{content:"\f120"}.rh-data:before{content:"\f121"}.rh-datacenter-alt1:before{content:"\f122"}.rh-datacenter:before{content:"\f123"}.rh-development-model:before{content:"\f124"}.rh-eBook:before{content:"\f125"}.rh-electrical:before{content:"\f126"}.rh-elevator-up-down:before{content:"\f127"}.rh-emergency-use-stairs:before{content:"\f128"}.rh-enclave:before{content:"\f129"}.rh-enclave2:before{content:"\f12a"}.rh-envelope-back:before{content:"\f12b"}.rh-ewaste-recycling:before{content:"\f12c"}.rh-ex-no:before{content:"\f12d"}.rh-fan:before{content:"\f12e"}.rh-feather:before{content:"\f12f"}.rh-finance:before{content:"\f130"}.rh-fire-extinguisher:before{content:"\f131"}.rh-frame:before{content:"\f132"}.rh-gears:before{content:"\f133"}.rh-glass-bottle:before{content:"\f134"}.rh-glass-recycling:before{content:"\f135"}.rh-global-ecosystem:before{content:"\f136"}.rh-government:before{content:"\f137"}.rh-handicapped-accessible:before{content:"\f138"}.rh-health-vertical:before{content:"\f139"}.rh-hosting-support:before{content:"\f13a"}.rh-icecaps-mountain:before{content:"\f13b"}.rh-increase-productivity:before{content:"\f13c"}.rh-industry:before{content:"\f13d"}.rh-instructor:before{content:"\f13e"}.rh-insurance:before{content:"\f13f"}.rh-interoperable-cross-platform:before{content:"\f140"}.rh-kiosk:before{content:"\f141"}.rh-lab:before{content:"\f142"}.rh-laptop:before{content:"\f143"}.rh-leaf:before{content:"\f144"}.rh-lifestyle:before{content:"\f145"}.rh-lightbulb-energy-efficient:before{content:"\f146"}.rh-lightbulb-traditional:before{content:"\f147"}.rh-lock:before{content:"\f148"}.rh-locked:before{content:"\f149"}.rh-mail:before{content:"\f14a"}.rh-management-checklist:before{content:"\f14b"}.rh-monitor:before{content:"\f14c"}.rh-mothers-room:before{content:"\f14d"}.rh-moving:before{content:"\f14e"}.rh-network-community:before{content:"\f14f"}.rh-network-personal:before{content:"\f150"}.rh-network:before{content:"\f151"}.rh-no-smoking:before{content:"\f152"}.rh-noise-isolation:before{content:"\f153"}.rh-noise:before{content:"\f154"}.rh-notepad:before{content:"\f155"}.rh-odor:before{content:"\f156"}.rh-office-building-smb:before{content:"\f157"}.rh-office-chair:before{content:"\f158"}.rh-office-desk:before{content:"\f159"}.rh-office-reception:before{content:"\f15a"}.rh-ohc-cloud-apps:before{content:"\f15b"}.rh-ohc-hybrid-cloud:before{content:"\f15c"}.rh-ohc-iaas:before{content:"\f15d"}.rh-ohc-paas:before{content:"\f15e"}.rh-ohc-private-cloud:before{content:"\f15f"}.rh-ohc-public-cloud:before{content:"\f160"}.rh-organization:before{content:"\f161"}.rh-packing:before{content:"\f162"}.rh-paper-lined:before{content:"\f163"}.rh-paper:before{content:"\f164"}.rh-paperrecycling:before{content:"\f165"}.rh-parking:before{content:"\f166"}.rh-partner-map:before{content:"\f167"}.rh-phone-land-line:before{content:"\f168"}.rh-photo-frame-family:before{content:"\f169"}.rh-piggy-bank:before{content:"\f16a"}.rh-plastic-bottle:before{content:"\f16b"}.rh-podium-speakers:before{content:"\f16c"}.rh-policy:before{content:"\f16d"}.rh-price-label:before{content:"\f16e"}.rh-printer-copier:before{content:"\f16f"}.rh-process:before{content:"\f170"}.rh-protected:before{content:"\f171"}.rh-puzzle-piece:before{content:"\f172"}.rh-pyramid:before{content:"\f173"}.rh-radio-podcast:before{content:"\f174"}.rh-recycle-cans:before{content:"\f175"}.rh-recycle-plastic:before{content:"\f176"}.rh-recycle:before{content:"\f177"}.rh-restrooms:before{content:"\f178"}.rh-safety-warning-alert:before{content:"\f179"}.rh-scalable:before{content:"\f17a"}.rh-search:before{content:"\f17b"}.rh-security:before{content:"\f17c"}.rh-server-alt1:before{content:"\f17d"}.rh-server-alt2:before{content:"\f17e"}.rh-server-stack-alt1:before{content:"\f17f"}.rh-server-stack-alt2:before{content:"\f180"}.rh-server-stack:before{content:"\f181"}.rh-server-vintage-alt1:before{content:"\f182"}.rh-server-vintage:before{content:"\f183"}.rh-server:before{content:"\f184"}.rh-shipping-container-rail:before{content:"\f185"}.rh-shipping-container-ship:before{content:"\f186"}.rh-shipping-container-truck:before{content:"\f187"}.rh-shipping-container:before{content:"\f188"}.rh-shopping-bag:before{content:"\f189"}.rh-smart-phone:before{content:"\f18a"}.rh-sports-play:before{content:"\f18b"}.rh-stairs-step-by-step:before{content:"\f18c"}.rh-star:before{content:"\f18d"}.rh-storage-brick:before{content:"\f18e"}.rh-storage-stack:before{content:"\f18f"}.rh-sun:before{content:"\f190"}.rh-talk-bubble-conversation:before{content:"\f191"}.rh-talk-bubble-lined:before{content:"\f192"}.rh-talk-bubble:before{content:"\f193"}.rh-telecom-vertical:before{content:"\f194"}.rh-toolbox:before{content:"\f195"}.rh-tools:before{content:"\f196"}.rh-transportation:before{content:"\f197"}.rh-trash:before{content:"\f198"}.rh-trophy:before{content:"\f199"}.rh-user-1:before{content:"\f19a"}.rh-user-2:before{content:"\f19b"}.rh-user-3:before{content:"\f19c"}.rh-user-4:before{content:"\f19d"}.rh-user-5:before{content:"\f19e"}.rh-utensils:before{content:"\f19f"}.rh-video:before{content:"\f1a0"}.rh-virtual-datacenter:before{content:"\f1a1"}.rh-virtual-server:before{content:"\f1a2"}.rh-virtual-stack:before{content:"\f1a3"}.rh-virtual-storage-brick:before{content:"\f1a4"}.rh-virtual-storage-stack:before{content:"\f1a5"}.rh-volume-mute:before{content:"\f1a6"}.rh-volume:before{content:"\f1a7"}.rh-water-droplet:before{content:"\f1a9"}.rh-water-faucet:before{content:"\f1a9"}.rh-waveform:before{content:"\f1aa"}.rh-webinar:before{content:"\f1ab"}.rh-workplace-strategy:before{content:"\f1ac"}.rh-wrench-mechanical:before{content:"\f1ad"}.rh-web-call:before{content:"\f1ae"}.rh-web-caret-up:before{content:"\f1b2"}.rh-web-cart:before{content:"\f1b3"}.rh-web-check:before{content:"\f1b4"}.rh-web-chevron:before{content:"\f1b5"}.rh-web-close:before{content:"\f1b6"}.rh-web-contact:before{content:"\f1b7"}.rh-web-contact2:before{content:"\f1b8"}.rh-web-copy:before{content:"\f1b9"}.rh-web-dashboard:before{content:"\f1ba"}.rh-web-envelope:before{content:"\f1bb"}.rh-web-facebook:before{content:"\f1bc"}.rh-web-fax:before{content:"\f1bd"}.rh-web-globe:before{content:"\f1be"}.rh-web-gplus:before{content:"\f1bf"}.rh-web-grid:before{content:"\f1c0"}.rh-web-key:before{content:"\f1c1"}.rh-web-laptop:before{content:"\f1c2"}.rh-web-link:before{content:"\f1c3"}.rh-web-linkedin:before{content:"\f1c4"}.rh-web-list-form:before{content:"\f1c5"}.rh-web-list:before{content:"\f1c6"}.rh-web-mobile-menu:before{content:"\f1c7"}.rh-web-new-window:before{content:"\f1c8"}.rh-web-open-quote:before{content:"\f1c9"}.rh-web-open:before{content:"\f1ca"}.rh-web-plus:before{content:"\f1cb"}.rh-web-print:before{content:"\f1cc"}.rh-web-reddit:before{content:"\f1cd"}.rh-web-rss:before{content:"\f1ce"}.rh-web-search:before{content:"\f1cf"}.rh-web-tumblr:before{content:"\f1d0"}.rh-web-twitter:before{content:"\f1d1"}.rh-web-upload:before{content:"\f1d2"}.rh-web-user:before{content:"\f1d3"}.rh-web-youtube:before{content:"\f1d4"}.rh-web-youtube2:before{content:"\f1d5"}