e8ec7a upload of current site content

Authored and Committed by jperrin 11 years ago
186 files changed. 12360 lines added. 24 lines removed.
.gitignore
file added
+7
README.md
file modified
+7 -24
Rules
file added
+103
config.rb
file added
+11
content/about.md
file added
+31
content/about/governance.md
file added
+51
content/about/governance/appendix-glossary.md
file added
+38
content/about/governance/board-diagram-involvement.png
file added
+0
content/about/governance/board-responsibilities.md
file added
+60
content/about/governance/governance-greenhouse.png
file added
+0
content/about/governance/governance-structure-diagram.png
file added
+0
content/about/governance/joining-the-project.md
file added
+39
content/about/governance/sig-maturity-crossover.png
file added
+0
content/about/governance/sigs.md
file added
+79
content/about/governance/voting.md
file added
+34
content/assets/css/bootstrap.scss
file added
+7
content/assets/css/bootstrap/_alerts.scss
file added
+67
content/assets/css/bootstrap/_badges.scss
file added
+51
content/assets/css/bootstrap/_breadcrumbs.scss
file added
+23
content/assets/css/bootstrap/_button-groups.scss
file added
+248
content/assets/css/bootstrap/_buttons.scss
file added
+160
content/assets/css/bootstrap/_carousel.scss
file added
+209
content/assets/css/bootstrap/_close.scss
file added
+35
content/assets/css/bootstrap/_code.scss
file added
+56
content/assets/css/bootstrap/_component-animations.scss
file added
+29
content/assets/css/bootstrap/_dropdowns.scss
file added
+194
content/assets/css/bootstrap/_forms.scss
file added
+352
content/assets/css/bootstrap/_glyphicons.scss
file added
+232
content/assets/css/bootstrap/_grid.scss
file added
+346
content/assets/css/bootstrap/_input-groups.scss
file added
+127
content/assets/css/bootstrap/_jumbotron.scss
file added
+40
content/assets/css/bootstrap/_labels.scss
file added
+58
content/assets/css/bootstrap/_list-group.scss
file added
+90
content/assets/css/bootstrap/_media.scss
file added
+56
content/assets/css/bootstrap/_mixins.scss
file added
+730
content/assets/css/bootstrap/_modals.scss
file added
+146
content/assets/css/bootstrap/_navbar.scss
file added
+625
content/assets/css/bootstrap/_navs.scss
file added
+229
content/assets/css/bootstrap/_normalize.scss
file added
+396
content/assets/css/bootstrap/_pager.scss
file added
+55
content/assets/css/bootstrap/_pagination.scss
file added
+83
content/assets/css/bootstrap/_panels.scss
file added
+148
content/assets/css/bootstrap/_popovers.scss
file added
+133
content/assets/css/bootstrap/_print.scss
file added
+100
content/assets/css/bootstrap/_progress-bars.scss
file added
+95
content/assets/css/bootstrap/_responsive-utilities.scss
file added
+209
content/assets/css/bootstrap/_scaffolding.scss
file added
+130
content/assets/css/bootstrap/_tables.scss
file added
+236
content/assets/css/bootstrap/_theme.scss
file added
+232
content/assets/css/bootstrap/_thumbnails.scss
file added
+31
content/assets/css/bootstrap/_tooltip.scss
file added
+95
content/assets/css/bootstrap/_type.scss
file added
+238
content/assets/css/bootstrap/_utilities.scss
file added
+42
content/assets/css/bootstrap/_variables.scss
file added
+620
content/assets/css/bootstrap/_wells.scss
file added
+29
content/assets/css/bootstrap/bootstrap.scss
file added
+59
content/assets/seven.rss
file added
+311
content/community/stories.md
file added
+14
content/download.haml
file added
+59
content/download/cloud.md
file added
+22
content/download/full-mirrorlist.csv
file added
+485
content/download/mirrors.erb
file added
+70
content/download/wallpaper.png
file added
+0
content/index.erb
file added
+67
content/legal.md
file added
+54
content/legal/trademarks.md
file added
+109
content/media.erb
file added
+29
content/robots.txt.erb
file added
+11
content/sitemap.xml.erb
file added
+5
content/sponsors.erb
file added
+29
content/sponsors/air-vm.erb
file added
+8
content/sponsors/baseip.erb
file added
+9
content/sponsors/brinkster.erb
file added
+9
content/sponsors/castlegem.erb
file added
+9
content/sponsors/ch-center.erb
file added
+9
content/sponsors/cloudbase.erb
file added
+9
content/sponsors/codero.erb
file added
+9
content/sponsors/coloamerica.erb
file added
+8
content/sponsors/dbd.erb
file added
+8
content/sponsors/easyspace.erb
file added
+8
content/sponsors/galaxyvisions.erb
file added
+8
content/sponsors/godaddy.erb
file added
+8
content/sponsors/hostasaurus.erb
file added
+8
content/sponsors/hostdime.erb
file added
+8
content/sponsors/hostdimebr.erb
file added
+8
content/sponsors/hostkey.erb
file added
+9
content/sponsors/jtlnet.erb
file added
+9
content/sponsors/kartenzia.erb
file added
+9
content/sponsors/layered_tech.erb
file added
+8
content/sponsors/microserv.erb
file added
+9
content/sponsors/multacom.erb
file added
+8
content/sponsors/ndchost.erb
file added
+8
content/sponsors/netelligent.erb
file added
+8
content/sponsors/psw.erb
file added
+9
content/sponsors/psychz.erb
file added
+8
content/sponsors/pwebtech.erb
file added
+8
content/sponsors/securedservers.erb
file added
+8
content/sponsors/serverpronto.erb
file added
+9
content/sponsors/servint.erb
file added
+9
content/sponsors/shinjiru.erb
file added
+8
content/sponsors/steadfast.erb
file added
+9
content/sponsors/theplanet.erb
file added
+8
content/sponsors/vhostvn.erb
file added
+8
content/sponsors/webnx.erb
file added
+9
content/sponsors/webstuff.erb
file added
+8
content/sponsors/wowrack.erb
file added
+8
content/sponsors/yourname.erb
file added
+9
content/variants.md
file added
+49
layouts/default-haml.haml
file added
+38
layouts/navbar.haml
file added
+61
lib/default.rb
file added
+2
lib/filters/add_ids_to_headers.rb
file added
+20
lib/filters/add_toc.rb
file added
+28
lib/filters/remove_spacing_around_pre.rb
file added
+13
lib/helpers.rb
file added
+5
lib/sitemap.rb
file added
+1
nanoc.yaml
file added
+96
static/assets/csvtable-look.css
file added
+34
static/assets/fonts/bootstrap/glyphicons-halflings-regular.eot
file added
+0
static/assets/fonts/bootstrap/glyphicons-halflings-regular.svg
file added
+228
static/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf
file added
+0
static/assets/fonts/bootstrap/glyphicons-halflings-regular.woff
file added
+0
static/assets/jquery.tidy.table.css
file added
+76
static/assets/js/FeedEk.js
file added
+7
static/assets/js/google.js
file added
+8
static/assets/js/html5.js
file added
+9
static/assets/js/jquery.backstretch.min.js
file added
+4
static/assets/js/jquery.csvToTable.js
file added
+154
static/assets/js/jquery.csvToTable2.js
file added
+188
static/assets/js/jquery.cycle2.center.min.js
file added
+2
static/assets/js/jquery.cycle2.min.js
file added
+17
static/assets/js/jquery.min.js
file added
+6
static/assets/js/jquery.tablesorter.min.js
file added
+4
static/assets/js/jquery.tidy.table.min.js
file added
+2
static/assets/js/sass-bootstrap.js
file added
+2001
static/assets/js/sass-bootstrap.min.js
file added
+8
static/assets/stylesheet.css
file added
+220
static/googlef092517931db8da6.html
file added
+1
static/images/arrow_asc.gif
file added
+0
static/images/arrow_desc.gif
file added
+0
static/images/avatar.jpg
file added
+0
static/images/background.jpeg
file added
+0
static/images/centoslogo-32.png
file added
+0
static/images/cloud-hosting-services.png
file added
+0
static/images/cloudbase.png
file added
+0
static/images/favicon.ico
file added
+0
static/images/logo.png
file added
+0
static/images/logo_small.png
file added
+0
static/images/sponsors/240x60_Brinkster_1.gif
file added
+0
static/images/sponsors/Banner_Castlegem_240x60.gif
file added
+0
static/images/sponsors/CentOS-CBSL-02.png
file added
+0
static/images/sponsors/PSW_Banner_240x60.jpg
file added
+0
static/images/sponsors/WEBSTUFF_240x60.gif
file added
+0
static/images/sponsors/airvm-small.gif
file added
+0
static/images/sponsors/baseip_240x60.jpg
file added
+0
static/images/sponsors/cavecreek_banner_240.gif
file added
+0
static/images/sponsors/ch-center-small.png
file added
+0
static/images/sponsors/codero_small.gif
file added
+0
static/images/sponsors/coloamerica_small.gif
file added
+0
static/images/sponsors/dbd_240_60.jpg
file added
+0
static/images/sponsors/galaxy_small.gif
file added
+0
static/images/sponsors/godaddy.jpg
file added
+0
static/images/sponsors/hostasaurus240x60banner.gif
file added
+0
static/images/sponsors/hostdime_br_small.jpg
file added
+0
static/images/sponsors/hostkey_small.gif
file added
+0
static/images/sponsors/iomart-240x60.gif
file added
+0
static/images/sponsors/jtl_small.gif
file added
+0
static/images/sponsors/kartenzia_small.jpg
file added
+0
static/images/sponsors/lt_banner_240.gif
file added
+0
static/images/sponsors/microserv_small.jpg
file added
+0
static/images/sponsors/multacom-240x60.gif
file added
+0
static/images/sponsors/ndc_host_240.gif
file added
+0
static/images/sponsors/netelligent_small.png
file added
+0
static/images/sponsors/psychz_net.gif
file added
+0
static/images/sponsors/pwebtech_banner_240.gif
file added
+0
static/images/sponsors/serverpronto_small.gif
file added
+0
static/images/sponsors/shinjirubanner260x60.gif
file added
+0
static/images/sponsors/sponsor_placeholder-240-60.png
file added
+0
static/images/sponsors/srvint_small.gif
file added
+0
static/images/sponsors/steadfast_234x60.gif
file added
+0
static/images/sponsors/theplanet.jpg
file added
+0
static/images/sponsors/vhostvn.gif
file added
+0
static/images/sponsors/webnx1.png
file added
+0
static/images/sponsors/wow.234x60.gif
file added
+0
static/images/sponsors/yourname_small.gif
file added
+0
static/loader.gif
file added
+0
    upload of current site content
    
        
file added
+7
.gitignore ADDED
@@ -0,0 +1,7 @@
1
+ *~
2
+ output/*
3
+ tmp/*
4
+ .sass-cache/*
5
+ Guardfile
6
+ output.diff
7
+ crash.log
file modified
+7 -24
README.md CHANGED
@@ -1,3 +1,7 @@
1
+ This is a repository for a yet-to-be-announced project. Consider
2
+ everything here company confidential until the announcement.
3
+
4
+
1
5
The site is built with *nanoc* and *Bootstrap 3*.
2
6
3
7
* http://www.nanoc.ws
@@ -30,30 +34,9 @@ May be in RPM:
30
34
* asciidoc
31
35
* nokogiri
32
36
33
- Installing on Fedora 19/20:
34
- Packages will come later for the dependencies.
37
+ Installing on Fedora 20:
38
+
35
39
<pre>
36
40
sudo yum install ruby asciidoc nokogiri
37
- gem install nanoc adsf cri compass haml kramdown pry rainpress rubypants sass susy systemu guard-nanoc
41
+ gem install nanoc adsf cri compass haml kramdown pry rainpress rubypants sass susy systemu
38
42
</pre>
39
-
40
-
41
- #Site Layout
42
- * Template and menu files live in /layouts
43
- * Markdown, erb and processed text files live in /content
44
- * Static site content such as images and javascript live in /static
45
- * The /lib directory contains nanoc helper files used to process the site
46
- * Compiled site content exists in /output
47
-
48
- #Building the site
49
- * Run 'nanoc' to compile assemble the static site. files from /static, /content, and /layouts will be combined.
50
- * You may view the site with 'nanoc view' and then pointing your browser at http://127.0.0.1:3000
51
-
52
- 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.
53
- 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.
54
- Next run 'nanoc view &', followed by 'guard'
55
- Now in another terminal, you may make changes to the website content, and it will rebuild as you touch files.
56
-
57
-
58
- #Deploying the site
59
- Simply run 'nanoc deploy --target=' where the target value is either prod1 or prod2. These targets are defined in the nanoc.yaml file.
file added
+103
Rules ADDED
@@ -0,0 +1,103 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ ## Required Gems
4
+ require 'compass'
5
+ require 'susy'
6
+
7
+ ### Compass configuration ####################################################
8
+ Compass.add_project_configuration 'config.rb'
9
+ sass_options = Compass.sass_engine_options
10
+
11
+ ### Configuration ############################################################
12
+ TypographicalImprovementFilter = :rubypants
13
+ TypographicalImprovementFilterParams = {}
14
+
15
+ ### Preprocessing ############################################################
16
+ preprocess do
17
+ config[:nanoc_version_info] = `nanoc --version`.strip
18
+ config[:gem_version_info] = `gem --version`.strip
19
+ end
20
+
21
+ ### Routing ##################################################################
22
+ route '/static/*' do
23
+ # /static/foo.html/ → /foo.html
24
+ item.identifier[7..-2]
25
+ end
26
+
27
+ route 'sitemap' do
28
+ item.identifier.chop + '.xml'
29
+ end
30
+
31
+
32
+ route '/assets/css/bootstrap/_*/' do
33
+ # Don't output partials, so return nil
34
+ nil
35
+ end
36
+
37
+ route '/assets/css/*/' do
38
+ # path with version
39
+ '/assets/style' + '-v' + rep.item[:version].to_s + '.css'
40
+ end
41
+
42
+ route '*' do
43
+ if item.binary?
44
+ item.identifier.chop + '.' + item[:extension]
45
+ elsif item[:is_partial] || item[:kind] == 'article'
46
+ # Don’t output partial items (e.g. sub-stylesheets)
47
+ nil
48
+ elsif item[:path]
49
+ item[:path]
50
+ else
51
+ # Place each file in its own directory
52
+ rep.item.identifier + 'index.html'
53
+ end
54
+ end
55
+
56
+
57
+ ### Compilation ##############################################################
58
+
59
+ compile 'sitemap' do
60
+ filter :erb
61
+ end
62
+
63
+ compile '/assets/css/bootstrap/_*/' do
64
+ # Don’t compile partials
65
+ end
66
+
67
+ compile '/assets/css/*/' do
68
+ filter :sass, Compass.sass_engine_options
69
+ filter :relativize_paths, :type => :css
70
+ filter :rainpress
71
+ end
72
+ compile '/static/*' do
73
+ end
74
+
75
+ compile '*' do
76
+ if item.binary?
77
+ # ha, do nothing! :)
78
+ else
79
+ puts "item = #{item.identifier} -- extension = #{item[:extension]}"
80
+ case item[:extension]
81
+ when 'md'
82
+ filter :erb
83
+ filter :kramdown
84
+ when 'haml'
85
+ filter :erb
86
+ filter :haml
87
+ when 'js'
88
+ filter :erb
89
+ filter :uglify_js
90
+ when 'adoc'
91
+ filter :asciidoc
92
+ else
93
+ filter :erb
94
+ end
95
+ layout 'default-haml' unless item[:extension] == 'js'
96
+ filter :add_ids_to_headers
97
+ filter TypographicalImprovementFilter, TypographicalImprovementFilterParams
98
+ end
99
+ end
100
+ ### Layouting ################################################################
101
+
102
+
103
+ layout '*', :haml
file added
+11
config.rb ADDED
@@ -0,0 +1,11 @@
1
+ project_path = "."
2
+ http_path = '/'
3
+ output_style = :expanded
4
+ sass_dir = 'content/assets/css'
5
+ css_dir = 'output/assets/css'
6
+ fonts_dir = "output/assets/fonts"
7
+ icon_fonts_path = "output/assets/fonts"
8
+ icon_fonts_dir = "output/assets/fonts"
9
+ sass_options = {
10
+ :syntax => :scss
11
+ }
file added
+31
content/about.md ADDED
@@ -0,0 +1,31 @@
1
+ ---
2
+ title: "About CentOS"
3
+ markdown: basic
4
+ is_dynamic: true
5
+ ---
6
+ * Table of contents will replace this text.
7
+ {:toc}
8
+
9
+
10
+ #CentOS Linux
11
+ 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.
12
+
13
+ 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).
14
+
15
+ 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.
16
+
17
+ 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.
18
+
19
+ #The CentOS Project
20
+ 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.
21
+
22
+
23
+ ## The Governing Board
24
+ 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).
25
+
26
+ ## The Project Structure
27
+ 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:
28
+
29
+ * [Core](http://wiki.centos.org/SpecialInterestGroup/Core) - Building and releasing the core CentOS Linux platform.
30
+ * [Xen4CentOS](http://wiki.centos.org/Manuals/ReleaseNotes/Xen4-01) - Providing Xen4 support for CentOS 6
31
+ * [CentOS Design](http://wiki.centos.org/ArtWork) - Improving the user experience with high quality artwork
content/about/governance.md ADDED
@@ -0,0 +1,51 @@
1
+ ---
2
+ title: "CentOS Governance"
3
+ markdown: basic
4
+ is_dynamic: true
5
+ ---
6
+
7
+ * Table of contents will replace this text.
8
+ {:toc}
9
+
10
+ #CentOS Governance
11
+ {:.no_toc}
12
+
13
+ The CentOS Project governance structure has two main tiers:
14
+
15
+ * The Governing Board, a group of 8 to 11 people, responsible for overall oversight of the CentOS Project
16
+ * 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.
17
+
18
+ <div class="captioned-image">
19
+ <img class="img-responsive" src="/about/governance/governance-greenhouse.png" alt="Image describing the board">
20
+ <div class="caption">
21
+ <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>
22
+ </div>
23
+ </div>
24
+
25
+ ## The CentOS Governing Board
26
+
27
+ 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.
28
+
29
+ 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.
30
+
31
+ ## Current Sitting Board
32
+ 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.
33
+
34
+ The CentOS Governing Board is:
35
+
36
+ * [Carl Trieloff](http://wiki.centos.org/CarlTrieloff)
37
+ * [Fabian Arrotin](http://wiki.centos.org/FabianArrotin)
38
+ * [Jim Perrin](http://wiki.centos.org/JimPerrin)
39
+ * [Johnny Hughes](http://wiki.centos.org/JohnnyHughes)
40
+ * [Karanbir Singh](http://wiki.centos.org/KaranbirSingh) ([Chair](/about/governance/board-responsibilities/#chair-responsibilities))
41
+ * [Karsten Wade](http://wiki.centos.org/KarstenWade) ([Liaison](/about/governance/board-responsibilities/#red-hat-liaison-responsibilities))
42
+ * [Mike McLean](http://wiki.centos.org/MikeMcLean)
43
+ * [Ralph Angenendt](http://wiki.centos.org/RalphAngenendt)
44
+ * [Tru Huynh](http://wiki.centos.org/TruHuynh)
45
+
46
+ ## More information
47
+ * [Governing Board responsibilities](/about/governance/board-responsibilities)
48
+ * [SIGs](/about/governance/sigs)
49
+ * [Joining the project](/about/governance/joining-the-project)
50
+ * [Voting](/about/governance/voting)
51
+ * [Appendix: Glossary](/about/governance/appendix-glossary)
content/about/governance/appendix-glossary.md ADDED
@@ -0,0 +1,38 @@
1
+ ---
2
+ title: "CentOS Governance - Appendix: Glossary"
3
+ markdown: basic
4
+ is_dynamic: true
5
+ ---
6
+
7
+ * Table of contents will replace this text.
8
+ {:toc}
9
+
10
+ #CentOS Governance - Appendix: Glossary
11
+ {:.no_toc}
12
+ [&laquo; Back to Governance](/about/governance)
13
+
14
+ ## Meritocracy
15
+ 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.
16
+
17
+ 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).
18
+
19
+ 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.
20
+
21
+ ##Consensus decision making
22
+ 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:
23
+
24
+ 1. A proposal is put forth and a check for consensus is made.
25
+ 1. Consensus is signified through a +1 vote.
26
+ 1. A check is made for any dissent on the proposal.
27
+ 1. Reservations? State reservation, sometimes with a ‘-1’ signifier
28
+ 1. Reservations about the proposal are worked through, seeking consensus to resolve the reservations.
29
+ 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.
30
+ 1. Stand aside? No comment, or state concerns without a -1 reservation; sometimes the ‘-0’ signifier is used.
31
+ 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.
32
+ 1. The stated concerns may influence other people to have or release reservations.
33
+ 1. Block? Vote ‘-1’ with reasons for the block.
34
+ 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.
35
+
36
+ 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.
37
+
38
+ [&laquo; Back to Governance](/about/governance)
content/about/governance/board-responsibilities.md ADDED
@@ -0,0 +1,60 @@
1
+ ---
2
+ title: "CentOS Governance - Board Structure"
3
+ markdown: basic
4
+ is_dynamic: true
5
+ ---
6
+
7
+ * Table of contents will replace this text.
8
+ {:toc}
9
+
10
+ #CentOS Governing Responsibilities
11
+ {:.no_toc}
12
+ [&laquo; Back to Governance](/about/governance)
13
+
14
+ ## CentOS Governing Board Responsibilities
15
+ * Guidance and leadership over the ultimate Project roadmap.
16
+ * Community outreach.
17
+ * Maintenance of health and viability of CentOS community.
18
+ * Maintenance of a healthy and proactive relationship with the Project users and consider those needs and uses in decisions.
19
+ * Coordination of Project messaging.
20
+ * Overall Project leadership as the final escalation point for decisions unable to be resolved effectively at the SIG level.
21
+ * Approval of new SIGs and changes to SIGs charters.
22
+ * Approval of new contributors as requested by SIGs.
23
+ * Approval of SIG graduations.
24
+ * Oversight of SIG variants, including those that may fork or drive the core base OS. At a minimum,
25
+ * There must be overwhelming community support for this;
26
+ * It must be net-positive or, at least, net-neutral to the core.
27
+ * Trademark and brand oversight.
28
+ * Create Git licensing and contribution policies.
29
+ * Appointment of Board Chair.
30
+ * Appointment of new Board members.
31
+ * Re-appointment of Board members after 12 month term of service.
32
+
33
+ ## Individual Governing Board Member Responsibilities
34
+ * Work with SIGs as mentors to help SIGs reach effective stability and self-sustainability.
35
+ * Act as leaders across the community, generally and as appropriate.
36
+ * Continue to be active in one or more SIGs.
37
+ * Attend Board meetings on a regular basis via the agreed-upon meeting methods.
38
+ * Occasionally be available on short notice or for important Board business, electronically or in person.
39
+ * 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.
40
+ * Strive to conduct Board business transparently following the principles of the open source way.
41
+
42
+ 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.
43
+
44
+ ## Chair Responsibilities
45
+ * Organize and run the Board meetings.
46
+ * Be the coordinating and lead voice for the Project.
47
+ * Coordinate the Board to set direction and articulation thereof.
48
+ * Focus on helping the Board to reach consensus.
49
+ * Guide the Board in transparency and practicing the open source way in leadership and decision making.
50
+
51
+ ## Red Hat Liaison Responsibilities
52
+ * 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.
53
+ * Allow for the Board to bring concerns or perspectives from the community to Red Hat.
54
+ * 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.
55
+
56
+ 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.
57
+
58
+ 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.
59
+
60
+ [&laquo; Back to Governance](/about/governance)
content/about/governance/joining-the-project.md ADDED
@@ -0,0 +1,39 @@
1
+ ---
2
+ title: "CentOS Governance - Joining the Project"
3
+ markdown: basic
4
+ is_dynamic: true
5
+ ---
6
+
7
+ * Table of contents will replace this text.
8
+ {:toc}
9
+
10
+ #CentOS Governance - Joining the Project
11
+ {:.no_toc}
12
+ [&laquo; Back to Governance](/about/governance)
13
+
14
+ 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.
15
+
16
+ ##Variant or Functional SIGs
17
+ 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.)
18
+
19
+ 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.
20
+
21
+ ##CentOS Core SIG
22
+ 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.
23
+
24
+ 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.
25
+
26
+ ##Board Members
27
+ 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:
28
+
29
+ * 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.
30
+ * Promote CentOS and the needs of the community projects in CentOS to achieve active and vibrant adoption in the community for CentOS.
31
+ * Have the ability to debate, understand, and balance sometimes opposing CentOS Project objectives.
32
+ * Have a solid understanding of meritocracy, the merit criteria and running, operating, and/or governing a large scale FOSS community project.
33
+
34
+ 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.
35
+
36
+ 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.
37
+
38
+ [&laquo; Back to Governance](/about/governance)
39
+
content/about/governance/sigs.md ADDED
@@ -0,0 +1,79 @@
1
+ ---
2
+ title: "CentOS Governance - SIGs"
3
+ markdown: basic
4
+ is_dynamic: true
5
+ ---
6
+
7
+ * Table of contents will replace this text.
8
+ {:toc}
9
+
10
+ #The CentOS SIGs
11
+ {:.no_toc}
12
+ [&laquo; Back to Governance](/about/governance)
13
+
14
+ 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.
15
+
16
+ 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.
17
+
18
+ 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.
19
+
20
+ 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’.
21
+
22
+ 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.
23
+
24
+ ##CentOS Core SIG Responsibilities
25
+ * Build the CentOS release.
26
+ * _Sign_ the CentOS release.
27
+ * Push official CentOS releases to the initial mirror.
28
+ * Coordinate with upstream as required.
29
+ * Accept changes into Git.
30
+ * Manage Git licensing and contribution policies.
31
+
32
+ ##Variant SIG Responsibilities
33
+ * Create and maintain one or more variations with technology in CentOS on top of or modifications to the core base.
34
+ * Foster a user community as a primary purpose of the variant.
35
+ * Keep the Project artifacts (the variant) relevant and useful to the user community.
36
+ * Ensure the software brought in to support the variant is licensed and prepared properly for packaging and distribution as part of the CentOS Project.
37
+ * Oversee inclusions of code related to the variant in to git.centos.org.
38
+ * Conduct the business of the SIG following accepted open source practices around meritocracy and consensus decision making.
39
+
40
+ ##Functional SIG Responsibilities
41
+ * Accountable for designing, building, and maintaining key Project component(s).
42
+ * Make the functional area open for participation, with barriers to contribution as low as feasible and reasonable.
43
+ * Foster a community of users and doers around the functional aspect, to share the responsibility, workload, and innovation.
44
+ * Work within given legal constraints and requirements.
45
+
46
+ ##SIG Governance
47
+
48
+ <div class="captioned-image">
49
+ <img class="img-responsive" src="/about/governance/sig-maturity-crossover.png" alt="Illustration" />
50
+ <div class="caption">
51
+ <p><i><!-- caption can go here --></i></p>
52
+ </div>
53
+ </div>
54
+
55
+ 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.
56
+
57
+
58
+ __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.
59
+
60
+ 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.
61
+
62
+ 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.
63
+
64
+ 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.
65
+
66
+ 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.
67
+
68
+ 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.
69
+
70
+ ##Community and SIGs
71
+ 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.
72
+
73
+ 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.
74
+
75
+ 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.
76
+
77
+ For the current list of active SIGs, refer to [http://wiki.centos.org/SpecialInterestGroup](http://wiki.centos.org/SpecialInterestGroup)
78
+
79
+ [&laquo; Back to Governance](/about/governance)
content/about/governance/voting.md ADDED
@@ -0,0 +1,34 @@
1
+ ---
2
+ title: "CentOS Governance - Voting"
3
+ markdown: basic
4
+ is_dynamic: true
5
+ ---
6
+
7
+ * Table of contents will replace this text.
8
+ {:toc}
9
+
10
+ #CentOS Governance - Voting
11
+ {:.no_toc}
12
+ [&laquo; Back to Governance](/about/governance)
13
+
14
+ 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.
15
+
16
+ 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.
17
+
18
+ All -1s votes require reason/ explanation, -1's with no substantiation may be overturned.
19
+
20
+ ##When do votes need to be called?
21
+ 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.
22
+
23
+ _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.
24
+
25
+ ##Role of the Liaison
26
+ 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:
27
+
28
+ 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.
29
+
30
+ 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.
31
+
32
+ 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.
33
+
34
+ [&laquo; Back to Governance](/about/governance)
content/assets/css/bootstrap.scss ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ version: 2
3
+ is_hidden: true
4
+ is_dynamic: false
5
+ ---
6
+
7
+ @import "bootstrap/bootstrap";
content/assets/css/bootstrap/_alerts.scss ADDED
@@ -0,0 +1,67 @@
1
+ //
2
+ // Alerts
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Base styles
7
+ // -------------------------
8
+
9
+ .alert {
10
+ padding: $alert-padding;
11
+ margin-bottom: $line-height-computed;
12
+ border: 1px solid transparent;
13
+ border-radius: $alert-border-radius;
14
+
15
+ // Headings for larger alerts
16
+ h4 {
17
+ margin-top: 0;
18
+ // Specified for the h4 to prevent conflicts of changing $headingsColor
19
+ color: inherit;
20
+ }
21
+ // Provide class for links that match alerts
22
+ .alert-link {
23
+ font-weight: $alert-link-font-weight;
24
+ }
25
+
26
+ // Improve alignment and spacing of inner content
27
+ > p,
28
+ > ul {
29
+ margin-bottom: 0;
30
+ }
31
+ > p + p {
32
+ margin-top: 5px;
33
+ }
34
+ }
35
+
36
+ // Dismissable alerts
37
+ //
38
+ // Expand the right padding and account for the close button's positioning.
39
+
40
+ .alert-dismissable {
41
+ padding-right: ($alert-padding + 20);
42
+
43
+ // Adjust close link position
44
+ .close {
45
+ position: relative;
46
+ top: -2px;
47
+ right: -21px;
48
+ color: inherit;
49
+ }
50
+ }
51
+
52
+ // Alternate styles
53
+ //
54
+ // Generate contextual modifier classes for colorizing the alert.
55
+
56
+ .alert-success {
57
+ @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text);
58
+ }
59
+ .alert-info {
60
+ @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text);
61
+ }
62
+ .alert-warning {
63
+ @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text);
64
+ }
65
+ .alert-danger {
66
+ @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text);
67
+ }
content/assets/css/bootstrap/_badges.scss ADDED
@@ -0,0 +1,51 @@
1
+ //
2
+ // Badges
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Base classes
7
+ .badge {
8
+ display: inline-block;
9
+ min-width: 10px;
10
+ padding: 3px 7px;
11
+ font-size: $font-size-small;
12
+ font-weight: $badge-font-weight;
13
+ color: $badge-color;
14
+ line-height: $badge-line-height;
15
+ vertical-align: baseline;
16
+ white-space: nowrap;
17
+ text-align: center;
18
+ background-color: $badge-bg;
19
+ border-radius: $badge-border-radius;
20
+
21
+ // Empty badges collapse automatically (not available in IE8)
22
+ &:empty {
23
+ display: none;
24
+ }
25
+ }
26
+
27
+ // Hover state, but only for links
28
+ a.badge {
29
+ &:hover,
30
+ &:focus {
31
+ color: $badge-link-hover-color;
32
+ text-decoration: none;
33
+ cursor: pointer;
34
+ }
35
+ }
36
+
37
+ // Quick fix for labels/badges in buttons
38
+ .btn .badge {
39
+ position: relative;
40
+ top: -1px;
41
+ }
42
+
43
+ // Account for counters in navs
44
+ a.list-group-item.active > .badge,
45
+ .nav-pills > .active > a > .badge {
46
+ color: $badge-active-color;
47
+ background-color: $badge-active-bg;
48
+ }
49
+ .nav-pills > li > a > .badge {
50
+ margin-left: 3px;
51
+ }
content/assets/css/bootstrap/_breadcrumbs.scss ADDED
@@ -0,0 +1,23 @@
1
+ //
2
+ // Breadcrumbs
3
+ // --------------------------------------------------
4
+
5
+
6
+ .breadcrumb {
7
+ padding: 8px 15px;
8
+ margin-bottom: $line-height-computed;
9
+ list-style: none;
10
+ background-color: $breadcrumb-bg;
11
+ border-radius: $border-radius-base;
12
+ > li {
13
+ display: inline-block;
14
+ &+li:before {
15
+ content: "/\00a0"; // Unicode space added since inline-block means non-collapsing white-space
16
+ padding: 0 5px;
17
+ color: $breadcrumb-color;
18
+ }
19
+ }
20
+ > .active {
21
+ color: $breadcrumb-active-color;
22
+ }
23
+ }
content/assets/css/bootstrap/_button-groups.scss ADDED
@@ -0,0 +1,248 @@
1
+ //
2
+ // Button groups
3
+ // --------------------------------------------------
4
+
5
+ // Button carets
6
+ //
7
+ // Match the button text color to the arrow/caret for indicating dropdown-ness.
8
+
9
+ .caret {
10
+ .btn-default & {
11
+ border-top-color: $btn-default-color;
12
+ }
13
+ .btn-primary &,
14
+ .btn-success &,
15
+ .btn-warning &,
16
+ .btn-danger &,
17
+ .btn-info & {
18
+ border-top-color: #fff;
19
+ }
20
+ }
21
+ .dropup {
22
+ & .btn-default .caret {
23
+ border-bottom-color: $btn-default-color;
24
+ }
25
+ .btn-primary,
26
+ .btn-success,
27
+ .btn-warning,
28
+ .btn-danger,
29
+ .btn-info {
30
+ .caret {
31
+ border-bottom-color: #fff;
32
+ }
33
+ }
34
+ }
35
+
36
+ // Make the div behave like a button
37
+ .btn-group,
38
+ .btn-group-vertical {
39
+ position: relative;
40
+ display: inline-block;
41
+ vertical-align: middle; // match .btn alignment given font-size hack above
42
+ > .btn {
43
+ position: relative;
44
+ float: left;
45
+ // Bring the "active" button to the front
46
+ &:hover,
47
+ &:focus,
48
+ &:active,
49
+ &.active {
50
+ z-index: 2;
51
+ }
52
+ &:focus {
53
+ // Remove focus outline when dropdown JS adds it after closing the menu
54
+ outline: none;
55
+ }
56
+ }
57
+ }
58
+
59
+ // Prevent double borders when buttons are next to each other
60
+ .btn-group {
61
+ .btn + .btn,
62
+ .btn + .btn-group,
63
+ .btn-group + .btn,
64
+ .btn-group + .btn-group {
65
+ margin-left: -1px;
66
+ }
67
+ }
68
+
69
+ // Optional: Group multiple button groups together for a toolbar
70
+ .btn-toolbar {
71
+ @include clearfix();
72
+
73
+ .btn-group {
74
+ float: left;
75
+ }
76
+ // Space out series of button groups
77
+ > .btn,
78
+ > .btn-group {
79
+ + .btn,
80
+ + .btn-group {
81
+ margin-left: 5px;
82
+ }
83
+ }
84
+ }
85
+
86
+ .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
87
+ border-radius: 0;
88
+ }
89
+
90
+ // 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
91
+ .btn-group > .btn:first-child {
92
+ margin-left: 0;
93
+ &:not(:last-child):not(.dropdown-toggle) {
94
+ @include border-right-radius(0);
95
+ }
96
+ }
97
+ // Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it
98
+ .btn-group > .btn:last-child:not(:first-child),
99
+ .btn-group > .dropdown-toggle:not(:first-child) {
100
+ @include border-left-radius(0);
101
+ }
102
+
103
+ // Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)
104
+ .btn-group > .btn-group {
105
+ float: left;
106
+ }
107
+ .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
108
+ border-radius: 0;
109
+ }
110
+ .btn-group > .btn-group:first-child {
111
+ > .btn:last-child,
112
+ > .dropdown-toggle {
113
+ @include border-right-radius(0);
114
+ }
115
+ }
116
+ .btn-group > .btn-group:last-child > .btn:first-child {
117
+ @include border-left-radius(0);
118
+ }
119
+
120
+ // On active and open, don't show outline
121
+ .btn-group .dropdown-toggle:active,
122
+ .btn-group.open .dropdown-toggle {
123
+ outline: 0;
124
+ }
125
+
126
+
127
+ // Sizing
128
+ //
129
+ // Remix the default button sizing classes into new ones for easier manipulation.
130
+
131
+ .btn-group-xs > .btn { @extend .btn-xs; }
132
+ .btn-group-sm > .btn { @extend .btn-sm; }
133
+ .btn-group-lg > .btn { @extend .btn-lg; }
134
+
135
+
136
+ // Split button dropdowns
137
+ // ----------------------
138
+
139
+ // Give the line between buttons some depth
140
+ .btn-group > .btn + .dropdown-toggle {
141
+ padding-left: 8px;
142
+ padding-right: 8px;
143
+ }
144
+ .btn-group > .btn-lg + .dropdown-toggle {
145
+ padding-left: 12px;
146
+ padding-right: 12px;
147
+ }
148
+
149
+ // The clickable button for toggling the menu
150
+ // Remove the gradient and set the same inset shadow as the :active state
151
+ .btn-group.open .dropdown-toggle {
152
+ @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
153
+ }
154
+
155
+
156
+ // Reposition the caret
157
+ .btn .caret {
158
+ margin-left: 0;
159
+ }
160
+ // Carets in other button sizes
161
+ .btn-lg .caret {
162
+ border-width: $caret-width-large $caret-width-large 0;
163
+ border-bottom-width: 0;
164
+ }
165
+ // Upside down carets for .dropup
166
+ .dropup .btn-lg .caret {
167
+ border-width: 0 $caret-width-large $caret-width-large;
168
+ }
169
+
170
+
171
+ // Vertical button groups
172
+ // ----------------------
173
+
174
+ .btn-group-vertical {
175
+ > .btn,
176
+ > .btn-group {
177
+ display: block;
178
+ float: none;
179
+ width: 100%;
180
+ max-width: 100%;
181
+ }
182
+
183
+ // Clear floats so dropdown menus can be properly placed
184
+ > .btn-group {
185
+ @include clearfix();
186
+ > .btn {
187
+ float: none;
188
+ }
189
+ }
190
+
191
+ > .btn + .btn,
192
+ > .btn + .btn-group,
193
+ > .btn-group + .btn,
194
+ > .btn-group + .btn-group {
195
+ margin-top: -1px;
196
+ margin-left: 0;
197
+ }
198
+ }
199
+
200
+ .btn-group-vertical > .btn {
201
+ &:not(:first-child):not(:last-child) {
202
+ border-radius: 0;
203
+ }
204
+ &:first-child:not(:last-child) {
205
+ border-top-right-radius: $border-radius-base;
206
+ @include border-bottom-radius(0);
207
+ }
208
+ &:last-child:not(:first-child) {
209
+ border-bottom-left-radius: $border-radius-base;
210
+ @include border-top-radius(0);
211
+ }
212
+ }
213
+ .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
214
+ border-radius: 0;
215
+ }
216
+ .btn-group-vertical > .btn-group:first-child {
217
+ > .btn:last-child,
218
+ > .dropdown-toggle {
219
+ @include border-bottom-radius(0);
220
+ }
221
+ }
222
+ .btn-group-vertical > .btn-group:last-child > .btn:first-child {
223
+ @include border-top-radius(0);
224
+ }
225
+
226
+
227
+
228
+ // Justified button groups
229
+ // ----------------------
230
+
231
+ .btn-group-justified {
232
+ display: table;
233
+ width: 100%;
234
+ table-layout: fixed;
235
+ border-collapse: separate;
236
+ .btn {
237
+ float: none;
238
+ display: table-cell;
239
+ width: 1%;
240
+ }
241
+ }
242
+
243
+
244
+ // Checkbox and radio options
245
+ [data-toggle="buttons"] > .btn > input[type="radio"],
246
+ [data-toggle="buttons"] > .btn > input[type="checkbox"] {
247
+ display: none;
248
+ }
content/assets/css/bootstrap/_buttons.scss ADDED
@@ -0,0 +1,160 @@
1
+ //
2
+ // Buttons
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Base styles
7
+ // --------------------------------------------------
8
+
9
+ // Core styles
10
+ .btn {
11
+ display: inline-block;
12
+ padding: $padding-base-vertical $padding-base-horizontal;
13
+ margin-bottom: 0; // For input.btn
14
+ font-size: $font-size-base;
15
+ font-weight: $btn-font-weight;
16
+ line-height: $line-height-base;
17
+ text-align: center;
18
+ vertical-align: middle;
19
+ cursor: pointer;
20
+ border: 1px solid transparent;
21
+ border-radius: $border-radius-base;
22
+ white-space: nowrap;
23
+ @include user-select(none);
24
+
25
+ &:focus {
26
+ @include tab-focus();
27
+ }
28
+
29
+ &:hover,
30
+ &:focus {
31
+ color: $btn-default-color;
32
+ text-decoration: none;
33
+ }
34
+
35
+ &:active,
36
+ &.active {
37
+ outline: 0;
38
+ background-image: none;
39
+ @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
40
+ }
41
+
42
+ &.disabled,
43
+ &[disabled],
44
+ fieldset[disabled] & {
45
+ cursor: not-allowed;
46
+ pointer-events: none; // Future-proof disabling of clicks
47
+ @include opacity(.65);
48
+ @include box-shadow(none);
49
+ }
50
+
51
+ }
52
+
53
+
54
+ // Alternate buttons
55
+ // --------------------------------------------------
56
+
57
+ .btn-default {
58
+ @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border);
59
+ }
60
+ .btn-primary {
61
+ @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border);
62
+ }
63
+ // Warning appears as orange
64
+ .btn-warning {
65
+ @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border);
66
+ }
67
+ // Danger and error appear as red
68
+ .btn-danger {
69
+ @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border);
70
+ }
71
+ // Success appears as green
72
+ .btn-success {
73
+ @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border);
74
+ }
75
+ // Info appears as blue-green
76
+ .btn-info {
77
+ @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border);
78
+ }
79
+
80
+
81
+ // Link buttons
82
+ // -------------------------
83
+
84
+ // Make a button look and behave like a link
85
+ .btn-link {
86
+ color: $link-color;
87
+ font-weight: normal;
88
+ cursor: pointer;
89
+ border-radius: 0;
90
+
91
+ &,
92
+ &:active,
93
+ &[disabled],
94
+ fieldset[disabled] & {
95
+ background-color: transparent;
96
+ @include box-shadow(none);
97
+ }
98
+ &,
99
+ &:hover,
100
+ &:focus,
101
+ &:active {
102
+ border-color: transparent;
103
+ }
104
+ &:hover,
105
+ &:focus {
106
+ color: $link-hover-color;
107
+ text-decoration: underline;
108
+ background-color: transparent;
109
+ }
110
+ &[disabled],
111
+ fieldset[disabled] & {
112
+ &:hover,
113
+ &:focus {
114
+ color: $btn-link-disabled-color;
115
+ text-decoration: none;
116
+ }
117
+ }
118
+ }
119
+
120
+
121
+ // Button Sizes
122
+ // --------------------------------------------------
123
+
124
+ .btn-lg {
125
+ // line-height: ensure even-numbered height of button next to large input
126
+ @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large);
127
+ }
128
+ .btn-sm,
129
+ .btn-xs {
130
+ // line-height: ensure proper height of button next to small input
131
+ @include button-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small);
132
+ }
133
+ .btn-xs {
134
+ padding: 1px 5px;
135
+ }
136
+
137
+
138
+ // Block button
139
+ // --------------------------------------------------
140
+
141
+ .btn-block {
142
+ display: block;
143
+ width: 100%;
144
+ padding-left: 0;
145
+ padding-right: 0;
146
+ }
147
+
148
+ // Vertically space out multiple block buttons
149
+ .btn-block + .btn-block {
150
+ margin-top: 5px;
151
+ }
152
+
153
+ // Specificity overrides
154
+ input[type="submit"],
155
+ input[type="reset"],
156
+ input[type="button"] {
157
+ &.btn-block {
158
+ width: 100%;
159
+ }
160
+ }
content/assets/css/bootstrap/_carousel.scss ADDED
@@ -0,0 +1,209 @@
1
+ //
2
+ // Carousel
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Wrapper for the slide container and indicators
7
+ .carousel {
8
+ position: relative;
9
+ }
10
+
11
+ .carousel-inner {
12
+ position: relative;
13
+ overflow: hidden;
14
+ width: 100%;
15
+
16
+ > .item {
17
+ display: none;
18
+ position: relative;
19
+ @include transition(.6s ease-in-out left);
20
+
21
+ // Account for jankitude on images
22
+ > img,
23
+ > a > img {
24
+ @include img-responsive();
25
+ line-height: 1;
26
+ }
27
+ }
28
+
29
+ > .active,
30
+ > .next,
31
+ > .prev { display: block; }
32
+
33
+ > .active {
34
+ left: 0;
35
+ }
36
+
37
+ > .next,
38
+ > .prev {
39
+ position: absolute;
40
+ top: 0;
41
+ width: 100%;
42
+ }
43
+
44
+ > .next {
45
+ left: 100%;
46
+ }
47
+ > .prev {
48
+ left: -100%;
49
+ }
50
+ > .next.left,
51
+ > .prev.right {
52
+ left: 0;
53
+ }
54
+
55
+ > .active.left {
56
+ left: -100%;
57
+ }
58
+ > .active.right {
59
+ left: 100%;
60
+ }
61
+
62
+ }
63
+
64
+ // Left/right controls for nav
65
+ // ---------------------------
66
+
67
+ .carousel-control {
68
+ position: absolute;
69
+ top: 0;
70
+ left: 0;
71
+ bottom: 0;
72
+ width: $carousel-control-width;
73
+ @include opacity($carousel-control-opacity);
74
+ font-size: $carousel-control-font-size;
75
+ color: $carousel-control-color;
76
+ text-align: center;
77
+ text-shadow: $carousel-text-shadow;
78
+ // We can't have this transition here because webkit cancels the carousel
79
+ // animation if you trip this while in the middle of another animation.
80
+
81
+ // Set gradients for backgrounds
82
+ &.left {
83
+ @include gradient-horizontal($start-color: rgba(0,0,0,.5), $end-color: rgba(0,0,0,.0001));
84
+ }
85
+ &.right {
86
+ left: auto;
87
+ right: 0;
88
+ @include gradient-horizontal($start-color: rgba(0,0,0,.0001), $end-color: rgba(0,0,0,.5));
89
+ }
90
+
91
+ // Hover/focus state
92
+ &:hover,
93
+ &:focus {
94
+ color: $carousel-control-color;
95
+ text-decoration: none;
96
+ @include opacity(.9);
97
+ }
98
+
99
+ // Toggles
100
+ .icon-prev,
101
+ .icon-next,
102
+ .glyphicon-chevron-left,
103
+ .glyphicon-chevron-right {
104
+ position: absolute;
105
+ top: 50%;
106
+ left: 50%;
107
+ z-index: 5;
108
+ display: inline-block;
109
+ }
110
+ .icon-prev,
111
+ .icon-next {
112
+ width: 20px;
113
+ height: 20px;
114
+ margin-top: -10px;
115
+ margin-left: -10px;
116
+ font-family: serif;
117
+ }
118
+
119
+ .icon-prev {
120
+ &:before {
121
+ content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)
122
+ }
123
+ }
124
+ .icon-next {
125
+ &:before {
126
+ content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)
127
+ }
128
+ }
129
+ }
130
+
131
+ // Optional indicator pips
132
+ //
133
+ // Add an unordered list with the following class and add a list item for each
134
+ // slide your carousel holds.
135
+
136
+ .carousel-indicators {
137
+ position: absolute;
138
+ bottom: 10px;
139
+ left: 50%;
140
+ z-index: 15;
141
+ width: 60%;
142
+ margin-left: -30%;
143
+ padding-left: 0;
144
+ list-style: none;
145
+ text-align: center;
146
+
147
+ li {
148
+ display: inline-block;
149
+ width: 10px;
150
+ height: 10px;
151
+ margin: 1px;
152
+ text-indent: -999px;
153
+ border: 1px solid $carousel-indicator-border-color;
154
+ border-radius: 10px;
155
+ cursor: pointer;
156
+ }
157
+ .active {
158
+ margin: 0;
159
+ width: 12px;
160
+ height: 12px;
161
+ background-color: $carousel-indicator-active-bg;
162
+ }
163
+ }
164
+
165
+ // Optional captions
166
+ // -----------------------------
167
+ // Hidden by default for smaller viewports
168
+ .carousel-caption {
169
+ position: absolute;
170
+ left: 15%;
171
+ right: 15%;
172
+ bottom: 20px;
173
+ z-index: 10;
174
+ padding-top: 20px;
175
+ padding-bottom: 20px;
176
+ color: $carousel-caption-color;
177
+ text-align: center;
178
+ text-shadow: $carousel-text-shadow;
179
+ & .btn {
180
+ text-shadow: none; // No shadow for button elements in carousel-caption
181
+ }
182
+ }
183
+
184
+
185
+ // Scale up controls for tablets and up
186
+ @media screen and (min-width: $screen-tablet) {
187
+
188
+ // Scale up the controls a smidge
189
+ .carousel-control .icon-prev,
190
+ .carousel-control .icon-next {
191
+ width: 30px;
192
+ height: 30px;
193
+ margin-top: -15px;
194
+ margin-left: -15px;
195
+ font-size: 30px;
196
+ }
197
+
198
+ // Show and left align the captions
199
+ .carousel-caption {
200
+ left: 20%;
201
+ right: 20%;
202
+ padding-bottom: 30px;
203
+ }
204
+
205
+ // Move up the indicators
206
+ .carousel-indicators {
207
+ bottom: 20px;
208
+ }
209
+ }
content/assets/css/bootstrap/_close.scss ADDED
@@ -0,0 +1,35 @@
1
+ //
2
+ // Close icons
3
+ // --------------------------------------------------
4
+
5
+
6
+ .close {
7
+ float: right;
8
+ font-size: ($font-size-base * 1.5);
9
+ font-weight: $close-font-weight;
10
+ line-height: 1;
11
+ color: $close-color;
12
+ text-shadow: $close-text-shadow;
13
+ @include opacity(.2);
14
+
15
+ &:hover,
16
+ &:focus {
17
+ color: $close-color;
18
+ text-decoration: none;
19
+ cursor: pointer;
20
+ @include opacity(.5);
21
+ }
22
+
23
+ // [converter] extracted button& to button.close
24
+ }
25
+
26
+ // Additional properties for button version
27
+ // iOS requires the button element instead of an anchor tag.
28
+ // If you want the anchor version, it requires `href="#"`.
29
+ button.close {
30
+ padding: 0;
31
+ cursor: pointer;
32
+ background: transparent;
33
+ border: 0;
34
+ -webkit-appearance: none;
35
+ }
content/assets/css/bootstrap/_code.scss ADDED
@@ -0,0 +1,56 @@
1
+ //
2
+ // Code (inline and blocK)
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Inline and block code styles
7
+ code,
8
+ pre {
9
+ font-family: $font-family-monospace;
10
+ }
11
+
12
+ // Inline code
13
+ code {
14
+ padding: 2px 4px;
15
+ font-size: 90%;
16
+ color: $code-color;
17
+ background-color: $code-bg;
18
+ white-space: nowrap;
19
+ border-radius: $border-radius-base;
20
+ }
21
+
22
+ // Blocks of code
23
+ pre {
24
+ display: block;
25
+ padding: (($line-height-computed - 1) / 2);
26
+ margin: 0 0 ($line-height-computed / 2);
27
+ font-size: ($font-size-base - 1); // 14px to 13px
28
+ line-height: $line-height-base;
29
+ word-break: break-all;
30
+ word-wrap: break-word;
31
+ color: $pre-color;
32
+ background-color: $pre-bg;
33
+ border: 1px solid $pre-border-color;
34
+ border-radius: $border-radius-base;
35
+
36
+ // Make prettyprint styles more spaced out for readability
37
+ &.prettyprint {
38
+ margin-bottom: $line-height-computed;
39
+ }
40
+
41
+ // Account for some code outputs that place code tags in pre tags
42
+ code {
43
+ padding: 0;
44
+ font-size: inherit;
45
+ color: inherit;
46
+ white-space: pre-wrap;
47
+ background-color: transparent;
48
+ border: 0;
49
+ }
50
+ }
51
+
52
+ // Enable scrollable blocks of code
53
+ .pre-scrollable {
54
+ max-height: $pre-scrollable-max-height;
55
+ overflow-y: scroll;
56
+ }
content/assets/css/bootstrap/_component-animations.scss ADDED
@@ -0,0 +1,29 @@
1
+ //
2
+ // Component animations
3
+ // --------------------------------------------------
4
+
5
+ // Heads up!
6
+ //
7
+ // We don't use the `.opacity()` mixin here since it causes a bug with text
8
+ // fields in IE7-8. Source: https://github.com/twitter/bootstrap/pull/3552.
9
+
10
+ .fade {
11
+ opacity: 0;
12
+ @include transition(opacity .15s linear);
13
+ &.in {
14
+ opacity: 1;
15
+ }
16
+ }
17
+
18
+ .collapse {
19
+ display: none;
20
+ &.in {
21
+ display: block;
22
+ }
23
+ }
24
+ .collapsing {
25
+ position: relative;
26
+ height: 0;
27
+ overflow: hidden;
28
+ @include transition(height .35s ease);
29
+ }
content/assets/css/bootstrap/_dropdowns.scss ADDED
@@ -0,0 +1,194 @@
1
+ //
2
+ // Dropdown menus
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Dropdown arrow/caret
7
+ .caret {
8
+ display: inline-block;
9
+ width: 0;
10
+ height: 0;
11
+ margin-left: 2px;
12
+ vertical-align: middle;
13
+ border-top: $caret-width-base solid $dropdown-caret-color;
14
+ border-right: $caret-width-base solid transparent;
15
+ border-left: $caret-width-base solid transparent;
16
+ // Firefox fix for https://github.com/twbs/bootstrap/issues/9538. Once fixed,
17
+ // we can just straight up remove this.
18
+ border-bottom: 0 dotted;
19
+ content: "";
20
+ }
21
+
22
+ // The dropdown wrapper (div)
23
+ .dropdown {
24
+ position: relative;
25
+ }
26
+
27
+ // Prevent the focus on the dropdown toggle when closing dropdowns
28
+ .dropdown-toggle:focus {
29
+ outline: 0;
30
+ }
31
+
32
+ // The dropdown menu (ul)
33
+ .dropdown-menu {
34
+ position: absolute;
35
+ top: 100%;
36
+ left: 0;
37
+ z-index: $zindex-dropdown;
38
+ display: none; // none by default, but block on "open" of the menu
39
+ float: left;
40
+ min-width: 160px;
41
+ padding: 5px 0;
42
+ margin: 2px 0 0; // override default ul
43
+ list-style: none;
44
+ font-size: $font-size-base;
45
+ background-color: $dropdown-bg;
46
+ border: 1px solid $dropdown-fallback-border; // IE8 fallback
47
+ border: 1px solid $dropdown-border;
48
+ border-radius: $border-radius-base;
49
+ @include box-shadow(0 6px 12px rgba(0,0,0,.175));
50
+ background-clip: padding-box;
51
+
52
+ // Aligns the dropdown menu to right
53
+ &.pull-right {
54
+ right: 0;
55
+ left: auto;
56
+ }
57
+
58
+ // Dividers (basically an hr) within the dropdown
59
+ .divider {
60
+ @include nav-divider($dropdown-divider-bg);
61
+ }
62
+
63
+ // Links within the dropdown menu
64
+ > li > a {
65
+ display: block;
66
+ padding: 3px 20px;
67
+ clear: both;
68
+ font-weight: normal;
69
+ line-height: $line-height-base;
70
+ color: $dropdown-link-color;
71
+ white-space: nowrap; // prevent links from randomly breaking onto new lines
72
+ }
73
+ }
74
+
75
+ // Hover/Focus state
76
+ .dropdown-menu > li > a {
77
+ &:hover,
78
+ &:focus {
79
+ text-decoration: none;
80
+ color: $dropdown-link-hover-color;
81
+ background-color: $dropdown-link-hover-bg;
82
+ }
83
+ }
84
+
85
+ // Active state
86
+ .dropdown-menu > .active > a {
87
+ &,
88
+ &:hover,
89
+ &:focus {
90
+ color: $dropdown-link-active-color;
91
+ text-decoration: none;
92
+ outline: 0;
93
+ background-color: $dropdown-link-active-bg;
94
+ }
95
+ }
96
+
97
+ // Disabled state
98
+ //
99
+ // Gray out text and ensure the hover/focus state remains gray
100
+
101
+ .dropdown-menu > .disabled > a {
102
+ &,
103
+ &:hover,
104
+ &:focus {
105
+ color: $dropdown-link-disabled-color;
106
+ }
107
+ }
108
+ // Nuke hover/focus effects
109
+ .dropdown-menu > .disabled > a {
110
+ &:hover,
111
+ &:focus {
112
+ text-decoration: none;
113
+ background-color: transparent;
114
+ background-image: none; // Remove CSS gradient
115
+ @include reset-filter();
116
+ cursor: not-allowed;
117
+ }
118
+ }
119
+
120
+ // Open state for the dropdown
121
+ .open {
122
+ // Show the menu
123
+ > .dropdown-menu {
124
+ display: block;
125
+ }
126
+
127
+ // Remove the outline when :focus is triggered
128
+ > a {
129
+ outline: 0;
130
+ }
131
+ }
132
+
133
+ // Dropdown section headers
134
+ .dropdown-header {
135
+ display: block;
136
+ padding: 3px 20px;
137
+ font-size: $font-size-small;
138
+ line-height: $line-height-base;
139
+ color: $dropdown-header-color;
140
+ }
141
+
142
+ // Backdrop to catch body clicks on mobile, etc.
143
+ .dropdown-backdrop {
144
+ position: fixed;
145
+ left: 0;
146
+ right: 0;
147
+ bottom: 0;
148
+ top: 0;
149
+ z-index: $zindex-dropdown - 10;
150
+ }
151
+
152
+ // Right aligned dropdowns
153
+ .pull-right > .dropdown-menu {
154
+ right: 0;
155
+ left: auto;
156
+ }
157
+
158
+ // Allow for dropdowns to go bottom up (aka, dropup-menu)
159
+ //
160
+ // Just add .dropup after the standard .dropdown class and you're set, bro.
161
+ // TODO: abstract this so that the navbar fixed styles are not placed here?
162
+
163
+ .dropup,
164
+ .navbar-fixed-bottom .dropdown {
165
+ // Reverse the caret
166
+ .caret {
167
+ // Firefox fix for https://github.com/twbs/bootstrap/issues/9538. Once this
168
+ // gets fixed, restore `border-top: 0;`.
169
+ border-top: 0 dotted;
170
+ border-bottom: 4px solid $dropdown-caret-color;
171
+ content: "";
172
+ }
173
+ // Different positioning for bottom up menu
174
+ .dropdown-menu {
175
+ top: auto;
176
+ bottom: 100%;
177
+ margin-bottom: 1px;
178
+ }
179
+ }
180
+
181
+
182
+ // Component alignment
183
+ //
184
+ // Reiterate per navbar.less and the modified component alignment there.
185
+
186
+ @media (min-width: $grid-float-breakpoint) {
187
+ .navbar-right {
188
+ .dropdown-menu {
189
+ right: 0;
190
+ left: auto;
191
+ }
192
+ }
193
+ }
194
+
content/assets/css/bootstrap/_forms.scss ADDED
@@ -0,0 +1,352 @@
1
+ //
2
+ // Forms
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Normalize non-controls
7
+ //
8
+ // Restyle and baseline non-control form elements.
9
+
10
+ fieldset {
11
+ padding: 0;
12
+ margin: 0;
13
+ border: 0;
14
+ }
15
+
16
+ legend {
17
+ display: block;
18
+ width: 100%;
19
+ padding: 0;
20
+ margin-bottom: $line-height-computed;
21
+ font-size: ($font-size-base * 1.5);
22
+ line-height: inherit;
23
+ color: $legend-color;
24
+ border: 0;
25
+ border-bottom: 1px solid $legend-border-color;
26
+ }
27
+
28
+ label {
29
+ display: inline-block;
30
+ margin-bottom: 5px;
31
+ font-weight: bold;
32
+ }
33
+
34
+
35
+ // Normalize form controls
36
+
37
+ // Override content-box in Normalize (* isn't specific enough)
38
+ input[type="search"] {
39
+ @include box-sizing(border-box);
40
+ }
41
+
42
+ // Position radios and checkboxes better
43
+ input[type="radio"],
44
+ input[type="checkbox"] {
45
+ margin: 4px 0 0;
46
+ margin-top: 1px \9; /* IE8-9 */
47
+ line-height: normal;
48
+ }
49
+
50
+ // Set the height of select and file controls to match text inputs
51
+ input[type="file"] {
52
+ display: block;
53
+ }
54
+
55
+ // Make multiple select elements height not fixed
56
+ select[multiple],
57
+ select[size] {
58
+ height: auto;
59
+ }
60
+
61
+ // Fix optgroup Firefox bug per https://github.com/twbs/bootstrap/issues/7611
62
+ select optgroup {
63
+ font-size: inherit;
64
+ font-style: inherit;
65
+ font-family: inherit;
66
+ }
67
+
68
+ // Focus for select, file, radio, and checkbox
69
+ input[type="file"]:focus,
70
+ input[type="radio"]:focus,
71
+ input[type="checkbox"]:focus {
72
+ @include tab-focus();
73
+ }
74
+
75
+ // Fix for Chrome number input
76
+ // Setting certain font-sizes causes the `I` bar to appear on hover of the bottom increment button.
77
+ // See https://github.com/twbs/bootstrap/issues/8350 for more.
78
+ input[type="number"] {
79
+ &::-webkit-outer-spin-button,
80
+ &::-webkit-inner-spin-button {
81
+ height: auto;
82
+ }
83
+ }
84
+
85
+
86
+ // Placeholder
87
+ //
88
+ // Placeholder text gets special styles because when browsers invalidate entire
89
+ // lines if it doesn't understand a selector/
90
+ .form-control {
91
+ @include placeholder();
92
+ }
93
+
94
+
95
+ // Common form controls
96
+ //
97
+ // Shared size and type resets for form controls. Apply `.form-control` to any
98
+ // of the following form controls:
99
+ //
100
+ // select
101
+ // textarea
102
+ // input[type="text"]
103
+ // input[type="password"]
104
+ // input[type="datetime"]
105
+ // input[type="datetime-local"]
106
+ // input[type="date"]
107
+ // input[type="month"]
108
+ // input[type="time"]
109
+ // input[type="week"]
110
+ // input[type="number"]
111
+ // input[type="email"]
112
+ // input[type="url"]
113
+ // input[type="search"]
114
+ // input[type="tel"]
115
+ // input[type="color"]
116
+
117
+ .form-control {
118
+ display: block;
119
+ width: 100%;
120
+ height: $input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
121
+ padding: $padding-base-vertical $padding-base-horizontal;
122
+ font-size: $font-size-base;
123
+ line-height: $line-height-base;
124
+ color: $input-color;
125
+ vertical-align: middle;
126
+ background-color: $input-bg;
127
+ border: 1px solid $input-border;
128
+ border-radius: $input-border-radius;
129
+ @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
130
+ @include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s);
131
+
132
+ // Customize the `:focus` state to imitate native WebKit styles.
133
+ @include form-control-focus();
134
+
135
+ // Disabled and read-only inputs
136
+ // Note: HTML5 says that controls under a fieldset > legend:first-child won't
137
+ // be disabled if the fieldset is disabled. Due to implementation difficulty,
138
+ // we don't honor that edge case; we style them as disabled anyway.
139
+ &[disabled],
140
+ &[readonly],
141
+ fieldset[disabled] & {
142
+ cursor: not-allowed;
143
+ background-color: $input-bg-disabled;
144
+ }
145
+
146
+ // [converter] extracted textarea& to textarea.form-control
147
+ }
148
+
149
+ // Reset height for `textarea`s
150
+ textarea.form-control {
151
+ height: auto;
152
+ }
153
+
154
+
155
+ // Form groups
156
+ //
157
+ // Designed to help with the organization and spacing of vertical forms. For
158
+ // horizontal forms, use the predefined grid classes.
159
+
160
+ .form-group {
161
+ margin-bottom: 15px;
162
+ }
163
+
164
+
165
+ // Checkboxes and radios
166
+ //
167
+ // Indent the labels to position radios/checkboxes as hanging controls.
168
+
169
+ .radio,
170
+ .checkbox {
171
+ display: block;
172
+ min-height: $line-height-computed; // clear the floating input if there is no label text
173
+ margin-top: 10px;
174
+ margin-bottom: 10px;
175
+ padding-left: 20px;
176
+ vertical-align: middle;
177
+ label {
178
+ display: inline;
179
+ margin-bottom: 0;
180
+ font-weight: normal;
181
+ cursor: pointer;
182
+ }
183
+ }
184
+ .radio input[type="radio"],
185
+ .radio-inline input[type="radio"],
186
+ .checkbox input[type="checkbox"],
187
+ .checkbox-inline input[type="checkbox"] {
188
+ float: left;
189
+ margin-left: -20px;
190
+ }
191
+ .radio + .radio,
192
+ .checkbox + .checkbox {
193
+ margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing
194
+ }
195
+
196
+ // Radios and checkboxes on same line
197
+ .radio-inline,
198
+ .checkbox-inline {
199
+ display: inline-block;
200
+ padding-left: 20px;
201
+ margin-bottom: 0;
202
+ vertical-align: middle;
203
+ font-weight: normal;
204
+ cursor: pointer;
205
+ }
206
+ .radio-inline + .radio-inline,
207
+ .checkbox-inline + .checkbox-inline {
208
+ margin-top: 0;
209
+ margin-left: 10px; // space out consecutive inline controls
210
+ }
211
+
212
+ // Apply same disabled cursor tweak as for inputs
213
+ //
214
+ // Note: Neither radios nor checkboxes can be readonly.
215
+ input[type="radio"],
216
+ input[type="checkbox"],
217
+ .radio,
218
+ .radio-inline,
219
+ .checkbox,
220
+ .checkbox-inline {
221
+ &[disabled],
222
+ fieldset[disabled] & {
223
+ cursor: not-allowed;
224
+ }
225
+ }
226
+
227
+ // Form control sizing
228
+
229
+ @include input-size('.input-sm', $input-height-small, $padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small);
230
+
231
+ @include input-size('.input-lg', $input-height-large, $padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large);
232
+
233
+
234
+ // Form control feedback states
235
+ //
236
+ // Apply contextual and semantic states to individual form controls.
237
+
238
+ // Warning
239
+ .has-warning {
240
+ @include form-control-validation($state-warning-text, $state-warning-text, $state-warning-bg);
241
+ }
242
+ // Error
243
+ .has-error {
244
+ @include form-control-validation($state-danger-text, $state-danger-text, $state-danger-bg);
245
+ }
246
+ // Success
247
+ .has-success {
248
+ @include form-control-validation($state-success-text, $state-success-text, $state-success-bg);
249
+ }
250
+
251
+
252
+ // Static form control text
253
+ //
254
+ // Apply class to a `p` element to make any string of text align with labels in
255
+ // a horizontal form layout.
256
+
257
+ .form-control-static {
258
+ margin-bottom: 0; // Remove default margin from `p`
259
+ padding-top: ($padding-base-vertical + 1);
260
+ }
261
+
262
+
263
+ // Help text
264
+ //
265
+ // Apply to any element you wish to create light text for placement immediately
266
+ // below a form control. Use for general help, formatting, or instructional text.
267
+
268
+ .help-block {
269
+ display: block; // account for any element using help-block
270
+ margin-top: 5px;
271
+ margin-bottom: 10px;
272
+ color: lighten($text-color, 25%); // lighten the text some for contrast
273
+ }
274
+
275
+
276
+
277
+ // Inline forms
278
+ //
279
+ // Make forms appear inline(-block) by adding the `.form-inline` class. Inline
280
+ // forms begin stacked on extra small (mobile) devices and then go inline when
281
+ // viewports reach <768px.
282
+ //
283
+ // Requires wrapping inputs and labels with `.form-group` for proper display of
284
+ // default HTML form controls and our custom form controls (e.g., input groups).
285
+ //
286
+ // Heads up! This is mixin-ed into `.navbar-form` in navbars.less.
287
+
288
+ .form-inline {
289
+
290
+ // Kick in the inline
291
+ @media (min-width: $screen-tablet) {
292
+ // Inline-block all the things for "inline"
293
+ .form-group {
294
+ display: inline-block;
295
+ margin-bottom: 0;
296
+ vertical-align: middle;
297
+ }
298
+
299
+ // In navbar-form, allow folks to *not* use `.form-group`
300
+ .form-control {
301
+ display: inline-block;
302
+ }
303
+
304
+ // Remove default margin on radios/checkboxes that were used for stacking, and
305
+ // then undo the floating of radios and checkboxes to match (which also avoids
306
+ // a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969).
307
+ .radio,
308
+ .checkbox {
309
+ display: inline-block;
310
+ margin-top: 0;
311
+ margin-bottom: 0;
312
+ padding-left: 0;
313
+ }
314
+ .radio input[type="radio"],
315
+ .checkbox input[type="checkbox"] {
316
+ float: none;
317
+ margin-left: 0;
318
+ }
319
+ }
320
+ }
321
+
322
+
323
+ // Horizontal forms
324
+ //
325
+ // Horizontal forms are built on grid classes and allow you to create forms with
326
+ // labels on the left and inputs on the right.
327
+
328
+ .form-horizontal {
329
+
330
+ // Consistent vertical alignment of labels, radios, and checkboxes
331
+ .control-label,
332
+ .radio,
333
+ .checkbox,
334
+ .radio-inline,
335
+ .checkbox-inline {
336
+ margin-top: 0;
337
+ margin-bottom: 0;
338
+ padding-top: ($padding-base-vertical + 1); // Default padding plus a border
339
+ }
340
+
341
+ // Make form groups behave like rows
342
+ .form-group {
343
+ @include make-row();
344
+ }
345
+
346
+ // Only right align form labels here when the columns stop stacking
347
+ @media (min-width: $screen-tablet) {
348
+ .control-label {
349
+ text-align: right;
350
+ }
351
+ }
352
+ }
content/assets/css/bootstrap/_glyphicons.scss ADDED
@@ -0,0 +1,232 @@
1
+ //
2
+ // Glyphicons for Bootstrap
3
+ //
4
+ // Since icons are fonts, they can be placed anywhere text is placed and are
5
+ // thus automatically sized to match the surrounding child. To use, create an
6
+ // inline element with the appropriate classes, like so:
7
+ //
8
+ // <a href="#"><span class="glyphicon glyphicon-star"></span> Star</a>
9
+
10
+ // Import the fonts
11
+ @font-face {
12
+ font-family: 'Glyphicons Halflings';
13
+ src: font-url('#{$icon-font-path}#{$icon-font-name}.eot');
14
+ src: font-url('#{$icon-font-path}#{$icon-font-name}.eot?#iefix') format('embedded-opentype'),
15
+ font-url('#{$icon-font-path}#{$icon-font-name}.woff') format('woff'),
16
+ font-url('#{$icon-font-path}#{$icon-font-name}.ttf') format('truetype'),
17
+ font-url('#{$icon-font-path}#{$icon-font-name}.svg#glyphicons-halflingsregular') format('svg');
18
+ }
19
+
20
+ // Catchall baseclass
21
+ .glyphicon {
22
+ position: relative;
23
+ top: 1px;
24
+ display: inline-block;
25
+ font-family: 'Glyphicons Halflings';
26
+ font-style: normal;
27
+ font-weight: normal;
28
+ line-height: 1;
29
+ -webkit-font-smoothing: antialiased;
30
+ }
31
+
32
+ // Individual icons
33
+ .glyphicon-asterisk { &:before { content: "\2a"; } }
34
+ .glyphicon-plus { &:before { content: "\2b"; } }
35
+ .glyphicon-euro { &:before { content: "\20ac"; } }
36
+ .glyphicon-minus { &:before { content: "\2212"; } }
37
+ .glyphicon-cloud { &:before { content: "\2601"; } }
38
+ .glyphicon-envelope { &:before { content: "\2709"; } }
39
+ .glyphicon-pencil { &:before { content: "\270f"; } }
40
+ .glyphicon-glass { &:before { content: "\e001"; } }
41
+ .glyphicon-music { &:before { content: "\e002"; } }
42
+ .glyphicon-search { &:before { content: "\e003"; } }
43
+ .glyphicon-heart { &:before { content: "\e005"; } }
44
+ .glyphicon-star { &:before { content: "\e006"; } }
45
+ .glyphicon-star-empty { &:before { content: "\e007"; } }
46
+ .glyphicon-user { &:before { content: "\e008"; } }
47
+ .glyphicon-film { &:before { content: "\e009"; } }
48
+ .glyphicon-th-large { &:before { content: "\e010"; } }
49
+ .glyphicon-th { &:before { content: "\e011"; } }
50
+ .glyphicon-th-list { &:before { content: "\e012"; } }
51
+ .glyphicon-ok { &:before { content: "\e013"; } }
52
+ .glyphicon-remove { &:before { content: "\e014"; } }
53
+ .glyphicon-zoom-in { &:before { content: "\e015"; } }
54
+ .glyphicon-zoom-out { &:before { content: "\e016"; } }
55
+ .glyphicon-off { &:before { content: "\e017"; } }
56
+ .glyphicon-signal { &:before { content: "\e018"; } }
57
+ .glyphicon-cog { &:before { content: "\e019"; } }
58
+ .glyphicon-trash { &:before { content: "\e020"; } }
59
+ .glyphicon-home { &:before { content: "\e021"; } }
60
+ .glyphicon-file { &:before { content: "\e022"; } }
61
+ .glyphicon-time { &:before { content: "\e023"; } }
62
+ .glyphicon-road { &:before { content: "\e024"; } }
63
+ .glyphicon-download-alt { &:before { content: "\e025"; } }
64
+ .glyphicon-download { &:before { content: "\e026"; } }
65
+ .glyphicon-upload { &:before { content: "\e027"; } }
66
+ .glyphicon-inbox { &:before { content: "\e028"; } }
67
+ .glyphicon-play-circle { &:before { content: "\e029"; } }
68
+ .glyphicon-repeat { &:before { content: "\e030"; } }
69
+ .glyphicon-refresh { &:before { content: "\e031"; } }
70
+ .glyphicon-list-alt { &:before { content: "\e032"; } }
71
+ .glyphicon-flag { &:before { content: "\e034"; } }
72
+ .glyphicon-headphones { &:before { content: "\e035"; } }
73
+ .glyphicon-volume-off { &:before { content: "\e036"; } }
74
+ .glyphicon-volume-down { &:before { content: "\e037"; } }
75
+ .glyphicon-volume-up { &:before { content: "\e038"; } }
76
+ .glyphicon-qrcode { &:before { content: "\e039"; } }
77
+ .glyphicon-barcode { &:before { content: "\e040"; } }
78
+ .glyphicon-tag { &:before { content: "\e041"; } }
79
+ .glyphicon-tags { &:before { content: "\e042"; } }
80
+ .glyphicon-book { &:before { content: "\e043"; } }
81
+ .glyphicon-print { &:before { content: "\e045"; } }
82
+ .glyphicon-font { &:before { content: "\e047"; } }
83
+ .glyphicon-bold { &:before { content: "\e048"; } }
84
+ .glyphicon-italic { &:before { content: "\e049"; } }
85
+ .glyphicon-text-height { &:before { content: "\e050"; } }
86
+ .glyphicon-text-width { &:before { content: "\e051"; } }
87
+ .glyphicon-align-left { &:before { content: "\e052"; } }
88
+ .glyphicon-align-center { &:before { content: "\e053"; } }
89
+ .glyphicon-align-right { &:before { content: "\e054"; } }
90
+ .glyphicon-align-justify { &:before { content: "\e055"; } }
91
+ .glyphicon-list { &:before { content: "\e056"; } }
92
+ .glyphicon-indent-left { &:before { content: "\e057"; } }
93
+ .glyphicon-indent-right { &:before { content: "\e058"; } }
94
+ .glyphicon-facetime-video { &:before { content: "\e059"; } }
95
+ .glyphicon-picture { &:before { content: "\e060"; } }
96
+ .glyphicon-map-marker { &:before { content: "\e062"; } }
97
+ .glyphicon-adjust { &:before { content: "\e063"; } }
98
+ .glyphicon-tint { &:before { content: "\e064"; } }
99
+ .glyphicon-edit { &:before { content: "\e065"; } }
100
+ .glyphicon-share { &:before { content: "\e066"; } }
101
+ .glyphicon-check { &:before { content: "\e067"; } }
102
+ .glyphicon-move { &:before { content: "\e068"; } }
103
+ .glyphicon-step-backward { &:before { content: "\e069"; } }
104
+ .glyphicon-fast-backward { &:before { content: "\e070"; } }
105
+ .glyphicon-backward { &:before { content: "\e071"; } }
106
+ .glyphicon-play { &:before { content: "\e072"; } }
107
+ .glyphicon-pause { &:before { content: "\e073"; } }
108
+ .glyphicon-stop { &:before { content: "\e074"; } }
109
+ .glyphicon-forward { &:before { content: "\e075"; } }
110
+ .glyphicon-fast-forward { &:before { content: "\e076"; } }
111
+ .glyphicon-step-forward { &:before { content: "\e077"; } }
112
+ .glyphicon-eject { &:before { content: "\e078"; } }
113
+ .glyphicon-chevron-left { &:before { content: "\e079"; } }
114
+ .glyphicon-chevron-right { &:before { content: "\e080"; } }
115
+ .glyphicon-plus-sign { &:before { content: "\e081"; } }
116
+ .glyphicon-minus-sign { &:before { content: "\e082"; } }
117
+ .glyphicon-remove-sign { &:before { content: "\e083"; } }
118
+ .glyphicon-ok-sign { &:before { content: "\e084"; } }
119
+ .glyphicon-question-sign { &:before { content: "\e085"; } }
120
+ .glyphicon-info-sign { &:before { content: "\e086"; } }
121
+ .glyphicon-screenshot { &:before { content: "\e087"; } }
122
+ .glyphicon-remove-circle { &:before { content: "\e088"; } }
123
+ .glyphicon-ok-circle { &:before { content: "\e089"; } }
124
+ .glyphicon-ban-circle { &:before { content: "\e090"; } }
125
+ .glyphicon-arrow-left { &:before { content: "\e091"; } }
126
+ .glyphicon-arrow-right { &:before { content: "\e092"; } }
127
+ .glyphicon-arrow-up { &:before { content: "\e093"; } }
128
+ .glyphicon-arrow-down { &:before { content: "\e094"; } }
129
+ .glyphicon-share-alt { &:before { content: "\e095"; } }
130
+ .glyphicon-resize-full { &:before { content: "\e096"; } }
131
+ .glyphicon-resize-small { &:before { content: "\e097"; } }
132
+ .glyphicon-exclamation-sign { &:before { content: "\e101"; } }
133
+ .glyphicon-gift { &:before { content: "\e102"; } }
134
+ .glyphicon-leaf { &:before { content: "\e103"; } }
135
+ .glyphicon-eye-open { &:before { content: "\e105"; } }
136
+ .glyphicon-eye-close { &:before { content: "\e106"; } }
137
+ .glyphicon-warning-sign { &:before { content: "\e107"; } }
138
+ .glyphicon-plane { &:before { content: "\e108"; } }
139
+ .glyphicon-random { &:before { content: "\e110"; } }
140
+ .glyphicon-comment { &:before { content: "\e111"; } }
141
+ .glyphicon-magnet { &:before { content: "\e112"; } }
142
+ .glyphicon-chevron-up { &:before { content: "\e113"; } }
143
+ .glyphicon-chevron-down { &:before { content: "\e114"; } }
144
+ .glyphicon-retweet { &:before { content: "\e115"; } }
145
+ .glyphicon-shopping-cart { &:before { content: "\e116"; } }
146
+ .glyphicon-folder-close { &:before { content: "\e117"; } }
147
+ .glyphicon-folder-open { &:before { content: "\e118"; } }
148
+ .glyphicon-resize-vertical { &:before { content: "\e119"; } }
149
+ .glyphicon-resize-horizontal { &:before { content: "\e120"; } }
150
+ .glyphicon-hdd { &:before { content: "\e121"; } }
151
+ .glyphicon-bullhorn { &:before { content: "\e122"; } }
152
+ .glyphicon-certificate { &:before { content: "\e124"; } }
153
+ .glyphicon-thumbs-up { &:before { content: "\e125"; } }
154
+ .glyphicon-thumbs-down { &:before { content: "\e126"; } }
155
+ .glyphicon-hand-right { &:before { content: "\e127"; } }
156
+ .glyphicon-hand-left { &:before { content: "\e128"; } }
157
+ .glyphicon-hand-up { &:before { content: "\e129"; } }
158
+ .glyphicon-hand-down { &:before { content: "\e130"; } }
159
+ .glyphicon-circle-arrow-right { &:before { content: "\e131"; } }
160
+ .glyphicon-circle-arrow-left { &:before { content: "\e132"; } }
161
+ .glyphicon-circle-arrow-up { &:before { content: "\e133"; } }
162
+ .glyphicon-circle-arrow-down { &:before { content: "\e134"; } }
163
+ .glyphicon-globe { &:before { content: "\e135"; } }
164
+ .glyphicon-tasks { &:before { content: "\e137"; } }
165
+ .glyphicon-filter { &:before { content: "\e138"; } }
166
+ .glyphicon-fullscreen { &:before { content: "\e140"; } }
167
+ .glyphicon-dashboard { &:before { content: "\e141"; } }
168
+ .glyphicon-heart-empty { &:before { content: "\e143"; } }
169
+ .glyphicon-link { &:before { content: "\e144"; } }
170
+ .glyphicon-phone { &:before { content: "\e145"; } }
171
+ .glyphicon-usd { &:before { content: "\e148"; } }
172
+ .glyphicon-gbp { &:before { content: "\e149"; } }
173
+ .glyphicon-sort { &:before { content: "\e150"; } }
174
+ .glyphicon-sort-by-alphabet { &:before { content: "\e151"; } }
175
+ .glyphicon-sort-by-alphabet-alt { &:before { content: "\e152"; } }
176
+ .glyphicon-sort-by-order { &:before { content: "\e153"; } }
177
+ .glyphicon-sort-by-order-alt { &:before { content: "\e154"; } }
178
+ .glyphicon-sort-by-attributes { &:before { content: "\e155"; } }
179
+ .glyphicon-sort-by-attributes-alt { &:before { content: "\e156"; } }
180
+ .glyphicon-unchecked { &:before { content: "\e157"; } }
181
+ .glyphicon-expand { &:before { content: "\e158"; } }
182
+ .glyphicon-collapse-down { &:before { content: "\e159"; } }
183
+ .glyphicon-collapse-up { &:before { content: "\e160"; } }
184
+ .glyphicon-log-in { &:before { content: "\e161"; } }
185
+ .glyphicon-flash { &:before { content: "\e162"; } }
186
+ .glyphicon-log-out { &:before { content: "\e163"; } }
187
+ .glyphicon-new-window { &:before { content: "\e164"; } }
188
+ .glyphicon-record { &:before { content: "\e165"; } }
189
+ .glyphicon-save { &:before { content: "\e166"; } }
190
+ .glyphicon-open { &:before { content: "\e167"; } }
191
+ .glyphicon-saved { &:before { content: "\e168"; } }
192
+ .glyphicon-import { &:before { content: "\e169"; } }
193
+ .glyphicon-export { &:before { content: "\e170"; } }
194
+ .glyphicon-send { &:before { content: "\e171"; } }
195
+ .glyphicon-floppy-disk { &:before { content: "\e172"; } }
196
+ .glyphicon-floppy-saved { &:before { content: "\e173"; } }
197
+ .glyphicon-floppy-remove { &:before { content: "\e174"; } }
198
+ .glyphicon-floppy-save { &:before { content: "\e175"; } }
199
+ .glyphicon-floppy-open { &:before { content: "\e176"; } }
200
+ .glyphicon-credit-card { &:before { content: "\e177"; } }
201
+ .glyphicon-transfer { &:before { content: "\e178"; } }
202
+ .glyphicon-cutlery { &:before { content: "\e179"; } }
203
+ .glyphicon-header { &:before { content: "\e180"; } }
204
+ .glyphicon-compressed { &:before { content: "\e181"; } }
205
+ .glyphicon-earphone { &:before { content: "\e182"; } }
206
+ .glyphicon-phone-alt { &:before { content: "\e183"; } }
207
+ .glyphicon-tower { &:before { content: "\e184"; } }
208
+ .glyphicon-stats { &:before { content: "\e185"; } }
209
+ .glyphicon-sd-video { &:before { content: "\e186"; } }
210
+ .glyphicon-hd-video { &:before { content: "\e187"; } }
211
+ .glyphicon-subtitles { &:before { content: "\e188"; } }
212
+ .glyphicon-sound-stereo { &:before { content: "\e189"; } }
213
+ .glyphicon-sound-dolby { &:before { content: "\e190"; } }
214
+ .glyphicon-sound-5-1 { &:before { content: "\e191"; } }
215
+ .glyphicon-sound-6-1 { &:before { content: "\e192"; } }
216
+ .glyphicon-sound-7-1 { &:before { content: "\e193"; } }
217
+ .glyphicon-copyright-mark { &:before { content: "\e194"; } }
218
+ .glyphicon-registration-mark { &:before { content: "\e195"; } }
219
+ .glyphicon-cloud-download { &:before { content: "\e197"; } }
220
+ .glyphicon-cloud-upload { &:before { content: "\e198"; } }
221
+ .glyphicon-tree-conifer { &:before { content: "\e199"; } }
222
+ .glyphicon-tree-deciduous { &:before { content: "\e200"; } }
223
+ .glyphicon-briefcase { &:before { content: "\1f4bc"; } }
224
+ .glyphicon-calendar { &:before { content: "\1f4c5"; } }
225
+ .glyphicon-pushpin { &:before { content: "\1f4cc"; } }
226
+ .glyphicon-paperclip { &:before { content: "\1f4ce"; } }
227
+ .glyphicon-camera { &:before { content: "\1f4f7"; } }
228
+ .glyphicon-lock { &:before { content: "\1f512"; } }
229
+ .glyphicon-bell { &:before { content: "\1f514"; } }
230
+ .glyphicon-bookmark { &:before { content: "\1f516"; } }
231
+ .glyphicon-fire { &:before { content: "\1f525"; } }
232
+ .glyphicon-wrench { &:before { content: "\1f527"; } }
content/assets/css/bootstrap/_grid.scss ADDED
@@ -0,0 +1,346 @@
1
+ //
2
+ // Grid system
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Set the container width, and override it for fixed navbars in media queries
7
+ .container {
8
+ @include container-fixed();
9
+ }
10
+
11
+ // mobile first defaults
12
+ .row {
13
+ @include make-row();
14
+ }
15
+
16
+ // Common styles for small and large grid columns
17
+ .col-xs-1,
18
+ .col-xs-2,
19
+ .col-xs-3,
20
+ .col-xs-4,
21
+ .col-xs-5,
22
+ .col-xs-6,
23
+ .col-xs-7,
24
+ .col-xs-8,
25
+ .col-xs-9,
26
+ .col-xs-10,
27
+ .col-xs-11,
28
+ .col-xs-12,
29
+ .col-sm-1,
30
+ .col-sm-2,
31
+ .col-sm-3,
32
+ .col-sm-4,
33
+ .col-sm-5,
34
+ .col-sm-6,
35
+ .col-sm-7,
36
+ .col-sm-8,
37
+ .col-sm-9,
38
+ .col-sm-10,
39
+ .col-sm-11,
40
+ .col-sm-12,
41
+ .col-md-1,
42
+ .col-md-2,
43
+ .col-md-3,
44
+ .col-md-4,
45
+ .col-md-5,
46
+ .col-md-6,
47
+ .col-md-7,
48
+ .col-md-8,
49
+ .col-md-9,
50
+ .col-md-10,
51
+ .col-md-11,
52
+ .col-md-12,
53
+ .col-lg-1,
54
+ .col-lg-2,
55
+ .col-lg-3,
56
+ .col-lg-4,
57
+ .col-lg-5,
58
+ .col-lg-6,
59
+ .col-lg-7,
60
+ .col-lg-8,
61
+ .col-lg-9,
62
+ .col-lg-10,
63
+ .col-lg-11,
64
+ .col-lg-12 {
65
+ position: relative;
66
+ // Prevent columns from collapsing when empty
67
+ min-height: 1px;
68
+ // Inner gutter via padding
69
+ padding-left: ($grid-gutter-width / 2);
70
+ padding-right: ($grid-gutter-width / 2);
71
+ }
72
+
73
+
74
+ // Extra small grid
75
+ //
76
+ // Grid classes for extra small devices like smartphones. No offset, push, or
77
+ // pull classes are present here due to the size of the target.
78
+ //
79
+ // Note that `.col-xs-12` doesn't get floated on purpose—there's no need since
80
+ // it's full-width.
81
+
82
+ .col-xs-1,
83
+ .col-xs-2,
84
+ .col-xs-3,
85
+ .col-xs-4,
86
+ .col-xs-5,
87
+ .col-xs-6,
88
+ .col-xs-7,
89
+ .col-xs-8,
90
+ .col-xs-9,
91
+ .col-xs-10,
92
+ .col-xs-11 {
93
+ float: left;
94
+ }
95
+ .col-xs-1 { width: percentage((1 / $grid-columns)); }
96
+ .col-xs-2 { width: percentage((2 / $grid-columns)); }
97
+ .col-xs-3 { width: percentage((3 / $grid-columns)); }
98
+ .col-xs-4 { width: percentage((4 / $grid-columns)); }
99
+ .col-xs-5 { width: percentage((5 / $grid-columns)); }
100
+ .col-xs-6 { width: percentage((6 / $grid-columns)); }
101
+ .col-xs-7 { width: percentage((7 / $grid-columns)); }
102
+ .col-xs-8 { width: percentage((8 / $grid-columns)); }
103
+ .col-xs-9 { width: percentage((9 / $grid-columns)); }
104
+ .col-xs-10 { width: percentage((10/ $grid-columns)); }
105
+ .col-xs-11 { width: percentage((11/ $grid-columns)); }
106
+ .col-xs-12 { width: 100%; }
107
+
108
+
109
+ // Small grid
110
+ //
111
+ // Columns, offsets, pushes, and pulls for the small device range, from phones
112
+ // to tablets.
113
+ //
114
+ // Note that `.col-sm-12` doesn't get floated on purpose—there's no need since
115
+ // it's full-width.
116
+
117
+ @media (min-width: $screen-tablet) {
118
+ .container {
119
+ max-width: $container-tablet;
120
+ }
121
+
122
+ .col-sm-1,
123
+ .col-sm-2,
124
+ .col-sm-3,
125
+ .col-sm-4,
126
+ .col-sm-5,
127
+ .col-sm-6,
128
+ .col-sm-7,
129
+ .col-sm-8,
130
+ .col-sm-9,
131
+ .col-sm-10,
132
+ .col-sm-11 {
133
+ float: left;
134
+ }
135
+ .col-sm-1 { width: percentage((1 / $grid-columns)); }
136
+ .col-sm-2 { width: percentage((2 / $grid-columns)); }
137
+ .col-sm-3 { width: percentage((3 / $grid-columns)); }
138
+ .col-sm-4 { width: percentage((4 / $grid-columns)); }
139
+ .col-sm-5 { width: percentage((5 / $grid-columns)); }
140
+ .col-sm-6 { width: percentage((6 / $grid-columns)); }
141
+ .col-sm-7 { width: percentage((7 / $grid-columns)); }
142
+ .col-sm-8 { width: percentage((8 / $grid-columns)); }
143
+ .col-sm-9 { width: percentage((9 / $grid-columns)); }
144
+ .col-sm-10 { width: percentage((10/ $grid-columns)); }
145
+ .col-sm-11 { width: percentage((11/ $grid-columns)); }
146
+ .col-sm-12 { width: 100%; }
147
+
148
+ // Push and pull columns for source order changes
149
+ .col-sm-push-1 { left: percentage((1 / $grid-columns)); }
150
+ .col-sm-push-2 { left: percentage((2 / $grid-columns)); }
151
+ .col-sm-push-3 { left: percentage((3 / $grid-columns)); }
152
+ .col-sm-push-4 { left: percentage((4 / $grid-columns)); }
153
+ .col-sm-push-5 { left: percentage((5 / $grid-columns)); }
154
+ .col-sm-push-6 { left: percentage((6 / $grid-columns)); }
155
+ .col-sm-push-7 { left: percentage((7 / $grid-columns)); }
156
+ .col-sm-push-8 { left: percentage((8 / $grid-columns)); }
157
+ .col-sm-push-9 { left: percentage((9 / $grid-columns)); }
158
+ .col-sm-push-10 { left: percentage((10/ $grid-columns)); }
159
+ .col-sm-push-11 { left: percentage((11/ $grid-columns)); }
160
+
161
+ .col-sm-pull-1 { right: percentage((1 / $grid-columns)); }
162
+ .col-sm-pull-2 { right: percentage((2 / $grid-columns)); }
163
+ .col-sm-pull-3 { right: percentage((3 / $grid-columns)); }
164
+ .col-sm-pull-4 { right: percentage((4 / $grid-columns)); }
165
+ .col-sm-pull-5 { right: percentage((5 / $grid-columns)); }
166
+ .col-sm-pull-6 { right: percentage((6 / $grid-columns)); }
167
+ .col-sm-pull-7 { right: percentage((7 / $grid-columns)); }
168
+ .col-sm-pull-8 { right: percentage((8 / $grid-columns)); }
169
+ .col-sm-pull-9 { right: percentage((9 / $grid-columns)); }
170
+ .col-sm-pull-10 { right: percentage((10/ $grid-columns)); }
171
+ .col-sm-pull-11 { right: percentage((11/ $grid-columns)); }
172
+
173
+ // Offsets
174
+ .col-sm-offset-1 { margin-left: percentage((1 / $grid-columns)); }
175
+ .col-sm-offset-2 { margin-left: percentage((2 / $grid-columns)); }
176
+ .col-sm-offset-3 { margin-left: percentage((3 / $grid-columns)); }
177
+ .col-sm-offset-4 { margin-left: percentage((4 / $grid-columns)); }
178
+ .col-sm-offset-5 { margin-left: percentage((5 / $grid-columns)); }
179
+ .col-sm-offset-6 { margin-left: percentage((6 / $grid-columns)); }
180
+ .col-sm-offset-7 { margin-left: percentage((7 / $grid-columns)); }
181
+ .col-sm-offset-8 { margin-left: percentage((8 / $grid-columns)); }
182
+ .col-sm-offset-9 { margin-left: percentage((9 / $grid-columns)); }
183
+ .col-sm-offset-10 { margin-left: percentage((10/ $grid-columns)); }
184
+ .col-sm-offset-11 { margin-left: percentage((11/ $grid-columns)); }
185
+ }
186
+
187
+
188
+ // Medium grid
189
+ //
190
+ // Columns, offsets, pushes, and pulls for the desktop device range.
191
+ //
192
+ // Note that `.col-md-12` doesn't get floated on purpose—there's no need since
193
+ // it's full-width.
194
+
195
+ @media (min-width: $screen-desktop) {
196
+ .container {
197
+ max-width: $container-desktop;
198
+ }
199
+ .col-md-1,
200
+ .col-md-2,
201
+ .col-md-3,
202
+ .col-md-4,
203
+ .col-md-5,
204
+ .col-md-6,
205
+ .col-md-7,
206
+ .col-md-8,
207
+ .col-md-9,
208
+ .col-md-10,
209
+ .col-md-11 {
210
+ float: left;
211
+ }
212
+ .col-md-1 { width: percentage((1 / $grid-columns)); }
213
+ .col-md-2 { width: percentage((2 / $grid-columns)); }
214
+ .col-md-3 { width: percentage((3 / $grid-columns)); }
215
+ .col-md-4 { width: percentage((4 / $grid-columns)); }
216
+ .col-md-5 { width: percentage((5 / $grid-columns)); }
217
+ .col-md-6 { width: percentage((6 / $grid-columns)); }
218
+ .col-md-7 { width: percentage((7 / $grid-columns)); }
219
+ .col-md-8 { width: percentage((8 / $grid-columns)); }
220
+ .col-md-9 { width: percentage((9 / $grid-columns)); }
221
+ .col-md-10 { width: percentage((10/ $grid-columns)); }
222
+ .col-md-11 { width: percentage((11/ $grid-columns)); }
223
+ .col-md-12 { width: 100%; }
224
+
225
+ // Push and pull columns for source order changes
226
+ .col-md-push-0 { left: auto; }
227
+ .col-md-push-1 { left: percentage((1 / $grid-columns)); }
228
+ .col-md-push-2 { left: percentage((2 / $grid-columns)); }
229
+ .col-md-push-3 { left: percentage((3 / $grid-columns)); }
230
+ .col-md-push-4 { left: percentage((4 / $grid-columns)); }
231
+ .col-md-push-5 { left: percentage((5 / $grid-columns)); }
232
+ .col-md-push-6 { left: percentage((6 / $grid-columns)); }
233
+ .col-md-push-7 { left: percentage((7 / $grid-columns)); }
234
+ .col-md-push-8 { left: percentage((8 / $grid-columns)); }
235
+ .col-md-push-9 { left: percentage((9 / $grid-columns)); }
236
+ .col-md-push-10 { left: percentage((10/ $grid-columns)); }
237
+ .col-md-push-11 { left: percentage((11/ $grid-columns)); }
238
+
239
+ .col-md-pull-0 { right: auto; }
240
+ .col-md-pull-1 { right: percentage((1 / $grid-columns)); }
241
+ .col-md-pull-2 { right: percentage((2 / $grid-columns)); }
242
+ .col-md-pull-3 { right: percentage((3 / $grid-columns)); }
243
+ .col-md-pull-4 { right: percentage((4 / $grid-columns)); }
244
+ .col-md-pull-5 { right: percentage((5 / $grid-columns)); }
245
+ .col-md-pull-6 { right: percentage((6 / $grid-columns)); }
246
+ .col-md-pull-7 { right: percentage((7 / $grid-columns)); }
247
+ .col-md-pull-8 { right: percentage((8 / $grid-columns)); }
248
+ .col-md-pull-9 { right: percentage((9 / $grid-columns)); }
249
+ .col-md-pull-10 { right: percentage((10/ $grid-columns)); }
250
+ .col-md-pull-11 { right: percentage((11/ $grid-columns)); }
251
+
252
+ // Offsets
253
+ .col-md-offset-0 { margin-left: 0; }
254
+ .col-md-offset-1 { margin-left: percentage((1 / $grid-columns)); }
255
+ .col-md-offset-2 { margin-left: percentage((2 / $grid-columns)); }
256
+ .col-md-offset-3 { margin-left: percentage((3 / $grid-columns)); }
257
+ .col-md-offset-4 { margin-left: percentage((4 / $grid-columns)); }
258
+ .col-md-offset-5 { margin-left: percentage((5 / $grid-columns)); }
259
+ .col-md-offset-6 { margin-left: percentage((6 / $grid-columns)); }
260
+ .col-md-offset-7 { margin-left: percentage((7 / $grid-columns)); }
261
+ .col-md-offset-8 { margin-left: percentage((8 / $grid-columns)); }
262
+ .col-md-offset-9 { margin-left: percentage((9 / $grid-columns)); }
263
+ .col-md-offset-10 { margin-left: percentage((10/ $grid-columns)); }
264
+ .col-md-offset-11 { margin-left: percentage((11/ $grid-columns)); }
265
+ }
266
+
267
+
268
+ // Large grid
269
+ //
270
+ // Columns, offsets, pushes, and pulls for the large desktop device range.
271
+ //
272
+ // Note that `.col-lg-12` doesn't get floated on purpose—there's no need since
273
+ // it's full-width.
274
+
275
+ @media (min-width: $screen-lg-desktop) {
276
+ .container {
277
+ max-width: $container-lg-desktop;
278
+ }
279
+
280
+ .col-lg-1,
281
+ .col-lg-2,
282
+ .col-lg-3,
283
+ .col-lg-4,
284
+ .col-lg-5,
285
+ .col-lg-6,
286
+ .col-lg-7,
287
+ .col-lg-8,
288
+ .col-lg-9,
289
+ .col-lg-10,
290
+ .col-lg-11 {
291
+ float: left;
292
+ }
293
+ .col-lg-1 { width: percentage((1 / $grid-columns)); }
294
+ .col-lg-2 { width: percentage((2 / $grid-columns)); }
295
+ .col-lg-3 { width: percentage((3 / $grid-columns)); }
296
+ .col-lg-4 { width: percentage((4 / $grid-columns)); }
297
+ .col-lg-5 { width: percentage((5 / $grid-columns)); }
298
+ .col-lg-6 { width: percentage((6 / $grid-columns)); }
299
+ .col-lg-7 { width: percentage((7 / $grid-columns)); }
300
+ .col-lg-8 { width: percentage((8 / $grid-columns)); }
301
+ .col-lg-9 { width: percentage((9 / $grid-columns)); }
302
+ .col-lg-10 { width: percentage((10/ $grid-columns)); }
303
+ .col-lg-11 { width: percentage((11/ $grid-columns)); }
304
+ .col-lg-12 { width: 100%; }
305
+
306
+ // Push and pull columns for source order changes
307
+ .col-lg-push-0 { left: auto; }
308
+ .col-lg-push-1 { left: percentage((1 / $grid-columns)); }
309
+ .col-lg-push-2 { left: percentage((2 / $grid-columns)); }
310
+ .col-lg-push-3 { left: percentage((3 / $grid-columns)); }
311
+ .col-lg-push-4 { left: percentage((4 / $grid-columns)); }
312
+ .col-lg-push-5 { left: percentage((5 / $grid-columns)); }
313
+ .col-lg-push-6 { left: percentage((6 / $grid-columns)); }
314
+ .col-lg-push-7 { left: percentage((7 / $grid-columns)); }
315
+ .col-lg-push-8 { left: percentage((8 / $grid-columns)); }
316
+ .col-lg-push-9 { left: percentage((9 / $grid-columns)); }
317
+ .col-lg-push-10 { left: percentage((10/ $grid-columns)); }
318
+ .col-lg-push-11 { left: percentage((11/ $grid-columns)); }
319
+
320
+ .col-lg-pull-0 { right: auto; }
321
+ .col-lg-pull-1 { right: percentage((1 / $grid-columns)); }
322
+ .col-lg-pull-2 { right: percentage((2 / $grid-columns)); }
323
+ .col-lg-pull-3 { right: percentage((3 / $grid-columns)); }
324
+ .col-lg-pull-4 { right: percentage((4 / $grid-columns)); }
325
+ .col-lg-pull-5 { right: percentage((5 / $grid-columns)); }
326
+ .col-lg-pull-6 { right: percentage((6 / $grid-columns)); }
327
+ .col-lg-pull-7 { right: percentage((7 / $grid-columns)); }
328
+ .col-lg-pull-8 { right: percentage((8 / $grid-columns)); }
329
+ .col-lg-pull-9 { right: percentage((9 / $grid-columns)); }
330
+ .col-lg-pull-10 { right: percentage((10/ $grid-columns)); }
331
+ .col-lg-pull-11 { right: percentage((11/ $grid-columns)); }
332
+
333
+ // Offsets
334
+ .col-lg-offset-0 { margin-left: 0; }
335
+ .col-lg-offset-1 { margin-left: percentage((1 / $grid-columns)); }
336
+ .col-lg-offset-2 { margin-left: percentage((2 / $grid-columns)); }
337
+ .col-lg-offset-3 { margin-left: percentage((3 / $grid-columns)); }
338
+ .col-lg-offset-4 { margin-left: percentage((4 / $grid-columns)); }
339
+ .col-lg-offset-5 { margin-left: percentage((5 / $grid-columns)); }
340
+ .col-lg-offset-6 { margin-left: percentage((6 / $grid-columns)); }
341
+ .col-lg-offset-7 { margin-left: percentage((7 / $grid-columns)); }
342
+ .col-lg-offset-8 { margin-left: percentage((8 / $grid-columns)); }
343
+ .col-lg-offset-9 { margin-left: percentage((9 / $grid-columns)); }
344
+ .col-lg-offset-10 { margin-left: percentage((10/ $grid-columns)); }
345
+ .col-lg-offset-11 { margin-left: percentage((11/ $grid-columns)); }
346
+ }
content/assets/css/bootstrap/_input-groups.scss ADDED
@@ -0,0 +1,127 @@
1
+ //
2
+ // Input groups
3
+ // --------------------------------------------------
4
+
5
+ // Base styles
6
+ // -------------------------
7
+ .input-group {
8
+ position: relative; // For dropdowns
9
+ display: table;
10
+ border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table
11
+
12
+ // Undo padding and float of grid classes
13
+ &.col {
14
+ float: none;
15
+ padding-left: 0;
16
+ padding-right: 0;
17
+ }
18
+
19
+ .form-control {
20
+ width: 100%;
21
+ margin-bottom: 0;
22
+ }
23
+ }
24
+
25
+ // Sizing options
26
+ //
27
+ // Remix the default form control sizing classes into new ones for easier
28
+ // manipulation.
29
+
30
+ .input-group-lg > .form-control,
31
+ .input-group-lg > .input-group-addon,
32
+ .input-group-lg > .input-group-btn > .btn { @extend .input-lg; }
33
+ .input-group-sm > .form-control,
34
+ .input-group-sm > .input-group-addon,
35
+ .input-group-sm > .input-group-btn > .btn { @extend .input-sm; }
36
+
37
+
38
+ // Display as table-cell
39
+ // -------------------------
40
+ .input-group-addon,
41
+ .input-group-btn,
42
+ .input-group .form-control {
43
+ display: table-cell;
44
+
45
+ &:not(:first-child):not(:last-child) {
46
+ border-radius: 0;
47
+ }
48
+ }
49
+ // Addon and addon wrapper for buttons
50
+ .input-group-addon,
51
+ .input-group-btn {
52
+ width: 1%;
53
+ white-space: nowrap;
54
+ vertical-align: middle; // Match the inputs
55
+ }
56
+
57
+ // Text input groups
58
+ // -------------------------
59
+ .input-group-addon {
60
+ padding: $padding-base-vertical $padding-base-horizontal;
61
+ font-size: $font-size-base;
62
+ font-weight: normal;
63
+ line-height: 1;
64
+ text-align: center;
65
+ background-color: $input-group-addon-bg;
66
+ border: 1px solid $input-group-addon-border-color;
67
+ border-radius: $border-radius-base;
68
+
69
+ // Sizing
70
+ &.input-sm {
71
+ padding: $padding-small-vertical $padding-small-horizontal;
72
+ font-size: $font-size-small;
73
+ border-radius: $border-radius-small;
74
+ }
75
+ &.input-lg {
76
+ padding: $padding-large-vertical $padding-large-horizontal;
77
+ font-size: $font-size-large;
78
+ border-radius: $border-radius-large;
79
+ }
80
+
81
+ // Nuke default margins from checkboxes and radios to vertically center within.
82
+ input[type="radio"],
83
+ input[type="checkbox"] {
84
+ margin-top: 0;
85
+ }
86
+ }
87
+
88
+ // Reset rounded corners
89
+ .input-group .form-control:first-child,
90
+ .input-group-addon:first-child,
91
+ .input-group-btn:first-child > .btn,
92
+ .input-group-btn:first-child > .dropdown-toggle,
93
+ .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
94
+ @include border-right-radius(0);
95
+ }
96
+ .input-group-addon:first-child {
97
+ border-right: 0;
98
+ }
99
+ .input-group .form-control:last-child,
100
+ .input-group-addon:last-child,
101
+ .input-group-btn:last-child > .btn,
102
+ .input-group-btn:last-child > .dropdown-toggle,
103
+ .input-group-btn:first-child > .btn:not(:first-child) {
104
+ @include border-left-radius(0);
105
+ }
106
+ .input-group-addon:last-child {
107
+ border-left: 0;
108
+ }
109
+
110
+ // Button input groups
111
+ // -------------------------
112
+ .input-group-btn {
113
+ position: relative;
114
+ white-space: nowrap;
115
+ }
116
+ .input-group-btn > .btn {
117
+ position: relative;
118
+ // Jankily prevent input button groups from wrapping
119
+ + .btn {
120
+ margin-left: -4px;
121
+ }
122
+ // Bring the "active" button to the front
123
+ &:hover,
124
+ &:active {
125
+ z-index: 2;
126
+ }
127
+ }
content/assets/css/bootstrap/_jumbotron.scss ADDED
@@ -0,0 +1,40 @@
1
+ //
2
+ // Jumbotron
3
+ // --------------------------------------------------
4
+
5
+
6
+ .jumbotron {
7
+ padding: $jumbotron-padding;
8
+ margin-bottom: $jumbotron-padding;
9
+ font-size: ($font-size-base * 1.5);
10
+ font-weight: 200;
11
+ line-height: ($line-height-base * 1.5);
12
+ color: $jumbotron-color;
13
+ background-color: $jumbotron-bg;
14
+
15
+ h1 {
16
+ line-height: 1;
17
+ color: $jumbotron-heading-color;
18
+ }
19
+ p {
20
+ line-height: 1.4;
21
+ }
22
+
23
+ .container & {
24
+ border-radius: $border-radius-large; // Only round corners at higher resolutions if contained in a container
25
+ }
26
+
27
+ @media screen and (min-width: $screen-tablet) {
28
+ padding-top: ($jumbotron-padding * 1.6);
29
+ padding-bottom: ($jumbotron-padding * 1.6);
30
+
31
+ .container & {
32
+ padding-left: ($jumbotron-padding * 2);
33
+ padding-right: ($jumbotron-padding * 2);
34
+ }
35
+
36
+ h1 {
37
+ font-size: ($font-size-base * 4.5);
38
+ }
39
+ }
40
+ }
content/assets/css/bootstrap/_labels.scss ADDED
@@ -0,0 +1,58 @@
1
+ //
2
+ // Labels
3
+ // --------------------------------------------------
4
+
5
+ .label {
6
+ display: inline;
7
+ padding: .2em .6em .3em;
8
+ font-size: 75%;
9
+ font-weight: bold;
10
+ line-height: 1;
11
+ color: $label-color;
12
+ text-align: center;
13
+ white-space: nowrap;
14
+ vertical-align: baseline;
15
+ border-radius: .25em;
16
+
17
+ // Add hover effects, but only for links
18
+ &[href] {
19
+ &:hover,
20
+ &:focus {
21
+ color: $label-link-hover-color;
22
+ text-decoration: none;
23
+ cursor: pointer;
24
+ }
25
+ }
26
+
27
+ // Empty labels collapse automatically (not available in IE8)
28
+ &:empty {
29
+ display: none;
30
+ }
31
+ }
32
+
33
+ // Colors
34
+ // Contextual variations (linked labels get darker on :hover)
35
+
36
+ .label-default {
37
+ @include label-variant($label-default-bg);
38
+ }
39
+
40
+ .label-primary {
41
+ @include label-variant($label-primary-bg);
42
+ }
43
+
44
+ .label-success {
45
+ @include label-variant($label-success-bg);
46
+ }
47
+
48
+ .label-info {
49
+ @include label-variant($label-info-bg);
50
+ }
51
+
52
+ .label-warning {
53
+ @include label-variant($label-warning-bg);
54
+ }
55
+
56
+ .label-danger {
57
+ @include label-variant($label-danger-bg);
58
+ }
content/assets/css/bootstrap/_list-group.scss ADDED
@@ -0,0 +1,90 @@
1
+ //
2
+ // List groups
3
+ // --------------------------------------------------
4
+
5
+ // Base class
6
+ //
7
+ // Easily usable on <ul>, <ol>, or <div>.
8
+ .list-group {
9
+ // No need to set list-style: none; since .list-group-item is block level
10
+ margin-bottom: 20px;
11
+ padding-left: 0; // reset padding because ul and ol
12
+ }
13
+
14
+ // Individual list items
15
+ // -------------------------
16
+
17
+ .list-group-item {
18
+ position: relative;
19
+ display: block;
20
+ padding: 10px 15px;
21
+ // Place the border on the list items and negative margin up for better styling
22
+ margin-bottom: -1px;
23
+ background-color: $list-group-bg;
24
+ border: 1px solid $list-group-border;
25
+
26
+ // Round the first and last items
27
+ &:first-child {
28
+ @include border-top-radius($list-group-border-radius);
29
+ }
30
+ &:last-child {
31
+ margin-bottom: 0;
32
+ @include border-bottom-radius($list-group-border-radius);
33
+ }
34
+
35
+ // Align badges within list items
36
+ > .badge {
37
+ float: right;
38
+ }
39
+ > .badge + .badge {
40
+ margin-right: 5px;
41
+ }
42
+
43
+ // [converter] extracted a& to a.list-group-item
44
+
45
+ // Active class on item itself, not parent
46
+ &.active,
47
+ &.active:hover,
48
+ &.active:focus {
49
+ z-index: 2; // Place active items above their siblings for proper border styling
50
+ color: $list-group-active-color;
51
+ background-color: $list-group-active-bg;
52
+ border-color: $list-group-active-border;
53
+
54
+ // Force color to inherit for custom content
55
+ .list-group-item-heading {
56
+ color: inherit;
57
+ }
58
+ .list-group-item-text {
59
+ color: lighten($list-group-active-bg, 40%);
60
+ }
61
+ }
62
+ }
63
+
64
+ // Linked list items
65
+ a.list-group-item {
66
+ color: $list-group-link-color;
67
+
68
+ .list-group-item-heading {
69
+ color: $list-group-link-heading-color;
70
+ }
71
+
72
+ // Hover state
73
+ &:hover,
74
+ &:focus {
75
+ text-decoration: none;
76
+ background-color: $list-group-hover-bg;
77
+ }
78
+ }
79
+
80
+ // Custom content options
81
+ // -------------------------
82
+
83
+ .list-group-item-heading {
84
+ margin-top: 0;
85
+ margin-bottom: 5px;
86
+ }
87
+ .list-group-item-text {
88
+ margin-bottom: 0;
89
+ line-height: 1.3;
90
+ }
content/assets/css/bootstrap/_media.scss ADDED
@@ -0,0 +1,56 @@
1
+ // Media objects
2
+ // Source: http://stubbornella.org/content/?p=497
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Common styles
7
+ // -------------------------
8
+
9
+ // Clear the floats
10
+ .media,
11
+ .media-body {
12
+ overflow: hidden;
13
+ zoom: 1;
14
+ }
15
+
16
+ // Proper spacing between instances of .media
17
+ .media,
18
+ .media .media {
19
+ margin-top: 15px;
20
+ }
21
+ .media:first-child {
22
+ margin-top: 0;
23
+ }
24
+
25
+ // For images and videos, set to block
26
+ .media-object {
27
+ display: block;
28
+ }
29
+
30
+ // Reset margins on headings for tighter default spacing
31
+ .media-heading {
32
+ margin: 0 0 5px;
33
+ }
34
+
35
+
36
+ // Media image alignment
37
+ // -------------------------
38
+
39
+ .media {
40
+ > .pull-left {
41
+ margin-right: 10px;
42
+ }
43
+ > .pull-right {
44
+ margin-left: 10px;
45
+ }
46
+ }
47
+
48
+
49
+ // Media list variation
50
+ // -------------------------
51
+
52
+ // Undo default ul/ol styles
53
+ .media-list {
54
+ padding-left: 0;
55
+ list-style: none;
56
+ }
content/assets/css/bootstrap/_mixins.scss ADDED
@@ -0,0 +1,730 @@
1
+ //
2
+ // Mixins
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Utilities
7
+ // -------------------------
8
+
9
+ // Clearfix
10
+ // Source: http://nicolasgallagher.com/micro-clearfix-hack/
11
+ //
12
+ // For modern browsers
13
+ // 1. The space content is one way to avoid an Opera bug when the
14
+ // contenteditable attribute is included anywhere else in the document.
15
+ // Otherwise it causes space to appear at the top and bottom of elements
16
+ // that are clearfixed.
17
+ // 2. The use of `table` rather than `block` is only necessary if using
18
+ // `:before` to contain the top-margins of child elements.
19
+ @mixin clearfix() {
20
+ &:before,
21
+ &:after {
22
+ content: " "; /* 1 */
23
+ display: table; /* 2 */
24
+ }
25
+ &:after {
26
+ clear: both;
27
+ }
28
+ }
29
+
30
+ // Webkit-style focus
31
+ @mixin tab-focus() {
32
+ // Default
33
+ outline: thin dotted #333;
34
+ // Webkit
35
+ outline: 5px auto -webkit-focus-ring-color;
36
+ outline-offset: -2px;
37
+ }
38
+
39
+ // Center-align a block level element
40
+ @mixin center-block() {
41
+ display: block;
42
+ margin-left: auto;
43
+ margin-right: auto;
44
+ }
45
+
46
+ // Sizing shortcuts
47
+ @mixin size($width, $height) {
48
+ width: $width;
49
+ height: $height;
50
+ }
51
+ @mixin square($size) {
52
+ @include size($size, $size);
53
+ }
54
+
55
+ // Placeholder text
56
+ @mixin placeholder($color: $input-color-placeholder) {
57
+ &:-moz-placeholder { color: $color; } // Firefox 4-18
58
+ &::-moz-placeholder { color: $color; } // Firefox 19+
59
+ &:-ms-input-placeholder { color: $color; } // Internet Explorer 10+
60
+ &::-webkit-input-placeholder { color: $color; } // Safari and Chrome
61
+ }
62
+
63
+ // Text overflow
64
+ // Requires inline-block or block for proper styling
65
+ @mixin text-overflow() {
66
+ overflow: hidden;
67
+ text-overflow: ellipsis;
68
+ white-space: nowrap;
69
+ }
70
+
71
+ // CSS image replacement
72
+ // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
73
+ @mixin hide-text() {
74
+ font: #{0/0} a;
75
+ color: transparent;
76
+ text-shadow: none;
77
+ background-color: transparent;
78
+ border: 0;
79
+ }
80
+
81
+
82
+
83
+ // CSS3 PROPERTIES
84
+ // --------------------------------------------------
85
+
86
+ // Single side border-radius
87
+ @mixin border-top-radius($radius) {
88
+ border-top-right-radius: $radius;
89
+ border-top-left-radius: $radius;
90
+ }
91
+ @mixin border-right-radius($radius) {
92
+ border-bottom-right-radius: $radius;
93
+ border-top-right-radius: $radius;
94
+ }
95
+ @mixin border-bottom-radius($radius) {
96
+ border-bottom-right-radius: $radius;
97
+ border-bottom-left-radius: $radius;
98
+ }
99
+ @mixin border-left-radius($radius) {
100
+ border-bottom-left-radius: $radius;
101
+ border-top-left-radius: $radius;
102
+ }
103
+
104
+ // Drop shadows
105
+ @mixin box-shadow($shadow...) {
106
+ -webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1
107
+ box-shadow: $shadow;
108
+ }
109
+
110
+ // Transitions
111
+ @mixin transition($transition...) {
112
+ -webkit-transition: $transition;
113
+ transition: $transition;
114
+ }
115
+ @mixin transition-delay($transition-delay) {
116
+ -webkit-transition-delay: $transition-delay;
117
+ transition-delay: $transition-delay;
118
+ }
119
+ @mixin transition-duration($transition-duration) {
120
+ -webkit-transition-duration: $transition-duration;
121
+ transition-duration: $transition-duration;
122
+ }
123
+ @mixin transition-transform($transition...) {
124
+ -webkit-transition: -webkit-transform $transition;
125
+ -moz-transition: -moz-transform $transition;
126
+ -o-transition: -o-transform $transition;
127
+ transition: transform $transition;
128
+ }
129
+
130
+ // Transformations
131
+ @mixin rotate($degrees) {
132
+ -webkit-transform: rotate($degrees);
133
+ -ms-transform: rotate($degrees); // IE9+
134
+ transform: rotate($degrees);
135
+ }
136
+ @mixin scale($ratio) {
137
+ -webkit-transform: scale($ratio);
138
+ -ms-transform: scale($ratio); // IE9+
139
+ transform: scale($ratio);
140
+ }
141
+ @mixin translate($x, $y) {
142
+ -webkit-transform: translate($x, $y);
143
+ -ms-transform: translate($x, $y); // IE9+
144
+ transform: translate($x, $y);
145
+ }
146
+ @mixin skew($x, $y) {
147
+ -webkit-transform: skew($x, $y);
148
+ -ms-transform: skewX($x) skewY($y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+
149
+ transform: skew($x, $y);
150
+ }
151
+ @mixin translate3d($x, $y, $z) {
152
+ -webkit-transform: translate3d($x, $y, $z);
153
+ transform: translate3d($x, $y, $z);
154
+ }
155
+
156
+ // Backface visibility
157
+ // Prevent browsers from flickering when using CSS 3D transforms.
158
+ // Default value is `visible`, but can be changed to `hidden`
159
+ // See git pull https://github.com/dannykeane/bootstrap.git backface-visibility for examples
160
+ @mixin backface-visibility($visibility){
161
+ -webkit-backface-visibility: $visibility;
162
+ -moz-backface-visibility: $visibility;
163
+ backface-visibility: $visibility;
164
+ }
165
+
166
+ // Box sizing
167
+ @mixin box-sizing($boxmodel) {
168
+ -webkit-box-sizing: $boxmodel;
169
+ -moz-box-sizing: $boxmodel;
170
+ box-sizing: $boxmodel;
171
+ }
172
+
173
+ // User select
174
+ // For selecting text on the page
175
+ @mixin user-select($select) {
176
+ -webkit-user-select: $select;
177
+ -moz-user-select: $select;
178
+ -ms-user-select: $select; // IE10+
179
+ -o-user-select: $select;
180
+ user-select: $select;
181
+ }
182
+
183
+ // Resize anything
184
+ @mixin resizable($direction) {
185
+ resize: $direction; // Options: horizontal, vertical, both
186
+ overflow: auto; // Safari fix
187
+ }
188
+
189
+ // CSS3 Content Columns
190
+ @mixin content-columns($column-count, $column-gap: $grid-gutter-width) {
191
+ -webkit-column-count: $column-count;
192
+ -moz-column-count: $column-count;
193
+ column-count: $column-count;
194
+ -webkit-column-gap: $column-gap;
195
+ -moz-column-gap: $column-gap;
196
+ column-gap: $column-gap;
197
+ }
198
+
199
+ // Optional hyphenation
200
+ @mixin hyphens($mode: auto) {
201
+ word-wrap: break-word;
202
+ -webkit-hyphens: $mode;
203
+ -moz-hyphens: $mode;
204
+ -ms-hyphens: $mode; // IE10+
205
+ -o-hyphens: $mode;
206
+ hyphens: $mode;
207
+ }
208
+
209
+ // Opacity
210
+ @mixin opacity($opacity) {
211
+ opacity: $opacity;
212
+ // IE8 filter
213
+ $opacity-ie: ($opacity * 100);
214
+ filter: #{alpha(opacity=$opacity-ie)};
215
+ }
216
+
217
+
218
+
219
+ // GRADIENTS
220
+ // --------------------------------------------------
221
+
222
+
223
+
224
+ // Horizontal gradient, from left to right
225
+ //
226
+ // Creates two color stops, start and end, by specifying a color and position for each color stop.
227
+ // Color stops are not available in IE9 and below.
228
+ @mixin gradient-horizontal($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
229
+ background-image: -webkit-gradient(linear, $start-percent top, $end-percent top, from($start-color), to($end-color)); // Safari 4+, Chrome 2+
230
+ background-image: -webkit-linear-gradient(left, color-stop($start-color $start-percent), color-stop($end-color $end-percent)); // Safari 5.1+, Chrome 10+
231
+ background-image: -moz-linear-gradient(left, $start-color $start-percent, $end-color $end-percent); // FF 3.6+
232
+ background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent); // Standard, IE10
233
+ background-repeat: repeat-x;
234
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down
235
+ }
236
+
237
+ // Vertical gradient, from top to bottom
238
+ //
239
+ // Creates two color stops, start and end, by specifying a color and position for each color stop.
240
+ // Color stops are not available in IE9 and below.
241
+ @mixin gradient-vertical($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
242
+ background-image: -webkit-gradient(linear, left $start-percent, left $end-percent, from($start-color), to($end-color)); // Safari 4+, Chrome 2+
243
+ background-image: -webkit-linear-gradient(top, $start-color, $start-percent, $end-color, $end-percent); // Safari 5.1+, Chrome 10+
244
+ background-image: -moz-linear-gradient(top, $start-color $start-percent, $end-color $end-percent); // FF 3.6+
245
+ background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent); // Standard, IE10
246
+ background-repeat: repeat-x;
247
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down
248
+ }
249
+
250
+ @mixin gradient-directional($start-color: #555, $end-color: #333, $deg: 45deg) {
251
+ background-repeat: repeat-x;
252
+ background-image: -webkit-linear-gradient($deg, $start-color, $end-color); // Safari 5.1+, Chrome 10+
253
+ background-image: -moz-linear-gradient($deg, $start-color, $end-color); // FF 3.6+
254
+ background-image: linear-gradient($deg, $start-color, $end-color); // Standard, IE10
255
+ }
256
+ @mixin gradient-horizontal-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
257
+ background-image: -webkit-gradient(left, linear, 0 0, 0 100%, from($start-color), color-stop($color-stop, $mid-color), to($end-color));
258
+ background-image: -webkit-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);
259
+ background-image: -moz-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);
260
+ background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
261
+ background-repeat: no-repeat;
262
+ 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
263
+ }
264
+ @mixin gradient-vertical-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
265
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from($start-color), color-stop($color-stop, $mid-color), to($end-color));
266
+ background-image: -webkit-linear-gradient($start-color, $mid-color $color-stop, $end-color);
267
+ background-image: -moz-linear-gradient(top, $start-color, $mid-color $color-stop, $end-color);
268
+ background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
269
+ background-repeat: no-repeat;
270
+ 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
271
+ }
272
+ @mixin gradient-radial($inner-color: #555, $outer-color: #333) {
273
+ background-image: -webkit-gradient(radial, center center, 0, center center, 460, from($inner-color), to($outer-color));
274
+ background-image: -webkit-radial-gradient(circle, $inner-color, $outer-color);
275
+ background-image: -moz-radial-gradient(circle, $inner-color, $outer-color);
276
+ background-image: radial-gradient(circle, $inner-color, $outer-color);
277
+ background-repeat: no-repeat;
278
+ }
279
+ @mixin gradient-striped($color: #555, $angle: 45deg) {
280
+ 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));
281
+ 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);
282
+ 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);
283
+ 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);
284
+ }
285
+
286
+ // Reset filters for IE
287
+ //
288
+ // When you need to remove a gradient background, do not forget to use this to reset
289
+ // the IE filter for IE9 and below.
290
+ @mixin reset-filter() {
291
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
292
+ }
293
+
294
+
295
+
296
+ // Retina images
297
+ //
298
+ // Short retina mixin for setting background-image and -size
299
+
300
+ @mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {
301
+ background-image: image-url("#{$file-1x}");
302
+
303
+ @media
304
+ only screen and (-webkit-min-device-pixel-ratio: 2),
305
+ only screen and ( min--moz-device-pixel-ratio: 2),
306
+ only screen and ( -o-min-device-pixel-ratio: 2/1),
307
+ only screen and ( min-device-pixel-ratio: 2),
308
+ only screen and ( min-resolution: 192dpi),
309
+ only screen and ( min-resolution: 2dppx) {
310
+ background-image: image-url("#{$file-2x}");
311
+ background-size: $width-1x $height-1x;
312
+ }
313
+ }
314
+
315
+
316
+ // Responsive image
317
+ //
318
+ // Keep images from scaling beyond the width of their parents.
319
+
320
+ @mixin img-responsive($display: block) {
321
+ display: $display;
322
+ max-width: 100%; // Part 1: Set a maximum relative to the parent
323
+ height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching
324
+ }
325
+
326
+
327
+ // COMPONENT MIXINS
328
+ // --------------------------------------------------
329
+
330
+ // Horizontal dividers
331
+ // -------------------------
332
+ // Dividers (basically an hr) within dropdowns and nav lists
333
+ @mixin nav-divider($color: #e5e5e5) {
334
+ height: 1px;
335
+ margin: (($line-height-computed / 2) - 1) 0;
336
+ overflow: hidden;
337
+ background-color: $color;
338
+ }
339
+
340
+ // Panels
341
+ // -------------------------
342
+ @mixin panel-variant($border, $heading-text-color, $heading-bg-color, $heading-border) {
343
+ border-color: $border;
344
+ & > .panel-heading {
345
+ color: $heading-text-color;
346
+ background-color: $heading-bg-color;
347
+ border-color: $heading-border;
348
+ + .panel-collapse .panel-body {
349
+ border-top-color: $border;
350
+ }
351
+ }
352
+ & > .panel-footer {
353
+ + .panel-collapse .panel-body {
354
+ border-bottom-color: $border;
355
+ }
356
+ }
357
+ }
358
+
359
+ // Alerts
360
+ // -------------------------
361
+ @mixin alert-variant($background, $border, $text-color) {
362
+ background-color: $background;
363
+ border-color: $border;
364
+ color: $text-color;
365
+ hr {
366
+ border-top-color: darken($border, 5%);
367
+ }
368
+ .alert-link {
369
+ color: darken($text-color, 10%);
370
+ }
371
+ }
372
+
373
+ // Tables
374
+ // -------------------------
375
+ @mixin table-row-variant($state, $background, $border) {
376
+ // Exact selectors below required to override `.table-striped` and prevent
377
+ // inheritance to nested tables.
378
+ .table > thead > tr,
379
+ .table > tbody > tr,
380
+ .table > tfoot > tr {
381
+ > td.#{$state},
382
+ > th.#{$state},
383
+ &.#{$state} > td,
384
+ &.#{$state} > th {
385
+ background-color: $background;
386
+ border-color: $border;
387
+ }
388
+ }
389
+
390
+ // Hover states for `.table-hover`
391
+ // Note: this is not available for cells or rows within `thead` or `tfoot`.
392
+ .table-hover > tbody > tr {
393
+ > td.#{$state}:hover,
394
+ > th.#{$state}:hover,
395
+ &.#{$state}:hover > td {
396
+ background-color: darken($background, 5%);
397
+ border-color: darken($border, 5%);
398
+ }
399
+ }
400
+ }
401
+
402
+ // Button variants
403
+ // -------------------------
404
+ // Easily pump out default styles, as well as :hover, :focus, :active,
405
+ // and disabled options for all buttons
406
+ @mixin button-variant($color, $background, $border) {
407
+ color: $color;
408
+ background-color: $background;
409
+ border-color: $border;
410
+
411
+ &:hover,
412
+ &:focus,
413
+ &:active,
414
+ &.active {
415
+ color: $color;
416
+ background-color: darken($background, 8%);
417
+ border-color: darken($border, 12%);
418
+ }
419
+ .open & { &.dropdown-toggle {
420
+ color: $color;
421
+ background-color: darken($background, 8%);
422
+ border-color: darken($border, 12%);
423
+ } }
424
+ &:active,
425
+ &.active {
426
+ background-image: none;
427
+ }
428
+ .open & { &.dropdown-toggle {
429
+ background-image: none;
430
+ } }
431
+ &.disabled,
432
+ &[disabled],
433
+ fieldset[disabled] & {
434
+ &,
435
+ &:hover,
436
+ &:focus,
437
+ &:active,
438
+ &.active {
439
+ background-color: $background;
440
+ border-color: $border
441
+ }
442
+ }
443
+ }
444
+
445
+ // Button sizes
446
+ // -------------------------
447
+ @mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
448
+ padding: $padding-vertical $padding-horizontal;
449
+ font-size: $font-size;
450
+ line-height: $line-height;
451
+ border-radius: $border-radius;
452
+ }
453
+
454
+ // Pagination
455
+ // -------------------------
456
+ @mixin pagination-size($padding-vertical, $padding-horizontal, $font-size, $border-radius) {
457
+ > li {
458
+ > a,
459
+ > span {
460
+ padding: $padding-vertical $padding-horizontal;
461
+ font-size: $font-size;
462
+ }
463
+ &:first-child {
464
+ > a,
465
+ > span {
466
+ @include border-left-radius($border-radius);
467
+ }
468
+ }
469
+ &:last-child {
470
+ > a,
471
+ > span {
472
+ @include border-right-radius($border-radius);
473
+ }
474
+ }
475
+ }
476
+ }
477
+
478
+ // Labels
479
+ // -------------------------
480
+ @mixin label-variant($color) {
481
+ background-color: $color;
482
+ &[href] {
483
+ &:hover,
484
+ &:focus {
485
+ background-color: darken($color, 10%);
486
+ }
487
+ }
488
+ }
489
+
490
+ // Navbar vertical align
491
+ // -------------------------
492
+ // Vertically center elements in the navbar.
493
+ // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.
494
+ @mixin navbar-vertical-align($element-height) {
495
+ margin-top: (($navbar-height - $element-height) / 2);
496
+ margin-bottom: (($navbar-height - $element-height) / 2);
497
+ }
498
+
499
+ // Progress bars
500
+ // -------------------------
501
+ @mixin progress-bar-variant($color) {
502
+ background-color: $color;
503
+ .progress-striped & {
504
+ @include gradient-striped($color);
505
+ }
506
+ }
507
+
508
+ // Responsive utilities
509
+ // -------------------------
510
+ // More easily include all the states for responsive-utilities.less.
511
+ // [converter] $parent hack
512
+ @mixin responsive-visibility($parent) {
513
+ #{$parent} { display: block !important; }
514
+ tr#{$parent} { display: table-row !important; }
515
+ th#{$parent},
516
+ td#{$parent} { display: table-cell !important; }
517
+ }
518
+
519
+ // [converter] $parent hack
520
+ @mixin responsive-invisibility($parent) {
521
+ #{$parent} { display: none !important; }
522
+ tr#{$parent} { display: none !important; }
523
+ th#{$parent},
524
+ td#{$parent} { display: none !important; }
525
+ }
526
+
527
+ // Grid System
528
+ // -----------
529
+
530
+ // Centered container element
531
+ @mixin container-fixed() {
532
+ margin-right: auto;
533
+ margin-left: auto;
534
+ padding-left: ($grid-gutter-width / 2);
535
+ padding-right: ($grid-gutter-width / 2);
536
+ @include clearfix();
537
+ }
538
+
539
+ // Creates a wrapper for a series of columns
540
+ @mixin make-row($gutter: $grid-gutter-width) {
541
+ margin-left: ($gutter / -2);
542
+ margin-right: ($gutter / -2);
543
+ @include clearfix();
544
+ }
545
+
546
+ // Generate the extra small columns
547
+ @mixin make-xs-column($columns, $gutter: $grid-gutter-width) {
548
+ position: relative;
549
+ float: left;
550
+ width: percentage(($columns / $grid-columns));
551
+ // Prevent columns from collapsing when empty
552
+ min-height: 1px;
553
+ // Inner gutter via padding
554
+ padding-left: ($gutter / 2);
555
+ padding-right: ($gutter / 2);
556
+ }
557
+
558
+ // Generate the small columns
559
+ @mixin make-sm-column($columns, $gutter: $grid-gutter-width) {
560
+ position: relative;
561
+ // Prevent columns from collapsing when empty
562
+ min-height: 1px;
563
+ // Inner gutter via padding
564
+ padding-left: ($gutter / 2);
565
+ padding-right: ($gutter / 2);
566
+
567
+ // Calculate width based on number of columns available
568
+ @media (min-width: $screen-sm) {
569
+ float: left;
570
+ width: percentage(($columns / $grid-columns));
571
+ }
572
+ }
573
+
574
+ // Generate the small column offsets
575
+ @mixin make-sm-column-offset($columns) {
576
+ @media (min-width: $screen-sm) {
577
+ margin-left: percentage(($columns / $grid-columns));
578
+ }
579
+ }
580
+ @mixin make-sm-column-push($columns) {
581
+ @media (min-width: $screen-sm) {
582
+ left: percentage(($columns / $grid-columns));
583
+ }
584
+ }
585
+ @mixin make-sm-column-pull($columns) {
586
+ @media (min-width: $screen-sm) {
587
+ right: percentage(($columns / $grid-columns));
588
+ }
589
+ }
590
+
591
+ // Generate the medium columns
592
+ @mixin make-md-column($columns, $gutter: $grid-gutter-width) {
593
+ position: relative;
594
+ // Prevent columns from collapsing when empty
595
+ min-height: 1px;
596
+ // Inner gutter via padding
597
+ padding-left: ($gutter / 2);
598
+ padding-right: ($gutter / 2);
599
+
600
+ // Calculate width based on number of columns available
601
+ @media (min-width: $screen-md) {
602
+ float: left;
603
+ width: percentage(($columns / $grid-columns));
604
+ }
605
+ }
606
+
607
+ // Generate the large column offsets
608
+ @mixin make-md-column-offset($columns) {
609
+ @media (min-width: $screen-md) {
610
+ margin-left: percentage(($columns / $grid-columns));
611
+ }
612
+ }
613
+ @mixin make-md-column-push($columns) {
614
+ @media (min-width: $screen-md) {
615
+ left: percentage(($columns / $grid-columns));
616
+ }
617
+ }
618
+ @mixin make-md-column-pull($columns) {
619
+ @media (min-width: $screen-md) {
620
+ right: percentage(($columns / $grid-columns));
621
+ }
622
+ }
623
+
624
+ // Generate the large columns
625
+ @mixin make-lg-column($columns, $gutter: $grid-gutter-width) {
626
+ position: relative;
627
+ // Prevent columns from collapsing when empty
628
+ min-height: 1px;
629
+ // Inner gutter via padding
630
+ padding-left: ($gutter / 2);
631
+ padding-right: ($gutter / 2);
632
+
633
+ // Calculate width based on number of columns available
634
+ @media (min-width: $screen-lg) {
635
+ float: left;
636
+ width: percentage(($columns / $grid-columns));
637
+ }
638
+ }
639
+
640
+ // Generate the large column offsets
641
+ @mixin make-lg-column-offset($columns) {
642
+ @media (min-width: $screen-lg) {
643
+ margin-left: percentage(($columns / $grid-columns));
644
+ }
645
+ }
646
+ @mixin make-lg-column-push($columns) {
647
+ @media (min-width: $screen-lg) {
648
+ left: percentage(($columns / $grid-columns));
649
+ }
650
+ }
651
+ @mixin make-lg-column-pull($columns) {
652
+ @media (min-width: $screen-lg) {
653
+ right: percentage(($columns / $grid-columns));
654
+ }
655
+ }
656
+
657
+
658
+ // Form validation states
659
+ //
660
+ // Used in forms.less to generate the form validation CSS for warnings, errors,
661
+ // and successes.
662
+
663
+ @mixin form-control-validation($text-color: #555, $border-color: #ccc, $background-color: #f5f5f5) {
664
+ // Color the label and help text
665
+ .help-block,
666
+ .control-label {
667
+ color: $text-color;
668
+ }
669
+ // Set the border and box shadow on specific inputs to match
670
+ .form-control {
671
+ border-color: $border-color;
672
+ @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
673
+ &:focus {
674
+ border-color: darken($border-color, 10%);
675
+ $shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten($border-color, 20%);
676
+ @include box-shadow($shadow);
677
+ }
678
+ }
679
+ // Set validation states also for addons
680
+ .input-group-addon {
681
+ color: $text-color;
682
+ border-color: $border-color;
683
+ background-color: $background-color;
684
+ }
685
+ }
686
+
687
+ // Form control focus state
688
+ //
689
+ // Generate a customized focus state and for any input with the specified color,
690
+ // which defaults to the `$input-focus-border` variable.
691
+ //
692
+ // We highly encourage you to not customize the default value, but instead use
693
+ // this to tweak colors on an as-needed basis. This aesthetic change is based on
694
+ // WebKit's default styles, but applicable to a wider range of browsers. Its
695
+ // usability and accessibility should be taken into account with any change.
696
+ //
697
+ // Example usage: change the default blue border and shadow to white for better
698
+ // contrast against a dark gray background.
699
+
700
+ @mixin form-control-focus($color: $input-border-focus) {
701
+ $color-rgba: rgba(red($color), green($color), blue($color), .6);
702
+ &:focus {
703
+ border-color: $color;
704
+ outline: 0;
705
+ @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px $color-rgba);
706
+ }
707
+ }
708
+
709
+ // Form control sizing
710
+ //
711
+ // Relative text size, padding, and border-radii changes for form controls. For
712
+ // horizontal sizing, wrap controls in the predefined grid classes. `<select>`
713
+ // element gets special love because it's special, and that's a fact!
714
+
715
+ // [converter] $parent hack
716
+ @mixin input-size($parent, $input-height, $padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
717
+ #{$parent} { height: $input-height;
718
+ padding: $padding-vertical $padding-horizontal;
719
+ font-size: $font-size;
720
+ line-height: $line-height;
721
+ border-radius: $border-radius; }
722
+ select#{$parent} {
723
+ height: $input-height;
724
+ line-height: $input-height;
725
+ }
726
+
727
+ textarea#{$parent} {
728
+ height: auto;
729
+ }
730
+ }
content/assets/css/bootstrap/_modals.scss ADDED
@@ -0,0 +1,146 @@
1
+ //
2
+ // Modals
3
+ // --------------------------------------------------
4
+
5
+ // .modal-open - body class for killing the scroll
6
+ // .modal - container to scroll within
7
+ // .modal-dialog - positioning shell for the actual modal
8
+ // .modal-content - actual modal w/ bg and corners and shit
9
+
10
+ // Kill the scroll on the body
11
+ .modal-open {
12
+ overflow: hidden;
13
+
14
+
15
+ // Account for hiding of scrollbar
16
+
17
+ .navbar-fixed-top,
18
+ .navbar-fixed-bottom {
19
+ margin-right: 15px
20
+ }
21
+ // [converter] extracted body& to body.modal-open
22
+ }
23
+
24
+ body.modal-open {
25
+ margin-right: 15px
26
+ }
27
+
28
+ // Container that the modal scrolls within
29
+ .modal {
30
+ display: none;
31
+ overflow: auto;
32
+ overflow-y: scroll;
33
+ position: fixed;
34
+ top: 0;
35
+ right: 0;
36
+ bottom: 0;
37
+ left: 0;
38
+ z-index: $zindex-modal-background;
39
+
40
+ // When fading in the modal, animate it to slide down
41
+ &.fade .modal-dialog {
42
+ @include translate(0, -25%);
43
+ @include transition-transform(0.3s ease-out);
44
+ }
45
+ &.in .modal-dialog { @include translate(0, 0)}
46
+ }
47
+
48
+ // Shell div to position the modal with bottom padding
49
+ .modal-dialog {
50
+ margin-left: auto;
51
+ margin-right: auto;
52
+ width: auto;
53
+ padding: 10px;
54
+ z-index: ($zindex-modal-background + 10);
55
+ }
56
+
57
+ // Actual modal
58
+ .modal-content {
59
+ position: relative;
60
+ background-color: $modal-content-bg;
61
+ border: 1px solid $modal-content-fallback-border-color; //old browsers fallback (ie8 etc)
62
+ border: 1px solid $modal-content-border-color;
63
+ border-radius: $border-radius-large;
64
+ @include box-shadow(0 3px 9px rgba(0,0,0,.5));
65
+ background-clip: padding-box;
66
+ // Remove focus outline from opened modal
67
+ outline: none;
68
+ }
69
+
70
+ // Modal background
71
+ .modal-backdrop {
72
+ position: fixed;
73
+ top: 0;
74
+ right: 0;
75
+ bottom: 0;
76
+ left: 0;
77
+ z-index: ($zindex-modal-background - 10);
78
+ background-color: $modal-backdrop-bg;
79
+ // Fade for backdrop
80
+ &.fade { @include opacity(0); }
81
+ &.in { @include opacity(.5); }
82
+ }
83
+
84
+ // Modal header
85
+ // Top section of the modal w/ title and dismiss
86
+ .modal-header {
87
+ padding: $modal-title-padding;
88
+ border-bottom: 1px solid $modal-header-border-color;
89
+ min-height: ($modal-title-padding + $modal-title-line-height);
90
+ }
91
+ // Close icon
92
+ .modal-header .close {
93
+ margin-top: -2px;
94
+ }
95
+
96
+ // Title text within header
97
+ .modal-title {
98
+ margin: 0;
99
+ line-height: $modal-title-line-height;
100
+ }
101
+
102
+ // Modal body
103
+ // Where all modal content resides (sibling of .modal-header and .modal-footer)
104
+ .modal-body {
105
+ position: relative;
106
+ padding: $modal-inner-padding;
107
+ }
108
+
109
+ // Footer (for actions)
110
+ .modal-footer {
111
+ margin-top: 15px;
112
+ padding: ($modal-inner-padding - 1) $modal-inner-padding $modal-inner-padding;
113
+ text-align: right; // right align buttons
114
+ border-top: 1px solid $modal-footer-border-color;
115
+ @include clearfix(); // clear it in case folks use .pull-* classes on buttons
116
+
117
+ // Properly space out buttons
118
+ .btn + .btn {
119
+ margin-left: 5px;
120
+ margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
121
+ }
122
+ // but override that for button groups
123
+ .btn-group .btn + .btn {
124
+ margin-left: -1px;
125
+ }
126
+ // and override it for block buttons as well
127
+ .btn-block + .btn-block {
128
+ margin-left: 0;
129
+ }
130
+ }
131
+
132
+ // Scale up the modal
133
+ @media screen and (min-width: $screen-tablet) {
134
+
135
+ .modal-dialog {
136
+ left: 50%;
137
+ right: auto;
138
+ width: 600px;
139
+ padding-top: 30px;
140
+ padding-bottom: 30px;
141
+ }
142
+ .modal-content {
143
+ @include box-shadow(0 5px 15px rgba(0,0,0,.5));
144
+ }
145
+
146
+ }
content/assets/css/bootstrap/_navbar.scss ADDED
@@ -0,0 +1,625 @@
1
+ //
2
+ // Navbars
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Wrapper and base class
7
+ //
8
+ // Provide a static navbar from which we expand to create full-width, fixed, and
9
+ // other navbar variations.
10
+
11
+ .navbar {
12
+ position: relative;
13
+ z-index: $zindex-navbar;
14
+ min-height: $navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)
15
+ margin-bottom: $navbar-margin-bottom;
16
+ border: 1px solid transparent;
17
+
18
+ // Prevent floats from breaking the navbar
19
+ @include clearfix();
20
+
21
+ @media (min-width: $grid-float-breakpoint) {
22
+ border-radius: $navbar-border-radius;
23
+ }
24
+ }
25
+
26
+
27
+ // Navbar heading
28
+ //
29
+ // Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy
30
+ // styling of responsive aspects.
31
+
32
+ .navbar-header {
33
+ @include clearfix();
34
+
35
+ @media (min-width: $grid-float-breakpoint) {
36
+ float: left;
37
+ }
38
+ }
39
+
40
+
41
+ // Navbar collapse (body)
42
+ //
43
+ // Group your navbar content into this for easy collapsing and expanding across
44
+ // various device sizes. By default, this content is collapsed when <768px, but
45
+ // will expand past that for a horizontal display.
46
+ //
47
+ // To start (on mobile devices) the navbar links, forms, and buttons are stacked
48
+ // vertically and include a `max-height` to overflow in case you have too much
49
+ // content for the user's viewport.
50
+
51
+ .navbar-collapse {
52
+ max-height: 340px;
53
+ overflow-x: visible;
54
+ padding-right: $navbar-padding-horizontal;
55
+ padding-left: $navbar-padding-horizontal;
56
+ border-top: 1px solid transparent;
57
+ box-shadow: inset 0 1px 0 rgba(255,255,255,.1);
58
+ @include clearfix();
59
+ -webkit-overflow-scrolling: touch;
60
+
61
+ &.in {
62
+ overflow-y: auto;
63
+ }
64
+
65
+ @media (min-width: $grid-float-breakpoint) {
66
+ width: auto;
67
+ border-top: 0;
68
+ box-shadow: none;
69
+
70
+ &.collapse {
71
+ display: block !important;
72
+ height: auto !important;
73
+ padding-bottom: 0; // Override default setting
74
+ overflow: visible !important;
75
+ }
76
+
77
+ &.in {
78
+ overflow-y: visible;
79
+ }
80
+
81
+ // Account for first and last children spacing
82
+ .navbar-nav.navbar-left:first-child {
83
+ margin-left: -$navbar-padding-horizontal;
84
+ }
85
+ .navbar-nav.navbar-right:last-child {
86
+ margin-right: -$navbar-padding-horizontal;
87
+ }
88
+ .navbar-text:last-child {
89
+ margin-right: 0;
90
+ }
91
+ }
92
+ }
93
+
94
+
95
+ // Both navbar header and collapse
96
+ //
97
+ // When a container is present, change the behavior of the header and collapse.
98
+
99
+ .container > .navbar-header,
100
+ .container > .navbar-collapse {
101
+ margin-right: -$navbar-padding-horizontal;
102
+ margin-left: -$navbar-padding-horizontal;
103
+
104
+ @media (min-width: $grid-float-breakpoint) {
105
+ margin-right: 0;
106
+ margin-left: 0;
107
+ }
108
+ }
109
+
110
+
111
+ //
112
+ // Navbar alignment options
113
+ //
114
+ // Display the navbar across the entirity of the page or fixed it to the top or
115
+ // bottom of the page.
116
+
117
+ // Static top (unfixed, but 100% wide) navbar
118
+ .navbar-static-top {
119
+ border-width: 0 0 1px;
120
+ @media (min-width: $grid-float-breakpoint) {
121
+ border-radius: 0;
122
+ }
123
+ }
124
+
125
+ // Fix the top/bottom navbars when screen real estate supports it
126
+ .navbar-fixed-top,
127
+ .navbar-fixed-bottom {
128
+ position: fixed;
129
+ right: 0;
130
+ left: 0;
131
+ border-width: 0 0 1px;
132
+
133
+ // Undo the rounded corners
134
+ @media (min-width: $grid-float-breakpoint) {
135
+ border-radius: 0;
136
+ }
137
+ }
138
+ .navbar-fixed-top {
139
+ z-index: $zindex-navbar-fixed;
140
+ top: 0;
141
+ }
142
+ .navbar-fixed-bottom {
143
+ bottom: 0;
144
+ margin-bottom: 0; // override .navbar defaults
145
+ }
146
+
147
+
148
+ // Brand/project name
149
+
150
+ .navbar-brand {
151
+ float: left;
152
+ padding: $navbar-padding-vertical $navbar-padding-horizontal;
153
+ font-size: $font-size-large;
154
+ line-height: $line-height-computed;
155
+ &:hover,
156
+ &:focus {
157
+ text-decoration: none;
158
+ }
159
+
160
+ @media (min-width: $grid-float-breakpoint) {
161
+ .navbar > .container & {
162
+ margin-left: -$navbar-padding-horizontal;
163
+ }
164
+ }
165
+ }
166
+
167
+
168
+ // Navbar toggle
169
+ //
170
+ // Custom button for toggling the `.navbar-collapse`, powered by the collapse
171
+ // JavaScript plugin.
172
+
173
+ .navbar-toggle {
174
+ position: relative;
175
+ float: right;
176
+ margin-right: $navbar-padding-horizontal;
177
+ padding: 9px 10px;
178
+ @include navbar-vertical-align(34px);
179
+ background-color: transparent;
180
+ border: 1px solid transparent;
181
+ border-radius: $border-radius-base;
182
+
183
+ // Bars
184
+ .icon-bar {
185
+ display: block;
186
+ width: 22px;
187
+ height: 2px;
188
+ border-radius: 1px;
189
+ }
190
+ .icon-bar + .icon-bar {
191
+ margin-top: 4px;
192
+ }
193
+
194
+ @media (min-width: $grid-float-breakpoint) {
195
+ display: none;
196
+ }
197
+ }
198
+
199
+
200
+ // Navbar nav links
201
+ //
202
+ // Builds on top of the `.nav` components with it's own modifier class to make
203
+ // the nav the full height of the horizontal nav (above 768px).
204
+
205
+ .navbar-nav {
206
+ margin: ($navbar-padding-vertical / 2) (-$navbar-padding-horizontal);
207
+
208
+ > li > a {
209
+ padding-top: 10px;
210
+ padding-bottom: 10px;
211
+ line-height: $line-height-computed;
212
+ }
213
+
214
+ @media (max-width: $screen-xs-max) {
215
+ // Dropdowns get custom display when collapsed
216
+ .open .dropdown-menu {
217
+ position: static;
218
+ float: none;
219
+ width: auto;
220
+ margin-top: 0;
221
+ background-color: transparent;
222
+ border: 0;
223
+ box-shadow: none;
224
+ > li > a,
225
+ .dropdown-header {
226
+ padding: 5px 15px 5px 25px;
227
+ }
228
+ > li > a {
229
+ line-height: $line-height-computed;
230
+ &:hover,
231
+ &:focus {
232
+ background-image: none;
233
+ }
234
+ }
235
+ }
236
+ }
237
+
238
+ // Uncollapse the nav
239
+ @media (min-width: $grid-float-breakpoint) {
240
+ float: left;
241
+ margin: 0;
242
+
243
+ > li {
244
+ float: left;
245
+ > a {
246
+ padding-top: (($navbar-height - $line-height-computed) / 2);
247
+ padding-bottom: (($navbar-height - $line-height-computed) / 2);
248
+ }
249
+ }
250
+ }
251
+
252
+ }
253
+
254
+
255
+ // Component alignment
256
+ //
257
+ // Repurpose the pull utilities as their own navbar utilities to avoid specifity
258
+ // issues with parents and chaining. Only do this when the navbar is uncollapsed
259
+ // though so that navbar contents properly stack and align in mobile.
260
+
261
+ @media (min-width: $grid-float-breakpoint) {
262
+ .navbar-left {
263
+ float: left !important;
264
+ }
265
+ .navbar-right {
266
+ float: right !important;
267
+ }
268
+ }
269
+
270
+
271
+ // Navbar form
272
+ //
273
+ // Extension of the `.form-inline` with some extra flavor for optimum display in
274
+ // our navbars.
275
+
276
+ .navbar-form {
277
+ margin-left: -$navbar-padding-horizontal;
278
+ margin-right: -$navbar-padding-horizontal;
279
+ padding: 10px $navbar-padding-horizontal;
280
+ border-top: 1px solid transparent;
281
+ border-bottom: 1px solid transparent;
282
+ $shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);
283
+ @include box-shadow($shadow);
284
+
285
+ // Mixin behavior for optimum display
286
+ @extend .form-inline;
287
+
288
+ .form-group {
289
+ @media (max-width: $screen-xs-max) {
290
+ margin-bottom: 5px;
291
+ }
292
+ }
293
+
294
+ // Vertically center in expanded, horizontal navbar
295
+ @include navbar-vertical-align($input-height-base);
296
+
297
+ // Undo 100% width for pull classes
298
+ @media (min-width: $grid-float-breakpoint) {
299
+ width: auto;
300
+ border: 0;
301
+ margin-left: 0;
302
+ margin-right: 0;
303
+ padding-top: 0;
304
+ padding-bottom: 0;
305
+ @include box-shadow(none);
306
+ }
307
+ }
308
+
309
+
310
+ // Dropdown menus
311
+
312
+ // Menu position and menu carets
313
+ .navbar-nav > li > .dropdown-menu {
314
+ margin-top: 0;
315
+ @include border-top-radius(0);
316
+ }
317
+ // Menu position and menu caret support for dropups via extra dropup class
318
+ .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
319
+ @include border-bottom-radius(0);
320
+ }
321
+
322
+ // Right aligned menus need alt position
323
+ .navbar-nav.pull-right > li > .dropdown-menu,
324
+ .navbar-nav > li > .dropdown-menu.pull-right {
325
+ left: auto;
326
+ right: 0;
327
+ }
328
+
329
+
330
+ // Buttons in navbars
331
+ //
332
+ // Vertically center a button within a navbar (when *not* in a form).
333
+
334
+ .navbar-btn {
335
+ @include navbar-vertical-align($input-height-base);
336
+ }
337
+
338
+
339
+ // Text in navbars
340
+ //
341
+ // Add a class to make any element properly align itself vertically within the navbars.
342
+
343
+ .navbar-text {
344
+ float: left;
345
+ @include navbar-vertical-align($line-height-computed);
346
+
347
+ @media (min-width: $grid-float-breakpoint) {
348
+ margin-left: $navbar-padding-horizontal;
349
+ margin-right: $navbar-padding-horizontal;
350
+ }
351
+ }
352
+
353
+ // Alternate navbars
354
+ // --------------------------------------------------
355
+
356
+ // Default navbar
357
+ .navbar-default {
358
+ background-color: $navbar-default-bg;
359
+ border-color: $navbar-default-border;
360
+
361
+ .navbar-brand {
362
+ color: $navbar-default-brand-color;
363
+ &:hover,
364
+ &:focus {
365
+ color: $navbar-default-brand-hover-color;
366
+ background-color: $navbar-default-brand-hover-bg;
367
+ }
368
+ }
369
+
370
+ .navbar-text {
371
+ color: $navbar-default-color;
372
+ }
373
+
374
+ .navbar-nav {
375
+ > li > a {
376
+ color: $navbar-default-link-color;
377
+
378
+ &:hover,
379
+ &:focus {
380
+ color: $navbar-default-link-hover-color;
381
+ background-color: $navbar-default-link-hover-bg;
382
+ }
383
+ }
384
+ > .active > a {
385
+ &,
386
+ &:hover,
387
+ &:focus {
388
+ color: $navbar-default-link-active-color;
389
+ background-color: $navbar-default-link-active-bg;
390
+ }
391
+ }
392
+ > .disabled > a {
393
+ &,
394
+ &:hover,
395
+ &:focus {
396
+ color: $navbar-default-link-disabled-color;
397
+ background-color: $navbar-default-link-disabled-bg;
398
+ }
399
+ }
400
+ }
401
+
402
+ .navbar-toggle {
403
+ border-color: $navbar-default-toggle-border-color;
404
+ &:hover,
405
+ &:focus {
406
+ background-color: $navbar-default-toggle-hover-bg;
407
+ }
408
+ .icon-bar {
409
+ background-color: $navbar-default-toggle-icon-bar-bg;
410
+ }
411
+ }
412
+
413
+ .navbar-collapse,
414
+ .navbar-form {
415
+ border-color: darken($navbar-default-bg, 7%);
416
+ }
417
+
418
+ // Dropdown menu items and carets
419
+ .navbar-nav {
420
+ // Caret should match text color on hover
421
+ > .dropdown > a:hover .caret,
422
+ > .dropdown > a:focus .caret {
423
+ border-top-color: $navbar-default-link-hover-color;
424
+ border-bottom-color: $navbar-default-link-hover-color;
425
+ }
426
+
427
+ // Remove background color from open dropdown
428
+ > .open > a {
429
+ &,
430
+ &:hover,
431
+ &:focus {
432
+ background-color: $navbar-default-link-active-bg;
433
+ color: $navbar-default-link-active-color;
434
+ .caret {
435
+ border-top-color: $navbar-default-link-active-color;
436
+ border-bottom-color: $navbar-default-link-active-color;
437
+ }
438
+ }
439
+ }
440
+ > .dropdown > a .caret {
441
+ border-top-color: $navbar-default-link-color;
442
+ border-bottom-color: $navbar-default-link-color;
443
+ }
444
+
445
+
446
+ @media (max-width: $screen-xs-max) {
447
+ // Dropdowns get custom display when collapsed
448
+ .open .dropdown-menu {
449
+ > li > a {
450
+ color: $navbar-default-link-color;
451
+ &:hover,
452
+ &:focus {
453
+ color: $navbar-default-link-hover-color;
454
+ background-color: $navbar-default-link-hover-bg;
455
+ }
456
+ }
457
+ > .active > a {
458
+ &,
459
+ &:hover,
460
+ &:focus {
461
+ color: $navbar-default-link-active-color;
462
+ background-color: $navbar-default-link-active-bg;
463
+ }
464
+ }
465
+ > .disabled > a {
466
+ &,
467
+ &:hover,
468
+ &:focus {
469
+ color: $navbar-default-link-disabled-color;
470
+ background-color: $navbar-default-link-disabled-bg;
471
+ }
472
+ }
473
+ }
474
+ }
475
+ }
476
+
477
+
478
+ // Links in navbars
479
+ //
480
+ // Add a class to ensure links outside the navbar nav are colored correctly.
481
+
482
+ .navbar-link {
483
+ color: $navbar-default-link-color;
484
+ &:hover {
485
+ color: $navbar-default-link-hover-color;
486
+ }
487
+ }
488
+
489
+ }
490
+
491
+ // Inverse navbar
492
+
493
+ .navbar-inverse {
494
+ background-color: $navbar-inverse-bg;
495
+ border-color: $navbar-inverse-border;
496
+
497
+ .navbar-brand {
498
+ color: $navbar-inverse-brand-color;
499
+ &:hover,
500
+ &:focus {
501
+ color: $navbar-inverse-brand-hover-color;
502
+ background-color: $navbar-inverse-brand-hover-bg;
503
+ }
504
+ }
505
+
506
+ .navbar-text {
507
+ color: $navbar-inverse-color;
508
+ }
509
+
510
+ .navbar-nav {
511
+ > li > a {
512
+ color: $navbar-inverse-link-color;
513
+
514
+ &:hover,
515
+ &:focus {
516
+ color: $navbar-inverse-link-hover-color;
517
+ background-color: $navbar-inverse-link-hover-bg;
518
+ }
519
+ }
520
+ > .active > a {
521
+ &,
522
+ &:hover,
523
+ &:focus {
524
+ color: $navbar-inverse-link-active-color;
525
+ background-color: $navbar-inverse-link-active-bg;
526
+ }
527
+ }
528
+ > .disabled > a {
529
+ &,
530
+ &:hover,
531
+ &:focus {
532
+ color: $navbar-inverse-link-disabled-color;
533
+ background-color: $navbar-inverse-link-disabled-bg;
534
+ }
535
+ }
536
+ }
537
+
538
+ // Darken the responsive nav toggle
539
+ .navbar-toggle {
540
+ border-color: $navbar-inverse-toggle-border-color;
541
+ &:hover,
542
+ &:focus {
543
+ background-color: $navbar-inverse-toggle-hover-bg;
544
+ }
545
+ .icon-bar {
546
+ background-color: $navbar-inverse-toggle-icon-bar-bg;
547
+ }
548
+ }
549
+
550
+ .navbar-collapse,
551
+ .navbar-form {
552
+ border-color: darken($navbar-inverse-bg, 7%);
553
+ }
554
+
555
+ // Dropdowns
556
+ .navbar-nav {
557
+ > .open > a {
558
+ &,
559
+ &:hover,
560
+ &:focus {
561
+ background-color: $navbar-inverse-link-active-bg;
562
+ color: $navbar-inverse-link-active-color;
563
+ }
564
+ }
565
+ > .dropdown > a:hover .caret {
566
+ border-top-color: $navbar-inverse-link-hover-color;
567
+ border-bottom-color: $navbar-inverse-link-hover-color;
568
+ }
569
+ > .dropdown > a .caret {
570
+ border-top-color: $navbar-inverse-link-color;
571
+ border-bottom-color: $navbar-inverse-link-color;
572
+ }
573
+ > .open > a {
574
+ &,
575
+ &:hover,
576
+ &:focus {
577
+ .caret {
578
+ border-top-color: $navbar-inverse-link-active-color;
579
+ border-bottom-color: $navbar-inverse-link-active-color;
580
+ }
581
+ }
582
+ }
583
+
584
+ @media (max-width: $screen-xs-max) {
585
+ // Dropdowns get custom display
586
+ .open .dropdown-menu {
587
+ > .dropdown-header {
588
+ border-color: $navbar-inverse-border;
589
+ }
590
+ > li > a {
591
+ color: $navbar-inverse-link-color;
592
+ &:hover,
593
+ &:focus {
594
+ color: $navbar-inverse-link-hover-color;
595
+ background-color: $navbar-inverse-link-hover-bg;
596
+ }
597
+ }
598
+ > .active > a {
599
+ &,
600
+ &:hover,
601
+ &:focus {
602
+ color: $navbar-inverse-link-active-color;
603
+ background-color: $navbar-inverse-link-active-bg;
604
+ }
605
+ }
606
+ > .disabled > a {
607
+ &,
608
+ &:hover,
609
+ &:focus {
610
+ color: $navbar-inverse-link-disabled-color;
611
+ background-color: $navbar-inverse-link-disabled-bg;
612
+ }
613
+ }
614
+ }
615
+ }
616
+ }
617
+
618
+ .navbar-link {
619
+ color: $navbar-inverse-link-color;
620
+ &:hover {
621
+ color: $navbar-inverse-link-hover-color;
622
+ }
623
+ }
624
+
625
+ }
content/assets/css/bootstrap/_navs.scss ADDED
@@ -0,0 +1,229 @@
1
+ //
2
+ // Navs
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Base class
7
+ // --------------------------------------------------
8
+
9
+ .nav {
10
+ margin-bottom: 0;
11
+ padding-left: 0; // Override default ul/ol
12
+ list-style: none;
13
+ @include clearfix();
14
+
15
+ > li {
16
+ position: relative;
17
+ display: block;
18
+
19
+ > a {
20
+ position: relative;
21
+ display: block;
22
+ padding: $nav-link-padding;
23
+ &:hover,
24
+ &:focus {
25
+ text-decoration: none;
26
+ background-color: $nav-link-hover-bg;
27
+ }
28
+ }
29
+
30
+ // Disabled state sets text to gray and nukes hover/tab effects
31
+ &.disabled > a {
32
+ color: $nav-disabled-link-color;
33
+
34
+ &:hover,
35
+ &:focus {
36
+ color: $nav-disabled-link-hover-color;
37
+ text-decoration: none;
38
+ background-color: transparent;
39
+ cursor: not-allowed;
40
+ }
41
+ }
42
+ }
43
+
44
+ // Open dropdowns
45
+ .open > a {
46
+ &,
47
+ &:hover,
48
+ &:focus {
49
+ background-color: $nav-link-hover-bg;
50
+ border-color: $link-color;
51
+ }
52
+ }
53
+
54
+ // Dividers (basically an hr) within the dropdown
55
+ .nav-divider {
56
+ @include nav-divider();
57
+ }
58
+
59
+ // Prevent IE8 from misplacing imgs
60
+ // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989
61
+ > li > a > img {
62
+ max-width: none;
63
+ }
64
+ }
65
+
66
+
67
+ // Tabs
68
+ // -------------------------
69
+
70
+ // Give the tabs something to sit on
71
+ .nav-tabs {
72
+ border-bottom: 1px solid $nav-tabs-border-color;
73
+ > li {
74
+ float: left;
75
+ // Make the list-items overlay the bottom border
76
+ margin-bottom: -1px;
77
+
78
+ // Actual tabs (as links)
79
+ > a {
80
+ margin-right: 2px;
81
+ line-height: $line-height-base;
82
+ border: 1px solid transparent;
83
+ border-radius: $border-radius-base $border-radius-base 0 0;
84
+ &:hover {
85
+ border-color: $nav-tabs-link-hover-border-color $nav-tabs-link-hover-border-color $nav-tabs-border-color;
86
+ }
87
+ }
88
+
89
+ // Active state, and it's :hover to override normal :hover
90
+ &.active > a {
91
+ &,
92
+ &:hover,
93
+ &:focus {
94
+ color: $nav-tabs-active-link-hover-color;
95
+ background-color: $nav-tabs-active-link-hover-bg;
96
+ border: 1px solid $nav-tabs-active-link-hover-border-color;
97
+ border-bottom-color: transparent;
98
+ cursor: default;
99
+ }
100
+ }
101
+ }
102
+ // pulling this in mainly for less shorthand
103
+ &.nav-justified {
104
+ @extend .nav-justified;
105
+ @extend .nav-tabs-justified;
106
+ }
107
+ }
108
+
109
+
110
+ // Pills
111
+ // -------------------------
112
+ .nav-pills {
113
+ > li {
114
+ float: left;
115
+
116
+ // Links rendered as pills
117
+ > a {
118
+ border-radius: 5px;
119
+ }
120
+ + li {
121
+ margin-left: 2px;
122
+ }
123
+
124
+ // Active state
125
+ &.active > a {
126
+ &,
127
+ &:hover,
128
+ &:focus {
129
+ color: $nav-pills-active-link-hover-color;
130
+ background-color: $nav-pills-active-link-hover-bg;
131
+ }
132
+ }
133
+ }
134
+ }
135
+
136
+
137
+ // Stacked pills
138
+ .nav-stacked {
139
+ > li {
140
+ float: none;
141
+ + li {
142
+ margin-top: 2px;
143
+ margin-left: 0; // no need for this gap between nav items
144
+ }
145
+ }
146
+ }
147
+
148
+
149
+ // Nav variations
150
+ // --------------------------------------------------
151
+
152
+ // Justified nav links
153
+ // -------------------------
154
+
155
+ .nav-justified {
156
+ width: 100%;
157
+
158
+ > li {
159
+ float: none;
160
+ > a {
161
+ text-align: center;
162
+ }
163
+ }
164
+
165
+ @media (min-width: $screen-sm) {
166
+ > li {
167
+ display: table-cell;
168
+ width: 1%;
169
+ }
170
+ }
171
+ }
172
+
173
+ // Move borders to anchors instead of bottom of list
174
+ .nav-tabs-justified {
175
+ border-bottom: 0;
176
+ > li > a {
177
+ border-bottom: 1px solid $nav-tabs-justified-link-border-color;
178
+
179
+ // Override margin from .nav-tabs
180
+ margin-right: 0;
181
+ }
182
+ > .active > a {
183
+ border-bottom-color: $nav-tabs-justified-active-link-border-color;
184
+ }
185
+ }
186
+
187
+
188
+ // Tabbable tabs
189
+ // -------------------------
190
+
191
+ // Clear any floats
192
+ .tabbable {
193
+ @include clearfix();
194
+ }
195
+
196
+ // Show/hide tabbable areas
197
+ .tab-content > .tab-pane,
198
+ .pill-content > .pill-pane {
199
+ display: none;
200
+ }
201
+ .tab-content,
202
+ .pill-content {
203
+ > .active {
204
+ display: block;
205
+ }
206
+ }
207
+
208
+
209
+
210
+ // Dropdowns
211
+ // -------------------------
212
+
213
+ // Make dropdown carets use link color in navs
214
+ .nav .caret {
215
+ border-top-color: $link-color;
216
+ border-bottom-color: $link-color;
217
+ }
218
+ .nav a:hover .caret {
219
+ border-top-color: $link-hover-color;
220
+ border-bottom-color: $link-hover-color;
221
+ }
222
+
223
+ // Specific dropdowns
224
+ .nav-tabs .dropdown-menu {
225
+ // make dropdown border overlap tab border
226
+ margin-top: -1px;
227
+ // Remove the top rounded corners here since there is a hard edge above the menu
228
+ @include border-top-radius(0);
229
+ }
content/assets/css/bootstrap/_normalize.scss ADDED
@@ -0,0 +1,396 @@
1
+ /*! normalize.css v2.1.0 | MIT License | git.io/normalize */
2
+
3
+ // ==========================================================================
4
+ // HTML5 display definitions
5
+ // ==========================================================================
6
+
7
+ //
8
+ // Correct `block` display not defined in IE 8/9.
9
+ //
10
+
11
+ article,
12
+ aside,
13
+ details,
14
+ figcaption,
15
+ figure,
16
+ footer,
17
+ header,
18
+ hgroup,
19
+ main,
20
+ nav,
21
+ section,
22
+ summary {
23
+ display: block;
24
+ }
25
+
26
+ //
27
+ // Correct `inline-block` display not defined in IE 8/9.
28
+ //
29
+
30
+ audio,
31
+ canvas,
32
+ video {
33
+ display: inline-block;
34
+ }
35
+
36
+ //
37
+ // Prevent modern browsers from displaying `audio` without controls.
38
+ // Remove excess height in iOS 5 devices.
39
+ //
40
+
41
+ audio:not([controls]) {
42
+ display: none;
43
+ height: 0;
44
+ }
45
+
46
+ //
47
+ // Address styling not present in IE 8/9.
48
+ //
49
+
50
+ [hidden] {
51
+ display: none;
52
+ }
53
+
54
+ // ==========================================================================
55
+ // Base
56
+ // ==========================================================================
57
+
58
+ //
59
+ // 1. Set default font family to sans-serif.
60
+ // 2. Prevent iOS text size adjust after orientation change, without disabling
61
+ // user zoom.
62
+ //
63
+
64
+ html {
65
+ font-family: sans-serif; // 1
66
+ -webkit-text-size-adjust: 100%; // 2
67
+ -ms-text-size-adjust: 100%; // 2
68
+ }
69
+
70
+ //
71
+ // Remove default margin.
72
+ //
73
+
74
+ body {
75
+ margin: 0;
76
+ }
77
+
78
+ // ==========================================================================
79
+ // Links
80
+ // ==========================================================================
81
+
82
+ //
83
+ // Address `outline` inconsistency between Chrome and other browsers.
84
+ //
85
+
86
+ a:focus {
87
+ outline: thin dotted;
88
+ }
89
+
90
+ //
91
+ // Improve readability when focused and also mouse hovered in all browsers.
92
+ //
93
+
94
+ a:active,
95
+ a:hover {
96
+ outline: 0;
97
+ }
98
+
99
+ // ==========================================================================
100
+ // Typography
101
+ // ==========================================================================
102
+
103
+ //
104
+ // Address variable `h1` font-size and margin within `section` and `article`
105
+ // contexts in Firefox 4+, Safari 5, and Chrome.
106
+ //
107
+
108
+ h1 {
109
+ font-size: 2em;
110
+ margin: 0.67em 0;
111
+ }
112
+
113
+ //
114
+ // Address styling not present in IE 8/9, Safari 5, and Chrome.
115
+ //
116
+
117
+ abbr[title] {
118
+ border-bottom: 1px dotted;
119
+ }
120
+
121
+ //
122
+ // Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.
123
+ //
124
+
125
+ b,
126
+ strong {
127
+ font-weight: bold;
128
+ }
129
+
130
+ //
131
+ // Address styling not present in Safari 5 and Chrome.
132
+ //
133
+
134
+ dfn {
135
+ font-style: italic;
136
+ }
137
+
138
+ //
139
+ // Address differences between Firefox and other browsers.
140
+ //
141
+
142
+ hr {
143
+ -moz-box-sizing: content-box;
144
+ box-sizing: content-box;
145
+ height: 0;
146
+ }
147
+
148
+ //
149
+ // Address styling not present in IE 8/9.
150
+ //
151
+
152
+ mark {
153
+ background: #ff0;
154
+ color: #000;
155
+ }
156
+
157
+ //
158
+ // Correct font family set oddly in Safari 5 and Chrome.
159
+ //
160
+
161
+ code,
162
+ kbd,
163
+ pre,
164
+ samp {
165
+ font-family: monospace, serif;
166
+ font-size: 1em;
167
+ }
168
+
169
+ //
170
+ // Improve readability of pre-formatted text in all browsers.
171
+ //
172
+
173
+ pre {
174
+ white-space: pre-wrap;
175
+ }
176
+
177
+ //
178
+ // Set consistent quote types.
179
+ //
180
+
181
+ q {
182
+ quotes: "\201C" "\201D" "\2018" "\2019";
183
+ }
184
+
185
+ //
186
+ // Address inconsistent and variable font size in all browsers.
187
+ //
188
+
189
+ small {
190
+ font-size: 80%;
191
+ }
192
+
193
+ //
194
+ // Prevent `sub` and `sup` affecting `line-height` in all browsers.
195
+ //
196
+
197
+ sub,
198
+ sup {
199
+ font-size: 75%;
200
+ line-height: 0;
201
+ position: relative;
202
+ vertical-align: baseline;
203
+ }
204
+
205
+ sup {
206
+ top: -0.5em;
207
+ }
208
+
209
+ sub {
210
+ bottom: -0.25em;
211
+ }
212
+
213
+ // ==========================================================================
214
+ // Embedded content
215
+ // ==========================================================================
216
+
217
+ //
218
+ // Remove border when inside `a` element in IE 8/9.
219
+ //
220
+
221
+ img {
222
+ border: 0;
223
+ }
224
+
225
+ //
226
+ // Correct overflow displayed oddly in IE 9.
227
+ //
228
+
229
+ svg:not(:root) {
230
+ overflow: hidden;
231
+ }
232
+
233
+ // ==========================================================================
234
+ // Figures
235
+ // ==========================================================================
236
+
237
+ //
238
+ // Address margin not present in IE 8/9 and Safari 5.
239
+ //
240
+
241
+ figure {
242
+ margin: 0;
243
+ }
244
+
245
+ // ==========================================================================
246
+ // Forms
247
+ // ==========================================================================
248
+
249
+ //
250
+ // Define consistent border, margin, and padding.
251
+ //
252
+
253
+ fieldset {
254
+ border: 1px solid #c0c0c0;
255
+ margin: 0 2px;
256
+ padding: 0.35em 0.625em 0.75em;
257
+ }
258
+
259
+ //
260
+ // 1. Correct `color` not being inherited in IE 8/9.
261
+ // 2. Remove padding so people aren't caught out if they zero out fieldsets.
262
+ //
263
+
264
+ legend {
265
+ border: 0; // 1
266
+ padding: 0; // 2
267
+ }
268
+
269
+ //
270
+ // 1. Correct font family not being inherited in all browsers.
271
+ // 2. Correct font size not being inherited in all browsers.
272
+ // 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.
273
+ //
274
+
275
+ button,
276
+ input,
277
+ select,
278
+ textarea {
279
+ font-family: inherit; // 1
280
+ font-size: 100%; // 2
281
+ margin: 0; // 3
282
+ }
283
+
284
+ //
285
+ // Address Firefox 4+ setting `line-height` on `input` using `!important` in
286
+ // the UA stylesheet.
287
+ //
288
+
289
+ button,
290
+ input {
291
+ line-height: normal;
292
+ }
293
+
294
+ //
295
+ // Address inconsistent `text-transform` inheritance for `button` and `select`.
296
+ // All other form control elements do not inherit `text-transform` values.
297
+ // Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+.
298
+ // Correct `select` style inheritance in Firefox 4+ and Opera.
299
+ //
300
+
301
+ button,
302
+ select {
303
+ text-transform: none;
304
+ }
305
+
306
+ //
307
+ // 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
308
+ // and `video` controls.
309
+ // 2. Correct inability to style clickable `input` types in iOS.
310
+ // 3. Improve usability and consistency of cursor style between image-type
311
+ // `input` and others.
312
+ //
313
+
314
+ button,
315
+ html input[type="button"], // 1
316
+ input[type="reset"],
317
+ input[type="submit"] {
318
+ -webkit-appearance: button; // 2
319
+ cursor: pointer; // 3
320
+ }
321
+
322
+ //
323
+ // Re-set default cursor for disabled elements.
324
+ //
325
+
326
+ button[disabled],
327
+ html input[disabled] {
328
+ cursor: default;
329
+ }
330
+
331
+ //
332
+ // 1. Address box sizing set to `content-box` in IE 8/9.
333
+ // 2. Remove excess padding in IE 8/9.
334
+ //
335
+
336
+ input[type="checkbox"],
337
+ input[type="radio"] {
338
+ box-sizing: border-box; // 1
339
+ padding: 0; // 2
340
+ }
341
+
342
+ //
343
+ // 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
344
+ // 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
345
+ // (include `-moz` to future-proof).
346
+ //
347
+
348
+ input[type="search"] {
349
+ -webkit-appearance: textfield; // 1
350
+ -moz-box-sizing: content-box;
351
+ -webkit-box-sizing: content-box; // 2
352
+ box-sizing: content-box;
353
+ }
354
+
355
+ //
356
+ // Remove inner padding and search cancel button in Safari 5 and Chrome
357
+ // on OS X.
358
+ //
359
+
360
+ input[type="search"]::-webkit-search-cancel-button,
361
+ input[type="search"]::-webkit-search-decoration {
362
+ -webkit-appearance: none;
363
+ }
364
+
365
+ //
366
+ // Remove inner padding and border in Firefox 4+.
367
+ //
368
+
369
+ button::-moz-focus-inner,
370
+ input::-moz-focus-inner {
371
+ border: 0;
372
+ padding: 0;
373
+ }
374
+
375
+ //
376
+ // 1. Remove default vertical scrollbar in IE 8/9.
377
+ // 2. Improve readability and alignment in all browsers.
378
+ //
379
+
380
+ textarea {
381
+ overflow: auto; // 1
382
+ vertical-align: top; // 2
383
+ }
384
+
385
+ // ==========================================================================
386
+ // Tables
387
+ // ==========================================================================
388
+
389
+ //
390
+ // Remove most spacing between table cells.
391
+ //
392
+
393
+ table {
394
+ border-collapse: collapse;
395
+ border-spacing: 0;
396
+ }
content/assets/css/bootstrap/_pager.scss ADDED
@@ -0,0 +1,55 @@
1
+ //
2
+ // Pager pagination
3
+ // --------------------------------------------------
4
+
5
+
6
+ .pager {
7
+ padding-left: 0;
8
+ margin: $line-height-computed 0;
9
+ list-style: none;
10
+ text-align: center;
11
+ @include clearfix();
12
+ li {
13
+ display: inline;
14
+ > a,
15
+ > span {
16
+ display: inline-block;
17
+ padding: 5px 14px;
18
+ background-color: $pagination-bg;
19
+ border: 1px solid $pagination-border;
20
+ border-radius: $pager-border-radius;
21
+ }
22
+
23
+ > a:hover,
24
+ > a:focus {
25
+ text-decoration: none;
26
+ background-color: $pagination-hover-bg;
27
+ }
28
+ }
29
+
30
+ .next {
31
+ > a,
32
+ > span {
33
+ float: right;
34
+ }
35
+ }
36
+
37
+ .previous {
38
+ > a,
39
+ > span {
40
+ float: left;
41
+ }
42
+ }
43
+
44
+ .disabled {
45
+ > a,
46
+ > a:hover,
47
+ > a:focus,
48
+ > span {
49
+ color: $pager-disabled-color;
50
+ background-color: $pagination-bg;
51
+ cursor: not-allowed;
52
+ }
53
+ }
54
+
55
+ }
content/assets/css/bootstrap/_pagination.scss ADDED
@@ -0,0 +1,83 @@
1
+ //
2
+ // Pagination (multiple pages)
3
+ // --------------------------------------------------
4
+ .pagination {
5
+ display: inline-block;
6
+ padding-left: 0;
7
+ margin: $line-height-computed 0;
8
+ border-radius: $border-radius-base;
9
+
10
+ > li {
11
+ display: inline; // Remove list-style and block-level defaults
12
+ > a,
13
+ > span {
14
+ position: relative;
15
+ float: left; // Collapse white-space
16
+ padding: $padding-base-vertical $padding-base-horizontal;
17
+ line-height: $line-height-base;
18
+ text-decoration: none;
19
+ background-color: $pagination-bg;
20
+ border: 1px solid $pagination-border;
21
+ margin-left: -1px;
22
+ }
23
+ &:first-child {
24
+ > a,
25
+ > span {
26
+ margin-left: 0;
27
+ @include border-left-radius($border-radius-base);
28
+ }
29
+ }
30
+ &:last-child {
31
+ > a,
32
+ > span {
33
+ @include border-right-radius($border-radius-base);
34
+ }
35
+ }
36
+ }
37
+
38
+ > li > a,
39
+ > li > span {
40
+ &:hover,
41
+ &:focus {
42
+ background-color: $pagination-hover-bg;
43
+ }
44
+ }
45
+
46
+ > .active > a,
47
+ > .active > span {
48
+ &,
49
+ &:hover,
50
+ &:focus {
51
+ z-index: 2;
52
+ color: $pagination-active-color;
53
+ background-color: $pagination-active-bg;
54
+ border-color: $pagination-active-bg;
55
+ cursor: default;
56
+ }
57
+ }
58
+
59
+ > .disabled {
60
+ > span,
61
+ > a,
62
+ > a:hover,
63
+ > a:focus {
64
+ color: $pagination-disabled-color;
65
+ background-color: $pagination-bg;
66
+ border-color: $pagination-border;
67
+ cursor: not-allowed;
68
+ }
69
+ }
70
+ }
71
+
72
+ // Sizing
73
+ // --------------------------------------------------
74
+
75
+ // Large
76
+ .pagination-lg {
77
+ @include pagination-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $border-radius-large);
78
+ }
79
+
80
+ // Small
81
+ .pagination-sm {
82
+ @include pagination-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $border-radius-small);
83
+ }
content/assets/css/bootstrap/_panels.scss ADDED
@@ -0,0 +1,148 @@
1
+ //
2
+ // Panels
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Base class
7
+ .panel {
8
+ margin-bottom: $line-height-computed;
9
+ background-color: $panel-bg;
10
+ border: 1px solid transparent;
11
+ border-radius: $panel-border-radius;
12
+ @include box-shadow(0 1px 1px rgba(0,0,0,.05));
13
+ }
14
+
15
+ // Panel contents
16
+ .panel-body {
17
+ padding: 15px;
18
+ @include clearfix();
19
+ }
20
+
21
+
22
+ // List groups in panels
23
+ //
24
+ // By default, space out list group content from panel headings to account for
25
+ // any kind of custom content between the two.
26
+
27
+ .panel {
28
+ > .list-group {
29
+ margin-bottom: 0;
30
+
31
+ .list-group-item {
32
+ border-width: 1px 0;
33
+
34
+ // Remove border radius for top one
35
+ &:first-child {
36
+ @include border-top-radius(0);
37
+ }
38
+ // But keep it for the last one
39
+ &:last-child {
40
+ border-bottom: 0;
41
+ }
42
+ }
43
+ }
44
+ }
45
+ // Collapse space between when there's no additional content.
46
+ .panel-heading + .list-group {
47
+ .list-group-item:first-child {
48
+ border-top-width: 0;
49
+ }
50
+ }
51
+
52
+
53
+ // Tables in panels
54
+ //
55
+ // Place a non-bordered `.table` within a panel (not within a `.panel-body`) and
56
+ // watch it go full width.
57
+
58
+ .panel {
59
+ > .table {
60
+ margin-bottom: 0;
61
+ }
62
+ > .panel-body + .table {
63
+ border-top: 1px solid $table-border-color;
64
+ }
65
+ }
66
+
67
+
68
+ // Optional heading
69
+ .panel-heading {
70
+ padding: 10px 15px;
71
+ border-bottom: 1px solid transparent;
72
+ @include border-top-radius($panel-border-radius - 1);
73
+ }
74
+
75
+ // Within heading, strip any `h*` tag of it's default margins for spacing.
76
+ .panel-title {
77
+ margin-top: 0;
78
+ margin-bottom: 0;
79
+ font-size: ceil(($font-size-base * 1.125));
80
+ > a {
81
+ color: inherit;
82
+ }
83
+ }
84
+
85
+ // Optional footer (stays gray in every modifier class)
86
+ .panel-footer {
87
+ padding: 10px 15px;
88
+ background-color: $panel-footer-bg;
89
+ border-top: 1px solid $panel-inner-border;
90
+ @include border-bottom-radius($panel-border-radius - 1);
91
+ }
92
+
93
+
94
+ // Collapsable panels (aka, accordion)
95
+ //
96
+ // Wrap a series of panels in `.panel-group` to turn them into an accordion with
97
+ // the help of our collapse JavaScript plugin.
98
+
99
+ .panel-group {
100
+ // Tighten up margin so it's only between panels
101
+ .panel {
102
+ margin-bottom: 0;
103
+ border-radius: $panel-border-radius;
104
+ overflow: hidden; // crop contents when collapsed
105
+ + .panel {
106
+ margin-top: 5px;
107
+ }
108
+ }
109
+
110
+ .panel-heading {
111
+ border-bottom: 0;
112
+ + .panel-collapse .panel-body {
113
+ border-top: 1px solid $panel-inner-border;
114
+ }
115
+ }
116
+ .panel-footer {
117
+ border-top: 0;
118
+ + .panel-collapse .panel-body {
119
+ border-bottom: 1px solid $panel-inner-border;
120
+ }
121
+ }
122
+
123
+ // New subcomponent for wrapping collapsable content for proper animations
124
+ .panel-collapse {
125
+
126
+ }
127
+ }
128
+
129
+
130
+ // Contextual variations
131
+ .panel-default {
132
+ @include panel-variant($panel-default-border, $panel-default-text, $panel-default-heading-bg, $panel-default-border);
133
+ }
134
+ .panel-primary {
135
+ @include panel-variant($panel-primary-border, $panel-primary-text, $panel-primary-heading-bg, $panel-primary-border);
136
+ }
137
+ .panel-success {
138
+ @include panel-variant($panel-success-border, $panel-success-text, $panel-success-heading-bg, $panel-success-border);
139
+ }
140
+ .panel-warning {
141
+ @include panel-variant($panel-warning-border, $panel-warning-text, $panel-warning-heading-bg, $panel-warning-border);
142
+ }
143
+ .panel-danger {
144
+ @include panel-variant($panel-danger-border, $panel-danger-text, $panel-danger-heading-bg, $panel-danger-border);
145
+ }
146
+ .panel-info {
147
+ @include panel-variant($panel-info-border, $panel-info-text, $panel-info-heading-bg, $panel-info-border);
148
+ }
content/assets/css/bootstrap/_popovers.scss ADDED
@@ -0,0 +1,133 @@
1
+ //
2
+ // Popovers
3
+ // --------------------------------------------------
4
+
5
+
6
+ .popover {
7
+ position: absolute;
8
+ top: 0;
9
+ left: 0;
10
+ z-index: $zindex-popover;
11
+ display: none;
12
+ max-width: $popover-max-width;
13
+ padding: 1px;
14
+ text-align: left; // Reset given new insertion method
15
+ background-color: $popover-bg;
16
+ background-clip: padding-box;
17
+ border: 1px solid $popover-fallback-border-color;
18
+ border: 1px solid $popover-border-color;
19
+ border-radius: $border-radius-large;
20
+ @include box-shadow(0 5px 10px rgba(0,0,0,.2));
21
+
22
+ // Overrides for proper insertion
23
+ white-space: normal;
24
+
25
+ // Offset the popover to account for the popover arrow
26
+ &.top { margin-top: -10px; }
27
+ &.right { margin-left: 10px; }
28
+ &.bottom { margin-top: 10px; }
29
+ &.left { margin-left: -10px; }
30
+ }
31
+
32
+ .popover-title {
33
+ margin: 0; // reset heading margin
34
+ padding: 8px 14px;
35
+ font-size: $font-size-base;
36
+ font-weight: normal;
37
+ line-height: 18px;
38
+ background-color: $popover-title-bg;
39
+ border-bottom: 1px solid darken($popover-title-bg, 5%);
40
+ border-radius: 5px 5px 0 0;
41
+ }
42
+
43
+ .popover-content {
44
+ padding: 9px 14px;
45
+ }
46
+
47
+ // Arrows
48
+ //
49
+ // .arrow is outer, .arrow:after is inner
50
+
51
+ .popover .arrow {
52
+ &,
53
+ &:after {
54
+ position: absolute;
55
+ display: block;
56
+ width: 0;
57
+ height: 0;
58
+ border-color: transparent;
59
+ border-style: solid;
60
+ }
61
+ }
62
+ .popover .arrow {
63
+ border-width: $popover-arrow-outer-width;
64
+ }
65
+ .popover .arrow:after {
66
+ border-width: $popover-arrow-width;
67
+ content: "";
68
+ }
69
+
70
+ .popover {
71
+ &.top .arrow {
72
+ left: 50%;
73
+ margin-left: -$popover-arrow-outer-width;
74
+ border-bottom-width: 0;
75
+ border-top-color: $popover-arrow-outer-fallback-color; // IE8 fallback
76
+ border-top-color: $popover-arrow-outer-color;
77
+ bottom: -$popover-arrow-outer-width;
78
+ &:after {
79
+ content: " ";
80
+ bottom: 1px;
81
+ margin-left: -$popover-arrow-width;
82
+ border-bottom-width: 0;
83
+ border-top-color: $popover-arrow-color;
84
+ }
85
+ }
86
+ &.right .arrow {
87
+ top: 50%;
88
+ left: -$popover-arrow-outer-width;
89
+ margin-top: -$popover-arrow-outer-width;
90
+ border-left-width: 0;
91
+ border-right-color: $popover-arrow-outer-fallback-color; // IE8 fallback
92
+ border-right-color: $popover-arrow-outer-color;
93
+ &:after {
94
+ content: " ";
95
+ left: 1px;
96
+ bottom: -$popover-arrow-width;
97
+ border-left-width: 0;
98
+ border-right-color: $popover-arrow-color;
99
+ }
100
+ }
101
+ &.bottom .arrow {
102
+ left: 50%;
103
+ margin-left: -$popover-arrow-outer-width;
104
+ border-top-width: 0;
105
+ border-bottom-color: $popover-arrow-outer-fallback-color; // IE8 fallback
106
+ border-bottom-color: $popover-arrow-outer-color;
107
+ top: -$popover-arrow-outer-width;
108
+ &:after {
109
+ content: " ";
110
+ top: 1px;
111
+ margin-left: -$popover-arrow-width;
112
+ border-top-width: 0;
113
+ border-bottom-color: $popover-arrow-color;
114
+ }
115
+ }
116
+
117
+ &.left .arrow {
118
+ top: 50%;
119
+ right: -$popover-arrow-outer-width;
120
+ margin-top: -$popover-arrow-outer-width;
121
+ border-right-width: 0;
122
+ border-left-color: $popover-arrow-outer-fallback-color; // IE8 fallback
123
+ border-left-color: $popover-arrow-outer-color;
124
+ &:after {
125
+ content: " ";
126
+ right: 1px;
127
+ border-right-width: 0;
128
+ border-left-color: $popover-arrow-color;
129
+ bottom: -$popover-arrow-width;
130
+ }
131
+ }
132
+
133
+ }
content/assets/css/bootstrap/_print.scss ADDED
@@ -0,0 +1,100 @@
1
+ //
2
+ // Basic print styles
3
+ // --------------------------------------------------
4
+ // Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css
5
+
6
+ @media print {
7
+
8
+ * {
9
+ text-shadow: none !important;
10
+ color: #000 !important; // Black prints faster: h5bp.com/s
11
+ background: transparent !important;
12
+ box-shadow: none !important;
13
+ }
14
+
15
+ a,
16
+ a:visited {
17
+ text-decoration: underline;
18
+ }
19
+
20
+ a[href]:after {
21
+ content: " (" attr(href) ")";
22
+ }
23
+
24
+ abbr[title]:after {
25
+ content: " (" attr(title) ")";
26
+ }
27
+
28
+ // Don't show links for images, or javascript/internal links
29
+ .ir a:after,
30
+ a[href^="javascript:"]:after,
31
+ a[href^="#"]:after {
32
+ content: "";
33
+ }
34
+
35
+ pre,
36
+ blockquote {
37
+ border: 1px solid #999;
38
+ page-break-inside: avoid;
39
+ }
40
+
41
+ thead {
42
+ display: table-header-group; // h5bp.com/t
43
+ }
44
+
45
+ tr,
46
+ img {
47
+ page-break-inside: avoid;
48
+ }
49
+
50
+ img {
51
+ max-width: 100% !important;
52
+ }
53
+
54
+ @page {
55
+ margin: 2cm .5cm;
56
+ }
57
+
58
+ p,
59
+ h2,
60
+ h3 {
61
+ orphans: 3;
62
+ widows: 3;
63
+ }
64
+
65
+ h2,
66
+ h3 {
67
+ page-break-after: avoid;
68
+ }
69
+
70
+ // Bootstrap components
71
+ .navbar {
72
+ display: none;
73
+ }
74
+ .table {
75
+ td,
76
+ th {
77
+ background-color: #fff !important;
78
+ }
79
+ }
80
+ .btn,
81
+ .dropup > .btn {
82
+ > .caret {
83
+ border-top-color: #000 !important;
84
+ }
85
+ }
86
+ .label {
87
+ border: 1px solid #000;
88
+ }
89
+
90
+ .table {
91
+ border-collapse: collapse !important;
92
+ }
93
+ .table-bordered {
94
+ th,
95
+ td {
96
+ border: 1px solid #ddd !important;
97
+ }
98
+ }
99
+
100
+ }
content/assets/css/bootstrap/_progress-bars.scss ADDED
@@ -0,0 +1,95 @@
1
+ //
2
+ // Progress bars
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Bar animations
7
+ // -------------------------
8
+
9
+ // Webkit
10
+ @-webkit-keyframes progress-bar-stripes {
11
+ from { background-position: 40px 0; }
12
+ to { background-position: 0 0; }
13
+ }
14
+
15
+ // Firefox
16
+ @-moz-keyframes progress-bar-stripes {
17
+ from { background-position: 40px 0; }
18
+ to { background-position: 0 0; }
19
+ }
20
+
21
+ // Opera
22
+ @-o-keyframes progress-bar-stripes {
23
+ from { background-position: 0 0; }
24
+ to { background-position: 40px 0; }
25
+ }
26
+
27
+ // Spec and IE10+
28
+ @keyframes progress-bar-stripes {
29
+ from { background-position: 40px 0; }
30
+ to { background-position: 0 0; }
31
+ }
32
+
33
+
34
+
35
+ // Bar itself
36
+ // -------------------------
37
+
38
+ // Outer container
39
+ .progress {
40
+ overflow: hidden;
41
+ height: $line-height-computed;
42
+ margin-bottom: $line-height-computed;
43
+ background-color: $progress-bg;
44
+ border-radius: $border-radius-base;
45
+ @include box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
46
+ }
47
+
48
+ // Bar of progress
49
+ .progress-bar {
50
+ float: left;
51
+ width: 0%;
52
+ height: 100%;
53
+ font-size: $font-size-small;
54
+ color: $progress-bar-color;
55
+ text-align: center;
56
+ background-color: $progress-bar-bg;
57
+ @include box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));
58
+ @include transition(width .6s ease);
59
+ }
60
+
61
+ // Striped bars
62
+ .progress-striped .progress-bar {
63
+ @include gradient-striped($progress-bar-bg);
64
+ background-size: 40px 40px;
65
+ }
66
+
67
+ // Call animation for the active one
68
+ .progress.active .progress-bar {
69
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
70
+ -moz-animation: progress-bar-stripes 2s linear infinite;
71
+ -ms-animation: progress-bar-stripes 2s linear infinite;
72
+ -o-animation: progress-bar-stripes 2s linear infinite;
73
+ animation: progress-bar-stripes 2s linear infinite;
74
+ }
75
+
76
+
77
+
78
+ // Variations
79
+ // -------------------------
80
+
81
+ .progress-bar-success {
82
+ @include progress-bar-variant($progress-bar-success-bg);
83
+ }
84
+
85
+ .progress-bar-info {
86
+ @include progress-bar-variant($progress-bar-info-bg);
87
+ }
88
+
89
+ .progress-bar-warning {
90
+ @include progress-bar-variant($progress-bar-warning-bg);
91
+ }
92
+
93
+ .progress-bar-danger {
94
+ @include progress-bar-variant($progress-bar-danger-bg);
95
+ }
content/assets/css/bootstrap/_responsive-utilities.scss ADDED
@@ -0,0 +1,209 @@
1
+ //
2
+ // Responsive: Utility classes
3
+ // --------------------------------------------------
4
+
5
+
6
+ // IE10 Metro responsive
7
+ // Required for Windows 8 Metro split-screen snapping with IE10
8
+ //
9
+ // Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
10
+ @-ms-viewport{
11
+ width: device-width;
12
+ }
13
+
14
+ // IE10 on Windows Phone 8
15
+ // IE10 on WP8 doesn't report CSS pixels, but actual device pixels. In
16
+ // other words, say on a Lumia, you'll get 768px as the device width,
17
+ // meaning users will see the tablet styles and not phone styles.
18
+ //
19
+ // Alternatively you can override this with JS (see source below), but
20
+ // we won't be doing that here given our limited scope.
21
+ //
22
+ // Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/
23
+ @media screen and (max-width: 400px) {
24
+ @-ms-viewport{
25
+ width: 320px;
26
+ }
27
+ }
28
+
29
+ // Hide from screenreaders and browsers
30
+ // Credit: HTML5 Boilerplate
31
+ .hidden {
32
+ display: none !important;
33
+ visibility: hidden !important;
34
+ }
35
+
36
+ // Visibility utilities
37
+
38
+ @include responsive-invisibility('.visible-xs');
39
+ @media (max-width: $screen-xs-max) {
40
+ @include responsive-visibility('.visible-xs');
41
+ }
42
+
43
+ @media (min-width: $screen-sm) and (max-width: $screen-sm-max) {
44
+ @include responsive-visibility('.visible-xs.visible-sm');
45
+ }
46
+
47
+
48
+ @media (min-width: $screen-md) and (max-width: $screen-md-max) {
49
+ @include responsive-visibility('.visible-xs.visible-md');
50
+ }
51
+
52
+
53
+ @media (min-width: $screen-lg) {
54
+ @include responsive-visibility('.visible-xs.visible-lg');
55
+ }
56
+
57
+
58
+ @include responsive-invisibility('.visible-sm');
59
+
60
+ @media (max-width: $screen-xs-max) {
61
+ @include responsive-visibility('.visible-sm.visible-xs');
62
+ }
63
+
64
+ @media (min-width: $screen-sm) and (max-width: $screen-sm-max) {
65
+ @include responsive-visibility('.visible-sm');
66
+ }
67
+
68
+ @media (min-width: $screen-md) and (max-width: $screen-md-max) {
69
+ @include responsive-visibility('.visible-sm.visible-md');
70
+ }
71
+
72
+
73
+ @media (min-width: $screen-lg) {
74
+ @include responsive-visibility('.visible-sm.visible-lg');
75
+ }
76
+
77
+
78
+ @include responsive-invisibility('.visible-md');
79
+
80
+ @media (max-width: $screen-xs-max) {
81
+ @include responsive-visibility('.visible-md.visible-xs');
82
+ }
83
+
84
+
85
+ @media (min-width: $screen-sm) and (max-width: $screen-sm-max) {
86
+ @include responsive-visibility('.visible-md.visible-sm');
87
+ }
88
+
89
+ @media (min-width: $screen-md) and (max-width: $screen-md-max) {
90
+ @include responsive-visibility('.visible-md');
91
+ }
92
+
93
+ @media (min-width: $screen-lg) {
94
+ @include responsive-visibility('.visible-md.visible-lg');
95
+ }
96
+
97
+
98
+ @include responsive-invisibility('.visible-lg');
99
+
100
+ @media (max-width: $screen-xs-max) {
101
+ @include responsive-visibility('.visible-lg.visible-xs');
102
+ }
103
+
104
+
105
+ @media (min-width: $screen-sm) and (max-width: $screen-sm-max) {
106
+ @include responsive-visibility('.visible-lg.visible-sm');
107
+ }
108
+
109
+
110
+ @media (min-width: $screen-md) and (max-width: $screen-md-max) {
111
+ @include responsive-visibility('.visible-lg.visible-md');
112
+ }
113
+
114
+ @media (min-width: $screen-lg) {
115
+ @include responsive-visibility('.visible-lg');
116
+ }
117
+
118
+ @include responsive-visibility('.hidden-xs');
119
+ @media (max-width: $screen-xs-max) {
120
+ @include responsive-invisibility('.hidden-xs');
121
+ }
122
+
123
+ @media (min-width: $screen-sm) and (max-width: $screen-sm-max) {
124
+ @include responsive-invisibility('.hidden-xs.hidden-sm');
125
+ }
126
+
127
+
128
+ @media (min-width: $screen-md) and (max-width: $screen-md-max) {
129
+ @include responsive-invisibility('.hidden-xs.hidden-md');
130
+ }
131
+
132
+
133
+ @media (min-width: $screen-lg) {
134
+ @include responsive-invisibility('.hidden-xs.hidden-lg');
135
+ }
136
+
137
+
138
+ @include responsive-visibility('.hidden-sm');
139
+
140
+ @media (max-width: $screen-xs-max) {
141
+ @include responsive-invisibility('.hidden-sm.hidden-xs');
142
+ }
143
+
144
+ @media (min-width: $screen-sm) and (max-width: $screen-sm-max) {
145
+ @include responsive-invisibility('.hidden-sm');
146
+ }
147
+
148
+ @media (min-width: $screen-md) and (max-width: $screen-md-max) {
149
+ @include responsive-invisibility('.hidden-sm.hidden-md');
150
+ }
151
+
152
+
153
+ @media (min-width: $screen-lg) {
154
+ @include responsive-invisibility('.hidden-sm.hidden-lg');
155
+ }
156
+
157
+
158
+ @include responsive-visibility('.hidden-md');
159
+
160
+ @media (max-width: $screen-xs-max) {
161
+ @include responsive-invisibility('.hidden-md.hidden-xs');
162
+ }
163
+
164
+
165
+ @media (min-width: $screen-sm) and (max-width: $screen-sm-max) {
166
+ @include responsive-invisibility('.hidden-md.hidden-sm');
167
+ }
168
+
169
+ @media (min-width: $screen-md) and (max-width: $screen-md-max) {
170
+ @include responsive-invisibility('.hidden-md');
171
+ }
172
+
173
+ @media (min-width: $screen-lg) {
174
+ @include responsive-invisibility('.hidden-md.hidden-lg');
175
+ }
176
+
177
+
178
+ @include responsive-visibility('.hidden-lg');
179
+
180
+ @media (max-width: $screen-xs-max) {
181
+ @include responsive-invisibility('.hidden-lg.hidden-xs');
182
+ }
183
+
184
+
185
+ @media (min-width: $screen-sm) and (max-width: $screen-sm-max) {
186
+ @include responsive-invisibility('.hidden-lg.hidden-sm');
187
+ }
188
+
189
+
190
+ @media (min-width: $screen-md) and (max-width: $screen-md-max) {
191
+ @include responsive-invisibility('.hidden-lg.hidden-md');
192
+ }
193
+
194
+ @media (min-width: $screen-lg) {
195
+ @include responsive-invisibility('.hidden-lg');
196
+ }
197
+
198
+ // Print utilities
199
+
200
+ @include responsive-invisibility('.visible-print');
201
+
202
+ @media print {
203
+
204
+ @include responsive-visibility('.visible-print');
205
+
206
+
207
+ @include responsive-invisibility('.hidden-print');
208
+
209
+ }
content/assets/css/bootstrap/_scaffolding.scss ADDED
@@ -0,0 +1,130 @@
1
+ //
2
+ // Scaffolding
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Reset the box-sizing
7
+
8
+ *,
9
+ *:before,
10
+ *:after {
11
+ @include box-sizing(border-box);
12
+ }
13
+
14
+
15
+ // Body reset
16
+
17
+ html {
18
+ font-size: 62.5%;
19
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
20
+ }
21
+
22
+ body {
23
+ font-family: $font-family-base;
24
+ font-size: $font-size-base;
25
+ line-height: $line-height-base;
26
+ color: $text-color;
27
+ background-color: $body-bg;
28
+ }
29
+
30
+ // Reset fonts for relevant elements
31
+ input,
32
+ button,
33
+ select,
34
+ textarea {
35
+ font-family: inherit;
36
+ font-size: inherit;
37
+ line-height: inherit;
38
+ }
39
+
40
+ // Reset unusual Firefox-on-Android default style.
41
+ //
42
+ // See https://github.com/necolas/normalize.css/issues/214
43
+
44
+ button,
45
+ input,
46
+ select[multiple],
47
+ textarea {
48
+ background-image: none;
49
+ }
50
+
51
+
52
+ // Links
53
+
54
+ a {
55
+ color: $link-color;
56
+ text-decoration: none;
57
+
58
+ &:hover,
59
+ &:focus {
60
+ color: $link-hover-color;
61
+ text-decoration: underline;
62
+ }
63
+
64
+ &:focus {
65
+ @include tab-focus();
66
+ }
67
+ }
68
+
69
+
70
+ // Images
71
+
72
+ img {
73
+ vertical-align: middle;
74
+ }
75
+
76
+ // Responsive images (ensure images don't scale beyond their parents)
77
+ .img-responsive {
78
+ @include img-responsive();
79
+ }
80
+
81
+ // Rounded corners
82
+ .img-rounded {
83
+ border-radius: $border-radius-large;
84
+ }
85
+
86
+ // Image thumbnails
87
+ //
88
+ // Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.
89
+ .img-thumbnail {
90
+ padding: $thumbnail-padding;
91
+ line-height: $line-height-base;
92
+ background-color: $thumbnail-bg;
93
+ border: 1px solid $thumbnail-border;
94
+ border-radius: $thumbnail-border-radius;
95
+ @include transition(all .2s ease-in-out);
96
+
97
+ // Keep them at most 100% wide
98
+ @include img-responsive(inline-block);
99
+ }
100
+
101
+ // Perfect circle
102
+ .img-circle {
103
+ border-radius: 50%; // set radius in percents
104
+ }
105
+
106
+
107
+ // Horizontal rules
108
+
109
+ hr {
110
+ margin-top: $line-height-computed;
111
+ margin-bottom: $line-height-computed;
112
+ border: 0;
113
+ border-top: 1px solid $hr-border;
114
+ }
115
+
116
+
117
+ // Only display content to screen readers
118
+ //
119
+ // See: http://a11yproject.com/posts/how-to-hide-content/
120
+
121
+ .sr-only {
122
+ position: absolute;
123
+ width: 1px;
124
+ height: 1px;
125
+ margin: -1px;
126
+ padding: 0;
127
+ overflow: hidden;
128
+ clip: rect(0 0 0 0);
129
+ border: 0;
130
+ }
content/assets/css/bootstrap/_tables.scss ADDED
@@ -0,0 +1,236 @@
1
+ //
2
+ // Tables
3
+ // --------------------------------------------------
4
+
5
+
6
+ table {
7
+ max-width: 100%;
8
+ background-color: $table-bg;
9
+ }
10
+ th {
11
+ text-align: left;
12
+ }
13
+
14
+
15
+ // Baseline styles
16
+
17
+ .table {
18
+ width: 100%;
19
+ margin-bottom: $line-height-computed;
20
+ // Cells
21
+ thead,
22
+ tbody,
23
+ tfoot {
24
+ > tr {
25
+ > th,
26
+ > td {
27
+ padding: $table-cell-padding;
28
+ line-height: $line-height-base;
29
+ vertical-align: top;
30
+ border-top: 1px solid $table-border-color;
31
+ }
32
+ }
33
+ }
34
+ // Bottom align for column headings
35
+ thead > tr > th {
36
+ vertical-align: bottom;
37
+ border-bottom: 2px solid $table-border-color;
38
+ }
39
+ // Remove top border from thead by default
40
+ caption + thead,
41
+ colgroup + thead,
42
+ thead:first-child {
43
+ tr:first-child {
44
+ th, td {
45
+ border-top: 0;
46
+ }
47
+ }
48
+ }
49
+ // Account for multiple tbody instances
50
+ tbody + tbody {
51
+ border-top: 2px solid $table-border-color;
52
+ }
53
+
54
+ // Nesting
55
+ .table {
56
+ background-color: $body-bg;
57
+ }
58
+ }
59
+
60
+
61
+ // Condensed table w/ half padding
62
+
63
+ .table-condensed {
64
+ thead,
65
+ tbody,
66
+ tfoot {
67
+ > tr {
68
+ > th,
69
+ > td {
70
+ padding: $table-condensed-cell-padding;
71
+ }
72
+ }
73
+ }
74
+ }
75
+
76
+
77
+ // Bordered version
78
+ //
79
+ // Add borders all around the table and between all the columns.
80
+
81
+ .table-bordered {
82
+ border: 1px solid $table-border-color;
83
+ > thead,
84
+ > tbody,
85
+ > tfoot {
86
+ > tr {
87
+ > th,
88
+ > td {
89
+ border: 1px solid $table-border-color;
90
+ }
91
+ }
92
+ }
93
+ > thead {
94
+ > tr {
95
+ > th,
96
+ > td {
97
+ border-bottom-width: 2px;
98
+ }
99
+ }
100
+ }
101
+ }
102
+
103
+
104
+ // Zebra-striping
105
+ //
106
+ // Default zebra-stripe styles (alternating gray and transparent backgrounds)
107
+
108
+ .table-striped {
109
+ > tbody {
110
+ > tr:nth-child(odd) {
111
+ > td,
112
+ > th {
113
+ background-color: $table-bg-accent;
114
+ }
115
+ }
116
+ }
117
+ }
118
+
119
+
120
+ // Hover effect
121
+ //
122
+ // Placed here since it has to come after the potential zebra striping
123
+
124
+ .table-hover {
125
+ > tbody {
126
+ > tr:hover {
127
+ > td,
128
+ > th {
129
+ background-color: $table-bg-hover;
130
+ }
131
+ }
132
+ }
133
+ }
134
+
135
+
136
+ // Table cell sizing
137
+ //
138
+ // Reset default table behavior
139
+
140
+ table col[class*="col-"] {
141
+ float: none;
142
+ display: table-column;
143
+ }
144
+ table {
145
+ td,
146
+ th {
147
+ &[class*="col-"] {
148
+ float: none;
149
+ display: table-cell;
150
+ }
151
+ }
152
+ }
153
+
154
+
155
+ // Table backgrounds
156
+ //
157
+ // Exact selectors below required to override `.table-striped` and prevent
158
+ // inheritance to nested tables.
159
+
160
+ .table > thead > tr,
161
+ .table > tbody > tr,
162
+ .table > tfoot > tr {
163
+ > td.active,
164
+ > th.active,
165
+ &.active > td,
166
+ &.active > th {
167
+ background-color: $table-bg-active;
168
+ }
169
+ }
170
+
171
+ // Generate the contextual variants
172
+ @include table-row-variant('success', $state-success-bg, $state-success-border);
173
+ @include table-row-variant('danger', $state-danger-bg, $state-danger-border);
174
+ @include table-row-variant('warning', $state-warning-bg, $state-warning-border);
175
+
176
+
177
+ // Responsive tables
178
+ //
179
+ // Wrap your tables in `.table-scrollable` and we'll make them mobile friendly
180
+ // by enabling horizontal scrolling. Only applies <768px. Everything above that
181
+ // will display normally.
182
+
183
+ @media (max-width: $screen-sm) {
184
+ .table-responsive {
185
+ width: 100%;
186
+ margin-bottom: 15px;
187
+ overflow-y: hidden;
188
+ overflow-x: scroll;
189
+ border: 1px solid $table-border-color;
190
+
191
+ // Tighten up spacing and give a background color
192
+ > .table {
193
+ margin-bottom: 0;
194
+ background-color: #fff;
195
+
196
+ // Ensure the content doesn't wrap
197
+ > thead,
198
+ > tbody,
199
+ > tfoot {
200
+ > tr {
201
+ > th,
202
+ > td {
203
+ white-space: nowrap;
204
+ }
205
+ }
206
+ }
207
+ }
208
+
209
+ // Special overrides for the bordered tables
210
+ > .table-bordered {
211
+ border: 0;
212
+
213
+ // Nuke the appropriate borders so that the parent can handle them
214
+ > thead,
215
+ > tbody,
216
+ > tfoot {
217
+ > tr {
218
+ > th:first-child,
219
+ > td:first-child {
220
+ border-left: 0;
221
+ }
222
+ > th:last-child,
223
+ > td:last-child {
224
+ border-right: 0;
225
+ }
226
+ }
227
+ > tr:last-child {
228
+ > th,
229
+ > td {
230
+ border-bottom: 0;
231
+ }
232
+ }
233
+ }
234
+ }
235
+ }
236
+ }
content/assets/css/bootstrap/_theme.scss ADDED
@@ -0,0 +1,232 @@
1
+
2
+ //
3
+ // Load core variables and mixins
4
+ // --------------------------------------------------
5
+
6
+ @import "bootstrap/variables";
7
+ @import "bootstrap/mixins";
8
+
9
+
10
+
11
+ //
12
+ // Buttons
13
+ // --------------------------------------------------
14
+
15
+ // Common styles
16
+ .btn-default,
17
+ .btn-primary,
18
+ .btn-success,
19
+ .btn-info,
20
+ .btn-warning,
21
+ .btn-danger {
22
+ text-shadow: 0 -1px 0 rgba(0,0,0,.2);
23
+ $shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);
24
+ @include box-shadow($shadow);
25
+
26
+ // Reset the shadow
27
+ &:active,
28
+ &.active {
29
+ @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
30
+ }
31
+ }
32
+
33
+ // Mixin for generating new styles
34
+ @mixin btn-styles($btn-color: #555) {
35
+ @include gradient-vertical($start-color: $btn-color, $end-color: darken($btn-color, 10%));
36
+ border-color: darken($btn-color, 12%);
37
+
38
+ &:active,
39
+ &.active {
40
+ background-color: darken($btn-color, 10%);
41
+ border-color: darken($btn-color, 12%);
42
+ }
43
+ }
44
+
45
+ // Common styles
46
+ .btn {
47
+ // Remove the gradient for the pressed/active state
48
+ &:active,
49
+ &.active {
50
+ background-image: none;
51
+ }
52
+ }
53
+
54
+ // Apply the mixin to the buttons
55
+ .btn-default { @include btn-styles($btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }
56
+ .btn-primary { @include btn-styles($btn-primary-bg); }
57
+ .btn-success { @include btn-styles($btn-success-bg); }
58
+ .btn-warning { @include btn-styles($btn-warning-bg); }
59
+ .btn-danger { @include btn-styles($btn-danger-bg); }
60
+ .btn-info { @include btn-styles($btn-info-bg); }
61
+
62
+
63
+
64
+ //
65
+ // Images
66
+ // --------------------------------------------------
67
+
68
+ .thumbnail,
69
+ .img-thumbnail {
70
+ @include box-shadow(0 1px 2px rgba(0,0,0,.075));
71
+ }
72
+
73
+
74
+
75
+ //
76
+ // Dropdowns
77
+ // --------------------------------------------------
78
+
79
+ .dropdown-menu > li > a:hover,
80
+ .dropdown-menu > li > a:focus,
81
+ .dropdown-menu > .active > a,
82
+ .dropdown-menu > .active > a:hover,
83
+ .dropdown-menu > .active > a:focus {
84
+ @include gradient-vertical($start-color: $dropdown-link-hover-bg, $end-color: darken($dropdown-link-hover-bg, 5%));
85
+ background-color: darken($dropdown-link-hover-bg, 5%);
86
+ }
87
+
88
+
89
+
90
+ //
91
+ // Navbar
92
+ // --------------------------------------------------
93
+
94
+ // Basic navbar
95
+ .navbar {
96
+ @include gradient-vertical($start-color: lighten($navbar-default-bg, 10%), $end-color: $navbar-default-bg);
97
+ border-radius: $navbar-border-radius;
98
+ $shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);
99
+ @include box-shadow($shadow);
100
+
101
+ .navbar-nav > .active > a {
102
+ background-color: $navbar-default-bg;
103
+ }
104
+ }
105
+ .navbar-brand,
106
+ .navbar-nav > li > a {
107
+ text-shadow: 0 1px 0 rgba(255,255,255,.25);
108
+ }
109
+
110
+ // Inverted navbar
111
+ .navbar-inverse {
112
+ @include gradient-vertical($start-color: lighten($navbar-inverse-bg, 10%), $end-color: $navbar-inverse-bg);
113
+
114
+ .navbar-nav > .active > a {
115
+ background-color: $navbar-inverse-bg;
116
+ }
117
+
118
+ .navbar-brand,
119
+ .navbar-nav > li > a {
120
+ text-shadow: 0 -1px 0 rgba(0,0,0,.25);
121
+ }
122
+ }
123
+
124
+ // Undo rounded corners in static and fixed navbars
125
+ .navbar-static-top,
126
+ .navbar-fixed-top,
127
+ .navbar-fixed-bottom {
128
+ border-radius: 0;
129
+ }
130
+
131
+
132
+
133
+ //
134
+ // Alerts
135
+ // --------------------------------------------------
136
+
137
+ // Common styles
138
+ .alert {
139
+ text-shadow: 0 1px 0 rgba(255,255,255,.2);
140
+ $shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);
141
+ @include box-shadow($shadow);
142
+ }
143
+
144
+ // Mixin for generating new styles
145
+ @mixin alert-styles($color) {
146
+ @include gradient-vertical($start-color: $color, $end-color: darken($color, 7.5%));
147
+ border-color: darken($color, 15%);
148
+ }
149
+
150
+ // Apply the mixin to the alerts
151
+ .alert-success { @include alert-styles($alert-success-bg); }
152
+ .alert-info { @include alert-styles($alert-info-bg); }
153
+ .alert-warning { @include alert-styles($alert-warning-bg); }
154
+ .alert-danger { @include alert-styles($alert-danger-bg); }
155
+
156
+
157
+
158
+ //
159
+ // Progress bars
160
+ // --------------------------------------------------
161
+
162
+ // Give the progress background some depth
163
+ .progress {
164
+ @include gradient-vertical($start-color: darken($progress-bg, 4%), $end-color: $progress-bg)
165
+ }
166
+
167
+ // Mixin for generating new styles
168
+ @mixin progress-bar-styles($color) {
169
+ @include gradient-vertical($start-color: $color, $end-color: darken($color, 10%));
170
+ }
171
+
172
+ // Apply the mixin to the progress bars
173
+ .progress-bar { @include progress-bar-styles($progress-bar-bg); }
174
+ .progress-bar-success { @include progress-bar-styles($progress-bar-success-bg); }
175
+ .progress-bar-info { @include progress-bar-styles($progress-bar-info-bg); }
176
+ .progress-bar-warning { @include progress-bar-styles($progress-bar-warning-bg); }
177
+ .progress-bar-danger { @include progress-bar-styles($progress-bar-danger-bg); }
178
+
179
+
180
+
181
+ //
182
+ // List groups
183
+ // --------------------------------------------------
184
+
185
+ .list-group {
186
+ border-radius: $border-radius-base;
187
+ @include box-shadow(0 1px 2px rgba(0,0,0,.075));
188
+ }
189
+ .list-group-item.active,
190
+ .list-group-item.active:hover,
191
+ .list-group-item.active:focus {
192
+ text-shadow: 0 -1px 0 darken($list-group-active-bg, 10%);
193
+ @include gradient-vertical($start-color: $list-group-active-bg, $end-color: darken($list-group-active-bg, 7.5%));
194
+ border-color: darken($list-group-active-border, 7.5%);
195
+ }
196
+
197
+
198
+
199
+ //
200
+ // Panels
201
+ // --------------------------------------------------
202
+
203
+ // Common styles
204
+ .panel {
205
+ @include box-shadow(0 1px 2px rgba(0,0,0,.05));
206
+ }
207
+
208
+ // Mixin for generating new styles
209
+ @mixin panel-heading-styles($color) {
210
+ @include gradient-vertical($start-color: $color, $end-color: darken($color, 5%));
211
+ }
212
+
213
+ // Apply the mixin to the panel headings only
214
+ .panel-default > .panel-heading { @include panel-heading-styles($panel-default-heading-bg); }
215
+ .panel-primary > .panel-heading { @include panel-heading-styles($panel-primary-heading-bg); }
216
+ .panel-success > .panel-heading { @include panel-heading-styles($panel-success-heading-bg); }
217
+ .panel-info > .panel-heading { @include panel-heading-styles($panel-info-heading-bg); }
218
+ .panel-warning > .panel-heading { @include panel-heading-styles($panel-warning-heading-bg); }
219
+ .panel-danger > .panel-heading { @include panel-heading-styles($panel-danger-heading-bg); }
220
+
221
+
222
+
223
+ //
224
+ // Wells
225
+ // --------------------------------------------------
226
+
227
+ .well {
228
+ @include gradient-vertical($start-color: darken($well-bg, 5%), $end-color: $well-bg);
229
+ border-color: darken($well-bg, 10%);
230
+ $shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);
231
+ @include box-shadow($shadow);
232
+ }
content/assets/css/bootstrap/_thumbnails.scss ADDED
@@ -0,0 +1,31 @@
1
+ //
2
+ // Thumbnails
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Mixin and adjust the regular image class
7
+ .thumbnail {
8
+ @extend .img-thumbnail;
9
+ display: block; // Override the inline-block from `.img-thumbnail`
10
+
11
+ > img {
12
+ @include img-responsive();
13
+ }
14
+ }
15
+
16
+
17
+ // Add a hover state for linked versions only
18
+ a.thumbnail:hover,
19
+ a.thumbnail:focus {
20
+ border-color: $link-color;
21
+ }
22
+
23
+ // Images and captions
24
+ .thumbnail > img {
25
+ margin-left: auto;
26
+ margin-right: auto;
27
+ }
28
+ .thumbnail .caption {
29
+ padding: $thumbnail-caption-padding;
30
+ color: $thumbnail-caption-color;
31
+ }
content/assets/css/bootstrap/_tooltip.scss ADDED
@@ -0,0 +1,95 @@
1
+ //
2
+ // Tooltips
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Base class
7
+ .tooltip {
8
+ position: absolute;
9
+ z-index: $zindex-tooltip;
10
+ display: block;
11
+ visibility: visible;
12
+ font-size: $font-size-small;
13
+ line-height: 1.4;
14
+ @include opacity(0);
15
+
16
+ &.in { @include opacity(.9); }
17
+ &.top { margin-top: -3px; padding: 5px 0; }
18
+ &.right { margin-left: 3px; padding: 0 5px; }
19
+ &.bottom { margin-top: 3px; padding: 5px 0; }
20
+ &.left { margin-left: -3px; padding: 0 5px; }
21
+ }
22
+
23
+ // Wrapper for the tooltip content
24
+ .tooltip-inner {
25
+ max-width: $tooltip-max-width;
26
+ padding: 3px 8px;
27
+ color: $tooltip-color;
28
+ text-align: center;
29
+ text-decoration: none;
30
+ background-color: $tooltip-bg;
31
+ border-radius: $border-radius-base;
32
+ }
33
+
34
+ // Arrows
35
+ .tooltip-arrow {
36
+ position: absolute;
37
+ width: 0;
38
+ height: 0;
39
+ border-color: transparent;
40
+ border-style: solid;
41
+ }
42
+ .tooltip {
43
+ &.top .tooltip-arrow {
44
+ bottom: 0;
45
+ left: 50%;
46
+ margin-left: -$tooltip-arrow-width;
47
+ border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
48
+ border-top-color: $tooltip-arrow-color;
49
+ }
50
+ &.top-left .tooltip-arrow {
51
+ bottom: 0;
52
+ left: 5px;
53
+ border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
54
+ border-top-color: $tooltip-arrow-color;
55
+ }
56
+ &.top-right .tooltip-arrow {
57
+ bottom: 0;
58
+ right: 5px;
59
+ border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
60
+ border-top-color: $tooltip-arrow-color;
61
+ }
62
+ &.right .tooltip-arrow {
63
+ top: 50%;
64
+ left: 0;
65
+ margin-top: -$tooltip-arrow-width;
66
+ border-width: $tooltip-arrow-width $tooltip-arrow-width $tooltip-arrow-width 0;
67
+ border-right-color: $tooltip-arrow-color;
68
+ }
69
+ &.left .tooltip-arrow {
70
+ top: 50%;
71
+ right: 0;
72
+ margin-top: -$tooltip-arrow-width;
73
+ border-width: $tooltip-arrow-width 0 $tooltip-arrow-width $tooltip-arrow-width;
74
+ border-left-color: $tooltip-arrow-color;
75
+ }
76
+ &.bottom .tooltip-arrow {
77
+ top: 0;
78
+ left: 50%;
79
+ margin-left: -$tooltip-arrow-width;
80
+ border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
81
+ border-bottom-color: $tooltip-arrow-color;
82
+ }
83
+ &.bottom-left .tooltip-arrow {
84
+ top: 0;
85
+ left: 5px;
86
+ border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
87
+ border-bottom-color: $tooltip-arrow-color;
88
+ }
89
+ &.bottom-right .tooltip-arrow {
90
+ top: 0;
91
+ right: 5px;
92
+ border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
93
+ border-bottom-color: $tooltip-arrow-color;
94
+ }
95
+ }
content/assets/css/bootstrap/_type.scss ADDED
@@ -0,0 +1,238 @@
1
+ //
2
+ // Typography
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Body text
7
+ // -------------------------
8
+
9
+ p {
10
+ margin: 0 0 ($line-height-computed / 2);
11
+ }
12
+ .lead {
13
+ margin-bottom: $line-height-computed;
14
+ font-size: ($font-size-base * 1.15);
15
+ font-weight: 200;
16
+ line-height: 1.4;
17
+
18
+ @media (min-width: 768px) {
19
+ font-size: ($font-size-base * 1.5);
20
+ }
21
+ }
22
+
23
+
24
+ // Emphasis & misc
25
+ // -------------------------
26
+
27
+ // Ex: 14px base font * 85% = about 12px
28
+ small { font-size: 85%; }
29
+
30
+ // Undo browser default styling
31
+ cite { font-style: normal; }
32
+
33
+ // Contextual emphasis
34
+ .text-muted { color: $text-muted; }
35
+ .text-primary { color: $brand-primary; }
36
+ .text-warning { color: $state-warning-text; }
37
+ .text-danger { color: $state-danger-text; }
38
+ .text-success { color: $state-success-text; }
39
+ .text-info { color: $state-info-text; }
40
+
41
+ // Alignment
42
+ .text-left { text-align: left; }
43
+ .text-right { text-align: right; }
44
+ .text-center { text-align: center; }
45
+
46
+
47
+ // Headings
48
+ // -------------------------
49
+
50
+ h1, h2, h3, h4, h5, h6,
51
+ .h1, .h2, .h3, .h4, .h5, .h6 {
52
+ font-family: $headings-font-family;
53
+ font-weight: $headings-font-weight;
54
+ line-height: $headings-line-height;
55
+ small {
56
+ font-weight: normal;
57
+ line-height: 1;
58
+ color: $headings-small-color;
59
+ }
60
+ }
61
+
62
+ h1,
63
+ h2,
64
+ h3 {
65
+ margin-top: $line-height-computed;
66
+ margin-bottom: ($line-height-computed / 2);
67
+ }
68
+ h4,
69
+ h5,
70
+ h6 {
71
+ margin-top: ($line-height-computed / 2);
72
+ margin-bottom: ($line-height-computed / 2);
73
+ }
74
+
75
+ h1, .h1 { font-size: floor($font-size-base * 2.60); } // ~36px
76
+ h2, .h2 { font-size: floor($font-size-base * 2.15); } // ~30px
77
+ h3, .h3 { font-size: ceil($font-size-base * 1.70); } // ~24px
78
+ h4, .h4 { font-size: ceil($font-size-base * 1.25); } // ~18px
79
+ h5, .h5 { font-size: $font-size-base; }
80
+ h6, .h6 { font-size: ceil($font-size-base * 0.85); } // ~12px
81
+
82
+ h1 small, .h1 small { font-size: ceil($font-size-base * 1.70); } // ~24px
83
+ h2 small, .h2 small { font-size: ceil($font-size-base * 1.25); } // ~18px
84
+ h3 small, .h3 small,
85
+ h4 small, .h4 small { font-size: $font-size-base; }
86
+
87
+
88
+ // Page header
89
+ // -------------------------
90
+
91
+ .page-header {
92
+ padding-bottom: (($line-height-computed / 2) - 1);
93
+ margin: ($line-height-computed * 2) 0 $line-height-computed;
94
+ border-bottom: 1px solid $page-header-border-color;
95
+ }
96
+
97
+
98
+
99
+ // Lists
100
+ // --------------------------------------------------
101
+
102
+ // Unordered and Ordered lists
103
+ ul,
104
+ ol {
105
+ margin-top: 0;
106
+ margin-bottom: ($line-height-computed / 2);
107
+ ul,
108
+ ol{
109
+ margin-bottom: 0;
110
+ }
111
+ }
112
+
113
+ // List options
114
+
115
+ // Unstyled keeps list items block level, just removes default browser padding and list-style
116
+ .list-unstyled {
117
+ padding-left: 0;
118
+ list-style: none;
119
+ }
120
+ // Inline turns list items into inline-block
121
+ .list-inline {
122
+ @extend .list-unstyled;
123
+ > li {
124
+ display: inline-block;
125
+ padding-left: 5px;
126
+ padding-right: 5px;
127
+ }
128
+ }
129
+
130
+ // Description Lists
131
+ dl {
132
+ margin-bottom: $line-height-computed;
133
+ }
134
+ dt,
135
+ dd {
136
+ line-height: $line-height-base;
137
+ }
138
+ dt {
139
+ font-weight: bold;
140
+ }
141
+ dd {
142
+ margin-left: 0; // Undo browser default
143
+ }
144
+
145
+ // Horizontal description lists
146
+ //
147
+ // Defaults to being stacked without any of the below styles applied, until the
148
+ // grid breakpoint is reached (default of ~768px).
149
+
150
+ @media (min-width: $grid-float-breakpoint) {
151
+ .dl-horizontal {
152
+ dt {
153
+ float: left;
154
+ width: ($component-offset-horizontal - 20);
155
+ clear: left;
156
+ text-align: right;
157
+ @include text-overflow();
158
+ }
159
+ dd {
160
+ margin-left: $component-offset-horizontal;
161
+ @include clearfix(); // Clear the floated `dt` if an empty `dd` is present
162
+ }
163
+ }
164
+ }
165
+
166
+ // MISC
167
+ // ----
168
+
169
+ // Abbreviations and acronyms
170
+ abbr[title],
171
+ // Added data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257
172
+ abbr[data-original-title] {
173
+ cursor: help;
174
+ border-bottom: 1px dotted $abbr-border-color;
175
+ }
176
+ abbr.initialism {
177
+ font-size: 90%;
178
+ text-transform: uppercase;
179
+ }
180
+
181
+ // Blockquotes
182
+ blockquote {
183
+ padding: ($line-height-computed / 2) $line-height-computed;
184
+ margin: 0 0 $line-height-computed;
185
+ border-left: 5px solid $blockquote-border-color;
186
+ p {
187
+ font-size: ($font-size-base * 1.25);
188
+ font-weight: 300;
189
+ line-height: 1.25;
190
+ }
191
+ p:last-child {
192
+ margin-bottom: 0;
193
+ }
194
+ small {
195
+ display: block;
196
+ line-height: $line-height-base;
197
+ color: $blockquote-small-color;
198
+ &:before {
199
+ content: '\2014 \00A0';// EM DASH, NBSP
200
+ }
201
+ }
202
+
203
+ // Float right with text-align: right
204
+ &.pull-right {
205
+ padding-right: 15px;
206
+ padding-left: 0;
207
+ border-right: 5px solid $blockquote-border-color;
208
+ border-left: 0;
209
+ p,
210
+ small {
211
+ text-align: right;
212
+ }
213
+ small {
214
+ &:before {
215
+ content: '';
216
+ }
217
+ &:after {
218
+ content: '\00A0 \2014';// NBSP, EM DASH
219
+ }
220
+ }
221
+ }
222
+ }
223
+
224
+ // Quotes
225
+ q:before,
226
+ q:after,
227
+ blockquote:before,
228
+ blockquote:after {
229
+ content: "";
230
+ }
231
+
232
+ // Addresses
233
+ address {
234
+ display: block;
235
+ margin-bottom: $line-height-computed;
236
+ font-style: normal;
237
+ line-height: $line-height-base;
238
+ }
content/assets/css/bootstrap/_utilities.scss ADDED
@@ -0,0 +1,42 @@
1
+ //
2
+ // Utility classes
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Floats
7
+ // -------------------------
8
+
9
+ .clearfix {
10
+ @include clearfix();
11
+ }
12
+ .pull-right {
13
+ float: right !important;
14
+ }
15
+ .pull-left {
16
+ float: left !important;
17
+ }
18
+
19
+
20
+ // Toggling content
21
+ // -------------------------
22
+
23
+ .hide {
24
+ display: none !important;
25
+ }
26
+ .show {
27
+ display: block !important;
28
+ }
29
+ .invisible {
30
+ visibility: hidden;
31
+ }
32
+ .text-hide {
33
+ @include hide-text();
34
+ }
35
+
36
+
37
+ // For Affix plugin
38
+ // -------------------------
39
+
40
+ .affix {
41
+ position: fixed;
42
+ }
content/assets/css/bootstrap/_variables.scss ADDED
@@ -0,0 +1,620 @@
1
+ //
2
+ // Variables
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Global values
7
+ // --------------------------------------------------
8
+
9
+ // Grays
10
+ // -------------------------
11
+
12
+ $gray-darker: lighten(#000, 13.5%) !default; // #222
13
+ $gray-dark: lighten(#000, 20%) !default; // #333
14
+ $gray: lighten(#000, 33.5%) !default; // #555
15
+ $gray-light: lighten(#000, 60%) !default; // #999
16
+ $gray-lighter: lighten(#000, 93.5%) !default; // #eee
17
+
18
+ // Brand colors
19
+ // -------------------------
20
+
21
+ $brand-primary: #428bca !default;
22
+ $brand-success: #5cb85c !default;
23
+ $brand-warning: #f0ad4e !default;
24
+ $brand-danger: #d9534f !default;
25
+ $brand-info: #5bc0de !default;
26
+
27
+ // Scaffolding
28
+ // -------------------------
29
+
30
+ $body-bg: #fff !default;
31
+ $text-color: $gray-dark !default;
32
+
33
+ // Links
34
+ // -------------------------
35
+
36
+ $link-color: $brand-primary !default;
37
+ $link-hover-color: darken($link-color, 15%) !default;
38
+
39
+ // Typography
40
+ // -------------------------
41
+
42
+ $font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif !default;
43
+ $font-family-serif: Georgia, "Times New Roman", Times, serif !default;
44
+ $font-family-monospace: Monaco, Menlo, Consolas, "Courier New", monospace !default;
45
+ $font-family-base: $font-family-sans-serif !default;
46
+
47
+ $font-size-base: 15px !default;
48
+ $font-size-large: ceil($font-size-base * 1.25) !default; // ~18px
49
+ $font-size-small: ceil($font-size-base * 0.85) !default; // ~12px
50
+
51
+ $line-height-base: 1.428571429 !default; // 20/14
52
+ $line-height-computed: floor($font-size-base * $line-height-base) !default; // ~20px
53
+
54
+ $headings-font-family: $font-family-base !default;
55
+ $headings-font-weight: 500 !default;
56
+ $headings-line-height: 1.1 !default;
57
+
58
+ // Iconography
59
+ // -------------------------
60
+
61
+ $icon-font-path: "bootstrap/" !default;
62
+ $icon-font-name: "glyphicons-halflings-regular" !default;
63
+
64
+
65
+ // Components
66
+ // -------------------------
67
+ // Based on 14px font-size and 1.428 line-height (~20px to start)
68
+
69
+ $padding-base-vertical: 6px !default;
70
+ $padding-base-horizontal: 12px !default;
71
+
72
+ $padding-large-vertical: 10px !default;
73
+ $padding-large-horizontal: 16px !default;
74
+
75
+ $padding-small-vertical: 5px !default;
76
+ $padding-small-horizontal: 10px !default;
77
+
78
+ $line-height-large: 1.33 !default;
79
+ $line-height-small: 1.5 !default;
80
+
81
+ $border-radius-base: 4px !default;
82
+ $border-radius-large: 6px !default;
83
+ $border-radius-small: 3px !default;
84
+
85
+ $component-active-bg: $brand-primary !default;
86
+
87
+ $caret-width-base: 4px !default;
88
+ $caret-width-large: 5px !default;
89
+
90
+ // Tables
91
+ // -------------------------
92
+
93
+ $table-cell-padding: 8px !default;
94
+ $table-condensed-cell-padding: 5px !default;
95
+
96
+ $table-bg: transparent !default; // overall background-color
97
+ $table-bg-accent: #f9f9f9 !default; // for striping
98
+ $table-bg-hover: #f5f5f5 !default;
99
+ $table-bg-active: $table-bg-hover !default;
100
+
101
+ $table-border-color: #ddd !default; // table and cell border
102
+
103
+
104
+ // Buttons
105
+ // -------------------------
106
+
107
+ $btn-font-weight: normal !default;
108
+
109
+ $btn-default-color: #333 !default;
110
+ $btn-default-bg: #fff !default;
111
+ $btn-default-border: #ccc !default;
112
+
113
+ $btn-primary-color: #fff !default;
114
+ $btn-primary-bg: $brand-primary !default;
115
+ $btn-primary-border: darken($btn-primary-bg, 5%) !default;
116
+
117
+ $btn-success-color: #fff !default;
118
+ $btn-success-bg: $brand-success !default;
119
+ $btn-success-border: darken($btn-success-bg, 5%) !default;
120
+
121
+ $btn-warning-color: #fff !default;
122
+ $btn-warning-bg: $brand-warning !default;
123
+ $btn-warning-border: darken($btn-warning-bg, 5%) !default;
124
+
125
+ $btn-danger-color: #fff !default;
126
+ $btn-danger-bg: $brand-danger !default;
127
+ $btn-danger-border: darken($btn-danger-bg, 5%) !default;
128
+
129
+ $btn-info-color: #fff !default;
130
+ $btn-info-bg: $brand-info !default;
131
+ $btn-info-border: darken($btn-info-bg, 5%) !default;
132
+
133
+ $btn-link-disabled-color: $gray-light !default;
134
+
135
+
136
+ // Forms
137
+ // -------------------------
138
+
139
+ $input-bg: #fff !default;
140
+ $input-bg-disabled: $gray-lighter !default;
141
+
142
+ $input-color: $gray !default;
143
+ $input-border: #ccc !default;
144
+ $input-border-radius: $border-radius-base !default;
145
+ $input-border-focus: #66afe9 !default;
146
+
147
+ $input-color-placeholder: $gray-light !default;
148
+
149
+ $input-height-base: ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
150
+ $input-height-large: (floor($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
151
+ $input-height-small: (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
152
+
153
+ $legend-color: $gray-dark !default;
154
+ $legend-border-color: #e5e5e5 !default;
155
+
156
+ $input-group-addon-bg: $gray-lighter !default;
157
+ $input-group-addon-border-color: $input-border !default;
158
+
159
+
160
+ // Dropdowns
161
+ // -------------------------
162
+
163
+ $dropdown-bg: #fff !default;
164
+ $dropdown-border: rgba(0,0,0,.15) !default;
165
+ $dropdown-fallback-border: #ccc !default;
166
+ $dropdown-divider-bg: #e5e5e5 !default;
167
+
168
+ $dropdown-link-active-color: #fff !default;
169
+ $dropdown-link-active-bg: $component-active-bg !default;
170
+
171
+ $dropdown-link-color: $gray-dark !default;
172
+ $dropdown-link-hover-color: #fff !default;
173
+ $dropdown-link-hover-bg: $dropdown-link-active-bg !default;
174
+
175
+ $dropdown-link-disabled-color: $gray-light !default;
176
+
177
+ $dropdown-header-color: $gray-light !default;
178
+
179
+ $dropdown-caret-color: #000 !default;
180
+
181
+
182
+ // COMPONENT VARIABLES
183
+ // --------------------------------------------------
184
+
185
+
186
+ // Z-index master list
187
+ // -------------------------
188
+ // Used for a bird's eye view of components dependent on the z-axis
189
+ // Try to avoid customizing these :)
190
+
191
+ $zindex-navbar: 1000 !default;
192
+ $zindex-dropdown: 1000 !default;
193
+ $zindex-popover: 1010 !default;
194
+ $zindex-tooltip: 1030 !default;
195
+ $zindex-navbar-fixed: 1030 !default;
196
+ $zindex-modal-background: 1040 !default;
197
+ $zindex-modal: 1050 !default;
198
+
199
+ // Media queries breakpoints
200
+ // --------------------------------------------------
201
+
202
+ // Extra small screen / phone
203
+ $screen-xs: 480px !default;
204
+ $screen-phone: $screen-xs !default;
205
+
206
+ // Small screen / tablet
207
+ $screen-sm: 768px !default;
208
+ $screen-tablet: $screen-sm !default;
209
+
210
+ // Medium screen / desktop
211
+ $screen-md: 992px !default;
212
+ $screen-desktop: $screen-md !default;
213
+
214
+ // Large screen / wide desktop
215
+ $screen-lg: 1200px !default;
216
+ $screen-lg-desktop: $screen-lg !default;
217
+
218
+ // So media queries don't overlap when required, provide a maximum
219
+ $screen-xs-max: ($screen-sm - 1) !default;
220
+ $screen-sm-max: ($screen-md - 1) !default;
221
+ $screen-md-max: ($screen-lg - 1) !default;
222
+
223
+
224
+ // Grid system
225
+ // --------------------------------------------------
226
+
227
+ // Number of columns in the grid system
228
+ $grid-columns: 12 !default;
229
+ // Padding, to be divided by two and applied to the left and right of all columns
230
+ $grid-gutter-width: 30px !default;
231
+ // Point at which the navbar stops collapsing
232
+ $grid-float-breakpoint: $screen-tablet !default;
233
+
234
+
235
+ // Navbar
236
+ // -------------------------
237
+
238
+ // Basics of a navbar
239
+ $navbar-height: 50px !default;
240
+ $navbar-margin-bottom: $line-height-computed !default;
241
+ $navbar-default-color: #777 !default;
242
+ $navbar-default-bg: #f8f8f8 !default;
243
+ $navbar-default-border: darken($navbar-default-bg, 6.5%) !default;
244
+ $navbar-border-radius: $border-radius-base !default;
245
+ $navbar-padding-horizontal: floor($grid-gutter-width / 2) !default;
246
+ $navbar-padding-vertical: (($navbar-height - $line-height-computed) / 2) !default;
247
+
248
+ // Navbar links
249
+ $navbar-default-link-color: #777 !default;
250
+ $navbar-default-link-hover-color: #333 !default;
251
+ $navbar-default-link-hover-bg: transparent !default;
252
+ $navbar-default-link-active-color: #555 !default;
253
+ $navbar-default-link-active-bg: darken($navbar-default-bg, 6.5%) !default;
254
+ $navbar-default-link-disabled-color: #ccc !default;
255
+ $navbar-default-link-disabled-bg: transparent !default;
256
+
257
+ // Navbar brand label
258
+ $navbar-default-brand-color: $navbar-default-link-color !default;
259
+ $navbar-default-brand-hover-color: darken($navbar-default-link-color, 10%) !default;
260
+ $navbar-default-brand-hover-bg: transparent !default;
261
+
262
+ // Navbar toggle
263
+ $navbar-default-toggle-hover-bg: #ddd !default;
264
+ $navbar-default-toggle-icon-bar-bg: #ccc !default;
265
+ $navbar-default-toggle-border-color: #ddd !default;
266
+
267
+
268
+ // Inverted navbar
269
+ //
270
+ // Reset inverted navbar basics
271
+ $navbar-inverse-color: $gray-light !default;
272
+ $navbar-inverse-bg: #222 !default;
273
+ $navbar-inverse-border: darken($navbar-inverse-bg, 10%) !default;
274
+
275
+ // Inverted navbar links
276
+ $navbar-inverse-link-color: $gray-light !default;
277
+ $navbar-inverse-link-hover-color: #fff !default;
278
+ $navbar-inverse-link-hover-bg: transparent !default;
279
+ $navbar-inverse-link-active-color: $navbar-inverse-link-hover-color !default;
280
+ $navbar-inverse-link-active-bg: darken($navbar-inverse-bg, 10%) !default;
281
+ $navbar-inverse-link-disabled-color: #444 !default;
282
+ $navbar-inverse-link-disabled-bg: transparent !default;
283
+
284
+ // Inverted navbar brand label
285
+ $navbar-inverse-brand-color: $navbar-inverse-link-color !default;
286
+ $navbar-inverse-brand-hover-color: #fff !default;
287
+ $navbar-inverse-brand-hover-bg: transparent !default;
288
+
289
+ // Inverted navbar search
290
+ // Normal navbar needs no special styles or vars
291
+ $navbar-inverse-search-bg: lighten($navbar-inverse-bg, 25%) !default;
292
+ $navbar-inverse-search-bg-focus: #fff !default;
293
+ $navbar-inverse-search-border: $navbar-inverse-bg !default;
294
+ $navbar-inverse-search-placeholder-color: #ccc !default;
295
+
296
+ // Inverted navbar toggle
297
+ $navbar-inverse-toggle-hover-bg: #333 !default;
298
+ $navbar-inverse-toggle-icon-bar-bg: #fff !default;
299
+ $navbar-inverse-toggle-border-color: #333 !default;
300
+
301
+
302
+ // Navs
303
+ // -------------------------
304
+
305
+ $nav-link-padding: 10px 15px !default;
306
+ $nav-link-hover-bg: $gray-lighter !default;
307
+
308
+ $nav-disabled-link-color: $gray-light !default;
309
+ $nav-disabled-link-hover-color: $gray-light !default;
310
+
311
+ $nav-open-link-hover-color: #fff !default;
312
+ $nav-open-caret-border-color: #fff !default;
313
+
314
+ // Tabs
315
+ $nav-tabs-border-color: #ddd !default;
316
+
317
+ $nav-tabs-link-hover-border-color: $gray-lighter !default;
318
+
319
+ $nav-tabs-active-link-hover-bg: $body-bg !default;
320
+ $nav-tabs-active-link-hover-color: $gray !default;
321
+ $nav-tabs-active-link-hover-border-color: #ddd !default;
322
+
323
+ $nav-tabs-justified-link-border-color: #ddd !default;
324
+ $nav-tabs-justified-active-link-border-color: $body-bg !default;
325
+
326
+ // Pills
327
+ $nav-pills-active-link-hover-bg: $component-active-bg !default;
328
+ $nav-pills-active-link-hover-color: #fff !default;
329
+
330
+
331
+ // Pagination
332
+ // -------------------------
333
+
334
+ $pagination-bg: #fff !default;
335
+ $pagination-border: #ddd !default;
336
+
337
+ $pagination-hover-bg: $gray-lighter !default;
338
+
339
+ $pagination-active-bg: $brand-primary !default;
340
+ $pagination-active-color: #fff !default;
341
+
342
+ $pagination-disabled-color: $gray-light !default;
343
+
344
+
345
+ // Pager
346
+ // -------------------------
347
+
348
+ $pager-border-radius: 15px !default;
349
+ $pager-disabled-color: $gray-light !default;
350
+
351
+
352
+ // Jumbotron
353
+ // -------------------------
354
+
355
+ $jumbotron-padding: 30px !default;
356
+ $jumbotron-color: inherit !default;
357
+ $jumbotron-bg: $gray-lighter !default;
358
+
359
+ $jumbotron-heading-color: inherit !default;
360
+
361
+
362
+ // Form states and alerts
363
+ // -------------------------
364
+
365
+ $state-warning-text: #c09853 !default;
366
+ $state-warning-bg: #fcf8e3 !default;
367
+ $state-warning-border: darken(adjust-hue($state-warning-bg, -10), 3%) !default;
368
+
369
+ $state-danger-text: #b94a48 !default;
370
+ $state-danger-bg: #f2dede !default;
371
+ $state-danger-border: darken(adjust-hue($state-danger-bg, -10), 3%) !default;
372
+
373
+ $state-success-text: #468847 !default;
374
+ $state-success-bg: #dff0d8 !default;
375
+ $state-success-border: darken(adjust-hue($state-success-bg, -10), 5%) !default;
376
+
377
+ $state-info-text: #3a87ad !default;
378
+ $state-info-bg: #d9edf7 !default;
379
+ $state-info-border: darken(adjust-hue($state-info-bg, -10), 7%) !default;
380
+
381
+
382
+ // Tooltips
383
+ // -------------------------
384
+ $tooltip-max-width: 200px !default;
385
+ $tooltip-color: #fff !default;
386
+ $tooltip-bg: #000 !default;
387
+
388
+ $tooltip-arrow-width: 5px !default;
389
+ $tooltip-arrow-color: $tooltip-bg !default;
390
+
391
+
392
+ // Popovers
393
+ // -------------------------
394
+ $popover-bg: #fff !default;
395
+ $popover-max-width: 276px !default;
396
+ $popover-border-color: rgba(0,0,0,.2) !default;
397
+ $popover-fallback-border-color: #ccc !default;
398
+
399
+ $popover-title-bg: darken($popover-bg, 3%) !default;
400
+
401
+ $popover-arrow-width: 10px !default;
402
+ $popover-arrow-color: #fff !default;
403
+
404
+ $popover-arrow-outer-width: ($popover-arrow-width + 1) !default;
405
+ $popover-arrow-outer-color: rgba(0,0,0,.25) !default;
406
+ $popover-arrow-outer-fallback-color: #999 !default;
407
+
408
+
409
+ // Labels
410
+ // -------------------------
411
+
412
+ $label-default-bg: $gray-light !default;
413
+ $label-primary-bg: $brand-primary !default;
414
+ $label-success-bg: $brand-success !default;
415
+ $label-info-bg: $brand-info !default;
416
+ $label-warning-bg: $brand-warning !default;
417
+ $label-danger-bg: $brand-danger !default;
418
+
419
+ $label-color: #fff !default;
420
+ $label-link-hover-color: #fff !default;
421
+
422
+
423
+ // Modals
424
+ // -------------------------
425
+ $modal-inner-padding: 20px !default;
426
+
427
+ $modal-title-padding: 15px !default;
428
+ $modal-title-line-height: $line-height-base !default;
429
+
430
+ $modal-content-bg: #fff !default;
431
+ $modal-content-border-color: rgba(0,0,0,.2) !default;
432
+ $modal-content-fallback-border-color: #999 !default;
433
+
434
+ $modal-backdrop-bg: #000 !default;
435
+ $modal-header-border-color: #e5e5e5 !default;
436
+ $modal-footer-border-color: $modal-header-border-color !default;
437
+
438
+
439
+ // Alerts
440
+ // -------------------------
441
+ $alert-padding: 15px !default;
442
+ $alert-border-radius: $border-radius-base !default;
443
+ $alert-link-font-weight: bold !default;
444
+
445
+ $alert-success-bg: $state-success-bg !default;
446
+ $alert-success-text: $state-success-text !default;
447
+ $alert-success-border: $state-success-border !default;
448
+
449
+ $alert-info-bg: $state-info-bg !default;
450
+ $alert-info-text: $state-info-text !default;
451
+ $alert-info-border: $state-info-border !default;
452
+
453
+ $alert-warning-bg: $state-warning-bg !default;
454
+ $alert-warning-text: $state-warning-text !default;
455
+ $alert-warning-border: $state-warning-border !default;
456
+
457
+ $alert-danger-bg: $state-danger-bg !default;
458
+ $alert-danger-text: $state-danger-text !default;
459
+ $alert-danger-border: $state-danger-border !default;
460
+
461
+
462
+ // Progress bars
463
+ // -------------------------
464
+ $progress-bg: #f5f5f5 !default;
465
+ $progress-bar-color: #fff !default;
466
+
467
+ $progress-bar-bg: $brand-primary !default;
468
+ $progress-bar-success-bg: $brand-success !default;
469
+ $progress-bar-warning-bg: $brand-warning !default;
470
+ $progress-bar-danger-bg: $brand-danger !default;
471
+ $progress-bar-info-bg: $brand-info !default;
472
+
473
+
474
+ // List group
475
+ // -------------------------
476
+ $list-group-bg: #fff !default;
477
+ $list-group-border: #ddd !default;
478
+ $list-group-border-radius: $border-radius-base !default;
479
+
480
+ $list-group-hover-bg: #f5f5f5 !default;
481
+ $list-group-active-color: #fff !default;
482
+ $list-group-active-bg: $component-active-bg !default;
483
+ $list-group-active-border: $list-group-active-bg !default;
484
+
485
+ $list-group-link-color: #555 !default;
486
+ $list-group-link-heading-color: #333 !default;
487
+
488
+
489
+ // Panels
490
+ // -------------------------
491
+ $panel-bg: #fff !default;
492
+ $panel-inner-border: #ddd !default;
493
+ $panel-border-radius: $border-radius-base !default;
494
+ $panel-footer-bg: #f5f5f5 !default;
495
+
496
+ $panel-default-text: $gray-dark !default;
497
+ $panel-default-border: #ddd !default;
498
+ $panel-default-heading-bg: #f5f5f5 !default;
499
+
500
+ $panel-primary-text: #fff !default;
501
+ $panel-primary-border: $brand-primary !default;
502
+ $panel-primary-heading-bg: $brand-primary !default;
503
+
504
+ $panel-success-text: $state-success-text !default;
505
+ $panel-success-border: $state-success-border !default;
506
+ $panel-success-heading-bg: $state-success-bg !default;
507
+
508
+ $panel-warning-text: $state-warning-text !default;
509
+ $panel-warning-border: $state-warning-border !default;
510
+ $panel-warning-heading-bg: $state-warning-bg !default;
511
+
512
+ $panel-danger-text: $state-danger-text !default;
513
+ $panel-danger-border: $state-danger-border !default;
514
+ $panel-danger-heading-bg: $state-danger-bg !default;
515
+
516
+ $panel-info-text: $state-info-text !default;
517
+ $panel-info-border: $state-info-border !default;
518
+ $panel-info-heading-bg: $state-info-bg !default;
519
+
520
+
521
+ // Thumbnails
522
+ // -------------------------
523
+ $thumbnail-padding: 4px !default;
524
+ $thumbnail-bg: $body-bg !default;
525
+ $thumbnail-border: #ddd !default;
526
+ $thumbnail-border-radius: $border-radius-base !default;
527
+
528
+ $thumbnail-caption-color: $text-color !default;
529
+ $thumbnail-caption-padding: 9px !default;
530
+
531
+
532
+ // Wells
533
+ // -------------------------
534
+ $well-bg: #f5f5f5 !default;
535
+
536
+
537
+ // Badges
538
+ // -------------------------
539
+ $badge-color: #fff !default;
540
+ $badge-link-hover-color: #fff !default;
541
+ $badge-bg: $gray-light !default;
542
+
543
+ $badge-active-color: $link-color !default;
544
+ $badge-active-bg: #fff !default;
545
+
546
+ $badge-font-weight: bold !default;
547
+ $badge-line-height: 1 !default;
548
+ $badge-border-radius: 10px !default;
549
+
550
+
551
+ // Breadcrumbs
552
+ // -------------------------
553
+ $breadcrumb-bg: #f5f5f5 !default;
554
+ $breadcrumb-color: #ccc !default;
555
+ $breadcrumb-active-color: $gray-light !default;
556
+
557
+
558
+ // Carousel
559
+ // ------------------------
560
+
561
+ $carousel-text-shadow: 0 1px 2px rgba(0,0,0,.6) !default;
562
+
563
+ $carousel-control-color: #fff !default;
564
+ $carousel-control-width: 15% !default;
565
+ $carousel-control-opacity: .5 !default;
566
+ $carousel-control-font-size: 20px !default;
567
+
568
+ $carousel-indicator-active-bg: #fff !default;
569
+ $carousel-indicator-border-color: #fff !default;
570
+
571
+ $carousel-caption-color: #fff !default;
572
+
573
+
574
+ // Close
575
+ // ------------------------
576
+ $close-color: #000 !default;
577
+ $close-font-weight: bold !default;
578
+ $close-text-shadow: 0 1px 0 #fff !default;
579
+
580
+
581
+ // Code
582
+ // ------------------------
583
+ $code-color: #c7254e !default;
584
+ $code-bg: #f9f2f4 !default;
585
+
586
+ $pre-bg: #f5f5f5 !default;
587
+ $pre-color: $gray-dark !default;
588
+ $pre-border-color: #ccc !default;
589
+ $pre-scrollable-max-height: 340px !default;
590
+
591
+ // Type
592
+ // ------------------------
593
+ $text-muted: $gray-light !default;
594
+ $abbr-border-color: $gray-light !default;
595
+ $headings-small-color: $gray-light !default;
596
+ $blockquote-small-color: $gray-light !default;
597
+ $blockquote-border-color: $gray-lighter !default;
598
+ $page-header-border-color: $gray-lighter !default;
599
+
600
+ // Miscellaneous
601
+ // -------------------------
602
+
603
+ // Hr border color
604
+ $hr-border: $gray-lighter !default;
605
+
606
+ // Horizontal forms & lists
607
+ $component-offset-horizontal: 180px !default;
608
+
609
+
610
+ // Container sizes
611
+ // --------------------------------------------------
612
+
613
+ // Small screen / tablet
614
+ $container-tablet: ((720px + $grid-gutter-width)) !default;
615
+
616
+ // Medium screen / desktop
617
+ $container-desktop: ((940px + $grid-gutter-width)) !default;
618
+
619
+ // Large screen / wide desktop
620
+ $container-lg-desktop: ((1140px + $grid-gutter-width)) !default;
content/assets/css/bootstrap/_wells.scss ADDED
@@ -0,0 +1,29 @@
1
+ //
2
+ // Wells
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Base class
7
+ .well {
8
+ min-height: 20px;
9
+ padding: 19px;
10
+ margin-bottom: 20px;
11
+ background-color: $well-bg;
12
+ border: 1px solid darken($well-bg, 7%);
13
+ border-radius: $border-radius-base;
14
+ @include box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
15
+ blockquote {
16
+ border-color: #ddd;
17
+ border-color: rgba(0,0,0,.15);
18
+ }
19
+ }
20
+
21
+ // Sizes
22
+ .well-lg {
23
+ padding: 24px;
24
+ border-radius: $border-radius-large;
25
+ }
26
+ .well-sm {
27
+ padding: 9px;
28
+ border-radius: $border-radius-small;
29
+ }
content/assets/css/bootstrap/bootstrap.scss ADDED
@@ -0,0 +1,59 @@
1
+ /*!
2
+ * Bootstrap v3.0.0
3
+ *
4
+ * Copyright 2013 Twitter, Inc
5
+ * Licensed under the Apache License v2.0
6
+ * http://www.apache.org/licenses/LICENSE-2.0
7
+ *
8
+ * Designed and built with all the love in the world by @mdo and @fat.
9
+ */
10
+
11
+ // Core variables and mixins
12
+ @import "variables";
13
+ @import "mixins";
14
+
15
+ // Reset
16
+ @import "normalize";
17
+ @import "print";
18
+
19
+ // Core CSS
20
+ @import "scaffolding";
21
+ @import "type";
22
+ @import "code";
23
+ @import "grid";
24
+ @import "tables";
25
+ @import "forms";
26
+ @import "buttons";
27
+
28
+ // Components
29
+ @import "component-animations";
30
+ @import "glyphicons";
31
+ @import "dropdowns";
32
+ @import "button-groups";
33
+ @import "input-groups";
34
+ @import "navs";
35
+ @import "navbar";
36
+ @import "breadcrumbs";
37
+ @import "pagination";
38
+ @import "pager";
39
+ @import "labels";
40
+ @import "badges";
41
+ @import "jumbotron";
42
+ @import "thumbnails";
43
+ @import "alerts";
44
+ @import "progress-bars";
45
+ @import "media";
46
+ @import "list-group";
47
+ @import "panels";
48
+ @import "wells";
49
+ @import "close";
50
+
51
+ // Components w/ JavaScript
52
+ @import "modals";
53
+ @import "tooltip";
54
+ @import "popovers";
55
+ @import "carousel";
56
+
57
+ // Utility classes
58
+ @import "utilities";
59
+ @import "responsive-utilities";
content/assets/seven.rss ADDED
@@ -0,0 +1,311 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <rss version="2.0"
3
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
4
+ xmlns:wfw="http://wellformedweb.org/CommentAPI/"
5
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
6
+ xmlns:atom="http://www.w3.org/2005/Atom"
7
+ xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
8
+ xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
9
+ >
10
+
11
+ <channel>
12
+ <title>Seven.CentOS.org</title>
13
+ <atom:link href="http://seven.centos.org/feed/" rel="self" type="application/rss+xml" />
14
+ <link>http://seven.centos.org</link>
15
+ <description>News, views and reports on CentOS-7</description>
16
+ <lastBuildDate>Tue, 07 Jan 2014 08:27:16 +0000</lastBuildDate>
17
+ <language>en-US</language>
18
+ <sy:updatePeriod>hourly</sy:updatePeriod>
19
+ <sy:updateFrequency>1</sy:updateFrequency>
20
+ <generator>http://wordpress.org/?v=3.8</generator>
21
+ <item>
22
+ <title>CentOSPlus kernel for .el7</title>
23
+ <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>
24
+ <comments>http://seven.centos.org/2014/01/centosplus-kernel-for-el7/#comments</comments>
25
+ <pubDate>Mon, 06 Jan 2014 17:36:17 +0000</pubDate>
26
+ <dc:creator><![CDATA[Akemi Yagi]]></dc:creator>
27
+ <category><![CDATA[General]]></category>
28
+
29
+ <guid isPermaLink="false">http://seven.centos.org/?p=78</guid>
30
+ <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>
31
+ <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>
32
+ <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>
33
+ <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>
34
+ <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>
35
+ ]]></content:encoded>
36
+ <wfw:commentRss>http://seven.centos.org/2014/01/centosplus-kernel-for-el7/feed/</wfw:commentRss>
37
+ <slash:comments>0</slash:comments>
38
+ </item>
39
+ <item>
40
+ <title>State of the build 20140104</title>
41
+ <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>
42
+ <comments>http://seven.centos.org/2014/01/state-of-the-build-20140104/#comments</comments>
43
+ <pubDate>Sat, 04 Jan 2014 02:16:03 +0000</pubDate>
44
+ <dc:creator><![CDATA[kbsingh]]></dc:creator>
45
+ <category><![CDATA[builds]]></category>
46
+
47
+ <guid isPermaLink="false">http://seven.centos.org/?p=76</guid>
48
+ <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>
49
+ <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>
50
+ <ul>
51
+ <li>noarch/apache-commons-net-3.2-7.el7.src.rpm</li>
52
+ <li>noarch/args4j-2.0.16-11.el7.src.rpm</li>
53
+ <li>noarch/boost-1.53.0-14.el7.src.rpm</li>
54
+ <li>noarch/byteman-2.0.4-3.el7.src.rpm</li>
55
+ <li>noarch/cdi-api-1.0-9.SP4.el7.src.rpm</li>
56
+ <li>noarch/fftw-3.3.3-6.el7.src.rpm</li>
57
+ <li>noarch/fprintd-0.5.0-1.el7.src.rpm</li>
58
+ <li>noarch/gimp-help-2.8.0-7.el7.src.rpm</li>
59
+ <li>noarch/gstreamer-plugins-base-0.10.36-4.el7.src.rpm</li>
60
+ <li>noarch/istack-commons-2.17-2.el7.src.rpm</li>
61
+ <li>noarch/jansi-1.9-5.el7.src.rpm</li>
62
+ <li>noarch/jarjar-1.4-3.el7.src.rpm</li>
63
+ <li>noarch/javassist-3.16.1-8.el7.src.rpm</li>
64
+ <li>noarch/jboss-ejb-3.1-api-1.0.2-7.el7.src.rpm</li>
65
+ <li>noarch/jboss-interceptors-1.1-api-1.0.2-0.6.20120319git49a904.el7.src.rpm</li>
66
+ <li>noarch/jboss-jaxrpc-1.1-api-1.0.1-4.el7.src.rpm</li>
67
+ <li>noarch/jboss-servlet-3.0-api-1.0.1-6.el7.src.rpm</li>
68
+ <li>noarch/jboss-transaction-1.1-api-1.0.1-5.el7.src.rpm</li>
69
+ <li>noarch/jing-trang-20091111-12.el7.src.rpm</li>
70
+ <li>noarch/json-c-0.11-1.el7.src.rpm</li>
71
+ <li>noarch/jsr-311-1.1.1-4.el7.src.rpm</li>
72
+ <li>noarch/libbase-1.1.3-8.el7.src.rpm</li>
73
+ <li>noarch/libfonts-1.1.3-11.el7.src.rpm</li>
74
+ <li>noarch/libformula-1.1.3-8.el7.src.rpm</li>
75
+ <li>noarch/libloader-1.1.3-7.el7.src.rpm</li>
76
+ <li>noarch/librepository-1.1.3-7.el7.src.rpm</li>
77
+ <li>noarch/libserializer-1.1.2-8.el7.src.rpm</li>
78
+ <li>noarch/maven-plugin-tools-3.1-14.el7.src.rpm</li>
79
+ <li>noarch/maven-site-plugin-3.2-5.el7.src.rpm</li>
80
+ <li>noarch/pentaho-libxml-1.1.3-8.el7.src.rpm</li>
81
+ <li>noarch/perl-Test-DistManifest-1.012-4.el7.src.rpm</li>
82
+ <li>noarch/plexus-compiler-2.2-5.el7.src.rpm</li>
83
+ <li>noarch/plexus-containers-1.5.5-12.el7.src.rpm</li>
84
+ <li>noarch/sac-1.3-15.el7.src.rpm</li>
85
+ <li>noarch/sisu-2.3.0-9.el7.src.rpm</li>
86
+ <li>noarch/stax-ex-1.7.1-4.el7.src.rpm</li>
87
+ <li>noarch/tomcat-7.0.40-2.el7.src.rpm</li>
88
+ <li>x86_64/at-3.1.13-12.el7.src.rpm</li>
89
+ <li>x86_64/compat-dapl-1.2.19-2.el7.src.rpm</li>
90
+ <li>x86_64/dapl-2.0.34-1.el7.src.rpm</li>
91
+ <li>x86_64/esc-1.1.0-25.el7.src.rpm</li>
92
+ <li>x86_64/fprintd-0.5.0-1.el7.src.rpm</li>
93
+ <li>x86_64/grilo-plugins-0.2.6-1.el7.src.rpm</li>
94
+ <li>x86_64/gstreamer-plugins-base-0.10.36-4.el7.src.rpm</li>
95
+ <li>x86_64/libreoffice-voikko-3.3-3.el7.src.rpm</li>
96
+ <li>x86_64/pyliblzma-0.5.3-8.el7.src.rpm</li>
97
+ <li>x86_64/scl-utils-20130529-1.el7.src.rpm</li>
98
+ <li>x86_64/xvattr-1.3-24.el7.src.rpm</li>
99
+ <li>x86_64/zsh-5.0.2-3.el7.src.rpm</li>
100
+ </ul>
101
+ <p>Know what it takes to build some of these ?</p>
102
+ ]]></content:encoded>
103
+ <wfw:commentRss>http://seven.centos.org/2014/01/state-of-the-build-20140104/feed/</wfw:commentRss>
104
+ <slash:comments>0</slash:comments>
105
+ </item>
106
+ <item>
107
+ <title>A bigger pool and more fish</title>
108
+ <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>
109
+ <comments>http://seven.centos.org/2014/01/a-bigger-pool-and-more-fish/#comments</comments>
110
+ <pubDate>Thu, 02 Jan 2014 00:47:00 +0000</pubDate>
111
+ <dc:creator><![CDATA[kbsingh]]></dc:creator>
112
+ <category><![CDATA[builds]]></category>
113
+
114
+ <guid isPermaLink="false">http://seven.centos.org/?p=72</guid>
115
+ <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>
116
+ <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>
117
+ <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>
118
+ <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>
119
+ <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>
120
+ <p>- KB</p>
121
+ ]]></content:encoded>
122
+ <wfw:commentRss>http://seven.centos.org/2014/01/a-bigger-pool-and-more-fish/feed/</wfw:commentRss>
123
+ <slash:comments>2</slash:comments>
124
+ </item>
125
+ <item>
126
+ <title>EPEL-6 buildrun on RHEL7b1</title>
127
+ <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>
128
+ <comments>http://seven.centos.org/2014/01/epel-6-buildrun-on-rhel7b1/#comments</comments>
129
+ <pubDate>Thu, 02 Jan 2014 00:39:00 +0000</pubDate>
130
+ <dc:creator><![CDATA[kbsingh]]></dc:creator>
131
+ <category><![CDATA[builds]]></category>
132
+ <category><![CDATA[General]]></category>
133
+
134
+ <guid isPermaLink="false">http://seven.centos.org/?p=69</guid>
135
+ <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>
136
+ <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>
137
+ <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>
138
+ <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>
139
+ <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>
140
+ <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>
141
+ <p>&nbsp;</p>
142
+ ]]></content:encoded>
143
+ <wfw:commentRss>http://seven.centos.org/2014/01/epel-6-buildrun-on-rhel7b1/feed/</wfw:commentRss>
144
+ <slash:comments>0</slash:comments>
145
+ </item>
146
+ <item>
147
+ <title>t_functional update</title>
148
+ <link>http://seven.centos.org/2013/12/t_functional-update/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=t_functional-update</link>
149
+ <comments>http://seven.centos.org/2013/12/t_functional-update/#comments</comments>
150
+ <pubDate>Thu, 26 Dec 2013 21:56:07 +0000</pubDate>
151
+ <dc:creator><![CDATA[Christoph Galuschka]]></dc:creator>
152
+ <category><![CDATA[t_functional]]></category>
153
+
154
+ <guid isPermaLink="false">http://seven.centos.org/?p=60</guid>
155
+ <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>
156
+ <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>
157
+ ]]></content:encoded>
158
+ <wfw:commentRss>http://seven.centos.org/2013/12/t_functional-update/feed/</wfw:commentRss>
159
+ <slash:comments>2</slash:comments>
160
+ </item>
161
+ <item>
162
+ <title>t_functional status against el7b1</title>
163
+ <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>
164
+ <comments>http://seven.centos.org/2013/12/t_functional-status-against-el7b1/#comments</comments>
165
+ <pubDate>Thu, 26 Dec 2013 17:01:14 +0000</pubDate>
166
+ <dc:creator><![CDATA[Fabian Arrotin]]></dc:creator>
167
+ <category><![CDATA[t_functional]]></category>
168
+
169
+ <guid isPermaLink="false">http://seven.centos.org/?p=55</guid>
170
+ <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>
171
+ <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>
172
+ <ul>
173
+ <li>p_amanda:FAIL</li>
174
+ <li>p_anaconda:FAIL</li>
175
+ <li>p_arpwatch:FAIL</li>
176
+ <li>p_busybox:FAIL</li>
177
+ <li>p_centos-release:FAIL</li>
178
+ <li>p_chkconfig:FAIL</li>
179
+ <li>p_cron:FAIL</li>
180
+ <li>p_diffutils:FAIL</li>
181
+ <li>p_dovecot:FAIL</li>
182
+ <li>p_file:FAIL</li>
183
+ <li>p_freeradius:FAIL</li>
184
+ <li>p_grub:FAIL</li>
185
+ <li>p_gzip:FAIL</li>
186
+ <li>p_httpd:FAIL</li>
187
+ <li>p_initscripts:FAIL</li>
188
+ <li>p_iptables:FAIL</li>
189
+ <li>p_iptraf:FAIL</li>
190
+ <li>p_iputils:FAIL</li>
191
+ <li>p_jwhois:FAIL</li>
192
+ <li>p_kernel:FAIL</li>
193
+ <li>p_logwatch:FAIL</li>
194
+ <li>p_lsb:FAIL</li>
195
+ <li>p_lynx:FAIL</li>
196
+ <li>p_mailman:FAIL</li>
197
+ <li>p_mysql:FAIL</li>
198
+ <li>p_network:FAIL</li>
199
+ <li>p_ntp:FAIL</li>
200
+ <li>p_openssh:FAIL</li>
201
+ <li>p_passwd:FAIL</li>
202
+ <li>p_php:FAIL</li>
203
+ <li>p_postgresql:FAIL</li>
204
+ <li>p_procinfo:FAIL</li>
205
+ <li>p_python:FAIL</li>
206
+ <li>p_rsync:FAIL</li>
207
+ <li>p_ruby:FAIL</li>
208
+ <li>p_sendmail:FAIL</li>
209
+ <li>p_squid:FAIL</li>
210
+ <li>p_squirrelmail:FAIL</li>
211
+ <li>p_tcpdump:FAIL</li>
212
+ <li>p_tftp-server:FAIL</li>
213
+ <li>p_tomcat:FAIL</li>
214
+ <li>p_traceroute:FAIL</li>
215
+ <li>p_vconfig:FAIL</li>
216
+ <li>p_webalizer:FAIL</li>
217
+ <li>p_yum:FAIL</li>
218
+ <li>p_yum-plugin-fastestmirror:FAIL</li>
219
+ </ul>
220
+ <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>
221
+ ]]></content:encoded>
222
+ <wfw:commentRss>http://seven.centos.org/2013/12/t_functional-status-against-el7b1/feed/</wfw:commentRss>
223
+ <slash:comments>2</slash:comments>
224
+ </item>
225
+ <item>
226
+ <title>State of the build 20131224</title>
227
+ <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>
228
+ <comments>http://seven.centos.org/2013/12/state-of-the-build-20131224/#comments</comments>
229
+ <pubDate>Tue, 24 Dec 2013 12:18:17 +0000</pubDate>
230
+ <dc:creator><![CDATA[kbsingh]]></dc:creator>
231
+ <category><![CDATA[builds]]></category>
232
+
233
+ <guid isPermaLink="false">http://seven.centos.org/?p=51</guid>
234
+ <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>
235
+ <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>
236
+ <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>
237
+ <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>
238
+ <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>
239
+ <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>
240
+ <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>
241
+ <p>- KB</p>
242
+ ]]></content:encoded>
243
+ <wfw:commentRss>http://seven.centos.org/2013/12/state-of-the-build-20131224/feed/</wfw:commentRss>
244
+ <slash:comments>2</slash:comments>
245
+ </item>
246
+ <item>
247
+ <title>preventing gnome3&#8242;s initial setup</title>
248
+ <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>
249
+ <comments>http://seven.centos.org/2013/12/preventing-gnome3s-initial-setup/#comments</comments>
250
+ <pubDate>Mon, 23 Dec 2013 21:48:36 +0000</pubDate>
251
+ <dc:creator><![CDATA[Jim Perrin]]></dc:creator>
252
+ <category><![CDATA[Uncategorized]]></category>
253
+
254
+ <guid isPermaLink="false">http://seven.centos.org/?p=47</guid>
255
+ <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>
256
+ <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>
257
+ <p>Turns out there&#8217;s a very simple way to prevent this annoyance from spreading further than it needs to.</p>
258
+ <p><code><br />
259
+ mkdir ~/.config<br />
260
+ echo "yes" &gt;&gt; ~/.config/gnome-initial-setup-done<br />
261
+ </code></p>
262
+ <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>
263
+ ]]></content:encoded>
264
+ <wfw:commentRss>http://seven.centos.org/2013/12/preventing-gnome3s-initial-setup/feed/</wfw:commentRss>
265
+ <slash:comments>0</slash:comments>
266
+ </item>
267
+ <item>
268
+ <title>NetworkManager and bridging</title>
269
+ <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>
270
+ <comments>http://seven.centos.org/2013/12/network-manager-and-bridging/#comments</comments>
271
+ <pubDate>Fri, 20 Dec 2013 15:46:02 +0000</pubDate>
272
+ <dc:creator><![CDATA[Jim Perrin]]></dc:creator>
273
+ <category><![CDATA[networking]]></category>
274
+
275
+ <guid isPermaLink="false">http://seven.centos.org/?p=37</guid>
276
+ <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>
277
+ <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>
278
+ <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>
279
+ <ul>
280
+ <li>There isn&#8217;t an intuitive way to create a bridge in the NetworkManager gui.</li>
281
+ <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>
282
+ <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>
283
+ </ul>
284
+ <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>
285
+ <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>
286
+ <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>
287
+ ]]></content:encoded>
288
+ <wfw:commentRss>http://seven.centos.org/2013/12/network-manager-and-bridging/feed/</wfw:commentRss>
289
+ <slash:comments>2</slash:comments>
290
+ </item>
291
+ <item>
292
+ <title>State of the build 20131219</title>
293
+ <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>
294
+ <comments>http://seven.centos.org/2013/12/state-of-the-build-20131219/#comments</comments>
295
+ <pubDate>Thu, 19 Dec 2013 09:53:46 +0000</pubDate>
296
+ <dc:creator><![CDATA[kbsingh]]></dc:creator>
297
+ <category><![CDATA[builds]]></category>
298
+
299
+ <guid isPermaLink="false">http://seven.centos.org/?p=39</guid>
300
+ <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>
301
+ <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>
302
+ <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>
303
+ <p>So, are we there yet ? Not quite. 72 Failed builds, 388 Done, Lots to go.</p>
304
+ <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>
305
+ <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>
306
+ ]]></content:encoded>
307
+ <wfw:commentRss>http://seven.centos.org/2013/12/state-of-the-build-20131219/feed/</wfw:commentRss>
308
+ <slash:comments>1</slash:comments>
309
+ </item>
310
+ </channel>
311
+ </rss>
content/community/stories.md ADDED
@@ -0,0 +1,14 @@
1
+ ---
2
+ title: "CentOS community stories"
3
+ markdown: basic
4
+ is_dynamic: true
5
+ ---
6
+ 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.
7
+
8
+ If you have one you'd like to offer up, get in touch with me at http://wiki.centos.org/KaranbirSingh
9
+ {:toc}
10
+
11
+
12
+ #CentOS community stories
13
+
14
+ (Stories to go here.)
content/download.haml ADDED
@@ -0,0 +1,59 @@
1
+ ---
2
+ layout: default-haml
3
+ title: Download CentOS
4
+ ---
5
+ .jumbotron
6
+ %h1 Download CentOS
7
+ %p
8
+ 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.
9
+ %a( href="http://wiki.centos.org/Donate" ) If you are able, please consider donating to the CentOS Project.
10
+ .row
11
+ .col-sm-6
12
+ .downloadbutton
13
+ %a( href="http://isoredirect.centos.org/centos/6/isos/x86_64/CentOS-6.5-x86_64-bin-DVD1.iso" ) Download now.
14
+ %p
15
+ Latest version - X86 64bit DVD - also
16
+ %a( href="http://isoredirect.centos.org/centos/6/isos/x86_64/CentOS-6.5-x86_64-bin-DVD1to2.torrent" ) via Torrent.
17
+ %p
18
+ If the above is not for you,
19
+ %a( href="http://wiki.centos.org/Download" ) alternative downloads
20
+ might be.
21
+
22
+ .col-sm-6
23
+ %h2 Need a Cloud Image?
24
+ %p
25
+ Looking to run CentOS in the Cloud? We have a number of official CentOS Linux images for Amazon Web Services, OpenNebula and more.
26
+ %a( href="http://wiki.centos.org/Cloud" ) Check out our Clouds
27
+ .row
28
+ .col-sm-12
29
+ %hr
30
+ %p
31
+ If you're looking for a specific (or geographically local) mirror, please check out our
32
+ %a(href="/download/mirrors/") List of Current Mirrors
33
+ %p
34
+ To check the status of a mirror, please visit
35
+ %a(href="http://mirror-status.centos.org/") mirror-status.centos.org
36
+ %hr
37
+
38
+
39
+ .row
40
+ .col-sm-4
41
+ %h2.text-center Minimal Install Images
42
+ %p
43
+ The absolute bare minimum no-frills install media for CentOS. For experienced users who don't need or want anything extra for their install.
44
+ %a( href="http://wiki.centos.org/Manuals/ReleaseNotes/CentOSMinimalCD6.5" ) More Information &raquo;
45
+ .col-sm-4
46
+ %h2.text-center Older Versions
47
+ %p
48
+ 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:
49
+ %a( href="http://vault.centos.org" ) then click here &raquo;
50
+ .col-sm-4
51
+ %h2.text-center Need the Source?
52
+ %p
53
+ 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
54
+ %a( href="http://vault.centos.org" ) vault.centos.org &raquo;
55
+ .row
56
+ .col-sm-12
57
+ %h3.text-center.smallprint Export Regulations
58
+ %p.smallprint
59
+ 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.
content/download/cloud.md ADDED
@@ -0,0 +1,22 @@
1
+ ---
2
+ title: "CentOS Cloud Images"
3
+ markdown: basic
4
+ is_dynamic: true
5
+ has_toc: true
6
+ ---
7
+ Amazon AMI information here
8
+ ===========================
9
+
10
+ Basic info on Amazon images here
11
+
12
+
13
+
14
+ HyperV image info here
15
+ ======================
16
+ Yes, Microsoft has a cloud. Yes we run in it.
17
+ Here is the basic info you will need.
18
+
19
+
20
+ Everything I missed
21
+ ===================
22
+
content/download/full-mirrorlist.csv ADDED
@@ -0,0 +1,485 @@
1
+ "Africa","Egypt","CityNet Host Data Center Egypt","http://www.citynethost.com/","http://mirror.citynethost.com/centos/","",""
2
+ "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/"
3
+ "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/"
4
+ "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/",""
5
+ "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/"
6
+ "Africa","Tanzania","Aptus Solutions","http://www.aptus.co.tz/","http://mirror.aptus.co.tz/pub/centos/","",""
7
+ "Africa","Uganda","Uganda Christian University","http://www.ucu.ac.ug/","http://mirror.ucu.ac.ug/centos/","",""
8
+ "Asia","Bangladesh","dhakaCom Limited","http://www.dhakacom.com/","http://mirror.dhakacom.com/centos/","ftp://mirror.dhakacom.com/centos/",""
9
+ "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/"
10
+ "Asia","China","Beijing Institute of Technology","http://www.bit.edu.cn/","http://mirror.bit.edu.cn/centos/","",""
11
+ "Asia","China","Beijing Teletron Telecom Engineering","http://www.btte.com.cn","http://mirrors.btte.net/centos/","",""
12
+ "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/"
13
+ "Asia","China","Dalian Neusoft University of Information","http://www.neusoft.edu.cn/","http://mirrors.neusoft.edu.cn/centos/","ftp://mirrors.neusoft.edu.cn/centos/",""
14
+ "Asia","China","esocc","http://www.esocc.com/","http://mirror.esocc.com/centos/","",""
15
+ "Asia","China","Grand Cloud","http://www.grandcloud.cn/","http://mirrors.grandcloud.cn/centos/","",""
16
+ "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/"
17
+ "Asia","China","NetEase","http://www.163.com/","http://mirrors.163.com/centos/","",""
18
+ "Asia","China","Northeastern University, Shenyang Liaoni","http://www.neu.edu.cn/","http://mirror.neu.edu.cn/centos/","",""
19
+ "Asia","China","Qiming College of Huazhong University of Science and Technology","","http://mirrors.hustunique.com/centos/","","rsync://mirrors.hustunique.com/centos/"
20
+ "Asia","China","Sohu Inc, Beijing P.R. China","http://www.sohu.com/","http://mirrors.sohu.com/centos/","",""
21
+ "Asia","China","Star Studio of UESTC","http://www.uestc.edu.cn/","http://mirrors.stuhome.net/centos/","ftp://mirrors.stuhome.net/centos/",""
22
+ "Asia","China","Tsinghua University","http://www.tsinghua.edu.cn/","http://mirrors.tuna.tsinghua.edu.cn/centos/","",""
23
+ "Asia","China","University of Science and Tech of China","http://www.ustc.edu.cn/","http://centos.ustc.edu.cn/centos/","",""
24
+ "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/",""
25
+ "Asia","Hong Kong","01LINK NETWORK SERVICES LIMITED","http://www.01link.net/","http://centos.01link.hk/","ftp://centos.01link.hk/","rsync://centos.01link.hk/centos/"
26
+ "Asia","Hong Kong","CommuniLink Internet Limited","http://www.communilink.net/","http://centos.communilink.net/","ftp://centos.communilink.net/centos/",""
27
+ "Asia","Hong Kong","i-System Technology Limited","http://www.uhost.hk/","http://centos.uhost.hk/","ftp://centos.uhost.hk/centos/",""
28
+ "Asia","Hong Kong","SunnyVision Limited","http://www.sunnyvision.com/","http://mirror.sunnyvision.com/centos/","",""
29
+ "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/",""
30
+ "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/",""
31
+ "Asia","India","AOL Online India Pvt. Ltd.","http://corp.aol.in/","http://centos.aol.in/","",""
32
+ "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/"
33
+ "Asia","India","Excell Media Pvt. Ltd.","http://www.excellmedia.net/","http://centos.excellmedia.net/","",""
34
+ "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/"
35
+ "Asia","India","LeapSwitch Networks","http://www.leapswitch.com/","http://mirror.leapswitch.com/centos/","",""
36
+ "Asia","India","National Brain Research Centre","http://nbrc.ac.in/","http://mirror.nbrc.ac.in/centos/","",""
37
+ "Asia","Indonesia","Biznet Networks","http://www.biznetnetworks.com/","http://centos.biz.net.id/","","rsync://centos.biz.net.id/centos/"
38
+ "Asia","Indonesia","JR Webhost","http://www.jr-webhost.net/","http://centos.jr-webhost.net/","",""
39
+ "Asia","Indonesia","Kelompok Linux Arek Surabaya (KLAS)/PT Rahajasa Media Internet (RADNET)","","http://buaya.klas.or.id/centos/","ftp://buaya.klas.or.id/centos/",""
40
+ "Asia","Indonesia","Smart Media Pratama, PT.","http://smartmedia.net.id/","http://mirror.smartmedia.net.id/centos/","ftp://mirror.smartmedia.net.id/centos/",""
41
+ "Asia","Japan","FAIRWAY Corporation","http://www.fairway-corp.co.jp/","http://mirror.fairway.ne.jp/centos/","ftp://mirror.fairway.ne.jp/centos/",""
42
+ "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/"
43
+ "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/"
44
+ "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/"
45
+ "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"
46
+ "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/"
47
+ "Asia","Japan","WIDEProject Tsukuba NOC","","http://ftp.tsukuba.wide.ad.jp/Linux/centos/","",""
48
+ "Asia","Kazakhstan","Neolabs LLP","http://neolabs.kz","http://mirror.neolabs.kz/centos/","ftp://mirror.neolabs.kz/centos/","rsync://mirror.neolabs.kz/centos/"
49
+ "Asia","Korea","AoneNetworks Co.,Ltd.","http://www.nicehosting.co.kr","http://data.nicehosting.co.kr/os/CentOS/","",""
50
+ "Asia","Korea","CDNetworks Co., Ltd.","http://www.cdnetworks.com/","http://centos.mirror.cdnetworks.com/","ftp://centos.mirror.cdnetworks.com/centos/",""
51
+ "Asia","Korea","NeowizGames corp.","http://www.pmang.com/","http://ftp.neowiz.com/centos/","ftp://ftp.neowiz.com/centos/","rsync://ftp.neowiz.com::centos"
52
+ "Asia","Korea","TODAY&TOMORROW CO., LTD.","http://tt.co.kr/gate/main.php","http://centos.tt.co.kr/","",""
53
+ "Asia","Malaysia","Hostemo Technology Sdn Bhd","http://www.hostemo.com/","http://mirrors.hostemo.com/CentOS/","",""
54
+ "Asia","Malaysia","IP ServerOne Solutions Sdn Bhd","http://www.ipserverone.com/","http://centos.ipserverone.com/centos/","",""
55
+ "Asia","Malaysia","OSCC MAMPU","http://www.oscc.org.my/","http://mirror.oscc.org.my/centos/","",""
56
+ "Asia","Malaysia","Sultan Idris Education University","http://www.upsi.edu.my/","http://mirror.upsi.edu.my/centos/","",""
57
+ "Asia","Malaysia","Universiti Teknologi Malaysia","http://www.utm.my/","http://ossm.utm.my/centos/","","rsync://ossm.utm.my/centos/"
58
+ "Asia","Mongolia","Mongolian National Data Center","http://www.ndc.gov.mn/","http://mirror.ndc.mn/centos/","",""
59
+ "Asia","Mongolia","National University of Mongolia","http://www.num.edu.mn/","http://centos.num.edu.mn/","ftp://centos.num.edu.mn/",""
60
+ "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/"
61
+ "Asia","Pakistan","MAGSNET LIMITED","http://www.magsnet.net/","http://centos-mirror.magsnet.net/centos/","",""
62
+ "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/",""
63
+ "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/",""
64
+ "Asia","South Korea","Premist","http://premi.st/","http://mirror.premi.st/centos/","",""
65
+ "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/"
66
+ "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/",""
67
+ "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/",""
68
+ "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/"
69
+ "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/",""
70
+ "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/",""
71
+ "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/",""
72
+ "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/",""
73
+ "Asia","Thailand","Bangmod Hosting","http://www.bangmodhosting.com/","http://mirrors.bangmodhosting.com/centos/","","rsync://mirrors.bangmodhosting.com/centos/"
74
+ "Asia","Thailand","Kasetsart University","http://www.ku.ac.th/","http://mirror1.ku.ac.th/centos/","",""
75
+ "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/"
76
+ "Asia","Thailand","THZ Hosting","http://www.thzhost.com/","http://mirrors.thzhost.com/centos/","","rsync://mirrors.thzhost.com/centos/"
77
+ "Asia","Vietnam","DIGIPOWER Co.,ltd","http://www.digipower.vn/","http://mirrors.digipower.vn/centos/","ftp://mirrors.digipower.vn/centos/","rsync://mirrors.digipower.vn/centos/"
78
+ "Asia","Vietnam","Fibo Web","http://fiboweb.com/","http://mirrors.fibo.vn/centos/","",""
79
+ "Asia","Vietnam","FPT Telecom","http://www.fpt.net/EN/","http://mirror-fpt-telecom.fpt.net/centos/","ftp://mirror-fpt-telecom.fpt.net/mirror/centos/",""
80
+ "Asia","Vietnam","HanoiLUG","http://www.hanoilug.org/","http://virror.hanoilug.org/centos/","",""
81
+ "Asia","Vietnam","VietOSS","","http://mirror.vietoss.com/CentOS/","",""
82
+ "Asia","Vietnam","Viettel IDC ","http://viettelidc.com.vn/","http://centos-hcm.viettelidc.com.vn/","",""
83
+ "Asia","Vietnam","Viettel IDC","http://viettelidc.com.vn/","http://centos-hn.viettelidc.com.vn/","",""
84
+ "Asia","Vietnam","VinaHost Co., Ltd","http://vinahost.vn/","http://mirrors.vinahost.vn/centos/","",""
85
+ "Asia","Vietnam","VONLINE","http://vonline.vn/","http://mirrors.vonline.vn/centos/","",""
86
+ "Canada","AB","Arctic Network Mirrors","http://www.arcticnetwork.ca/","http://centos.arcticnetwork.ca/","ftp://centos.arcticnetwork.ca/pub/centos/","rsync://centos.arcticnetwork.ca/centos/"
87
+ "Canada","BC","Simon Fraser University","http://www.fas.sfu.ca/","http://mirror.its.sfu.ca/mirror/CentOS/","",""
88
+ "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/"
89
+ "Canada","MB","Westman Communications Grp","http://www.westmancom.com/","http://centos.westmancom.com/","ftp://centos.westmancom.com/",""
90
+ "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/"
91
+ "Canada","ON","Adeste Global Managed Networks","http://www.adesteglobal.com/","http://mirror.agmn.ca/mirror/centos/","",""
92
+ "Canada","ON","Atwab Networks","http://www.atwab.net/","http://centos.mirrors.atwab.net/","ftp://centos.mirrors.atwab.net/","rsync://centos.mirrors.atwab.net::shares/"
93
+ "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"
94
+ "Canada","ON","Cogeco Inc.","http://www.cogeco.net/","http://less.cogeco.net/CentOS/","ftp://less.cogeco.net/CentOS/",""
95
+ "Canada","ON","Netflash Internet Solutions","http://www.netflash.net/","http://mirror.netflash.net/centos/","ftp://mirror.netflash.net/centos/","rsync://mirror.netflash.net/centos/"
96
+ "Canada","ON","Nexicom Inc","http://www.nexicom.net","http://centos.mirror.nexicom.net/","ftp://mirror.nexicom.net/pub/centos/","rsync://mirror.nexicom.net/CentOS"
97
+ "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/"
98
+ "Canada","ON","University of Ottawa, Faculty of Science","http://www.science.uottawa.ca/","http://mirror.science.uottawa.ca/centos/","",""
99
+ "Canada","ON","Wightman Telecom","http://wightman.ca/","http://mirror.netaddicted.ca/CentOS/","ftp://mirror.netaddicted.ca/CentOS/",""
100
+ "Canada","QC","Cubicule Studio inc.","http://www.cubiculestudio.com/","http://www.cubiculestudio.com/centos/","",""
101
+ "Canada","QC","GloboTech Communications","http://www.gtcomm.net/","http://centos.mirror.gtcomm.net/","",""
102
+ "Canada","QC","iWeb Technologies Inc.","http://iweb.com/","http://centos.mirror.iweb.ca/","ftp://centos.mirror.iweb.ca/","rsync://centos.mirror.iweb.ca/centos"
103
+ "Canada","QC","Netelligent","http://www.netelligent.ca/centos/","http://centos.mirror.netelligent.ca/centos/","",""
104
+ "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/"
105
+ "Canada","QC","PlanetHoster Canada","http://www.planethoster.net/","http://centos.mirror.ca.planethoster.net/","",""
106
+ "Canada","QC","VEXXHOST","http://www.vexxhost.com/","http://centos.mirror.vexxhost.com/","ftp://mirror.vexxhost.com/centos/","rsync://mirror.vexxhost.com/centos/"
107
+ "EU","Armenia","ARMINCO Global Telecommunications","http://www.arminco.com/","http://centos.mirrors.arminco.com/","",""
108
+ "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/"
109
+ "EU","Austria","netzpionier and it&tel","http://www.mirroraustria.at/","http://centos.mirroraustria.at/","http://centos.mirroraustria.at/","rsync://centos.mirroraustria.at/CentOS/"
110
+ "EU","Azerbaijan","Delta Telecom LTD ","http://delta-telecom.net/","http://centos.datacenter.az/","",""
111
+ "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/"
112
+ "EU","Belgium","All In One","http://www.all-in-one.be/","http://mirror.myip.be/pub/centos/","",""
113
+ "EU","Belgium","Connexeon bvba","http://www.connexeon.com","http://centos.mirror.connexeon.net/","",""
114
+ "EU","Belgium","Cu.be Solutions","http://cu.be/","http://centos.cu.be/","",""
115
+ "EU","Belgium","EURid (BE)","http://www.eurid.eu/","http://be.mirror.eurid.eu/centos/","ftp://be.mirror.eurid.eu/centos/",""
116
+ "EU","Belgium","Nucleus","http://www.nucleus.be/","http://centos.mirror.nucleus.be/","ftp://centos.mirror.nucleus.be/",""
117
+ "EU","Belgium","WeePee telecom","http://www.weepeetelecom.be/","http://centos.weepeetelecom.be/","",""
118
+ "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/"
119
+ "EU","Bulgaria","Cherybg (Private Mirror)","http://www.cherybg.com/","http://mirror.cherybg.com/centos/","",""
120
+ "EU","Bulgaria","Neterra LTD","http://www.neterra.net/","http://mirrors.neterra.net/centos/","ftp://mirrors.neterra.net/centos/","rsync://mirrors.neterra.net/centos/"
121
+ "EU","Bulgaria","Svetozar Mihailov Private Mirror","","http://mirror.zarhi.com/","http://mirror.zarhi.com/",""
122
+ "EU","Bulgaria","Telecoms Ltd.","http://www.telecoms.bg/","http://centos.telecoms.bg/","ftp://centos.telecoms.bg/",""
123
+ "EU","Bulgaria","Telepoint Bulgaria","http://telepoint.bg/","http://mirror.telepoint.bg/centos/","ftp://mirror.telepoint.bg/centos/",""
124
+ "EU","Croatia","Plus Hosting","http://www.plus.hr/","http://mirror.centos.plus.hr/centos/","ftp://mirror.centos.plus.hr/centos/",""
125
+ "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/",""
126
+ "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/"
127
+ "EU","Czech Republic","Czech Technical University","http://www.cvut.cz","http://ftp.cvut.cz/centos/","ftp://ftp.cvut.cz/centos/",""
128
+ "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/"
129
+ "EU","Czech Republic","Hosting90 systems s.r.o.","http://www.hosting90.cz/","http://mirror.hosting90.cz/centos/","ftp://mirror.hosting90.cz/centos/",""
130
+ "EU","Czech Republic","Karneval Media","http://www.karneval.cz","http://mirror.karneval.cz/pub/centos/","ftp://mirror.karneval.cz/pub/centos/",""
131
+ "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/"
132
+ "EU","Denmark","Carlsberg Research Center","http://www.crc.dk/","","ftp://ftp.crc.dk/pub/mirrors/centos/",""
133
+ "EU","Denmark","EasySpeedy","http://easyspeedy.com/","http://mirror.easyspeedy.com/centos/","ftp://mirror.easyspeedy.com/centos/","rsync://mirror.easyspeedy.com/centos/"
134
+ "EU","Denmark","Physics Dept, Technical Univ of Denmark","http://www.fys.dtu.dk/","http://mirror.fysik.dtu.dk/linux/centos/","",""
135
+ "EU","Denmark","Skytech","http://skytech.dk/","http://centos.skarta.net/","","rsync://centos.skarta.net::CentOS"
136
+ "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"
137
+ "EU","Finland","Academica Oy","http://academica.fi/","http://mirror.academica.fi/CentOS/","ftp://mirror.academica.fi/CentOS/","rsync://mirror.academica.fi/CentOS"
138
+ "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/"
139
+ "EU","France","Atos Worldline","http://www.atos.net/","http://mirrors.atosworldline.com/public/centos/","",""
140
+ "EU","France","Avenir Telematique SAS","http://www.ate.info","http://mirror.ate.info/ftp.centos.org/","",""
141
+ "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/"
142
+ "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/"
143
+ "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/"
144
+ "EU","France","ftp.free.fr","","","ftp://ftp.free.fr/mirrors/ftp.centos.org/",""
145
+ "EU","France","Institut Pasteur","http://www.pasteur.fr/","","ftp://ftp.pasteur.fr/pub/computing/linux/centos/",""
146
+ "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/"
147
+ "EU","France","Matt Clements (private mirror)","http://mattclements.co.uk/","http://centos.mattclements.co.uk/","",""
148
+ "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/"
149
+ "EU","France","PlanetHoster France","http://www.planethoster.net/","http://centos.mirror.fr.planethoster.net/","",""
150
+ "EU","France","RelouFR Networks","http://www.reloumirrors.net/","http://centos.crazyfrogs.org/","","rsync://centos.crazyfrogs.org/centos/"
151
+ "EU","France","Rezopole","http://www.rezopole.net/","http://ftp.rezopole.net/centos/","ftp://ftp.rezopole.net/centos/","ftp.rezopole.net::centos"
152
+ "EU","France","Rpmfind","http://rpmfind.net/","http://fr2.rpmfind.net/linux/centos/","ftp://fr2.rpmfind.net/linux/centos/","rsync://fr2.rpmfind.net/linux/centos/"
153
+ "EU","France","Syntis","http://www.syntis.net/","http://mir01.syntis.net/CentOS/","ftp://mir01.syntis.net/CentOS/","mir01.syntis.net::CentOS "
154
+ "EU","France","Universit� Paris 13","http://www.univ-paris13.fr/","http://miroir.univ-paris13.fr/centos/","",""
155
+ "EU","Georgia","Caucasus Online","http://www.co.ge/","http://centos.mirror.srv.co.ge/","",""
156
+ "EU","Georgia","Wanex LLC (ISP)","http://www.wanex.net","http://mirror.centos.ge/","ftp://mirror.centos.ge/",""
157
+ "EU","Germany","Artfiles New Media GmbH ","http://www.artfiles.de/","http://artfiles.org/centos.org/","ftp://artfiles.org/centos.org/",""
158
+ "EU","Germany","ATrpms","http://www.atrpms.net/","http://mirror.atrpms.net/centos/","",""
159
+ "EU","Germany","Checkdomain GmbH","http://www.checkdomain.de/","http://mirror.checkdomain.de/centos","ftp://mirror.checkdomain.de/centos",""
160
+ "EU","Germany","Copahost","http://www.copahost.com/","http://centos.copahost.com/","",""
161
+ "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"
162
+ "EU","Germany","Faerber (Private Mirror)","","http://mirror.maeh.org/centos/","ftp://mirror.maeh.org/centos/",""
163
+ "EU","Germany","Fraunhofer-Gesellschaft","http://www.fraunhofer.de/","","ftp://mirror.fraunhofer.de/centos.org/",""
164
+ "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/"
165
+ "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/"
166
+ "EU","Germany","Intergenia","http://www.server4you.de/","http://centos.intergenia.de/","","rsync://centos.intergenia.de/centos-linux/"
167
+ "EU","Germany","Juergen Gotteswinter (private)","","http://mirror.jgotteswinter.com/centos/","ftp://ftp.jgotteswinter.com/centos/","rsync://rsync.jgotteswinter.com/centos/"
168
+ "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/"
169
+ "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/"
170
+ "EU","Germany","NetCologne","http://netcologne.de","http://mirror.netcologne.de/centos/","ftp://mirror.netcologne.de/centos/","rsync://mirror.netcologne.de/centos/"
171
+ "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/"
172
+ "EU","Germany","PSW Group","http://www.psw.net/","http://centos.psw.net/centos/","",""
173
+ "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/"
174
+ "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/"
175
+ "EU","Germany","Schlund Technologies GmbH","http://www.schlundtech.de/","http://centos.schlundtech.de/","ftp://centos.schlundtech.de/centos/","rsync://centos.schlundtech.de/centos/"
176
+ "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/"
177
+ "EU","Germany","Softaculous ltd.","http://www.softaculous.com/","http://mirror.softaculous.com/centos/","",""
178
+ "EU","Germany","Tim Harsdorf","http://www.timharsdorf.de/home/","http://centos.mirror.linuxwerk.com/","",""
179
+ "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/"
180
+ "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/"
181
+ "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/"
182
+ "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/"
183
+ "EU","Germany","Vieth Server","http://mirror-server.de/","http://centos.mirror-server.de/","",""
184
+ "EU","Greece","Computer Center, University of Crete","http://www.cc.uoc.gr/","http://ftp.cc.uoc.gr/CentOS/","ftp://ftp.cc.uoc.gr/CentOS/",""
185
+ "EU","Greece","Hellenic Telecommunications Organization","http://www.ote.gr/","http://ftp.otenet.gr/linux/centos/","ftp://ftp.otenet.gr/pub/linux/centos/",""
186
+ "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/"
187
+ "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/"
188
+ "EU","Iceland","Siminn","http://www.simnet.is/","http://www.fedora.is/CentOS/","ftp://ftp.fedora.is/pub/CentOS/",""
189
+ "EU","Iceland","TM Software","http://www.tm-software.com","http://centos.t.is/centos/","ftp://centos.t.is/centos/",""
190
+ "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/"
191
+ "EU","Italy","2nd University of Rome","www.uniroma2.it","http://centos.fis.uniroma2.it","ftp://cis.uniroma2.it/LinuxF/CentOS",""
192
+ "EU","Italy","Clouditalia Communications","http://www.eutelia.it/","","ftp://ftp.eutelia.it/CentOS",""
193
+ "EU","Italy","Contactlab","http://www.contactlab.com/","http://it.centos.contactlab.it/","",""
194
+ "EU","Italy","Crazy Network","http://crazynetwork.it/","http://mirror.crazynetwork.it/centos/","","rsync://mirror.crazynetwork.it/centos/"
195
+ "EU","Italy","Fastbull project","http://www.fastbull.org/home_english.html","http://centos.fastbull.org/centos/","",""
196
+ "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/"
197
+ "EU","Italy","Prometeus","http://www.prometeus.net/","http://mirrors.prometeus.net/centos/","",""
198
+ "EU","Italy","Range-ID","http://www.range-id.it/","http://centos.mirror.range-id.it/","",""
199
+ "EU","Latvia","ChampGround","http://www.champground.com/","http://champground.com/centos/","",""
200
+ "EU","Latvia","koyanet.lv","","http://centos.koyanet.lv/centos/","ftp://centos.koyanet.lv/centos/",""
201
+ "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/"
202
+ "EU","Latvia","Makonix SIA","http://makonix.com/","http://mirror.makonix.com/centos/","",""
203
+ "EU","Lithuania","Balticservers.com","http://www.balticservers.com/","http://mirror.duomenucentras.lt/centos/","ftp://mirror.duomenucentras.lt/centos/",""
204
+ "EU","Lithuania","Interneto vizija","http://www.serveriai.lt/","http://centos.mirror.serveriai.lt/","",""
205
+ "EU","Lithuania","UAB Esnet","http://www.vpsnet.lt/","http://centos.vpsnet.lt/","",""
206
+ "EU","Luxembourg","root S.A","http://www.root.lu/","http://centos.mirror.root.lu/","ftp://mirror.root.lu/centos/","rsync://mirror.root.lu/CentOS"
207
+ "EU","Macedonia","Cabletel Macedonia","http://cabletel.com.mk/","http://mirror.cabletel.com.mk/centos/","",""
208
+ "EU","Moldova","FedoraMD.org","http://www.fedoramd.org/","http://repo.fedoramd.org/centos/","ftp://ftp.fedoramd.org/centos/",""
209
+ "EU","Netherlands","1000mbps.com","http://www.1000mbps.com/","http://mirror.1000mbps.com/centos/","ftp://mirror.1000mbps.com/centos/","rsync://mirror.1000mbps.com/centos/"
210
+ "EU","Netherlands","ColoCenter","http://www.colocenter.nl/","http://mirror.colocenter.nl/pub/centos/","",""
211
+ "EU","Netherlands","Delft University of Technology","http://www.tudelft.nl/","http://ftp.tudelft.nl/centos.org/","ftp://ftp.tudelft.nl/pub/Linux/centos.org/",""
212
+ "EU","Netherlands","EURid (NL)","http://www.eurid.eu/","http://nl.mirror.eurid.eu/centos/","ftp://nl.mirror.eurid.eu/centos/",""
213
+ "EU","Netherlands","INTERACTIVE 3D","http://www.i3d.net/","http://mirror.i3d.net/pub/centos/","ftp://mirror.i3d.net/centos/","rsync://mirror.i3d.net::centos"
214
+ "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/"
215
+ "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/"
216
+ "EU","Netherlands","Mj Webhosting","https://www.mjwebhosting.nl/","http://mirror.serverbeheren.nl/centos/","ftp://mirror.serverbeheren.nl/centos/","rsync://mirror.serverbeheren.nl/centos/"
217
+ "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/"
218
+ "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/"
219
+ "EU","Netherlands","Prolocation B.V.","http://www.prolocation.net/","http://mirror.prolocation.net/centos/","",""
220
+ "EU","Netherlands","Proserve","http://www.proserve.nl/","http://mirror.proserve.nl/centos/","ftp://mirror.proserve.nl/centos/",""
221
+ "EU","Netherlands","Spango Internet BV","http://www.spango.com/nl/index.html","http://centos.mirror1.spango.com/","ftp://mirror1.spango.com/centos/",""
222
+ "EU","Netherlands","Supportex","http://supportex.net/","http://mirrors.supportex.net/centos/","",""
223
+ "EU","Netherlands","TransIP BV","http://www.transip.nl/","http://centos.mirror.transip.nl/","ftp://centos.mirror.transip.nl/Centos/",""
224
+ "EU","Netherlands","Triple IT","http://www.triple-it.nl/","http://centos.mirror.triple-it.nl/","",""
225
+ "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/"
226
+ "EU","Netherlands","ViralVPS","http://www.viralvps.com/","http://mirrors.viralvps.com/centos/","",""
227
+ "EU","Netherlands","Webzilla","http://webzilla.com/","http://mirror.nl.webzilla.com/CentOS/","ftp://mirror.nl.webzilla.com/CentOS/","rsync://mirror.nl.webzilla.com/CentOS/"
228
+ "EU","Netherlands","WeePee telecom NL","http://www.weepeetelecom.be/","http://centos.weepeetelecom.nl/","",""
229
+ "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/",""
230
+ "EU","Netherlands","Yourwebhoster.eu","http://yourwebhoster.eu/","http://mirror.yourwebhoster.eu/centos/","",""
231
+ "EU","Norway","Searchdaimon","http://www.searchdaimon.com/","http://mirror.searchdaimon.com/Linux/centos/","",""
232
+ "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/"
233
+ "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/"
234
+ "EU","Norway","ViaNett AS","http://www.vianett.com/","http://centos.vianett.no/","ftp://centos.vianett.no/pub/centos/",""
235
+ "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/"
236
+ "EU","Poland","IONIC.pl","http://www.ionic.pl/","http://centos.ionic.net.pl/","ftp://centos.ionic.net.pl/",""
237
+ "EU","Poland","Kielce Technology Park","http://www.technopark.kielce.pl/","http://mirror-pl.kielcetechnologypark.net/centos/","ftp://mirror-pl.kielcetechnologypark.net/centos/",""
238
+ "EU","Poland","LiveNet Sp. z o.o. ","http://www.slaskdatacenter.pl/","http://centos.slaskdatacenter.com/","ftp://centos.slaskdatacenter.com/","rsync://centos.slaskdatacenter.com/centos"
239
+ "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/"
240
+ "EU","Poland","Polish Telecom","http://www.tp.pl/","","ftp://ftp.tpnet.pl/d23/centos/","rsync://ftp.tpnet.pl/centos/"
241
+ "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/"
242
+ "EU","Poland","Szczecin University of Technology","http://www.ps.pl/","http://ftp.ps.pl/pub/Linux/CentOS/","ftp://ftp.ps.pl/pub/Linux/CentOS/",""
243
+ "EU","Poland","Vectra","http://www.vectra.pl/","http://ftp.vectranet.pl/centos/","ftp://ftp.vectranet.pl/centos/","rsync://ftp.vectranet.pl/centos/"
244
+ "EU","Portugal","nfsi telecom","http://www.nfsi.pt/","http://mirrors.nfsi.pt/CentOS/","ftp://ftp.nfsi.pt/pub/CentOS/",""
245
+ "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/",""
246
+ "EU","Portugal","University of Porto","http://www.up.pt/","http://ftp.up.pt/CentOS/","ftp://ftp.up.pt/pub/CentOS/",""
247
+ "EU","Romania","BizTelecom Romania","http://www.biztelecom.ro/","http://mirrors.biztelecom.ro/centos/","","rsync://mirrors.biztelecom.ro/centos/"
248
+ "EU","Romania","CH-Center Hosting","http://www.ch-center.com/","http://mirrors.ch-center.com/centos/","",""
249
+ "EU","Romania","Dhost Software","http://dhost.ro/","http://ns3.dhost.ro/centosmirros/","ftp://ns3.dhost.ro/centos/",""
250
+ "EU","Romania","Pidgin Host","http://www.pidginhost.com/","http://mirrors.pidginhost.com/centos/","ftp://mirrors.pidginhost.com/centos/","mirrors.pidginhost.com::CentOS"
251
+ "EU","Romania","RCS and RDS","http://www.rcs-rds.ro/","http://centos.mirrors.linux.ro/","ftp://ftp.linux.ro/centos/",""
252
+ "EU","Romania","Romanian Linux Users Group (ines)","http://www.lug.ro/","http://ftp.ines.lug.ro/centos/","ftp://ftp.ines.lug.ro/centos/",""
253
+ "EU","Romania","Romtelecom","http://cyberhost.ro/","http://centos-mirror.cyberhost.ro/","ftp://centos-mirror.cyberhost.ro/",""
254
+ "EU","Romania","Telepoint","http://telepoint.bg/","http://mirror.telepoint.bg/centos","ftp://mirror.telepoint.bg/centos",""
255
+ "EU","Romania","Universitatea Aurel Vlaicu Arad","http://www.uav.ro/","","ftp://mirrors.uav.ro/centos/",""
256
+ "EU","Romania","UPC Romania","http://www.upc.ro/","http://ftp.astral.ro/distros/centos/","ftp://ftp.astral.ro/distros/centos/",""
257
+ "EU","Romania","Xservers.ro","http://www.xservers.ro/","http://mirrors.xservers.ro/centos/","",""
258
+ "EU","Russia"," Tver State University","","http://mirror.tversu.ru/centos/","",""
259
+ "EU","Russia","Astrakhan Page ISP","http://www.astpage.ru/","http://mirror.astpage.ru/centos/","","rsync://mirror.astpage.ru/centos/"
260
+ "EU","Russia","Awanti ISP","http://www.awanti.com/","http://mirror.awanti.com/centos/","ftp://mirror.awanti.com/centos/",""
261
+ "EU","Russia","Internet Hosting LTD","http://majorhost.net/","http://mirror.majorhost.net/centos/","",""
262
+ "EU","Russia","Logol Hosting Company","http://logol.ru/","http://mirror.logol.ru/centos/","ftp://mirror.logol.ru/centos/","rsync://mirror.logol.ru/centos/"
263
+ "EU","Russia","Private Mirror (Micro8240)","","","ftp://linux-mirror.no-ip.org/CentOS/","rsync://linux-mirror.no-ip.org/CentOS/"
264
+ "EU","Russia","RADIUS, Ltd.","","http://mirror.vilkam.ru/centos/","ftp://mirror.vilkam.ru/centos/","rsync://mirror.vilkam.ru/centos/"
265
+ "EU","Russia","RosBusinessConsulting","http://www.rbc.ru/","http://centos-mirror.rbc.ru/pub/centos/","",""
266
+ "EU","Russia","Yandex","http://www.yandex.ru/","http://mirror.yandex.ru/centos/","ftp://mirror.yandex.ru/centos/","rsync://mirror.yandex.ru/centos/"
267
+ "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/"
268
+ "EU","Slovakia","Rainside","http://www.rainside.sk/","http://tux.rainside.sk/centos/","ftp://tux.rainside.sk/centos/",""
269
+ "EU","Slovakia","University of P.J.Safarik","http://www.upjs.sk/","http://ftp.upjs.sk/pub/centos/","ftp://ftp.upjs.sk/pub/centos/",""
270
+ "EU","Slovenia","ARNES","http://www.arnes.si/","http://ftp.arnes.si/pub/mirrors/centos.org/","ftp://ftp.arnes.si/mirrors/centos.org/",""
271
+ "EU","Slovenia","lihnidos.org","http://www.lihnidos.org","http://mirror.lihnidos.org/CentOS/","",""
272
+ "EU","Slovenia","PakNet IT","http://paknet.org/","http://mirrors.paknet.org/CentOS/","",""
273
+ "EU","Spain","CADT Software and Drafting, S.L. ","http://www.cadt.com/","http://centos.cadt.com/","",""
274
+ "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/"
275
+ "EU","Spain","CESCA","http://www.cesca.cat/","","ftp://ftp.cesca.cat/centos/","rsync://ftp.cesca.cat/centos/"
276
+ "EU","Spain","inAsset Networks","http://www.inasset.es/","http://mirror.trueinter.net/","ftp://mirror.trueinter.net/","rsync://mirror.trueinter.net/"
277
+ "EU","Spain","Oficina de Software Libre do CIXUG","http://www.cixug.es/osl/oficina/","http://ftp.cixug.es/CentOS/","ftp://ftp.cixug.es/CentOS/",""
278
+ "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/",""
279
+ "EU","Spain","Universitat de Lleida","http://www.udl.es/","http://ftp.udl.es/pub/centos/","ftp://ftp.udl.es/pub/centos/",""
280
+ "EU","Spain","University of Seville (Spain)","http://www.us.es/","http://nervion.us.es/centos/","",""
281
+ "EU","Spain","Xtratelecom S.A.","http://www.xtratelecom.es/","http://centos.mirror.xtratelecom.es/","","centos.mirror.xtratelecom.es::CentOS"
282
+ "EU","Sweden","Availo AB","http://www.availo.se/","http://ftp.availo.se/centos/","ftp://ftp.availo.se/centos/","rsync://rsync.availo.se/centos/"
283
+ "EU","Sweden","Halmstad University","http://www.hh.se/","http://mirror.hh.se/centos/","ftp://mirror.hh.se/centos/",""
284
+ "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/"
285
+ "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"
286
+ "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/"
287
+ "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"
288
+ "EU","Sweden","Zetup AB","http://www.zetup.se/","http://mirror.zetup.net/CentOS/","",""
289
+ "EU","Switzerland","Private Layer Inc.","http://www.privatelayer.com/","http://centos.privatelayer.com/","ftp://centos.privatelayer.com/","100"
290
+ "EU","Switzerland","SWITCHmirror","http://mirror.switch.ch","http://mirror.switch.ch/ftp/mirror/centos/","ftp://mirror.switch.ch/mirror/centos/",""
291
+ "EU","Turkey","7x24NET T�rkiye","http://www.7x24web.net.tr/","http://mirror.7x24web.net.tr/centos","",""
292
+ "EU","Turkey","Bogazici University","http://www.boun.edu.tr/","http://repo.boun.edu.tr/centos/","ftp://repo.boun.edu.tr/centos/",""
293
+ "EU","Turkey","DGN Teknoloji","http://www.dgn.net.tr","http://ftp.dgn.net.tr/linux/centos/","",""
294
+ "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/"
295
+ "EU","Turkey","Vital Technology","http://www.vit.com.tr/","http://mirror.vit.com.tr/mirror/CentOS/","ftp://mirror.vit.com.tr/CentOS/",""
296
+ "EU","UK","Hyve Ltd.","http://www.hyve.com/","http://centos.hyve.com/","",""
297
+ "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/"
298
+ "EU","UK","Simwood eSMS Limited","http://www.simwood.com/","http://mirror.simwood.com/centos/","",""
299
+ "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"
300
+ "EU","UK","SynergyWorks Internet","http://www.synergyworks.co.uk/","http://mirror.synergyworks.co.uk/centos/","",""
301
+ "EU","UK","Umbee Ltd","http://www.umbeehosting.co.uk/","http://repo.umbeehosting.com/centos/","http://repo.umbeehosting.com/centos/","repo.umbeehosting.com::CentOS"
302
+ "EU","UK","VooServers","http://vooservers.com/","http://mirrors.vooservers.com/centos/","",""
303
+ "EU","UK","XILO Communications Ltd.","http://www.xilo.net/","http://mirror.mhd.uk.as44574.net/mirror.centos.org/","",""
304
+ "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/"
305
+ "EU","Ukraine","Colocall Internet Data Center","http://www.colocall.net/","http://ftp.colocall.net/pub/centos/","ftp://ftp.colocall.net/pub/centos/",""
306
+ "EU","Ukraine","IT&T Consulting","https://itt-consulting.com/","http://centos.itt-consulting.com/","",""
307
+ "EU","Ukraine","LDS (Luganskie Domashnie Seti)","http://lds.ua/","","ftp://ftp.linux.lg.ua/pub/centos/",""
308
+ "EU","Ukraine","Mirohost","http://mirohost.net/","http://mirror.mirohost.net/centos/","ftp://mirror.mirohost.net/centos/",""
309
+ "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/"
310
+ "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/"
311
+ "EU","United Kingdom","AAISP","http://aa.net.uk/","http://mirror.for.me.uk/centos/","",""
312
+ "EU","United Kingdom","AS29550.net","http://mirror.as29550.net/","http://mirror.as29550.net/mirror.centos.org/","ftp://mirror.as29550.net/mirror.centos.org/",""
313
+ "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"
314
+ "EU","United Kingdom","Coreix","http://www.coreix.net/","http://mirrors.coreix.net/centos/","",""
315
+ "EU","United Kingdom","Goscomb Technologies Limited","http://www.goscomb.net/","http://mirror.sov.uk.goscomb.net/centos/","ftp://mirror.sov.uk.goscomb.net/centos/",""
316
+ "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/"
317
+ "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"
318
+ "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/",""
319
+ "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/",""
320
+ "EU","United Kingdom","Pulsant Ltd.","http://www.pulsant.co.uk/","http://centos.mirroring.pulsant.co.uk/","ftp://centos.mirroring.pulsant.co.uk/centos/",""
321
+ "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/"
322
+ "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/",""
323
+ "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/"
324
+ "Greenland","","Tele Greenland","http://www.tele.gl","http://mirror.greennet.gl/centos/","",""
325
+ "Middle East","Israel","Interhost Networks","http://www.interhost.co.il/","http://centos.syn.co.il/","","rsync://centos.syn.co.il/centos/"
326
+ "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/",""
327
+ "Middle East","Israel","Joinweb Hosting Ltd","http://www.joinweb.co.il/","http://centos.joinweb.co.il/","",""
328
+ "Middle East","Israel","SPD Hosting LTD","http://www.spd.co.il/","http://centos.spd.co.il/","",""
329
+ "Middle East","Oman","Sultan Qaboos University","http://www.squ.edu.om/","http://mirror.squ.edu.om/centos/","",""
330
+ "Middle East","Saudi Arabia","Saudi Telecom Company (STC)","","http://centos.saudi.net.sa","ftp://centos.saudi.net.sa",""
331
+ "North America","Mexico","Webxcreen","http://www.webxcreen.com/","http://centos.webxcreen.org/","",""
332
+ "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/"
333
+ "Oceania","Australia","BKB Internet","http://bkb.net.au/","http://mirror.mel.bkb.net.au/pub/centos/","",""
334
+ "Oceania","Australia","Colocity","http://www.colocity.com/","http://mirror.colocity.com/centos/","",""
335
+ "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"
336
+ "Oceania","Australia","GloVine Pty Ltd"," http://www.glovine.com.au/","http://centos.syd.au.glomirror.com.au/","",""
337
+ "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/"
338
+ "Oceania","Australia","Internode","http://www.internode.on.net/","http://mirror.internode.on.net/pub/centos/","",""
339
+ "Oceania","Australia","Over The Wire","http://www.overthewire.com.au/","http://mirror.overthewire.com.au/pub/centos/","ftp://mirror.overthewire.com.au/pub/centos/",""
340
+ "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/"
341
+ "Oceania","Australia","Servers Australia Pty Ltd.","http://www.serversaustralia.com.au/","http://centos.mirror.serversaustralia.com.au/","",""
342
+ "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/"
343
+ "Oceania","Australia","UberGlobal","http://www.uber.com.au/","http://centos.mirror.uber.com.au/","","rsync://mirror.uber.com.au/centos"
344
+ "Oceania","Australia","VentraIP Group (Australia) Pty Ltd","http://www.ventraip.com.au/","http://mirror.ventraip.net.au/CentOS/","ftp://mirror.ventraip.net.au/CentOS/",""
345
+ "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/"
346
+ "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"
347
+ "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/",""
348
+ "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/"
349
+ "Oceania","New Zealand","WorldxChange Communications Ltd","http://wxc.co.nz/","http://mirror.xnet.co.nz/pub/centos/","ftp://mirror.xnet.co.nz/pub/centos/",""
350
+ "South America","Argentina","ARSAT","http://www.arsat.com.ar/","http://mirrors.dcarsat.com.ar/centos/","",""
351
+ "South America","Argentina","CCT - CONICET MENDOZA","http://www.mendoza-conicet.gob.ar/","http://centos.mirror.mendoza-conicet.gob.ar/","",""
352
+ "South America","Argentina","xfree.com","http://www.xfree.com.ar/","http://centos.xfree.com.ar/","",""
353
+ "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"
354
+ "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/"
355
+ "South America","Brazil","Globo.com","http://www.globo.com/","http://mirror.globo.com/centos/","",""
356
+ "South America","Brazil","Instituto Federal do Esp�rito Santo","http://www.ci.ifes.edu.br/","http://mirror.ci.ifes.edu.br/centos/","",""
357
+ "South America","Brazil","SecrelNet","http://secrel.com.br/","http://centos.secrel.com.br/","",""
358
+ "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/"
359
+ "South America","Brazil","Universidade Federal do Esp�rito Santo","http://www.ufes.br/","http://centos.ufes.br/","","rsync://centos.ufes.br/centos/"
360
+ "South America","Chile","Gtdinternet S.A.","","http://mirror.gtdinternet.com/","ftp://mirror.gtdinternet.com/pub/Linux/CentOS/",""
361
+ "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/"
362
+ "South America","Colombia","EDATEL ISP","http://www.edatel.net.co/","http://mirror.edatel.net.co/centos/","",""
363
+ "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"
364
+ "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/"
365
+ "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/"
366
+ "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/",""
367
+ "US","","Facebook","http://developers.facebook.com/opensource","http://centos.mirror.facebook.net/","",""
368
+ "US","","Oregon State University","http://osuosl.org/","http://ftp.osuosl.org/pub/centos/","ftp://ftp.osuosl.org/pub/centos/","rsync://ftp.osuosl.org/centos/"
369
+ "US","","Rackspace","http://www.rackspace.com/","http://mirror.rackspace.com/CentOS/","",""
370
+ "US","AK","Arctic Region Supercomputing Center","http://www.arsc.edu/","http://mirrors.arsc.edu/centos/","ftp://mirrors.arsc.edu/centos/",""
371
+ "US","AL","Millry Telephone Co","http://www.millry.net/","http://mirror.millry.co/CentOS/","ftp://mirror.millry.co/CentOS/",""
372
+ "US","AL","Teklinks","http://teklinks.com/","http://mirror.teklinks.com/centos/","ftp://mirror.teklinks.com/centos/",""
373
+ "US","AZ","Cavecreek Web Hosting","http://www.cavecreek.net/","http://centos-distro.cavecreek.net/centos/","","rsync://centos-distro.cavecreek.net/CentOS/"
374
+ "US","AZ","Easynews","http://www.easynews.com/","http://mirrors.easynews.com//linux/centos/","ftp://mirrors.easynews.com//linux/centos/",""
375
+ "US","AZ","Singlehop, LLC","http://www.singlehop.com/","http://yum.phx.singlehop.com/centos/","",""
376
+ "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/"
377
+ "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/"
378
+ "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/",""
379
+ "US","CA","FreedomVoice","http://www.freedomvoice.com/","http://centos.mirror.freedomvoice.com/","ftp://mirror.freedomvoice.com/centos/","rsync://mirror.freedomvoice.com/centos/"
380
+ "US","CA","Harvey Mudd College","http://www.hmc.edu","http://mirror.hmc.edu/centos/","",""
381
+ "US","CA","Linux Kernel Archives","http://www.kernel.org/","http://mirrors.kernel.org/centos/","ftp://mirrors.kernel.org/centos/","rsync://mirrors.kernel.org/centos/"
382
+ "US","CA","NDCHost","http://ndchost.com/","http://centos.mirror.ndchost.com/","",""
383
+ "US","CA","Pac-12 Enterprises","http://www.pac-12.org/","http://mirror.pac-12.org/","",""
384
+ "US","CA","Sonic.net","http://sonic.net/","http://mirrors.sonic.net/centos/","ftp://mirrors.sonic.net/centos/",""
385
+ "US","CA","SONN","http://www.sonn.com/","http://centos.sonn.com/","",""
386
+ "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/"
387
+ "US","CA","TCPDIAG","","http://centos.tcpdiag.net/centos/","ftp://centos.tcpdiag.net/centos/","rsync://centos.tcpdiag.net/centos/"
388
+ "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/"
389
+ "US","CO","FDCservers.net LLC (Denver)","http://www.fdcservers.net","http://mirrordenver.fdcservers.net/centos/","",""
390
+ "US","CO","IcyBoards","http://icyboards.com/","http://centos.icyboards.com/","",""
391
+ "US","CO","LFCVPS","http://www.lfcvps.com/","http://mirrors.loosefoot.com/centos/","ftp://mirrors.loosefoot.com/centos/","rsync://mirrors.loosefoot.com/centos/"
392
+ "US","CO","SomeImage Image Hosting","http://someimage.com/","http://centos.someimage.com/","",""
393
+ "US","CO","tummy.com","http://www.tummy.com","http://mirrors.tummy.com/mirrors/CentOS/","",""
394
+ "US","CT","Connecticut Education Network","http://www.ct.gov/cen","http://mirror.net.cen.ct.gov/centos/","",""
395
+ "US","DC","ServInt","http://www.servint.com/","http://centos.servint.com/","",""
396
+ "US","DE","University of Delaware","http://ftp.lug.udel.edu/","http://mirror.lug.udel.edu/pub/centos/","",""
397
+ "US","FL","Atlantic.Net","http://www.atlantic.net/","","ftp://mirror.atlantic.net/pub/centos/",""
398
+ "US","FL","Mojohost","http://www.mojohost.com/","http://mirror.mojohost.com/centos/","ftp://mirror.mojohost.com/centos/",""
399
+ "US","FL","University of South Florida","http://www.usf.edu/","http://ftp.usf.edu/pub/centos/","ftp://ftp.usf.edu/pub/centos/",""
400
+ "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/"
401
+ "US","HI","Advanced Network Computing Lab Hawaii","http://www.ancl.hawaii.edu/","http://mirror.ancl.hawaii.edu/linux/centos/","",""
402
+ "US","ID","SolutionPro","http://www.solutionpro.com/","http://mirror.spro.net/centos/","ftp://mirror.spro.net/centos/","rsync://mirror.spro.net/centos/"
403
+ "US","ID","Syringa Networks","http://www.syringanetworks.net/","http://mirrors.syringanetworks.net/centos/","ftp://mirrors.syringanetworks.net/centos/","rsync://mirrors.syringanetworks.net/CentOS/"
404
+ "US","IL","FDCservers.net LLC","http://www.fdcservers.net","http://mirror.fdcservers.net/centos/","ftp://mirror.fdcservers.net/centos/",""
405
+ "US","IL","GIGENET","http://www.gigenet.com/","http://mirrors.gigenet.com/centos/","ftp://mirrors.gigenet.com/centos/","rsync://mirrors.gigenet.com/centos/"
406
+ "US","IL","SanctuaryHost","http://www.sanctuaryhost.com","http://mirror.sanctuaryhost.com/centos/","",""
407
+ "US","IL","Server Axis Corporation","http://serveraxis.com/","http://mirrors.serveraxis.net/centos/","ftp://mirrors.serveraxis.net/centos/",""
408
+ "US","IL","SingleHop.com","http://SingleHop.com/","http://yum.singlehop.com/CentOS/","",""
409
+ "US","IL","Steadfast Networks","http://steadfast.net","http://mirror.steadfast.net/centos/","ftp://mirror.steadfast.net/centos/","rsync://mirror.steadfast.net/centos/"
410
+ "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"
411
+ "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/"
412
+ "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/"
413
+ "US","IN","Indiana University","http://pti.iu.edu/cs/software-applications/","","ftp://ftp.ussg.iu.edu/linux/centos/",""
414
+ "US","IN","NetNITCO Internet Services","http://www.netnitco.net/","http://centos.netnitco.net/","ftp://centos.netnitco.net/centos/",""
415
+ "US","MA","Harvard SEAS ARC","http://www.seas.harvard.edu/","http://mirrors.seas.harvard.edu/centos/","",""
416
+ "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/"
417
+ "US","MI","Central Michigan University","http://www.cmich.edu/","http://mirrors.cmich.edu/centos/","",""
418
+ "US","MI","CoreNetworks Dedicated Servers","http://corenetworks.net","http://centos.corenetworks.net/","",""
419
+ "US","MI","Liquid Web, Inc.","http://www.liquidweb.com/","http://mirrors.liquidweb.com/CentOS/","","rsync://mirrors.liquidweb.com/CentOS/"
420
+ "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"
421
+ "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"
422
+ "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/"
423
+ "US","MI","Nexcess.Net","http://nexcess.net/","http://mirror.nexcess.net/CentOS/","",""
424
+ "US","MI","The Linux Fix","http://tlfhosting.com/","http://mirror.thelinuxfix.com/CentOS/","ftp://mirror.thelinuxfix.com/CentOS/","rsync://mirror.thelinuxfix.com/CentOS/"
425
+ "US","MI","University of Michigan � Flint","http://www.umflint.edu/","http://holmes.umflint.edu/centos/","",""
426
+ "US","MN","US Internet","http://www.usinternet.com/","http://mirrors.usinternet.com/centos/","","mirrors.usinternet.com::centos"
427
+ "US","MO","JCHost.net Internet Services","http://www.jchost.net/","http://centos-mirror.jchost.net/","",""
428
+ "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"
429
+ "US","NC","McClatchy Interactive","http://www.mcclatchyinteractive.com/","","ftp://mirror.nandomedia.com/pub/CentOS/",""
430
+ "US","NC","Netriplex, LLC","http://www.netriplex.com","http://centos.mirror.netriplex.com/","","rsync://centos.mirror.netriplex.com/CentOS"
431
+ "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/"
432
+ "US","NE","University of Nebraska-Lincoln","http://www.unl.edu","http://mirror.unl.edu/centos/","",""
433
+ "US","NH","MetroCast Cablevision","http://www.metrocast.com/","http://mirror.metrocast.net/centos/","",""
434
+ "US","NJ","Constant Hosting","http://constant.com/","http://centos.mirror.constant.com/","",""
435
+ "US","NJ","interserver.net","http://interserver.net/","http://mirror.trouble-free.net/centos/","","rsync://mirror.trouble-free.net/centos/"
436
+ "US","NJ","Net Access Corporation","http://www.nac.net","http://centos.mirror.nac.net/","",""
437
+ "US","NJ","SolarVPS","http://www.solarvps.com/","http://mirror.solarvps.com/centos/","ftp://mirror.solarvps.com/centos/",""
438
+ "US","NV","Versaweb Hosting Services","http://www.versaweb.com/","http://mirrors.versaweb.com/centos/","ftp://mirrors.versaweb.com/centos/",""
439
+ "US","NY","Atlantic Metro Communications","http://www.atlanticmetro.net/","http://mirror.atlanticmetro.net/centos/","ftp://mirror.atlanticmetro.net/centos/",""
440
+ "US","NY","BuildDesignCreate.com","http://www.builddesigncreate.com/","http://centos.builddesigncreate.com/mirror/","",""
441
+ "US","NY","Clarkson University","http://www.clarkson.edu/","http://mirror.clarkson.edu/centos/","","rsync://mirror.clarkson.edu/centos"
442
+ "US","NY","Einstein College of Medicine","http://www.einstein.yu.edu/home/default.asp","http://mirrors.einstein.yu.edu/centos/","",""
443
+ "US","NY","New York Internet","http://nyi.net/","","ftp://mirror.nyi.net/centos/",""
444
+ "US","NY","NYU","http://www.nyu.edu/","http://mirror.es.its.nyu.edu/centos/","",""
445
+ "US","NY","Rochester Institute of Technology","http://www.rit.edu/","http://mirrors.rit.edu/centos/","","rsync://mirrors.rit.edu/centos/"
446
+ "US","NY","SpinelliCreations","http://www.spinellicreations.com/","http://centos.spinellicreations.com/","",""
447
+ "US","OH","Beyond Hosting","http://beyondhosting.net/","http://mirror.beyondhosting.net/CentOS/","",""
448
+ "US","OH","CISP / Yocolo","http://www.cisp.com","http://mirror.cisp.com/CentOS/","","rsync://mirror.cisp.com/CentOS"
449
+ "US","OH","HostingXtreme","http://hostingxtreme.com/","http://centos.hostingxtreme.com/","",""
450
+ "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/"
451
+ "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/"
452
+ "US","OR","Portland State Univ.","http://www.cat.pdx.edu/","http://mirrors.cat.pdx.edu/centos/","","rsync://mirrors.cat.pdx.edu/centos/"
453
+ "US","OR","TOCICI LLC","http://www.tocici.com/","http://mirror.tocici.com/centos/","",""
454
+ "US","PA","Datto Inc.","http://www.dattobackup.com/","http://mirror.dattobackup.com/CentOS/","",""
455
+ "US","PA","Hoobly Classifieds","http://www.hoobly.com/","http://centos.mirrors.hoobly.com/","",""
456
+ "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"
457
+ "US","TN","Final ASP","http://www.finalasp.com/","http://mirrors.finalasp.com/CentOS/","ftp://mirrors.finalasp.com/CentOS/",""
458
+ "US","TX","1-800-hosting.com","http://www.800hosting.com/","http://dist1.800hosting.com/centos/","ftp://dist1.800hosting.com/centos/",""
459
+ "US","TX","Geeks at Work Solutions","http://gawsolutions.us/","http://mirrors.gawsolutions.us/centos","",""
460
+ "US","TX","GravityFish, LLC","http://gravityfish.com/","http://centos.gravityfish.com/","",""
461
+ "US","TX","Limestone Networks","http://www.limestonenetworks.com/","http://centos.mirror.lstn.net/","ftp://centos.mirror.lstn.net/centos/","rsync://centos.mirror.lstn.net/"
462
+ "US","TX","Ray Stedman Library","http://www.raystedman.org/","http://mirror.raystedman.net/centos/","","rsync://mirror.raystedman.net/centos/"
463
+ "US","TX","UnmeteredVPS.net","http://unmeteredvps.net/","http://centos.unmeteredvps.net/","ftp://centos.unmeteredvps.net/","centos.UnmeteredVPS.net::CentOS"
464
+ "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"
465
+ "US","UT","Bluehost.com","http://www.bluehost.com","http://mirrors.bluehost.com/centos/","",""
466
+ "US","UT","Fast Speed Test","http://fastspeedtest.com","http://fastspeedtest.net/mirrors/centos/","",""
467
+ "US","UT","University of Utah","http://www.chpc.utah.edu/","http://mirror.chpc.utah.edu/pub/centos/","","rsync://mirror.chpc.utah.edu/pub/centos/"
468
+ "US","UT","XMission","http://www.xmission.com/","http://mirrors.xmission.com/centos/","ftp://mirrors.xmission.com/centos/","rsync://mirrors.xmission.com/centos/"
469
+ "US","VA","AdvancedHosters","http://advancedhosters.com/","http://mirrors.advancedhosters.com/centos/","ftp://mirrors.advancedhosters.com/centos/","rsync://mirrors.advancedhosters.com/centos/"
470
+ "US","VA","AOL, LLC","http://corp.aol.com/","http://centos.aol.com/","",""
471
+ "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/"
472
+ "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/",""
473
+ "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/"
474
+ "US","VA","Symnds","","http://mirror.symnds.com/CentOS/","","rsync://mirror.symnds.com/CentOS/"
475
+ "US","VA","University of Virginia","http://www.virginia.edu/","http://mirror.itc.virginia.edu/CentOS/","","rsync://mirror.itc.virginia.edu/centos/"
476
+ "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/"
477
+ "US","VA","Virginia Tech","http://mirror.cs.vt.edu/","http://mirror.cs.vt.edu/pub/CentOS/","ftp://mirror.cs.vt.edu/pub/CentOS/",""
478
+ "US","VA","Yellow Fiber Networks","http://www.yellowfiber.net/","http://mirror.yellowfiber.net/centos/","",""
479
+ "US","VT","Green Mountain Access","http://www.greenmountainaccess.net/","http://mirrors.greenmountainaccess.net/centos/","ftp://mirrors.greenmountainaccess.net/centos/","rsync://mirrors.greenmountainaccess.net/centos/"
480
+ "US","VT","TelJet Longhaul LLC","http://www.teljet.net/","http://mirror.teljet.net/centos","",""
481
+ "US","WA","Walla Walla University","http://www.wallawalla.edu/","","ftp://ftp.wallawalla.edu/pub/mirrors/centos/","rsync://ftp.wallawalla.edu/CentOS/"
482
+ "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/"
483
+ "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/"
484
+
485
+ Thu Nov 14 15:00:02 CST 2013
content/download/mirrors.erb ADDED
@@ -0,0 +1,70 @@
1
+ ---
2
+ title: Mirror List
3
+ is_hidden: false
4
+ ---
5
+ <h1>List of CentOS Mirrors</h1>
6
+ <p class="lead">
7
+ CentOS welcomes new mirror sites. If you are considering setting up a
8
+ public mirror site for CentOS, <a href="http://wiki.centos.org/HowTos/CreatePublicMirrors">please follow the mirror guidelines</a> to make
9
+ sure that your mirror is consistent with the other mirror sites.
10
+ </p>
11
+
12
+ <div id="CSVTable"></div>
13
+ <script type="text/javascript" src="/assets/js/jquery.csvToTable2.js"></script>
14
+ <script type="text/javascript" src="/assets/js/jquery.tablesorter.min.js"></script>
15
+ <link rel="stylesheet" type="text/css" href="/assets/csvtable-look.css">
16
+
17
+ <script>
18
+ $('#CSVTable').CSVToTable('/download/full-mirrorlist.csv',
19
+ {
20
+ startLine: 1,
21
+ //['Location', 'Region', 'Sponsor', 'HomePage', 'HTTP location', 'FTP Location', 'Rsync Location']
22
+ headers: [
23
+ 'Location',
24
+ 'Region',
25
+ {label:'Sponsor' , items:[2 , 3]},
26
+ {label:'HomePage' , hidden:true},
27
+ 'HTTP location',
28
+ 'FTP Location',
29
+ 'Rsync Location'
30
+ ],
31
+ itemMerger: function(header , items) {
32
+ var outItem = [];
33
+ console.log(items);
34
+ for(var i in header.items){
35
+ var item = header.items[i];
36
+ outItem.push(items[item]);
37
+ }
38
+ if(header.label = 'Sponsor'){
39
+ console.log(outItem);
40
+ return '<a href="' + outItem[1] + '" target="_blank">' + outItem[0] + '</a>';
41
+ }else return outItem.join(' ');
42
+ },
43
+ preRenderItem: function(headerLabel , item) {
44
+ if(item == '') return '';
45
+ switch (headerLabel) {
46
+ case 'HTTP location':
47
+ case 'FTP Location':
48
+ case 'Rsync Location':
49
+ item = item.replace(/"/gi , '');
50
+ return '<a href="' + item + '" target="_blank">' + item + '</a>';
51
+ default:
52
+ return item;
53
+ }
54
+ }
55
+ }
56
+ ).bind("loadComplete",function() {
57
+ $('#CSVTable').find('TABLE').tablesorter({
58
+ widgets: ['zebra', 'filter'],
59
+ widgetOptions: {
60
+ uitheme: "bootstrap"
61
+ },
62
+ textExtraction: function(node) {
63
+ // extract data from markup and return it
64
+ return $(node).text();
65
+ }
66
+ });
67
+
68
+ });;
69
+ </script>
70
+
empty file added
file added
+67
content/index.erb ADDED
@@ -0,0 +1,67 @@
1
+ ---
2
+ title: CentOS Project
3
+ is_hidden: true
4
+ ---
5
+ <script type="text/javascript" >
6
+ $(document).ready(function () {
7
+ $('#divRss').FeedEk({
8
+ FeedUrl: document.location.protocol + '//www.centos.org/assets/seven.rss',
9
+ DescCharacterLimit:100,
10
+ MaxCount: 4
11
+ });
12
+ });
13
+ </script>
14
+
15
+ <div class="row">
16
+ <div class="jumbotron col-md-12">
17
+ <h1>New Look. New CentOS.</h1>
18
+ <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>
19
+ <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>
20
+ <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>
21
+ <p></p>
22
+ <div class="downloadbutton"><a href="/download/">Get CentOS Linux Now</a></div>
23
+ </div>
24
+ </div>
25
+ <div class="row">
26
+ <div class="col-sm-4">
27
+ <h2 class="text-center">EL7 Progress</h2>
28
+ <div id="divRss">
29
+ </div>
30
+ </div>
31
+ <div class="col-sm-4">
32
+ <h2 class="text-center">News & Events</h2>
33
+ <dl>
34
+ <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>
35
+ <dt><a href="http://wiki.centos.org/Events/Dojo/">China</a></dt><dd> &raquo; Coming in 2014</dd>
36
+ <dt><a href="http://wiki.centos.org/Events/Dojo/">Phoenix, AZ, USA</a></dt><dd> &raquo; Coming in 2014</dd>
37
+ <dd><a href="http://wiki.centos.org/Events/Dojo/">More about Dojos</a></dd>
38
+ </ul>
39
+ <div class="media">
40
+ <a class="pull-left" href="#">
41
+ <img class="media-object img-rounded" src="/images/centoslogo-32.png" width="32" alt="..."></a>
42
+ <div class="media-body">
43
+ <h4 class="media-heading"><a href="/download/">New 6.5 release</a> <small><em>December 1st 2013</em></small></h4>
44
+ <p>The CentOS team is pleased to announce the immediate availability of CentOS 6.5 for i386 and x86_64 architectures.</p>
45
+ </div>
46
+ </div>
47
+ </div>
48
+ <div class="col-sm-4">
49
+ <h2 class="text-center">Sponsorship</h2>
50
+ <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>
51
+ <div class='cycle-slideshow'
52
+ data-cycle-random="true"
53
+ data-cycle-timeout="3000"
54
+ data-cycle-fx="fade"
55
+ data-cycle-center-horz=true
56
+ data-cycle-center-vert=true
57
+ data-cycle-loader="wait"
58
+ data-cycle-progressive="#images"
59
+ data-cycle-slides="> a"
60
+ data-cycle-pause-on-hover="true" >
61
+ <% @site.items.select { |i| i[:sponsor] }.each do|i| %>
62
+ <a href="<%= i[:url] %>"><img class="img-rounded" src="<%= i[:img] %>" /></a> <% end %>
63
+ </div>
64
+ <br />
65
+ <p><a href="/sponsors/">If you value our work, please consider becoming a sponsor!</a></p>
66
+ </div>
67
+ </div>
file added
+54
content/legal.md ADDED
@@ -0,0 +1,54 @@
1
+ ---
2
+ title: "CentOS Legal"
3
+ markdown: basic
4
+ is_dynamic: true
5
+ ---
6
+ * Table of contents will replace this text.
7
+ {:toc}
8
+
9
+ #CentOS Legal
10
+ {:.no_toc}
11
+
12
+ #Export Regulations
13
+
14
+ 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.
15
+
16
+ #Trademark Guidelines
17
+
18
+ [The CentOS trademark usage policy](/legal/trademarks/)
19
+
20
+ #Disclaimers
21
+
22
+ * This is a Community mantained site. Red Hat, Inc is not responsible for its content.
23
+ * All other trademarks throughout the CentOS website are the property of their respective owners
24
+
25
+
26
+ ##Links to 3rd party sites
27
+ 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.
28
+
29
+
30
+ #Notice and Procedure for Making Claims of Copyright Infringement
31
+ To file a notice of infringement with us, please provide the following information to the Red Hat-designated copyright agent listed below:
32
+
33
+ * A description of the copyrighted work or other intellectual property that you claim has been infringed.
34
+ * A description of the material that you claim is infringing the copyrighted work listed in item #1.
35
+ * An address, telephone number, and an email address where the alleged infringing party can contact you.
36
+ * 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."
37
+ * 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."
38
+ * Your electronic or physical signature.
39
+ *
40
+ To file a counter notification with us, please provide the following information to the Red Hat-designated copyright agent listed below:
41
+
42
+ * A description of the material that Red Hat has removed or to which Red Hat has disabled access.
43
+ * 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.
44
+ * 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."
45
+ * Your electronic or physical signature.
46
+
47
+ 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:
48
+
49
+
50
+ Assistant General Counsel
51
+ Red Hat, Inc.
52
+ 100 East Davie Street
53
+ Raleigh, NC 27601
54
+ fax: +1 919-754-3704
content/legal/trademarks.md ADDED
@@ -0,0 +1,109 @@
1
+ ---
2
+ title: "CentOS Trademark Guidelines"
3
+ markdown: basic
4
+ is_dynamic: true
5
+ ---
6
+ * Table of contents will replace this text.
7
+ {:toc}
8
+
9
+ #Introduction
10
+
11
+ 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").
12
+
13
+ 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.
14
+
15
+ These Guidelines aim to provide sufficient clarity for you to understand whether your use of the CentOS Marks will be acceptable.
16
+ Nothing in these Guidelines limits your permissions under the open source or other copyright licenses covering packages in any CentOS software distribution.
17
+
18
+ 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.
19
+
20
+ #Role of the CentOS Community
21
+
22
+ 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.
23
+
24
+ #General Principles
25
+
26
+ 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".
27
+
28
+ 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.
29
+
30
+ 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.
31
+
32
+ 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.
33
+
34
+ #Software-related uses
35
+
36
+ ##Acceptable uses
37
+
38
+ 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.
39
+
40
+ 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.
41
+
42
+ 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."
43
+
44
+ 4. You may use the 'Powered by CentOS' logo to truthfully state that your application runs on or uses an official CentOS release.
45
+
46
+ 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.
47
+
48
+ ##Unacceptable uses
49
+
50
+ Notwithstanding anything to the contrary provided in these Guidelines, the following are examples of unacceptable uses:
51
+
52
+ 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.
53
+
54
+ 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".
55
+
56
+ 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.
57
+
58
+ #Use in relation to non-software goods and services
59
+
60
+ ##Acceptable uses
61
+
62
+ 1. You may use the CentOS Marks on your website to show your support for the CentOS Project, so long as:
63
+ * Your own branding or naming is more prominent than the CentOS Marks;
64
+ * All Logos hyperlink to http://www.centos.org/;
65
+ * 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
66
+ * The site clearly states that it is not endorsed by the CentOS Project.
67
+
68
+ 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.
69
+
70
+
71
+ ##Unacceptable uses
72
+ Notwithstanding anything to the contrary provided in these Guidelines, the following are examples of unacceptable uses:
73
+
74
+ 1. Use of the CentOS Marks as part of a domain name or sub-domain, except as may be permitted by applicable law.
75
+ 2. Use of the CentOS Marks on promotional goods for sale.
76
+
77
+ #Proper trademark use
78
+
79
+ ##Use of trademarks in text
80
+
81
+ * Always distinguish trademarks from surrounding text with at least initial capital letters or in all capital letters.
82
+ * Unacceptable: centos
83
+ * Acceptable: CentOS
84
+ * Always use trademarks in their exact form with the correct spelling, neither abbreviated, hyphenated, nor combined with any other word or words.
85
+ * Unacceptable: Cenntos
86
+ * Acceptable: CentOS
87
+ * Don&#39;t pluralize a trademark.
88
+ * Unacceptable: I have seventeen CentOSes in my lab.
89
+ * Acceptable: I have seventeen CentOS boxes in my lab.
90
+ * 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.
91
+ * Unacceptable: I installed a CentOS on my friend&#39;s laptop.
92
+ * Acceptable: I installed a CentOS release on my friend&#39;s laptop.
93
+ * Don&#39;t use a trademark as a verb.
94
+ * Unacceptable: We are CentOSing our servers.
95
+ * Acceptable: We are installing the CentOS distribution on our servers.
96
+ * Don&#39;t use a trademark as a possessive.
97
+ * Unacceptable: CentOS&#39;s distribution is stable.
98
+ * Acceptable: The CentOS distribution is stable.
99
+
100
+ ##Use of logos
101
+
102
+ 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.
103
+
104
+ #Contact Information
105
+
106
+ 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.
107
+
108
+ #License and Attribution
109
+ 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).
file added
+29
content/media.erb ADDED
@@ -0,0 +1,29 @@
1
+ ---
2
+ title: Media
3
+ presentation_title: Office Hours - Cloud SIG
4
+ presenter: CentOS
5
+ iframe_url: <iframe width="640" height="390" src="http://www.youtube.com/embed/VKKYY_5SOWw" frameborder="0" allowfullscreen></iframe>
6
+ event: Office Hours
7
+ stream: true
8
+ ---
9
+ <% if @item[:stream] %>
10
+
11
+ <% if @item[:presentation_title] %>
12
+ <h1 class="video"> <%= @item[:presentation_title] %> </h1>
13
+ <% end %>
14
+ <% if @item[:presenter] %>
15
+ <h2 class="video"> Presenter: <%= @item[:presenter] %>
16
+ <% end %>
17
+ <br />
18
+ <br />
19
+ <%= @item[:iframe_url] %>
20
+
21
+ <% if @item[:event] %>
22
+ <h3 class="video">Stream of: <%= @item[:event] %>
23
+ <% end %>
24
+ <% else %>
25
+ <h1 class="video"> No Live Broadcast</h1>
26
+ <h2 class="video">Videos from Past Events</h2>
27
+ <iframe width="560" height="315" src="http://www.youtube.com/embed/videoseries?list=PLuRtbOXpVDjC0WAkHx0oW4Y6gu8uBWHmf" frameborder="0" ></iframe>
28
+ <% end %>
29
+
content/robots.txt.erb ADDED
@@ -0,0 +1,11 @@
1
+ ---
2
+ is_hidden: true
3
+ path: "/robots.txt"
4
+ ---
5
+ Sitemap: http://www.centos.org/sitemap.xml
6
+
7
+ User-Agent: *
8
+ Crawl-delay: 1.0
9
+ Disallow: /scripts/
10
+ Disallow: /themes/
11
+
content/sitemap.xml.erb ADDED
@@ -0,0 +1,5 @@
1
+ ---
2
+ is_hidden: false
3
+ path: "/sitemap.xml"
4
+ ---
5
+ <%= xml_sitemap :items => @items.reject{ |i| i[:is_hidden] || i.binary? } %>
file added
+29
content/sponsors.erb ADDED
@@ -0,0 +1,29 @@
1
+ ---
2
+ title: "CentOS Sponsors"
3
+ markdown: basic
4
+ is_dynamic: true
5
+ is_hidden: false
6
+ ---
7
+
8
+ <div class="row">
9
+ <div class="jumbotron col-md-12">
10
+ <h1>Sponsors</h1>
11
+ <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>
12
+ </div>
13
+ </div>
14
+
15
+
16
+
17
+ <div class="row">
18
+ <% @site.items.select { |i| i[:sponsor] }.shuffle.each do|i| %>
19
+ <div class="col-sm-6 col-md-4">
20
+ <div class="thumbnail">
21
+ <img class="rounded" src="<%= i[:img] %>">
22
+ <div class="caption">
23
+ <h3><%= i[:name] %> </h3>
24
+ <p> <a href="<%= i[:url] %>"><%= i[:url] %></a></p>
25
+ </div>
26
+ </div>
27
+ </div>
28
+ <% end %>
29
+ </div>
content/sponsors/air-vm.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: air-vm
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/airvm-small.gif
7
+ url: http://www.airvm.com/CentOS
8
+ ---
content/sponsors/baseip.erb ADDED
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: baseip
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/baseip_240x60.jpg
7
+ url: http://www.baseip.com/
8
+ ---
9
+
content/sponsors/brinkster.erb ADDED
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: brinkster
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/240x60_Brinkster_1.gif
7
+ url: http://www.brinkster.com/managed-hosting-services/managed-dedicated-server-hosting.aspx
8
+ ---
9
+
content/sponsors/castlegem.erb ADDED
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: castlegem
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/Banner_Castlegem_240x60.gif
7
+ url: http://www.castlegem.co.uk/
8
+ ---
9
+
content/sponsors/ch-center.erb ADDED
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: ch-center
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/ch-center-small.png
7
+ url: http://www.ch-center.com/
8
+ ---
9
+
content/sponsors/cloudbase.erb ADDED
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: cloudbase
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/CentOS-CBSL-02.png
7
+ url: http://www.cloudbase.it/
8
+ ---
9
+
content/sponsors/codero.erb ADDED
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: codero
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/codero_small.gif
7
+ url: http://www.codero.com
8
+ ---
9
+
content/sponsors/coloamerica.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: coloamerica
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/coloamerica_small.gif
7
+ url: http://www.colocationamerica.com/dedicated_servers
8
+ ---
content/sponsors/dbd.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: Database By Design
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/dbd_240_60.jpg
7
+ url: http://www.databasebydesignllc.com
8
+ ---
content/sponsors/easyspace.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: easyspace
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/iomart-240x60.gif
7
+ url: http://www.easyspace.com/dedserver_main.php
8
+ ---
content/sponsors/galaxyvisions.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: galaxyvisions
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/galaxy_small.gif
7
+ url: http://www.galaxyvisions.com/monthly_server_specials.php?adn=3491
8
+ ---
content/sponsors/godaddy.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: GoDaddy
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/godaddy.jpg
7
+ url: http://www.godaddy.com
8
+ ---
content/sponsors/hostasaurus.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: hostasaurus
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/hostasaurus240x60banner.gif
7
+ url: http://www.hostasaurus.com/
8
+ ---
content/sponsors/hostdime.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: hostdime
3
+ sponsor: true
4
+ country: USA
5
+ is_hidden: true
6
+ img: /images/sponsors/HostDime_Logo_Slogan_300_71.png
7
+ url: http://www.hostdime.com
8
+ ---
content/sponsors/hostdimebr.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: hostdime-br
3
+ sponsor: true
4
+ country: brazil
5
+ is_hidden: true
6
+ img: /images/sponsors/hostdime_br_small.jpg
7
+ url: http://www.hostdime.com.br
8
+ ---
content/sponsors/hostkey.erb ADDED
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: hostkey
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/hostkey_small.gif
7
+ url: http://www.hostkey.com/
8
+ ---
9
+
content/sponsors/jtlnet.erb ADDED
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: jtlnet
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/jtl_small.gif
7
+ url: http://www.jtlnet.com/
8
+ ---
9
+
content/sponsors/kartenzia.erb ADDED
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: kartenzia
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/kartenzia_small.jpg
7
+ url: http://www.kartenzia.de/einladungskarten/hochzeit/
8
+ ---
9
+
content/sponsors/layered_tech.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: LayeredTech
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/lt_banner_240.gif
7
+ url: http://www.layeredtech.com
8
+ ---
content/sponsors/microserv.erb ADDED
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: microserv
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/microserv_small.jpg
7
+ url: http://www.ida.net/
8
+ ---
9
+
content/sponsors/multacom.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: multacom
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/multacom-240x60.gif
7
+ url: http://www.multacom.com/
8
+ ---
content/sponsors/ndchost.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: NDCHost
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/ndc_host_240.gif
7
+ url: http://www.ndchost.com/
8
+ ---
content/sponsors/netelligent.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: netelligent
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/netelligent_small.png
7
+ url: http://www.netelligent.ca/centos/
8
+ ---
content/sponsors/psw.erb ADDED
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: psw group
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/PSW_Banner_240x60.jpg
7
+ url: http://www.psw.net/
8
+ ---
9
+
content/sponsors/psychz.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: Psychz Networks
3
+ sponsor: true
4
+ is_hidden: true
5
+ img: /images/sponsors/psychz_net.gif
6
+ url: http://www.psychz.net/
7
+ ---
8
+
content/sponsors/pwebtech.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: Pegasus Web Technologies
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/pwebtech_banner_240.gif
7
+ url: http://www.pwebtech.com/
8
+ ---
content/sponsors/securedservers.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: PhoenixNAP Secured Servers
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/cavecreek_banner_240.gif
7
+ url: http://securedservers.com
8
+ ---
content/sponsors/serverpronto.erb ADDED
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: serverpronto
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/serverpronto_small.gif
7
+ url: http://www.serverpronto.com/
8
+ ---
9
+
content/sponsors/servint.erb ADDED
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: servint
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/srvint_small.gif
7
+ url: http://www.servint.com
8
+ ---
9
+
content/sponsors/shinjiru.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: shinjiru
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/shinjirubanner260x60.gif
7
+ url: http://shinjiru.com/
8
+ ---
content/sponsors/steadfast.erb ADDED
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: steadfast
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/steadfast_234x60.gif
7
+ url: http://steadfast.net/
8
+ ---
9
+
content/sponsors/theplanet.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: theplanet
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/theplanet.jpg
7
+ url: http://www.theplanet.com/dedicated-servers/
8
+ ---
content/sponsors/vhostvn.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: vHost
3
+ sponsor: true
4
+ is_hidden: true
5
+ img: /images/sponsors/vhostvn.gif
6
+ url: http://vhost.vn/
7
+ ---
8
+
content/sponsors/webnx.erb ADDED
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: webnx
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/webnx1.png
7
+ url: http://www.webnx.com
8
+ ---
9
+
content/sponsors/webstuff.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: webstuff israel
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/WEBSTUFF_240x60.gif
7
+ url: http://www.WEBSTUFF.co.il
8
+ ---
content/sponsors/wowrack.erb ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ name: wowrack
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/wow.234x60.gif
7
+ url: http://www.wowrack.com/
8
+ ---
content/sponsors/yourname.erb ADDED
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: yourname
3
+ sponsor: true
4
+ country: usa
5
+ is_hidden: true
6
+ img: /images/sponsors/yourname_small.gif
7
+ url: http://www.yourname.nl/
8
+ ---
9
+
file added
+49
content/variants.md ADDED
@@ -0,0 +1,49 @@
1
+ ---
2
+ title: "CentOS variants"
3
+ markdown: basic
4
+ is_dynamic: true
5
+ ---
6
+ * Table of contents will replace this text.
7
+ {:toc}
8
+
9
+
10
+ #CentOS variants ( proposal )
11
+
12
+ 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.
13
+
14
+ 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.
15
+
16
+ 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.
17
+
18
+ The end goal is to make it easier for users to run different open source software directly on and in CentOS itself.
19
+
20
+ [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.
21
+
22
+ 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.
23
+
24
+ (Some SIGs don't focus on producing a variant but instead work on Infrastructure, Design, Documentation, and so forth.)
25
+
26
+ #Using variants
27
+
28
+ It's as easy as using CentOS core. There are two main ways:
29
+
30
+ * Download a pre-built image [here](/download).
31
+ * Run the minimal installer from [here](/download) and choose your variant during installation.
32
+
33
+ You may want to look for additional tips, notes, and documentation in the [SIG that produces the variant](http://wiki.centos.org/SpecialInterestGroup).
34
+
35
+ # Note:
36
+
37
+ 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.
38
+
39
+ Some potential early SIG's are listed on the [Special Interest Groups ](http://wiki.centos.org/SpecialInterestGroup)
40
+
41
+ #Making variants
42
+
43
+ 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.
44
+
45
+ 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.
46
+
47
+ 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).
48
+
49
+ 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".
layouts/default-haml.haml ADDED
@@ -0,0 +1,38 @@
1
+ !!!5
2
+ %html
3
+ %head
4
+ %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")
5
+ %meta( charset="utf-8" )
6
+ %meta( name = "viewport" content = "width=device-width, initial-scale=1.0" )
7
+ %meta( name = "description" content = "" )
8
+ %meta( name = "author" content = "" )
9
+ %link( rel="shortcut icon" href="/images/favicon.ico" )
10
+ %title= @item[:title]
11
+ %script{ :src=>'/assets/js/jquery.min.js' }
12
+ %script{ :src=>'/assets/js/jquery.cycle2.min.js' }
13
+ %script{ :src=>'/assets/js/jquery.cycle2.center.min.js' }
14
+ %script{ :src=>'/assets/js/jquery.backstretch.min.js' }
15
+ %script{ :src=>'/assets/js/sass-bootstrap.js' }
16
+ %script{ :src=>'/assets/js/jquery.tidy.table.min.js' }
17
+ %script{ :src=>'/assets/js/FeedEk.js' }
18
+ %script{ :src=>'/assets/js/google.js' }
19
+ %link(rel='stylesheet' type='text/css' href='/assets/style-v2.css' )
20
+ %link(rel='stylesheet' type='text/css' href='/assets/stylesheet.css' )
21
+ %link(rel='stylesheet' type='text/css' href='/assets/jquery.tidy.table.css' )
22
+ %link{:href => "/images/favicon.ico", :rel => "shortcut icon"}
23
+ /[if lt IE 9]
24
+ %script{ :type=>'text/javascript', :src=>'/assets/js/html5.js' }
25
+ %body
26
+ %script
27
+ $.backstretch("/images/background.jpeg");
28
+ #wrap
29
+ #header
30
+ .container.text-center
31
+ = render 'navbar'
32
+ .container#main
33
+ = yield
34
+ #footer
35
+ .container.text-center
36
+ %p.text-muted.credit &copy; #{ DateTime.now.year } The CentOS Project | <a href="/legal/">Legal</a>
37
+
38
+
file added
+61
layouts/navbar.haml ADDED
@@ -0,0 +1,61 @@
1
+ .navbar.navbar-inverse.navbar-static-top
2
+ .container
3
+ .navbar-header
4
+ %button.navbar-toggle( type="button" data-toggle="collapse" data-target=".navbar-collapse" )
5
+ %span.icon-bar
6
+ %span.icon-bar
7
+ %span.icon-bar
8
+ %a.navbar-brand( href="/" title="Home" )
9
+ %img( src="/images/logo_small.png" )
10
+ .navbar-collapse.collapse
11
+ %ul.nav.navbar-nav
12
+ %li
13
+ %a( href="/download/" ) Get CentOS
14
+ %li.dropdown
15
+ %a.dropdown-toggle( href="#learn" title="About CentOS" data-toggle="dropdown" )
16
+ About
17
+ %b.caret
18
+ %ul.dropdown-menu
19
+ %li
20
+ %a( href="/about/" ) About CentOS
21
+ %li
22
+ %a( href="http://wiki.centos.org/FAQ" ) FAQ
23
+ %li
24
+ %a( href="http://wiki.centos.org/SpecialInterestGroup" ) About SIGs
25
+ %li
26
+ %a( href="/variants/" ) CentOS Variants
27
+ %li
28
+ %a( href="/about/governance/" ) Governance
29
+
30
+ %li.dropdown
31
+ %a.dropdown-toggle( href="#learn" title="The CentOS Community" data-toggle="dropdown" )
32
+ Community
33
+ %b.caret
34
+ %ul.dropdown-menu
35
+ %li
36
+ %a( href="http://wiki.centos.org/Contribute" ) Contribute
37
+ %li
38
+ %a( href="http://www.centos.org/forums/" ) Forums
39
+ %li
40
+ %a( href="http://wiki.centos.org/GettingHelp/ListInfo" ) Mailing Lists
41
+ %li
42
+ %a( href="http://wiki.centos.org/irc" ) IRC
43
+ %li
44
+ %a( href="http://planet.centos.org" ) Planet
45
+ %li
46
+ %a( href="http://bugs.centos.org" ) Submit a Bug
47
+ -#%li
48
+ %a( href="/community/stories/" ) Stories
49
+
50
+ %li.dropdown
51
+ %a.dropdown-toggle( href="#learn" title="CentOS Documentation" data-toggle="dropdown" )
52
+ Documentation
53
+ %b.caret
54
+ %ul.dropdown-menu
55
+ %li
56
+ %a( href="http://wiki.centos.org" ) Wiki
57
+ %li
58
+ %a( href="/docs/" ) Manuals
59
+
60
+ %li
61
+ %a( href="http://wiki.centos.org/Documentation?action=show&redirect=GettingHelp" ) Help
file added
+2
lib/default.rb ADDED
@@ -0,0 +1,2 @@
1
+ # All files in the 'lib' directory will be loaded
2
+ # before nanoc starts compiling.
lib/filters/add_ids_to_headers.rb ADDED
@@ -0,0 +1,20 @@
1
+ require 'nokogiri'
2
+
3
+ module Nanoc3::Filters
4
+
5
+ # TODO document
6
+ class AddIDsToHeaders < Nanoc3::Filter
7
+
8
+ identifiers :add_ids_to_headers
9
+
10
+ def run(content, arguments={})
11
+ doc = Nokogiri::HTML.parse(content)
12
+ doc.css("h1, h2, h3, h4, h5, h6").each do |header|
13
+ header['id'] = header.content.downcase.gsub(/\W+/, '-').gsub(/^-|-$/, '')
14
+ end
15
+ doc.to_s
16
+ end
17
+
18
+ end
19
+
20
+ end
lib/filters/add_toc.rb ADDED
@@ -0,0 +1,28 @@
1
+ class AddTOCFilter < Nanoc::Filter
2
+
3
+ identifier :add_toc
4
+
5
+ def run(content, params={})
6
+ content.gsub('{{TOC}}') do
7
+ # Find all top-level sections
8
+ doc = Nokogiri::HTML(content)
9
+ headers = doc.xpath('//h2').map do |header|
10
+ { :title => header.inner_html, :id => header['id'] }
11
+ end
12
+
13
+ if headers.empty?
14
+ next ''
15
+ end
16
+
17
+ # Build table of contents
18
+ res = '<ol class="toc">'
19
+ headers.each do |header|
20
+ res << %[<li><a href="##{header[:id]}">#{header[:title]}</a></li>]
21
+ end
22
+ res << '</ol>'
23
+
24
+ res
25
+ end
26
+ end
27
+
28
+ end
lib/filters/remove_spacing_around_pre.rb ADDED
@@ -0,0 +1,13 @@
1
+ module Nanoc3::Filters
2
+
3
+ class RemoveSpacingRoundPre < Nanoc3::Filter
4
+
5
+ identifiers :remove_spacing_around_pre
6
+
7
+ def run(content, arguments={})
8
+ content.gsub(/<pre( title="[^"]+")?><code( class="language-[a-z]+")?>\n/) { |m| m[0..-2] }
9
+ end
10
+
11
+ end
12
+
13
+ end
file added
+5
lib/helpers.rb ADDED
@@ -0,0 +1,5 @@
1
+ # this is for partials (use <%= render "head", :title => "Foo" %> for example)
2
+ include Nanoc::Helpers::Rendering
3
+ include Nanoc3::Helpers::Filtering
4
+ include Nanoc3::Helpers::Blogging
5
+ include Nanoc3::Helpers::Capturing
file added
+1
lib/sitemap.rb ADDED
@@ -0,0 +1 @@
1
+ include Nanoc3::Helpers::XMLSitemap
file added
+96
nanoc.yaml ADDED
@@ -0,0 +1,96 @@
1
+ # A list of file extensions that nanoc will consider to be textual rather than
2
+ # binary. If an item with an extension not in this list is found, the file
3
+ # will be considered as binary.
4
+ text_extensions: [ 'coffee', 'css', 'adoc', 'erb', 'haml', 'handlebars', 'hb', 'htm', 'html', 'js', 'less', 'markdown', 'md', 'ms', 'mustache', 'php', 'rb', 'sass', 'scss', 'txt', 'xhtml', 'xml' ]
5
+
6
+ # The path to the directory where all generated files will be written to. This
7
+ # can be an absolute path starting with a slash, but it can also be path
8
+ # relative to the site directory.
9
+ output_dir: output
10
+
11
+ # A list of index filenames, i.e. names of files that will be served by a web
12
+ # server when a directory is requested. Usually, index files are named
13
+ # “index.html”, but depending on the web server, this may be something else,
14
+ # such as “default.htm”. This list is used by nanoc to generate pretty URLs.
15
+ index_filenames: [ 'index.html' ]
16
+
17
+ # Whether or not to generate a diff of the compiled content when compiling a
18
+ # site. The diff will contain the differences between the compiled content
19
+ # before and after the last site compilation.
20
+ enable_output_diff: true
21
+
22
+ prune:
23
+ # Whether to automatically remove files not managed by nanoc from the output
24
+ # directory. For safety reasons, this is turned off by default.
25
+ auto_prune: true
26
+
27
+ # Which files and directories you want to exclude from pruning. If you version
28
+ # your output directory, you should probably exclude VCS directories such as
29
+ # .git, .svn etc.
30
+ exclude: [ '.git', '.hg', '.svn', 'CVS' ]
31
+
32
+ # The data sources where nanoc loads its data from. This is an array of
33
+ # hashes; each array element represents a single data source. By default,
34
+ # there is only a single data source that reads data from the “content/” and
35
+ # “layout/” directories in the site directory.
36
+ data_sources:
37
+ -
38
+ # The type is the identifier of the data source. By default, this will be
39
+ # `filesystem_unified`.
40
+ type: filesystem_unified
41
+
42
+ # The path where items should be mounted (comparable to mount points in
43
+ # Unix-like systems). This is “/” by default, meaning that items will have
44
+ # “/” prefixed to their identifiers. If the items root were “/en/”
45
+ # instead, an item at content/about.html would have an identifier of
46
+ # “/en/about/” instead of just “/about/”.
47
+ items_root: /
48
+
49
+ # The path where layouts should be mounted. The layouts root behaves the
50
+ # same as the items root, but applies to layouts rather than items.
51
+ layouts_root: /
52
+ -
53
+ type: static
54
+ items_root: /static/
55
+
56
+ # Whether to allow periods in identifiers. When turned off, everything
57
+ # past the first period is considered to be the extension, and when
58
+ # turned on, only the characters past the last period are considered to
59
+ # be the extension. For example, a file named “content/about.html.erb”
60
+ # will have the identifier “/about/” when turned off, but when turned on
61
+ # it will become “/about.html/” instead.
62
+ allow_periods_in_identifiers: false
63
+ base_url: http://www.centos.org
64
+
65
+ # Configuration for the “watch” command, which watches a site for changes and
66
+ # recompiles if necessary.
67
+ watcher:
68
+ # A list of directories to watch for changes. When editing this, make sure
69
+ # that the “output/” and “tmp/” directories are _not_ included in this list,
70
+ # because recompiling the site will cause these directories to change, which
71
+ # will cause the site to be recompiled, which will cause these directories
72
+ # to change, which will cause the site to be recompiled again, and so on.
73
+ dirs_to_watch: [ 'content', 'layouts', 'lib' ]
74
+
75
+ # A list of single files to watch for changes. As mentioned above, don’t put
76
+ # any files from the “output/” or “tmp/” directories in here.
77
+ files_to_watch: [ 'nanoc.yaml', 'Rules' ]
78
+
79
+ # When to send notifications (using Growl or notify-send).
80
+ notify_on_compilation_success: true
81
+ notify_on_compilation_failure: true
82
+
83
+ #Deployment
84
+ deploy:
85
+ staging:
86
+ kind: rsync
87
+ dst: "root@10.10.171.50:/var/www/html"
88
+ options: [ '-aP', '--delete-after' ]
89
+ prod1:
90
+ kind: rsync
91
+ dst: "webcontent@newweb.centos.org:/var/www/html/websitev2"
92
+ options: [ '-aP', '--delete-after', '--exclude="*.csv"', '--exclude="*.rss"' ]
93
+ prod2:
94
+ kind: rsync
95
+ dst: "webcontent@newweb2:/var/www/html/websitev2"
96
+ options: [ '-aP', '--delete-after', '--exclude="*.csv"', '--exclude="*.rss"' ]
static/assets/csvtable-look.css ADDED
@@ -0,0 +1,34 @@
1
+ /* this is for the mirror list table */
2
+
3
+ #CSVTable td, #CSVTable th {
4
+ padding: 0.5em;
5
+ }
6
+
7
+ #CSVTable th.header:first-child {
8
+ border-radius: 7px 0 0 0;
9
+ }
10
+ #CSVTable th.header:last-child {
11
+ border-radius: 0 7px 0 0;
12
+ }
13
+
14
+ #CSVTable th.header {
15
+ background: rgba(0,0,0,0.6);
16
+ color: #aaaaaa;
17
+ }
18
+ #CSVTable tr.even td {
19
+ background-color: rgba(0,0,0, 0.15);
20
+ }
21
+
22
+ #CSVTable th.header.headerSortUp, #CSVTable th.header.headerSortDown {
23
+ color: #ffffff;
24
+ }
25
+
26
+ /* this inline utf-8 might be a bit weird, but &#9662; notation doesnt work */
27
+ th.headerSortUp:after {
28
+ content: " ▴";
29
+ }
30
+ th.headerSortDown:after {
31
+ content: " ▾";
32
+ }
33
+
34
+
static/assets/fonts/bootstrap/glyphicons-halflings-regular.svg ADDED
@@ -0,0 +1,228 @@
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata></metadata>
5
+ <defs>
6
+ <font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
7
+ <font-face units-per-em="1200" ascent="960" descent="-240" />
8
+ <missing-glyph horiz-adv-x="500" />
9
+ <glyph />
10
+ <glyph />
11
+ <glyph unicode=" " />
12
+ <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" />
13
+ <glyph unicode="+" d="M1100 400h-400v-400h-300v400h-400v300h400v400h300v-400h400v-300z" />
14
+ <glyph unicode="&#xa0;" />
15
+ <glyph unicode="&#x2000;" horiz-adv-x="652" />
16
+ <glyph unicode="&#x2001;" horiz-adv-x="1304" />
17
+ <glyph unicode="&#x2002;" horiz-adv-x="652" />
18
+ <glyph unicode="&#x2003;" horiz-adv-x="1304" />
19
+ <glyph unicode="&#x2004;" horiz-adv-x="434" />
20
+ <glyph unicode="&#x2005;" horiz-adv-x="326" />
21
+ <glyph unicode="&#x2006;" horiz-adv-x="217" />
22
+ <glyph unicode="&#x2007;" horiz-adv-x="217" />
23
+ <glyph unicode="&#x2008;" horiz-adv-x="163" />
24
+ <glyph unicode="&#x2009;" horiz-adv-x="260" />
25
+ <glyph unicode="&#x200a;" horiz-adv-x="72" />
26
+ <glyph unicode="&#x202f;" horiz-adv-x="260" />
27
+ <glyph unicode="&#x205f;" horiz-adv-x="326" />
28
+ <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" />
29
+ <glyph unicode="&#x2212;" d="M1100 700h-900v-300h900v300z" />
30
+ <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" />
31
+ <glyph unicode="&#x2709;" d="M1200 1100h-1200l600 -603zM300 600l-300 -300v600zM1200 900v-600l-300 300zM800 500l400 -400h-1200l400 400l200 -200z" />
32
+ <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" />
33
+ <glyph unicode="&#xe000;" horiz-adv-x="500" d="M0 0z" />
34
+ <glyph unicode="&#xe001;" d="M700 100h300v-100h-800v100h300v550l-500 550h1200l-500 -550v-550z" />
35
+ <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" />
36
+ <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" />
37
+ <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" />
38
+ <glyph unicode="&#xe006;" d="M791 522l145 -449l-384 275l-382 -275l146 447l-388 280h479l146 400h2l146 -400h472zM168 71l2 1z" />
39
+ <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" />
40
+ <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" />
41
+ <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" />
42
+ <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" />
43
+ <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" />
44
+ <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" />
45
+ <glyph unicode="&#xe013;" d="M448 34l818 820l-212 212l-607 -607l-206 207l-212 -212z" />
46
+ <glyph unicode="&#xe014;" d="M882 106l-282 282l-282 -282l-212 212l282 282l-282 282l212 212l282 -282l282 282l212 -212l-282 -282l282 -282z" />
47
+ <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" />
48
+ <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" />
49
+ <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" />
50
+ <glyph unicode="&#xe018;" d="M1200 1h-200v1200h200v-1200zM900 1h-200v800h200v-800zM600 1h-200v500h200v-500zM300 301h-200v-300h200v300z" />
51
+ <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" />
52
+ <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" />
53
+ <glyph unicode="&#xe021;" d="M1301 601h-200v-600h-300v400h-300v-400h-300v600h-200l656 644z" />
54
+ <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" />
55
+ <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" />
56
+ <glyph unicode="&#xe024;" d="M721 400h-242l-40 -400h-539l431 1200h209l-21 -300h162l-20 300h208l431 -1200h-538zM712 500l-27 300h-170l-27 -300h224z" />
57
+ <glyph unicode="&#xe025;" d="M1100 400v-400h-1100v400h490l-290 300h200v500h300v-500h200l-290 -300h490zM988 300h-175v-100h175v100z" />
58
+ <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" />
59
+ <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" />
60
+ <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" />
61
+ <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" />
62
+ <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" />
63
+ <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" />
64
+ <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" />
65
+ <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" />
66
+ <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" />
67
+ <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" />
68
+ <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" />
69
+ <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" />
70
+ <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" />
71
+ <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 " />
72
+ <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" />
73
+ <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" />
74
+ <glyph unicode="&#xe043;" d="M1200 1200v-1000l-100 -100v1000h-750l-100 -100h750v-1000h-900v1025l175 175h925z" />
75
+ <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" />
76
+ <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" />
77
+ <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" />
78
+ <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" />
79
+ <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" />
80
+ <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" />
81
+ <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" />
82
+ <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" />
83
+ <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" />
84
+ <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" />
85
+ <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" />
86
+ <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" />
87
+ <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" />
88
+ <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" />
89
+ <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" />
90
+ <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" />
91
+ <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 " />
92
+ <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" />
93
+ <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" />
94
+ <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" />
95
+ <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" />
96
+ <glyph unicode="&#xe068;" d="M900 303v198h-200v-200h195l-295 -300l-300 300h200v200h-200v-198l-300 300l300 296v-198h200v200h-200l300 300l295 -300h-195v-200h200v198l300 -296z" />
97
+ <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" />
98
+ <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" />
99
+ <glyph unicode="&#xe071;" d="M1200 0l-500 488v-488l-564 550l564 550v-487l500 487v-1100z" />
100
+ <glyph unicode="&#xe072;" d="M1100 550l-900 550v-1100z" />
101
+ <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" />
102
+ <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" />
103
+ <glyph unicode="&#xe075;" d="M500 0v488l-500 -488v1100l500 -487v487l564 -550z" />
104
+ <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" />
105
+ <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" />
106
+ <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" />
107
+ <glyph unicode="&#xe079;" d="M777 7l240 240l-353 353l353 353l-240 240l-592 -594z" />
108
+ <glyph unicode="&#xe080;" d="M513 -46l-241 240l353 353l-353 353l241 240l572 -571l21 -22l-1 -1v-1z" />
109
+ <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" />
110
+ <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" />
111
+ <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" />
112
+ <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" />
113
+ <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" />
114
+ <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" />
115
+ <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" />
116
+ <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" />
117
+ <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" />
118
+ <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" />
119
+ <glyph unicode="&#xe091;" d="M1200 400h-600v-301l-600 448l600 453v-300h600v-300z" />
120
+ <glyph unicode="&#xe092;" d="M600 400h-600v300h600v300l600 -453l-600 -448v301z" />
121
+ <glyph unicode="&#xe093;" d="M1098 600h-298v-600h-300v600h-296l450 600z" />
122
+ <glyph unicode="&#xe094;" d="M998 600l-449 -600l-445 600h296v600h300v-600h298z" />
123
+ <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" />
124
+ <glyph unicode="&#xe096;" d="M1200 1200h-400l129 -129l-294 -294l142 -142l294 294l129 -129v400zM565 423l-294 -294l129 -129h-400v400l129 -129l294 294z" />
125
+ <glyph unicode="&#xe097;" d="M871 730l129 -130h-400v400l129 -129l295 295l142 -141zM200 600h400v-400l-129 130l-295 -295l-142 141l295 295z" />
126
+ <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" />
127
+ <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" />
128
+ <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" />
129
+ <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" />
130
+ <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" />
131
+ <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" />
132
+ <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" />
133
+ <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" />
134
+ <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" />
135
+ <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" />
136
+ <glyph unicode="&#xe113;" d="M902 184l226 227l-578 579l-580 -579l227 -227l352 353z" />
137
+ <glyph unicode="&#xe114;" d="M650 218l578 579l-226 227l-353 -353l-352 353l-227 -227z" />
138
+ <glyph unicode="&#xe115;" d="M1198 400v600h-796l215 -200h381v-400h-198l299 -283l299 283h-200zM-198 700l299 283l300 -283h-203v-400h385l215 -200h-800v600h-196z" />
139
+ <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" />
140
+ <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" />
141
+ <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" />
142
+ <glyph unicode="&#xe119;" d="M302 300h198v600h-198l298 300l298 -300h-198v-600h198l-298 -300z" />
143
+ <glyph unicode="&#xe120;" d="M900 303v197h-600v-197l-300 297l300 298v-198h600v198l300 -298z" />
144
+ <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" />
145
+ <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" />
146
+ <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" />
147
+ <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" />
148
+ <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" />
149
+ <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" />
150
+ <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" />
151
+ <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" />
152
+ <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" />
153
+ <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" />
154
+ <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" />
155
+ <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" />
156
+ <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" />
157
+ <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" />
158
+ <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 " />
159
+ <glyph unicode="&#xe138;" d="M1100 1200v-100h-1000v100h1000zM150 1000h900l-350 -500v-300l-200 -200v500z" />
160
+ <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" />
161
+ <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" />
162
+ <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" />
163
+ <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" />
164
+ <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" />
165
+ <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" />
166
+ <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" />
167
+ <glyph unicode="&#xe150;" d="M300 0l298 300h-198v900h-200v-900h-198zM900 1200l298 -300h-198v-900h-200v900h-198z" />
168
+ <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" />
169
+ <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" />
170
+ <glyph unicode="&#xe153;" d="M300 0l298 300h-198v900h-200v-900h-198zM900 1100h-100v100h200v-500h-100v400zM1100 500v-500h-100v100h-200v400h300zM1001 400h-100v-200h100v200z" />
171
+ <glyph unicode="&#xe154;" d="M300 0l298 300h-198v900h-200v-900h-198zM1100 1200v-500h-100v100h-200v400h300zM1001 1100h-100v-200h100v200zM900 400h-100v100h200v-500h-100v400z" />
172
+ <glyph unicode="&#xe155;" d="M300 0l298 300h-198v900h-200v-900h-198zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
173
+ <glyph unicode="&#xe156;" d="M300 0l298 300h-198v900h-200v-900h-198zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
174
+ <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" />
175
+ <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" />
176
+ <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" />
177
+ <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" />
178
+ <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" />
179
+ <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" />
180
+ <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" />
181
+ <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" />
182
+ <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" />
183
+ <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" />
184
+ <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" />
185
+ <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" />
186
+ <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" />
187
+ <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" />
188
+ <glyph unicode="&#xe171;" d="M1200 1199v-1079l-475 272l-310 -393v416h-392zM1166 1148l-672 -712v-226z" />
189
+ <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" />
190
+ <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" />
191
+ <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" />
192
+ <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" />
193
+ <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" />
194
+ <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" />
195
+ <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" />
196
+ <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" />
197
+ <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" />
198
+ <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" />
199
+ <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" />
200
+ <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" />
201
+ <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" />
202
+ <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" />
203
+ <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" />
204
+ <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" />
205
+ <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" />
206
+ <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" />
207
+ <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" />
208
+ <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" />
209
+ <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" />
210
+ <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" />
211
+ <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" />
212
+ <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" />
213
+ <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" />
214
+ <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" />
215
+ <glyph unicode="&#xe199;" d="M700 200h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-155l-75 -45h350l-75 45v155z" />
216
+ <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" />
217
+ <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" />
218
+ <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" />
219
+ <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" />
220
+ <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" />
221
+ <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" />
222
+ <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" />
223
+ <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" />
224
+ <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" />
225
+ <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" />
226
+ <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" />
227
+ </font>
228
+ </defs></svg>
static/assets/jquery.tidy.table.css ADDED
@@ -0,0 +1,76 @@
1
+ /*
2
+ * Tidy Table
3
+ * Generate a sortable HTML table from JSON
4
+ *
5
+ * Copyright 2012-2013, Marc S. Brooks (http://mbrooks.info)
6
+ * Licensed under the MIT license:
7
+ * http://www.opensource.org/licenses/mit-license.php
8
+ *
9
+ * Dependencies:
10
+ * jquery.js
11
+ */
12
+
13
+ table.tidy_table {
14
+ background-color: rgba(0,0,0, 0.2);
15
+ border-collapse: collapse;
16
+ /* border: 1px solid rgba(0,0,0,0.2); */
17
+ cursor: pointer;
18
+ white-space: nowrap;
19
+ }
20
+
21
+ table.tidy_table thead {
22
+ border: none;
23
+ }
24
+
25
+ table.tidy_table tr.check_on {
26
+ background-color: rgba(255,255,255,0.5);
27
+ }
28
+
29
+ table.tidy_table tr.check_off {
30
+ background-color: rgba(0,0,0,0.4);
31
+ }
32
+
33
+ table.tidy_table th {
34
+ background-color: rgba(0,0,0,0.6);
35
+ }
36
+
37
+ table.tidy_table th.sort_asc {
38
+ background: rgba(0,0,0,0.8) url( /images/arrow_asc.gif ) no-repeat right center;
39
+ }
40
+
41
+ table.tidy_table th.sort_desc {
42
+ background: rgba(0,0,0,0.8) url( /images/arrow_desc.gif ) no-repeat right center;
43
+ }
44
+
45
+ table.tidy_table th,
46
+ table.tidy_table td {
47
+ padding: 6px 20px 6px 20px;
48
+ }
49
+
50
+ table.tidy_table td {
51
+ border-right: none;
52
+ padding: 7px 20px 7px 20px;
53
+ }
54
+
55
+ table.tidy_table th:nth-child(1),
56
+ table.tidy_table td:nth-child(1) {
57
+ width: 10px;
58
+ }
59
+
60
+ table.tidy_table td:nth-child(1) {
61
+ /* border-right: 1px solid rgba(0,0,; */
62
+ }
63
+
64
+ table.tidy_table input[type=checkbox],
65
+ table.tidy_table input[type=checkbox] {
66
+ display: block;
67
+ margin: 0px auto 0px auto;
68
+ }
69
+
70
+ table.tidy_table td:nth-last-child(1) {
71
+ /* border-right: none; */
72
+ }
73
+
74
+ table.tidy_table td {
75
+ /* border-top: 1px solid rgba(0,0,0,0.2); */
76
+ }
static/assets/js/FeedEk.js ADDED
@@ -0,0 +1,7 @@
1
+ /*
2
+ * FeedEk jQuery RSS/ATOM Feed Plugin v1.1.2
3
+ * http://jquery-plugins.net/FeedEk/FeedEk.html
4
+ * Author : Engin KIZIL
5
+ * http://www.enginkizil.com
6
+ */
7
+ (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)
static/assets/js/google.js ADDED
@@ -0,0 +1,8 @@
1
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
2
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
3
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
4
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
5
+
6
+ ga('create', 'UA-46688222-2', 'centos.org');
7
+ ga('send', 'pageview');
8
+
static/assets/js/html5.js ADDED
@@ -0,0 +1,9 @@
1
+ /*
2
+ HTML5 Shiv v3.6.2pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
3
+ Uncompressed source: https://github.com/aFarkas/html5shiv
4
+ */
5
+ (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();
6
+ 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>";
7
+ 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||
8
+ "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();
9
+ 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);
static/assets/js/jquery.backstretch.min.js ADDED
@@ -0,0 +1,4 @@
1
+ /*! Backstretch - v2.0.4 - 2013-06-19
2
+ * http://srobbin.com/jquery-plugins/backstretch/
3
+ * Copyright (c) 2013 Scott Robbin; Licensed MIT */
4
+ (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);
static/assets/js/jquery.csvToTable.js ADDED
@@ -0,0 +1,154 @@
1
+ /**
2
+ * CSV to Table plugin
3
+ * http://code.google.com/p/jquerycsvtotable/
4
+ *
5
+ * Copyright (c) 2010 Steve Sobel
6
+ * http://honestbleeps.com/
7
+ *
8
+ * v0.9 - 2010-06-22 - First release.
9
+ *
10
+ * Example implementation:
11
+ * $('#divID').CSVToTable('test.csv');
12
+ *
13
+ * The above line would load 'test.csv' via AJAX and render a table. If
14
+ * headers are not specified, the plugin assumes the first line of the CSV
15
+ * file contains the header names.
16
+ *
17
+ * Configurable options:
18
+ * separator - separator to use when parsing CSV/TSV data
19
+ * - value will almost always be "," or "\t" (comma or tab)
20
+ * - if not specified, default value is ","
21
+ * headers - an array of headers for the CSV data
22
+ * - if not specified, plugin assumes that the first line of the CSV
23
+ * file contains the header names.
24
+ * - Example: headers: ['Album Title', 'Artist Name', 'Price ($USD)']
25
+ * tableClass - class name to apply to the <table> tag rendered by the plugin.
26
+ * theadClass - class name to apply to the <thead> tag rendered by the plugin.
27
+ * thClass - class name to apply to the <th> tag rendered by the plugin.
28
+ * tbodyClass - class name to apply to the <tbody> tag rendered by the plugin.
29
+ * trClass - class name to apply to the <tr> tag rendered by the plugin.
30
+ * tdClass - class name to apply to the <td> tag rendered by the plugin.
31
+ * loadingImage - path to an image to display while CSV/TSV data is loading
32
+ * loadingText - text to display while CSV/TSV is loading
33
+ * - if not specified, default value is "Loading CSV data..."
34
+ *
35
+ *
36
+ * Upon completion, the plugin triggers a "loadComplete" event so that you
37
+ * may perform other manipulation on the table after it has loaded. A
38
+ * common use of this would be to use the jQuery tablesorter plugin, found
39
+ * at http://tablesorter.com/
40
+ *
41
+ * An example of such a call would be as follows, assuming you have loaded
42
+ * the tablesorter plugin.
43
+ *
44
+ * $('#CSVTable').CSVToTable('test.csv',
45
+ * {
46
+ * loadingImage: 'images/loading.gif',
47
+ * startLine: 1,
48
+ * headers: ['Album Title', 'Artist Name', 'Price ($USD)']
49
+ * }
50
+ * ).bind("loadComplete",function() {
51
+ * $('#CSVTable').find('TABLE').tablesorter();
52
+ * });;
53
+
54
+ *
55
+ */
56
+
57
+
58
+ (function($){
59
+
60
+ /**
61
+ *
62
+ * CSV Parser credit goes to Brian Huisman, from his blog entry entitled "CSV String to Array in JavaScript":
63
+ * http://www.greywyvern.com/?post=258
64
+ *
65
+ */
66
+ String.prototype.splitCSV = function(sep) {
67
+ for (var thisCSV = this.split(sep = sep || ","), x = thisCSV.length - 1, tl; x >= 0; x--) {
68
+ if (thisCSV[x].replace(/"\s+$/, '"').charAt(thisCSV[x].length - 1) == '"') {
69
+ if ((tl = thisCSV[x].replace(/^\s+"/, '"')).length > 1 && tl.charAt(0) == '"') {
70
+ thisCSV[x] = thisCSV[x].replace(/^\s*"|"\s*$/g, '').replace(/""/g, '"');
71
+ } else if (x) {
72
+ thisCSV.splice(x - 1, 2, [thisCSV[x - 1], thisCSV[x]].join(sep));
73
+ } else thisCSV = thisCSV.shift().split(sep).concat(thisCSV);
74
+ } else thisCSV[x].replace(/""/g, '"');
75
+ } return thisCSV;
76
+ };
77
+
78
+ $.fn.CSVToTable = function(csvFile, options) {
79
+ var defaults = {
80
+ tableClass: "CSVTable",
81
+ theadClass: "",
82
+ thClass: "",
83
+ tbodyClass: "",
84
+ trClass: "",
85
+ tdClass: "",
86
+ loadingImage: "",
87
+ loadingText: "Loading CSV data...",
88
+ separator: ",",
89
+ startLine: 0
90
+ };
91
+ var options = $.extend(defaults, options);
92
+ return this.each(function() {
93
+ var obj = $(this);
94
+ var error = '';
95
+ (options.loadingImage) ? loading = '<div style="text-align: center"><img alt="' + options.loadingText + '" src="' + options.loadingImage + '" /><br>' + options.loadingText + '</div>' : loading = options.loadingText;
96
+ obj.html(loading);
97
+ $.get(csvFile, function(data) {
98
+ var tableHTML = '<table class="' + options.tableClass + '">';
99
+ var lines = data.replace('\r','').split('\n');
100
+ var printedLines = 0;
101
+ var headerCount = 0;
102
+ var headers = new Array();
103
+ $.each(lines, function(lineCount, line) {
104
+ if ((lineCount == 0) && (typeof(options.headers) != 'undefined')) {
105
+ headers = options.headers;
106
+ headerCount = headers.length;
107
+ tableHTML += '<thead class="' + options.theadClass + '"><tr class="' + options.trClass + '">';
108
+ $.each(headers, function(headerCount, header) {
109
+ tableHTML += '<th class="' + options.thClass + '">' + header + '</th>';
110
+ });
111
+ tableHTML += '</tr></thead><tbody class="' + options.tbodyClass + '">';
112
+ }
113
+ if ((lineCount == options.startLine) && (typeof(options.headers) == 'undefined')) {
114
+ headers = line.splitCSV(options.separator);
115
+ headerCount = headers.length;
116
+ tableHTML += '<thead class="' + options.theadClass + '"><tr class="' + options.trClass + '">';
117
+ $.each(headers, function(headerCount, header) {
118
+ tableHTML += '<th class="' + options.thClass + '">' + header + '</th>';
119
+ });
120
+ tableHTML += '</tr></thead><tbody class="' + options.tbodyClass + '">';
121
+ } else if (lineCount >= options.startLine) {
122
+ var items = line.splitCSV(options.separator);
123
+ if (items.length > 1) {
124
+ printedLines++;
125
+ if (items.length != headerCount) {
126
+ error += 'error on line ' + lineCount + ': Item count (' + items.length + ') does not match header count (' + headerCount + ') \n';
127
+ }
128
+ (printedLines % 2) ? oddOrEven = 'odd' : oddOrEven = 'even';
129
+ tableHTML += '<tr class="' + options.trClass + ' ' + oddOrEven + '">';
130
+ $.each(items, function(itemCount, item) {
131
+ tableHTML += '<td class="' + options.tdClass + '">' + item + '</td>';
132
+ });
133
+ tableHTML += '</tr>';
134
+ }
135
+ }
136
+ });
137
+ tableHTML += '</tbody></table>';
138
+ if (error) {
139
+ obj.html(error);
140
+ } else {
141
+ obj.fadeOut(500, function() {
142
+ obj.html(tableHTML)
143
+ }).fadeIn(function() {
144
+ // trigger loadComplete
145
+ setTimeout(function() {
146
+ obj.trigger("loadComplete");
147
+ },0);
148
+ });
149
+ }
150
+ });
151
+ });
152
+ };
153
+
154
+ })(jQuery);
static/assets/js/jquery.csvToTable2.js ADDED
@@ -0,0 +1,188 @@
1
+ /**
2
+ * CSV to Table plugin
3
+ * http://code.google.com/p/jquerycsvtotable/
4
+ *
5
+ * Copyright (c) 2010 Steve Sobel
6
+ * http://honestbleeps.com/
7
+ *
8
+ * v0.9 - 2010-06-22 - First release.
9
+ *
10
+ * Example implementation:
11
+ * $('#divID').CSVToTable('test.csv');
12
+ *
13
+ * The above line would load 'test.csv' via AJAX and render a table. If
14
+ * headers are not specified, the plugin assumes the first line of the CSV
15
+ * file contains the header names.
16
+ *
17
+ * Configurable options:
18
+ * separator - separator to use when parsing CSV/TSV data
19
+ * - value will almost always be "," or "\t" (comma or tab)
20
+ * - if not specified, default value is ","
21
+ * headers - an array of headers for the CSV data
22
+ * - if not specified, plugin assumes that the first line of the CSV
23
+ * file contains the header names.
24
+ * - Example: headers: ['Album Title', 'Artist Name', 'Price ($USD)']
25
+ * tableClass - class name to apply to the <table> tag rendered by the plugin.
26
+ * theadClass - class name to apply to the <thead> tag rendered by the plugin.
27
+ * thClass - class name to apply to the <th> tag rendered by the plugin.
28
+ * tbodyClass - class name to apply to the <tbody> tag rendered by the plugin.
29
+ * trClass - class name to apply to the <tr> tag rendered by the plugin.
30
+ * tdClass - class name to apply to the <td> tag rendered by the plugin.
31
+ * loadingImage - path to an image to display while CSV/TSV data is loading
32
+ * loadingText - text to display while CSV/TSV is loading
33
+ * - if not specified, default value is "Loading CSV data..."
34
+ *
35
+ *
36
+ * Upon completion, the plugin triggers a "loadComplete" event so that you
37
+ * may perform other manipulation on the table after it has loaded. A
38
+ * common use of this would be to use the jQuery tablesorter plugin, found
39
+ * at http://tablesorter.com/
40
+ *
41
+ * An example of such a call would be as follows, assuming you have loaded
42
+ * the tablesorter plugin.
43
+ *
44
+ * $('#CSVTable').CSVToTable('test.csv',
45
+ * {
46
+ * loadingImage: 'images/loading.gif',
47
+ * startLine: 1,
48
+ * headers: ['Album Title', 'Artist Name', 'Price ($USD)']
49
+ * }
50
+ * ).bind("loadComplete",function() {
51
+ * $('#CSVTable').find('TABLE').tablesorter();
52
+ * });;
53
+
54
+ *
55
+ */
56
+
57
+
58
+ (function($){
59
+
60
+ /**
61
+ *
62
+ * CSV Parser credit goes to Brian Huisman, from his blog entry entitled "CSV String to Array in JavaScript":
63
+ * http://www.greywyvern.com/?post=258
64
+ *
65
+ */
66
+ String.prototype.splitCSV = function(sep) {
67
+ for (var thisCSV = this.split(sep = sep || ","), x = thisCSV.length - 1, tl; x >= 0; x--) {
68
+ if (thisCSV[x].replace(/"\s+$/, '"').charAt(thisCSV[x].length - 1) == '"') {
69
+ if ((tl = thisCSV[x].replace(/^\s+"/, '"')).length > 1 && tl.charAt(0) == '"') {
70
+ thisCSV[x] = thisCSV[x].replace(/^\s*"|"\s*$/g, '').replace(/""/g, '"');
71
+ } else if (x) {
72
+ thisCSV.splice(x - 1, 2, [thisCSV[x - 1], thisCSV[x]].join(sep));
73
+ } else thisCSV = thisCSV.shift().split(sep).concat(thisCSV);
74
+ } else thisCSV[x].replace(/""/g, '"');
75
+ } return thisCSV;
76
+ };
77
+
78
+ $.fn.CSVToTable = function(csvFile, options) {
79
+
80
+ this.processRow = function(headers , items){
81
+ var outItems = [];
82
+ var header;
83
+ for(var h = 0 ; h <= headers.length ; h++){
84
+ header = headers[h];
85
+ if(typeof(header) == 'string' ){
86
+ outItems.push(options.preRenderItem(header , items[h]));
87
+ }else if(typeof(header) != 'undefined') {
88
+ if(header.hidden) continue;
89
+ outItems.push(options.itemMerger(header , items));
90
+ }
91
+ }
92
+ return outItems;
93
+ };
94
+ this.preRenderItem = function(headerLabel , item) {
95
+ return item;
96
+ };
97
+ this.itemMerger = function(header , items) {
98
+ var outItem = [];
99
+ for(var i in header.items){
100
+ outItem.push(options.preRenderItem(items[i]));
101
+ }
102
+ return outItem.join(' ');
103
+ };
104
+ var defaults = {
105
+ tableClass: "CSVTable",
106
+ theadClass: "",
107
+ thClass: "",
108
+ tbodyClass: "",
109
+ trClass: "",
110
+ tdClass: "",
111
+ loadingImage: "",
112
+ loadingText: "Loading CSV data...",
113
+ separator: ",",
114
+ startLine: 0,
115
+ rowProcessor: this.processRow,
116
+ preRenderItem: this.preRenderItem,
117
+ itemMerger: this.itemMerger
118
+ };
119
+ var options = $.extend(defaults, options);
120
+ return this.each(function() {
121
+ var obj = $(this);
122
+ var error = '';
123
+ (options.loadingImage) ? loading = '<div style="text-align: center"><img alt="' + options.loadingText + '" src="' + options.loadingImage + '" /><br>' + options.loadingText + '</div>' : loading = options.loadingText;
124
+ obj.html(loading);
125
+ $.get(csvFile, function(data) {
126
+ var tableHTML = '<table class="' + options.tableClass + '">';
127
+ var lines = data.replace('\r','').split('\n');
128
+ var printedLines = 0;
129
+ var headerCount = 0;
130
+ var headers = new Array();
131
+ var headerLabel;
132
+ $.each(lines, function(lineCount, line) {
133
+ if ((lineCount == 0) && (typeof(options.headers) != 'undefined')) {
134
+ headers = options.headers;
135
+ tableHTML += '<thead class="' + options.theadClass + '"><tr class="' + options.trClass + '">';
136
+ $.each(headers, function(index, header) {
137
+ if(typeof(header) != 'string' && typeof(header) != 'undefined') {
138
+ if(header.hidden) return;
139
+ }
140
+ headerCount++;
141
+ headerLabel = typeof(header) == 'string' ? header : header.label;
142
+ tableHTML += '<th class="' + options.thClass + '">' + headerLabel + '</th>';
143
+ });
144
+ tableHTML += '</tr></thead><tbody class="' + options.tbodyClass + '">';
145
+ }
146
+ if ((lineCount == options.startLine) && (typeof(options.headers) == 'undefined')) {
147
+ headers = line.splitCSV(options.separator);
148
+ headerCount = headers.length;
149
+ tableHTML += '<thead class="' + options.theadClass + '"><tr class="' + options.trClass + '">';
150
+ $.each(headers, function(headerCount, header) {
151
+ tableHTML += '<th class="' + options.thClass + '">' + header + '</th>';
152
+ });
153
+ tableHTML += '</tr></thead><tbody class="' + options.tbodyClass + '">';
154
+ } else if (lineCount >= options.startLine) {
155
+ var items = line.splitCSV(options.separator);
156
+ if (items.length > 1) {
157
+ printedLines++;
158
+ items = options.rowProcessor(headers , items);
159
+ if (items.length != headerCount) {
160
+ error += 'error on line ' + lineCount + ': Item count (' + items.length + ') does not match header count (' + headerCount + ') \n';
161
+ }
162
+ (printedLines % 2) ? oddOrEven = 'odd' : oddOrEven = 'even';
163
+ tableHTML += '<tr class="' + options.trClass + ' ' + oddOrEven + '">';
164
+ $.each(items, function(itemCount, item) {
165
+ tableHTML += '<td class="' + options.tdClass + '">' + item + '</td>';
166
+ });
167
+ tableHTML += '</tr>';
168
+ }
169
+ }
170
+ });
171
+ tableHTML += '</tbody></table>';
172
+ if (error) {
173
+ obj.html(error);
174
+ } else {
175
+ obj.fadeOut(500, function() {
176
+ obj.html(tableHTML)
177
+ }).fadeIn(function() {
178
+ // trigger loadComplete
179
+ setTimeout(function() {
180
+ obj.trigger("loadComplete");
181
+ },0);
182
+ });
183
+ }
184
+ } , "text");
185
+ });
186
+ };
187
+
188
+ })(jQuery);
static/assets/js/jquery.cycle2.center.min.js ADDED
@@ -0,0 +1,2 @@
1
+ /* Plugin for Cycle2; Copyright (c) 2012 M. Alsup; v20131022 */
2
+ (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);
static/assets/js/jquery.cycle2.min.js ADDED
@@ -0,0 +1,17 @@
1
+ /*!
2
+ * jQuery Cycle2; build: v20131005
3
+ * http://jquery.malsup.com/cycle2/
4
+ * Copyright (c) 2013 M. Alsup; Dual licensed: MIT/GPL
5
+ */
6
+ /*! core engine; version: 20131003 */
7
+ (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 */
8
+ 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 */
9
+ 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 */
10
+ 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 */
11
+ 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 */
12
+ 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 */
13
+ 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 */
14
+ 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 */
15
+ 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 */
16
+ 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);
17
+ //@ sourceMappingURL=jquery.cycle2.js.map
static/assets/js/jquery.min.js ADDED
@@ -0,0 +1,6 @@
1
+ /*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
2
+ //@ sourceMappingURL=jquery.min.map
3
+ */
4
+ (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
5
+ }({});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);
6
+ 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);
static/assets/js/jquery.tablesorter.min.js ADDED
@@ -0,0 +1,4 @@
1
+
2
+ (function($){$.extend({tablesorter:new
3
+ 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
4
+ 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);
static/assets/js/jquery.tidy.table.min.js ADDED
@@ -0,0 +1,2 @@
1
+ /* Copyright 2012-2013, Marc S. Brooks (http://mbrooks.info) */
2
+ 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,{}))
static/assets/js/sass-bootstrap.js ADDED
@@ -0,0 +1,2001 @@
1
+ /**
2
+ * Sass Bootstrap v3.0.16 by Aaron Lademann and Twitter Inc.
3
+ * Copyright 2013 Aaron Lademann and Twitter Inc.
4
+ * Licensed under http://www.apache.org/licenses/LICENSE-2.0.
5
+ *
6
+ * Designed and built with all the love in the world by @alademann, @mdo and @fat.
7
+ */
8
+ if (!jQuery) { throw new Error("Sass Bootstrap requires jQuery") }
9
+
10
+ /* ========================================================================
11
+ * Bootstrap: transition.js v3.0.0
12
+ * http://twbs.github.com/bootstrap/javascript.html#transitions
13
+ * ========================================================================
14
+ * Copyright 2013 Twitter, Inc.
15
+ *
16
+ * Licensed under the Apache License, Version 2.0 (the "License");
17
+ * you may not use this file except in compliance with the License.
18
+ * You may obtain a copy of the License at
19
+ *
20
+ * http://www.apache.org/licenses/LICENSE-2.0
21
+ *
22
+ * Unless required by applicable law or agreed to in writing, software
23
+ * distributed under the License is distributed on an "AS IS" BASIS,
24
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
25
+ * See the License for the specific language governing permissions and
26
+ * limitations under the License.
27
+ * ======================================================================== */
28
+
29
+
30
+ +function ($) { "use strict";
31
+
32
+ // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
33
+ // ============================================================
34
+
35
+ function transitionEnd() {
36
+ var el = document.createElement('bootstrap')
37
+
38
+ var transEndEventNames = {
39
+ 'WebkitTransition' : 'webkitTransitionEnd'
40
+ , 'MozTransition' : 'transitionend'
41
+ , 'OTransition' : 'oTransitionEnd otransitionend'
42
+ , 'transition' : 'transitionend'
43
+ }
44
+
45
+ for (var name in transEndEventNames) {
46
+ if (el.style[name] !== undefined) {
47
+ return { end: transEndEventNames[name] }
48
+ }
49
+ }
50
+ }
51
+
52
+ // http://blog.alexmaccaw.com/css-transitions
53
+ $.fn.emulateTransitionEnd = function (duration) {
54
+ var called = false, $el = this
55
+ $(this).one($.support.transition.end, function () { called = true })
56
+ var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
57
+ setTimeout(callback, duration)
58
+ return this
59
+ }
60
+
61
+ $(function () {
62
+ $.support.transition = transitionEnd()
63
+ })
64
+
65
+ }(window.jQuery);
66
+
67
+ /* ========================================================================
68
+ * Bootstrap: alert.js v3.0.0
69
+ * http://twbs.github.com/bootstrap/javascript.html#alerts
70
+ * ========================================================================
71
+ * Copyright 2013 Twitter, Inc.
72
+ *
73
+ * Licensed under the Apache License, Version 2.0 (the "License");
74
+ * you may not use this file except in compliance with the License.
75
+ * You may obtain a copy of the License at
76
+ *
77
+ * http://www.apache.org/licenses/LICENSE-2.0
78
+ *
79
+ * Unless required by applicable law or agreed to in writing, software
80
+ * distributed under the License is distributed on an "AS IS" BASIS,
81
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
82
+ * See the License for the specific language governing permissions and
83
+ * limitations under the License.
84
+ * ======================================================================== */
85
+
86
+
87
+ +function ($) { "use strict";
88
+
89
+ // ALERT CLASS DEFINITION
90
+ // ======================
91
+
92
+ var dismiss = '[data-dismiss="alert"]'
93
+ var Alert = function (el) {
94
+ $(el).on('click', dismiss, this.close)
95
+ }
96
+
97
+ Alert.prototype.close = function (e) {
98
+ var $this = $(this)
99
+ var selector = $this.attr('data-target')
100
+
101
+ if (!selector) {
102
+ selector = $this.attr('href')
103
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
104
+ }
105
+
106
+ var $parent = $(selector)
107
+
108
+ if (e) e.preventDefault()
109
+
110
+ if (!$parent.length) {
111
+ $parent = $this.hasClass('alert') ? $this : $this.parent()
112
+ }
113
+
114
+ $parent.trigger(e = $.Event('close.bs.alert'))
115
+
116
+ if (e.isDefaultPrevented()) return
117
+
118
+ $parent.removeClass('in')
119
+
120
+ function removeElement() {
121
+ $parent.trigger('closed.bs.alert').remove()
122
+ }
123
+
124
+ $.support.transition && $parent.hasClass('fade') ?
125
+ $parent
126
+ .one($.support.transition.end, removeElement)
127
+ .emulateTransitionEnd(150) :
128
+ removeElement()
129
+ }
130
+
131
+
132
+ // ALERT PLUGIN DEFINITION
133
+ // =======================
134
+
135
+ var old = $.fn.alert
136
+
137
+ $.fn.alert = function (option) {
138
+ return this.each(function () {
139
+ var $this = $(this)
140
+ var data = $this.data('bs.alert')
141
+
142
+ if (!data) $this.data('bs.alert', (data = new Alert(this)))
143
+ if (typeof option == 'string') data[option].call($this)
144
+ })
145
+ }
146
+
147
+ $.fn.alert.Constructor = Alert
148
+
149
+
150
+ // ALERT NO CONFLICT
151
+ // =================
152
+
153
+ $.fn.alert.noConflict = function () {
154
+ $.fn.alert = old
155
+ return this
156
+ }
157
+
158
+
159
+ // ALERT DATA-API
160
+ // ==============
161
+
162
+ $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
163
+
164
+ }(window.jQuery);
165
+
166
+ /* ========================================================================
167
+ * Bootstrap: button.js v3.0.0
168
+ * http://twbs.github.com/bootstrap/javascript.html#buttons
169
+ * ========================================================================
170
+ * Copyright 2013 Twitter, Inc.
171
+ *
172
+ * Licensed under the Apache License, Version 2.0 (the "License");
173
+ * you may not use this file except in compliance with the License.
174
+ * You may obtain a copy of the License at
175
+ *
176
+ * http://www.apache.org/licenses/LICENSE-2.0
177
+ *
178
+ * Unless required by applicable law or agreed to in writing, software
179
+ * distributed under the License is distributed on an "AS IS" BASIS,
180
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
181
+ * See the License for the specific language governing permissions and
182
+ * limitations under the License.
183
+ * ======================================================================== */
184
+
185
+
186
+ +function ($) { "use strict";
187
+
188
+ // BUTTON PUBLIC CLASS DEFINITION
189
+ // ==============================
190
+
191
+ var Button = function (element, options) {
192
+ this.$element = $(element)
193
+ this.options = $.extend({}, Button.DEFAULTS, options)
194
+ }
195
+
196
+ Button.DEFAULTS = {
197
+ loadingText: 'loading...'
198
+ }
199
+
200
+ Button.prototype.setState = function (state) {
201
+ var d = 'disabled'
202
+ var $el = this.$element
203
+ var val = $el.is('input') ? 'val' : 'html'
204
+ var data = $el.data()
205
+
206
+ state = state + 'Text'
207
+
208
+ if (!data.resetText) $el.data('resetText', $el[val]())
209
+
210
+ $el[val](data[state] || this.options[state])
211
+
212
+ // push to event loop to allow forms to submit
213
+ setTimeout(function () {
214
+ state == 'loadingText' ?
215
+ $el.addClass(d).attr(d, d) :
216
+ $el.removeClass(d).removeAttr(d);
217
+ }, 0)
218
+ }
219
+
220
+ Button.prototype.toggle = function () {
221
+ var $parent = this.$element.closest('[data-toggle="buttons"]')
222
+
223
+ if ($parent.length) {
224
+ var $input = this.$element.find('input')
225
+ .prop('checked', !this.$element.hasClass('active'))
226
+ .trigger('change')
227
+ if ($input.prop('type') === 'radio') $parent.find('.active').removeClass('active')
228
+ }
229
+
230
+ this.$element.toggleClass('active')
231
+ }
232
+
233
+
234
+ // BUTTON PLUGIN DEFINITION
235
+ // ========================
236
+
237
+ var old = $.fn.button
238
+
239
+ $.fn.button = function (option) {
240
+ return this.each(function () {
241
+ var $this = $(this)
242
+ var data = $this.data('bs.button')
243
+ var options = typeof option == 'object' && option
244
+
245
+ if (!data) $this.data('bs.button', (data = new Button(this, options)))
246
+
247
+ if (option == 'toggle') data.toggle()
248
+ else if (option) data.setState(option)
249
+ })
250
+ }
251
+
252
+ $.fn.button.Constructor = Button
253
+
254
+
255
+ // BUTTON NO CONFLICT
256
+ // ==================
257
+
258
+ $.fn.button.noConflict = function () {
259
+ $.fn.button = old
260
+ return this
261
+ }
262
+
263
+
264
+ // BUTTON DATA-API
265
+ // ===============
266
+
267
+ $(document).on('click.bs.button.data-api', '[data-toggle^=button]', function (e) {
268
+ var $btn = $(e.target)
269
+ if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
270
+ $btn.button('toggle')
271
+ e.preventDefault()
272
+ })
273
+
274
+ }(window.jQuery);
275
+
276
+ /* ========================================================================
277
+ * Bootstrap: carousel.js v3.0.0
278
+ * http://twbs.github.com/bootstrap/javascript.html#carousel
279
+ * ========================================================================
280
+ * Copyright 2012 Twitter, Inc.
281
+ *
282
+ * Licensed under the Apache License, Version 2.0 (the "License");
283
+ * you may not use this file except in compliance with the License.
284
+ * You may obtain a copy of the License at
285
+ *
286
+ * http://www.apache.org/licenses/LICENSE-2.0
287
+ *
288
+ * Unless required by applicable law or agreed to in writing, software
289
+ * distributed under the License is distributed on an "AS IS" BASIS,
290
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
291
+ * See the License for the specific language governing permissions and
292
+ * limitations under the License.
293
+ * ======================================================================== */
294
+
295
+
296
+ +function ($) { "use strict";
297
+
298
+ // CAROUSEL CLASS DEFINITION
299
+ // =========================
300
+
301
+ var Carousel = function (element, options) {
302
+ this.$element = $(element)
303
+ this.$indicators = this.$element.find('.carousel-indicators')
304
+ this.options = options
305
+ this.paused =
306
+ this.sliding =
307
+ this.interval =
308
+ this.$active =
309
+ this.$items = null
310
+
311
+ this.options.pause == 'hover' && this.$element
312
+ .on('mouseenter', $.proxy(this.pause, this))
313
+ .on('mouseleave', $.proxy(this.cycle, this))
314
+ }
315
+
316
+ Carousel.DEFAULTS = {
317
+ interval: 5000
318
+ , pause: 'hover'
319
+ , wrap: true
320
+ }
321
+
322
+ Carousel.prototype.cycle = function (e) {
323
+ e || (this.paused = false)
324
+
325
+ this.interval && clearInterval(this.interval)
326
+
327
+ this.options.interval
328
+ && !this.paused
329
+ && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
330
+
331
+ return this
332
+ }
333
+
334
+ Carousel.prototype.getActiveIndex = function () {
335
+ this.$active = this.$element.find('.item.active')
336
+ this.$items = this.$active.parent().children()
337
+
338
+ return this.$items.index(this.$active)
339
+ }
340
+
341
+ Carousel.prototype.to = function (pos) {
342
+ var that = this
343
+ var activeIndex = this.getActiveIndex()
344
+
345
+ if (pos > (this.$items.length - 1) || pos < 0) return
346
+
347
+ if (this.sliding) return this.$element.one('slid', function () { that.to(pos) })
348
+ if (activeIndex == pos) return this.pause().cycle()
349
+
350
+ return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
351
+ }
352
+
353
+ Carousel.prototype.pause = function (e) {
354
+ e || (this.paused = true)
355
+
356
+ if (this.$element.find('.next, .prev').length && $.support.transition.end) {
357
+ this.$element.trigger($.support.transition.end)
358
+ this.cycle(true)
359
+ }
360
+
361
+ this.interval = clearInterval(this.interval)
362
+
363
+ return this
364
+ }
365
+
366
+ Carousel.prototype.next = function () {
367
+ if (this.sliding) return
368
+ return this.slide('next')
369
+ }
370
+
371
+ Carousel.prototype.prev = function () {
372
+ if (this.sliding) return
373
+ return this.slide('prev')
374
+ }
375
+
376
+ Carousel.prototype.slide = function (type, next) {
377
+ var $active = this.$element.find('.item.active')
378
+ var $next = next || $active[type]()
379
+ var isCycling = this.interval
380
+ var direction = type == 'next' ? 'left' : 'right'
381
+ var fallback = type == 'next' ? 'first' : 'last'
382
+ var that = this
383
+
384
+ if (!$next.length) {
385
+ if (!this.options.wrap) return
386
+ $next = this.$element.find('.item')[fallback]()
387
+ }
388
+
389
+ this.sliding = true
390
+
391
+ isCycling && this.pause()
392
+
393
+ var e = $.Event('slide.bs.carousel', { relatedTarget: $next[0], direction: direction })
394
+
395
+ if ($next.hasClass('active')) return
396
+
397
+ if (this.$indicators.length) {
398
+ this.$indicators.find('.active').removeClass('active')
399
+ this.$element.one('slid', function () {
400
+ var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
401
+ $nextIndicator && $nextIndicator.addClass('active')
402
+ })
403
+ }
404
+
405
+ if ($.support.transition && this.$element.hasClass('slide')) {
406
+ this.$element.trigger(e)
407
+ if (e.isDefaultPrevented()) return
408
+ $next.addClass(type)
409
+ $next[0].offsetWidth // force reflow
410
+ $active.addClass(direction)
411
+ $next.addClass(direction)
412
+ $active
413
+ .one($.support.transition.end, function () {
414
+ $next.removeClass([type, direction].join(' ')).addClass('active')
415
+ $active.removeClass(['active', direction].join(' '))
416
+ that.sliding = false
417
+ setTimeout(function () { that.$element.trigger('slid') }, 0)
418
+ })
419
+ .emulateTransitionEnd(600)
420
+ } else {
421
+ this.$element.trigger(e)
422
+ if (e.isDefaultPrevented()) return
423
+ $active.removeClass('active')
424
+ $next.addClass('active')
425
+ this.sliding = false
426
+ this.$element.trigger('slid')
427
+ }
428
+
429
+ isCycling && this.cycle()
430
+
431
+ return this
432
+ }
433
+
434
+
435
+ // CAROUSEL PLUGIN DEFINITION
436
+ // ==========================
437
+
438
+ var old = $.fn.carousel
439
+
440
+ $.fn.carousel = function (option) {
441
+ return this.each(function () {
442
+ var $this = $(this)
443
+ var data = $this.data('bs.carousel')
444
+ var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
445
+ var action = typeof option == 'string' ? option : options.slide
446
+
447
+ if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
448
+ if (typeof option == 'number') data.to(option)
449
+ else if (action) data[action]()
450
+ else if (options.interval) data.pause().cycle()
451
+ })
452
+ }
453
+
454
+ $.fn.carousel.Constructor = Carousel
455
+
456
+
457
+ // CAROUSEL NO CONFLICT
458
+ // ====================
459
+
460
+ $.fn.carousel.noConflict = function () {
461
+ $.fn.carousel = old
462
+ return this
463
+ }
464
+
465
+
466
+ // CAROUSEL DATA-API
467
+ // =================
468
+
469
+ $(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
470
+ var $this = $(this), href
471
+ var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
472
+ var options = $.extend({}, $target.data(), $this.data())
473
+ var slideIndex = $this.attr('data-slide-to')
474
+ if (slideIndex) options.interval = false
475
+
476
+ $target.carousel(options)
477
+
478
+ if (slideIndex = $this.attr('data-slide-to')) {
479
+ $target.data('bs.carousel').to(slideIndex)
480
+ }
481
+
482
+ e.preventDefault()
483
+ })
484
+
485
+ $(window).on('load', function () {
486
+ $('[data-ride="carousel"]').each(function () {
487
+ var $carousel = $(this)
488
+ $carousel.carousel($carousel.data())
489
+ })
490
+ })
491
+
492
+ }(window.jQuery);
493
+
494
+ /* ========================================================================
495
+ * Bootstrap: collapse.js v3.0.0
496
+ * http://twbs.github.com/bootstrap/javascript.html#collapse
497
+ * ========================================================================
498
+ * Copyright 2012 Twitter, Inc.
499
+ *
500
+ * Licensed under the Apache License, Version 2.0 (the "License");
501
+ * you may not use this file except in compliance with the License.
502
+ * You may obtain a copy of the License at
503
+ *
504
+ * http://www.apache.org/licenses/LICENSE-2.0
505
+ *
506
+ * Unless required by applicable law or agreed to in writing, software
507
+ * distributed under the License is distributed on an "AS IS" BASIS,
508
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
509
+ * See the License for the specific language governing permissions and
510
+ * limitations under the License.
511
+ * ======================================================================== */
512
+
513
+
514
+ +function ($) { "use strict";
515
+
516
+ // COLLAPSE PUBLIC CLASS DEFINITION
517
+ // ================================
518
+
519
+ var Collapse = function (element, options) {
520
+ this.$element = $(element)
521
+ this.options = $.extend({}, Collapse.DEFAULTS, options)
522
+ this.transitioning = null
523
+
524
+ if (this.options.parent) this.$parent = $(this.options.parent)
525
+ if (this.options.toggle) this.toggle()
526
+ }
527
+
528
+ Collapse.DEFAULTS = {
529
+ toggle: true
530
+ }
531
+
532
+ Collapse.prototype.dimension = function () {
533
+ var hasWidth = this.$element.hasClass('width')
534
+ return hasWidth ? 'width' : 'height'
535
+ }
536
+
537
+ Collapse.prototype.show = function () {
538
+ if (this.transitioning || this.$element.hasClass('in')) return
539
+
540
+ var startEvent = $.Event('show.bs.collapse')
541
+ this.$element.trigger(startEvent)
542
+ if (startEvent.isDefaultPrevented()) return
543
+
544
+ var actives = this.$parent && this.$parent.find('> .panel > .in')
545
+
546
+ if (actives && actives.length) {
547
+ var hasData = actives.data('bs.collapse')
548
+ if (hasData && hasData.transitioning) return
549
+ actives.collapse('hide')
550
+ hasData || actives.data('bs.collapse', null)
551
+ }
552
+
553
+ var dimension = this.dimension()
554
+
555
+ this.$element
556
+ .removeClass('collapse')
557
+ .addClass('collapsing')
558
+ [dimension](0)
559
+
560
+ this.transitioning = 1
561
+
562
+ var complete = function () {
563
+ this.$element
564
+ .removeClass('collapsing')
565
+ .addClass('in')
566
+ [dimension]('auto')
567
+ this.transitioning = 0
568
+ this.$element.trigger('shown.bs.collapse')
569
+ }
570
+
571
+ if (!$.support.transition) return complete.call(this)
572
+
573
+ var scrollSize = $.camelCase(['scroll', dimension].join('-'))
574
+
575
+ this.$element
576
+ .one($.support.transition.end, $.proxy(complete, this))
577
+ .emulateTransitionEnd(350)
578
+ [dimension](this.$element[0][scrollSize])
579
+ }
580
+
581
+ Collapse.prototype.hide = function () {
582
+ if (this.transitioning || !this.$element.hasClass('in')) return
583
+
584
+ var startEvent = $.Event('hide.bs.collapse')
585
+ this.$element.trigger(startEvent)
586
+ if (startEvent.isDefaultPrevented()) return
587
+
588
+ var dimension = this.dimension()
589
+
590
+ this.$element
591
+ [dimension](this.$element[dimension]())
592
+ [0].offsetHeight
593
+
594
+ this.$element
595
+ .addClass('collapsing')
596
+ .removeClass('collapse')
597
+ .removeClass('in')
598
+
599
+ this.transitioning = 1
600
+
601
+ var complete = function () {
602
+ this.transitioning = 0
603
+ this.$element
604
+ .trigger('hidden.bs.collapse')
605
+ .removeClass('collapsing')
606
+ .addClass('collapse')
607
+ }
608
+
609
+ if (!$.support.transition) return complete.call(this)
610
+
611
+ this.$element
612
+ [dimension](0)
613
+ .one($.support.transition.end, $.proxy(complete, this))
614
+ .emulateTransitionEnd(350)
615
+ }
616
+
617
+ Collapse.prototype.toggle = function () {
618
+ this[this.$element.hasClass('in') ? 'hide' : 'show']()
619
+ }
620
+
621
+
622
+ // COLLAPSE PLUGIN DEFINITION
623
+ // ==========================
624
+
625
+ var old = $.fn.collapse
626
+
627
+ $.fn.collapse = function (option) {
628
+ return this.each(function () {
629
+ var $this = $(this)
630
+ var data = $this.data('bs.collapse')
631
+ var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
632
+
633
+ if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
634
+ if (typeof option == 'string') data[option]()
635
+ })
636
+ }
637
+
638
+ $.fn.collapse.Constructor = Collapse
639
+
640
+
641
+ // COLLAPSE NO CONFLICT
642
+ // ====================
643
+
644
+ $.fn.collapse.noConflict = function () {
645
+ $.fn.collapse = old
646
+ return this
647
+ }
648
+
649
+
650
+ // COLLAPSE DATA-API
651
+ // =================
652
+
653
+ $(document).on('click.bs.collapse.data-api', '[data-toggle=collapse]', function (e) {
654
+ var $this = $(this), href
655
+ var target = $this.attr('data-target')
656
+ || e.preventDefault()
657
+ || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
658
+ var $target = $(target)
659
+ var data = $target.data('bs.collapse')
660
+ var option = data ? 'toggle' : $this.data()
661
+ var parent = $this.attr('data-parent')
662
+ var $parent = parent && $(parent)
663
+
664
+ if (!data || !data.transitioning) {
665
+ if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed')
666
+ $this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
667
+ }
668
+
669
+ $target.collapse(option)
670
+ })
671
+
672
+ }(window.jQuery);
673
+
674
+ /* ========================================================================
675
+ * Bootstrap: dropdown.js v3.0.0
676
+ * http://twbs.github.com/bootstrap/javascript.html#dropdowns
677
+ * ========================================================================
678
+ * Copyright 2012 Twitter, Inc.
679
+ *
680
+ * Licensed under the Apache License, Version 2.0 (the "License");
681
+ * you may not use this file except in compliance with the License.
682
+ * You may obtain a copy of the License at
683
+ *
684
+ * http://www.apache.org/licenses/LICENSE-2.0
685
+ *
686
+ * Unless required by applicable law or agreed to in writing, software
687
+ * distributed under the License is distributed on an "AS IS" BASIS,
688
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
689
+ * See the License for the specific language governing permissions and
690
+ * limitations under the License.
691
+ * ======================================================================== */
692
+
693
+
694
+ +function ($) { "use strict";
695
+
696
+ // DROPDOWN CLASS DEFINITION
697
+ // =========================
698
+
699
+ var backdrop = '.dropdown-backdrop'
700
+ var toggle = '[data-toggle=dropdown]'
701
+ var Dropdown = function (element) {
702
+ var $el = $(element).on('click.bs.dropdown', this.toggle)
703
+ }
704
+
705
+ Dropdown.prototype.toggle = function (e) {
706
+ var $this = $(this)
707
+
708
+ if ($this.is('.disabled, :disabled')) return
709
+
710
+ var $parent = getParent($this)
711
+ var isActive = $parent.hasClass('open')
712
+
713
+ clearMenus()
714
+
715
+ if (!isActive) {
716
+ if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
717
+ // if mobile we we use a backdrop because click events don't delegate
718
+ $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
719
+ }
720
+
721
+ $parent.trigger(e = $.Event('show.bs.dropdown'))
722
+
723
+ if (e.isDefaultPrevented()) return
724
+
725
+ $parent
726
+ .toggleClass('open')
727
+ .trigger('shown.bs.dropdown')
728
+
729
+ $this.focus()
730
+ }
731
+
732
+ return false
733
+ }
734
+
735
+ Dropdown.prototype.keydown = function (e) {
736
+ if (!/(38|40|27)/.test(e.keyCode)) return
737
+
738
+ var $this = $(this)
739
+
740
+ e.preventDefault()
741
+ e.stopPropagation()
742
+
743
+ if ($this.is('.disabled, :disabled')) return
744
+
745
+ var $parent = getParent($this)
746
+ var isActive = $parent.hasClass('open')
747
+
748
+ if (!isActive || (isActive && e.keyCode == 27)) {
749
+ if (e.which == 27) $parent.find(toggle).focus()
750
+ return $this.click()
751
+ }
752
+
753
+ var $items = $('[role=menu] li:not(.divider):visible a', $parent)
754
+
755
+ if (!$items.length) return
756
+
757
+ var index = $items.index($items.filter(':focus'))
758
+
759
+ if (e.keyCode == 38 && index > 0) index-- // up
760
+ if (e.keyCode == 40 && index < $items.length - 1) index++ // down
761
+ if (!~index) index=0
762
+
763
+ $items.eq(index).focus()
764
+ }
765
+
766
+ function clearMenus() {
767
+ $(backdrop).remove()
768
+ $(toggle).each(function (e) {
769
+ var $parent = getParent($(this))
770
+ if (!$parent.hasClass('open')) return
771
+ $parent.trigger(e = $.Event('hide.bs.dropdown'))
772
+ if (e.isDefaultPrevented()) return
773
+ $parent.removeClass('open').trigger('hidden.bs.dropdown')
774
+ })
775
+ }
776
+
777
+ function getParent($this) {
778
+ var selector = $this.attr('data-target')
779
+
780
+ if (!selector) {
781
+ selector = $this.attr('href')
782
+ selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
783
+ }
784
+
785
+ var $parent = selector && $(selector)
786
+
787
+ return $parent && $parent.length ? $parent : $this.parent()
788
+ }
789
+
790
+
791
+ // DROPDOWN PLUGIN DEFINITION
792
+ // ==========================
793
+
794
+ var old = $.fn.dropdown
795
+
796
+ $.fn.dropdown = function (option) {
797
+ return this.each(function () {
798
+ var $this = $(this)
799
+ var data = $this.data('dropdown')
800
+
801
+ if (!data) $this.data('dropdown', (data = new Dropdown(this)))
802
+ if (typeof option == 'string') data[option].call($this)
803
+ })
804
+ }
805
+
806
+ $.fn.dropdown.Constructor = Dropdown
807
+
808
+
809
+ // DROPDOWN NO CONFLICT
810
+ // ====================
811
+
812
+ $.fn.dropdown.noConflict = function () {
813
+ $.fn.dropdown = old
814
+ return this
815
+ }
816
+
817
+
818
+ // APPLY TO STANDARD DROPDOWN ELEMENTS
819
+ // ===================================
820
+
821
+ $(document)
822
+ .on('click.bs.dropdown.data-api', clearMenus)
823
+ .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
824
+ .on('click.bs.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
825
+ .on('keydown.bs.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
826
+
827
+ }(window.jQuery);
828
+
829
+ /* ========================================================================
830
+ * Bootstrap: modal.js v3.0.0
831
+ * http://twbs.github.com/bootstrap/javascript.html#modals
832
+ * ========================================================================
833
+ * Copyright 2012 Twitter, Inc.
834
+ *
835
+ * Licensed under the Apache License, Version 2.0 (the "License");
836
+ * you may not use this file except in compliance with the License.
837
+ * You may obtain a copy of the License at
838
+ *
839
+ * http://www.apache.org/licenses/LICENSE-2.0
840
+ *
841
+ * Unless required by applicable law or agreed to in writing, software
842
+ * distributed under the License is distributed on an "AS IS" BASIS,
843
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
844
+ * See the License for the specific language governing permissions and
845
+ * limitations under the License.
846
+ * ======================================================================== */
847
+
848
+
849
+ +function ($) { "use strict";
850
+
851
+ // MODAL CLASS DEFINITION
852
+ // ======================
853
+
854
+ var Modal = function (element, options) {
855
+ this.options = options
856
+ this.$element = $(element)
857
+ this.$backdrop =
858
+ this.isShown = null
859
+
860
+ if (this.options.remote) this.$element.load(this.options.remote)
861
+ }
862
+
863
+ Modal.DEFAULTS = {
864
+ backdrop: true
865
+ , keyboard: true
866
+ , show: true
867
+ }
868
+
869
+ Modal.prototype.toggle = function (_relatedTarget) {
870
+ return this[!this.isShown ? 'show' : 'hide'](_relatedTarget)
871
+ }
872
+
873
+ Modal.prototype.show = function (_relatedTarget) {
874
+ var that = this
875
+ var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
876
+
877
+ this.$element.trigger(e)
878
+
879
+ if (this.isShown || e.isDefaultPrevented()) return
880
+
881
+ this.isShown = true
882
+
883
+ this.escape()
884
+
885
+ this.$element.on('click.dismiss.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
886
+
887
+ this.backdrop(function () {
888
+ var transition = $.support.transition && that.$element.hasClass('fade')
889
+
890
+ if (!that.$element.parent().length) {
891
+ that.$element.appendTo(document.body) // don't move modals dom position
892
+ }
893
+
894
+ that.$element.show()
895
+
896
+ if (transition) {
897
+ that.$element[0].offsetWidth // force reflow
898
+ }
899
+
900
+ that.$element
901
+ .addClass('in')
902
+ .attr('aria-hidden', false)
903
+
904
+ that.enforceFocus()
905
+
906
+ var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
907
+
908
+ transition ?
909
+ that.$element.find('.modal-dialog') // wait for modal to slide in
910
+ .one($.support.transition.end, function () {
911
+ that.$element.focus().trigger(e)
912
+ })
913
+ .emulateTransitionEnd(300) :
914
+ that.$element.focus().trigger(e)
915
+ })
916
+ }
917
+
918
+ Modal.prototype.hide = function (e) {
919
+ if (e) e.preventDefault()
920
+
921
+ e = $.Event('hide.bs.modal')
922
+
923
+ this.$element.trigger(e)
924
+
925
+ if (!this.isShown || e.isDefaultPrevented()) return
926
+
927
+ this.isShown = false
928
+
929
+ this.escape()
930
+
931
+ $(document).off('focusin.bs.modal')
932
+
933
+ this.$element
934
+ .removeClass('in')
935
+ .attr('aria-hidden', true)
936
+ .off('click.dismiss.modal')
937
+
938
+ $.support.transition && this.$element.hasClass('fade') ?
939
+ this.$element
940
+ .one($.support.transition.end, $.proxy(this.hideModal, this))
941
+ .emulateTransitionEnd(300) :
942
+ this.hideModal()
943
+ }
944
+
945
+ Modal.prototype.enforceFocus = function () {
946
+ $(document)
947
+ .off('focusin.bs.modal') // guard against infinite focus loop
948
+ .on('focusin.bs.modal', $.proxy(function (e) {
949
+ if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
950
+ this.$element.focus()
951
+ }
952
+ }, this))
953
+ }
954
+
955
+ Modal.prototype.escape = function () {
956
+ if (this.isShown && this.options.keyboard) {
957
+ this.$element.on('keyup.dismiss.bs.modal', $.proxy(function (e) {
958
+ e.which == 27 && this.hide()
959
+ }, this))
960
+ } else if (!this.isShown) {
961
+ this.$element.off('keyup.dismiss.bs.modal')
962
+ }
963
+ }
964
+
965
+ Modal.prototype.hideModal = function () {
966
+ var that = this
967
+ this.$element.hide()
968
+ this.backdrop(function () {
969
+ that.removeBackdrop()
970
+ that.$element.trigger('hidden.bs.modal')
971
+ })
972
+ }
973
+
974
+ Modal.prototype.removeBackdrop = function () {
975
+ this.$backdrop && this.$backdrop.remove()
976
+ this.$backdrop = null
977
+ }
978
+
979
+ Modal.prototype.backdrop = function (callback) {
980
+ var that = this
981
+ var animate = this.$element.hasClass('fade') ? 'fade' : ''
982
+
983
+ if (this.isShown && this.options.backdrop) {
984
+ var doAnimate = $.support.transition && animate
985
+
986
+ this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
987
+ .appendTo(document.body)
988
+
989
+ this.$element.on('click.dismiss.modal', $.proxy(function (e) {
990
+ if (e.target !== e.currentTarget) return
991
+ this.options.backdrop == 'static'
992
+ ? this.$element[0].focus.call(this.$element[0])
993
+ : this.hide.call(this)
994
+ }, this))
995
+
996
+ if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
997
+
998
+ this.$backdrop.addClass('in')
999
+
1000
+ if (!callback) return
1001
+
1002
+ doAnimate ?
1003
+ this.$backdrop
1004
+ .one($.support.transition.end, callback)
1005
+ .emulateTransitionEnd(150) :
1006
+ callback()
1007
+
1008
+ } else if (!this.isShown && this.$backdrop) {
1009
+ this.$backdrop.removeClass('in')
1010
+
1011
+ $.support.transition && this.$element.hasClass('fade')?
1012
+ this.$backdrop
1013
+ .one($.support.transition.end, callback)
1014
+ .emulateTransitionEnd(150) :
1015
+ callback()
1016
+
1017
+ } else if (callback) {
1018
+ callback()
1019
+ }
1020
+ }
1021
+
1022
+
1023
+ // MODAL PLUGIN DEFINITION
1024
+ // =======================
1025
+
1026
+ var old = $.fn.modal
1027
+
1028
+ $.fn.modal = function (option, _relatedTarget) {
1029
+ return this.each(function () {
1030
+ var $this = $(this)
1031
+ var data = $this.data('bs.modal')
1032
+ var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
1033
+
1034
+ if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
1035
+ if (typeof option == 'string') data[option](_relatedTarget)
1036
+ else if (options.show) data.show(_relatedTarget)
1037
+ })
1038
+ }
1039
+
1040
+ $.fn.modal.Constructor = Modal
1041
+
1042
+
1043
+ // MODAL NO CONFLICT
1044
+ // =================
1045
+
1046
+ $.fn.modal.noConflict = function () {
1047
+ $.fn.modal = old
1048
+ return this
1049
+ }
1050
+
1051
+
1052
+ // MODAL DATA-API
1053
+ // ==============
1054
+
1055
+ $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
1056
+ var $this = $(this)
1057
+ var href = $this.attr('href')
1058
+ var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
1059
+ var option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
1060
+
1061
+ e.preventDefault()
1062
+
1063
+ $target
1064
+ .modal(option, this)
1065
+ .one('hide', function () {
1066
+ $this.is(':visible') && $this.focus()
1067
+ })
1068
+ })
1069
+
1070
+ $(document)
1071
+ .on('show.bs.modal', '.modal', function () { $(document.body).addClass('modal-open') })
1072
+ .on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') })
1073
+
1074
+ }(window.jQuery);
1075
+
1076
+ /* ========================================================================
1077
+ * Bootstrap: tooltip.js v3.0.0
1078
+ * http://twbs.github.com/bootstrap/javascript.html#tooltip
1079
+ * Inspired by the original jQuery.tipsy by Jason Frame
1080
+ * ========================================================================
1081
+ * Copyright 2012 Twitter, Inc.
1082
+ *
1083
+ * Licensed under the Apache License, Version 2.0 (the "License");
1084
+ * you may not use this file except in compliance with the License.
1085
+ * You may obtain a copy of the License at
1086
+ *
1087
+ * http://www.apache.org/licenses/LICENSE-2.0
1088
+ *
1089
+ * Unless required by applicable law or agreed to in writing, software
1090
+ * distributed under the License is distributed on an "AS IS" BASIS,
1091
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1092
+ * See the License for the specific language governing permissions and
1093
+ * limitations under the License.
1094
+ * ======================================================================== */
1095
+
1096
+
1097
+ +function ($) { "use strict";
1098
+
1099
+ // TOOLTIP PUBLIC CLASS DEFINITION
1100
+ // ===============================
1101
+
1102
+ var Tooltip = function (element, options) {
1103
+ this.type =
1104
+ this.options =
1105
+ this.enabled =
1106
+ this.timeout =
1107
+ this.hoverState =
1108
+ this.$element = null
1109
+
1110
+ this.init('tooltip', element, options)
1111
+ }
1112
+
1113
+ Tooltip.DEFAULTS = {
1114
+ animation: true
1115
+ , placement: 'top'
1116
+ , selector: false
1117
+ , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
1118
+ , trigger: 'hover focus'
1119
+ , title: ''
1120
+ , delay: 0
1121
+ , html: false
1122
+ , container: false
1123
+ }
1124
+
1125
+ Tooltip.prototype.init = function (type, element, options) {
1126
+ this.enabled = true
1127
+ this.type = type
1128
+ this.$element = $(element)
1129
+ this.options = this.getOptions(options)
1130
+
1131
+ var triggers = this.options.trigger.split(' ')
1132
+
1133
+ for (var i = triggers.length; i--;) {
1134
+ var trigger = triggers[i]
1135
+
1136
+ if (trigger == 'click') {
1137
+ this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
1138
+ } else if (trigger != 'manual') {
1139
+ var eventIn = trigger == 'hover' ? 'mouseenter' : 'focus'
1140
+ var eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
1141
+
1142
+ this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
1143
+ this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
1144
+ }
1145
+ }
1146
+
1147
+ this.options.selector ?
1148
+ (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
1149
+ this.fixTitle()
1150
+ }
1151
+
1152
+ Tooltip.prototype.getDefaults = function () {
1153
+ return Tooltip.DEFAULTS
1154
+ }
1155
+
1156
+ Tooltip.prototype.getOptions = function (options) {
1157
+ options = $.extend({}, this.getDefaults(), this.$element.data(), options)
1158
+
1159
+ if (options.delay && typeof options.delay == 'number') {
1160
+ options.delay = {
1161
+ show: options.delay
1162
+ , hide: options.delay
1163
+ }
1164
+ }
1165
+
1166
+ return options
1167
+ }
1168
+
1169
+ Tooltip.prototype.getDelegateOptions = function () {
1170
+ var options = {}
1171
+ var defaults = this.getDefaults()
1172
+
1173
+ this._options && $.each(this._options, function (key, value) {
1174
+ if (defaults[key] != value) options[key] = value
1175
+ })
1176
+
1177
+ return options
1178
+ }
1179
+
1180
+ Tooltip.prototype.enter = function (obj) {
1181
+ var self = obj instanceof this.constructor ?
1182
+ obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
1183
+
1184
+ clearTimeout(self.timeout)
1185
+
1186
+ self.hoverState = 'in'
1187
+
1188
+ if (!self.options.delay || !self.options.delay.show) return self.show()
1189
+
1190
+ self.timeout = setTimeout(function () {
1191
+ if (self.hoverState == 'in') self.show()
1192
+ }, self.options.delay.show)
1193
+ }
1194
+
1195
+ Tooltip.prototype.leave = function (obj) {
1196
+ var self = obj instanceof this.constructor ?
1197
+ obj : $(obj.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type)
1198
+
1199
+ clearTimeout(self.timeout)
1200
+
1201
+ self.hoverState = 'out'
1202
+
1203
+ if (!self.options.delay || !self.options.delay.hide) return self.hide()
1204
+
1205
+ self.timeout = setTimeout(function () {
1206
+ if (self.hoverState == 'out') self.hide()
1207
+ }, self.options.delay.hide)
1208
+ }
1209
+
1210
+ Tooltip.prototype.show = function () {
1211
+ var e = $.Event('show.bs.'+ this.type)
1212
+
1213
+ if (this.hasContent() && this.enabled) {
1214
+ this.$element.trigger(e)
1215
+
1216
+ if (e.isDefaultPrevented()) return
1217
+
1218
+ var $tip = this.tip()
1219
+
1220
+ this.setContent()
1221
+
1222
+ if (this.options.animation) $tip.addClass('fade')
1223
+
1224
+ var placement = typeof this.options.placement == 'function' ?
1225
+ this.options.placement.call(this, $tip[0], this.$element[0]) :
1226
+ this.options.placement
1227
+
1228
+ var autoToken = /\s?auto?\s?/i
1229
+ var autoPlace = autoToken.test(placement)
1230
+ if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
1231
+
1232
+ $tip
1233
+ .detach()
1234
+ .css({ top: 0, left: 0, display: 'block' })
1235
+ .addClass(placement)
1236
+
1237
+ this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
1238
+
1239
+ var pos = this.getPosition()
1240
+ var actualWidth = $tip[0].offsetWidth
1241
+ var actualHeight = $tip[0].offsetHeight
1242
+
1243
+ if (autoPlace) {
1244
+ var $parent = this.$element.parent()
1245
+
1246
+ var orgPlacement = placement
1247
+ var docScroll = document.documentElement.scrollTop || document.body.scrollTop
1248
+ var parentWidth = this.options.container == 'body' ? window.innerWidth : $parent.outerWidth()
1249
+ var parentHeight = this.options.container == 'body' ? window.innerHeight : $parent.outerHeight()
1250
+ var parentLeft = this.options.container == 'body' ? 0 : $parent.offset().left
1251
+
1252
+ placement = placement == 'bottom' && pos.top + pos.height + actualHeight - docScroll > parentHeight ? 'top' :
1253
+ placement == 'top' && pos.top - docScroll - actualHeight < 0 ? 'bottom' :
1254
+ placement == 'right' && pos.right + actualWidth > parentWidth ? 'left' :
1255
+ placement == 'left' && pos.left - actualWidth < parentLeft ? 'right' :
1256
+ placement
1257
+
1258
+ $tip
1259
+ .removeClass(orgPlacement)
1260
+ .addClass(placement)
1261
+ }
1262
+
1263
+ var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
1264
+
1265
+ this.applyPlacement(calculatedOffset, placement)
1266
+ this.$element.trigger('shown.bs.' + this.type)
1267
+ }
1268
+ }
1269
+
1270
+ Tooltip.prototype.applyPlacement = function(offset, placement) {
1271
+ var replace
1272
+ var $tip = this.tip()
1273
+ var width = $tip[0].offsetWidth
1274
+ var height = $tip[0].offsetHeight
1275
+
1276
+ // manually read margins because getBoundingClientRect includes difference
1277
+ var marginTop = parseInt($tip.css('margin-top'), 10)
1278
+ var marginLeft = parseInt($tip.css('margin-left'), 10)
1279
+
1280
+ // we must check for NaN for ie 8/9
1281
+ if (isNaN(marginTop)) marginTop = 0
1282
+ if (isNaN(marginLeft)) marginLeft = 0
1283
+
1284
+ offset.top = offset.top + marginTop
1285
+ offset.left = offset.left + marginLeft
1286
+
1287
+ $tip
1288
+ .offset(offset)
1289
+ .addClass('in')
1290
+
1291
+ // check to see if placing tip in new offset caused the tip to resize itself
1292
+ var actualWidth = $tip[0].offsetWidth
1293
+ var actualHeight = $tip[0].offsetHeight
1294
+
1295
+ if (placement == 'top' && actualHeight != height) {
1296
+ replace = true
1297
+ offset.top = offset.top + height - actualHeight
1298
+ }
1299
+
1300
+ if (/bottom|top/.test(placement)) {
1301
+ var delta = 0
1302
+
1303
+ if (offset.left < 0) {
1304
+ delta = offset.left * -2
1305
+ offset.left = 0
1306
+
1307
+ $tip.offset(offset)
1308
+
1309
+ actualWidth = $tip[0].offsetWidth
1310
+ actualHeight = $tip[0].offsetHeight
1311
+ }
1312
+
1313
+ this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
1314
+ } else {
1315
+ this.replaceArrow(actualHeight - height, actualHeight, 'top')
1316
+ }
1317
+
1318
+ if (replace) $tip.offset(offset)
1319
+ }
1320
+
1321
+ Tooltip.prototype.replaceArrow = function(delta, dimension, position) {
1322
+ this.arrow().css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
1323
+ }
1324
+
1325
+ Tooltip.prototype.setContent = function () {
1326
+ var $tip = this.tip()
1327
+ var title = this.getTitle()
1328
+
1329
+ $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
1330
+ $tip.removeClass('fade in top bottom left right')
1331
+ }
1332
+
1333
+ Tooltip.prototype.hide = function () {
1334
+ var that = this
1335
+ var $tip = this.tip()
1336
+ var e = $.Event('hide.bs.' + this.type)
1337
+
1338
+ function complete() {
1339
+ if (that.hoverState != 'in') $tip.detach()
1340
+ }
1341
+
1342
+ this.$element.trigger(e)
1343
+
1344
+ if (e.isDefaultPrevented()) return
1345
+
1346
+ $tip.removeClass('in')
1347
+
1348
+ $.support.transition && this.$tip.hasClass('fade') ?
1349
+ $tip
1350
+ .one($.support.transition.end, complete)
1351
+ .emulateTransitionEnd(150) :
1352
+ complete()
1353
+
1354
+ this.$element.trigger('hidden.bs.' + this.type)
1355
+
1356
+ return this
1357
+ }
1358
+
1359
+ Tooltip.prototype.fixTitle = function () {
1360
+ var $e = this.$element
1361
+ if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
1362
+ $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
1363
+ }
1364
+ }
1365
+
1366
+ Tooltip.prototype.hasContent = function () {
1367
+ return this.getTitle()
1368
+ }
1369
+
1370
+ Tooltip.prototype.getPosition = function () {
1371
+ var el = this.$element[0]
1372
+ return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
1373
+ width: el.offsetWidth
1374
+ , height: el.offsetHeight
1375
+ }, this.$element.offset())
1376
+ }
1377
+
1378
+ Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
1379
+ return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
1380
+ placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
1381
+ placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
1382
+ /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
1383
+ }
1384
+
1385
+ Tooltip.prototype.getTitle = function () {
1386
+ var title
1387
+ var $e = this.$element
1388
+ var o = this.options
1389
+
1390
+ title = $e.attr('data-original-title')
1391
+ || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
1392
+
1393
+ return title
1394
+ }
1395
+
1396
+ Tooltip.prototype.tip = function () {
1397
+ return this.$tip = this.$tip || $(this.options.template)
1398
+ }
1399
+
1400
+ Tooltip.prototype.arrow = function () {
1401
+ return this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')
1402
+ }
1403
+
1404
+ Tooltip.prototype.validate = function () {
1405
+ if (!this.$element[0].parentNode) {
1406
+ this.hide()
1407
+ this.$element = null
1408
+ this.options = null
1409
+ }
1410
+ }
1411
+
1412
+ Tooltip.prototype.enable = function () {
1413
+ this.enabled = true
1414
+ }
1415
+
1416
+ Tooltip.prototype.disable = function () {
1417
+ this.enabled = false
1418
+ }
1419
+
1420
+ Tooltip.prototype.toggleEnabled = function () {
1421
+ this.enabled = !this.enabled
1422
+ }
1423
+
1424
+ Tooltip.prototype.toggle = function (e) {
1425
+ var self = e ? $(e.currentTarget)[this.type](this.getDelegateOptions()).data('bs.' + this.type) : this
1426
+ self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
1427
+ }
1428
+
1429
+ Tooltip.prototype.destroy = function () {
1430
+ this.hide().$element.off('.' + this.type).removeData('bs.' + this.type)
1431
+ }
1432
+
1433
+
1434
+ // TOOLTIP PLUGIN DEFINITION
1435
+ // =========================
1436
+
1437
+ var old = $.fn.tooltip
1438
+
1439
+ $.fn.tooltip = function (option) {
1440
+ return this.each(function () {
1441
+ var $this = $(this)
1442
+ var data = $this.data('bs.tooltip')
1443
+ var options = typeof option == 'object' && option
1444
+
1445
+ if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
1446
+ if (typeof option == 'string') data[option]()
1447
+ })
1448
+ }
1449
+
1450
+ $.fn.tooltip.Constructor = Tooltip
1451
+
1452
+
1453
+ // TOOLTIP NO CONFLICT
1454
+ // ===================
1455
+
1456
+ $.fn.tooltip.noConflict = function () {
1457
+ $.fn.tooltip = old
1458
+ return this
1459
+ }
1460
+
1461
+ }(window.jQuery);
1462
+
1463
+ /* ========================================================================
1464
+ * Bootstrap: popover.js v3.0.0
1465
+ * http://twbs.github.com/bootstrap/javascript.html#popovers
1466
+ * ========================================================================
1467
+ * Copyright 2012 Twitter, Inc.
1468
+ *
1469
+ * Licensed under the Apache License, Version 2.0 (the "License");
1470
+ * you may not use this file except in compliance with the License.
1471
+ * You may obtain a copy of the License at
1472
+ *
1473
+ * http://www.apache.org/licenses/LICENSE-2.0
1474
+ *
1475
+ * Unless required by applicable law or agreed to in writing, software
1476
+ * distributed under the License is distributed on an "AS IS" BASIS,
1477
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1478
+ * See the License for the specific language governing permissions and
1479
+ * limitations under the License.
1480
+ * ======================================================================== */
1481
+
1482
+
1483
+ +function ($) { "use strict";
1484
+
1485
+ // POPOVER PUBLIC CLASS DEFINITION
1486
+ // ===============================
1487
+
1488
+ var Popover = function (element, options) {
1489
+ this.init('popover', element, options)
1490
+ }
1491
+
1492
+ if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
1493
+
1494
+ Popover.DEFAULTS = $.extend({} , $.fn.tooltip.Constructor.DEFAULTS, {
1495
+ placement: 'right'
1496
+ , trigger: 'click'
1497
+ , content: ''
1498
+ , template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
1499
+ })
1500
+
1501
+
1502
+ // NOTE: POPOVER EXTENDS tooltip.js
1503
+ // ================================
1504
+
1505
+ Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
1506
+
1507
+ Popover.prototype.constructor = Popover
1508
+
1509
+ Popover.prototype.getDefaults = function () {
1510
+ return Popover.DEFAULTS
1511
+ }
1512
+
1513
+ Popover.prototype.setContent = function () {
1514
+ var $tip = this.tip()
1515
+ var title = this.getTitle()
1516
+ var content = this.getContent()
1517
+
1518
+ $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
1519
+ $tip.find('.popover-content')[this.options.html ? 'html' : 'text'](content)
1520
+
1521
+ $tip.removeClass('fade top bottom left right in')
1522
+
1523
+ // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
1524
+ // this manually by checking the contents.
1525
+ if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
1526
+ }
1527
+
1528
+ Popover.prototype.hasContent = function () {
1529
+ return this.getTitle() || this.getContent()
1530
+ }
1531
+
1532
+ Popover.prototype.getContent = function () {
1533
+ var $e = this.$element
1534
+ var o = this.options
1535
+
1536
+ return $e.attr('data-content')
1537
+ || (typeof o.content == 'function' ?
1538
+ o.content.call($e[0]) :
1539
+ o.content)
1540
+ }
1541
+
1542
+ Popover.prototype.arrow = function () {
1543
+ return this.$arrow = this.$arrow || this.tip().find('.arrow')
1544
+ }
1545
+
1546
+ Popover.prototype.tip = function () {
1547
+ if (!this.$tip) this.$tip = $(this.options.template)
1548
+ return this.$tip
1549
+ }
1550
+
1551
+
1552
+ // POPOVER PLUGIN DEFINITION
1553
+ // =========================
1554
+
1555
+ var old = $.fn.popover
1556
+
1557
+ $.fn.popover = function (option) {
1558
+ return this.each(function () {
1559
+ var $this = $(this)
1560
+ var data = $this.data('bs.popover')
1561
+ var options = typeof option == 'object' && option
1562
+
1563
+ if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
1564
+ if (typeof option == 'string') data[option]()
1565
+ })
1566
+ }
1567
+
1568
+ $.fn.popover.Constructor = Popover
1569
+
1570
+
1571
+ // POPOVER NO CONFLICT
1572
+ // ===================
1573
+
1574
+ $.fn.popover.noConflict = function () {
1575
+ $.fn.popover = old
1576
+ return this
1577
+ }
1578
+
1579
+ }(window.jQuery);
1580
+
1581
+ /* ========================================================================
1582
+ * Bootstrap: scrollspy.js v3.0.0
1583
+ * http://twbs.github.com/bootstrap/javascript.html#scrollspy
1584
+ * ========================================================================
1585
+ * Copyright 2012 Twitter, Inc.
1586
+ *
1587
+ * Licensed under the Apache License, Version 2.0 (the "License");
1588
+ * you may not use this file except in compliance with the License.
1589
+ * You may obtain a copy of the License at
1590
+ *
1591
+ * http://www.apache.org/licenses/LICENSE-2.0
1592
+ *
1593
+ * Unless required by applicable law or agreed to in writing, software
1594
+ * distributed under the License is distributed on an "AS IS" BASIS,
1595
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1596
+ * See the License for the specific language governing permissions and
1597
+ * limitations under the License.
1598
+ * ======================================================================== */
1599
+
1600
+
1601
+ +function ($) { "use strict";
1602
+
1603
+ // SCROLLSPY CLASS DEFINITION
1604
+ // ==========================
1605
+
1606
+ function ScrollSpy(element, options) {
1607
+ var href
1608
+ var process = $.proxy(this.process, this)
1609
+
1610
+ this.$element = $(element).is('body') ? $(window) : $(element)
1611
+ this.$body = $('body')
1612
+ this.$scrollElement = this.$element.on('scroll.bs.scroll-spy.data-api', process)
1613
+ this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
1614
+ this.selector = (this.options.target
1615
+ || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
1616
+ || '') + ' .nav li > a'
1617
+ this.offsets = $([])
1618
+ this.targets = $([])
1619
+ this.activeTarget = null
1620
+
1621
+ this.refresh()
1622
+ this.process()
1623
+ }
1624
+
1625
+ ScrollSpy.DEFAULTS = {
1626
+ offset: 10
1627
+ }
1628
+
1629
+ ScrollSpy.prototype.refresh = function () {
1630
+ var offsetMethod = this.$element[0] == window ? 'offset' : 'position'
1631
+
1632
+ this.offsets = $([])
1633
+ this.targets = $([])
1634
+
1635
+ var self = this
1636
+ var $targets = this.$body
1637
+ .find(this.selector)
1638
+ .map(function () {
1639
+ var $el = $(this)
1640
+ var href = $el.data('target') || $el.attr('href')
1641
+ var $href = /^#\w/.test(href) && $(href)
1642
+
1643
+ return ($href
1644
+ && $href.length
1645
+ && [[ $href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]]) || null
1646
+ })
1647
+ .sort(function (a, b) { return a[0] - b[0] })
1648
+ .each(function () {
1649
+ self.offsets.push(this[0])
1650
+ self.targets.push(this[1])
1651
+ })
1652
+ }
1653
+
1654
+ ScrollSpy.prototype.process = function () {
1655
+ var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
1656
+ var scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
1657
+ var maxScroll = scrollHeight - this.$scrollElement.height()
1658
+ var offsets = this.offsets
1659
+ var targets = this.targets
1660
+ var activeTarget = this.activeTarget
1661
+ var i
1662
+
1663
+ if (scrollTop >= maxScroll) {
1664
+ return activeTarget != (i = targets.last()[0]) && this.activate(i)
1665
+ }
1666
+
1667
+ for (i = offsets.length; i--;) {
1668
+ activeTarget != targets[i]
1669
+ && scrollTop >= offsets[i]
1670
+ && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
1671
+ && this.activate( targets[i] )
1672
+ }
1673
+ }
1674
+
1675
+ ScrollSpy.prototype.activate = function (target) {
1676
+ this.activeTarget = target
1677
+
1678
+ $(this.selector)
1679
+ .parents('.active')
1680
+ .removeClass('active')
1681
+
1682
+ var selector = this.selector
1683
+ + '[data-target="' + target + '"],'
1684
+ + this.selector + '[href="' + target + '"]'
1685
+
1686
+ var active = $(selector)
1687
+ .parents('li')
1688
+ .addClass('active')
1689
+
1690
+ if (active.parent('.dropdown-menu').length) {
1691
+ active = active
1692
+ .closest('li.dropdown')
1693
+ .addClass('active')
1694
+ }
1695
+
1696
+ active.trigger('activate')
1697
+ }
1698
+
1699
+
1700
+ // SCROLLSPY PLUGIN DEFINITION
1701
+ // ===========================
1702
+
1703
+ var old = $.fn.scrollspy
1704
+
1705
+ $.fn.scrollspy = function (option) {
1706
+ return this.each(function () {
1707
+ var $this = $(this)
1708
+ var data = $this.data('bs.scrollspy')
1709
+ var options = typeof option == 'object' && option
1710
+
1711
+ if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
1712
+ if (typeof option == 'string') data[option]()
1713
+ })
1714
+ }
1715
+
1716
+ $.fn.scrollspy.Constructor = ScrollSpy
1717
+
1718
+
1719
+ // SCROLLSPY NO CONFLICT
1720
+ // =====================
1721
+
1722
+ $.fn.scrollspy.noConflict = function () {
1723
+ $.fn.scrollspy = old
1724
+ return this
1725
+ }
1726
+
1727
+
1728
+ // SCROLLSPY DATA-API
1729
+ // ==================
1730
+
1731
+ $(window).on('load', function () {
1732
+ $('[data-spy="scroll"]').each(function () {
1733
+ var $spy = $(this)
1734
+ $spy.scrollspy($spy.data())
1735
+ })
1736
+ })
1737
+
1738
+ }(window.jQuery);
1739
+
1740
+ /* ========================================================================
1741
+ * Bootstrap: tab.js v3.0.0
1742
+ * http://twbs.github.com/bootstrap/javascript.html#tabs
1743
+ * ========================================================================
1744
+ * Copyright 2012 Twitter, Inc.
1745
+ *
1746
+ * Licensed under the Apache License, Version 2.0 (the "License");
1747
+ * you may not use this file except in compliance with the License.
1748
+ * You may obtain a copy of the License at
1749
+ *
1750
+ * http://www.apache.org/licenses/LICENSE-2.0
1751
+ *
1752
+ * Unless required by applicable law or agreed to in writing, software
1753
+ * distributed under the License is distributed on an "AS IS" BASIS,
1754
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1755
+ * See the License for the specific language governing permissions and
1756
+ * limitations under the License.
1757
+ * ======================================================================== */
1758
+
1759
+
1760
+ +function ($) { "use strict";
1761
+
1762
+ // TAB CLASS DEFINITION
1763
+ // ====================
1764
+
1765
+ var Tab = function (element) {
1766
+ this.element = $(element)
1767
+ }
1768
+
1769
+ Tab.prototype.show = function () {
1770
+ var $this = this.element
1771
+ var $ul = $this.closest('ul:not(.dropdown-menu)')
1772
+ var selector = $this.attr('data-target')
1773
+
1774
+ if (!selector) {
1775
+ selector = $this.attr('href')
1776
+ selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
1777
+ }
1778
+
1779
+ if ($this.parent('li').hasClass('active')) return
1780
+
1781
+ var previous = $ul.find('.active:last a')[0]
1782
+ var e = $.Event('show.bs.tab', {
1783
+ relatedTarget: previous
1784
+ })
1785
+
1786
+ $this.trigger(e)
1787
+
1788
+ if (e.isDefaultPrevented()) return
1789
+
1790
+ var $target = $(selector)
1791
+
1792
+ this.activate($this.parent('li'), $ul)
1793
+ this.activate($target, $target.parent(), function () {
1794
+ $this.trigger({
1795
+ type: 'shown.bs.tab'
1796
+ , relatedTarget: previous
1797
+ })
1798
+ })
1799
+ }
1800
+
1801
+ Tab.prototype.activate = function (element, container, callback) {
1802
+ var $active = container.find('> .active')
1803
+ var transition = callback
1804
+ && $.support.transition
1805
+ && $active.hasClass('fade')
1806
+
1807
+ function next() {
1808
+ $active
1809
+ .removeClass('active')
1810
+ .find('> .dropdown-menu > .active')
1811
+ .removeClass('active')
1812
+
1813
+ element.addClass('active')
1814
+
1815
+ if (transition) {
1816
+ element[0].offsetWidth // reflow for transition
1817
+ element.addClass('in')
1818
+ } else {
1819
+ element.removeClass('fade')
1820
+ }
1821
+
1822
+ if (element.parent('.dropdown-menu')) {
1823
+ element.closest('li.dropdown').addClass('active')
1824
+ }
1825
+
1826
+ callback && callback()
1827
+ }
1828
+
1829
+ transition ?
1830
+ $active
1831
+ .one($.support.transition.end, next)
1832
+ .emulateTransitionEnd(150) :
1833
+ next()
1834
+
1835
+ $active.removeClass('in')
1836
+ }
1837
+
1838
+
1839
+ // TAB PLUGIN DEFINITION
1840
+ // =====================
1841
+
1842
+ var old = $.fn.tab
1843
+
1844
+ $.fn.tab = function ( option ) {
1845
+ return this.each(function () {
1846
+ var $this = $(this)
1847
+ var data = $this.data('bs.tab')
1848
+
1849
+ if (!data) $this.data('bs.tab', (data = new Tab(this)))
1850
+ if (typeof option == 'string') data[option]()
1851
+ })
1852
+ }
1853
+
1854
+ $.fn.tab.Constructor = Tab
1855
+
1856
+
1857
+ // TAB NO CONFLICT
1858
+ // ===============
1859
+
1860
+ $.fn.tab.noConflict = function () {
1861
+ $.fn.tab = old
1862
+ return this
1863
+ }
1864
+
1865
+
1866
+ // TAB DATA-API
1867
+ // ============
1868
+
1869
+ $(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
1870
+ e.preventDefault()
1871
+ $(this).tab('show')
1872
+ })
1873
+
1874
+ }(window.jQuery);
1875
+
1876
+ /* ========================================================================
1877
+ * Bootstrap: affix.js v3.0.0
1878
+ * http://twbs.github.com/bootstrap/javascript.html#affix
1879
+ * ========================================================================
1880
+ * Copyright 2012 Twitter, Inc.
1881
+ *
1882
+ * Licensed under the Apache License, Version 2.0 (the "License");
1883
+ * you may not use this file except in compliance with the License.
1884
+ * You may obtain a copy of the License at
1885
+ *
1886
+ * http://www.apache.org/licenses/LICENSE-2.0
1887
+ *
1888
+ * Unless required by applicable law or agreed to in writing, software
1889
+ * distributed under the License is distributed on an "AS IS" BASIS,
1890
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1891
+ * See the License for the specific language governing permissions and
1892
+ * limitations under the License.
1893
+ * ======================================================================== */
1894
+
1895
+
1896
+ +function ($) { "use strict";
1897
+
1898
+ // AFFIX CLASS DEFINITION
1899
+ // ======================
1900
+
1901
+ var Affix = function (element, options) {
1902
+ this.options = $.extend({}, Affix.DEFAULTS, options)
1903
+ this.$window = $(window)
1904
+ .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
1905
+ .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
1906
+
1907
+ this.$element = $(element)
1908
+ this.affixed =
1909
+ this.unpin = null
1910
+
1911
+ this.checkPosition()
1912
+ }
1913
+
1914
+ Affix.RESET = 'affix affix-top affix-bottom'
1915
+
1916
+ Affix.DEFAULTS = {
1917
+ offset: 0
1918
+ }
1919
+
1920
+ Affix.prototype.checkPositionWithEventLoop = function () {
1921
+ setTimeout($.proxy(this.checkPosition, this), 1)
1922
+ }
1923
+
1924
+ Affix.prototype.checkPosition = function () {
1925
+ if (!this.$element.is(':visible')) return
1926
+
1927
+ var scrollHeight = $(document).height()
1928
+ var scrollTop = this.$window.scrollTop()
1929
+ var position = this.$element.offset()
1930
+ var offset = this.options.offset
1931
+ var offsetTop = offset.top
1932
+ var offsetBottom = offset.bottom
1933
+
1934
+ if (typeof offset != 'object') offsetBottom = offsetTop = offset
1935
+ if (typeof offsetTop == 'function') offsetTop = offset.top()
1936
+ if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
1937
+
1938
+ var affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? false :
1939
+ offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :
1940
+ offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false
1941
+
1942
+ if (this.affixed === affix) return
1943
+ if (this.unpin) this.$element.css('top', '')
1944
+
1945
+ this.affixed = affix
1946
+ this.unpin = affix == 'bottom' ? position.top - scrollTop : null
1947
+
1948
+ this.$element.removeClass(Affix.RESET).addClass('affix' + (affix ? '-' + affix : ''))
1949
+
1950
+ if (affix == 'bottom') {
1951
+ this.$element.offset({ top: document.body.offsetHeight - offsetBottom - this.$element.height() })
1952
+ }
1953
+ }
1954
+
1955
+
1956
+ // AFFIX PLUGIN DEFINITION
1957
+ // =======================
1958
+
1959
+ var old = $.fn.affix
1960
+
1961
+ $.fn.affix = function (option) {
1962
+ return this.each(function () {
1963
+ var $this = $(this)
1964
+ var data = $this.data('bs.affix')
1965
+ var options = typeof option == 'object' && option
1966
+
1967
+ if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
1968
+ if (typeof option == 'string') data[option]()
1969
+ })
1970
+ }
1971
+
1972
+ $.fn.affix.Constructor = Affix
1973
+
1974
+
1975
+ // AFFIX NO CONFLICT
1976
+ // =================
1977
+
1978
+ $.fn.affix.noConflict = function () {
1979
+ $.fn.affix = old
1980
+ return this
1981
+ }
1982
+
1983
+
1984
+ // AFFIX DATA-API
1985
+ // ==============
1986
+
1987
+ $(window).on('load', function () {
1988
+ $('[data-spy="affix"]').each(function () {
1989
+ var $spy = $(this)
1990
+ var data = $spy.data()
1991
+
1992
+ data.offset = data.offset || {}
1993
+
1994
+ if (data.offsetBottom) data.offset.bottom = data.offsetBottom
1995
+ if (data.offsetTop) data.offset.top = data.offsetTop
1996
+
1997
+ $spy.affix(data)
1998
+ })
1999
+ })
2000
+
2001
+ }(window.jQuery);
static/assets/js/sass-bootstrap.min.js ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Sass Bootstrap v3.0.16 by Aaron Lademann and Twitter Inc.
3
+ * Copyright 2013 Aaron Lademann and Twitter Inc.
4
+ * Licensed under http://www.apache.org/licenses/LICENSE-2.0.
5
+ *
6
+ * Designed and built with all the love in the world by @alademann, @mdo and @fat.
7
+ */
8
+ 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);
static/assets/stylesheet.css ADDED
@@ -0,0 +1,220 @@
1
+ /* offset to take top navbar into account */
2
+ #main { margin-top: 0px; }
3
+
4
+ /* wallpaper hack doesnt make sense in print */
5
+ @media print {
6
+ .backstretch img {
7
+ display: none !important
8
+ }
9
+ }
10
+
11
+ body {
12
+ color: #ccc;
13
+ background-color: #050517;
14
+ font-family: 'Source Sans Pro', sans-serif;
15
+ font-weight: 300;
16
+ }
17
+
18
+ h1, h2, h3, h4, h5, h6 {
19
+ font-family: "Exo", sans-serif;
20
+ font-weight: 300;
21
+ }
22
+
23
+ pre, code {
24
+ font-family: "Oxygen Mono", monospaced;
25
+ background: rgba(0,0,0,0.5);
26
+ color: white;
27
+ border: 1px solid rgba(0,0,0,0.8);
28
+ }
29
+
30
+ .smallprint {
31
+ font-size: 0.8em;
32
+ color: #666666;
33
+ }
34
+
35
+ .captioned-image {
36
+ margin: 20px;
37
+ }
38
+
39
+ @media screen and (min-width: 992px) {
40
+ .captioned-image {
41
+ width: 50%;
42
+ float: right;
43
+ }
44
+ }
45
+
46
+ @media screen and (max-width: 991px) {
47
+ .captioned-image {
48
+ width: 80%;
49
+ margin: 2
50
+ }
51
+ }
52
+
53
+ #wrap {
54
+ /* the background tint layer */
55
+ background-image: radial-gradient(ellipse at center top, rgba(32,74,135,0.8) 20%, rgba(0,0,0,0) 100%);
56
+ /* for older webkit */
57
+ background: -webkit-radial-gradient(center top, ellipse cover, rgba(32,74,135,0.8) 20%,rgba(0,0,0,0) 100%);
58
+ }
59
+
60
+ #header img {
61
+ margin: 20px;
62
+ }
63
+
64
+ .navbar {
65
+ font-size: 1.1em;
66
+ margin: 0px;
67
+ }
68
+
69
+ .navbar-inverse {
70
+ background-color: rgba(0,0,0,0.4);
71
+ border: 0;
72
+ }
73
+
74
+ .nav > li > a {
75
+ text-align: center;
76
+ padding-top: 16px;
77
+ padding-bottom: 16px;
78
+ margin-bottom: 0;
79
+ color: #777;
80
+ font-weight: 600;
81
+ font-size: 1.1em;
82
+ text-align: center;
83
+ text-transform: uppercase;
84
+ border-bottom-color: transparent;
85
+ }
86
+
87
+ .nav > li > a:hover, .nav > li.open > a:hover {
88
+ color: white;
89
+ border-bottom: 4px solid orange;
90
+ padding-bottom: 12px;
91
+ }
92
+
93
+ .nav ul.dropdown-menu {
94
+ background: rgba(0,0,0,0.8);
95
+ }
96
+
97
+ .nav ul.dropdown-menu a {
98
+ color: white;
99
+ }
100
+
101
+ .nav .dropdown-menu > li > a:hover {
102
+ background: orange;
103
+ color: white;
104
+ }
105
+
106
+ .navbar-header a.navbar-brand {
107
+ margin: 0;
108
+ padding: 0;
109
+ border: none;
110
+ }
111
+
112
+ a.navbar-brand {
113
+ font-size: inherit;
114
+ }
115
+
116
+ .jumbotron {
117
+ background: none;
118
+ padding-bottom: 12px;
119
+ }
120
+
121
+ .jumbotron h1 {
122
+ font-weight: 200;
123
+ color: white;
124
+ text-shadow: 0px 0px 12px rgba(255,255,255,0.4);
125
+ }
126
+ .jumbotron p {
127
+ font-weight: 200;
128
+ }
129
+
130
+ /* Set the fixed height of the footer here */
131
+ #footer {
132
+ height: 60px;
133
+ background-color: rgba(0,0,0,0.2);
134
+ }
135
+
136
+ .container h1.video {
137
+ text-align: center;
138
+ text-decoration: underline;
139
+ font-weight: bold;
140
+ }
141
+
142
+ .container h2.video {
143
+ text-align: center;
144
+ }
145
+
146
+ .container h3.video {
147
+ margin-top: 40px;
148
+ text-align: center;
149
+ }
150
+
151
+ .container iframe {
152
+ margin: 0 auto;
153
+ display: block;
154
+ }
155
+
156
+ .container .credit {
157
+ margin: 20px 0;
158
+ }
159
+
160
+ .downloadbutton a {
161
+ display: inline;
162
+ color: white;
163
+ font-size: 32px;
164
+ font-weight: 600;
165
+ /* text-transform: uppercase; */
166
+ text-shadow: 0 0.5px 2px rgba(0,0,0,0.3);
167
+ background: goldenrod;
168
+ background: linear-gradient(to bottom, rgba(255,175,75,1) 0%,rgba(255,146,10,1) 100%);
169
+ padding: 0 32px 0 32px;
170
+ border-radius: 60px;
171
+ text-align: center;
172
+ border: 2px solid #cc6611;
173
+ }
174
+
175
+ .downloadbutton a:active {
176
+ background: linear-gradient(to bottom, rgba(255,175,75,1) 100%,rgba(255,146,10,1) 0%);
177
+ }
178
+
179
+ div.thumbnail {
180
+ background: rgba(255,255,255,1);
181
+ border-radius: 7px;
182
+ border: none;
183
+ padding-top: 24px;
184
+ }
185
+
186
+ ul#markdown-toc {
187
+ width: 30%;
188
+ float: right;
189
+ background: rgba(255,255,255,0.05);
190
+ border-radius: 7px;
191
+ margin: 12px;
192
+ padding-top: 12px;
193
+ padding-bottom: 18px;
194
+ }
195
+
196
+ ul#markdown-toc > li {
197
+ margin-left: 6px;
198
+ }
199
+
200
+ ul#markdown-toc:before {
201
+ content: "Table of Contents";
202
+ font-weight: 300;
203
+ font-size: 1.6em;
204
+ margin-left: -18px;
205
+ margin-bottom: 2px;
206
+ text-decoration: underline;
207
+ }
208
+
209
+ /* rss feed jquery plugin */
210
+ .feedEkList{
211
+ // width:450px;
212
+ list-style:none outside none;
213
+ }
214
+ .itemTitle a{
215
+ font-weight:bold;
216
+ }
217
+ .itemDate{
218
+ font-size: 0.8em;
219
+ color:rgba(255,255,255,0.5);
220
+ }
static/googlef092517931db8da6.html ADDED
@@ -0,0 +1 @@
1
+ google-site-verification: googlef092517931db8da6.html
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
empty file added
file added
+0
empty file added