diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5285ad4
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,7 @@
+*~
+output/*
+tmp/*
+.sass-cache/*
+Guardfile
+output.diff
+crash.log
diff --git a/README.md b/README.md
index 99c55c1..28b475a 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,7 @@
+This is a repository for a yet-to-be-announced project. Consider
+everything here company confidential until the announcement.
+
+
 The site is built with *nanoc* and *Bootstrap 3*.
 
   * http://www.nanoc.ws
@@ -30,30 +34,9 @@ May be in RPM:
   * asciidoc
   * nokogiri
 
-Installing on Fedora 19/20:
-Packages will come later for the dependencies.
+Installing on Fedora 20:
+
 <pre>
 sudo yum install ruby asciidoc nokogiri
-gem install nanoc adsf cri compass haml kramdown pry rainpress rubypants sass susy systemu guard-nanoc
+gem install nanoc adsf cri compass haml kramdown pry rainpress rubypants sass susy systemu
 </pre>
-
-
-#Site Layout
-  * Template and menu files live in /layouts
-  * Markdown, erb and processed text files live in /content
-  * Static site content such as images and javascript live in /static
-  * The /lib directory contains nanoc helper files used to process the site
-  * Compiled site content exists in /output
-
-#Building the site
-  * Run 'nanoc' to compile assemble the static site. files from /static, /content, and /layouts will be combined.
-  * You may view the site with 'nanoc view' and then pointing your browser at http://127.0.0.1:3000
-
-You may compile and view the site live as you make changes using the guard module. To do this, run 'guard init' at the root of the site. 
-This will create a watch file that will serve as list for what files the guard module will keep an eye on. Changes to these files will trigger an automatic rebuild of the site.
-Next run 'nanoc view &', followed by 'guard'
-Now in another terminal, you may make changes to the website content, and it will rebuild as you touch files. 
-
-
-#Deploying the site
-Simply run 'nanoc deploy --target=' where the target value is either prod1 or prod2. These targets are defined in the nanoc.yaml file. 
diff --git a/Rules b/Rules
new file mode 100644
index 0000000..ede8eec
--- /dev/null
+++ b/Rules
@@ -0,0 +1,103 @@
+#!/usr/bin/env ruby
+
+## Required Gems
+require 'compass'
+require 'susy'
+
+### Compass configuration ####################################################
+Compass.add_project_configuration 'config.rb'
+sass_options = Compass.sass_engine_options
+
+### Configuration ############################################################
+TypographicalImprovementFilter = :rubypants
+TypographicalImprovementFilterParams = {}
+
+### Preprocessing ############################################################
+preprocess do
+  config[:nanoc_version_info] = `nanoc --version`.strip
+  config[:gem_version_info]   = `gem --version`.strip
+end
+
+### Routing ##################################################################
+route '/static/*' do
+  # /static/foo.html/ → /foo.html
+  item.identifier[7..-2]
+end
+
+route 'sitemap' do
+  item.identifier.chop + '.xml'
+end
+
+
+route '/assets/css/bootstrap/_*/' do
+  # Don't output partials, so return nil
+  nil
+end
+
+route '/assets/css/*/' do
+  # path with version
+  '/assets/style' + '-v' + rep.item[:version].to_s + '.css'
+end
+
+route '*' do
+  if item.binary?
+    item.identifier.chop + '.' + item[:extension]
+  elsif item[:is_partial] || item[:kind] == 'article'
+    # Don’t output partial items (e.g. sub-stylesheets)
+    nil
+  elsif item[:path]
+    item[:path]
+  else
+    # Place each file in its own directory
+    rep.item.identifier + 'index.html'
+  end
+end
+
+
+### Compilation ##############################################################
+
+compile 'sitemap' do
+  filter :erb
+end
+
+compile '/assets/css/bootstrap/_*/' do
+  # Don’t compile partials
+end
+
+compile '/assets/css/*/' do
+  filter :sass, Compass.sass_engine_options
+  filter :relativize_paths, :type => :css
+  filter :rainpress
+end
+compile '/static/*' do
+end
+
+compile '*' do 
+  if item.binary?
+    # ha, do nothing! :)
+  else
+    puts "item = #{item.identifier} -- extension = #{item[:extension]}"
+    case item[:extension]
+    when 'md'
+      filter :erb
+      filter :kramdown
+    when 'haml'
+      filter :erb
+      filter :haml
+    when 'js'
+      filter :erb
+      filter :uglify_js
+    when 'adoc'
+      filter :asciidoc
+    else
+      filter :erb
+    end
+  layout 'default-haml' unless item[:extension] == 'js' 
+  filter :add_ids_to_headers
+  filter TypographicalImprovementFilter, TypographicalImprovementFilterParams
+  end
+end
+### Layouting ################################################################
+
+
+layout '*', :haml 
diff --git a/config.rb b/config.rb
new file mode 100755
index 0000000..dd7e649
--- /dev/null
+++ b/config.rb
@@ -0,0 +1,11 @@
+project_path = "."
+http_path    = '/'
+output_style = :expanded
+sass_dir     = 'content/assets/css'
+css_dir      = 'output/assets/css'
+fonts_dir    = "output/assets/fonts"
+icon_fonts_path   = "output/assets/fonts"
+icon_fonts_dir    = "output/assets/fonts"
+sass_options = {
+  :syntax => :scss
+}
diff --git a/content/about.md b/content/about.md
new file mode 100644
index 0000000..5fd2d9e
--- /dev/null
+++ b/content/about.md
@@ -0,0 +1,31 @@
+---
+title:      "About CentOS"
+markdown:   basic
+is_dynamic: true
+---
+* Table of contents will replace this text.
+{:toc}
+
+
+#CentOS Linux
+The CentOS Linux distribution is a stable, predictable, manageable and reproduceable platform derived from the sources of Red Hat Enterprise Linux (RHEL). We are now looking to expand on that by creating the resources needed by other communities to come together and be able to buld on the CentOS Linux platform. And today we start the process by delivering a clear governance model, increased transparency and access. In the coming weeks we aim to publish our own roadmap that includes variants of the core CentOS Linux.
+
+Since March 2004, CentOS Linux has been a community-supported distribution derived from sources freely provided to the public by Red Hat. As such, CentOS Linux aims to be functionally compatible with RHEL. We mainly changes packages to remove upstream vendor branding and artwork. CentOS Linux is no-cost and [free to redistribute](/legal).
+
+CentOS Linux is developed by a small but growing team of core developers. In turn the core developers are supported by an active user community including system administrators, network administrators, managers, core Linux contributors, and Linux enthusiasts from around the world.
+
+Over the coming year, the CentOS Project will expand its mission to establish CentOS Linux as a leading community platform for emerging open source technologies coming from other projects such as OpenStack. These technologies will be at the center of multiple variations of CentOS, as individual downloads or accessed from a custom installer. Read more about the [variants](/variants) and [Special Interest Groups](http://wiki.centos.org/SpecialInterestGroup) that produce them.
+
+#The CentOS Project
+The CentOS Project is a community-driven free software effort focused around the goal of providing a rich base platform for open source communities to build upon. We will provide a development framework for cloud providers, the hosting community, and scientific data processing, as a few examples. We work with several 'upstream' communities to help them layer and distribute their software more effectively on a platform they can rely on.
+
+
+## The Governing Board
+The CentOS Governing Board is made up of members of the CentOS Project, many of whom have been around since the creation of the Project, as well as new members from Red Hat who were instrumental in bringing the new relationship together. The focus of the Governing Board is to curate the CentOS Project, assist and guide in the progress and development of the various SIGs, as well as to promote CentOS Linux. For more information read the [governance page](/about/governance).
+
+## The Project Structure
+The CentOS Project is modelled on the structure of the [Apache Foundation](http://apache.org), with a governing board that oversees various semi-autonomous [Special Interest Groups or 'SIGs'](http://wiki.centos.org/SpecialInterestGroup). These groups are focused on providing various enhancements, addons, or replacements for core CentOS Linux functionality. A few notable examples of SIGs are:
+
+* [Core](http://wiki.centos.org/SpecialInterestGroup/Core) - Building and releasing the core CentOS Linux platform.
+* [Xen4CentOS](http://wiki.centos.org/Manuals/ReleaseNotes/Xen4-01) - Providing Xen4 support for CentOS 6
+* [CentOS Design](http://wiki.centos.org/ArtWork) - Improving the user experience with high quality artwork
diff --git a/content/about/governance.md b/content/about/governance.md
new file mode 100644
index 0000000..a0feb09
--- /dev/null
+++ b/content/about/governance.md
@@ -0,0 +1,51 @@
+---
+title:      "CentOS Governance"
+markdown:   basic
+is_dynamic: true
+---
+
+* Table of contents will replace this text.
+{:toc}
+
+#CentOS Governance 
+{:.no_toc}
+
+The CentOS Project governance structure has two main tiers: 
+
+* The Governing Board, a group of 8 to 11 people, responsible for overall oversight of the CentOS Project
+* Special Interest Groups (SIGs), teams within the community that focus on either enabling a technology solution as an add-on to the core CentOS release, or building and maintaining a functional aspect of the Project, such as infrastructure or documentation.
+
+<div class="captioned-image">
+  <img class="img-responsive" src="/about/governance/governance-greenhouse.png" alt="Image describing the board">
+  <div class="caption">
+    <p><i>The Governing Board is like a greenhouse, providing support for starting and maturing a SIG the way a greenhouse uses sunlight, water, nutrients, and soil to turn seeds in to fruiting plants.</i></p>
+  </div>
+</div>
+
+## The CentOS Governing Board
+
+The focus of the Governing Board is to assist and guide in the progress and development of the various SIGs, as well as to lead and promote CentOS.
+
+The CentOS Governing Board is the governing body responsible for the overall oversight of the CentOS Project and SIGs, the creation of new SIGs, and the election (and re-election) of new board members. The Board also has the responsibility to ensure the goals, brands, and marks of the CentOS Project and community are protected. The Board serves as the final authority within the CentOS Project.
+
+## Current Sitting Board
+The initial CentOS Governing Board will be made up of members of the CentOS Project, many of whom have been around since the creation of the Project, as well as new members from Red Hat who were instrumental in bringing the new relationship together. 
+
+The CentOS Governing Board is:
+
+* [Carl Trieloff](http://wiki.centos.org/CarlTrieloff)
+* [Fabian Arrotin](http://wiki.centos.org/FabianArrotin)
+* [Jim Perrin](http://wiki.centos.org/JimPerrin)
+* [Johnny Hughes](http://wiki.centos.org/JohnnyHughes)
+* [Karanbir Singh](http://wiki.centos.org/KaranbirSingh) ([Chair](/about/governance/board-responsibilities/#chair-responsibilities))
+* [Karsten Wade](http://wiki.centos.org/KarstenWade) ([Liaison](/about/governance/board-responsibilities/#red-hat-liaison-responsibilities))
+* [Mike McLean](http://wiki.centos.org/MikeMcLean)
+* [Ralph Angenendt](http://wiki.centos.org/RalphAngenendt)
+* [Tru Huynh](http://wiki.centos.org/TruHuynh)
+
+## More information
+* [Governing Board responsibilities](/about/governance/board-responsibilities)
+* [SIGs](/about/governance/sigs)
+* [Joining the project](/about/governance/joining-the-project)
+* [Voting](/about/governance/voting)
+* [Appendix:  Glossary](/about/governance/appendix-glossary)
diff --git a/content/about/governance/appendix-glossary.md b/content/about/governance/appendix-glossary.md
new file mode 100644
index 0000000..4ec30a1
--- /dev/null
+++ b/content/about/governance/appendix-glossary.md
@@ -0,0 +1,38 @@
+---
+title:      "CentOS Governance - Appendix: Glossary"
+markdown:   basic
+is_dynamic: true
+---
+
+* Table of contents will replace this text.
+{:toc}
+
+#CentOS Governance - Appendix: Glossary 
+{:.no_toc}
+[&laquo; Back to Governance](/about/governance)
+
+## Meritocracy
+In the free and open source software communities, meritocracy is one of the 3 main governance models in use and is likely the most popular, powerful, and successful. However, there is still, at times, confusion over how exactly this model works.
+
+First and foremost, the basic tenet behind meritocracy is that people gain merit by their actions and activities within the community. What actually comprises that merit is determined by the pre-existing community itself, and so there exists an internal, stabilizing feedback system that prevents a healthy meritocracy from going askew. This basis of “what is merit” and “how one earns it” is self-defined and known within the community and can, and does, vary from community and project. For example, one FOSS project/community may value simple coding capability above all, and thus heavy-coders will gain merit quickly, whether they do so as volunteers or are paid to do so, and whether they work well with others or not. Other communities value a healthy balance of coding skills with consensus-based collaboration skills, whereas others also include the individual's personal stake in the project (how much they are personally involved and invested).
+
+As the above shows, a meritocracy is not, therefore, a democracy proper but a pseudo-republic. The wants and desires of the community are weighed in the atmosphere of merit that enables access and control.
+
+##Consensus decision making
+One practice of meritocracy is the consensus-based decision model. From http://en.wikipedia.org/wiki/Consensus_decision-making, “Consensus decision-making is a group decision making process that seeks the consent of all participants.” In practice, it is different from a majority-vote-wins approach. In the CentOS Project a discussion toward a decision follows this process:
+
+1. A proposal is put forth and a check for consensus is made.
+   1. Consensus is signified through a +1 vote.
+1. A check is made for any dissent on the proposal.
+   1. Reservations? State reservation, sometimes with a ‘-1’ signifier
+      1. Reservations about the proposal are worked through, seeking consensus to resolve the reservations.
+      1. A reservation is not a vote against the proposal, but may turn into a vote against if unresolved. It is often expressed with an initial -1 vote to indicate reservations and concerns. This indicates there is still discussion to be had.
+   1. Stand aside? No comment, or state concerns without a -1 reservation; sometimes the ‘-0’ signifier is used.
+      1. This option allows a member to have issues with the proposal without choosing to block the proposal, by instead standing aside with a +/-0 vote.
+      1. The stated concerns may influence other people to have or release reservations.
+   1. Block? Vote ‘-1’ with reasons for the block.
+      1. This is a complete block on a proposal, refusing to let it pass. A block is a -1 vote and must be accompanied with substantive arguments that are rooted in the merit criteria of the Project -- protecting the community, the upstream, technical reasons, and so forth.
+
+Block (-1) votes used as a veto are typically used only when consensus cannot otherwise be met, and are effectively a veto that any sitting Board member can utilize with sufficient substantiation.
+
+[&laquo; Back to Governance](/about/governance)
diff --git a/content/about/governance/board-diagram-involvement.png b/content/about/governance/board-diagram-involvement.png
new file mode 100644
index 0000000..dafd110
Binary files /dev/null and b/content/about/governance/board-diagram-involvement.png differ
diff --git a/content/about/governance/board-responsibilities.md b/content/about/governance/board-responsibilities.md
new file mode 100644
index 0000000..5a3b4f4
--- /dev/null
+++ b/content/about/governance/board-responsibilities.md
@@ -0,0 +1,60 @@
+---
+title:      "CentOS Governance - Board Structure"
+markdown:   basic
+is_dynamic: true
+---
+
+* Table of contents will replace this text.
+{:toc}
+
+#CentOS Governing Responsibilities
+{:.no_toc}
+[&laquo; Back to Governance](/about/governance)
+
+## CentOS Governing Board Responsibilities
+* Guidance and leadership over the ultimate Project roadmap.
+* Community outreach.
+* Maintenance of health and viability of CentOS community.
+* Maintenance of a healthy and proactive relationship with the Project users and consider those needs and uses in decisions.
+* Coordination of Project messaging.
+* Overall Project leadership as the final escalation point for decisions unable to be resolved effectively at the SIG level.
+* Approval of new SIGs and changes to SIGs charters.
+* Approval of new contributors as requested by SIGs.
+* Approval of SIG graduations.
+* Oversight of SIG variants, including those that may fork or drive the core base OS.  At a minimum,
+  * There must be overwhelming community support for this;
+  * It must be net-positive or, at least, net-neutral to the core.
+* Trademark and brand oversight.
+  * Create Git licensing and contribution policies.
+* Appointment of Board Chair.
+* Appointment  of new Board members.
+* Re-appointment of Board members after 12 month term of service.
+
+## Individual Governing Board Member Responsibilities
+* Work with SIGs as mentors to help SIGs reach effective stability and self-sustainability.
+* Act as leaders across the community, generally and as appropriate.
+  * Continue to be active in one or more SIGs.
+* Attend Board meetings on a regular basis via the agreed-upon meeting methods.
+  * Occasionally be available on short notice or for important Board business, electronically or in person.
+  * Be responsive to highly important or critical items raised by the Chair or Liaison (both defined below), including attending urgent or emergency Board meetings, to provide a quorum and conduct voting or other necessary actions.
+* Strive to conduct Board business transparently following the principles of the open source way.
+
+The CentOS Governing Board shall include two named roles: a Chair and a Liaison, which shall be present at all times on the Board. The Board is responsible for appointing one Board member as Chair. Red Hat is responsible for appointing the Liaison role to a Board member, who must be a Red Hat employee.
+
+## Chair Responsibilities
+* Organize and run the Board meetings.
+* Be the coordinating and lead voice for the Project.
+* Coordinate the Board to set direction and articulation thereof.
+* Focus on helping the Board to reach consensus.
+* Guide the Board in transparency and practicing the open source way in leadership and decision making.
+
+## Red Hat Liaison Responsibilities
+* Provide the perspective and insights to the Board on Red Hat business (including potential legal, ecosystem, and security concerns) by acting as the interface for various Red Hat constituencies.
+* Allow for the Board to bring concerns or perspectives from the community to Red Hat.
+* The Liaison may be requested by the Board Chair to escalate a decision beyond the Board in some cases when the Board cannot reach consensus. This is discussed in the section on The Role of the Liaison.
+
+The Liaison is required to be a Red Hat employee, which will enable this person to be an effective bi-directional conduit between Red Hat and the CentOS Project. The Chair, however, can be anyone selected by the Board from among its members. The Liaison may be rotated at any time to an alternate Red Hat employee who is a  Board member. Newly appointed Board members may also hold the Liaison seat. The Chair and the Liaison cannot be the same person. 
+
+The Board will operate under the principles of [meritocracy](/about/governance/appendix-glossary/#meritocracy), having the Board be driven by a [consensus-based decision model](/about/governance/appendix-glossary/#consensus-decision-making). This model fosters an active healthy debate that furthers the Project while recognising its relationship to Red Hat’s product source, the new formal relationship with Red Hat, and preserving the viability of the key upstream that feeds it.
+
+[&laquo; Back to Governance](/about/governance)
diff --git a/content/about/governance/governance-greenhouse.png b/content/about/governance/governance-greenhouse.png
new file mode 100644
index 0000000..abefde2
Binary files /dev/null and b/content/about/governance/governance-greenhouse.png differ
diff --git a/content/about/governance/governance-structure-diagram.png b/content/about/governance/governance-structure-diagram.png
new file mode 100644
index 0000000..5ded58d
Binary files /dev/null and b/content/about/governance/governance-structure-diagram.png differ
diff --git a/content/about/governance/joining-the-project.md b/content/about/governance/joining-the-project.md
new file mode 100644
index 0000000..b629894
--- /dev/null
+++ b/content/about/governance/joining-the-project.md
@@ -0,0 +1,39 @@
+---
+title:      "CentOS Governance - Joining the Project"
+markdown:   basic
+is_dynamic: true
+---
+
+* Table of contents will replace this text.
+{:toc}
+
+#CentOS Governance - Joining the Project
+{:.no_toc}
+[&laquo; Back to Governance](/about/governance)
+
+There are 3 primary paths within the CentOS Project  for individuals to obtain and grow merit. The main path is  by proving yourself within a SIG or between SIGs (if the SIGs are related in such a way that merit would be transferred.)  A second path is  to get involved in the primary technical SIG, CentOS Core.  A third path is to be part of the Governing Board.
+
+##Variant or Functional SIGs
+Individuals wishing to participate in the CentOS Project typically start as users then contributors and eventually committers to a SIG. A contributor is anyone who contributes something to the Project, such as documentation, code, forum help, wiki edits, IRC moderating, and so forth. A committer is a contributor who has gained the right through merit to commit their own contributions directly to Project source repositories, such as git.centos.org (code) and wiki.centos.org (documentation.)
+
+The initial level of effort required is quite low, and generally consists of those who use CentOS and submit bug reports and patches to the build, or other contributions as per a SIG's needs. By creating a steady reputation in helping out a SIG, the SIG team may decide to provide that person with commit access (to any stream of contributions required to show and gain merit, such as code, wiki articles, design artifacts, etc.) under the watchful eye of an assigned mentor. The individual is expected to grow in merit enough that the mentor is no longer required, and at the request of the mentor, the individual becomes a peer within the SIG committer group. The structure in a SIG is flat and a peer with 1 month of experience has as much of a voice about project direction as one with 1 or more years.
+
+##CentOS Core SIG
+A SIG with a higher barrier to entry is the CentOS Core SIG, which has the ultimate say in technical and directional decisions related to the build and components in the core. The CentOS Core SIG team is selected for membership from the CentOS Core SIG committer group, as voted on by the current team. Obtaining core team membership requires current members to give at least 3 +1 votes and no -1 votes. A -1 vote on core team membership must be based on a substantive reason, such as technical, Project merit, community behavior, etc.
+
+A SIG that consistently has a significant number of -1 votes, especially from a single person, indicates an issue that should be brought to the attention of the Board , as it may be an indicator of a dis-functional SIG and may adversely impact the meritocracy.
+
+##Board Members
+Each Board member appointed or reconfirmed by the Board will be selected based on merit. Merit criteria have been defined to recognize, among other things, active participation in the  CentOS Project, an understanding of the Project, and an understanding and ability to balance the objectives derived from the relationship with it’s Red Hat-based upstream. In this regard, Candidate Board members must:
+
+* Have demonstrated, including through active participation and contribution to the broader aspects of running the CentOS Project for an extended period of time, a solid understanding of and motivation to foster a healthy relationship to it's upstream, the factors that influence and guide that ecosystem, and the need to maintain the health and vitality of that ecosystem.
+* Promote CentOS and the needs of the community projects in CentOS to achieve active and vibrant adoption in the community for CentOS.
+* Have the ability to debate, understand, and balance sometimes opposing CentOS Project objectives.
+* Have a solid understanding of meritocracy, the merit criteria and running, operating, and/or governing a large scale FOSS community project.
+
+Based upon the merit criteria, the existing Board may nominate additional Board members. The Board must consist of at least 8 members and is capped at a total of 11 members. Given Red Hat's strategic hiring of original core members to focus more extensively on the Project, and in consideration of its strategic ongoing contributions and investment, Red Hat will maintain and hold a majority of governing Board members. In addition, the Board values user representation on the Board directly through members seated on the Board who have met the merit criteria. This is in addition to the indirect user community influence via interactions with individual Board members.
+
+As the new CentOS grows and learns, the CentOS community may propose to the Board and/or the Board may propose its own changes to the governance and/or the merit criteria to account for, among other things, confusion or inadequacies.    
+
+[&laquo; Back to Governance](/about/governance)
+
diff --git a/content/about/governance/sig-maturity-crossover.png b/content/about/governance/sig-maturity-crossover.png
new file mode 100644
index 0000000..6339755
Binary files /dev/null and b/content/about/governance/sig-maturity-crossover.png differ
diff --git a/content/about/governance/sigs.md b/content/about/governance/sigs.md
new file mode 100644
index 0000000..5f5c0fe
--- /dev/null
+++ b/content/about/governance/sigs.md
@@ -0,0 +1,79 @@
+---
+title:      "CentOS Governance - SIGs"
+markdown:   basic
+is_dynamic: true
+---
+
+* Table of contents will replace this text.
+{:toc}
+
+#The CentOS SIGs
+{:.no_toc}
+[&laquo; Back to Governance](/about/governance)
+
+The Special Interest Groups (SIGs), are the teams responsible for their specific CentOS Project variants. Variants are specialized and focused rebuilds of CentOS to meet the needs and requirements of their corresponding communities and the technology associated with those communities.
+
+SIGs are usually self-forming around a technology by a small community of enthusiasts and interested parties. In addition to the existing CentOS SIGs, it is expected that additional SIGs, as approved by the CentOS Board, will be created.
+
+Each group will be responsible for its own variant in CentOS that is specifically targeted towards its community (e.g., The CentOS FooBar SIG creates a CentOS variant targeted to FooBar users and developers, the CentOS Hosting SIG builds a variant for web hosters, included in the CentOS distribution). The SIG is the deciding authority on what is required in their variant to satisfy the needs of their community, with the understanding that the Board has ultimate oversight as explained elsewhere. If required, the CentOS Board will help the individual SIGs to reach consensus on any issues or problems.
+
+SIGs are the only way for an entity to use and associate the CentOS brand with a variant. You can always use Git and the repo to fork and try-out ideas, but only those packages in git.centos.org and released and signed by CentOS can be called ‘CentOS’.
+
+Another type of SIG is functional, focused on maintaining parts of the Project itself, such as infrastructure, documentation, and design. A unique SIG is the Core SIG that builds and maintains the core CentOS derivative of Red Hat Enterprise Linux. It is unique because it is the central, orchestrating platform that all other variants are built from.
+
+##CentOS Core SIG Responsibilities
+* Build the CentOS release.
+* _Sign_ the CentOS release.
+* Push official CentOS releases to the initial mirror.
+* Coordinate with upstream as required.
+* Accept changes into Git.
+  * Manage Git licensing and contribution policies.
+
+##Variant SIG Responsibilities
+* Create and maintain one or more variations with technology in CentOS on top of or modifications to the core base.
+* Foster a user community as a primary purpose of the variant.
+  * Keep the Project artifacts (the variant) relevant and useful to the user community.
+* Ensure the software brought in to support the variant is licensed and prepared properly for packaging and distribution as part of the CentOS Project.
+* Oversee inclusions of code related to the variant in to git.centos.org.
+* Conduct the business of the SIG following accepted open source practices around meritocracy and consensus decision making.
+
+##Functional SIG Responsibilities
+* Accountable for designing, building, and maintaining key Project component(s).
+* Make the functional area open for participation, with barriers to contribution as low as feasible and reasonable.
+* Foster a community of users and doers around the functional aspect, to share the responsibility, workload, and innovation.
+* Work within given legal constraints and requirements.
+
+##SIG Governance
+
+<div class="captioned-image">
+  <img class="img-responsive" src="/about/governance/sig-maturity-crossover.png" alt="Illustration" />
+  <div class="caption">
+    <p><i><!-- caption can go here --></i></p>
+  </div>
+</div>
+
+The SIGs themselves also have a merit path toward autonomy and accountability for Project aspects. The determination of merit level is reflected in the amount of oversight required by the Board and the SIGs ability to self-sign and release software builds. As merit increases, Board oversight goes down, with a transition spot in the middle where the SIG naturally obtains more autonomy, usually toward the end of the “Early” phase.
+
+
+__Sandboxes__ are the entry point for all proposed SIGs. To enter, there must be a Champion from or approved by the Board and a proposal (which indicates the reason for the SIG, the expected audience, initial team, risks, etc.) For a SIG to be created, there must be at least 3 +1 votes from the Board (NOT including the Champion) and zero (nil) -1 votes. When approved, the Champion becomes the formal Mentor of the Sandbox SIG.
+
+Sandboxes cannot make formal releases, but can create releases that allow people, developers, etc. to use, test, and play with the build. Sandboxes are also closely monitored by the Board to ensure that they are attracting interest and developers and users are learning the ropes regarding SIG operation. All new committers, developers, SIG core team members, etc. must be approved by the Board.
+
+SIGs that have expressed a level of merit, as determined by the Board, will move to the __Early__ SIG stage (Sandboxes can request graduation to Early, if they like). These SIGs are allowed to create formal releases, but the release must be approved by the Board and signed by the Mentor. In all other matters, however, they are self-sufficient and no longer require Board approval, such as as in adding committers and so forth. Movement from Sandbox to Early is via 3 +1 vote of the Board (Mentor not included) and zero (nil) -1 votes.
+
+The final stage is the __Mature__ SIG. Again, this graduation is based on the judgment and determination of the Board, but this movement must be a unanimous decision of the Board. The Mature SIG has full control over the SIG, pulling in its own sources to git.centos.org, its releases, its internal governance, and has the ability to self-sign releases. The Board members may vote in, or participate in any SIG decision at any time.
+
+In both the Sandbox and Early SIGs, the role of the Board is primarily to facilitate the movement of those SIGs towards the Mature level; it serves as an initial gateway with the goal of getting out of the way of the SIGs.
+
+Note that in all cases, maturity is a measure of the community itself, and not the codebase or the actual SIG variant release. A mature SIG could create a non-mature (e.g., Alpha or Beta release) distribution and, conversely, a Sandbox SIG could produce a very mature (robust and reliable) distro.
+
+##Community and SIGs
+SIGs represent the true power and value of the CentOS Project. As seen in the current CentOS Dojos, and in the CentOS community itself, the builds provide a safe, neutral, and communal central meeting place for major technology areas. This is the reason why SIGs should not be program/project specific (e.g., a MariaDB rebuild), but rather technology-area focused (e.g., the “Hoster's” rebuild). By creating a central point where all projects and communities can interact, using the OS as the common foundation, upstream projects will be able to reach and interface with a much larger audience.
+
+It is expected that SIGs may propose significant forking of the base CentOS core, such as introducing a new Python version or Linux kernel. It is the job of the Board and CentOS Core SIG to oversee and approve any forks that are pulled back into Git, including to ensure that these forks are supportable. This support is best done by an active and engaged variant SIG. The Board or CentOS Core SIG can pull a variant from release if they reasonably believe the variant SIG is unable to support the variant. Another option is reassigning an active variant from a dead SIG to a willing living SIG. The Board is specifically not limited in what it can do to protect the quality of the CentOS mark where it comes to the content and quality of a variant.
+
+If you want to start a SIG please email the board at [centosdev@centos.org](mailto:centosdev@centos.org) or [board-requests@centos.org](mailto:board-requests@centos.org) for private correspondence.
+
+For the current list of active SIGs, refer to [http://wiki.centos.org/SpecialInterestGroup](http://wiki.centos.org/SpecialInterestGroup)
+
+[&laquo; Back to Governance](/about/governance)
diff --git a/content/about/governance/voting.md b/content/about/governance/voting.md
new file mode 100644
index 0000000..59febee
--- /dev/null
+++ b/content/about/governance/voting.md
@@ -0,0 +1,34 @@
+---
+title:      "CentOS Governance - Voting"
+markdown:   basic
+is_dynamic: true
+---
+
+* Table of contents will replace this text.
+{:toc}
+
+#CentOS Governance - Voting
+{:.no_toc}
+[&laquo; Back to Governance](/about/governance)
+
+The voting system used by all SIGs and the Governing Board uses a [consensus-based decision model](/about/governance/appendix-glossary/#consensus-decision-making) except where noted.
+
+Except where noted, decisions require 3 yes votes (+1) and no objections (-1's) and, except as noted below, votes should be left open for at least 72 hours. Any Board member may cast a vote in any SIG vote and it is considered binding (counted against the vote). If a vote is held on a public list (e.g., to test the broader consensus of a group) only the votes of the Board members for Board votes or SIG committers or Board members for SIG votes are considered binding. All other votes are just considered as valuable data in the decision process. Board business may be conducted on a private or public list, whichever is more appropriate for the issue at hand.
+
+All -1s votes require reason/ explanation, -1's with no substantiation may be overturned. 
+
+##When do votes need to be called?
+Votes need to be called for all substantial business. Votes need to be left open for a reasonable period (not less than 72 hours) if members of the Board are not available to participate in the vote; provided that for votes/matters that have been deemed time or business critical by Red Hat, as noted below, voting must be held open until the Liaison has voted.
+
+_Lazy consensus_ may be used for non-substantial business. Lazy consensus is defined as asking for objections as opposed to calling for a vote. Any objection on lazy consensus is considered the same as a -1 on a vote. There is no minimum +1 vote requirement.
+
+##Role of the Liaison
+The Liaison also has the role of dealing with issues such as security, export, or items that have a direct legal or other Red Hat business connection for the Project, and on issues of such business may have an additional role as defined by the following:
+
+A. If a decision/solution cannot be found on an issue that is deemed time and/or business critical by Red Hat then, after a reasonable time, the Liaison may be requested by the Chair to seek assistance from Red Hat in making the decision, obtaining additional input from Red Hat executives, engineers, and stakeholders.
+
+B.  The Liaison may, in exceptional circumstances, make a decision on behalf of the Board if a consensus has not been reached on an issue that is deemed time or business critical by Red Hat if:  (1) a board quorum (i.e., a majority) is present or a quorum of Board members has cast their votes; or (2) after 3 working days if a Board quorum is not present at a meeting or a quorum has not cast their votes (list votes); provided that the Chair may (or at the request of the Liaison, will) call a meeting and demand that a quorum be present.  
+
+Unless the Liaison specifically indicates on a specific issue that he/she is acting in his/her official capacity as Liaison, either prior to a vote or later (e.g., after an issue has been deemed time or business critical), the Liaison’s voice and vote is treated the same as any other member of the Board. Decisions indicated as Liaison decisions made on behalf of the Board by the Liaison may not be overturned. 
+
+[&laquo; Back to Governance](/about/governance)
diff --git a/content/assets/css/bootstrap.scss b/content/assets/css/bootstrap.scss
new file mode 100644
index 0000000..361b2f4
--- /dev/null
+++ b/content/assets/css/bootstrap.scss
@@ -0,0 +1,7 @@
+---
+version:    2
+is_hidden:  true
+is_dynamic: false
+---
+
+@import "bootstrap/bootstrap";
diff --git a/content/assets/css/bootstrap/_alerts.scss b/content/assets/css/bootstrap/_alerts.scss
new file mode 100644
index 0000000..cba8a1f
--- /dev/null
+++ b/content/assets/css/bootstrap/_alerts.scss
@@ -0,0 +1,67 @@
+//
+// Alerts
+// --------------------------------------------------
+
+
+// Base styles
+// -------------------------
+
+.alert {
+  padding: $alert-padding;
+  margin-bottom: $line-height-computed;
+  border: 1px solid transparent;
+  border-radius: $alert-border-radius;
+
+  // Headings for larger alerts
+  h4 {
+    margin-top: 0;
+    // Specified for the h4 to prevent conflicts of changing $headingsColor
+    color: inherit;
+  }
+  // Provide class for links that match alerts
+  .alert-link {
+    font-weight: $alert-link-font-weight;
+  }
+
+  // Improve alignment and spacing of inner content
+  > p,
+  > ul {
+    margin-bottom: 0;
+  }
+  > p + p {
+    margin-top: 5px;
+  }
+}
+
+// Dismissable alerts
+//
+// Expand the right padding and account for the close button's positioning.
+
+.alert-dismissable {
+ padding-right: ($alert-padding + 20);
+
+  // Adjust close link position
+  .close {
+    position: relative;
+    top: -2px;
+    right: -21px;
+    color: inherit;
+  }
+}
+
+// Alternate styles
+//
+// Generate contextual modifier classes for colorizing the alert.
+
+.alert-success {
+  @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text);
+}
+.alert-info {
+  @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text);
+}
+.alert-warning {
+  @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text);
+}
+.alert-danger {
+  @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text);
+}
diff --git a/content/assets/css/bootstrap/_badges.scss b/content/assets/css/bootstrap/_badges.scss
new file mode 100644
index 0000000..191b715
--- /dev/null
+++ b/content/assets/css/bootstrap/_badges.scss
@@ -0,0 +1,51 @@
+//
+// Badges
+// --------------------------------------------------
+
+
+// Base classes
+.badge {
+  display: inline-block;
+  min-width: 10px;
+  padding: 3px 7px;
+  font-size: $font-size-small;
+  font-weight: $badge-font-weight;
+  color: $badge-color;
+  line-height: $badge-line-height;
+  vertical-align: baseline;
+  white-space: nowrap;
+  text-align: center;
+  background-color: $badge-bg;
+  border-radius: $badge-border-radius;
+
+  // Empty badges collapse automatically (not available in IE8)
+  &:empty {
+    display: none;
+  }
+}
+
+// Hover state, but only for links
+a.badge {
+  &:hover,
+  &:focus {
+    color: $badge-link-hover-color;
+    text-decoration: none;
+    cursor: pointer;
+  }
+}
+
+// Quick fix for labels/badges in buttons
+.btn .badge {
+  position: relative;
+  top: -1px;
+}
+
+// Account for counters in navs
+a.list-group-item.active > .badge,
+.nav-pills > .active > a > .badge {
+  color: $badge-active-color;
+  background-color: $badge-active-bg;
+}
+.nav-pills > li > a > .badge {
+  margin-left: 3px;
+}
diff --git a/content/assets/css/bootstrap/_breadcrumbs.scss b/content/assets/css/bootstrap/_breadcrumbs.scss
new file mode 100644
index 0000000..d6097c9
--- /dev/null
+++ b/content/assets/css/bootstrap/_breadcrumbs.scss
@@ -0,0 +1,23 @@
+//
+// Breadcrumbs
+// --------------------------------------------------
+
+
+.breadcrumb {
+  padding: 8px 15px;
+  margin-bottom: $line-height-computed;
+  list-style: none;
+  background-color: $breadcrumb-bg;
+  border-radius: $border-radius-base;
+  > li {
+    display: inline-block;
+    &+li:before {
+      content: "/\00a0"; // Unicode space added since inline-block means non-collapsing white-space
+      padding: 0 5px;
+      color: $breadcrumb-color;
+    }
+  }
+  > .active {
+    color: $breadcrumb-active-color;
+  }
+}
diff --git a/content/assets/css/bootstrap/_button-groups.scss b/content/assets/css/bootstrap/_button-groups.scss
new file mode 100644
index 0000000..53b9bf2
--- /dev/null
+++ b/content/assets/css/bootstrap/_button-groups.scss
@@ -0,0 +1,248 @@
+//
+// Button groups
+// --------------------------------------------------
+
+// Button carets
+//
+// Match the button text color to the arrow/caret for indicating dropdown-ness.
+
+.caret {
+  .btn-default & {
+    border-top-color: $btn-default-color;
+  }
+  .btn-primary &,
+  .btn-success &,
+  .btn-warning &,
+  .btn-danger &,
+  .btn-info & {
+    border-top-color: #fff;
+  }
+}
+.dropup {
+  & .btn-default .caret {
+    border-bottom-color: $btn-default-color;
+  }
+  .btn-primary,
+  .btn-success,
+  .btn-warning,
+  .btn-danger,
+  .btn-info {
+   .caret {
+      border-bottom-color: #fff;
+    }
+  }
+}
+
+// Make the div behave like a button
+.btn-group,
+.btn-group-vertical {
+  position: relative;
+  display: inline-block;
+  vertical-align: middle; // match .btn alignment given font-size hack above
+  > .btn {
+    position: relative;
+    float: left;
+    // Bring the "active" button to the front
+    &:hover,
+    &:focus,
+    &:active,
+    &.active {
+      z-index: 2;
+    }
+    &:focus {
+      // Remove focus outline when dropdown JS adds it after closing the menu
+      outline: none;
+    }
+  }
+}
+
+// Prevent double borders when buttons are next to each other
+.btn-group {
+  .btn + .btn,
+  .btn + .btn-group,
+  .btn-group + .btn,
+  .btn-group + .btn-group {
+    margin-left: -1px;
+  }
+}
+
+// Optional: Group multiple button groups together for a toolbar
+.btn-toolbar {
+  @include clearfix();
+
+  .btn-group {
+    float: left;
+  }
+  // Space out series of button groups
+  > .btn,
+  > .btn-group {
+    + .btn,
+    + .btn-group {
+      margin-left: 5px;
+    }
+  }
+}
+
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+  border-radius: 0;
+}
+
+// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match
+.btn-group > .btn:first-child {
+  margin-left: 0;
+  &:not(:last-child):not(.dropdown-toggle) {
+    @include border-right-radius(0);
+  }
+}
+// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+  @include border-left-radius(0);
+}
+
+// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)
+.btn-group > .btn-group {
+  float: left;
+}
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.btn-group > .btn-group:first-child {
+  > .btn:last-child,
+  > .dropdown-toggle {
+    @include border-right-radius(0);
+  }
+}
+.btn-group > .btn-group:last-child > .btn:first-child {
+  @include border-left-radius(0);
+}
+
+// On active and open, don't show outline
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+  outline: 0;
+}
+
+
+// Sizing
+//
+// Remix the default button sizing classes into new ones for easier manipulation.
+
+.btn-group-xs > .btn { @extend .btn-xs; }
+.btn-group-sm > .btn { @extend .btn-sm; }
+.btn-group-lg > .btn { @extend .btn-lg; }
+
+
+// Split button dropdowns
+// ----------------------
+
+// Give the line between buttons some depth
+.btn-group > .btn + .dropdown-toggle {
+  padding-left: 8px;
+  padding-right: 8px;
+}
+.btn-group > .btn-lg + .dropdown-toggle {
+  padding-left: 12px;
+  padding-right: 12px;
+}
+
+// The clickable button for toggling the menu
+// Remove the gradient and set the same inset shadow as the :active state
+.btn-group.open .dropdown-toggle {
+  @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
+}
+
+
+// Reposition the caret
+.btn .caret {
+  margin-left: 0;
+}
+// Carets in other button sizes
+.btn-lg .caret {
+  border-width: $caret-width-large $caret-width-large 0;
+  border-bottom-width: 0;
+}
+// Upside down carets for .dropup
+.dropup .btn-lg .caret {
+  border-width: 0 $caret-width-large $caret-width-large;
+}
+
+
+// Vertical button groups
+// ----------------------
+
+.btn-group-vertical {
+  > .btn,
+  > .btn-group {
+    display: block;
+    float: none;
+    width: 100%;
+    max-width: 100%;
+  }
+
+  // Clear floats so dropdown menus can be properly placed
+  > .btn-group {
+    @include clearfix();
+    > .btn {
+      float: none;
+    }
+  }
+
+  > .btn + .btn,
+  > .btn + .btn-group,
+  > .btn-group + .btn,
+  > .btn-group + .btn-group {
+    margin-top: -1px;
+    margin-left: 0;
+  }
+}
+
+.btn-group-vertical > .btn {
+  &:not(:first-child):not(:last-child) {
+    border-radius: 0;
+  }
+  &:first-child:not(:last-child) {
+    border-top-right-radius: $border-radius-base;
+    @include border-bottom-radius(0);
+  }
+  &:last-child:not(:first-child) {
+    border-bottom-left-radius: $border-radius-base;
+    @include border-top-radius(0);
+  }
+}
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+  border-radius: 0;
+}
+.btn-group-vertical > .btn-group:first-child {
+  > .btn:last-child,
+  > .dropdown-toggle {
+    @include border-bottom-radius(0);
+  }
+}
+.btn-group-vertical > .btn-group:last-child > .btn:first-child {
+  @include border-top-radius(0);
+}
+
+
+
+// Justified button groups
+// ----------------------
+
+.btn-group-justified {
+  display: table;
+  width: 100%;
+  table-layout: fixed;
+  border-collapse: separate;
+  .btn {
+    float: none;
+    display: table-cell;
+    width: 1%;
+  }
+}
+
+
+// Checkbox and radio options
+[data-toggle="buttons"] > .btn > input[type="radio"],
+[data-toggle="buttons"] > .btn > input[type="checkbox"] {
+  display: none;
+}
diff --git a/content/assets/css/bootstrap/_buttons.scss b/content/assets/css/bootstrap/_buttons.scss
new file mode 100644
index 0000000..564b28c
--- /dev/null
+++ b/content/assets/css/bootstrap/_buttons.scss
@@ -0,0 +1,160 @@
+//
+// Buttons
+// --------------------------------------------------
+
+
+// Base styles
+// --------------------------------------------------
+
+// Core styles
+.btn {
+  display: inline-block;
+  padding: $padding-base-vertical $padding-base-horizontal;
+  margin-bottom: 0; // For input.btn
+  font-size: $font-size-base;
+  font-weight: $btn-font-weight;
+  line-height: $line-height-base;
+  text-align: center;
+  vertical-align: middle;
+  cursor: pointer;
+  border: 1px solid transparent;
+  border-radius: $border-radius-base;
+  white-space: nowrap;
+  @include user-select(none);
+
+  &:focus {
+    @include tab-focus();
+  }
+
+  &:hover,
+  &:focus {
+    color: $btn-default-color;
+    text-decoration: none;
+  }
+
+  &:active,
+  &.active {
+    outline: 0;
+    background-image: none;
+    @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
+  }
+
+  &.disabled,
+  &[disabled],
+  fieldset[disabled] & {
+    cursor: not-allowed;
+    pointer-events: none; // Future-proof disabling of clicks
+    @include opacity(.65);
+    @include box-shadow(none);
+  }
+
+}
+
+
+// Alternate buttons
+// --------------------------------------------------
+
+.btn-default {
+  @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border);
+}
+.btn-primary {
+  @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border);
+}
+// Warning appears as orange
+.btn-warning {
+  @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border);
+}
+// Danger and error appear as red
+.btn-danger {
+  @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border);
+}
+// Success appears as green
+.btn-success {
+  @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border);
+}
+// Info appears as blue-green
+.btn-info {
+  @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border);
+}
+
+
+// Link buttons
+// -------------------------
+
+// Make a button look and behave like a link
+.btn-link {
+  color: $link-color;
+  font-weight: normal;
+  cursor: pointer;
+  border-radius: 0;
+
+  &,
+  &:active,
+  &[disabled],
+  fieldset[disabled] & {
+    background-color: transparent;
+    @include box-shadow(none);
+  }
+  &,
+  &:hover,
+  &:focus,
+  &:active {
+    border-color: transparent;
+  }
+  &:hover,
+  &:focus {
+    color: $link-hover-color;
+    text-decoration: underline;
+    background-color: transparent;
+  }
+  &[disabled],
+  fieldset[disabled] & {
+    &:hover,
+    &:focus {
+      color: $btn-link-disabled-color;
+      text-decoration: none;
+    }
+  }
+}
+
+
+// Button Sizes
+// --------------------------------------------------
+
+.btn-lg {
+  // line-height: ensure even-numbered height of button next to large input
+  @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large);
+}
+.btn-sm,
+.btn-xs {
+  // line-height: ensure proper height of button next to small input
+  @include button-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small);
+}
+.btn-xs {
+  padding: 1px 5px;
+}
+
+
+// Block button
+// --------------------------------------------------
+
+.btn-block {
+  display: block;
+  width: 100%;
+  padding-left: 0;
+  padding-right: 0;
+}
+
+// Vertically space out multiple block buttons
+.btn-block + .btn-block {
+  margin-top: 5px;
+}
+
+// Specificity overrides
+input[type="submit"],
+input[type="reset"],
+input[type="button"] {
+  &.btn-block {
+    width: 100%;
+  }
+}
diff --git a/content/assets/css/bootstrap/_carousel.scss b/content/assets/css/bootstrap/_carousel.scss
new file mode 100644
index 0000000..40d4c6c
--- /dev/null
+++ b/content/assets/css/bootstrap/_carousel.scss
@@ -0,0 +1,209 @@
+//
+// Carousel
+// --------------------------------------------------
+
+
+// Wrapper for the slide container and indicators
+.carousel {
+  position: relative;
+}
+
+.carousel-inner {
+  position: relative;
+  overflow: hidden;
+  width: 100%;
+
+  > .item {
+    display: none;
+    position: relative;
+    @include transition(.6s ease-in-out left);
+
+    // Account for jankitude on images
+    > img,
+    > a > img {
+      @include img-responsive();
+      line-height: 1;
+    }
+  }
+
+  > .active,
+  > .next,
+  > .prev { display: block; }
+
+  > .active {
+    left: 0;
+  }
+
+  > .next,
+  > .prev {
+    position: absolute;
+    top: 0;
+    width: 100%;
+  }
+
+  > .next {
+    left: 100%;
+  }
+  > .prev {
+    left: -100%;
+  }
+  > .next.left,
+  > .prev.right {
+    left: 0;
+  }
+
+  > .active.left {
+    left: -100%;
+  }
+  > .active.right {
+    left: 100%;
+  }
+
+}
+
+// Left/right controls for nav
+// ---------------------------
+
+.carousel-control {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  width: $carousel-control-width;
+  @include opacity($carousel-control-opacity);
+  font-size: $carousel-control-font-size;
+  color: $carousel-control-color;
+  text-align: center;
+  text-shadow: $carousel-text-shadow;
+  // We can't have this transition here because webkit cancels the carousel
+  // animation if you trip this while in the middle of another animation.
+
+  // Set gradients for backgrounds
+  &.left {
+    @include gradient-horizontal($start-color: rgba(0,0,0,.5), $end-color: rgba(0,0,0,.0001));
+  }
+  &.right {
+    left: auto;
+    right: 0;
+    @include gradient-horizontal($start-color: rgba(0,0,0,.0001), $end-color: rgba(0,0,0,.5));
+  }
+
+  // Hover/focus state
+  &:hover,
+  &:focus {
+    color: $carousel-control-color;
+    text-decoration: none;
+    @include opacity(.9);
+  }
+
+  // Toggles
+  .icon-prev,
+  .icon-next,
+  .glyphicon-chevron-left,
+  .glyphicon-chevron-right {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    z-index: 5;
+    display: inline-block;
+  }
+  .icon-prev,
+  .icon-next {
+    width:  20px;
+    height: 20px;
+    margin-top: -10px;
+    margin-left: -10px;
+    font-family: serif;
+  }
+
+  .icon-prev {
+    &:before {
+      content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)
+    }
+  }
+  .icon-next {
+    &:before {
+      content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)
+    }
+  }
+}
+
+// Optional indicator pips
+//
+// Add an unordered list with the following class and add a list item for each
+// slide your carousel holds.
+
+.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;
+
+  li {
+    display: inline-block;
+    width:  10px;
+    height: 10px;
+    margin: 1px;
+    text-indent: -999px;
+    border: 1px solid $carousel-indicator-border-color;
+    border-radius: 10px;
+    cursor: pointer;
+  }
+  .active {
+    margin: 0;
+    width:  12px;
+    height: 12px;
+    background-color: $carousel-indicator-active-bg;
+  }
+}
+
+// Optional captions
+// -----------------------------
+// Hidden by default for smaller viewports
+.carousel-caption {
+  position: absolute;
+  left: 15%;
+  right: 15%;
+  bottom: 20px;
+  z-index: 10;
+  padding-top: 20px;
+  padding-bottom: 20px;
+  color: $carousel-caption-color;
+  text-align: center;
+  text-shadow: $carousel-text-shadow;
+  & .btn {
+    text-shadow: none; // No shadow for button elements in carousel-caption
+  }
+}
+
+
+// Scale up controls for tablets and up
+@media screen and (min-width: $screen-tablet) {
+
+  // Scale up the controls a smidge
+  .carousel-control .icon-prev,
+  .carousel-control .icon-next {
+    width: 30px;
+    height: 30px;
+    margin-top: -15px;
+    margin-left: -15px;
+    font-size: 30px;
+  }
+
+  // Show and left align the captions
+  .carousel-caption {
+    left: 20%;
+    right: 20%;
+    padding-bottom: 30px;
+  }
+
+  // Move up the indicators
+  .carousel-indicators {
+    bottom: 20px;
+  }
+}
diff --git a/content/assets/css/bootstrap/_close.scss b/content/assets/css/bootstrap/_close.scss
new file mode 100644
index 0000000..62ce30f
--- /dev/null
+++ b/content/assets/css/bootstrap/_close.scss
@@ -0,0 +1,35 @@
+//
+// Close icons
+// --------------------------------------------------
+
+
+.close {
+  float: right;
+  font-size: ($font-size-base * 1.5);
+  font-weight: $close-font-weight;
+  line-height: 1;
+  color: $close-color;
+  text-shadow: $close-text-shadow;
+  @include opacity(.2);
+
+  &:hover,
+  &:focus {
+    color: $close-color;
+    text-decoration: none;
+    cursor: pointer;
+    @include opacity(.5);
+  }
+
+  // [converter] extracted button& to button.close
+}
+
+// Additional properties for button version
+// iOS requires the button element instead of an anchor tag.
+// If you want the anchor version, it requires `href="#"`.
+button.close {
+  padding: 0;
+  cursor: pointer;
+  background: transparent;
+  border: 0;
+  -webkit-appearance: none;
+}
diff --git a/content/assets/css/bootstrap/_code.scss b/content/assets/css/bootstrap/_code.scss
new file mode 100644
index 0000000..4946e2b
--- /dev/null
+++ b/content/assets/css/bootstrap/_code.scss
@@ -0,0 +1,56 @@
+//
+// Code (inline and blocK)
+// --------------------------------------------------
+
+
+// Inline and block code styles
+code,
+pre {
+  font-family: $font-family-monospace;
+}
+
+// Inline code
+code {
+  padding: 2px 4px;
+  font-size: 90%;
+  color: $code-color;
+  background-color: $code-bg;
+  white-space: nowrap;
+  border-radius: $border-radius-base;
+}
+
+// Blocks of code
+pre {
+  display: block;
+  padding: (($line-height-computed - 1) / 2);
+  margin: 0 0 ($line-height-computed / 2);
+  font-size: ($font-size-base - 1); // 14px to 13px
+  line-height: $line-height-base;
+  word-break: break-all;
+  word-wrap: break-word;
+  color: $pre-color;
+  background-color: $pre-bg;
+  border: 1px solid $pre-border-color;
+  border-radius: $border-radius-base;
+
+  // Make prettyprint styles more spaced out for readability
+  &.prettyprint {
+    margin-bottom: $line-height-computed;
+  }
+
+  // Account for some code outputs that place code tags in pre tags
+  code {
+    padding: 0;
+    font-size: inherit;
+    color: inherit;
+    white-space: pre-wrap;
+    background-color: transparent;
+    border: 0;
+  }
+}
+
+// Enable scrollable blocks of code
+.pre-scrollable {
+  max-height: $pre-scrollable-max-height;
+  overflow-y: scroll;
+}
diff --git a/content/assets/css/bootstrap/_component-animations.scss b/content/assets/css/bootstrap/_component-animations.scss
new file mode 100644
index 0000000..86632fd
--- /dev/null
+++ b/content/assets/css/bootstrap/_component-animations.scss
@@ -0,0 +1,29 @@
+//
+// Component animations
+// --------------------------------------------------
+
+// Heads up!
+//
+// We don't use the `.opacity()` mixin here since it causes a bug with text
+// fields in IE7-8. Source: https://github.com/twitter/bootstrap/pull/3552.
+
+.fade {
+  opacity: 0;
+  @include transition(opacity .15s linear);
+  &.in {
+    opacity: 1;
+  }
+}
+
+.collapse {
+  display: none;
+  &.in {
+    display: block;
+  }
+}
+.collapsing {
+  position: relative;
+  height: 0;
+  overflow: hidden;
+  @include transition(height .35s ease);
+}
diff --git a/content/assets/css/bootstrap/_dropdowns.scss b/content/assets/css/bootstrap/_dropdowns.scss
new file mode 100644
index 0000000..8d8db0a
--- /dev/null
+++ b/content/assets/css/bootstrap/_dropdowns.scss
@@ -0,0 +1,194 @@
+//
+// Dropdown menus
+// --------------------------------------------------
+
+
+// Dropdown arrow/caret
+.caret {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  margin-left: 2px;
+  vertical-align: middle;
+  border-top:   $caret-width-base solid $dropdown-caret-color;
+  border-right: $caret-width-base solid transparent;
+  border-left:  $caret-width-base solid transparent;
+  // Firefox fix for https://github.com/twbs/bootstrap/issues/9538. Once fixed,
+  // we can just straight up remove this.
+  border-bottom: 0 dotted;
+  content: "";
+}
+
+// The dropdown wrapper (div)
+.dropdown {
+  position: relative;
+}
+
+// Prevent the focus on the dropdown toggle when closing dropdowns
+.dropdown-toggle:focus {
+  outline: 0;
+}
+
+// The dropdown menu (ul)
+.dropdown-menu {
+  position: absolute;
+  top: 100%;
+  left: 0;
+  z-index: $zindex-dropdown;
+  display: none; // none by default, but block on "open" of the menu
+  float: left;
+  min-width: 160px;
+  padding: 5px 0;
+  margin: 2px 0 0; // override default ul
+  list-style: none;
+  font-size: $font-size-base;
+  background-color: $dropdown-bg;
+  border: 1px solid $dropdown-fallback-border; // IE8 fallback
+  border: 1px solid $dropdown-border;
+  border-radius: $border-radius-base;
+  @include box-shadow(0 6px 12px rgba(0,0,0,.175));
+  background-clip: padding-box;
+
+  // Aligns the dropdown menu to right
+  &.pull-right {
+    right: 0;
+    left: auto;
+  }
+
+  // Dividers (basically an hr) within the dropdown
+  .divider {
+    @include nav-divider($dropdown-divider-bg);
+  }
+
+  // Links within the dropdown menu
+  > li > a {
+    display: block;
+    padding: 3px 20px;
+    clear: both;
+    font-weight: normal;
+    line-height: $line-height-base;
+    color: $dropdown-link-color;
+    white-space: nowrap; // prevent links from randomly breaking onto new lines
+  }
+}
+
+// Hover/Focus state
+.dropdown-menu > li > a {
+  &:hover,
+  &:focus {
+    text-decoration: none;
+    color: $dropdown-link-hover-color;
+    background-color: $dropdown-link-hover-bg;
+  }
+}
+
+// Active state
+.dropdown-menu > .active > a {
+  &,
+  &:hover,
+  &:focus {
+    color: $dropdown-link-active-color;
+    text-decoration: none;
+    outline: 0;
+    background-color: $dropdown-link-active-bg;
+  }
+}
+
+// Disabled state
+//
+// Gray out text and ensure the hover/focus state remains gray
+
+.dropdown-menu > .disabled > a {
+  &,
+  &:hover,
+  &:focus {
+    color: $dropdown-link-disabled-color;
+  }
+}
+// Nuke hover/focus effects
+.dropdown-menu > .disabled > a {
+  &:hover,
+  &:focus {
+    text-decoration: none;
+    background-color: transparent;
+    background-image: none; // Remove CSS gradient
+    @include reset-filter();
+    cursor: not-allowed;
+  }
+}
+
+// Open state for the dropdown
+.open {
+  // Show the menu
+  > .dropdown-menu {
+    display: block;
+  }
+
+  // Remove the outline when :focus is triggered
+  > a {
+    outline: 0;
+  }
+}
+
+// Dropdown section headers
+.dropdown-header {
+  display: block;
+  padding: 3px 20px;
+  font-size: $font-size-small;
+  line-height: $line-height-base;
+  color: $dropdown-header-color;
+}
+
+// Backdrop to catch body clicks on mobile, etc.
+.dropdown-backdrop {
+  position: fixed;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  top: 0;
+  z-index: $zindex-dropdown - 10;
+}
+
+// Right aligned dropdowns
+.pull-right > .dropdown-menu {
+  right: 0;
+  left: auto;
+}
+
+// Allow for dropdowns to go bottom up (aka, dropup-menu)
+//
+// Just add .dropup after the standard .dropdown class and you're set, bro.
+// TODO: abstract this so that the navbar fixed styles are not placed here?
+
+.dropup,
+.navbar-fixed-bottom .dropdown {
+  // Reverse the caret
+  .caret {
+    // Firefox fix for https://github.com/twbs/bootstrap/issues/9538. Once this
+    // gets fixed, restore `border-top: 0;`.
+    border-top: 0 dotted;
+    border-bottom: 4px solid $dropdown-caret-color;
+    content: "";
+  }
+  // Different positioning for bottom up menu
+  .dropdown-menu {
+    top: auto;
+    bottom: 100%;
+    margin-bottom: 1px;
+  }
+}
+
+
+// Component alignment
+//
+// Reiterate per navbar.less and the modified component alignment there.
+
+@media (min-width: $grid-float-breakpoint) {
+  .navbar-right {
+    .dropdown-menu {
+      right: 0;
+      left: auto;
+    }
+  }
+}
+
diff --git a/content/assets/css/bootstrap/_forms.scss b/content/assets/css/bootstrap/_forms.scss
new file mode 100644
index 0000000..fefb3be
--- /dev/null
+++ b/content/assets/css/bootstrap/_forms.scss
@@ -0,0 +1,352 @@
+//
+// Forms
+// --------------------------------------------------
+
+
+// Normalize non-controls
+//
+// Restyle and baseline non-control form elements.
+
+fieldset {
+  padding: 0;
+  margin: 0;
+  border: 0;
+}
+
+legend {
+  display: block;
+  width: 100%;
+  padding: 0;
+  margin-bottom: $line-height-computed;
+  font-size: ($font-size-base * 1.5);
+  line-height: inherit;
+  color: $legend-color;
+  border: 0;
+  border-bottom: 1px solid $legend-border-color;
+}
+
+label {
+  display: inline-block;
+  margin-bottom: 5px;
+  font-weight: bold;
+}
+
+
+// Normalize form controls
+
+// Override content-box in Normalize (* isn't specific enough)
+input[type="search"] {
+  @include box-sizing(border-box);
+}
+
+// Position radios and checkboxes better
+input[type="radio"],
+input[type="checkbox"] {
+  margin: 4px 0 0;
+  margin-top: 1px \9; /* IE8-9 */
+  line-height: normal;
+}
+
+// Set the height of select and file controls to match text inputs
+input[type="file"] {
+  display: block;
+}
+
+// Make multiple select elements height not fixed
+select[multiple],
+select[size] {
+  height: auto;
+}
+
+// Fix optgroup Firefox bug per https://github.com/twbs/bootstrap/issues/7611
+select optgroup {
+  font-size: inherit;
+  font-style: inherit;
+  font-family: inherit;
+}
+
+// Focus for select, file, radio, and checkbox
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+  @include tab-focus();
+}
+
+// Fix for Chrome number input
+// Setting certain font-sizes causes the `I` bar to appear on hover of the bottom increment button.
+// See https://github.com/twbs/bootstrap/issues/8350 for more.
+input[type="number"] {
+  &::-webkit-outer-spin-button,
+  &::-webkit-inner-spin-button {
+    height: auto;
+  }
+}
+
+
+// Placeholder
+//
+// Placeholder text gets special styles because when browsers invalidate entire
+// lines if it doesn't understand a selector/
+.form-control {
+  @include placeholder();
+}
+
+
+// Common form controls
+//
+// Shared size and type resets for form controls. Apply `.form-control` to any
+// of the following form controls:
+//
+// select
+// textarea
+// input[type="text"]
+// input[type="password"]
+// input[type="datetime"]
+// input[type="datetime-local"]
+// input[type="date"]
+// input[type="month"]
+// input[type="time"]
+// input[type="week"]
+// input[type="number"]
+// input[type="email"]
+// input[type="url"]
+// input[type="search"]
+// input[type="tel"]
+// input[type="color"]
+
+.form-control {
+  display: block;
+  width: 100%;
+  height: $input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
+  padding: $padding-base-vertical $padding-base-horizontal;
+  font-size: $font-size-base;
+  line-height: $line-height-base;
+  color: $input-color;
+  vertical-align: middle;
+  background-color: $input-bg;
+  border: 1px solid $input-border;
+  border-radius: $input-border-radius;
+  @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
+  @include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s);
+
+  // Customize the `:focus` state to imitate native WebKit styles.
+  @include form-control-focus();
+
+  // Disabled and read-only inputs
+  // Note: HTML5 says that controls under a fieldset > legend:first-child won't
+  // be disabled if the fieldset is disabled. Due to implementation difficulty,
+  // we don't honor that edge case; we style them as disabled anyway.
+  &[disabled],
+  &[readonly],
+  fieldset[disabled] & {
+    cursor: not-allowed;
+    background-color: $input-bg-disabled;
+  }
+
+  // [converter] extracted textarea& to textarea.form-control
+}
+
+// Reset height for `textarea`s
+textarea.form-control {
+  height: auto;
+}
+
+
+// Form groups
+//
+// Designed to help with the organization and spacing of vertical forms. For
+// horizontal forms, use the predefined grid classes.
+
+.form-group {
+  margin-bottom: 15px;
+}
+
+
+// Checkboxes and radios
+//
+// Indent the labels to position radios/checkboxes as hanging controls.
+
+.radio,
+.checkbox {
+  display: block;
+  min-height: $line-height-computed; // clear the floating input if there is no label text
+  margin-top: 10px;
+  margin-bottom: 10px;
+  padding-left: 20px;
+  vertical-align: middle;
+  label {
+    display: inline;
+    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"] {
+  float: left;
+  margin-left: -20px;
+}
+.radio + .radio,
+.checkbox + .checkbox {
+  margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing
+}
+
+// Radios and checkboxes on same line
+.radio-inline,
+.checkbox-inline {
+  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; // space out consecutive inline controls
+}
+
+// Apply same disabled cursor tweak as for inputs
+//
+// Note: Neither radios nor checkboxes can be readonly.
+input[type="radio"],
+input[type="checkbox"],
+.radio,
+.radio-inline,
+.checkbox,
+.checkbox-inline {
+  &[disabled],
+  fieldset[disabled] & {
+    cursor: not-allowed;
+  }
+}
+
+// Form control sizing
+
+@include input-size('.input-sm', $input-height-small, $padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small);
+
+@include input-size('.input-lg', $input-height-large, $padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large);
+
+
+// Form control feedback states
+//
+// Apply contextual and semantic states to individual form controls.
+
+// Warning
+.has-warning {
+  @include form-control-validation($state-warning-text, $state-warning-text, $state-warning-bg);
+}
+// Error
+.has-error {
+  @include form-control-validation($state-danger-text, $state-danger-text, $state-danger-bg);
+}
+// Success
+.has-success {
+  @include form-control-validation($state-success-text, $state-success-text, $state-success-bg);
+}
+
+
+// Static form control text
+//
+// Apply class to a `p` element to make any string of text align with labels in
+// a horizontal form layout.
+
+.form-control-static {
+  margin-bottom: 0; // Remove default margin from `p`
+  padding-top: ($padding-base-vertical + 1);
+}
+
+
+// Help text
+//
+// Apply to any element you wish to create light text for placement immediately
+// below a form control. Use for general help, formatting, or instructional text.
+
+.help-block {
+  display: block; // account for any element using help-block
+  margin-top: 5px;
+  margin-bottom: 10px;
+  color: lighten($text-color, 25%); // lighten the text some for contrast
+}
+
+
+
+// Inline forms
+//
+// Make forms appear inline(-block) by adding the `.form-inline` class. Inline
+// forms begin stacked on extra small (mobile) devices and then go inline when
+// viewports reach <768px.
+//
+// Requires wrapping inputs and labels with `.form-group` for proper display of
+// default HTML form controls and our custom form controls (e.g., input groups).
+//
+// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.
+
+.form-inline {
+
+  // Kick in the inline
+  @media (min-width: $screen-tablet) {
+    // Inline-block all the things for "inline"
+    .form-group  {
+      display: inline-block;
+      margin-bottom: 0;
+      vertical-align: middle;
+    }
+
+    // In navbar-form, allow folks to *not* use `.form-group`
+    .form-control {
+      display: inline-block;
+    }
+
+    // Remove default margin on radios/checkboxes that were used for stacking, and
+    // then undo the floating of radios and checkboxes to match (which also avoids
+    // a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969).
+    .radio,
+    .checkbox {
+      display: inline-block;
+      margin-top: 0;
+      margin-bottom: 0;
+      padding-left: 0;
+    }
+    .radio input[type="radio"],
+    .checkbox input[type="checkbox"] {
+      float: none;
+      margin-left: 0;
+    }
+  }
+}
+
+
+// Horizontal forms
+//
+// Horizontal forms are built on grid classes and allow you to create forms with
+// labels on the left and inputs on the right.
+
+.form-horizontal {
+
+  // Consistent vertical alignment of labels, radios, and checkboxes
+  .control-label,
+  .radio,
+  .checkbox,
+  .radio-inline,
+  .checkbox-inline {
+    margin-top: 0;
+    margin-bottom: 0;
+    padding-top: ($padding-base-vertical + 1); // Default padding plus a border
+  }
+
+  // Make form groups behave like rows
+  .form-group {
+    @include make-row();
+  }
+
+  // Only right align form labels here when the columns stop stacking
+  @media (min-width: $screen-tablet) {
+    .control-label {
+      text-align: right;
+    }
+  }
+}
diff --git a/content/assets/css/bootstrap/_glyphicons.scss b/content/assets/css/bootstrap/_glyphicons.scss
new file mode 100644
index 0000000..7614a7a
--- /dev/null
+++ b/content/assets/css/bootstrap/_glyphicons.scss
@@ -0,0 +1,232 @@
+//
+// Glyphicons for Bootstrap
+//
+// Since icons are fonts, they can be placed anywhere text is placed and are
+// thus automatically sized to match the surrounding child. To use, create an
+// inline element with the appropriate classes, like so:
+//
+// <a href="#"><span class="glyphicon glyphicon-star"></span> Star</a>
+
+// Import the fonts
+@font-face {
+  font-family: 'Glyphicons Halflings';
+  src: font-url('#{$icon-font-path}#{$icon-font-name}.eot');
+  src: font-url('#{$icon-font-path}#{$icon-font-name}.eot?#iefix') format('embedded-opentype'),
+       font-url('#{$icon-font-path}#{$icon-font-name}.woff') format('woff'),
+       font-url('#{$icon-font-path}#{$icon-font-name}.ttf') format('truetype'),
+       font-url('#{$icon-font-path}#{$icon-font-name}.svg#glyphicons-halflingsregular') format('svg');
+}
+
+// Catchall baseclass
+.glyphicon {
+  position: relative;
+  top: 1px;
+  display: inline-block;
+  font-family: 'Glyphicons Halflings';
+  font-style: normal;
+  font-weight: normal;
+  line-height: 1;
+  -webkit-font-smoothing: antialiased;
+}
+
+// Individual icons
+.glyphicon-asterisk               { &:before { content: "\2a"; } }
+.glyphicon-plus                   { &:before { content: "\2b"; } }
+.glyphicon-euro                   { &:before { content: "\20ac"; } }
+.glyphicon-minus                  { &:before { content: "\2212"; } }
+.glyphicon-cloud                  { &:before { content: "\2601"; } }
+.glyphicon-envelope               { &:before { content: "\2709"; } }
+.glyphicon-pencil                 { &:before { content: "\270f"; } }
+.glyphicon-glass                  { &:before { content: "\e001"; } }
+.glyphicon-music                  { &:before { content: "\e002"; } }
+.glyphicon-search                 { &:before { content: "\e003"; } }
+.glyphicon-heart                  { &:before { content: "\e005"; } }
+.glyphicon-star                   { &:before { content: "\e006"; } }
+.glyphicon-star-empty             { &:before { content: "\e007"; } }
+.glyphicon-user                   { &:before { content: "\e008"; } }
+.glyphicon-film                   { &:before { content: "\e009"; } }
+.glyphicon-th-large               { &:before { content: "\e010"; } }
+.glyphicon-th                     { &:before { content: "\e011"; } }
+.glyphicon-th-list                { &:before { content: "\e012"; } }
+.glyphicon-ok                     { &:before { content: "\e013"; } }
+.glyphicon-remove                 { &:before { content: "\e014"; } }
+.glyphicon-zoom-in                { &:before { content: "\e015"; } }
+.glyphicon-zoom-out               { &:before { content: "\e016"; } }
+.glyphicon-off                    { &:before { content: "\e017"; } }
+.glyphicon-signal                 { &:before { content: "\e018"; } }
+.glyphicon-cog                    { &:before { content: "\e019"; } }
+.glyphicon-trash                  { &:before { content: "\e020"; } }
+.glyphicon-home                   { &:before { content: "\e021"; } }
+.glyphicon-file                   { &:before { content: "\e022"; } }
+.glyphicon-time                   { &:before { content: "\e023"; } }
+.glyphicon-road                   { &:before { content: "\e024"; } }
+.glyphicon-download-alt           { &:before { content: "\e025"; } }
+.glyphicon-download               { &:before { content: "\e026"; } }
+.glyphicon-upload                 { &:before { content: "\e027"; } }
+.glyphicon-inbox                  { &:before { content: "\e028"; } }
+.glyphicon-play-circle            { &:before { content: "\e029"; } }
+.glyphicon-repeat                 { &:before { content: "\e030"; } }
+.glyphicon-refresh                { &:before { content: "\e031"; } }
+.glyphicon-list-alt               { &:before { content: "\e032"; } }
+.glyphicon-flag                   { &:before { content: "\e034"; } }
+.glyphicon-headphones             { &:before { content: "\e035"; } }
+.glyphicon-volume-off             { &:before { content: "\e036"; } }
+.glyphicon-volume-down            { &:before { content: "\e037"; } }
+.glyphicon-volume-up              { &:before { content: "\e038"; } }
+.glyphicon-qrcode                 { &:before { content: "\e039"; } }
+.glyphicon-barcode                { &:before { content: "\e040"; } }
+.glyphicon-tag                    { &:before { content: "\e041"; } }
+.glyphicon-tags                   { &:before { content: "\e042"; } }
+.glyphicon-book                   { &:before { content: "\e043"; } }
+.glyphicon-print                  { &:before { content: "\e045"; } }
+.glyphicon-font                   { &:before { content: "\e047"; } }
+.glyphicon-bold                   { &:before { content: "\e048"; } }
+.glyphicon-italic                 { &:before { content: "\e049"; } }
+.glyphicon-text-height            { &:before { content: "\e050"; } }
+.glyphicon-text-width             { &:before { content: "\e051"; } }
+.glyphicon-align-left             { &:before { content: "\e052"; } }
+.glyphicon-align-center           { &:before { content: "\e053"; } }
+.glyphicon-align-right            { &:before { content: "\e054"; } }
+.glyphicon-align-justify          { &:before { content: "\e055"; } }
+.glyphicon-list                   { &:before { content: "\e056"; } }
+.glyphicon-indent-left            { &:before { content: "\e057"; } }
+.glyphicon-indent-right           { &:before { content: "\e058"; } }
+.glyphicon-facetime-video         { &:before { content: "\e059"; } }
+.glyphicon-picture                { &:before { content: "\e060"; } }
+.glyphicon-map-marker             { &:before { content: "\e062"; } }
+.glyphicon-adjust                 { &:before { content: "\e063"; } }
+.glyphicon-tint                   { &:before { content: "\e064"; } }
+.glyphicon-edit                   { &:before { content: "\e065"; } }
+.glyphicon-share                  { &:before { content: "\e066"; } }
+.glyphicon-check                  { &:before { content: "\e067"; } }
+.glyphicon-move                   { &:before { content: "\e068"; } }
+.glyphicon-step-backward          { &:before { content: "\e069"; } }
+.glyphicon-fast-backward          { &:before { content: "\e070"; } }
+.glyphicon-backward               { &:before { content: "\e071"; } }
+.glyphicon-play                   { &:before { content: "\e072"; } }
+.glyphicon-pause                  { &:before { content: "\e073"; } }
+.glyphicon-stop                   { &:before { content: "\e074"; } }
+.glyphicon-forward                { &:before { content: "\e075"; } }
+.glyphicon-fast-forward           { &:before { content: "\e076"; } }
+.glyphicon-step-forward           { &:before { content: "\e077"; } }
+.glyphicon-eject                  { &:before { content: "\e078"; } }
+.glyphicon-chevron-left           { &:before { content: "\e079"; } }
+.glyphicon-chevron-right          { &:before { content: "\e080"; } }
+.glyphicon-plus-sign              { &:before { content: "\e081"; } }
+.glyphicon-minus-sign             { &:before { content: "\e082"; } }
+.glyphicon-remove-sign            { &:before { content: "\e083"; } }
+.glyphicon-ok-sign                { &:before { content: "\e084"; } }
+.glyphicon-question-sign          { &:before { content: "\e085"; } }
+.glyphicon-info-sign              { &:before { content: "\e086"; } }
+.glyphicon-screenshot             { &:before { content: "\e087"; } }
+.glyphicon-remove-circle          { &:before { content: "\e088"; } }
+.glyphicon-ok-circle              { &:before { content: "\e089"; } }
+.glyphicon-ban-circle             { &:before { content: "\e090"; } }
+.glyphicon-arrow-left             { &:before { content: "\e091"; } }
+.glyphicon-arrow-right            { &:before { content: "\e092"; } }
+.glyphicon-arrow-up               { &:before { content: "\e093"; } }
+.glyphicon-arrow-down             { &:before { content: "\e094"; } }
+.glyphicon-share-alt              { &:before { content: "\e095"; } }
+.glyphicon-resize-full            { &:before { content: "\e096"; } }
+.glyphicon-resize-small           { &:before { content: "\e097"; } }
+.glyphicon-exclamation-sign       { &:before { content: "\e101"; } }
+.glyphicon-gift                   { &:before { content: "\e102"; } }
+.glyphicon-leaf                   { &:before { content: "\e103"; } }
+.glyphicon-eye-open               { &:before { content: "\e105"; } }
+.glyphicon-eye-close              { &:before { content: "\e106"; } }
+.glyphicon-warning-sign           { &:before { content: "\e107"; } }
+.glyphicon-plane                  { &:before { content: "\e108"; } }
+.glyphicon-random                 { &:before { content: "\e110"; } }
+.glyphicon-comment                { &:before { content: "\e111"; } }
+.glyphicon-magnet                 { &:before { content: "\e112"; } }
+.glyphicon-chevron-up             { &:before { content: "\e113"; } }
+.glyphicon-chevron-down           { &:before { content: "\e114"; } }
+.glyphicon-retweet                { &:before { content: "\e115"; } }
+.glyphicon-shopping-cart          { &:before { content: "\e116"; } }
+.glyphicon-folder-close           { &:before { content: "\e117"; } }
+.glyphicon-folder-open            { &:before { content: "\e118"; } }
+.glyphicon-resize-vertical        { &:before { content: "\e119"; } }
+.glyphicon-resize-horizontal      { &:before { content: "\e120"; } }
+.glyphicon-hdd                    { &:before { content: "\e121"; } }
+.glyphicon-bullhorn               { &:before { content: "\e122"; } }
+.glyphicon-certificate            { &:before { content: "\e124"; } }
+.glyphicon-thumbs-up              { &:before { content: "\e125"; } }
+.glyphicon-thumbs-down            { &:before { content: "\e126"; } }
+.glyphicon-hand-right             { &:before { content: "\e127"; } }
+.glyphicon-hand-left              { &:before { content: "\e128"; } }
+.glyphicon-hand-up                { &:before { content: "\e129"; } }
+.glyphicon-hand-down              { &:before { content: "\e130"; } }
+.glyphicon-circle-arrow-right     { &:before { content: "\e131"; } }
+.glyphicon-circle-arrow-left      { &:before { content: "\e132"; } }
+.glyphicon-circle-arrow-up        { &:before { content: "\e133"; } }
+.glyphicon-circle-arrow-down      { &:before { content: "\e134"; } }
+.glyphicon-globe                  { &:before { content: "\e135"; } }
+.glyphicon-tasks                  { &:before { content: "\e137"; } }
+.glyphicon-filter                 { &:before { content: "\e138"; } }
+.glyphicon-fullscreen             { &:before { content: "\e140"; } }
+.glyphicon-dashboard              { &:before { content: "\e141"; } }
+.glyphicon-heart-empty            { &:before { content: "\e143"; } }
+.glyphicon-link                   { &:before { content: "\e144"; } }
+.glyphicon-phone                  { &:before { content: "\e145"; } }
+.glyphicon-usd                    { &:before { content: "\e148"; } }
+.glyphicon-gbp                    { &:before { content: "\e149"; } }
+.glyphicon-sort                   { &:before { content: "\e150"; } }
+.glyphicon-sort-by-alphabet       { &:before { content: "\e151"; } }
+.glyphicon-sort-by-alphabet-alt   { &:before { content: "\e152"; } }
+.glyphicon-sort-by-order          { &:before { content: "\e153"; } }
+.glyphicon-sort-by-order-alt      { &:before { content: "\e154"; } }
+.glyphicon-sort-by-attributes     { &:before { content: "\e155"; } }
+.glyphicon-sort-by-attributes-alt { &:before { content: "\e156"; } }
+.glyphicon-unchecked              { &:before { content: "\e157"; } }
+.glyphicon-expand                 { &:before { content: "\e158"; } }
+.glyphicon-collapse-down          { &:before { content: "\e159"; } }
+.glyphicon-collapse-up            { &:before { content: "\e160"; } }
+.glyphicon-log-in                 { &:before { content: "\e161"; } }
+.glyphicon-flash                  { &:before { content: "\e162"; } }
+.glyphicon-log-out                { &:before { content: "\e163"; } }
+.glyphicon-new-window             { &:before { content: "\e164"; } }
+.glyphicon-record                 { &:before { content: "\e165"; } }
+.glyphicon-save                   { &:before { content: "\e166"; } }
+.glyphicon-open                   { &:before { content: "\e167"; } }
+.glyphicon-saved                  { &:before { content: "\e168"; } }
+.glyphicon-import                 { &:before { content: "\e169"; } }
+.glyphicon-export                 { &:before { content: "\e170"; } }
+.glyphicon-send                   { &:before { content: "\e171"; } }
+.glyphicon-floppy-disk            { &:before { content: "\e172"; } }
+.glyphicon-floppy-saved           { &:before { content: "\e173"; } }
+.glyphicon-floppy-remove          { &:before { content: "\e174"; } }
+.glyphicon-floppy-save            { &:before { content: "\e175"; } }
+.glyphicon-floppy-open            { &:before { content: "\e176"; } }
+.glyphicon-credit-card            { &:before { content: "\e177"; } }
+.glyphicon-transfer               { &:before { content: "\e178"; } }
+.glyphicon-cutlery                { &:before { content: "\e179"; } }
+.glyphicon-header                 { &:before { content: "\e180"; } }
+.glyphicon-compressed             { &:before { content: "\e181"; } }
+.glyphicon-earphone               { &:before { content: "\e182"; } }
+.glyphicon-phone-alt              { &:before { content: "\e183"; } }
+.glyphicon-tower                  { &:before { content: "\e184"; } }
+.glyphicon-stats                  { &:before { content: "\e185"; } }
+.glyphicon-sd-video               { &:before { content: "\e186"; } }
+.glyphicon-hd-video               { &:before { content: "\e187"; } }
+.glyphicon-subtitles              { &:before { content: "\e188"; } }
+.glyphicon-sound-stereo           { &:before { content: "\e189"; } }
+.glyphicon-sound-dolby            { &:before { content: "\e190"; } }
+.glyphicon-sound-5-1              { &:before { content: "\e191"; } }
+.glyphicon-sound-6-1              { &:before { content: "\e192"; } }
+.glyphicon-sound-7-1              { &:before { content: "\e193"; } }
+.glyphicon-copyright-mark         { &:before { content: "\e194"; } }
+.glyphicon-registration-mark      { &:before { content: "\e195"; } }
+.glyphicon-cloud-download         { &:before { content: "\e197"; } }
+.glyphicon-cloud-upload           { &:before { content: "\e198"; } }
+.glyphicon-tree-conifer           { &:before { content: "\e199"; } }
+.glyphicon-tree-deciduous         { &:before { content: "\e200"; } }
+.glyphicon-briefcase              { &:before { content: "\1f4bc"; } }
+.glyphicon-calendar               { &:before { content: "\1f4c5"; } }
+.glyphicon-pushpin                { &:before { content: "\1f4cc"; } }
+.glyphicon-paperclip              { &:before { content: "\1f4ce"; } }
+.glyphicon-camera                 { &:before { content: "\1f4f7"; } }
+.glyphicon-lock                   { &:before { content: "\1f512"; } }
+.glyphicon-bell                   { &:before { content: "\1f514"; } }
+.glyphicon-bookmark               { &:before { content: "\1f516"; } }
+.glyphicon-fire                   { &:before { content: "\1f525"; } }
+.glyphicon-wrench                 { &:before { content: "\1f527"; } }
diff --git a/content/assets/css/bootstrap/_grid.scss b/content/assets/css/bootstrap/_grid.scss
new file mode 100644
index 0000000..7b33ecd
--- /dev/null
+++ b/content/assets/css/bootstrap/_grid.scss
@@ -0,0 +1,346 @@
+//
+// Grid system
+// --------------------------------------------------
+
+
+// Set the container width, and override it for fixed navbars in media queries
+.container {
+  @include container-fixed();
+}
+
+// mobile first defaults
+.row {
+  @include make-row();
+}
+
+// Common styles for small and large grid columns
+.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,
+.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,
+.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,
+.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 {
+  position: relative;
+  // Prevent columns from collapsing when empty
+  min-height: 1px;
+  // Inner gutter via padding
+  padding-left:  ($grid-gutter-width / 2);
+  padding-right: ($grid-gutter-width / 2);
+}
+
+
+// Extra small grid
+//
+// Grid classes for extra small devices like smartphones. No offset, push, or
+// pull classes are present here due to the size of the target.
+//
+// Note that `.col-xs-12` doesn't get floated on purpose—there's no need since
+// it's full-width.
+
+.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 {
+  float: left;
+}
+.col-xs-1  { width: percentage((1 / $grid-columns)); }
+.col-xs-2  { width: percentage((2 / $grid-columns)); }
+.col-xs-3  { width: percentage((3 / $grid-columns)); }
+.col-xs-4  { width: percentage((4 / $grid-columns)); }
+.col-xs-5  { width: percentage((5 / $grid-columns)); }
+.col-xs-6  { width: percentage((6 / $grid-columns)); }
+.col-xs-7  { width: percentage((7 / $grid-columns)); }
+.col-xs-8  { width: percentage((8 / $grid-columns)); }
+.col-xs-9  { width: percentage((9 / $grid-columns)); }
+.col-xs-10 { width: percentage((10/ $grid-columns)); }
+.col-xs-11 { width: percentage((11/ $grid-columns)); }
+.col-xs-12 { width: 100%; }
+
+
+// Small grid
+//
+// Columns, offsets, pushes, and pulls for the small device range, from phones
+// to tablets.
+//
+// Note that `.col-sm-12` doesn't get floated on purpose—there's no need since
+// it's full-width.
+
+@media (min-width: $screen-tablet) {
+  .container {
+    max-width: $container-tablet;
+  }
+
+  .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 {
+    float: left;
+  }
+  .col-sm-1  { width: percentage((1 / $grid-columns)); }
+  .col-sm-2  { width: percentage((2 / $grid-columns)); }
+  .col-sm-3  { width: percentage((3 / $grid-columns)); }
+  .col-sm-4  { width: percentage((4 / $grid-columns)); }
+  .col-sm-5  { width: percentage((5 / $grid-columns)); }
+  .col-sm-6  { width: percentage((6 / $grid-columns)); }
+  .col-sm-7  { width: percentage((7 / $grid-columns)); }
+  .col-sm-8  { width: percentage((8 / $grid-columns)); }
+  .col-sm-9  { width: percentage((9 / $grid-columns)); }
+  .col-sm-10 { width: percentage((10/ $grid-columns)); }
+  .col-sm-11 { width: percentage((11/ $grid-columns)); }
+  .col-sm-12 { width: 100%; }
+
+  // Push and pull columns for source order changes
+  .col-sm-push-1  { left: percentage((1 / $grid-columns)); }
+  .col-sm-push-2  { left: percentage((2 / $grid-columns)); }
+  .col-sm-push-3  { left: percentage((3 / $grid-columns)); }
+  .col-sm-push-4  { left: percentage((4 / $grid-columns)); }
+  .col-sm-push-5  { left: percentage((5 / $grid-columns)); }
+  .col-sm-push-6  { left: percentage((6 / $grid-columns)); }
+  .col-sm-push-7  { left: percentage((7 / $grid-columns)); }
+  .col-sm-push-8  { left: percentage((8 / $grid-columns)); }
+  .col-sm-push-9  { left: percentage((9 / $grid-columns)); }
+  .col-sm-push-10 { left: percentage((10/ $grid-columns)); }
+  .col-sm-push-11 { left: percentage((11/ $grid-columns)); }
+
+  .col-sm-pull-1  { right: percentage((1 / $grid-columns)); }
+  .col-sm-pull-2  { right: percentage((2 / $grid-columns)); }
+  .col-sm-pull-3  { right: percentage((3 / $grid-columns)); }
+  .col-sm-pull-4  { right: percentage((4 / $grid-columns)); }
+  .col-sm-pull-5  { right: percentage((5 / $grid-columns)); }
+  .col-sm-pull-6  { right: percentage((6 / $grid-columns)); }
+  .col-sm-pull-7  { right: percentage((7 / $grid-columns)); }
+  .col-sm-pull-8  { right: percentage((8 / $grid-columns)); }
+  .col-sm-pull-9  { right: percentage((9 / $grid-columns)); }
+  .col-sm-pull-10 { right: percentage((10/ $grid-columns)); }
+  .col-sm-pull-11 { right: percentage((11/ $grid-columns)); }
+
+  // Offsets
+  .col-sm-offset-1  { margin-left: percentage((1 / $grid-columns)); }
+  .col-sm-offset-2  { margin-left: percentage((2 / $grid-columns)); }
+  .col-sm-offset-3  { margin-left: percentage((3 / $grid-columns)); }
+  .col-sm-offset-4  { margin-left: percentage((4 / $grid-columns)); }
+  .col-sm-offset-5  { margin-left: percentage((5 / $grid-columns)); }
+  .col-sm-offset-6  { margin-left: percentage((6 / $grid-columns)); }
+  .col-sm-offset-7  { margin-left: percentage((7 / $grid-columns)); }
+  .col-sm-offset-8  { margin-left: percentage((8 / $grid-columns)); }
+  .col-sm-offset-9  { margin-left: percentage((9 / $grid-columns)); }
+  .col-sm-offset-10 { margin-left: percentage((10/ $grid-columns)); }
+  .col-sm-offset-11 { margin-left: percentage((11/ $grid-columns)); }
+}
+
+
+// Medium grid
+//
+// Columns, offsets, pushes, and pulls for the desktop device range.
+//
+// Note that `.col-md-12` doesn't get floated on purpose—there's no need since
+// it's full-width.
+
+@media (min-width: $screen-desktop) {
+  .container {
+    max-width: $container-desktop;
+  }
+  .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 {
+    float: left;
+  }
+  .col-md-1  { width: percentage((1 / $grid-columns)); }
+  .col-md-2  { width: percentage((2 / $grid-columns)); }
+  .col-md-3  { width: percentage((3 / $grid-columns)); }
+  .col-md-4  { width: percentage((4 / $grid-columns)); }
+  .col-md-5  { width: percentage((5 / $grid-columns)); }
+  .col-md-6  { width: percentage((6 / $grid-columns)); }
+  .col-md-7  { width: percentage((7 / $grid-columns)); }
+  .col-md-8  { width: percentage((8 / $grid-columns)); }
+  .col-md-9  { width: percentage((9 / $grid-columns)); }
+  .col-md-10 { width: percentage((10/ $grid-columns)); }
+  .col-md-11 { width: percentage((11/ $grid-columns)); }
+  .col-md-12 { width: 100%; }
+
+  // Push and pull columns for source order changes
+  .col-md-push-0  { left: auto; }
+  .col-md-push-1  { left: percentage((1 / $grid-columns)); }
+  .col-md-push-2  { left: percentage((2 / $grid-columns)); }
+  .col-md-push-3  { left: percentage((3 / $grid-columns)); }
+  .col-md-push-4  { left: percentage((4 / $grid-columns)); }
+  .col-md-push-5  { left: percentage((5 / $grid-columns)); }
+  .col-md-push-6  { left: percentage((6 / $grid-columns)); }
+  .col-md-push-7  { left: percentage((7 / $grid-columns)); }
+  .col-md-push-8  { left: percentage((8 / $grid-columns)); }
+  .col-md-push-9  { left: percentage((9 / $grid-columns)); }
+  .col-md-push-10 { left: percentage((10/ $grid-columns)); }
+  .col-md-push-11 { left: percentage((11/ $grid-columns)); }
+
+  .col-md-pull-0  { right: auto; }
+  .col-md-pull-1  { right: percentage((1 / $grid-columns)); }
+  .col-md-pull-2  { right: percentage((2 / $grid-columns)); }
+  .col-md-pull-3  { right: percentage((3 / $grid-columns)); }
+  .col-md-pull-4  { right: percentage((4 / $grid-columns)); }
+  .col-md-pull-5  { right: percentage((5 / $grid-columns)); }
+  .col-md-pull-6  { right: percentage((6 / $grid-columns)); }
+  .col-md-pull-7  { right: percentage((7 / $grid-columns)); }
+  .col-md-pull-8  { right: percentage((8 / $grid-columns)); }
+  .col-md-pull-9  { right: percentage((9 / $grid-columns)); }
+  .col-md-pull-10 { right: percentage((10/ $grid-columns)); }
+  .col-md-pull-11 { right: percentage((11/ $grid-columns)); }
+
+  // Offsets
+  .col-md-offset-0  { margin-left: 0; }
+  .col-md-offset-1  { margin-left: percentage((1 / $grid-columns)); }
+  .col-md-offset-2  { margin-left: percentage((2 / $grid-columns)); }
+  .col-md-offset-3  { margin-left: percentage((3 / $grid-columns)); }
+  .col-md-offset-4  { margin-left: percentage((4 / $grid-columns)); }
+  .col-md-offset-5  { margin-left: percentage((5 / $grid-columns)); }
+  .col-md-offset-6  { margin-left: percentage((6 / $grid-columns)); }
+  .col-md-offset-7  { margin-left: percentage((7 / $grid-columns)); }
+  .col-md-offset-8  { margin-left: percentage((8 / $grid-columns)); }
+  .col-md-offset-9  { margin-left: percentage((9 / $grid-columns)); }
+  .col-md-offset-10 { margin-left: percentage((10/ $grid-columns)); }
+  .col-md-offset-11 { margin-left: percentage((11/ $grid-columns)); }
+}
+
+
+// Large grid
+//
+// Columns, offsets, pushes, and pulls for the large desktop device range.
+//
+// Note that `.col-lg-12` doesn't get floated on purpose—there's no need since
+// it's full-width.
+
+@media (min-width: $screen-lg-desktop) {
+  .container {
+    max-width: $container-lg-desktop;
+  }
+
+  .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 {
+    float: left;
+  }
+  .col-lg-1  { width: percentage((1 / $grid-columns)); }
+  .col-lg-2  { width: percentage((2 / $grid-columns)); }
+  .col-lg-3  { width: percentage((3 / $grid-columns)); }
+  .col-lg-4  { width: percentage((4 / $grid-columns)); }
+  .col-lg-5  { width: percentage((5 / $grid-columns)); }
+  .col-lg-6  { width: percentage((6 / $grid-columns)); }
+  .col-lg-7  { width: percentage((7 / $grid-columns)); }
+  .col-lg-8  { width: percentage((8 / $grid-columns)); }
+  .col-lg-9  { width: percentage((9 / $grid-columns)); }
+  .col-lg-10 { width: percentage((10/ $grid-columns)); }
+  .col-lg-11 { width: percentage((11/ $grid-columns)); }
+  .col-lg-12 { width: 100%; }
+
+  // Push and pull columns for source order changes
+  .col-lg-push-0  { left: auto; }
+  .col-lg-push-1  { left: percentage((1 / $grid-columns)); }
+  .col-lg-push-2  { left: percentage((2 / $grid-columns)); }
+  .col-lg-push-3  { left: percentage((3 / $grid-columns)); }
+  .col-lg-push-4  { left: percentage((4 / $grid-columns)); }
+  .col-lg-push-5  { left: percentage((5 / $grid-columns)); }
+  .col-lg-push-6  { left: percentage((6 / $grid-columns)); }
+  .col-lg-push-7  { left: percentage((7 / $grid-columns)); }
+  .col-lg-push-8  { left: percentage((8 / $grid-columns)); }
+  .col-lg-push-9  { left: percentage((9 / $grid-columns)); }
+  .col-lg-push-10 { left: percentage((10/ $grid-columns)); }
+  .col-lg-push-11 { left: percentage((11/ $grid-columns)); }
+
+  .col-lg-pull-0  { right: auto; }
+  .col-lg-pull-1  { right: percentage((1 / $grid-columns)); }
+  .col-lg-pull-2  { right: percentage((2 / $grid-columns)); }
+  .col-lg-pull-3  { right: percentage((3 / $grid-columns)); }
+  .col-lg-pull-4  { right: percentage((4 / $grid-columns)); }
+  .col-lg-pull-5  { right: percentage((5 / $grid-columns)); }
+  .col-lg-pull-6  { right: percentage((6 / $grid-columns)); }
+  .col-lg-pull-7  { right: percentage((7 / $grid-columns)); }
+  .col-lg-pull-8  { right: percentage((8 / $grid-columns)); }
+  .col-lg-pull-9  { right: percentage((9 / $grid-columns)); }
+  .col-lg-pull-10 { right: percentage((10/ $grid-columns)); }
+  .col-lg-pull-11 { right: percentage((11/ $grid-columns)); }
+
+  // Offsets
+  .col-lg-offset-0  { margin-left: 0; }
+  .col-lg-offset-1  { margin-left: percentage((1 / $grid-columns)); }
+  .col-lg-offset-2  { margin-left: percentage((2 / $grid-columns)); }
+  .col-lg-offset-3  { margin-left: percentage((3 / $grid-columns)); }
+  .col-lg-offset-4  { margin-left: percentage((4 / $grid-columns)); }
+  .col-lg-offset-5  { margin-left: percentage((5 / $grid-columns)); }
+  .col-lg-offset-6  { margin-left: percentage((6 / $grid-columns)); }
+  .col-lg-offset-7  { margin-left: percentage((7 / $grid-columns)); }
+  .col-lg-offset-8  { margin-left: percentage((8 / $grid-columns)); }
+  .col-lg-offset-9  { margin-left: percentage((9 / $grid-columns)); }
+  .col-lg-offset-10 { margin-left: percentage((10/ $grid-columns)); }
+  .col-lg-offset-11 { margin-left: percentage((11/ $grid-columns)); }
+}
diff --git a/content/assets/css/bootstrap/_input-groups.scss b/content/assets/css/bootstrap/_input-groups.scss
new file mode 100644
index 0000000..563c067
--- /dev/null
+++ b/content/assets/css/bootstrap/_input-groups.scss
@@ -0,0 +1,127 @@
+//
+// Input groups
+// --------------------------------------------------
+
+// Base styles
+// -------------------------
+.input-group {
+  position: relative; // For dropdowns
+  display: table;
+  border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table
+
+  // Undo padding and float of grid classes
+  &.col {
+    float: none;
+    padding-left: 0;
+    padding-right: 0;
+  }
+
+  .form-control {
+    width: 100%;
+    margin-bottom: 0;
+  }
+}
+
+// Sizing options
+//
+// Remix the default form control sizing classes into new ones for easier
+// manipulation.
+
+.input-group-lg > .form-control,
+.input-group-lg > .input-group-addon,
+.input-group-lg > .input-group-btn > .btn { @extend .input-lg; }
+.input-group-sm > .form-control,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .btn { @extend .input-sm; }
+
+
+// Display as table-cell
+// -------------------------
+.input-group-addon,
+.input-group-btn,
+.input-group .form-control {
+  display: table-cell;
+
+  &:not(:first-child):not(:last-child) {
+    border-radius: 0;
+  }
+}
+// Addon and addon wrapper for buttons
+.input-group-addon,
+.input-group-btn {
+  width: 1%;
+  white-space: nowrap;
+  vertical-align: middle; // Match the inputs
+}
+
+// Text input groups
+// -------------------------
+.input-group-addon {
+  padding: $padding-base-vertical $padding-base-horizontal;
+  font-size: $font-size-base;
+  font-weight: normal;
+  line-height: 1;
+  text-align: center;
+  background-color: $input-group-addon-bg;
+  border: 1px solid $input-group-addon-border-color;
+  border-radius: $border-radius-base;
+
+  // Sizing
+  &.input-sm {
+    padding: $padding-small-vertical $padding-small-horizontal;
+    font-size: $font-size-small;
+    border-radius: $border-radius-small;
+  }
+  &.input-lg {
+    padding: $padding-large-vertical $padding-large-horizontal;
+    font-size: $font-size-large;
+    border-radius: $border-radius-large;
+  }
+
+  // Nuke default margins from checkboxes and radios to vertically center within.
+  input[type="radio"],
+  input[type="checkbox"] {
+    margin-top: 0;
+  }
+}
+
+// Reset rounded corners
+.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
+  @include border-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 > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child) {
+  @include border-left-radius(0);
+}
+.input-group-addon:last-child {
+  border-left: 0;
+}
+
+// Button input groups
+// -------------------------
+.input-group-btn {
+  position: relative;
+  white-space: nowrap;
+}
+.input-group-btn > .btn {
+  position: relative;
+  // Jankily prevent input button groups from wrapping
+  + .btn {
+    margin-left: -4px;
+  }
+  // Bring the "active" button to the front
+  &:hover,
+  &:active {
+    z-index: 2;
+  }
+}
diff --git a/content/assets/css/bootstrap/_jumbotron.scss b/content/assets/css/bootstrap/_jumbotron.scss
new file mode 100644
index 0000000..cd796be
--- /dev/null
+++ b/content/assets/css/bootstrap/_jumbotron.scss
@@ -0,0 +1,40 @@
+//
+// Jumbotron
+// --------------------------------------------------
+
+
+.jumbotron {
+  padding: $jumbotron-padding;
+  margin-bottom: $jumbotron-padding;
+  font-size: ($font-size-base * 1.5);
+  font-weight: 200;
+  line-height: ($line-height-base * 1.5);
+  color: $jumbotron-color;
+  background-color: $jumbotron-bg;
+
+  h1 {
+    line-height: 1;
+    color: $jumbotron-heading-color;
+  }
+  p {
+    line-height: 1.4;
+  }
+
+  .container & {
+    border-radius: $border-radius-large; // Only round corners at higher resolutions if contained in a container
+  }
+
+  @media screen and (min-width: $screen-tablet) {
+    padding-top:    ($jumbotron-padding * 1.6);
+    padding-bottom: ($jumbotron-padding * 1.6);
+
+    .container & {
+      padding-left:  ($jumbotron-padding * 2);
+      padding-right: ($jumbotron-padding * 2);
+    }
+
+    h1 {
+      font-size: ($font-size-base * 4.5);
+    }
+  }
+}
diff --git a/content/assets/css/bootstrap/_labels.scss b/content/assets/css/bootstrap/_labels.scss
new file mode 100644
index 0000000..bc6af1d
--- /dev/null
+++ b/content/assets/css/bootstrap/_labels.scss
@@ -0,0 +1,58 @@
+//
+// Labels
+// --------------------------------------------------
+
+.label {
+  display: inline;
+  padding: .2em .6em .3em;
+  font-size: 75%;
+  font-weight: bold;
+  line-height: 1;
+  color: $label-color;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: baseline;
+  border-radius: .25em;
+
+  // Add hover effects, but only for links
+  &[href] {
+    &:hover,
+    &:focus {
+      color: $label-link-hover-color;
+      text-decoration: none;
+      cursor: pointer;
+    }
+  }
+
+  // Empty labels collapse automatically (not available in IE8)
+  &:empty {
+    display: none;
+  }
+}
+
+// Colors
+// Contextual variations (linked labels get darker on :hover)
+
+.label-default {
+  @include label-variant($label-default-bg);
+}
+
+.label-primary {
+  @include label-variant($label-primary-bg);
+}
+
+.label-success {
+  @include label-variant($label-success-bg);
+}
+
+.label-info {
+  @include label-variant($label-info-bg);
+}
+
+.label-warning {
+  @include label-variant($label-warning-bg);
+}
+
+.label-danger {
+  @include label-variant($label-danger-bg);
+}
diff --git a/content/assets/css/bootstrap/_list-group.scss b/content/assets/css/bootstrap/_list-group.scss
new file mode 100644
index 0000000..b3c116d
--- /dev/null
+++ b/content/assets/css/bootstrap/_list-group.scss
@@ -0,0 +1,90 @@
+//
+// List groups
+// --------------------------------------------------
+
+// Base class
+//
+// Easily usable on <ul>, <ol>, or <div>.
+.list-group {
+  // No need to set list-style: none; since .list-group-item is block level
+  margin-bottom: 20px;
+  padding-left: 0; // reset padding because ul and ol
+}
+
+// Individual list items
+// -------------------------
+
+.list-group-item {
+  position: relative;
+  display: block;
+  padding: 10px 15px;
+  // Place the border on the list items and negative margin up for better styling
+  margin-bottom: -1px;
+  background-color: $list-group-bg;
+  border: 1px solid $list-group-border;
+
+  // Round the first and last items
+  &:first-child {
+    @include border-top-radius($list-group-border-radius);
+  }
+  &:last-child {
+    margin-bottom: 0;
+    @include border-bottom-radius($list-group-border-radius);
+  }
+
+  // Align badges within list items
+  > .badge {
+    float: right;
+  }
+  > .badge + .badge {
+    margin-right: 5px;
+  }
+
+  // [converter] extracted a& to a.list-group-item
+
+  // Active class on item itself, not parent
+  &.active,
+  &.active:hover,
+  &.active:focus {
+    z-index: 2; // Place active items above their siblings for proper border styling
+    color: $list-group-active-color;
+    background-color: $list-group-active-bg;
+    border-color: $list-group-active-border;
+
+    // Force color to inherit for custom content
+    .list-group-item-heading {
+      color: inherit;
+    }
+    .list-group-item-text {
+      color: lighten($list-group-active-bg, 40%);
+    }
+  }
+}
+
+// Linked list items
+a.list-group-item {
+  color: $list-group-link-color;
+
+  .list-group-item-heading {
+    color: $list-group-link-heading-color;
+  }
+
+  // Hover state
+  &:hover,
+  &:focus {
+    text-decoration: none;
+    background-color: $list-group-hover-bg;
+  }
+}
+
+// Custom content options
+// -------------------------
+
+.list-group-item-heading {
+  margin-top: 0;
+  margin-bottom: 5px;
+}
+.list-group-item-text {
+  margin-bottom: 0;
+  line-height: 1.3;
+}
diff --git a/content/assets/css/bootstrap/_media.scss b/content/assets/css/bootstrap/_media.scss
new file mode 100644
index 0000000..5ad22cd
--- /dev/null
+++ b/content/assets/css/bootstrap/_media.scss
@@ -0,0 +1,56 @@
+// Media objects
+// Source: http://stubbornella.org/content/?p=497
+// --------------------------------------------------
+
+
+// Common styles
+// -------------------------
+
+// Clear the floats
+.media,
+.media-body {
+  overflow: hidden;
+  zoom: 1;
+}
+
+// Proper spacing between instances of .media
+.media,
+.media .media {
+  margin-top: 15px;
+}
+.media:first-child {
+  margin-top: 0;
+}
+
+// For images and videos, set to block
+.media-object {
+  display: block;
+}
+
+// Reset margins on headings for tighter default spacing
+.media-heading {
+  margin: 0 0 5px;
+}
+
+
+// Media image alignment
+// -------------------------
+
+.media {
+  > .pull-left {
+    margin-right: 10px;
+  }
+  > .pull-right {
+    margin-left: 10px;
+  }
+}
+
+
+// Media list variation
+// -------------------------
+
+// Undo default ul/ol styles
+.media-list {
+  padding-left: 0;
+  list-style: none;
+}
diff --git a/content/assets/css/bootstrap/_mixins.scss b/content/assets/css/bootstrap/_mixins.scss
new file mode 100644
index 0000000..5411477
--- /dev/null
+++ b/content/assets/css/bootstrap/_mixins.scss
@@ -0,0 +1,730 @@
+//
+// Mixins
+// --------------------------------------------------
+
+
+// Utilities
+// -------------------------
+
+// Clearfix
+// Source: http://nicolasgallagher.com/micro-clearfix-hack/
+//
+// For modern browsers
+// 1. The space content is one way to avoid an Opera bug when the
+//    contenteditable attribute is included anywhere else in the document.
+//    Otherwise it causes space to appear at the top and bottom of elements
+//    that are clearfixed.
+// 2. The use of `table` rather than `block` is only necessary if using
+//    `:before` to contain the top-margins of child elements.
+@mixin clearfix() {
+  &:before,
+  &:after {
+    content: " "; /* 1 */
+    display: table; /* 2 */
+  }
+  &:after {
+    clear: both;
+  }
+}
+
+// Webkit-style focus
+@mixin tab-focus() {
+  // Default
+  outline: thin dotted #333;
+  // Webkit
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+
+// Center-align a block level element
+@mixin center-block() {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+// Sizing shortcuts
+@mixin size($width, $height) {
+  width: $width;
+  height: $height;
+}
+@mixin square($size) {
+  @include size($size, $size);
+}
+
+// Placeholder text
+@mixin placeholder($color: $input-color-placeholder) {
+  &:-moz-placeholder            { color: $color; } // Firefox 4-18
+  &::-moz-placeholder           { color: $color; } // Firefox 19+
+  &:-ms-input-placeholder       { color: $color; } // Internet Explorer 10+
+  &::-webkit-input-placeholder  { color: $color; } // Safari and Chrome
+}
+
+// Text overflow
+// Requires inline-block or block for proper styling
+@mixin text-overflow() {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+// CSS image replacement
+// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
+@mixin hide-text() {
+  font: #{0/0} a;
+  color: transparent;
+  text-shadow: none;
+  background-color: transparent;
+  border: 0;
+}
+
+
+
+// CSS3 PROPERTIES
+// --------------------------------------------------
+
+// Single side border-radius
+@mixin border-top-radius($radius) {
+  border-top-right-radius: $radius;
+   border-top-left-radius: $radius;
+}
+@mixin border-right-radius($radius) {
+  border-bottom-right-radius: $radius;
+     border-top-right-radius: $radius;
+}
+@mixin border-bottom-radius($radius) {
+  border-bottom-right-radius: $radius;
+   border-bottom-left-radius: $radius;
+}
+@mixin border-left-radius($radius) {
+  border-bottom-left-radius: $radius;
+     border-top-left-radius: $radius;
+}
+
+// Drop shadows
+@mixin box-shadow($shadow...) {
+  -webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1
+          box-shadow: $shadow;
+}
+
+// Transitions
+@mixin transition($transition...) {
+  -webkit-transition: $transition;
+          transition: $transition;
+}
+@mixin transition-delay($transition-delay) {
+  -webkit-transition-delay: $transition-delay;
+          transition-delay: $transition-delay;
+}
+@mixin transition-duration($transition-duration) {
+  -webkit-transition-duration: $transition-duration;
+          transition-duration: $transition-duration;
+}
+@mixin transition-transform($transition...) {
+  -webkit-transition: -webkit-transform $transition;
+     -moz-transition: -moz-transform $transition;
+       -o-transition: -o-transform $transition;
+          transition: transform $transition;
+}
+
+// Transformations
+@mixin rotate($degrees) {
+  -webkit-transform: rotate($degrees);
+      -ms-transform: rotate($degrees); // IE9+
+          transform: rotate($degrees);
+}
+@mixin scale($ratio) {
+  -webkit-transform: scale($ratio);
+      -ms-transform: scale($ratio); // IE9+
+          transform: scale($ratio);
+}
+@mixin translate($x, $y) {
+  -webkit-transform: translate($x, $y);
+      -ms-transform: translate($x, $y); // IE9+
+          transform: translate($x, $y);
+}
+@mixin skew($x, $y) {
+  -webkit-transform: skew($x, $y);
+      -ms-transform: skewX($x) skewY($y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+
+          transform: skew($x, $y);
+}
+@mixin translate3d($x, $y, $z) {
+  -webkit-transform: translate3d($x, $y, $z);
+          transform: translate3d($x, $y, $z);
+}
+
+// Backface visibility
+// Prevent browsers from flickering when using CSS 3D transforms.
+// Default value is `visible`, but can be changed to `hidden`
+// See git pull https://github.com/dannykeane/bootstrap.git backface-visibility for examples
+@mixin backface-visibility($visibility){
+  -webkit-backface-visibility: $visibility;
+     -moz-backface-visibility: $visibility;
+          backface-visibility: $visibility;
+}
+
+// Box sizing
+@mixin box-sizing($boxmodel) {
+  -webkit-box-sizing: $boxmodel;
+     -moz-box-sizing: $boxmodel;
+          box-sizing: $boxmodel;
+}
+
+// User select
+// For selecting text on the page
+@mixin user-select($select) {
+  -webkit-user-select: $select;
+     -moz-user-select: $select;
+      -ms-user-select: $select; // IE10+
+       -o-user-select: $select;
+          user-select: $select;
+}
+
+// Resize anything
+@mixin resizable($direction) {
+  resize: $direction; // Options: horizontal, vertical, both
+  overflow: auto; // Safari fix
+}
+
+// CSS3 Content Columns
+@mixin content-columns($column-count, $column-gap: $grid-gutter-width) {
+  -webkit-column-count: $column-count;
+     -moz-column-count: $column-count;
+          column-count: $column-count;
+  -webkit-column-gap: $column-gap;
+     -moz-column-gap: $column-gap;
+          column-gap: $column-gap;
+}
+
+// Optional hyphenation
+@mixin hyphens($mode: auto) {
+  word-wrap: break-word;
+  -webkit-hyphens: $mode;
+     -moz-hyphens: $mode;
+      -ms-hyphens: $mode; // IE10+
+       -o-hyphens: $mode;
+          hyphens: $mode;
+}
+
+// Opacity
+@mixin opacity($opacity) {
+  opacity: $opacity;
+  // IE8 filter
+  $opacity-ie: ($opacity * 100);
+  filter: #{alpha(opacity=$opacity-ie)};
+}
+
+
+
+// GRADIENTS
+// --------------------------------------------------
+
+
+
+// Horizontal gradient, from left to right
+//
+// Creates two color stops, start and end, by specifying a color and position for each color stop.
+// Color stops are not available in IE9 and below.
+@mixin gradient-horizontal($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
+  background-image: -webkit-gradient(linear, $start-percent top, $end-percent top, from($start-color), to($end-color)); // Safari 4+, Chrome 2+
+  background-image: -webkit-linear-gradient(left, color-stop($start-color $start-percent), color-stop($end-color $end-percent)); // Safari 5.1+, Chrome 10+
+  background-image: -moz-linear-gradient(left, $start-color $start-percent, $end-color $end-percent); // FF 3.6+
+  background-image:  linear-gradient(to right, $start-color $start-percent, $end-color $end-percent); // Standard, IE10
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down
+}
+
+// Vertical gradient, from top to bottom
+//
+// Creates two color stops, start and end, by specifying a color and position for each color stop.
+// Color stops are not available in IE9 and below.
+@mixin gradient-vertical($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
+  background-image: -webkit-gradient(linear, left $start-percent, left $end-percent, from($start-color), to($end-color)); // Safari 4+, Chrome 2+
+  background-image: -webkit-linear-gradient(top, $start-color, $start-percent, $end-color, $end-percent); // Safari 5.1+, Chrome 10+
+  background-image:  -moz-linear-gradient(top, $start-color $start-percent, $end-color $end-percent); // FF 3.6+
+  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent); // Standard, IE10
+  background-repeat: repeat-x;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down
+}
+
+@mixin gradient-directional($start-color: #555, $end-color: #333, $deg: 45deg) {
+  background-repeat: repeat-x;
+  background-image: -webkit-linear-gradient($deg, $start-color, $end-color); // Safari 5.1+, Chrome 10+
+  background-image: -moz-linear-gradient($deg, $start-color, $end-color); // FF 3.6+
+  background-image: linear-gradient($deg, $start-color, $end-color); // Standard, IE10
+}
+@mixin gradient-horizontal-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
+  background-image: -webkit-gradient(left, linear, 0 0, 0 100%, from($start-color), color-stop($color-stop, $mid-color), to($end-color));
+  background-image: -webkit-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);
+  background-image: -moz-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);
+  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
+  background-repeat: no-repeat;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down, gets no color-stop at all for proper fallback
+}
+@mixin gradient-vertical-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from($start-color), color-stop($color-stop, $mid-color), to($end-color));
+  background-image: -webkit-linear-gradient($start-color, $mid-color $color-stop, $end-color);
+  background-image: -moz-linear-gradient(top, $start-color, $mid-color $color-stop, $end-color);
+  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
+  background-repeat: no-repeat;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down, gets no color-stop at all for proper fallback
+}
+@mixin gradient-radial($inner-color: #555, $outer-color: #333) {
+  background-image: -webkit-gradient(radial, center center, 0, center center, 460, from($inner-color), to($outer-color));
+  background-image: -webkit-radial-gradient(circle, $inner-color, $outer-color);
+  background-image: -moz-radial-gradient(circle, $inner-color, $outer-color);
+  background-image: radial-gradient(circle, $inner-color, $outer-color);
+  background-repeat: no-repeat;
+}
+@mixin gradient-striped($color: #555, $angle: 45deg) {
+  background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent));
+  background-image: -webkit-linear-gradient($angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
+  background-image: -moz-linear-gradient($angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
+  background-image: linear-gradient($angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
+}
+
+// Reset filters for IE
+//
+// When you need to remove a gradient background, do not forget to use this to reset
+// the IE filter for IE9 and below.
+@mixin reset-filter() {
+  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+
+
+
+// Retina images
+//
+// Short retina mixin for setting background-image and -size
+
+@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {
+  background-image: image-url("#{$file-1x}");
+
+  @media
+  only screen and (-webkit-min-device-pixel-ratio: 2),
+  only screen and (   min--moz-device-pixel-ratio: 2),
+  only screen and (     -o-min-device-pixel-ratio: 2/1),
+  only screen and (        min-device-pixel-ratio: 2),
+  only screen and (                min-resolution: 192dpi),
+  only screen and (                min-resolution: 2dppx) {
+    background-image: image-url("#{$file-2x}");
+    background-size: $width-1x $height-1x;
+  }
+}
+
+
+// Responsive image
+//
+// Keep images from scaling beyond the width of their parents.
+
+@mixin img-responsive($display: block) {
+  display: $display;
+  max-width: 100%; // Part 1: Set a maximum relative to the parent
+  height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching
+}
+
+
+// COMPONENT MIXINS
+// --------------------------------------------------
+
+// Horizontal dividers
+// -------------------------
+// Dividers (basically an hr) within dropdowns and nav lists
+@mixin nav-divider($color: #e5e5e5) {
+  height: 1px;
+  margin: (($line-height-computed / 2) - 1) 0;
+  overflow: hidden;
+  background-color: $color;
+}
+
+// Panels
+// -------------------------
+@mixin panel-variant($border, $heading-text-color, $heading-bg-color, $heading-border) {
+  border-color: $border;
+  & > .panel-heading {
+    color: $heading-text-color;
+    background-color: $heading-bg-color;
+    border-color: $heading-border;
+    + .panel-collapse .panel-body {
+      border-top-color: $border;
+    }
+  }
+  & > .panel-footer {
+    + .panel-collapse .panel-body {
+      border-bottom-color: $border;
+    }
+  }
+}
+
+// Alerts
+// -------------------------
+@mixin alert-variant($background, $border, $text-color) {
+  background-color: $background;
+  border-color: $border;
+  color: $text-color;
+  hr {
+    border-top-color: darken($border, 5%);
+  }
+  .alert-link {
+    color: darken($text-color, 10%);
+  }
+}
+
+// Tables
+// -------------------------
+@mixin table-row-variant($state, $background, $border) {
+  // Exact selectors below required to override `.table-striped` and prevent
+  // inheritance to nested tables.
+  .table > thead > tr,
+  .table > tbody > tr,
+  .table > tfoot > tr {
+    > td.#{$state},
+    > th.#{$state},
+    &.#{$state} > td,
+    &.#{$state} > th {
+      background-color: $background;
+      border-color: $border;
+    }
+  }
+
+  // Hover states for `.table-hover`
+  // Note: this is not available for cells or rows within `thead` or `tfoot`.
+  .table-hover > tbody > tr {
+    > td.#{$state}:hover,
+    > th.#{$state}:hover,
+    &.#{$state}:hover > td {
+      background-color: darken($background, 5%);
+      border-color: darken($border, 5%);
+    }
+  }
+}
+
+// Button variants
+// -------------------------
+// Easily pump out default styles, as well as :hover, :focus, :active,
+// and disabled options for all buttons
+@mixin button-variant($color, $background, $border) {
+  color: $color;
+  background-color: $background;
+  border-color: $border;
+
+  &:hover,
+  &:focus,
+  &:active,
+  &.active {
+    color: $color;
+    background-color: darken($background, 8%);
+        border-color: darken($border, 12%);
+  }
+  .open & { &.dropdown-toggle {
+    color: $color;
+    background-color: darken($background, 8%);
+        border-color: darken($border, 12%);
+  } }
+  &:active,
+  &.active {
+    background-image: none;
+  }
+  .open & { &.dropdown-toggle {
+    background-image: none;
+  } }
+  &.disabled,
+  &[disabled],
+  fieldset[disabled] & {
+    &,
+    &:hover,
+    &:focus,
+    &:active,
+    &.active {
+      background-color: $background;
+          border-color: $border
+    }
+  }
+}
+
+// Button sizes
+// -------------------------
+@mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
+  padding: $padding-vertical $padding-horizontal;
+  font-size: $font-size;
+  line-height: $line-height;
+  border-radius: $border-radius;
+}
+
+// Pagination
+// -------------------------
+@mixin pagination-size($padding-vertical, $padding-horizontal, $font-size, $border-radius) {
+  > li {
+    > a,
+    > span {
+      padding: $padding-vertical $padding-horizontal;
+      font-size: $font-size;
+    }
+    &:first-child {
+      > a,
+      > span {
+        @include border-left-radius($border-radius);
+      }
+    }
+    &:last-child {
+      > a,
+      > span {
+        @include border-right-radius($border-radius);
+      }
+    }
+  }
+}
+
+// Labels
+// -------------------------
+@mixin label-variant($color) {
+  background-color: $color;
+  &[href] {
+    &:hover,
+    &:focus {
+      background-color: darken($color, 10%);
+    }
+  }
+}
+
+// Navbar vertical align
+// -------------------------
+// Vertically center elements in the navbar.
+// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.
+@mixin navbar-vertical-align($element-height) {
+  margin-top: (($navbar-height - $element-height) / 2);
+  margin-bottom: (($navbar-height - $element-height) / 2);
+}
+
+// Progress bars
+// -------------------------
+@mixin progress-bar-variant($color) {
+  background-color: $color;
+  .progress-striped & {
+    @include gradient-striped($color);
+  }
+}
+
+// Responsive utilities
+// -------------------------
+// More easily include all the states for responsive-utilities.less.
+// [converter] $parent hack
+@mixin responsive-visibility($parent) {
+  #{$parent} { display: block !important; }
+  tr#{$parent} { display: table-row !important; }
+  th#{$parent},
+  td#{$parent} { display: table-cell !important; }
+}
+
+// [converter] $parent hack
+@mixin responsive-invisibility($parent) {
+  #{$parent} { display: none !important; }
+  tr#{$parent} { display: none !important; }
+  th#{$parent},
+  td#{$parent} { display: none !important; }
+}
+
+// Grid System
+// -----------
+
+// Centered container element
+@mixin container-fixed() {
+  margin-right: auto;
+  margin-left: auto;
+  padding-left:  ($grid-gutter-width / 2);
+  padding-right: ($grid-gutter-width / 2);
+  @include clearfix();
+}
+
+// Creates a wrapper for a series of columns
+@mixin make-row($gutter: $grid-gutter-width) {
+  margin-left:  ($gutter / -2);
+  margin-right: ($gutter / -2);
+  @include clearfix();
+}
+
+// Generate the extra small columns
+@mixin make-xs-column($columns, $gutter: $grid-gutter-width) {
+  position: relative;
+  float: left;
+  width: percentage(($columns / $grid-columns));
+  // Prevent columns from collapsing when empty
+  min-height: 1px;
+  // Inner gutter via padding
+  padding-left:  ($gutter / 2);
+  padding-right: ($gutter / 2);
+}
+
+// Generate the small columns
+@mixin make-sm-column($columns, $gutter: $grid-gutter-width) {
+  position: relative;
+  // Prevent columns from collapsing when empty
+  min-height: 1px;
+  // Inner gutter via padding
+  padding-left:  ($gutter / 2);
+  padding-right: ($gutter / 2);
+
+  // Calculate width based on number of columns available
+  @media (min-width: $screen-sm) {
+    float: left;
+    width: percentage(($columns / $grid-columns));
+  }
+}
+
+// Generate the small column offsets
+@mixin make-sm-column-offset($columns) {
+  @media (min-width: $screen-sm) {
+    margin-left: percentage(($columns / $grid-columns));
+  }
+}
+@mixin make-sm-column-push($columns) {
+  @media (min-width: $screen-sm) {
+    left: percentage(($columns / $grid-columns));
+  }
+}
+@mixin make-sm-column-pull($columns) {
+  @media (min-width: $screen-sm) {
+    right: percentage(($columns / $grid-columns));
+  }
+}
+
+// Generate the medium columns
+@mixin make-md-column($columns, $gutter: $grid-gutter-width) {
+  position: relative;
+  // Prevent columns from collapsing when empty
+  min-height: 1px;
+  // Inner gutter via padding
+  padding-left:  ($gutter / 2);
+  padding-right: ($gutter / 2);
+
+  // Calculate width based on number of columns available
+  @media (min-width: $screen-md) {
+    float: left;
+    width: percentage(($columns / $grid-columns));
+  }
+}
+
+// Generate the large column offsets
+@mixin make-md-column-offset($columns) {
+  @media (min-width: $screen-md) {
+    margin-left: percentage(($columns / $grid-columns));
+  }
+}
+@mixin make-md-column-push($columns) {
+  @media (min-width: $screen-md) {
+    left: percentage(($columns / $grid-columns));
+  }
+}
+@mixin make-md-column-pull($columns) {
+  @media (min-width: $screen-md) {
+    right: percentage(($columns / $grid-columns));
+  }
+}
+
+// Generate the large columns
+@mixin make-lg-column($columns, $gutter: $grid-gutter-width) {
+  position: relative;
+  // Prevent columns from collapsing when empty
+  min-height: 1px;
+  // Inner gutter via padding
+  padding-left:  ($gutter / 2);
+  padding-right: ($gutter / 2);
+
+  // Calculate width based on number of columns available
+  @media (min-width: $screen-lg) {
+    float: left;
+    width: percentage(($columns / $grid-columns));
+  }
+}
+
+// Generate the large column offsets
+@mixin make-lg-column-offset($columns) {
+  @media (min-width: $screen-lg) {
+    margin-left: percentage(($columns / $grid-columns));
+  }
+}
+@mixin make-lg-column-push($columns) {
+  @media (min-width: $screen-lg) {
+    left: percentage(($columns / $grid-columns));
+  }
+}
+@mixin make-lg-column-pull($columns) {
+  @media (min-width: $screen-lg) {
+    right: percentage(($columns / $grid-columns));
+  }
+}
+
+
+// Form validation states
+//
+// Used in forms.less to generate the form validation CSS for warnings, errors,
+// and successes.
+
+@mixin form-control-validation($text-color: #555, $border-color: #ccc, $background-color: #f5f5f5) {
+  // Color the label and help text
+  .help-block,
+  .control-label {
+    color: $text-color;
+  }
+  // Set the border and box shadow on specific inputs to match
+  .form-control {
+    border-color: $border-color;
+    @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
+    &:focus {
+      border-color: darken($border-color, 10%);
+      $shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten($border-color, 20%);
+      @include box-shadow($shadow);
+    }
+  }
+  // Set validation states also for addons
+  .input-group-addon {
+    color: $text-color;
+    border-color: $border-color;
+    background-color: $background-color;
+  }
+}
+
+// Form control focus state
+//
+// Generate a customized focus state and for any input with the specified color,
+// which defaults to the `$input-focus-border` variable.
+//
+// We highly encourage you to not customize the default value, but instead use
+// this to tweak colors on an as-needed basis. This aesthetic change is based on
+// WebKit's default styles, but applicable to a wider range of browsers. Its
+// usability and accessibility should be taken into account with any change.
+//
+// Example usage: change the default blue border and shadow to white for better
+// contrast against a dark gray background.
+
+@mixin form-control-focus($color: $input-border-focus) {
+  $color-rgba: rgba(red($color), green($color), blue($color), .6);
+  &:focus {
+    border-color: $color;
+    outline: 0;
+    @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px $color-rgba);
+  }
+}
+
+// Form control sizing
+//
+// Relative text size, padding, and border-radii changes for form controls. For
+// horizontal sizing, wrap controls in the predefined grid classes. `<select>`
+// element gets special love because it's special, and that's a fact!
+
+// [converter] $parent hack
+@mixin input-size($parent, $input-height, $padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
+  #{$parent} { height: $input-height;
+  padding: $padding-vertical $padding-horizontal;
+  font-size: $font-size;
+  line-height: $line-height;
+  border-radius: $border-radius; }
+  select#{$parent} {
+    height: $input-height;
+    line-height: $input-height;
+  }
+
+  textarea#{$parent} {
+    height: auto;
+  }
+}
diff --git a/content/assets/css/bootstrap/_modals.scss b/content/assets/css/bootstrap/_modals.scss
new file mode 100644
index 0000000..8e5c61f
--- /dev/null
+++ b/content/assets/css/bootstrap/_modals.scss
@@ -0,0 +1,146 @@
+//
+// Modals
+// --------------------------------------------------
+
+// .modal-open      - body class for killing the scroll
+// .modal           - container to scroll within
+// .modal-dialog    - positioning shell for the actual modal
+// .modal-content   - actual modal w/ bg and corners and shit
+
+// Kill the scroll on the body
+.modal-open {
+  overflow: hidden;
+
+
+  // Account for hiding of scrollbar
+  
+  .navbar-fixed-top,
+  .navbar-fixed-bottom {
+    margin-right: 15px
+  }
+// [converter] extracted body& to body.modal-open
+}
+
+body.modal-open {
+  margin-right: 15px
+}
+
+// Container that the modal scrolls within
+.modal {
+  display: none;
+  overflow: auto;
+  overflow-y: scroll;
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: $zindex-modal-background;
+
+  // When fading in the modal, animate it to slide down
+  &.fade .modal-dialog {
+    @include translate(0, -25%);
+    @include transition-transform(0.3s ease-out);
+  }
+  &.in .modal-dialog { @include translate(0, 0)}
+}
+
+// Shell div to position the modal with bottom padding
+.modal-dialog {
+  margin-left: auto;
+  margin-right: auto;
+  width: auto;
+  padding: 10px;
+  z-index: ($zindex-modal-background + 10);
+}
+
+// Actual modal
+.modal-content {
+  position: relative;
+  background-color: $modal-content-bg;
+  border: 1px solid $modal-content-fallback-border-color; //old browsers fallback (ie8 etc)
+  border: 1px solid $modal-content-border-color;
+  border-radius: $border-radius-large;
+  @include box-shadow(0 3px 9px rgba(0,0,0,.5));
+  background-clip: padding-box;
+  // Remove focus outline from opened modal
+  outline: none;
+}
+
+// Modal background
+.modal-backdrop {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: ($zindex-modal-background - 10);
+  background-color: $modal-backdrop-bg;
+  // Fade for backdrop
+  &.fade { @include opacity(0); }
+  &.in { @include opacity(.5); }
+}
+
+// Modal header
+// Top section of the modal w/ title and dismiss
+.modal-header {
+  padding: $modal-title-padding;
+  border-bottom: 1px solid $modal-header-border-color;
+  min-height: ($modal-title-padding + $modal-title-line-height);
+}
+// Close icon
+.modal-header .close {
+  margin-top: -2px;
+}
+
+// Title text within header
+.modal-title {
+  margin: 0;
+  line-height: $modal-title-line-height;
+}
+
+// Modal body
+// Where all modal content resides (sibling of .modal-header and .modal-footer)
+.modal-body {
+  position: relative;
+  padding: $modal-inner-padding;
+}
+
+// Footer (for actions)
+.modal-footer {
+  margin-top: 15px;
+  padding: ($modal-inner-padding - 1) $modal-inner-padding $modal-inner-padding;
+  text-align: right; // right align buttons
+  border-top: 1px solid $modal-footer-border-color;
+  @include clearfix(); // clear it in case folks use .pull-* classes on buttons
+
+  // Properly space out buttons
+  .btn + .btn {
+    margin-left: 5px;
+    margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
+  }
+  // but override that for button groups
+  .btn-group .btn + .btn {
+    margin-left: -1px;
+  }
+  // and override it for block buttons as well
+  .btn-block + .btn-block {
+    margin-left: 0;
+  }
+}
+
+// Scale up the modal
+@media screen and (min-width: $screen-tablet) {
+
+  .modal-dialog {
+    left: 50%;
+    right: auto;
+    width: 600px;
+    padding-top: 30px;
+    padding-bottom: 30px;
+  }
+  .modal-content {
+    @include box-shadow(0 5px 15px rgba(0,0,0,.5));
+  }
+
+}
diff --git a/content/assets/css/bootstrap/_navbar.scss b/content/assets/css/bootstrap/_navbar.scss
new file mode 100644
index 0000000..8250e9e
--- /dev/null
+++ b/content/assets/css/bootstrap/_navbar.scss
@@ -0,0 +1,625 @@
+//
+// Navbars
+// --------------------------------------------------
+
+
+// Wrapper and base class
+//
+// Provide a static navbar from which we expand to create full-width, fixed, and
+// other navbar variations.
+
+.navbar {
+  position: relative;
+  z-index: $zindex-navbar;
+  min-height: $navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)
+  margin-bottom: $navbar-margin-bottom;
+  border: 1px solid transparent;
+
+  // Prevent floats from breaking the navbar
+  @include clearfix();
+
+  @media (min-width: $grid-float-breakpoint) {
+    border-radius: $navbar-border-radius;
+  }
+}
+
+
+// Navbar heading
+//
+// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy
+// styling of responsive aspects.
+
+.navbar-header {
+  @include clearfix();
+
+  @media (min-width: $grid-float-breakpoint) {
+    float: left;
+  }
+}
+
+
+// Navbar collapse (body)
+//
+// Group your navbar content into this for easy collapsing and expanding across
+// various device sizes. By default, this content is collapsed when <768px, but
+// will expand past that for a horizontal display.
+//
+// To start (on mobile devices) the navbar links, forms, and buttons are stacked
+// vertically and include a `max-height` to overflow in case you have too much
+// content for the user's viewport.
+
+.navbar-collapse {
+  max-height: 340px;
+  overflow-x: visible;
+  padding-right: $navbar-padding-horizontal;
+  padding-left:  $navbar-padding-horizontal;
+  border-top: 1px solid transparent;
+  box-shadow: inset 0 1px 0 rgba(255,255,255,.1);
+  @include clearfix();
+  -webkit-overflow-scrolling: touch;
+
+  &.in {
+    overflow-y: auto;
+  }
+
+  @media (min-width: $grid-float-breakpoint) {
+    width: auto;
+    border-top: 0;
+    box-shadow: none;
+
+    &.collapse {
+      display: block !important;
+      height: auto !important;
+      padding-bottom: 0; // Override default setting
+      overflow: visible !important;
+    }
+
+    &.in {
+      overflow-y: visible;
+    }
+
+    // Account for first and last children spacing
+    .navbar-nav.navbar-left:first-child {
+      margin-left: -$navbar-padding-horizontal;
+    }
+    .navbar-nav.navbar-right:last-child {
+      margin-right: -$navbar-padding-horizontal;
+    }
+    .navbar-text:last-child {
+      margin-right: 0;
+    }
+  }
+}
+
+
+// Both navbar header and collapse
+//
+// When a container is present, change the behavior of the header and collapse.
+
+.container > .navbar-header,
+.container > .navbar-collapse {
+  margin-right: -$navbar-padding-horizontal;
+  margin-left:  -$navbar-padding-horizontal;
+
+  @media (min-width: $grid-float-breakpoint) {
+    margin-right: 0;
+    margin-left:  0;
+  }
+}
+
+
+//
+// Navbar alignment options
+//
+// Display the navbar across the entirity of the page or fixed it to the top or
+// bottom of the page.
+
+// Static top (unfixed, but 100% wide) navbar
+.navbar-static-top {
+  border-width: 0 0 1px;
+  @media (min-width: $grid-float-breakpoint) {
+    border-radius: 0;
+  }
+}
+
+// Fix the top/bottom navbars when screen real estate supports it
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+  position: fixed;
+  right: 0;
+  left: 0;
+  border-width: 0 0 1px;
+
+  // Undo the rounded corners
+  @media (min-width: $grid-float-breakpoint) {
+    border-radius: 0;
+  }
+}
+.navbar-fixed-top {
+  z-index: $zindex-navbar-fixed;
+  top: 0;
+}
+.navbar-fixed-bottom {
+  bottom: 0;
+  margin-bottom: 0; // override .navbar defaults
+}
+
+
+// Brand/project name
+
+.navbar-brand {
+  float: left;
+  padding: $navbar-padding-vertical $navbar-padding-horizontal;
+  font-size: $font-size-large;
+  line-height: $line-height-computed;
+  &:hover,
+  &:focus {
+    text-decoration: none;
+  }
+
+  @media (min-width: $grid-float-breakpoint) {
+    .navbar > .container & {
+      margin-left: -$navbar-padding-horizontal;
+    }
+  }
+}
+
+
+// Navbar toggle
+//
+// Custom button for toggling the `.navbar-collapse`, powered by the collapse
+// JavaScript plugin.
+
+.navbar-toggle {
+  position: relative;
+  float: right;
+  margin-right: $navbar-padding-horizontal;
+  padding: 9px 10px;
+  @include navbar-vertical-align(34px);
+  background-color: transparent;
+  border: 1px solid transparent;
+  border-radius: $border-radius-base;
+
+  // Bars
+  .icon-bar {
+    display: block;
+    width: 22px;
+    height: 2px;
+    border-radius: 1px;
+  }
+  .icon-bar + .icon-bar {
+    margin-top: 4px;
+  }
+
+  @media (min-width: $grid-float-breakpoint) {
+    display: none;
+  }
+}
+
+
+// Navbar nav links
+//
+// Builds on top of the `.nav` components with it's own modifier class to make
+// the nav the full height of the horizontal nav (above 768px).
+
+.navbar-nav {
+  margin: ($navbar-padding-vertical / 2) (-$navbar-padding-horizontal);
+
+  > li > a {
+    padding-top:    10px;
+    padding-bottom: 10px;
+    line-height: $line-height-computed;
+  }
+
+  @media (max-width: $screen-xs-max) {
+    // Dropdowns get custom display when collapsed
+    .open .dropdown-menu {
+      position: static;
+      float: none;
+      width: auto;
+      margin-top: 0;
+      background-color: transparent;
+      border: 0;
+      box-shadow: none;
+      > li > a,
+      .dropdown-header {
+        padding: 5px 15px 5px 25px;
+      }
+      > li > a {
+        line-height: $line-height-computed;
+        &:hover,
+        &:focus {
+          background-image: none;
+        }
+      }
+    }
+  }
+
+  // Uncollapse the nav
+  @media (min-width: $grid-float-breakpoint) {
+    float: left;
+    margin: 0;
+
+    > li {
+      float: left;
+      > a {
+        padding-top: (($navbar-height - $line-height-computed) / 2);
+        padding-bottom: (($navbar-height - $line-height-computed) / 2);
+      }
+    }
+  }
+
+}
+
+
+// Component alignment
+//
+// Repurpose the pull utilities as their own navbar utilities to avoid specifity
+// issues with parents and chaining. Only do this when the navbar is uncollapsed
+// though so that navbar contents properly stack and align in mobile.
+
+@media (min-width: $grid-float-breakpoint) {
+  .navbar-left {
+    float: left !important;
+  }
+  .navbar-right {
+    float: right !important;
+  }
+}
+
+
+// Navbar form
+//
+// Extension of the `.form-inline` with some extra flavor for optimum display in
+// our navbars.
+
+.navbar-form {
+  margin-left: -$navbar-padding-horizontal;
+  margin-right: -$navbar-padding-horizontal;
+  padding: 10px $navbar-padding-horizontal;
+  border-top: 1px solid transparent;
+  border-bottom: 1px solid transparent;
+  $shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);
+  @include box-shadow($shadow);
+
+  // Mixin behavior for optimum display
+  @extend .form-inline;
+
+  .form-group {
+    @media (max-width: $screen-xs-max) {
+      margin-bottom: 5px;
+    }
+  }
+
+  // Vertically center in expanded, horizontal navbar
+  @include navbar-vertical-align($input-height-base);
+
+  // Undo 100% width for pull classes
+  @media (min-width: $grid-float-breakpoint) {
+    width: auto;
+    border: 0;
+    margin-left: 0;
+    margin-right: 0;
+    padding-top: 0;
+    padding-bottom: 0;
+    @include box-shadow(none);
+  }
+}
+
+
+// Dropdown menus
+
+// Menu position and menu carets
+.navbar-nav > li > .dropdown-menu {
+  margin-top: 0;
+  @include border-top-radius(0);
+}
+// Menu position and menu caret support for dropups via extra dropup class
+.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+  @include border-bottom-radius(0);
+}
+
+// Right aligned menus need alt position
+.navbar-nav.pull-right > li > .dropdown-menu,
+.navbar-nav > li > .dropdown-menu.pull-right {
+  left: auto;
+  right: 0;
+}
+
+
+// Buttons in navbars
+//
+// Vertically center a button within a navbar (when *not* in a form).
+
+.navbar-btn {
+  @include navbar-vertical-align($input-height-base);
+}
+
+
+// Text in navbars
+//
+// Add a class to make any element properly align itself vertically within the navbars.
+
+.navbar-text {
+  float: left;
+  @include navbar-vertical-align($line-height-computed);
+
+  @media (min-width: $grid-float-breakpoint) {
+    margin-left: $navbar-padding-horizontal;
+    margin-right: $navbar-padding-horizontal;
+  }
+}
+
+// Alternate navbars
+// --------------------------------------------------
+
+// Default navbar
+.navbar-default {
+  background-color: $navbar-default-bg;
+  border-color: $navbar-default-border;
+
+  .navbar-brand {
+    color: $navbar-default-brand-color;
+    &:hover,
+    &:focus {
+      color: $navbar-default-brand-hover-color;
+      background-color: $navbar-default-brand-hover-bg;
+    }
+  }
+
+  .navbar-text {
+    color: $navbar-default-color;
+  }
+
+  .navbar-nav {
+    > li > a {
+      color: $navbar-default-link-color;
+
+      &:hover,
+      &:focus {
+        color: $navbar-default-link-hover-color;
+        background-color: $navbar-default-link-hover-bg;
+      }
+    }
+    > .active > a {
+      &,
+      &:hover,
+      &:focus {
+        color: $navbar-default-link-active-color;
+        background-color: $navbar-default-link-active-bg;
+      }
+    }
+    > .disabled > a {
+      &,
+      &:hover,
+      &:focus {
+        color: $navbar-default-link-disabled-color;
+        background-color: $navbar-default-link-disabled-bg;
+      }
+    }
+  }
+
+  .navbar-toggle {
+    border-color: $navbar-default-toggle-border-color;
+    &:hover,
+    &:focus {
+      background-color: $navbar-default-toggle-hover-bg;
+    }
+    .icon-bar {
+      background-color: $navbar-default-toggle-icon-bar-bg;
+    }
+  }
+
+  .navbar-collapse,
+  .navbar-form {
+    border-color: darken($navbar-default-bg, 7%);
+  }
+
+  // Dropdown menu items and carets
+  .navbar-nav {
+    // Caret should match text color on hover
+    > .dropdown > a:hover .caret,
+    > .dropdown > a:focus .caret {
+      border-top-color: $navbar-default-link-hover-color;
+      border-bottom-color: $navbar-default-link-hover-color;
+    }
+
+    // Remove background color from open dropdown
+    > .open > a {
+      &,
+      &:hover,
+      &:focus {
+        background-color: $navbar-default-link-active-bg;
+        color: $navbar-default-link-active-color;
+        .caret {
+          border-top-color: $navbar-default-link-active-color;
+          border-bottom-color: $navbar-default-link-active-color;
+        }
+      }
+    }
+    > .dropdown > a .caret {
+      border-top-color: $navbar-default-link-color;
+      border-bottom-color: $navbar-default-link-color;
+    }
+
+
+    @media (max-width: $screen-xs-max) {
+      // Dropdowns get custom display when collapsed
+      .open .dropdown-menu {
+        > li > a {
+          color: $navbar-default-link-color;
+          &:hover,
+          &:focus {
+            color: $navbar-default-link-hover-color;
+            background-color: $navbar-default-link-hover-bg;
+          }
+        }
+        > .active > a {
+          &,
+          &:hover,
+          &:focus {
+            color: $navbar-default-link-active-color;
+            background-color: $navbar-default-link-active-bg;
+          }
+        }
+        > .disabled > a {
+          &,
+          &:hover,
+          &:focus {
+            color: $navbar-default-link-disabled-color;
+            background-color: $navbar-default-link-disabled-bg;
+          }
+        }
+      }
+    }
+  }
+
+
+  // Links in navbars
+  //
+  // Add a class to ensure links outside the navbar nav are colored correctly.
+
+  .navbar-link {
+    color: $navbar-default-link-color;
+    &:hover {
+      color: $navbar-default-link-hover-color;
+    }
+  }
+
+}
+
+// Inverse navbar
+
+.navbar-inverse {
+  background-color: $navbar-inverse-bg;
+  border-color: $navbar-inverse-border;
+
+  .navbar-brand {
+    color: $navbar-inverse-brand-color;
+    &:hover,
+    &:focus {
+      color: $navbar-inverse-brand-hover-color;
+      background-color: $navbar-inverse-brand-hover-bg;
+    }
+  }
+
+  .navbar-text {
+    color: $navbar-inverse-color;
+  }
+
+  .navbar-nav {
+    > li > a {
+      color: $navbar-inverse-link-color;
+
+      &:hover,
+      &:focus {
+        color: $navbar-inverse-link-hover-color;
+        background-color: $navbar-inverse-link-hover-bg;
+      }
+    }
+    > .active > a {
+      &,
+      &:hover,
+      &:focus {
+        color: $navbar-inverse-link-active-color;
+        background-color: $navbar-inverse-link-active-bg;
+      }
+    }
+    > .disabled > a {
+      &,
+      &:hover,
+      &:focus {
+        color: $navbar-inverse-link-disabled-color;
+        background-color: $navbar-inverse-link-disabled-bg;
+      }
+    }
+  }
+
+  // Darken the responsive nav toggle
+  .navbar-toggle {
+    border-color: $navbar-inverse-toggle-border-color;
+    &:hover,
+    &:focus {
+      background-color: $navbar-inverse-toggle-hover-bg;
+    }
+    .icon-bar {
+      background-color: $navbar-inverse-toggle-icon-bar-bg;
+    }
+  }
+
+  .navbar-collapse,
+  .navbar-form {
+    border-color: darken($navbar-inverse-bg, 7%);
+  }
+
+  // Dropdowns
+  .navbar-nav {
+    > .open > a {
+      &,
+      &:hover,
+      &:focus {
+        background-color: $navbar-inverse-link-active-bg;
+        color: $navbar-inverse-link-active-color;
+      }
+    }
+    > .dropdown > a:hover .caret {
+      border-top-color: $navbar-inverse-link-hover-color;
+      border-bottom-color: $navbar-inverse-link-hover-color;
+    }
+    > .dropdown > a .caret {
+      border-top-color: $navbar-inverse-link-color;
+      border-bottom-color: $navbar-inverse-link-color;
+    }
+    > .open > a {
+      &,
+      &:hover,
+      &:focus {
+        .caret {
+          border-top-color: $navbar-inverse-link-active-color;
+          border-bottom-color: $navbar-inverse-link-active-color;
+        }
+      }
+    }
+
+    @media (max-width: $screen-xs-max) {
+      // Dropdowns get custom display
+      .open .dropdown-menu {
+        > .dropdown-header {
+          border-color: $navbar-inverse-border;
+        }
+        > li > a {
+          color: $navbar-inverse-link-color;
+          &:hover,
+          &:focus {
+            color: $navbar-inverse-link-hover-color;
+            background-color: $navbar-inverse-link-hover-bg;
+          }
+        }
+        > .active > a {
+          &,
+          &:hover,
+          &:focus {
+            color: $navbar-inverse-link-active-color;
+            background-color: $navbar-inverse-link-active-bg;
+          }
+        }
+        > .disabled > a {
+          &,
+          &:hover,
+          &:focus {
+            color: $navbar-inverse-link-disabled-color;
+            background-color: $navbar-inverse-link-disabled-bg;
+          }
+        }
+      }
+    }
+  }
+
+  .navbar-link {
+    color: $navbar-inverse-link-color;
+    &:hover {
+      color: $navbar-inverse-link-hover-color;
+    }
+  }
+
+}
diff --git a/content/assets/css/bootstrap/_navs.scss b/content/assets/css/bootstrap/_navs.scss
new file mode 100644
index 0000000..5141ced
--- /dev/null
+++ b/content/assets/css/bootstrap/_navs.scss
@@ -0,0 +1,229 @@
+//
+// Navs
+// --------------------------------------------------
+
+
+// Base class
+// --------------------------------------------------
+
+.nav {
+  margin-bottom: 0;
+  padding-left: 0; // Override default ul/ol
+  list-style: none;
+  @include clearfix();
+
+  > li {
+    position: relative;
+    display: block;
+
+    > a {
+      position: relative;
+      display: block;
+      padding: $nav-link-padding;
+      &:hover,
+      &:focus {
+        text-decoration: none;
+        background-color: $nav-link-hover-bg;
+      }
+    }
+
+    // Disabled state sets text to gray and nukes hover/tab effects
+    &.disabled > a {
+      color: $nav-disabled-link-color;
+
+      &:hover,
+      &:focus {
+        color: $nav-disabled-link-hover-color;
+        text-decoration: none;
+        background-color: transparent;
+        cursor: not-allowed;
+      }
+    }
+  }
+
+  // Open dropdowns
+  .open > a {
+    &,
+    &:hover,
+    &:focus {
+      background-color: $nav-link-hover-bg;
+      border-color: $link-color;
+    }
+  }
+
+  // Dividers (basically an hr) within the dropdown
+  .nav-divider {
+    @include nav-divider();
+  }
+
+  // Prevent IE8 from misplacing imgs
+  // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989
+  > li > a > img {
+    max-width: none;
+  }
+}
+
+
+// Tabs
+// -------------------------
+
+// Give the tabs something to sit on
+.nav-tabs {
+  border-bottom: 1px solid $nav-tabs-border-color;
+  > li {
+    float: left;
+    // Make the list-items overlay the bottom border
+    margin-bottom: -1px;
+
+    // Actual tabs (as links)
+    > a {
+      margin-right: 2px;
+      line-height: $line-height-base;
+      border: 1px solid transparent;
+      border-radius: $border-radius-base $border-radius-base 0 0;
+      &:hover {
+        border-color: $nav-tabs-link-hover-border-color $nav-tabs-link-hover-border-color $nav-tabs-border-color;
+      }
+    }
+
+    // Active state, and it's :hover to override normal :hover
+    &.active > a {
+      &,
+      &:hover,
+      &:focus {
+        color: $nav-tabs-active-link-hover-color;
+        background-color: $nav-tabs-active-link-hover-bg;
+        border: 1px solid $nav-tabs-active-link-hover-border-color;
+        border-bottom-color: transparent;
+        cursor: default;
+      }
+    }
+  }
+  // pulling this in mainly for less shorthand
+  &.nav-justified {
+    @extend .nav-justified;
+    @extend .nav-tabs-justified;
+  }
+}
+
+
+// Pills
+// -------------------------
+.nav-pills {
+  > li {
+    float: left;
+
+    // Links rendered as pills
+    > a {
+      border-radius: 5px;
+    }
+    + li {
+      margin-left: 2px;
+    }
+
+    // Active state
+    &.active > a {
+      &,
+      &:hover,
+      &:focus {
+        color: $nav-pills-active-link-hover-color;
+        background-color: $nav-pills-active-link-hover-bg;
+      }
+    }
+  }
+}
+
+
+// Stacked pills
+.nav-stacked {
+  > li {
+    float: none;
+    + li {
+      margin-top: 2px;
+      margin-left: 0; // no need for this gap between nav items
+    }
+  }
+}
+
+
+// Nav variations
+// --------------------------------------------------
+
+// Justified nav links
+// -------------------------
+
+.nav-justified {
+  width: 100%;
+
+  > li {
+    float: none;
+     > a {
+      text-align: center;
+    }
+  }
+
+  @media (min-width: $screen-sm) {
+    > li {
+      display: table-cell;
+      width: 1%;
+    }
+  }
+}
+
+// Move borders to anchors instead of bottom of list
+.nav-tabs-justified {
+  border-bottom: 0;
+  > li > a {
+    border-bottom: 1px solid $nav-tabs-justified-link-border-color;
+
+    // Override margin from .nav-tabs
+    margin-right: 0;
+  }
+  > .active > a {
+    border-bottom-color: $nav-tabs-justified-active-link-border-color;
+  }
+}
+
+
+// Tabbable tabs
+// -------------------------
+
+// Clear any floats
+.tabbable {
+  @include clearfix();
+}
+
+// Show/hide tabbable areas
+.tab-content > .tab-pane,
+.pill-content > .pill-pane {
+  display: none;
+}
+.tab-content,
+.pill-content {
+  > .active {
+    display: block;
+  }
+}
+
+
+
+// Dropdowns
+// -------------------------
+
+// Make dropdown carets use link color in navs
+.nav .caret {
+  border-top-color: $link-color;
+  border-bottom-color: $link-color;
+}
+.nav a:hover .caret {
+  border-top-color: $link-hover-color;
+  border-bottom-color: $link-hover-color;
+}
+
+// Specific dropdowns
+.nav-tabs .dropdown-menu {
+  // make dropdown border overlap tab border
+  margin-top: -1px;
+  // Remove the top rounded corners here since there is a hard edge above the menu
+  @include border-top-radius(0);
+}
diff --git a/content/assets/css/bootstrap/_normalize.scss b/content/assets/css/bootstrap/_normalize.scss
new file mode 100644
index 0000000..a2e9c64
--- /dev/null
+++ b/content/assets/css/bootstrap/_normalize.scss
@@ -0,0 +1,396 @@
+/*! normalize.css v2.1.0 | MIT License | git.io/normalize */
+
+// ==========================================================================
+// HTML5 display definitions
+// ==========================================================================
+
+//
+// Correct `block` display not defined in IE 8/9.
+//
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+  display: block;
+}
+
+//
+// Correct `inline-block` display not defined in IE 8/9.
+//
+
+audio,
+canvas,
+video {
+  display: inline-block;
+}
+
+//
+// Prevent modern browsers from displaying `audio` without controls.
+// Remove excess height in iOS 5 devices.
+//
+
+audio:not([controls]) {
+  display: none;
+  height: 0;
+}
+
+//
+// Address styling not present in IE 8/9.
+//
+
+[hidden] {
+  display: none;
+}
+
+// ==========================================================================
+// Base
+// ==========================================================================
+
+//
+// 1. Set default font family to sans-serif.
+// 2. Prevent iOS text size adjust after orientation change, without disabling
+//    user zoom.
+//
+
+html {
+  font-family: sans-serif; // 1
+  -webkit-text-size-adjust: 100%; // 2
+  -ms-text-size-adjust: 100%; // 2
+}
+
+//
+// Remove default margin.
+//
+
+body {
+  margin: 0;
+}
+
+// ==========================================================================
+// Links
+// ==========================================================================
+
+//
+// Address `outline` inconsistency between Chrome and other browsers.
+//
+
+a:focus {
+  outline: thin dotted;
+}
+
+//
+// Improve readability when focused and also mouse hovered in all browsers.
+//
+
+a:active,
+a:hover {
+  outline: 0;
+}
+
+// ==========================================================================
+// Typography
+// ==========================================================================
+
+//
+// Address variable `h1` font-size and margin within `section` and `article`
+// contexts in Firefox 4+, Safari 5, and Chrome.
+//
+
+h1 {
+  font-size: 2em;
+  margin: 0.67em 0;
+}
+
+//
+// Address styling not present in IE 8/9, Safari 5, and Chrome.
+//
+
+abbr[title] {
+  border-bottom: 1px dotted;
+}
+
+//
+// Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
+//
+
+b,
+strong {
+  font-weight: bold;
+}
+
+//
+// Address styling not present in Safari 5 and Chrome.
+//
+
+dfn {
+  font-style: italic;
+}
+
+//
+// Address differences between Firefox and other browsers.
+//
+
+hr {
+  -moz-box-sizing: content-box;
+  box-sizing: content-box;
+  height: 0;
+}
+
+//
+// Address styling not present in IE 8/9.
+//
+
+mark {
+  background: #ff0;
+  color: #000;
+}
+
+//
+// Correct font family set oddly in Safari 5 and Chrome.
+//
+
+code,
+kbd,
+pre,
+samp {
+  font-family: monospace, serif;
+  font-size: 1em;
+}
+
+//
+// Improve readability of pre-formatted text in all browsers.
+//
+
+pre {
+  white-space: pre-wrap;
+}
+
+//
+// Set consistent quote types.
+//
+
+q {
+  quotes: "\201C" "\201D" "\2018" "\2019";
+}
+
+//
+// Address inconsistent and variable font size in all browsers.
+//
+
+small {
+  font-size: 80%;
+}
+
+//
+// Prevent `sub` and `sup` affecting `line-height` in all browsers.
+//
+
+sub,
+sup {
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+  vertical-align: baseline;
+}
+
+sup {
+  top: -0.5em;
+}
+
+sub {
+  bottom: -0.25em;
+}
+
+// ==========================================================================
+// Embedded content
+// ==========================================================================
+
+//
+// Remove border when inside `a` element in IE 8/9.
+//
+
+img {
+  border: 0;
+}
+
+//
+// Correct overflow displayed oddly in IE 9.
+//
+
+svg:not(:root) {
+  overflow: hidden;
+}
+
+// ==========================================================================
+// Figures
+// ==========================================================================
+
+//
+// Address margin not present in IE 8/9 and Safari 5.
+//
+
+figure {
+  margin: 0;
+}
+
+// ==========================================================================
+// Forms
+// ==========================================================================
+
+//
+// Define consistent border, margin, and padding.
+//
+
+fieldset {
+  border: 1px solid #c0c0c0;
+  margin: 0 2px;
+  padding: 0.35em 0.625em 0.75em;
+}
+
+//
+// 1. Correct `color` not being inherited in IE 8/9.
+// 2. Remove padding so people aren't caught out if they zero out fieldsets.
+//
+
+legend {
+  border: 0; // 1
+  padding: 0; // 2
+}
+
+//
+// 1. Correct font family not being inherited in all browsers.
+// 2. Correct font size not being inherited in all browsers.
+// 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
+//
+
+button,
+input,
+select,
+textarea {
+  font-family: inherit; // 1
+  font-size: 100%; // 2
+  margin: 0; // 3
+}
+
+//
+// Address Firefox 4+ setting `line-height` on `input` using `!important` in
+// the UA stylesheet.
+//
+
+button,
+input {
+  line-height: normal;
+}
+
+//
+// Address inconsistent `text-transform` inheritance for `button` and `select`.
+// All other form control elements do not inherit `text-transform` values.
+// Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
+// Correct `select` style inheritance in Firefox 4+ and Opera.
+//
+
+button,
+select {
+  text-transform: none;
+}
+
+//
+// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+//    and `video` controls.
+// 2. Correct inability to style clickable `input` types in iOS.
+// 3. Improve usability and consistency of cursor style between image-type
+//    `input` and others.
+//
+
+button,
+html input[type="button"], // 1
+input[type="reset"],
+input[type="submit"] {
+  -webkit-appearance: button; // 2
+  cursor: pointer; // 3
+}
+
+//
+// Re-set default cursor for disabled elements.
+//
+
+button[disabled],
+html input[disabled] {
+  cursor: default;
+}
+
+//
+// 1. Address box sizing set to `content-box` in IE 8/9.
+// 2. Remove excess padding in IE 8/9.
+//
+
+input[type="checkbox"],
+input[type="radio"] {
+  box-sizing: border-box; // 1
+  padding: 0; // 2
+}
+
+//
+// 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
+// 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
+//    (include `-moz` to future-proof).
+//
+
+input[type="search"] {
+  -webkit-appearance: textfield; // 1
+  -moz-box-sizing: content-box;
+  -webkit-box-sizing: content-box; // 2
+  box-sizing: content-box;
+}
+
+//
+// Remove inner padding and search cancel button in Safari 5 and Chrome
+// on OS X.
+//
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+//
+// Remove inner padding and border in Firefox 4+.
+//
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+  border: 0;
+  padding: 0;
+}
+
+//
+// 1. Remove default vertical scrollbar in IE 8/9.
+// 2. Improve readability and alignment in all browsers.
+//
+
+textarea {
+  overflow: auto; // 1
+  vertical-align: top; // 2
+}
+
+// ==========================================================================
+// Tables
+// ==========================================================================
+
+//
+// Remove most spacing between table cells.
+//
+
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
diff --git a/content/assets/css/bootstrap/_pager.scss b/content/assets/css/bootstrap/_pager.scss
new file mode 100644
index 0000000..e067a3d
--- /dev/null
+++ b/content/assets/css/bootstrap/_pager.scss
@@ -0,0 +1,55 @@
+//
+// Pager pagination
+// --------------------------------------------------
+
+
+.pager {
+  padding-left: 0;
+  margin: $line-height-computed 0;
+  list-style: none;
+  text-align: center;
+  @include clearfix();
+  li {
+    display: inline;
+    > a,
+    > span {
+      display: inline-block;
+      padding: 5px 14px;
+      background-color: $pagination-bg;
+      border: 1px solid $pagination-border;
+      border-radius: $pager-border-radius;
+    }
+
+    > a:hover,
+    > a:focus {
+      text-decoration: none;
+      background-color: $pagination-hover-bg;
+    }
+  }
+
+  .next {
+    > a,
+    > span {
+      float: right;
+    }
+  }
+
+  .previous {
+    > a,
+    > span {
+      float: left;
+    }
+  }
+
+  .disabled {
+    > a,
+    > a:hover,
+    > a:focus,
+    > span {
+      color: $pager-disabled-color;
+      background-color: $pagination-bg;
+      cursor: not-allowed;
+    }
+  }
+
+}
diff --git a/content/assets/css/bootstrap/_pagination.scss b/content/assets/css/bootstrap/_pagination.scss
new file mode 100644
index 0000000..10ebb62
--- /dev/null
+++ b/content/assets/css/bootstrap/_pagination.scss
@@ -0,0 +1,83 @@
+//
+// Pagination (multiple pages)
+// --------------------------------------------------
+.pagination {
+  display: inline-block;
+  padding-left: 0;
+  margin: $line-height-computed 0;
+  border-radius: $border-radius-base;
+
+  > li {
+    display: inline; // Remove list-style and block-level defaults
+    > a,
+    > span {
+      position: relative;
+      float: left; // Collapse white-space
+      padding: $padding-base-vertical $padding-base-horizontal;
+      line-height: $line-height-base;
+      text-decoration: none;
+      background-color: $pagination-bg;
+      border: 1px solid $pagination-border;
+      margin-left: -1px;
+    }
+    &:first-child {
+      > a,
+      > span {
+        margin-left: 0;
+        @include border-left-radius($border-radius-base);
+      }
+    }
+    &:last-child {
+      > a,
+      > span {
+        @include border-right-radius($border-radius-base);
+      }
+    }
+  }
+
+  > li > a,
+  > li > span {
+    &:hover,
+    &:focus {
+      background-color: $pagination-hover-bg;
+    }
+  }
+
+  > .active > a,
+  > .active > span {
+    &,
+    &:hover,
+    &:focus {
+      z-index: 2;
+      color: $pagination-active-color;
+      background-color: $pagination-active-bg;
+      border-color: $pagination-active-bg;
+      cursor: default;
+    }
+  }
+
+  > .disabled {
+    > span,
+    > a,
+    > a:hover,
+    > a:focus {
+      color: $pagination-disabled-color;
+      background-color: $pagination-bg;
+      border-color: $pagination-border;
+      cursor: not-allowed;
+    }
+  }
+}
+
+// Sizing
+// --------------------------------------------------
+
+// Large
+.pagination-lg {
+  @include pagination-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $border-radius-large);
+}
+
+// Small
+.pagination-sm {
+  @include pagination-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $border-radius-small);
+}
diff --git a/content/assets/css/bootstrap/_panels.scss b/content/assets/css/bootstrap/_panels.scss
new file mode 100644
index 0000000..e7ff37c
--- /dev/null
+++ b/content/assets/css/bootstrap/_panels.scss
@@ -0,0 +1,148 @@
+//
+// Panels
+// --------------------------------------------------
+
+
+// Base class
+.panel {
+  margin-bottom: $line-height-computed;
+  background-color: $panel-bg;
+  border: 1px solid transparent;
+  border-radius: $panel-border-radius;
+  @include box-shadow(0 1px 1px rgba(0,0,0,.05));
+}
+
+// Panel contents
+.panel-body {
+  padding: 15px;
+  @include clearfix();
+}
+
+
+// List groups in panels
+//
+// By default, space out list group content from panel headings to account for
+// any kind of custom content between the two.
+
+.panel {
+  > .list-group {
+    margin-bottom: 0;
+
+    .list-group-item {
+      border-width: 1px 0;
+
+      // Remove border radius for top one
+      &:first-child {
+        @include border-top-radius(0);
+      }
+      // But keep it for the last one
+      &:last-child {
+        border-bottom: 0;
+      }
+    }
+  }
+}
+// Collapse space between when there's no additional content.
+.panel-heading + .list-group {
+  .list-group-item:first-child {
+    border-top-width: 0;
+  }
+}
+
+
+// Tables in panels
+//
+// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and
+// watch it go full width.
+
+.panel {
+  > .table {
+    margin-bottom: 0;
+  }
+  > .panel-body + .table {
+    border-top: 1px solid $table-border-color;
+  }
+}
+
+
+// Optional heading
+.panel-heading {
+  padding: 10px 15px;
+  border-bottom: 1px solid transparent;
+  @include border-top-radius($panel-border-radius - 1);
+}
+
+// Within heading, strip any `h*` tag of it's default margins for spacing.
+.panel-title {
+  margin-top: 0;
+  margin-bottom: 0;
+  font-size: ceil(($font-size-base * 1.125));
+  > a {
+    color: inherit;
+  }
+}
+
+// Optional footer (stays gray in every modifier class)
+.panel-footer {
+  padding: 10px 15px;
+  background-color: $panel-footer-bg;
+  border-top: 1px solid $panel-inner-border;
+  @include border-bottom-radius($panel-border-radius - 1);
+}
+
+
+// Collapsable panels (aka, accordion)
+//
+// Wrap a series of panels in `.panel-group` to turn them into an accordion with
+// the help of our collapse JavaScript plugin.
+
+.panel-group {
+  // Tighten up margin so it's only between panels
+  .panel {
+    margin-bottom: 0;
+    border-radius: $panel-border-radius;
+    overflow: hidden; // crop contents when collapsed
+    + .panel {
+      margin-top: 5px;
+    }
+  }
+
+  .panel-heading {
+    border-bottom: 0;
+    + .panel-collapse .panel-body {
+      border-top: 1px solid $panel-inner-border;
+    }
+  }
+  .panel-footer {
+    border-top: 0;
+    + .panel-collapse .panel-body {
+      border-bottom: 1px solid $panel-inner-border;
+    }
+  }
+
+  // New subcomponent for wrapping collapsable content for proper animations
+  .panel-collapse {
+
+  }
+}
+
+
+// Contextual variations
+.panel-default {
+  @include panel-variant($panel-default-border, $panel-default-text, $panel-default-heading-bg, $panel-default-border);
+}
+.panel-primary {
+  @include panel-variant($panel-primary-border, $panel-primary-text, $panel-primary-heading-bg, $panel-primary-border);
+}
+.panel-success {
+  @include panel-variant($panel-success-border, $panel-success-text, $panel-success-heading-bg, $panel-success-border);
+}
+.panel-warning {
+  @include panel-variant($panel-warning-border, $panel-warning-text, $panel-warning-heading-bg, $panel-warning-border);
+}
+.panel-danger {
+  @include panel-variant($panel-danger-border, $panel-danger-text, $panel-danger-heading-bg, $panel-danger-border);
+}
+.panel-info {
+  @include panel-variant($panel-info-border, $panel-info-text, $panel-info-heading-bg, $panel-info-border);
+}
diff --git a/content/assets/css/bootstrap/_popovers.scss b/content/assets/css/bootstrap/_popovers.scss
new file mode 100644
index 0000000..7ebb0a0
--- /dev/null
+++ b/content/assets/css/bootstrap/_popovers.scss
@@ -0,0 +1,133 @@
+//
+// Popovers
+// --------------------------------------------------
+
+
+.popover {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: $zindex-popover;
+  display: none;
+  max-width: $popover-max-width;
+  padding: 1px;
+  text-align: left; // Reset given new insertion method
+  background-color: $popover-bg;
+  background-clip: padding-box;
+  border: 1px solid $popover-fallback-border-color;
+  border: 1px solid $popover-border-color;
+  border-radius: $border-radius-large;
+  @include box-shadow(0 5px 10px rgba(0,0,0,.2));
+
+  // Overrides for proper insertion
+  white-space: normal;
+
+  // Offset the popover to account for the popover arrow
+  &.top     { margin-top: -10px; }
+  &.right   { margin-left: 10px; }
+  &.bottom  { margin-top: 10px; }
+  &.left    { margin-left: -10px; }
+}
+
+.popover-title {
+  margin: 0; // reset heading margin
+  padding: 8px 14px;
+  font-size: $font-size-base;
+  font-weight: normal;
+  line-height: 18px;
+  background-color: $popover-title-bg;
+  border-bottom: 1px solid darken($popover-title-bg, 5%);
+  border-radius: 5px 5px 0 0;
+}
+
+.popover-content {
+  padding: 9px 14px;
+}
+
+// Arrows
+//
+// .arrow is outer, .arrow:after is inner
+
+.popover .arrow {
+  &,
+  &:after {
+    position: absolute;
+    display: block;
+    width: 0;
+    height: 0;
+    border-color: transparent;
+    border-style: solid;
+  }
+}
+.popover .arrow {
+  border-width: $popover-arrow-outer-width;
+}
+.popover .arrow:after {
+  border-width: $popover-arrow-width;
+  content: "";
+}
+
+.popover {
+  &.top .arrow {
+    left: 50%;
+    margin-left: -$popover-arrow-outer-width;
+    border-bottom-width: 0;
+    border-top-color: $popover-arrow-outer-fallback-color; // IE8 fallback
+    border-top-color: $popover-arrow-outer-color;
+    bottom: -$popover-arrow-outer-width;
+    &:after {
+      content: " ";
+      bottom: 1px;
+      margin-left: -$popover-arrow-width;
+      border-bottom-width: 0;
+      border-top-color: $popover-arrow-color;
+    }
+  }
+  &.right .arrow {
+    top: 50%;
+    left: -$popover-arrow-outer-width;
+    margin-top: -$popover-arrow-outer-width;
+    border-left-width: 0;
+    border-right-color: $popover-arrow-outer-fallback-color; // IE8 fallback
+    border-right-color: $popover-arrow-outer-color;
+    &:after {
+      content: " ";
+      left: 1px;
+      bottom: -$popover-arrow-width;
+      border-left-width: 0;
+      border-right-color: $popover-arrow-color;
+    }
+  }
+  &.bottom .arrow {
+    left: 50%;
+    margin-left: -$popover-arrow-outer-width;
+    border-top-width: 0;
+    border-bottom-color: $popover-arrow-outer-fallback-color; // IE8 fallback
+    border-bottom-color: $popover-arrow-outer-color;
+    top: -$popover-arrow-outer-width;
+    &:after {
+      content: " ";
+      top: 1px;
+      margin-left: -$popover-arrow-width;
+      border-top-width: 0;
+      border-bottom-color: $popover-arrow-color;
+    }
+  }
+
+  &.left .arrow {
+    top: 50%;
+    right: -$popover-arrow-outer-width;
+    margin-top: -$popover-arrow-outer-width;
+    border-right-width: 0;
+    border-left-color: $popover-arrow-outer-fallback-color; // IE8 fallback
+    border-left-color: $popover-arrow-outer-color;
+    &:after {
+      content: " ";
+      right: 1px;
+      border-right-width: 0;
+      border-left-color: $popover-arrow-color;
+      bottom: -$popover-arrow-width;
+    }
+  }
+
+}
diff --git a/content/assets/css/bootstrap/_print.scss b/content/assets/css/bootstrap/_print.scss
new file mode 100644
index 0000000..1e4bffe
--- /dev/null
+++ b/content/assets/css/bootstrap/_print.scss
@@ -0,0 +1,100 @@
+//
+// Basic print styles
+// --------------------------------------------------
+// Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css
+
+@media print {
+
+  * {
+    text-shadow: none !important;
+    color: #000 !important; // Black prints faster: h5bp.com/s
+    background: transparent !important;
+    box-shadow: none !important;
+  }
+
+  a,
+  a:visited {
+    text-decoration: underline;
+  }
+
+  a[href]:after {
+    content: " (" attr(href) ")";
+  }
+
+  abbr[title]:after {
+    content: " (" attr(title) ")";
+  }
+
+  // Don't show links for images, or javascript/internal links
+  .ir a:after,
+  a[href^="javascript:"]:after,
+  a[href^="#"]:after {
+    content: "";
+  }
+
+  pre,
+  blockquote {
+    border: 1px solid #999;
+    page-break-inside: avoid;
+  }
+
+  thead {
+    display: table-header-group; // h5bp.com/t
+  }
+
+  tr,
+  img {
+    page-break-inside: avoid;
+  }
+
+  img {
+    max-width: 100% !important;
+  }
+
+  @page {
+    margin: 2cm .5cm;
+  }
+
+  p,
+  h2,
+  h3 {
+    orphans: 3;
+    widows: 3;
+  }
+
+  h2,
+  h3 {
+    page-break-after: avoid;
+  }
+
+  // Bootstrap components
+  .navbar {
+    display: none;
+  }
+  .table {
+    td,
+    th {
+      background-color: #fff !important;
+    }
+  }
+  .btn,
+  .dropup > .btn {
+    > .caret {
+      border-top-color: #000 !important;
+    }
+  }
+  .label {
+    border: 1px solid #000;
+  }
+
+  .table {
+    border-collapse: collapse !important;
+  }
+  .table-bordered {
+    th,
+    td {
+      border: 1px solid #ddd !important;
+    }
+  }
+
+}
diff --git a/content/assets/css/bootstrap/_progress-bars.scss b/content/assets/css/bootstrap/_progress-bars.scss
new file mode 100644
index 0000000..237a251
--- /dev/null
+++ b/content/assets/css/bootstrap/_progress-bars.scss
@@ -0,0 +1,95 @@
+//
+// Progress bars
+// --------------------------------------------------
+
+
+// Bar animations
+// -------------------------
+
+// Webkit
+@-webkit-keyframes progress-bar-stripes {
+  from  { background-position: 40px 0; }
+  to    { background-position: 0 0; }
+}
+
+// Firefox
+@-moz-keyframes progress-bar-stripes {
+  from  { background-position: 40px 0; }
+  to    { background-position: 0 0; }
+}
+
+// Opera
+@-o-keyframes progress-bar-stripes {
+  from  { background-position: 0 0; }
+  to    { background-position: 40px 0; }
+}
+
+// Spec and IE10+
+@keyframes progress-bar-stripes {
+  from  { background-position: 40px 0; }
+  to    { background-position: 0 0; }
+}
+
+
+
+// Bar itself
+// -------------------------
+
+// Outer container
+.progress {
+  overflow: hidden;
+  height: $line-height-computed;
+  margin-bottom: $line-height-computed;
+  background-color: $progress-bg;
+  border-radius: $border-radius-base;
+  @include box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
+}
+
+// Bar of progress
+.progress-bar {
+  float: left;
+  width: 0%;
+  height: 100%;
+  font-size: $font-size-small;
+  color: $progress-bar-color;
+  text-align: center;
+  background-color: $progress-bar-bg;
+  @include box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));
+  @include transition(width .6s ease);
+}
+
+// Striped bars
+.progress-striped .progress-bar {
+  @include gradient-striped($progress-bar-bg);
+  background-size: 40px 40px;
+}
+
+// Call animation for the active one
+.progress.active .progress-bar {
+  -webkit-animation: progress-bar-stripes 2s linear infinite;
+     -moz-animation: progress-bar-stripes 2s linear infinite;
+      -ms-animation: progress-bar-stripes 2s linear infinite;
+       -o-animation: progress-bar-stripes 2s linear infinite;
+          animation: progress-bar-stripes 2s linear infinite;
+}
+
+
+
+// Variations
+// -------------------------
+
+.progress-bar-success {
+  @include progress-bar-variant($progress-bar-success-bg);
+}
+
+.progress-bar-info {
+  @include progress-bar-variant($progress-bar-info-bg);
+}
+
+.progress-bar-warning {
+  @include progress-bar-variant($progress-bar-warning-bg);
+}
+
+.progress-bar-danger {
+  @include progress-bar-variant($progress-bar-danger-bg);
+}
diff --git a/content/assets/css/bootstrap/_responsive-utilities.scss b/content/assets/css/bootstrap/_responsive-utilities.scss
new file mode 100644
index 0000000..5cab0c3
--- /dev/null
+++ b/content/assets/css/bootstrap/_responsive-utilities.scss
@@ -0,0 +1,209 @@
+//
+// Responsive: Utility classes
+// --------------------------------------------------
+
+
+// IE10 Metro responsive
+// Required for Windows 8 Metro split-screen snapping with IE10
+//
+// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
+@-ms-viewport{
+  width: device-width;
+}
+
+// IE10 on Windows Phone 8
+// IE10 on WP8 doesn't report CSS pixels, but actual device pixels. In
+// other words, say on a Lumia, you'll get 768px as the device width,
+// meaning users will see the tablet styles and not phone styles.
+//
+// Alternatively you can override this with JS (see source below), but
+// we won't be doing that here given our limited scope.
+//
+// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/
+@media screen and (max-width: 400px) {
+  @-ms-viewport{
+    width: 320px;
+  }
+}
+
+// Hide from screenreaders and browsers
+// Credit: HTML5 Boilerplate
+.hidden {
+  display: none !important;
+  visibility: hidden !important;
+}
+
+// Visibility utilities
+
+@include responsive-invisibility('.visible-xs');
+@media (max-width: $screen-xs-max) {
+  @include responsive-visibility('.visible-xs');
+}
+
+@media (min-width: $screen-sm) and (max-width: $screen-sm-max) {
+  @include responsive-visibility('.visible-xs.visible-sm');
+}
+
+
+@media (min-width: $screen-md) and (max-width: $screen-md-max) {
+  @include responsive-visibility('.visible-xs.visible-md');
+}    
+
+
+@media (min-width: $screen-lg) {
+  @include responsive-visibility('.visible-xs.visible-lg');
+}    
+
+
+@include responsive-invisibility('.visible-sm');
+
+@media (max-width: $screen-xs-max) {
+  @include responsive-visibility('.visible-sm.visible-xs');
+}    
+
+@media (min-width: $screen-sm) and (max-width: $screen-sm-max) {
+  @include responsive-visibility('.visible-sm');
+}
+
+@media (min-width: $screen-md) and (max-width: $screen-md-max) {
+  @include responsive-visibility('.visible-sm.visible-md');
+}    
+
+
+@media (min-width: $screen-lg) {
+  @include responsive-visibility('.visible-sm.visible-lg');
+}    
+
+
+@include responsive-invisibility('.visible-md');
+
+@media (max-width: $screen-xs-max) {
+  @include responsive-visibility('.visible-md.visible-xs');
+}    
+
+
+@media (min-width: $screen-sm) and (max-width: $screen-sm-max) {
+  @include responsive-visibility('.visible-md.visible-sm');
+}
+
+@media (min-width: $screen-md) and (max-width: $screen-md-max) {
+  @include responsive-visibility('.visible-md');
+}
+
+@media (min-width: $screen-lg) {
+  @include responsive-visibility('.visible-md.visible-lg');
+}    
+
+
+@include responsive-invisibility('.visible-lg');
+
+@media (max-width: $screen-xs-max) {
+  @include responsive-visibility('.visible-lg.visible-xs');
+}    
+
+
+@media (min-width: $screen-sm) and (max-width: $screen-sm-max) {
+  @include responsive-visibility('.visible-lg.visible-sm');
+}
+
+
+@media (min-width: $screen-md) and (max-width: $screen-md-max) {
+  @include responsive-visibility('.visible-lg.visible-md');
+}    
+
+@media (min-width: $screen-lg) {
+  @include responsive-visibility('.visible-lg');
+}
+
+@include responsive-visibility('.hidden-xs');
+@media (max-width: $screen-xs-max) {
+  @include responsive-invisibility('.hidden-xs');
+}
+
+@media (min-width: $screen-sm) and (max-width: $screen-sm-max) {
+  @include responsive-invisibility('.hidden-xs.hidden-sm');
+}    
+
+
+@media (min-width: $screen-md) and (max-width: $screen-md-max) {
+  @include responsive-invisibility('.hidden-xs.hidden-md');
+}    
+
+
+@media (min-width: $screen-lg) {
+  @include responsive-invisibility('.hidden-xs.hidden-lg');
+}    
+
+
+@include responsive-visibility('.hidden-sm');
+
+@media (max-width: $screen-xs-max) {
+  @include responsive-invisibility('.hidden-sm.hidden-xs');
+}
+
+@media (min-width: $screen-sm) and (max-width: $screen-sm-max) {
+  @include responsive-invisibility('.hidden-sm');
+}
+
+@media (min-width: $screen-md) and (max-width: $screen-md-max) {
+  @include responsive-invisibility('.hidden-sm.hidden-md');
+}    
+
+
+@media (min-width: $screen-lg) {
+  @include responsive-invisibility('.hidden-sm.hidden-lg');
+}    
+
+
+@include responsive-visibility('.hidden-md');
+
+@media (max-width: $screen-xs-max) {
+  @include responsive-invisibility('.hidden-md.hidden-xs');
+}    
+
+
+@media (min-width: $screen-sm) and (max-width: $screen-sm-max) {
+  @include responsive-invisibility('.hidden-md.hidden-sm');
+}    
+
+@media (min-width: $screen-md) and (max-width: $screen-md-max) {
+  @include responsive-invisibility('.hidden-md');
+}
+
+@media (min-width: $screen-lg) {
+  @include responsive-invisibility('.hidden-md.hidden-lg');
+}    
+
+
+@include responsive-visibility('.hidden-lg');
+
+@media (max-width: $screen-xs-max) {
+  @include responsive-invisibility('.hidden-lg.hidden-xs');
+}    
+
+
+@media (min-width: $screen-sm) and (max-width: $screen-sm-max) {
+  @include responsive-invisibility('.hidden-lg.hidden-sm');
+}    
+
+
+@media (min-width: $screen-md) and (max-width: $screen-md-max) {
+  @include responsive-invisibility('.hidden-lg.hidden-md');
+}    
+
+@media (min-width: $screen-lg) {
+  @include responsive-invisibility('.hidden-lg');
+}
+
+// Print utilities
+
+@include responsive-invisibility('.visible-print');
+
+@media print {
+
+  @include responsive-visibility('.visible-print');
+
+
+  @include responsive-invisibility('.hidden-print');
+
+}
diff --git a/content/assets/css/bootstrap/_scaffolding.scss b/content/assets/css/bootstrap/_scaffolding.scss
new file mode 100644
index 0000000..313712e
--- /dev/null
+++ b/content/assets/css/bootstrap/_scaffolding.scss
@@ -0,0 +1,130 @@
+//
+// Scaffolding
+// --------------------------------------------------
+
+
+// Reset the box-sizing
+
+*,
+*:before,
+*:after {
+  @include box-sizing(border-box);
+}
+
+
+// Body reset
+
+html {
+  font-size: 62.5%;
+  -webkit-tap-highlight-color: rgba(0,0,0,0);
+}
+
+body {
+  font-family: $font-family-base;
+  font-size: $font-size-base;
+  line-height: $line-height-base;
+  color: $text-color;
+  background-color: $body-bg;
+}
+
+// Reset fonts for relevant elements
+input,
+button,
+select,
+textarea {
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit;
+}
+
+// Reset unusual Firefox-on-Android default style.
+//
+// See https://github.com/necolas/normalize.css/issues/214
+
+button,
+input,
+select[multiple],
+textarea {
+  background-image: none;
+}
+
+
+// Links
+
+a {
+  color: $link-color;
+  text-decoration: none;
+
+  &:hover,
+  &:focus {
+    color: $link-hover-color;
+    text-decoration: underline;
+  }
+
+  &:focus {
+    @include tab-focus();
+  }
+}
+
+
+// Images
+
+img {
+  vertical-align: middle;
+}
+
+// Responsive images (ensure images don't scale beyond their parents)
+.img-responsive {
+  @include img-responsive();
+}
+
+// Rounded corners
+.img-rounded {
+  border-radius: $border-radius-large;
+}
+
+// Image thumbnails
+//
+// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.
+.img-thumbnail {
+  padding: $thumbnail-padding;
+  line-height: $line-height-base;
+  background-color: $thumbnail-bg;
+  border: 1px solid $thumbnail-border;
+  border-radius: $thumbnail-border-radius;
+  @include transition(all .2s ease-in-out);
+
+  // Keep them at most 100% wide
+  @include img-responsive(inline-block);
+}
+
+// Perfect circle
+.img-circle {
+  border-radius: 50%; // set radius in percents
+}
+
+
+// Horizontal rules
+
+hr {
+  margin-top:    $line-height-computed;
+  margin-bottom: $line-height-computed;
+  border: 0;
+  border-top: 1px solid $hr-border;
+}
+
+
+// Only display content to screen readers
+//
+// See: http://a11yproject.com/posts/how-to-hide-content/
+
+.sr-only {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  margin: -1px;
+  padding: 0;
+  overflow: hidden;
+  clip: rect(0 0 0 0);
+  border: 0;
+}
diff --git a/content/assets/css/bootstrap/_tables.scss b/content/assets/css/bootstrap/_tables.scss
new file mode 100644
index 0000000..d13888d
--- /dev/null
+++ b/content/assets/css/bootstrap/_tables.scss
@@ -0,0 +1,236 @@
+//
+// Tables
+// --------------------------------------------------
+
+
+table {
+  max-width: 100%;
+  background-color: $table-bg;
+}
+th {
+  text-align: left;
+}
+
+
+// Baseline styles
+
+.table {
+  width: 100%;
+  margin-bottom: $line-height-computed;
+  // Cells
+  thead,
+  tbody,
+  tfoot {
+    > tr {
+      > th,
+      > td {
+        padding: $table-cell-padding;
+        line-height: $line-height-base;
+        vertical-align: top;
+        border-top: 1px solid $table-border-color;
+      }
+    }
+  }
+  // Bottom align for column headings
+  thead > tr > th {
+    vertical-align: bottom;
+    border-bottom: 2px solid $table-border-color;
+  }
+  // Remove top border from thead by default
+  caption + thead,
+  colgroup + thead,
+  thead:first-child {
+    tr:first-child {
+      th, td {
+        border-top: 0;
+      }
+    }
+  }
+  // Account for multiple tbody instances
+  tbody + tbody {
+    border-top: 2px solid $table-border-color;
+  }
+
+  // Nesting
+  .table {
+    background-color: $body-bg;
+  }
+}
+
+
+// Condensed table w/ half padding
+
+.table-condensed {
+  thead,
+  tbody,
+  tfoot {
+    > tr {
+      > th,
+      > td {
+        padding: $table-condensed-cell-padding;
+      }
+    }
+  }
+}
+
+
+// Bordered version
+//
+// Add borders all around the table and between all the columns.
+
+.table-bordered {
+  border: 1px solid $table-border-color;
+  > thead,
+  > tbody,
+  > tfoot {
+    > tr {
+      > th,
+      > td {
+        border: 1px solid $table-border-color;
+      }
+    }
+  }
+  > thead {
+    > tr {
+      > th,
+      > td {
+        border-bottom-width: 2px;
+      }
+    }
+  }
+}
+
+
+// Zebra-striping
+//
+// Default zebra-stripe styles (alternating gray and transparent backgrounds)
+
+.table-striped {
+  > tbody {
+    > tr:nth-child(odd) {
+      > td,
+      > th {
+        background-color: $table-bg-accent;
+      }
+    }
+  }
+}
+
+
+// Hover effect
+//
+// Placed here since it has to come after the potential zebra striping
+
+.table-hover {
+  > tbody {
+    > tr:hover {
+      > td,
+      > th {
+        background-color: $table-bg-hover;
+      }
+    }
+  }
+}
+
+
+// Table cell sizing
+//
+// Reset default table behavior
+
+table col[class*="col-"] {
+  float: none;
+  display: table-column;
+}
+table {
+  td,
+  th {
+    &[class*="col-"] {
+      float: none;
+      display: table-cell;
+    }
+  }
+}
+
+
+// Table backgrounds
+//
+// Exact selectors below required to override `.table-striped` and prevent
+// inheritance to nested tables.
+
+.table > thead > tr,
+.table > tbody > tr,
+.table > tfoot > tr {
+  > td.active,
+  > th.active,
+  &.active > td,
+  &.active > th  {
+    background-color: $table-bg-active;
+  }
+}
+
+// Generate the contextual variants
+@include table-row-variant('success', $state-success-bg, $state-success-border);
+@include table-row-variant('danger', $state-danger-bg, $state-danger-border);
+@include table-row-variant('warning', $state-warning-bg, $state-warning-border);
+
+
+// Responsive tables
+//
+// Wrap your tables in `.table-scrollable` and we'll make them mobile friendly
+// by enabling horizontal scrolling. Only applies <768px. Everything above that
+// will display normally.
+
+@media (max-width: $screen-sm) {
+  .table-responsive {
+    width: 100%;
+    margin-bottom: 15px;
+    overflow-y: hidden;
+    overflow-x: scroll;
+    border: 1px solid $table-border-color;
+
+    // Tighten up spacing and give a background color
+    > .table {
+      margin-bottom: 0;
+      background-color: #fff;
+
+      // Ensure the content doesn't wrap
+      > thead,
+      > tbody,
+      > tfoot {
+        > tr {
+          > th,
+          > td {
+            white-space: nowrap;
+          }
+        }
+      }
+    }
+
+    // Special overrides for the bordered tables
+    > .table-bordered {
+      border: 0;
+
+      // Nuke the appropriate borders so that the parent can handle them
+      > thead,
+      > tbody,
+      > tfoot {
+        > tr {
+          > th:first-child,
+          > td:first-child {
+            border-left: 0;
+          }
+          > th:last-child,
+          > td:last-child {
+            border-right: 0;
+          }
+        }
+        > tr:last-child {
+          > th,
+          > td {
+            border-bottom: 0;
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/content/assets/css/bootstrap/_theme.scss b/content/assets/css/bootstrap/_theme.scss
new file mode 100644
index 0000000..96f8763
--- /dev/null
+++ b/content/assets/css/bootstrap/_theme.scss
@@ -0,0 +1,232 @@
+
+//
+// Load core variables and mixins
+// --------------------------------------------------
+
+@import "bootstrap/variables";
+@import "bootstrap/mixins";
+
+
+
+//
+// Buttons
+// --------------------------------------------------
+
+// Common styles
+.btn-default,
+.btn-primary,
+.btn-success,
+.btn-info,
+.btn-warning,
+.btn-danger {
+  text-shadow: 0 -1px 0 rgba(0,0,0,.2);
+  $shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);
+  @include box-shadow($shadow);
+
+  // Reset the shadow
+  &:active,
+  &.active {
+    @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
+  }
+}
+
+// Mixin for generating new styles
+@mixin btn-styles($btn-color: #555) {
+  @include gradient-vertical($start-color: $btn-color, $end-color: darken($btn-color, 10%));
+  border-color: darken($btn-color, 12%);
+
+  &:active,
+  &.active {
+    background-color: darken($btn-color, 10%);
+    border-color: darken($btn-color, 12%);
+  }
+}
+
+// Common styles
+.btn {
+  // Remove the gradient for the pressed/active state
+  &:active,
+  &.active {
+    background-image: none;
+  }
+}
+
+// Apply the mixin to the buttons
+.btn-default { @include btn-styles($btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }
+.btn-primary { @include btn-styles($btn-primary-bg); }
+.btn-success { @include btn-styles($btn-success-bg); }
+.btn-warning { @include btn-styles($btn-warning-bg); }
+.btn-danger  { @include btn-styles($btn-danger-bg); }
+.btn-info    { @include btn-styles($btn-info-bg); }
+
+
+
+//
+// Images
+// --------------------------------------------------
+
+.thumbnail,
+.img-thumbnail {
+  @include box-shadow(0 1px 2px rgba(0,0,0,.075));
+}
+
+
+
+//
+// Dropdowns
+// --------------------------------------------------
+
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus,
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+  @include gradient-vertical($start-color: $dropdown-link-hover-bg, $end-color: darken($dropdown-link-hover-bg, 5%));
+  background-color: darken($dropdown-link-hover-bg, 5%);
+}
+
+
+
+//
+// Navbar
+// --------------------------------------------------
+
+// Basic navbar
+.navbar {
+  @include gradient-vertical($start-color: lighten($navbar-default-bg, 10%), $end-color: $navbar-default-bg);
+  border-radius: $navbar-border-radius;
+  $shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);
+  @include box-shadow($shadow);
+
+  .navbar-nav > .active > a {
+    background-color: $navbar-default-bg;
+  }
+}
+.navbar-brand,
+.navbar-nav > li > a {
+  text-shadow: 0 1px 0 rgba(255,255,255,.25);
+}
+
+// Inverted navbar
+.navbar-inverse {
+  @include gradient-vertical($start-color: lighten($navbar-inverse-bg, 10%), $end-color: $navbar-inverse-bg);
+
+  .navbar-nav > .active > a {
+    background-color: $navbar-inverse-bg;
+  }
+
+  .navbar-brand,
+  .navbar-nav > li > a {
+    text-shadow: 0 -1px 0 rgba(0,0,0,.25);
+  }
+}
+
+// Undo rounded corners in static and fixed navbars
+.navbar-static-top,
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+  border-radius: 0;
+}
+
+
+
+//
+// Alerts
+// --------------------------------------------------
+
+// Common styles
+.alert {
+  text-shadow: 0 1px 0 rgba(255,255,255,.2);
+  $shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);
+  @include box-shadow($shadow);
+}
+
+// Mixin for generating new styles
+@mixin alert-styles($color) {
+  @include gradient-vertical($start-color: $color, $end-color: darken($color, 7.5%));
+  border-color: darken($color, 15%);
+}
+
+// Apply the mixin to the alerts
+.alert-success    { @include alert-styles($alert-success-bg); }
+.alert-info       { @include alert-styles($alert-info-bg); }
+.alert-warning    { @include alert-styles($alert-warning-bg); }
+.alert-danger     { @include alert-styles($alert-danger-bg); }
+
+
+
+//
+// Progress bars
+// --------------------------------------------------
+
+// Give the progress background some depth
+.progress {
+  @include gradient-vertical($start-color: darken($progress-bg, 4%), $end-color: $progress-bg)
+}
+
+// Mixin for generating new styles
+@mixin progress-bar-styles($color) {
+  @include gradient-vertical($start-color: $color, $end-color: darken($color, 10%));
+}
+
+// Apply the mixin to the progress bars
+.progress-bar            { @include progress-bar-styles($progress-bar-bg); }
+.progress-bar-success    { @include progress-bar-styles($progress-bar-success-bg); }
+.progress-bar-info       { @include progress-bar-styles($progress-bar-info-bg); }
+.progress-bar-warning    { @include progress-bar-styles($progress-bar-warning-bg); }
+.progress-bar-danger     { @include progress-bar-styles($progress-bar-danger-bg); }
+
+
+
+//
+// List groups
+// --------------------------------------------------
+
+.list-group {
+  border-radius: $border-radius-base;
+  @include box-shadow(0 1px 2px rgba(0,0,0,.075));
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+  text-shadow: 0 -1px 0 darken($list-group-active-bg, 10%);
+  @include gradient-vertical($start-color: $list-group-active-bg, $end-color: darken($list-group-active-bg, 7.5%));
+  border-color: darken($list-group-active-border, 7.5%);
+}
+
+
+
+//
+// Panels
+// --------------------------------------------------
+
+// Common styles
+.panel {
+  @include box-shadow(0 1px 2px rgba(0,0,0,.05));
+}
+
+// Mixin for generating new styles
+@mixin panel-heading-styles($color) {
+  @include gradient-vertical($start-color: $color, $end-color: darken($color, 5%));
+}
+
+// Apply the mixin to the panel headings only
+.panel-default > .panel-heading   { @include panel-heading-styles($panel-default-heading-bg); }
+.panel-primary > .panel-heading   { @include panel-heading-styles($panel-primary-heading-bg); }
+.panel-success > .panel-heading   { @include panel-heading-styles($panel-success-heading-bg); }
+.panel-info > .panel-heading      { @include panel-heading-styles($panel-info-heading-bg); }
+.panel-warning > .panel-heading   { @include panel-heading-styles($panel-warning-heading-bg); }
+.panel-danger > .panel-heading    { @include panel-heading-styles($panel-danger-heading-bg); }
+
+
+
+//
+// Wells
+// --------------------------------------------------
+
+.well {
+  @include gradient-vertical($start-color: darken($well-bg, 5%), $end-color: $well-bg);
+  border-color: darken($well-bg, 10%);
+  $shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);
+  @include box-shadow($shadow);
+}
diff --git a/content/assets/css/bootstrap/_thumbnails.scss b/content/assets/css/bootstrap/_thumbnails.scss
new file mode 100644
index 0000000..b0b2739
--- /dev/null
+++ b/content/assets/css/bootstrap/_thumbnails.scss
@@ -0,0 +1,31 @@
+//
+// Thumbnails
+// --------------------------------------------------
+
+
+// Mixin and adjust the regular image class
+.thumbnail {
+  @extend .img-thumbnail;
+  display: block; // Override the inline-block from `.img-thumbnail`
+
+  > img {
+    @include img-responsive();
+  }
+}
+
+
+// Add a hover state for linked versions only
+a.thumbnail:hover,
+a.thumbnail:focus {
+  border-color: $link-color;
+}
+
+// Images and captions
+.thumbnail > img {
+  margin-left: auto;
+  margin-right: auto;
+}
+.thumbnail .caption {
+  padding: $thumbnail-caption-padding;
+  color: $thumbnail-caption-color;
+}
diff --git a/content/assets/css/bootstrap/_tooltip.scss b/content/assets/css/bootstrap/_tooltip.scss
new file mode 100644
index 0000000..94195bb
--- /dev/null
+++ b/content/assets/css/bootstrap/_tooltip.scss
@@ -0,0 +1,95 @@
+//
+// Tooltips
+// --------------------------------------------------
+
+
+// Base class
+.tooltip {
+  position: absolute;
+  z-index: $zindex-tooltip;
+  display: block;
+  visibility: visible;
+  font-size: $font-size-small;
+  line-height: 1.4;
+  @include opacity(0);
+
+  &.in     { @include opacity(.9); }
+  &.top    { margin-top:  -3px; padding: 5px 0; }
+  &.right  { margin-left:  3px; padding: 0 5px; }
+  &.bottom { margin-top:   3px; padding: 5px 0; }
+  &.left   { margin-left: -3px; padding: 0 5px; }
+}
+
+// Wrapper for the tooltip content
+.tooltip-inner {
+  max-width: $tooltip-max-width;
+  padding: 3px 8px;
+  color: $tooltip-color;
+  text-align: center;
+  text-decoration: none;
+  background-color: $tooltip-bg;
+  border-radius: $border-radius-base;
+}
+
+// Arrows
+.tooltip-arrow {
+  position: absolute;
+  width: 0;
+  height: 0;
+  border-color: transparent;
+  border-style: solid;
+}
+.tooltip {
+  &.top .tooltip-arrow {
+    bottom: 0;
+    left: 50%;
+    margin-left: -$tooltip-arrow-width;
+    border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
+    border-top-color: $tooltip-arrow-color;
+  }
+  &.top-left .tooltip-arrow {
+    bottom: 0;
+    left: 5px;
+    border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
+    border-top-color: $tooltip-arrow-color;
+  }
+  &.top-right .tooltip-arrow {
+    bottom: 0;
+    right: 5px;
+    border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
+    border-top-color: $tooltip-arrow-color;
+  }
+  &.right .tooltip-arrow {
+    top: 50%;
+    left: 0;
+    margin-top: -$tooltip-arrow-width;
+    border-width: $tooltip-arrow-width $tooltip-arrow-width $tooltip-arrow-width 0;
+    border-right-color: $tooltip-arrow-color;
+  }
+  &.left .tooltip-arrow {
+    top: 50%;
+    right: 0;
+    margin-top: -$tooltip-arrow-width;
+    border-width: $tooltip-arrow-width 0 $tooltip-arrow-width $tooltip-arrow-width;
+    border-left-color: $tooltip-arrow-color;
+  }
+  &.bottom .tooltip-arrow {
+    top: 0;
+    left: 50%;
+    margin-left: -$tooltip-arrow-width;
+    border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
+    border-bottom-color: $tooltip-arrow-color;
+  }
+  &.bottom-left .tooltip-arrow {
+    top: 0;
+    left: 5px;
+    border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
+    border-bottom-color: $tooltip-arrow-color;
+  }
+  &.bottom-right .tooltip-arrow {
+    top: 0;
+    right: 5px;
+    border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
+    border-bottom-color: $tooltip-arrow-color;
+  }
+}
diff --git a/content/assets/css/bootstrap/_type.scss b/content/assets/css/bootstrap/_type.scss
new file mode 100644
index 0000000..0559041
--- /dev/null
+++ b/content/assets/css/bootstrap/_type.scss
@@ -0,0 +1,238 @@
+//
+// Typography
+// --------------------------------------------------
+
+
+// Body text
+// -------------------------
+
+p {
+  margin: 0 0 ($line-height-computed / 2);
+}
+.lead {
+  margin-bottom: $line-height-computed;
+  font-size: ($font-size-base * 1.15);
+  font-weight: 200;
+  line-height: 1.4;
+
+  @media (min-width: 768px) {
+    font-size: ($font-size-base * 1.5);
+  }
+}
+
+
+// Emphasis & misc
+// -------------------------
+
+// Ex: 14px base font * 85% = about 12px
+small   { font-size: 85%; }
+
+// Undo browser default styling
+cite    { font-style: normal; }
+
+// Contextual emphasis
+.text-muted          { color: $text-muted; }
+.text-primary        { color: $brand-primary; }
+.text-warning        { color: $state-warning-text; }
+.text-danger         { color: $state-danger-text; }
+.text-success        { color: $state-success-text; }
+.text-info           { color: $state-info-text; }
+
+// Alignment
+.text-left           { text-align: left; }
+.text-right          { text-align: right; }
+.text-center         { text-align: center; }
+
+
+// Headings
+// -------------------------
+
+h1, h2, h3, h4, h5, h6,
+.h1, .h2, .h3, .h4, .h5, .h6 {
+  font-family: $headings-font-family;
+  font-weight: $headings-font-weight;
+  line-height: $headings-line-height;
+  small {
+    font-weight: normal;
+    line-height: 1;
+    color: $headings-small-color;
+  }
+}
+
+h1,
+h2,
+h3 {
+  margin-top: $line-height-computed;
+  margin-bottom: ($line-height-computed / 2);
+}
+h4,
+h5,
+h6 {
+  margin-top: ($line-height-computed / 2);
+  margin-bottom: ($line-height-computed / 2);
+}
+
+h1, .h1 { font-size: floor($font-size-base * 2.60); } // ~36px
+h2, .h2 { font-size: floor($font-size-base * 2.15); } // ~30px
+h3, .h3 { font-size: ceil($font-size-base * 1.70); } // ~24px
+h4, .h4 { font-size: ceil($font-size-base * 1.25); } // ~18px
+h5, .h5 { font-size:  $font-size-base; }
+h6, .h6 { font-size: ceil($font-size-base * 0.85); } // ~12px
+
+h1 small, .h1 small { font-size: ceil($font-size-base * 1.70); } // ~24px
+h2 small, .h2 small { font-size: ceil($font-size-base * 1.25); } // ~18px
+h3 small, .h3 small,
+h4 small, .h4 small { font-size: $font-size-base; }
+
+
+// Page header
+// -------------------------
+
+.page-header {
+  padding-bottom: (($line-height-computed / 2) - 1);
+  margin: ($line-height-computed * 2) 0 $line-height-computed;
+  border-bottom: 1px solid $page-header-border-color;
+}
+
+
+
+// Lists
+// --------------------------------------------------
+
+// Unordered and Ordered lists
+ul,
+ol {
+  margin-top: 0;
+  margin-bottom: ($line-height-computed / 2);
+  ul,
+  ol{
+    margin-bottom: 0;
+  }
+}
+
+// List options
+
+// Unstyled keeps list items block level, just removes default browser padding and list-style
+.list-unstyled {
+  padding-left: 0;
+  list-style: none;
+}
+// Inline turns list items into inline-block
+.list-inline {
+  @extend .list-unstyled;
+  > li {
+    display: inline-block;
+    padding-left: 5px;
+    padding-right: 5px;
+  }
+}
+
+// Description Lists
+dl {
+  margin-bottom: $line-height-computed;
+}
+dt,
+dd {
+  line-height: $line-height-base;
+}
+dt {
+  font-weight: bold;
+}
+dd {
+  margin-left: 0; // Undo browser default
+}
+
+// Horizontal description lists
+//
+// Defaults to being stacked without any of the below styles applied, until the
+// grid breakpoint is reached (default of ~768px).
+
+@media (min-width: $grid-float-breakpoint) {
+  .dl-horizontal {
+    dt {
+      float: left;
+      width: ($component-offset-horizontal - 20);
+      clear: left;
+      text-align: right;
+      @include text-overflow();
+    }
+    dd {
+      margin-left: $component-offset-horizontal;
+      @include clearfix(); // Clear the floated `dt` if an empty `dd` is present
+    }
+  }
+}
+
+// MISC
+// ----
+
+// Abbreviations and acronyms
+abbr[title],
+// Added data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257
+abbr[data-original-title] {
+  cursor: help;
+  border-bottom: 1px dotted $abbr-border-color;
+}
+abbr.initialism {
+  font-size: 90%;
+  text-transform: uppercase;
+}
+
+// Blockquotes
+blockquote {
+  padding: ($line-height-computed / 2) $line-height-computed;
+  margin: 0 0 $line-height-computed;
+  border-left: 5px solid $blockquote-border-color;
+  p {
+    font-size: ($font-size-base * 1.25);
+    font-weight: 300;
+    line-height: 1.25;
+  }
+  p:last-child {
+    margin-bottom: 0;
+  }
+  small {
+    display: block;
+    line-height: $line-height-base;
+    color: $blockquote-small-color;
+    &:before {
+      content: '\2014 \00A0';// EM DASH, NBSP
+    }
+  }
+
+  // Float right with text-align: right
+  &.pull-right {
+    padding-right: 15px;
+    padding-left: 0;
+    border-right: 5px solid $blockquote-border-color;
+    border-left: 0;
+    p,
+    small {
+      text-align: right;
+    }
+    small {
+      &:before {
+        content: '';
+      }
+      &:after {
+        content: '\00A0 \2014';// NBSP, EM DASH
+      }
+    }
+  }
+}
+
+// Quotes
+q:before,
+q:after,
+blockquote:before,
+blockquote:after {
+  content: "";
+}
+
+// Addresses
+address {
+  display: block;
+  margin-bottom: $line-height-computed;
+  font-style: normal;
+  line-height: $line-height-base;
+}
diff --git a/content/assets/css/bootstrap/_utilities.scss b/content/assets/css/bootstrap/_utilities.scss
new file mode 100644
index 0000000..c3a7035
--- /dev/null
+++ b/content/assets/css/bootstrap/_utilities.scss
@@ -0,0 +1,42 @@
+//
+// Utility classes
+// --------------------------------------------------
+
+
+// Floats
+// -------------------------
+
+.clearfix {
+  @include clearfix();
+}
+.pull-right {
+  float: right !important;
+}
+.pull-left {
+  float: left !important;
+}
+
+
+// Toggling content
+// -------------------------
+
+.hide {
+  display: none !important;
+}
+.show {
+  display: block !important;
+}
+.invisible {
+  visibility: hidden;
+}
+.text-hide {
+  @include hide-text();
+}
+
+
+// For Affix plugin
+// -------------------------
+
+.affix {
+  position: fixed;
+}
diff --git a/content/assets/css/bootstrap/_variables.scss b/content/assets/css/bootstrap/_variables.scss
new file mode 100644
index 0000000..b1b6387
--- /dev/null
+++ b/content/assets/css/bootstrap/_variables.scss
@@ -0,0 +1,620 @@
+//
+// Variables
+// --------------------------------------------------
+
+
+// Global values
+// --------------------------------------------------
+
+// Grays
+// -------------------------
+
+$gray-darker:            lighten(#000, 13.5%) !default; // #222
+$gray-dark:              lighten(#000, 20%) !default;   // #333
+$gray:                   lighten(#000, 33.5%) !default; // #555
+$gray-light:             lighten(#000, 60%) !default;   // #999
+$gray-lighter:           lighten(#000, 93.5%) !default; // #eee
+
+// Brand colors
+// -------------------------
+
+$brand-primary:         #428bca !default;
+$brand-success:         #5cb85c !default;
+$brand-warning:         #f0ad4e !default;
+$brand-danger:          #d9534f !default;
+$brand-info:            #5bc0de !default;
+
+// Scaffolding
+// -------------------------
+
+$body-bg:               #fff !default;
+$text-color:            $gray-dark !default;
+
+// Links
+// -------------------------
+
+$link-color:            $brand-primary !default;
+$link-hover-color:      darken($link-color, 15%) !default;
+
+// Typography
+// -------------------------
+
+$font-family-sans-serif:  "Helvetica Neue", Helvetica, Arial, sans-serif !default;
+$font-family-serif:       Georgia, "Times New Roman", Times, serif !default;
+$font-family-monospace:   Monaco, Menlo, Consolas, "Courier New", monospace !default;
+$font-family-base:        $font-family-sans-serif !default;
+
+$font-size-base:          15px !default;
+$font-size-large:         ceil($font-size-base * 1.25) !default; // ~18px
+$font-size-small:         ceil($font-size-base * 0.85) !default; // ~12px
+
+$line-height-base:        1.428571429 !default; // 20/14
+$line-height-computed:    floor($font-size-base * $line-height-base) !default; // ~20px
+
+$headings-font-family:    $font-family-base !default;
+$headings-font-weight:    500 !default;
+$headings-line-height:    1.1 !default;
+
+// Iconography
+// -------------------------
+
+$icon-font-path: "bootstrap/" !default;
+$icon-font-name:          "glyphicons-halflings-regular" !default;
+
+
+// Components
+// -------------------------
+// Based on 14px font-size and 1.428 line-height (~20px to start)
+
+$padding-base-vertical:          6px !default;
+$padding-base-horizontal:        12px !default;
+
+$padding-large-vertical:         10px !default;
+$padding-large-horizontal:       16px !default;
+
+$padding-small-vertical:         5px !default;
+$padding-small-horizontal:       10px !default;
+
+$line-height-large:              1.33 !default;
+$line-height-small:              1.5 !default;
+
+$border-radius-base:             4px !default;
+$border-radius-large:            6px !default;
+$border-radius-small:            3px !default;
+
+$component-active-bg:            $brand-primary !default;
+
+$caret-width-base:               4px !default;
+$caret-width-large:              5px !default;
+
+// Tables
+// -------------------------
+
+$table-cell-padding:                 8px !default;
+$table-condensed-cell-padding:       5px !default;
+
+$table-bg:                           transparent !default; // overall background-color
+$table-bg-accent:                    #f9f9f9 !default; // for striping
+$table-bg-hover:                     #f5f5f5 !default;
+$table-bg-active:                    $table-bg-hover !default;
+
+$table-border-color:                 #ddd !default; // table and cell border
+
+
+// Buttons
+// -------------------------
+
+$btn-font-weight:                normal !default;
+
+$btn-default-color:              #333 !default;
+$btn-default-bg:                 #fff !default;
+$btn-default-border:             #ccc !default;
+
+$btn-primary-color:              #fff !default;
+$btn-primary-bg:                 $brand-primary !default;
+$btn-primary-border:             darken($btn-primary-bg, 5%) !default;
+
+$btn-success-color:              #fff !default;
+$btn-success-bg:                 $brand-success !default;
+$btn-success-border:             darken($btn-success-bg, 5%) !default;
+
+$btn-warning-color:              #fff !default;
+$btn-warning-bg:                 $brand-warning !default;
+$btn-warning-border:             darken($btn-warning-bg, 5%) !default;
+
+$btn-danger-color:               #fff !default;
+$btn-danger-bg:                  $brand-danger !default;
+$btn-danger-border:              darken($btn-danger-bg, 5%) !default;
+
+$btn-info-color:                 #fff !default;
+$btn-info-bg:                    $brand-info !default;
+$btn-info-border:                darken($btn-info-bg, 5%) !default;
+
+$btn-link-disabled-color:        $gray-light !default;
+
+
+// Forms
+// -------------------------
+
+$input-bg:                       #fff !default;
+$input-bg-disabled:              $gray-lighter !default;
+
+$input-color:                    $gray !default;
+$input-border:                   #ccc !default;
+$input-border-radius:            $border-radius-base !default;
+$input-border-focus:             #66afe9 !default;
+
+$input-color-placeholder:        $gray-light !default;
+
+$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
+$input-height-large:             (floor($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
+$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
+
+$legend-color:                   $gray-dark !default;
+$legend-border-color:            #e5e5e5 !default;
+
+$input-group-addon-bg:           $gray-lighter !default;
+$input-group-addon-border-color: $input-border !default;
+
+
+// Dropdowns
+// -------------------------
+
+$dropdown-bg:                    #fff !default;
+$dropdown-border:                rgba(0,0,0,.15) !default;
+$dropdown-fallback-border:       #ccc !default;
+$dropdown-divider-bg:            #e5e5e5 !default;
+
+$dropdown-link-active-color:     #fff !default;
+$dropdown-link-active-bg:        $component-active-bg !default;
+
+$dropdown-link-color:            $gray-dark !default;
+$dropdown-link-hover-color:      #fff !default;
+$dropdown-link-hover-bg:         $dropdown-link-active-bg !default;
+
+$dropdown-link-disabled-color:   $gray-light !default;
+
+$dropdown-header-color:          $gray-light !default;
+
+$dropdown-caret-color:           #000 !default;
+
+
+// COMPONENT VARIABLES
+// --------------------------------------------------
+
+
+// Z-index master list
+// -------------------------
+// Used for a bird's eye view of components dependent on the z-axis
+// Try to avoid customizing these :)
+
+$zindex-navbar:            1000 !default;
+$zindex-dropdown:          1000 !default;
+$zindex-popover:           1010 !default;
+$zindex-tooltip:           1030 !default;
+$zindex-navbar-fixed:      1030 !default;
+$zindex-modal-background:  1040 !default;
+$zindex-modal:             1050 !default;
+
+// Media queries breakpoints
+// --------------------------------------------------
+
+// Extra small screen / phone
+$screen-xs:                  480px !default;
+$screen-phone:               $screen-xs !default;
+
+// Small screen / tablet
+$screen-sm:                  768px !default;
+$screen-tablet:              $screen-sm !default;
+
+// Medium screen / desktop
+$screen-md:                  992px !default;
+$screen-desktop:             $screen-md !default;
+
+// Large screen / wide desktop
+$screen-lg:                  1200px !default;
+$screen-lg-desktop:          $screen-lg !default;
+
+// So media queries don't overlap when required, provide a maximum
+$screen-xs-max:              ($screen-sm - 1) !default;
+$screen-sm-max:              ($screen-md - 1) !default;
+$screen-md-max:              ($screen-lg - 1) !default;
+
+
+// Grid system
+// --------------------------------------------------
+
+// Number of columns in the grid system
+$grid-columns:              12 !default;
+// Padding, to be divided by two and applied to the left and right of all columns
+$grid-gutter-width:         30px !default;
+// Point at which the navbar stops collapsing
+$grid-float-breakpoint:     $screen-tablet !default;
+
+
+// Navbar
+// -------------------------
+
+// Basics of a navbar
+$navbar-height:                    50px !default;
+$navbar-margin-bottom:             $line-height-computed !default;
+$navbar-default-color:             #777 !default;
+$navbar-default-bg:                #f8f8f8 !default;
+$navbar-default-border:            darken($navbar-default-bg, 6.5%) !default;
+$navbar-border-radius:             $border-radius-base !default;
+$navbar-padding-horizontal:        floor($grid-gutter-width / 2) !default;
+$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
+
+// Navbar links
+$navbar-default-link-color:                #777 !default;
+$navbar-default-link-hover-color:          #333 !default;
+$navbar-default-link-hover-bg:             transparent !default;
+$navbar-default-link-active-color:         #555 !default;
+$navbar-default-link-active-bg:            darken($navbar-default-bg, 6.5%) !default;
+$navbar-default-link-disabled-color:       #ccc !default;
+$navbar-default-link-disabled-bg:          transparent !default;
+
+// Navbar brand label
+$navbar-default-brand-color:               $navbar-default-link-color !default;
+$navbar-default-brand-hover-color:         darken($navbar-default-link-color, 10%) !default;
+$navbar-default-brand-hover-bg:            transparent !default;
+
+// Navbar toggle
+$navbar-default-toggle-hover-bg:           #ddd !default;
+$navbar-default-toggle-icon-bar-bg:        #ccc !default;
+$navbar-default-toggle-border-color:       #ddd !default;
+
+
+// Inverted navbar
+//
+// Reset inverted navbar basics
+$navbar-inverse-color:                      $gray-light !default;
+$navbar-inverse-bg:                         #222 !default;
+$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%) !default;
+
+// Inverted navbar links
+$navbar-inverse-link-color:                 $gray-light !default;
+$navbar-inverse-link-hover-color:           #fff !default;
+$navbar-inverse-link-hover-bg:              transparent !default;
+$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color !default;
+$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 10%) !default;
+$navbar-inverse-link-disabled-color:        #444 !default;
+$navbar-inverse-link-disabled-bg:           transparent !default;
+
+// Inverted navbar brand label
+$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
+$navbar-inverse-brand-hover-color:          #fff !default;
+$navbar-inverse-brand-hover-bg:             transparent !default;
+
+// Inverted navbar search
+// Normal navbar needs no special styles or vars
+$navbar-inverse-search-bg:                  lighten($navbar-inverse-bg, 25%) !default;
+$navbar-inverse-search-bg-focus:            #fff !default;
+$navbar-inverse-search-border:              $navbar-inverse-bg !default;
+$navbar-inverse-search-placeholder-color:   #ccc !default;
+
+// Inverted navbar toggle
+$navbar-inverse-toggle-hover-bg:            #333 !default;
+$navbar-inverse-toggle-icon-bar-bg:         #fff !default;
+$navbar-inverse-toggle-border-color:        #333 !default;
+
+
+// Navs
+// -------------------------
+
+$nav-link-padding:                          10px 15px !default;
+$nav-link-hover-bg:                         $gray-lighter !default;
+
+$nav-disabled-link-color:                   $gray-light !default;
+$nav-disabled-link-hover-color:             $gray-light !default;
+
+$nav-open-link-hover-color:                 #fff !default;
+$nav-open-caret-border-color:               #fff !default;
+
+// Tabs
+$nav-tabs-border-color:                     #ddd !default;
+
+$nav-tabs-link-hover-border-color:          $gray-lighter !default;
+
+$nav-tabs-active-link-hover-bg:             $body-bg !default;
+$nav-tabs-active-link-hover-color:          $gray !default;
+$nav-tabs-active-link-hover-border-color:   #ddd !default;
+
+$nav-tabs-justified-link-border-color:            #ddd !default;
+$nav-tabs-justified-active-link-border-color:     $body-bg !default;
+
+// Pills
+$nav-pills-active-link-hover-bg:            $component-active-bg !default;
+$nav-pills-active-link-hover-color:         #fff !default;
+
+
+// Pagination
+// -------------------------
+
+$pagination-bg:                        #fff !default;
+$pagination-border:                    #ddd !default;
+
+$pagination-hover-bg:                  $gray-lighter !default;
+
+$pagination-active-bg:                 $brand-primary !default;
+$pagination-active-color:              #fff !default;
+
+$pagination-disabled-color:            $gray-light !default;
+
+
+// Pager
+// -------------------------
+
+$pager-border-radius:                  15px !default;
+$pager-disabled-color:                 $gray-light !default;
+
+
+// Jumbotron
+// -------------------------
+
+$jumbotron-padding:              30px !default;
+$jumbotron-color:                inherit !default;
+$jumbotron-bg:                   $gray-lighter !default;
+
+$jumbotron-heading-color:        inherit !default;
+
+
+// Form states and alerts
+// -------------------------
+
+$state-warning-text:             #c09853 !default;
+$state-warning-bg:               #fcf8e3 !default;
+$state-warning-border:           darken(adjust-hue($state-warning-bg, -10), 3%) !default;
+
+$state-danger-text:              #b94a48 !default;
+$state-danger-bg:                #f2dede !default;
+$state-danger-border:            darken(adjust-hue($state-danger-bg, -10), 3%) !default;
+
+$state-success-text:             #468847 !default;
+$state-success-bg:               #dff0d8 !default;
+$state-success-border:           darken(adjust-hue($state-success-bg, -10), 5%) !default;
+
+$state-info-text:                #3a87ad !default;
+$state-info-bg:                  #d9edf7 !default;
+$state-info-border:              darken(adjust-hue($state-info-bg, -10), 7%) !default;
+
+
+// Tooltips
+// -------------------------
+$tooltip-max-width:           200px !default;
+$tooltip-color:               #fff !default;
+$tooltip-bg:                  #000 !default;
+
+$tooltip-arrow-width:         5px !default;
+$tooltip-arrow-color:         $tooltip-bg !default;
+
+
+// Popovers
+// -------------------------
+$popover-bg:                          #fff !default;
+$popover-max-width:                   276px !default;
+$popover-border-color:                rgba(0,0,0,.2) !default;
+$popover-fallback-border-color:       #ccc !default;
+
+$popover-title-bg:                    darken($popover-bg, 3%) !default;
+
+$popover-arrow-width:                 10px !default;
+$popover-arrow-color:                 #fff !default;
+
+$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
+$popover-arrow-outer-color:           rgba(0,0,0,.25) !default;
+$popover-arrow-outer-fallback-color:  #999 !default;
+
+
+// Labels
+// -------------------------
+
+$label-default-bg:            $gray-light !default;
+$label-primary-bg:            $brand-primary !default;
+$label-success-bg:            $brand-success !default;
+$label-info-bg:               $brand-info !default;
+$label-warning-bg:            $brand-warning !default;
+$label-danger-bg:             $brand-danger !default;
+
+$label-color:                 #fff !default;
+$label-link-hover-color:      #fff !default;
+
+
+// Modals
+// -------------------------
+$modal-inner-padding:         20px !default;
+
+$modal-title-padding:         15px !default;
+$modal-title-line-height:     $line-height-base !default;
+
+$modal-content-bg:                             #fff !default;
+$modal-content-border-color:                   rgba(0,0,0,.2) !default;
+$modal-content-fallback-border-color:          #999 !default;
+
+$modal-backdrop-bg:           #000 !default;
+$modal-header-border-color:   #e5e5e5 !default;
+$modal-footer-border-color:   $modal-header-border-color !default;
+
+
+// Alerts
+// -------------------------
+$alert-padding:               15px !default;
+$alert-border-radius:         $border-radius-base !default;
+$alert-link-font-weight:      bold !default;
+
+$alert-success-bg:            $state-success-bg !default;
+$alert-success-text:          $state-success-text !default;
+$alert-success-border:        $state-success-border !default;
+
+$alert-info-bg:               $state-info-bg !default;
+$alert-info-text:             $state-info-text !default;
+$alert-info-border:           $state-info-border !default;
+
+$alert-warning-bg:            $state-warning-bg !default;
+$alert-warning-text:          $state-warning-text !default;
+$alert-warning-border:        $state-warning-border !default;
+
+$alert-danger-bg:             $state-danger-bg !default;
+$alert-danger-text:           $state-danger-text !default;
+$alert-danger-border:         $state-danger-border !default;
+
+
+// Progress bars
+// -------------------------
+$progress-bg:                 #f5f5f5 !default;
+$progress-bar-color:          #fff !default;
+
+$progress-bar-bg:             $brand-primary !default;
+$progress-bar-success-bg:     $brand-success !default;
+$progress-bar-warning-bg:     $brand-warning !default;
+$progress-bar-danger-bg:      $brand-danger !default;
+$progress-bar-info-bg:        $brand-info !default;
+
+
+// List group
+// -------------------------
+$list-group-bg:               #fff !default;
+$list-group-border:           #ddd !default;
+$list-group-border-radius:    $border-radius-base !default;
+
+$list-group-hover-bg:         #f5f5f5 !default;
+$list-group-active-color:     #fff !default;
+$list-group-active-bg:        $component-active-bg !default;
+$list-group-active-border:    $list-group-active-bg !default;
+
+$list-group-link-color:          #555 !default;
+$list-group-link-heading-color:  #333 !default;
+
+
+// Panels
+// -------------------------
+$panel-bg:                    #fff !default;
+$panel-inner-border:          #ddd !default;
+$panel-border-radius:         $border-radius-base !default;
+$panel-footer-bg:             #f5f5f5 !default;
+
+$panel-default-text:          $gray-dark !default;
+$panel-default-border:        #ddd !default;
+$panel-default-heading-bg:    #f5f5f5 !default;
+
+$panel-primary-text:          #fff !default;
+$panel-primary-border:        $brand-primary !default;
+$panel-primary-heading-bg:    $brand-primary !default;
+
+$panel-success-text:          $state-success-text !default;
+$panel-success-border:        $state-success-border !default;
+$panel-success-heading-bg:    $state-success-bg !default;
+
+$panel-warning-text:          $state-warning-text !default;
+$panel-warning-border:        $state-warning-border !default;
+$panel-warning-heading-bg:    $state-warning-bg !default;
+
+$panel-danger-text:           $state-danger-text !default;
+$panel-danger-border:         $state-danger-border !default;
+$panel-danger-heading-bg:     $state-danger-bg !default;
+
+$panel-info-text:             $state-info-text !default;
+$panel-info-border:           $state-info-border !default;
+$panel-info-heading-bg:       $state-info-bg !default;
+
+
+// Thumbnails
+// -------------------------
+$thumbnail-padding:           4px !default;
+$thumbnail-bg:                $body-bg !default;
+$thumbnail-border:            #ddd !default;
+$thumbnail-border-radius:     $border-radius-base !default;
+
+$thumbnail-caption-color:     $text-color !default;
+$thumbnail-caption-padding:   9px !default;
+
+
+// Wells
+// -------------------------
+$well-bg:                     #f5f5f5 !default;
+
+
+// Badges
+// -------------------------
+$badge-color:                 #fff !default;
+$badge-link-hover-color:      #fff !default;
+$badge-bg:                    $gray-light !default;
+
+$badge-active-color:          $link-color !default;
+$badge-active-bg:             #fff !default;
+
+$badge-font-weight:           bold !default;
+$badge-line-height:           1 !default;
+$badge-border-radius:         10px !default;
+
+
+// Breadcrumbs
+// -------------------------
+$breadcrumb-bg:               #f5f5f5 !default;
+$breadcrumb-color:            #ccc !default;
+$breadcrumb-active-color:     $gray-light !default;
+
+
+// Carousel
+// ------------------------
+
+$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
+
+$carousel-control-color:                      #fff !default;
+$carousel-control-width:                      15% !default;
+$carousel-control-opacity:                    .5 !default;
+$carousel-control-font-size:                  20px !default;
+
+$carousel-indicator-active-bg:                #fff !default;
+$carousel-indicator-border-color:             #fff !default;
+
+$carousel-caption-color:                      #fff !default;
+
+
+// Close
+// ------------------------
+$close-color:                 #000 !default;
+$close-font-weight:           bold !default;
+$close-text-shadow:           0 1px 0 #fff !default;
+
+
+// Code
+// ------------------------
+$code-color:                  #c7254e !default;
+$code-bg:                     #f9f2f4 !default;
+
+$pre-bg:                      #f5f5f5 !default;
+$pre-color:                   $gray-dark !default;
+$pre-border-color:            #ccc !default;
+$pre-scrollable-max-height:   340px !default;
+
+// Type
+// ------------------------
+$text-muted:                  $gray-light !default;
+$abbr-border-color:           $gray-light !default;
+$headings-small-color:        $gray-light !default;
+$blockquote-small-color:      $gray-light !default;
+$blockquote-border-color:     $gray-lighter !default;
+$page-header-border-color:    $gray-lighter !default;
+
+// Miscellaneous
+// -------------------------
+
+// Hr border color
+$hr-border:                   $gray-lighter !default;
+
+// Horizontal forms & lists
+$component-offset-horizontal: 180px !default;
+
+
+// Container sizes
+// --------------------------------------------------
+
+// Small screen / tablet
+$container-tablet:            ((720px + $grid-gutter-width)) !default;
+
+// Medium screen / desktop
+$container-desktop:           ((940px + $grid-gutter-width)) !default;
+
+// Large screen / wide desktop
+$container-lg-desktop:        ((1140px + $grid-gutter-width)) !default;
diff --git a/content/assets/css/bootstrap/_wells.scss b/content/assets/css/bootstrap/_wells.scss
new file mode 100644
index 0000000..882c083
--- /dev/null
+++ b/content/assets/css/bootstrap/_wells.scss
@@ -0,0 +1,29 @@
+//
+// Wells
+// --------------------------------------------------
+
+
+// Base class
+.well {
+  min-height: 20px;
+  padding: 19px;
+  margin-bottom: 20px;
+  background-color: $well-bg;
+  border: 1px solid darken($well-bg, 7%);
+  border-radius: $border-radius-base;
+  @include box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
+  blockquote {
+    border-color: #ddd;
+    border-color: rgba(0,0,0,.15);
+  }
+}
+
+// Sizes
+.well-lg {
+  padding: 24px;
+  border-radius: $border-radius-large;
+}
+.well-sm {
+  padding: 9px;
+  border-radius: $border-radius-small;
+}
diff --git a/content/assets/css/bootstrap/bootstrap.scss b/content/assets/css/bootstrap/bootstrap.scss
new file mode 100644
index 0000000..bc610ad
--- /dev/null
+++ b/content/assets/css/bootstrap/bootstrap.scss
@@ -0,0 +1,59 @@
+/*!
+ * Bootstrap v3.0.0
+ *
+ * Copyright 2013 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world by @mdo and @fat.
+ */
+
+// Core variables and mixins
+@import "variables";
+@import "mixins";
+
+// Reset
+@import "normalize";
+@import "print";
+
+// Core CSS
+@import "scaffolding";
+@import "type";
+@import "code";
+@import "grid";
+@import "tables";
+@import "forms";
+@import "buttons";
+
+// Components
+@import "component-animations";
+@import "glyphicons";
+@import "dropdowns";
+@import "button-groups";
+@import "input-groups";
+@import "navs";
+@import "navbar";
+@import "breadcrumbs";
+@import "pagination";
+@import "pager";
+@import "labels";
+@import "badges";
+@import "jumbotron";
+@import "thumbnails";
+@import "alerts";
+@import "progress-bars";
+@import "media";
+@import "list-group";
+@import "panels";
+@import "wells";
+@import "close";
+
+// Components w/ JavaScript
+@import "modals";
+@import "tooltip";
+@import "popovers";
+@import "carousel";
+
+// Utility classes
+@import "utilities";
+@import "responsive-utilities";
diff --git a/content/assets/seven.rss b/content/assets/seven.rss
new file mode 100644
index 0000000..2fa9d5e
--- /dev/null
+++ b/content/assets/seven.rss
@@ -0,0 +1,311 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rss version="2.0"
+	xmlns:content="http://purl.org/rss/1.0/modules/content/"
+	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
+	xmlns:dc="http://purl.org/dc/elements/1.1/"
+	xmlns:atom="http://www.w3.org/2005/Atom"
+	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
+	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
+	>
+
+<channel>
+	<title>Seven.CentOS.org</title>
+	<atom:link href="http://seven.centos.org/feed/" rel="self" type="application/rss+xml" />
+	<link>http://seven.centos.org</link>
+	<description>News, views and reports on CentOS-7</description>
+	<lastBuildDate>Tue, 07 Jan 2014 08:27:16 +0000</lastBuildDate>
+	<language>en-US</language>
+		<sy:updatePeriod>hourly</sy:updatePeriod>
+		<sy:updateFrequency>1</sy:updateFrequency>
+	<generator>http://wordpress.org/?v=3.8</generator>
+	<item>
+		<title>CentOSPlus kernel for .el7</title>
+		<link>http://seven.centos.org/2014/01/centosplus-kernel-for-el7/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=centosplus-kernel-for-el7</link>
+		<comments>http://seven.centos.org/2014/01/centosplus-kernel-for-el7/#comments</comments>
+		<pubDate>Mon, 06 Jan 2014 17:36:17 +0000</pubDate>
+		<dc:creator><![CDATA[Akemi Yagi]]></dc:creator>
+				<category><![CDATA[General]]></category>
+
+		<guid isPermaLink="false">http://seven.centos.org/?p=78</guid>
+		<description><![CDATA[There are two main roles offered by the centosplus kernel; one is to provide features that are disabled in the distro kernel and the other is to fix known issues by applying patches. The plus kernel for .el7 is now under development and can be followed in this bug tracker. So far rebuilding the kernel [&#8230;]]]></description>
+				<content:encoded><![CDATA[<p>There are two main roles offered by the centosplus kernel; one is to provide features that are disabled in the distro kernel and the other is to fix known issues by applying patches. The plus kernel for .el7 is now under development and can be followed in this <a title="bug tracker" href="http://bugs.centos.org/view.php?id=6828" target="_blank">bug tracker</a>.</p>
+<p>So far rebuilding the kernel with modified config file(s) seems straightforward &#8212; at least not as convoluted as it is in .el6.</p>
+<p>A number of drivers have been removed / disabled in EL7beta compared to EL6.5 as seen in the <a title="release notes" href="https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/7-Beta/html-single/7.0_Release_Notes/index.html#discontinued-kernel-drivers" target="_blank">EL7beta Release Notes</a>. They are good candidates for the plus kernel. A user who needs the ath5k driver realized it wasn&#8217;t in the el7beta and <a title="ath5k " href="https://www.centos.org/forums/viewtopic.php?f=10&amp;t=44007#p188268" target="_blank">rebuilt the kernel</a>. This and other drivers will be included in the .el7 plus kernel.</p>
+<p>At some point, a test version will be made available, so stay tuned. In the meantime, please file a request for features and propose bug fixes by opening a new <a title="bug tracker report" href="http://bugs.centos.org" target="_blank">bug tracker report</a>.</p>
+]]></content:encoded>
+			<wfw:commentRss>http://seven.centos.org/2014/01/centosplus-kernel-for-el7/feed/</wfw:commentRss>
+		<slash:comments>0</slash:comments>
+		</item>
+		<item>
+		<title>State of the build 20140104</title>
+		<link>http://seven.centos.org/2014/01/state-of-the-build-20140104/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=state-of-the-build-20140104</link>
+		<comments>http://seven.centos.org/2014/01/state-of-the-build-20140104/#comments</comments>
+		<pubDate>Sat, 04 Jan 2014 02:16:03 +0000</pubDate>
+		<dc:creator><![CDATA[kbsingh]]></dc:creator>
+				<category><![CDATA[builds]]></category>
+
+		<guid isPermaLink="false">http://seven.centos.org/?p=76</guid>
+		<description><![CDATA[This is what our to-build queues look like at the moment, note that they are by arch of the required resulting rpms ( so srpms that produce multi arch binaries will be listed twice ). noarch/apache-commons-net-3.2-7.el7.src.rpm noarch/args4j-2.0.16-11.el7.src.rpm noarch/boost-1.53.0-14.el7.src.rpm noarch/byteman-2.0.4-3.el7.src.rpm noarch/cdi-api-1.0-9.SP4.el7.src.rpm noarch/fftw-3.3.3-6.el7.src.rpm noarch/fprintd-0.5.0-1.el7.src.rpm noarch/gimp-help-2.8.0-7.el7.src.rpm noarch/gstreamer-plugins-base-0.10.36-4.el7.src.rpm noarch/istack-commons-2.17-2.el7.src.rpm noarch/jansi-1.9-5.el7.src.rpm noarch/jarjar-1.4-3.el7.src.rpm noarch/javassist-3.16.1-8.el7.src.rpm noarch/jboss-ejb-3.1-api-1.0.2-7.el7.src.rpm noarch/jboss-interceptors-1.1-api-1.0.2-0.6.20120319git49a904.el7.src.rpm noarch/jboss-jaxrpc-1.1-api-1.0.1-4.el7.src.rpm noarch/jboss-servlet-3.0-api-1.0.1-6.el7.src.rpm noarch/jboss-transaction-1.1-api-1.0.1-5.el7.src.rpm noarch/jing-trang-20091111-12.el7.src.rpm noarch/json-c-0.11-1.el7.src.rpm [&#8230;]]]></description>
+				<content:encoded><![CDATA[<p>This is what our to-build queues look like at the moment, note that they are by arch of the required resulting rpms ( so srpms that produce multi arch binaries will be listed twice ).</p>
+<ul>
+<li>noarch/apache-commons-net-3.2-7.el7.src.rpm</li>
+<li>noarch/args4j-2.0.16-11.el7.src.rpm</li>
+<li>noarch/boost-1.53.0-14.el7.src.rpm</li>
+<li>noarch/byteman-2.0.4-3.el7.src.rpm</li>
+<li>noarch/cdi-api-1.0-9.SP4.el7.src.rpm</li>
+<li>noarch/fftw-3.3.3-6.el7.src.rpm</li>
+<li>noarch/fprintd-0.5.0-1.el7.src.rpm</li>
+<li>noarch/gimp-help-2.8.0-7.el7.src.rpm</li>
+<li>noarch/gstreamer-plugins-base-0.10.36-4.el7.src.rpm</li>
+<li>noarch/istack-commons-2.17-2.el7.src.rpm</li>
+<li>noarch/jansi-1.9-5.el7.src.rpm</li>
+<li>noarch/jarjar-1.4-3.el7.src.rpm</li>
+<li>noarch/javassist-3.16.1-8.el7.src.rpm</li>
+<li>noarch/jboss-ejb-3.1-api-1.0.2-7.el7.src.rpm</li>
+<li>noarch/jboss-interceptors-1.1-api-1.0.2-0.6.20120319git49a904.el7.src.rpm</li>
+<li>noarch/jboss-jaxrpc-1.1-api-1.0.1-4.el7.src.rpm</li>
+<li>noarch/jboss-servlet-3.0-api-1.0.1-6.el7.src.rpm</li>
+<li>noarch/jboss-transaction-1.1-api-1.0.1-5.el7.src.rpm</li>
+<li>noarch/jing-trang-20091111-12.el7.src.rpm</li>
+<li>noarch/json-c-0.11-1.el7.src.rpm</li>
+<li>noarch/jsr-311-1.1.1-4.el7.src.rpm</li>
+<li>noarch/libbase-1.1.3-8.el7.src.rpm</li>
+<li>noarch/libfonts-1.1.3-11.el7.src.rpm</li>
+<li>noarch/libformula-1.1.3-8.el7.src.rpm</li>
+<li>noarch/libloader-1.1.3-7.el7.src.rpm</li>
+<li>noarch/librepository-1.1.3-7.el7.src.rpm</li>
+<li>noarch/libserializer-1.1.2-8.el7.src.rpm</li>
+<li>noarch/maven-plugin-tools-3.1-14.el7.src.rpm</li>
+<li>noarch/maven-site-plugin-3.2-5.el7.src.rpm</li>
+<li>noarch/pentaho-libxml-1.1.3-8.el7.src.rpm</li>
+<li>noarch/perl-Test-DistManifest-1.012-4.el7.src.rpm</li>
+<li>noarch/plexus-compiler-2.2-5.el7.src.rpm</li>
+<li>noarch/plexus-containers-1.5.5-12.el7.src.rpm</li>
+<li>noarch/sac-1.3-15.el7.src.rpm</li>
+<li>noarch/sisu-2.3.0-9.el7.src.rpm</li>
+<li>noarch/stax-ex-1.7.1-4.el7.src.rpm</li>
+<li>noarch/tomcat-7.0.40-2.el7.src.rpm</li>
+<li>x86_64/at-3.1.13-12.el7.src.rpm</li>
+<li>x86_64/compat-dapl-1.2.19-2.el7.src.rpm</li>
+<li>x86_64/dapl-2.0.34-1.el7.src.rpm</li>
+<li>x86_64/esc-1.1.0-25.el7.src.rpm</li>
+<li>x86_64/fprintd-0.5.0-1.el7.src.rpm</li>
+<li>x86_64/grilo-plugins-0.2.6-1.el7.src.rpm</li>
+<li>x86_64/gstreamer-plugins-base-0.10.36-4.el7.src.rpm</li>
+<li>x86_64/libreoffice-voikko-3.3-3.el7.src.rpm</li>
+<li>x86_64/pyliblzma-0.5.3-8.el7.src.rpm</li>
+<li>x86_64/scl-utils-20130529-1.el7.src.rpm</li>
+<li>x86_64/xvattr-1.3-24.el7.src.rpm</li>
+<li>x86_64/zsh-5.0.2-3.el7.src.rpm</li>
+</ul>
+<p>Know what it takes to build some of these ?</p>
+]]></content:encoded>
+			<wfw:commentRss>http://seven.centos.org/2014/01/state-of-the-build-20140104/feed/</wfw:commentRss>
+		<slash:comments>0</slash:comments>
+		</item>
+		<item>
+		<title>A bigger pool and more fish</title>
+		<link>http://seven.centos.org/2014/01/a-bigger-pool-and-more-fish/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-bigger-pool-and-more-fish</link>
+		<comments>http://seven.centos.org/2014/01/a-bigger-pool-and-more-fish/#comments</comments>
+		<pubDate>Thu, 02 Jan 2014 00:47:00 +0000</pubDate>
+		<dc:creator><![CDATA[kbsingh]]></dc:creator>
+				<category><![CDATA[builds]]></category>
+
+		<guid isPermaLink="false">http://seven.centos.org/?p=72</guid>
+		<description><![CDATA[A fallout of how we are setup, where we are setup and what constraints we worked under : only a very small number of people have been able to request builds, look at output, make changes to the build environment and the process around it. One of the big goals for the CentOS Linux 7beta [&#8230;]]]></description>
+				<content:encoded><![CDATA[<p>A fallout of how we are setup, where we are setup and what constraints we worked under : only a very small number of people have been able to request builds, look at output, make changes to the build environment and the process around it.</p>
+<p>One of the big goals for the CentOS Linux 7beta effort is to try and fix that. And over the last few days, I&#8217;ve pushed code and make process changes that now allow anyone on the CentOS-QA team to request builds, make changes to the mock templates, manage per-package build environments, modify hints and process templates.</p>
+<p>Given that the content isnt de-branded and we&#8217;ve not got the local mod&#8217;s in place as yet ( or even the overall distro blacklist ), cant make the build-result public as yet, but thats on the agenda.</p>
+<p>Also on the agenda is a public git repo that contains all the metadata and mock configs used in the build process, with a merge-request-process that allows anyone to come and help. It wont be done tomorrow, but it should be done and in place, working by the end of Jan; And unless Red Hat pull something dramatic, well in time before the EL7 release.</p>
+<p>- KB</p>
+]]></content:encoded>
+			<wfw:commentRss>http://seven.centos.org/2014/01/a-bigger-pool-and-more-fish/feed/</wfw:commentRss>
+		<slash:comments>2</slash:comments>
+		</item>
+		<item>
+		<title>EPEL-6 buildrun on RHEL7b1</title>
+		<link>http://seven.centos.org/2014/01/epel-6-buildrun-on-rhel7b1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=epel-6-buildrun-on-rhel7b1</link>
+		<comments>http://seven.centos.org/2014/01/epel-6-buildrun-on-rhel7b1/#comments</comments>
+		<pubDate>Thu, 02 Jan 2014 00:39:00 +0000</pubDate>
+		<dc:creator><![CDATA[kbsingh]]></dc:creator>
+				<category><![CDATA[builds]]></category>
+		<category><![CDATA[General]]></category>
+
+		<guid isPermaLink="false">http://seven.centos.org/?p=69</guid>
+		<description><![CDATA[One of the big challenges we had while building CentOS-6 was to do with scaling the builds. While resources existed, I was unable to get more than 3 ( and in some cases, like perl  modules that build with -j1, upto 5 ) concurrent builds. I&#8217;ve been quite keen to solve that problem and a [&#8230;]]]></description>
+				<content:encoded><![CDATA[<p>One of the big challenges we had while building CentOS-6 was to do with scaling the builds. While resources existed, I was unable to get more than 3 ( and in some cases, like perl  modules that build with -j1, upto 5 ) concurrent builds. I&#8217;ve been quite keen to solve that problem and a bunch of changes, locking in the pre-chroot-build and locking-post-build code had me thinking we could get upto somewhere near the 32 concurrent builds mark.</p>
+<p>Based on some very rudimentary maths, 32 concurrent builds will allow us to build/rebuild the distro in just under a day, including the tests, the media and the staging process. In other words, changes to metadata in the build environment would not slow things down for more than a day or so.</p>
+<p>Because el7b1 itself isnt quite &#8216;done&#8217; yet, I cant use that as a benchmark &#8211; so it was EPEL6 built against the el7b1 content as released upstream; You can read more about that here : <a href="http://www.karan.org/blog/2014/01/02/an-epel-build-in-rhel7b1/ ">http://www.karan.org/blog/2014/01/02/an-epel-build-in-rhel7b1/ </a>and I really don&#8217;t recommend people use that content for anything other than academic purposes ( figure out what broke and why &#8230;. maybe use some of that on their el7b1 test installs etc ).</p>
+<p>The real outcome was that I still cant scale beyond fifteen concurrent workers, without losing the ability to chain builds through; or not use just-built content in subsequent builds. The EPEL6 churn took just over a day, but this was just for the source -&gt; binary conversion ( where and when it did build );  extrapolating back from there it means we should be able to build el7b1 in just over a day and a half, once everything works and we know that the metadata around the builds is good &#8211; were not there yet, but getting close.</p>
+<p>Given that the number of long running builds has reduced from el6 to el7, the drop in numbers from thirty two to fifteen concurrent builds isn&#8217;t that much of a problem &#8211; plus, given that we have a much more open process, with the potential for a lot more people to get involved, we should have the environment issues resolved faster.</p>
+<p>&nbsp;</p>
+]]></content:encoded>
+			<wfw:commentRss>http://seven.centos.org/2014/01/epel-6-buildrun-on-rhel7b1/feed/</wfw:commentRss>
+		<slash:comments>0</slash:comments>
+		</item>
+		<item>
+		<title>t_functional update</title>
+		<link>http://seven.centos.org/2013/12/t_functional-update/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=t_functional-update</link>
+		<comments>http://seven.centos.org/2013/12/t_functional-update/#comments</comments>
+		<pubDate>Thu, 26 Dec 2013 21:56:07 +0000</pubDate>
+		<dc:creator><![CDATA[Christoph Galuschka]]></dc:creator>
+				<category><![CDATA[t_functional]]></category>
+
+		<guid isPermaLink="false">http://seven.centos.org/?p=60</guid>
+		<description><![CDATA[So, the t_functional stack should now be able to use &#8217;7&#8242; to distinguish between releases in various tests (as it allready does for 5 and 6). This has allready been added to the test for vconfig. So 45 tests remain to be fixed.]]></description>
+				<content:encoded><![CDATA[<p>So, the t_functional stack should now be able to use &#8217;7&#8242; to distinguish between releases in various tests (as it allready does for 5 and 6). This has allready been added to the test for vconfig. So 45 tests remain to be fixed.</p>
+]]></content:encoded>
+			<wfw:commentRss>http://seven.centos.org/2013/12/t_functional-update/feed/</wfw:commentRss>
+		<slash:comments>2</slash:comments>
+		</item>
+		<item>
+		<title>t_functional status against el7b1</title>
+		<link>http://seven.centos.org/2013/12/t_functional-status-against-el7b1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=t_functional-status-against-el7b1</link>
+		<comments>http://seven.centos.org/2013/12/t_functional-status-against-el7b1/#comments</comments>
+		<pubDate>Thu, 26 Dec 2013 17:01:14 +0000</pubDate>
+		<dc:creator><![CDATA[Fabian Arrotin]]></dc:creator>
+				<category><![CDATA[t_functional]]></category>
+
+		<guid isPermaLink="false">http://seven.centos.org/?p=55</guid>
+		<description><![CDATA[So, Christoph blogged about t_functional and how it is used for CentOS QA. Here is the first status of the actual t_functional stack against el7b1 : the following tests need to be adapted to work on el7 (I&#8217;m talking about our QA test scripts, not our build results !) : p_amanda:FAIL p_anaconda:FAIL p_arpwatch:FAIL p_busybox:FAIL p_centos-release:FAIL [&#8230;]]]></description>
+				<content:encoded><![CDATA[<p>So, Christoph <a title="Preparing t_functional for CentOS-7" href="http://seven.centos.org/2013/12/preparing-t_functional-for-centos-7/">blogged</a> about t_functional and how it is used for CentOS QA. Here is the first status of the actual t_functional stack against el7b1 : the following tests need to be adapted to work on el7 (I&#8217;m talking about our QA test scripts, not our build results !) :</p>
+<ul>
+<li>p_amanda:FAIL</li>
+<li>p_anaconda:FAIL</li>
+<li>p_arpwatch:FAIL</li>
+<li>p_busybox:FAIL</li>
+<li>p_centos-release:FAIL</li>
+<li>p_chkconfig:FAIL</li>
+<li>p_cron:FAIL</li>
+<li>p_diffutils:FAIL</li>
+<li>p_dovecot:FAIL</li>
+<li>p_file:FAIL</li>
+<li>p_freeradius:FAIL</li>
+<li>p_grub:FAIL</li>
+<li>p_gzip:FAIL</li>
+<li>p_httpd:FAIL</li>
+<li>p_initscripts:FAIL</li>
+<li>p_iptables:FAIL</li>
+<li>p_iptraf:FAIL</li>
+<li>p_iputils:FAIL</li>
+<li>p_jwhois:FAIL</li>
+<li>p_kernel:FAIL</li>
+<li>p_logwatch:FAIL</li>
+<li>p_lsb:FAIL</li>
+<li>p_lynx:FAIL</li>
+<li>p_mailman:FAIL</li>
+<li>p_mysql:FAIL</li>
+<li>p_network:FAIL</li>
+<li>p_ntp:FAIL</li>
+<li>p_openssh:FAIL</li>
+<li>p_passwd:FAIL</li>
+<li>p_php:FAIL</li>
+<li>p_postgresql:FAIL</li>
+<li>p_procinfo:FAIL</li>
+<li>p_python:FAIL</li>
+<li>p_rsync:FAIL</li>
+<li>p_ruby:FAIL</li>
+<li>p_sendmail:FAIL</li>
+<li>p_squid:FAIL</li>
+<li>p_squirrelmail:FAIL</li>
+<li>p_tcpdump:FAIL</li>
+<li>p_tftp-server:FAIL</li>
+<li>p_tomcat:FAIL</li>
+<li>p_traceroute:FAIL</li>
+<li>p_vconfig:FAIL</li>
+<li>p_webalizer:FAIL</li>
+<li>p_yum:FAIL</li>
+<li>p_yum-plugin-fastestmirror:FAIL</li>
+</ul>
+<p>So if you want to help, be sure to <a href="http://wiki.centos.org/QaWiki/AutomatedTests/WritingTests/t_functional" target="_blank">contribute</a> to the t_functional QA stack by fixing/writing those tests to be el7 compatible . Happy holidays and QA&#8217;ing !</p>
+]]></content:encoded>
+			<wfw:commentRss>http://seven.centos.org/2013/12/t_functional-status-against-el7b1/feed/</wfw:commentRss>
+		<slash:comments>2</slash:comments>
+		</item>
+		<item>
+		<title>State of the build 20131224</title>
+		<link>http://seven.centos.org/2013/12/state-of-the-build-20131224/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=state-of-the-build-20131224</link>
+		<comments>http://seven.centos.org/2013/12/state-of-the-build-20131224/#comments</comments>
+		<pubDate>Tue, 24 Dec 2013 12:18:17 +0000</pubDate>
+		<dc:creator><![CDATA[kbsingh]]></dc:creator>
+				<category><![CDATA[builds]]></category>
+
+		<guid isPermaLink="false">http://seven.centos.org/?p=51</guid>
+		<description><![CDATA[RHEL7b1 is composed of 2520 srpms; Of these, some are arch specific to arch&#8217;s we are not building (yet). The x86_64 distro is made up of 8,520 binary rpms. Of these, 2,863 are noarch rpms and 1,919 are 32bit multilib. Leaving us with 3,738 x86_64 rpms that need to be built. Lets assume that building a clear [&#8230;]]]></description>
+				<content:encoded><![CDATA[<p>RHEL7b1 is composed of 2520 srpms; Of these, some are arch specific to arch&#8217;s we are not building (yet).</p>
+<p>The x86_64 distro is made up of 8,520 binary rpms. Of these, 2,863 are noarch rpms and 1,919 are 32bit multilib. Leaving us with 3,738 x86_64 rpms that need to be built. Lets assume that building a clear x86_64 distro is our first goal here ( its not, but things are simpler with that assumption ).</p>
+<p>As round-1 of the build cycle, we built all 2520 srpms against f19/32bit and then all of them again against f19/64bit; I use this result set as a backstore, to borrow from when we need to either break a dependency loop, or satisfy an interim build requirement locally. These packages are not otherwise a part of the regular buildroots used for round-2.</p>
+<p>Round-2 is then a mass build attempt against r7b1/32bit and r7b1/64bit. Of these, nothing built against r7b1/32bit since large chunks of packages needed, even for the baseline buildroot are not published upstream. And needing to borrow from the f19/32bit backstore meant almost using a f19 buildroot, which isnt ideal. So lets put that aside for the time being.</p>
+<p>The second part of round-2 was the x86_64 build attempt against r7b1/64bit. The results are a bit more promising there :  85% of the packages build. But only about 75% of those that build, look like the ones shipped by Red Hat as the 7b1 repos. I&#8217;m using percentages here, since using exact numbers for built-matched takes away from the aim of getting to complete.  Now adding in the noarch builds, we get to : 5636 of 8520 built. Taking away the 1919 that are i686 rpms, we get a deficit of 965 that failed completely. These 965 represent 122 source rpms.</p>
+<p>And this 122 set is going to be our next target. Alongside, I am going to start working on the blacklist/whitelists so we can start making the build roots public. Look for more info on that in the coming days, along with how everyone can contribute towards the 7 build effort.</p>
+<p>- KB</p>
+]]></content:encoded>
+			<wfw:commentRss>http://seven.centos.org/2013/12/state-of-the-build-20131224/feed/</wfw:commentRss>
+		<slash:comments>2</slash:comments>
+		</item>
+		<item>
+		<title>preventing gnome3&#8242;s initial setup</title>
+		<link>http://seven.centos.org/2013/12/preventing-gnome3s-initial-setup/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=preventing-gnome3s-initial-setup</link>
+		<comments>http://seven.centos.org/2013/12/preventing-gnome3s-initial-setup/#comments</comments>
+		<pubDate>Mon, 23 Dec 2013 21:48:36 +0000</pubDate>
+		<dc:creator><![CDATA[Jim Perrin]]></dc:creator>
+				<category><![CDATA[Uncategorized]]></category>
+
+		<guid isPermaLink="false">http://seven.centos.org/?p=47</guid>
+		<description><![CDATA[The first time a user logs into the default desktop for the rhel7 beta,  they&#8217;re prompted to set a language, add online accounts, and dropped into a help menu right from the start. While this might be nice for brand new users, it&#8217;s certainly not ideal for everyone. Turns out there&#8217;s a very simple way [&#8230;]]]></description>
+				<content:encoded><![CDATA[<p>The first time a user logs into the default desktop for the rhel7 beta,  they&#8217;re prompted to set a language, add online accounts, and dropped into a help menu right from the start. While this might be nice for brand new users, it&#8217;s certainly not ideal for everyone.</p>
+<p>Turns out there&#8217;s a very simple way to prevent this annoyance from spreading further than it needs to.</p>
+<p><code><br />
+mkdir ~/.config<br />
+echo "yes" &gt;&gt; ~/.config/gnome-initial-setup-done<br />
+</code></p>
+<p>Alternatively, if you want to do this for every new user on your system rather than dealing with it one at a time, simply drop the .config directory and file into /etc/skel before you create your new users.</p>
+]]></content:encoded>
+			<wfw:commentRss>http://seven.centos.org/2013/12/preventing-gnome3s-initial-setup/feed/</wfw:commentRss>
+		<slash:comments>0</slash:comments>
+		</item>
+		<item>
+		<title>NetworkManager and bridging</title>
+		<link>http://seven.centos.org/2013/12/network-manager-and-bridging/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=network-manager-and-bridging</link>
+		<comments>http://seven.centos.org/2013/12/network-manager-and-bridging/#comments</comments>
+		<pubDate>Fri, 20 Dec 2013 15:46:02 +0000</pubDate>
+		<dc:creator><![CDATA[Jim Perrin]]></dc:creator>
+				<category><![CDATA[networking]]></category>
+
+		<guid isPermaLink="false">http://seven.centos.org/?p=37</guid>
+		<description><![CDATA[In previous iterations of NetworkManager, it was really only useful if you were dealing with wireless networks. Anything involving a bridge meant removing the device from NetworkManager, and manually configuring the network. A fair amount of work has been done to make NetworkManager more friendly to bridged devices, however it&#8217;s still far from perfect.   [&#8230;]]]></description>
+				<content:encoded><![CDATA[<p>In previous iterations of NetworkManager, it was really only useful if you were dealing with wireless networks. Anything involving a bridge meant removing the device from NetworkManager, and manually configuring the network.</p>
+<p>A fair amount of work has been done to <a href="http://fedoraproject.org/wiki/Networking/Bridging" target="_blank">make NetworkManager more friendly</a> to bridged devices, however it&#8217;s still far from perfect.    My experiences so far:</p>
+<ul>
+<li>There isn&#8217;t an intuitive way to create a bridge in the NetworkManager gui.</li>
+<li>Configuring the bridge manually, and leaving control of the devices with NetworkManager works. I tested this using bridged network devices and virtual machines in virt-manager.</li>
+<li>With a manually configured bridge, the status icon in gnome is confused at best. Do not rely on it to provide an accurate status of your network.</li>
+</ul>
+<p>The screenshot below should demonstrate the confusion to some extent. I wouldn&#8217;t expect the &#8216;Wired&#8217; connection to show up, as it&#8217;s a slave to the bridge. Both the virbr0 and the vpn show as off, even though both are active and in use.</p>
+<p><a href="http://seven.centos.org/wp-content/uploads/2013/12/network-manager1.png"><img class="alignnone size-full wp-image-42" alt="network-manager" src="http://seven.centos.org/wp-content/uploads/2013/12/network-manager1.png" width="200" height="204" /></a></p>
+<p>At this point the best course of action for anyone who needs a bridge is simply to remove NetworkManager from the equation. Since this is already current practice, it&#8217;s not really a deviation for folks tracking 6-&gt;7 differences.</p>
+]]></content:encoded>
+			<wfw:commentRss>http://seven.centos.org/2013/12/network-manager-and-bridging/feed/</wfw:commentRss>
+		<slash:comments>2</slash:comments>
+		</item>
+		<item>
+		<title>State of the build 20131219</title>
+		<link>http://seven.centos.org/2013/12/state-of-the-build-20131219/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=state-of-the-build-20131219</link>
+		<comments>http://seven.centos.org/2013/12/state-of-the-build-20131219/#comments</comments>
+		<pubDate>Thu, 19 Dec 2013 09:53:46 +0000</pubDate>
+		<dc:creator><![CDATA[kbsingh]]></dc:creator>
+				<category><![CDATA[builds]]></category>
+
+		<guid isPermaLink="false">http://seven.centos.org/?p=39</guid>
+		<description><![CDATA[One thing that everyone is going to want to know about, or not, is the state of the CentOS-7 beta build. Yes, we are building it, slowly and making system changes as we need and adapting the buildsystems for the changes needed, but we are building it. I will try and do a short status [&#8230;]]]></description>
+				<content:encoded><![CDATA[<p>One thing that everyone is going to want to know about, or not, is the state of the CentOS-7 beta build. Yes, we are building it, slowly and making system changes as we need and adapting the buildsystems for the changes needed, but we are building it. I will try and do a short status update of this nature everytime we hit a benchmark, but at-least once a week from now till we are &#8216;done&#8217;.</p>
+<p>At the moment the c7builder consist of 1 machine, 128GB ram, 4x1TiB sata&#8217;s and 4x64gb ssd, 48 cores. Its a nice machine, but its completely self contained. In the coming days I will expand this to include another similar machine.</p>
+<p>So, are we there yet ? Not quite. 72 Failed builds, 388 Done, Lots to go.</p>
+<p>remember this is run#1, things get better with every iteration of the build, and then we start looking at that failure reasons and working up from there.</p>
+<p>Best news of the moment ? I am pleased to report that from run#2 onward, the build results, logs, configs and metadata of build will be published publicly allowing everyone to help, get involved and contribute! Stay tuned for more news on that in the coming weeks.</p>
+]]></content:encoded>
+			<wfw:commentRss>http://seven.centos.org/2013/12/state-of-the-build-20131219/feed/</wfw:commentRss>
+		<slash:comments>1</slash:comments>
+		</item>
+	</channel>
+</rss>
diff --git a/content/community/stories.md b/content/community/stories.md
new file mode 100644
index 0000000..79a346b
--- /dev/null
+++ b/content/community/stories.md
@@ -0,0 +1,14 @@
+---
+title:      "CentOS community stories"
+markdown:   basic
+is_dynamic: true
+---
+The CentOS ecosystem has been built up with and around people. With no real commercial ambition we set out to try and solve problems for people as they exist in the sysadmin / operations trenches around the world. This page will try and collect some of the user stories over the next few months. 
+
+If you have one you'd like to offer up, get in touch with me at http://wiki.centos.org/KaranbirSingh
+{:toc}
+
+
+#CentOS community stories
+
+(Stories to go here.)
diff --git a/content/download.haml b/content/download.haml
new file mode 100644
index 0000000..1a3461f
--- /dev/null
+++ b/content/download.haml
@@ -0,0 +1,59 @@
+---
+layout: default-haml
+title: Download CentOS
+---
+.jumbotron
+  %h1 Download CentOS
+  %p 
+    Before downloading, the CentOS team would like to remind you that the primary means of sustaining the development of CentOS is via contributions by users such as yourself. CentOS is now and will continue to be totally free; however, it takes money and resources to make CentOS available. 
+    %a( href="http://wiki.centos.org/Donate" ) If you are able, please consider donating to the CentOS Project.
+  .row
+    .col-sm-6
+      .downloadbutton 
+        %a( href="http://isoredirect.centos.org/centos/6/isos/x86_64/CentOS-6.5-x86_64-bin-DVD1.iso" ) Download now.
+      %p 
+        Latest version - X86 64bit DVD - also
+        %a( href="http://isoredirect.centos.org/centos/6/isos/x86_64/CentOS-6.5-x86_64-bin-DVD1to2.torrent" ) via Torrent.
+      %p
+        If the above is not for you,        
+        %a( href="http://wiki.centos.org/Download" ) alternative downloads
+        might be.
+
+    .col-sm-6
+      %h2 Need a Cloud Image?
+      %p
+        Looking to run CentOS in the Cloud? We have a number of official CentOS Linux images for Amazon Web Services, OpenNebula and more. 
+        %a( href="http://wiki.centos.org/Cloud" ) Check out our Clouds
+  .row
+    .col-sm-12
+      %hr
+      %p
+        If you're looking for a specific (or geographically local) mirror, please check out our 
+        %a(href="/download/mirrors/") List of Current Mirrors
+      %p 
+        To check the status of a mirror, please visit
+        %a(href="http://mirror-status.centos.org/") mirror-status.centos.org
+      %hr
+
+
+.row
+  .col-sm-4
+    %h2.text-center Minimal Install Images
+    %p 
+      The absolute bare minimum no-frills install media for CentOS. For experienced users who don't need or want anything extra for their install. 
+      %a( href="http://wiki.centos.org/Manuals/ReleaseNotes/CentOSMinimalCD6.5" ) More Information &raquo;
+  .col-sm-4
+    %h2.text-center Older Versions
+    %p  
+      Legacy versions of CentOS are no longer supported. For historical purposes, CentOS keeps an archive of older versions. If you're absolutely sure you need an older version:
+      %a( href="http://vault.centos.org" ) then click here &raquo;
+  .col-sm-4
+    %h2.text-center Need the Source? 
+    %p 
+      In order to help ease the workload for our primary mirror network, the source rpms are not kept in the same tree as the binary packages. If you need the source packages used to build CentOS, you can find them in our vault 
+      %a( href="http://vault.centos.org" ) vault.centos.org &raquo;
+.row
+  .col-sm-12
+    %h3.text-center.smallprint Export Regulations
+    %p.smallprint
+      By downloading CentOS software, you acknowledge that you understand all of the following: CentOS software and technical information may be subject to the U.S. Export Administration Regulations (the “EAR”) and other U.S. and foreign laws and may not be exported, re-exported or transferred (a) to any country listed in Country Group E:1 in Supplement No. 1 to part 740 of the EAR (currently, Cuba, Iran, North Korea, Sudan & Syria); (b) to any prohibited destination or to any end user who has been prohibited from participating in U.S. export transactions by any federal agency of the U.S. government; or (c) for use in connection with the design, development or production of nuclear, chemical or biological weapons, or rocket systems, space launch vehicles, or sounding rockets, or unmanned air vehicle systems. You may not download CentOS software or technical information if you are located in one of these countries or otherwise subject to these restrictions. You may not provide CentOS software or technical information to individuals or entities located in one of these countries or otherwise subject to these restrictions. You are also responsible for compliance with foreign law requirements applicable to the import, export and use of CentOS software and technical information.
diff --git a/content/download/cloud.md b/content/download/cloud.md
new file mode 100644
index 0000000..1cea12d
--- /dev/null
+++ b/content/download/cloud.md
@@ -0,0 +1,22 @@
+---
+title:      "CentOS Cloud Images"
+markdown:   basic
+is_dynamic: true
+has_toc:    true
+---
+Amazon AMI information here
+===========================
+
+Basic info on Amazon images here
+
+
+
+HyperV image info here
+======================
+Yes, Microsoft has a cloud. Yes we run in it. 
+Here is the basic info you will need.
+
+
+Everything I missed
+===================
+
diff --git a/content/download/full-mirrorlist.csv b/content/download/full-mirrorlist.csv
new file mode 100644
index 0000000..5b155ee
--- /dev/null
+++ b/content/download/full-mirrorlist.csv
@@ -0,0 +1,485 @@
+"Africa","Egypt","CityNet Host Data Center Egypt","http://www.citynethost.com/","http://mirror.citynethost.com/centos/","",""
+"Africa","South Africa","Internet Solutions","http://www.is.co.za/","http://ftp.is.co.za/mirror/centos/","ftp://ftp.is.co.za/mirror/centos/","rsync://ftp.is.co.za/mirror/centos/"
+"Africa","South Africa","JSDAAV ZA Telecoms (Pty) Ltd","http://www.jsdaav.com/","http://dl.za.jsdaav.net/mirror/CentOS/","ftp://dl.za.jsdaav.net/mirror/CentOS/","rsync://dl.za.jsdaav.net/mirror/CentOS/"
+"Africa","South Africa","Telkom SA","http://www.telkom.co.za","http://www.ftp.saix.net/pub/linux/distributions/centos/","ftp://ftp.saix.net/pub/linux/distributions/centos/",""
+"Africa","South Africa ","University of the Free State","http://www.ufs.ac.za/","http://mirror.ufs.ac.za/centos/","ftp://mirror.ufs.ac.za/os/linux/distros/centos/","rsync://mirror.ufs.ac.za/centos/"
+"Africa","Tanzania","Aptus Solutions","http://www.aptus.co.tz/","http://mirror.aptus.co.tz/pub/centos/","",""
+"Africa","Uganda","Uganda Christian University","http://www.ucu.ac.ug/","http://mirror.ucu.ac.ug/centos/","",""
+"Asia","Bangladesh","dhakaCom Limited","http://www.dhakacom.com/","http://mirror.dhakacom.com/centos/","ftp://mirror.dhakacom.com/centos/",""
+"Asia","Bangladesh","IS Pros Ltd.","http://www.ispros.com.bd/","http://mirrors.ispros.com.bd/centos/","ftp://mirrors.ispros.com.bd/centos/","rsync://mirrors.ispros.com.bd/CentOS/"
+"Asia","China","Beijing Institute of Technology","http://www.bit.edu.cn/","http://mirror.bit.edu.cn/centos/","",""
+"Asia","China","Beijing Teletron Telecom Engineering","http://www.btte.com.cn","http://mirrors.btte.net/centos/","",""
+"Asia","China","CDS China","http://www.yun-idc.com/","http://mirrors.yun-idc.com/centos/","ftp://mirrors.yun-idc.com/centos/","rsync://mirrors.yun-idc.com/centos/"
+"Asia","China","Dalian Neusoft University of Information","http://www.neusoft.edu.cn/","http://mirrors.neusoft.edu.cn/centos/","ftp://mirrors.neusoft.edu.cn/centos/",""
+"Asia","China","esocc","http://www.esocc.com/","http://mirror.esocc.com/centos/","",""
+"Asia","China","Grand Cloud","http://www.grandcloud.cn/","http://mirrors.grandcloud.cn/centos/","",""
+"Asia","China","Huazhong University of Science and Technology","http://www.hust.edu.cn/","http://mirrors.hust.edu.cn/centos/","","rsync://mirrors.hust.edu.cn/centos/"
+"Asia","China","NetEase","http://www.163.com/","http://mirrors.163.com/centos/","",""
+"Asia","China","Northeastern University, Shenyang Liaoni","http://www.neu.edu.cn/","http://mirror.neu.edu.cn/centos/","",""
+"Asia","China","Qiming College of Huazhong University of Science and Technology","","http://mirrors.hustunique.com/centos/","","rsync://mirrors.hustunique.com/centos/"
+"Asia","China","Sohu Inc, Beijing P.R. China","http://www.sohu.com/","http://mirrors.sohu.com/centos/","",""
+"Asia","China","Star Studio of UESTC","http://www.uestc.edu.cn/","http://mirrors.stuhome.net/centos/","ftp://mirrors.stuhome.net/centos/",""
+"Asia","China","Tsinghua University","http://www.tsinghua.edu.cn/","http://mirrors.tuna.tsinghua.edu.cn/centos/","",""
+"Asia","China","University of Science and Tech of China","http://www.ustc.edu.cn/","http://centos.ustc.edu.cn/centos/","",""
+"Asia","China - Hong Kong","Asia Web Services Ltd.","http://www.vpshosting.com.hk","http://mirror.vpshosting.com.hk/pub/linux/centos/","ftp://mirror.vpshosting.com.hk/pub/linux/centos/",""
+"Asia","Hong Kong","01LINK NETWORK SERVICES LIMITED","http://www.01link.net/","http://centos.01link.hk/","ftp://centos.01link.hk/","rsync://centos.01link.hk/centos/"
+"Asia","Hong Kong","CommuniLink Internet Limited","http://www.communilink.net/","http://centos.communilink.net/","ftp://centos.communilink.net/centos/",""
+"Asia","Hong Kong","i-System Technology Limited","http://www.uhost.hk/","http://centos.uhost.hk/","ftp://centos.uhost.hk/centos/",""
+"Asia","Hong Kong","SunnyVision Limited","http://www.sunnyvision.com/","http://mirror.sunnyvision.com/centos/","",""
+"Asia","Hong Kong","The Chinese University of Hong Kong","http://www.cuhk.edu.hk/","http://ftp.cuhk.edu.hk/pub/Linux/centos/","ftp://ftp.cuhk.edu.hk/pub/Linux/centos/",""
+"Asia","Hong Kong","UDomain Web Hosting Company Ltd.","http://www.udomain.com.hk/","http://repo.cloudhosting.com.hk/centos/","ftp://repo.cloudhosting.com.hk/pub/centos/",""
+"Asia","India","AOL Online India Pvt. Ltd.","http://corp.aol.in/","http://centos.aol.in/","",""
+"Asia","India","Cyber Futuristics India Pvt Ltd - Go4hos","http://www.go4hosting.com/","http://centosmirror.go4hosting.in/centos/","ftp://centosmirror.go4hosting.in/","rsync://centosmirror.go4hosting.in/centos/"
+"Asia","India","Excell Media Pvt. Ltd.","http://www.excellmedia.net/","http://centos.excellmedia.net/","",""
+"Asia","India","Indian Institute of Technology, Madras","http://www.iitm.ac.in","http://ftp.iitm.ac.in/centos/","ftp://ftp.iitm.ac.in/centos/","rsync://ftp.iitm.ac.in/centos/"
+"Asia","India","LeapSwitch Networks","http://www.leapswitch.com/","http://mirror.leapswitch.com/centos/","",""
+"Asia","India","National Brain Research Centre","http://nbrc.ac.in/","http://mirror.nbrc.ac.in/centos/","",""
+"Asia","Indonesia","Biznet Networks","http://www.biznetnetworks.com/","http://centos.biz.net.id/","","rsync://centos.biz.net.id/centos/"
+"Asia","Indonesia","JR Webhost","http://www.jr-webhost.net/","http://centos.jr-webhost.net/","",""
+"Asia","Indonesia","Kelompok Linux Arek Surabaya (KLAS)/PT Rahajasa Media Internet (RADNET)","","http://buaya.klas.or.id/centos/","ftp://buaya.klas.or.id/centos/",""
+"Asia","Indonesia","Smart Media Pratama, PT.","http://smartmedia.net.id/","http://mirror.smartmedia.net.id/centos/","ftp://mirror.smartmedia.net.id/centos/",""
+"Asia","Japan","FAIRWAY Corporation","http://www.fairway-corp.co.jp/","http://mirror.fairway.ne.jp/centos/","ftp://mirror.fairway.ne.jp/centos/",""
+"Asia","Japan","Internet Initiative Japan Inc.","http://www.iij.ad.jp/","http://ftp.iij.ad.jp/pub/linux/centos/","ftp://ftp.iij.ad.jp/pub/linux/centos/","rsync://ftp.iij.ad.jp/centos/"
+"Asia","Japan","JAIST","http://www.jaist.ac.jp/","http://ftp.jaist.ac.jp/pub/Linux/CentOS/","ftp://ftp.jaist.ac.jp/pub/Linux/CentOS/","rsync://ftp.jaist.ac.jp/pub/Linux/CentOS/"
+"Asia","Japan","KDDI R&D Laboratories Inc.","http://www.kddilabs.jp/english/index.html","http://www.ftp.ne.jp/Linux/packages/CentOS/","ftp://ftp.kddilabs.jp/Linux/packages/CentOS/","rsync://rsync.kddilabs.jp/centos/"
+"Asia","Japan","NARA Inst of Science and Technology","http://www.naist.jp/","http://ftp.nara.wide.ad.jp/pub/Linux/centos/","ftp://ftp.nara.wide.ad.jp/pub/Linux/centos/","rsync://ftp.nara.wide.ad.jp/centos"
+"Asia","Japan","RIKEN Research Institute","http://www.riken.jp/","http://ftp.riken.jp/Linux/centos/","ftp://ftp.riken.jp/Linux/centos/","rsync://ftp.riken.jp/centos/"
+"Asia","Japan","WIDEProject Tsukuba NOC","","http://ftp.tsukuba.wide.ad.jp/Linux/centos/","",""
+"Asia","Kazakhstan","Neolabs LLP","http://neolabs.kz","http://mirror.neolabs.kz/centos/","ftp://mirror.neolabs.kz/centos/","rsync://mirror.neolabs.kz/centos/"
+"Asia","Korea","AoneNetworks Co.,Ltd.","http://www.nicehosting.co.kr","http://data.nicehosting.co.kr/os/CentOS/","",""
+"Asia","Korea","CDNetworks Co., Ltd.","http://www.cdnetworks.com/","http://centos.mirror.cdnetworks.com/","ftp://centos.mirror.cdnetworks.com/centos/",""
+"Asia","Korea","NeowizGames corp.","http://www.pmang.com/","http://ftp.neowiz.com/centos/","ftp://ftp.neowiz.com/centos/","rsync://ftp.neowiz.com::centos"
+"Asia","Korea","TODAY&TOMORROW CO., LTD.","http://tt.co.kr/gate/main.php","http://centos.tt.co.kr/","",""
+"Asia","Malaysia","Hostemo Technology Sdn Bhd","http://www.hostemo.com/","http://mirrors.hostemo.com/CentOS/","",""
+"Asia","Malaysia","IP ServerOne Solutions Sdn Bhd","http://www.ipserverone.com/","http://centos.ipserverone.com/centos/","",""
+"Asia","Malaysia","OSCC MAMPU","http://www.oscc.org.my/","http://mirror.oscc.org.my/centos/","",""
+"Asia","Malaysia","Sultan Idris Education University","http://www.upsi.edu.my/","http://mirror.upsi.edu.my/centos/","",""
+"Asia","Malaysia","Universiti Teknologi Malaysia","http://www.utm.my/","http://ossm.utm.my/centos/","","rsync://ossm.utm.my/centos/"
+"Asia","Mongolia","Mongolian National Data Center","http://www.ndc.gov.mn/","http://mirror.ndc.mn/centos/","",""
+"Asia","Mongolia","National University of Mongolia","http://www.num.edu.mn/","http://centos.num.edu.mn/","ftp://centos.num.edu.mn/",""
+"Asia","Pakistan","Cyber Internet Services","http://www.cyber.net.pk/","http://stingray.cyber.net.pk/pub/centos/","ftp://stingray.cyber.net.pk/centos/","rsync://stingray.cyber.net.pk/centos/"
+"Asia","Pakistan","MAGSNET LIMITED","http://www.magsnet.net/","http://centos-mirror.magsnet.net/centos/","",""
+"Asia","Philippines","DOST-ASTI and PREGI.NET","http://www.asti.dost.gov.ph/","http://mirror.pregi.net/pub/Linux/CentOS/","ftp://mirror.pregi.net/pub/Linux/CentOS/",""
+"Asia","Singapore","National University of Singapore","http://www.comp.nus.edu.sg/","http://mirror.nus.edu.sg/centos/","ftp://mirror.nus.edu.sg/pub/centos/",""
+"Asia","South Korea","Premist","http://premi.st/","http://mirror.premi.st/centos/","",""
+"Asia","Sri Lanka","Lanka Education and Research Network","http://www.learn.ac.lk/","http://mirror.learn.ac.lk/centos/","ftp://mirror.learn.ac.lk/pub/centos/","rsync://mirror.learn.ac.lk/centos/"
+"Asia","Taiwan","CCI, Providence University","http://www.cci.pu.edu.tw/","http://ftp.cs.pu.edu.tw/Linux/CentOS/","ftp://ftp.cs.pu.edu.tw/Linux/CentOS/",""
+"Asia","Taiwan","Computer Center, Shu-Te University","http://en.main.stu.edu.tw/","http://ftp.stu.edu.tw/Linux/CentOS/","ftp://ftp.stu.edu.tw/Linux/CentOS/",""
+"Asia","Taiwan","I-Shou University","http://www.isu.edu.tw/","http://ftp.isu.edu.tw/pub/Linux/CentOS/","ftp://ftp.isu.edu.tw/pub/Linux/CentOS/","rsync://ftp.isu.edu.tw/centos/"
+"Asia","Taiwan","National Center for High-Perf Computing","http://www.nchc.org.tw/en/","http://ftp.twaren.net/Linux/CentOS/","ftp://ftp.twaren.net/Linux/CentOS/",""
+"Asia","Taiwan","National Sun Yat-sen University","http://www.nsysu.edu.tw","http://ftp.nsysu.edu.tw/CentOS/","ftp://ftp.nsysu.edu.tw/pub/CentOS/",""
+"Asia","Taiwan","Southern Taiwan University of Science and Technology","http://www.stust.edu.tw/","http://ftp.stust.edu.tw/pub/Linux/CentOS/","ftp://ftp.stust.edu.tw/pub/Linux/CentOS/",""
+"Asia","Taiwan","TaiChung City Education Network Center","http://www.tc.edu.tw/","http://ftp.tc.edu.tw/Linux/CentOS/","ftp://ftp.tc.edu.tw/Linux/CentOS/",""
+"Asia","Thailand","Bangmod Hosting","http://www.bangmodhosting.com/","http://mirrors.bangmodhosting.com/centos/","","rsync://mirrors.bangmodhosting.com/centos/"
+"Asia","Thailand","Kasetsart University","http://www.ku.ac.th/","http://mirror1.ku.ac.th/centos/","",""
+"Asia","Thailand","Prince of Songkla University, Hatyai cam","http://www.psu.ac.th/en/","http://mirrors.psu.ac.th/pub/centos/","ftp://mirrors.psu.ac.th/pub/centos/","rsync://mirrors.psu.ac.th/centos/"
+"Asia","Thailand","THZ Hosting","http://www.thzhost.com/","http://mirrors.thzhost.com/centos/","","rsync://mirrors.thzhost.com/centos/"
+"Asia","Vietnam","DIGIPOWER Co.,ltd","http://www.digipower.vn/","http://mirrors.digipower.vn/centos/","ftp://mirrors.digipower.vn/centos/","rsync://mirrors.digipower.vn/centos/"
+"Asia","Vietnam","Fibo Web","http://fiboweb.com/","http://mirrors.fibo.vn/centos/","",""
+"Asia","Vietnam","FPT Telecom","http://www.fpt.net/EN/","http://mirror-fpt-telecom.fpt.net/centos/","ftp://mirror-fpt-telecom.fpt.net/mirror/centos/",""
+"Asia","Vietnam","HanoiLUG","http://www.hanoilug.org/","http://virror.hanoilug.org/centos/","",""
+"Asia","Vietnam","VietOSS","","http://mirror.vietoss.com/CentOS/","",""
+"Asia","Vietnam","Viettel  IDC ","http://viettelidc.com.vn/","http://centos-hcm.viettelidc.com.vn/","",""
+"Asia","Vietnam","Viettel IDC","http://viettelidc.com.vn/","http://centos-hn.viettelidc.com.vn/","",""
+"Asia","Vietnam","VinaHost Co., Ltd","http://vinahost.vn/","http://mirrors.vinahost.vn/centos/","",""
+"Asia","Vietnam","VONLINE","http://vonline.vn/","http://mirrors.vonline.vn/centos/","",""
+"Canada","AB","Arctic Network Mirrors","http://www.arcticnetwork.ca/","http://centos.arcticnetwork.ca/","ftp://centos.arcticnetwork.ca/pub/centos/","rsync://centos.arcticnetwork.ca/centos/"
+"Canada","BC","Simon Fraser University","http://www.fas.sfu.ca/","http://mirror.its.sfu.ca/mirror/CentOS/","",""
+"Canada","MB","Manitoba Unix User Group","http://www.muug.mb.ca/","http://www.muug.mb.ca/pub/centos/","ftp://ftp.muug.mb.ca/pub/centos/","rsync://rsync.muug.mb.ca/centos/"
+"Canada","MB","Westman Communications Grp","http://www.westmancom.com/","http://centos.westmancom.com/","ftp://centos.westmancom.com/",""
+"Canada","NS","Dalhousie University","http://www.dal.ca/","http://mirror.its.dal.ca/centos/","ftp://mirror.its.dal.ca/centos/","rsync://mirror.its.dal.ca/centos/"
+"Canada","ON","Adeste Global Managed Networks","http://www.adesteglobal.com/","http://mirror.agmn.ca/mirror/centos/","",""
+"Canada","ON","Atwab Networks","http://www.atwab.net/","http://centos.mirrors.atwab.net/","ftp://centos.mirrors.atwab.net/","rsync://centos.mirrors.atwab.net::shares/"
+"Canada","ON","Clearcable Networks","http://www.clearcable.ca/","http://centos.mirror.rafal.ca/","ftp://centos.mirror.rafal.ca/pub/CentOS/","rsync://centos.mirror.rafal.ca/CentOS"
+"Canada","ON","Cogeco Inc.","http://www.cogeco.net/","http://less.cogeco.net/CentOS/","ftp://less.cogeco.net/CentOS/",""
+"Canada","ON","Netflash Internet Solutions","http://www.netflash.net/","http://mirror.netflash.net/centos/","ftp://mirror.netflash.net/centos/","rsync://mirror.netflash.net/centos/"
+"Canada","ON","Nexicom Inc","http://www.nexicom.net","http://centos.mirror.nexicom.net/","ftp://mirror.nexicom.net/pub/centos/","rsync://mirror.nexicom.net/CentOS"
+"Canada","ON","U. of Waterloo Computer Science Club","http://csclub.uwaterloo.ca/","http://mirror.csclub.uwaterloo.ca/centos/","ftp://mirror.csclub.uwaterloo.ca/centos/","rsync://mirror.csclub.uwaterloo.ca/centos/"
+"Canada","ON","University of Ottawa, Faculty of Science","http://www.science.uottawa.ca/","http://mirror.science.uottawa.ca/centos/","",""
+"Canada","ON","Wightman Telecom","http://wightman.ca/","http://mirror.netaddicted.ca/CentOS/","ftp://mirror.netaddicted.ca/CentOS/",""
+"Canada","QC","Cubicule Studio inc.","http://www.cubiculestudio.com/","http://www.cubiculestudio.com/centos/","",""
+"Canada","QC","GloboTech Communications","http://www.gtcomm.net/","http://centos.mirror.gtcomm.net/","",""
+"Canada","QC","iWeb Technologies Inc.","http://iweb.com/","http://centos.mirror.iweb.ca/","ftp://centos.mirror.iweb.ca/","rsync://centos.mirror.iweb.ca/centos"
+"Canada","QC","Netelligent","http://www.netelligent.ca/centos/","http://centos.mirror.netelligent.ca/centos/","",""
+"Canada","QC","OVH Canada","http://www.ovh.com/ca/en/","http://centos.bhs.mirrors.ovh.net/ftp.centos.org/","ftp://centos.bhs.mirrors.ovh.net/ftp.centos.org/","rsync://centos.bhs.mirrors.ovh.net/ftp.centos.org/"
+"Canada","QC","PlanetHoster Canada","http://www.planethoster.net/","http://centos.mirror.ca.planethoster.net/","",""
+"Canada","QC","VEXXHOST","http://www.vexxhost.com/","http://centos.mirror.vexxhost.com/","ftp://mirror.vexxhost.com/centos/","rsync://mirror.vexxhost.com/centos/"
+"EU","Armenia","ARMINCO Global Telecommunications","http://www.arminco.com/","http://centos.mirrors.arminco.com/","",""
+"EU","Austria","Goodie Domain Service","http://gd.tuwien.ac.at/","http://gd.tuwien.ac.at/opsys/linux/centos/","ftp://gd.tuwien.ac.at/opsys/linux/centos/","rsync://gd.tuwien.ac.at/opsys/linux/centos/"
+"EU","Austria","netzpionier and it&tel","http://www.mirroraustria.at/","http://centos.mirroraustria.at/","http://centos.mirroraustria.at/","rsync://centos.mirroraustria.at/CentOS/"
+"EU","Azerbaijan","Delta Telecom LTD ","http://delta-telecom.net/","http://centos.datacenter.az/","",""
+"EU","Belarus","RUE Beltelecom, ByFly ISP.","http://byfly.by/","http://ftp.byfly.by/pub/CentOS/","ftp://ftp.byfly.by/pub/CentOS/","rsync://ftp.byfly.by/pub/CentOS/"
+"EU","Belgium","All In One","http://www.all-in-one.be/","http://mirror.myip.be/pub/centos/","",""
+"EU","Belgium","Connexeon bvba","http://www.connexeon.com","http://centos.mirror.connexeon.net/","",""
+"EU","Belgium","Cu.be Solutions","http://cu.be/","http://centos.cu.be/","",""
+"EU","Belgium","EURid (BE)","http://www.eurid.eu/","http://be.mirror.eurid.eu/centos/","ftp://be.mirror.eurid.eu/centos/",""
+"EU","Belgium","Nucleus","http://www.nucleus.be/","http://centos.mirror.nucleus.be/","ftp://centos.mirror.nucleus.be/",""
+"EU","Belgium","WeePee telecom","http://www.weepeetelecom.be/","http://centos.weepeetelecom.be/","",""
+"EU","Bosnia & Herzegovina","BH Telecom","http://www.bhtelecom.ba","http://mirror.centos.com.ba/","ftp://mirror.centos.com.ba/centos/","ftp://mirror.centos.com.ba/centos/"
+"EU","Bulgaria","Cherybg (Private Mirror)","http://www.cherybg.com/","http://mirror.cherybg.com/centos/","",""
+"EU","Bulgaria","Neterra LTD","http://www.neterra.net/","http://mirrors.neterra.net/centos/","ftp://mirrors.neterra.net/centos/","rsync://mirrors.neterra.net/centos/"
+"EU","Bulgaria","Svetozar Mihailov Private Mirror","","http://mirror.zarhi.com/","http://mirror.zarhi.com/",""
+"EU","Bulgaria","Telecoms Ltd.","http://www.telecoms.bg/","http://centos.telecoms.bg/","ftp://centos.telecoms.bg/",""
+"EU","Bulgaria","Telepoint Bulgaria","http://telepoint.bg/","http://mirror.telepoint.bg/centos/","ftp://mirror.telepoint.bg/centos/",""
+"EU","Croatia","Plus Hosting","http://www.plus.hr/","http://mirror.centos.plus.hr/centos/","ftp://mirror.centos.plus.hr/centos/",""
+"EU","Cyprus","Dept. of Computer Science, University of Cyprus","http://www.cs.ucy.ac.cy/","http://mirror.cs.ucy.ac.cy/centos/","ftp://mirror.cs.ucy.ac.cy/centos/",""
+"EU","Czech Republic","Brno University of Technology","http://www.fit.vutbr.cz/","http://merlin.fit.vutbr.cz/mirrors/centos/","","rsync://merlin.fit.vutbr.cz/CentOS-incdvd/"
+"EU","Czech Republic","Czech Technical University","http://www.cvut.cz","http://ftp.cvut.cz/centos/","ftp://ftp.cvut.cz/centos/",""
+"EU","Czech Republic","Faculty of Informatics, Masaryk Univ.","http://www.fi.muni.cz/","http://ftp.fi.muni.cz/pub/linux/centos/","ftp://ftp.fi.muni.cz/pub/linux/centos/","rsync://ftp.fi.muni.cz/pub/linux/centos/"
+"EU","Czech Republic","Hosting90 systems s.r.o.","http://www.hosting90.cz/","http://mirror.hosting90.cz/centos/","ftp://mirror.hosting90.cz/centos/",""
+"EU","Czech Republic","Karneval Media","http://www.karneval.cz","http://mirror.karneval.cz/pub/centos/","ftp://mirror.karneval.cz/pub/centos/",""
+"EU","Czech Republic","Silesian university in Opava","http://www.slu.cz/","http://mirror.slu.cz/centos/","ftp://mirror.slu.cz/centos/","rsync://mirror.slu.cz/centos/"
+"EU","Denmark","Carlsberg Research Center","http://www.crc.dk/","","ftp://ftp.crc.dk/pub/mirrors/centos/",""
+"EU","Denmark","EasySpeedy","http://easyspeedy.com/","http://mirror.easyspeedy.com/centos/","ftp://mirror.easyspeedy.com/centos/","rsync://mirror.easyspeedy.com/centos/"
+"EU","Denmark","Physics Dept, Technical Univ of Denmark","http://www.fys.dtu.dk/","http://mirror.fysik.dtu.dk/linux/centos/","",""
+"EU","Denmark","Skytech","http://skytech.dk/","http://centos.skarta.net/","","rsync://centos.skarta.net::CentOS"
+"EU","Estonia","Elion Enterprises Ltd","http://www.elion.ee/wwwmain?screenId=html.main&locale=en","http://ftp.estpak.ee/pub/centos/","ftp://ftp.estpak.ee/pub/centos/","rsync://ftp.estpak.ee/centos"
+"EU","Finland","Academica Oy","http://academica.fi/","http://mirror.academica.fi/CentOS/","ftp://mirror.academica.fi/CentOS/","rsync://mirror.academica.fi/CentOS"
+"EU","Finland","CSC / Funet","http://www.nic.funet.fi/","http://ftp.funet.fi/pub/mirrors/centos.org/","ftp://ftp.funet.fi/pub/mirrors/centos.org/","rsync://rsync.nic.funet.fi/ftp/pub/mirrors/centos.org/"
+"EU","France","Atos Worldline","http://www.atos.net/","http://mirrors.atosworldline.com/public/centos/","",""
+"EU","France","Avenir Telematique SAS","http://www.ate.info","http://mirror.ate.info/ftp.centos.org/","",""
+"EU","France","Centre de Calcul de l'IN2P3","http://cc.in2p3.fr/","http://mirror.in2p3.fr/linux/CentOS/","ftp://mirror.in2p3.fr/pub/linux/CentOS/","rsync://mirror.in2p3.fr/ftp/linux/CentOS/"
+"EU","France","CIRIL","http://reseau.ciril.fr","http://ftp.ciril.fr/pub/linux/centos/","ftp://ftp.ciril.fr/pub/linux/centos/","rsync://ftp.ciril.fr/pub/linux/centos/"
+"EU","France","Distrib Coffee","http://distrib-coffee.ipsl.jussieu.fr/","http://distrib-coffee.ipsl.jussieu.fr/pub/linux/centos/","ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/centos/","rsync://distrib-coffee.ipsl.jussieu.fr/pub/linux/centos/"
+"EU","France","ftp.free.fr","","","ftp://ftp.free.fr/mirrors/ftp.centos.org/",""
+"EU","France","Institut Pasteur","http://www.pasteur.fr/","","ftp://ftp.pasteur.fr/pub/computing/linux/centos/",""
+"EU","France","ircam","http://mirrors.ircam.fr/pub/CentOS/","http://mirrors.ircam.fr/pub/CentOS/","ftp://mirrors.ircam.fr/pub/CentOS/","rsync://mirrors.ircam.fr/CentOS/"
+"EU","France","Matt Clements (private mirror)","http://mattclements.co.uk/","http://centos.mattclements.co.uk/","",""
+"EU","France","OVH","http://www.ovh.net","http://mirror.ovh.net/ftp.centos.org/","ftp://mirror.ovh.net/ftp.centos.org/","rsync://mirror.ovh.net/ftp.centos.org/"
+"EU","France","PlanetHoster France","http://www.planethoster.net/","http://centos.mirror.fr.planethoster.net/","",""
+"EU","France","RelouFR Networks","http://www.reloumirrors.net/","http://centos.crazyfrogs.org/","","rsync://centos.crazyfrogs.org/centos/"
+"EU","France","Rezopole","http://www.rezopole.net/","http://ftp.rezopole.net/centos/","ftp://ftp.rezopole.net/centos/","ftp.rezopole.net::centos"
+"EU","France","Rpmfind","http://rpmfind.net/","http://fr2.rpmfind.net/linux/centos/","ftp://fr2.rpmfind.net/linux/centos/","rsync://fr2.rpmfind.net/linux/centos/"
+"EU","France","Syntis","http://www.syntis.net/","http://mir01.syntis.net/CentOS/","ftp://mir01.syntis.net/CentOS/","mir01.syntis.net::CentOS "
+"EU","France","Universit� Paris 13","http://www.univ-paris13.fr/","http://miroir.univ-paris13.fr/centos/","",""
+"EU","Georgia","Caucasus Online","http://www.co.ge/","http://centos.mirror.srv.co.ge/","",""
+"EU","Georgia","Wanex LLC (ISP)","http://www.wanex.net","http://mirror.centos.ge/","ftp://mirror.centos.ge/",""
+"EU","Germany","Artfiles New Media GmbH ","http://www.artfiles.de/","http://artfiles.org/centos.org/","ftp://artfiles.org/centos.org/",""
+"EU","Germany","ATrpms","http://www.atrpms.net/","http://mirror.atrpms.net/centos/","",""
+"EU","Germany","Checkdomain GmbH","http://www.checkdomain.de/","http://mirror.checkdomain.de/centos","ftp://mirror.checkdomain.de/centos",""
+"EU","Germany","Copahost","http://www.copahost.com/","http://centos.copahost.com/","",""
+"EU","Germany","EUserv Internet","http://www.euserv.com/","http://mirror.euserv.net/linux/centos/","ftp://mirror.euserv.net/linux/centos/","rsync://mirror.euserv.net::centos"
+"EU","Germany","Faerber (Private Mirror)","","http://mirror.maeh.org/centos/","ftp://mirror.maeh.org/centos/",""
+"EU","Germany","Fraunhofer-Gesellschaft","http://www.fraunhofer.de/","","ftp://mirror.fraunhofer.de/centos.org/",""
+"EU","Germany","Friedrich-Alexander-Universit�t Erlangen-N�rnberg","http://www.fau.de/","http://ftp.fau.de/centos/","ftp://ftp.fau.de/centos/","rsync://ftp.fau.de/centos/"
+"EU","Germany","Host Europe","http://www.hosteurope.de/","http://ftp.hosteurope.de/mirror/centos.org/","ftp://ftp.hosteurope.de/mirror/centos.org/","rsync://ftp.hosteurope.de/centos/"
+"EU","Germany","Intergenia","http://www.server4you.de/","http://centos.intergenia.de/","","rsync://centos.intergenia.de/centos-linux/"
+"EU","Germany","Juergen Gotteswinter (private)","","http://mirror.jgotteswinter.com/centos/","ftp://ftp.jgotteswinter.com/centos/","rsync://rsync.jgotteswinter.com/centos/"
+"EU","Germany","LeaseWeb Germany","http://www.leaseweb.com/","http://mirror.de.leaseweb.net/centos/","ftp://mirror.de.leaseweb.net/centos/","rsync://mirror.de.leaseweb.net/centos/"
+"EU","Germany","LMU Muenchen, Dpt. Biologie 2, IT-Gruppe","http://zi.bio.lmu.de/","http://centos.bio.lmu.de/","ftp://centos.bio.lmu.de/centos/","rsync://centos.bio.lmu.de/CentOS/"
+"EU","Germany","NetCologne","http://netcologne.de","http://mirror.netcologne.de/centos/","ftp://mirror.netcologne.de/centos/","rsync://mirror.netcologne.de/centos/"
+"EU","Germany","Plus.line AG","http://www.plusline.de","http://ftp.plusline.de/centos/","ftp://ftp.plusline.de/pub/centos/","rsync://ftp.plusline.de/CentOS/"
+"EU","Germany","PSW Group","http://www.psw.net/","http://centos.psw.net/centos/","",""
+"EU","Germany","Rechenzentrum Universit�t Bayreuth","http://www.rz.uni-bayreuth.de/","http://ftp.uni-bayreuth.de/linux/CentOS/","ftp://ftp.uni-bayreuth.de/pub/linux/CentOS/","rsync://rsync.uni-bayreuth.de/CentOS/"
+"EU","Germany","RWTH Aachen University","http://www.rwth-aachen.de","http://ftp.halifax.rwth-aachen.de/centos/","ftp://ftp.halifax.rwth-aachen.de/centos/","rsync://ftp.halifax.rwth-aachen.de/centos/"
+"EU","Germany","Schlund Technologies GmbH","http://www.schlundtech.de/","http://centos.schlundtech.de/","ftp://centos.schlundtech.de/centos/","rsync://centos.schlundtech.de/centos/"
+"EU","Germany","Sky Link Data Center","http://skylink-datacenter.de/","http://mirror.skylink-datacenter.de/centos/","ftp://mirror.skylink-datacenter.de/centos/","rsync://mirror.skylink-datacenter.de/centos/"
+"EU","Germany","Softaculous ltd.","http://www.softaculous.com/","http://mirror.softaculous.com/centos/","",""
+"EU","Germany","Tim Harsdorf","http://www.timharsdorf.de/home/","http://centos.mirror.linuxwerk.com/","",""
+"EU","Germany","TU Chemnitz","http://www.tu-chemnitz.de/","http://wftp.tu-chemnitz.de/pub/linux/centos/","ftp://ftp.tu-chemnitz.de/pub/linux/centos/","rsync://rsync.hrz.tu-chemnitz.de/ftp/pub/linux/centos/"
+"EU","Germany","University of Applied Sciences Esslingen","http://www.fht-esslingen.de/de/44","http://ftp-stud.fht-esslingen.de/pub/Mirrors/centos/","ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/centos/","rsync://ftp-stud.fht-esslingen.de/centos/"
+"EU","Germany","University of Applied Sciences Esslingen 2","http://www.fht-esslingen.de/de/44","http://mirror2.hs-esslingen.de/centos/","","rsync://mirror2.hs-esslingen.de/centos/"
+"EU","Germany","University of Applied Sciences Fulda","http://www.hs-fulda.de/","http://mirror.informatik.hs-fulda.de/centos","","rsync://mirror.informatik.hs-fulda.de/centos/"
+"EU","Germany","Vieth Server","http://mirror-server.de/","http://centos.mirror-server.de/","",""
+"EU","Greece","Computer Center, University of Crete","http://www.cc.uoc.gr/","http://ftp.cc.uoc.gr/CentOS/","ftp://ftp.cc.uoc.gr/CentOS/",""
+"EU","Greece","Hellenic Telecommunications Organization","http://www.ote.gr/","http://ftp.otenet.gr/linux/centos/","ftp://ftp.otenet.gr/pub/linux/centos/",""
+"EU","Greece","NTUA","http://www.ntua.gr/","http://ftp.ntua.gr/pub/linux/centos/","ftp://ftp.ntua.gr/pub/linux/centos/","rsync://ftp.ntua.gr/centos/"
+"EU","Hungary","Free Software Network foundation","http://www.fsn.hu/","http://ftp.freepark.org/pub/linux/distributions/centos/","ftp://ftp.freepark.org/pub/linux/distributions/centos/","rsync://ftp.freepark.org/linux/centos/"
+"EU","Iceland","Siminn","http://www.simnet.is/","http://www.fedora.is/CentOS/","ftp://ftp.fedora.is/pub/CentOS/",""
+"EU","Iceland","TM Software","http://www.tm-software.com","http://centos.t.is/centos/","ftp://centos.t.is/centos/",""
+"EU","Ireland","HEAnet","http://www.heanet.ie/about/index.html","http://ftp.heanet.ie/pub/centos/","ftp://ftp.heanet.ie/pub/centos/","rsync://ftp.heanet.ie/pub/centos/"
+"EU","Italy","2nd University of Rome","www.uniroma2.it","http://centos.fis.uniroma2.it","ftp://cis.uniroma2.it/LinuxF/CentOS",""
+"EU","Italy","Clouditalia Communications","http://www.eutelia.it/","","ftp://ftp.eutelia.it/CentOS",""
+"EU","Italy","Contactlab","http://www.contactlab.com/","http://it.centos.contactlab.it/","",""
+"EU","Italy","Crazy Network","http://crazynetwork.it/","http://mirror.crazynetwork.it/centos/","","rsync://mirror.crazynetwork.it/centos/"
+"EU","Italy","Fastbull project","http://www.fastbull.org/home_english.html","http://centos.fastbull.org/centos/","",""
+"EU","Italy","GARR/CILEA","http://mirror.garr.it","http://mi.mirror.garr.it/mirrors/CentOS/","ftp://mi.mirror.garr.it/mirrors/CentOS/","rsync://mi.mirror.garr.it/CentOS/"
+"EU","Italy","Prometeus","http://www.prometeus.net/","http://mirrors.prometeus.net/centos/","",""
+"EU","Italy","Range-ID","http://www.range-id.it/","http://centos.mirror.range-id.it/","",""
+"EU","Latvia","ChampGround","http://www.champground.com/","http://champground.com/centos/","",""
+"EU","Latvia","koyanet.lv","","http://centos.koyanet.lv/centos/","ftp://centos.koyanet.lv/centos/",""
+"EU","Latvia","Linux Center, University of Latvia","http://linux.edu.lv/index.php","http://centos.linux.edu.lv/","ftp://centos.linux.edu.lv/centos.linux.edu.lv/","rsync://centos.linux.edu.lv/centos/"
+"EU","Latvia","Makonix SIA","http://makonix.com/","http://mirror.makonix.com/centos/","",""
+"EU","Lithuania","Balticservers.com","http://www.balticservers.com/","http://mirror.duomenucentras.lt/centos/","ftp://mirror.duomenucentras.lt/centos/",""
+"EU","Lithuania","Interneto vizija","http://www.serveriai.lt/","http://centos.mirror.serveriai.lt/","",""
+"EU","Lithuania","UAB Esnet","http://www.vpsnet.lt/","http://centos.vpsnet.lt/","",""
+"EU","Luxembourg","root S.A","http://www.root.lu/","http://centos.mirror.root.lu/","ftp://mirror.root.lu/centos/","rsync://mirror.root.lu/CentOS"
+"EU","Macedonia","Cabletel Macedonia","http://cabletel.com.mk/","http://mirror.cabletel.com.mk/centos/","",""
+"EU","Moldova","FedoraMD.org","http://www.fedoramd.org/","http://repo.fedoramd.org/centos/","ftp://ftp.fedoramd.org/centos/",""
+"EU","Netherlands","1000mbps.com","http://www.1000mbps.com/","http://mirror.1000mbps.com/centos/","ftp://mirror.1000mbps.com/centos/","rsync://mirror.1000mbps.com/centos/"
+"EU","Netherlands","ColoCenter","http://www.colocenter.nl/","http://mirror.colocenter.nl/pub/centos/","",""
+"EU","Netherlands","Delft University of Technology","http://www.tudelft.nl/","http://ftp.tudelft.nl/centos.org/","ftp://ftp.tudelft.nl/pub/Linux/centos.org/",""
+"EU","Netherlands","EURid (NL)","http://www.eurid.eu/","http://nl.mirror.eurid.eu/centos/","ftp://nl.mirror.eurid.eu/centos/",""
+"EU","Netherlands","INTERACTIVE 3D","http://www.i3d.net/","http://mirror.i3d.net/pub/centos/","ftp://mirror.i3d.net/centos/","rsync://mirror.i3d.net::centos"
+"EU","Netherlands","LeaseWeb","http://www.leaseweb.com","http://mirror.nl.leaseweb.net/centos/","ftp://mirror.nl.leaseweb.net/centos/","rsync://mirror.nl.leaseweb.net/centos/"
+"EU","Netherlands","Linux Kernel Archives (NL)","http://www.kernel.org/","http://mirrors.nl.kernel.org/centos/","ftp://mirrors.nl.kernel.org/centos/","rsync://mirrors.nl.kernel.org/centos/"
+"EU","Netherlands","Mj Webhosting","https://www.mjwebhosting.nl/","http://mirror.serverbeheren.nl/centos/","ftp://mirror.serverbeheren.nl/centos/","rsync://mirror.serverbeheren.nl/centos/"
+"EU","Netherlands","MuntInternet","http://www.muntinternet.nl/","http://mirror.muntinternet.net/pub/centos/","ftp://mirror.muntinternet.net/pub/centos/","rsync://mirror.muntinternet.net/pub/centos/"
+"EU","Netherlands","NLUUG","http://www.nluug.nl/","http://ftp.nluug.nl/ftp/pub/os/Linux/distr/CentOS/","ftp://ftp.nluug.nl/pub/os/Linux/distr/CentOS/","rsync://ftp.nluug.nl/centoslinux/"
+"EU","Netherlands","Prolocation B.V.","http://www.prolocation.net/","http://mirror.prolocation.net/centos/","",""
+"EU","Netherlands","Proserve","http://www.proserve.nl/","http://mirror.proserve.nl/centos/","ftp://mirror.proserve.nl/centos/",""
+"EU","Netherlands","Spango Internet BV","http://www.spango.com/nl/index.html","http://centos.mirror1.spango.com/","ftp://mirror1.spango.com/centos/",""
+"EU","Netherlands","Supportex","http://supportex.net/","http://mirrors.supportex.net/centos/","",""
+"EU","Netherlands","TransIP BV","http://www.transip.nl/","http://centos.mirror.transip.nl/","ftp://centos.mirror.transip.nl/Centos/",""
+"EU","Netherlands","Triple IT","http://www.triple-it.nl/","http://centos.mirror.triple-it.nl/","",""
+"EU","Netherlands","University of Utrecht","http://www.cs.uu.nl/","http://archive.cs.uu.nl/mirror/Linux/centos/","ftp://ftp.cs.uu.nl/mirror/Linux/centos/","rsync://rsync.cs.uu.nl/CentOS/"
+"EU","Netherlands","ViralVPS","http://www.viralvps.com/","http://mirrors.viralvps.com/centos/","",""
+"EU","Netherlands","Webzilla","http://webzilla.com/","http://mirror.nl.webzilla.com/CentOS/","ftp://mirror.nl.webzilla.com/CentOS/","rsync://mirror.nl.webzilla.com/CentOS/"
+"EU","Netherlands","WeePee telecom NL","http://www.weepeetelecom.be/","http://centos.weepeetelecom.nl/","",""
+"EU","Netherlands","WideXS","http://www.widexs.nl","http://mirror.widexs.nl/ftp/pub/os/Linux/distr/centos/","ftp://mirror.widexs.nl/pub/os/Linux/distr/centos/",""
+"EU","Netherlands","Yourwebhoster.eu","http://yourwebhoster.eu/","http://mirror.yourwebhoster.eu/centos/","",""
+"EU","Norway","Searchdaimon","http://www.searchdaimon.com/","http://mirror.searchdaimon.com/Linux/centos/","",""
+"EU","Norway","University of Bergen","http://www.uib.no/","http://centos.uib.no/","ftp://centos.uib.no/pub/Linux/Distributions/centos/","rsync://centos.uib.no/centos/"
+"EU","Norway","University of Oslo","http://ftp.uninett.no","http://ftp.uninett.no/pub/Linux/centos/","ftp://ftp.uninett.no/pub/linux/centos/","rsync://ftp.uninett.no/centos/"
+"EU","Norway","ViaNett AS","http://www.vianett.com/","http://centos.vianett.no/","ftp://centos.vianett.no/pub/centos/",""
+"EU","Poland","ICM Warsaw","http://www.icm.edu.pl/","http://sunsite.icm.edu.pl/pub/Linux/distributions/centos/","ftp://sunsite.icm.edu.pl/pub/Linux/distributions/centos/","rsync://sunsite.icm.edu.pl/pub/Linux/distributions/centos/"
+"EU","Poland","IONIC.pl","http://www.ionic.pl/","http://centos.ionic.net.pl/","ftp://centos.ionic.net.pl/",""
+"EU","Poland","Kielce Technology Park","http://www.technopark.kielce.pl/","http://mirror-pl.kielcetechnologypark.net/centos/","ftp://mirror-pl.kielcetechnologypark.net/centos/",""
+"EU","Poland","LiveNet Sp. z o.o. ","http://www.slaskdatacenter.pl/","http://centos.slaskdatacenter.com/","ftp://centos.slaskdatacenter.com/","rsync://centos.slaskdatacenter.com/centos"
+"EU","Poland","pbone.net","http://www.pbone.net/","http://ftp.pbone.net/pub/centos/","ftp://ftp.pbone.net/pub/centos/","rsync://ftp.pbone.net/pub/centos/"
+"EU","Poland","Polish Telecom","http://www.tp.pl/","","ftp://ftp.tpnet.pl/d23/centos/","rsync://ftp.tpnet.pl/centos/"
+"EU","Poland","Rzeszow University of Technology","http://www.prz.edu.pl/","http://ftp.prz.edu.pl/centos/","ftp://ftp.prz.edu.pl/pub/centos/","rsync://ftp.prz.edu.pl/centos/"
+"EU","Poland","Szczecin University of Technology","http://www.ps.pl/","http://ftp.ps.pl/pub/Linux/CentOS/","ftp://ftp.ps.pl/pub/Linux/CentOS/",""
+"EU","Poland","Vectra","http://www.vectra.pl/","http://ftp.vectranet.pl/centos/","ftp://ftp.vectranet.pl/centos/","rsync://ftp.vectranet.pl/centos/"
+"EU","Portugal","nfsi telecom","http://www.nfsi.pt/","http://mirrors.nfsi.pt/CentOS/","ftp://ftp.nfsi.pt/pub/CentOS/",""
+"EU","Portugal","Univ. of Coimbra, Informatics Eng. Dept.","http://www.dei.uc.pt/","http://ftp.dei.uc.pt/pub/linux/CentOS/","ftp://ftp.dei.uc.pt/pub/linux/CentOS/",""
+"EU","Portugal","University of Porto","http://www.up.pt/","http://ftp.up.pt/CentOS/","ftp://ftp.up.pt/pub/CentOS/",""
+"EU","Romania","BizTelecom Romania","http://www.biztelecom.ro/","http://mirrors.biztelecom.ro/centos/","","rsync://mirrors.biztelecom.ro/centos/"
+"EU","Romania","CH-Center Hosting","http://www.ch-center.com/","http://mirrors.ch-center.com/centos/","",""
+"EU","Romania","Dhost Software","http://dhost.ro/","http://ns3.dhost.ro/centosmirros/","ftp://ns3.dhost.ro/centos/",""
+"EU","Romania","Pidgin Host","http://www.pidginhost.com/","http://mirrors.pidginhost.com/centos/","ftp://mirrors.pidginhost.com/centos/","mirrors.pidginhost.com::CentOS"
+"EU","Romania","RCS and RDS","http://www.rcs-rds.ro/","http://centos.mirrors.linux.ro/","ftp://ftp.linux.ro/centos/",""
+"EU","Romania","Romanian Linux Users Group (ines)","http://www.lug.ro/","http://ftp.ines.lug.ro/centos/","ftp://ftp.ines.lug.ro/centos/",""
+"EU","Romania","Romtelecom","http://cyberhost.ro/","http://centos-mirror.cyberhost.ro/","ftp://centos-mirror.cyberhost.ro/",""
+"EU","Romania","Telepoint","http://telepoint.bg/","http://mirror.telepoint.bg/centos","ftp://mirror.telepoint.bg/centos",""
+"EU","Romania","Universitatea Aurel Vlaicu Arad","http://www.uav.ro/","","ftp://mirrors.uav.ro/centos/",""
+"EU","Romania","UPC Romania","http://www.upc.ro/","http://ftp.astral.ro/distros/centos/","ftp://ftp.astral.ro/distros/centos/",""
+"EU","Romania","Xservers.ro","http://www.xservers.ro/","http://mirrors.xservers.ro/centos/","",""
+"EU","Russia"," Tver State University","","http://mirror.tversu.ru/centos/","",""
+"EU","Russia","Astrakhan Page ISP","http://www.astpage.ru/","http://mirror.astpage.ru/centos/","","rsync://mirror.astpage.ru/centos/"
+"EU","Russia","Awanti ISP","http://www.awanti.com/","http://mirror.awanti.com/centos/","ftp://mirror.awanti.com/centos/",""
+"EU","Russia","Internet Hosting LTD","http://majorhost.net/","http://mirror.majorhost.net/centos/","",""
+"EU","Russia","Logol Hosting Company","http://logol.ru/","http://mirror.logol.ru/centos/","ftp://mirror.logol.ru/centos/","rsync://mirror.logol.ru/centos/"
+"EU","Russia","Private Mirror (Micro8240)","","","ftp://linux-mirror.no-ip.org/CentOS/","rsync://linux-mirror.no-ip.org/CentOS/"
+"EU","Russia","RADIUS, Ltd.","","http://mirror.vilkam.ru/centos/","ftp://mirror.vilkam.ru/centos/","rsync://mirror.vilkam.ru/centos/"
+"EU","Russia","RosBusinessConsulting","http://www.rbc.ru/","http://centos-mirror.rbc.ru/pub/centos/","",""
+"EU","Russia","Yandex","http://www.yandex.ru/","http://mirror.yandex.ru/centos/","ftp://mirror.yandex.ru/centos/","rsync://mirror.yandex.ru/centos/"
+"EU","Slovakia","Energotel a.s.","http://www.energotel.sk","http://ftp.energotel.sk/pub/linux/centos/","ftp://ftp.energotel.sk/pub/linux/centos/","rsync://ftp.energotel.sk/centos/"
+"EU","Slovakia","Rainside","http://www.rainside.sk/","http://tux.rainside.sk/centos/","ftp://tux.rainside.sk/centos/",""
+"EU","Slovakia","University of P.J.Safarik","http://www.upjs.sk/","http://ftp.upjs.sk/pub/centos/","ftp://ftp.upjs.sk/pub/centos/",""
+"EU","Slovenia","ARNES","http://www.arnes.si/","http://ftp.arnes.si/pub/mirrors/centos.org/","ftp://ftp.arnes.si/mirrors/centos.org/",""
+"EU","Slovenia","lihnidos.org","http://www.lihnidos.org","http://mirror.lihnidos.org/CentOS/","",""
+"EU","Slovenia","PakNet IT","http://paknet.org/","http://mirrors.paknet.org/CentOS/","",""
+"EU","Spain","CADT Software and Drafting, S.L. ","http://www.cadt.com/","http://centos.cadt.com/","",""
+"EU","Spain","Centro Inform. Cientifico de Andalucia","http://www.cica.es/","http://ftp.cica.es/CentOS/","ftp://ftp.cica.es/CentOS/","rsync://rsync.cica.es/CentOS/"
+"EU","Spain","CESCA","http://www.cesca.cat/","","ftp://ftp.cesca.cat/centos/","rsync://ftp.cesca.cat/centos/"
+"EU","Spain","inAsset Networks","http://www.inasset.es/","http://mirror.trueinter.net/","ftp://mirror.trueinter.net/","rsync://mirror.trueinter.net/"
+"EU","Spain","Oficina de Software Libre do CIXUG","http://www.cixug.es/osl/oficina/","http://ftp.cixug.es/CentOS/","ftp://ftp.cixug.es/CentOS/",""
+"EU","Spain","RedIRIS, Spanish National Research Net.","http://www.rediris.es/index.en.html","http://sunsite.rediris.es/mirror/CentOS/","ftp://ftp.rediris.es/mirror/CentOS/",""
+"EU","Spain","Universitat de Lleida","http://www.udl.es/","http://ftp.udl.es/pub/centos/","ftp://ftp.udl.es/pub/centos/",""
+"EU","Spain","University of Seville (Spain)","http://www.us.es/","http://nervion.us.es/centos/","",""
+"EU","Spain","Xtratelecom S.A.","http://www.xtratelecom.es/","http://centos.mirror.xtratelecom.es/","","centos.mirror.xtratelecom.es::CentOS"
+"EU","Sweden","Availo AB","http://www.availo.se/","http://ftp.availo.se/centos/","ftp://ftp.availo.se/centos/","rsync://rsync.availo.se/centos/"
+"EU","Sweden","Halmstad University","http://www.hh.se/","http://mirror.hh.se/centos/","ftp://mirror.hh.se/centos/",""
+"EU","Sweden","Linux Kernel Archives (SE)","http://www.kernel.org/","http://mirrors.se.kernel.org/centos/","ftp://mirrors.se.kernel.org/centos/","rsync://mirrors.se.kernel.org/centos/"
+"EU","Sweden","National Supercomputer Center, Link�ping","http://www.nsc.liu.se/","http://mirror.nsc.liu.se/CentOS/","ftp://mirror.nsc.liu.se/CentOS/","rsync://mirror.nsc.liu.se/CentOS"
+"EU","Sweden","Sunet FTP archive","http://basun.sunet.se/engelska.html","http://ftp.sunet.se/pub/Linux/distributions/centos/","ftp://ftp.sunet.se/pub/Linux/distributions/centos/","rsync://ftp.sunet.se/pub/Linux/distributions/centos/"
+"EU","Sweden","the computer society at Lund University","http://www.df.lth.se/","http://ftp.df.lth.se/pub/centos/","ftp://ftp.df.lth.se/pub/centos/","rsync://ftp.df.lth.se/centos"
+"EU","Sweden","Zetup AB","http://www.zetup.se/","http://mirror.zetup.net/CentOS/","",""
+"EU","Switzerland","Private Layer Inc.","http://www.privatelayer.com/","http://centos.privatelayer.com/","ftp://centos.privatelayer.com/","100"
+"EU","Switzerland","SWITCHmirror","http://mirror.switch.ch","http://mirror.switch.ch/ftp/mirror/centos/","ftp://mirror.switch.ch/mirror/centos/",""
+"EU","Turkey","7x24NET T�rkiye","http://www.7x24web.net.tr/","http://mirror.7x24web.net.tr/centos","",""
+"EU","Turkey","Bogazici University","http://www.boun.edu.tr/","http://repo.boun.edu.tr/centos/","ftp://repo.boun.edu.tr/centos/",""
+"EU","Turkey","DGN Teknoloji","http://www.dgn.net.tr","http://ftp.dgn.net.tr/linux/centos/","",""
+"EU","Turkey","Turkish Linux User's Association","http://www.linux.org.tr/ ","http://ftp.linux.org.tr/centos/","ftp://ftp.linux.org.tr/centos/","rsync://ftp.linux.org.tr/centos/"
+"EU","Turkey","Vital Technology","http://www.vit.com.tr/","http://mirror.vit.com.tr/mirror/CentOS/","ftp://mirror.vit.com.tr/CentOS/",""
+"EU","UK","Hyve Ltd.","http://www.hyve.com/","http://centos.hyve.com/","",""
+"EU","UK","ServerSpace Ltd","http://www.serverspace.co.uk/","http://centos.serverspace.co.uk/centos/","ftp://centos.serverspace.co.uk/centos/","rsync://centos.serverspace.co.uk/centos/"
+"EU","UK","Simwood eSMS Limited","http://www.simwood.com/","http://mirror.simwood.com/centos/","",""
+"EU","UK","Somerset Technical Solutions Ltd","http://www.somersettechsolutions.co.uk/","http://mirror.stshosting.co.uk/centos/","ftp://mirror.stshosting.co.uk/centos/","rsync://mirror.stshosting.co.uk::centos"
+"EU","UK","SynergyWorks Internet","http://www.synergyworks.co.uk/","http://mirror.synergyworks.co.uk/centos/","",""
+"EU","UK","Umbee Ltd","http://www.umbeehosting.co.uk/","http://repo.umbeehosting.com/centos/","http://repo.umbeehosting.com/centos/","repo.umbeehosting.com::CentOS"
+"EU","UK","VooServers","http://vooservers.com/","http://mirrors.vooservers.com/centos/","",""
+"EU","UK","XILO Communications Ltd.","http://www.xilo.net/","http://mirror.mhd.uk.as44574.net/mirror.centos.org/","",""
+"EU","Ukraine","ABN","http://www.abn-ad.com/","http://ftp.tlk-l.net/pub/mirrors/centos.org/","ftp://ftp.tlk-l.net/pub/mirrors/centos.org/","rsync://ftp.tlk-l.net/pub/mirrors/centos.org/"
+"EU","Ukraine","Colocall Internet Data Center","http://www.colocall.net/","http://ftp.colocall.net/pub/centos/","ftp://ftp.colocall.net/pub/centos/",""
+"EU","Ukraine","IT&T Consulting","https://itt-consulting.com/","http://centos.itt-consulting.com/","",""
+"EU","Ukraine","LDS (Luganskie Domashnie Seti)","http://lds.ua/","","ftp://ftp.linux.lg.ua/pub/centos/",""
+"EU","Ukraine","Mirohost","http://mirohost.net/","http://mirror.mirohost.net/centos/","ftp://mirror.mirohost.net/centos/",""
+"EU","Ukraine","Ukrnames LLC ICANN","http://www.ukrnames.com/","http://mirror.ukrnames.com/mirrors/centos/","ftp://mirror.ukrnames.com/mirrors/centos/","rsync://mirror.ukrnames.com/centos/"
+"EU","Ukraine","Vinnytsia IP-Connect","http://ip-connect.vn.ua/","http://centos.ip-connect.vn.ua/","ftp://centos.ip-connect.vn.ua/mirror/centos/","rsync://centos.ip-connect.vn.ua/centos/"
+"EU","United Kingdom","AAISP","http://aa.net.uk/","http://mirror.for.me.uk/centos/","",""
+"EU","United Kingdom","AS29550.net","http://mirror.as29550.net/","http://mirror.as29550.net/mirror.centos.org/","ftp://mirror.as29550.net/mirror.centos.org/",""
+"EU","United Kingdom","Bytemark","http://www.bytemark.co.uk/","http://mirror.bytemark.co.uk/centos/","ftp://mirror.bytemark.co.uk/centos/","rsync://mirror.bytemark.co.uk/centos"
+"EU","United Kingdom","Coreix","http://www.coreix.net/","http://mirrors.coreix.net/centos/","",""
+"EU","United Kingdom","Goscomb Technologies Limited","http://www.goscomb.net/","http://mirror.sov.uk.goscomb.net/centos/","ftp://mirror.sov.uk.goscomb.net/centos/",""
+"EU","United Kingdom","IceColo, a division of M247 Ltd","http://www.icecolo.com","","http://mirrors.manchester.m247.com/centos/","rsync://mirrors.manchester.m247.com/centos/"
+"EU","United Kingdom","Krystal Secure Hosting Solutions","http://www.krystal.co.uk/","http://mirror.krystal.co.uk/centos/","ftp://mirror.krystal.co.uk/centos/","rsync://mirror.krystal.co.uk::centos"
+"EU","United Kingdom","Melbourne Server Hosting Ltd.","http://www.melbourne.co.uk/","http://mirrors.melbourne.co.uk/sites/ftp.centos.org/centos/","ftp://mirrors.melbourne.co.uk/sites/ftp.centos.org/centos/",""
+"EU","United Kingdom","Oxford University Computing Services","http://www.oucs.ox.ac.uk/","http://mirror.ox.ac.uk/sites/mirror.centos.org/","ftp://mirror.ox.ac.uk/sites/mirror.centos.org/",""
+"EU","United Kingdom","Pulsant Ltd.","http://www.pulsant.co.uk/","http://centos.mirroring.pulsant.co.uk/","ftp://centos.mirroring.pulsant.co.uk/centos/",""
+"EU","United Kingdom","UK Mirror Service - Univ. Kent","http://www.mirrorservice.org/","http://www.mirrorservice.org/sites/mirror.centos.org/","ftp://ftp.mirrorservice.org/sites/mirror.centos.org/","rsync://rsync.mirrorservice.org/mirror.centos.org/"
+"EU","United Kingdom","UKFast.net Ltd","http://www.ukfast.co.uk/","http://mirrors.ukfast.co.uk/sites/ftp.centos.org/","ftp://mirrors.ukfast.co.uk/ftp.centos.org/",""
+"EU","United Kingdom","Warwick University","http://www2.warwick.ac.uk/fac/sci/csc/","http://anorien.csc.warwick.ac.uk/mirrors/centos/","ftp://anorien.csc.warwick.ac.uk/CentOS/","rsync://anorien.csc.warwick.ac.uk/CentOS/"
+"Greenland","","Tele Greenland","http://www.tele.gl","http://mirror.greennet.gl/centos/","",""
+"Middle East","Israel","Interhost Networks","http://www.interhost.co.il/","http://centos.syn.co.il/","","rsync://centos.syn.co.il/centos/"
+"Middle East","Israel","Israel Internet Association (ISOC-IL)","http://www.isoc.org.il/","http://mirror.isoc.org.il/pub/centos/","ftp://mirror.isoc.org.il/pub/centos/",""
+"Middle East","Israel","Joinweb Hosting Ltd","http://www.joinweb.co.il/","http://centos.joinweb.co.il/","",""
+"Middle East","Israel","SPD Hosting LTD","http://www.spd.co.il/","http://centos.spd.co.il/","",""
+"Middle East","Oman","Sultan Qaboos University","http://www.squ.edu.om/","http://mirror.squ.edu.om/centos/","",""
+"Middle East","Saudi Arabia","Saudi Telecom Company (STC)","","http://centos.saudi.net.sa","ftp://centos.saudi.net.sa",""
+"North America","Mexico","Webxcreen","http://www.webxcreen.com/","http://centos.webxcreen.org/","",""
+"Oceania","Australia","AARNet","http://mirror.aarnet.edu.au/","http://mirror.aarnet.edu.au/pub/centos/","ftp://mirror.aarnet.edu.au/pub/centos/","rsync://mirror.aarnet.edu.au/centos/"
+"Oceania","Australia","BKB Internet","http://bkb.net.au/","http://mirror.mel.bkb.net.au/pub/centos/","",""
+"Oceania","Australia","Colocity","http://www.colocity.com/","http://mirror.colocity.com/centos/","",""
+"Oceania","Australia","Crucial Cloud Hosting","http://www.crucial.com.au/","http://centos.mirror.crucial.com.au/","ftp://centos.mirror.crucial.com.au/","mirror.crucial.com.au::CentOS"
+"Oceania","Australia","GloVine Pty Ltd"," http://www.glovine.com.au/","http://centos.syd.au.glomirror.com.au/","",""
+"Oceania","Australia","Hostcentral","http://www.hostcentral.net.au/","http://mirror.as24220.net/pub/centos/","ftp://mirror.as24220.net/pub/centos/","rsync://mirror.as24220.net/centos/"
+"Oceania","Australia","Internode","http://www.internode.on.net/","http://mirror.internode.on.net/pub/centos/","",""
+"Oceania","Australia","Over The Wire","http://www.overthewire.com.au/","http://mirror.overthewire.com.au/pub/centos/","ftp://mirror.overthewire.com.au/pub/centos/",""
+"Oceania","Australia","RackCentral","http://rackcentral.com.au/","http://mirror.rackcentral.com.au/centos/","ftp://mirror.rackcentral.com.au/centos/","rsync://mirror.rackcentral.com.au/centos/"
+"Oceania","Australia","Servers Australia Pty Ltd.","http://www.serversaustralia.com.au/","http://centos.mirror.serversaustralia.com.au/","",""
+"Oceania","Australia","Swinburne University of Technology","http://www.swin.edu.au/","http://ftp.swin.edu.au/centos/","ftp://ftp.swin.edu.au/centos/","rsync://ftp.swin.edu.au/centos/"
+"Oceania","Australia","UberGlobal","http://www.uber.com.au/","http://centos.mirror.uber.com.au/","","rsync://mirror.uber.com.au/centos"
+"Oceania","Australia","VentraIP Group (Australia) Pty Ltd","http://www.ventraip.com.au/","http://mirror.ventraip.net.au/CentOS/","ftp://mirror.ventraip.net.au/CentOS/",""
+"Oceania","Australia","Web24 Group Pty Ltd","http://www.web24.com.au/","http://mirror.web24.net.au/centos/","ftp://mirror.web24.net.au/centos/","rsync://mirror.web24.net.au/centos/"
+"Oceania","Indonesia","Computer Center, Jember University","http://www.unej.ac.id/","http://mirror.unej.ac.id/centos/","ftp://mirror.unej.ac.id/centos/","rsync://mirror.unej.ac.id/centos"
+"Oceania","New Zealand","University of Canterbury","http://canterbury.ac.nz/","http://ucmirror.canterbury.ac.nz/linux/CentOS/","ftp://ucmirror.canterbury.ac.nz/pub/linux/CentOS/",""
+"Oceania","New Zealand","wicks.co.nz","http://wicks.co.nz/","http://ftp.wicks.co.nz/pub/linux/dist/centos/","ftp://ftp.wicks.co.nz/pub/linux/dist/centos/","rsync://ftp.wicks.co.nz/pub/linux/dist/centos/"
+"Oceania","New Zealand","WorldxChange Communications Ltd","http://wxc.co.nz/","http://mirror.xnet.co.nz/pub/centos/","ftp://mirror.xnet.co.nz/pub/centos/",""
+"South America","Argentina","ARSAT","http://www.arsat.com.ar/","http://mirrors.dcarsat.com.ar/centos/","",""
+"South America","Argentina","CCT - CONICET MENDOZA","http://www.mendoza-conicet.gob.ar/","http://centos.mirror.mendoza-conicet.gob.ar/","",""
+"South America","Argentina","xfree.com","http://www.xfree.com.ar/","http://centos.xfree.com.ar/","",""
+"South America","Brazil","Centro de Computa��o Eletr�nica / University of Sao Paulo","http://www.cce.usp.br/","http://linorg.usp.br/CentOS","","rsync://linorg.usp.br/CentOS"
+"South America","Brazil","Federal University of Mato Grosso do Sul - UFMS","http://www-nt.ufms.br/","http://centos.ufms.br/","","rsync://centos.ufms.br/CentOS/"
+"South America","Brazil","Globo.com","http://www.globo.com/","http://mirror.globo.com/centos/","",""
+"South America","Brazil","Instituto Federal do Esp�rito Santo","http://www.ci.ifes.edu.br/","http://mirror.ci.ifes.edu.br/centos/","",""
+"South America","Brazil","SecrelNet","http://secrel.com.br/","http://centos.secrel.com.br/","",""
+"South America","Brazil","State University of Campinas - UNICAMP","http://www.ccuec.unicamp.br/","http://ftp.unicamp.br/pub/centos/","ftp://ftp.unicamp.br/pub/centos/","rsync://ftp.unicamp.br/centos/"
+"South America","Brazil","Universidade Federal do Esp�rito Santo","http://www.ufes.br/","http://centos.ufes.br/","","rsync://centos.ufes.br/centos/"
+"South America","Chile","Gtdinternet S.A.","","http://mirror.gtdinternet.com/","ftp://mirror.gtdinternet.com/pub/Linux/CentOS/",""
+"South America","Chile","Universidad Tecnica Federico Santa Maria","http://portal.inf.utfsm.cl/","","ftp://ftp.inf.utfsm.cl/pub/Linux/CentOS/","rsync://ftp.inf.utfsm.cl/pub/Linux/CentOS/"
+"South America","Colombia","EDATEL ISP","http://www.edatel.net.co/","http://mirror.edatel.net.co/centos/","",""
+"South America","Costa Rica","abdicar Communications, S.A.","http://abdicar.com/","http://mirrors.abdicar.com/CentOS/","ftp://mirrors.abdicar.com/CentOS/","rsync://mirrors.abdicar.com/costarica_CentOS"
+"South America","Costa Rica","University of Costa Rica","http://www.ucr.ac.cr/","http://mirrors.ucr.ac.cr/centos/","ftp://mirrors.ucr.ac.cr/pub/centos/","rsync://mirrors.ucr.ac.cr/centos/"
+"South America","Ecuador","ESPOCH (Escuela Superior Polit�cnica de Chimborazo)","http://www.espoch.edu.ec/","http://mirror.espoch.edu.ec/centos/","","rsync://mirror.espoch.edu.ec/centos/"
+"South America","Puerto Rico","University of Puerto Rico - HPCF","http://www.hpcf.upr.edu/","http://mirrors.hpcf.upr.edu/ftp/pub/Mirrors/CentOS/","ftp://mirrors.hpcf.upr.edu/pub/Mirrors/CentOS/",""
+"US","","Facebook","http://developers.facebook.com/opensource","http://centos.mirror.facebook.net/","",""
+"US","","Oregon State University","http://osuosl.org/","http://ftp.osuosl.org/pub/centos/","ftp://ftp.osuosl.org/pub/centos/","rsync://ftp.osuosl.org/centos/"
+"US","","Rackspace","http://www.rackspace.com/","http://mirror.rackspace.com/CentOS/","",""
+"US","AK","Arctic Region Supercomputing Center","http://www.arsc.edu/","http://mirrors.arsc.edu/centos/","ftp://mirrors.arsc.edu/centos/",""
+"US","AL","Millry Telephone Co","http://www.millry.net/","http://mirror.millry.co/CentOS/","ftp://mirror.millry.co/CentOS/",""
+"US","AL","Teklinks","http://teklinks.com/","http://mirror.teklinks.com/centos/","ftp://mirror.teklinks.com/centos/",""
+"US","AZ","Cavecreek Web Hosting","http://www.cavecreek.net/","http://centos-distro.cavecreek.net/centos/","","rsync://centos-distro.cavecreek.net/CentOS/"
+"US","AZ","Easynews","http://www.easynews.com/","http://mirrors.easynews.com//linux/centos/","ftp://mirrors.easynews.com//linux/centos/",""
+"US","AZ","Singlehop, LLC","http://www.singlehop.com/","http://yum.phx.singlehop.com/centos/","",""
+"US","CA","5Nine Solutions","http://www.5ninesolutions.com/","http://mirror.5ninesolutions.com/centos/","ftp://mirror.5ninesolutions.com/pub/mirror/centos/","rsync://mirror.5ninesolutions.com/centos/"
+"US","CA","Energy Sciences Network","http://www.es.net/","http://linux.mirrors.es.net/centos/","ftp://linux.mirrors.es.net/centos/","rsync://linux.mirrors.es.net/centos/"
+"US","CA","Fast Serv Networks, LLC","http://www.fastserv.com/web/","http://mirror.san.fastserv.com/pub/linux/centos/","ftp://mirror.san.fastserv.com/pub/linux/centos/",""
+"US","CA","FreedomVoice","http://www.freedomvoice.com/","http://centos.mirror.freedomvoice.com/","ftp://mirror.freedomvoice.com/centos/","rsync://mirror.freedomvoice.com/centos/"
+"US","CA","Harvey Mudd College","http://www.hmc.edu","http://mirror.hmc.edu/centos/","",""
+"US","CA","Linux Kernel Archives","http://www.kernel.org/","http://mirrors.kernel.org/centos/","ftp://mirrors.kernel.org/centos/","rsync://mirrors.kernel.org/centos/"
+"US","CA","NDCHost","http://ndchost.com/","http://centos.mirror.ndchost.com/","",""
+"US","CA","Pac-12 Enterprises","http://www.pac-12.org/","http://mirror.pac-12.org/","",""
+"US","CA","Sonic.net","http://sonic.net/","http://mirrors.sonic.net/centos/","ftp://mirrors.sonic.net/centos/",""
+"US","CA","SONN","http://www.sonn.com/","http://centos.sonn.com/","",""
+"US","CA","Stanford University","http://www.stanford.edu/","http://mirror.stanford.edu/yum/pub/centos/","ftp://mirror.stanford.edu/pub/mirrors/centos/","rsync://mirror.stanford.edu/mirrors/centos/"
+"US","CA","TCPDIAG","","http://centos.tcpdiag.net/centos/","ftp://centos.tcpdiag.net/centos/","rsync://centos.tcpdiag.net/centos/"
+"US","CA","University of Southern California","http://mirrors.usc.edu/","http://mirrors.usc.edu/pub/linux/distributions/centos/","ftp://mirrors.usc.edu/pub/linux/distributions/centos/","rsync://mirrors.usc.edu/centos/"
+"US","CO","FDCservers.net LLC (Denver)","http://www.fdcservers.net","http://mirrordenver.fdcservers.net/centos/","",""
+"US","CO","IcyBoards","http://icyboards.com/","http://centos.icyboards.com/","",""
+"US","CO","LFCVPS","http://www.lfcvps.com/","http://mirrors.loosefoot.com/centos/","ftp://mirrors.loosefoot.com/centos/","rsync://mirrors.loosefoot.com/centos/"
+"US","CO","SomeImage Image Hosting","http://someimage.com/","http://centos.someimage.com/","",""
+"US","CO","tummy.com","http://www.tummy.com","http://mirrors.tummy.com/mirrors/CentOS/","",""
+"US","CT","Connecticut Education Network","http://www.ct.gov/cen","http://mirror.net.cen.ct.gov/centos/","",""
+"US","DC","ServInt","http://www.servint.com/","http://centos.servint.com/","",""
+"US","DE","University of Delaware","http://ftp.lug.udel.edu/","http://mirror.lug.udel.edu/pub/centos/","",""
+"US","FL","Atlantic.Net","http://www.atlantic.net/","","ftp://mirror.atlantic.net/pub/centos/",""
+"US","FL","Mojohost","http://www.mojohost.com/","http://mirror.mojohost.com/centos/","ftp://mirror.mojohost.com/centos/",""
+"US","FL","University of South Florida","http://www.usf.edu/","http://ftp.usf.edu/pub/centos/","ftp://ftp.usf.edu/pub/centos/",""
+"US","GA","Georgia Tech","http://www.gtlib.gatech.edu/","http://www.gtlib.gatech.edu/pub/centos/","ftp://ftp.gtlib.gatech.edu/pub/centos/","rsync://rsync.gtlib.gatech.edu/centos/"
+"US","HI","Advanced Network Computing Lab Hawaii","http://www.ancl.hawaii.edu/","http://mirror.ancl.hawaii.edu/linux/centos/","",""
+"US","ID","SolutionPro","http://www.solutionpro.com/","http://mirror.spro.net/centos/","ftp://mirror.spro.net/centos/","rsync://mirror.spro.net/centos/"
+"US","ID","Syringa Networks","http://www.syringanetworks.net/","http://mirrors.syringanetworks.net/centos/","ftp://mirrors.syringanetworks.net/centos/","rsync://mirrors.syringanetworks.net/CentOS/"
+"US","IL","FDCservers.net LLC","http://www.fdcservers.net","http://mirror.fdcservers.net/centos/","ftp://mirror.fdcservers.net/centos/",""
+"US","IL","GIGENET","http://www.gigenet.com/","http://mirrors.gigenet.com/centos/","ftp://mirrors.gigenet.com/centos/","rsync://mirrors.gigenet.com/centos/"
+"US","IL","SanctuaryHost","http://www.sanctuaryhost.com","http://mirror.sanctuaryhost.com/centos/","",""
+"US","IL","Server Axis Corporation","http://serveraxis.com/","http://mirrors.serveraxis.net/centos/","ftp://mirrors.serveraxis.net/centos/",""
+"US","IL","SingleHop.com","http://SingleHop.com/","http://yum.singlehop.com/CentOS/","",""
+"US","IL","Steadfast Networks","http://steadfast.net","http://mirror.steadfast.net/centos/","ftp://mirror.steadfast.net/centos/","rsync://mirror.steadfast.net/centos/"
+"US","IL","Team Cymru","http://team-cymru.org/","http://mirror.team-cymru.org/CentOS/","ftp://mirror.team-cymru.org/CentOS/","rsync://mirror.team-cymru.org/CentOS"
+"US","IL","University of Chicago, Astronomy","http://astro.uchicago.edu/","http://bay.uchicago.edu/centos/","ftp://bay.uchicago.edu/centos/","rsync://bay.uchicago.edu/CentOS/"
+"US","IL","Your.Org","http://www.your.org/","http://ftpmirror.your.org/pub/centos/","ftp://ftpmirror.your.org/pub/centos/","rsync://ftpmirror.your.org/centos/"
+"US","IN","Indiana University","http://pti.iu.edu/cs/software-applications/","","ftp://ftp.ussg.iu.edu/linux/centos/",""
+"US","IN","NetNITCO Internet Services","http://www.netnitco.net/","http://centos.netnitco.net/","ftp://centos.netnitco.net/centos/",""
+"US","MA","Harvard SEAS ARC","http://www.seas.harvard.edu/","http://mirrors.seas.harvard.edu/centos/","",""
+"US","MD","University of Maryland, College Park","http://www.umd.edu/","http://mirror.umd.edu/centos/","ftp://mirror.umd.edu/centos/","rsync://mirror.umd.edu/centos/"
+"US","MI","Central Michigan University","http://www.cmich.edu/","http://mirrors.cmich.edu/centos/","",""
+"US","MI","CoreNetworks Dedicated Servers","http://corenetworks.net","http://centos.corenetworks.net/","",""
+"US","MI","Liquid Web, Inc.","http://www.liquidweb.com/","http://mirrors.liquidweb.com/CentOS/","","rsync://mirrors.liquidweb.com/CentOS/"
+"US","MI","MBNI, University of Michigan","http://www.mbni.med.umich.edu/","http://centos.mbni.med.umich.edu/mirror/","","rsync://centos.mbni.med.umich.edu/mirror"
+"US","MI","Michigan State University Engineering De","http://www.egr.msu.edu/","http://ftp.egr.msu.edu/pub/centos","ftp://ftp.egr.msu.edu/pub/centos","rsync://ftp.egr.msu.edu::CentOS"
+"US","MI","Michigan Tech Linux Users Group","http://lug.mtu.edu/","http://lug.mtu.edu/centos/","ftp://lug.mtu.edu/centos/","rsync://lug.mtu.edu/centos/"
+"US","MI","Nexcess.Net","http://nexcess.net/","http://mirror.nexcess.net/CentOS/","",""
+"US","MI","The Linux Fix","http://tlfhosting.com/","http://mirror.thelinuxfix.com/CentOS/","ftp://mirror.thelinuxfix.com/CentOS/","rsync://mirror.thelinuxfix.com/CentOS/"
+"US","MI","University of Michigan � Flint","http://www.umflint.edu/","http://holmes.umflint.edu/centos/","",""
+"US","MN","US Internet","http://www.usinternet.com/","http://mirrors.usinternet.com/centos/","","mirrors.usinternet.com::centos"
+"US","MO","JCHost.net Internet Services","http://www.jchost.net/","http://centos-mirror.jchost.net/","",""
+"US","NC","Duke University","http://www.linux.duke.edu/","http://mirror.linux.duke.edu/pub/centos/","ftp://mirror.linux.duke.edu/pub/centos/","rsync://mirror.linux.duke.edu/centos"
+"US","NC","McClatchy Interactive","http://www.mcclatchyinteractive.com/","","ftp://mirror.nandomedia.com/pub/CentOS/",""
+"US","NC","Netriplex, LLC","http://www.netriplex.com","http://centos.mirror.netriplex.com/","","rsync://centos.mirror.netriplex.com/CentOS"
+"US","NC","North Carolina State University","http://www.linux.ncsu.edu/","http://ftp.linux.ncsu.edu/pub/CentOS/","ftp://ftp.linux.ncsu.edu/pub/CentOS/","rsync://ftp.linux.ncsu.edu/CentOS/"
+"US","NE","University of Nebraska-Lincoln","http://www.unl.edu","http://mirror.unl.edu/centos/","",""
+"US","NH","MetroCast Cablevision","http://www.metrocast.com/","http://mirror.metrocast.net/centos/","",""
+"US","NJ","Constant Hosting","http://constant.com/","http://centos.mirror.constant.com/","",""
+"US","NJ","interserver.net","http://interserver.net/","http://mirror.trouble-free.net/centos/","","rsync://mirror.trouble-free.net/centos/"
+"US","NJ","Net Access Corporation","http://www.nac.net","http://centos.mirror.nac.net/","",""
+"US","NJ","SolarVPS","http://www.solarvps.com/","http://mirror.solarvps.com/centos/","ftp://mirror.solarvps.com/centos/",""
+"US","NV","Versaweb Hosting Services","http://www.versaweb.com/","http://mirrors.versaweb.com/centos/","ftp://mirrors.versaweb.com/centos/",""
+"US","NY","Atlantic Metro Communications","http://www.atlanticmetro.net/","http://mirror.atlanticmetro.net/centos/","ftp://mirror.atlanticmetro.net/centos/",""
+"US","NY","BuildDesignCreate.com","http://www.builddesigncreate.com/","http://centos.builddesigncreate.com/mirror/","",""
+"US","NY","Clarkson University","http://www.clarkson.edu/","http://mirror.clarkson.edu/centos/","","rsync://mirror.clarkson.edu/centos"
+"US","NY","Einstein College of Medicine","http://www.einstein.yu.edu/home/default.asp","http://mirrors.einstein.yu.edu/centos/","",""
+"US","NY","New York Internet","http://nyi.net/","","ftp://mirror.nyi.net/centos/",""
+"US","NY","NYU","http://www.nyu.edu/","http://mirror.es.its.nyu.edu/centos/","",""
+"US","NY","Rochester Institute of Technology","http://www.rit.edu/","http://mirrors.rit.edu/centos/","","rsync://mirrors.rit.edu/centos/"
+"US","NY","SpinelliCreations","http://www.spinellicreations.com/","http://centos.spinellicreations.com/","",""
+"US","OH","Beyond Hosting","http://beyondhosting.net/","http://mirror.beyondhosting.net/CentOS/","",""
+"US","OH","CISP / Yocolo","http://www.cisp.com","http://mirror.cisp.com/CentOS/","","rsync://mirror.cisp.com/CentOS"
+"US","OH","HostingXtreme","http://hostingxtreme.com/","http://centos.hostingxtreme.com/","",""
+"US","OK","University of Oklahoma","http://www.ou.edu/web.html","http://mirror.oss.ou.edu/centos/","ftp://mirror.oss.ou.edu/centos/","rsync://mirror.oss.ou.edu/centos/"
+"US","OR","Canby Telcom ","http://www.canbytel.com/","http://mirror.web-ster.com/centos/","ftp://mirror.web-ster.com/centos/","rsync://mirror.web-ster.com/centos/"
+"US","OR","Portland State Univ.","http://www.cat.pdx.edu/","http://mirrors.cat.pdx.edu/centos/","","rsync://mirrors.cat.pdx.edu/centos/"
+"US","OR","TOCICI LLC","http://www.tocici.com/","http://mirror.tocici.com/centos/","",""
+"US","PA","Datto Inc.","http://www.dattobackup.com/","http://mirror.dattobackup.com/CentOS/","",""
+"US","PA","Hoobly Classifieds","http://www.hoobly.com/","http://centos.mirrors.hoobly.com/","",""
+"US","PA","IT7 Networks Inc","http://it7.net/","http://mirrors-pa.sioru.com/centos/","ftp://mirrors-pa.sioru.com/centos/","rsync://mirrors-pa.sioru.com::CentOS"
+"US","TN","Final ASP","http://www.finalasp.com/","http://mirrors.finalasp.com/CentOS/","ftp://mirrors.finalasp.com/CentOS/",""
+"US","TX","1-800-hosting.com","http://www.800hosting.com/","http://dist1.800hosting.com/centos/","ftp://dist1.800hosting.com/centos/",""
+"US","TX","Geeks at Work Solutions","http://gawsolutions.us/","http://mirrors.gawsolutions.us/centos","",""
+"US","TX","GravityFish, LLC","http://gravityfish.com/","http://centos.gravityfish.com/","",""
+"US","TX","Limestone Networks","http://www.limestonenetworks.com/","http://centos.mirror.lstn.net/","ftp://centos.mirror.lstn.net/centos/","rsync://centos.mirror.lstn.net/"
+"US","TX","Ray Stedman Library","http://www.raystedman.org/","http://mirror.raystedman.net/centos/","","rsync://mirror.raystedman.net/centos/"
+"US","TX","UnmeteredVPS.net","http://unmeteredvps.net/","http://centos.unmeteredvps.net/","ftp://centos.unmeteredvps.net/","centos.UnmeteredVPS.net::CentOS"
+"US","TX","XygenHosting","http://www.xygenhosting.com/","http://dallas.tx.mirror.xygenhosting.com/CentOS/","ftp://dallas.tx.mirror.xygenhosting.com/CentOS/","rsync://dallas.tx.mirror.xygenhosting.com::centos"
+"US","UT","Bluehost.com","http://www.bluehost.com","http://mirrors.bluehost.com/centos/","",""
+"US","UT","Fast Speed Test","http://fastspeedtest.com","http://fastspeedtest.net/mirrors/centos/","",""
+"US","UT","University of Utah","http://www.chpc.utah.edu/","http://mirror.chpc.utah.edu/pub/centos/","","rsync://mirror.chpc.utah.edu/pub/centos/"
+"US","UT","XMission","http://www.xmission.com/","http://mirrors.xmission.com/centos/","ftp://mirrors.xmission.com/centos/","rsync://mirrors.xmission.com/centos/"
+"US","VA","AdvancedHosters","http://advancedhosters.com/","http://mirrors.advancedhosters.com/centos/","ftp://mirrors.advancedhosters.com/centos/","rsync://mirrors.advancedhosters.com/centos/"
+"US","VA","AOL, LLC","http://corp.aol.com/","http://centos.aol.com/","",""
+"US","VA","Cogent Communications","http://www.cogentco.com/","http://mirror.cogentco.com/pub/linux/centos/","ftp://mirror.cogentco.com/pub/linux/centos/","rsync://mirror.cogentco.com/CentOS/"
+"US","VA","Fast Serv Networks, LLC, VA","http://www.fastserv.com/web/","http://mirror.ash.fastserv.com/pub/linux/centos/","ftp://mirror.ash.fastserv.com/pub/linux/centos/",""
+"US","VA","Leasweb US","http://www.leaseweb.com/","http://mirror.us.leaseweb.net/centos/","ftp://mirror.us.leaseweb.net/centos/","rsync://mirror.us.leaseweb.net/centos/"
+"US","VA","Symnds","","http://mirror.symnds.com/CentOS/","","rsync://mirror.symnds.com/CentOS/"
+"US","VA","University of Virginia","http://www.virginia.edu/","http://mirror.itc.virginia.edu/CentOS/","","rsync://mirror.itc.virginia.edu/centos/"
+"US","VA","Virginia Commonwealth University","http://www.vcu.edu/","http://mirror.vcu.edu/pub/gnu+linux/centos/","ftp://mirror.vcu.edu/pub/gnu+linux/centos/","rsync://mirror.vcu.edu/centos/"
+"US","VA","Virginia Tech","http://mirror.cs.vt.edu/","http://mirror.cs.vt.edu/pub/CentOS/","ftp://mirror.cs.vt.edu/pub/CentOS/",""
+"US","VA","Yellow Fiber Networks","http://www.yellowfiber.net/","http://mirror.yellowfiber.net/centos/","",""
+"US","VT","Green Mountain Access","http://www.greenmountainaccess.net/","http://mirrors.greenmountainaccess.net/centos/","ftp://mirrors.greenmountainaccess.net/centos/","rsync://mirrors.greenmountainaccess.net/centos/"
+"US","VT","TelJet Longhaul LLC","http://www.teljet.net/","http://mirror.teljet.net/centos","",""
+"US","WA","Walla Walla University","http://www.wallawalla.edu/","","ftp://ftp.wallawalla.edu/pub/mirrors/centos/","rsync://ftp.wallawalla.edu/CentOS/"
+"US","WA","Washington State University","http://www.eecs.wsu.edu","http://centos.eecs.wsu.edu/","ftp://centos.eecs.wsu.edu/centos/","rsync://centos.eecs.wsu.edu/centos/"
+"US","WI","TDS Internet Services","http://mirrors.tds.net/","http://centos.mirrors.tds.net/pub/linux/centos/","ftp://centos.mirrors.tds.net/pub/linux/centos/","rsync://centos.mirrors.tds.net/CentOS/"
+
+Thu Nov 14 15:00:02 CST 2013
diff --git a/content/download/mirrors.erb b/content/download/mirrors.erb
new file mode 100644
index 0000000..5cb4cbe
--- /dev/null
+++ b/content/download/mirrors.erb
@@ -0,0 +1,70 @@
+---
+title: Mirror List
+is_hidden: false
+---
+<h1>List of CentOS Mirrors</h1>
+<p class="lead"> 
+CentOS welcomes new mirror sites. If you are considering setting up a
+public mirror site for CentOS, <a href="http://wiki.centos.org/HowTos/CreatePublicMirrors">please follow the mirror guidelines</a> to make
+sure that your mirror is consistent with the other mirror sites.
+</p>
+
+<div id="CSVTable"></div>
+<script type="text/javascript" src="/assets/js/jquery.csvToTable2.js"></script>
+<script type="text/javascript" src="/assets/js/jquery.tablesorter.min.js"></script>
+<link rel="stylesheet" type="text/css" href="/assets/csvtable-look.css">
+
+<script>
+$('#CSVTable').CSVToTable('/download/full-mirrorlist.csv', 
+    { 
+       startLine: 1,
+       //['Location', 'Region', 'Sponsor', 'HomePage', 'HTTP location', 'FTP Location', 'Rsync Location']
+       headers: [
+       'Location', 
+       'Region', 
+       {label:'Sponsor' , items:[2 , 3]}, 
+       {label:'HomePage' , hidden:true}, 
+       'HTTP location', 
+       'FTP Location', 
+       'Rsync Location'
+       ],
+       itemMerger: function(header , items) {
+          var outItem = [];
+          console.log(items);
+          for(var i in header.items){
+            var item = header.items[i];
+            outItem.push(items[item]);
+          }
+          if(header.label = 'Sponsor'){
+             console.log(outItem);
+             return '<a href="' + outItem[1] + '" target="_blank">' + outItem[0] + '</a>';
+          }else return outItem.join(' ');
+      },
+      preRenderItem: function(headerLabel , item) {
+        if(item == '') return '';
+        switch (headerLabel) {
+          case 'HTTP location':
+          case 'FTP Location':
+          case 'Rsync Location':
+              item = item.replace(/"/gi , '');
+              return '<a href="' + item + '" target="_blank">' + item + '</a>'; 
+          default:
+              return item;
+        }
+      }
+    }
+).bind("loadComplete",function() { 
+  $('#CSVTable').find('TABLE').tablesorter({
+    widgets: ['zebra', 'filter'],
+    widgetOptions: {
+      uitheme: "bootstrap"
+    },
+    textExtraction: function(node) {  
+        // extract data from markup and return it  
+        return $(node).text();
+    } 
+  });
+
+});;
+</script>
+
diff --git a/content/download/wallpaper.png b/content/download/wallpaper.png
new file mode 100644
index 0000000..7cd6633
Binary files /dev/null and b/content/download/wallpaper.png differ
diff --git a/content/index.erb b/content/index.erb
new file mode 100644
index 0000000..ede01fa
--- /dev/null
+++ b/content/index.erb
@@ -0,0 +1,67 @@
+---
+title: CentOS Project
+is_hidden: true
+---
+<script type="text/javascript" >
+$(document).ready(function () {
+        $('#divRss').FeedEk({
+            FeedUrl: document.location.protocol + '//www.centos.org/assets/seven.rss',
+            DescCharacterLimit:100,
+            MaxCount: 4
+        });
+});
+</script>
+
+<div class="row">
+  <div class="jumbotron col-md-12">
+    <h1>New Look. New CentOS.</h1>
+    <p>CentOS has joined forces with Red Hat, working to provide a common platform for open source community project needs. <a href="http://lists.centos.org/pipermail/centos-announce/2014-January/020100.html">Read our announcement here</a>, then come join the conversation on <a href="http://wiki.centos.org/irc">irc</a>, the <a href="http://lists.centos.org/mailman/listinfo/">mailing lists</a> or the <a href="https://www.centos.org/forums/">forums</a>.</p>
+    <p>To help drive this common platform, CentOS Project has created a new official meritocratic <a href="/about/governance/">governance policy </a> with a focus on helping new projects grow and distribute a full-featured, easy-to-use environment.</p>
+    <p>Groups such as OpenStack, Xen4, Gluster, and oVirt can now customize CentOS Linux directly <em>inside the project</em>, building CentOS variants for new workloads on top of the slow-and-steady core platform. <a href="/variants">Read more about the variants proposal&raquo;</a></p>
+    <p></p>
+    <div class="downloadbutton"><a href="/download/">Get CentOS Linux Now</a></div>
+  </div>
+</div>
+<div class="row">
+  <div class="col-sm-4">
+    <h2 class="text-center">EL7 Progress</h2>
+    <div id="divRss">
+    </div>
+  </div>
+  <div class="col-sm-4">
+    <h2 class="text-center">News & Events</h2>
+    <dl>
+      <dt><a href="http://wiki.centos.org/Events/Dojo/Brussels2014">Brussels-Belgium</a></dt><dd> &raquo; Jan 31st, 2014 - <a href="http://ibmbecentosdojo2014.eventbrite.com/">Register Now</a></dd>
+      <dt><a href="http://wiki.centos.org/Events/Dojo/">China</a></dt><dd> &raquo; Coming in 2014</dd>
+      <dt><a href="http://wiki.centos.org/Events/Dojo/">Phoenix, AZ, USA</a></dt><dd> &raquo; Coming in 2014</dd>
+      <dd><a href="http://wiki.centos.org/Events/Dojo/">More about Dojos</a></dd>
+    </ul>
+    <div class="media">
+      <a class="pull-left" href="#">
+        <img class="media-object img-rounded" src="/images/centoslogo-32.png" width="32" alt="..."></a>
+      <div class="media-body">
+        <h4 class="media-heading"><a href="/download/">New 6.5 release</a> <small><em>December 1st 2013</em></small></h4>
+        <p>The CentOS team is pleased to announce the immediate availability of CentOS 6.5 for i386 and x86_64 architectures.</p>
+      </div>
+    </div>
+  </div>
+  <div class="col-sm-4">
+    <h2 class="text-center">Sponsorship</h2>
+    <p>CentOS would not be possible without the support of our sponsors. We would like to thank the following product/service for being a CentOS sponsor:</p>
+    <div class='cycle-slideshow' 
+      data-cycle-random="true"
+      data-cycle-timeout="3000" 
+      data-cycle-fx="fade" 
+      data-cycle-center-horz=true 
+      data-cycle-center-vert=true 
+      data-cycle-loader="wait" 
+      data-cycle-progressive="#images"
+      data-cycle-slides="> a"
+      data-cycle-pause-on-hover="true" >
+      <% @site.items.select { |i| i[:sponsor] }.each do|i| %>
+        <a href="<%= i[:url] %>"><img class="img-rounded" src="<%= i[:img] %>" /></a> <% end %>
+    </div>
+    <br /> 
+    <p><a href="/sponsors/">If you value our work, please consider becoming a sponsor!</a></p>
+  </div>
+</div>
diff --git a/content/legal.md b/content/legal.md
new file mode 100644
index 0000000..1b298a0
--- /dev/null
+++ b/content/legal.md
@@ -0,0 +1,54 @@
+---
+title:      "CentOS Legal"
+markdown:   basic
+is_dynamic: true
+---
+* Table of contents will replace this text.
+{:toc}
+
+#CentOS Legal
+{:.no_toc}
+
+#Export Regulations
+
+By downloading CentOS software, you acknowledge that you understand all of the following: CentOS software and technical information may be subject to the U.S. Export Administration Regulations (the “EAR”) and other U.S. and foreign laws and may not be exported, re-exported or transferred (a) to any country listed in Country Group E:1 in Supplement No. 1 to part 740 of the EAR (currently, Cuba, Iran, North Korea, Sudan & Syria); (b) to any prohibited destination or to any end user who has been prohibited from participating in U.S. export transactions by any federal agency of the U.S. government; or (c) for use in connection with the design, development or production of nuclear, chemical or biological weapons, or rocket systems, space launch vehicles, or sounding rockets, or unmanned air vehicle systems. You may not download CentOS software or technical information if you are located in one of these countries or otherwise subject to these restrictions. You may not provide CentOS software or technical information to individuals or entities located in one of these countries or otherwise subject to these restrictions. You are also responsible for compliance with foreign law requirements applicable to the import, export and use of CentOS software and technical information.
+
+#Trademark Guidelines
+
+[The CentOS trademark usage policy](/legal/trademarks/)
+
+#Disclaimers
+
+ * This is a Community mantained site. Red Hat, Inc is not responsible for its content.
+ * All other trademarks throughout the CentOS website are the property of their respective owners
+
+
+##Links to 3rd party sites
+This website may be linked to other websites which are not under the control of and are not maintained by the CentOS Project. The CentOS Project and Red Hat are not responsible for the content of those sites. We provide these links to you only as a convenience, and the inclusion of any link to such sites does not imply endorsement by the CentOS Project or Red Hat of those sites. We reserve the right to terminate any link or linking program at any time.
+
+
+#Notice and Procedure for Making Claims of Copyright Infringement
+To file a notice of infringement with us, please provide the following information to the Red Hat-designated copyright agent listed below:
+
+ * A description of the copyrighted work or other intellectual property that you claim has been infringed.
+ * A description of the material that you claim is infringing the copyrighted work listed in item #1.
+ * An address, telephone number, and an email address where the alleged infringing party can contact you.
+ * The following statement: "I have a good faith belief that use of the copyrighted materials described above as allegedly infringing is not authorized by the copyright owner, its agent, or the law."
+ * The following statement: "I swear, under penalty of perjury, that the information in the notification is accurate and that I am the copyright owner or am authorized to act on behalf of the owner of an exclusive right that is allegedly infringed."
+ * Your electronic or physical signature.
+ *
+To file a counter notification with us, please provide the following information to the Red Hat-designated copyright agent listed below:
+
+ * A description of the material that Red Hat has removed or to which Red Hat has disabled access.
+ * Your name, address, telephone number, email address, and a statement that you consent to the jurisdiction of the Federal District Court for the judicial district in which your address is located (or Wake County, North Carolina if your address is outside of the United States), and that you will accept service of process from the person who provided notification of infringement or an agent of such person.
+ * The following statement: "I swear, under penalty of perjury, that I have a good faith belief that the material identified above was removed or disabled as a result of a mistake or misidentification of the material to be removed or disabled."
+ * Your electronic or physical signature.
+ 
+Red Hat has registered a designated agent with the Copyright Office pursuant to 17 U.S.C. 512(c). Please send notifications of infringement and counter notifications to the designated agent at:
+
+
+    Assistant General Counsel
+    Red Hat, Inc.
+    100 East Davie Street
+    Raleigh, NC 27601
+    fax: +1 919-754-3704
diff --git a/content/legal/trademarks.md b/content/legal/trademarks.md
new file mode 100644
index 0000000..1b35e6c
--- /dev/null
+++ b/content/legal/trademarks.md
@@ -0,0 +1,109 @@
+---
+title:      "CentOS Trademark Guidelines"
+markdown:   basic
+is_dynamic: true
+---
+* Table of contents will replace this text.
+{:toc}
+
+#Introduction
+
+This document (the "Guidelines") contains guidelines for use of the CentOS word mark (the "Word Mark"), as well as the CentOS logotype, the CentOS graphical symbol, the &#39;Powered by CentOS&#39; logo and all other CentOS logos (the "Logos") (collectively, the "CentOS Marks").
+
+The CentOS Marks are trademarks of Red Hat, Inc. ("Red Hat"). Trademarks provide assurance about the quality of the goods or services with which the trademarks are associated. Confusion can arise if the same or similar names are used on identical or similar offerings.  Red Hat&#39;s protection of the CentOS Marks thus benefits the CentOS Project and the CentOS community.
+
+These Guidelines aim to provide sufficient clarity for you to understand whether your use of the CentOS Marks will be acceptable.
+Nothing in these Guidelines limits your permissions under the open source or other copyright licenses covering packages in any CentOS software distribution.
+
+The CentOS Project is by its nature a noncommercial community project that provides software free of charge, even though the copyright licenses covering the individual component packages that comprise the CentOS software distribution may permit commercial use.
+
+#Role of the CentOS Community
+
+Red Hat welcomes the assistance of the entire CentOS community in reporting non-compliant uses of the CentOS Marks and in encouraging those engaged in non compliant uses to take corrective measures.
+
+#General Principles
+
+Whenever you use the CentOS Marks, you must do so in a way that does not mislead others, either directly or by omission, concerning what they are obtaining and from whom. The law reflects this requirement in two principal ways: it prohibits creation of a "likelihood of confusion" but allows for "nominative use". 
+
+For example, you are not allowed to say you are distributing CentOS software when you are actually distributing some downstream modification of an official CentOS release (“Official” packages, builds and releases are those which have been approved for the CentOS Project&#39;s release by the CentOS Project) . Otherwise, your recipients would be confused if they do not receive the same features and functionality they would have obtained had they received software officially released by the CentOS Project. As another example, you are not allowed to use the Logos on your website in a way that suggests that your website is an official website of the CentOS Project, or that the CentOS Project endorses your website. On the other hand, you may of course say, for example, that you like the CentOS software distribution or that you participate in the CentOS Project.
+
+You may not use or register, in whole or in part, the CentOS Marks as part of your own trademark, service mark, domain name, company name, trade name, product name or service name.
+
+Trademark law does not allow your use of names or trademarks that are confusingly similar to the CentOS Marks. This means, among other things, that you may not use a variation of any of the CentOS Marks or any phonetic equivalent, takeoff, or abbreviation for a similar or related project, product or service.
+
+#Software-related uses
+
+##Acceptable uses
+
+1. You may use the CentOS Marks in connection with your noncommercial redistribution of (1) bit-for-bit identical copies of official CentOS releases, and (2) unmodified copies of official CentOS source packages.
+
+2. You may use the Word Mark, but not the Logos, to truthfully describe the origin of the software that you are providing but not the software itself, where what you are distributing is modified official CentOS source code or is a build compiled from modified official CentOS source code. You may say, for example: "This software is derived from the source code for the CentOS distribution."  However, you may not say that the software is CentOS.
+
+3. You may use the Word Mark to truthfully describe the relationship between your software and the CentOS software. In such a case, you may only use the Word Mark following a verb or preposition that describes the relationship. For example, you may say "MyProject package for the CentOS distribution" but you may not say "MyProject's CentOS package."
+
+4. You may use the 'Powered by CentOS' logo to truthfully state that your application runs on or uses an official CentOS release.
+
+5. You may use the CentOS Marks in themes, personas, or skins for applications to show your support for the CentOS Project, provided that the use is noncommercial and is clearly decorative, as contrasted with a use that is likely to be understood as the branding for a website or application. 
+
+##Unacceptable uses
+
+Notwithstanding anything to the contrary provided in these Guidelines, the following are examples of unacceptable uses:
+
+1. Use of the CentOS Marks in connection with commercial redistribution of CentOS software (Commercial redistribution includes, by way of example but is not limited to, redistribution in connection with any commercial business activities or revenue-generating business activities.) , regardless of whether the CentOS software is unmodified, except as may be permitted above.
+
+2. Use of the CentOS Marks to identify software that combines any portion of the CentOS software with any other software , unless the combined distribution is an official CentOS distribution. For example, you may not distribute a combination of the CentOS software with software released by the FooStack project under the name "CentOS FooStack Distro".
+
+3. Use of the CentOS Marks in connection with any rebuild of CentOS software, unless such rebuild is an official CentOS build, regardless of whether the CentOS software is unmodified.
+
+#Use in relation to non-software goods and services
+
+##Acceptable uses
+
+1. You may use the CentOS Marks on your website to show your support for the CentOS Project, so long as:
+* Your own branding or naming is more prominent than the CentOS Marks;
+* All Logos hyperlink to http://www.centos.org/;
+* The site is not likely to cause users to believe that your website, service, or product is a website, service, or product of the CentOS Project; and
+* The site clearly states that it is not endorsed by the CentOS Project.
+
+2. You may use the Word Mark in the titles of books, articles and presentations, and you may use the Logos in illustrations contained within books, articles and presentation slides, so long as the use is not likely to suggest that the CentOS Project has published, endorses, or agrees with your work.
+
+
+##Unacceptable uses
+Notwithstanding anything to the contrary provided in these Guidelines, the following are examples of unacceptable uses:
+
+1. Use of the CentOS Marks as part of a domain name or sub-domain, except as may be permitted by applicable law.
+2. Use of the CentOS Marks on promotional goods for sale.
+
+#Proper trademark use
+
+##Use of trademarks in text
+
+* Always distinguish trademarks from surrounding text with at least initial capital letters or in all capital letters.
+  * Unacceptable: centos
+  * Acceptable: CentOS
+* Always use trademarks in their exact form with the correct spelling, neither abbreviated, hyphenated, nor combined with any other word or words.
+  * Unacceptable: Cenntos
+  * Acceptable: CentOS
+* Don&#39;t pluralize a trademark.
+  * Unacceptable: I have seventeen CentOSes in my lab.
+  * Acceptable: I have seventeen CentOS boxes in my lab.
+* Don&#39;t use "a" or "the" to refer to an instance of the trademark. When you use a trademark following an article, you should only use the trademark as an adjective modifying a noun.
+  * Unacceptable: I installed a CentOS on my friend&#39;s laptop.
+  * Acceptable: I installed a CentOS release on my friend&#39;s laptop.
+* Don&#39;t use a trademark as a verb.
+  * Unacceptable: We are CentOSing our servers.
+  * Acceptable: We are installing the CentOS distribution on our servers. 
+* Don&#39;t use a trademark as a possessive. 
+  * Unacceptable: CentOS&#39;s distribution is stable.
+  * Acceptable: The CentOS distribution is stable.
+
+##Use of logos
+
+You may not change any logo except to scale it. This means you may not add elements to the logo, change the colors or proportions of the logo, distort the logo, or combine the logo with other logos.
+
+#Contact Information
+
+If you have any questions about these Guidelines or uses of the CentOS Marks not addressed in the Guidelines, or if you encounter any confusing use or misuse of the CentOS Marks, please contact centos-tm@redhat.com.
+
+#License and Attribution
+These Guidelines are based in part on the [Model Trademark Guidelines](http://modeltrademarkguidelines.org/index.php?title=Home:_Model_Trademark_Guidelines). Both these Guidelines and the Model Trademark Guidelines are licensed  under a [Creative Commons Attribution 3.0 Unported license](https://creativecommons.org/licenses/by/3.0/deed.en_US).
diff --git a/content/media.erb b/content/media.erb
new file mode 100644
index 0000000..1784878
--- /dev/null
+++ b/content/media.erb
@@ -0,0 +1,29 @@
+---
+title: Media
+presentation_title: Office Hours - Cloud SIG
+presenter: CentOS
+iframe_url: <iframe width="640" height="390" src="http://www.youtube.com/embed/VKKYY_5SOWw" frameborder="0" allowfullscreen></iframe>
+event: Office Hours
+stream: true
+---
+<% if @item[:stream] %>
+
+  <% if @item[:presentation_title] %>
+    <h1 class="video"> <%= @item[:presentation_title] %> </h1>
+  <% end %>
+  <% if @item[:presenter] %>
+    <h2 class="video"> Presenter: <%= @item[:presenter] %>
+  <% end %>
+  <br />
+  <br />
+  <%= @item[:iframe_url] %>
+
+  <% if @item[:event] %>
+    <h3 class="video">Stream of: <%= @item[:event] %>
+  <% end %>
+<% else %>
+<h1 class="video"> No Live Broadcast</h1>
+<h2 class="video">Videos from Past Events</h2>
+<iframe width="560" height="315" src="http://www.youtube.com/embed/videoseries?list=PLuRtbOXpVDjC0WAkHx0oW4Y6gu8uBWHmf" frameborder="0" ></iframe>
+<% end %>
+
diff --git a/content/robots.txt.erb b/content/robots.txt.erb
new file mode 100755
index 0000000..ff12c3b
--- /dev/null
+++ b/content/robots.txt.erb
@@ -0,0 +1,11 @@
+---
+is_hidden: true
+path:      "/robots.txt"
+---
+Sitemap: http://www.centos.org/sitemap.xml
+
+User-Agent: *
+Crawl-delay: 1.0
+Disallow: /scripts/
+Disallow: /themes/
+
diff --git a/content/sitemap.xml.erb b/content/sitemap.xml.erb
new file mode 100755
index 0000000..78029f3
--- /dev/null
+++ b/content/sitemap.xml.erb
@@ -0,0 +1,5 @@
+---
+is_hidden: false
+path:      "/sitemap.xml"
+---
+<%= xml_sitemap :items => @items.reject{ |i| i[:is_hidden] || i.binary? } %>
diff --git a/content/sponsors.erb b/content/sponsors.erb
new file mode 100644
index 0000000..9604800
--- /dev/null
+++ b/content/sponsors.erb
@@ -0,0 +1,29 @@
+---
+title:      "CentOS Sponsors"
+markdown:   basic
+is_dynamic: true
+is_hidden: false
+---
+
+<div class="row">
+  <div class="jumbotron col-md-12">
+    <h1>Sponsors</h1>
+    <p>If you are interested in becoming a CentOS sponsor, you can contact the us at <a href="mailto:donate@centos.org">donate@centos.org</a>.</p>
+  </div>
+</div>
+
+
+
+<div class="row">
+  <% @site.items.select { |i| i[:sponsor] }.shuffle.each do|i| %>
+    <div class="col-sm-6 col-md-4">
+      <div class="thumbnail">
+        <img class="rounded" src="<%= i[:img] %>"> 
+        <div class="caption">
+          <h3><%= i[:name]  %> </h3>
+          <p> <a href="<%= i[:url]  %>"><%= i[:url]  %></a></p>
+        </div>
+      </div>
+    </div>
+  <% end %>
+</div>
diff --git a/content/sponsors/air-vm.erb b/content/sponsors/air-vm.erb
new file mode 100644
index 0000000..d47d10d
--- /dev/null
+++ b/content/sponsors/air-vm.erb
@@ -0,0 +1,8 @@
+---
+name: air-vm
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/airvm-small.gif
+url: http://www.airvm.com/CentOS
+---
diff --git a/content/sponsors/baseip.erb b/content/sponsors/baseip.erb
new file mode 100644
index 0000000..550b655
--- /dev/null
+++ b/content/sponsors/baseip.erb
@@ -0,0 +1,9 @@
+---
+name: baseip
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/baseip_240x60.jpg
+url: http://www.baseip.com/
+---
+
diff --git a/content/sponsors/brinkster.erb b/content/sponsors/brinkster.erb
new file mode 100644
index 0000000..66bc098
--- /dev/null
+++ b/content/sponsors/brinkster.erb
@@ -0,0 +1,9 @@
+---
+name: brinkster
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/240x60_Brinkster_1.gif
+url: http://www.brinkster.com/managed-hosting-services/managed-dedicated-server-hosting.aspx
+---
+
diff --git a/content/sponsors/castlegem.erb b/content/sponsors/castlegem.erb
new file mode 100644
index 0000000..66ffa04
--- /dev/null
+++ b/content/sponsors/castlegem.erb
@@ -0,0 +1,9 @@
+---
+name: castlegem
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/Banner_Castlegem_240x60.gif
+url: http://www.castlegem.co.uk/
+---
+
diff --git a/content/sponsors/ch-center.erb b/content/sponsors/ch-center.erb
new file mode 100644
index 0000000..0cd9b34
--- /dev/null
+++ b/content/sponsors/ch-center.erb
@@ -0,0 +1,9 @@
+---
+name: ch-center
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/ch-center-small.png
+url: http://www.ch-center.com/
+---
+
diff --git a/content/sponsors/cloudbase.erb b/content/sponsors/cloudbase.erb
new file mode 100644
index 0000000..def1d63
--- /dev/null
+++ b/content/sponsors/cloudbase.erb
@@ -0,0 +1,9 @@
+---
+name: cloudbase
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/CentOS-CBSL-02.png
+url: http://www.cloudbase.it/
+---
+
diff --git a/content/sponsors/codero.erb b/content/sponsors/codero.erb
new file mode 100644
index 0000000..c44c8c7
--- /dev/null
+++ b/content/sponsors/codero.erb
@@ -0,0 +1,9 @@
+---
+name: codero
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/codero_small.gif
+url: http://www.codero.com
+---
+
diff --git a/content/sponsors/coloamerica.erb b/content/sponsors/coloamerica.erb
new file mode 100644
index 0000000..16811f3
--- /dev/null
+++ b/content/sponsors/coloamerica.erb
@@ -0,0 +1,8 @@
+---
+name: coloamerica
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/coloamerica_small.gif
+url: http://www.colocationamerica.com/dedicated_servers
+---
diff --git a/content/sponsors/dbd.erb b/content/sponsors/dbd.erb
new file mode 100644
index 0000000..b0e2aab
--- /dev/null
+++ b/content/sponsors/dbd.erb
@@ -0,0 +1,8 @@
+---
+name: Database By Design
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/dbd_240_60.jpg
+url: http://www.databasebydesignllc.com
+---
diff --git a/content/sponsors/easyspace.erb b/content/sponsors/easyspace.erb
new file mode 100644
index 0000000..6152cb5
--- /dev/null
+++ b/content/sponsors/easyspace.erb
@@ -0,0 +1,8 @@
+---
+name: easyspace
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/iomart-240x60.gif
+url: http://www.easyspace.com/dedserver_main.php
+---
diff --git a/content/sponsors/galaxyvisions.erb b/content/sponsors/galaxyvisions.erb
new file mode 100644
index 0000000..43f2a2b
--- /dev/null
+++ b/content/sponsors/galaxyvisions.erb
@@ -0,0 +1,8 @@
+---
+name: galaxyvisions
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/galaxy_small.gif
+url: http://www.galaxyvisions.com/monthly_server_specials.php?adn=3491
+---
diff --git a/content/sponsors/godaddy.erb b/content/sponsors/godaddy.erb
new file mode 100644
index 0000000..c12dc15
--- /dev/null
+++ b/content/sponsors/godaddy.erb
@@ -0,0 +1,8 @@
+---
+name: GoDaddy
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/godaddy.jpg
+url: http://www.godaddy.com
+---
diff --git a/content/sponsors/hostasaurus.erb b/content/sponsors/hostasaurus.erb
new file mode 100644
index 0000000..fe9e23b
--- /dev/null
+++ b/content/sponsors/hostasaurus.erb
@@ -0,0 +1,8 @@
+---
+name: hostasaurus
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/hostasaurus240x60banner.gif
+url: http://www.hostasaurus.com/
+---
diff --git a/content/sponsors/hostdime.erb b/content/sponsors/hostdime.erb
new file mode 100644
index 0000000..a421012
--- /dev/null
+++ b/content/sponsors/hostdime.erb
@@ -0,0 +1,8 @@
+---
+name: hostdime
+sponsor: true
+country: USA
+is_hidden: true
+img: /images/sponsors/HostDime_Logo_Slogan_300_71.png
+url: http://www.hostdime.com
+---
diff --git a/content/sponsors/hostdimebr.erb b/content/sponsors/hostdimebr.erb
new file mode 100644
index 0000000..0e33d6e
--- /dev/null
+++ b/content/sponsors/hostdimebr.erb
@@ -0,0 +1,8 @@
+---
+name: hostdime-br
+sponsor: true
+country: brazil
+is_hidden: true
+img: /images/sponsors/hostdime_br_small.jpg
+url: http://www.hostdime.com.br
+---
diff --git a/content/sponsors/hostkey.erb b/content/sponsors/hostkey.erb
new file mode 100644
index 0000000..42c21eb
--- /dev/null
+++ b/content/sponsors/hostkey.erb
@@ -0,0 +1,9 @@
+---
+name: hostkey
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/hostkey_small.gif
+url: http://www.hostkey.com/
+---
+
diff --git a/content/sponsors/jtlnet.erb b/content/sponsors/jtlnet.erb
new file mode 100644
index 0000000..710779d
--- /dev/null
+++ b/content/sponsors/jtlnet.erb
@@ -0,0 +1,9 @@
+---
+name: jtlnet
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/jtl_small.gif
+url: http://www.jtlnet.com/
+---
+
diff --git a/content/sponsors/kartenzia.erb b/content/sponsors/kartenzia.erb
new file mode 100644
index 0000000..c663ecc
--- /dev/null
+++ b/content/sponsors/kartenzia.erb
@@ -0,0 +1,9 @@
+---
+name: kartenzia
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/kartenzia_small.jpg
+url: http://www.kartenzia.de/einladungskarten/hochzeit/
+---
+
diff --git a/content/sponsors/layered_tech.erb b/content/sponsors/layered_tech.erb
new file mode 100644
index 0000000..2dd7485
--- /dev/null
+++ b/content/sponsors/layered_tech.erb
@@ -0,0 +1,8 @@
+---
+name: LayeredTech
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/lt_banner_240.gif
+url: http://www.layeredtech.com
+---
diff --git a/content/sponsors/microserv.erb b/content/sponsors/microserv.erb
new file mode 100644
index 0000000..085abef
--- /dev/null
+++ b/content/sponsors/microserv.erb
@@ -0,0 +1,9 @@
+---
+name: microserv
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/microserv_small.jpg
+url: http://www.ida.net/
+---
+
diff --git a/content/sponsors/multacom.erb b/content/sponsors/multacom.erb
new file mode 100644
index 0000000..54ada92
--- /dev/null
+++ b/content/sponsors/multacom.erb
@@ -0,0 +1,8 @@
+---
+name: multacom
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/multacom-240x60.gif
+url: http://www.multacom.com/
+---
diff --git a/content/sponsors/ndchost.erb b/content/sponsors/ndchost.erb
new file mode 100644
index 0000000..eb4d272
--- /dev/null
+++ b/content/sponsors/ndchost.erb
@@ -0,0 +1,8 @@
+---
+name: NDCHost
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/ndc_host_240.gif
+url: http://www.ndchost.com/
+---
diff --git a/content/sponsors/netelligent.erb b/content/sponsors/netelligent.erb
new file mode 100644
index 0000000..e68a579
--- /dev/null
+++ b/content/sponsors/netelligent.erb
@@ -0,0 +1,8 @@
+---
+name: netelligent
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/netelligent_small.png
+url: http://www.netelligent.ca/centos/
+---
diff --git a/content/sponsors/psw.erb b/content/sponsors/psw.erb
new file mode 100644
index 0000000..d2fb74f
--- /dev/null
+++ b/content/sponsors/psw.erb
@@ -0,0 +1,9 @@
+--- 
+name: psw group
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/PSW_Banner_240x60.jpg
+url: http://www.psw.net/
+---
+
diff --git a/content/sponsors/psychz.erb b/content/sponsors/psychz.erb
new file mode 100644
index 0000000..4c058aa
--- /dev/null
+++ b/content/sponsors/psychz.erb
@@ -0,0 +1,8 @@
+--- 
+name: Psychz Networks
+sponsor: true
+is_hidden: true
+img: /images/sponsors/psychz_net.gif
+url: http://www.psychz.net/
+---
+
diff --git a/content/sponsors/pwebtech.erb b/content/sponsors/pwebtech.erb
new file mode 100644
index 0000000..bb057d6
--- /dev/null
+++ b/content/sponsors/pwebtech.erb
@@ -0,0 +1,8 @@
+---
+name: Pegasus Web Technologies
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/pwebtech_banner_240.gif
+url: http://www.pwebtech.com/
+---
diff --git a/content/sponsors/securedservers.erb b/content/sponsors/securedservers.erb
new file mode 100644
index 0000000..9733f0e
--- /dev/null
+++ b/content/sponsors/securedservers.erb
@@ -0,0 +1,8 @@
+---
+name: PhoenixNAP Secured Servers
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/cavecreek_banner_240.gif
+url: http://securedservers.com
+---
diff --git a/content/sponsors/serverpronto.erb b/content/sponsors/serverpronto.erb
new file mode 100644
index 0000000..0c52e9d
--- /dev/null
+++ b/content/sponsors/serverpronto.erb
@@ -0,0 +1,9 @@
+---
+name: serverpronto
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/serverpronto_small.gif
+url: http://www.serverpronto.com/
+---
+
diff --git a/content/sponsors/servint.erb b/content/sponsors/servint.erb
new file mode 100644
index 0000000..ddcf193
--- /dev/null
+++ b/content/sponsors/servint.erb
@@ -0,0 +1,9 @@
+---
+name: servint
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/srvint_small.gif
+url: http://www.servint.com
+---
+
diff --git a/content/sponsors/shinjiru.erb b/content/sponsors/shinjiru.erb
new file mode 100644
index 0000000..fd25d67
--- /dev/null
+++ b/content/sponsors/shinjiru.erb
@@ -0,0 +1,8 @@
+---
+name: shinjiru
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/shinjirubanner260x60.gif
+url: http://shinjiru.com/
+---
diff --git a/content/sponsors/steadfast.erb b/content/sponsors/steadfast.erb
new file mode 100644
index 0000000..44d9e68
--- /dev/null
+++ b/content/sponsors/steadfast.erb
@@ -0,0 +1,9 @@
+---
+name: steadfast
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/steadfast_234x60.gif
+url: http://steadfast.net/
+---
+
diff --git a/content/sponsors/theplanet.erb b/content/sponsors/theplanet.erb
new file mode 100644
index 0000000..33822ca
--- /dev/null
+++ b/content/sponsors/theplanet.erb
@@ -0,0 +1,8 @@
+---
+name: theplanet
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/theplanet.jpg
+url: http://www.theplanet.com/dedicated-servers/
+---
diff --git a/content/sponsors/vhostvn.erb b/content/sponsors/vhostvn.erb
new file mode 100644
index 0000000..2b4b491
--- /dev/null
+++ b/content/sponsors/vhostvn.erb
@@ -0,0 +1,8 @@
+--- 
+name: vHost
+sponsor: true
+is_hidden: true
+img: /images/sponsors/vhostvn.gif
+url: http://vhost.vn/
+---
+
diff --git a/content/sponsors/webnx.erb b/content/sponsors/webnx.erb
new file mode 100644
index 0000000..6ae61b4
--- /dev/null
+++ b/content/sponsors/webnx.erb
@@ -0,0 +1,9 @@
+---
+name: webnx
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/webnx1.png
+url: http://www.webnx.com
+---
+
diff --git a/content/sponsors/webstuff.erb b/content/sponsors/webstuff.erb
new file mode 100644
index 0000000..e9ec9c2
--- /dev/null
+++ b/content/sponsors/webstuff.erb
@@ -0,0 +1,8 @@
+---
+name: webstuff israel
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/WEBSTUFF_240x60.gif
+url: http://www.WEBSTUFF.co.il
+---
diff --git a/content/sponsors/wowrack.erb b/content/sponsors/wowrack.erb
new file mode 100644
index 0000000..4b96ef4
--- /dev/null
+++ b/content/sponsors/wowrack.erb
@@ -0,0 +1,8 @@
+---
+name: wowrack
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/wow.234x60.gif
+url: http://www.wowrack.com/
+---
diff --git a/content/sponsors/yourname.erb b/content/sponsors/yourname.erb
new file mode 100644
index 0000000..2223783
--- /dev/null
+++ b/content/sponsors/yourname.erb
@@ -0,0 +1,9 @@
+---
+name: yourname
+sponsor: true
+country: usa
+is_hidden: true
+img: /images/sponsors/yourname_small.gif
+url: http://www.yourname.nl/
+---
+
diff --git a/content/variants.md b/content/variants.md
new file mode 100644
index 0000000..b299517
--- /dev/null
+++ b/content/variants.md
@@ -0,0 +1,49 @@
+---
+title:      "CentOS variants"
+markdown:   basic
+is_dynamic: true
+---
+* Table of contents will replace this text.
+{:toc}
+
+
+#CentOS variants ( proposal )
+
+A CentOS variant is a special edition of CentOS Linux that starts with the core distribution, then replaces or supplements a specific subset of packages. This may include replacing everything down to the kernel, networking, and other subsystems.
+
+The purpose of a variant edition is to allow another open source project to more effectively use CentOS as a base platform for running on and inside of.
+
+Some open source projects need different software components to run properly, such as updated development languages or kernel functionality. By being able to get these components directly in CentOS, a variant maintainer solves many of the steps for users.
+
+The end goal is to make it easier for users to run different open source software directly on and in CentOS itself.
+
+[Special interest groups](http://wiki.centos.org/SpecialInterestGroup) (SIGs) are teams of people interested in one or more related technologies, and enabling that technology in CentOS.
+
+These SIGs want to get this technology in the hands of the users in the easiest way possible. SIG members usually include people who work directly on the related technology and open source projects.
+
+(Some SIGs don't focus on producing a variant but instead work on Infrastructure, Design, Documentation, and so forth.)
+
+#Using variants
+
+It's as easy as using CentOS core. There are two main ways:
+
+* Download a pre-built image [here](/download).
+* Run the minimal installer from [here](/download) and choose your variant during installation.
+
+You may want to look for additional tips, notes, and documentation in the [SIG that produces the variant](http://wiki.centos.org/SpecialInterestGroup).
+
+# Note:
+
+The idea of CentOS Variants is very much a proposal at this stage, something we hope to have confirmed as a process and ensure we have resources allocated to make this happen by the early summer of 2014. However, if you are interested in joining the process right away, and dont mind being a part of the evolving process - feel free to drop a proposal for your variant onto the centos-devel list ( http://lists.centos.org/mailman/listinfo/centos-devel ) and we will try to include you in the process.
+
+Some potential early SIG's are listed on the [Special Interest Groups ](http://wiki.centos.org/SpecialInterestGroup)
+
+#Making variants
+
+An official variant edition of CentOS can only be created with code from git.centos.org, must be converted entirely from source to binary within the CentOS buildsystems and delivered using the official CentOS content delivery network.
+
+The gateway to code getting in to git.centos.org is via the SIGs. For example, the SIG that maintains a variant or the core SIG that builds the main CentOS distribution.
+
+You may want to join an existing SIG or start a new one if you have an idea for a completely new variant. [Read more about starting a SIG](http://wiki.centos.org/SpecialInterestGroup).
+
+Of course, you are always permitted to remix and redistribute the CentOS code, but you need to read the [trademark guidelines](/legal/trademarks/) to know if you can call it "CentOS".
diff --git a/layouts/default-haml.haml b/layouts/default-haml.haml
new file mode 100644
index 0000000..93213ff
--- /dev/null
+++ b/layouts/default-haml.haml
@@ -0,0 +1,38 @@
+!!!5
+%html
+  %head
+    %link( href="//fonts.googleapis.com/css?family=Oxygen+Mono|Source+Sans+Pro:400,300,300italic,400italic,600,600italic|Exo:400,100,100italic,200,200italic,300,300italic,400italic,500italic,500,600,600italic" rel="stylesheet" type="text/css")
+    %meta( charset="utf-8" )
+    %meta( name = "viewport" content = "width=device-width, initial-scale=1.0" )
+    %meta( name = "description" content = "" )
+    %meta( name = "author" content = "" )
+    %link( rel="shortcut icon" href="/images/favicon.ico" )
+    %title= @item[:title]
+    %script{ :src=>'/assets/js/jquery.min.js' } 
+    %script{ :src=>'/assets/js/jquery.cycle2.min.js' }
+    %script{ :src=>'/assets/js/jquery.cycle2.center.min.js' }
+    %script{ :src=>'/assets/js/jquery.backstretch.min.js' } 
+    %script{ :src=>'/assets/js/sass-bootstrap.js' }
+    %script{ :src=>'/assets/js/jquery.tidy.table.min.js' }
+    %script{ :src=>'/assets/js/FeedEk.js' }
+    %script{ :src=>'/assets/js/google.js' }
+    %link(rel='stylesheet' type='text/css' href='/assets/style-v2.css' )
+    %link(rel='stylesheet' type='text/css' href='/assets/stylesheet.css' )
+    %link(rel='stylesheet' type='text/css' href='/assets/jquery.tidy.table.css' )
+    %link{:href => "/images/favicon.ico", :rel => "shortcut icon"}
+    /[if lt IE 9]
+      %script{ :type=>'text/javascript', :src=>'/assets/js/html5.js' }
+  %body
+    %script
+      $.backstretch("/images/background.jpeg");
+    #wrap
+      #header
+        .container.text-center
+      = render 'navbar'
+      .container#main
+        = yield
+      #footer
+        .container.text-center
+          %p.text-muted.credit &copy; #{ DateTime.now.year } The CentOS Project | <a href="/legal/">Legal</a>
+      
+
diff --git a/layouts/navbar.haml b/layouts/navbar.haml
new file mode 100644
index 0000000..44a645d
--- /dev/null
+++ b/layouts/navbar.haml
@@ -0,0 +1,61 @@
+.navbar.navbar-inverse.navbar-static-top
+  .container
+    .navbar-header
+      %button.navbar-toggle( type="button" data-toggle="collapse" data-target=".navbar-collapse" )
+        %span.icon-bar
+        %span.icon-bar
+        %span.icon-bar
+      %a.navbar-brand( href="/" title="Home" )
+        %img( src="/images/logo_small.png" )
+    .navbar-collapse.collapse
+      %ul.nav.navbar-nav
+        %li
+          %a( href="/download/" ) Get CentOS 
+        %li.dropdown 
+          %a.dropdown-toggle( href="#learn" title="About CentOS" data-toggle="dropdown" ) 
+            About
+            %b.caret
+          %ul.dropdown-menu
+            %li
+              %a( href="/about/" ) About CentOS
+            %li
+              %a( href="http://wiki.centos.org/FAQ" ) FAQ
+            %li
+              %a( href="http://wiki.centos.org/SpecialInterestGroup" ) About SIGs
+            %li
+              %a( href="/variants/" ) CentOS Variants
+            %li
+              %a( href="/about/governance/" ) Governance
+
+        %li.dropdown 
+          %a.dropdown-toggle( href="#learn" title="The CentOS Community" data-toggle="dropdown" ) 
+            Community
+            %b.caret
+          %ul.dropdown-menu
+            %li
+              %a( href="http://wiki.centos.org/Contribute" ) Contribute
+            %li
+              %a( href="http://www.centos.org/forums/" ) Forums
+            %li
+              %a( href="http://wiki.centos.org/GettingHelp/ListInfo" ) Mailing Lists
+            %li
+              %a( href="http://wiki.centos.org/irc" ) IRC
+            %li
+              %a( href="http://planet.centos.org" ) Planet
+            %li
+              %a( href="http://bugs.centos.org" ) Submit a Bug
+            -#%li
+              %a( href="/community/stories/" ) Stories
+
+        %li.dropdown 
+          %a.dropdown-toggle( href="#learn" title="CentOS Documentation" data-toggle="dropdown" ) 
+            Documentation
+            %b.caret
+          %ul.dropdown-menu
+            %li
+              %a( href="http://wiki.centos.org" ) Wiki
+            %li
+              %a( href="/docs/" ) Manuals
+
+        %li
+          %a( href="http://wiki.centos.org/Documentation?action=show&redirect=GettingHelp" ) Help
diff --git a/lib/default.rb b/lib/default.rb
new file mode 100644
index 0000000..a4df0cc
--- /dev/null
+++ b/lib/default.rb
@@ -0,0 +1,2 @@
+# All files in the 'lib' directory will be loaded
+# before nanoc starts compiling.
diff --git a/lib/filters/add_ids_to_headers.rb b/lib/filters/add_ids_to_headers.rb
new file mode 100755
index 0000000..9dca071
--- /dev/null
+++ b/lib/filters/add_ids_to_headers.rb
@@ -0,0 +1,20 @@
+require 'nokogiri'
+
+module Nanoc3::Filters
+
+  # TODO document
+  class AddIDsToHeaders < Nanoc3::Filter
+
+    identifiers :add_ids_to_headers
+
+    def run(content, arguments={})
+      doc = Nokogiri::HTML.parse(content)
+      doc.css("h1, h2, h3, h4, h5, h6").each do |header|
+        header['id'] = header.content.downcase.gsub(/\W+/, '-').gsub(/^-|-$/, '')
+      end
+      doc.to_s
+    end
+
+  end
+
+end
diff --git a/lib/filters/add_toc.rb b/lib/filters/add_toc.rb
new file mode 100755
index 0000000..9495246
--- /dev/null
+++ b/lib/filters/add_toc.rb
@@ -0,0 +1,28 @@
+class AddTOCFilter < Nanoc::Filter
+
+  identifier :add_toc
+
+  def run(content, params={})
+    content.gsub('{{TOC}}') do
+      # Find all top-level sections
+      doc = Nokogiri::HTML(content)
+      headers = doc.xpath('//h2').map do |header|
+        { :title => header.inner_html, :id => header['id'] }
+      end
+
+      if headers.empty?
+        next ''
+      end
+
+      # Build table of contents
+      res = '<ol class="toc">'
+      headers.each do |header|
+        res << %[<li><a href="##{header[:id]}">#{header[:title]}</a></li>]
+      end
+      res << '</ol>'
+
+      res
+    end
+  end
+
+end
diff --git a/lib/filters/remove_spacing_around_pre.rb b/lib/filters/remove_spacing_around_pre.rb
new file mode 100755
index 0000000..3dec922
--- /dev/null
+++ b/lib/filters/remove_spacing_around_pre.rb
@@ -0,0 +1,13 @@
+module Nanoc3::Filters
+
+  class RemoveSpacingRoundPre < Nanoc3::Filter
+
+    identifiers :remove_spacing_around_pre
+
+    def run(content, arguments={})
+      content.gsub(/<pre( title="[^"]+")?><code( class="language-[a-z]+")?>\n/) { |m| m[0..-2] }
+    end
+
+  end
+
+end
diff --git a/lib/helpers.rb b/lib/helpers.rb
new file mode 100644
index 0000000..d7c73aa
--- /dev/null
+++ b/lib/helpers.rb
@@ -0,0 +1,5 @@
+# this is for partials (use <%= render "head", :title => "Foo" %> for example)
+include Nanoc::Helpers::Rendering
+include Nanoc3::Helpers::Filtering
+include Nanoc3::Helpers::Blogging
+include Nanoc3::Helpers::Capturing
diff --git a/lib/sitemap.rb b/lib/sitemap.rb
new file mode 100644
index 0000000..7a5397f
--- /dev/null
+++ b/lib/sitemap.rb
@@ -0,0 +1 @@
+include Nanoc3::Helpers::XMLSitemap
diff --git a/nanoc.yaml b/nanoc.yaml
new file mode 100644
index 0000000..43adc34
--- /dev/null
+++ b/nanoc.yaml
@@ -0,0 +1,96 @@
+# A list of file extensions that nanoc will consider to be textual rather than
+# binary. If an item with an extension not in this list is found,  the file
+# will be considered as binary.
+text_extensions: [ 'coffee', 'css', 'adoc', 'erb', 'haml', 'handlebars', 'hb', 'htm', 'html', 'js', 'less', 'markdown', 'md', 'ms', 'mustache', 'php', 'rb', 'sass', 'scss', 'txt', 'xhtml', 'xml' ]
+
+# The path to the directory where all generated files will be written to. This
+# can be an absolute path starting with a slash, but it can also be path
+# relative to the site directory.
+output_dir: output
+
+# A list of index filenames, i.e. names of files that will be served by a web
+# server when a directory is requested. Usually, index files are named
+# “index.html”, but depending on the web server, this may be something else,
+# such as “default.htm”. This list is used by nanoc to generate pretty URLs.
+index_filenames: [ 'index.html' ]
+
+# Whether or not to generate a diff of the compiled content when compiling a
+# site. The diff will contain the differences between the compiled content
+# before and after the last site compilation.
+enable_output_diff: true
+
+prune:
+  # Whether to automatically remove files not managed by nanoc from the output
+  # directory. For safety reasons, this is turned off by default.
+  auto_prune: true
+
+  # Which files and directories you want to exclude from pruning. If you version
+  # your output directory, you should probably exclude VCS directories such as
+  # .git, .svn etc.
+  exclude: [ '.git', '.hg', '.svn', 'CVS' ]
+
+# The data sources where nanoc loads its data from. This is an array of
+# hashes; each array element represents a single data source. By default,
+# there is only a single data source that reads data from the “content/” and
+# “layout/” directories in the site directory.
+data_sources:
+  -
+    # The type is the identifier of the data source. By default, this will be
+    # `filesystem_unified`.
+    type: filesystem_unified
+
+    # The path where items should be mounted (comparable to mount points in
+    # Unix-like systems). This is “/” by default, meaning that items will have
+    # “/” prefixed to their identifiers. If the items root were “/en/”
+    # instead, an item at content/about.html would have an identifier of
+    # “/en/about/” instead of just “/about/”.
+    items_root: /
+
+    # The path where layouts should be mounted. The layouts root behaves the
+    # same as the items root, but applies to layouts rather than items.
+    layouts_root: /
+  -
+    type:         static
+    items_root:   /static/
+
+    # Whether to allow periods in identifiers. When turned off, everything
+    # past the first period is considered to be the extension, and when
+    # turned on, only the characters past the last period are considered to
+    # be the extension. For example,  a file named “content/about.html.erb”
+    # will have the identifier “/about/” when turned off, but when turned on
+    # it will become “/about.html/” instead.
+    allow_periods_in_identifiers: false
+base_url: http://www.centos.org
+
+# Configuration for the “watch” command, which watches a site for changes and
+# recompiles if necessary.
+watcher:
+  # A list of directories to watch for changes. When editing this, make sure
+  # that the “output/” and “tmp/” directories are _not_ included in this list,
+  # because recompiling the site will cause these directories to change, which
+  # will cause the site to be recompiled, which will cause these directories
+  # to change, which will cause the site to be recompiled again, and so on.
+  dirs_to_watch: [ 'content', 'layouts', 'lib' ]
+
+  # A list of single files to watch for changes. As mentioned above, don’t put
+  # any files from the “output/” or “tmp/” directories in here.
+  files_to_watch: [ 'nanoc.yaml', 'Rules' ]
+
+  # When to send notifications (using Growl or notify-send).
+  notify_on_compilation_success: true
+  notify_on_compilation_failure: true
+
+#Deployment
+deploy:
+  staging:
+    kind: rsync
+    dst: "root@10.10.171.50:/var/www/html"
+    options: [ '-aP', '--delete-after' ]
+  prod1:
+    kind: rsync
+    dst: "webcontent@newweb.centos.org:/var/www/html/websitev2"
+    options: [ '-aP', '--delete-after', '--exclude="*.csv"', '--exclude="*.rss"' ]
+  prod2:
+    kind: rsync
+    dst: "webcontent@newweb2:/var/www/html/websitev2"
+    options: [ '-aP', '--delete-after', '--exclude="*.csv"', '--exclude="*.rss"' ]
diff --git a/static/assets/csvtable-look.css b/static/assets/csvtable-look.css
new file mode 100644
index 0000000..588850f
--- /dev/null
+++ b/static/assets/csvtable-look.css
@@ -0,0 +1,34 @@
+/* this is for the mirror list table */
+
+#CSVTable td, #CSVTable th {
+  padding: 0.5em;
+}
+
+#CSVTable th.header:first-child {
+  border-radius: 7px 0 0 0;
+}
+#CSVTable th.header:last-child {
+  border-radius: 0 7px 0 0;
+}
+
+#CSVTable th.header {
+  background: rgba(0,0,0,0.6);
+  color: #aaaaaa;
+}
+#CSVTable tr.even td {
+  background-color: rgba(0,0,0, 0.15);
+}
+
+#CSVTable th.header.headerSortUp, #CSVTable th.header.headerSortDown {
+  color: #ffffff;
+}
+
+/* this inline utf-8 might be a bit weird, but &#9662; notation doesnt work */
+th.headerSortUp:after {
+    content: " ▴";
+}
+th.headerSortDown:after {
+    content: " ▾";
+}
+
+
diff --git a/static/assets/fonts/bootstrap/glyphicons-halflings-regular.eot b/static/assets/fonts/bootstrap/glyphicons-halflings-regular.eot
new file mode 100644
index 0000000..87eaa43
Binary files /dev/null and b/static/assets/fonts/bootstrap/glyphicons-halflings-regular.eot differ
diff --git a/static/assets/fonts/bootstrap/glyphicons-halflings-regular.svg b/static/assets/fonts/bootstrap/glyphicons-halflings-regular.svg
new file mode 100644
index 0000000..5fee068
--- /dev/null
+++ b/static/assets/fonts/bootstrap/glyphicons-halflings-regular.svg
@@ -0,0 +1,228 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
+<font-face units-per-em="1200" ascent="960" descent="-240" />
+<missing-glyph horiz-adv-x="500" />
+<glyph />
+<glyph />
+<glyph unicode=" " />
+<glyph unicode="*" d="M1100 500h-259l183 -183l-141 -141l-183 183v-259h-200v259l-183 -183l-141 141l183 183h-259v200h259l-183 183l141 141l183 -183v259h200v-259l183 183l141 -141l-183 -183h259v-200z" />
+<glyph unicode="+" d="M1100 400h-400v-400h-300v400h-400v300h400v400h300v-400h400v-300z" />
+<glyph unicode="&#xa0;" />
+<glyph unicode="&#x2000;" horiz-adv-x="652" />
+<glyph unicode="&#x2001;" horiz-adv-x="1304" />
+<glyph unicode="&#x2002;" horiz-adv-x="652" />
+<glyph unicode="&#x2003;" horiz-adv-x="1304" />
+<glyph unicode="&#x2004;" horiz-adv-x="434" />
+<glyph unicode="&#x2005;" horiz-adv-x="326" />
+<glyph unicode="&#x2006;" horiz-adv-x="217" />
+<glyph unicode="&#x2007;" horiz-adv-x="217" />
+<glyph unicode="&#x2008;" horiz-adv-x="163" />
+<glyph unicode="&#x2009;" horiz-adv-x="260" />
+<glyph unicode="&#x200a;" horiz-adv-x="72" />
+<glyph unicode="&#x202f;" horiz-adv-x="260" />
+<glyph unicode="&#x205f;" horiz-adv-x="326" />
+<glyph unicode="&#x20ac;" d="M800 500h-300q9 -74 33 -132t52.5 -91t62 -54.5t59 -29t46.5 -7.5q29 0 66 13t75 37t63.5 67.5t25.5 96.5h174q-31 -172 -128 -278q-107 -117 -274 -117q-205 0 -324 158q-36 46 -69 131.5t-45 205.5h-217l100 100h113q0 47 5 100h-218l100 100h135q37 167 112 257 q117 141 297 141q242 0 354 -189q60 -103 66 -209h-181q0 55 -25.5 99t-63.5 68t-75 36.5t-67 12.5q-24 0 -52.5 -10t-62.5 -32t-65.5 -67t-50.5 -107h379l-100 -100h-300q-6 -46 -6 -100h406z" />
+<glyph unicode="&#x2212;" d="M1100 700h-900v-300h900v300z" />
+<glyph unicode="&#x2601;" d="M178 300h750q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5q0 -80 56.5 -137t135.5 -57z" />
+<glyph unicode="&#x2709;" d="M1200 1100h-1200l600 -603zM300 600l-300 -300v600zM1200 900v-600l-300 300zM800 500l400 -400h-1200l400 400l200 -200z" />
+<glyph unicode="&#x270f;" d="M1101 889l99 92q13 13 13 32.5t-13 33.5l-153 153q-15 13 -33 13t-33 -13l-94 -97zM401 189l614 614l-214 214l-614 -614zM-13 -13l333 112l-223 223z" />
+<glyph unicode="&#xe000;" horiz-adv-x="500" d="M0 0z" />
+<glyph unicode="&#xe001;" d="M700 100h300v-100h-800v100h300v550l-500 550h1200l-500 -550v-550z" />
+<glyph unicode="&#xe002;" d="M1000 934v-521q-64 16 -138 -7q-79 -26 -122.5 -83t-25.5 -111q17 -55 85.5 -75.5t147.5 4.5q70 23 111.5 63.5t41.5 95.5v881q0 10 -7 15.5t-17 2.5l-752 -193q-10 -3 -17 -12.5t-7 -19.5v-689q-64 17 -138 -7q-79 -25 -122.5 -82t-25.5 -112t86 -75.5t147 5.5 q65 21 109 69t44 90v606z" />
+<glyph unicode="&#xe003;" d="M913 432l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342t142 342t342 142t342 -142t142 -342q0 -142 -78 -261zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233z" />
+<glyph unicode="&#xe005;" d="M649 949q48 69 109.5 105t121.5 38t118.5 -20.5t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-149.5 152.5t-126.5 127.5t-94 124.5t-33.5 117.5q0 64 28 123t73 100.5t104.5 64t119 20.5 t120 -38.5t104.5 -104.5z" />
+<glyph unicode="&#xe006;" d="M791 522l145 -449l-384 275l-382 -275l146 447l-388 280h479l146 400h2l146 -400h472zM168 71l2 1z" />
+<glyph unicode="&#xe007;" d="M791 522l145 -449l-384 275l-382 -275l146 447l-388 280h479l146 400h2l146 -400h472zM747 331l-74 229l193 140h-235l-77 211l-78 -211h-239l196 -142l-73 -226l192 140zM168 71l2 1z" />
+<glyph unicode="&#xe008;" d="M1200 143v-143h-1200v143l400 257v100q-37 0 -68.5 74.5t-31.5 125.5v200q0 124 88 212t212 88t212 -88t88 -212v-200q0 -51 -31.5 -125.5t-68.5 -74.5v-100z" />
+<glyph unicode="&#xe009;" d="M1200 1100v-1100h-1200v1100h1200zM200 1000h-100v-100h100v100zM900 1000h-600v-400h600v400zM1100 1000h-100v-100h100v100zM200 800h-100v-100h100v100zM1100 800h-100v-100h100v100zM200 600h-100v-100h100v100zM1100 600h-100v-100h100v100zM900 500h-600v-400h600 v400zM200 400h-100v-100h100v100zM1100 400h-100v-100h100v100zM200 200h-100v-100h100v100zM1100 200h-100v-100h100v100z" />
+<glyph unicode="&#xe010;" d="M500 1050v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5zM1100 1050v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h400 q21 0 35.5 -14.5t14.5 -35.5zM500 450v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5zM1100 450v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe011;" d="M300 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM700 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200 q21 0 35.5 -14.5t14.5 -35.5zM1100 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM300 650v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM700 650v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM1100 650v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM300 250v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM700 250v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM1100 250v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5 t14.5 -35.5z" />
+<glyph unicode="&#xe012;" d="M300 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM1200 1050v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h700 q21 0 35.5 -14.5t14.5 -35.5zM300 450v200q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-200q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5zM1200 650v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5zM300 250v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5zM1200 250v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe013;" d="M448 34l818 820l-212 212l-607 -607l-206 207l-212 -212z" />
+<glyph unicode="&#xe014;" d="M882 106l-282 282l-282 -282l-212 212l282 282l-282 282l212 212l282 -282l282 282l212 -212l-282 -282l282 -282z" />
+<glyph unicode="&#xe015;" d="M913 432l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342t142 342t342 142t342 -142t142 -342q0 -142 -78 -261zM507 363q137 0 233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5t-234 -97t-97 -233 t97 -233t234 -97zM600 800h100v-200h-100v-100h-200v100h-100v200h100v100h200v-100z" />
+<glyph unicode="&#xe016;" d="M913 432l300 -299q7 -7 7 -18t-7 -18l-109 -109q-8 -8 -18 -8t-18 8l-300 299q-120 -77 -261 -77q-200 0 -342 142t-142 342t142 342t342 142t342 -142t142 -342q0 -141 -78 -262zM176 694q0 -136 97 -233t234 -97t233.5 97t96.5 233t-96.5 233t-233.5 97t-234 -97 t-97 -233zM300 801v-200h400v200h-400z" />
+<glyph unicode="&#xe017;" d="M700 750v400q0 21 -14.5 35.5t-35.5 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-400q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5zM800 975v166q167 -62 272 -210t105 -331q0 -118 -45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123 t-123 184t-45.5 224.5q0 183 105 331t272 210v-166q-103 -55 -165 -155t-62 -220q0 -177 125 -302t302 -125t302 125t125 302q0 120 -62 220t-165 155z" />
+<glyph unicode="&#xe018;" d="M1200 1h-200v1200h200v-1200zM900 1h-200v800h200v-800zM600 1h-200v500h200v-500zM300 301h-200v-300h200v300z" />
+<glyph unicode="&#xe019;" d="M488 183l38 -151q40 -5 74 -5q27 0 74 5l38 151l6 2q46 13 93 39l5 3l134 -81q56 44 104 105l-80 134l3 5q24 44 39 93l1 6l152 38q5 40 5 74q0 28 -5 73l-152 38l-1 6q-16 51 -39 93l-3 5l80 134q-44 58 -104 105l-134 -81l-5 3q-45 25 -93 39l-6 1l-38 152q-40 5 -74 5 q-27 0 -74 -5l-38 -152l-5 -1q-50 -14 -94 -39l-5 -3l-133 81q-59 -47 -105 -105l80 -134l-3 -5q-25 -47 -38 -93l-2 -6l-151 -38q-6 -48 -6 -73q0 -33 6 -74l151 -38l2 -6q14 -49 38 -93l3 -5l-80 -134q45 -59 105 -105l133 81l5 -3q45 -26 94 -39zM600 815q89 0 152 -63 t63 -151q0 -89 -63 -152t-152 -63t-152 63t-63 152q0 88 63 151t152 63z" />
+<glyph unicode="&#xe020;" d="M900 1100h275q10 0 17.5 -7.5t7.5 -17.5v-50q0 -11 -7 -18t-18 -7h-1050q-11 0 -18 7t-7 18v50q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-100zM800 1100v100h-300v-100h300zM200 900h900v-800q0 -41 -29.5 -71 t-70.5 -30h-700q-41 0 -70.5 30t-29.5 71v800zM300 100h100v700h-100v-700zM500 100h100v700h-100v-700zM700 100h100v700h-100v-700zM900 100h100v700h-100v-700z" />
+<glyph unicode="&#xe021;" d="M1301 601h-200v-600h-300v400h-300v-400h-300v600h-200l656 644z" />
+<glyph unicode="&#xe022;" d="M600 700h400v-675q0 -11 -7 -18t-18 -7h-850q-11 0 -18 7t-7 18v1150q0 11 7 18t18 7h475v-500zM1000 800h-300v300z" />
+<glyph unicode="&#xe023;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM600 600h200 v-100h-300v400h100v-300z" />
+<glyph unicode="&#xe024;" d="M721 400h-242l-40 -400h-539l431 1200h209l-21 -300h162l-20 300h208l431 -1200h-538zM712 500l-27 300h-170l-27 -300h224z" />
+<glyph unicode="&#xe025;" d="M1100 400v-400h-1100v400h490l-290 300h200v500h300v-500h200l-290 -300h490zM988 300h-175v-100h175v100z" />
+<glyph unicode="&#xe026;" d="M600 1199q122 0 233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233t47.5 233t127.5 191t191 127.5t233 47.5zM600 1012q-170 0 -291 -121t-121 -291t121 -291t291 -121t291 121 t121 291t-121 291t-291 121zM700 600h150l-250 -300l-250 300h150v300h200v-300z" />
+<glyph unicode="&#xe027;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM850 600h-150 v-300h-200v300h-150l250 300z" />
+<glyph unicode="&#xe028;" d="M0 500l200 700h800q199 -700 200 -700v-475q0 -11 -7 -18t-18 -7h-1150q-11 0 -18 7t-7 18v475zM903 1000h-606l-97 -500h200l50 -200h300l50 200h200z" />
+<glyph unicode="&#xe029;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5zM797 598 l-297 -201v401z" />
+<glyph unicode="&#xe030;" d="M1177 600h-150q0 -177 -125 -302t-302 -125t-302 125t-125 302t125 302t302 125q136 0 246 -81l-146 -146h400v400l-145 -145q-157 122 -355 122q-118 0 -224.5 -45.5t-184 -123t-123 -184t-45.5 -224.5t45.5 -224.5t123 -184t184 -123t224.5 -45.5t224.5 45.5t184 123 t123 184t45.5 224.5z" />
+<glyph unicode="&#xe031;" d="M700 800l147 147q-112 80 -247 80q-177 0 -302 -125t-125 -302h-150q0 118 45.5 224.5t123 184t184 123t224.5 45.5q198 0 355 -122l145 145v-400h-400zM500 400l-147 -147q112 -80 247 -80q177 0 302 125t125 302h150q0 -118 -45.5 -224.5t-123 -184t-184 -123 t-224.5 -45.5q-198 0 -355 122l-145 -145v400h400z" />
+<glyph unicode="&#xe032;" d="M100 1200v-1200h1100v1200h-1100zM1100 100h-900v900h900v-900zM400 800h-100v100h100v-100zM1000 800h-500v100h500v-100zM400 600h-100v100h100v-100zM1000 600h-500v100h500v-100zM400 400h-100v100h100v-100zM1000 400h-500v100h500v-100zM400 200h-100v100h100v-100 zM1000 300h-500v-100h500v100z" />
+<glyph unicode="&#xe034;" d="M200 0h-100v1100h100v-1100zM1100 600v500q-40 -81 -101.5 -115.5t-127.5 -29.5t-138 25t-139.5 40t-125.5 25t-103 -29.5t-65 -115.5v-500q60 60 127.5 84t127.5 17.5t122 -23t119 -30t110 -11t103 42t91 120.5z" />
+<glyph unicode="&#xe035;" d="M1200 275v300q0 116 -49.5 227t-131 192.5t-192.5 131t-227 49.5t-227 -49.5t-192.5 -131t-131 -192.5t-49.5 -227v-300q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 127 70.5 231.5t184.5 161.5t245 57t245 -57t184.5 -161.5t70.5 -231.5v-300q0 -11 7 -18t18 -7h50 q11 0 18 7t7 18zM400 480v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14zM1000 480v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14z" />
+<glyph unicode="&#xe036;" d="M0 800v-400h300l300 -200v800l-300 -200h-300zM971 600l141 -141l-71 -71l-141 141l-141 -141l-71 71l141 141l-141 141l71 71l141 -141l141 141l71 -71z" />
+<glyph unicode="&#xe037;" d="M0 800v-400h300l300 -200v800l-300 -200h-300zM700 857l69 53q111 -135 111 -310q0 -169 -106 -302l-67 54q86 110 86 248q0 146 -93 257z" />
+<glyph unicode="&#xe038;" d="M974 186l6 8q142 178 142 405q0 230 -144 408l-6 8l-83 -64l7 -8q123 -151 123 -344q0 -189 -119 -339l-7 -8zM300 801l300 200v-800l-300 200h-300v400h300zM702 858l69 53q111 -135 111 -310q0 -170 -106 -303l-67 55q86 110 86 248q0 145 -93 257z" />
+<glyph unicode="&#xe039;" d="M100 700h400v100h100v100h-100v300h-500v-600h100v100zM1200 700v500h-600v-200h100v-300h200v-300h300v200h-200v100h200zM100 1100h300v-300h-300v300zM800 800v300h300v-300h-300zM200 900h100v100h-100v-100zM900 1000h100v-100h-100v100zM300 600h-100v-100h-200 v-500h500v500h-200v100zM900 200v-100h-200v100h-100v100h100v200h-200v100h300v-300h200v-100h-100zM400 400v-300h-300v300h300zM300 200h-100v100h100v-100zM1100 300h100v-100h-100v100zM600 100h100v-100h-100v100zM1200 100v-100h-300v100h300z" />
+<glyph unicode="&#xe040;" d="M100 1200h-100v-1000h100v1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 1200v-1000h-200v1000h200zM400 100v-100h-300v100h300zM500 91h100v-91h-100v91zM700 91h100v-91h-100v91zM1100 91v-91h-200v91h200z " />
+<glyph unicode="&#xe041;" d="M1200 500l-500 -500l-699 700v475q0 10 7.5 17.5t17.5 7.5h474zM320 882q29 29 29 71t-29 71q-30 30 -71.5 30t-71.5 -30q-29 -29 -29 -71t29 -71q30 -30 71.5 -30t71.5 30z" />
+<glyph unicode="&#xe042;" d="M1201 500l-500 -500l-699 700v475q0 11 7 18t18 7h474zM1501 500l-500 -500l-50 50l450 450l-700 700h100zM320 882q30 29 30 71t-30 71q-29 30 -71 30t-71 -30q-30 -29 -30 -71t30 -71q29 -30 71 -30t71 30z" />
+<glyph unicode="&#xe043;" d="M1200 1200v-1000l-100 -100v1000h-750l-100 -100h750v-1000h-900v1025l175 175h925z" />
+<glyph unicode="&#xe045;" d="M947 829l-94 346q-2 11 -10 18t-18 7h-450q-10 0 -18 -7t-10 -18l-94 -346l40 -124h592zM1200 800v-700h-200v200h-800v-200h-200v700h200l100 -200h600l100 200h200zM881 176l38 -152q2 -10 -3.5 -17t-15.5 -7h-600q-10 0 -15.5 7t-3.5 17l38 152q2 10 11.5 17t19.5 7 h500q10 0 19.5 -7t11.5 -17z" />
+<glyph unicode="&#xe047;" d="M1200 0v66q-34 1 -74 43q-18 19 -33 42t-21 37l-6 13l-385 998h-93l-399 -1006q-24 -48 -52 -75q-12 -12 -33 -25t-36 -20l-15 -7v-66h365v66q-41 0 -72 11t-49 38t1 71l92 234h391l82 -222q16 -45 -5.5 -88.5t-74.5 -43.5v-66h417zM416 521l178 457l46 -140l116 -317 h-340z" />
+<glyph unicode="&#xe048;" d="M100 1199h471q120 0 213 -88t93 -228q0 -55 -11.5 -101.5t-28 -74t-33.5 -47.5t-28 -28l-12 -7q8 -3 21.5 -9t48 -31.5t60.5 -58t47.5 -91.5t21.5 -129q0 -84 -59 -156.5t-142 -111t-162 -38.5h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 28 -1 39.5t-5.5 26t-15.5 21 t-29 14t-49 14.5v70zM400 1079v-379h139q76 0 130 61.5t54 138.5q0 82 -84 130.5t-239 48.5zM400 200h161q89 0 153 48.5t64 132.5q0 90 -62.5 154.5t-156.5 64.5h-159v-400z" />
+<glyph unicode="&#xe049;" d="M877 1200l2 -57q-33 -8 -62 -25.5t-46 -37t-29.5 -38t-17.5 -30.5l-5 -12l-128 -825q-10 -52 14 -82t95 -36v-57h-500v57q77 7 134.5 40.5t65.5 80.5l173 849q10 56 -10 74t-91 37q-6 1 -10.5 2.5t-9.5 2.5v57h425z" />
+<glyph unicode="&#xe050;" d="M1150 1200h150v-300h-50q0 29 -8 48.5t-18.5 30t-33.5 15t-39.5 5.5t-50.5 1h-200v-850l100 -50v-100h-400v100l100 50v850h-200q-34 0 -50.5 -1t-40 -5.5t-33.5 -15t-18.5 -30t-8.5 -48.5h-49v300h150h700zM100 1000v-800h75l-125 -167l-125 167h75v800h-75l125 167 l125 -167h-75z" />
+<glyph unicode="&#xe051;" d="M950 1201h150v-300h-50q0 29 -8 48.5t-18 30t-33.5 15t-40 5.5t-50.5 1h-200v-650l100 -50v-100h-400v100l100 50v650h-200q-34 0 -50.5 -1t-39.5 -5.5t-33.5 -15t-18.5 -30t-8 -48.5h-50v300h150h700zM200 101h800v75l167 -125l-167 -125v75h-800v-75l-167 125l167 125 v-75z" />
+<glyph unicode="&#xe052;" d="M700 950v100q0 21 -14.5 35.5t-35.5 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h600q21 0 35.5 15t14.5 35zM1100 650v100q0 21 -14.5 35.5t-35.5 14.5h-1000q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h1000 q21 0 35.5 15t14.5 35zM900 350v100q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35zM1200 50v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35 t35.5 -15h1100q21 0 35.5 15t14.5 35z" />
+<glyph unicode="&#xe053;" d="M1000 950v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35zM1200 650v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h1100 q21 0 35.5 15t14.5 35zM1000 350v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35zM1200 50v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35 t35.5 -15h1100q21 0 35.5 15t14.5 35z" />
+<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-600q-21 0 -35.5 15t-14.5 35zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1000q-21 0 -35.5 15 t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" />
+<glyph unicode="&#xe055;" d="M0 950v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15 t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" />
+<glyph unicode="&#xe056;" d="M0 950v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM300 950v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM300 650v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800 q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35zM0 50v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM300 50v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35z" />
+<glyph unicode="&#xe057;" d="M400 1100h-100v-1100h100v1100zM700 950v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35zM1100 650v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15 h500q20 0 35 15t15 35zM100 425v75h-201v100h201v75l166 -125zM900 350v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35zM1200 50v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5 v-100q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35z" />
+<glyph unicode="&#xe058;" d="M201 950v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35zM801 1100h100v-1100h-100v1100zM601 650v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15 h500q20 0 35 15t15 35zM1101 425v75h200v100h-200v75l-167 -125zM401 350v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35zM701 50v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5 v-100q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35z" />
+<glyph unicode="&#xe059;" d="M900 925v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22h750q31 0 53 -22t22 -53zM1200 300l-300 300l300 300v-600z" />
+<glyph unicode="&#xe060;" d="M1200 1056v-1012q0 -18 -12.5 -31t-31.5 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13h1112q19 0 31.5 -13t12.5 -31zM1100 1000h-1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500zM476 750q0 -56 -39 -95t-95 -39t-95 39t-39 95t39 95t95 39t95 -39 t39 -95z" />
+<glyph unicode="&#xe062;" d="M600 1213q123 0 227 -63t164.5 -169.5t60.5 -229.5t-73 -272q-73 -114 -166.5 -237t-150.5 -189l-57 -66q-10 9 -27 26t-66.5 70.5t-96 109t-104 135.5t-100.5 155q-63 139 -63 262q0 124 60.5 231.5t165 172t226.5 64.5zM599 514q107 0 182.5 75.5t75.5 182.5t-75.5 182 t-182.5 75t-182 -75.5t-75 -181.5q0 -107 75.5 -182.5t181.5 -75.5z" />
+<glyph unicode="&#xe063;" d="M600 1199q122 0 233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233t47.5 233t127.5 191t191 127.5t233 47.5zM600 173v854q-176 0 -301.5 -125t-125.5 -302t125.5 -302t301.5 -125z " />
+<glyph unicode="&#xe064;" d="M554 1295q21 -71 57.5 -142.5t76 -130.5t83 -118.5t82 -117t70 -116t50 -125.5t18.5 -136q0 -89 -39 -165.5t-102 -126.5t-140 -79.5t-156 -33.5q-114 6 -211.5 53t-161.5 138.5t-64 210.5q0 94 34 186t88.5 172.5t112 159t115 177t87.5 194.5zM455 296q-7 6 -18 17 t-34 48t-33 77q-15 73 -14 143.5t10 122.5l9 51q-92 -110 -119.5 -185t-12.5 -156q14 -82 59.5 -136t136.5 -80z" />
+<glyph unicode="&#xe065;" d="M1108 902l113 113l-21 85l-92 28l-113 -113zM1100 625v-225q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5v300q0 165 117.5 282.5t282.5 117.5q366 -6 397 -14l-186 -186h-311q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5 t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v125zM436 341l161 50l412 412l-114 113l-405 -405z" />
+<glyph unicode="&#xe066;" d="M1100 453v-53q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5v300q0 165 117.5 282.5t282.5 117.5h261l2 -80q-133 -32 -218 -120h-145q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5z M813 431l360 324l-359 318v-216q-7 0 -19 -1t-48 -8t-69.5 -18.5t-76.5 -37t-76.5 -59t-62 -88t-39.5 -121.5q30 38 81.5 64t103 35.5t99 14t77.5 3.5l29 -1v-209z" />
+<glyph unicode="&#xe067;" d="M1100 569v-169q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5v300q0 165 117.5 282.5t282.5 117.5h300q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69z M625 348l566 567l-136 137l-430 -431l-147 147l-136 -136z" />
+<glyph unicode="&#xe068;" d="M900 303v198h-200v-200h195l-295 -300l-300 300h200v200h-200v-198l-300 300l300 296v-198h200v200h-200l300 300l295 -300h-195v-200h200v198l300 -296z" />
+<glyph unicode="&#xe069;" d="M900 0l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-1100z" />
+<glyph unicode="&#xe070;" d="M1200 0l-500 488v-488l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-487l500 487v-1100z" />
+<glyph unicode="&#xe071;" d="M1200 0l-500 488v-488l-564 550l564 550v-487l500 487v-1100z" />
+<glyph unicode="&#xe072;" d="M1100 550l-900 550v-1100z" />
+<glyph unicode="&#xe073;" d="M500 150v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5zM900 150v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800q0 -21 14.5 -35.5t35.5 -14.5h200 q21 0 35.5 14.5t14.5 35.5z" />
+<glyph unicode="&#xe074;" d="M1100 150v800q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-800q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35z" />
+<glyph unicode="&#xe075;" d="M500 0v488l-500 -488v1100l500 -487v487l564 -550z" />
+<glyph unicode="&#xe076;" d="M1050 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v488l-500 -488v1100l500 -487v487l500 -487v437q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v1100l500 -487v437q0 21 14.5 35.5t35.5 14.5z" />
+<glyph unicode="&#xe078;" d="M650 1064l-550 -564h1100zM1200 350v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
+<glyph unicode="&#xe079;" d="M777 7l240 240l-353 353l353 353l-240 240l-592 -594z" />
+<glyph unicode="&#xe080;" d="M513 -46l-241 240l353 353l-353 353l241 240l572 -571l21 -22l-1 -1v-1z" />
+<glyph unicode="&#xe081;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM500 900v-200h-200v-200h200v-200h200v200h200v200h-200v200h-200z" />
+<glyph unicode="&#xe082;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM300 700v-200h600v200h-600z" />
+<glyph unicode="&#xe083;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM247 741l141 -141l-142 -141l213 -213l141 142l141 -142l213 213l-142 141l142 141l-213 212l-141 -141 l-141 142z" />
+<glyph unicode="&#xe084;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM546 623l-102 102l-174 -174l276 -277l411 411l-175 174z" />
+<glyph unicode="&#xe085;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM500 500h200q5 3 14 8t31.5 25.5t39.5 45.5t31 69t14 94q0 51 -17.5 89t-42 58t-58.5 32t-58.5 15t-51.5 3 q-105 0 -172 -56t-67 -183h144q4 0 11.5 -1t11 -1t6.5 3t3 9t1 11t3.5 8.5t3.5 6t5.5 4t6.5 2.5t9 1.5t9 0.5h11.5h12.5q19 0 30 -10t11 -26q0 -22 -4 -28t-27 -22q-5 -1 -12.5 -3t-27 -13.5t-34 -27t-26.5 -46t-11 -68.5zM500 400v-100h200v100h-200z" />
+<glyph unicode="&#xe086;" d="M600 1197q162 0 299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5t80 299.5t217.5 217.5t299.5 80zM500 900v-100h200v100h-200zM400 700v-100h100v-200h-100v-100h400v100h-100v300h-300z" />
+<glyph unicode="&#xe087;" d="M1200 700v-200h-203q-25 -102 -116.5 -186t-180.5 -117v-197h-200v197q-140 27 -208 102.5t-98 200.5h-194v200h194q15 60 36 104.5t55.5 86t88 69t126.5 40.5v200h200v-200q54 -20 113 -60t112.5 -105.5t71.5 -134.5h203zM700 500v-206q149 48 201 206h-201v200h200 q-25 74 -76 127.5t-124 76.5v-204h-200v203q-75 -24 -130 -77.5t-79 -125.5h209v-200h-210q24 -73 79.5 -127.5t130.5 -78.5v206h200z" />
+<glyph unicode="&#xe088;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM844 735 l-135 -135l135 -135l-109 -109l-135 135l-135 -135l-109 109l135 135l-135 135l109 109l135 -135l135 135z" />
+<glyph unicode="&#xe089;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM896 654 l-346 -345l-228 228l141 141l87 -87l204 205z" />
+<glyph unicode="&#xe090;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM248 385l568 567q-100 62 -216 62q-171 0 -292.5 -121.5t-121.5 -292.5q0 -115 62 -215zM955 809l-564 -564q97 -59 209 -59q171 0 292.5 121.5 t121.5 292.5q0 112 -59 209z" />
+<glyph unicode="&#xe091;" d="M1200 400h-600v-301l-600 448l600 453v-300h600v-300z" />
+<glyph unicode="&#xe092;" d="M600 400h-600v300h600v300l600 -453l-600 -448v301z" />
+<glyph unicode="&#xe093;" d="M1098 600h-298v-600h-300v600h-296l450 600z" />
+<glyph unicode="&#xe094;" d="M998 600l-449 -600l-445 600h296v600h300v-600h298z" />
+<glyph unicode="&#xe095;" d="M600 199v301q-95 -2 -183 -20t-170 -52t-147 -92.5t-100 -135.5q6 132 41 238.5t103.5 193t184 138t271.5 59.5v271l600 -453z" />
+<glyph unicode="&#xe096;" d="M1200 1200h-400l129 -129l-294 -294l142 -142l294 294l129 -129v400zM565 423l-294 -294l129 -129h-400v400l129 -129l294 294z" />
+<glyph unicode="&#xe097;" d="M871 730l129 -130h-400v400l129 -129l295 295l142 -141zM200 600h400v-400l-129 130l-295 -295l-142 141l295 295z" />
+<glyph unicode="&#xe101;" d="M600 1177q118 0 224.5 -45.5t184 -123t123 -184t45.5 -224.5t-45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5t45.5 224.5t123 184t184 123t224.5 45.5zM686 549l58 302q4 20 -8 34.5t-33 14.5h-207q-20 0 -32 -14.5t-8 -34.5 l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5zM700 400h-200v-100h200v100z" />
+<glyph unicode="&#xe102;" d="M1200 900h-111v6t-1 15t-3 18l-34 172q-11 39 -41.5 63t-69.5 24q-32 0 -61 -17l-239 -144q-22 -13 -40 -35q-19 24 -40 36l-238 144q-33 18 -62 18q-39 0 -69.5 -23t-40.5 -61l-35 -177q-2 -8 -3 -18t-1 -15v-6h-111v-100h100v-200h400v300h200v-300h400v200h100v100z M731 900l202 197q5 -12 12 -32.5t23 -64t25 -72t7 -28.5h-269zM481 900h-281q-3 0 14 48t35 96l18 47zM100 0h400v400h-400v-400zM700 400h400v-400h-400v400z" />
+<glyph unicode="&#xe103;" d="M0 121l216 193q-9 53 -13 83t-5.5 94t9 113t38.5 114t74 124q47 60 99.5 102.5t103 68t127.5 48t145.5 37.5t184.5 43.5t220 58.5q0 -189 -22 -343t-59 -258t-89 -181.5t-108.5 -120t-122 -68t-125.5 -30t-121.5 -1.5t-107.5 12.5t-87.5 17t-56.5 7.5l-99 -55l-201 -202 v143zM692 611q70 38 118.5 69.5t102 79t99 111.5t86.5 148q22 50 24 60t-6 19q-7 5 -17 5t-26.5 -14.5t-33.5 -39.5q-35 -51 -113.5 -108.5t-139.5 -89.5l-61 -32q-369 -197 -458 -401q-48 -111 -28.5 -117.5t86.5 76.5q55 66 367 234z" />
+<glyph unicode="&#xe105;" d="M1261 600l-26 -40q-6 -10 -20 -30t-49 -63.5t-74.5 -85.5t-97 -90t-116.5 -83.5t-132.5 -59t-145.5 -23.5t-145.5 23.5t-132.5 59t-116.5 83.5t-97 90t-74.5 85.5t-49 63.5t-20 30l-26 40l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5 t145.5 -23.5t132.5 -59t116.5 -83.5t97 -90t74.5 -85.5t49 -63.5t20 -30zM600 240q64 0 123.5 20t100.5 45.5t85.5 71.5t66.5 75.5t58 81.5t47 66q-1 1 -28.5 37.5t-42 55t-43.5 53t-57.5 63.5t-58.5 54q49 -74 49 -163q0 -124 -88 -212t-212 -88t-212 88t-88 212 q0 85 46 158q-102 -87 -226 -258q7 -10 40.5 -58t56 -78.5t68 -77.5t87.5 -75t103 -49.5t125 -21.5zM484 762l-107 -106q49 -124 154 -191l105 105q-37 24 -75 72t-57 84z" />
+<glyph unicode="&#xe106;" d="M906 1200l-314 -1200h-148l37 143q-82 21 -165 71.5t-140 102t-109.5 112t-72 88.5t-29.5 43l-26 40l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5q61 0 121 -17l37 142h148zM1261 600l-26 -40q-7 -12 -25.5 -38t-63.5 -79.5t-95.5 -102.5 t-124 -100t-146.5 -79l38 145q22 15 44.5 34t46 44t40.5 44t41 50.5t33.5 43.5t33 44t24.5 34q-97 127 -140 175l39 146q67 -54 131.5 -125.5t87.5 -103.5t36 -52zM513 264l37 141q-107 18 -178.5 101.5t-71.5 193.5q0 85 46 158q-102 -87 -226 -258q210 -282 393 -336z M484 762l-107 -106q49 -124 154 -191l47 47l23 87q-30 28 -59 69t-44 68z" />
+<glyph unicode="&#xe107;" d="M-47 0h1294q37 0 50.5 35.5t-7.5 67.5l-642 1056q-20 33 -48 36t-48 -29l-642 -1066q-21 -32 -7.5 -66t50.5 -34zM700 200v100h-200v-100h-345l445 723l445 -723h-345zM700 700h-200v-100l100 -300l100 300v100z" />
+<glyph unicode="&#xe108;" d="M800 711l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -91 100 -113v-64q0 -21 -13 -29t-32 1l-94 78h-222l-94 -78q-19 -9 -32 -1t-13 29v64q0 22 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41q0 20 11 44.5t26 38.5 l363 325v339q0 62 44 106t106 44t106 -44t44 -106v-339z" />
+<glyph unicode="&#xe110;" d="M941 800l-600 -600h-341v200h259l600 600h241v198l300 -295l-300 -300v197h-159zM381 678l141 142l-181 180h-341v-200h259zM1100 598l300 -295l-300 -300v197h-241l-181 181l141 142l122 -123h159v198z" />
+<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
+<glyph unicode="&#xe112;" d="M400 900h-300v300h300v-300zM1100 900h-300v300h300v-300zM1100 800v-200q0 -42 -3 -83t-15 -104t-31.5 -116t-58 -109.5t-89 -96.5t-129 -65.5t-174.5 -25.5t-174.5 25.5t-129 65.5t-89 96.5t-58 109.5t-31.5 116t-15 104t-3 83v200h300v-250q0 -113 6 -145 q17 -92 102 -117q39 -11 92 -11q37 0 66.5 5.5t50 15.5t36 24t24 31.5t14 37.5t7 42t2.5 45t0 47v25v250h300z" />
+<glyph unicode="&#xe113;" d="M902 184l226 227l-578 579l-580 -579l227 -227l352 353z" />
+<glyph unicode="&#xe114;" d="M650 218l578 579l-226 227l-353 -353l-352 353l-227 -227z" />
+<glyph unicode="&#xe115;" d="M1198 400v600h-796l215 -200h381v-400h-198l299 -283l299 283h-200zM-198 700l299 283l300 -283h-203v-400h385l215 -200h-800v600h-196z" />
+<glyph unicode="&#xe116;" d="M1050 1200h94q20 0 35 -14.5t15 -35.5t-15 -35.5t-35 -14.5h-54l-201 -961q-2 -4 -6 -10.5t-19 -17.5t-33 -11h-31v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-300v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-50q-21 0 -35.5 15t-14.5 35 q0 21 14.5 35.5t35.5 14.5h535l48 200h-633q-32 0 -54.5 21t-27.5 43l-100 475q-5 24 10 42q14 19 39 19h896l38 162q5 17 18.5 27.5t30.5 10.5z" />
+<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
+<glyph unicode="&#xe118;" d="M201 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-200h-1000zM1501 700l-300 -700h-1200l300 700h1200z" />
+<glyph unicode="&#xe119;" d="M302 300h198v600h-198l298 300l298 -300h-198v-600h198l-298 -300z" />
+<glyph unicode="&#xe120;" d="M900 303v197h-600v-197l-300 297l300 298v-198h600v198l300 -298z" />
+<glyph unicode="&#xe121;" d="M31 400l172 739q5 22 23 41.5t38 19.5h672q19 0 37.5 -22.5t23.5 -45.5l172 -732h-1138zM100 300h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM900 200h-100v-100h100v100z M1100 200h-100v-100h100v100z" />
+<glyph unicode="&#xe122;" d="M1100 200v850q0 21 14.5 35.5t35.5 14.5q20 0 35 -14.5t15 -35.5v-850q0 -20 -15 -35t-35 -15q-21 0 -35.5 15t-14.5 35zM325 800l675 250v-850l-675 200h-38l47 -276q2 -12 -3 -17.5t-11 -6t-21 -0.5h-8h-83q-20 0 -34.5 14t-18.5 35q-56 337 -56 351v250v5 q0 13 0.5 18.5t2.5 13t8 10.5t15 3h200zM-101 600v50q0 24 25 49t50 38l25 13v-250l-11 5.5t-24 14t-30 21.5t-24 27.5t-11 31.5z" />
+<glyph unicode="&#xe124;" d="M445 1180l-45 -233l-224 78l78 -225l-233 -44l179 -156l-179 -155l233 -45l-78 -224l224 78l45 -233l155 179l155 -179l45 233l224 -78l-78 224l234 45l-180 155l180 156l-234 44l78 225l-224 -78l-45 233l-155 -180z" />
+<glyph unicode="&#xe125;" d="M700 1200h-50q-27 0 -51 -20t-38 -48l-96 -198l-145 -196q-20 -26 -20 -63v-400q0 -75 100 -75h61q123 -100 139 -100h250q46 0 83 57l238 344q29 31 29 74v100q0 44 -30.5 84.5t-69.5 40.5h-328q28 118 28 125v150q0 44 -30.5 84.5t-69.5 40.5zM700 925l-50 -225h450 v-125l-250 -375h-214l-136 100h-100v375l150 212l100 213h50v-175zM0 800v-600h200v600h-200z" />
+<glyph unicode="&#xe126;" d="M700 0h-50q-27 0 -51 20t-38 48l-96 198l-145 196q-20 26 -20 63v400q0 75 100 75h61q123 100 139 100h250q46 0 83 -57l238 -344q29 -31 29 -74v-100q0 -44 -30.5 -84.5t-69.5 -40.5h-328q28 -118 28 -125v-150q0 -44 -30.5 -84.5t-69.5 -40.5zM200 400h-200v600h200 v-600zM700 275l-50 225h450v125l-250 375h-214l-136 -100h-100v-375l150 -212l100 -213h50v175z" />
+<glyph unicode="&#xe127;" d="M364 873l362 230q14 6 25 6q17 0 29 -12l109 -112q14 -14 14 -34q0 -18 -11 -32l-85 -121h302q85 0 138.5 -38t53.5 -110t-54.5 -111t-138.5 -39h-107l-130 -339q-7 -22 -20.5 -41.5t-28.5 -19.5h-341q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM408 792v-503 l100 -89h293l131 339q6 21 19.5 41t28.5 20h203q16 0 25 15t9 36q0 20 -9 34.5t-25 14.5h-457h-6.5h-7.5t-6.5 0.5t-6 1t-5 1.5t-5.5 2.5t-4 4t-4 5.5q-5 12 -5 20q0 14 10 27l147 183l-86 83zM208 200h-200v600h200v-600z" />
+<glyph unicode="&#xe128;" d="M475 1104l365 -230q7 -4 16.5 -10.5t26 -26t16.5 -36.5v-526q0 -13 -85.5 -93.5t-93.5 -80.5h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-84 0 -139 39t-55 111t54 110t139 37h302l-85 121q-11 16 -11 32q0 21 14 34l109 113q13 12 29 12q11 0 25 -6zM370 946 l145 -184q10 -11 10 -26q0 -11 -5 -20q-1 -3 -3.5 -5.5l-4 -4t-5 -2.5t-5.5 -1.5t-6.5 -1t-6.5 -0.5h-7.5h-6.5h-476v-100h222q15 0 28.5 -20.5t19.5 -40.5l131 -339h293l106 89v502l-342 237zM1199 201h-200v600h200v-600z" />
+<glyph unicode="&#xe129;" d="M1100 473v342q0 15 -20 28.5t-41 19.5l-339 131v106q0 84 -39 139t-111 55t-110 -53.5t-38 -138.5v-302l-121 84q-15 12 -33.5 11.5t-32.5 -13.5l-112 -110q-22 -22 -6 -53l230 -363q4 -6 10.5 -15.5t26 -25t36.5 -15.5h525q13 0 94 83t81 90zM911 400h-503l-236 339 l83 86l183 -146q22 -18 47 -5q3 1 5.5 3.5l4 4t2.5 5t1.5 5.5t1 6.5t0.5 6v7.5v7v456q0 22 25 31t50 -0.5t25 -30.5v-202q0 -16 20 -29.5t41 -19.5l339 -130v-294zM1000 200v-200h-600v200h600z" />
+<glyph unicode="&#xe130;" d="M305 1104v200h600v-200h-600zM605 310l339 131q20 6 40.5 19.5t20.5 28.5v342q0 7 -81 90t-94 83h-525q-17 0 -35.5 -14t-28.5 -28l-10 -15l-230 -362q-15 -31 7 -53l112 -110q13 -13 32 -13.5t34 10.5l121 85l-1 -302q0 -84 38.5 -138t110.5 -54t111 55t39 139v106z M905 804v-294l-340 -130q-20 -6 -40 -20t-20 -29v-202q0 -22 -25 -31t-50 0t-25 31v456v14.5t-1.5 11.5t-5 12t-9.5 7q-24 13 -46 -5l-184 -146l-83 86l237 339h503z" />
+<glyph unicode="&#xe131;" d="M603 1195q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5zM598 701h-298v-201h300l-2 -194l402 294l-402 298v-197z" />
+<glyph unicode="&#xe132;" d="M597 1195q122 0 232.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-218 -217.5t-300 -80t-299.5 80t-217.5 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t231.5 47.5zM200 600l400 -294v194h302v201h-300v197z" />
+<glyph unicode="&#xe133;" d="M603 1195q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5zM300 600h200v-300h200v300h200l-300 400z" />
+<glyph unicode="&#xe134;" d="M603 1195q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5zM500 900v-300h-200l300 -400l300 400h-200v300h-200z" />
+<glyph unicode="&#xe135;" d="M603 1195q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5zM627 1101q-15 -12 -36.5 -21t-34.5 -12t-44 -8t-39 -6 q-15 -3 -45.5 0.5t-45.5 -2.5q-21 -7 -52 -26.5t-34 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -90.5t-29.5 -79.5q-8 -33 5.5 -92.5t7.5 -87.5q0 -9 17 -44t16 -60q12 0 23 -5.5t23 -15t20 -13.5q24 -12 108 -42q22 -8 53 -31.5t59.5 -38.5t57.5 -11q8 -18 -15 -55 t-20 -57q42 -71 87 -80q0 -6 -3 -15.5t-3.5 -14.5t4.5 -17q102 -2 221 112q30 29 47 47t34.5 49t20.5 62q-14 9 -37 9.5t-36 7.5q-14 7 -49 15t-52 19q-9 0 -39.5 -0.5t-46.5 -1.5t-39 -6.5t-39 -16.5q-50 -35 -66 -12q-4 2 -3.5 25.5t0.5 25.5q-6 13 -26.5 17t-24.5 7 q2 22 -2 41t-16.5 28t-38.5 -20q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q12 -19 32 -37.5t34 -27.5l14 -8q0 3 9.5 39.5t5.5 57.5q-4 23 14.5 44.5t22.5 31.5q5 14 10 35t8.5 31t15.5 22.5t34 21.5q-6 18 10 37q8 0 23.5 -1.5t24.5 -1.5 t20.5 4.5t20.5 15.5q-10 23 -30.5 42.5t-38 30t-49 26.5t-43.5 23q11 41 1 44q31 -13 58.5 -14.5t39.5 3.5l11 4q6 36 -17 53.5t-64 28.5t-56 23q-19 -3 -37 0zM613 994q0 -18 8 -42.5t16.5 -44t9.5 -23.5q-9 2 -31 5t-36 5t-32 8t-30 14q3 12 16 30t16 25q10 -10 18.5 -10 t14 6t14.5 14.5t16 12.5z" />
+<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
+<glyph unicode="&#xe138;" d="M1100 1200v-100h-1000v100h1000zM150 1000h900l-350 -500v-300l-200 -200v500z" />
+<glyph unicode="&#xe140;" d="M329 729l142 142l-200 200l129 129h-400v-400l129 129zM1200 1200v-400l-129 129l-200 -200l-142 142l200 200l-129 129h400zM271 129l129 -129h-400v400l129 -129l200 200l142 -142zM1071 271l129 129v-400h-400l129 129l-200 200l142 142z" />
+<glyph unicode="&#xe141;" d="M596 1192q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM596 1010q-171 0 -292.5 -121.5t-121.5 -292.5q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5zM455 905 q22 0 38 -16t16 -39t-16 -39t-38 -16q-23 0 -39 16.5t-16 38.5t16 38.5t39 16.5zM708 821l1 1q-9 14 -9 28q0 22 16 38.5t39 16.5q22 0 38 -16t16 -39t-16 -39t-38 -16q-14 0 -29 10l-55 -145q17 -22 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5 q0 32 20.5 56.5t51.5 29.5zM855 709q23 0 38.5 -15.5t15.5 -38.5t-16 -39t-38 -16q-23 0 -39 16t-16 39q0 22 16 38t39 16zM345 709q23 0 39 -16t16 -38q0 -23 -16 -39t-39 -16q-22 0 -38 16t-16 39t15.5 38.5t38.5 15.5z" />
+<glyph unicode="&#xe143;" d="M649 54l-16 22q-90 125 -293 323q-71 70 -104.5 105.5t-77 89.5t-61 99t-17.5 91q0 131 98.5 229.5t230.5 98.5q143 0 241 -129q103 129 246 129q129 0 226 -98.5t97 -229.5q0 -46 -17.5 -91t-61 -99t-77 -89.5t-104.5 -105.5q-203 -198 -293 -323zM844 524l12 12 q64 62 97.5 97t64.5 79t31 72q0 71 -48 119t-105 48q-74 0 -132 -82l-118 -171l-114 174q-51 79 -123 79q-60 0 -109.5 -49t-49.5 -118q0 -27 30.5 -70t61.5 -75.5t95 -94.5l22 -22q93 -90 190 -201q82 92 195 203z" />
+<glyph unicode="&#xe144;" d="M476 406l19 -17l105 105l-212 212l389 389l247 -247l-95 -96l18 -18q46 -46 77 -99l29 29q35 35 62.5 88t27.5 96q0 93 -66 159l-141 141q-66 66 -159 66q-95 0 -159 -66l-283 -283q-66 -64 -66 -159q0 -93 66 -159zM123 193l141 -141q66 -66 159 -66q95 0 159 66 l283 283q66 66 66 159t-66 159l-141 141q-12 12 -19 17l-105 -105l212 -212l-389 -389l-247 248l95 95l-18 18q-46 45 -75 101l-55 -55q-66 -66 -66 -159q0 -94 66 -160z" />
+<glyph unicode="&#xe145;" d="M200 100v953q0 21 30 46t81 48t129 38t163 15t162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5zM900 1000h-600v-700h600v700zM600 46q43 0 73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5t-73.5 -30.5t-30.5 -73.5 t30.5 -73.5t73.5 -30.5z" />
+<glyph unicode="&#xe148;" d="M700 1029v-307l64 -14q34 -7 64 -16.5t70 -31.5t67.5 -52t47.5 -80.5t20 -112.5q0 -139 -89 -224t-244 -96v-77h-100v78q-152 17 -237 104q-40 40 -52.5 93.5t-15.5 139.5h139q5 -77 48.5 -126.5t117.5 -64.5v335l-27 7q-46 14 -79 26.5t-72 36t-62.5 52t-40 72.5 t-16.5 99q0 92 44 159.5t109 101t144 40.5v78h100v-79q38 -4 72.5 -13.5t75.5 -31.5t71 -53.5t51.5 -84t24.5 -118.5h-159q-8 72 -35 109.5t-101 50.5zM600 755v274q-61 -8 -97.5 -37.5t-36.5 -102.5q0 -29 8 -51t16.5 -34t29.5 -22.5t31 -13.5t38 -10q7 -2 11 -3zM700 548 v-311q170 18 170 151q0 64 -44 99.5t-126 60.5z" />
+<glyph unicode="&#xe149;" d="M866 300l50 -147q-41 -25 -80.5 -36.5t-59 -13t-61.5 -1.5q-23 0 -128 33t-155 29q-39 -4 -82 -17t-66 -25l-24 -11l-55 145l16.5 11t15.5 10t13.5 9.5t14.5 12t14.5 14t17.5 18.5q48 55 54 126.5t-30 142.5h-221v100h166q-24 49 -44 104q-10 26 -14.5 55.5t-3 72.5 t25 90t68.5 87q97 88 263 88q129 0 230 -89t101 -208h-153q0 52 -34 89.5t-74 51.5t-76 14q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -11 2.5 -24.5t5.5 -24t9.5 -26.5t10.5 -25t14 -27.5t14 -25.5t15.5 -27t13.5 -24h242v-100h-197q8 -50 -2.5 -115t-31.5 -94 q-41 -59 -99 -113q35 11 84 18t70 7q32 1 102 -16t104 -17q76 0 136 30z" />
+<glyph unicode="&#xe150;" d="M300 0l298 300h-198v900h-200v-900h-198zM900 1200l298 -300h-198v-900h-200v900h-198z" />
+<glyph unicode="&#xe151;" d="M400 300h198l-298 -300l-298 300h198v900h200v-900zM1000 1200v-500h-100v100h-100v-100h-100v500h300zM901 1100h-100v-200h100v200zM700 500h300v-200h-99v-100h-100v100h99v100h-200v100zM800 100h200v-100h-300v200h100v-100z" />
+<glyph unicode="&#xe152;" d="M400 300h198l-298 -300l-298 300h198v900h200v-900zM1000 1200v-200h-99v-100h-100v100h99v100h-200v100h300zM800 800h200v-100h-300v200h100v-100zM700 500h300v-500h-100v100h-100v-100h-100v500zM801 200h100v200h-100v-200z" />
+<glyph unicode="&#xe153;" d="M300 0l298 300h-198v900h-200v-900h-198zM900 1100h-100v100h200v-500h-100v400zM1100 500v-500h-100v100h-200v400h300zM1001 400h-100v-200h100v200z" />
+<glyph unicode="&#xe154;" d="M300 0l298 300h-198v900h-200v-900h-198zM1100 1200v-500h-100v100h-200v400h300zM1001 1100h-100v-200h100v200zM900 400h-100v100h200v-500h-100v400z" />
+<glyph unicode="&#xe155;" d="M300 0l298 300h-198v900h-200v-900h-198zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
+<glyph unicode="&#xe156;" d="M300 0l298 300h-198v900h-200v-900h-198zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
+<glyph unicode="&#xe157;" d="M400 1100h300q162 0 281 -118.5t119 -281.5v-300q0 -165 -118.5 -282.5t-281.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5v300q0 165 117.5 282.5t282.5 117.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5 t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5z" />
+<glyph unicode="&#xe158;" d="M700 0h-300q-163 0 -281.5 117.5t-118.5 282.5v300q0 163 119 281.5t281 118.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5 t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5zM400 800v-500l333 250z" />
+<glyph unicode="&#xe159;" d="M0 400v300q0 163 117.5 281.5t282.5 118.5h300q163 0 281.5 -119t118.5 -281v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM900 300v500q0 41 -29.5 70.5t-70.5 29.5h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5 t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5zM800 700h-500l250 -333z" />
+<glyph unicode="&#xe160;" d="M1100 700v-300q0 -162 -118.5 -281t-281.5 -119h-300q-165 0 -282.5 118.5t-117.5 281.5v300q0 165 117.5 282.5t282.5 117.5h300q165 0 282.5 -117.5t117.5 -282.5zM900 300v500q0 41 -29.5 70.5t-70.5 29.5h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5 t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5zM550 733l-250 -333h500z" />
+<glyph unicode="&#xe161;" d="M500 1100h400q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-400v200h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-500v200zM700 550l-400 -350v200h-300v300h300v200z" />
+<glyph unicode="&#xe162;" d="M403 2l9 -1q13 0 26 16l538 630q15 19 6 36q-8 18 -32 16h-300q1 4 78 219.5t79 227.5q2 17 -6 27l-8 8h-9q-16 0 -25 -15q-4 -5 -98.5 -111.5t-228 -257t-209.5 -238.5q-17 -19 -7 -40q10 -19 32 -19h302q-155 -438 -160 -458q-5 -21 4 -32z" />
+<glyph unicode="&#xe163;" d="M800 200h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h500v185q-14 4 -114 7.5t-193 5.5l-93 2q-165 0 -282.5 -117.5t-117.5 -282.5v-300q0 -165 117.5 -282.5t282.5 -117.5h300q47 0 100 15v185zM900 200v200h-300v300h300v200l400 -350z" />
+<glyph unicode="&#xe164;" d="M1200 700l-149 149l-342 -353l-213 213l353 342l-149 149h500v-500zM1022 571l-122 -123v-148q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h156l118 122l-74 78h-100q-165 0 -282.5 -117.5t-117.5 -282.5v-300 q0 -165 117.5 -282.5t282.5 -117.5h300q163 0 281.5 117.5t118.5 282.5v98z" />
+<glyph unicode="&#xe165;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM600 794 q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
+<glyph unicode="&#xe166;" d="M700 800v400h-300v-400h-300l445 -500l450 500h-295zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
+<glyph unicode="&#xe167;" d="M400 700v-300h300v300h295l-445 500l-450 -500h300zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
+<glyph unicode="&#xe168;" d="M405 400l596 596l-154 155l-442 -442l-150 151l-155 -155zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
+<glyph unicode="&#xe169;" d="M409 1103l-97 97l-212 -212l97 -98zM650 861l-149 149l-212 -212l149 -149l-238 -248h700v699zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
+<glyph unicode="&#xe170;" d="M539 950l-149 -149l212 -212l149 148l248 -237v700h-699zM297 709l-97 -97l212 -212l98 97zM25 300h1048q11 0 19 -7.5t8 -17.5v-275h-1100v275q0 11 7 18t18 7zM1000 200h-100v-50h100v50z" />
+<glyph unicode="&#xe171;" d="M1200 1199v-1079l-475 272l-310 -393v416h-392zM1166 1148l-672 -712v-226z" />
+<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -15 -35.5t-35 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1200h-100v-200h100v200z" />
+<glyph unicode="&#xe173;" d="M578 500h-378v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-218l-276 -275l-120 120zM700 1200h-100v-200h100v200zM1300 538l-475 -476l-244 244l123 123l120 -120l353 352z" />
+<glyph unicode="&#xe174;" d="M529 500h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-269l-103 -103l-170 170zM700 1200h-100v-200h100v200zM1167 6l-170 170l-170 -170l-127 127l170 170l-170 170l127 127l170 -170l170 170l127 -128 l-170 -169l170 -170z" />
+<glyph unicode="&#xe175;" d="M700 500h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-300h-400v-200zM700 1000h-100v200h100v-200zM1000 600h-200v-300h-200l300 -300l300 300h-200v300z" />
+<glyph unicode="&#xe176;" d="M602 500h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-402l-200 200zM700 1000h-100v200h100v-200zM1000 300h200l-300 300l-300 -300h200v-300h200v300z" />
+<glyph unicode="&#xe177;" d="M1200 900v150q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h1200zM0 800v-550q0 -21 14.5 -35.5t35.5 -14.5h1100q21 0 35.5 14.5t14.5 35.5v550h-1200zM100 500h400v-200h-400v200z" />
+<glyph unicode="&#xe178;" d="M500 1000h400v198l300 -298l-300 -298v198h-400v200zM100 800v200h100v-200h-100zM400 800h-100v200h100v-200zM700 300h-400v-198l-300 298l300 298v-198h400v-200zM800 500h100v-200h-100v200zM1000 500v-200h100v200h-100z" />
+<glyph unicode="&#xe179;" d="M1200 50v1106q0 31 -18 40.5t-44 -7.5l-276 -117q-25 -16 -43.5 -50.5t-18.5 -65.5v-359q0 -29 10.5 -55.5t25 -43t29 -28.5t25.5 -18l10 -5v-397q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5zM550 1200l50 -100v-400l-100 -203v-447q0 -21 -14.5 -35.5 t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447l-100 203v400l50 100l50 -100v-300h100v300l50 100l50 -100v-300h100v300z" />
+<glyph unicode="&#xe180;" d="M1100 106v888q0 22 25 34.5t50 13.5l25 2v56h-400v-56q75 0 87.5 -6t12.5 -44v-394h-500v394q0 38 12.5 44t87.5 6v56h-400v-56q4 0 11 -0.5t24 -3t30 -7t24 -15t11 -24.5v-888q0 -22 -25 -34.5t-50 -13.5l-25 -2v-56h400v56q-75 0 -87.5 6t-12.5 44v394h500v-394 q0 -38 -12.5 -44t-87.5 -6v-56h400v56q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5z" />
+<glyph unicode="&#xe181;" d="M675 1000l-100 100h-375l-100 -100h400l200 -200v-98l295 98h105v200h-425zM500 300v500q0 41 -29.5 70.5t-70.5 29.5h-300q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h300q41 0 70.5 29.5t29.5 70.5zM100 800h300v-200h-300v200zM700 565l400 133 v-163l-400 -133v163zM100 500h300v-200h-300v200zM805 300l295 98v-298h-425l-100 -100h-375l-100 100h400l200 200h105z" />
+<glyph unicode="&#xe182;" d="M179 1169l-162 -162q-1 -11 -0.5 -32.5t16 -90t46.5 -140t104 -177.5t175 -208q103 -103 207.5 -176t180 -103.5t137 -47t92.5 -16.5l31 1l163 162q16 17 13 40.5t-22 37.5l-192 136q-19 14 -45 12t-42 -19l-119 -118q-143 103 -267 227q-126 126 -227 268l118 118 q17 17 20 41.5t-11 44.5l-139 194q-14 19 -36.5 22t-40.5 -14z" />
+<glyph unicode="&#xe183;" d="M1200 712v200q-6 8 -19 20.5t-63 45t-112 57t-171 45t-235 20.5q-92 0 -175 -10.5t-141.5 -27t-108.5 -36.5t-81.5 -40t-53.5 -36.5t-31 -27.5l-9 -10v-200q0 -21 14.5 -33.5t34.5 -8.5l202 33q20 4 34.5 21t14.5 38v146q141 24 300 24t300 -24v-146q0 -21 14.5 -38 t34.5 -21l202 -33q20 -4 34.5 8.5t14.5 33.5zM800 650l365 -303q14 -14 24.5 -39.5t10.5 -45.5v-212q0 -21 -15 -35.5t-35 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45.5t24.5 39.5l365 303v50q0 4 1 10.5t12 22.5t30 28.5t60 23t97 10.5t97 -10t60 -23.5 t30 -27.5t12 -24l1 -10v-50z" />
+<glyph unicode="&#xe184;" d="M175 200h950l-125 150v250l100 100v400h-100v-200h-100v200h-200v-200h-100v200h-200v-200h-100v200h-100v-400l100 -100v-250zM1200 100v-100h-1100v100h1100z" />
+<glyph unicode="&#xe185;" d="M600 1100h100q41 0 70.5 -29.5t29.5 -70.5v-1000h-300v1000q0 41 29.5 70.5t70.5 29.5zM1000 800h100q41 0 70.5 -29.5t29.5 -70.5v-700h-300v700q0 41 29.5 70.5t70.5 29.5zM400 0v400q0 41 -29.5 70.5t-70.5 29.5h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-400h300z" />
+<glyph unicode="&#xe186;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM200 800v-300h200v-100h-200v-100h300v300h-200v100h200v100h-300zM800 800h-200v-500h200v100h100v300h-100 v100zM800 700v-300h-100v300h100z" />
+<glyph unicode="&#xe187;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM400 600h-100v200h-100v-500h100v200h100v-200h100v500h-100v-200zM800 800h-200v-500h200v100h100v300h-100 v100zM800 700v-300h-100v300h100z" />
+<glyph unicode="&#xe188;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM200 800v-500h300v100h-200v300h200v100h-300zM600 800v-500h300v100h-200v300h200v100h-300z" />
+<glyph unicode="&#xe189;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM500 700l-300 -150l300 -150v300zM600 400l300 150l-300 150v-300z" />
+<glyph unicode="&#xe190;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM900 800v-500h-700v500h700zM300 400h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130v-300zM800 700h-130 q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300z" />
+<glyph unicode="&#xe191;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM200 800v-300h200v-100h-200v-100h300v300h-200v100h200v100h-300zM800 300h100v500h-200v-100h100v-400z M601 300h100v100h-100v-100z" />
+<glyph unicode="&#xe192;" d="M1200 800v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212zM1000 900h-900v-700h900v700zM300 700v100h-100v-500h300v400h-200zM800 300h100v500h-200v-100h100v-400zM401 400h-100v200h100v-200z M601 300h100v100h-100v-100z" />
+<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM1000 900h-900v-700h900v700zM400 700h-200v100h300v-300h-99v-100h-100v100h99v200zM800 700h-100v100h200v-500h-100v400zM201 400h100v-100 h-100v100zM701 300h-100v100h100v-100z" />
+<glyph unicode="&#xe194;" d="M600 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM600 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM800 700h-300 v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
+<glyph unicode="&#xe195;" d="M596 1196q162 0 299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299t80 299t217 217t299 80zM596 1014q-171 0 -292.5 -121.5t-121.5 -292.5t121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5zM800 700v-100 h-100v100h-200v-100h200v-100h-200v-100h-100v400h300zM800 400h-100v100h100v-100z" />
+<glyph unicode="&#xe197;" d="M800 300h128q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5q0 -80 56.5 -137t135.5 -57h222v300h400v-300zM700 200h200l-300 -300 l-300 300h200v300h200v-300z" />
+<glyph unicode="&#xe198;" d="M600 714l403 -403q94 26 154.5 104t60.5 178q0 121 -85 207.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5q0 -80 56.5 -137t135.5 -57h8zM700 -100h-200v300h-200l300 300 l300 -300h-200v-300z" />
+<glyph unicode="&#xe199;" d="M700 200h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-155l-75 -45h350l-75 45v155z" />
+<glyph unicode="&#xe200;" d="M700 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -12t1 -11q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5 q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350z" />
+<glyph unicode="&#x1f4bc;" d="M800 1000h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5h200q41 0 70.5 -29.5t29.5 -70.5v-100zM500 1000h200v100h-200v-100zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
+<glyph unicode="&#x1f4c5;" d="M1100 900v150q0 21 -14.5 35.5t-35.5 14.5h-150v100h-100v-100h-500v100h-100v-100h-150q-21 0 -35.5 -14.5t-14.5 -35.5v-150h1100zM0 800v-750q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v750h-1100zM100 600h100v-100h-100v100zM300 600h100v-100h-100v100z M500 600h100v-100h-100v100zM700 600h100v-100h-100v100zM900 600h100v-100h-100v100zM100 400h100v-100h-100v100zM300 400h100v-100h-100v100zM500 400h100v-100h-100v100zM700 400h100v-100h-100v100zM900 400h100v-100h-100v100zM100 200h100v-100h-100v100zM300 200 h100v-100h-100v100zM500 200h100v-100h-100v100zM700 200h100v-100h-100v100zM900 200h100v-100h-100v100z" />
+<glyph unicode="&#x1f4cc;" d="M902 1185l283 -282q15 -15 15 -36t-15 -35q-14 -15 -35 -15t-35 15l-36 35l-279 -267v-300l-212 210l-208 -207l-380 -303l303 380l207 208l-210 212h300l267 279l-35 36q-15 14 -15 35t15 35q14 15 35 15t35 -15z" />
+<glyph unicode="&#x1f4ce;" d="M518 119l69 -60l517 511q67 67 95 157t11 183q-16 87 -67 154t-130 103q-69 33 -152 33q-107 0 -197 -55q-40 -24 -111 -95l-512 -512q-68 -68 -81 -163t35 -173q35 -57 94 -89t129 -32q63 0 119 28q33 16 65 40.5t52.5 45.5t59.5 64q40 44 57 61l394 394q35 35 47 84 t-3 96q-27 87 -117 104q-20 2 -29 2q-46 0 -79.5 -17t-67.5 -51l-388 -396l-7 -7l69 -67l377 373q20 22 39 38q23 23 50 23q38 0 53 -36q16 -39 -20 -75l-547 -547q-52 -52 -125 -52q-55 0 -100 33t-54 96q-5 35 2.5 66t31.5 63t42 50t56 54q24 21 44 41l348 348 q52 52 82.5 79.5t84 54t107.5 26.5q25 0 48 -4q95 -17 154 -94.5t51 -175.5q-7 -101 -98 -192l-252 -249l-253 -256z" />
+<glyph unicode="&#x1f4f7;" d="M1200 200v600q0 41 -29.5 70.5t-70.5 29.5h-150q-4 8 -11.5 21.5t-33 48t-53 61t-69 48t-83.5 21.5h-200q-41 0 -82 -20.5t-70 -50t-52 -59t-34 -50.5l-12 -20h-150q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5z M1000 700h-100v100h100v-100zM844 500q0 -100 -72 -172t-172 -72t-172 72t-72 172t72 172t172 72t172 -72t72 -172zM706 500q0 44 -31 75t-75 31t-75 -31t-31 -75t31 -75t75 -31t75 31t31 75z" />
+<glyph unicode="&#x1f512;" d="M900 800h100q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h100v200q0 82 59 141t141 59h300q82 0 141 -59t59 -141v-200zM400 800h300v150q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-150z" />
+<glyph unicode="&#x1f514;" d="M1062 400h17q20 0 33.5 -14.5t13.5 -35.5q0 -20 -13 -40t-31 -27q-22 -9 -63 -23t-167.5 -37t-251.5 -23t-245.5 20.5t-178.5 41.5l-58 20q-18 7 -31 27.5t-13 40.5q0 21 13.5 35.5t33.5 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3 32t29 13h94 q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327zM600 104q-54 0 -103 6q12 -49 40 -79.5t63 -30.5t63 30.5t39 79.5q-48 -6 -102 -6z" />
+<glyph unicode="&#x1f516;" d="M200 0l450 444l450 -443v1150q0 20 -14.5 35t-35.5 15h-800q-21 0 -35.5 -15t-14.5 -35v-1151z" />
+<glyph unicode="&#x1f525;" d="M400 755q2 -12 8 -41.5t8 -43t6 -39.5t3.5 -39.5t-1 -33.5t-6 -31.5t-13.5 -24t-21 -20.5t-31 -12q-38 -10 -67 13t-40.5 61.5t-15 81.5t10.5 75q-52 -46 -83.5 -101t-39 -107t-7.5 -85t5 -63q9 -56 44 -119.5t105 -108.5q31 -21 64 -16t62 23.5t57 49.5t48 61.5t35 60.5 q32 66 39 184.5t-13 157.5q79 -80 122 -164t26 -184q-5 -33 -20.5 -69.5t-37.5 -80.5q-10 -19 -14.5 -29t-12 -26t-9 -23.5t-3 -19t2.5 -15.5t11 -9.5t19.5 -5t30.5 2.5t42 8q57 20 91 34t87.5 44.5t87 64t65.5 88.5t47 122q38 172 -44.5 341.5t-246.5 278.5q22 -44 43 -129 q39 -159 -32 -154q-15 2 -33 9q-79 33 -120.5 100t-44 175.5t48.5 257.5q-13 -8 -34 -23.5t-72.5 -66.5t-88.5 -105.5t-60 -138t-8 -166.5z" />
+<glyph unicode="&#x1f527;" d="M948 778l251 126q13 -175 -151 -267q-123 -70 -253 -23l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-33 101 6 201.5t135 154.5q164 92 306 -9l-259 -138z" />
+</font>
+</defs></svg> 
\ No newline at end of file
diff --git a/static/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf b/static/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf
new file mode 100644
index 0000000..be784dc
Binary files /dev/null and b/static/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf differ
diff --git a/static/assets/fonts/bootstrap/glyphicons-halflings-regular.woff b/static/assets/fonts/bootstrap/glyphicons-halflings-regular.woff
new file mode 100644
index 0000000..2cc3e48
Binary files /dev/null and b/static/assets/fonts/bootstrap/glyphicons-halflings-regular.woff differ
diff --git a/static/assets/jquery.tidy.table.css b/static/assets/jquery.tidy.table.css
new file mode 100644
index 0000000..d19bd21
--- /dev/null
+++ b/static/assets/jquery.tidy.table.css
@@ -0,0 +1,76 @@
+/*
+ *  Tidy Table
+ *  Generate a sortable HTML table from JSON
+ *
+ *  Copyright 2012-2013, Marc S. Brooks (http://mbrooks.info)
+ *  Licensed under the MIT license:
+ *  http://www.opensource.org/licenses/mit-license.php
+ *
+ *  Dependencies:
+ *    jquery.js
+ */
+
+table.tidy_table {
+	background-color: rgba(0,0,0, 0.2);
+	border-collapse: collapse;
+/*	border: 1px solid rgba(0,0,0,0.2); */
+	cursor: pointer;
+	white-space: nowrap;
+}
+
+table.tidy_table thead {
+	border: none;
+}
+
+table.tidy_table tr.check_on {
+	background-color: rgba(255,255,255,0.5);
+}
+
+table.tidy_table tr.check_off {
+	background-color: rgba(0,0,0,0.4);
+}
+
+table.tidy_table th {
+	background-color: rgba(0,0,0,0.6);
+}
+
+table.tidy_table th.sort_asc {
+	background: rgba(0,0,0,0.8) url( /images/arrow_asc.gif ) no-repeat right center;
+}
+
+table.tidy_table th.sort_desc {
+	background: rgba(0,0,0,0.8) url( /images/arrow_desc.gif ) no-repeat right center;
+}
+
+table.tidy_table th,
+table.tidy_table td {
+	padding: 6px 20px 6px 20px;
+}
+
+table.tidy_table td {
+	border-right: none;
+	padding: 7px 20px 7px 20px;
+}
+
+table.tidy_table th:nth-child(1),
+table.tidy_table td:nth-child(1) {
+	width: 10px;
+}
+
+table.tidy_table td:nth-child(1) {
+/*	border-right: 1px solid rgba(0,0,; */
+}
+
+table.tidy_table input[type=checkbox],
+table.tidy_table input[type=checkbox] {
+	display: block;
+	margin: 0px auto 0px auto;
+}
+
+table.tidy_table td:nth-last-child(1) {
+/* 	border-right: none; */
+}
+
+table.tidy_table td {
+/*	border-top: 1px solid rgba(0,0,0,0.2);  */
+}
diff --git a/static/assets/js/FeedEk.js b/static/assets/js/FeedEk.js
new file mode 100644
index 0000000..4a9412d
--- /dev/null
+++ b/static/assets/js/FeedEk.js
@@ -0,0 +1,7 @@
+/*
+* FeedEk jQuery RSS/ATOM Feed Plugin v1.1.2
+* http://jquery-plugins.net/FeedEk/FeedEk.html
+* Author : Engin KIZIL 
+* http://www.enginkizil.com
+*/
+(function (e) { e.fn.FeedEk = function (t) { var n = { FeedUrl: "http://rss.cnn.com/rss/edition.rss", MaxCount: 5, ShowDesc: true, ShowPubDate: true, CharacterLimit: 0, TitleLinkTarget: "_blank" }; if (t) { e.extend(n, t) } var r = e(this).attr("id"); var i; e("#" + r).empty().append('<div style="padding:3px;"><img src="loader.gif" /></div>'); e.ajax({ url: document.location.protocol + "//ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=" + n.MaxCount + "&output=json&q=" + encodeURIComponent(n.FeedUrl) + "&hl=en&callback=?", dataType: "json", success: function (t) { e("#" + r).empty(); var s = ""; e.each(t.responseData.feed.entries, function (e, t) { s += '<li><div class="itemTitle"><a href="' + t.link + '" target="' + n.TitleLinkTarget + '" >' + t.title + "</a></div>"; if (n.ShowPubDate) { i = new Date(t.publishedDate); s += '<div class="itemDate">' + i.toLocaleDateString() + "</div>" } if (n.ShowDesc) { if (n.DescCharacterLimit > 0 && t.content.length > n.DescCharacterLimit) { s += '<div class="itemContent">' + t.content.substr(0, n.DescCharacterLimit) + "...</div>" } else { s += '<div class="itemContent">' + t.content + "</div>" } } }); e("#" + r).append('<ul class="feedEkList">' + s + "</ul>") } }) } })(jQuery)
diff --git a/static/assets/js/google.js b/static/assets/js/google.js
new file mode 100644
index 0000000..c2b810e
--- /dev/null
+++ b/static/assets/js/google.js
@@ -0,0 +1,8 @@
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-46688222-2', 'centos.org');
+  ga('send', 'pageview');
+
diff --git a/static/assets/js/html5.js b/static/assets/js/html5.js
new file mode 100644
index 0000000..087417a
--- /dev/null
+++ b/static/assets/js/html5.js
@@ -0,0 +1,9 @@
+/*
+ HTML5 Shiv v3.6.2pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
+ Uncompressed source: https://github.com/aFarkas/html5shiv
+*/
+(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
+a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}</style>";
+c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
+"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video",version:"3.6.2pre",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment();
+for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);
\ No newline at end of file
diff --git a/static/assets/js/jquery.backstretch.min.js b/static/assets/js/jquery.backstretch.min.js
new file mode 100644
index 0000000..1bb20f8
--- /dev/null
+++ b/static/assets/js/jquery.backstretch.min.js
@@ -0,0 +1,4 @@
+/*! Backstretch - v2.0.4 - 2013-06-19
+* http://srobbin.com/jquery-plugins/backstretch/
+* Copyright (c) 2013 Scott Robbin; Licensed MIT */
+(function(a,d,p){a.fn.backstretch=function(c,b){(c===p||0===c.length)&&a.error("No images were supplied for Backstretch");0===a(d).scrollTop()&&d.scrollTo(0,0);return this.each(function(){var d=a(this),g=d.data("backstretch");if(g){if("string"==typeof c&&"function"==typeof g[c]){g[c](b);return}b=a.extend(g.options,b);g.destroy(!0)}g=new q(this,c,b);d.data("backstretch",g)})};a.backstretch=function(c,b){return a("body").backstretch(c,b).data("backstretch")};a.expr[":"].backstretch=function(c){return a(c).data("backstretch")!==p};a.fn.backstretch.defaults={centeredX:!0,centeredY:!0,duration:5E3,fade:0};var r={left:0,top:0,overflow:"hidden",margin:0,padding:0,height:"100%",width:"100%",zIndex:-999999},s={position:"absolute",display:"none",margin:0,padding:0,border:"none",width:"auto",height:"auto",maxHeight:"none",maxWidth:"none",zIndex:-999999},q=function(c,b,e){this.options=a.extend({},a.fn.backstretch.defaults,e||{});this.images=a.isArray(b)?b:[b];a.each(this.images,function(){a("<img />")[0].src=this});this.isBody=c===document.body;this.$container=a(c);this.$root=this.isBody?l?a(d):a(document):this.$container;c=this.$container.children(".backstretch").first();this.$wrap=c.length?c:a('<div class="backstretch"></div>').css(r).appendTo(this.$container);this.isBody||(c=this.$container.css("position"),b=this.$container.css("zIndex"),this.$container.css({position:"static"===c?"relative":c,zIndex:"auto"===b?0:b,background:"none"}),this.$wrap.css({zIndex:-999998}));this.$wrap.css({position:this.isBody&&l?"fixed":"absolute"});this.index=0;this.show(this.index);a(d).on("resize.backstretch",a.proxy(this.resize,this)).on("orientationchange.backstretch",a.proxy(function(){this.isBody&&0===d.pageYOffset&&(d.scrollTo(0,1),this.resize())},this))};q.prototype={resize:function(){try{var a={left:0,top:0},b=this.isBody?this.$root.width():this.$root.innerWidth(),e=b,g=this.isBody?d.innerHeight?d.innerHeight:this.$root.height():this.$root.innerHeight(),j=e/this.$img.data("ratio"),f;j>=g?(f=(j-g)/2,this.options.centeredY&&(a.top="-"+f+"px")):(j=g,e=j*this.$img.data("ratio"),f=(e-b)/2,this.options.centeredX&&(a.left="-"+f+"px"));this.$wrap.css({width:b,height:g}).find("img:not(.deleteable)").css({width:e,height:j}).css(a)}catch(h){}return this},show:function(c){if(!(Math.abs(c)>this.images.length-1)){var b=this,e=b.$wrap.find("img").addClass("deleteable"),d={relatedTarget:b.$container[0]};b.$container.trigger(a.Event("backstretch.before",d),[b,c]);this.index=c;clearInterval(b.interval);b.$img=a("<img />").css(s).bind("load",function(f){var h=this.width||a(f.target).width();f=this.height||a(f.target).height();a(this).data("ratio",h/f);a(this).fadeIn(b.options.speed||b.options.fade,function(){e.remove();b.paused||b.cycle();a(["after","show"]).each(function(){b.$container.trigger(a.Event("backstretch."+this,d),[b,c])})});b.resize()}).appendTo(b.$wrap);b.$img.attr("src",b.images[c]);return b}},next:function(){return this.show(this.index<this.images.length-1?this.index+1:0)},prev:function(){return this.show(0===this.index?this.images.length-1:this.index-1)},pause:function(){this.paused=!0;return this},resume:function(){this.paused=!1;this.next();return this},cycle:function(){1<this.images.length&&(clearInterval(this.interval),this.interval=setInterval(a.proxy(function(){this.paused||this.next()},this),this.options.duration));return this},destroy:function(c){a(d).off("resize.backstretch orientationchange.backstretch");clearInterval(this.interval);c||this.$wrap.remove();this.$container.removeData("backstretch")}};var l,f=navigator.userAgent,m=navigator.platform,e=f.match(/AppleWebKit\/([0-9]+)/),e=!!e&&e[1],h=f.match(/Fennec\/([0-9]+)/),h=!!h&&h[1],n=f.match(/Opera Mobi\/([0-9]+)/),t=!!n&&n[1],k=f.match(/MSIE ([0-9]+)/),k=!!k&&k[1];l=!((-1<m.indexOf("iPhone")||-1<m.indexOf("iPad")||-1<m.indexOf("iPod"))&&e&&534>e||d.operamini&&"[object OperaMini]"==={}.toString.call(d.operamini)||n&&7458>t||-1<f.indexOf("Android")&&e&&533>e||h&&6>h||"palmGetResource"in d&&e&&534>e||-1<f.indexOf("MeeGo")&&-1<f.indexOf("NokiaBrowser/8.5.0")||k&&6>=k)})(jQuery,window);
\ No newline at end of file
diff --git a/static/assets/js/jquery.csvToTable.js b/static/assets/js/jquery.csvToTable.js
new file mode 100644
index 0000000..b8c819e
--- /dev/null
+++ b/static/assets/js/jquery.csvToTable.js
@@ -0,0 +1,154 @@
+/**
+ * CSV to Table plugin
+ * http://code.google.com/p/jquerycsvtotable/
+ *
+ * Copyright (c) 2010 Steve Sobel
+ * http://honestbleeps.com/
+ *
+ * v0.9 - 2010-06-22 - First release.
+ *
+ * Example implementation:
+ * $('#divID').CSVToTable('test.csv');
+ *
+ * The above line would load 'test.csv' via AJAX and render a table.  If 
+ * headers are not specified, the plugin assumes the first line of the CSV
+ * file contains the header names.
+ *
+ * Configurable options:
+ * separator    - separator to use when parsing CSV/TSV data
+ *              - value will almost always be "," or "\t" (comma or tab)
+ *              - if not specified, default value is ","
+ * headers      - an array of headers for the CSV data
+ *              - if not specified, plugin assumes that the first line of the CSV
+ *                file contains the header names.
+ *              - Example: headers: ['Album Title', 'Artist Name', 'Price ($USD)']
+ * tableClass   - class name to apply to the <table> tag rendered by the plugin.
+ * theadClass   - class name to apply to the <thead> tag rendered by the plugin.
+ * thClass      - class name to apply to the <th> tag rendered by the plugin.
+ * tbodyClass   - class name to apply to the <tbody> tag rendered by the plugin.
+ * trClass      - class name to apply to the <tr> tag rendered by the plugin.
+ * tdClass      - class name to apply to the <td> tag rendered by the plugin.
+ * loadingImage - path to an image to display while CSV/TSV data is loading
+ * loadingText  - text to display while CSV/TSV is loading
+ *              - if not specified, default value is "Loading CSV data..."
+ *
+ *
+ * Upon completion, the plugin triggers a "loadComplete" event so that you
+ * may perform other manipulation on the table after it has loaded. A
+ * common use of this would be to use the jQuery tablesorter plugin, found
+ * at http://tablesorter.com/
+ *
+ * An example of such a call would be as follows, assuming you have loaded
+ * the tablesorter plugin.
+ *
+ * $('#CSVTable').CSVToTable('test.csv', 
+ *     { 
+ *        loadingImage: 'images/loading.gif', 
+ *        startLine: 1,
+ *        headers: ['Album Title', 'Artist Name', 'Price ($USD)']
+ *     }
+ * ).bind("loadComplete",function() { 
+ *     $('#CSVTable').find('TABLE').tablesorter();
+ * });;
+
+ *
+ */
+
+ 
+ (function($){
+
+	/**
+	*
+	* CSV Parser credit goes to Brian Huisman, from his blog entry entitled "CSV String to Array in JavaScript":
+	* http://www.greywyvern.com/?post=258
+	*
+	*/
+	String.prototype.splitCSV = function(sep) {
+		for (var thisCSV = this.split(sep = sep || ","), x = thisCSV.length - 1, tl; x >= 0; x--) {
+			if (thisCSV[x].replace(/"\s+$/, '"').charAt(thisCSV[x].length - 1) == '"') {
+				if ((tl = thisCSV[x].replace(/^\s+"/, '"')).length > 1 && tl.charAt(0) == '"') {
+					thisCSV[x] = thisCSV[x].replace(/^\s*"|"\s*$/g, '').replace(/""/g, '"');
+				} else if (x) {
+					thisCSV.splice(x - 1, 2, [thisCSV[x - 1], thisCSV[x]].join(sep));
+				} else thisCSV = thisCSV.shift().split(sep).concat(thisCSV);
+			} else thisCSV[x].replace(/""/g, '"');
+		} return thisCSV;
+	};
+
+	$.fn.CSVToTable = function(csvFile, options) {
+		var defaults = {
+			tableClass: "CSVTable",
+			theadClass: "",
+			thClass: "",
+			tbodyClass: "",
+			trClass: "",
+			tdClass: "",
+			loadingImage: "",
+			loadingText: "Loading CSV data...",
+			separator: ",",
+			startLine: 0
+		};	
+		var options = $.extend(defaults, options);
+		return this.each(function() {
+			var obj = $(this);
+			var error = '';
+			(options.loadingImage) ? loading = '<div style="text-align: center"><img alt="' + options.loadingText + '" src="' + options.loadingImage + '" /><br>' + options.loadingText + '</div>' : loading = options.loadingText;
+			obj.html(loading);
+			$.get(csvFile, function(data) {
+				var tableHTML = '<table class="' + options.tableClass + '">';
+				var lines = data.replace('\r','').split('\n');
+				var printedLines = 0;
+				var headerCount = 0;
+				var headers = new Array();
+				$.each(lines, function(lineCount, line) {
+					if ((lineCount == 0) && (typeof(options.headers) != 'undefined')) {
+						headers = options.headers;
+						headerCount = headers.length;
+						tableHTML += '<thead class="' + options.theadClass + '"><tr class="' + options.trClass + '">';
+						$.each(headers, function(headerCount, header) {
+							tableHTML += '<th class="' + options.thClass + '">' + header + '</th>';
+						});
+						tableHTML += '</tr></thead><tbody class="' + options.tbodyClass + '">';
+					}
+					if ((lineCount == options.startLine) && (typeof(options.headers) == 'undefined')) {
+						headers = line.splitCSV(options.separator);
+						headerCount = headers.length;
+						tableHTML += '<thead class="' + options.theadClass + '"><tr class="' + options.trClass + '">';
+						$.each(headers, function(headerCount, header) {
+							tableHTML += '<th class="' + options.thClass + '">' + header + '</th>';
+						});
+						tableHTML += '</tr></thead><tbody class="' + options.tbodyClass + '">';
+					} else if (lineCount >= options.startLine) {
+						var items = line.splitCSV(options.separator);
+						if (items.length > 1) {
+							printedLines++;
+							if (items.length != headerCount) {
+								error += 'error on line ' + lineCount + ': Item count (' + items.length + ') does not match header count (' + headerCount + ') \n';
+							}
+							(printedLines % 2) ? oddOrEven = 'odd' : oddOrEven = 'even';
+							tableHTML += '<tr class="' + options.trClass + ' ' + oddOrEven + '">';
+							$.each(items, function(itemCount, item) {
+								tableHTML += '<td class="' + options.tdClass + '">' + item + '</td>';
+							});
+							tableHTML += '</tr>';
+						}
+					}
+				});
+				tableHTML += '</tbody></table>';
+				if (error) {
+					obj.html(error);
+				} else {
+					obj.fadeOut(500, function() {
+						obj.html(tableHTML)
+					}).fadeIn(function() {
+						// trigger loadComplete
+						setTimeout(function() {
+							obj.trigger("loadComplete");	
+						},0);
+					});
+				}
+			});
+		});
+	};
+
+})(jQuery);
diff --git a/static/assets/js/jquery.csvToTable2.js b/static/assets/js/jquery.csvToTable2.js
new file mode 100644
index 0000000..358e1fe
--- /dev/null
+++ b/static/assets/js/jquery.csvToTable2.js
@@ -0,0 +1,188 @@
+/**
+ * CSV to Table plugin
+ * http://code.google.com/p/jquerycsvtotable/
+ *
+ * Copyright (c) 2010 Steve Sobel
+ * http://honestbleeps.com/
+ *
+ * v0.9 - 2010-06-22 - First release.
+ *
+ * Example implementation:
+ * $('#divID').CSVToTable('test.csv');
+ *
+ * The above line would load 'test.csv' via AJAX and render a table.  If 
+ * headers are not specified, the plugin assumes the first line of the CSV
+ * file contains the header names.
+ *
+ * Configurable options:
+ * separator    - separator to use when parsing CSV/TSV data
+ *              - value will almost always be "," or "\t" (comma or tab)
+ *              - if not specified, default value is ","
+ * headers      - an array of headers for the CSV data
+ *              - if not specified, plugin assumes that the first line of the CSV
+ *                file contains the header names.
+ *              - Example: headers: ['Album Title', 'Artist Name', 'Price ($USD)']
+ * tableClass   - class name to apply to the <table> tag rendered by the plugin.
+ * theadClass   - class name to apply to the <thead> tag rendered by the plugin.
+ * thClass      - class name to apply to the <th> tag rendered by the plugin.
+ * tbodyClass   - class name to apply to the <tbody> tag rendered by the plugin.
+ * trClass      - class name to apply to the <tr> tag rendered by the plugin.
+ * tdClass      - class name to apply to the <td> tag rendered by the plugin.
+ * loadingImage - path to an image to display while CSV/TSV data is loading
+ * loadingText  - text to display while CSV/TSV is loading
+ *              - if not specified, default value is "Loading CSV data..."
+ *
+ *
+ * Upon completion, the plugin triggers a "loadComplete" event so that you
+ * may perform other manipulation on the table after it has loaded. A
+ * common use of this would be to use the jQuery tablesorter plugin, found
+ * at http://tablesorter.com/
+ *
+ * An example of such a call would be as follows, assuming you have loaded
+ * the tablesorter plugin.
+ *
+ * $('#CSVTable').CSVToTable('test.csv', 
+ *     { 
+ *        loadingImage: 'images/loading.gif', 
+ *        startLine: 1,
+ *        headers: ['Album Title', 'Artist Name', 'Price ($USD)']
+ *     }
+ * ).bind("loadComplete",function() { 
+ *     $('#CSVTable').find('TABLE').tablesorter();
+ * });;
+
+ *
+ */
+
+ 
+ (function($){
+
+	/**
+	*
+	* CSV Parser credit goes to Brian Huisman, from his blog entry entitled "CSV String to Array in JavaScript":
+	* http://www.greywyvern.com/?post=258
+	*
+	*/
+	String.prototype.splitCSV = function(sep) {
+		for (var thisCSV = this.split(sep = sep || ","), x = thisCSV.length - 1, tl; x >= 0; x--) {
+			if (thisCSV[x].replace(/"\s+$/, '"').charAt(thisCSV[x].length - 1) == '"') {
+				if ((tl = thisCSV[x].replace(/^\s+"/, '"')).length > 1 && tl.charAt(0) == '"') {
+					thisCSV[x] = thisCSV[x].replace(/^\s*"|"\s*$/g, '').replace(/""/g, '"');
+				} else if (x) {
+					thisCSV.splice(x - 1, 2, [thisCSV[x - 1], thisCSV[x]].join(sep));
+				} else thisCSV = thisCSV.shift().split(sep).concat(thisCSV);
+			} else thisCSV[x].replace(/""/g, '"');
+		} return thisCSV;
+	};
+
+	$.fn.CSVToTable = function(csvFile, options) {
+		
+		this.processRow = function(headers , items){
+			var outItems = [];
+			var header;
+			for(var h = 0 ; h <= headers.length ; h++){
+				header = headers[h];
+				if(typeof(header) == 'string' ){
+					outItems.push(options.preRenderItem(header , items[h]));
+				}else if(typeof(header) != 'undefined') {
+					if(header.hidden) continue;
+					outItems.push(options.itemMerger(header , items));
+				}
+			}
+			return outItems;
+		};
+		this.preRenderItem = function(headerLabel , item) {
+			return item;
+		};
+		this.itemMerger = function(header , items) {
+			var outItem = [];
+			for(var i in header.items){
+				outItem.push(options.preRenderItem(items[i]));
+			}
+			return outItem.join(' ');
+		};
+		var defaults = {
+			tableClass: "CSVTable",
+			theadClass: "",
+			thClass: "",
+			tbodyClass: "",
+			trClass: "",
+			tdClass: "",
+			loadingImage: "",
+			loadingText: "Loading CSV data...",
+			separator: ",",
+			startLine: 0,
+			rowProcessor: this.processRow,
+			preRenderItem: this.preRenderItem,
+			itemMerger: this.itemMerger
+		};
+		var options = $.extend(defaults, options);
+		return this.each(function() {
+			var obj = $(this);
+			var error = '';
+			(options.loadingImage) ? loading = '<div style="text-align: center"><img alt="' + options.loadingText + '" src="' + options.loadingImage + '" /><br>' + options.loadingText + '</div>' : loading = options.loadingText;
+			obj.html(loading);
+			$.get(csvFile, function(data) {
+				var tableHTML = '<table class="' + options.tableClass + '">';
+				var lines = data.replace('\r','').split('\n');
+				var printedLines = 0;
+				var headerCount = 0;
+				var headers = new Array();
+				var headerLabel;
+				$.each(lines, function(lineCount, line) {
+					if ((lineCount == 0) && (typeof(options.headers) != 'undefined')) {
+						headers = options.headers;
+						tableHTML += '<thead class="' + options.theadClass + '"><tr class="' + options.trClass + '">';
+						$.each(headers, function(index, header) {
+							if(typeof(header) != 'string' && typeof(header) != 'undefined') {
+								if(header.hidden) return;
+							}
+							headerCount++;
+							headerLabel = typeof(header) == 'string' ? header : header.label;
+							tableHTML += '<th class="' + options.thClass + '">' + headerLabel + '</th>';
+						});
+						tableHTML += '</tr></thead><tbody class="' + options.tbodyClass + '">';
+					}
+					if ((lineCount == options.startLine) && (typeof(options.headers) == 'undefined')) {
+						headers = line.splitCSV(options.separator);
+						headerCount = headers.length;
+						tableHTML += '<thead class="' + options.theadClass + '"><tr class="' + options.trClass + '">';
+						$.each(headers, function(headerCount, header) {
+							tableHTML += '<th class="' + options.thClass + '">' + header + '</th>';
+						});
+						tableHTML += '</tr></thead><tbody class="' + options.tbodyClass + '">';
+					} else if (lineCount >= options.startLine) {
+						var items = line.splitCSV(options.separator);
+						if (items.length > 1) {
+							printedLines++;
+							items = options.rowProcessor(headers , items);
+							if (items.length != headerCount) {
+								error += 'error on line ' + lineCount + ': Item count (' + items.length + ') does not match header count (' + headerCount + ') \n';
+							}
+							(printedLines % 2) ? oddOrEven = 'odd' : oddOrEven = 'even';
+							tableHTML += '<tr class="' + options.trClass + ' ' + oddOrEven + '">';
+							$.each(items, function(itemCount, item) {
+								tableHTML += '<td class="' + options.tdClass + '">' + item + '</td>';
+							});
+							tableHTML += '</tr>';
+						}
+					}
+				});
+				tableHTML += '</tbody></table>';
+				if (error) {
+					obj.html(error);
+				} else {
+					obj.fadeOut(500, function() {
+						obj.html(tableHTML)
+					}).fadeIn(function() {
+						// trigger loadComplete
+						setTimeout(function() {
+							obj.trigger("loadComplete");	
+						},0);
+					});
+				}
+			} , "text");
+		});
+	};
+
+})(jQuery);
diff --git a/static/assets/js/jquery.cycle2.center.min.js b/static/assets/js/jquery.cycle2.center.min.js
new file mode 100644
index 0000000..f36a7cd
--- /dev/null
+++ b/static/assets/js/jquery.cycle2.center.min.js
@@ -0,0 +1,2 @@
+/* Plugin for Cycle2; Copyright (c) 2012 M. Alsup; v20131022 */
+(function(e){"use strict";e.extend(e.fn.cycle.defaults,{centerHorz:!1,centerVert:!1}),e(document).on("cycle-pre-initialize",function(i,t){function n(){clearTimeout(c),c=setTimeout(l,50)}function s(){clearTimeout(c),clearTimeout(a),e(window).off("resize orientationchange",n)}function o(){t.slides.each(r)}function l(){r.apply(t.container.find("."+t.slideActiveClass)),clearTimeout(a),a=setTimeout(o,50)}function r(){var i=e(this),n=t.container.width(),s=t.container.height(),o=i.outerWidth(),l=i.outerHeight();t.centerHorz&&n>=o&&i.css("marginLeft",(n-o)/2),t.centerVert&&s>=l&&i.css("marginTop",(s-l)/2)}if(t.centerHorz||t.centerVert){var c,a;e(window).on("resize orientationchange",n),t.container.on("cycle-destroyed",s),t.container.on("cycle-initialized cycle-slide-added cycle-slide-removed",function(){n()}),l()}})})(jQuery);
\ No newline at end of file
diff --git a/static/assets/js/jquery.cycle2.min.js b/static/assets/js/jquery.cycle2.min.js
new file mode 100644
index 0000000..9f9ec0f
--- /dev/null
+++ b/static/assets/js/jquery.cycle2.min.js
@@ -0,0 +1,17 @@
+/*!
+* jQuery Cycle2; build: v20131005
+* http://jquery.malsup.com/cycle2/
+* Copyright (c) 2013 M. Alsup; Dual licensed: MIT/GPL
+*/
+/*! core engine; version: 20131003 */
+(function(e){"use strict";function t(e){return(e||"").toLowerCase()}var i="20131003";e.fn.cycle=function(i){var n;return 0!==this.length||e.isReady?this.each(function(){var n,s,o,c,r=e(this),l=e.fn.cycle.log;if(!r.data("cycle.opts")){(r.data("cycle-log")===!1||i&&i.log===!1||s&&s.log===!1)&&(l=e.noop),l("--c2 init--"),n=r.data();for(var a in n)n.hasOwnProperty(a)&&/^cycle[A-Z]+/.test(a)&&(c=n[a],o=a.match(/^cycle(.*)/)[1].replace(/^[A-Z]/,t),l(o+":",c,"("+typeof c+")"),n[o]=c);s=e.extend({},e.fn.cycle.defaults,n,i||{}),s.timeoutId=0,s.paused=s.paused||!1,s.container=r,s._maxZ=s.maxZ,s.API=e.extend({_container:r},e.fn.cycle.API),s.API.log=l,s.API.trigger=function(e,t){return s.container.trigger(e,t),s.API},r.data("cycle.opts",s),r.data("cycle.API",s.API),s.API.trigger("cycle-bootstrap",[s,s.API]),s.API.addInitialSlides(),s.API.preInitSlideshow(),s.slides.length&&s.API.initSlideshow()}}):(n={s:this.selector,c:this.context},e.fn.cycle.log("requeuing slideshow (dom not ready)"),e(function(){e(n.s,n.c).cycle(i)}),this)},e.fn.cycle.API={opts:function(){return this._container.data("cycle.opts")},addInitialSlides:function(){var t=this.opts(),i=t.slides;t.slideCount=0,t.slides=e(),i=i.jquery?i:t.container.find(i),t.random&&i.sort(function(){return Math.random()-.5}),t.API.add(i)},preInitSlideshow:function(){var t=this.opts();t.API.trigger("cycle-pre-initialize",[t]);var i=e.fn.cycle.transitions[t.fx];i&&e.isFunction(i.preInit)&&i.preInit(t),t._preInitialized=!0},postInitSlideshow:function(){var t=this.opts();t.API.trigger("cycle-post-initialize",[t]);var i=e.fn.cycle.transitions[t.fx];i&&e.isFunction(i.postInit)&&i.postInit(t)},initSlideshow:function(){var t,i=this.opts(),n=i.container;i.API.calcFirstSlide(),"static"==i.container.css("position")&&i.container.css("position","relative"),e(i.slides[i.currSlide]).css("opacity",1).show(),i.API.stackSlides(i.slides[i.currSlide],i.slides[i.nextSlide],!i.reverse),i.pauseOnHover&&(i.pauseOnHover!==!0&&(n=e(i.pauseOnHover)),n.hover(function(){i.API.pause(!0)},function(){i.API.resume(!0)})),i.timeout&&(t=i.API.getSlideOpts(i.currSlide),i.API.queueTransition(t,t.timeout+i.delay)),i._initialized=!0,i.API.updateView(!0),i.API.trigger("cycle-initialized",[i]),i.API.postInitSlideshow()},pause:function(t){var i=this.opts(),n=i.API.getSlideOpts(),s=i.hoverPaused||i.paused;t?i.hoverPaused=!0:i.paused=!0,s||(i.container.addClass("cycle-paused"),i.API.trigger("cycle-paused",[i]).log("cycle-paused"),n.timeout&&(clearTimeout(i.timeoutId),i.timeoutId=0,i._remainingTimeout-=e.now()-i._lastQueue,(0>i._remainingTimeout||isNaN(i._remainingTimeout))&&(i._remainingTimeout=void 0)))},resume:function(e){var t=this.opts(),i=!t.hoverPaused&&!t.paused;e?t.hoverPaused=!1:t.paused=!1,i||(t.container.removeClass("cycle-paused"),0===t.slides.filter(":animated").length&&t.API.queueTransition(t.API.getSlideOpts(),t._remainingTimeout),t.API.trigger("cycle-resumed",[t,t._remainingTimeout]).log("cycle-resumed"))},add:function(t,i){var n,s=this.opts(),o=s.slideCount,c=!1;"string"==e.type(t)&&(t=e.trim(t)),e(t).each(function(){var t,n=e(this);i?s.container.prepend(n):s.container.append(n),s.slideCount++,t=s.API.buildSlideOpts(n),s.slides=i?e(n).add(s.slides):s.slides.add(n),s.API.initSlide(t,n,--s._maxZ),n.data("cycle.opts",t),s.API.trigger("cycle-slide-added",[s,t,n])}),s.API.updateView(!0),c=s._preInitialized&&2>o&&s.slideCount>=1,c&&(s._initialized?s.timeout&&(n=s.slides.length,s.nextSlide=s.reverse?n-1:1,s.timeoutId||s.API.queueTransition(s)):s.API.initSlideshow())},calcFirstSlide:function(){var e,t=this.opts();e=parseInt(t.startingSlide||0,10),(e>=t.slides.length||0>e)&&(e=0),t.currSlide=e,t.reverse?(t.nextSlide=e-1,0>t.nextSlide&&(t.nextSlide=t.slides.length-1)):(t.nextSlide=e+1,t.nextSlide==t.slides.length&&(t.nextSlide=0))},calcNextSlide:function(){var e,t=this.opts();t.reverse?(e=0>t.nextSlide-1,t.nextSlide=e?t.slideCount-1:t.nextSlide-1,t.currSlide=e?0:t.nextSlide+1):(e=t.nextSlide+1==t.slides.length,t.nextSlide=e?0:t.nextSlide+1,t.currSlide=e?t.slides.length-1:t.nextSlide-1)},calcTx:function(t,i){var n,s=t;return i&&s.manualFx&&(n=e.fn.cycle.transitions[s.manualFx]),n||(n=e.fn.cycle.transitions[s.fx]),n||(n=e.fn.cycle.transitions.fade,s.API.log('Transition "'+s.fx+'" not found.  Using fade.')),n},prepareTx:function(e,t){var i,n,s,o,c,r=this.opts();return 2>r.slideCount?(r.timeoutId=0,void 0):(!e||r.busy&&!r.manualTrump||(r.API.stopTransition(),r.busy=!1,clearTimeout(r.timeoutId),r.timeoutId=0),r.busy||(0!==r.timeoutId||e)&&(n=r.slides[r.currSlide],s=r.slides[r.nextSlide],o=r.API.getSlideOpts(r.nextSlide),c=r.API.calcTx(o,e),r._tx=c,e&&void 0!==o.manualSpeed&&(o.speed=o.manualSpeed),r.nextSlide!=r.currSlide&&(e||!r.paused&&!r.hoverPaused&&r.timeout)?(r.API.trigger("cycle-before",[o,n,s,t]),c.before&&c.before(o,n,s,t),i=function(){r.busy=!1,r.container.data("cycle.opts")&&(c.after&&c.after(o,n,s,t),r.API.trigger("cycle-after",[o,n,s,t]),r.API.queueTransition(o),r.API.updateView(!0))},r.busy=!0,c.transition?c.transition(o,n,s,t,i):r.API.doTransition(o,n,s,t,i),r.API.calcNextSlide(),r.API.updateView()):r.API.queueTransition(o)),void 0)},doTransition:function(t,i,n,s,o){var c=t,r=e(i),l=e(n),a=function(){l.animate(c.animIn||{opacity:1},c.speed,c.easeIn||c.easing,o)};l.css(c.cssBefore||{}),r.animate(c.animOut||{},c.speed,c.easeOut||c.easing,function(){r.css(c.cssAfter||{}),c.sync||a()}),c.sync&&a()},queueTransition:function(t,i){var n=this.opts(),s=void 0!==i?i:t.timeout;return 0===n.nextSlide&&0===--n.loop?(n.API.log("terminating; loop=0"),n.timeout=0,s?setTimeout(function(){n.API.trigger("cycle-finished",[n])},s):n.API.trigger("cycle-finished",[n]),n.nextSlide=n.currSlide,void 0):(s&&(n._lastQueue=e.now(),void 0===i&&(n._remainingTimeout=t.timeout),n.paused||n.hoverPaused||(n.timeoutId=setTimeout(function(){n.API.prepareTx(!1,!n.reverse)},s))),void 0)},stopTransition:function(){var e=this.opts();e.slides.filter(":animated").length&&(e.slides.stop(!1,!0),e.API.trigger("cycle-transition-stopped",[e])),e._tx&&e._tx.stopTransition&&e._tx.stopTransition(e)},advanceSlide:function(e){var t=this.opts();return clearTimeout(t.timeoutId),t.timeoutId=0,t.nextSlide=t.currSlide+e,0>t.nextSlide?t.nextSlide=t.slides.length-1:t.nextSlide>=t.slides.length&&(t.nextSlide=0),t.API.prepareTx(!0,e>=0),!1},buildSlideOpts:function(i){var n,s,o=this.opts(),c=i.data()||{};for(var r in c)c.hasOwnProperty(r)&&/^cycle[A-Z]+/.test(r)&&(n=c[r],s=r.match(/^cycle(.*)/)[1].replace(/^[A-Z]/,t),o.API.log("["+(o.slideCount-1)+"]",s+":",n,"("+typeof n+")"),c[s]=n);c=e.extend({},e.fn.cycle.defaults,o,c),c.slideNum=o.slideCount;try{delete c.API,delete c.slideCount,delete c.currSlide,delete c.nextSlide,delete c.slides}catch(l){}return c},getSlideOpts:function(t){var i=this.opts();void 0===t&&(t=i.currSlide);var n=i.slides[t],s=e(n).data("cycle.opts");return e.extend({},i,s)},initSlide:function(t,i,n){var s=this.opts();i.css(t.slideCss||{}),n>0&&i.css("zIndex",n),isNaN(t.speed)&&(t.speed=e.fx.speeds[t.speed]||e.fx.speeds._default),t.sync||(t.speed=t.speed/2),i.addClass(s.slideClass)},updateView:function(e,t){var i=this.opts();if(i._initialized){var n=i.API.getSlideOpts(),s=i.slides[i.currSlide];!e&&t!==!0&&(i.API.trigger("cycle-update-view-before",[i,n,s]),0>i.updateView)||(i.slideActiveClass&&i.slides.removeClass(i.slideActiveClass).eq(i.currSlide).addClass(i.slideActiveClass),e&&i.hideNonActive&&i.slides.filter(":not(."+i.slideActiveClass+")").hide(),i.API.trigger("cycle-update-view",[i,n,s,e]),e&&i.API.trigger("cycle-update-view-after",[i,n,s]))}},getComponent:function(t){var i=this.opts(),n=i[t];return"string"==typeof n?/^\s*[\>|\+|~]/.test(n)?i.container.find(n):e(n):n.jquery?n:e(n)},stackSlides:function(t,i,n){var s=this.opts();t||(t=s.slides[s.currSlide],i=s.slides[s.nextSlide],n=!s.reverse),e(t).css("zIndex",s.maxZ);var o,c=s.maxZ-2,r=s.slideCount;if(n){for(o=s.currSlide+1;r>o;o++)e(s.slides[o]).css("zIndex",c--);for(o=0;s.currSlide>o;o++)e(s.slides[o]).css("zIndex",c--)}else{for(o=s.currSlide-1;o>=0;o--)e(s.slides[o]).css("zIndex",c--);for(o=r-1;o>s.currSlide;o--)e(s.slides[o]).css("zIndex",c--)}e(i).css("zIndex",s.maxZ-1)},getSlideIndex:function(e){return this.opts().slides.index(e)}},e.fn.cycle.log=function(){window.console&&console.log&&console.log("[cycle2] "+Array.prototype.join.call(arguments," "))},e.fn.cycle.version=function(){return"Cycle2: "+i},e.fn.cycle.transitions={custom:{},none:{before:function(e,t,i,n){e.API.stackSlides(i,t,n),e.cssBefore={opacity:1,display:"block"}}},fade:{before:function(t,i,n,s){var o=t.API.getSlideOpts(t.nextSlide).slideCss||{};t.API.stackSlides(i,n,s),t.cssBefore=e.extend(o,{opacity:0,display:"block"}),t.animIn={opacity:1},t.animOut={opacity:0}}},fadeout:{before:function(t,i,n,s){var o=t.API.getSlideOpts(t.nextSlide).slideCss||{};t.API.stackSlides(i,n,s),t.cssBefore=e.extend(o,{opacity:1,display:"block"}),t.animOut={opacity:0}}},scrollHorz:{before:function(e,t,i,n){e.API.stackSlides(t,i,n);var s=e.container.css("overflow","hidden").width();e.cssBefore={left:n?s:-s,top:0,opacity:1,display:"block"},e.cssAfter={zIndex:e._maxZ-2,left:0},e.animIn={left:0},e.animOut={left:n?-s:s}}}},e.fn.cycle.defaults={allowWrap:!0,autoSelector:".cycle-slideshow[data-cycle-auto-init!=false]",delay:0,easing:null,fx:"fade",hideNonActive:!0,loop:0,manualFx:void 0,manualSpeed:void 0,manualTrump:!0,maxZ:100,pauseOnHover:!1,reverse:!1,slideActiveClass:"cycle-slide-active",slideClass:"cycle-slide",slideCss:{position:"absolute",top:0,left:0},slides:"> img",speed:500,startingSlide:0,sync:!0,timeout:4e3,updateView:-1},e(document).ready(function(){e(e.fn.cycle.defaults.autoSelector).cycle()})})(jQuery),/*! Cycle2 autoheight plugin; Copyright (c) M.Alsup, 2012; version: 20130304 */
+function(e){"use strict";function t(t,n){var s,o,c,r=n.autoHeight;if("container"==r)o=e(n.slides[n.currSlide]).outerHeight(),n.container.height(o);else if(n._autoHeightRatio)n.container.height(n.container.width()/n._autoHeightRatio);else if("calc"===r||"number"==e.type(r)&&r>=0){if(c="calc"===r?i(t,n):r>=n.slides.length?0:r,c==n._sentinelIndex)return;n._sentinelIndex=c,n._sentinel&&n._sentinel.remove(),s=e(n.slides[c].cloneNode(!0)),s.removeAttr("id name rel").find("[id],[name],[rel]").removeAttr("id name rel"),s.css({position:"static",visibility:"hidden",display:"block"}).prependTo(n.container).addClass("cycle-sentinel cycle-slide").removeClass("cycle-slide-active"),s.find("*").css("visibility","hidden"),n._sentinel=s}}function i(t,i){var n=0,s=-1;return i.slides.each(function(t){var i=e(this).height();i>s&&(s=i,n=t)}),n}function n(t,i,n,s){var o=e(s).outerHeight(),c=i.sync?i.speed/2:i.speed;i.container.animate({height:o},c)}function s(i,o){o._autoHeightOnResize&&(e(window).off("resize orientationchange",o._autoHeightOnResize),o._autoHeightOnResize=null),o.container.off("cycle-slide-added cycle-slide-removed",t),o.container.off("cycle-destroyed",s),o.container.off("cycle-before",n),o._sentinel&&(o._sentinel.remove(),o._sentinel=null)}e.extend(e.fn.cycle.defaults,{autoHeight:0}),e(document).on("cycle-initialized",function(i,o){function c(){t(i,o)}var r,l=o.autoHeight,a=e.type(l),d=null;("string"===a||"number"===a)&&(o.container.on("cycle-slide-added cycle-slide-removed",t),o.container.on("cycle-destroyed",s),"container"==l?o.container.on("cycle-before",n):"string"===a&&/\d+\:\d+/.test(l)&&(r=l.match(/(\d+)\:(\d+)/),r=r[1]/r[2],o._autoHeightRatio=r),"number"!==a&&(o._autoHeightOnResize=function(){clearTimeout(d),d=setTimeout(c,50)},e(window).on("resize orientationchange",o._autoHeightOnResize)),setTimeout(c,30))})}(jQuery),/*! caption plugin for Cycle2;  version: 20130306 */
+function(e){"use strict";e.extend(e.fn.cycle.defaults,{caption:"> .cycle-caption",captionTemplate:"{{slideNum}} / {{slideCount}}",overlay:"> .cycle-overlay",overlayTemplate:"<div>{{title}}</div><div>{{desc}}</div>",captionModule:"caption"}),e(document).on("cycle-update-view",function(t,i,n,s){"caption"===i.captionModule&&e.each(["caption","overlay"],function(){var e=this,t=n[e+"Template"],o=i.API.getComponent(e);o.length&&t?(o.html(i.API.tmpl(t,n,i,s)),o.show()):o.hide()})}),e(document).on("cycle-destroyed",function(t,i){var n;e.each(["caption","overlay"],function(){var e=this,t=i[e+"Template"];i[e]&&t&&(n=i.API.getComponent("caption"),n.empty())})})}(jQuery),/*! command plugin for Cycle2;  version: 20130707 */
+function(e){"use strict";var t=e.fn.cycle;e.fn.cycle=function(i){var n,s,o,c=e.makeArray(arguments);return"number"==e.type(i)?this.cycle("goto",i):"string"==e.type(i)?this.each(function(){var r;return n=i,o=e(this).data("cycle.opts"),void 0===o?(t.log('slideshow must be initialized before sending commands; "'+n+'" ignored'),void 0):(n="goto"==n?"jump":n,s=o.API[n],e.isFunction(s)?(r=e.makeArray(c),r.shift(),s.apply(o.API,r)):(t.log("unknown command: ",n),void 0))}):t.apply(this,arguments)},e.extend(e.fn.cycle,t),e.extend(t.API,{next:function(){var e=this.opts();if(!e.busy||e.manualTrump){var t=e.reverse?-1:1;e.allowWrap===!1&&e.currSlide+t>=e.slideCount||(e.API.advanceSlide(t),e.API.trigger("cycle-next",[e]).log("cycle-next"))}},prev:function(){var e=this.opts();if(!e.busy||e.manualTrump){var t=e.reverse?1:-1;e.allowWrap===!1&&0>e.currSlide+t||(e.API.advanceSlide(t),e.API.trigger("cycle-prev",[e]).log("cycle-prev"))}},destroy:function(){this.stop();var t=this.opts(),i=e.isFunction(e._data)?e._data:e.noop;clearTimeout(t.timeoutId),t.timeoutId=0,t.API.stop(),t.API.trigger("cycle-destroyed",[t]).log("cycle-destroyed"),t.container.removeData(),i(t.container[0],"parsedAttrs",!1),t.retainStylesOnDestroy||(t.container.removeAttr("style"),t.slides.removeAttr("style"),t.slides.removeClass(t.slideActiveClass)),t.slides.each(function(){e(this).removeData(),i(this,"parsedAttrs",!1)})},jump:function(e){var t,i=this.opts();if(!i.busy||i.manualTrump){var n=parseInt(e,10);if(isNaN(n)||0>n||n>=i.slides.length)return i.API.log("goto: invalid slide index: "+n),void 0;if(n==i.currSlide)return i.API.log("goto: skipping, already on slide",n),void 0;i.nextSlide=n,clearTimeout(i.timeoutId),i.timeoutId=0,i.API.log("goto: ",n," (zero-index)"),t=i.currSlide<i.nextSlide,i.API.prepareTx(!0,t)}},stop:function(){var t=this.opts(),i=t.container;clearTimeout(t.timeoutId),t.timeoutId=0,t.API.stopTransition(),t.pauseOnHover&&(t.pauseOnHover!==!0&&(i=e(t.pauseOnHover)),i.off("mouseenter mouseleave")),t.API.trigger("cycle-stopped",[t]).log("cycle-stopped")},reinit:function(){var e=this.opts();e.API.destroy(),e.container.cycle()},remove:function(t){for(var i,n,s=this.opts(),o=[],c=1,r=0;s.slides.length>r;r++)i=s.slides[r],r==t?n=i:(o.push(i),e(i).data("cycle.opts").slideNum=c,c++);n&&(s.slides=e(o),s.slideCount--,e(n).remove(),t==s.currSlide?s.API.advanceSlide(1):s.currSlide>t?s.currSlide--:s.currSlide++,s.API.trigger("cycle-slide-removed",[s,t,n]).log("cycle-slide-removed"),s.API.updateView())}}),e(document).on("click.cycle","[data-cycle-cmd]",function(t){t.preventDefault();var i=e(this),n=i.data("cycle-cmd"),s=i.data("cycle-context")||".cycle-slideshow";e(s).cycle(n,i.data("cycle-arg"))})}(jQuery),/*! hash plugin for Cycle2;  version: 20130905 */
+function(e){"use strict";function t(t,i){var n;return t._hashFence?(t._hashFence=!1,void 0):(n=window.location.hash.substring(1),t.slides.each(function(s){if(e(this).data("cycle-hash")==n){if(i===!0)t.startingSlide=s;else{var o=s>t.currSlide;t.nextSlide=s,t.API.prepareTx(!0,o)}return!1}}),void 0)}e(document).on("cycle-pre-initialize",function(i,n){t(n,!0),n._onHashChange=function(){t(n,!1)},e(window).on("hashchange",n._onHashChange)}),e(document).on("cycle-update-view",function(e,t,i){i.hash&&"#"+i.hash!=window.location.hash&&(t._hashFence=!0,window.location.hash=i.hash)}),e(document).on("cycle-destroyed",function(t,i){i._onHashChange&&e(window).off("hashchange",i._onHashChange)})}(jQuery),/*! loader plugin for Cycle2;  version: 20130307 */
+function(e){"use strict";e.extend(e.fn.cycle.defaults,{loader:!1}),e(document).on("cycle-bootstrap",function(t,i){function n(t,n){function o(t){var o;"wait"==i.loader?(r.push(t),0===a&&(r.sort(c),s.apply(i.API,[r,n]),i.container.removeClass("cycle-loading"))):(o=e(i.slides[i.currSlide]),s.apply(i.API,[t,n]),o.show(),i.container.removeClass("cycle-loading"))}function c(e,t){return e.data("index")-t.data("index")}var r=[];if("string"==e.type(t))t=e.trim(t);else if("array"===e.type(t))for(var l=0;t.length>l;l++)t[l]=e(t[l])[0];t=e(t);var a=t.length;a&&(t.hide().appendTo("body").each(function(t){function c(){0===--l&&(--a,o(d))}var l=0,d=e(this),u=d.is("img")?d:d.find("img");return d.data("index",t),u=u.filter(":not(.cycle-loader-ignore)").filter(':not([src=""])'),u.length?(l=u.length,u.each(function(){this.complete?c():e(this).load(function(){c()}).error(function(){0===--l&&(i.API.log("slide skipped; img not loaded:",this.src),0===--a&&"wait"==i.loader&&s.apply(i.API,[r,n]))})}),void 0):(--a,r.push(d),void 0)}),a&&i.container.addClass("cycle-loading"))}var s;i.loader&&(s=i.API.add,i.API.add=n)})}(jQuery),/*! pager plugin for Cycle2;  version: 20130525 */
+function(e){"use strict";function t(t,i,n){var s,o=t.API.getComponent("pager");o.each(function(){var o=e(this);if(i.pagerTemplate){var c=t.API.tmpl(i.pagerTemplate,i,t,n[0]);s=e(c).appendTo(o)}else s=o.children().eq(t.slideCount-1);s.on(t.pagerEvent,function(e){e.preventDefault(),t.API.page(o,e.currentTarget)})})}function i(e,t){var i=this.opts();if(!i.busy||i.manualTrump){var n=e.children().index(t),s=n,o=s>i.currSlide;i.currSlide!=s&&(i.nextSlide=s,i.API.prepareTx(!0,o),i.API.trigger("cycle-pager-activated",[i,e,t]))}}e.extend(e.fn.cycle.defaults,{pager:"> .cycle-pager",pagerActiveClass:"cycle-pager-active",pagerEvent:"click.cycle",pagerTemplate:"<span>&bull;</span>"}),e(document).on("cycle-bootstrap",function(e,i,n){n.buildPagerLink=t}),e(document).on("cycle-slide-added",function(e,t,n,s){t.pager&&(t.API.buildPagerLink(t,n,s),t.API.page=i)}),e(document).on("cycle-slide-removed",function(t,i,n){if(i.pager){var s=i.API.getComponent("pager");s.each(function(){var t=e(this);e(t.children()[n]).remove()})}}),e(document).on("cycle-update-view",function(t,i){var n;i.pager&&(n=i.API.getComponent("pager"),n.each(function(){e(this).children().removeClass(i.pagerActiveClass).eq(i.currSlide).addClass(i.pagerActiveClass)}))}),e(document).on("cycle-destroyed",function(e,t){var i=t.API.getComponent("pager");i&&(i.children().off(t.pagerEvent),t.pagerTemplate&&i.empty())})}(jQuery),/*! prevnext plugin for Cycle2;  version: 20130709 */
+function(e){"use strict";e.extend(e.fn.cycle.defaults,{next:"> .cycle-next",nextEvent:"click.cycle",disabledClass:"disabled",prev:"> .cycle-prev",prevEvent:"click.cycle",swipe:!1}),e(document).on("cycle-initialized",function(e,t){if(t.API.getComponent("next").on(t.nextEvent,function(e){e.preventDefault(),t.API.next()}),t.API.getComponent("prev").on(t.prevEvent,function(e){e.preventDefault(),t.API.prev()}),t.swipe){var i=t.swipeVert?"swipeUp.cycle":"swipeLeft.cycle swipeleft.cycle",n=t.swipeVert?"swipeDown.cycle":"swipeRight.cycle swiperight.cycle";t.container.on(i,function(){t.API.next()}),t.container.on(n,function(){t.API.prev()})}}),e(document).on("cycle-update-view",function(e,t){if(!t.allowWrap){var i=t.disabledClass,n=t.API.getComponent("next"),s=t.API.getComponent("prev"),o=t._prevBoundry||0,c=void 0!==t._nextBoundry?t._nextBoundry:t.slideCount-1;t.currSlide==c?n.addClass(i).prop("disabled",!0):n.removeClass(i).prop("disabled",!1),t.currSlide===o?s.addClass(i).prop("disabled",!0):s.removeClass(i).prop("disabled",!1)}}),e(document).on("cycle-destroyed",function(e,t){t.API.getComponent("prev").off(t.nextEvent),t.API.getComponent("next").off(t.prevEvent),t.container.off("swipeleft.cycle swiperight.cycle swipeLeft.cycle swipeRight.cycle swipeUp.cycle swipeDown.cycle")})}(jQuery),/*! progressive loader plugin for Cycle2;  version: 20130315 */
+function(e){"use strict";e.extend(e.fn.cycle.defaults,{progressive:!1}),e(document).on("cycle-pre-initialize",function(t,i){if(i.progressive){var n,s,o=i.API,c=o.next,r=o.prev,l=o.prepareTx,a=e.type(i.progressive);if("array"==a)n=i.progressive;else if(e.isFunction(i.progressive))n=i.progressive(i);else if("string"==a){if(s=e(i.progressive),n=e.trim(s.html()),!n)return;if(/^(\[)/.test(n))try{n=e.parseJSON(n)}catch(d){return o.log("error parsing progressive slides",d),void 0}else n=n.split(RegExp(s.data("cycle-split")||"\n")),n[n.length-1]||n.pop()}l&&(o.prepareTx=function(e,t){var s,o;return e||0===n.length?(l.apply(i.API,[e,t]),void 0):(t&&i.currSlide==i.slideCount-1?(o=n[0],n=n.slice(1),i.container.one("cycle-slide-added",function(e,t){setTimeout(function(){t.API.advanceSlide(1)},50)}),i.API.add(o)):t||0!==i.currSlide?l.apply(i.API,[e,t]):(s=n.length-1,o=n[s],n=n.slice(0,s),i.container.one("cycle-slide-added",function(e,t){setTimeout(function(){t.currSlide=1,t.API.advanceSlide(-1)},50)}),i.API.add(o,!0)),void 0)}),c&&(o.next=function(){var e=this.opts();if(n.length&&e.currSlide==e.slideCount-1){var t=n[0];n=n.slice(1),e.container.one("cycle-slide-added",function(e,t){c.apply(t.API),t.container.removeClass("cycle-loading")}),e.container.addClass("cycle-loading"),e.API.add(t)}else c.apply(e.API)}),r&&(o.prev=function(){var e=this.opts();if(n.length&&0===e.currSlide){var t=n.length-1,i=n[t];n=n.slice(0,t),e.container.one("cycle-slide-added",function(e,t){t.currSlide=1,t.API.advanceSlide(-1),t.container.removeClass("cycle-loading")}),e.container.addClass("cycle-loading"),e.API.add(i,!0)}else r.apply(e.API)})}})}(jQuery),/*! tmpl plugin for Cycle2;  version: 20121227 */
+function(e){"use strict";e.extend(e.fn.cycle.defaults,{tmplRegex:"{{((.)?.*?)}}"}),e.extend(e.fn.cycle.API,{tmpl:function(t,i){var n=RegExp(i.tmplRegex||e.fn.cycle.defaults.tmplRegex,"g"),s=e.makeArray(arguments);return s.shift(),t.replace(n,function(t,i){var n,o,c,r,l=i.split(".");for(n=0;s.length>n;n++)if(c=s[n]){if(l.length>1)for(r=c,o=0;l.length>o;o++)c=r,r=r[l[o]]||i;else r=c[i];if(e.isFunction(r))return r.apply(c,s);if(void 0!==r&&null!==r&&r!=i)return r}return i})}})}(jQuery);
+//@ sourceMappingURL=jquery.cycle2.js.map
\ No newline at end of file
diff --git a/static/assets/js/jquery.min.js b/static/assets/js/jquery.min.js
new file mode 100644
index 0000000..29b3a2c
--- /dev/null
+++ b/static/assets/js/jquery.min.js
@@ -0,0 +1,6 @@
+/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery.min.map
+*/
+(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
+}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
+u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
diff --git a/static/assets/js/jquery.tablesorter.min.js b/static/assets/js/jquery.tablesorter.min.js
new file mode 100644
index 0000000..b8605df
--- /dev/null
+++ b/static/assets/js/jquery.tablesorter.min.js
@@ -0,0 +1,4 @@
+
+(function($){$.extend({tablesorter:new
+function(){var parsers=[],widgets=[];this.defaults={cssHeader:"header",cssAsc:"headerSortUp",cssDesc:"headerSortDown",cssChildRow:"expand-child",sortInitialOrder:"asc",sortMultiSortKey:"shiftKey",sortForce:null,sortAppend:null,sortLocaleCompare:true,textExtraction:"simple",parsers:{},widgets:[],widgetZebra:{css:["even","odd"]},headers:{},widthFixed:false,cancelSelection:true,sortList:[],headerList:[],dateFormat:"us",decimal:'/\.|\,/g',onRenderHeader:null,selectorHeaders:'thead th',debug:false};function benchmark(s,d){log(s+","+(new Date().getTime()-d.getTime())+"ms");}this.benchmark=benchmark;function log(s){if(typeof console!="undefined"&&typeof console.debug!="undefined"){console.log(s);}else{alert(s);}}function buildParserCache(table,$headers){if(table.config.debug){var parsersDebug="";}if(table.tBodies.length==0)return;var rows=table.tBodies[0].rows;if(rows[0]){var list=[],cells=rows[0].cells,l=cells.length;for(var i=0;i<l;i++){var p=false;if($.metadata&&($($headers[i]).metadata()&&$($headers[i]).metadata().sorter)){p=getParserById($($headers[i]).metadata().sorter);}else if((table.config.headers[i]&&table.config.headers[i].sorter)){p=getParserById(table.config.headers[i].sorter);}if(!p){p=detectParserForColumn(table,rows,-1,i);}if(table.config.debug){parsersDebug+="column:"+i+" parser:"+p.id+"\n";}list.push(p);}}if(table.config.debug){log(parsersDebug);}return list;};function detectParserForColumn(table,rows,rowIndex,cellIndex){var l=parsers.length,node=false,nodeValue=false,keepLooking=true;while(nodeValue==''&&keepLooking){rowIndex++;if(rows[rowIndex]){node=getNodeFromRowAndCellIndex(rows,rowIndex,cellIndex);nodeValue=trimAndGetNodeText(table.config,node);if(table.config.debug){log('Checking if value was empty on row:'+rowIndex);}}else{keepLooking=false;}}for(var i=1;i<l;i++){if(parsers[i].is(nodeValue,table,node)){return parsers[i];}}return parsers[0];}function getNodeFromRowAndCellIndex(rows,rowIndex,cellIndex){return rows[rowIndex].cells[cellIndex];}function trimAndGetNodeText(config,node){return $.trim(getElementText(config,node));}function getParserById(name){var l=parsers.length;for(var i=0;i<l;i++){if(parsers[i].id.toLowerCase()==name.toLowerCase()){return parsers[i];}}return false;}function buildCache(table){if(table.config.debug){var cacheTime=new Date();}var totalRows=(table.tBodies[0]&&table.tBodies[0].rows.length)||0,totalCells=(table.tBodies[0].rows[0]&&table.tBodies[0].rows[0].cells.length)||0,parsers=table.config.parsers,cache={row:[],normalized:[]};for(var i=0;i<totalRows;++i){var c=$(table.tBodies[0].rows[i]),cols=[];if(c.hasClass(table.config.cssChildRow)){cache.row[cache.row.length-1]=cache.row[cache.row.length-1].add(c);continue;}cache.row.push(c);for(var j=0;j<totalCells;++j){cols.push(parsers[j].format(getElementText(table.config,c[0].cells[j]),table,c[0].cells[j]));}cols.push(cache.normalized.length);cache.normalized.push(cols);cols=null;};if(table.config.debug){benchmark("Building cache for "+totalRows+" rows:",cacheTime);}return cache;};function getElementText(config,node){var text="";if(!node)return"";if(!config.supportsTextContent)config.supportsTextContent=node.textContent||false;if(config.textExtraction=="simple"){if(config.supportsTextContent){text=node.textContent;}else{if(node.childNodes[0]&&node.childNodes[0].hasChildNodes()){text=node.childNodes[0].innerHTML;}else{text=node.innerHTML;}}}else{if(typeof(config.textExtraction)=="function"){text=config.textExtraction(node);}else{text=$(node).text();}}return text;}function appendToTable(table,cache){if(table.config.debug){var appendTime=new Date()}var c=cache,r=c.row,n=c.normalized,totalRows=n.length,checkCell=(n[0].length-1),tableBody=$(table.tBodies[0]),rows=[];for(var i=0;i<totalRows;i++){var pos=n[i][checkCell];rows.push(r[pos]);if(!table.config.appender){var l=r[pos].length;for(var j=0;j<l;j++){tableBody[0].appendChild(r[pos][j]);}}}if(table.config.appender){table.config.appender(table,rows);}rows=null;if(table.config.debug){benchmark("Rebuilt table:",appendTime);}applyWidget(table);setTimeout(function(){$(table).trigger("sortEnd");},0);};function buildHeaders(table){if(table.config.debug){var time=new Date();}var meta=($.metadata)?true:false;var header_index=computeTableHeaderCellIndexes(table);$tableHeaders=$(table.config.selectorHeaders,table).each(function(index){this.column=header_index[this.parentNode.rowIndex+"-"+this.cellIndex];this.order=formatSortingOrder(table.config.sortInitialOrder);this.count=this.order;if(checkHeaderMetadata(this)||checkHeaderOptions(table,index))this.sortDisabled=true;if(checkHeaderOptionsSortingLocked(table,index))this.order=this.lockedOrder=checkHeaderOptionsSortingLocked(table,index);if(!this.sortDisabled){var $th=$(this).addClass(table.config.cssHeader);if(table.config.onRenderHeader)table.config.onRenderHeader.apply($th);}table.config.headerList[index]=this;});if(table.config.debug){benchmark("Built headers:",time);log($tableHeaders);}return $tableHeaders;};function computeTableHeaderCellIndexes(t){var matrix=[];var lookup={};var thead=t.getElementsByTagName('THEAD')[0];var trs=thead.getElementsByTagName('TR');for(var i=0;i<trs.length;i++){var cells=trs[i].cells;for(var j=0;j<cells.length;j++){var c=cells[j];var rowIndex=c.parentNode.rowIndex;var cellId=rowIndex+"-"+c.cellIndex;var rowSpan=c.rowSpan||1;var colSpan=c.colSpan||1
+var firstAvailCol;if(typeof(matrix[rowIndex])=="undefined"){matrix[rowIndex]=[];}for(var k=0;k<matrix[rowIndex].length+1;k++){if(typeof(matrix[rowIndex][k])=="undefined"){firstAvailCol=k;break;}}lookup[cellId]=firstAvailCol;for(var k=rowIndex;k<rowIndex+rowSpan;k++){if(typeof(matrix[k])=="undefined"){matrix[k]=[];}var matrixrow=matrix[k];for(var l=firstAvailCol;l<firstAvailCol+colSpan;l++){matrixrow[l]="x";}}}}return lookup;}function checkCellColSpan(table,rows,row){var arr=[],r=table.tHead.rows,c=r[row].cells;for(var i=0;i<c.length;i++){var cell=c[i];if(cell.colSpan>1){arr=arr.concat(checkCellColSpan(table,headerArr,row++));}else{if(table.tHead.length==1||(cell.rowSpan>1||!r[row+1])){arr.push(cell);}}}return arr;};function checkHeaderMetadata(cell){if(($.metadata)&&($(cell).metadata().sorter===false)){return true;};return false;}function checkHeaderOptions(table,i){if((table.config.headers[i])&&(table.config.headers[i].sorter===false)){return true;};return false;}function checkHeaderOptionsSortingLocked(table,i){if((table.config.headers[i])&&(table.config.headers[i].lockedOrder))return table.config.headers[i].lockedOrder;return false;}function applyWidget(table){var c=table.config.widgets;var l=c.length;for(var i=0;i<l;i++){getWidgetById(c[i]).format(table);}}function getWidgetById(name){var l=widgets.length;for(var i=0;i<l;i++){if(widgets[i].id.toLowerCase()==name.toLowerCase()){return widgets[i];}}};function formatSortingOrder(v){if(typeof(v)!="Number"){return(v.toLowerCase()=="desc")?1:0;}else{return(v==1)?1:0;}}function isValueInArray(v,a){var l=a.length;for(var i=0;i<l;i++){if(a[i][0]==v){return true;}}return false;}function setHeadersCss(table,$headers,list,css){$headers.removeClass(css[0]).removeClass(css[1]);var h=[];$headers.each(function(offset){if(!this.sortDisabled){h[this.column]=$(this);}});var l=list.length;for(var i=0;i<l;i++){h[list[i][0]].addClass(css[list[i][1]]);}}function fixColumnWidth(table,$headers){var c=table.config;if(c.widthFixed){var colgroup=$('<colgroup>');$("tr:first td",table.tBodies[0]).each(function(){colgroup.append($('<col>').css('width',$(this).width()));});$(table).prepend(colgroup);};}function updateHeaderSortCount(table,sortList){var c=table.config,l=sortList.length;for(var i=0;i<l;i++){var s=sortList[i],o=c.headerList[s[0]];o.count=s[1];o.count++;}}function multisort(table,sortList,cache){if(table.config.debug){var sortTime=new Date();}var dynamicExp="var sortWrapper = function(a,b) {",l=sortList.length;for(var i=0;i<l;i++){var c=sortList[i][0];var order=sortList[i][1];var s=(table.config.parsers[c].type=="text")?((order==0)?makeSortFunction("text","asc",c):makeSortFunction("text","desc",c)):((order==0)?makeSortFunction("numeric","asc",c):makeSortFunction("numeric","desc",c));var e="e"+i;dynamicExp+="var "+e+" = "+s;dynamicExp+="if("+e+") { return "+e+"; } ";dynamicExp+="else { ";}var orgOrderCol=cache.normalized[0].length-1;dynamicExp+="return a["+orgOrderCol+"]-b["+orgOrderCol+"];";for(var i=0;i<l;i++){dynamicExp+="}; ";}dynamicExp+="return 0; ";dynamicExp+="}; ";if(table.config.debug){benchmark("Evaling expression:"+dynamicExp,new Date());}eval(dynamicExp);cache.normalized.sort(sortWrapper);if(table.config.debug){benchmark("Sorting on "+sortList.toString()+" and dir "+order+" time:",sortTime);}return cache;};function makeSortFunction(type,direction,index){var a="a["+index+"]",b="b["+index+"]";if(type=='text'&&direction=='asc'){return"("+a+" == "+b+" ? 0 : ("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : ("+a+" < "+b+") ? -1 : 1 )));";}else if(type=='text'&&direction=='desc'){return"("+a+" == "+b+" ? 0 : ("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : ("+b+" < "+a+") ? -1 : 1 )));";}else if(type=='numeric'&&direction=='asc'){return"("+a+" === null && "+b+" === null) ? 0 :("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : "+a+" - "+b+"));";}else if(type=='numeric'&&direction=='desc'){return"("+a+" === null && "+b+" === null) ? 0 :("+a+" === null ? Number.POSITIVE_INFINITY : ("+b+" === null ? Number.NEGATIVE_INFINITY : "+b+" - "+a+"));";}};function makeSortText(i){return"((a["+i+"] < b["+i+"]) ? -1 : ((a["+i+"] > b["+i+"]) ? 1 : 0));";};function makeSortTextDesc(i){return"((b["+i+"] < a["+i+"]) ? -1 : ((b["+i+"] > a["+i+"]) ? 1 : 0));";};function makeSortNumeric(i){return"a["+i+"]-b["+i+"];";};function makeSortNumericDesc(i){return"b["+i+"]-a["+i+"];";};function sortText(a,b){if(table.config.sortLocaleCompare)return a.localeCompare(b);return((a<b)?-1:((a>b)?1:0));};function sortTextDesc(a,b){if(table.config.sortLocaleCompare)return b.localeCompare(a);return((b<a)?-1:((b>a)?1:0));};function sortNumeric(a,b){return a-b;};function sortNumericDesc(a,b){return b-a;};function getCachedSortType(parsers,i){return parsers[i].type;};this.construct=function(settings){return this.each(function(){if(!this.tHead||!this.tBodies)return;var $this,$document,$headers,cache,config,shiftDown=0,sortOrder;this.config={};config=$.extend(this.config,$.tablesorter.defaults,settings);$this=$(this);$.data(this,"tablesorter",config);$headers=buildHeaders(this);this.config.parsers=buildParserCache(this,$headers);cache=buildCache(this);var sortCSS=[config.cssDesc,config.cssAsc];fixColumnWidth(this);$headers.click(function(e){var totalRows=($this[0].tBodies[0]&&$this[0].tBodies[0].rows.length)||0;if(!this.sortDisabled&&totalRows>0){$this.trigger("sortStart");var $cell=$(this);var i=this.column;this.order=this.count++%2;if(this.lockedOrder)this.order=this.lockedOrder;if(!e[config.sortMultiSortKey]){config.sortList=[];if(config.sortForce!=null){var a=config.sortForce;for(var j=0;j<a.length;j++){if(a[j][0]!=i){config.sortList.push(a[j]);}}}config.sortList.push([i,this.order]);}else{if(isValueInArray(i,config.sortList)){for(var j=0;j<config.sortList.length;j++){var s=config.sortList[j],o=config.headerList[s[0]];if(s[0]==i){o.count=s[1];o.count++;s[1]=o.count%2;}}}else{config.sortList.push([i,this.order]);}};setTimeout(function(){setHeadersCss($this[0],$headers,config.sortList,sortCSS);appendToTable($this[0],multisort($this[0],config.sortList,cache));},1);return false;}}).mousedown(function(){if(config.cancelSelection){this.onselectstart=function(){return false};return false;}});$this.bind("update",function(){var me=this;setTimeout(function(){me.config.parsers=buildParserCache(me,$headers);cache=buildCache(me);},1);}).bind("updateCell",function(e,cell){var config=this.config;var pos=[(cell.parentNode.rowIndex-1),cell.cellIndex];cache.normalized[pos[0]][pos[1]]=config.parsers[pos[1]].format(getElementText(config,cell),cell);}).bind("sorton",function(e,list){$(this).trigger("sortStart");config.sortList=list;var sortList=config.sortList;updateHeaderSortCount(this,sortList);setHeadersCss(this,$headers,sortList,sortCSS);appendToTable(this,multisort(this,sortList,cache));}).bind("appendCache",function(){appendToTable(this,cache);}).bind("applyWidgetId",function(e,id){getWidgetById(id).format(this);}).bind("applyWidgets",function(){applyWidget(this);});if($.metadata&&($(this).metadata()&&$(this).metadata().sortlist)){config.sortList=$(this).metadata().sortlist;}if(config.sortList.length>0){$this.trigger("sorton",[config.sortList]);}applyWidget(this);});};this.addParser=function(parser){var l=parsers.length,a=true;for(var i=0;i<l;i++){if(parsers[i].id.toLowerCase()==parser.id.toLowerCase()){a=false;}}if(a){parsers.push(parser);};};this.addWidget=function(widget){widgets.push(widget);};this.formatFloat=function(s){var i=parseFloat(s);return(isNaN(i))?0:i;};this.formatInt=function(s){var i=parseInt(s);return(isNaN(i))?0:i;};this.isDigit=function(s,config){return/^[-+]?\d*$/.test($.trim(s.replace(/[,.']/g,'')));};this.clearTableBody=function(table){if($.browser.msie){function empty(){while(this.firstChild)this.removeChild(this.firstChild);}empty.apply(table.tBodies[0]);}else{table.tBodies[0].innerHTML="";}};}});$.fn.extend({tablesorter:$.tablesorter.construct});var ts=$.tablesorter;ts.addParser({id:"text",is:function(s){return true;},format:function(s){return $.trim(s.toLocaleLowerCase());},type:"text"});ts.addParser({id:"digit",is:function(s,table){var c=table.config;return $.tablesorter.isDigit(s,c);},format:function(s){return $.tablesorter.formatFloat(s);},type:"numeric"});ts.addParser({id:"currency",is:function(s){return/^[£$€?.]/.test(s);},format:function(s){return $.tablesorter.formatFloat(s.replace(new RegExp(/[£$€]/g),""));},type:"numeric"});ts.addParser({id:"ipAddress",is:function(s){return/^\d{2,3}[\.]\d{2,3}[\.]\d{2,3}[\.]\d{2,3}$/.test(s);},format:function(s){var a=s.split("."),r="",l=a.length;for(var i=0;i<l;i++){var item=a[i];if(item.length==2){r+="0"+item;}else{r+=item;}}return $.tablesorter.formatFloat(r);},type:"numeric"});ts.addParser({id:"url",is:function(s){return/^(https?|ftp|file):\/\/$/.test(s);},format:function(s){return jQuery.trim(s.replace(new RegExp(/(https?|ftp|file):\/\//),''));},type:"text"});ts.addParser({id:"isoDate",is:function(s){return/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(s);},format:function(s){return $.tablesorter.formatFloat((s!="")?new Date(s.replace(new RegExp(/-/g),"/")).getTime():"0");},type:"numeric"});ts.addParser({id:"percent",is:function(s){return/\%$/.test($.trim(s));},format:function(s){return $.tablesorter.formatFloat(s.replace(new RegExp(/%/g),""));},type:"numeric"});ts.addParser({id:"usLongDate",is:function(s){return s.match(new RegExp(/^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/));},format:function(s){return $.tablesorter.formatFloat(new Date(s).getTime());},type:"numeric"});ts.addParser({id:"shortDate",is:function(s){return/\d{1,2}[\/\-]\d{1,2}[\/\-]\d{2,4}/.test(s);},format:function(s,table){var c=table.config;s=s.replace(/\-/g,"/");if(c.dateFormat=="us"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,"$3/$1/$2");}else if(c.dateFormat=="uk"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/,"$3/$2/$1");}else if(c.dateFormat=="dd/mm/yy"||c.dateFormat=="dd-mm-yy"){s=s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{2})/,"$1/$2/$3");}return $.tablesorter.formatFloat(new Date(s).getTime());},type:"numeric"});ts.addParser({id:"time",is:function(s){return/^(([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(am|pm)))$/.test(s);},format:function(s){return $.tablesorter.formatFloat(new Date("2000/01/01 "+s).getTime());},type:"numeric"});ts.addParser({id:"metadata",is:function(s){return false;},format:function(s,table,cell){var c=table.config,p=(!c.parserMetadataName)?'sortValue':c.parserMetadataName;return $(cell).metadata()[p];},type:"numeric"});ts.addWidget({id:"zebra",format:function(table){if(table.config.debug){var time=new Date();}var $tr,row=-1,odd;$("tr:visible",table.tBodies[0]).each(function(i){$tr=$(this);if(!$tr.hasClass(table.config.cssChildRow))row++;odd=(row%2==0);$tr.removeClass(table.config.widgetZebra.css[odd?0:1]).addClass(table.config.widgetZebra.css[odd?1:0])});if(table.config.debug){$.tablesorter.benchmark("Applying Zebra widget",time);}}});})(jQuery);
\ No newline at end of file
diff --git a/static/assets/js/jquery.tidy.table.min.js b/static/assets/js/jquery.tidy.table.min.js
new file mode 100644
index 0000000..f017b7c
--- /dev/null
+++ b/static/assets/js/jquery.tidy.table.min.js
@@ -0,0 +1,2 @@
+/* Copyright 2012-2013, Marc S. Brooks (http://mbrooks.info) */
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(3($){2 w={"14":3(b,c){2 d={15:z,Q:z};4(R.D>1){$.1v(d,b)}7{c=b}5 8.G(3(){2 a=$(8),x=a.x();4($.1w(x)){a.x({16:a,A:d})}5 S(x,c)})},"1x":3(){5 8.G(3(){$(8).1y()})}};$.1z.17=3(a){4(w[a]){5 w[a].18(8,1A.1B.1C.1D(R,1))}7 4(H a===\'1E\'||!a){5 w.14.18(8,R)}7{$.1F(\'1G \'+a+\' 1H 1I 1J 1K 19.17\')}};3 S(e,f,g,h){2 l=$(\'<I></I>\').B(\'1a\');l.1L(3(){5 z});l.1M(3(){5 z});2 m=$(\'<1b></1b>\'),E=$(\'<E></E>\'),s=$(\'<F></F>\');2 n=f.1N;J(2 i=0;i<n.D;i++){2 o=n[i];2 p=$(\'<K></K>\').6(o).y(\'1c\',o);s.6(p);2 q;4(h==\'T\'||!h){q=\'1O\';p.U=\'1P\'}7{q=\'1Q\';p.U=\'T\'}4(g==i){p.B(q)}p.1d(\'V\',{1e:i,1f:p.U},3(a){1g(e,f,a.x.1e,a.x.1f)})}m.6(s);2 r=f.1h;J(2 j=0;j<r.D;j++){2 s=$(\'<F></F>\');J(2 k=0;k<r[j].D;k++){2 t=r[j][k];2 p=$(\'<L></L>\').6(t).y(\'1c\',t);s.6(p);4(f.9&&H f.9.1i===\'3\'){f.9.1i(p)}}E.6(s)}l.6(m);l.6(E);4(e.A&&e.A.15){2 u=l.W(\'F\');u.G(3(b){s=$(8);2 c=$(\'<X></X>\').y(\'1R\',\'1S\');2 d;4(b==0){d=$(\'<K></K>\');c.V(3(){Y(u)})}7{d=$(\'<L></L>\');c.1d(\'V\',{1j:b},3(a){Y(u,a.x.1j)})}d.6(c);s.1T(d)})}4(f.9&&H f.9.I===\'3\'){f.9.I(l)}2 v=e.16,Z=v.1k(\'I.1a\');4(Z[0]){Z.1U(l)}7{4(e.A&&e.A.Q){v.6(10(v,f,\'1V\'))}v.6(l);4(e.A&&e.A.Q){v.6(10(v,f,\'1W\'))}}5 l}3 10(c,d,e){2 f=d.1X;2 g=$(\'<1l></1l>\').B(\'1Y \'+e).1Z(3(){2 a=$(8);2 b=f[a.1m()][1][\'20\'];4(H b===\'3\'){b(1n(c))}a.1m(0)});$.G(f,3(a){2 b=$(\'<1o>\'+f[a][0]+\'</1o>\').y(\'21\',a);g.6(b)});4(d.9&&H d.9.1p===\'3\'){d.9.1p(g)}5 g}3 1n(a){2 b=a.W(\'E > F\'),11=[];J(2 i=0;i<b.D;i++){2 c=b[i].22;4(c[0].23.C){2 d=[];J(2 j=1;j<c.D;j++){d[j-1]=c[j].24}11.25(d)}}5 11}3 Y(d,e){2 f=1q;d.G(3(a){2 b=$(8);2 c=b.1k().W(\'X\');4(e==1q){4(a==0){f=(c.1r(\':C\'))?12:z;5}4(f){b.M(\'N\').B(\'O\');c.y(\'C\',12)}7{b.M(\'O\').B(\'N\');c.y(\'C\',z)}}7{4(c.1r(\':C\')){b.M(\'N\').B(\'O\');c.y(\'C\',12)}7{b.M(\'O\').B(\'N\');c.y(\'C\',z)}}})}3 1g(d,e,f,g){2 h=(g==\'T\')?-1:1;e.1h.26(3(a,b){2 c=1s(a[f]).1t(/$|%|#/g,\'\'),P=1s(b[f]).1t(/$|%|#/g,\'\');4(27(c)){5[h*13(c,P)]>[h*13(P,c)]?-1:1}7{5[h*1u(c,P)]}});S(d,e,f,g)}3 13(a,b){5(a>b)?1:(a<b)?-1:0}3 1u(a,b){5 b-a}})(19);',62,132,'||var|function|if|return|append|else|this|postProcess||||||||||||||||||||||||data|attr|false|options|addClass|checked|length|tbody|tr|each|typeof|table|for|th|td|removeClass|check_off|check_on|str2|enableMenu|arguments|createTable|desc|order|click|find|input|toggleSelRows|block|createMenu|objs|true|cmpAny|init|enableCheckbox|container|TidyTable|apply|jQuery|tidy_table|thead|title|bind|col_number|sort_order|sortByColumn|columnValues|column|box_number|children|select|val|getCheckedAsObj|option|menu|null|is|String|replace|cmpInt|extend|isEmptyObject|destroy|removeData|fn|Array|prototype|slice|call|object|error|Method|does|not|exist|on|mousedown|mouseover|columnTitles|sort_desc|asc|sort_asc|type|checkbox|prepend|replaceWith|menu1|menu2|menuOptions|menu_options|change|callback|value|childNodes|firstChild|textContent|push|sort|isNaN'.split('|'),0,{}))
diff --git a/static/assets/js/sass-bootstrap.js b/static/assets/js/sass-bootstrap.js
new file mode 100644
index 0000000..f1f6040
--- /dev/null
+++ b/static/assets/js/sass-bootstrap.js
@@ -0,0 +1,2001 @@
+/**
+* Sass Bootstrap v3.0.16 by Aaron Lademann and Twitter Inc.
+* Copyright 2013 Aaron Lademann and Twitter Inc.
+* Licensed under http://www.apache.org/licenses/LICENSE-2.0.
+*
+* Designed and built with all the love in the world by @alademann, @mdo and @fat.
+*/
+if (!jQuery) { throw new Error("Sass Bootstrap requires jQuery") }
+
+/* ========================================================================
+ * Bootstrap: transition.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#transitions
+ * ========================================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
+  // ============================================================
+
+  function transitionEnd() {
+    var el = document.createElement('bootstrap')
+
+    var transEndEventNames = {
+      'WebkitTransition' : 'webkitTransitionEnd'
+    , 'MozTransition'    : 'transitionend'
+    , 'OTransition'      : 'oTransitionEnd otransitionend'
+    , 'transition'       : 'transitionend'
+    }
+
+    for (var name in transEndEventNames) {
+      if (el.style[name] !== undefined) {
+        return { end: transEndEventNames[name] }
+      }
+    }
+  }
+
+  // http://blog.alexmaccaw.com/css-transitions
+  $.fn.emulateTransitionEnd = function (duration) {
+    var called = false, $el = this
+    $(this).one($.support.transition.end, function () { called = true })
+    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
+    setTimeout(callback, duration)
+    return this
+  }
+
+  $(function () {
+    $.support.transition = transitionEnd()
+  })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: alert.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#alerts
+ * ========================================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // ALERT CLASS DEFINITION
+  // ======================
+
+  var dismiss = '[data-dismiss="alert"]'
+  var Alert   = function (el) {
+    $(el).on('click', dismiss, this.close)
+  }
+
+  Alert.prototype.close = function (e) {
+    var $this    = $(this)
+    var selector = $this.attr('data-target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
+    }
+
+    var $parent = $(selector)
+
+    if (e) e.preventDefault()
+
+    if (!$parent.length) {
+      $parent = $this.hasClass('alert') ? $this : $this.parent()
+    }
+
+    $parent.trigger(e = $.Event('close.bs.alert'))
+
+    if (e.isDefaultPrevented()) return
+
+    $parent.removeClass('in')
+
+    function removeElement() {
+      $parent.trigger('closed.bs.alert').remove()
+    }
+
+    $.support.transition && $parent.hasClass('fade') ?
+      $parent
+        .one($.support.transition.end, removeElement)
+        .emulateTransitionEnd(150) :
+      removeElement()
+  }
+
+
+  // ALERT PLUGIN DEFINITION
+  // =======================
+
+  var old = $.fn.alert
+
+  $.fn.alert = function (option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.alert')
+
+      if (!data) $this.data('bs.alert', (data = new Alert(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  $.fn.alert.Constructor = Alert
+
+
+  // ALERT NO CONFLICT
+  // =================
+
+  $.fn.alert.noConflict = function () {
+    $.fn.alert = old
+    return this
+  }
+
+
+  // ALERT DATA-API
+  // ==============
+
+  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: button.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#buttons
+ * ========================================================================
+ * Copyright 2013 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // BUTTON PUBLIC CLASS DEFINITION
+  // ==============================
+
+  var Button = function (element, options) {
+    this.$element = $(element)
+    this.options  = $.extend({}, Button.DEFAULTS, options)
+  }
+
+  Button.DEFAULTS = {
+    loadingText: 'loading...'
+  }
+
+  Button.prototype.setState = function (state) {
+    var d    = 'disabled'
+    var $el  = this.$element
+    var val  = $el.is('input') ? 'val' : 'html'
+    var data = $el.data()
+
+    state = state + 'Text'
+
+    if (!data.resetText) $el.data('resetText', $el[val]())
+
+    $el[val](data[state] || this.options[state])
+
+    // push to event loop to allow forms to submit
+    setTimeout(function () {
+      state == 'loadingText' ?
+        $el.addClass(d).attr(d, d) :
+        $el.removeClass(d).removeAttr(d);
+    }, 0)
+  }
+
+  Button.prototype.toggle = function () {
+    var $parent = this.$element.closest('[data-toggle="buttons"]')
+
+    if ($parent.length) {
+      var $input = this.$element.find('input')
+        .prop('checked', !this.$element.hasClass('active'))
+        .trigger('change')
+      if ($input.prop('type') === 'radio') $parent.find('.active').removeClass('active')
+    }
+
+    this.$element.toggleClass('active')
+  }
+
+
+  // BUTTON PLUGIN DEFINITION
+  // ========================
+
+  var old = $.fn.button
+
+  $.fn.button = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.button')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.button', (data = new Button(this, options)))
+
+      if (option == 'toggle') data.toggle()
+      else if (option) data.setState(option)
+    })
+  }
+
+  $.fn.button.Constructor = Button
+
+
+  // BUTTON NO CONFLICT
+  // ==================
+
+  $.fn.button.noConflict = function () {
+    $.fn.button = old
+    return this
+  }
+
+
+  // BUTTON DATA-API
+  // ===============
+
+  $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {
+    var $btn = $(e.target)
+    if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
+    $btn.button('toggle')
+    e.preventDefault()
+  })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: carousel.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#carousel
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // CAROUSEL CLASS DEFINITION
+  // =========================
+
+  var Carousel = function (element, options) {
+    this.$element    = $(element)
+    this.$indicators = this.$element.find('.carousel-indicators')
+    this.options     = options
+    this.paused      =
+    this.sliding     =
+    this.interval    =
+    this.$active     =
+    this.$items      = null
+
+    this.options.pause == 'hover' && this.$element
+      .on('mouseenter', $.proxy(this.pause, this))
+      .on('mouseleave', $.proxy(this.cycle, this))
+  }
+
+  Carousel.DEFAULTS = {
+    interval: 5000
+  , pause: 'hover'
+  , wrap: true
+  }
+
+  Carousel.prototype.cycle =  function (e) {
+    e || (this.paused = false)
+
+    this.interval && clearInterval(this.interval)
+
+    this.options.interval
+      && !this.paused
+      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
+
+    return this
+  }
+
+  Carousel.prototype.getActiveIndex = function () {
+    this.$active = this.$element.find('.item.active')
+    this.$items  = this.$active.parent().children()
+
+    return this.$items.index(this.$active)
+  }
+
+  Carousel.prototype.to = function (pos) {
+    var that        = this
+    var activeIndex = this.getActiveIndex()
+
+    if (pos > (this.$items.length - 1) || pos < 0) return
+
+    if (this.sliding)       return this.$element.one('slid', function () { that.to(pos) })
+    if (activeIndex == pos) return this.pause().cycle()
+
+    return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
+  }
+
+  Carousel.prototype.pause = function (e) {
+    e || (this.paused = true)
+
+    if (this.$element.find('.next, .prev').length && $.support.transition.end) {
+      this.$element.trigger($.support.transition.end)
+      this.cycle(true)
+    }
+
+    this.interval = clearInterval(this.interval)
+
+    return this
+  }
+
+  Carousel.prototype.next = function () {
+    if (this.sliding) return
+    return this.slide('next')
+  }
+
+  Carousel.prototype.prev = function () {
+    if (this.sliding) return
+    return this.slide('prev')
+  }
+
+  Carousel.prototype.slide = function (type, next) {
+    var $active   = this.$element.find('.item.active')
+    var $next     = next || $active[type]()
+    var isCycling = this.interval
+    var direction = type == 'next' ? 'left' : 'right'
+    var fallback  = type == 'next' ? 'first' : 'last'
+    var that      = this
+
+    if (!$next.length) {
+      if (!this.options.wrap) return
+      $next = this.$element.find('.item')[fallback]()
+    }
+
+    this.sliding = true
+
+    isCycling && this.pause()
+
+    var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })
+
+    if ($next.hasClass('active')) return
+
+    if (this.$indicators.length) {
+      this.$indicators.find('.active').removeClass('active')
+      this.$element.one('slid', function () {
+        var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
+        $nextIndicator && $nextIndicator.addClass('active')
+      })
+    }
+
+    if ($.support.transition && this.$element.hasClass('slide')) {
+      this.$element.trigger(e)
+      if (e.isDefaultPrevented()) return
+      $next.addClass(type)
+      $next[0].offsetWidth // force reflow
+      $active.addClass(direction)
+      $next.addClass(direction)
+      $active
+        .one($.support.transition.end, function () {
+          $next.removeClass([type, direction].join(' ')).addClass('active')
+          $active.removeClass(['active', direction].join(' '))
+          that.sliding = false
+          setTimeout(function () { that.$element.trigger('slid') }, 0)
+        })
+        .emulateTransitionEnd(600)
+    } else {
+      this.$element.trigger(e)
+      if (e.isDefaultPrevented()) return
+      $active.removeClass('active')
+      $next.addClass('active')
+      this.sliding = false
+      this.$element.trigger('slid')
+    }
+
+    isCycling && this.cycle()
+
+    return this
+  }
+
+
+  // CAROUSEL PLUGIN DEFINITION
+  // ==========================
+
+  var old = $.fn.carousel
+
+  $.fn.carousel = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.carousel')
+      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
+      var action  = typeof option == 'string' ? option : options.slide
+
+      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
+      if (typeof option == 'number') data.to(option)
+      else if (action) data[action]()
+      else if (options.interval) data.pause().cycle()
+    })
+  }
+
+  $.fn.carousel.Constructor = Carousel
+
+
+  // CAROUSEL NO CONFLICT
+  // ====================
+
+  $.fn.carousel.noConflict = function () {
+    $.fn.carousel = old
+    return this
+  }
+
+
+  // CAROUSEL DATA-API
+  // =================
+
+  $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
+    var $this   = $(this), href
+    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+    var options = $.extend({}, $target.data(), $this.data())
+    var slideIndex = $this.attr('data-slide-to')
+    if (slideIndex) options.interval = false
+
+    $target.carousel(options)
+
+    if (slideIndex = $this.attr('data-slide-to')) {
+      $target.data('bs.carousel').to(slideIndex)
+    }
+
+    e.preventDefault()
+  })
+
+  $(window).on('load', function () {
+    $('[data-ride="carousel"]').each(function () {
+      var $carousel = $(this)
+      $carousel.carousel($carousel.data())
+    })
+  })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: collapse.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#collapse
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // COLLAPSE PUBLIC CLASS DEFINITION
+  // ================================
+
+  var Collapse = function (element, options) {
+    this.$element      = $(element)
+    this.options       = $.extend({}, Collapse.DEFAULTS, options)
+    this.transitioning = null
+
+    if (this.options.parent) this.$parent = $(this.options.parent)
+    if (this.options.toggle) this.toggle()
+  }
+
+  Collapse.DEFAULTS = {
+    toggle: true
+  }
+
+  Collapse.prototype.dimension = function () {
+    var hasWidth = this.$element.hasClass('width')
+    return hasWidth ? 'width' : 'height'
+  }
+
+  Collapse.prototype.show = function () {
+    if (this.transitioning || this.$element.hasClass('in')) return
+
+    var startEvent = $.Event('show.bs.collapse')
+    this.$element.trigger(startEvent)
+    if (startEvent.isDefaultPrevented()) return
+
+    var actives = this.$parent && this.$parent.find('> .panel > .in')
+
+    if (actives && actives.length) {
+      var hasData = actives.data('bs.collapse')
+      if (hasData && hasData.transitioning) return
+      actives.collapse('hide')
+      hasData || actives.data('bs.collapse', null)
+    }
+
+    var dimension = this.dimension()
+
+    this.$element
+      .removeClass('collapse')
+      .addClass('collapsing')
+      [dimension](0)
+
+    this.transitioning = 1
+
+    var complete = function () {
+      this.$element
+        .removeClass('collapsing')
+        .addClass('in')
+        [dimension]('auto')
+      this.transitioning = 0
+      this.$element.trigger('shown.bs.collapse')
+    }
+
+    if (!$.support.transition) return complete.call(this)
+
+    var scrollSize = $.camelCase(['scroll', dimension].join('-'))
+
+    this.$element
+      .one($.support.transition.end, $.proxy(complete, this))
+      .emulateTransitionEnd(350)
+      [dimension](this.$element[0][scrollSize])
+  }
+
+  Collapse.prototype.hide = function () {
+    if (this.transitioning || !this.$element.hasClass('in')) return
+
+    var startEvent = $.Event('hide.bs.collapse')
+    this.$element.trigger(startEvent)
+    if (startEvent.isDefaultPrevented()) return
+
+    var dimension = this.dimension()
+
+    this.$element
+      [dimension](this.$element[dimension]())
+      [0].offsetHeight
+
+    this.$element
+      .addClass('collapsing')
+      .removeClass('collapse')
+      .removeClass('in')
+
+    this.transitioning = 1
+
+    var complete = function () {
+      this.transitioning = 0
+      this.$element
+        .trigger('hidden.bs.collapse')
+        .removeClass('collapsing')
+        .addClass('collapse')
+    }
+
+    if (!$.support.transition) return complete.call(this)
+
+    this.$element
+      [dimension](0)
+      .one($.support.transition.end, $.proxy(complete, this))
+      .emulateTransitionEnd(350)
+  }
+
+  Collapse.prototype.toggle = function () {
+    this[this.$element.hasClass('in') ? 'hide' : 'show']()
+  }
+
+
+  // COLLAPSE PLUGIN DEFINITION
+  // ==========================
+
+  var old = $.fn.collapse
+
+  $.fn.collapse = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.collapse')
+      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.collapse.Constructor = Collapse
+
+
+  // COLLAPSE NO CONFLICT
+  // ====================
+
+  $.fn.collapse.noConflict = function () {
+    $.fn.collapse = old
+    return this
+  }
+
+
+  // COLLAPSE DATA-API
+  // =================
+
+  $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) {
+    var $this   = $(this), href
+    var target  = $this.attr('data-target')
+        || e.preventDefault()
+        || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
+    var $target = $(target)
+    var data    = $target.data('bs.collapse')
+    var option  = data ? 'toggle' : $this.data()
+    var parent  = $this.attr('data-parent')
+    var $parent = parent && $(parent)
+
+    if (!data || !data.transitioning) {
+      if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed')
+      $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
+    }
+
+    $target.collapse(option)
+  })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: dropdown.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#dropdowns
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // DROPDOWN CLASS DEFINITION
+  // =========================
+
+  var backdrop = '.dropdown-backdrop'
+  var toggle   = '[data-toggle=dropdown]'
+  var Dropdown = function (element) {
+    var $el = $(element).on('click.bs.dropdown', this.toggle)
+  }
+
+  Dropdown.prototype.toggle = function (e) {
+    var $this = $(this)
+
+    if ($this.is('.disabled, :disabled')) return
+
+    var $parent  = getParent($this)
+    var isActive = $parent.hasClass('open')
+
+    clearMenus()
+
+    if (!isActive) {
+      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
+        // if mobile we we use a backdrop because click events don't delegate
+        $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
+      }
+
+      $parent.trigger(e = $.Event('show.bs.dropdown'))
+
+      if (e.isDefaultPrevented()) return
+
+      $parent
+        .toggleClass('open')
+        .trigger('shown.bs.dropdown')
+
+      $this.focus()
+    }
+
+    return false
+  }
+
+  Dropdown.prototype.keydown = function (e) {
+    if (!/(38|40|27)/.test(e.keyCode)) return
+
+    var $this = $(this)
+
+    e.preventDefault()
+    e.stopPropagation()
+
+    if ($this.is('.disabled, :disabled')) return
+
+    var $parent  = getParent($this)
+    var isActive = $parent.hasClass('open')
+
+    if (!isActive || (isActive && e.keyCode == 27)) {
+      if (e.which == 27) $parent.find(toggle).focus()
+      return $this.click()
+    }
+
+    var $items = $('[role=menu] li:not(.divider):visible a', $parent)
+
+    if (!$items.length) return
+
+    var index = $items.index($items.filter(':focus'))
+
+    if (e.keyCode == 38 && index > 0)                 index--                        // up
+    if (e.keyCode == 40 && index < $items.length - 1) index++                        // down
+    if (!~index)                                      index=0
+
+    $items.eq(index).focus()
+  }
+
+  function clearMenus() {
+    $(backdrop).remove()
+    $(toggle).each(function (e) {
+      var $parent = getParent($(this))
+      if (!$parent.hasClass('open')) return
+      $parent.trigger(e = $.Event('hide.bs.dropdown'))
+      if (e.isDefaultPrevented()) return
+      $parent.removeClass('open').trigger('hidden.bs.dropdown')
+    })
+  }
+
+  function getParent($this) {
+    var selector = $this.attr('data-target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+    }
+
+    var $parent = selector && $(selector)
+
+    return $parent && $parent.length ? $parent : $this.parent()
+  }
+
+
+  // DROPDOWN PLUGIN DEFINITION
+  // ==========================
+
+  var old = $.fn.dropdown
+
+  $.fn.dropdown = function (option) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('dropdown')
+
+      if (!data) $this.data('dropdown', (data = new Dropdown(this)))
+      if (typeof option == 'string') data[option].call($this)
+    })
+  }
+
+  $.fn.dropdown.Constructor = Dropdown
+
+
+  // DROPDOWN NO CONFLICT
+  // ====================
+
+  $.fn.dropdown.noConflict = function () {
+    $.fn.dropdown = old
+    return this
+  }
+
+
+  // APPLY TO STANDARD DROPDOWN ELEMENTS
+  // ===================================
+
+  $(document)
+    .on('click.bs.dropdown.data-api', clearMenus)
+    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
+    .on('click.bs.dropdown.data-api'  , toggle, Dropdown.prototype.toggle)
+    .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: modal.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#modals
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // MODAL CLASS DEFINITION
+  // ======================
+
+  var Modal = function (element, options) {
+    this.options   = options
+    this.$element  = $(element)
+    this.$backdrop =
+    this.isShown   = null
+
+    if (this.options.remote) this.$element.load(this.options.remote)
+  }
+
+  Modal.DEFAULTS = {
+      backdrop: true
+    , keyboard: true
+    , show: true
+  }
+
+  Modal.prototype.toggle = function (_relatedTarget) {
+    return this[!this.isShown ? 'show' : 'hide'](_relatedTarget)
+  }
+
+  Modal.prototype.show = function (_relatedTarget) {
+    var that = this
+    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
+
+    this.$element.trigger(e)
+
+    if (this.isShown || e.isDefaultPrevented()) return
+
+    this.isShown = true
+
+    this.escape()
+
+    this.$element.on('click.dismiss.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
+
+    this.backdrop(function () {
+      var transition = $.support.transition && that.$element.hasClass('fade')
+
+      if (!that.$element.parent().length) {
+        that.$element.appendTo(document.body) // don't move modals dom position
+      }
+
+      that.$element.show()
+
+      if (transition) {
+        that.$element[0].offsetWidth // force reflow
+      }
+
+      that.$element
+        .addClass('in')
+        .attr('aria-hidden', false)
+
+      that.enforceFocus()
+
+      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
+
+      transition ?
+        that.$element.find('.modal-dialog') // wait for modal to slide in
+          .one($.support.transition.end, function () {
+            that.$element.focus().trigger(e)
+          })
+          .emulateTransitionEnd(300) :
+        that.$element.focus().trigger(e)
+    })
+  }
+
+  Modal.prototype.hide = function (e) {
+    if (e) e.preventDefault()
+
+    e = $.Event('hide.bs.modal')
+
+    this.$element.trigger(e)
+
+    if (!this.isShown || e.isDefaultPrevented()) return
+
+    this.isShown = false
+
+    this.escape()
+
+    $(document).off('focusin.bs.modal')
+
+    this.$element
+      .removeClass('in')
+      .attr('aria-hidden', true)
+      .off('click.dismiss.modal')
+
+    $.support.transition && this.$element.hasClass('fade') ?
+      this.$element
+        .one($.support.transition.end, $.proxy(this.hideModal, this))
+        .emulateTransitionEnd(300) :
+      this.hideModal()
+  }
+
+  Modal.prototype.enforceFocus = function () {
+    $(document)
+      .off('focusin.bs.modal') // guard against infinite focus loop
+      .on('focusin.bs.modal', $.proxy(function (e) {
+        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
+          this.$element.focus()
+        }
+      }, this))
+  }
+
+  Modal.prototype.escape = function () {
+    if (this.isShown && this.options.keyboard) {
+      this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {
+        e.which == 27 && this.hide()
+      }, this))
+    } else if (!this.isShown) {
+      this.$element.off('keyup.dismiss.bs.modal')
+    }
+  }
+
+  Modal.prototype.hideModal = function () {
+    var that = this
+    this.$element.hide()
+    this.backdrop(function () {
+      that.removeBackdrop()
+      that.$element.trigger('hidden.bs.modal')
+    })
+  }
+
+  Modal.prototype.removeBackdrop = function () {
+    this.$backdrop && this.$backdrop.remove()
+    this.$backdrop = null
+  }
+
+  Modal.prototype.backdrop = function (callback) {
+    var that    = this
+    var animate = this.$element.hasClass('fade') ? 'fade' : ''
+
+    if (this.isShown && this.options.backdrop) {
+      var doAnimate = $.support.transition && animate
+
+      this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
+        .appendTo(document.body)
+
+      this.$element.on('click.dismiss.modal', $.proxy(function (e) {
+        if (e.target !== e.currentTarget) return
+        this.options.backdrop == 'static'
+          ? this.$element[0].focus.call(this.$element[0])
+          : this.hide.call(this)
+      }, this))
+
+      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
+
+      this.$backdrop.addClass('in')
+
+      if (!callback) return
+
+      doAnimate ?
+        this.$backdrop
+          .one($.support.transition.end, callback)
+          .emulateTransitionEnd(150) :
+        callback()
+
+    } else if (!this.isShown && this.$backdrop) {
+      this.$backdrop.removeClass('in')
+
+      $.support.transition && this.$element.hasClass('fade')?
+        this.$backdrop
+          .one($.support.transition.end, callback)
+          .emulateTransitionEnd(150) :
+        callback()
+
+    } else if (callback) {
+      callback()
+    }
+  }
+
+
+  // MODAL PLUGIN DEFINITION
+  // =======================
+
+  var old = $.fn.modal
+
+  $.fn.modal = function (option, _relatedTarget) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.modal')
+      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
+
+      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
+      if (typeof option == 'string') data[option](_relatedTarget)
+      else if (options.show) data.show(_relatedTarget)
+    })
+  }
+
+  $.fn.modal.Constructor = Modal
+
+
+  // MODAL NO CONFLICT
+  // =================
+
+  $.fn.modal.noConflict = function () {
+    $.fn.modal = old
+    return this
+  }
+
+
+  // MODAL DATA-API
+  // ==============
+
+  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
+    var $this   = $(this)
+    var href    = $this.attr('href')
+    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
+    var option  = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
+
+    e.preventDefault()
+
+    $target
+      .modal(option, this)
+      .one('hide', function () {
+        $this.is(':visible') && $this.focus()
+      })
+  })
+
+  $(document)
+    .on('show.bs.modal',  '.modal', function () { $(document.body).addClass('modal-open') })
+    .on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: tooltip.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#tooltip
+ * Inspired by the original jQuery.tipsy by Jason Frame
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // TOOLTIP PUBLIC CLASS DEFINITION
+  // ===============================
+
+  var Tooltip = function (element, options) {
+    this.type       =
+    this.options    =
+    this.enabled    =
+    this.timeout    =
+    this.hoverState =
+    this.$element   = null
+
+    this.init('tooltip', element, options)
+  }
+
+  Tooltip.DEFAULTS = {
+    animation: true
+  , placement: 'top'
+  , selector: false
+  , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
+  , trigger: 'hover focus'
+  , title: ''
+  , delay: 0
+  , html: false
+  , container: false
+  }
+
+  Tooltip.prototype.init = function (type, element, options) {
+    this.enabled  = true
+    this.type     = type
+    this.$element = $(element)
+    this.options  = this.getOptions(options)
+
+    var triggers = this.options.trigger.split(' ')
+
+    for (var i = triggers.length; i--;) {
+      var trigger = triggers[i]
+
+      if (trigger == 'click') {
+        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
+      } else if (trigger != 'manual') {
+        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focus'
+        var eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
+
+        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
+        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
+      }
+    }
+
+    this.options.selector ?
+      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
+      this.fixTitle()
+  }
+
+  Tooltip.prototype.getDefaults = function () {
+    return Tooltip.DEFAULTS
+  }
+
+  Tooltip.prototype.getOptions = function (options) {
+    options = $.extend({}, this.getDefaults(), this.$element.data(), options)
+
+    if (options.delay && typeof options.delay == 'number') {
+      options.delay = {
+        show: options.delay
+      , hide: options.delay
+      }
+    }
+
+    return options
+  }
+
+  Tooltip.prototype.getDelegateOptions = function () {
+    var options  = {}
+    var defaults = this.getDefaults()
+
+    this._options && $.each(this._options, function (key, value) {
+      if (defaults[key] != value) options[key] = value
+    })
+
+    return options
+  }
+
+  Tooltip.prototype.enter = function (obj) {
+    var self = obj instanceof this.constructor ?
+      obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
+
+    clearTimeout(self.timeout)
+
+    self.hoverState = 'in'
+
+    if (!self.options.delay || !self.options.delay.show) return self.show()
+
+    self.timeout = setTimeout(function () {
+      if (self.hoverState == 'in') self.show()
+    }, self.options.delay.show)
+  }
+
+  Tooltip.prototype.leave = function (obj) {
+    var self = obj instanceof this.constructor ?
+      obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
+
+    clearTimeout(self.timeout)
+
+    self.hoverState = 'out'
+
+    if (!self.options.delay || !self.options.delay.hide) return self.hide()
+
+    self.timeout = setTimeout(function () {
+      if (self.hoverState == 'out') self.hide()
+    }, self.options.delay.hide)
+  }
+
+  Tooltip.prototype.show = function () {
+    var e = $.Event('show.bs.'+ this.type)
+
+    if (this.hasContent() && this.enabled) {
+      this.$element.trigger(e)
+
+      if (e.isDefaultPrevented()) return
+
+      var $tip = this.tip()
+
+      this.setContent()
+
+      if (this.options.animation) $tip.addClass('fade')
+
+      var placement = typeof this.options.placement == 'function' ?
+        this.options.placement.call(this, $tip[0], this.$element[0]) :
+        this.options.placement
+
+      var autoToken = /\s?auto?\s?/i
+      var autoPlace = autoToken.test(placement)
+      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
+
+      $tip
+        .detach()
+        .css({ top: 0, left: 0, display: 'block' })
+        .addClass(placement)
+
+      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
+
+      var pos          = this.getPosition()
+      var actualWidth  = $tip[0].offsetWidth
+      var actualHeight = $tip[0].offsetHeight
+
+      if (autoPlace) {
+        var $parent = this.$element.parent()
+
+        var orgPlacement = placement
+        var docScroll    = document.documentElement.scrollTop || document.body.scrollTop
+        var parentWidth  = this.options.container == 'body' ? window.innerWidth  : $parent.outerWidth()
+        var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight()
+        var parentLeft   = this.options.container == 'body' ? 0 : $parent.offset().left
+
+        placement = placement == 'bottom' && pos.top   + pos.height  + actualHeight - docScroll > parentHeight  ? 'top'    :
+                    placement == 'top'    && pos.top   - docScroll   - actualHeight < 0                         ? 'bottom' :
+                    placement == 'right'  && pos.right + actualWidth > parentWidth                              ? 'left'   :
+                    placement == 'left'   && pos.left  - actualWidth < parentLeft                               ? 'right'  :
+                    placement
+
+        $tip
+          .removeClass(orgPlacement)
+          .addClass(placement)
+      }
+
+      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
+
+      this.applyPlacement(calculatedOffset, placement)
+      this.$element.trigger('shown.bs.' + this.type)
+    }
+  }
+
+  Tooltip.prototype.applyPlacement = function(offset, placement) {
+    var replace
+    var $tip   = this.tip()
+    var width  = $tip[0].offsetWidth
+    var height = $tip[0].offsetHeight
+
+    // manually read margins because getBoundingClientRect includes difference
+    var marginTop = parseInt($tip.css('margin-top'), 10)
+    var marginLeft = parseInt($tip.css('margin-left'), 10)
+
+    // we must check for NaN for ie 8/9
+    if (isNaN(marginTop))  marginTop  = 0
+    if (isNaN(marginLeft)) marginLeft = 0
+
+    offset.top  = offset.top  + marginTop
+    offset.left = offset.left + marginLeft
+
+    $tip
+      .offset(offset)
+      .addClass('in')
+
+    // check to see if placing tip in new offset caused the tip to resize itself
+    var actualWidth  = $tip[0].offsetWidth
+    var actualHeight = $tip[0].offsetHeight
+
+    if (placement == 'top' && actualHeight != height) {
+      replace = true
+      offset.top = offset.top + height - actualHeight
+    }
+
+    if (/bottom|top/.test(placement)) {
+      var delta = 0
+
+      if (offset.left < 0) {
+        delta       = offset.left * -2
+        offset.left = 0
+
+        $tip.offset(offset)
+
+        actualWidth  = $tip[0].offsetWidth
+        actualHeight = $tip[0].offsetHeight
+      }
+
+      this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
+    } else {
+      this.replaceArrow(actualHeight - height, actualHeight, 'top')
+    }
+
+    if (replace) $tip.offset(offset)
+  }
+
+  Tooltip.prototype.replaceArrow = function(delta, dimension, position) {
+    this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
+  }
+
+  Tooltip.prototype.setContent = function () {
+    var $tip  = this.tip()
+    var title = this.getTitle()
+
+    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
+    $tip.removeClass('fade in top bottom left right')
+  }
+
+  Tooltip.prototype.hide = function () {
+    var that = this
+    var $tip = this.tip()
+    var e    = $.Event('hide.bs.' + this.type)
+
+    function complete() {
+      if (that.hoverState != 'in') $tip.detach()
+    }
+
+    this.$element.trigger(e)
+
+    if (e.isDefaultPrevented()) return
+
+    $tip.removeClass('in')
+
+    $.support.transition && this.$tip.hasClass('fade') ?
+      $tip
+        .one($.support.transition.end, complete)
+        .emulateTransitionEnd(150) :
+      complete()
+
+    this.$element.trigger('hidden.bs.' + this.type)
+
+    return this
+  }
+
+  Tooltip.prototype.fixTitle = function () {
+    var $e = this.$element
+    if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
+      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
+    }
+  }
+
+  Tooltip.prototype.hasContent = function () {
+    return this.getTitle()
+  }
+
+  Tooltip.prototype.getPosition = function () {
+    var el = this.$element[0]
+    return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
+      width: el.offsetWidth
+    , height: el.offsetHeight
+    }, this.$element.offset())
+  }
+
+  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
+    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2  } :
+           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2  } :
+           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
+        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width   }
+  }
+
+  Tooltip.prototype.getTitle = function () {
+    var title
+    var $e = this.$element
+    var o  = this.options
+
+    title = $e.attr('data-original-title')
+      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
+
+    return title
+  }
+
+  Tooltip.prototype.tip = function () {
+    return this.$tip = this.$tip || $(this.options.template)
+  }
+
+  Tooltip.prototype.arrow = function () {
+    return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')
+  }
+
+  Tooltip.prototype.validate = function () {
+    if (!this.$element[0].parentNode) {
+      this.hide()
+      this.$element = null
+      this.options  = null
+    }
+  }
+
+  Tooltip.prototype.enable = function () {
+    this.enabled = true
+  }
+
+  Tooltip.prototype.disable = function () {
+    this.enabled = false
+  }
+
+  Tooltip.prototype.toggleEnabled = function () {
+    this.enabled = !this.enabled
+  }
+
+  Tooltip.prototype.toggle = function (e) {
+    var self = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this
+    self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
+  }
+
+  Tooltip.prototype.destroy = function () {
+    this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)
+  }
+
+
+  // TOOLTIP PLUGIN DEFINITION
+  // =========================
+
+  var old = $.fn.tooltip
+
+  $.fn.tooltip = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.tooltip')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.tooltip.Constructor = Tooltip
+
+
+  // TOOLTIP NO CONFLICT
+  // ===================
+
+  $.fn.tooltip.noConflict = function () {
+    $.fn.tooltip = old
+    return this
+  }
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: popover.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#popovers
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // POPOVER PUBLIC CLASS DEFINITION
+  // ===============================
+
+  var Popover = function (element, options) {
+    this.init('popover', element, options)
+  }
+
+  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
+
+  Popover.DEFAULTS = $.extend({} , $.fn.tooltip.Constructor.DEFAULTS, {
+    placement: 'right'
+  , trigger: 'click'
+  , content: ''
+  , template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
+  })
+
+
+  // NOTE: POPOVER EXTENDS tooltip.js
+  // ================================
+
+  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
+
+  Popover.prototype.constructor = Popover
+
+  Popover.prototype.getDefaults = function () {
+    return Popover.DEFAULTS
+  }
+
+  Popover.prototype.setContent = function () {
+    var $tip    = this.tip()
+    var title   = this.getTitle()
+    var content = this.getContent()
+
+    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
+    $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
+
+    $tip.removeClass('fade top bottom left right in')
+
+    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
+    // this manually by checking the contents.
+    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
+  }
+
+  Popover.prototype.hasContent = function () {
+    return this.getTitle() || this.getContent()
+  }
+
+  Popover.prototype.getContent = function () {
+    var $e = this.$element
+    var o  = this.options
+
+    return $e.attr('data-content')
+      || (typeof o.content == 'function' ?
+            o.content.call($e[0]) :
+            o.content)
+  }
+
+  Popover.prototype.arrow = function () {
+    return this.$arrow = this.$arrow || this.tip().find('.arrow')
+  }
+
+  Popover.prototype.tip = function () {
+    if (!this.$tip) this.$tip = $(this.options.template)
+    return this.$tip
+  }
+
+
+  // POPOVER PLUGIN DEFINITION
+  // =========================
+
+  var old = $.fn.popover
+
+  $.fn.popover = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.popover')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.popover.Constructor = Popover
+
+
+  // POPOVER NO CONFLICT
+  // ===================
+
+  $.fn.popover.noConflict = function () {
+    $.fn.popover = old
+    return this
+  }
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: scrollspy.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#scrollspy
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // SCROLLSPY CLASS DEFINITION
+  // ==========================
+
+  function ScrollSpy(element, options) {
+    var href
+    var process  = $.proxy(this.process, this)
+
+    this.$element       = $(element).is('body') ? $(window) : $(element)
+    this.$body          = $('body')
+    this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process)
+    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)
+    this.selector       = (this.options.target
+      || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
+      || '') + ' .nav li > a'
+    this.offsets        = $([])
+    this.targets        = $([])
+    this.activeTarget   = null
+
+    this.refresh()
+    this.process()
+  }
+
+  ScrollSpy.DEFAULTS = {
+    offset: 10
+  }
+
+  ScrollSpy.prototype.refresh = function () {
+    var offsetMethod = this.$element[0] == window ? 'offset' : 'position'
+
+    this.offsets = $([])
+    this.targets = $([])
+
+    var self     = this
+    var $targets = this.$body
+      .find(this.selector)
+      .map(function () {
+        var $el   = $(this)
+        var href  = $el.data('target') || $el.attr('href')
+        var $href = /^#\w/.test(href) && $(href)
+
+        return ($href
+          && $href.length
+          && [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null
+      })
+      .sort(function (a, b) { return a[0] - b[0] })
+      .each(function () {
+        self.offsets.push(this[0])
+        self.targets.push(this[1])
+      })
+  }
+
+  ScrollSpy.prototype.process = function () {
+    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset
+    var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
+    var maxScroll    = scrollHeight - this.$scrollElement.height()
+    var offsets      = this.offsets
+    var targets      = this.targets
+    var activeTarget = this.activeTarget
+    var i
+
+    if (scrollTop >= maxScroll) {
+      return activeTarget != (i = targets.last()[0]) && this.activate(i)
+    }
+
+    for (i = offsets.length; i--;) {
+      activeTarget != targets[i]
+        && scrollTop >= offsets[i]
+        && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
+        && this.activate( targets[i] )
+    }
+  }
+
+  ScrollSpy.prototype.activate = function (target) {
+    this.activeTarget = target
+
+    $(this.selector)
+      .parents('.active')
+      .removeClass('active')
+
+    var selector = this.selector
+      + '[data-target="' + target + '"],'
+      + this.selector + '[href="' + target + '"]'
+
+    var active = $(selector)
+      .parents('li')
+      .addClass('active')
+
+    if (active.parent('.dropdown-menu').length)  {
+      active = active
+        .closest('li.dropdown')
+        .addClass('active')
+    }
+
+    active.trigger('activate')
+  }
+
+
+  // SCROLLSPY PLUGIN DEFINITION
+  // ===========================
+
+  var old = $.fn.scrollspy
+
+  $.fn.scrollspy = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.scrollspy')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.scrollspy.Constructor = ScrollSpy
+
+
+  // SCROLLSPY NO CONFLICT
+  // =====================
+
+  $.fn.scrollspy.noConflict = function () {
+    $.fn.scrollspy = old
+    return this
+  }
+
+
+  // SCROLLSPY DATA-API
+  // ==================
+
+  $(window).on('load', function () {
+    $('[data-spy="scroll"]').each(function () {
+      var $spy = $(this)
+      $spy.scrollspy($spy.data())
+    })
+  })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: tab.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#tabs
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // TAB CLASS DEFINITION
+  // ====================
+
+  var Tab = function (element) {
+    this.element = $(element)
+  }
+
+  Tab.prototype.show = function () {
+    var $this    = this.element
+    var $ul      = $this.closest('ul:not(.dropdown-menu)')
+    var selector = $this.attr('data-target')
+
+    if (!selector) {
+      selector = $this.attr('href')
+      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
+    }
+
+    if ($this.parent('li').hasClass('active')) return
+
+    var previous = $ul.find('.active:last a')[0]
+    var e        = $.Event('show.bs.tab', {
+      relatedTarget: previous
+    })
+
+    $this.trigger(e)
+
+    if (e.isDefaultPrevented()) return
+
+    var $target = $(selector)
+
+    this.activate($this.parent('li'), $ul)
+    this.activate($target, $target.parent(), function () {
+      $this.trigger({
+        type: 'shown.bs.tab'
+      , relatedTarget: previous
+      })
+    })
+  }
+
+  Tab.prototype.activate = function (element, container, callback) {
+    var $active    = container.find('> .active')
+    var transition = callback
+      && $.support.transition
+      && $active.hasClass('fade')
+
+    function next() {
+      $active
+        .removeClass('active')
+        .find('> .dropdown-menu > .active')
+        .removeClass('active')
+
+      element.addClass('active')
+
+      if (transition) {
+        element[0].offsetWidth // reflow for transition
+        element.addClass('in')
+      } else {
+        element.removeClass('fade')
+      }
+
+      if (element.parent('.dropdown-menu')) {
+        element.closest('li.dropdown').addClass('active')
+      }
+
+      callback && callback()
+    }
+
+    transition ?
+      $active
+        .one($.support.transition.end, next)
+        .emulateTransitionEnd(150) :
+      next()
+
+    $active.removeClass('in')
+  }
+
+
+  // TAB PLUGIN DEFINITION
+  // =====================
+
+  var old = $.fn.tab
+
+  $.fn.tab = function ( option ) {
+    return this.each(function () {
+      var $this = $(this)
+      var data  = $this.data('bs.tab')
+
+      if (!data) $this.data('bs.tab', (data = new Tab(this)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.tab.Constructor = Tab
+
+
+  // TAB NO CONFLICT
+  // ===============
+
+  $.fn.tab.noConflict = function () {
+    $.fn.tab = old
+    return this
+  }
+
+
+  // TAB DATA-API
+  // ============
+
+  $(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
+    e.preventDefault()
+    $(this).tab('show')
+  })
+
+}(window.jQuery);
+
+/* ========================================================================
+ * Bootstrap: affix.js v3.0.0
+ * http://twbs.github.com/bootstrap/javascript.html#affix
+ * ========================================================================
+ * Copyright 2012 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ======================================================================== */
+
+
++function ($) { "use strict";
+
+  // AFFIX CLASS DEFINITION
+  // ======================
+
+  var Affix = function (element, options) {
+    this.options = $.extend({}, Affix.DEFAULTS, options)
+    this.$window = $(window)
+      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
+      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))
+
+    this.$element = $(element)
+    this.affixed  =
+    this.unpin    = null
+
+    this.checkPosition()
+  }
+
+  Affix.RESET = 'affix affix-top affix-bottom'
+
+  Affix.DEFAULTS = {
+    offset: 0
+  }
+
+  Affix.prototype.checkPositionWithEventLoop = function () {
+    setTimeout($.proxy(this.checkPosition, this), 1)
+  }
+
+  Affix.prototype.checkPosition = function () {
+    if (!this.$element.is(':visible')) return
+
+    var scrollHeight = $(document).height()
+    var scrollTop    = this.$window.scrollTop()
+    var position     = this.$element.offset()
+    var offset       = this.options.offset
+    var offsetTop    = offset.top
+    var offsetBottom = offset.bottom
+
+    if (typeof offset != 'object')         offsetBottom = offsetTop = offset
+    if (typeof offsetTop == 'function')    offsetTop    = offset.top()
+    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
+
+    var affix = this.unpin   != null && (scrollTop + this.unpin <= position.top) ? false :
+                offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :
+                offsetTop    != null && (scrollTop <= offsetTop) ? 'top' : false
+
+    if (this.affixed === affix) return
+    if (this.unpin) this.$element.css('top', '')
+
+    this.affixed = affix
+    this.unpin   = affix == 'bottom' ? position.top - scrollTop : null
+
+    this.$element.removeClass(Affix.RESET).addClass('affix' + (affix ? '-' + affix : ''))
+
+    if (affix == 'bottom') {
+      this.$element.offset({ top: document.body.offsetHeight - offsetBottom - this.$element.height() })
+    }
+  }
+
+
+  // AFFIX PLUGIN DEFINITION
+  // =======================
+
+  var old = $.fn.affix
+
+  $.fn.affix = function (option) {
+    return this.each(function () {
+      var $this   = $(this)
+      var data    = $this.data('bs.affix')
+      var options = typeof option == 'object' && option
+
+      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
+      if (typeof option == 'string') data[option]()
+    })
+  }
+
+  $.fn.affix.Constructor = Affix
+
+
+  // AFFIX NO CONFLICT
+  // =================
+
+  $.fn.affix.noConflict = function () {
+    $.fn.affix = old
+    return this
+  }
+
+
+  // AFFIX DATA-API
+  // ==============
+
+  $(window).on('load', function () {
+    $('[data-spy="affix"]').each(function () {
+      var $spy = $(this)
+      var data = $spy.data()
+
+      data.offset = data.offset || {}
+
+      if (data.offsetBottom) data.offset.bottom = data.offsetBottom
+      if (data.offsetTop)    data.offset.top    = data.offsetTop
+
+      $spy.affix(data)
+    })
+  })
+
+}(window.jQuery);
diff --git a/static/assets/js/sass-bootstrap.min.js b/static/assets/js/sass-bootstrap.min.js
new file mode 100644
index 0000000..ef7a1e3
--- /dev/null
+++ b/static/assets/js/sass-bootstrap.min.js
@@ -0,0 +1,8 @@
+/**
+* Sass Bootstrap v3.0.16 by Aaron Lademann and Twitter Inc.
+* Copyright 2013 Aaron Lademann and Twitter Inc.
+* Licensed under http://www.apache.org/licenses/LICENSE-2.0.
+*
+* Designed and built with all the love in the world by @alademann, @mdo and @fat.
+*/
+if(!jQuery)throw new Error("Sass Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(window.jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]');if(a.length){var b=this.$element.find("input").prop("checked",!this.$element.hasClass("active")).trigger("change");"radio"===b.prop("type")&&a.find(".active").removeClass("active")}this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(window.jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("dropdown");d||c.data("dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=f,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focus",i="hover"==g?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show),void 0):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide),void 0):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this.tip();this.setContent(),this.options.animation&&c.addClass("fade");var d="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$element[0]):this.options.placement,e=/\s?auto?\s?/i,f=e.test(d);f&&(d=d.replace(e,"")||"top"),c.detach().css({top:0,left:0,display:"block"}).addClass(d),this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);var g=this.getPosition(),h=c[0].offsetWidth,i=c[0].offsetHeight;if(f){var j=this.$element.parent(),k=d,l=document.documentElement.scrollTop||document.body.scrollTop,m="body"==this.options.container?window.innerWidth:j.outerWidth(),n="body"==this.options.container?window.innerHeight:j.outerHeight(),o="body"==this.options.container?0:j.offset().left;d="bottom"==d&&g.top+g.height+i-l>n?"top":"top"==d&&g.top-l-i<0?"bottom":"right"==d&&g.right+h>m?"left":"left"==d&&g.left-h<o?"right":d,c.removeClass(k).addClass(d)}var p=this.getCalculatedOffset(d,g,h,i);this.applyPlacement(p,d),this.$element.trigger("shown.bs."+this.type)}},b.prototype.applyPlacement=function(a,b){var c,d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),a.top=a.top+g,a.left=a.left+h,d.offset(a).addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;if("top"==b&&j!=f&&(c=!0,a.top=a.top+f-j),/bottom|top/.test(b)){var k=0;a.left<0&&(k=-2*a.left,a.left=0,d.offset(a),i=d[0].offsetWidth,j=d[0].offsetHeight),this.replaceArrow(k-e+i,i,"left")}else this.replaceArrow(j-f,j,"top");c&&d.offset(a)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach()}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),this.$element.trigger("hidden.bs."+this.type),this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;e||d.data("bs.tooltip",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(window.jQuery),+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery);
\ No newline at end of file
diff --git a/static/assets/stylesheet.css b/static/assets/stylesheet.css
new file mode 100644
index 0000000..f0f2947
--- /dev/null
+++ b/static/assets/stylesheet.css
@@ -0,0 +1,220 @@
+/* offset to take top navbar into account */
+#main { margin-top: 0px; }
+
+/* wallpaper hack doesnt make sense in print */
+@media print {
+  .backstretch img {
+    display: none !important
+  }
+}
+
+body {
+  color: #ccc;
+  background-color: #050517;
+  font-family: 'Source Sans Pro', sans-serif;
+  font-weight: 300;
+}
+
+h1, h2, h3, h4, h5, h6  {
+  font-family: "Exo", sans-serif;
+  font-weight: 300;
+}
+
+pre, code {
+  font-family: "Oxygen Mono", monospaced;
+  background: rgba(0,0,0,0.5);
+  color: white;
+  border: 1px solid rgba(0,0,0,0.8);
+}
+
+.smallprint {
+  font-size: 0.8em;
+  color: #666666;
+}
+
+.captioned-image {
+  margin: 20px;
+}
+
+@media screen and (min-width: 992px) {
+  .captioned-image {
+    width: 50%;
+    float: right;
+  }
+}
+
+@media screen and (max-width: 991px) {
+  .captioned-image {
+    width: 80%;
+    margin: 2  
+  }
+}
+
+#wrap {
+  /* the background tint layer */
+  background-image: radial-gradient(ellipse at center top, rgba(32,74,135,0.8) 20%, rgba(0,0,0,0) 100%);
+  /* for older webkit */
+  background: -webkit-radial-gradient(center top, ellipse cover, rgba(32,74,135,0.8) 20%,rgba(0,0,0,0) 100%);
+}
+
+#header img {
+  margin: 20px;
+}
+
+.navbar {
+  font-size: 1.1em; 
+  margin: 0px;
+}
+
+.navbar-inverse  {
+  background-color: rgba(0,0,0,0.4);
+  border: 0;
+}
+
+.nav > li > a {
+  text-align: center;
+  padding-top: 16px;
+  padding-bottom: 16px;
+  margin-bottom: 0;
+  color: #777;
+  font-weight: 600;
+  font-size: 1.1em;
+  text-align: center;
+  text-transform: uppercase;
+  border-bottom-color: transparent;
+}
+
+.nav > li > a:hover, .nav > li.open > a:hover {
+  color: white;
+  border-bottom: 4px solid orange;
+  padding-bottom: 12px;
+}
+
+.nav ul.dropdown-menu {
+  background: rgba(0,0,0,0.8);
+}
+
+.nav ul.dropdown-menu a {
+  color: white;
+}
+
+.nav .dropdown-menu > li > a:hover {
+  background: orange;
+  color: white;
+}
+
+.navbar-header  a.navbar-brand {
+  margin: 0;
+  padding: 0;
+  border: none;
+}
+
+a.navbar-brand {
+  font-size: inherit;
+}
+
+.jumbotron {
+  background: none;
+  padding-bottom: 12px;
+}
+
+.jumbotron h1 {
+  font-weight: 200;
+  color: white;
+  text-shadow: 0px 0px 12px rgba(255,255,255,0.4);
+}
+.jumbotron p {
+  font-weight: 200;
+}
+
+/* Set the fixed height of the footer here */
+#footer {
+  height: 60px;
+  background-color: rgba(0,0,0,0.2);
+}
+
+.container h1.video {
+  text-align: center;
+  text-decoration: underline;
+  font-weight: bold;
+}
+
+.container  h2.video {
+  text-align: center;
+}
+
+.container h3.video {
+  margin-top: 40px;
+  text-align: center;
+}
+
+.container iframe {
+  margin: 0 auto;
+  display: block;
+}
+
+.container .credit {
+  margin: 20px 0;
+}
+
+.downloadbutton a {
+  display: inline;
+  color: white;
+  font-size: 32px;
+  font-weight: 600;
+/*  text-transform: uppercase; */
+  text-shadow: 0 0.5px 2px rgba(0,0,0,0.3);
+  background: goldenrod;
+  background: linear-gradient(to bottom, rgba(255,175,75,1) 0%,rgba(255,146,10,1) 100%);
+  padding: 0 32px 0 32px;
+  border-radius: 60px;
+  text-align: center;
+  border: 2px solid #cc6611;
+}
+
+.downloadbutton a:active {
+  background: linear-gradient(to bottom, rgba(255,175,75,1) 100%,rgba(255,146,10,1) 0%);
+}
+
+div.thumbnail {
+  background: rgba(255,255,255,1);
+  border-radius: 7px;
+  border: none;
+  padding-top: 24px;
+}
+
+ul#markdown-toc {
+  width: 30%;
+  float: right;
+  background: rgba(255,255,255,0.05);
+  border-radius: 7px;
+  margin: 12px;
+  padding-top: 12px;
+  padding-bottom: 18px;
+}
+
+ul#markdown-toc > li {
+  margin-left: 6px;
+}
+
+ul#markdown-toc:before {
+  content: "Table of Contents";
+  font-weight: 300;
+  font-size: 1.6em;
+  margin-left: -18px;
+  margin-bottom: 2px;
+  text-decoration: underline;
+}
+
+/* rss feed jquery plugin */
+.feedEkList{
+//  width:450px; 
+  list-style:none outside none;
+}
+.itemTitle a{
+  font-weight:bold;
+}
+.itemDate{
+  font-size: 0.8em;
+  color:rgba(255,255,255,0.5);
+}
diff --git a/static/googlef092517931db8da6.html b/static/googlef092517931db8da6.html
new file mode 100644
index 0000000..1983e72
--- /dev/null
+++ b/static/googlef092517931db8da6.html
@@ -0,0 +1 @@
+google-site-verification: googlef092517931db8da6.html
\ No newline at end of file
diff --git a/static/images/arrow_asc.gif b/static/images/arrow_asc.gif
new file mode 100755
index 0000000..7ec52fc
Binary files /dev/null and b/static/images/arrow_asc.gif differ
diff --git a/static/images/arrow_desc.gif b/static/images/arrow_desc.gif
new file mode 100755
index 0000000..3c29563
Binary files /dev/null and b/static/images/arrow_desc.gif differ
diff --git a/static/images/avatar.jpg b/static/images/avatar.jpg
new file mode 100644
index 0000000..ba1b551
Binary files /dev/null and b/static/images/avatar.jpg differ
diff --git a/static/images/background.jpeg b/static/images/background.jpeg
new file mode 100644
index 0000000..c573f53
Binary files /dev/null and b/static/images/background.jpeg differ
diff --git a/static/images/centoslogo-32.png b/static/images/centoslogo-32.png
new file mode 100644
index 0000000..f67f35e
Binary files /dev/null and b/static/images/centoslogo-32.png differ
diff --git a/static/images/cloud-hosting-services.png b/static/images/cloud-hosting-services.png
new file mode 100644
index 0000000..c6bcc3f
Binary files /dev/null and b/static/images/cloud-hosting-services.png differ
diff --git a/static/images/cloudbase.png b/static/images/cloudbase.png
new file mode 100644
index 0000000..c6bcc3f
Binary files /dev/null and b/static/images/cloudbase.png differ
diff --git a/static/images/favicon.ico b/static/images/favicon.ico
new file mode 100644
index 0000000..188bd11
Binary files /dev/null and b/static/images/favicon.ico differ
diff --git a/static/images/logo.png b/static/images/logo.png
new file mode 100644
index 0000000..532a9f7
Binary files /dev/null and b/static/images/logo.png differ
diff --git a/static/images/logo_small.png b/static/images/logo_small.png
new file mode 100644
index 0000000..ab363d7
Binary files /dev/null and b/static/images/logo_small.png differ
diff --git a/static/images/sponsors/240x60_Brinkster_1.gif b/static/images/sponsors/240x60_Brinkster_1.gif
new file mode 100644
index 0000000..396e04e
Binary files /dev/null and b/static/images/sponsors/240x60_Brinkster_1.gif differ
diff --git a/static/images/sponsors/Banner_Castlegem_240x60.gif b/static/images/sponsors/Banner_Castlegem_240x60.gif
new file mode 100644
index 0000000..ed3fe28
Binary files /dev/null and b/static/images/sponsors/Banner_Castlegem_240x60.gif differ
diff --git a/static/images/sponsors/CentOS-CBSL-02.png b/static/images/sponsors/CentOS-CBSL-02.png
new file mode 100644
index 0000000..1f7f04c
Binary files /dev/null and b/static/images/sponsors/CentOS-CBSL-02.png differ
diff --git a/static/images/sponsors/PSW_Banner_240x60.jpg b/static/images/sponsors/PSW_Banner_240x60.jpg
new file mode 100644
index 0000000..f8e6990
Binary files /dev/null and b/static/images/sponsors/PSW_Banner_240x60.jpg differ
diff --git a/static/images/sponsors/WEBSTUFF_240x60.gif b/static/images/sponsors/WEBSTUFF_240x60.gif
new file mode 100644
index 0000000..640eb54
Binary files /dev/null and b/static/images/sponsors/WEBSTUFF_240x60.gif differ
diff --git a/static/images/sponsors/airvm-small.gif b/static/images/sponsors/airvm-small.gif
new file mode 100644
index 0000000..fc94a5d
Binary files /dev/null and b/static/images/sponsors/airvm-small.gif differ
diff --git a/static/images/sponsors/baseip_240x60.jpg b/static/images/sponsors/baseip_240x60.jpg
new file mode 100644
index 0000000..cacd664
Binary files /dev/null and b/static/images/sponsors/baseip_240x60.jpg differ
diff --git a/static/images/sponsors/cavecreek_banner_240.gif b/static/images/sponsors/cavecreek_banner_240.gif
new file mode 100644
index 0000000..8d6dd39
Binary files /dev/null and b/static/images/sponsors/cavecreek_banner_240.gif differ
diff --git a/static/images/sponsors/ch-center-small.png b/static/images/sponsors/ch-center-small.png
new file mode 100644
index 0000000..1c8d1d8
Binary files /dev/null and b/static/images/sponsors/ch-center-small.png differ
diff --git a/static/images/sponsors/codero_small.gif b/static/images/sponsors/codero_small.gif
new file mode 100644
index 0000000..bf9bc88
Binary files /dev/null and b/static/images/sponsors/codero_small.gif differ
diff --git a/static/images/sponsors/coloamerica_small.gif b/static/images/sponsors/coloamerica_small.gif
new file mode 100644
index 0000000..df6f751
Binary files /dev/null and b/static/images/sponsors/coloamerica_small.gif differ
diff --git a/static/images/sponsors/dbd_240_60.jpg b/static/images/sponsors/dbd_240_60.jpg
new file mode 100644
index 0000000..78e84ad
Binary files /dev/null and b/static/images/sponsors/dbd_240_60.jpg differ
diff --git a/static/images/sponsors/galaxy_small.gif b/static/images/sponsors/galaxy_small.gif
new file mode 100644
index 0000000..fd4b2bf
Binary files /dev/null and b/static/images/sponsors/galaxy_small.gif differ
diff --git a/static/images/sponsors/godaddy.jpg b/static/images/sponsors/godaddy.jpg
new file mode 100644
index 0000000..dd51fd7
Binary files /dev/null and b/static/images/sponsors/godaddy.jpg differ
diff --git a/static/images/sponsors/hostasaurus240x60banner.gif b/static/images/sponsors/hostasaurus240x60banner.gif
new file mode 100644
index 0000000..4cd1dc3
Binary files /dev/null and b/static/images/sponsors/hostasaurus240x60banner.gif differ
diff --git a/static/images/sponsors/hostdime_br_small.jpg b/static/images/sponsors/hostdime_br_small.jpg
new file mode 100644
index 0000000..31bb637
Binary files /dev/null and b/static/images/sponsors/hostdime_br_small.jpg differ
diff --git a/static/images/sponsors/hostkey_small.gif b/static/images/sponsors/hostkey_small.gif
new file mode 100644
index 0000000..e6be7ae
Binary files /dev/null and b/static/images/sponsors/hostkey_small.gif differ
diff --git a/static/images/sponsors/iomart-240x60.gif b/static/images/sponsors/iomart-240x60.gif
new file mode 100644
index 0000000..f266166
Binary files /dev/null and b/static/images/sponsors/iomart-240x60.gif differ
diff --git a/static/images/sponsors/jtl_small.gif b/static/images/sponsors/jtl_small.gif
new file mode 100644
index 0000000..52613a8
Binary files /dev/null and b/static/images/sponsors/jtl_small.gif differ
diff --git a/static/images/sponsors/kartenzia_small.jpg b/static/images/sponsors/kartenzia_small.jpg
new file mode 100644
index 0000000..f28ba16
Binary files /dev/null and b/static/images/sponsors/kartenzia_small.jpg differ
diff --git a/static/images/sponsors/lt_banner_240.gif b/static/images/sponsors/lt_banner_240.gif
new file mode 100644
index 0000000..ea0ab9a
Binary files /dev/null and b/static/images/sponsors/lt_banner_240.gif differ
diff --git a/static/images/sponsors/microserv_small.jpg b/static/images/sponsors/microserv_small.jpg
new file mode 100644
index 0000000..f85153f
Binary files /dev/null and b/static/images/sponsors/microserv_small.jpg differ
diff --git a/static/images/sponsors/multacom-240x60.gif b/static/images/sponsors/multacom-240x60.gif
new file mode 100644
index 0000000..50d030e
Binary files /dev/null and b/static/images/sponsors/multacom-240x60.gif differ
diff --git a/static/images/sponsors/ndc_host_240.gif b/static/images/sponsors/ndc_host_240.gif
new file mode 100644
index 0000000..fabea0d
Binary files /dev/null and b/static/images/sponsors/ndc_host_240.gif differ
diff --git a/static/images/sponsors/netelligent_small.png b/static/images/sponsors/netelligent_small.png
new file mode 100644
index 0000000..8f5f438
Binary files /dev/null and b/static/images/sponsors/netelligent_small.png differ
diff --git a/static/images/sponsors/psychz_net.gif b/static/images/sponsors/psychz_net.gif
new file mode 100644
index 0000000..4a1341e
Binary files /dev/null and b/static/images/sponsors/psychz_net.gif differ
diff --git a/static/images/sponsors/pwebtech_banner_240.gif b/static/images/sponsors/pwebtech_banner_240.gif
new file mode 100644
index 0000000..148a0c7
Binary files /dev/null and b/static/images/sponsors/pwebtech_banner_240.gif differ
diff --git a/static/images/sponsors/serverpronto_small.gif b/static/images/sponsors/serverpronto_small.gif
new file mode 100644
index 0000000..f74b5f1
Binary files /dev/null and b/static/images/sponsors/serverpronto_small.gif differ
diff --git a/static/images/sponsors/shinjirubanner260x60.gif b/static/images/sponsors/shinjirubanner260x60.gif
new file mode 100644
index 0000000..7eef4af
Binary files /dev/null and b/static/images/sponsors/shinjirubanner260x60.gif differ
diff --git a/static/images/sponsors/sponsor_placeholder-240-60.png b/static/images/sponsors/sponsor_placeholder-240-60.png
new file mode 100644
index 0000000..ca0aaf9
Binary files /dev/null and b/static/images/sponsors/sponsor_placeholder-240-60.png differ
diff --git a/static/images/sponsors/srvint_small.gif b/static/images/sponsors/srvint_small.gif
new file mode 100644
index 0000000..ad4462d
Binary files /dev/null and b/static/images/sponsors/srvint_small.gif differ
diff --git a/static/images/sponsors/steadfast_234x60.gif b/static/images/sponsors/steadfast_234x60.gif
new file mode 100644
index 0000000..cbd5888
Binary files /dev/null and b/static/images/sponsors/steadfast_234x60.gif differ
diff --git a/static/images/sponsors/theplanet.jpg b/static/images/sponsors/theplanet.jpg
new file mode 100644
index 0000000..0e1f7ec
Binary files /dev/null and b/static/images/sponsors/theplanet.jpg differ
diff --git a/static/images/sponsors/vhostvn.gif b/static/images/sponsors/vhostvn.gif
new file mode 100644
index 0000000..840b024
Binary files /dev/null and b/static/images/sponsors/vhostvn.gif differ
diff --git a/static/images/sponsors/webnx1.png b/static/images/sponsors/webnx1.png
new file mode 100644
index 0000000..f8511ba
Binary files /dev/null and b/static/images/sponsors/webnx1.png differ
diff --git a/static/images/sponsors/wow.234x60.gif b/static/images/sponsors/wow.234x60.gif
new file mode 100644
index 0000000..997ed6a
Binary files /dev/null and b/static/images/sponsors/wow.234x60.gif differ
diff --git a/static/images/sponsors/yourname_small.gif b/static/images/sponsors/yourname_small.gif
new file mode 100644
index 0000000..6a84f85
Binary files /dev/null and b/static/images/sponsors/yourname_small.gif differ
diff --git a/static/loader.gif b/static/loader.gif
new file mode 100644
index 0000000..1d4bfaf
Binary files /dev/null and b/static/loader.gif differ