├── site ├── .gitignore ├── ._index.md ├── img │ ├── hr.png │ └── noise.png ├── .__config.yml ├── font │ ├── kreon-v6.woff │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.ttf │ └── fontawesome-webfont.woff ├── _layouts │ ├── wide.md │ ├── slim.md │ ├── default.html │ ├── standard.html │ ├── container.html │ └── base.html ├── css │ ├── gf.css │ ├── syntax.css │ ├── main.css │ ├── fa.css │ └── fa-ie7.css ├── _includes │ ├── header.html │ ├── meta.html │ ├── page_header.html │ ├── footer.html │ ├── author.html │ ├── analytics.html │ ├── mailing_list_form.html │ └── announcements.html ├── _config.yml └── js │ ├── hipchat.js │ ├── html5shiv.js │ └── bootstrap.js ├── README.md ├── topGO.Rnw ├── diffExp.Rnw └── Snakefile /site/.gitignore: -------------------------------------------------------------------------------- 1 | _site -------------------------------------------------------------------------------- /site/._index.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leipzig/snakemake-example/HEAD/site/._index.md -------------------------------------------------------------------------------- /site/img/hr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leipzig/snakemake-example/HEAD/site/img/hr.png -------------------------------------------------------------------------------- /site/.__config.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leipzig/snakemake-example/HEAD/site/.__config.yml -------------------------------------------------------------------------------- /site/img/noise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leipzig/snakemake-example/HEAD/site/img/noise.png -------------------------------------------------------------------------------- /site/font/kreon-v6.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leipzig/snakemake-example/HEAD/site/font/kreon-v6.woff -------------------------------------------------------------------------------- /site/font/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leipzig/snakemake-example/HEAD/site/font/FontAwesome.otf -------------------------------------------------------------------------------- /site/font/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leipzig/snakemake-example/HEAD/site/font/fontawesome-webfont.eot -------------------------------------------------------------------------------- /site/font/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leipzig/snakemake-example/HEAD/site/font/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /site/font/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leipzig/snakemake-example/HEAD/site/font/fontawesome-webfont.woff -------------------------------------------------------------------------------- /site/_layouts/wide.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: container 3 | --- 4 | 5 |
6 | {% include page_header.html %} 7 | {{ content }} 8 |
-------------------------------------------------------------------------------- /site/_layouts/slim.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: container 3 | --- 4 | 5 |
6 | {% include page_header.html %} 7 | {{ content }} 8 |
9 | -------------------------------------------------------------------------------- /site/_layouts/default.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: container 3 | --- 4 | 5 |
6 | {% include page_header.html %} 7 | {{ content }} 8 |
9 | -------------------------------------------------------------------------------- /site/_layouts/standard.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: container 3 | --- 4 | 5 |
6 | {% include page_header.html %} 7 | {{ content }} 8 |
9 | -------------------------------------------------------------------------------- /site/css/gf.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Kreon'; 3 | font-style: normal; 4 | font-weight: 400; 5 | src: local('Kreon Regular'), local('Kreon-Regular'), url(../font/kreon-v6.woff) format('woff'); 6 | } -------------------------------------------------------------------------------- /site/_layouts/container.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: base 3 | --- 4 | 5 | {% include header.html %} 6 | 7 |
8 |
9 | {{ content }} 10 |
11 |
12 | 13 | {% include footer.html %} 14 | -------------------------------------------------------------------------------- /site/_includes/header.html: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /site/_includes/meta.html: -------------------------------------------------------------------------------- 1 |
{% if page.author %}{% include author.html %}{% endif %}{% if page.date %} · {{ page.date | date:"%B %d %Y" }}{% if page.modified %}(updated {{ page.modified | date:"%B %d %Y" }}){% endif %}{% endif %}
-------------------------------------------------------------------------------- /site/_config.yml: -------------------------------------------------------------------------------- 1 | layout: narrow 2 | markdown: redcarpet 3 | redcarpet: 4 | extensions: ["no_intra_emphasis", "fenced_code_blocks", "tables"] 5 | pygments: true 6 | name: Snakemake example 7 | baseurl : http://website 8 | uploaddir : http://website 9 | ucsc : 10 | mirror : -------------------------------------------------------------------------------- /site/_includes/page_header.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | {% if page.intro %}

{{ page.intro }}

{% endif %} -------------------------------------------------------------------------------- /site/_includes/footer.html: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /site/_includes/author.html: -------------------------------------------------------------------------------- 1 | {% if site.authors[page.author] %} 2 | 3 | {% assign details = site.authors[page.author] %} 4 | {% if details.name %} 5 | {% assign name = details.name %} 6 | {% else %} 7 | {% assign name = page.author %} 8 | {% endif %} 9 | {% if details.website %} 10 | {{ name }} 11 | {% else %} 12 | {{ name }} 13 | {% endif %} 14 | 15 | {% endif %} -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | snakemake-example 2 | ================= 3 | 4 | ## Description 5 | 6 | This is a full-fledged [Snakemake](https://bitbucket.org/johanneskoester/snakemake) RNA-Seq pipeline with integrated [Jekyll](http://jekyllrb.com) project page production using a template I borrowed from [Byron Ruth](https://github.com/bruth). 7 | 8 | Some of the experiment specifics have been changed for privacy. 9 | 10 | ### Slides 11 | http://www.slideshare.net/jermdemo/taming-snakemake 12 | -------------------------------------------------------------------------------- /site/_includes/analytics.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /site/_includes/mailing_list_form.html: -------------------------------------------------------------------------------- 1 |

Stay in touch! Sign up for our email list to get periodic updates on Harvest, blog posts, and invitations to future webinars.

2 | 3 | 4 |
5 |
6 | 7 |
8 | 9 |
10 |
11 |

Don't worry! We will never spam you or give your email to anyone else.

12 |
13 | 14 | -------------------------------------------------------------------------------- /site/_includes/announcements.html: -------------------------------------------------------------------------------- 1 |
2 |
Register here to attend the webinar titled "How CHOP Created a Last Mile Solution for Clinical Research Data" to learn more about Harvest on November 1, 2013 from 1-2 PM.
3 | 4 |
The Harvest manuscript has been published in the Journal of the American Medical Informatics Association (JAMIA). See other press and media about Harvest on our media & press page.
5 | 6 |
Do you have any questions about Harvest? Want to live chat with the Harvest team? The Harvest site now has a chatroom! Simply enter your name and start talking.
7 |
-------------------------------------------------------------------------------- /site/_layouts/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | {{ site.name }}{% if page.title %} | {{ page.title }}{% endif %} 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 21 | 22 | 23 | 26 | 27 | 28 |
29 | {{ content }} 30 |
31 | 32 | 33 | 34 | {% include analytics.html %} 35 | 36 | 37 | -------------------------------------------------------------------------------- /site/js/hipchat.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | 3 | // Creates an iframe with an embedded HipChat conversation window. 4 | // 5 | // Options: 6 | // url - The url to the room to embed; required 7 | // el - The container in which to insert the HipChat panel; required 8 | // timezone - The timezone to use in the embedded room; required 9 | // width - The width of the iframe; defaults to 100% 10 | // height - The height of the iframe; defaults to 400px 11 | 12 | var parametize = function(params) { 13 | var key, toks = []; 14 | for (key in params) { 15 | toks.push(key + '=' + params[key]); 16 | } 17 | return toks.join('&'); 18 | }; 19 | 20 | return this.HipChat = function(options) { 21 | if (options && options.url && options.el && options.timezone) { 22 | var el = document.querySelector(options.el); 23 | if (!el) return; 24 | var params = { 25 | anonymous: 1, 26 | timezone: options.timezone, 27 | minimal: 1 28 | }; 29 | var url = options.url + (options.url.indexOf('?') > 0 ? '&' : '?') + 30 | parametize(params); 31 | if (url.indexOf('https://') !== 0) { 32 | url = 'https://' + url; 33 | } 34 | var w = options.width || '100%'; 35 | var h = options.height || 600; 36 | el.innerHTML = ''; 38 | } 39 | }; 40 | })(); 41 | -------------------------------------------------------------------------------- /site/css/syntax.css: -------------------------------------------------------------------------------- 1 | .highlight .hll { background-color: #ffffcc } 2 | .highlight .c { font-style: italic } /* Comment */ 3 | .highlight .err { border: 1px solid #FF0000 } /* Error */ 4 | .highlight .k { font-weight: bold } /* Keyword */ 5 | .highlight .cm { font-style: italic } /* Comment.Multiline */ 6 | .highlight .c1 { font-style: italic } /* Comment.Single */ 7 | .highlight .cs { font-style: italic } /* Comment.Special */ 8 | .highlight .ge { font-style: italic } /* Generic.Emph */ 9 | .highlight .gh { font-weight: bold } /* Generic.Heading */ 10 | .highlight .gp { font-weight: bold } /* Generic.Prompt */ 11 | .highlight .gs { font-weight: bold } /* Generic.Strong */ 12 | .highlight .gu { font-weight: bold } /* Generic.Subheading */ 13 | .highlight .kc { font-weight: bold } /* Keyword.Constant */ 14 | .highlight .kd { font-weight: bold } /* Keyword.Declaration */ 15 | .highlight .kn { font-weight: bold } /* Keyword.Namespace */ 16 | .highlight .kr { font-weight: bold } /* Keyword.Reserved */ 17 | .highlight .s { font-style: italic } /* Literal.String */ 18 | .highlight .nc { font-weight: bold } /* Name.Class */ 19 | .highlight .ni { font-weight: bold } /* Name.Entity */ 20 | .highlight .ne { font-weight: bold } /* Name.Exception */ 21 | .highlight .nn { font-weight: bold } /* Name.Namespace */ 22 | .highlight .nt { font-weight: bold } /* Name.Tag */ 23 | .highlight .ow { font-weight: bold } /* Operator.Word */ 24 | .highlight .sb { font-style: italic } /* Literal.String.Backtick */ 25 | .highlight .sc { font-style: italic } /* Literal.String.Char */ 26 | .highlight .sd { font-style: italic } /* Literal.String.Doc */ 27 | .highlight .s2 { font-style: italic } /* Literal.String.Double */ 28 | .highlight .se { font-weight: bold; font-style: italic } /* Literal.String.Escape */ 29 | .highlight .sh { font-style: italic } /* Literal.String.Heredoc */ 30 | .highlight .si { font-weight: bold; font-style: italic } /* Literal.String.Interpol */ 31 | .highlight .sx { font-style: italic } /* Literal.String.Other */ 32 | .highlight .sr { font-style: italic } /* Literal.String.Regex */ 33 | .highlight .s1 { font-style: italic } /* Literal.String.Single */ 34 | .highlight .ss { font-style: italic } /* Literal.String.Symbol */ 35 | -------------------------------------------------------------------------------- /site/js/html5shiv.js: -------------------------------------------------------------------------------- 1 | /* 2 | HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | (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(); 5 | 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"; 6 | 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="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| 7 | "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 dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f); 8 | if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d>= 44 | library(topGO) 45 | library(org.Mm.eg.db) 46 | library(xtable) 47 | @ 48 | 49 | \section{Introduction} 50 | TopGO \cite{Anders} provides additional tools for exploring GO enrichment. 51 | 52 | The classicFisher is a filtered list approach - enrichment is strictly based on counts of genes associated with the GO terms. 53 | 54 | Kolmogorov-Smirnov test is supposed to use differential p-values to weight enrichment. The elim method was design to be more conservative then the classic method. 55 | 56 | <>= 57 | muscleGos<-get(load("muscleGO.RData")) 58 | heartGos<-get(load("heartGO.RData")) 59 | ont<-'BP' 60 | @ 61 | \section{Muscle} 62 | <>= 63 | for(crit in c('de','hot','cold')){ 64 | print(muscleGos[[crit]][[ont]]$xtable,include.rownames=FALSE, tabular.environment = "longtable", floating = FALSE, size="\\scriptsize") 65 | } 66 | @ 67 | \pagebreak 68 | <>= 69 | ont<-'CC' 70 | <> 71 | @ 72 | \pagebreak 73 | <>= 74 | ont<-'MF' 75 | <> 76 | @ 77 | \pagebreak 78 | \section{Heart} 79 | <>= 80 | ont<-'BP' 81 | @ 82 | 83 | <>= 84 | for(crit in c('de','hot','cold')){ 85 | print(heartGos[[crit]][[ont]]$xtable,include.rownames=FALSE, tabular.environment = "longtable", floating = FALSE, size="\\scriptsize") 86 | } 87 | @ 88 | \pagebreak 89 | <>= 90 | ont<-'CC' 91 | <> 92 | @ 93 | \pagebreak 94 | <>= 95 | ont<-'MF' 96 | <> 97 | @ 98 | 99 | \pagebreak 100 | The R session information (including the OS info, R version and all 101 | packages used): 102 | 103 | <>= 104 | toLatex(sessionInfo()) 105 | 106 | @ 107 | 108 | <>= 109 | commit<-system("git rev-parse --verify HEAD",intern=TRUE) 110 | time<-Sys.time() 111 | @ 112 | \rfoot{$ \Sexpr{commit} \Sexpr{time} $} 113 | 114 | \begin{thebibliography}{100} % start the bibliography 115 | 116 | \small % put the bibliography in a small font 117 | 118 | 119 | \bibitem{Alexa} Alexa, A., Rahnenfuhrer, J., and Lengauer, T. (2006). 120 | Improved scoring of functional groups from gene expression data by decorrelating 121 | go graph structure. Bioinformatics (Oxford, England), 22:1600-1607. 122 | 10.1093/bioinformatics/btl140. 123 | \end{thebibliography} % end the bibliography 124 | 125 | 126 | \end{document} 127 | 128 | -------------------------------------------------------------------------------- /site/css/main.css: -------------------------------------------------------------------------------- 1 | body, html { 2 | height: 100%; 3 | background: #fff url(../img/noise.png); 4 | } 5 | 6 | /* Smooth transition of hover effect */ 7 | a { 8 | transition: color 0.2s ease-in-out; 9 | } 10 | 11 | /* Fancy serif font for headings and brand */ 12 | h1, h2, h3, h4, h5, h6, .navbar-brand { 13 | font-family: Georgia, "Times New Roman", Times, serif; 14 | } 15 | 16 | /* Fancy horizontal rule */ 17 | hr { 18 | background: transparent url(../img/hr.png) repeat-x 0 0; 19 | border: 0; 20 | color: #ccc; 21 | height: 4px; 22 | padding: 0; 23 | margin: 30px 0; 24 | } 25 | 26 | h1, h2 { 27 | color: #ee9934; /* orange */ 28 | } 29 | 30 | code { 31 | border-radius: 3px; 32 | color: inherit; 33 | background-color: #f3f3f3; 34 | } 35 | 36 | pre { 37 | border-radius: 3px; 38 | font-size: 0.85em; 39 | border: 0; 40 | background-color: #f3f3f3; 41 | } 42 | 43 | /* A misuse of an element... */ 44 | section { 45 | background-color: rgba(51, 187, 255, 0.1); /* alpha light blue */ 46 | border-top: 1px solid #B1D4E7; 47 | border-bottom: 1px solid #B1D4E7; 48 | } 49 | 50 | /* Harvest logo at various sizes. This is to be used inline with text */ 51 | .harvest-logo-16 { 52 | display: inline-block !important; 53 | background: transparent url(../img/logo/favicon/wheat_5grain.svg) no-repeat; 54 | height: 14px; 55 | width: 14px; 56 | background-size: 14px 14px; 57 | } 58 | 59 | .harvest-logo-24 { 60 | display: inline-block !important; 61 | background: transparent url(../img/logo/favicon/wheat_5grain.svg) no-repeat; 62 | height: 22px; 63 | width: 22px; 64 | background-size: 22px 22px; 65 | } 66 | 67 | /* Light text shadow for elements that have a light background */ 68 | pre, code, #header, #footer, section { 69 | text-shadow: 0 1px 1px rgba(255, 255, 255, 0.6); 70 | } 71 | 72 | 73 | /* Header and footer style */ 74 | 75 | #header, #footer { 76 | border-color: #E1DCD0; /* light brown */ 77 | background-color: hsla(42, 32%, 51%, 0.1); /* alpha beige */ 78 | color: #755E33; /* brown */ 79 | } 80 | 81 | #footer { 82 | width: 100%; 83 | font-size: 0.85em; 84 | padding: 10px 0; 85 | position: absolute; 86 | bottom: 0; 87 | margin: 0; 88 | border-top: 1px solid #e7e7e7; 89 | background-color: hsla(42, 32%, 51%, 0.1); 90 | } 91 | 92 | #header a:link, #header a:visited, #footer a:link, #footer a:visited { 93 | color: #755E33; 94 | } 95 | 96 | #header a:hover, #header a:active, #footer a:hover, #footer a:active { 97 | color: #524224; 98 | } 99 | 100 | /* Float harvest logo to prevent increasing header size */ 101 | #header .harvest-logo-24 { 102 | float: left; 103 | margin-top: -2px; 104 | margin-right: 5px; 105 | } 106 | 107 | /* Roughly match font-size to logo size */ 108 | #header .navbar-brand { 109 | font-size: 26px; 110 | } 111 | 112 | 113 | /* Structural element which enables keeping the footer *stuck* to 114 | the bottom of the page. */ 115 | #wrap { 116 | position: relative; 117 | min-height: 100%; 118 | height: auto !important; 119 | height: 100%; 120 | padding-bottom: 185px; 121 | } 122 | 123 | #wrap.static { 124 | padding-bottom: 0; 125 | } 126 | 127 | #wrap.static #footer { 128 | position: static; 129 | } 130 | 131 | /* Add additional margin after containers and sections */ 132 | #wrap > .container, #wrap > section { 133 | margin-bottom: 20px; 134 | } 135 | 136 | #wrap > section > .container { 137 | margin-bottom: 10px; 138 | } 139 | 140 | /* Remove excessive padding around jumbotron within a container */ 141 | .container .jumbotron { 142 | padding: 0 0 20px 0; 143 | } 144 | 145 | .jumbotron { 146 | background: none; 147 | margin-bottom: 0; 148 | } 149 | 150 | .jumbotron :last-child { 151 | margin-bottom: 0; 152 | } 153 | 154 | 155 | /* Page-related styles */ 156 | .page-header h1 { 157 | color: #277097; /* navy */ 158 | } 159 | 160 | .intro-text { 161 | font-style: italic; 162 | font-weight: 200; 163 | font-family: Georgia, "Times New Roman", Times, serif; 164 | margin-bottom: 20px; 165 | font-size: 21px; 166 | line-height: 1.4; 167 | } 168 | 169 | .date { 170 | color: #aaa; 171 | } 172 | 173 | .meta { 174 | font-size: 0.85em; 175 | color: #aaa; 176 | } 177 | 178 | /* Inherit color of normal text so it does not attract the eye */ 179 | .meta a { 180 | color: inherit; 181 | } 182 | 183 | /* Use 2x sized images for retina-based displays */ 184 | @media only screen and (-webkit-min-device-pixel-ratio: 1.5), 185 | only screen and (-moz-min-device-pixel-ratio: 1.5), 186 | only screen and (-o-min-device-pixel-ratio: 3/2), 187 | only screen and (min-device-pixel-ratio: 1.5) { 188 | 189 | } 190 | 191 | @media (max-width: 768px) { 192 | #wrap { 193 | padding-bottom: 310px; 194 | } 195 | } 196 | 197 | blockquote p{font-size:15.5px;font-weight:300;line-height:1.25;} 198 | -------------------------------------------------------------------------------- /diffExp.Rnw: -------------------------------------------------------------------------------- 1 | % -*- mode: noweb; noweb-default-code-mode: R-mode; -*- 2 | \documentclass{article} 3 | 4 | \usepackage{geometry} 5 | \geometry{verbose,tmargin=2.5cm,bmargin=2.5cm,lmargin=2.5cm,rmargin=2.5cm} 6 | 7 | %headers and footers 8 | \usepackage{fancyhdr} 9 | \setlength{\headheight}{15pt} 10 | \pagestyle{fancyplain} 11 | \lhead{\fancyplain{}{\thepage}} 12 | \chead{} 13 | \rhead{\fancyplain{}{\bfseries Ant1-KO Differential Expression}} 14 | \cfoot{} 15 | \lfoot{\includegraphics[width=0.1\textwidth]{/nas/is1/leipzig/ganguly/src/R/bicLogo.png}\\[1cm]} 16 | 17 | 18 | %hyperlink setup 19 | \usepackage{hyperref} 20 | \usepackage{xcolor} 21 | \definecolor{dark-red}{rgb}{0.4,0.15,0.15} 22 | \definecolor{dark-blue}{rgb}{0.15,0.15,0.4} 23 | \definecolor{medium-blue}{rgb}{0,0,0.5} 24 | \hypersetup{ 25 | colorlinks, linkcolor={dark-red}, 26 | citecolor={dark-blue}, urlcolor={medium-blue} 27 | } 28 | 29 | 30 | \usepackage{longtable} 31 | \usepackage{rotating} 32 | 33 | %underscores in variable names cause problems 34 | %\usepackage{underscore} 35 | 36 | \begin{document} 37 | \SweaveOpts{concordance=TRUE} 38 | \title{An analysis of Ant1-KO Differential Expression in Heart and Muscle} 39 | \author{Jeremy Leipzig} 40 | \maketitle 41 | \tableofcontents 42 | \pagebreak 43 | <>= 44 | library(Rsamtools) 45 | library(Biostrings) 46 | library(stringr) 47 | library(plyr) 48 | library(reshape) 49 | library("DESeq") 50 | library(ggplot2) 51 | library(xtable) 52 | source("/nas/is1/leipzig/ganguly/src/R/concat.R") 53 | library(org.Mm.eg.db) 54 | library("biomaRt") 55 | 56 | sessInfo<-sessionInfo() 57 | 58 | aligner<-"STAR" 59 | reference<-"Ensembl/GRCm38" 60 | 61 | load("diffExp.state.RData") 62 | 63 | fetchCounts<-function(sampleName){ 64 | counts<-read.table(concat("counts/",sampleName,".tsv"),col.names=c("txid",sampleName)) 65 | row.names(counts)<-counts$txid 66 | return(counts[,-1,drop=FALSE]) 67 | } 68 | 69 | counts <- Reduce(function(a,b){ 70 | ans <- merge(a,b,by="row.names",all=T) 71 | row.names(ans) <- ans[,"Row.names"] 72 | ans[,!names(ans) %in% "Row.names"] 73 | }, lapply(samples,fetchCounts)) 74 | 75 | counts<-counts[!(rownames(counts) %in% c("alignment_not_unique","ambiguous")),] 76 | names(counts)<-c(concat('MUS_ANT_',seq(1:4)),concat('MUS_B6ME_',seq(1:4)),concat('HRT_ANT_',seq(1:4)),concat('HRT_B6ME_',seq(1:4))) 77 | #MUSCLE_KO MUSCLE_WT HEART_KO HEART_WT 78 | conds<-c(rep('MT',4),rep('MN',4),rep('HT',4),rep('HN',4)) 79 | 80 | #ANT1 KO 81 | #B6ME WT 82 | pdata<-data.frame(condition=conds) 83 | rownames(pdata)<-c(concat('MUS_ANT_',seq(1:4)),concat('MUS_B6ME_',seq(1:4)),concat('HRT_ANT_',seq(1:4)),concat('HRT_B6ME_',seq(1:4))) 84 | 85 | #at least minCount from the paired lanes 86 | minCount<-100 87 | countsAboveThreshold<-subset(counts,rowSums(counts)>minCount) 88 | #subset(counts,rowSums(counts[-1])>minCount) 89 | 90 | countsMatrix<-as.matrix(countsAboveThreshold) 91 | rownames(countsMatrix)<-rownames(countsAboveThreshold) 92 | 93 | 94 | starstatsraw<-read.table(STARLOGS,sep="\t",header=TRUE,colClasses=c('character','integer','character','character')) 95 | row.names(starstatsraw)<-starstatsraw$Sample 96 | starstats<-starstatsraw[c(MUSCLE_KO,MUSCLE_WT,HEART_KO,HEART_WT),] 97 | starstats$Sample<-concat(str_sub(starstats$Sample,1,16),'...') 98 | starstats$cond<-conds 99 | 100 | 101 | cds <- newCountDataSet( countsMatrix, pdata$condition ) 102 | 103 | ercc.counts<-read.table(ERCC_COUNTS,col.names=c("sample","count"),stringsAsFactors=FALSE) 104 | 105 | #these better be in the same order 106 | stopifnot(samples==ercc.counts$sample) 107 | sizeFactors(cds)<-ercc.counts$count 108 | 109 | write.table(counts(cds, normalized=FALSE),file=RAW_COUNTS,sep="\t",quote=FALSE) 110 | write.table(counts(cds, normalized=TRUE),file=NORM_COUNTS,sep="\t",quote=FALSE) 111 | 112 | #not going to estimate if using ercc 113 | #cds <- estimateSizeFactors( cds ) 114 | 115 | #fits: parameteric or local 116 | #methods: pooled per-condition 117 | #sharingMode="fit-only" 118 | #gene-est-only maximum 119 | sharingMode<-'maximum' 120 | method<-'per-condition' 121 | fits<-'local' 122 | cds <- estimateDispersions( cds , fitType="local", method=method, sharingMode=sharingMode) 123 | save(cds,file=CDS_FILE,compress=TRUE) 124 | myPval<-.01 125 | @ 126 | <>= 127 | res <- nbinomTest( cds, "MN", "MT") 128 | resfile<-MUSCLE_RES 129 | @ 130 | <>= 131 | #http://www.bioconductor.org/packages/release/bioc/vignettes/biomaRt/inst/doc/biomaRt.pdf 132 | mart <- useMart(biomart = "ensembl", dataset = "mmusculus_gene_ensembl") 133 | results <- getBM(attributes = c("ensembl_gene_id","external_gene_id"), 134 | filters = "ensembl_gene_id", values = res$id, 135 | mart = mart) 136 | row.names(results)<-results$ensembl_gene_id 137 | res<-cbind(results[res$id,"external_gene_id"],res) 138 | write.csv(res,file=resfile) 139 | 140 | @ 141 | \section{Introduction} 142 | \subsection{Samples} 143 | Below are results of the STAR mapping. Conditions are M for Muscle, H for Heart, T for Treatment(ANT1), N for Normal (B6ME). 144 | 145 | <>= 146 | # Use "d" (for integers), "f", "e", "E", "g", "G", "fg" (for reals), or "s" (for strings). "f" gives numbers in the usual xxx.xxx format; "e" and "E" give n.ddde+nn or n.dddE+nn (scientific format); "g" and "G" put x[i] into scientific format only if it saves space to do so. "fg" uses fixed format as "f", but digits as number of significant digits 147 | # \tiny 148 | # \scriptsize 149 | # \footnotesize 150 | # \small 151 | # \normalsize 152 | # \large 153 | # \Large 154 | # \LARGE 155 | # \huge 156 | # \Huge 157 | myXtableStar<-xtable(starstats,type=tex,caption=paste("STAR mapping results"),display=c('s','s','d','s','s','s')) 158 | 159 | print(myXtableStar,include.rownames=FALSE, tabular.environment = "longtable", floating = FALSE, size="\\footnotesize") 160 | @ 161 | 162 | \subsection{Alignment} 163 | After trimming, transcript counts were generated by a STAR alignment to genomic sequences. 164 | 165 | 166 | The STAR used for the samples is as follows: 167 | \begin{verbatim} 168 | {STAR} --genomeDir {STARREFDIR} --outFileNamePrefix {wildcards.sample}_ --readFilesIn {input} --runThreadN 24 169 | --genomeLoad NoSharedMemory --outSAMattributes All --outSAMstrandField intronMotif --sjdbGTFfile {GTFFILE} 170 | \end{verbatim} 171 | 172 | \subsection{Normalization} 173 | ERCC spike-ins were downloaded from \url{http://tools.invitrogen.com/downloads/ERCC92.fa} and used as a reference. Total counts from all 92 sequences are below. These are used for the \emph{sizeFactors} in DESeq such that they become divisors for each sample count. 174 | 175 | <>= 176 | 177 | myXtableERCC<-xtable(ercc.counts,type=tex,caption=paste("Total ERCC read counts"),display=c('s','s','d')) 178 | print(myXtableERCC,include.rownames=FALSE, tabular.environment = "longtable", floating = FALSE, size="\\footnotesize") 179 | @ 180 | \pagebreak 181 | \subsection{DESeq} 182 | A reanalysis of the non-normalized count data was performed using the 183 | R-based RNA-Seq analysis package DESeq \cite{Anders} in order to 184 | detect differential expression between normal and retinoblastoma cells. 185 | 186 | This report uses DESeq version \Sexpr{sessInfo$otherPkgs$DESeq$Version}. 187 | 188 | DESeq offers different statistical models and parameters to choose from depending on the data to be analyzed. 189 | 190 | Empirical dispersion can be computed using a \emph{pooled}, \emph{per-condition}, or \emph{blind} (no replicates) method. 191 | 192 | The following, sharing modes, which determine how much information is used to inform the dispersion of other genes, are available: 193 | \begin{description} 194 | \item[fit-only] is appropriate for only a few replicates 195 | \item[maximum] is more conservative for three or four replicates, 196 | \item[gene-est-only] is more aggressive, and is ideal for many replicates 197 | \end{description} 198 | 199 | For this report, we have used the \Sexpr{method} method and \Sexpr{sharingMode} sharing mode. 200 | 201 | Only genes with a combined count of \Sexpr{minCount} among all the samples (both conditions and tissues) 202 | \Sexpr{nrow(countsAboveThreshold)} hits fit this criteria. 203 | 204 | \pagebreak 205 | \subsection{Muscle Results} 206 | \subsubsection{Significantly DE genes in muscle} 207 | Significantly differentially expressed genes (padj<\Sexpr{myPval}). Fold change is ANT1/B6ME. 208 | 209 | <>= 210 | 211 | resSig<-subset(res[,1:9],padj < myPval) 212 | names(resSig)<-c('gene','ensid','baseMean','bNorm','bRB','fc','log2fc','pval','padj') 213 | myXtableOne<-xtable(resSig[order(resSig$pval),1:9],type=tex,caption=paste("Significant (P<",myPval,") differential expression in ANT1 after the correction for multiple testing.",nrow(resSig),"genes."),display=c('d','s','s','E','E','E','g','g','g','g')) 214 | 215 | print(myXtableOne,include.rownames=FALSE, tabular.environment = "longtable", floating = FALSE, size="\\footnotesize") 216 | @ 217 | 218 | \pagebreak 219 | \subsubsection{Upregulated genes in muscle} 220 | <>= 221 | #upRegs<-resSig[ order(-resSig$fc)[1:50], ] 222 | upRegs<-head(subset(resSig[order(-resSig$fc),],fc>1),n=50) 223 | 224 | if(nrow(upRegs)>0){ 225 | myXtableTwo<-xtable(upRegs,type=tex,caption=paste("Strongly significantly upregulated genes in ANT1 (top 50)",sep=""),display=c('d','s','s','E','E','E','g','g','g','g')) 226 | print(myXtableTwo,include.rownames=FALSE, tabular.environment = "longtable", floating = FALSE, size="\\footnotesize") 227 | }else{ 228 | print("No significantly upregulated genes") 229 | } 230 | @ 231 | 232 | \pagebreak 233 | \subsubsection{Downregulated genes} 234 | <>= 235 | downRegs<-head(subset(resSig[order(resSig$fc),],fc<=1),n=50) 236 | 237 | if(nrow(downRegs)>0){ 238 | myXtableThree<-xtable(downRegs,type=tex,caption=paste("Strongly significantly downregulated genes in ANT1 (top 50)",sep=""),digits=3,display=c('d','s','s','E','E','E','g','g','g','g')) 239 | print(myXtableThree,include.rownames=FALSE, tabular.environment = "longtable", floating = FALSE, size="\\footnotesize") 240 | }else{ 241 | print("No significantly downregulated genes") 242 | } 243 | @ 244 | 245 | \pagebreak 246 | \subsubsection{Fold Change and Significance Muscle} 247 | Genes with high fold change may not be significantly differentially expressed simply due to high variance. 248 | 249 | <>= 250 | q<-qplot(log2(res$baseMean),res$log2FoldChange)+aes(color=res$padj<.01) 251 | print(q) 252 | @ 253 | 254 | 255 | \pagebreak 256 | \subsection{Heart Results} 257 | \subsubsection{Significantly DE genes in heart} 258 | <>= 259 | res <- nbinomTest( cds, "HN", "HT") 260 | resfile<-HEART_RES 261 | <> 262 | <> 263 | @ 264 | \pagebreak 265 | \subsubsection{Upregulated genes in heart} 266 | <>= 267 | <> 268 | @ 269 | 270 | \pagebreak 271 | \subsubsection{Downregulated genes in heart} 272 | <>= 273 | <> 274 | @ 275 | 276 | \pagebreak 277 | \subsubsection{Fold Change and Significance Heart} 278 | Genes with high fold change may not be significantly differentially expressed simply due to high variance. 279 | 280 | <>= 281 | q<-qplot(log2(res$baseMean),res$log2FoldChange)+aes(color=res$padj<.01) 282 | print(q) 283 | @ 284 | 285 | \pagebreak 286 | \subsection{Eucludian distances} 287 | <>= 288 | dists<-dist(t(counts(cds))) 289 | heatmap( as.matrix( dists )) 290 | @ 291 | 292 | 293 | 294 | \pagebreak 295 | The R session information (including the OS info, R version and all 296 | packages used): 297 | 298 | <>= 299 | sessionInfo() 300 | Sys.time() 301 | @ 302 | 303 | <>= 304 | commit<-system("git rev-parse --verify HEAD",intern=TRUE) 305 | @ 306 | \rfoot{$ \Sexpr{commit} $} 307 | 308 | \begin{thebibliography}{100} % start the bibliography 309 | 310 | \small % put the bibliography in a small font 311 | 312 | 313 | \bibitem{Anders} Anders, S. and Huber, W. Differential expression analysis for sequence count data. Nature Precedings 314 | http://dx.doi.org/10.1038/npre.2010.4282.2. 315 | 316 | \end{thebibliography} % end the bibliography 317 | 318 | 319 | \end{document} 320 | 321 | -------------------------------------------------------------------------------- /Snakefile: -------------------------------------------------------------------------------- 1 | import glob 2 | from snakemake.utils import R 3 | import re 4 | import socket 5 | from time import gmtime, strftime 6 | 7 | WEBSERVER = "user@server:/dir" 8 | REFDIR = "refs/Mus_musculus/Ensembl/GRCm38/" 9 | TMPDIR = "../../../../../tmp/" 10 | FASTAREF = REFDIR+"Sequence/WholeGenomeFasta/genome.fa" 11 | STARREFDIR = REFDIR+"star/" 12 | CHRNAME = STARREFDIR+"chrName.txt" 13 | GTFFILE = REFDIR+"Annotation/Genes/genes.gtf" 14 | PRIM_GTF = REFDIR+"Annotation/Genes/primary_genes.gtf" 15 | MASKFILE = REFDIR+"Annotation/mask.gtf" 16 | RRNA = REFDIR+"Annotation/GRCm38_rRNA.list" 17 | 18 | ##### TOOLS ##### 19 | CUTADAPT = "../../../bin/cutadapt" 20 | BEDTOOLS = "../../../bin/BEDTools/2.16.2" 21 | NOVO = "../../../bin/Novoalign/3.00.02/novocraft" 22 | ALIGN = NOVO+"/novoalign" 23 | INDEX = NOVO+"/novoindex" 24 | SORT = NOVO+"/novosort" 25 | TOOLDIR= "tools" 26 | RNASEQC = TOOLDIR+"/RNA-SeQC_v1.1.7.jar" 27 | STAR = TOOLDIR+"/STAR_2.3.0e.Linux_x86_64/STAR" 28 | SAMTOOLS = TOOLDIR+"/samtools/samtools" 29 | CUFF = TOOLDIR+"/cufflinks-2.1.1.Linux_x86_64/cufflinks" 30 | CUFFMERGE = TOOLDIR+"/cufflinks-2.1.1.Linux_x86_64/cuffmerge" 31 | CUFFDIFF = TOOLDIR+"/cufflinks-2.1.1.Linux_x86_64/cuffdiff" 32 | EXPR = TOOLDIR+"/express-1.5.1-linux_x86_64/express" 33 | 34 | MUSCLE_KO = "Sample1 Sample2 Sample3 Sample4" 35 | 36 | MUSCLE_WT = "Sample5 Sample6 Sample7 Sample8" 37 | 38 | HEART_KO = "Sample9 Sample10 Sample11 Sample12" 39 | 40 | HEART_WT = "Sample13 Sample14 Sample15 Sample16" 41 | 42 | GROUP_NAMES = 'MUSCLE_KO MUSCLE_WT HEART_KO HEART_WT'.split() 43 | SAMPLES = ' '.join([MUSCLE_KO,MUSCLE_WT,HEART_KO,HEART_WT]).split() 44 | PRETTY_NAMES = ['{0}_{1}'.format(sample,i) for sample in GROUP_NAMES for i in range(1, 5)] 45 | 46 | DIRS = ['mapped/','counts/','cufflinks/'] 47 | MAPPED = ['mapped/'+f+'.bam' for f in SAMPLES] 48 | GATKED = ['mapped/'+f+'.sorted.gatk.bam.bai' for f in SAMPLES] 49 | COUNTS = ['counts/'+f+'.tsv' for f in SAMPLES] 50 | CUFFED = ['cufflinks/'+f+'/transcripts.gtf' for f in SAMPLES] 51 | EXPRED = ['express/reports/'+f+'/results.xprs' for f in SAMPLES] 52 | STARLOGS = 'starlogs.parsed.txt' 53 | SAMPLEFILE = "samplefile.rnaseqc.txt" 54 | RNASEQC_DIR = "RNASEQC_DIR/" 55 | RNASEQC_INDEX = RNASEQC_DIR+"index.html" 56 | BIGWIGS = ['tracks/'+f+'.bw' for f in SAMPLES] 57 | QCED = ['fastqc/'+f+'.trimmed_fastqc.zip' for f in SAMPLES] 58 | ERCC = ['ercc/'+f+'.idxstats' for f in SAMPLES] 59 | GO_DOMAINS = ['biological_process','cellular_component','molecular_function'] 60 | GAGE_GO_FILES = ['GAGE/GO.'+tissue+'.ant1.'+domain+'.'+direction+'.csv' for tissue in ['heart','muscle'] for domain in GO_DOMAINS for direction in ['up','down']] 61 | GAGE_KEGG_FILES = ['GAGE/KEGG.'+tissue+'.ant1.signaling_or_metabolism_pathways.both.csv' for tissue in ['heart','muscle']] 62 | GAGE_FILES = GAGE_GO_FILES + GAGE_KEGG_FILES 63 | 64 | rule all: 65 | input: DIRS, CHRNAME, MAPPED, CUFFED, COUNTS, GATKED, RNASEQC_INDEX, STARLOGS, QCED, BIGWIGS, GAGE_FILES 66 | 67 | rule gagefiles: 68 | input: GAGE_FILES 69 | 70 | rule dirs: 71 | output: DIRS 72 | shell: "mkdir -p "+' '.join(DIRS) 73 | 74 | ##### CLEAN ##### 75 | rule clean: 76 | shell: "rm [0-9]*.snakemake-job*" 77 | 78 | ##### TRIMMING ##### 79 | #cutadapt will auto-gz if .gz is in the output name 80 | rule trim: 81 | input: "{sample}.fastq" 82 | output: "{sample}.trimmed.fastq.gz" 83 | threads: 1 84 | shell: "{CUTADAPT} -m 16 -b GGCCAAGGCG -o {output} {input}" 85 | 86 | ##### ALIGNMENT ##### 87 | rule starindex: 88 | input: ref=FASTAREF, starref=STARREFDIR, 89 | output: CHRNAME 90 | shell: "{STAR} --limitGenomeGenerateRAM 54760833024 --runMode genomeGenerate --genomeDir {input.starref} --genomeFastaFiles {input.ref}" 91 | 92 | rule map: 93 | input: sample="raw/{sample}.trimmed.fastq.gz", starref=STARREFDIR, gtf=GTFFILE 94 | output: "mapped/{sample}.sam" 95 | threads: 24 96 | shell: 97 | """ 98 | {STAR} --genomeDir {input.starref} --outFileNamePrefix {wildcards.sample}_ --readFilesIn {input.sample} --runThreadN 24 --genomeLoad NoSharedMemory --outSAMattributes All --outSAMstrandField intronMotif --sjdbGTFfile {input.gtf} 99 | mv {wildcards.sample}_Aligned.out.sam {output} 100 | mv {wildcards.sample}_Log.final.out {wildcards.sample}_Log.out {wildcards.sample}_Log.progress.out {wildcards.sample}_SJ.out.tab starlogs 101 | """ 102 | 103 | #this is for the table in the diffExp report 104 | rule parselogs: 105 | input: expand('starlogs/{sample}_Log.final.out', sample=SAMPLES) 106 | output: "starlogs.parsed.txt" 107 | run: 108 | filename_p = re.compile('starlogs\/(\S+)_Log.final.out') 109 | input_reads_p = re.compile('Number of input reads\s+\|\s+(.*)') 110 | unique_reads_p = re.compile('Uniquely mapped reads %\s+\|\s+(.*)') 111 | multiple_hits_p = re.compile('% of reads mapped to multiple loci\s+\|\s+(.*)') 112 | input_reads='' 113 | unique_reads='' 114 | multiple_hits='' 115 | with open(output[0], 'w') as outfile: 116 | outfile.write('sample\tNumber of input reads\tUniquely mapped reads %\t% of reads mapped to multiple loci\n') 117 | for samplefilename in input: 118 | sample=filename_p.search(samplefilename).group(1) 119 | with open(samplefilename, 'r') as file: 120 | 121 | for line in file: 122 | if input_reads_p.search(line): 123 | input_reads=input_reads_p.search(line).group(1) 124 | elif unique_reads_p.search(line): 125 | unique_reads=unique_reads_p.search(line).group(1) 126 | elif multiple_hits_p.search(line): 127 | multiple_hits=multiple_hits_p.search(line).group(1) 128 | outfile.write('{0}\t{1}\t{2}\t{3}\n'.format(sample,input_reads,unique_reads,multiple_hits)) 129 | 130 | 131 | 132 | #novosort can index 133 | rule sortbam: 134 | input: "{sample}.bam" 135 | output: bam="{sample}.sorted.bam", bai="{sample}.sorted.bam.bai" 136 | threads: 24 137 | shell: "{SORT} -t {TMPDIR} -s -i -o {output.bam} {input}" 138 | 139 | #if you ask for a sorted.bam don't look for a sorted.sam 140 | #ruleorder: sortbam > samtobam 141 | rule samtobam: 142 | input: "{sample}.sam" 143 | output: "{sample}.bam" 144 | threads: 1 145 | shell: "{SAMTOOLS} view -bS {input} > {output}" 146 | 147 | #### ERCC ##### 148 | rule ERCCnix: 149 | output: "refs/ERCC92.nix" 150 | input: "refs/ERCC92.fa" 151 | shell: "{INDEX} {output} {input}" 152 | 153 | rule ERCCbam: 154 | input: fastq="raw/{sample}.trimmed.fastq.gz", ref="refs/ERCC92.nix" 155 | output: temp("ercc/{sample}.bam") 156 | shell: "{ALIGN} -d {input.ref} -f {input.fastq} -o SAM | {SAMTOOLS} view -bS - > {output}" 157 | 158 | rule idxstats: 159 | input: "ercc/{sample}.sorted.bam" 160 | output: "ercc/{sample}.idxstats" 161 | shell: "{SAMTOOLS} idxstats {input} > {output}" 162 | 163 | rule idxsummary: 164 | output: "ercc.counts" 165 | input: expand('ercc/{sample}.idxstats', sample=SAMPLES) 166 | shell: 167 | """ 168 | grep '^\*' {input} | cut -f1,4 | sed -e 's/\.idxstats:\*//' | sed -e 's/ercc\///'> ercc.counts 169 | """ 170 | 171 | #### QC ##### 172 | rule fastqc: 173 | input: "raw/{sample}.trimmed.fastq.gz" 174 | output: "fastqc/{sample}.trimmed_fastqc.zip" 175 | shell: "{TOOLDIR}/FastQC/fastqc -o fastqc {input}" 176 | 177 | rule AddOrReplaceReadGroups: 178 | input: "{sample}.sorted.bam" 179 | output: "{sample}.sorted.gatk.bam" 180 | shell: "java -jar {TOOLDIR}/picard-tools-1.106/AddOrReplaceReadGroups.jar INPUT= {input} OUTPUT= {output} RGID= {wildcards.sample} LB= {wildcards.sample} RGPL= ionproton RGPU= martin RGSM= {wildcards.sample}" 181 | 182 | rule index: 183 | input: "{sample}.sorted.gatk.bam" 184 | output: "{sample}.sorted.gatk.bam.bai" 185 | shell: "java -jar {TOOLDIR}/picard-tools-1.106/BuildBamIndex.jar INPUT= {input} OUTPUT= {output}" 186 | 187 | rule dict: 188 | input: "{ref}.fa" 189 | output: "{ref}.dict" 190 | shell: "java -jar picard-tools-1.106/CreateSequenceDictionary.jar REFERENCE= {input} OUTPUT= {output}" 191 | 192 | #samplefile.rnaseqc.txt was made by hand so sue me 193 | rule rnaseqc: 194 | input: sample=SAMPLEFILE, gatked=GATKED, rnaseqc=RNASEQC, rnaseqc_dir=RNASEQC_DIR, ref=FASTAREF, gtf=PRIM_GTF, rna=RRNA 195 | output: RNASEQC_INDEX 196 | shell: "java -jar {input.rnaseqc} -o {input.rnaseqc_dir} -r {input.ref} -s {input.sample} -t {input.gtf} -rRNA {input.rna}" 197 | 198 | ##### TX Quantification: Cufflinks ##### 199 | rule mask: 200 | input: gtf=GTFFILE 201 | output: MASKFILE 202 | shell: "grep -P 'rRNA|tRNA|MT\t' {input.gtf} > {MASKFILE}" 203 | 204 | rule cufflinks: 205 | input: bam="mapped/{sample}.sorted.bam", gtf=GTFFILE, mask=MASKFILE 206 | output: gtf="cufflinks/{sample}/transcripts.gtf",iso="cufflinks/{sample}/isoforms.fpkm_tracking",genes="cufflinks/{sample}/genes.fpkm_tracking" 207 | threads: 8 208 | shell: """ 209 | mkdir -p cufflinks/{wildcards.sample} 210 | {CUFF} -p 8 -g {input.gtf} -M {input.mask} --max-bundle-length 8000000 --multi-read-correct --library-type=fr-secondstrand --output-dir cufflinks/{wildcards.sample} {input.bam} 211 | """ 212 | 213 | rule cuffreport: 214 | input: CUFFED 215 | output: "assembly_list.txt" 216 | run: 217 | with open(output[0], 'w') as outfile: 218 | for f in CUFFED: 219 | outfile.write('{}\n'.format(f)) 220 | 221 | rule cuffmerge: 222 | input: "assembly_list.txt", gtf=GTFFILE, ref=FASTAREF 223 | output: "cufflinks/merged.gtf" 224 | shell: 225 | """ 226 | /usr/local/bin/python2.7/python {CUFFMERGE} -o cufflinks -g {input.gtf} -s {input.ref} -p 16 {input} 227 | """ 228 | MUSCLE_KO_BAMS = ','.join(['mapped/{0}.sorted.bam'.format(f) for f in MUSCLE_KO.split()]) 229 | MUSCLE_WT_BAMS = ','.join(['mapped/{0}.sorted.bam'.format(f) for f in MUSCLE_WT.split()]) 230 | HEART_KO_BAMS = ','.join(['mapped/{0}.sorted.bam'.format(f) for f in HEART_KO.split()]) 231 | HEART_WT_BAMS = ','.join(['mapped/{0}.sorted.bam'.format(f) for f in HEART_WT.split()]) 232 | 233 | rule cuffdiff: 234 | input: gtf="cufflinks/merged.gtf", mask=MASKFILE, samples=expand("mapped/{sample}.sorted.bam", sample=SAMPLES) 235 | output: 'cufflinks/cuffdiff/isoforms.fpkm_tracking' 236 | shell: 237 | """ 238 | {CUFFDIFF} -p 16 -o cufflinks/cuffdiff -M {input.mask} {input.gtf} {MUSCLE_KO_BAMS} {MUSCLE_WT_BAMS} {HEART_KO_BAMS} {HEART_WT_BAMS} 239 | """ 240 | 241 | ##### TX Quantification: Express ##### 242 | CDNA=REFDIR+"Sequence/Transcripts/Mus_musculus.GRCm38.74.cdna.all" 243 | rule txIndex: 244 | input: CDNA+'.fa' 245 | output: CDNA+'.nix' 246 | shell: "{INDEX} {output} {input}" 247 | 248 | rule expressbam: 249 | input: fq="raw/{sample}.trimmed.fastq.gz", ref=CDNA+'.nix' 250 | output: "express/bams/{sample}.sam" 251 | log: "logs/express/{sample}.log" 252 | shell: "{ALIGN} -d {input.ref} -rALL -f {input.fq} -o SAM 2> {log} > {output}" 253 | 254 | # | {SAMTOOLS} view -bS - > {output} 255 | 256 | rule expressreps: 257 | input: "express/bams/{sample}.sorted.bam" 258 | output: "express/reports/{sample}/results.xprs" 259 | log: "logs/express/{sample}.log" 260 | shell: 261 | """ 262 | mkdir -p {output} 263 | {EXPR} {CDNA}.fa {input} --max-read-len 500 -o {output} 2> {log} 264 | """ 265 | 266 | ##### Annotation ##### 267 | rule htseq: 268 | input: sample="mapped/{sample}.sorted.bam", gtf=GTFFILE 269 | output: id="counts/{sample}.tsv" 270 | threads: 1 271 | shell: 272 | """ 273 | {SAMTOOLS} view -h {input.sample} | htseq-count --mode intersection-strict --stranded no --minaqual 1 --type exon --idattr gene_id - {input.gtf} > {output.id} 274 | """ 275 | 276 | ##### Report ##### 277 | rule report: 278 | input: COUNTS, star=STARLOGS, ercc="ercc.counts", source="diffExp.Rnw" 279 | output: state="diffExp.state.RData", tex="diffExp.tex", cds="cds.df.RData", mr="muscleResults.csv", hr="heartResults.csv", raw="raw_counts.tab.txt", norm="normalized_counts.tab.txt" 280 | run: 281 | R(""" 282 | STARLOGS<-"{input.star}" 283 | ERCC_COUNTS<-"{input.ercc}" 284 | RAW_COUNTS<-"{output.raw}" 285 | NORM_COUNTS<-"{output.norm}" 286 | CDS_FILE<-"{output.cds}" 287 | HEART_RES<-"{output.hr}" 288 | MUSCLE_RES<-"{output.mr}" 289 | 290 | MUSCLE_KO<-unlist(strsplit("{MUSCLE_KO}", " ")); 291 | MUSCLE_WT<-unlist(strsplit("{MUSCLE_WT}", " ")); 292 | HEART_KO<-unlist(strsplit("{HEART_KO}", " ")); 293 | HEART_WT<-unlist(strsplit("{HEART_WT}", " ")); 294 | 295 | samples<-c(MUSCLE_KO,MUSCLE_WT,HEART_KO,HEART_WT) 296 | save(STARLOGS,ERCC_COUNTS,RAW_COUNTS,NORM_COUNTS,CDS_FILE,HEART_RES,MUSCLE_RES,MUSCLE_KO,MUSCLE_WT,HEART_KO,HEART_WT,samples,file="diffExp.state.RData") 297 | Sweave("{input.source}",output="{output.tex}") 298 | """) 299 | 300 | rule gage: 301 | input: cds="cds.df.RData", gage="common/rna-seq/gage.R" 302 | output: GAGE_FILES 303 | run: 304 | R(""" 305 | source("{input.gage}") 306 | """) 307 | 308 | rule submodule_update: 309 | run: 310 | """git submodule foreach git pull origin master""" 311 | 312 | rule topgo_data: 313 | input: results="{tissue}Results.csv", source="common/rna-seq/topGO.R" 314 | output: "{tissue}GO.RData" 315 | run: 316 | R(""" 317 | source("{input.source}") 318 | res<-read.csv("{input.results}") 319 | de<-hot<-cold<-list() 320 | for(ont in c('BP','CC','MF')){{ 321 | de[[ont]]<-getGO(res,ontology=ont,desc=paste("{wildcards.tissue}",ont,"most sig de"),q.column="pval",scoreOrder="increasing") 322 | hot[[ont]]<-getGO(res,ontology=ont,desc=paste("{wildcards.tissue}",ont,"most upreg in ANT1 wort pval"),q.column="foldChange",scoreOrder="decreasing") 323 | cold[[ont]]<-getGO(res,ontology=ont,desc=paste("{wildcards.tissue}",ont,"most downreg in ANT1 wort pval"),q.column="foldChange",scoreOrder="increasing") 324 | }} 325 | GOs<-list(de=de,hot=hot,cold=cold) 326 | save(GOs,file="{output}") 327 | """) 328 | 329 | rule topgo_report: 330 | input: source="topGO.Rnw", mg="muscleGO.RData", hg="heartGO.RData" 331 | output: tex="topGO.tex" 332 | run: 333 | R(""" 334 | Sweave("{input.source}",output="{output.tex}") 335 | """) 336 | 337 | #we do it twice for the TOC 338 | rule pdflatex: 339 | input: "{report}.tex" 340 | output: "{report}.pdf" 341 | shell: "pdflatex {input}; pdflatex {input}" 342 | 343 | #### Tracks ##### 344 | rule bamtobdg: 345 | input: sample="mapped/{sample}.sorted.bam", ref=FASTAREF 346 | output: "mapped/{sample}.bdg" 347 | shell: "{BEDTOOLS}/bedtools genomecov -ibam {input.sample} -g {input.ref} -bg > {output}" 348 | 349 | rule chrify: 350 | input: "{sample}.bdg" 351 | output: "{sample}.bdg.chr" 352 | shell: 353 | """ 354 | sed -e 's/^/chr/' {input} > {output} 355 | """ 356 | 357 | rule bigwig: 358 | input: "mapped/{sample}.bdg.chr" 359 | output: "tracks/{sample}.bw" 360 | shell: 361 | """ 362 | {TOOLDIR}/bedGraphToBigWig {input} mm10.len {output} 363 | """ 364 | 365 | #### Site ##### 366 | COLORS = """ 367 | 141,211,199 368 | 255,255,179 369 | 190,186,218 370 | 251,128,114 371 | 128,177,211 372 | 253,180,98 373 | 179,222,105 374 | 252,205,229 375 | 217,217,217 376 | 188,128,189 377 | 204,235,197 378 | 255,237,111 379 | 190,174,212 380 | 253,192,134 381 | 56,108,176 382 | 191,91,23 383 | """.split() 384 | 385 | rule siteindex: 386 | input: "Snakefile",BIGWIGS, "diffExp.pdf", "topGO.pdf", QCED, RNASEQC_INDEX 387 | output: "site/index.md" 388 | run: 389 | with open(output[0], 'w') as outfile: 390 | outfile.write("""--- 391 | layout: wide 392 | --- 393 | ### Quality Control 394 | #### FastQC Output 395 | [FastQC] is quality control tool that can point to certain biases that represent contamination. Be aware, the report may reflect inherent biases in the RNA-Seq experiment. 396 | """) 397 | for s,p in zip(SAMPLES,PRETTY_NAMES): 398 | outfile.write("> [`{0}`]({{{{ site.baseurl }}}}/fastqc/{1}.trimmed_fastqc/fastqc_report.html)\n\n".format(p,s)) 399 | outfile.write(""" 400 | 401 | #### RNA-SeQC Output 402 | [RNA-SeQC](http://bioinformatics.oxfordjournals.org/content/28/11/1530.long) produces extensive metrics for RNA-Seq runs. Not all of the sections will apply to the Ion Proton protocol. 403 | Most interesting might be the rRNA rate in the multisample [summary document](RNASEQC_DIR/countMetrics.html). 404 | > [RNA-SeQC home](RNASEQC_INDEX) 405 | 406 | > [RNA-SeQC reports](RNASEQC_DIR+'countMetrics.html') 407 | 408 | > [RNA-SeQC reports](RNASEQC_DIR+'report.html') 409 | 410 | ### HT-Seq Counts 411 | > [Raw HT-Seq Counts](raw_counts.tab.txt) 412 | 413 | > [ERCC Spike-in Normalized Counts](normalized_counts.tab.txt) 414 | 415 | ### Differential expression analysis report and significantly DE gene tables 416 | > [diffExp.pdf](diffExp.pdf) 417 | 418 | > [muscleResults.csv](muscleResults.csv) 419 | 420 | > [heartResults.csv](heartResults.csv) 421 | 422 | ### GAGE 423 | GAGE was used to generate GO and KEGG pathway analysis using a ranked list analysis (read counts are taken into consideration) 424 | 425 | #### Gene Ontology with GAGE 426 | GO is divided into domains of cellular component, molecular function, and biological process. 427 | 428 | The "up" and "down" tables test the model that ANT1 is overexpressing/underexpressing all genes in a geneset associated with a GO term relative to B6ME. The same GO terms are in both files. 429 | 430 | This describes the tables included in this GAGE output. 431 | 432 | Column | Description 433 | ----------|------------ 434 | p.geomean | geometric mean of the individual p-values from multiple single array based gene set tests 435 | stat.mean | mean of the individual statistics from multiple single array based gene set tests. Normally, its absoluate value measures the magnitude of gene-set level changes, and its sign indicates direction of the changes. 436 | p.val | global p-value or summary of the individual p-values from multiple single array based gene set tests. This is the default p-value being used. 437 | q.val | FDR q-value adjustment of the global p-value using the Benjamini & Hochberg procedure implemented in multtest package. This is the default q-value being used. 438 | set.size | the effective gene set size, i.e. the number of genes included in the gene set test 439 | """) 440 | for f in GAGE_GO_FILES: 441 | outfile.write(">[{0}]({0})\n\n".format(f)) 442 | outfile.write(""" 443 | ###@ KEGG Pathway Enrichment with GAGE 444 | The GAGE KEGG analysis does not assume expression is in one direction. 445 | """) 446 | for f in GAGE_KEGG_FILES: 447 | outfile.write(">[{0}]({0})\n\n".format(f)) 448 | outfile.write(""" 449 | ### TopGO Analysis 450 | TopGO provides additional tools for exploring GO enrichment. 451 | > [topGO.pdf](topGO.pdf) 452 | 453 | ### Using BigWig Tracks in UCSC Genome Browser 454 | Go to [http://genome.ucsc.edu/cgi-bin/hgCustom](http://genome.ucsc.edu/cgi-bin/hgCustom), make sure mm10 is selected, and copy-paste one or more of these into the URL field. 455 | """) 456 | for c, b, p in zip(COLORS, BIGWIGS, PRETTY_NAMES): 457 | outfile.write("> ```track type=bigWig name={0} db=mm10 smoothingWindow=4 color={1} autoScale=on viewLimits=1:200 visibility=full windowingFunction=maximum bigDataUrl={{{{ site.baseurl }}}}/{2}```\n\n".format(p,c,b)) 458 | outfile.write(""" 459 | ### Code repository 460 | (Most of) the code used to generate this analysis is located here [http://github.com/leipzig/snakemake-example](http://github.com/leipzig/snakemake-example). Feel free to reuse. 461 | 462 | ### Git hash 463 | This should match the hash index on the last page of your report. 464 | """) 465 | outfile.write('```{0}```\n\n'.format(get_head_hash())) 466 | outfile.write('Last modified ```{0}```'.format(strftime("%Y-%m-%d %H:%M:%S"))) 467 | 468 | 469 | rule publishsite: 470 | input: "site/index.md" 471 | shell: 472 | """ 473 | jekyll build --config site/_config.yml --source site --destination site/_site 474 | rsync -v --update --rsh=ssh -r site/_site/* {MITOMAP} 475 | """ 476 | 477 | rule publishdata: 478 | input: BIGWIGS, QCED, GAGE_GO_FILES, GAGE_KEGG_FILES, "diffExp.pdf", "topGO.pdf" 479 | shell: 480 | """ 481 | rsync -v --update --rsh=ssh -r diffExp.pdf topGO.pdf muscleResults.csv heartResults.csv fastqc tracks raw_counts.tab.txt normalized_counts.tab.txt RNASEQC_DIR GAGE {MITOMAP} 482 | """ 483 | 484 | def get_head_hash(): 485 | return os.popen('git rev-parse --verify HEAD 2>&1').read().strip() 486 | 487 | -------------------------------------------------------------------------------- /site/css/fa.css: -------------------------------------------------------------------------------- 1 | @font-face{font-family:'FontAwesome';src:url('../font/fontawesome-webfont.eot?v=3.2.1');src:url('../font/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'),url('../font/fontawesome-webfont.woff?v=3.2.1') format('woff'),url('../font/fontawesome-webfont.ttf?v=3.2.1') format('truetype'),url('../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg');font-weight:normal;font-style:normal;}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;} 2 | [class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none;} 3 | .icon-large:before{vertical-align:-10%;font-size:1.3333333333333333em;} 4 | a [class^="icon-"],a [class*=" icon-"]{display:inline;} 5 | [class^="icon-"].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.1428571428571428em;text-align:right;padding-right:0.2857142857142857em;}[class^="icon-"].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.4285714285714286em;} 6 | .icons-ul{margin-left:2.142857142857143em;list-style-type:none;}.icons-ul>li{position:relative;} 7 | .icons-ul .icon-li{position:absolute;left:-2.142857142857143em;width:2.142857142857143em;text-align:center;line-height:inherit;} 8 | [class^="icon-"].hide,[class*=" icon-"].hide{display:none;} 9 | .icon-muted{color:#eeeeee;} 10 | .icon-light{color:#ffffff;} 11 | .icon-dark{color:#333333;} 12 | .icon-border{border:solid 1px #eeeeee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} 13 | .icon-2x{font-size:2em;}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} 14 | .icon-3x{font-size:3em;}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} 15 | .icon-4x{font-size:4em;}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} 16 | .icon-5x{font-size:5em;}.icon-5x.icon-border{border-width:5px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px;} 17 | .pull-right{float:right;} 18 | .pull-left{float:left;} 19 | [class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em;} 20 | [class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em;} 21 | [class^="icon-"],[class*=" icon-"]{display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0% 0%;background-repeat:repeat;margin-top:0;} 22 | .icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:none;} 23 | .btn [class^="icon-"].icon-large,.nav [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large,.nav [class*=" icon-"].icon-large{line-height:.9em;} 24 | .btn [class^="icon-"].icon-spin,.nav [class^="icon-"].icon-spin,.btn [class*=" icon-"].icon-spin,.nav [class*=" icon-"].icon-spin{display:inline-block;} 25 | .nav-tabs [class^="icon-"],.nav-pills [class^="icon-"],.nav-tabs [class*=" icon-"],.nav-pills [class*=" icon-"],.nav-tabs [class^="icon-"].icon-large,.nav-pills [class^="icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large{line-height:.9em;} 26 | .btn [class^="icon-"].pull-left.icon-2x,.btn [class*=" icon-"].pull-left.icon-2x,.btn [class^="icon-"].pull-right.icon-2x,.btn [class*=" icon-"].pull-right.icon-2x{margin-top:.18em;} 27 | .btn [class^="icon-"].icon-spin.icon-large,.btn [class*=" icon-"].icon-spin.icon-large{line-height:.8em;} 28 | .btn.btn-small [class^="icon-"].pull-left.icon-2x,.btn.btn-small [class*=" icon-"].pull-left.icon-2x,.btn.btn-small [class^="icon-"].pull-right.icon-2x,.btn.btn-small [class*=" icon-"].pull-right.icon-2x{margin-top:.25em;} 29 | .btn.btn-large [class^="icon-"],.btn.btn-large [class*=" icon-"]{margin-top:0;}.btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x,.btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-top:.05em;} 30 | .btn.btn-large [class^="icon-"].pull-left.icon-2x,.btn.btn-large [class*=" icon-"].pull-left.icon-2x{margin-right:.2em;} 31 | .btn.btn-large [class^="icon-"].pull-right.icon-2x,.btn.btn-large [class*=" icon-"].pull-right.icon-2x{margin-left:.2em;} 32 | .nav-list [class^="icon-"],.nav-list [class*=" icon-"]{line-height:inherit;} 33 | .icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:-35%;}.icon-stack [class^="icon-"],.icon-stack [class*=" icon-"]{display:block;text-align:center;position:absolute;width:100%;height:100%;font-size:1em;line-height:inherit;*line-height:2em;} 34 | .icon-stack .icon-stack-base{font-size:2em;*line-height:1em;} 35 | .icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;} 36 | a .icon-stack,a .icon-spin{display:inline-block;text-decoration:none;} 37 | @-moz-keyframes spin{0%{-moz-transform:rotate(0deg);} 100%{-moz-transform:rotate(359deg);}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);} 100%{-webkit-transform:rotate(359deg);}}@-o-keyframes spin{0%{-o-transform:rotate(0deg);} 100%{-o-transform:rotate(359deg);}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg);} 100%{-ms-transform:rotate(359deg);}}@keyframes spin{0%{transform:rotate(0deg);} 100%{transform:rotate(359deg);}}.icon-rotate-90:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);} 38 | .icon-rotate-180:before{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);} 39 | .icon-rotate-270:before{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);} 40 | .icon-flip-horizontal:before{-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1);} 41 | .icon-flip-vertical:before{-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1);} 42 | a .icon-rotate-90:before,a .icon-rotate-180:before,a .icon-rotate-270:before,a .icon-flip-horizontal:before,a .icon-flip-vertical:before{display:inline-block;} 43 | .icon-glass:before{content:"\f000";} 44 | .icon-music:before{content:"\f001";} 45 | .icon-search:before{content:"\f002";} 46 | .icon-envelope-alt:before{content:"\f003";} 47 | .icon-heart:before{content:"\f004";} 48 | .icon-star:before{content:"\f005";} 49 | .icon-star-empty:before{content:"\f006";} 50 | .icon-user:before{content:"\f007";} 51 | .icon-film:before{content:"\f008";} 52 | .icon-th-large:before{content:"\f009";} 53 | .icon-th:before{content:"\f00a";} 54 | .icon-th-list:before{content:"\f00b";} 55 | .icon-ok:before{content:"\f00c";} 56 | .icon-remove:before{content:"\f00d";} 57 | .icon-zoom-in:before{content:"\f00e";} 58 | .icon-zoom-out:before{content:"\f010";} 59 | .icon-power-off:before,.icon-off:before{content:"\f011";} 60 | .icon-signal:before{content:"\f012";} 61 | .icon-gear:before,.icon-cog:before{content:"\f013";} 62 | .icon-trash:before{content:"\f014";} 63 | .icon-home:before{content:"\f015";} 64 | .icon-file-alt:before{content:"\f016";} 65 | .icon-time:before{content:"\f017";} 66 | .icon-road:before{content:"\f018";} 67 | .icon-download-alt:before{content:"\f019";} 68 | .icon-download:before{content:"\f01a";} 69 | .icon-upload:before{content:"\f01b";} 70 | .icon-inbox:before{content:"\f01c";} 71 | .icon-play-circle:before{content:"\f01d";} 72 | .icon-rotate-right:before,.icon-repeat:before{content:"\f01e";} 73 | .icon-refresh:before{content:"\f021";} 74 | .icon-list-alt:before{content:"\f022";} 75 | .icon-lock:before{content:"\f023";} 76 | .icon-flag:before{content:"\f024";} 77 | .icon-headphones:before{content:"\f025";} 78 | .icon-volume-off:before{content:"\f026";} 79 | .icon-volume-down:before{content:"\f027";} 80 | .icon-volume-up:before{content:"\f028";} 81 | .icon-qrcode:before{content:"\f029";} 82 | .icon-barcode:before{content:"\f02a";} 83 | .icon-tag:before{content:"\f02b";} 84 | .icon-tags:before{content:"\f02c";} 85 | .icon-book:before{content:"\f02d";} 86 | .icon-bookmark:before{content:"\f02e";} 87 | .icon-print:before{content:"\f02f";} 88 | .icon-camera:before{content:"\f030";} 89 | .icon-font:before{content:"\f031";} 90 | .icon-bold:before{content:"\f032";} 91 | .icon-italic:before{content:"\f033";} 92 | .icon-text-height:before{content:"\f034";} 93 | .icon-text-width:before{content:"\f035";} 94 | .icon-align-left:before{content:"\f036";} 95 | .icon-align-center:before{content:"\f037";} 96 | .icon-align-right:before{content:"\f038";} 97 | .icon-align-justify:before{content:"\f039";} 98 | .icon-list:before{content:"\f03a";} 99 | .icon-indent-left:before{content:"\f03b";} 100 | .icon-indent-right:before{content:"\f03c";} 101 | .icon-facetime-video:before{content:"\f03d";} 102 | .icon-picture:before{content:"\f03e";} 103 | .icon-pencil:before{content:"\f040";} 104 | .icon-map-marker:before{content:"\f041";} 105 | .icon-adjust:before{content:"\f042";} 106 | .icon-tint:before{content:"\f043";} 107 | .icon-edit:before{content:"\f044";} 108 | .icon-share:before{content:"\f045";} 109 | .icon-check:before{content:"\f046";} 110 | .icon-move:before{content:"\f047";} 111 | .icon-step-backward:before{content:"\f048";} 112 | .icon-fast-backward:before{content:"\f049";} 113 | .icon-backward:before{content:"\f04a";} 114 | .icon-play:before{content:"\f04b";} 115 | .icon-pause:before{content:"\f04c";} 116 | .icon-stop:before{content:"\f04d";} 117 | .icon-forward:before{content:"\f04e";} 118 | .icon-fast-forward:before{content:"\f050";} 119 | .icon-step-forward:before{content:"\f051";} 120 | .icon-eject:before{content:"\f052";} 121 | .icon-chevron-left:before{content:"\f053";} 122 | .icon-chevron-right:before{content:"\f054";} 123 | .icon-plus-sign:before{content:"\f055";} 124 | .icon-minus-sign:before{content:"\f056";} 125 | .icon-remove-sign:before{content:"\f057";} 126 | .icon-ok-sign:before{content:"\f058";} 127 | .icon-question-sign:before{content:"\f059";} 128 | .icon-info-sign:before{content:"\f05a";} 129 | .icon-screenshot:before{content:"\f05b";} 130 | .icon-remove-circle:before{content:"\f05c";} 131 | .icon-ok-circle:before{content:"\f05d";} 132 | .icon-ban-circle:before{content:"\f05e";} 133 | .icon-arrow-left:before{content:"\f060";} 134 | .icon-arrow-right:before{content:"\f061";} 135 | .icon-arrow-up:before{content:"\f062";} 136 | .icon-arrow-down:before{content:"\f063";} 137 | .icon-mail-forward:before,.icon-share-alt:before{content:"\f064";} 138 | .icon-resize-full:before{content:"\f065";} 139 | .icon-resize-small:before{content:"\f066";} 140 | .icon-plus:before{content:"\f067";} 141 | .icon-minus:before{content:"\f068";} 142 | .icon-asterisk:before{content:"\f069";} 143 | .icon-exclamation-sign:before{content:"\f06a";} 144 | .icon-gift:before{content:"\f06b";} 145 | .icon-leaf:before{content:"\f06c";} 146 | .icon-fire:before{content:"\f06d";} 147 | .icon-eye-open:before{content:"\f06e";} 148 | .icon-eye-close:before{content:"\f070";} 149 | .icon-warning-sign:before{content:"\f071";} 150 | .icon-plane:before{content:"\f072";} 151 | .icon-calendar:before{content:"\f073";} 152 | .icon-random:before{content:"\f074";} 153 | .icon-comment:before{content:"\f075";} 154 | .icon-magnet:before{content:"\f076";} 155 | .icon-chevron-up:before{content:"\f077";} 156 | .icon-chevron-down:before{content:"\f078";} 157 | .icon-retweet:before{content:"\f079";} 158 | .icon-shopping-cart:before{content:"\f07a";} 159 | .icon-folder-close:before{content:"\f07b";} 160 | .icon-folder-open:before{content:"\f07c";} 161 | .icon-resize-vertical:before{content:"\f07d";} 162 | .icon-resize-horizontal:before{content:"\f07e";} 163 | .icon-bar-chart:before{content:"\f080";} 164 | .icon-twitter-sign:before{content:"\f081";} 165 | .icon-facebook-sign:before{content:"\f082";} 166 | .icon-camera-retro:before{content:"\f083";} 167 | .icon-key:before{content:"\f084";} 168 | .icon-gears:before,.icon-cogs:before{content:"\f085";} 169 | .icon-comments:before{content:"\f086";} 170 | .icon-thumbs-up-alt:before{content:"\f087";} 171 | .icon-thumbs-down-alt:before{content:"\f088";} 172 | .icon-star-half:before{content:"\f089";} 173 | .icon-heart-empty:before{content:"\f08a";} 174 | .icon-signout:before{content:"\f08b";} 175 | .icon-linkedin-sign:before{content:"\f08c";} 176 | .icon-pushpin:before{content:"\f08d";} 177 | .icon-external-link:before{content:"\f08e";} 178 | .icon-signin:before{content:"\f090";} 179 | .icon-trophy:before{content:"\f091";} 180 | .icon-github-sign:before{content:"\f092";} 181 | .icon-upload-alt:before{content:"\f093";} 182 | .icon-lemon:before{content:"\f094";} 183 | .icon-phone:before{content:"\f095";} 184 | .icon-unchecked:before,.icon-check-empty:before{content:"\f096";} 185 | .icon-bookmark-empty:before{content:"\f097";} 186 | .icon-phone-sign:before{content:"\f098";} 187 | .icon-twitter:before{content:"\f099";} 188 | .icon-facebook:before{content:"\f09a";} 189 | .icon-github:before{content:"\f09b";} 190 | .icon-unlock:before{content:"\f09c";} 191 | .icon-credit-card:before{content:"\f09d";} 192 | .icon-rss:before{content:"\f09e";} 193 | .icon-hdd:before{content:"\f0a0";} 194 | .icon-bullhorn:before{content:"\f0a1";} 195 | .icon-bell:before{content:"\f0a2";} 196 | .icon-certificate:before{content:"\f0a3";} 197 | .icon-hand-right:before{content:"\f0a4";} 198 | .icon-hand-left:before{content:"\f0a5";} 199 | .icon-hand-up:before{content:"\f0a6";} 200 | .icon-hand-down:before{content:"\f0a7";} 201 | .icon-circle-arrow-left:before{content:"\f0a8";} 202 | .icon-circle-arrow-right:before{content:"\f0a9";} 203 | .icon-circle-arrow-up:before{content:"\f0aa";} 204 | .icon-circle-arrow-down:before{content:"\f0ab";} 205 | .icon-globe:before{content:"\f0ac";} 206 | .icon-wrench:before{content:"\f0ad";} 207 | .icon-tasks:before{content:"\f0ae";} 208 | .icon-filter:before{content:"\f0b0";} 209 | .icon-briefcase:before{content:"\f0b1";} 210 | .icon-fullscreen:before{content:"\f0b2";} 211 | .icon-group:before{content:"\f0c0";} 212 | .icon-link:before{content:"\f0c1";} 213 | .icon-cloud:before{content:"\f0c2";} 214 | .icon-beaker:before{content:"\f0c3";} 215 | .icon-cut:before{content:"\f0c4";} 216 | .icon-copy:before{content:"\f0c5";} 217 | .icon-paperclip:before,.icon-paper-clip:before{content:"\f0c6";} 218 | .icon-save:before{content:"\f0c7";} 219 | .icon-sign-blank:before{content:"\f0c8";} 220 | .icon-reorder:before{content:"\f0c9";} 221 | .icon-list-ul:before{content:"\f0ca";} 222 | .icon-list-ol:before{content:"\f0cb";} 223 | .icon-strikethrough:before{content:"\f0cc";} 224 | .icon-underline:before{content:"\f0cd";} 225 | .icon-table:before{content:"\f0ce";} 226 | .icon-magic:before{content:"\f0d0";} 227 | .icon-truck:before{content:"\f0d1";} 228 | .icon-pinterest:before{content:"\f0d2";} 229 | .icon-pinterest-sign:before{content:"\f0d3";} 230 | .icon-google-plus-sign:before{content:"\f0d4";} 231 | .icon-google-plus:before{content:"\f0d5";} 232 | .icon-money:before{content:"\f0d6";} 233 | .icon-caret-down:before{content:"\f0d7";} 234 | .icon-caret-up:before{content:"\f0d8";} 235 | .icon-caret-left:before{content:"\f0d9";} 236 | .icon-caret-right:before{content:"\f0da";} 237 | .icon-columns:before{content:"\f0db";} 238 | .icon-sort:before{content:"\f0dc";} 239 | .icon-sort-down:before{content:"\f0dd";} 240 | .icon-sort-up:before{content:"\f0de";} 241 | .icon-envelope:before{content:"\f0e0";} 242 | .icon-linkedin:before{content:"\f0e1";} 243 | .icon-rotate-left:before,.icon-undo:before{content:"\f0e2";} 244 | .icon-legal:before{content:"\f0e3";} 245 | .icon-dashboard:before{content:"\f0e4";} 246 | .icon-comment-alt:before{content:"\f0e5";} 247 | .icon-comments-alt:before{content:"\f0e6";} 248 | .icon-bolt:before{content:"\f0e7";} 249 | .icon-sitemap:before{content:"\f0e8";} 250 | .icon-umbrella:before{content:"\f0e9";} 251 | .icon-paste:before{content:"\f0ea";} 252 | .icon-lightbulb:before{content:"\f0eb";} 253 | .icon-exchange:before{content:"\f0ec";} 254 | .icon-cloud-download:before{content:"\f0ed";} 255 | .icon-cloud-upload:before{content:"\f0ee";} 256 | .icon-user-md:before{content:"\f0f0";} 257 | .icon-stethoscope:before{content:"\f0f1";} 258 | .icon-suitcase:before{content:"\f0f2";} 259 | .icon-bell-alt:before{content:"\f0f3";} 260 | .icon-coffee:before{content:"\f0f4";} 261 | .icon-food:before{content:"\f0f5";} 262 | .icon-file-text-alt:before{content:"\f0f6";} 263 | .icon-building:before{content:"\f0f7";} 264 | .icon-hospital:before{content:"\f0f8";} 265 | .icon-ambulance:before{content:"\f0f9";} 266 | .icon-medkit:before{content:"\f0fa";} 267 | .icon-fighter-jet:before{content:"\f0fb";} 268 | .icon-beer:before{content:"\f0fc";} 269 | .icon-h-sign:before{content:"\f0fd";} 270 | .icon-plus-sign-alt:before{content:"\f0fe";} 271 | .icon-double-angle-left:before{content:"\f100";} 272 | .icon-double-angle-right:before{content:"\f101";} 273 | .icon-double-angle-up:before{content:"\f102";} 274 | .icon-double-angle-down:before{content:"\f103";} 275 | .icon-angle-left:before{content:"\f104";} 276 | .icon-angle-right:before{content:"\f105";} 277 | .icon-angle-up:before{content:"\f106";} 278 | .icon-angle-down:before{content:"\f107";} 279 | .icon-desktop:before{content:"\f108";} 280 | .icon-laptop:before{content:"\f109";} 281 | .icon-tablet:before{content:"\f10a";} 282 | .icon-mobile-phone:before{content:"\f10b";} 283 | .icon-circle-blank:before{content:"\f10c";} 284 | .icon-quote-left:before{content:"\f10d";} 285 | .icon-quote-right:before{content:"\f10e";} 286 | .icon-spinner:before{content:"\f110";} 287 | .icon-circle:before{content:"\f111";} 288 | .icon-mail-reply:before,.icon-reply:before{content:"\f112";} 289 | .icon-github-alt:before{content:"\f113";} 290 | .icon-folder-close-alt:before{content:"\f114";} 291 | .icon-folder-open-alt:before{content:"\f115";} 292 | .icon-expand-alt:before{content:"\f116";} 293 | .icon-collapse-alt:before{content:"\f117";} 294 | .icon-smile:before{content:"\f118";} 295 | .icon-frown:before{content:"\f119";} 296 | .icon-meh:before{content:"\f11a";} 297 | .icon-gamepad:before{content:"\f11b";} 298 | .icon-keyboard:before{content:"\f11c";} 299 | .icon-flag-alt:before{content:"\f11d";} 300 | .icon-flag-checkered:before{content:"\f11e";} 301 | .icon-terminal:before{content:"\f120";} 302 | .icon-code:before{content:"\f121";} 303 | .icon-reply-all:before{content:"\f122";} 304 | .icon-mail-reply-all:before{content:"\f122";} 305 | .icon-star-half-full:before,.icon-star-half-empty:before{content:"\f123";} 306 | .icon-location-arrow:before{content:"\f124";} 307 | .icon-crop:before{content:"\f125";} 308 | .icon-code-fork:before{content:"\f126";} 309 | .icon-unlink:before{content:"\f127";} 310 | .icon-question:before{content:"\f128";} 311 | .icon-info:before{content:"\f129";} 312 | .icon-exclamation:before{content:"\f12a";} 313 | .icon-superscript:before{content:"\f12b";} 314 | .icon-subscript:before{content:"\f12c";} 315 | .icon-eraser:before{content:"\f12d";} 316 | .icon-puzzle-piece:before{content:"\f12e";} 317 | .icon-microphone:before{content:"\f130";} 318 | .icon-microphone-off:before{content:"\f131";} 319 | .icon-shield:before{content:"\f132";} 320 | .icon-calendar-empty:before{content:"\f133";} 321 | .icon-fire-extinguisher:before{content:"\f134";} 322 | .icon-rocket:before{content:"\f135";} 323 | .icon-maxcdn:before{content:"\f136";} 324 | .icon-chevron-sign-left:before{content:"\f137";} 325 | .icon-chevron-sign-right:before{content:"\f138";} 326 | .icon-chevron-sign-up:before{content:"\f139";} 327 | .icon-chevron-sign-down:before{content:"\f13a";} 328 | .icon-html5:before{content:"\f13b";} 329 | .icon-css3:before{content:"\f13c";} 330 | .icon-anchor:before{content:"\f13d";} 331 | .icon-unlock-alt:before{content:"\f13e";} 332 | .icon-bullseye:before{content:"\f140";} 333 | .icon-ellipsis-horizontal:before{content:"\f141";} 334 | .icon-ellipsis-vertical:before{content:"\f142";} 335 | .icon-rss-sign:before{content:"\f143";} 336 | .icon-play-sign:before{content:"\f144";} 337 | .icon-ticket:before{content:"\f145";} 338 | .icon-minus-sign-alt:before{content:"\f146";} 339 | .icon-check-minus:before{content:"\f147";} 340 | .icon-level-up:before{content:"\f148";} 341 | .icon-level-down:before{content:"\f149";} 342 | .icon-check-sign:before{content:"\f14a";} 343 | .icon-edit-sign:before{content:"\f14b";} 344 | .icon-external-link-sign:before{content:"\f14c";} 345 | .icon-share-sign:before{content:"\f14d";} 346 | .icon-compass:before{content:"\f14e";} 347 | .icon-collapse:before{content:"\f150";} 348 | .icon-collapse-top:before{content:"\f151";} 349 | .icon-expand:before{content:"\f152";} 350 | .icon-euro:before,.icon-eur:before{content:"\f153";} 351 | .icon-gbp:before{content:"\f154";} 352 | .icon-dollar:before,.icon-usd:before{content:"\f155";} 353 | .icon-rupee:before,.icon-inr:before{content:"\f156";} 354 | .icon-yen:before,.icon-jpy:before{content:"\f157";} 355 | .icon-renminbi:before,.icon-cny:before{content:"\f158";} 356 | .icon-won:before,.icon-krw:before{content:"\f159";} 357 | .icon-bitcoin:before,.icon-btc:before{content:"\f15a";} 358 | .icon-file:before{content:"\f15b";} 359 | .icon-file-text:before{content:"\f15c";} 360 | .icon-sort-by-alphabet:before{content:"\f15d";} 361 | .icon-sort-by-alphabet-alt:before{content:"\f15e";} 362 | .icon-sort-by-attributes:before{content:"\f160";} 363 | .icon-sort-by-attributes-alt:before{content:"\f161";} 364 | .icon-sort-by-order:before{content:"\f162";} 365 | .icon-sort-by-order-alt:before{content:"\f163";} 366 | .icon-thumbs-up:before{content:"\f164";} 367 | .icon-thumbs-down:before{content:"\f165";} 368 | .icon-youtube-sign:before{content:"\f166";} 369 | .icon-youtube:before{content:"\f167";} 370 | .icon-xing:before{content:"\f168";} 371 | .icon-xing-sign:before{content:"\f169";} 372 | .icon-youtube-play:before{content:"\f16a";} 373 | .icon-dropbox:before{content:"\f16b";} 374 | .icon-stackexchange:before{content:"\f16c";} 375 | .icon-instagram:before{content:"\f16d";} 376 | .icon-flickr:before{content:"\f16e";} 377 | .icon-adn:before{content:"\f170";} 378 | .icon-bitbucket:before{content:"\f171";} 379 | .icon-bitbucket-sign:before{content:"\f172";} 380 | .icon-tumblr:before{content:"\f173";} 381 | .icon-tumblr-sign:before{content:"\f174";} 382 | .icon-long-arrow-down:before{content:"\f175";} 383 | .icon-long-arrow-up:before{content:"\f176";} 384 | .icon-long-arrow-left:before{content:"\f177";} 385 | .icon-long-arrow-right:before{content:"\f178";} 386 | .icon-apple:before{content:"\f179";} 387 | .icon-windows:before{content:"\f17a";} 388 | .icon-android:before{content:"\f17b";} 389 | .icon-linux:before{content:"\f17c";} 390 | .icon-dribbble:before{content:"\f17d";} 391 | .icon-skype:before{content:"\f17e";} 392 | .icon-foursquare:before{content:"\f180";} 393 | .icon-trello:before{content:"\f181";} 394 | .icon-female:before{content:"\f182";} 395 | .icon-male:before{content:"\f183";} 396 | .icon-gittip:before{content:"\f184";} 397 | .icon-sun:before{content:"\f185";} 398 | .icon-moon:before{content:"\f186";} 399 | .icon-archive:before{content:"\f187";} 400 | .icon-bug:before{content:"\f188";} 401 | .icon-vk:before{content:"\f189";} 402 | .icon-weibo:before{content:"\f18a";} 403 | .icon-renren:before{content:"\f18b";} 404 | -------------------------------------------------------------------------------- /site/js/bootstrap.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap.js v3.0.0 by @fat and @mdo 3 | * Copyright 2013 Twitter Inc. 4 | * http://www.apache.org/licenses/LICENSE-2.0 5 | */ 6 | if(!jQuery)throw new Error("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(''}),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); -------------------------------------------------------------------------------- /site/css/fa-ie7.css: -------------------------------------------------------------------------------- 1 | .icon-large{font-size:1.3333333333333333em;margin-top:-4px;padding-top:3px;margin-bottom:-4px;padding-bottom:3px;vertical-align:middle;} 2 | .nav [class^="icon-"],.nav [class*=" icon-"]{vertical-align:inherit;margin-top:-4px;padding-top:3px;margin-bottom:-4px;padding-bottom:3px;}.nav [class^="icon-"].icon-large,.nav [class*=" icon-"].icon-large{vertical-align:-25%;} 3 | .nav-pills [class^="icon-"].icon-large,.nav-tabs [class^="icon-"].icon-large,.nav-pills [class*=" icon-"].icon-large,.nav-tabs [class*=" icon-"].icon-large{line-height:.75em;margin-top:-7px;padding-top:5px;margin-bottom:-5px;padding-bottom:4px;} 4 | .btn [class^="icon-"].pull-left,.btn [class*=" icon-"].pull-left,.btn [class^="icon-"].pull-right,.btn [class*=" icon-"].pull-right{vertical-align:inherit;} 5 | .btn [class^="icon-"].icon-large,.btn [class*=" icon-"].icon-large{margin-top:-0.5em;} 6 | a [class^="icon-"],a [class*=" icon-"]{cursor:pointer;} 7 | .icon-glass{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 8 | .icon-music{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 9 | .icon-search{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 10 | .icon-envelope-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 11 | .icon-heart{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 12 | .icon-star{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 13 | .icon-star-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 14 | .icon-user{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 15 | .icon-film{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 16 | .icon-th-large{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 17 | .icon-th{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 18 | .icon-th-list{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 19 | .icon-ok{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 20 | .icon-remove{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 21 | .icon-zoom-in{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 22 | .icon-zoom-out{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 23 | .icon-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 24 | .icon-power-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 25 | .icon-signal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 26 | .icon-cog{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 27 | .icon-gear{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 28 | .icon-trash{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 29 | .icon-home{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 30 | .icon-file-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 31 | .icon-time{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 32 | .icon-road{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 33 | .icon-download-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 34 | .icon-download{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 35 | .icon-upload{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 36 | .icon-inbox{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 37 | .icon-play-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 38 | .icon-repeat{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 39 | .icon-rotate-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 40 | .icon-refresh{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 41 | .icon-list-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 42 | .icon-lock{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 43 | .icon-flag{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 44 | .icon-headphones{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 45 | .icon-volume-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 46 | .icon-volume-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 47 | .icon-volume-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 48 | .icon-qrcode{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 49 | .icon-barcode{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 50 | .icon-tag{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 51 | .icon-tags{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 52 | .icon-book{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 53 | .icon-bookmark{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 54 | .icon-print{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 55 | .icon-camera{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 56 | .icon-font{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 57 | .icon-bold{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 58 | .icon-italic{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 59 | .icon-text-height{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 60 | .icon-text-width{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 61 | .icon-align-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 62 | .icon-align-center{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 63 | .icon-align-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 64 | .icon-align-justify{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 65 | .icon-list{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 66 | .icon-indent-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 67 | .icon-indent-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 68 | .icon-facetime-video{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 69 | .icon-picture{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 70 | .icon-pencil{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 71 | .icon-map-marker{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 72 | .icon-adjust{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 73 | .icon-tint{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 74 | .icon-edit{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 75 | .icon-share{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 76 | .icon-check{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 77 | .icon-move{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 78 | .icon-step-backward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 79 | .icon-fast-backward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 80 | .icon-backward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 81 | .icon-play{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 82 | .icon-pause{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 83 | .icon-stop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 84 | .icon-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 85 | .icon-fast-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 86 | .icon-step-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 87 | .icon-eject{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 88 | .icon-chevron-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 89 | .icon-chevron-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 90 | .icon-plus-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 91 | .icon-minus-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 92 | .icon-remove-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 93 | .icon-ok-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 94 | .icon-question-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 95 | .icon-info-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 96 | .icon-screenshot{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 97 | .icon-remove-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 98 | .icon-ok-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 99 | .icon-ban-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 100 | .icon-arrow-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 101 | .icon-arrow-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 102 | .icon-arrow-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 103 | .icon-arrow-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 104 | .icon-share-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 105 | .icon-mail-forward{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 106 | .icon-resize-full{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 107 | .icon-resize-small{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 108 | .icon-plus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 109 | .icon-minus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 110 | .icon-asterisk{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 111 | .icon-exclamation-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 112 | .icon-gift{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 113 | .icon-leaf{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 114 | .icon-fire{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 115 | .icon-eye-open{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 116 | .icon-eye-close{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 117 | .icon-warning-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 118 | .icon-plane{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 119 | .icon-calendar{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 120 | .icon-random{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 121 | .icon-comment{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 122 | .icon-magnet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 123 | .icon-chevron-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 124 | .icon-chevron-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 125 | .icon-retweet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 126 | .icon-shopping-cart{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 127 | .icon-folder-close{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 128 | .icon-folder-open{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 129 | .icon-resize-vertical{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 130 | .icon-resize-horizontal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 131 | .icon-bar-chart{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 132 | .icon-twitter-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 133 | .icon-facebook-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 134 | .icon-camera-retro{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 135 | .icon-key{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 136 | .icon-cogs{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 137 | .icon-gears{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 138 | .icon-comments{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 139 | .icon-thumbs-up-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 140 | .icon-thumbs-down-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 141 | .icon-star-half{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 142 | .icon-heart-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 143 | .icon-signout{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 144 | .icon-linkedin-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 145 | .icon-pushpin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 146 | .icon-external-link{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 147 | .icon-signin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 148 | .icon-trophy{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 149 | .icon-github-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 150 | .icon-upload-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 151 | .icon-lemon{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 152 | .icon-phone{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 153 | .icon-check-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 154 | .icon-unchecked{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 155 | .icon-bookmark-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 156 | .icon-phone-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 157 | .icon-twitter{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 158 | .icon-facebook{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 159 | .icon-github{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 160 | .icon-unlock{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 161 | .icon-credit-card{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 162 | .icon-rss{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 163 | .icon-hdd{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 164 | .icon-bullhorn{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 165 | .icon-bell{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 166 | .icon-certificate{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 167 | .icon-hand-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 168 | .icon-hand-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 169 | .icon-hand-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 170 | .icon-hand-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 171 | .icon-circle-arrow-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 172 | .icon-circle-arrow-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 173 | .icon-circle-arrow-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 174 | .icon-circle-arrow-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 175 | .icon-globe{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 176 | .icon-wrench{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 177 | .icon-tasks{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 178 | .icon-filter{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 179 | .icon-briefcase{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 180 | .icon-fullscreen{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 181 | .icon-group{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 182 | .icon-link{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 183 | .icon-cloud{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 184 | .icon-beaker{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 185 | .icon-cut{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 186 | .icon-copy{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 187 | .icon-paper-clip{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 188 | .icon-paperclip{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 189 | .icon-save{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 190 | .icon-sign-blank{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 191 | .icon-reorder{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 192 | .icon-list-ul{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 193 | .icon-list-ol{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 194 | .icon-strikethrough{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 195 | .icon-underline{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 196 | .icon-table{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 197 | .icon-magic{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 198 | .icon-truck{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 199 | .icon-pinterest{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 200 | .icon-pinterest-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 201 | .icon-google-plus-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 202 | .icon-google-plus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 203 | .icon-money{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 204 | .icon-caret-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 205 | .icon-caret-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 206 | .icon-caret-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 207 | .icon-caret-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 208 | .icon-columns{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 209 | .icon-sort{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 210 | .icon-sort-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 211 | .icon-sort-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 212 | .icon-envelope{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 213 | .icon-linkedin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 214 | .icon-undo{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 215 | .icon-rotate-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 216 | .icon-legal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 217 | .icon-dashboard{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 218 | .icon-comment-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 219 | .icon-comments-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 220 | .icon-bolt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 221 | .icon-sitemap{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 222 | .icon-umbrella{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 223 | .icon-paste{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 224 | .icon-lightbulb{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 225 | .icon-exchange{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 226 | .icon-cloud-download{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 227 | .icon-cloud-upload{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 228 | .icon-user-md{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 229 | .icon-stethoscope{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 230 | .icon-suitcase{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 231 | .icon-bell-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 232 | .icon-coffee{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 233 | .icon-food{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 234 | .icon-file-text-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 235 | .icon-building{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 236 | .icon-hospital{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 237 | .icon-ambulance{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 238 | .icon-medkit{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 239 | .icon-fighter-jet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 240 | .icon-beer{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 241 | .icon-h-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 242 | .icon-plus-sign-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 243 | .icon-double-angle-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 244 | .icon-double-angle-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 245 | .icon-double-angle-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 246 | .icon-double-angle-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 247 | .icon-angle-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 248 | .icon-angle-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 249 | .icon-angle-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 250 | .icon-angle-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 251 | .icon-desktop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 252 | .icon-laptop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 253 | .icon-tablet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 254 | .icon-mobile-phone{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 255 | .icon-circle-blank{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 256 | .icon-quote-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 257 | .icon-quote-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 258 | .icon-spinner{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 259 | .icon-circle{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 260 | .icon-reply{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 261 | .icon-mail-reply{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 262 | .icon-github-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 263 | .icon-folder-close-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 264 | .icon-folder-open-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 265 | .icon-expand-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 266 | .icon-collapse-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 267 | .icon-smile{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 268 | .icon-frown{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 269 | .icon-meh{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 270 | .icon-gamepad{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 271 | .icon-keyboard{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 272 | .icon-flag-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 273 | .icon-flag-checkered{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 274 | .icon-terminal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 275 | .icon-code{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 276 | .icon-reply-all{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 277 | .icon-mail-reply-all{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 278 | .icon-star-half-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 279 | .icon-star-half-full{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 280 | .icon-location-arrow{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 281 | .icon-crop{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 282 | .icon-code-fork{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 283 | .icon-unlink{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 284 | .icon-question{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 285 | .icon-info{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 286 | .icon-exclamation{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 287 | .icon-superscript{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 288 | .icon-subscript{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 289 | .icon-eraser{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 290 | .icon-puzzle-piece{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 291 | .icon-microphone{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 292 | .icon-microphone-off{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 293 | .icon-shield{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 294 | .icon-calendar-empty{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 295 | .icon-fire-extinguisher{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 296 | .icon-rocket{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 297 | .icon-maxcdn{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 298 | .icon-chevron-sign-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 299 | .icon-chevron-sign-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 300 | .icon-chevron-sign-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 301 | .icon-chevron-sign-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 302 | .icon-html5{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 303 | .icon-css3{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 304 | .icon-anchor{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 305 | .icon-unlock-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 306 | .icon-bullseye{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 307 | .icon-ellipsis-horizontal{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 308 | .icon-ellipsis-vertical{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 309 | .icon-rss-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 310 | .icon-play-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 311 | .icon-ticket{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 312 | .icon-minus-sign-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 313 | .icon-check-minus{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 314 | .icon-level-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 315 | .icon-level-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 316 | .icon-check-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 317 | .icon-edit-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 318 | .icon-external-link-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 319 | .icon-share-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 320 | .icon-compass{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 321 | .icon-collapse{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 322 | .icon-collapse-top{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 323 | .icon-expand{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 324 | .icon-eur{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 325 | .icon-euro{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 326 | .icon-gbp{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 327 | .icon-usd{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 328 | .icon-dollar{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 329 | .icon-inr{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 330 | .icon-rupee{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 331 | .icon-jpy{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 332 | .icon-yen{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 333 | .icon-cny{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 334 | .icon-renminbi{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 335 | .icon-krw{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 336 | .icon-won{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 337 | .icon-btc{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 338 | .icon-bitcoin{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 339 | .icon-file{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 340 | .icon-file-text{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 341 | .icon-sort-by-alphabet{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 342 | .icon-sort-by-alphabet-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 343 | .icon-sort-by-attributes{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 344 | .icon-sort-by-attributes-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 345 | .icon-sort-by-order{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 346 | .icon-sort-by-order-alt{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 347 | .icon-thumbs-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 348 | .icon-thumbs-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 349 | .icon-youtube-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 350 | .icon-youtube{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 351 | .icon-xing{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 352 | .icon-xing-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 353 | .icon-youtube-play{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 354 | .icon-dropbox{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 355 | .icon-stackexchange{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 356 | .icon-instagram{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 357 | .icon-flickr{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 358 | .icon-adn{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 359 | .icon-bitbucket{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 360 | .icon-bitbucket-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 361 | .icon-tumblr{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 362 | .icon-tumblr-sign{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 363 | .icon-long-arrow-down{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 364 | .icon-long-arrow-up{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 365 | .icon-long-arrow-left{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 366 | .icon-long-arrow-right{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 367 | .icon-apple{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 368 | .icon-windows{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 369 | .icon-android{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 370 | .icon-linux{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 371 | .icon-dribbble{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 372 | .icon-skype{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 373 | .icon-foursquare{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 374 | .icon-trello{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 375 | .icon-female{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 376 | .icon-male{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 377 | .icon-gittip{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 378 | .icon-sun{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 379 | .icon-moon{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 380 | .icon-archive{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 381 | .icon-bug{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 382 | .icon-vk{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 383 | .icon-weibo{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 384 | .icon-renren{*zoom:expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '');} 385 | --------------------------------------------------------------------------------