diff --git a/css/.DS_Store b/css/.DS_Store deleted file mode 100644 index 2036862..0000000 Binary files a/css/.DS_Store and /dev/null differ diff --git a/css/print/paper.css b/css/print/paper.css old mode 100755 new mode 100644 index 61fa0a9..893184d --- a/css/print/paper.css +++ b/css/print/paper.css @@ -2,12 +2,12 @@ by Rob Glazebrook of CSSnewbie.com Last Updated: June 4, 2008 - Feel free (nay, compelled) to edit, append, and + Feel free (nay, compelled) to edit, append, and manipulate this file as you see fit. */ /* SECTION 1: Set default width, margin, float, and - background. This prevents elements from extending + background. This prevents elements from extending beyond the edge of the printed page, and prevents unnecessary background images from printing */ body { @@ -28,11 +28,11 @@ html { overflow: visible; } -/* SECTION 2: Remove any elements not needed in print. +/* SECTION 2: Remove any elements not needed in print. This would include navigation, ads, sidebars, etc. */ -.nestedarrow, -.controls, -.reveal .progress, +.nestedarrow, +.controls, +.reveal .progress, .reveal.overview, .fork-reveal, .share-reveal, @@ -45,11 +45,11 @@ html { body, p, td, li, div, a { font-size: 16pt!important; font-family: Georgia, "Times New Roman", Times, serif !important; - color: #000; + color: #000; } /* SECTION 4: Set heading font face, sizes, and color. - Diffrentiate your headings from your body text. + Differentiate your headings from your body text. Perhaps use a large sans-serif for distinction. */ h1,h2,h3,h4,h5,h6 { color: #000!important; @@ -71,14 +71,14 @@ h6 { font-size: 18pt !important; font-style: italic; } /* SECTION 5: Make hyperlinks more usable. Ensure links are underlined, and consider appending the URL to the end of the link for usability. */ -a:link, +a:link, a:visited { color: #000 !important; font-weight: bold; text-decoration: underline; } /* -.reveal a:link:after, +.reveal a:link:after, .reveal a:visited:after { content: " (" attr(href) ") "; color: #222 !important; @@ -123,9 +123,9 @@ ul, ol, div, p { -ms-perspective-origin: 50% 50%; perspective-origin: 50% 50%; } -.reveal .slides>section, +.reveal .slides>section, .reveal .slides>section>section { - + visibility: visible !important; position: static !important; width: 90% !important; @@ -152,17 +152,20 @@ ul, ol, div, p { transform: none !important; } .reveal section { - page-break-after: always !important; + page-break-after: always !important; display: block !important; } -.reveal section.stack { - page-break-after: avoid !important; -} .reveal section .fragment { opacity: 1 !important; + visibility: visible !important; + + -webkit-transform: none !important; + -moz-transform: none !important; + -ms-transform: none !important; + transform: none !important; } .reveal section:last-of-type { - page-break-after: avoid !important; + page-break-after: avoid !important; } .reveal section img { display: block; diff --git a/css/print/pdf.css b/css/print/pdf.css old mode 100755 new mode 100644 index 7c1a496..7b66ee5 --- a/css/print/pdf.css +++ b/css/print/pdf.css @@ -2,41 +2,46 @@ by Rob Glazebrook of CSSnewbie.com Last Updated: June 4, 2008 - Feel free (nay, compelled) to edit, append, and + Feel free (nay, compelled) to edit, append, and manipulate this file as you see fit. */ /* SECTION 1: Set default width, margin, float, and - background. This prevents elements from extending + background. This prevents elements from extending beyond the edge of the printed page, and prevents unnecessary background images from printing */ + * { - -webkit-print-color-adjust: exact; + -webkit-print-color-adjust: exact; } body { font-size: 18pt; - width: auto; - height: auto; + width: 297mm; + height: 229mm; + margin: 0 auto !important; border: 0; - margin: 0 5%; padding: 0; float: none !important; overflow: visible; - background-image: none; } html { - width: auto; - height: auto; + width: 100%; + height: 100%; overflow: visible; } -/* SECTION 2: Remove any elements not needed in print. +@page { + size: letter landscape; + margin: 0; +} + +/* SECTION 2: Remove any elements not needed in print. This would include navigation, ads, sidebars, etc. */ -.nestedarrow, -.controls, -.reveal .progress, +.nestedarrow, +.controls, +.reveal .progress, .reveal.overview, .fork-reveal, .share-reveal, @@ -51,7 +56,7 @@ body, p, td, li, div { } /* SECTION 4: Set heading font face, sizes, and color. - Diffrentiate your headings from your body text. + Differentiate your headings from your body text. Perhaps use a large sans-serif for distinction. */ h1,h2,h3,h4,h5,h6 { text-shadow: 0 0 0 #000 !important; @@ -60,12 +65,17 @@ h1,h2,h3,h4,h5,h6 { /* SECTION 5: Make hyperlinks more usable. Ensure links are underlined, and consider appending the URL to the end of the link for usability. */ -a:link, +a:link, a:visited { font-weight: bold; text-decoration: underline; } +.reveal pre code { + overflow: hidden !important; + font-family: monospace !important; +} + /* SECTION 6: more reveal.js specific additions by @skypanther */ ul, ol, div, p { @@ -77,6 +87,11 @@ ul, ol, div, p { overflow: visible; margin: auto; } +.reveal { + width: auto !important; + height: auto !important; + overflow: hidden !important; +} .reveal .slides { position: static; width: 100%; @@ -84,14 +99,14 @@ ul, ol, div, p { left: auto; top: auto; - margin-left: auto; - margin-top: auto; - padding: auto; + margin: 0 !important; + padding: 0 !important; overflow: visible; display: block; text-align: center; + -webkit-perspective: none; -moz-perspective: none; -ms-perspective: none; @@ -102,21 +117,23 @@ ul, ol, div, p { -ms-perspective-origin: 50% 50%; perspective-origin: 50% 50%; } -.reveal .slides>section, .reveal .slides>section>section { - +.reveal .slides section { + + page-break-after: always !important; + visibility: visible !important; - position: static !important; + position: relative !important; width: 100% !important; - height: auto !important; - min-height: initial !important; + height: 229mm !important; + min-height: 229mm !important; display: block !important; - overflow: visible !important; + overflow: hidden !important; - left: 0% !important; - top: 0% !important; - margin-left: 0px !important; - margin-top: 50px !important; - padding: 20px 0px !important; + left: 0 !important; + top: 0 !important; + margin: 0 !important; + padding: 2cm 2cm 0 2cm !important; + box-sizing: border-box !important; opacity: 1 !important; @@ -130,17 +147,36 @@ ul, ol, div, p { -ms-transform: none !important; transform: none !important; } -.reveal section { - page-break-after: always !important; - display: block !important; -} .reveal section.stack { - margin: 0px !important; - padding: 0px !important; - page-break-after: avoid !important; + margin: 0 !important; + padding: 0 !important; + page-break-after: avoid !important; + height: auto !important; + min-height: auto !important; +} +.reveal .absolute-element { + margin-left: 2.2cm; + margin-top: 1.8cm; } .reveal section .fragment { opacity: 1 !important; + visibility: visible !important; + + -webkit-transform: none !important; + -moz-transform: none !important; + -ms-transform: none !important; + transform: none !important; +} +.reveal section .slide-background { + position: absolute; + top: 0; + left: 0; + width: 100%; + z-index: 0; +} +.reveal section>* { + position: relative; + z-index: 1; } .reveal img { box-shadow: none; @@ -149,11 +185,6 @@ ul, ol, div, p { overflow: visible; line-height: 1em; } - .reveal small a { font-size: 16pt !important; } - -pre { - font-size: 9pt !important; -} diff --git a/css/shaders/tile-flip.fs b/css/shaders/tile-flip.fs deleted file mode 100755 index 3481a48..0000000 --- a/css/shaders/tile-flip.fs +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 2012 Adobe Systems Incorporated. All rights reserved. - * Copyright (c) 2012 Branislav Ulicny - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -precision mediump float; - -// Uniform values from CSS - -uniform float amount; -uniform float tileOutline; - -// Built-in uniforms - -uniform vec2 u_meshSize; -uniform vec2 u_textureSize; - -// Varyings passed in from vertex shader - -varying float v_depth; -varying vec2 v_uv; - -// Main - -void main() -{ - // FIXME: Must swap x and y as a workaround for: - // https://bugs.webkit.org/show_bug.cgi?id=96285 - vec2 u_meshSize = u_meshSize.yx; - - vec4 c = vec4(1.0); - - // Fade out. - c.a = 1.0 - v_depth; - - // Show grid outline. - if (tileOutline >= 0.5) { - float cell_width = u_textureSize.x / u_meshSize.y; - float cell_height = u_textureSize.y / u_meshSize.x; - float dd = 1.0; - - if (mod(v_uv.x * u_textureSize.x + dd, cell_width) < 2.0 - || mod(v_uv.y * u_textureSize.y + dd, cell_height) < 2.0) { - if (amount > 0.0) - c.rgb = vec3(1.0 - sqrt(amount)); - } - } - css_ColorMatrix = mat4(c.r, 0.0, 0.0, 0.0, - 0.0, c.g, 0.0, 0.0, - 0.0, 0.0, c.b, 0.0, - 0.0, 0.0, 0.0, c.a); -} diff --git a/css/shaders/tile-flip.vs b/css/shaders/tile-flip.vs deleted file mode 100755 index 498e446..0000000 --- a/css/shaders/tile-flip.vs +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c)2012 Adobe Systems Incorporated. All rights reserved. - * Copyright (c)2012 Branislav Ulicny - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -precision mediump float; - -// Built-in attributes - -attribute vec4 a_position; -attribute vec2 a_texCoord; -attribute vec3 a_triangleCoord; - -// Built-in uniforms - -uniform mat4 u_projectionMatrix; -uniform vec2 u_meshSize; -uniform vec2 u_textureSize; - -// Uniform passed in from CSS - -uniform mat4 transform; -uniform float amount; -uniform float randomness; -uniform vec3 flipAxis; - -// Varyings - -varying float v_depth; -varying vec2 v_uv; - -// Constants - -const float PI2 = 1.5707963267948966; - -// Create perspective matrix - -mat4 perspectiveMatrix(float p) -{ - float perspective = - 1.0 / p; - return mat4( - 1.0, 0.0, 0.0, 0.0, - 0.0, 1.0, 0.0, 0.0, - 0.0, 0.0, 1.0, perspective, - 0.0, 0.0, 0.0, 1.0 - ); -} - -// Rotate vector - -vec3 rotateVectorByQuaternion(vec3 v, vec4 q) -{ - vec3 dest = vec3(0.0); - - float x = v.x, y = v.y, z = v.z; - float qx = q.x, qy = q.y, qz = q.z, qw = q.w; - - // Calculate quaternion * vector. - - float ix = qw * x + qy * z - qz * y, - iy = qw * y + qz * x - qx * z, - iz = qw * z + qx * y - qy * x, - iw = -qx * x - qy * y - qz * z; - - // Calculate result * inverse quaternion. - - dest.x = ix * qw + iw * -qx + iy * -qz - iz * -qy; - dest.y = iy * qw + iw * -qy + iz * -qx - ix * -qz; - dest.z = iz * qw + iw * -qz + ix * -qy - iy * -qx; - - return dest; -} - -// Convert rotation. - -vec4 axisAngleToQuaternion(vec3 axis, float angle) -{ - vec4 dest = vec4(0.0); - - float halfAngle = angle / 2.0; - float s = sin(halfAngle); - - dest.x = axis.x * s; - dest.y = axis.y * s; - dest.z = axis.z * s; - dest.w = cos(halfAngle); - - return dest; -} - -// Random function based on the tile coordinate. -// This will return the same value for all the vertices in the same tile (i.e. two triangles). - -float random(vec2 scale) -{ - // Use the fragment position as a different seed per-pixel. - return fract(sin(dot(vec2(a_triangleCoord.x, a_triangleCoord.y), scale)) * 4000.0); -} - -// Main - -void main() -{ - // FIXME: We must swap x and y as a workaround for: - // https://bugs.webkit.org/show_bug.cgi?id=96285 - vec2 u_meshSize = u_meshSize.yx; - - vec4 pos = a_position; - float aspect = u_textureSize.x / u_textureSize.y; - - float cx = a_triangleCoord.x / u_meshSize.y - 0.5 + 0.5 / u_meshSize.y; - float cy = a_triangleCoord.y / u_meshSize.x - 0.5 + 0.5 / u_meshSize.x; - - vec3 centroid = vec3(cx, cy, 0.0); - float r = random(vec2(10.0, 80.0)); - float rr = mix(0.0, PI2, amount * (1.0 + randomness * r)); - - vec4 rotation = vec4(flipAxis, rr); - vec4 qRotation = axisAngleToQuaternion(normalize(rotation.xyz), rotation.w); - - vec3 newPosition = rotateVectorByQuaternion((pos.xyz - centroid)* vec3(aspect, 1., 1.0), qRotation) * vec3(1.0 / aspect, 1.0, 1.0) + centroid; - pos.xyz = newPosition; - - gl_Position = u_projectionMatrix * transform * pos; - - // Pass varyings to the fragment shader. - v_depth = abs(rr)/ PI2; - v_uv = a_texCoord; -} diff --git a/css/theme/default.css b/css/theme/default.css new file mode 100644 index 0000000..177bf7f --- /dev/null +++ b/css/theme/default.css @@ -0,0 +1,2450 @@ +/** + * Default theme for reveal.js. + * + * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se + */ +/*! + * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic); +@font-face { + font-family: 'FontAwesome'; + src: url("../../fonts/FontAwesome/fontawesome-webfont.eot?v=4.0.3"); + src: url("../../fonts/FontAwesome/fontawesome-webfont.eot?#iefix&v=4.0.3") format("embedded-opentype"), url("../../fonts/FontAwesome/fontawesome-webfont.woff?v=4.0.3") format("woff"), url("../../fonts/FontAwesome/fontawesome-webfont.ttf?v=4.0.3") format("truetype"), url("../../fonts/FontAwesome/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular") format("svg"); + font-weight: normal; + font-style: normal; +} +/* line 4, source/lib/font-awesome/_core.scss */ +.fa { + display: inline-block; + font-family: FontAwesome !important; + font-style: normal !important; + font-weight: normal !important; + line-height: 1 !important; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* makes the font 33% larger relative to the icon container */ +/* line 5, source/lib/font-awesome/_larger.scss */ +.fa-lg { + font-size: 1.33333em; + line-height: 0.75em; + vertical-align: -15%; +} + +/* line 10, source/lib/font-awesome/_larger.scss */ +.fa-2x { + font-size: 2em; +} + +/* line 11, source/lib/font-awesome/_larger.scss */ +.fa-3x { + font-size: 3em; +} + +/* line 12, source/lib/font-awesome/_larger.scss */ +.fa-4x { + font-size: 4em; +} + +/* line 13, source/lib/font-awesome/_larger.scss */ +.fa-5x { + font-size: 5em; +} + +/* line 3, source/lib/font-awesome/_fixed-width.scss */ +.fa-fw { + width: 1.28571em; + text-align: center; +} + +/* line 4, source/lib/font-awesome/_list.scss */ +.fa-ul { + padding-left: 0; + margin-left: 2.14286em; + list-style-type: none; +} +/* line 8, source/lib/font-awesome/_list.scss */ +.fa-ul > li { + position: relative; +} + +/* line 10, source/lib/font-awesome/_list.scss */ +.fa-li { + position: absolute; + left: -2.14286em; + width: 2.14286em; + top: 0.14286em; + text-align: center; +} +/* line 16, source/lib/font-awesome/_list.scss */ +.fa-li.fa-lg { + left: -1.85714em; +} + +/* line 4, source/lib/font-awesome/_bordered-pulled.scss */ +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} + +/* line 10, source/lib/font-awesome/_bordered-pulled.scss */ +.pull-right { + float: right; +} + +/* line 11, source/lib/font-awesome/_bordered-pulled.scss */ +.pull-left { + float: left; +} + +/* line 14, source/lib/font-awesome/_bordered-pulled.scss */ +.fa.pull-left { + margin-right: .3em; +} +/* line 15, source/lib/font-awesome/_bordered-pulled.scss */ +.fa.pull-right { + margin-left: .3em; +} + +/* line 4, source/lib/font-awesome/_spinning.scss */ +.fa-spin { + -webkit-animation: spin 2s infinite linear; + -moz-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; +} + +@-moz-keyframes spin { + /* line 12, source/lib/font-awesome/_spinning.scss */ + 0% { + -moz-transform: rotate(0deg); + } + + /* line 13, source/lib/font-awesome/_spinning.scss */ + 100% { + -moz-transform: rotate(359deg); + } +} +@-webkit-keyframes spin { + /* line 16, source/lib/font-awesome/_spinning.scss */ + 0% { + -webkit-transform: rotate(0deg); + } + + /* line 17, source/lib/font-awesome/_spinning.scss */ + 100% { + -webkit-transform: rotate(359deg); + } +} +@-o-keyframes spin { + /* line 20, source/lib/font-awesome/_spinning.scss */ + 0% { + -o-transform: rotate(0deg); + } + + /* line 21, source/lib/font-awesome/_spinning.scss */ + 100% { + -o-transform: rotate(359deg); + } +} +@-ms-keyframes spin { + /* line 24, source/lib/font-awesome/_spinning.scss */ + 0% { + -ms-transform: rotate(0deg); + } + + /* line 25, source/lib/font-awesome/_spinning.scss */ + 100% { + -ms-transform: rotate(359deg); + } +} +@keyframes spin { + /* line 28, source/lib/font-awesome/_spinning.scss */ + 0% { + transform: rotate(0deg); + } + + /* line 29, source/lib/font-awesome/_spinning.scss */ + 100% { + transform: rotate(359deg); + } +} +/* line 4, source/lib/font-awesome/_rotated-flipped.scss */ +.fa-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation); + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); +} + +/* line 5, source/lib/font-awesome/_rotated-flipped.scss */ +.fa-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation); + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); +} + +/* line 6, source/lib/font-awesome/_rotated-flipped.scss */ +.fa-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation); + -webkit-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); +} + +/* line 8, source/lib/font-awesome/_rotated-flipped.scss */ +.fa-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation); + -webkit-transform: scale(-1, 1); + -moz-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +/* line 9, source/lib/font-awesome/_rotated-flipped.scss */ +.fa-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation); + -webkit-transform: scale(1, -1); + -moz-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); +} + +/* line 4, source/lib/font-awesome/_stacked.scss */ +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} + +/* line 12, source/lib/font-awesome/_stacked.scss */ +.fa-stack-1x, .fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} + +/* line 18, source/lib/font-awesome/_stacked.scss */ +.fa-stack-1x { + line-height: inherit; +} + +/* line 19, source/lib/font-awesome/_stacked.scss */ +.fa-stack-2x { + font-size: 2em; +} + +/* line 20, source/lib/font-awesome/_stacked.scss */ +.fa-inverse { + color: white; +} + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +/* line 4, source/lib/font-awesome/_icons.scss */ +.fa-glass:before { + content: "\f000"; +} + +/* line 5, source/lib/font-awesome/_icons.scss */ +.fa-music:before { + content: "\f001"; +} + +/* line 6, source/lib/font-awesome/_icons.scss */ +.fa-search:before { + content: "\f002"; +} + +/* line 7, source/lib/font-awesome/_icons.scss */ +.fa-envelope-o:before { + content: "\f003"; +} + +/* line 8, source/lib/font-awesome/_icons.scss */ +.fa-heart:before { + content: "\f004"; +} + +/* line 9, source/lib/font-awesome/_icons.scss */ +.fa-star:before { + content: "\f005"; +} + +/* line 10, source/lib/font-awesome/_icons.scss */ +.fa-star-o:before { + content: "\f006"; +} + +/* line 11, source/lib/font-awesome/_icons.scss */ +.fa-user:before { + content: "\f007"; +} + +/* line 12, source/lib/font-awesome/_icons.scss */ +.fa-film:before { + content: "\f008"; +} + +/* line 13, source/lib/font-awesome/_icons.scss */ +.fa-th-large:before { + content: "\f009"; +} + +/* line 14, source/lib/font-awesome/_icons.scss */ +.fa-th:before { + content: "\f00a"; +} + +/* line 15, source/lib/font-awesome/_icons.scss */ +.fa-th-list:before { + content: "\f00b"; +} + +/* line 16, source/lib/font-awesome/_icons.scss */ +.fa-check:before { + content: "\f00c"; +} + +/* line 17, source/lib/font-awesome/_icons.scss */ +.fa-times:before { + content: "\f00d"; +} + +/* line 18, source/lib/font-awesome/_icons.scss */ +.fa-search-plus:before { + content: "\f00e"; +} + +/* line 19, source/lib/font-awesome/_icons.scss */ +.fa-search-minus:before { + content: "\f010"; +} + +/* line 20, source/lib/font-awesome/_icons.scss */ +.fa-power-off:before { + content: "\f011"; +} + +/* line 21, source/lib/font-awesome/_icons.scss */ +.fa-signal:before { + content: "\f012"; +} + +/* line 22, source/lib/font-awesome/_icons.scss */ +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} + +/* line 24, source/lib/font-awesome/_icons.scss */ +.fa-trash-o:before { + content: "\f014"; +} + +/* line 25, source/lib/font-awesome/_icons.scss */ +.fa-home:before { + content: "\f015"; +} + +/* line 26, source/lib/font-awesome/_icons.scss */ +.fa-file-o:before { + content: "\f016"; +} + +/* line 27, source/lib/font-awesome/_icons.scss */ +.fa-clock-o:before { + content: "\f017"; +} + +/* line 28, source/lib/font-awesome/_icons.scss */ +.fa-road:before { + content: "\f018"; +} + +/* line 29, source/lib/font-awesome/_icons.scss */ +.fa-download:before { + content: "\f019"; +} + +/* line 30, source/lib/font-awesome/_icons.scss */ +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} + +/* line 31, source/lib/font-awesome/_icons.scss */ +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} + +/* line 32, source/lib/font-awesome/_icons.scss */ +.fa-inbox:before { + content: "\f01c"; +} + +/* line 33, source/lib/font-awesome/_icons.scss */ +.fa-play-circle-o:before { + content: "\f01d"; +} + +/* line 34, source/lib/font-awesome/_icons.scss */ +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} + +/* line 36, source/lib/font-awesome/_icons.scss */ +.fa-refresh:before { + content: "\f021"; +} + +/* line 37, source/lib/font-awesome/_icons.scss */ +.fa-list-alt:before { + content: "\f022"; +} + +/* line 38, source/lib/font-awesome/_icons.scss */ +.fa-lock:before { + content: "\f023"; +} + +/* line 39, source/lib/font-awesome/_icons.scss */ +.fa-flag:before { + content: "\f024"; +} + +/* line 40, source/lib/font-awesome/_icons.scss */ +.fa-headphones:before { + content: "\f025"; +} + +/* line 41, source/lib/font-awesome/_icons.scss */ +.fa-volume-off:before { + content: "\f026"; +} + +/* line 42, source/lib/font-awesome/_icons.scss */ +.fa-volume-down:before { + content: "\f027"; +} + +/* line 43, source/lib/font-awesome/_icons.scss */ +.fa-volume-up:before { + content: "\f028"; +} + +/* line 44, source/lib/font-awesome/_icons.scss */ +.fa-qrcode:before { + content: "\f029"; +} + +/* line 45, source/lib/font-awesome/_icons.scss */ +.fa-barcode:before { + content: "\f02a"; +} + +/* line 46, source/lib/font-awesome/_icons.scss */ +.fa-tag:before { + content: "\f02b"; +} + +/* line 47, source/lib/font-awesome/_icons.scss */ +.fa-tags:before { + content: "\f02c"; +} + +/* line 48, source/lib/font-awesome/_icons.scss */ +.fa-book:before { + content: "\f02d"; +} + +/* line 49, source/lib/font-awesome/_icons.scss */ +.fa-bookmark:before { + content: "\f02e"; +} + +/* line 50, source/lib/font-awesome/_icons.scss */ +.fa-print:before { + content: "\f02f"; +} + +/* line 51, source/lib/font-awesome/_icons.scss */ +.fa-camera:before { + content: "\f030"; +} + +/* line 52, source/lib/font-awesome/_icons.scss */ +.fa-font:before { + content: "\f031"; +} + +/* line 53, source/lib/font-awesome/_icons.scss */ +.fa-bold:before { + content: "\f032"; +} + +/* line 54, source/lib/font-awesome/_icons.scss */ +.fa-italic:before { + content: "\f033"; +} + +/* line 55, source/lib/font-awesome/_icons.scss */ +.fa-text-height:before { + content: "\f034"; +} + +/* line 56, source/lib/font-awesome/_icons.scss */ +.fa-text-width:before { + content: "\f035"; +} + +/* line 57, source/lib/font-awesome/_icons.scss */ +.fa-align-left:before { + content: "\f036"; +} + +/* line 58, source/lib/font-awesome/_icons.scss */ +.fa-align-center:before { + content: "\f037"; +} + +/* line 59, source/lib/font-awesome/_icons.scss */ +.fa-align-right:before { + content: "\f038"; +} + +/* line 60, source/lib/font-awesome/_icons.scss */ +.fa-align-justify:before { + content: "\f039"; +} + +/* line 61, source/lib/font-awesome/_icons.scss */ +.fa-list:before { + content: "\f03a"; +} + +/* line 62, source/lib/font-awesome/_icons.scss */ +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} + +/* line 64, source/lib/font-awesome/_icons.scss */ +.fa-indent:before { + content: "\f03c"; +} + +/* line 65, source/lib/font-awesome/_icons.scss */ +.fa-video-camera:before { + content: "\f03d"; +} + +/* line 66, source/lib/font-awesome/_icons.scss */ +.fa-picture-o:before { + content: "\f03e"; +} + +/* line 67, source/lib/font-awesome/_icons.scss */ +.fa-pencil:before { + content: "\f040"; +} + +/* line 68, source/lib/font-awesome/_icons.scss */ +.fa-map-marker:before { + content: "\f041"; +} + +/* line 69, source/lib/font-awesome/_icons.scss */ +.fa-adjust:before { + content: "\f042"; +} + +/* line 70, source/lib/font-awesome/_icons.scss */ +.fa-tint:before { + content: "\f043"; +} + +/* line 71, source/lib/font-awesome/_icons.scss */ +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} + +/* line 73, source/lib/font-awesome/_icons.scss */ +.fa-share-square-o:before { + content: "\f045"; +} + +/* line 74, source/lib/font-awesome/_icons.scss */ +.fa-check-square-o:before { + content: "\f046"; +} + +/* line 75, source/lib/font-awesome/_icons.scss */ +.fa-arrows:before { + content: "\f047"; +} + +/* line 76, source/lib/font-awesome/_icons.scss */ +.fa-step-backward:before { + content: "\f048"; +} + +/* line 77, source/lib/font-awesome/_icons.scss */ +.fa-fast-backward:before { + content: "\f049"; +} + +/* line 78, source/lib/font-awesome/_icons.scss */ +.fa-backward:before { + content: "\f04a"; +} + +/* line 79, source/lib/font-awesome/_icons.scss */ +.fa-play:before { + content: "\f04b"; +} + +/* line 80, source/lib/font-awesome/_icons.scss */ +.fa-pause:before { + content: "\f04c"; +} + +/* line 81, source/lib/font-awesome/_icons.scss */ +.fa-stop:before { + content: "\f04d"; +} + +/* line 82, source/lib/font-awesome/_icons.scss */ +.fa-forward:before { + content: "\f04e"; +} + +/* line 83, source/lib/font-awesome/_icons.scss */ +.fa-fast-forward:before { + content: "\f050"; +} + +/* line 84, source/lib/font-awesome/_icons.scss */ +.fa-step-forward:before { + content: "\f051"; +} + +/* line 85, source/lib/font-awesome/_icons.scss */ +.fa-eject:before { + content: "\f052"; +} + +/* line 86, source/lib/font-awesome/_icons.scss */ +.fa-chevron-left:before { + content: "\f053"; +} + +/* line 87, source/lib/font-awesome/_icons.scss */ +.fa-chevron-right:before { + content: "\f054"; +} + +/* line 88, source/lib/font-awesome/_icons.scss */ +.fa-plus-circle:before { + content: "\f055"; +} + +/* line 89, source/lib/font-awesome/_icons.scss */ +.fa-minus-circle:before { + content: "\f056"; +} + +/* line 90, source/lib/font-awesome/_icons.scss */ +.fa-times-circle:before { + content: "\f057"; +} + +/* line 91, source/lib/font-awesome/_icons.scss */ +.fa-check-circle:before { + content: "\f058"; +} + +/* line 92, source/lib/font-awesome/_icons.scss */ +.fa-question-circle:before { + content: "\f059"; +} + +/* line 93, source/lib/font-awesome/_icons.scss */ +.fa-info-circle:before { + content: "\f05a"; +} + +/* line 94, source/lib/font-awesome/_icons.scss */ +.fa-crosshairs:before { + content: "\f05b"; +} + +/* line 95, source/lib/font-awesome/_icons.scss */ +.fa-times-circle-o:before { + content: "\f05c"; +} + +/* line 96, source/lib/font-awesome/_icons.scss */ +.fa-check-circle-o:before { + content: "\f05d"; +} + +/* line 97, source/lib/font-awesome/_icons.scss */ +.fa-ban:before { + content: "\f05e"; +} + +/* line 98, source/lib/font-awesome/_icons.scss */ +.fa-arrow-left:before { + content: "\f060"; +} + +/* line 99, source/lib/font-awesome/_icons.scss */ +.fa-arrow-right:before { + content: "\f061"; +} + +/* line 100, source/lib/font-awesome/_icons.scss */ +.fa-arrow-up:before { + content: "\f062"; +} + +/* line 101, source/lib/font-awesome/_icons.scss */ +.fa-arrow-down:before { + content: "\f063"; +} + +/* line 102, source/lib/font-awesome/_icons.scss */ +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} + +/* line 104, source/lib/font-awesome/_icons.scss */ +.fa-expand:before { + content: "\f065"; +} + +/* line 105, source/lib/font-awesome/_icons.scss */ +.fa-compress:before { + content: "\f066"; +} + +/* line 106, source/lib/font-awesome/_icons.scss */ +.fa-plus:before { + content: "\f067"; +} + +/* line 107, source/lib/font-awesome/_icons.scss */ +.fa-minus:before { + content: "\f068"; +} + +/* line 108, source/lib/font-awesome/_icons.scss */ +.fa-asterisk:before { + content: "\f069"; +} + +/* line 109, source/lib/font-awesome/_icons.scss */ +.fa-exclamation-circle:before { + content: "\f06a"; +} + +/* line 110, source/lib/font-awesome/_icons.scss */ +.fa-gift:before { + content: "\f06b"; +} + +/* line 111, source/lib/font-awesome/_icons.scss */ +.fa-leaf:before { + content: "\f06c"; +} + +/* line 112, source/lib/font-awesome/_icons.scss */ +.fa-fire:before { + content: "\f06d"; +} + +/* line 113, source/lib/font-awesome/_icons.scss */ +.fa-eye:before { + content: "\f06e"; +} + +/* line 114, source/lib/font-awesome/_icons.scss */ +.fa-eye-slash:before { + content: "\f070"; +} + +/* line 115, source/lib/font-awesome/_icons.scss */ +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} + +/* line 117, source/lib/font-awesome/_icons.scss */ +.fa-plane:before { + content: "\f072"; +} + +/* line 118, source/lib/font-awesome/_icons.scss */ +.fa-calendar:before { + content: "\f073"; +} + +/* line 119, source/lib/font-awesome/_icons.scss */ +.fa-random:before { + content: "\f074"; +} + +/* line 120, source/lib/font-awesome/_icons.scss */ +.fa-comment:before { + content: "\f075"; +} + +/* line 121, source/lib/font-awesome/_icons.scss */ +.fa-magnet:before { + content: "\f076"; +} + +/* line 122, source/lib/font-awesome/_icons.scss */ +.fa-chevron-up:before { + content: "\f077"; +} + +/* line 123, source/lib/font-awesome/_icons.scss */ +.fa-chevron-down:before { + content: "\f078"; +} + +/* line 124, source/lib/font-awesome/_icons.scss */ +.fa-retweet:before { + content: "\f079"; +} + +/* line 125, source/lib/font-awesome/_icons.scss */ +.fa-shopping-cart:before { + content: "\f07a"; +} + +/* line 126, source/lib/font-awesome/_icons.scss */ +.fa-folder:before { + content: "\f07b"; +} + +/* line 127, source/lib/font-awesome/_icons.scss */ +.fa-folder-open:before { + content: "\f07c"; +} + +/* line 128, source/lib/font-awesome/_icons.scss */ +.fa-arrows-v:before { + content: "\f07d"; +} + +/* line 129, source/lib/font-awesome/_icons.scss */ +.fa-arrows-h:before { + content: "\f07e"; +} + +/* line 130, source/lib/font-awesome/_icons.scss */ +.fa-bar-chart-o:before { + content: "\f080"; +} + +/* line 131, source/lib/font-awesome/_icons.scss */ +.fa-twitter-square:before { + content: "\f081"; +} + +/* line 132, source/lib/font-awesome/_icons.scss */ +.fa-facebook-square:before { + content: "\f082"; +} + +/* line 133, source/lib/font-awesome/_icons.scss */ +.fa-camera-retro:before { + content: "\f083"; +} + +/* line 134, source/lib/font-awesome/_icons.scss */ +.fa-key:before { + content: "\f084"; +} + +/* line 135, source/lib/font-awesome/_icons.scss */ +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} + +/* line 137, source/lib/font-awesome/_icons.scss */ +.fa-comments:before { + content: "\f086"; +} + +/* line 138, source/lib/font-awesome/_icons.scss */ +.fa-thumbs-o-up:before { + content: "\f087"; +} + +/* line 139, source/lib/font-awesome/_icons.scss */ +.fa-thumbs-o-down:before { + content: "\f088"; +} + +/* line 140, source/lib/font-awesome/_icons.scss */ +.fa-star-half:before { + content: "\f089"; +} + +/* line 141, source/lib/font-awesome/_icons.scss */ +.fa-heart-o:before { + content: "\f08a"; +} + +/* line 142, source/lib/font-awesome/_icons.scss */ +.fa-sign-out:before { + content: "\f08b"; +} + +/* line 143, source/lib/font-awesome/_icons.scss */ +.fa-linkedin-square:before { + content: "\f08c"; +} + +/* line 144, source/lib/font-awesome/_icons.scss */ +.fa-thumb-tack:before { + content: "\f08d"; +} + +/* line 145, source/lib/font-awesome/_icons.scss */ +.fa-external-link:before { + content: "\f08e"; +} + +/* line 146, source/lib/font-awesome/_icons.scss */ +.fa-sign-in:before { + content: "\f090"; +} + +/* line 147, source/lib/font-awesome/_icons.scss */ +.fa-trophy:before { + content: "\f091"; +} + +/* line 148, source/lib/font-awesome/_icons.scss */ +.fa-github-square:before { + content: "\f092"; +} + +/* line 149, source/lib/font-awesome/_icons.scss */ +.fa-upload:before { + content: "\f093"; +} + +/* line 150, source/lib/font-awesome/_icons.scss */ +.fa-lemon-o:before { + content: "\f094"; +} + +/* line 151, source/lib/font-awesome/_icons.scss */ +.fa-phone:before { + content: "\f095"; +} + +/* line 152, source/lib/font-awesome/_icons.scss */ +.fa-square-o:before { + content: "\f096"; +} + +/* line 153, source/lib/font-awesome/_icons.scss */ +.fa-bookmark-o:before { + content: "\f097"; +} + +/* line 154, source/lib/font-awesome/_icons.scss */ +.fa-phone-square:before { + content: "\f098"; +} + +/* line 155, source/lib/font-awesome/_icons.scss */ +.fa-twitter:before { + content: "\f099"; +} + +/* line 156, source/lib/font-awesome/_icons.scss */ +.fa-facebook:before { + content: "\f09a"; +} + +/* line 157, source/lib/font-awesome/_icons.scss */ +.fa-github:before { + content: "\f09b"; +} + +/* line 158, source/lib/font-awesome/_icons.scss */ +.fa-unlock:before { + content: "\f09c"; +} + +/* line 159, source/lib/font-awesome/_icons.scss */ +.fa-credit-card:before { + content: "\f09d"; +} + +/* line 160, source/lib/font-awesome/_icons.scss */ +.fa-rss:before { + content: "\f09e"; +} + +/* line 161, source/lib/font-awesome/_icons.scss */ +.fa-hdd-o:before { + content: "\f0a0"; +} + +/* line 162, source/lib/font-awesome/_icons.scss */ +.fa-bullhorn:before { + content: "\f0a1"; +} + +/* line 163, source/lib/font-awesome/_icons.scss */ +.fa-bell:before { + content: "\f0f3"; +} + +/* line 164, source/lib/font-awesome/_icons.scss */ +.fa-certificate:before { + content: "\f0a3"; +} + +/* line 165, source/lib/font-awesome/_icons.scss */ +.fa-hand-o-right:before { + content: "\f0a4"; +} + +/* line 166, source/lib/font-awesome/_icons.scss */ +.fa-hand-o-left:before { + content: "\f0a5"; +} + +/* line 167, source/lib/font-awesome/_icons.scss */ +.fa-hand-o-up:before { + content: "\f0a6"; +} + +/* line 168, source/lib/font-awesome/_icons.scss */ +.fa-hand-o-down:before { + content: "\f0a7"; +} + +/* line 169, source/lib/font-awesome/_icons.scss */ +.fa-arrow-circle-left:before { + content: "\f0a8"; +} + +/* line 170, source/lib/font-awesome/_icons.scss */ +.fa-arrow-circle-right:before { + content: "\f0a9"; +} + +/* line 171, source/lib/font-awesome/_icons.scss */ +.fa-arrow-circle-up:before { + content: "\f0aa"; +} + +/* line 172, source/lib/font-awesome/_icons.scss */ +.fa-arrow-circle-down:before { + content: "\f0ab"; +} + +/* line 173, source/lib/font-awesome/_icons.scss */ +.fa-globe:before { + content: "\f0ac"; +} + +/* line 174, source/lib/font-awesome/_icons.scss */ +.fa-wrench:before { + content: "\f0ad"; +} + +/* line 175, source/lib/font-awesome/_icons.scss */ +.fa-tasks:before { + content: "\f0ae"; +} + +/* line 176, source/lib/font-awesome/_icons.scss */ +.fa-filter:before { + content: "\f0b0"; +} + +/* line 177, source/lib/font-awesome/_icons.scss */ +.fa-briefcase:before { + content: "\f0b1"; +} + +/* line 178, source/lib/font-awesome/_icons.scss */ +.fa-arrows-alt:before { + content: "\f0b2"; +} + +/* line 179, source/lib/font-awesome/_icons.scss */ +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} + +/* line 181, source/lib/font-awesome/_icons.scss */ +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} + +/* line 183, source/lib/font-awesome/_icons.scss */ +.fa-cloud:before { + content: "\f0c2"; +} + +/* line 184, source/lib/font-awesome/_icons.scss */ +.fa-flask:before { + content: "\f0c3"; +} + +/* line 185, source/lib/font-awesome/_icons.scss */ +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} + +/* line 187, source/lib/font-awesome/_icons.scss */ +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} + +/* line 189, source/lib/font-awesome/_icons.scss */ +.fa-paperclip:before { + content: "\f0c6"; +} + +/* line 190, source/lib/font-awesome/_icons.scss */ +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} + +/* line 192, source/lib/font-awesome/_icons.scss */ +.fa-square:before { + content: "\f0c8"; +} + +/* line 193, source/lib/font-awesome/_icons.scss */ +.fa-bars:before { + content: "\f0c9"; +} + +/* line 194, source/lib/font-awesome/_icons.scss */ +.fa-list-ul:before { + content: "\f0ca"; +} + +/* line 195, source/lib/font-awesome/_icons.scss */ +.fa-list-ol:before { + content: "\f0cb"; +} + +/* line 196, source/lib/font-awesome/_icons.scss */ +.fa-strikethrough:before { + content: "\f0cc"; +} + +/* line 197, source/lib/font-awesome/_icons.scss */ +.fa-underline:before { + content: "\f0cd"; +} + +/* line 198, source/lib/font-awesome/_icons.scss */ +.fa-table:before { + content: "\f0ce"; +} + +/* line 199, source/lib/font-awesome/_icons.scss */ +.fa-magic:before { + content: "\f0d0"; +} + +/* line 200, source/lib/font-awesome/_icons.scss */ +.fa-truck:before { + content: "\f0d1"; +} + +/* line 201, source/lib/font-awesome/_icons.scss */ +.fa-pinterest:before { + content: "\f0d2"; +} + +/* line 202, source/lib/font-awesome/_icons.scss */ +.fa-pinterest-square:before { + content: "\f0d3"; +} + +/* line 203, source/lib/font-awesome/_icons.scss */ +.fa-google-plus-square:before { + content: "\f0d4"; +} + +/* line 204, source/lib/font-awesome/_icons.scss */ +.fa-google-plus:before { + content: "\f0d5"; +} + +/* line 205, source/lib/font-awesome/_icons.scss */ +.fa-money:before { + content: "\f0d6"; +} + +/* line 206, source/lib/font-awesome/_icons.scss */ +.fa-caret-down:before { + content: "\f0d7"; +} + +/* line 207, source/lib/font-awesome/_icons.scss */ +.fa-caret-up:before { + content: "\f0d8"; +} + +/* line 208, source/lib/font-awesome/_icons.scss */ +.fa-caret-left:before { + content: "\f0d9"; +} + +/* line 209, source/lib/font-awesome/_icons.scss */ +.fa-caret-right:before { + content: "\f0da"; +} + +/* line 210, source/lib/font-awesome/_icons.scss */ +.fa-columns:before { + content: "\f0db"; +} + +/* line 211, source/lib/font-awesome/_icons.scss */ +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} + +/* line 213, source/lib/font-awesome/_icons.scss */ +.fa-sort-down:before, +.fa-sort-asc:before { + content: "\f0dd"; +} + +/* line 215, source/lib/font-awesome/_icons.scss */ +.fa-sort-up:before, +.fa-sort-desc:before { + content: "\f0de"; +} + +/* line 217, source/lib/font-awesome/_icons.scss */ +.fa-envelope:before { + content: "\f0e0"; +} + +/* line 218, source/lib/font-awesome/_icons.scss */ +.fa-linkedin:before { + content: "\f0e1"; +} + +/* line 219, source/lib/font-awesome/_icons.scss */ +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} + +/* line 221, source/lib/font-awesome/_icons.scss */ +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} + +/* line 223, source/lib/font-awesome/_icons.scss */ +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} + +/* line 225, source/lib/font-awesome/_icons.scss */ +.fa-comment-o:before { + content: "\f0e5"; +} + +/* line 226, source/lib/font-awesome/_icons.scss */ +.fa-comments-o:before { + content: "\f0e6"; +} + +/* line 227, source/lib/font-awesome/_icons.scss */ +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} + +/* line 229, source/lib/font-awesome/_icons.scss */ +.fa-sitemap:before { + content: "\f0e8"; +} + +/* line 230, source/lib/font-awesome/_icons.scss */ +.fa-umbrella:before { + content: "\f0e9"; +} + +/* line 231, source/lib/font-awesome/_icons.scss */ +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} + +/* line 233, source/lib/font-awesome/_icons.scss */ +.fa-lightbulb-o:before { + content: "\f0eb"; +} + +/* line 234, source/lib/font-awesome/_icons.scss */ +.fa-exchange:before { + content: "\f0ec"; +} + +/* line 235, source/lib/font-awesome/_icons.scss */ +.fa-cloud-download:before { + content: "\f0ed"; +} + +/* line 236, source/lib/font-awesome/_icons.scss */ +.fa-cloud-upload:before { + content: "\f0ee"; +} + +/* line 237, source/lib/font-awesome/_icons.scss */ +.fa-user-md:before { + content: "\f0f0"; +} + +/* line 238, source/lib/font-awesome/_icons.scss */ +.fa-stethoscope:before { + content: "\f0f1"; +} + +/* line 239, source/lib/font-awesome/_icons.scss */ +.fa-suitcase:before { + content: "\f0f2"; +} + +/* line 240, source/lib/font-awesome/_icons.scss */ +.fa-bell-o:before { + content: "\f0a2"; +} + +/* line 241, source/lib/font-awesome/_icons.scss */ +.fa-coffee:before { + content: "\f0f4"; +} + +/* line 242, source/lib/font-awesome/_icons.scss */ +.fa-cutlery:before { + content: "\f0f5"; +} + +/* line 243, source/lib/font-awesome/_icons.scss */ +.fa-file-text-o:before { + content: "\f0f6"; +} + +/* line 244, source/lib/font-awesome/_icons.scss */ +.fa-building-o:before { + content: "\f0f7"; +} + +/* line 245, source/lib/font-awesome/_icons.scss */ +.fa-hospital-o:before { + content: "\f0f8"; +} + +/* line 246, source/lib/font-awesome/_icons.scss */ +.fa-ambulance:before { + content: "\f0f9"; +} + +/* line 247, source/lib/font-awesome/_icons.scss */ +.fa-medkit:before { + content: "\f0fa"; +} + +/* line 248, source/lib/font-awesome/_icons.scss */ +.fa-fighter-jet:before { + content: "\f0fb"; +} + +/* line 249, source/lib/font-awesome/_icons.scss */ +.fa-beer:before { + content: "\f0fc"; +} + +/* line 250, source/lib/font-awesome/_icons.scss */ +.fa-h-square:before { + content: "\f0fd"; +} + +/* line 251, source/lib/font-awesome/_icons.scss */ +.fa-plus-square:before { + content: "\f0fe"; +} + +/* line 252, source/lib/font-awesome/_icons.scss */ +.fa-angle-double-left:before { + content: "\f100"; +} + +/* line 253, source/lib/font-awesome/_icons.scss */ +.fa-angle-double-right:before { + content: "\f101"; +} + +/* line 254, source/lib/font-awesome/_icons.scss */ +.fa-angle-double-up:before { + content: "\f102"; +} + +/* line 255, source/lib/font-awesome/_icons.scss */ +.fa-angle-double-down:before { + content: "\f103"; +} + +/* line 256, source/lib/font-awesome/_icons.scss */ +.fa-angle-left:before { + content: "\f104"; +} + +/* line 257, source/lib/font-awesome/_icons.scss */ +.fa-angle-right:before { + content: "\f105"; +} + +/* line 258, source/lib/font-awesome/_icons.scss */ +.fa-angle-up:before { + content: "\f106"; +} + +/* line 259, source/lib/font-awesome/_icons.scss */ +.fa-angle-down:before { + content: "\f107"; +} + +/* line 260, source/lib/font-awesome/_icons.scss */ +.fa-desktop:before { + content: "\f108"; +} + +/* line 261, source/lib/font-awesome/_icons.scss */ +.fa-laptop:before { + content: "\f109"; +} + +/* line 262, source/lib/font-awesome/_icons.scss */ +.fa-tablet:before { + content: "\f10a"; +} + +/* line 263, source/lib/font-awesome/_icons.scss */ +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} + +/* line 265, source/lib/font-awesome/_icons.scss */ +.fa-circle-o:before { + content: "\f10c"; +} + +/* line 266, source/lib/font-awesome/_icons.scss */ +.fa-quote-left:before { + content: "\f10d"; +} + +/* line 267, source/lib/font-awesome/_icons.scss */ +.fa-quote-right:before { + content: "\f10e"; +} + +/* line 268, source/lib/font-awesome/_icons.scss */ +.fa-spinner:before { + content: "\f110"; +} + +/* line 269, source/lib/font-awesome/_icons.scss */ +.fa-circle:before { + content: "\f111"; +} + +/* line 270, source/lib/font-awesome/_icons.scss */ +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} + +/* line 272, source/lib/font-awesome/_icons.scss */ +.fa-github-alt:before { + content: "\f113"; +} + +/* line 273, source/lib/font-awesome/_icons.scss */ +.fa-folder-o:before { + content: "\f114"; +} + +/* line 274, source/lib/font-awesome/_icons.scss */ +.fa-folder-open-o:before { + content: "\f115"; +} + +/* line 275, source/lib/font-awesome/_icons.scss */ +.fa-smile-o:before { + content: "\f118"; +} + +/* line 276, source/lib/font-awesome/_icons.scss */ +.fa-frown-o:before { + content: "\f119"; +} + +/* line 277, source/lib/font-awesome/_icons.scss */ +.fa-meh-o:before { + content: "\f11a"; +} + +/* line 278, source/lib/font-awesome/_icons.scss */ +.fa-gamepad:before { + content: "\f11b"; +} + +/* line 279, source/lib/font-awesome/_icons.scss */ +.fa-keyboard-o:before { + content: "\f11c"; +} + +/* line 280, source/lib/font-awesome/_icons.scss */ +.fa-flag-o:before { + content: "\f11d"; +} + +/* line 281, source/lib/font-awesome/_icons.scss */ +.fa-flag-checkered:before { + content: "\f11e"; +} + +/* line 282, source/lib/font-awesome/_icons.scss */ +.fa-terminal:before { + content: "\f120"; +} + +/* line 283, source/lib/font-awesome/_icons.scss */ +.fa-code:before { + content: "\f121"; +} + +/* line 284, source/lib/font-awesome/_icons.scss */ +.fa-reply-all:before { + content: "\f122"; +} + +/* line 285, source/lib/font-awesome/_icons.scss */ +.fa-mail-reply-all:before { + content: "\f122"; +} + +/* line 286, source/lib/font-awesome/_icons.scss */ +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} + +/* line 289, source/lib/font-awesome/_icons.scss */ +.fa-location-arrow:before { + content: "\f124"; +} + +/* line 290, source/lib/font-awesome/_icons.scss */ +.fa-crop:before { + content: "\f125"; +} + +/* line 291, source/lib/font-awesome/_icons.scss */ +.fa-code-fork:before { + content: "\f126"; +} + +/* line 292, source/lib/font-awesome/_icons.scss */ +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} + +/* line 294, source/lib/font-awesome/_icons.scss */ +.fa-question:before { + content: "\f128"; +} + +/* line 295, source/lib/font-awesome/_icons.scss */ +.fa-info:before { + content: "\f129"; +} + +/* line 296, source/lib/font-awesome/_icons.scss */ +.fa-exclamation:before { + content: "\f12a"; +} + +/* line 297, source/lib/font-awesome/_icons.scss */ +.fa-superscript:before { + content: "\f12b"; +} + +/* line 298, source/lib/font-awesome/_icons.scss */ +.fa-subscript:before { + content: "\f12c"; +} + +/* line 299, source/lib/font-awesome/_icons.scss */ +.fa-eraser:before { + content: "\f12d"; +} + +/* line 300, source/lib/font-awesome/_icons.scss */ +.fa-puzzle-piece:before { + content: "\f12e"; +} + +/* line 301, source/lib/font-awesome/_icons.scss */ +.fa-microphone:before { + content: "\f130"; +} + +/* line 302, source/lib/font-awesome/_icons.scss */ +.fa-microphone-slash:before { + content: "\f131"; +} + +/* line 303, source/lib/font-awesome/_icons.scss */ +.fa-shield:before { + content: "\f132"; +} + +/* line 304, source/lib/font-awesome/_icons.scss */ +.fa-calendar-o:before { + content: "\f133"; +} + +/* line 305, source/lib/font-awesome/_icons.scss */ +.fa-fire-extinguisher:before { + content: "\f134"; +} + +/* line 306, source/lib/font-awesome/_icons.scss */ +.fa-rocket:before { + content: "\f135"; +} + +/* line 307, source/lib/font-awesome/_icons.scss */ +.fa-maxcdn:before { + content: "\f136"; +} + +/* line 308, source/lib/font-awesome/_icons.scss */ +.fa-chevron-circle-left:before { + content: "\f137"; +} + +/* line 309, source/lib/font-awesome/_icons.scss */ +.fa-chevron-circle-right:before { + content: "\f138"; +} + +/* line 310, source/lib/font-awesome/_icons.scss */ +.fa-chevron-circle-up:before { + content: "\f139"; +} + +/* line 311, source/lib/font-awesome/_icons.scss */ +.fa-chevron-circle-down:before { + content: "\f13a"; +} + +/* line 312, source/lib/font-awesome/_icons.scss */ +.fa-html5:before { + content: "\f13b"; +} + +/* line 313, source/lib/font-awesome/_icons.scss */ +.fa-css3:before { + content: "\f13c"; +} + +/* line 314, source/lib/font-awesome/_icons.scss */ +.fa-anchor:before { + content: "\f13d"; +} + +/* line 315, source/lib/font-awesome/_icons.scss */ +.fa-unlock-alt:before { + content: "\f13e"; +} + +/* line 316, source/lib/font-awesome/_icons.scss */ +.fa-bullseye:before { + content: "\f140"; +} + +/* line 317, source/lib/font-awesome/_icons.scss */ +.fa-ellipsis-h:before { + content: "\f141"; +} + +/* line 318, source/lib/font-awesome/_icons.scss */ +.fa-ellipsis-v:before { + content: "\f142"; +} + +/* line 319, source/lib/font-awesome/_icons.scss */ +.fa-rss-square:before { + content: "\f143"; +} + +/* line 320, source/lib/font-awesome/_icons.scss */ +.fa-play-circle:before { + content: "\f144"; +} + +/* line 321, source/lib/font-awesome/_icons.scss */ +.fa-ticket:before { + content: "\f145"; +} + +/* line 322, source/lib/font-awesome/_icons.scss */ +.fa-minus-square:before { + content: "\f146"; +} + +/* line 323, source/lib/font-awesome/_icons.scss */ +.fa-minus-square-o:before { + content: "\f147"; +} + +/* line 324, source/lib/font-awesome/_icons.scss */ +.fa-level-up:before { + content: "\f148"; +} + +/* line 325, source/lib/font-awesome/_icons.scss */ +.fa-level-down:before { + content: "\f149"; +} + +/* line 326, source/lib/font-awesome/_icons.scss */ +.fa-check-square:before { + content: "\f14a"; +} + +/* line 327, source/lib/font-awesome/_icons.scss */ +.fa-pencil-square:before { + content: "\f14b"; +} + +/* line 328, source/lib/font-awesome/_icons.scss */ +.fa-external-link-square:before { + content: "\f14c"; +} + +/* line 329, source/lib/font-awesome/_icons.scss */ +.fa-share-square:before { + content: "\f14d"; +} + +/* line 330, source/lib/font-awesome/_icons.scss */ +.fa-compass:before { + content: "\f14e"; +} + +/* line 331, source/lib/font-awesome/_icons.scss */ +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} + +/* line 333, source/lib/font-awesome/_icons.scss */ +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} + +/* line 335, source/lib/font-awesome/_icons.scss */ +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} + +/* line 337, source/lib/font-awesome/_icons.scss */ +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} + +/* line 339, source/lib/font-awesome/_icons.scss */ +.fa-gbp:before { + content: "\f154"; +} + +/* line 340, source/lib/font-awesome/_icons.scss */ +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} + +/* line 342, source/lib/font-awesome/_icons.scss */ +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} + +/* line 344, source/lib/font-awesome/_icons.scss */ +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} + +/* line 348, source/lib/font-awesome/_icons.scss */ +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} + +/* line 351, source/lib/font-awesome/_icons.scss */ +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} + +/* line 353, source/lib/font-awesome/_icons.scss */ +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} + +/* line 355, source/lib/font-awesome/_icons.scss */ +.fa-file:before { + content: "\f15b"; +} + +/* line 356, source/lib/font-awesome/_icons.scss */ +.fa-file-text:before { + content: "\f15c"; +} + +/* line 357, source/lib/font-awesome/_icons.scss */ +.fa-sort-alpha-asc:before { + content: "\f15d"; +} + +/* line 358, source/lib/font-awesome/_icons.scss */ +.fa-sort-alpha-desc:before { + content: "\f15e"; +} + +/* line 359, source/lib/font-awesome/_icons.scss */ +.fa-sort-amount-asc:before { + content: "\f160"; +} + +/* line 360, source/lib/font-awesome/_icons.scss */ +.fa-sort-amount-desc:before { + content: "\f161"; +} + +/* line 361, source/lib/font-awesome/_icons.scss */ +.fa-sort-numeric-asc:before { + content: "\f162"; +} + +/* line 362, source/lib/font-awesome/_icons.scss */ +.fa-sort-numeric-desc:before { + content: "\f163"; +} + +/* line 363, source/lib/font-awesome/_icons.scss */ +.fa-thumbs-up:before { + content: "\f164"; +} + +/* line 364, source/lib/font-awesome/_icons.scss */ +.fa-thumbs-down:before { + content: "\f165"; +} + +/* line 365, source/lib/font-awesome/_icons.scss */ +.fa-youtube-square:before { + content: "\f166"; +} + +/* line 366, source/lib/font-awesome/_icons.scss */ +.fa-youtube:before { + content: "\f167"; +} + +/* line 367, source/lib/font-awesome/_icons.scss */ +.fa-xing:before { + content: "\f168"; +} + +/* line 368, source/lib/font-awesome/_icons.scss */ +.fa-xing-square:before { + content: "\f169"; +} + +/* line 369, source/lib/font-awesome/_icons.scss */ +.fa-youtube-play:before { + content: "\f16a"; +} + +/* line 370, source/lib/font-awesome/_icons.scss */ +.fa-dropbox:before { + content: "\f16b"; +} + +/* line 371, source/lib/font-awesome/_icons.scss */ +.fa-stack-overflow:before { + content: "\f16c"; +} + +/* line 372, source/lib/font-awesome/_icons.scss */ +.fa-instagram:before { + content: "\f16d"; +} + +/* line 373, source/lib/font-awesome/_icons.scss */ +.fa-flickr:before { + content: "\f16e"; +} + +/* line 374, source/lib/font-awesome/_icons.scss */ +.fa-adn:before { + content: "\f170"; +} + +/* line 375, source/lib/font-awesome/_icons.scss */ +.fa-bitbucket:before { + content: "\f171"; +} + +/* line 376, source/lib/font-awesome/_icons.scss */ +.fa-bitbucket-square:before { + content: "\f172"; +} + +/* line 377, source/lib/font-awesome/_icons.scss */ +.fa-tumblr:before { + content: "\f173"; +} + +/* line 378, source/lib/font-awesome/_icons.scss */ +.fa-tumblr-square:before { + content: "\f174"; +} + +/* line 379, source/lib/font-awesome/_icons.scss */ +.fa-long-arrow-down:before { + content: "\f175"; +} + +/* line 380, source/lib/font-awesome/_icons.scss */ +.fa-long-arrow-up:before { + content: "\f176"; +} + +/* line 381, source/lib/font-awesome/_icons.scss */ +.fa-long-arrow-left:before { + content: "\f177"; +} + +/* line 382, source/lib/font-awesome/_icons.scss */ +.fa-long-arrow-right:before { + content: "\f178"; +} + +/* line 383, source/lib/font-awesome/_icons.scss */ +.fa-apple:before { + content: "\f179"; +} + +/* line 384, source/lib/font-awesome/_icons.scss */ +.fa-windows:before { + content: "\f17a"; +} + +/* line 385, source/lib/font-awesome/_icons.scss */ +.fa-android:before { + content: "\f17b"; +} + +/* line 386, source/lib/font-awesome/_icons.scss */ +.fa-linux:before { + content: "\f17c"; +} + +/* line 387, source/lib/font-awesome/_icons.scss */ +.fa-dribbble:before { + content: "\f17d"; +} + +/* line 388, source/lib/font-awesome/_icons.scss */ +.fa-skype:before { + content: "\f17e"; +} + +/* line 389, source/lib/font-awesome/_icons.scss */ +.fa-foursquare:before { + content: "\f180"; +} + +/* line 390, source/lib/font-awesome/_icons.scss */ +.fa-trello:before { + content: "\f181"; +} + +/* line 391, source/lib/font-awesome/_icons.scss */ +.fa-female:before { + content: "\f182"; +} + +/* line 392, source/lib/font-awesome/_icons.scss */ +.fa-male:before { + content: "\f183"; +} + +/* line 393, source/lib/font-awesome/_icons.scss */ +.fa-gittip:before { + content: "\f184"; +} + +/* line 394, source/lib/font-awesome/_icons.scss */ +.fa-sun-o:before { + content: "\f185"; +} + +/* line 395, source/lib/font-awesome/_icons.scss */ +.fa-moon-o:before { + content: "\f186"; +} + +/* line 396, source/lib/font-awesome/_icons.scss */ +.fa-archive:before { + content: "\f187"; +} + +/* line 397, source/lib/font-awesome/_icons.scss */ +.fa-bug:before { + content: "\f188"; +} + +/* line 398, source/lib/font-awesome/_icons.scss */ +.fa-vk:before { + content: "\f189"; +} + +/* line 399, source/lib/font-awesome/_icons.scss */ +.fa-weibo:before { + content: "\f18a"; +} + +/* line 400, source/lib/font-awesome/_icons.scss */ +.fa-renren:before { + content: "\f18b"; +} + +/* line 401, source/lib/font-awesome/_icons.scss */ +.fa-pagelines:before { + content: "\f18c"; +} + +/* line 402, source/lib/font-awesome/_icons.scss */ +.fa-stack-exchange:before { + content: "\f18d"; +} + +/* line 403, source/lib/font-awesome/_icons.scss */ +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} + +/* line 404, source/lib/font-awesome/_icons.scss */ +.fa-arrow-circle-o-left:before { + content: "\f190"; +} + +/* line 405, source/lib/font-awesome/_icons.scss */ +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} + +/* line 407, source/lib/font-awesome/_icons.scss */ +.fa-dot-circle-o:before { + content: "\f192"; +} + +/* line 408, source/lib/font-awesome/_icons.scss */ +.fa-wheelchair:before { + content: "\f193"; +} + +/* line 409, source/lib/font-awesome/_icons.scss */ +.fa-vimeo-square:before { + content: "\f194"; +} + +/* line 410, source/lib/font-awesome/_icons.scss */ +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} + +/* line 412, source/lib/font-awesome/_icons.scss */ +.fa-plus-square-o:before { + content: "\f196"; +} + +@font-face { + font-family: 'League Gothic'; + src: url("../../lib/font/league_gothic-webfont.eot"); + src: url("../../lib/font/league_gothic-webfont.eot?#iefix") format("embedded-opentype"), url("../../lib/font/league_gothic-webfont.woff") format("woff"), url("../../lib/font/league_gothic-webfont.ttf") format("truetype"), url("../../lib/font/league_gothic-webfont.svg#LeagueGothicRegular") format("svg"); + font-weight: normal; + font-style: normal; +} +/********************************************* + * GLOBAL STYLES + *********************************************/ +/* line 7, source/template/_theme.scss */ +body { + background: #2b2b2b; + background: #1c1e20; + background: -moz-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); + background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #555a5f), color-stop(100%, #1c1e20)); + background: -webkit-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); + background: -o-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); + background: -ms-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); + background: radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%); +} + +@font-face { + font-family: "Gotham"; + src: local("Gotham"), url("../../fonts/Gotham/Gotham-Medium.otf") format("opentype"); + font-weight: normal; + font-style: normal; +} +@font-face { + font-family: "Gotham-Book"; + src: local("Gotham-Book"), url("../../fonts/Gotham/Gotham-Book.otf") format("opentype"); + font-weight: normal; + font-style: normal; +} +@font-face { + font-family: "Gotham-Italic"; + src: local("Gotham-Italic"), url("../../fonts/Gotham/Gotham-MediumIta.otf") format("opentype"); + font-weight: normal; + font-style: italic; +} +@font-face { + font-family: "Gotham-Bold"; + src: local("Gotham-Bold"), url("../../fonts/Gotham/Gotham-Bold.otf") format("opentype"); + font-weight: bold; + font-style: bold; +} +/* line 42, source/template/_theme.scss */ +.reveal { + font-family: "Gotham-Book", "Helvetica", Arial, sans-serif; + font-size: 36px; + font-weight: 200; + letter-spacing: -0.02em; + color: #eeeeee; +} + +/* line 50, source/template/_theme.scss */ +::selection { + color: white; + background: #f9b8bb; + text-shadow: none; +} + +/* line 56, source/template/_theme.scss */ +.reveal ul li { + line-height: 1.2em; + margin-bottom: 10px; +} + +/********************************************* + * HEADERS + *********************************************/ +/* line 67, source/template/_theme.scss */ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #f05b62; + font-family: "Gotham-Bold", Impact, sans-serif; + line-height: 0.9em; + letter-spacing: 0.02em; + text-transform: uppercase; + text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); +} + +/* line 84, source/template/_theme.scss */ +.reveal h1 { + text-shadow: 0 1px 0 #cccccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbbbbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaaaaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15); +} + +/* line 88, source/template/_theme.scss */ +.reveal h1 { + font-size: 3.77em; +} + +/* line 89, source/template/_theme.scss */ +.reveal h2 { + font-size: 2.11em; +} + +/* line 90, source/template/_theme.scss */ +.reveal h3 { + font-size: 1.55em; +} + +/* line 91, source/template/_theme.scss */ +.reveal h4 { + font-size: 1em; +} + +/********************************************* +* OVERRIDES +**********************************************/ +/* line 96, source/template/_theme.scss */ +.left-align { + text-align: left; +} + +/* line 97, source/template/_theme.scss */ +.right-align { + text-align: right; +} + +/* line 98, source/template/_theme.scss */ +.left { + float: left; +} + +/* line 99, source/template/_theme.scss */ +.right { + float: right; +} + +/* line 100, source/template/_theme.scss */ +.clear { + clear: both; +} + +/* line 101, source/template/_theme.scss */ +.blue { + color: #01A9B4 !important; +} + +/* line 102, source/template/_theme.scss */ +.green { + color: #92BB44 !important; +} + +/* line 103, source/template/_theme.scss */ +.yellow { + color: #EDAB23 !important; +} + +/* line 104, source/template/_theme.scss */ +.pink { + color: #F05B62 !important; +} + +/* line 105, source/template/_theme.scss */ +.red { + color: #8B0036 !important; +} + +/********************************************* + * LINKS + *********************************************/ +/* line 112, source/template/_theme.scss */ +.reveal a:not(.image) { + -moz-transition: color 0.15x ease; + -o-transition: color 0.15x ease; + -webkit-transition: color 0.15x ease; + transition: color 0.15x ease; + color: #f05b62; + text-decoration: none; +} + +/* line 117, source/template/_theme.scss */ +.reveal a:not(.image):hover { + color: #f9b8bb; + text-shadow: none; + border: none; +} + +/* line 124, source/template/_theme.scss */ +.reveal .roll span:after { + color: #fff; + background: #f05b62; +} + +/********************************************* + * IMAGES + *********************************************/ +/* line 134, source/template/_theme.scss */ +.reveal section img { + margin: 15px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #eeeeee; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); + -moz-transition: all 0.2s linear; + -o-transition: all 0.2s linear; + -webkit-transition: all 0.2s linear; + transition: all 0.2s linear; +} + +/* line 144, source/template/_theme.scss */ +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #f05b62; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); +} + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +/* line 156, source/template/_theme.scss */ +.reveal .controls .navigate-left, +.reveal .controls .navigate-left.enabled { + border-right-color: #f05b62; +} + +/* line 161, source/template/_theme.scss */ +.reveal .controls .navigate-right, +.reveal .controls .navigate-right.enabled { + border-left-color: #f05b62; +} + +/* line 166, source/template/_theme.scss */ +.reveal .controls .navigate-up, +.reveal .controls .navigate-up.enabled { + border-bottom-color: #f05b62; +} + +/* line 171, source/template/_theme.scss */ +.reveal .controls .navigate-down, +.reveal .controls .navigate-down.enabled { + border-top-color: #f05b62; +} + +/* line 176, source/template/_theme.scss */ +.reveal .controls div.navigate-left.enabled:hover { + border-right-color: #f9b8bb; +} + +/* line 180, source/template/_theme.scss */ +.reveal .controls div.navigate-right.enabled:hover { + border-left-color: #f9b8bb; +} + +/* line 184, source/template/_theme.scss */ +.reveal .controls div.navigate-up.enabled:hover { + border-bottom-color: #f9b8bb; +} + +/* line 188, source/template/_theme.scss */ +.reveal .controls div.navigate-down.enabled:hover { + border-top-color: #f9b8bb; +} + +/********************************************* + * PROGRESS BAR + *********************************************/ +/* line 197, source/template/_theme.scss */ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); +} + +/* line 200, source/template/_theme.scss */ +.reveal .progress span { + background: #f05b62; + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); +} + +/********************************************* + * FOOTER + *********************************************/ +/* line 211, source/template/_theme.scss */ +.reveal footer { + position: fixed; + height: 40px; + width: 100%; + bottom: 3px; + left: 0; + z-index: 10; + font-size: 35%; + text-align: right; + background-image: url(../../images/pink-logo.png); + background-repeat: no-repeat; + background-size: auto 100%; +} +/* line 225, source/template/_theme.scss */ +.reveal .copyright { + margin: 15px 5px 0 100px; + font-style: italic; +} +/* line 229, source/template/_theme.scss */ +.reveal .copyright a img { + vertical-align: middle; +} diff --git a/css/theme/gdiaa.css b/css/theme/gdi-sass.css similarity index 96% rename from css/theme/gdiaa.css rename to css/theme/gdi-sass.css index 483df5b..4a9ddd0 100644 --- a/css/theme/gdiaa.css +++ b/css/theme/gdi-sass.css @@ -1,4 +1,4 @@ -/* Girl Develop It Ann Arbor */ +/* Getting Sassy With CSS - Workshop Settings*/ /*! * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) @@ -2271,7 +2271,7 @@ body { } /* line 101, source/template/_theme.scss */ -.blue, .event__title { +.blue { color: #01A9B4 !important; } @@ -2300,15 +2300,10 @@ body { color: #333333 !important; } -/* line 107, source/template/_theme.scss */ -.grey--light, .event__title small { - color: #666 !important; -} - /********************************************* * LINKS *********************************************/ -/* line 114, source/template/_theme.scss */ +/* line 113, source/template/_theme.scss */ .reveal a:not(.image) { -moz-transition: color 0.15x ease; -o-transition: color 0.15x ease; @@ -2318,14 +2313,14 @@ body { text-decoration: none; } -/* line 119, source/template/_theme.scss */ +/* line 118, source/template/_theme.scss */ .reveal a:not(.image):hover { color: #f9b8bb; text-shadow: none; border: none; } -/* line 126, source/template/_theme.scss */ +/* line 125, source/template/_theme.scss */ .reveal .roll span:after { color: #fff; background: #01a9b4; @@ -2334,7 +2329,7 @@ body { /********************************************* * IMAGES *********************************************/ -/* line 136, source/template/_theme.scss */ +/* line 135, source/template/_theme.scss */ .reveal section img { margin: 15px; background: rgba(255, 255, 255, 0.12); @@ -2346,7 +2341,7 @@ body { transition: all 0.2s linear; } -/* line 146, source/template/_theme.scss */ +/* line 145, source/template/_theme.scss */ .reveal a:hover img { background: rgba(255, 255, 255, 0.2); border-color: #01a9b4; @@ -2356,46 +2351,46 @@ body { /********************************************* * NAVIGATION CONTROLS *********************************************/ -/* line 158, source/template/_theme.scss */ +/* line 157, source/template/_theme.scss */ .reveal .controls .navigate-left, .reveal .controls .navigate-left.enabled { border-right-color: #01a9b4; } -/* line 163, source/template/_theme.scss */ +/* line 162, source/template/_theme.scss */ .reveal .controls .navigate-right, .reveal .controls .navigate-right.enabled { border-left-color: #01a9b4; } -/* line 168, source/template/_theme.scss */ +/* line 167, source/template/_theme.scss */ .reveal .controls .navigate-up, .reveal .controls .navigate-up.enabled { border-bottom-color: #01a9b4; } -/* line 173, source/template/_theme.scss */ +/* line 172, source/template/_theme.scss */ .reveal .controls .navigate-down, .reveal .controls .navigate-down.enabled { border-top-color: #01a9b4; } -/* line 178, source/template/_theme.scss */ +/* line 177, source/template/_theme.scss */ .reveal .controls div.navigate-left.enabled:hover { border-right-color: #f9b8bb; } -/* line 182, source/template/_theme.scss */ +/* line 181, source/template/_theme.scss */ .reveal .controls div.navigate-right.enabled:hover { border-left-color: #f9b8bb; } -/* line 186, source/template/_theme.scss */ +/* line 185, source/template/_theme.scss */ .reveal .controls div.navigate-up.enabled:hover { border-bottom-color: #f9b8bb; } -/* line 190, source/template/_theme.scss */ +/* line 189, source/template/_theme.scss */ .reveal .controls div.navigate-down.enabled:hover { border-top-color: #f9b8bb; } @@ -2403,12 +2398,12 @@ body { /********************************************* * PROGRESS BAR *********************************************/ -/* line 199, source/template/_theme.scss */ +/* line 198, source/template/_theme.scss */ .reveal .progress { background: rgba(0, 0, 0, 0.2); } -/* line 202, source/template/_theme.scss */ +/* line 201, source/template/_theme.scss */ .reveal .progress span { background: #01a9b4; -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); @@ -2420,7 +2415,7 @@ body { /********************************************* * FOOTER *********************************************/ -/* line 213, source/template/_theme.scss */ +/* line 212, source/template/_theme.scss */ .reveal footer { position: fixed; height: 40px; @@ -2434,121 +2429,117 @@ body { background-repeat: no-repeat; background-size: auto 100%; } -/* line 227, source/template/_theme.scss */ +/* line 226, source/template/_theme.scss */ .reveal .copyright { margin: 15px 5px 0 100px; font-style: italic; } -/* line 231, source/template/_theme.scss */ +/* line 230, source/template/_theme.scss */ .reveal .copyright a img { vertical-align: middle; } -/********************************************* - * EVENT - *********************************************/ -/* line 241, source/template/_theme.scss */ -.event__title { - text-transform: uppercase !important; +/* line 8, source/gdi-sass.scss */ +.reveal .hide { + display: none; } - -/* line 8, source/gdiaa.scss */ +/* line 10, source/gdi-sass.scss */ .reveal .center-align { text-align: center; } -/* line 10, source/gdiaa.scss */ +/* line 12, source/gdi-sass.scss */ .reveal .copy--small { font-size: .8em; } -/* line 14, source/gdiaa.scss */ +/* line 16, source/gdi-sass.scss */ .reveal .copy--xsmall { font-size: .6em; } -/* line 18, source/gdiaa.scss */ +/* line 20, source/gdi-sass.scss */ .reveal strong { text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); } -/* line 22, source/gdiaa.scss */ +/* line 24, source/gdi-sass.scss */ .reveal .horz--auto { margin: inherit auto; } -/* line 26, source/gdiaa.scss */ +/* line 28, source/gdi-sass.scss */ .reveal .box { margin: 2em 0; } -/* line 30, source/gdiaa.scss */ +/* line 32, source/gdi-sass.scss */ .reveal .box--top { margin-top: 3em; } -/* line 34, source/gdiaa.scss */ +/* line 36, source/gdi-sass.scss */ .reveal .box--small { margin: 1em 0; } -/* line 39, source/gdiaa.scss */ +/* line 41, source/gdi-sass.scss */ .reveal ul ul, .reveal ul ol, .reveal ol ul, .reveal ol ol { margin-top: 10px; } -/* line 43, source/gdiaa.scss */ +/* line 45, source/gdi-sass.scss */ .reveal ul li:last-child, .reveal ol li:last-child { margin-bottom: 0; } -/* line 49, source/gdiaa.scss */ +/* line 51, source/gdi-sass.scss */ .reveal .list--tall ol, .reveal .list--tall ul { margin-top: 20px; } -/* line 50, source/gdiaa.scss */ +/* line 52, source/gdi-sass.scss */ .reveal .list--tall li { margin-bottom: 20px; } -/* line 54, source/gdiaa.scss */ +/* line 56, source/gdi-sass.scss */ .reveal .list--xtall ol, .reveal .list--xtall ul { margin-top: 40px; } -/* line 55, source/gdiaa.scss */ +/* line 57, source/gdi-sass.scss */ .reveal .list--xtall li { margin-bottom: 40px; } -/* line 58, source/gdiaa.scss */ +/* line 60, source/gdi-sass.scss */ .reveal .list--bare { list-style-type: none; } -/* line 62, source/gdiaa.scss */ +/* line 64, source/gdi-sass.scss */ .reveal .broken { list-style-position: inside; margin-top: .25em; } -/* line 66, source/gdiaa.scss */ +/* line 68, source/gdi-sass.scss */ .reveal .broken li { display: block; padding: .25em 1em; } -/* line 72, source/gdiaa.scss */ +/* line 74, source/gdi-sass.scss */ .reveal ol.broken { counter-reset: counter; } -/* line 76, source/gdiaa.scss */ +/* line 78, source/gdi-sass.scss */ .reveal ol.broken li:before { color: #ccc; content: counter(counter) "."; counter-increment: counter; padding-right: .5em; } -/* line 85, source/gdiaa.scss */ +/* line 87, source/gdi-sass.scss */ .reveal .break { border-top: 20px solid #efefef; padding-top: 2em; } -/* line 90, source/gdiaa.scss */ +/* line 92, source/gdi-sass.scss */ .reveal section img { margin: 0 15px; } -/* line 94, source/gdiaa.scss */ +/* line 96, source/gdi-sass.scss */ .reveal .img--bare { border: none; background: transparent; box-shadow: none; } -/* line 100, source/gdiaa.scss */ +/* line 102, source/gdi-sass.scss */ .reveal .gist { font-size: .5em; line-height: 1.3em; @@ -2556,18 +2547,18 @@ body { overflow: scroll; } -/* line 108, source/gdiaa.scss */ +/* line 110, source/gdi-sass.scss */ code { background: #e8e8e8; } -/* line 112, source/gdiaa.scss */ +/* line 114, source/gdi-sass.scss */ pre { margin: 0; width: auto; box-shadow: none; } -/* line 117, source/gdiaa.scss */ +/* line 119, source/gdi-sass.scss */ pre code { background: transparent; border: 6px solid #fff; diff --git a/css/theme/gdicool.css b/css/theme/gdicool.css index 4dc6780..21c2adf 100755 --- a/css/theme/gdicool.css +++ b/css/theme/gdicool.css @@ -2270,7 +2270,7 @@ body { } /* line 101, source/template/_theme.scss */ -.blue, .event__title { +.blue { color: #01A9B4 !important; } @@ -2299,15 +2299,10 @@ body { color: #333333 !important; } -/* line 107, source/template/_theme.scss */ -.grey--light, .event__title small { - color: #666 !important; -} - /********************************************* * LINKS *********************************************/ -/* line 114, source/template/_theme.scss */ +/* line 113, source/template/_theme.scss */ .reveal a:not(.image) { -moz-transition: color 0.15x ease; -o-transition: color 0.15x ease; @@ -2317,14 +2312,14 @@ body { text-decoration: none; } -/* line 119, source/template/_theme.scss */ +/* line 118, source/template/_theme.scss */ .reveal a:not(.image):hover { color: #f9b8bb; text-shadow: none; border: none; } -/* line 126, source/template/_theme.scss */ +/* line 125, source/template/_theme.scss */ .reveal .roll span:after { color: #fff; background: #01a9b4; @@ -2333,7 +2328,7 @@ body { /********************************************* * IMAGES *********************************************/ -/* line 136, source/template/_theme.scss */ +/* line 135, source/template/_theme.scss */ .reveal section img { margin: 15px; background: rgba(255, 255, 255, 0.12); @@ -2345,7 +2340,7 @@ body { transition: all 0.2s linear; } -/* line 146, source/template/_theme.scss */ +/* line 145, source/template/_theme.scss */ .reveal a:hover img { background: rgba(255, 255, 255, 0.2); border-color: #01a9b4; @@ -2355,46 +2350,46 @@ body { /********************************************* * NAVIGATION CONTROLS *********************************************/ -/* line 158, source/template/_theme.scss */ +/* line 157, source/template/_theme.scss */ .reveal .controls .navigate-left, .reveal .controls .navigate-left.enabled { border-right-color: #01a9b4; } -/* line 163, source/template/_theme.scss */ +/* line 162, source/template/_theme.scss */ .reveal .controls .navigate-right, .reveal .controls .navigate-right.enabled { border-left-color: #01a9b4; } -/* line 168, source/template/_theme.scss */ +/* line 167, source/template/_theme.scss */ .reveal .controls .navigate-up, .reveal .controls .navigate-up.enabled { border-bottom-color: #01a9b4; } -/* line 173, source/template/_theme.scss */ +/* line 172, source/template/_theme.scss */ .reveal .controls .navigate-down, .reveal .controls .navigate-down.enabled { border-top-color: #01a9b4; } -/* line 178, source/template/_theme.scss */ +/* line 177, source/template/_theme.scss */ .reveal .controls div.navigate-left.enabled:hover { border-right-color: #f9b8bb; } -/* line 182, source/template/_theme.scss */ +/* line 181, source/template/_theme.scss */ .reveal .controls div.navigate-right.enabled:hover { border-left-color: #f9b8bb; } -/* line 186, source/template/_theme.scss */ +/* line 185, source/template/_theme.scss */ .reveal .controls div.navigate-up.enabled:hover { border-bottom-color: #f9b8bb; } -/* line 190, source/template/_theme.scss */ +/* line 189, source/template/_theme.scss */ .reveal .controls div.navigate-down.enabled:hover { border-top-color: #f9b8bb; } @@ -2402,12 +2397,12 @@ body { /********************************************* * PROGRESS BAR *********************************************/ -/* line 199, source/template/_theme.scss */ +/* line 198, source/template/_theme.scss */ .reveal .progress { background: rgba(0, 0, 0, 0.2); } -/* line 202, source/template/_theme.scss */ +/* line 201, source/template/_theme.scss */ .reveal .progress span { background: #01a9b4; -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); @@ -2419,7 +2414,7 @@ body { /********************************************* * FOOTER *********************************************/ -/* line 213, source/template/_theme.scss */ +/* line 212, source/template/_theme.scss */ .reveal footer { position: fixed; height: 40px; @@ -2433,20 +2428,12 @@ body { background-repeat: no-repeat; background-size: auto 100%; } -/* line 227, source/template/_theme.scss */ +/* line 226, source/template/_theme.scss */ .reveal .copyright { margin: 15px 5px 0 100px; font-style: italic; } -/* line 231, source/template/_theme.scss */ +/* line 230, source/template/_theme.scss */ .reveal .copyright a img { vertical-align: middle; } - -/********************************************* - * EVENT - *********************************************/ -/* line 241, source/template/_theme.scss */ -.event__title { - text-transform: uppercase !important; -} diff --git a/css/theme/gdidefault.css b/css/theme/gdidefault.css index 90b9251..a40b074 100755 --- a/css/theme/gdidefault.css +++ b/css/theme/gdidefault.css @@ -2270,7 +2270,7 @@ body { } /* line 101, source/template/_theme.scss */ -.blue, .event__title { +.blue { color: #01A9B4 !important; } @@ -2299,15 +2299,10 @@ body { color: #333333 !important; } -/* line 107, source/template/_theme.scss */ -.grey--light, .event__title small { - color: #666 !important; -} - /********************************************* * LINKS *********************************************/ -/* line 114, source/template/_theme.scss */ +/* line 113, source/template/_theme.scss */ .reveal a:not(.image) { -moz-transition: color 0.15x ease; -o-transition: color 0.15x ease; @@ -2317,14 +2312,14 @@ body { text-decoration: none; } -/* line 119, source/template/_theme.scss */ +/* line 118, source/template/_theme.scss */ .reveal a:not(.image):hover { color: #f9b8bb; text-shadow: none; border: none; } -/* line 126, source/template/_theme.scss */ +/* line 125, source/template/_theme.scss */ .reveal .roll span:after { color: #fff; background: #01a9b4; @@ -2333,7 +2328,7 @@ body { /********************************************* * IMAGES *********************************************/ -/* line 136, source/template/_theme.scss */ +/* line 135, source/template/_theme.scss */ .reveal section img { margin: 15px; background: rgba(255, 255, 255, 0.12); @@ -2345,7 +2340,7 @@ body { transition: all 0.2s linear; } -/* line 146, source/template/_theme.scss */ +/* line 145, source/template/_theme.scss */ .reveal a:hover img { background: rgba(255, 255, 255, 0.2); border-color: #01a9b4; @@ -2355,46 +2350,46 @@ body { /********************************************* * NAVIGATION CONTROLS *********************************************/ -/* line 158, source/template/_theme.scss */ +/* line 157, source/template/_theme.scss */ .reveal .controls .navigate-left, .reveal .controls .navigate-left.enabled { border-right-color: #01a9b4; } -/* line 163, source/template/_theme.scss */ +/* line 162, source/template/_theme.scss */ .reveal .controls .navigate-right, .reveal .controls .navigate-right.enabled { border-left-color: #01a9b4; } -/* line 168, source/template/_theme.scss */ +/* line 167, source/template/_theme.scss */ .reveal .controls .navigate-up, .reveal .controls .navigate-up.enabled { border-bottom-color: #01a9b4; } -/* line 173, source/template/_theme.scss */ +/* line 172, source/template/_theme.scss */ .reveal .controls .navigate-down, .reveal .controls .navigate-down.enabled { border-top-color: #01a9b4; } -/* line 178, source/template/_theme.scss */ +/* line 177, source/template/_theme.scss */ .reveal .controls div.navigate-left.enabled:hover { border-right-color: #f9b8bb; } -/* line 182, source/template/_theme.scss */ +/* line 181, source/template/_theme.scss */ .reveal .controls div.navigate-right.enabled:hover { border-left-color: #f9b8bb; } -/* line 186, source/template/_theme.scss */ +/* line 185, source/template/_theme.scss */ .reveal .controls div.navigate-up.enabled:hover { border-bottom-color: #f9b8bb; } -/* line 190, source/template/_theme.scss */ +/* line 189, source/template/_theme.scss */ .reveal .controls div.navigate-down.enabled:hover { border-top-color: #f9b8bb; } @@ -2402,12 +2397,12 @@ body { /********************************************* * PROGRESS BAR *********************************************/ -/* line 199, source/template/_theme.scss */ +/* line 198, source/template/_theme.scss */ .reveal .progress { background: rgba(0, 0, 0, 0.2); } -/* line 202, source/template/_theme.scss */ +/* line 201, source/template/_theme.scss */ .reveal .progress span { background: #01a9b4; -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); @@ -2419,7 +2414,7 @@ body { /********************************************* * FOOTER *********************************************/ -/* line 213, source/template/_theme.scss */ +/* line 212, source/template/_theme.scss */ .reveal footer { position: fixed; height: 40px; @@ -2433,20 +2428,12 @@ body { background-repeat: no-repeat; background-size: auto 100%; } -/* line 227, source/template/_theme.scss */ +/* line 226, source/template/_theme.scss */ .reveal .copyright { margin: 15px 5px 0 100px; font-style: italic; } -/* line 231, source/template/_theme.scss */ +/* line 230, source/template/_theme.scss */ .reveal .copyright a img { vertical-align: middle; } - -/********************************************* - * EVENT - *********************************************/ -/* line 241, source/template/_theme.scss */ -.event__title { - text-transform: uppercase !important; -} diff --git a/css/theme/gdilight.css b/css/theme/gdilight.css index 7fa850b..328e148 100755 --- a/css/theme/gdilight.css +++ b/css/theme/gdilight.css @@ -2270,7 +2270,7 @@ body { } /* line 101, source/template/_theme.scss */ -.blue, .event__title { +.blue { color: #01A9B4 !important; } @@ -2299,15 +2299,10 @@ body { color: #333333 !important; } -/* line 107, source/template/_theme.scss */ -.grey--light, .event__title small { - color: #666 !important; -} - /********************************************* * LINKS *********************************************/ -/* line 114, source/template/_theme.scss */ +/* line 113, source/template/_theme.scss */ .reveal a:not(.image) { -moz-transition: color 0.15x ease; -o-transition: color 0.15x ease; @@ -2317,14 +2312,14 @@ body { text-decoration: none; } -/* line 119, source/template/_theme.scss */ +/* line 118, source/template/_theme.scss */ .reveal a:not(.image):hover { color: #f9b8bb; text-shadow: none; border: none; } -/* line 126, source/template/_theme.scss */ +/* line 125, source/template/_theme.scss */ .reveal .roll span:after { color: #fff; background: #01a9b4; @@ -2333,7 +2328,7 @@ body { /********************************************* * IMAGES *********************************************/ -/* line 136, source/template/_theme.scss */ +/* line 135, source/template/_theme.scss */ .reveal section img { margin: 15px; background: rgba(255, 255, 255, 0.12); @@ -2345,7 +2340,7 @@ body { transition: all 0.2s linear; } -/* line 146, source/template/_theme.scss */ +/* line 145, source/template/_theme.scss */ .reveal a:hover img { background: rgba(255, 255, 255, 0.2); border-color: #01a9b4; @@ -2355,46 +2350,46 @@ body { /********************************************* * NAVIGATION CONTROLS *********************************************/ -/* line 158, source/template/_theme.scss */ +/* line 157, source/template/_theme.scss */ .reveal .controls .navigate-left, .reveal .controls .navigate-left.enabled { border-right-color: #01a9b4; } -/* line 163, source/template/_theme.scss */ +/* line 162, source/template/_theme.scss */ .reveal .controls .navigate-right, .reveal .controls .navigate-right.enabled { border-left-color: #01a9b4; } -/* line 168, source/template/_theme.scss */ +/* line 167, source/template/_theme.scss */ .reveal .controls .navigate-up, .reveal .controls .navigate-up.enabled { border-bottom-color: #01a9b4; } -/* line 173, source/template/_theme.scss */ +/* line 172, source/template/_theme.scss */ .reveal .controls .navigate-down, .reveal .controls .navigate-down.enabled { border-top-color: #01a9b4; } -/* line 178, source/template/_theme.scss */ +/* line 177, source/template/_theme.scss */ .reveal .controls div.navigate-left.enabled:hover { border-right-color: #f9b8bb; } -/* line 182, source/template/_theme.scss */ +/* line 181, source/template/_theme.scss */ .reveal .controls div.navigate-right.enabled:hover { border-left-color: #f9b8bb; } -/* line 186, source/template/_theme.scss */ +/* line 185, source/template/_theme.scss */ .reveal .controls div.navigate-up.enabled:hover { border-bottom-color: #f9b8bb; } -/* line 190, source/template/_theme.scss */ +/* line 189, source/template/_theme.scss */ .reveal .controls div.navigate-down.enabled:hover { border-top-color: #f9b8bb; } @@ -2402,12 +2397,12 @@ body { /********************************************* * PROGRESS BAR *********************************************/ -/* line 199, source/template/_theme.scss */ +/* line 198, source/template/_theme.scss */ .reveal .progress { background: rgba(0, 0, 0, 0.2); } -/* line 202, source/template/_theme.scss */ +/* line 201, source/template/_theme.scss */ .reveal .progress span { background: #01a9b4; -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); @@ -2419,7 +2414,7 @@ body { /********************************************* * FOOTER *********************************************/ -/* line 213, source/template/_theme.scss */ +/* line 212, source/template/_theme.scss */ .reveal footer { position: fixed; height: 40px; @@ -2433,20 +2428,12 @@ body { background-repeat: no-repeat; background-size: auto 100%; } -/* line 227, source/template/_theme.scss */ +/* line 226, source/template/_theme.scss */ .reveal .copyright { margin: 15px 5px 0 100px; font-style: italic; } -/* line 231, source/template/_theme.scss */ +/* line 230, source/template/_theme.scss */ .reveal .copyright a img { vertical-align: middle; } - -/********************************************* - * EVENT - *********************************************/ -/* line 241, source/template/_theme.scss */ -.event__title { - text-transform: uppercase !important; -} diff --git a/css/theme/gdisunny.css b/css/theme/gdisunny.css index 49ac78a..d0fce3d 100755 --- a/css/theme/gdisunny.css +++ b/css/theme/gdisunny.css @@ -2270,7 +2270,7 @@ body { } /* line 101, source/template/_theme.scss */ -.blue, .event__title { +.blue { color: #01A9B4 !important; } @@ -2299,15 +2299,10 @@ body { color: #333333 !important; } -/* line 107, source/template/_theme.scss */ -.grey--light, .event__title small { - color: #666 !important; -} - /********************************************* * LINKS *********************************************/ -/* line 114, source/template/_theme.scss */ +/* line 113, source/template/_theme.scss */ .reveal a:not(.image) { -moz-transition: color 0.15x ease; -o-transition: color 0.15x ease; @@ -2317,14 +2312,14 @@ body { text-decoration: none; } -/* line 119, source/template/_theme.scss */ +/* line 118, source/template/_theme.scss */ .reveal a:not(.image):hover { color: #f9b8bb; text-shadow: none; border: none; } -/* line 126, source/template/_theme.scss */ +/* line 125, source/template/_theme.scss */ .reveal .roll span:after { color: #fff; background: #92bb44; @@ -2333,7 +2328,7 @@ body { /********************************************* * IMAGES *********************************************/ -/* line 136, source/template/_theme.scss */ +/* line 135, source/template/_theme.scss */ .reveal section img { margin: 15px; background: rgba(255, 255, 255, 0.12); @@ -2345,7 +2340,7 @@ body { transition: all 0.2s linear; } -/* line 146, source/template/_theme.scss */ +/* line 145, source/template/_theme.scss */ .reveal a:hover img { background: rgba(255, 255, 255, 0.2); border-color: #92bb44; @@ -2355,46 +2350,46 @@ body { /********************************************* * NAVIGATION CONTROLS *********************************************/ -/* line 158, source/template/_theme.scss */ +/* line 157, source/template/_theme.scss */ .reveal .controls .navigate-left, .reveal .controls .navigate-left.enabled { border-right-color: #92bb44; } -/* line 163, source/template/_theme.scss */ +/* line 162, source/template/_theme.scss */ .reveal .controls .navigate-right, .reveal .controls .navigate-right.enabled { border-left-color: #92bb44; } -/* line 168, source/template/_theme.scss */ +/* line 167, source/template/_theme.scss */ .reveal .controls .navigate-up, .reveal .controls .navigate-up.enabled { border-bottom-color: #92bb44; } -/* line 173, source/template/_theme.scss */ +/* line 172, source/template/_theme.scss */ .reveal .controls .navigate-down, .reveal .controls .navigate-down.enabled { border-top-color: #92bb44; } -/* line 178, source/template/_theme.scss */ +/* line 177, source/template/_theme.scss */ .reveal .controls div.navigate-left.enabled:hover { border-right-color: #f9b8bb; } -/* line 182, source/template/_theme.scss */ +/* line 181, source/template/_theme.scss */ .reveal .controls div.navigate-right.enabled:hover { border-left-color: #f9b8bb; } -/* line 186, source/template/_theme.scss */ +/* line 185, source/template/_theme.scss */ .reveal .controls div.navigate-up.enabled:hover { border-bottom-color: #f9b8bb; } -/* line 190, source/template/_theme.scss */ +/* line 189, source/template/_theme.scss */ .reveal .controls div.navigate-down.enabled:hover { border-top-color: #f9b8bb; } @@ -2402,12 +2397,12 @@ body { /********************************************* * PROGRESS BAR *********************************************/ -/* line 199, source/template/_theme.scss */ +/* line 198, source/template/_theme.scss */ .reveal .progress { background: rgba(0, 0, 0, 0.2); } -/* line 202, source/template/_theme.scss */ +/* line 201, source/template/_theme.scss */ .reveal .progress span { background: #92bb44; -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); @@ -2419,7 +2414,7 @@ body { /********************************************* * FOOTER *********************************************/ -/* line 213, source/template/_theme.scss */ +/* line 212, source/template/_theme.scss */ .reveal footer { position: fixed; height: 40px; @@ -2433,20 +2428,12 @@ body { background-repeat: no-repeat; background-size: auto 100%; } -/* line 227, source/template/_theme.scss */ +/* line 226, source/template/_theme.scss */ .reveal .copyright { margin: 15px 5px 0 100px; font-style: italic; } -/* line 231, source/template/_theme.scss */ +/* line 230, source/template/_theme.scss */ .reveal .copyright a img { vertical-align: middle; } - -/********************************************* - * EVENT - *********************************************/ -/* line 241, source/template/_theme.scss */ -.event__title { - text-transform: uppercase !important; -} diff --git a/css/theme/sass-plain.css b/css/theme/sass-plain.css new file mode 100644 index 0000000..883a34d --- /dev/null +++ b/css/theme/sass-plain.css @@ -0,0 +1,2581 @@ +/* Getting Sassy With CSS - Workshop Settings*/ +/* Getting Sassy With CSS - Workshop Settings*/ +/*! + * Font Awesome 4.0.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url("../../fonts/FontAwesome/fontawesome-webfont.eot?v=4.0.3"); + src: url("../../fonts/FontAwesome/fontawesome-webfont.eot?#iefix&v=4.0.3") format("embedded-opentype"), url("../../fonts/FontAwesome/fontawesome-webfont.woff?v=4.0.3") format("woff"), url("../../fonts/FontAwesome/fontawesome-webfont.ttf?v=4.0.3") format("truetype"), url("../../fonts/FontAwesome/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular") format("svg"); + font-weight: normal; + font-style: normal; +} +/* line 4, source/lib/font-awesome/_core.scss */ +.fa { + display: inline-block; + font-family: FontAwesome !important; + font-style: normal !important; + font-weight: normal !important; + line-height: 1 !important; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* makes the font 33% larger relative to the icon container */ +/* line 5, source/lib/font-awesome/_larger.scss */ +.fa-lg { + font-size: 1.33333em; + line-height: 0.75em; + vertical-align: -15%; +} + +/* line 10, source/lib/font-awesome/_larger.scss */ +.fa-2x { + font-size: 2em; +} + +/* line 11, source/lib/font-awesome/_larger.scss */ +.fa-3x { + font-size: 3em; +} + +/* line 12, source/lib/font-awesome/_larger.scss */ +.fa-4x { + font-size: 4em; +} + +/* line 13, source/lib/font-awesome/_larger.scss */ +.fa-5x { + font-size: 5em; +} + +/* line 3, source/lib/font-awesome/_fixed-width.scss */ +.fa-fw { + width: 1.28571em; + text-align: center; +} + +/* line 4, source/lib/font-awesome/_list.scss */ +.fa-ul { + padding-left: 0; + margin-left: 2.14286em; + list-style-type: none; +} +/* line 8, source/lib/font-awesome/_list.scss */ +.fa-ul > li { + position: relative; +} + +/* line 10, source/lib/font-awesome/_list.scss */ +.fa-li { + position: absolute; + left: -2.14286em; + width: 2.14286em; + top: 0.14286em; + text-align: center; +} +/* line 16, source/lib/font-awesome/_list.scss */ +.fa-li.fa-lg { + left: -1.85714em; +} + +/* line 4, source/lib/font-awesome/_bordered-pulled.scss */ +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} + +/* line 10, source/lib/font-awesome/_bordered-pulled.scss */ +.pull-right { + float: right; +} + +/* line 11, source/lib/font-awesome/_bordered-pulled.scss */ +.pull-left { + float: left; +} + +/* line 14, source/lib/font-awesome/_bordered-pulled.scss */ +.fa.pull-left { + margin-right: .3em; +} +/* line 15, source/lib/font-awesome/_bordered-pulled.scss */ +.fa.pull-right { + margin-left: .3em; +} + +/* line 4, source/lib/font-awesome/_spinning.scss */ +.fa-spin { + -webkit-animation: spin 2s infinite linear; + -moz-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; +} + +@-moz-keyframes spin { + /* line 12, source/lib/font-awesome/_spinning.scss */ + 0% { + -moz-transform: rotate(0deg); + } + + /* line 13, source/lib/font-awesome/_spinning.scss */ + 100% { + -moz-transform: rotate(359deg); + } +} +@-webkit-keyframes spin { + /* line 16, source/lib/font-awesome/_spinning.scss */ + 0% { + -webkit-transform: rotate(0deg); + } + + /* line 17, source/lib/font-awesome/_spinning.scss */ + 100% { + -webkit-transform: rotate(359deg); + } +} +@-o-keyframes spin { + /* line 20, source/lib/font-awesome/_spinning.scss */ + 0% { + -o-transform: rotate(0deg); + } + + /* line 21, source/lib/font-awesome/_spinning.scss */ + 100% { + -o-transform: rotate(359deg); + } +} +@-ms-keyframes spin { + /* line 24, source/lib/font-awesome/_spinning.scss */ + 0% { + -ms-transform: rotate(0deg); + } + + /* line 25, source/lib/font-awesome/_spinning.scss */ + 100% { + -ms-transform: rotate(359deg); + } +} +@keyframes spin { + /* line 28, source/lib/font-awesome/_spinning.scss */ + 0% { + transform: rotate(0deg); + } + + /* line 29, source/lib/font-awesome/_spinning.scss */ + 100% { + transform: rotate(359deg); + } +} +/* line 4, source/lib/font-awesome/_rotated-flipped.scss */ +.fa-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation); + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); +} + +/* line 5, source/lib/font-awesome/_rotated-flipped.scss */ +.fa-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation); + -webkit-transform: rotate(180deg); + -moz-transform: rotate(180deg); + -ms-transform: rotate(180deg); + -o-transform: rotate(180deg); + transform: rotate(180deg); +} + +/* line 6, source/lib/font-awesome/_rotated-flipped.scss */ +.fa-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation); + -webkit-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -ms-transform: rotate(270deg); + -o-transform: rotate(270deg); + transform: rotate(270deg); +} + +/* line 8, source/lib/font-awesome/_rotated-flipped.scss */ +.fa-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation); + -webkit-transform: scale(-1, 1); + -moz-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + transform: scale(-1, 1); +} + +/* line 9, source/lib/font-awesome/_rotated-flipped.scss */ +.fa-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation); + -webkit-transform: scale(1, -1); + -moz-transform: scale(1, -1); + -ms-transform: scale(1, -1); + -o-transform: scale(1, -1); + transform: scale(1, -1); +} + +/* line 4, source/lib/font-awesome/_stacked.scss */ +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} + +/* line 12, source/lib/font-awesome/_stacked.scss */ +.fa-stack-1x, .fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} + +/* line 18, source/lib/font-awesome/_stacked.scss */ +.fa-stack-1x { + line-height: inherit; +} + +/* line 19, source/lib/font-awesome/_stacked.scss */ +.fa-stack-2x { + font-size: 2em; +} + +/* line 20, source/lib/font-awesome/_stacked.scss */ +.fa-inverse { + color: white; +} + +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +/* line 4, source/lib/font-awesome/_icons.scss */ +.fa-glass:before { + content: "\f000"; +} + +/* line 5, source/lib/font-awesome/_icons.scss */ +.fa-music:before { + content: "\f001"; +} + +/* line 6, source/lib/font-awesome/_icons.scss */ +.fa-search:before { + content: "\f002"; +} + +/* line 7, source/lib/font-awesome/_icons.scss */ +.fa-envelope-o:before { + content: "\f003"; +} + +/* line 8, source/lib/font-awesome/_icons.scss */ +.fa-heart:before { + content: "\f004"; +} + +/* line 9, source/lib/font-awesome/_icons.scss */ +.fa-star:before { + content: "\f005"; +} + +/* line 10, source/lib/font-awesome/_icons.scss */ +.fa-star-o:before { + content: "\f006"; +} + +/* line 11, source/lib/font-awesome/_icons.scss */ +.fa-user:before { + content: "\f007"; +} + +/* line 12, source/lib/font-awesome/_icons.scss */ +.fa-film:before { + content: "\f008"; +} + +/* line 13, source/lib/font-awesome/_icons.scss */ +.fa-th-large:before { + content: "\f009"; +} + +/* line 14, source/lib/font-awesome/_icons.scss */ +.fa-th:before { + content: "\f00a"; +} + +/* line 15, source/lib/font-awesome/_icons.scss */ +.fa-th-list:before { + content: "\f00b"; +} + +/* line 16, source/lib/font-awesome/_icons.scss */ +.fa-check:before { + content: "\f00c"; +} + +/* line 17, source/lib/font-awesome/_icons.scss */ +.fa-times:before { + content: "\f00d"; +} + +/* line 18, source/lib/font-awesome/_icons.scss */ +.fa-search-plus:before { + content: "\f00e"; +} + +/* line 19, source/lib/font-awesome/_icons.scss */ +.fa-search-minus:before { + content: "\f010"; +} + +/* line 20, source/lib/font-awesome/_icons.scss */ +.fa-power-off:before { + content: "\f011"; +} + +/* line 21, source/lib/font-awesome/_icons.scss */ +.fa-signal:before { + content: "\f012"; +} + +/* line 22, source/lib/font-awesome/_icons.scss */ +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} + +/* line 24, source/lib/font-awesome/_icons.scss */ +.fa-trash-o:before { + content: "\f014"; +} + +/* line 25, source/lib/font-awesome/_icons.scss */ +.fa-home:before { + content: "\f015"; +} + +/* line 26, source/lib/font-awesome/_icons.scss */ +.fa-file-o:before { + content: "\f016"; +} + +/* line 27, source/lib/font-awesome/_icons.scss */ +.fa-clock-o:before { + content: "\f017"; +} + +/* line 28, source/lib/font-awesome/_icons.scss */ +.fa-road:before { + content: "\f018"; +} + +/* line 29, source/lib/font-awesome/_icons.scss */ +.fa-download:before { + content: "\f019"; +} + +/* line 30, source/lib/font-awesome/_icons.scss */ +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} + +/* line 31, source/lib/font-awesome/_icons.scss */ +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} + +/* line 32, source/lib/font-awesome/_icons.scss */ +.fa-inbox:before { + content: "\f01c"; +} + +/* line 33, source/lib/font-awesome/_icons.scss */ +.fa-play-circle-o:before { + content: "\f01d"; +} + +/* line 34, source/lib/font-awesome/_icons.scss */ +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} + +/* line 36, source/lib/font-awesome/_icons.scss */ +.fa-refresh:before { + content: "\f021"; +} + +/* line 37, source/lib/font-awesome/_icons.scss */ +.fa-list-alt:before { + content: "\f022"; +} + +/* line 38, source/lib/font-awesome/_icons.scss */ +.fa-lock:before { + content: "\f023"; +} + +/* line 39, source/lib/font-awesome/_icons.scss */ +.fa-flag:before { + content: "\f024"; +} + +/* line 40, source/lib/font-awesome/_icons.scss */ +.fa-headphones:before { + content: "\f025"; +} + +/* line 41, source/lib/font-awesome/_icons.scss */ +.fa-volume-off:before { + content: "\f026"; +} + +/* line 42, source/lib/font-awesome/_icons.scss */ +.fa-volume-down:before { + content: "\f027"; +} + +/* line 43, source/lib/font-awesome/_icons.scss */ +.fa-volume-up:before { + content: "\f028"; +} + +/* line 44, source/lib/font-awesome/_icons.scss */ +.fa-qrcode:before { + content: "\f029"; +} + +/* line 45, source/lib/font-awesome/_icons.scss */ +.fa-barcode:before { + content: "\f02a"; +} + +/* line 46, source/lib/font-awesome/_icons.scss */ +.fa-tag:before { + content: "\f02b"; +} + +/* line 47, source/lib/font-awesome/_icons.scss */ +.fa-tags:before { + content: "\f02c"; +} + +/* line 48, source/lib/font-awesome/_icons.scss */ +.fa-book:before { + content: "\f02d"; +} + +/* line 49, source/lib/font-awesome/_icons.scss */ +.fa-bookmark:before { + content: "\f02e"; +} + +/* line 50, source/lib/font-awesome/_icons.scss */ +.fa-print:before { + content: "\f02f"; +} + +/* line 51, source/lib/font-awesome/_icons.scss */ +.fa-camera:before { + content: "\f030"; +} + +/* line 52, source/lib/font-awesome/_icons.scss */ +.fa-font:before { + content: "\f031"; +} + +/* line 53, source/lib/font-awesome/_icons.scss */ +.fa-bold:before { + content: "\f032"; +} + +/* line 54, source/lib/font-awesome/_icons.scss */ +.fa-italic:before { + content: "\f033"; +} + +/* line 55, source/lib/font-awesome/_icons.scss */ +.fa-text-height:before { + content: "\f034"; +} + +/* line 56, source/lib/font-awesome/_icons.scss */ +.fa-text-width:before { + content: "\f035"; +} + +/* line 57, source/lib/font-awesome/_icons.scss */ +.fa-align-left:before { + content: "\f036"; +} + +/* line 58, source/lib/font-awesome/_icons.scss */ +.fa-align-center:before { + content: "\f037"; +} + +/* line 59, source/lib/font-awesome/_icons.scss */ +.fa-align-right:before { + content: "\f038"; +} + +/* line 60, source/lib/font-awesome/_icons.scss */ +.fa-align-justify:before { + content: "\f039"; +} + +/* line 61, source/lib/font-awesome/_icons.scss */ +.fa-list:before { + content: "\f03a"; +} + +/* line 62, source/lib/font-awesome/_icons.scss */ +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} + +/* line 64, source/lib/font-awesome/_icons.scss */ +.fa-indent:before { + content: "\f03c"; +} + +/* line 65, source/lib/font-awesome/_icons.scss */ +.fa-video-camera:before { + content: "\f03d"; +} + +/* line 66, source/lib/font-awesome/_icons.scss */ +.fa-picture-o:before { + content: "\f03e"; +} + +/* line 67, source/lib/font-awesome/_icons.scss */ +.fa-pencil:before { + content: "\f040"; +} + +/* line 68, source/lib/font-awesome/_icons.scss */ +.fa-map-marker:before { + content: "\f041"; +} + +/* line 69, source/lib/font-awesome/_icons.scss */ +.fa-adjust:before { + content: "\f042"; +} + +/* line 70, source/lib/font-awesome/_icons.scss */ +.fa-tint:before { + content: "\f043"; +} + +/* line 71, source/lib/font-awesome/_icons.scss */ +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} + +/* line 73, source/lib/font-awesome/_icons.scss */ +.fa-share-square-o:before { + content: "\f045"; +} + +/* line 74, source/lib/font-awesome/_icons.scss */ +.fa-check-square-o:before { + content: "\f046"; +} + +/* line 75, source/lib/font-awesome/_icons.scss */ +.fa-arrows:before { + content: "\f047"; +} + +/* line 76, source/lib/font-awesome/_icons.scss */ +.fa-step-backward:before { + content: "\f048"; +} + +/* line 77, source/lib/font-awesome/_icons.scss */ +.fa-fast-backward:before { + content: "\f049"; +} + +/* line 78, source/lib/font-awesome/_icons.scss */ +.fa-backward:before { + content: "\f04a"; +} + +/* line 79, source/lib/font-awesome/_icons.scss */ +.fa-play:before { + content: "\f04b"; +} + +/* line 80, source/lib/font-awesome/_icons.scss */ +.fa-pause:before { + content: "\f04c"; +} + +/* line 81, source/lib/font-awesome/_icons.scss */ +.fa-stop:before { + content: "\f04d"; +} + +/* line 82, source/lib/font-awesome/_icons.scss */ +.fa-forward:before { + content: "\f04e"; +} + +/* line 83, source/lib/font-awesome/_icons.scss */ +.fa-fast-forward:before { + content: "\f050"; +} + +/* line 84, source/lib/font-awesome/_icons.scss */ +.fa-step-forward:before { + content: "\f051"; +} + +/* line 85, source/lib/font-awesome/_icons.scss */ +.fa-eject:before { + content: "\f052"; +} + +/* line 86, source/lib/font-awesome/_icons.scss */ +.fa-chevron-left:before { + content: "\f053"; +} + +/* line 87, source/lib/font-awesome/_icons.scss */ +.fa-chevron-right:before { + content: "\f054"; +} + +/* line 88, source/lib/font-awesome/_icons.scss */ +.fa-plus-circle:before { + content: "\f055"; +} + +/* line 89, source/lib/font-awesome/_icons.scss */ +.fa-minus-circle:before { + content: "\f056"; +} + +/* line 90, source/lib/font-awesome/_icons.scss */ +.fa-times-circle:before { + content: "\f057"; +} + +/* line 91, source/lib/font-awesome/_icons.scss */ +.fa-check-circle:before { + content: "\f058"; +} + +/* line 92, source/lib/font-awesome/_icons.scss */ +.fa-question-circle:before { + content: "\f059"; +} + +/* line 93, source/lib/font-awesome/_icons.scss */ +.fa-info-circle:before { + content: "\f05a"; +} + +/* line 94, source/lib/font-awesome/_icons.scss */ +.fa-crosshairs:before { + content: "\f05b"; +} + +/* line 95, source/lib/font-awesome/_icons.scss */ +.fa-times-circle-o:before { + content: "\f05c"; +} + +/* line 96, source/lib/font-awesome/_icons.scss */ +.fa-check-circle-o:before { + content: "\f05d"; +} + +/* line 97, source/lib/font-awesome/_icons.scss */ +.fa-ban:before { + content: "\f05e"; +} + +/* line 98, source/lib/font-awesome/_icons.scss */ +.fa-arrow-left:before { + content: "\f060"; +} + +/* line 99, source/lib/font-awesome/_icons.scss */ +.fa-arrow-right:before { + content: "\f061"; +} + +/* line 100, source/lib/font-awesome/_icons.scss */ +.fa-arrow-up:before { + content: "\f062"; +} + +/* line 101, source/lib/font-awesome/_icons.scss */ +.fa-arrow-down:before { + content: "\f063"; +} + +/* line 102, source/lib/font-awesome/_icons.scss */ +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} + +/* line 104, source/lib/font-awesome/_icons.scss */ +.fa-expand:before { + content: "\f065"; +} + +/* line 105, source/lib/font-awesome/_icons.scss */ +.fa-compress:before { + content: "\f066"; +} + +/* line 106, source/lib/font-awesome/_icons.scss */ +.fa-plus:before { + content: "\f067"; +} + +/* line 107, source/lib/font-awesome/_icons.scss */ +.fa-minus:before { + content: "\f068"; +} + +/* line 108, source/lib/font-awesome/_icons.scss */ +.fa-asterisk:before { + content: "\f069"; +} + +/* line 109, source/lib/font-awesome/_icons.scss */ +.fa-exclamation-circle:before { + content: "\f06a"; +} + +/* line 110, source/lib/font-awesome/_icons.scss */ +.fa-gift:before { + content: "\f06b"; +} + +/* line 111, source/lib/font-awesome/_icons.scss */ +.fa-leaf:before { + content: "\f06c"; +} + +/* line 112, source/lib/font-awesome/_icons.scss */ +.fa-fire:before { + content: "\f06d"; +} + +/* line 113, source/lib/font-awesome/_icons.scss */ +.fa-eye:before { + content: "\f06e"; +} + +/* line 114, source/lib/font-awesome/_icons.scss */ +.fa-eye-slash:before { + content: "\f070"; +} + +/* line 115, source/lib/font-awesome/_icons.scss */ +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} + +/* line 117, source/lib/font-awesome/_icons.scss */ +.fa-plane:before { + content: "\f072"; +} + +/* line 118, source/lib/font-awesome/_icons.scss */ +.fa-calendar:before { + content: "\f073"; +} + +/* line 119, source/lib/font-awesome/_icons.scss */ +.fa-random:before { + content: "\f074"; +} + +/* line 120, source/lib/font-awesome/_icons.scss */ +.fa-comment:before { + content: "\f075"; +} + +/* line 121, source/lib/font-awesome/_icons.scss */ +.fa-magnet:before { + content: "\f076"; +} + +/* line 122, source/lib/font-awesome/_icons.scss */ +.fa-chevron-up:before { + content: "\f077"; +} + +/* line 123, source/lib/font-awesome/_icons.scss */ +.fa-chevron-down:before { + content: "\f078"; +} + +/* line 124, source/lib/font-awesome/_icons.scss */ +.fa-retweet:before { + content: "\f079"; +} + +/* line 125, source/lib/font-awesome/_icons.scss */ +.fa-shopping-cart:before { + content: "\f07a"; +} + +/* line 126, source/lib/font-awesome/_icons.scss */ +.fa-folder:before { + content: "\f07b"; +} + +/* line 127, source/lib/font-awesome/_icons.scss */ +.fa-folder-open:before { + content: "\f07c"; +} + +/* line 128, source/lib/font-awesome/_icons.scss */ +.fa-arrows-v:before { + content: "\f07d"; +} + +/* line 129, source/lib/font-awesome/_icons.scss */ +.fa-arrows-h:before { + content: "\f07e"; +} + +/* line 130, source/lib/font-awesome/_icons.scss */ +.fa-bar-chart-o:before { + content: "\f080"; +} + +/* line 131, source/lib/font-awesome/_icons.scss */ +.fa-twitter-square:before { + content: "\f081"; +} + +/* line 132, source/lib/font-awesome/_icons.scss */ +.fa-facebook-square:before { + content: "\f082"; +} + +/* line 133, source/lib/font-awesome/_icons.scss */ +.fa-camera-retro:before { + content: "\f083"; +} + +/* line 134, source/lib/font-awesome/_icons.scss */ +.fa-key:before { + content: "\f084"; +} + +/* line 135, source/lib/font-awesome/_icons.scss */ +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} + +/* line 137, source/lib/font-awesome/_icons.scss */ +.fa-comments:before { + content: "\f086"; +} + +/* line 138, source/lib/font-awesome/_icons.scss */ +.fa-thumbs-o-up:before { + content: "\f087"; +} + +/* line 139, source/lib/font-awesome/_icons.scss */ +.fa-thumbs-o-down:before { + content: "\f088"; +} + +/* line 140, source/lib/font-awesome/_icons.scss */ +.fa-star-half:before { + content: "\f089"; +} + +/* line 141, source/lib/font-awesome/_icons.scss */ +.fa-heart-o:before { + content: "\f08a"; +} + +/* line 142, source/lib/font-awesome/_icons.scss */ +.fa-sign-out:before { + content: "\f08b"; +} + +/* line 143, source/lib/font-awesome/_icons.scss */ +.fa-linkedin-square:before { + content: "\f08c"; +} + +/* line 144, source/lib/font-awesome/_icons.scss */ +.fa-thumb-tack:before { + content: "\f08d"; +} + +/* line 145, source/lib/font-awesome/_icons.scss */ +.fa-external-link:before { + content: "\f08e"; +} + +/* line 146, source/lib/font-awesome/_icons.scss */ +.fa-sign-in:before { + content: "\f090"; +} + +/* line 147, source/lib/font-awesome/_icons.scss */ +.fa-trophy:before { + content: "\f091"; +} + +/* line 148, source/lib/font-awesome/_icons.scss */ +.fa-github-square:before { + content: "\f092"; +} + +/* line 149, source/lib/font-awesome/_icons.scss */ +.fa-upload:before { + content: "\f093"; +} + +/* line 150, source/lib/font-awesome/_icons.scss */ +.fa-lemon-o:before { + content: "\f094"; +} + +/* line 151, source/lib/font-awesome/_icons.scss */ +.fa-phone:before { + content: "\f095"; +} + +/* line 152, source/lib/font-awesome/_icons.scss */ +.fa-square-o:before { + content: "\f096"; +} + +/* line 153, source/lib/font-awesome/_icons.scss */ +.fa-bookmark-o:before { + content: "\f097"; +} + +/* line 154, source/lib/font-awesome/_icons.scss */ +.fa-phone-square:before { + content: "\f098"; +} + +/* line 155, source/lib/font-awesome/_icons.scss */ +.fa-twitter:before { + content: "\f099"; +} + +/* line 156, source/lib/font-awesome/_icons.scss */ +.fa-facebook:before { + content: "\f09a"; +} + +/* line 157, source/lib/font-awesome/_icons.scss */ +.fa-github:before { + content: "\f09b"; +} + +/* line 158, source/lib/font-awesome/_icons.scss */ +.fa-unlock:before { + content: "\f09c"; +} + +/* line 159, source/lib/font-awesome/_icons.scss */ +.fa-credit-card:before { + content: "\f09d"; +} + +/* line 160, source/lib/font-awesome/_icons.scss */ +.fa-rss:before { + content: "\f09e"; +} + +/* line 161, source/lib/font-awesome/_icons.scss */ +.fa-hdd-o:before { + content: "\f0a0"; +} + +/* line 162, source/lib/font-awesome/_icons.scss */ +.fa-bullhorn:before { + content: "\f0a1"; +} + +/* line 163, source/lib/font-awesome/_icons.scss */ +.fa-bell:before { + content: "\f0f3"; +} + +/* line 164, source/lib/font-awesome/_icons.scss */ +.fa-certificate:before { + content: "\f0a3"; +} + +/* line 165, source/lib/font-awesome/_icons.scss */ +.fa-hand-o-right:before { + content: "\f0a4"; +} + +/* line 166, source/lib/font-awesome/_icons.scss */ +.fa-hand-o-left:before { + content: "\f0a5"; +} + +/* line 167, source/lib/font-awesome/_icons.scss */ +.fa-hand-o-up:before { + content: "\f0a6"; +} + +/* line 168, source/lib/font-awesome/_icons.scss */ +.fa-hand-o-down:before { + content: "\f0a7"; +} + +/* line 169, source/lib/font-awesome/_icons.scss */ +.fa-arrow-circle-left:before { + content: "\f0a8"; +} + +/* line 170, source/lib/font-awesome/_icons.scss */ +.fa-arrow-circle-right:before { + content: "\f0a9"; +} + +/* line 171, source/lib/font-awesome/_icons.scss */ +.fa-arrow-circle-up:before { + content: "\f0aa"; +} + +/* line 172, source/lib/font-awesome/_icons.scss */ +.fa-arrow-circle-down:before { + content: "\f0ab"; +} + +/* line 173, source/lib/font-awesome/_icons.scss */ +.fa-globe:before { + content: "\f0ac"; +} + +/* line 174, source/lib/font-awesome/_icons.scss */ +.fa-wrench:before { + content: "\f0ad"; +} + +/* line 175, source/lib/font-awesome/_icons.scss */ +.fa-tasks:before { + content: "\f0ae"; +} + +/* line 176, source/lib/font-awesome/_icons.scss */ +.fa-filter:before { + content: "\f0b0"; +} + +/* line 177, source/lib/font-awesome/_icons.scss */ +.fa-briefcase:before { + content: "\f0b1"; +} + +/* line 178, source/lib/font-awesome/_icons.scss */ +.fa-arrows-alt:before { + content: "\f0b2"; +} + +/* line 179, source/lib/font-awesome/_icons.scss */ +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} + +/* line 181, source/lib/font-awesome/_icons.scss */ +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} + +/* line 183, source/lib/font-awesome/_icons.scss */ +.fa-cloud:before { + content: "\f0c2"; +} + +/* line 184, source/lib/font-awesome/_icons.scss */ +.fa-flask:before { + content: "\f0c3"; +} + +/* line 185, source/lib/font-awesome/_icons.scss */ +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} + +/* line 187, source/lib/font-awesome/_icons.scss */ +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} + +/* line 189, source/lib/font-awesome/_icons.scss */ +.fa-paperclip:before { + content: "\f0c6"; +} + +/* line 190, source/lib/font-awesome/_icons.scss */ +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} + +/* line 192, source/lib/font-awesome/_icons.scss */ +.fa-square:before { + content: "\f0c8"; +} + +/* line 193, source/lib/font-awesome/_icons.scss */ +.fa-bars:before { + content: "\f0c9"; +} + +/* line 194, source/lib/font-awesome/_icons.scss */ +.fa-list-ul:before { + content: "\f0ca"; +} + +/* line 195, source/lib/font-awesome/_icons.scss */ +.fa-list-ol:before { + content: "\f0cb"; +} + +/* line 196, source/lib/font-awesome/_icons.scss */ +.fa-strikethrough:before { + content: "\f0cc"; +} + +/* line 197, source/lib/font-awesome/_icons.scss */ +.fa-underline:before { + content: "\f0cd"; +} + +/* line 198, source/lib/font-awesome/_icons.scss */ +.fa-table:before { + content: "\f0ce"; +} + +/* line 199, source/lib/font-awesome/_icons.scss */ +.fa-magic:before { + content: "\f0d0"; +} + +/* line 200, source/lib/font-awesome/_icons.scss */ +.fa-truck:before { + content: "\f0d1"; +} + +/* line 201, source/lib/font-awesome/_icons.scss */ +.fa-pinterest:before { + content: "\f0d2"; +} + +/* line 202, source/lib/font-awesome/_icons.scss */ +.fa-pinterest-square:before { + content: "\f0d3"; +} + +/* line 203, source/lib/font-awesome/_icons.scss */ +.fa-google-plus-square:before { + content: "\f0d4"; +} + +/* line 204, source/lib/font-awesome/_icons.scss */ +.fa-google-plus:before { + content: "\f0d5"; +} + +/* line 205, source/lib/font-awesome/_icons.scss */ +.fa-money:before { + content: "\f0d6"; +} + +/* line 206, source/lib/font-awesome/_icons.scss */ +.fa-caret-down:before { + content: "\f0d7"; +} + +/* line 207, source/lib/font-awesome/_icons.scss */ +.fa-caret-up:before { + content: "\f0d8"; +} + +/* line 208, source/lib/font-awesome/_icons.scss */ +.fa-caret-left:before { + content: "\f0d9"; +} + +/* line 209, source/lib/font-awesome/_icons.scss */ +.fa-caret-right:before { + content: "\f0da"; +} + +/* line 210, source/lib/font-awesome/_icons.scss */ +.fa-columns:before { + content: "\f0db"; +} + +/* line 211, source/lib/font-awesome/_icons.scss */ +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} + +/* line 213, source/lib/font-awesome/_icons.scss */ +.fa-sort-down:before, +.fa-sort-asc:before { + content: "\f0dd"; +} + +/* line 215, source/lib/font-awesome/_icons.scss */ +.fa-sort-up:before, +.fa-sort-desc:before { + content: "\f0de"; +} + +/* line 217, source/lib/font-awesome/_icons.scss */ +.fa-envelope:before { + content: "\f0e0"; +} + +/* line 218, source/lib/font-awesome/_icons.scss */ +.fa-linkedin:before { + content: "\f0e1"; +} + +/* line 219, source/lib/font-awesome/_icons.scss */ +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} + +/* line 221, source/lib/font-awesome/_icons.scss */ +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} + +/* line 223, source/lib/font-awesome/_icons.scss */ +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} + +/* line 225, source/lib/font-awesome/_icons.scss */ +.fa-comment-o:before { + content: "\f0e5"; +} + +/* line 226, source/lib/font-awesome/_icons.scss */ +.fa-comments-o:before { + content: "\f0e6"; +} + +/* line 227, source/lib/font-awesome/_icons.scss */ +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} + +/* line 229, source/lib/font-awesome/_icons.scss */ +.fa-sitemap:before { + content: "\f0e8"; +} + +/* line 230, source/lib/font-awesome/_icons.scss */ +.fa-umbrella:before { + content: "\f0e9"; +} + +/* line 231, source/lib/font-awesome/_icons.scss */ +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} + +/* line 233, source/lib/font-awesome/_icons.scss */ +.fa-lightbulb-o:before { + content: "\f0eb"; +} + +/* line 234, source/lib/font-awesome/_icons.scss */ +.fa-exchange:before { + content: "\f0ec"; +} + +/* line 235, source/lib/font-awesome/_icons.scss */ +.fa-cloud-download:before { + content: "\f0ed"; +} + +/* line 236, source/lib/font-awesome/_icons.scss */ +.fa-cloud-upload:before { + content: "\f0ee"; +} + +/* line 237, source/lib/font-awesome/_icons.scss */ +.fa-user-md:before { + content: "\f0f0"; +} + +/* line 238, source/lib/font-awesome/_icons.scss */ +.fa-stethoscope:before { + content: "\f0f1"; +} + +/* line 239, source/lib/font-awesome/_icons.scss */ +.fa-suitcase:before { + content: "\f0f2"; +} + +/* line 240, source/lib/font-awesome/_icons.scss */ +.fa-bell-o:before { + content: "\f0a2"; +} + +/* line 241, source/lib/font-awesome/_icons.scss */ +.fa-coffee:before { + content: "\f0f4"; +} + +/* line 242, source/lib/font-awesome/_icons.scss */ +.fa-cutlery:before { + content: "\f0f5"; +} + +/* line 243, source/lib/font-awesome/_icons.scss */ +.fa-file-text-o:before { + content: "\f0f6"; +} + +/* line 244, source/lib/font-awesome/_icons.scss */ +.fa-building-o:before { + content: "\f0f7"; +} + +/* line 245, source/lib/font-awesome/_icons.scss */ +.fa-hospital-o:before { + content: "\f0f8"; +} + +/* line 246, source/lib/font-awesome/_icons.scss */ +.fa-ambulance:before { + content: "\f0f9"; +} + +/* line 247, source/lib/font-awesome/_icons.scss */ +.fa-medkit:before { + content: "\f0fa"; +} + +/* line 248, source/lib/font-awesome/_icons.scss */ +.fa-fighter-jet:before { + content: "\f0fb"; +} + +/* line 249, source/lib/font-awesome/_icons.scss */ +.fa-beer:before { + content: "\f0fc"; +} + +/* line 250, source/lib/font-awesome/_icons.scss */ +.fa-h-square:before { + content: "\f0fd"; +} + +/* line 251, source/lib/font-awesome/_icons.scss */ +.fa-plus-square:before { + content: "\f0fe"; +} + +/* line 252, source/lib/font-awesome/_icons.scss */ +.fa-angle-double-left:before { + content: "\f100"; +} + +/* line 253, source/lib/font-awesome/_icons.scss */ +.fa-angle-double-right:before { + content: "\f101"; +} + +/* line 254, source/lib/font-awesome/_icons.scss */ +.fa-angle-double-up:before { + content: "\f102"; +} + +/* line 255, source/lib/font-awesome/_icons.scss */ +.fa-angle-double-down:before { + content: "\f103"; +} + +/* line 256, source/lib/font-awesome/_icons.scss */ +.fa-angle-left:before { + content: "\f104"; +} + +/* line 257, source/lib/font-awesome/_icons.scss */ +.fa-angle-right:before { + content: "\f105"; +} + +/* line 258, source/lib/font-awesome/_icons.scss */ +.fa-angle-up:before { + content: "\f106"; +} + +/* line 259, source/lib/font-awesome/_icons.scss */ +.fa-angle-down:before { + content: "\f107"; +} + +/* line 260, source/lib/font-awesome/_icons.scss */ +.fa-desktop:before { + content: "\f108"; +} + +/* line 261, source/lib/font-awesome/_icons.scss */ +.fa-laptop:before { + content: "\f109"; +} + +/* line 262, source/lib/font-awesome/_icons.scss */ +.fa-tablet:before { + content: "\f10a"; +} + +/* line 263, source/lib/font-awesome/_icons.scss */ +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} + +/* line 265, source/lib/font-awesome/_icons.scss */ +.fa-circle-o:before { + content: "\f10c"; +} + +/* line 266, source/lib/font-awesome/_icons.scss */ +.fa-quote-left:before { + content: "\f10d"; +} + +/* line 267, source/lib/font-awesome/_icons.scss */ +.fa-quote-right:before { + content: "\f10e"; +} + +/* line 268, source/lib/font-awesome/_icons.scss */ +.fa-spinner:before { + content: "\f110"; +} + +/* line 269, source/lib/font-awesome/_icons.scss */ +.fa-circle:before { + content: "\f111"; +} + +/* line 270, source/lib/font-awesome/_icons.scss */ +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} + +/* line 272, source/lib/font-awesome/_icons.scss */ +.fa-github-alt:before { + content: "\f113"; +} + +/* line 273, source/lib/font-awesome/_icons.scss */ +.fa-folder-o:before { + content: "\f114"; +} + +/* line 274, source/lib/font-awesome/_icons.scss */ +.fa-folder-open-o:before { + content: "\f115"; +} + +/* line 275, source/lib/font-awesome/_icons.scss */ +.fa-smile-o:before { + content: "\f118"; +} + +/* line 276, source/lib/font-awesome/_icons.scss */ +.fa-frown-o:before { + content: "\f119"; +} + +/* line 277, source/lib/font-awesome/_icons.scss */ +.fa-meh-o:before { + content: "\f11a"; +} + +/* line 278, source/lib/font-awesome/_icons.scss */ +.fa-gamepad:before { + content: "\f11b"; +} + +/* line 279, source/lib/font-awesome/_icons.scss */ +.fa-keyboard-o:before { + content: "\f11c"; +} + +/* line 280, source/lib/font-awesome/_icons.scss */ +.fa-flag-o:before { + content: "\f11d"; +} + +/* line 281, source/lib/font-awesome/_icons.scss */ +.fa-flag-checkered:before { + content: "\f11e"; +} + +/* line 282, source/lib/font-awesome/_icons.scss */ +.fa-terminal:before { + content: "\f120"; +} + +/* line 283, source/lib/font-awesome/_icons.scss */ +.fa-code:before { + content: "\f121"; +} + +/* line 284, source/lib/font-awesome/_icons.scss */ +.fa-reply-all:before { + content: "\f122"; +} + +/* line 285, source/lib/font-awesome/_icons.scss */ +.fa-mail-reply-all:before { + content: "\f122"; +} + +/* line 286, source/lib/font-awesome/_icons.scss */ +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} + +/* line 289, source/lib/font-awesome/_icons.scss */ +.fa-location-arrow:before { + content: "\f124"; +} + +/* line 290, source/lib/font-awesome/_icons.scss */ +.fa-crop:before { + content: "\f125"; +} + +/* line 291, source/lib/font-awesome/_icons.scss */ +.fa-code-fork:before { + content: "\f126"; +} + +/* line 292, source/lib/font-awesome/_icons.scss */ +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} + +/* line 294, source/lib/font-awesome/_icons.scss */ +.fa-question:before { + content: "\f128"; +} + +/* line 295, source/lib/font-awesome/_icons.scss */ +.fa-info:before { + content: "\f129"; +} + +/* line 296, source/lib/font-awesome/_icons.scss */ +.fa-exclamation:before { + content: "\f12a"; +} + +/* line 297, source/lib/font-awesome/_icons.scss */ +.fa-superscript:before { + content: "\f12b"; +} + +/* line 298, source/lib/font-awesome/_icons.scss */ +.fa-subscript:before { + content: "\f12c"; +} + +/* line 299, source/lib/font-awesome/_icons.scss */ +.fa-eraser:before { + content: "\f12d"; +} + +/* line 300, source/lib/font-awesome/_icons.scss */ +.fa-puzzle-piece:before { + content: "\f12e"; +} + +/* line 301, source/lib/font-awesome/_icons.scss */ +.fa-microphone:before { + content: "\f130"; +} + +/* line 302, source/lib/font-awesome/_icons.scss */ +.fa-microphone-slash:before { + content: "\f131"; +} + +/* line 303, source/lib/font-awesome/_icons.scss */ +.fa-shield:before { + content: "\f132"; +} + +/* line 304, source/lib/font-awesome/_icons.scss */ +.fa-calendar-o:before { + content: "\f133"; +} + +/* line 305, source/lib/font-awesome/_icons.scss */ +.fa-fire-extinguisher:before { + content: "\f134"; +} + +/* line 306, source/lib/font-awesome/_icons.scss */ +.fa-rocket:before { + content: "\f135"; +} + +/* line 307, source/lib/font-awesome/_icons.scss */ +.fa-maxcdn:before { + content: "\f136"; +} + +/* line 308, source/lib/font-awesome/_icons.scss */ +.fa-chevron-circle-left:before { + content: "\f137"; +} + +/* line 309, source/lib/font-awesome/_icons.scss */ +.fa-chevron-circle-right:before { + content: "\f138"; +} + +/* line 310, source/lib/font-awesome/_icons.scss */ +.fa-chevron-circle-up:before { + content: "\f139"; +} + +/* line 311, source/lib/font-awesome/_icons.scss */ +.fa-chevron-circle-down:before { + content: "\f13a"; +} + +/* line 312, source/lib/font-awesome/_icons.scss */ +.fa-html5:before { + content: "\f13b"; +} + +/* line 313, source/lib/font-awesome/_icons.scss */ +.fa-css3:before { + content: "\f13c"; +} + +/* line 314, source/lib/font-awesome/_icons.scss */ +.fa-anchor:before { + content: "\f13d"; +} + +/* line 315, source/lib/font-awesome/_icons.scss */ +.fa-unlock-alt:before { + content: "\f13e"; +} + +/* line 316, source/lib/font-awesome/_icons.scss */ +.fa-bullseye:before { + content: "\f140"; +} + +/* line 317, source/lib/font-awesome/_icons.scss */ +.fa-ellipsis-h:before { + content: "\f141"; +} + +/* line 318, source/lib/font-awesome/_icons.scss */ +.fa-ellipsis-v:before { + content: "\f142"; +} + +/* line 319, source/lib/font-awesome/_icons.scss */ +.fa-rss-square:before { + content: "\f143"; +} + +/* line 320, source/lib/font-awesome/_icons.scss */ +.fa-play-circle:before { + content: "\f144"; +} + +/* line 321, source/lib/font-awesome/_icons.scss */ +.fa-ticket:before { + content: "\f145"; +} + +/* line 322, source/lib/font-awesome/_icons.scss */ +.fa-minus-square:before { + content: "\f146"; +} + +/* line 323, source/lib/font-awesome/_icons.scss */ +.fa-minus-square-o:before { + content: "\f147"; +} + +/* line 324, source/lib/font-awesome/_icons.scss */ +.fa-level-up:before { + content: "\f148"; +} + +/* line 325, source/lib/font-awesome/_icons.scss */ +.fa-level-down:before { + content: "\f149"; +} + +/* line 326, source/lib/font-awesome/_icons.scss */ +.fa-check-square:before { + content: "\f14a"; +} + +/* line 327, source/lib/font-awesome/_icons.scss */ +.fa-pencil-square:before { + content: "\f14b"; +} + +/* line 328, source/lib/font-awesome/_icons.scss */ +.fa-external-link-square:before { + content: "\f14c"; +} + +/* line 329, source/lib/font-awesome/_icons.scss */ +.fa-share-square:before { + content: "\f14d"; +} + +/* line 330, source/lib/font-awesome/_icons.scss */ +.fa-compass:before { + content: "\f14e"; +} + +/* line 331, source/lib/font-awesome/_icons.scss */ +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} + +/* line 333, source/lib/font-awesome/_icons.scss */ +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} + +/* line 335, source/lib/font-awesome/_icons.scss */ +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} + +/* line 337, source/lib/font-awesome/_icons.scss */ +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} + +/* line 339, source/lib/font-awesome/_icons.scss */ +.fa-gbp:before { + content: "\f154"; +} + +/* line 340, source/lib/font-awesome/_icons.scss */ +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} + +/* line 342, source/lib/font-awesome/_icons.scss */ +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} + +/* line 344, source/lib/font-awesome/_icons.scss */ +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} + +/* line 348, source/lib/font-awesome/_icons.scss */ +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} + +/* line 351, source/lib/font-awesome/_icons.scss */ +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} + +/* line 353, source/lib/font-awesome/_icons.scss */ +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} + +/* line 355, source/lib/font-awesome/_icons.scss */ +.fa-file:before { + content: "\f15b"; +} + +/* line 356, source/lib/font-awesome/_icons.scss */ +.fa-file-text:before { + content: "\f15c"; +} + +/* line 357, source/lib/font-awesome/_icons.scss */ +.fa-sort-alpha-asc:before { + content: "\f15d"; +} + +/* line 358, source/lib/font-awesome/_icons.scss */ +.fa-sort-alpha-desc:before { + content: "\f15e"; +} + +/* line 359, source/lib/font-awesome/_icons.scss */ +.fa-sort-amount-asc:before { + content: "\f160"; +} + +/* line 360, source/lib/font-awesome/_icons.scss */ +.fa-sort-amount-desc:before { + content: "\f161"; +} + +/* line 361, source/lib/font-awesome/_icons.scss */ +.fa-sort-numeric-asc:before { + content: "\f162"; +} + +/* line 362, source/lib/font-awesome/_icons.scss */ +.fa-sort-numeric-desc:before { + content: "\f163"; +} + +/* line 363, source/lib/font-awesome/_icons.scss */ +.fa-thumbs-up:before { + content: "\f164"; +} + +/* line 364, source/lib/font-awesome/_icons.scss */ +.fa-thumbs-down:before { + content: "\f165"; +} + +/* line 365, source/lib/font-awesome/_icons.scss */ +.fa-youtube-square:before { + content: "\f166"; +} + +/* line 366, source/lib/font-awesome/_icons.scss */ +.fa-youtube:before { + content: "\f167"; +} + +/* line 367, source/lib/font-awesome/_icons.scss */ +.fa-xing:before { + content: "\f168"; +} + +/* line 368, source/lib/font-awesome/_icons.scss */ +.fa-xing-square:before { + content: "\f169"; +} + +/* line 369, source/lib/font-awesome/_icons.scss */ +.fa-youtube-play:before { + content: "\f16a"; +} + +/* line 370, source/lib/font-awesome/_icons.scss */ +.fa-dropbox:before { + content: "\f16b"; +} + +/* line 371, source/lib/font-awesome/_icons.scss */ +.fa-stack-overflow:before { + content: "\f16c"; +} + +/* line 372, source/lib/font-awesome/_icons.scss */ +.fa-instagram:before { + content: "\f16d"; +} + +/* line 373, source/lib/font-awesome/_icons.scss */ +.fa-flickr:before { + content: "\f16e"; +} + +/* line 374, source/lib/font-awesome/_icons.scss */ +.fa-adn:before { + content: "\f170"; +} + +/* line 375, source/lib/font-awesome/_icons.scss */ +.fa-bitbucket:before { + content: "\f171"; +} + +/* line 376, source/lib/font-awesome/_icons.scss */ +.fa-bitbucket-square:before { + content: "\f172"; +} + +/* line 377, source/lib/font-awesome/_icons.scss */ +.fa-tumblr:before { + content: "\f173"; +} + +/* line 378, source/lib/font-awesome/_icons.scss */ +.fa-tumblr-square:before { + content: "\f174"; +} + +/* line 379, source/lib/font-awesome/_icons.scss */ +.fa-long-arrow-down:before { + content: "\f175"; +} + +/* line 380, source/lib/font-awesome/_icons.scss */ +.fa-long-arrow-up:before { + content: "\f176"; +} + +/* line 381, source/lib/font-awesome/_icons.scss */ +.fa-long-arrow-left:before { + content: "\f177"; +} + +/* line 382, source/lib/font-awesome/_icons.scss */ +.fa-long-arrow-right:before { + content: "\f178"; +} + +/* line 383, source/lib/font-awesome/_icons.scss */ +.fa-apple:before { + content: "\f179"; +} + +/* line 384, source/lib/font-awesome/_icons.scss */ +.fa-windows:before { + content: "\f17a"; +} + +/* line 385, source/lib/font-awesome/_icons.scss */ +.fa-android:before { + content: "\f17b"; +} + +/* line 386, source/lib/font-awesome/_icons.scss */ +.fa-linux:before { + content: "\f17c"; +} + +/* line 387, source/lib/font-awesome/_icons.scss */ +.fa-dribbble:before { + content: "\f17d"; +} + +/* line 388, source/lib/font-awesome/_icons.scss */ +.fa-skype:before { + content: "\f17e"; +} + +/* line 389, source/lib/font-awesome/_icons.scss */ +.fa-foursquare:before { + content: "\f180"; +} + +/* line 390, source/lib/font-awesome/_icons.scss */ +.fa-trello:before { + content: "\f181"; +} + +/* line 391, source/lib/font-awesome/_icons.scss */ +.fa-female:before { + content: "\f182"; +} + +/* line 392, source/lib/font-awesome/_icons.scss */ +.fa-male:before { + content: "\f183"; +} + +/* line 393, source/lib/font-awesome/_icons.scss */ +.fa-gittip:before { + content: "\f184"; +} + +/* line 394, source/lib/font-awesome/_icons.scss */ +.fa-sun-o:before { + content: "\f185"; +} + +/* line 395, source/lib/font-awesome/_icons.scss */ +.fa-moon-o:before { + content: "\f186"; +} + +/* line 396, source/lib/font-awesome/_icons.scss */ +.fa-archive:before { + content: "\f187"; +} + +/* line 397, source/lib/font-awesome/_icons.scss */ +.fa-bug:before { + content: "\f188"; +} + +/* line 398, source/lib/font-awesome/_icons.scss */ +.fa-vk:before { + content: "\f189"; +} + +/* line 399, source/lib/font-awesome/_icons.scss */ +.fa-weibo:before { + content: "\f18a"; +} + +/* line 400, source/lib/font-awesome/_icons.scss */ +.fa-renren:before { + content: "\f18b"; +} + +/* line 401, source/lib/font-awesome/_icons.scss */ +.fa-pagelines:before { + content: "\f18c"; +} + +/* line 402, source/lib/font-awesome/_icons.scss */ +.fa-stack-exchange:before { + content: "\f18d"; +} + +/* line 403, source/lib/font-awesome/_icons.scss */ +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} + +/* line 404, source/lib/font-awesome/_icons.scss */ +.fa-arrow-circle-o-left:before { + content: "\f190"; +} + +/* line 405, source/lib/font-awesome/_icons.scss */ +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} + +/* line 407, source/lib/font-awesome/_icons.scss */ +.fa-dot-circle-o:before { + content: "\f192"; +} + +/* line 408, source/lib/font-awesome/_icons.scss */ +.fa-wheelchair:before { + content: "\f193"; +} + +/* line 409, source/lib/font-awesome/_icons.scss */ +.fa-vimeo-square:before { + content: "\f194"; +} + +/* line 410, source/lib/font-awesome/_icons.scss */ +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} + +/* line 412, source/lib/font-awesome/_icons.scss */ +.fa-plus-square-o:before { + content: "\f196"; +} + +/********************************************* + * GLOBAL STYLES + *********************************************/ +/* line 7, source/template/_theme.scss */ +body { + background: white; + background: -moz-radial-gradient(#ffffff, #f2f2f2); + background: -o-radial-gradient(#ffffff, #f2f2f2); + background: -webkit-radial-gradient(#ffffff, #f2f2f2); + background: radial-gradient(#ffffff, #f2f2f2); +} + +@font-face { + font-family: "Gotham"; + src: local("Gotham"), url("../../fonts/Gotham/Gotham-Medium.otf") format("opentype"); + font-weight: normal; + font-style: normal; +} +@font-face { + font-family: "Gotham-Book"; + src: local("Gotham-Book"), url("../../fonts/Gotham/Gotham-Book.otf") format("opentype"); + font-weight: normal; + font-style: normal; +} +@font-face { + font-family: "Gotham-Italic"; + src: local("Gotham-Italic"), url("../../fonts/Gotham/Gotham-MediumIta.otf") format("opentype"); + font-weight: normal; + font-style: italic; +} +@font-face { + font-family: "Gotham-Bold"; + src: local("Gotham-Bold"), url("../../fonts/Gotham/Gotham-Bold.otf") format("opentype"); + font-weight: bold; + font-style: bold; +} +/* line 42, source/template/_theme.scss */ +.reveal { + font-family: "Gotham-Book", "Helvetica", Arial, sans-serif; + font-size: 36px; + font-weight: 200; + letter-spacing: -0.02em; + color: #333333; +} + +/* line 50, source/template/_theme.scss */ +::selection { + color: white; + background: rgba(11, 79, 81, 0.99); + text-shadow: none; +} + +/* line 56, source/template/_theme.scss */ +.reveal ul li { + line-height: 1.2em; + margin-bottom: 10px; +} + +/********************************************* + * HEADERS + *********************************************/ +/* line 67, source/template/_theme.scss */ +.reveal h1, +.reveal h2, +.reveal h3, +.reveal h4, +.reveal h5, +.reveal h6 { + margin: 0 0 20px 0; + color: #f05b62; + font-family: "Gotham-Bold", Impact, sans-serif; + line-height: 0.9em; + letter-spacing: 0.02em; + text-transform: none; + text-shadow: #cccccc; +} + +/* line 84, source/template/_theme.scss */ +.reveal h1 { + text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); +} + +/* line 88, source/template/_theme.scss */ +.reveal h1 { + font-size: 3.77em; +} + +/* line 89, source/template/_theme.scss */ +.reveal h2 { + font-size: 2.11em; +} + +/* line 90, source/template/_theme.scss */ +.reveal h3 { + font-size: 1.55em; +} + +/* line 91, source/template/_theme.scss */ +.reveal h4 { + font-size: 1em; +} + +/********************************************* +* OVERRIDES +**********************************************/ +/* line 96, source/template/_theme.scss */ +.left-align { + text-align: left; +} + +/* line 97, source/template/_theme.scss */ +.right-align { + text-align: right; +} + +/* line 98, source/template/_theme.scss */ +.left { + float: left; +} + +/* line 99, source/template/_theme.scss */ +.right { + float: right; +} + +/* line 100, source/template/_theme.scss */ +.clear { + clear: both; +} + +/* line 101, source/template/_theme.scss */ +.blue { + color: #01A9B4 !important; +} + +/* line 102, source/template/_theme.scss */ +.green { + color: #92BB44 !important; +} + +/* line 103, source/template/_theme.scss */ +.yellow { + color: #EDAB23 !important; +} + +/* line 104, source/template/_theme.scss */ +.pink { + color: #F05B62 !important; +} + +/* line 105, source/template/_theme.scss */ +.red { + color: #8B0036 !important; +} + +/* line 106, source/template/_theme.scss */ +.grey { + color: #333333 !important; +} + +/********************************************* + * LINKS + *********************************************/ +/* line 113, source/template/_theme.scss */ +.reveal a:not(.image) { + -moz-transition: color 0.15x ease; + -o-transition: color 0.15x ease; + -webkit-transition: color 0.15x ease; + transition: color 0.15x ease; + color: #01a9b4; + text-decoration: none; +} + +/* line 118, source/template/_theme.scss */ +.reveal a:not(.image):hover { + color: #f9b8bb; + text-shadow: none; + border: none; +} + +/* line 125, source/template/_theme.scss */ +.reveal .roll span:after { + color: #fff; + background: #01a9b4; +} + +/********************************************* + * IMAGES + *********************************************/ +/* line 135, source/template/_theme.scss */ +.reveal section img { + margin: 15px; + background: rgba(255, 255, 255, 0.12); + border: 4px solid #333333; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.15); + -moz-transition: all 0.2s linear; + -o-transition: all 0.2s linear; + -webkit-transition: all 0.2s linear; + transition: all 0.2s linear; +} + +/* line 145, source/template/_theme.scss */ +.reveal a:hover img { + background: rgba(255, 255, 255, 0.2); + border-color: #01a9b4; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.55); +} + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ +/* line 157, source/template/_theme.scss */ +.reveal .controls .navigate-left, +.reveal .controls .navigate-left.enabled { + border-right-color: #01a9b4; +} + +/* line 162, source/template/_theme.scss */ +.reveal .controls .navigate-right, +.reveal .controls .navigate-right.enabled { + border-left-color: #01a9b4; +} + +/* line 167, source/template/_theme.scss */ +.reveal .controls .navigate-up, +.reveal .controls .navigate-up.enabled { + border-bottom-color: #01a9b4; +} + +/* line 172, source/template/_theme.scss */ +.reveal .controls .navigate-down, +.reveal .controls .navigate-down.enabled { + border-top-color: #01a9b4; +} + +/* line 177, source/template/_theme.scss */ +.reveal .controls div.navigate-left.enabled:hover { + border-right-color: #f9b8bb; +} + +/* line 181, source/template/_theme.scss */ +.reveal .controls div.navigate-right.enabled:hover { + border-left-color: #f9b8bb; +} + +/* line 185, source/template/_theme.scss */ +.reveal .controls div.navigate-up.enabled:hover { + border-bottom-color: #f9b8bb; +} + +/* line 189, source/template/_theme.scss */ +.reveal .controls div.navigate-down.enabled:hover { + border-top-color: #f9b8bb; +} + +/********************************************* + * PROGRESS BAR + *********************************************/ +/* line 198, source/template/_theme.scss */ +.reveal .progress { + background: rgba(0, 0, 0, 0.2); +} + +/* line 201, source/template/_theme.scss */ +.reveal .progress span { + background: #01a9b4; + -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -o-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); + transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985); +} + +/********************************************* + * FOOTER + *********************************************/ +/* line 212, source/template/_theme.scss */ +.reveal footer { + position: fixed; + height: 40px; + width: 100%; + bottom: 3px; + left: 0; + z-index: 10; + font-size: 35%; + text-align: right; + background-image: url(../../images/pink-logo.png); + background-repeat: no-repeat; + background-size: auto 100%; +} +/* line 226, source/template/_theme.scss */ +.reveal .copyright { + margin: 15px 5px 0 100px; + font-style: italic; +} +/* line 230, source/template/_theme.scss */ +.reveal .copyright a img { + vertical-align: middle; +} + +/* line 8, source/gdi-sass.scss */ +.reveal .hide { + display: none; +} +/* line 10, source/gdi-sass.scss */ +.reveal .center-align { + text-align: center; +} +/* line 12, source/gdi-sass.scss */ +.reveal .copy--small { + font-size: .8em; +} +/* line 16, source/gdi-sass.scss */ +.reveal .copy--xsmall { + font-size: .6em; +} +/* line 20, source/gdi-sass.scss */ +.reveal strong { + text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2); +} +/* line 24, source/gdi-sass.scss */ +.reveal .horz--auto { + margin: inherit auto; +} +/* line 28, source/gdi-sass.scss */ +.reveal .box { + margin: 2em 0; +} +/* line 32, source/gdi-sass.scss */ +.reveal .box--top { + margin-top: 3em; +} +/* line 36, source/gdi-sass.scss */ +.reveal .box--small { + margin: 1em 0; +} +/* line 41, source/gdi-sass.scss */ +.reveal ul ul, .reveal ul ol, .reveal ol ul, .reveal ol ol { + margin-top: 10px; +} +/* line 45, source/gdi-sass.scss */ +.reveal ul li:last-child, .reveal ol li:last-child { + margin-bottom: 0; +} +/* line 51, source/gdi-sass.scss */ +.reveal .list--tall ol, .reveal .list--tall ul { + margin-top: 20px; +} +/* line 52, source/gdi-sass.scss */ +.reveal .list--tall li { + margin-bottom: 20px; +} +/* line 56, source/gdi-sass.scss */ +.reveal .list--xtall ol, .reveal .list--xtall ul { + margin-top: 40px; +} +/* line 57, source/gdi-sass.scss */ +.reveal .list--xtall li { + margin-bottom: 40px; +} +/* line 60, source/gdi-sass.scss */ +.reveal .list--bare { + list-style-type: none; +} +/* line 64, source/gdi-sass.scss */ +.reveal .broken { + list-style-position: inside; + margin-top: .25em; +} +/* line 68, source/gdi-sass.scss */ +.reveal .broken li { + display: block; + padding: .25em 1em; +} +/* line 74, source/gdi-sass.scss */ +.reveal ol.broken { + counter-reset: counter; +} +/* line 78, source/gdi-sass.scss */ +.reveal ol.broken li:before { + color: #ccc; + content: counter(counter) "."; + counter-increment: counter; + padding-right: .5em; +} +/* line 87, source/gdi-sass.scss */ +.reveal .break { + border-top: 20px solid #efefef; + padding-top: 2em; +} +/* line 92, source/gdi-sass.scss */ +.reveal section img { + margin: 0 15px; +} +/* line 96, source/gdi-sass.scss */ +.reveal .img--bare { + border: none; + background: transparent; + box-shadow: none; +} +/* line 102, source/gdi-sass.scss */ +.reveal .gist { + font-size: .5em; + line-height: 1.3em; + max-height: 475px; + overflow: scroll; +} + +/* line 110, source/gdi-sass.scss */ +code { + background: #e8e8e8; +} + +/* line 114, source/gdi-sass.scss */ +pre { + margin: 0; + width: auto; + box-shadow: none; +} +/* line 119, source/gdi-sass.scss */ +pre code { + background: transparent; + border: 6px solid #fff; + box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.3); + min-height: 300px; + max-height: 475px; + padding: 5px 10px; +} + +/* line 6, source/sass-plain.scss */ +.reveal footer { + background-image: none; + font-size: 40%; + text-align: left; +} +/* line 12, source/sass-plain.scss */ +.reveal .copyright { + margin: 15px 0 0 15px; +} diff --git a/css/theme/source/gdiaa.scss b/css/theme/source/gdi-sass.scss similarity index 95% rename from css/theme/source/gdiaa.scss rename to css/theme/source/gdi-sass.scss index 0bf3ecb..175c3a6 100644 --- a/css/theme/source/gdiaa.scss +++ b/css/theme/source/gdi-sass.scss @@ -1,10 +1,12 @@ -/* Girl Develop It Ann Arbor */ +/* Getting Sassy With CSS - Workshop Settings*/ @import "gdilight"; .reveal { // word-wrap: break-word; + .hide { display: none; } + .center-align{ text-align: center} .copy--small { diff --git a/css/theme/source/sass-plain.scss b/css/theme/source/sass-plain.scss new file mode 100644 index 0000000..8c0acfc --- /dev/null +++ b/css/theme/source/sass-plain.scss @@ -0,0 +1,16 @@ +/* Getting Sassy With CSS - Workshop Settings*/ + +@import "gdi-sass"; + +.reveal { + footer { + background-image: none; + font-size: 40%; + text-align: left; + } + + .copyright { + margin: 15px 0 0 15px; + } + +} diff --git a/css/theme/source/template/_mixins.scss b/css/theme/source/template/_mixins.scss index e69de29..02a8018 100755 --- a/css/theme/source/template/_mixins.scss +++ b/css/theme/source/template/_mixins.scss @@ -0,0 +1,9 @@ +@mixin radial-gradient( $outer, $inner, $type: circle ) { + background: $outer; + background: -moz-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); + background: -webkit-gradient( radial, center center, 0px, center center, 100%, color-stop(0%,$inner), color-stop(100%,$outer) ); + background: -webkit-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); + background: -o-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); + background: -ms-radial-gradient( center, $type cover, $inner 0%, $outer 100% ); + background: radial-gradient( center, $type cover, $inner 0%, $outer 100% ); +} diff --git a/css/theme/source/template/_theme.scss b/css/theme/source/template/_theme.scss index 60b9b13..7460d71 100755 --- a/css/theme/source/template/_theme.scss +++ b/css/theme/source/template/_theme.scss @@ -104,7 +104,6 @@ body { .pink{color:#F05B62 !important;} .red{color:#8B0036 !important;} .grey{color:#333333 !important;} -.grey--light{color:#666 !important;} /********************************************* @@ -233,14 +232,3 @@ body { } } } - -/********************************************* - * EVENT - *********************************************/ - -.event__title { - @extend .blue; - text-transform: uppercase !important; - - small { @extend .grey--light; } -} diff --git a/index.html b/index.html index aa4862f..3ab77a0 100755 --- a/index.html +++ b/index.html @@ -1,560 +1,928 @@ - - - - Intro to Web Concepts - Girl Develop It - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
-

Introduction to Web Concepts

-

or

-

What is that Web Developer talking about?

- -
-
-

Welcome!

-
-

Girl Develop It is here to provide affordable and accessible programs to learn software through mentorship and hands-on instruction.

-

Some "rules"

-
    -
  • We are here for you!
  • -
  • Every question is important
  • -
  • Help each other
  • -
  • Have fun
  • -
-
-
- -
-

Welcome!

-
-

Tell us about yourself.

-
    -
  • Who are you?
  • -
  • What do you hope to get out of the class?
  • -
  • What is your favorite dessert?
  • -
-
-
- -
-

What we'll cover

-
    -
  • Terms & technologies -
      -
    • Acronyms, the world wide web, languages/libraries/frameworks
    • -
    -
  • -
  • Building a web site -
      -
    • Considerations, UX & IA, tools
    • -
    -
  • -
  • Web development professionals -
      -
    • Team structure, hiring one, becoming one
    • -
    -
  • -
- -
- -
-

What to expect

-
    -
  • This is a survey of a very broad topic
  • -
  • Get a sense of what you'd like to know more about
  • -
  • I don't know everything, and neither will you
  • -
  • Have fun! (and ask questions)
  • -
-
- -
-

Terms & Technologies

-
- -
-
-

Terms

-
-

HTML: Hyper Text Markup Language - The code structure used to convey the content of a web site

-

CSS: Cascading Style Sheets - A language used to describe the presentation of the content

-

WYSIWYG: What You See Is What You Get - A type of editing software meant to be used by those who don't know how to code

-
- -
- -
-

Terms

-
-

IDE: Integrated Development Environment - Software meant to support the entire development process, often including compilation for a server-side language

-

CMS: Content Management System - A program that allows publishing, editing, and modifying content as well as maintenance from a central interface

-

Open source: A program in which the source code is available to the general public for use and/or modification from its original design

-
- -
- -
-
-

API: Application Programming Interface - An easy-to-use interface or set of tools made available to access a complex application

-

IP Address: Internet Protocol Address - A unique address for a computer or a server. Some IP Addresses are only unique to the network they are on while others are completely unique

-

DNS: Domain Name Service - A directory that associates domain names with host IPs to allow users to connect to web sites via URLs

-
- -
- -
-
-

SEO: Search Engine Optimization - The process of increasing your web site's perceived value to search engine algorithms, raising its rank in search results

-

Web 2.0: Buzzword generally describing a trend towards interactivity, rich media, and social engagement in web design

-

The Cloud: Services and technology that offer remote storage, processing, or other functionality by way of the internet

-
- -
-
- -
-

What is the world wide web?

- -
- -
-

Home and daily life of a web site

-

A typical web site will live or is "hosted" on a web server. Web servers are often large computers connected to a network.

-
    -
  • Type a web site address into the address bar
  • -
  • DNS connects you to the hosting server
  • -
  • The files are then sent back to your computer for display
  • -
  • Sometimes code must be compiled before being sent back to you.
  • -
-
- -
-

Clients vs. Servers

-
-

Clients make requests, servers fulfill them (usually).

-

For our web discussions, client = browser, but search engine crawlers, command line interfaces, and other applications can also behave as clients.

-

While any type of computer can be used as a server, they are generally larger and more powerful than others.

-
-
- -
-

Browsers

- -

Source: StatCounter Global Stats - Browser Market Share

- -
- -
-
-

Parsing languages & media

-
-

Client-side:

-
    -
  • HTML
  • -
  • CSS
  • -
  • JavaScript
  • -
  • Flash (with plugin)
  • -
  • Images
  • -
-
-
-

Sever-side:

-
    -
  • PHP
  • -
  • Perl
  • -
  • Python
  • -
  • Ruby
  • -
  • .Net
  • -
  • Java
  • -
  • ColdFusion
  • -
  • Databases
  • -
-
-
-
-

Not languages

-
    -
  • Libraries are collections of programming shortcuts for a language -
      -
    • jQuery, Prototype, & Mootools
    • -
    -
  • -
  • Frameworks may include libraries, software, and more. Basically, a collection of assets/tools that helps you work in a particular language, usually from scratch -
      -
    • Rails, Cake
    • -
    -
  • -
  • A specification is a set of currently acceptable rules for a given language -
      -
    • HTML5 expands on the HTML4 spec and deprecates some older HTML syntax
    • -
    -
  • -
-
-
-

Not languages

-
    -
  • AJAX is none of these, but is a technique combining multiple languages to return results from the server without needing to refresh a page. It stands for Asynchronous JavaScript And XML.
  • -
-
-
- -
-

Java != JavaScript

-
-

Java:

-
    -
  • Server-side
  • -
  • Object-oriented
  • -
  • Requires special parser (JVM)
  • -
  • By Sun Microsystems
  • +
  • The set of rules that define the combinations of symbols that are considered to be correctly structured programs in that language
+ +
  • They have slightly different strengths and philosophies
  • +
  • + Which one you choose to use will likely depend on... +
      +
    • What you are familiar with or want to learn
    • +
    • What your host supports
    • +
    • Community and documentation
    • +
    +
  • + + +
    + + +
    +

    Hello World

    +
    +

    PHP

    +
    echo "Hello, world!";
    +
    + +

    Java

    +
    
    +                  class HelloWorld {
    +                    static public void main( String args[] ) {
    +                      System.out.println( "Hello World!" );
    +                    }
    +                  }
    +                  
    +
    + + +
    +

    Hello World

    +
    +

    Python

    +
    
    +                      'Hello, world!'
    +                    
    -
    -

    JavaScript:

    -
      -
    • Primarily client-side
    • -
    • Primarily written procedurally
    • -
    • Parsed by any browser
    • -
    • By Netscape
    • -
    -
    -
    -
    -

    Web standards

    -

    In general, this means a site should:

    -
      -
    • Have valid HTML, CSS, and JavaScript
    • -
    • Meet accessibility standards
    • -
    • Meet semantic guidelines
    • -
    • Have valid meta data
    • -
    • Have proper character encoding
    • -
    -
    - -
    -

    Break time!

    -
    - -
    -

    Building a web site

    -
    - -
    -

    Considerations before building

    -
      -
    • What is the purpose of the site?
    • -
    • Hosting and a domain name -
        -
      • Domain name registration should not cost more than $15/yr
      • -
      • Hosting should not cost more than $50/yr
      • -
      • Hosting choices may depend on supported server-side tech
      • -
      -
    • -
    • Whether to build it yourself or hire someone
    • -
    -
    - -
    -
    -

    User Experience & Information Architecture

    -

    A user-friendly, well-architected site will:

    -
      -
    • Deepen engagement
    • -
    • Increase conversion
    • -
    • Raise satisfaction
    • -
    • Bring users back
    • -
    -
    - -
    -

    Sitemaps & decision trees

    -
    - -
    -
    - -
    - -
    -
    - -
    -

    WYSIWYG vs. hand-coding

    -
      -
    • WYSIWYG code editors make general assumptions about what you intended to write which often is not accurate or best
    • -
    • They make the job of professionals much more difficult when the code is written poorly and filled with junk
    • -
    • To truly understand what you are building, you need to learn the fundamental components
    • -
    • Once you know how to code by hand, there are no limits to what you can build!
    • -
    -
    - -
    -
    -

    What languages to use

    -

    That depends...

    -
      -
    • HTML and CSS will almost certainly be used
    • -
    • JavaScript may be used for interactivity
    • -
    • Server-side languages will likely be used for any data storage or retrieval
    • -
    -
    -
    -

    Demo: How'd they do that?

    - Fancy flowed text
    - Onclick expansion
    - Slideshow spelunking - -
    -
    - -
    -
    -

    Server-side languages: What are the differences?

    -
      -
    • The main difference is syntax
    • -
        -
      • the set of rules that define the combinations of symbols that are considered to be correctly structured programs in that language
      • -
      -
    • They have slightly different strengths and philosophies
    • -
    • Which you choose to use will depend on -
        -
      • What you are familiar with or want to learn
      • -
      • What your host supports
      • -
      • Community and documentation
      • -
      -
    • -
    -
    -
    -

    Hello world

    -

    PHP

    -
    -                            
    -    echo "Hello, world!";
    -                            
    -                        
    -

    Java

    -
    -                            
    -    class HelloWorld {
    -      static public void main( String args[] ) {
    -        System.out.println( "Hello World!" );
    -      }
    -    }
    -                            
    -                        
    -
    -
    -

    Hello world

    -

    Python

    -
    -                            
    -    'Hello, world!'
    -                            
    -                        
    -

    Ruby

    -
    -                            
    -    puts 'Hello, world!'
    -                            
    -                        
    -
    -
    -

    Hello world

    -

    JavaScript

    -

    Not server-side, but just for example

    -
    -                            
    -    document.writeln('Hello, World!');
    -                            
    -                        
    -
    -
    - -
    -
    -

    Tools of the trade

    -

    To build your web site, you will probably need:

    -
      -
    • A simple text editor or code editor such as SublimeText, Notepad, or TextWrangler to write your code. Many can be found for free.
    • -
    • A web browser such as Chrome, Firefox, or Safari to test your code. All popular modern browsers are free.
    • -
    -
    -
    -

    Tools of the trade

    -

    You will also need:

    -
      -
    • An FTP (file transfer protocol) client such as WinSCP, Cyberduck, or CoffeeCup FTP to get files from your computer to the server. Many are free.
    • -
    • Optionally, an image editor such as IrfanView, Gimp, or Photoshop to edit images which will be used on the web site. Some are available for free.
    • -
    -
    -
    - -
    -

    Web development professionals

    -
    - -
    -

    Meet the web team

    -
      -
    • Front end -
        -
      • User Experience Designer
      • -
      • Graphic Designer
      • -
      • Web Developer
      • -
      -
    • -
    • Back end -
        -
      • Server Admin
      • -
      • Database Admin
      • -
      • Software Engineer
      • -
      -
    • -
    • Overall -
        -
      • QA Engineer
      • -
      • Project Manager
      • -
      -
    • -
    -
    - -
    -

    How to hire a developer

    -

    Remember the three Rs:

    -
      -
    • References: Talk to people who have worked with the developer before. Were they prompt? Pleasant? Forthright?
    • -
    • Requirements: Can they do the work that needs to be done. Ask for samples of their prior work and ask exactly which parts of the process they were responsible for. Design? UX? DB architecture? QA?
    • -
    • Reality: If it sounds too good to be true, it probably is. This website will be a reflection of you, either personally or professionally. Hire someone you feel will be invested in a job well done.
    • -
    -
    - -
    -

    How to be hired as a developer

    -
      -
    • Degrees and certifications: they don't hurt
    • -
    • Be curious, a problem solver, and intrepid
    • -
    • Build things. For yourself, if no one will pay you
    • -
    • Through all of this, learn your craft and how things work
    • -
    -
    -
    +

    Ruby

    +
    
    +                    puts 'Hello, world!'
    +                  
    +
    + + +
    +

    Hello World

    +
    +

    JavaScript

    +

    Not server-side, but just for example

    +
    document.writeln('Hello, World!');
    +
    +
    + + + +
    +
    +

    Tools of the Trade

    +

    To build your web site, you will probably need:

    +
      +
    • A simple text editor or code editor such as SublimeText, Notepad++, or TextWrangler to write your code. Many are free!
    • +
    • A web browser such as Chrome, Firefox, or Safari to test your code. All popular modern browsers are free.
    • +
    + +
    + + +
    +

    Tools of the Trade - Browsers

    + +

    Source: StatCounter Global Stats - Browser Market Share

    + +
    + + +
    +

    Tools of the Trade

    +

    You may also need:

    +
      +
    • An FTP (file transfer protocol) client such as WinSCP, Cyberduck, or CoffeeCup FTP to get files from your computer to the server. Many are free.
    • +
    • A source control system like git to back up your files, change history, and make deploying your site to the server super simple.
    • +
    • An image editor such as IrfanView, Gimp, or Photoshop to edit images for use on the web site. Some are available for free.
    • +
    + +
    +
    + + +
    +
    +

    Web Development Professionals

    + +
    + + +
    +

    Meet the Web Team

    +
      +
    • + Front end +
        +
      • Web Developer
      • +
      • User Experience Designer
      • +
      • Graphic Designer
      • +
      +
    • +
    • + Back end +
        +
      • Software Engineer
      • +
      • Server Admin
      • +
      • Database Admin
      • +
      +
    • +
    • + Supportive Roles +
        +
      • QA Engineer
      • +
      • Project Manager
      • +
      +
    • +
    + +
    + + + + +
    +

    How to Become a Developer

    +
      +
    • Degrees and certifications: they don't hurt, but you probably don't need 'em
    • +
    • Be curious, a problem solver, and intrepid
    • +
    • Build things. For yourself, if no one will pay you
    • +
    • Through all of this, learn your craft and how things work
    • +
    + +
    +
    + +
    + +

    Questions?

    -
    ? -
    -
    -
    - -
    - - - - - - - + + + + + + + diff --git a/indexNew.html b/indexNew.html deleted file mode 100755 index 3c88767..0000000 --- a/indexNew.html +++ /dev/null @@ -1,1010 +0,0 @@ - - - - - - - Intro to Web Concepts - Girl Develop It - - - - - - - - - - - - - - - - - - - - - -
    - -
    - -
    - -
    -

    Tech 101

    -

    #GDIA2TECH101

    - -
    -
    - - -
    -

    Welcome!

    -

    Girl Develop It is here to empower and assist women interested in getting into and advancing in the tech industry through affordable and accessible programs.

    - - -
    -

    Some "rules"

    -
      -
    • We are here for you!
    • -
    • Every question is important.
    • -
    • Help each other.
    • -
    • Have fun!
    • -
    -
    -
    - - -
    -

    Upcoming Events

    -
    -

    Intro to WordPress2-Night Workshop

    -

    Mon. 8/25 & Wed. 8/27 @ Pillar

    -

    6pm - 9pm   |   1327 Jones Dr.

    - -
    -
    - - -
    -

    Upcoming Events

    -
    -

    $: echo "hello, command line"
    #an introduction

    -

    Tuesday 9/9 @ Atomic Object

    -

    6:30pm   |   206 S. Fifth Ave #200

    - -
    -
    - - -
    -

    Upcoming Events

    -
    -

    Lightening Talks
    JavaScript

    -

    Wednesday 9/17 @ The Forge by Pillar

    -

    6:30pm   |   1327 Jones Dr.

    - -
    -
    - - -
    -

    Upcoming Events

    -
    -

    Getting Sassy With CSS
    A Sass Workshop

    -

    Tues. 9/23 & Thur. 9/25 @ Nutshell

    -

    6:00pm   |   212 S. 5th Ave

    - -
    -
    - - -
    -

    Community Events

    -
      -
    • A2 Ruby Brigade - Component Based Architecture
      Tuesday 8/26 @ Atomic Object
    • -
    • WordPress A2 - Lessons Learned Launching a Premium Plugin
      Wednesday 8/27 @ Room 2001 LSA Building
    • -
    • GDG A3 - Android TV
      Thursday 8/28 @ Arbormoon
    • -
    • Craftsman Guild - Docker
      Tuesday 9/2 @ Atomic Object
    • -
    • AACS - Patentability of Software
      Wednesday 9/3 @ Atomic Object
    • -
    -
      -
    • Mobile Monday - Wearable Platforms
      Wednesday 9/3 @ SPARK
    • -
    • SEM.js - Assemble.io
      Monday 9/8 @ Nutshell
    • -
    • GDI Detroit - Intro to OOCSS
      Wednesday 9/10 @ AO Detroit
    • -
    • Duo Tech Talks - Modern Security Eng. Organizations
      Friday 9/12 @ Duo Security
    • -
    • A2 New Tech - Monthly Meetup
      Tuesday 9/16 @ Law School, South Hall, Room 1225
    • -
    • Plus soooo many more we couldn't fit here...
    • -
    - -
    - - -
    -

    Sponsors!

    - -
    - - -
    - -
    -

    Tech 101

    -

    #GDIA2TECH101

    - -
    -
    - - -
    -

    About Us

    -
      -
    • - Ronda Bergman -
        -
      • GDI-AA Co-Leader, Software Engineer @Terumo
      • -
      • - Experience - -
      • -
      -
    • -
    • - Vera Reynolds -
        -
      • Software Journeyman @Pillar
      • -
      • - Experience - -
      • -
      -
    • -
    -
    - - -
    -

    What We'll Cover

    -
      -
    • - Terms & technologies -
        -
      • Acronyms, the world wide web, languages/libraries/frameworks
      • -
      -
    • -
    • - Building a web site -
        -
      • Considerations, UX & IA, tools
      • -
      -
    • -
    • - Web development professionals -
        -
      • Team structure, becoming one
      • -
      -
    • -
    - -
    - - -
    -

    What to Expect

    -
      -
    • This is a survey of a very broad topic
    • -
    • Get a sense of what you'd like to know more about
    • -
    • I don't know everything, and neither will you
    • -
    • Have fun! (and ask questions)
    • -
    -
    - - -
    -

    What Does a Web Page Actually Look Like?

    - -
    - - -
    -

    Terms & Technologies

    -
    - - -
    -

    Terms

    -
    -

    HTML: Hyper Text Markup Language - The code structure used to convey the content of a web site

    -

    CSS: Cascading Style Sheets - A language used to describe the presentation of the content

    -

    WYSIWYG: What You See Is What You Get - A type of editing software meant to be used by those who don't know how to code

    -
    - -
    - - -
    -

    Terms

    -
    -

    IDE: Integrated Development Environment - Software meant to support the entire development process, often including compilation for a server-side language

    -

    CMS: Content Management System - A program that allows publishing, editing, and modifying content as well as maintenance from a central interface

    -

    Open source: A program in which the source code is available to the general public for use and/or modification from its original design

    -
    - -
    - - -
    -

    Terms

    -
    -

    API: Application Programming Interface - An easy-to-use interface or set of tools made available to access a complex application

    -

    IP Address: Internet Protocol Address - A unique address for a computer or a server. Some IP Addresses are only unique to the network they are on while others are completely unique

    -

    DNS: Domain Name Service - A directory that associates domain names with host IPs to allow users to connect to web sites via URLs

    -
    - -
    - - -
    -

    Terms

    -
    -

    SEO: Search Engine Optimization - The process of increasing your web site's perceived value to search engine algorithms, raising its rank in search results

    -

    Web 2.0: Buzzword generally describing a trend towards interactivity, rich media, and social engagement in web design

    -

    The Cloud: Services and technology that offer remote storage, processing, or other functionality by way of the internet

    -
    - -
    - - -
    -

    What is the World Wide Web?

    - - -
    - - -
    -

    Home and Daily Life of a Web Site

    -

    A typical web site will live or is "hosted" on a web server. Web servers are often large computers connected to a network.

    -
      -
    • Type a web site address (URL) into the address bar
    • -
    • DNS connects you to the hosting server
    • -
    • The files are then sent back to your computer for display
    • -
    • Sometimes code must be compiled before being sent back to you.
    • -
    - -
    - - -
    -

    Clients vs. Servers

    -
    -

    Clients make requests, servers fulfill them (usually).

    -

    For our web discussions, client = browser, but search engine crawlers, command line interfaces, and other applications can also behave as clients.

    -

    While any type of computer can be used as a server, they are generally larger and more powerful than others.

    -
    - -
    - - -
    -

    Parsing Languages & Media

    -
    -

    Client-side:

    -
      -
    • HTML
    • -
    • CSS
    • -
    • JavaScript
    • -
    • Flash (with plugin)
    • -
    • Images
    • -
    -
    -
    -

    Sever-side:

    -
      -
    • PHP
    • -
    • Perl
    • -
    • Python
    • -
    • Ruby
    • -
    • .Net
    • -
    • Java
    • -
    • ColdFusion
    • -
    • Databases
    • -
    -
    - -
    - - -
    -

    Not Languages

    -
      -
    • - Libraries are collections of programming shortcuts for a language -
        -
      • jQuery, Prototype, & Mootools
      • -
      -
    • -
    • - Frameworks may include libraries, software, and more. Basically, a collection of assets/tools that helps you work in a particular language, usually from scratch -
        -
      • Rails, Cake
      • -
      -
    • -
    • - A specification is a set of currently acceptable rules for a given language -
        -
      • HTML5 expands on the HTML4 spec and deprecates some older HTML syntax
      • -
      -
    • -
    - -
    - - -
    -

    Not Languages

    -
      -
    • AJAX is none of these, but is a technique combining multiple languages to return results from the server without needing to refresh a page. It stands for Asynchronous JavaScript And XML.
    • -
    - -
    - - -
    -

    Java != JavaScript

    -
    -

    Java:

    -
      -
    • Server-side
    • -
    • Object-oriented
    • -
    • Requires special parser (JVM)
    • -
    • By Sun Microsystems
    • -
    -
    -
    -

    JavaScript:

    -
      -
    • Primarily client-side
    • -
    • Primarily written procedurally
    • -
    • Parsed by any browser
    • -
    • By Netscape
    • -
    -
    - -
    - - -
    -

    Web Standards

    -

    In general, this means a site should:

    -
      -
    • Have valid HTML, CSS, and JavaScript
    • -
    • Meet accessibility standards
    • -
    • Meet semantic guidelines
    • -
    • Have valid meta data
    • -
    • Have proper character encoding
    • -
    - -
    - - -
    -

    Responsive Design

    -
      -
    • Laptop, ipad, ipad mini, smartphone...
    • -
    • Goal = easy viewing/interacting experience across devices
    • -
    • Fluid layout
    • -
    • Selective features
    • -
    - -
    - - -
    -

    Building a Web Site

    - -
    - - -
    -

    Considerations Before Building

    -
      -
    • What is the purpose of the site?
    • -
    • Know your audience
    • -
    • - Hosting and a domain name -
        -
      • Domain name registration should cost about $20/yr
      • -
      • Hosting should cost around $75/yr
      • -
      • Hosting choices may depend on supported server-side tech
      • -
      -
    • -
    • Whether to build it yourself or hire someone
    • -
    - -
    - - -
    -

    User Experience & Information Architecture

    -

    A user-friendly, well-architected site will:

    -
      -
    • Deepen engagement
    • -
    • Increase conversion
    • -
    • Raise satisfaction
    • -
    • Bring users back
    • -
    - -
    - - -
    -

    Sitemaps & Decision Trees

    -
    - -
    -
    - -
    - -
    - - - - -
    -

    What Languages to Use

    -

    That depends...

    -
      -
    • Vera
    • -
    • HTML and CSS will almost certainly be used
    • -
    • JavaScript may be used for interactivity
    • -
    • Server-side languages will likely be used for any data storage or retrieval
    • -
    - -
    - - -
    -

    Server-side Languages: What are the Differences?

    -
      -
    • The main difference is syntax
    • -
        -
      • The set of rules that define the combinations of symbols that are considered to be correctly structured programs in that language
      • -
      -
    • They have slightly different strengths and philosophies
    • -
    • - Which you choose to use will depend on -
        -
      • What you are familiar with or want to learn
      • -
      • What your host supports
      • -
      • Community and documentation
      • -
      -
    • -
    - -
    - - -
    -

    Hello World

    -

    PHP

    -
    -                
    -    echo "Hello, world!";
    -                            
    -                        
    -

    Java

    -
    -                
    -    class HelloWorld {
    -      static public void main( String args[] ) {
    -        System.out.println( "Hello World!" );
    -      }
    -    }
    -                            
    -                        
    -
    - - -
    -

    Hello World

    -

    Python

    -
    -                
    -    'Hello, world!'
    -                            
    -                        
    -

    Ruby

    -
    -                
    -    puts 'Hello, world!'
    -                            
    -                        
    -
    - - -
    -

    Hello World

    -

    JavaScript

    -

    Not server-side, but just for example

    -
    -                
    -    document.writeln('Hello, World!');
    -                    
    -                
    -
    - - -
    -

    Tools of the Trade

    -

    To build your web site, you will probably need:

    -
      -
    • A simple text editor or code editor such as SublimeText, Notepad++, or TextWrangler to write your code. Many can be found for free.
    • -
    • A web browser such as Chrome, Firefox, or Safari to test your code. All popular modern browsers are free.
    • -
    - -
    - - -
    -

    Tools of the Trade - Browsers

    - -

    Source: StatCounter Global Stats - Browser Market Share

    - -
    - - -
    -

    Tools of the Trade

    -

    You will also need:

    -
      -
    • An FTP (file transfer protocol) client such as WinSCP, Cyberduck, or CoffeeCup FTP to get files from your computer to the server. Many are free.
    • -
    • Optionally, an image editor such as IrfanView, Gimp, or Photoshop to edit images which will be used on the web site. Some are available for free.
    • -
    - -
    - - -
    -

    Web Development Professionals

    - -
    - - -
    -

    Meet the Web Team

    -
      -
    • - Front end -
        -
      • User Experience Designer
      • -
      • Graphic Designer
      • -
      • Web Developer
      • -
      -
    • -
    • - Back end -
        -
      • Server Admin
      • -
      • Database Admin
      • -
      • Software Engineer
      • -
      -
    • -
    • - Overall -
        -
      • QA Engineer
      • -
      • Project Manager
      • -
      -
    • -
    - -
    - - - - -
    -

    How to Become a Developer

    -
      -
    • Degrees and certifications: they don't hurt
    • -
    • Be curious, a problem solver, and intrepid
    • -
    • Build things. For yourself, if no one will pay you
    • -
    • Through all of this, learn your craft and how things work
    • -
    - -
    - - -
    -

    Questions?

    -
    - ? -
    -
    -
    - -
    - - - -
    - - - - - - - - - diff --git a/lib/css/zenburn.css b/lib/css/zenburn.css old mode 100755 new mode 100644 index f4070ca..ab74139 --- a/lib/css/zenburn.css +++ b/lib/css/zenburn.css @@ -13,11 +13,13 @@ pre code { pre .keyword, pre .tag, -pre .django .tag, -pre .django .keyword, pre .css .class, pre .css .id, -pre .lisp .title { +pre .lisp .title, +pre .nginx .title, +pre .request, +pre .status, +pre .clojure .attribute { color: #E3CEAB; } @@ -49,32 +51,27 @@ pre .tex .special { } pre .diff .chunk, -pre .ruby .subst { +pre .subst { color: #8F8F8F; } pre .dos .keyword, pre .python .decorator, -pre .class .title, -pre .haskell .label, -pre .function .title, -pre .ini .title, +pre .title, +pre .haskell .type, pre .diff .header, pre .ruby .class .parent, pre .apache .tag, pre .nginx .built_in, pre .tex .command, -pre .input_number { +pre .prompt { color: #efef8f; } pre .dos .winutils, pre .ruby .symbol, pre .ruby .symbol .string, -pre .ruby .symbol .keyword, -pre .ruby .symbol .keymethods, -pre .ruby .string, -pre .ruby .instancevar { +pre .ruby .string { color: #DCA3A3; } @@ -106,10 +103,12 @@ pre .doctype { color: #7F9F7F; } -pre .xml .css, +pre .coffeescript .javascript, +pre .javascript .xml, +pre .tex .formula, pre .xml .javascript, pre .xml .vbscript, -pre .tex .formula { +pre .xml .css, +pre .xml .cdata { opacity: 0.5; -} - +} \ No newline at end of file diff --git a/lib/font/Gotham-Bold.otf b/lib/font/Gotham-Bold.otf deleted file mode 100755 index 8486e9c..0000000 Binary files a/lib/font/Gotham-Bold.otf and /dev/null differ diff --git a/lib/font/Gotham-BoldIta.otf b/lib/font/Gotham-BoldIta.otf deleted file mode 100755 index 86ec1ff..0000000 Binary files a/lib/font/Gotham-BoldIta.otf and /dev/null differ diff --git a/lib/font/Gotham-BoldItalic.otf b/lib/font/Gotham-BoldItalic.otf deleted file mode 100755 index f3610f8..0000000 Binary files a/lib/font/Gotham-BoldItalic.otf and /dev/null differ diff --git a/lib/font/Gotham-Book.otf b/lib/font/Gotham-Book.otf deleted file mode 100755 index d729c4e..0000000 Binary files a/lib/font/Gotham-Book.otf and /dev/null differ diff --git a/lib/font/Gotham-BookIta.otf b/lib/font/Gotham-BookIta.otf deleted file mode 100755 index d297122..0000000 Binary files a/lib/font/Gotham-BookIta.otf and /dev/null differ diff --git a/lib/font/Gotham-BookItalic.otf b/lib/font/Gotham-BookItalic.otf deleted file mode 100755 index 0f4379f..0000000 Binary files a/lib/font/Gotham-BookItalic.otf and /dev/null differ diff --git a/lib/font/Gotham-Medium.otf b/lib/font/Gotham-Medium.otf deleted file mode 100755 index 484e6b2..0000000 Binary files a/lib/font/Gotham-Medium.otf and /dev/null differ diff --git a/lib/font/Gotham-MediumIta.otf b/lib/font/Gotham-MediumIta.otf deleted file mode 100755 index 98a48b0..0000000 Binary files a/lib/font/Gotham-MediumIta.otf and /dev/null differ diff --git a/lib/font/Gotham-MediumItalic.otf b/lib/font/Gotham-MediumItalic.otf deleted file mode 100755 index bcfabe1..0000000 Binary files a/lib/font/Gotham-MediumItalic.otf and /dev/null differ diff --git a/lib/font/league_gothic-webfont.svg b/lib/font/league_gothic-webfont.svg old mode 100755 new mode 100644 diff --git a/lib/font/league_gothic-webfont.ttf b/lib/font/league_gothic-webfont.ttf old mode 100755 new mode 100644 diff --git a/lib/font/league_gothic-webfont.woff b/lib/font/league_gothic-webfont.woff old mode 100755 new mode 100644 diff --git a/lib/font/league_gothic_license b/lib/font/league_gothic_license old mode 100755 new mode 100644 diff --git a/lib/js/classList.js b/lib/js/classList.js old mode 100755 new mode 100644 diff --git a/lib/js/head.min.js b/lib/js/head.min.js old mode 100755 new mode 100644 diff --git a/lib/js/html5shiv.js b/lib/js/html5shiv.js old mode 100755 new mode 100644 diff --git a/plugin/highlight/highlight.js b/plugin/highlight/highlight.js old mode 100755 new mode 100644 index 9a4458a..e61246e --- a/plugin/highlight/highlight.js +++ b/plugin/highlight/highlight.js @@ -4,6 +4,61 @@ hljs.highlightBlock( event.currentTarget ); }, false ); } ); + +(function() { + if( typeof window.addEventListener === 'function' ) { + var hljs_nodes = document.querySelectorAll( 'pre code' ); + + for( var i = 0, len = hljs_nodes.length; i < len; i++ ) { + var element = hljs_nodes[i]; + + // GDI MOD - Remove Tab Spaces + if( ! element.hasAttribute( 'data-noindent' )) { + var lines, offset; + + // split the content of the PRE element into an array of lines + lines = $( element ).text().split( '\n' ); + + // the first line is expected to be an empty line - remove it + if ( lines.length > 1 && lines[ 0 ].trim() === '' ) { + lines.shift(); + } + // the last line is expected to be an empty line - remove it + if ( lines.length > 1 && lines[ lines.length - 1 ].trim() === '' ) { + lines.pop(); + } + + // how much white-space do we need to remove form each line? + offset = lines[ 0 ].match( /^\s*/ )[ 0 ].length; + + // remove the exess white-space from the beginning of each line + lines = lines.map( function ( line ) { + return line.slice( offset ); + }); + + // set this new content to the PRE element + $( element ).text( lines.join( '\n' ) ); + } + + // TODO: doesn't seem to work + // Now escape html unless prevented by author + if( !element.hasAttribute( 'data-noescape' )) { + element.innerHTML = element.innerHTML.replace(//g,">"); + } + + // trim whitespace if data-trim attribute is present + if( element.hasAttribute( 'data-trim' ) && typeof element.innerHTML.trim === 'function' ) { + element.innerHTML = element.innerHTML.trim(); + } + + // re-highlight when focus is lost (for edited code) + element.addEventListener( 'focusout', function( event ) { + hljs.highlightBlock( event.currentTarget ); + }, false ); + } + } +})(); + // END CUSTOM REVEAL.JS INTEGRATION @@ -11,4 +66,4 @@ Syntax highlighting with language autodetection. http://softwaremaniacs.org/soft/highlight/ */ -var hljs=new function(){function m(p){return p.replace(/"}while(y.length||z.length){var v=u().splice(0,1)[0];w+=m(x.substr(r,v.offset-r));r=v.offset;if(v.event=="start"){w+=s(v.node);t.push(v.node)}else{if(v.event=="stop"){var q=t.length;do{q--;var p=t[q];w+=("")}while(p!=v.node);t.splice(q,1);while(q'+m(L[0])+""}else{N+=m(L[0])}P=O.lR.lastIndex;L=O.lR.exec(M)}N+=m(M.substr(P,M.length-P));return N}function K(r,M){if(M.sL&&d[M.sL]){var L=e(M.sL,r);t+=L.keyword_count;return L.value}else{return F(r,M)}}function I(M,r){var L=M.cN?'':"";if(M.rB){q+=L;M.buffer=""}else{if(M.eB){q+=m(r)+L;M.buffer=""}else{q+=L;M.buffer=r}}C.push(M);B+=M.r}function E(O,L,Q){var R=C[C.length-1];if(Q){q+=K(R.buffer+O,R);return false}var M=z(L,R);if(M){q+=K(R.buffer+O,R);I(M,L);return M.rB}var r=w(C.length-1,L);if(r){var N=R.cN?"":"";if(R.rE){q+=K(R.buffer+O,R)+N}else{if(R.eE){q+=K(R.buffer+O,R)+N+m(L)}else{q+=K(R.buffer+O+L,R)+N}}while(r>1){N=C[C.length-2].cN?"":"";q+=N;r--;C.length--}var P=C[C.length-1];C.length--;C[C.length-1].buffer="";if(P.starts){I(P.starts,"")}return R.rE}if(x(L,R)){throw"Illegal"}}var H=d[J];var C=[H.dM];var B=0;var t=0;var q="";try{var v=0;H.dM.buffer="";do{var y=s(D,v);var u=E(y[0],y[1],y[2]);v+=y[0].length;if(!u){v+=y[1].length}}while(!y[2]);if(C.length>1){throw"Illegal"}return{r:B,keyword_count:t,value:q}}catch(G){if(G=="Illegal"){return{r:0,keyword_count:0,value:m(D)}}else{throw G}}}function f(t){var r={keyword_count:0,r:0,value:m(t)};var q=r;for(var p in d){if(!d.hasOwnProperty(p)){continue}var s=e(p,t);s.language=p;if(s.keyword_count+s.r>q.keyword_count+q.r){q=s}if(s.keyword_count+s.r>r.keyword_count+r.r){q=r;r=s}}if(q.language){r.second_best=q}return r}function h(r,q,p){if(q){r=r.replace(/^((<[^>]+>|\t)+)/gm,function(t,w,v,u){return w.replace(/\t/g,q)})}if(p){r=r.replace(/\n/g,"
    ")}return r}function o(u,x,q){var y=g(u,q);var s=a(u);if(s=="no-highlight"){return}if(s){var w=e(s,y)}else{var w=f(y);s=w.language}var p=b(u);if(p.length){var r=document.createElement("pre");r.innerHTML=w.value;w.value=l(p,b(r),y)}w.value=h(w.value,x,q);var t=u.className;if(!t.match("(\\s|^)(language-)?"+s+"(\\s|$)")){t=t?(t+" "+s):s}if(/MSIE [678]/.test(navigator.userAgent)&&u.tagName=="CODE"&&u.parentNode.tagName=="PRE"){var r=u.parentNode;var v=document.createElement("div");v.innerHTML="
    "+w.value+"
    ";u=v.firstChild.firstChild;v.firstChild.cN=r.cN;r.parentNode.replaceChild(v.firstChild,r)}else{u.innerHTML=w.value}u.className=t;u.result={language:s,kw:w.keyword_count,re:w.r};if(w.second_best){u.second_best={language:w.second_best.language,kw:w.second_best.keyword_count,re:w.second_best.r}}}function k(){if(k.called){return}k.called=true;var r=document.getElementsByTagName("pre");for(var p=0;p|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\.",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE],r:0};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE],r:0};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.inherit=function(p,s){var r={};for(var q in p){r[q]=p[q]}if(s){for(var q in s){r[q]=s[q]}}return r}}();hljs.LANGUAGES.cs={dM:{k:{"abstract":1,as:1,base:1,bool:1,"break":1,"byte":1,"case":1,"catch":1,"char":1,checked:1,"class":1,"const":1,"continue":1,decimal:1,"default":1,delegate:1,"do":1,"do":1,"double":1,"else":1,"enum":1,event:1,explicit:1,extern:1,"false":1,"finally":1,fixed:1,"float":1,"for":1,foreach:1,"goto":1,"if":1,implicit:1,"in":1,"int":1,"interface":1,internal:1,is:1,lock:1,"long":1,namespace:1,"new":1,"null":1,object:1,operator:1,out:1,override:1,params:1,"private":1,"protected":1,"public":1,readonly:1,ref:1,"return":1,sbyte:1,sealed:1,"short":1,sizeof:1,stackalloc:1,"static":1,string:1,struct:1,"switch":1,"this":1,"throw":1,"true":1,"try":1,"typeof":1,uint:1,ulong:1,unchecked:1,unsafe:1,ushort:1,using:1,virtual:1,"volatile":1,"void":1,"while":1,ascending:1,descending:1,from:1,get:1,group:1,into:1,join:1,let:1,orderby:1,partial:1,select:1,set:1,value:1,"var":1,where:1,yield:1},c:[{cN:"comment",b:"///",e:"$",rB:true,c:[{cN:"xmlDocTag",b:"///|"},{cN:"xmlDocTag",b:""}]},hljs.CLCM,hljs.CBLCLM,{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},hljs.ASM,hljs.QSM,hljs.CNM]}};hljs.LANGUAGES.ruby=function(){var g="[a-zA-Z_][a-zA-Z0-9_]*(\\!|\\?)?";var a="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?";var n={keyword:{and:1,"false":1,then:1,defined:1,module:1,"in":1,"return":1,redo:1,"if":1,BEGIN:1,retry:1,end:1,"for":1,"true":1,self:1,when:1,next:1,until:1,"do":1,begin:1,unless:1,END:1,rescue:1,nil:1,"else":1,"break":1,undef:1,not:1,"super":1,"class":1,"case":1,require:1,yield:1,alias:1,"while":1,ensure:1,elsif:1,or:1,def:1},keymethods:{__id__:1,__send__:1,abort:1,abs:1,"all?":1,allocate:1,ancestors:1,"any?":1,arity:1,assoc:1,at:1,at_exit:1,autoload:1,"autoload?":1,"between?":1,binding:1,binmode:1,"block_given?":1,call:1,callcc:1,caller:1,capitalize:1,"capitalize!":1,casecmp:1,"catch":1,ceil:1,center:1,chomp:1,"chomp!":1,chop:1,"chop!":1,chr:1,"class":1,class_eval:1,"class_variable_defined?":1,class_variables:1,clear:1,clone:1,close:1,close_read:1,close_write:1,"closed?":1,coerce:1,collect:1,"collect!":1,compact:1,"compact!":1,concat:1,"const_defined?":1,const_get:1,const_missing:1,const_set:1,constants:1,count:1,crypt:1,"default":1,default_proc:1,"delete":1,"delete!":1,delete_at:1,delete_if:1,detect:1,display:1,div:1,divmod:1,downcase:1,"downcase!":1,downto:1,dump:1,dup:1,each:1,each_byte:1,each_index:1,each_key:1,each_line:1,each_pair:1,each_value:1,each_with_index:1,"empty?":1,entries:1,eof:1,"eof?":1,"eql?":1,"equal?":1,"eval":1,exec:1,exit:1,"exit!":1,extend:1,fail:1,fcntl:1,fetch:1,fileno:1,fill:1,find:1,find_all:1,first:1,flatten:1,"flatten!":1,floor:1,flush:1,for_fd:1,foreach:1,fork:1,format:1,freeze:1,"frozen?":1,fsync:1,getc:1,gets:1,global_variables:1,grep:1,gsub:1,"gsub!":1,"has_key?":1,"has_value?":1,hash:1,hex:1,id:1,include:1,"include?":1,included_modules:1,index:1,indexes:1,indices:1,induced_from:1,inject:1,insert:1,inspect:1,instance_eval:1,instance_method:1,instance_methods:1,"instance_of?":1,"instance_variable_defined?":1,instance_variable_get:1,instance_variable_set:1,instance_variables:1,"integer?":1,intern:1,invert:1,ioctl:1,"is_a?":1,isatty:1,"iterator?":1,join:1,"key?":1,keys:1,"kind_of?":1,lambda:1,last:1,length:1,lineno:1,ljust:1,load:1,local_variables:1,loop:1,lstrip:1,"lstrip!":1,map:1,"map!":1,match:1,max:1,"member?":1,merge:1,"merge!":1,method:1,"method_defined?":1,method_missing:1,methods:1,min:1,module_eval:1,modulo:1,name:1,nesting:1,"new":1,next:1,"next!":1,"nil?":1,nitems:1,"nonzero?":1,object_id:1,oct:1,open:1,pack:1,partition:1,pid:1,pipe:1,pop:1,popen:1,pos:1,prec:1,prec_f:1,prec_i:1,print:1,printf:1,private_class_method:1,private_instance_methods:1,"private_method_defined?":1,private_methods:1,proc:1,protected_instance_methods:1,"protected_method_defined?":1,protected_methods:1,public_class_method:1,public_instance_methods:1,"public_method_defined?":1,public_methods:1,push:1,putc:1,puts:1,quo:1,raise:1,rand:1,rassoc:1,read:1,read_nonblock:1,readchar:1,readline:1,readlines:1,readpartial:1,rehash:1,reject:1,"reject!":1,remainder:1,reopen:1,replace:1,require:1,"respond_to?":1,reverse:1,"reverse!":1,reverse_each:1,rewind:1,rindex:1,rjust:1,round:1,rstrip:1,"rstrip!":1,scan:1,seek:1,select:1,send:1,set_trace_func:1,shift:1,singleton_method_added:1,singleton_methods:1,size:1,sleep:1,slice:1,"slice!":1,sort:1,"sort!":1,sort_by:1,split:1,sprintf:1,squeeze:1,"squeeze!":1,srand:1,stat:1,step:1,store:1,strip:1,"strip!":1,sub:1,"sub!":1,succ:1,"succ!":1,sum:1,superclass:1,swapcase:1,"swapcase!":1,sync:1,syscall:1,sysopen:1,sysread:1,sysseek:1,system:1,syswrite:1,taint:1,"tainted?":1,tell:1,test:1,"throw":1,times:1,to_a:1,to_ary:1,to_f:1,to_hash:1,to_i:1,to_int:1,to_io:1,to_proc:1,to_s:1,to_str:1,to_sym:1,tr:1,"tr!":1,tr_s:1,"tr_s!":1,trace_var:1,transpose:1,trap:1,truncate:1,"tty?":1,type:1,ungetc:1,uniq:1,"uniq!":1,unpack:1,unshift:1,untaint:1,untrace_var:1,upcase:1,"upcase!":1,update:1,upto:1,"value?":1,values:1,values_at:1,warn:1,write:1,write_nonblock:1,"zero?":1,zip:1}};var h={cN:"yardoctag",b:"@[A-Za-z]+"};var d={cN:"comment",b:"#",e:"$",c:[h]};var c={cN:"comment",b:"^\\=begin",e:"^\\=end",c:[h],r:10};var b={cN:"comment",b:"^__END__",e:"\\n$"};var u={cN:"subst",b:"#\\{",e:"}",l:g,k:n};var p=[hljs.BE,u];var s={cN:"string",b:"'",e:"'",c:p,r:0};var r={cN:"string",b:'"',e:'"',c:p,r:0};var q={cN:"string",b:"%[qw]?\\(",e:"\\)",c:p,r:10};var o={cN:"string",b:"%[qw]?\\[",e:"\\]",c:p,r:10};var m={cN:"string",b:"%[qw]?{",e:"}",c:p,r:10};var l={cN:"string",b:"%[qw]?<",e:">",c:p,r:10};var k={cN:"string",b:"%[qw]?/",e:"/",c:p,r:10};var j={cN:"string",b:"%[qw]?%",e:"%",c:p,r:10};var i={cN:"string",b:"%[qw]?-",e:"-",c:p,r:10};var t={cN:"string",b:"%[qw]?\\|",e:"\\|",c:p,r:10};var e={cN:"function",b:"\\bdef\\s+",e:" |$|;",l:g,k:n,c:[{cN:"title",b:a,l:g,k:n},{cN:"params",b:"\\(",e:"\\)",l:g,k:n},d,c,b]};var f={cN:"identifier",b:g,l:g,k:n,r:0};var v=[d,c,b,s,r,q,o,m,l,k,j,i,t,{cN:"class",b:"\\b(class|module)\\b",e:"$|;",k:{"class":1,module:1},c:[{cN:"title",b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?",r:0},{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+hljs.IR+"::)?"+hljs.IR}]},d,c,b]},e,{cN:"constant",b:"(::)?([A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:":",c:[s,r,q,o,m,l,k,j,i,t,f],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"number",b:"\\?\\w"},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},f,{b:"("+hljs.RSR+")\\s*",c:[d,c,b,{cN:"regexp",b:"/",e:"/[a-z]*",i:"\\n",c:[hljs.BE]}],r:0}];u.c=v;e.c[1].c=v;return{dM:{l:g,k:n,c:v}}}();hljs.LANGUAGES.javascript={dM:{k:{keyword:{"in":1,"if":1,"for":1,"while":1,"finally":1,"var":1,"new":1,"function":1,"do":1,"return":1,"void":1,"else":1,"break":1,"catch":1,"instanceof":1,"with":1,"throw":1,"case":1,"default":1,"try":1,"this":1,"switch":1,"continue":1,"typeof":1,"delete":1},literal:{"true":1,"false":1,"null":1}},c:[hljs.ASM,hljs.QSM,hljs.CLCM,hljs.CBLCLM,hljs.CNM,{b:"("+hljs.RSR+"|case|return|throw)\\s*",k:{"return":1,"throw":1,"case":1},c:[hljs.CLCM,hljs.CBLCLM,{cN:"regexp",b:"/",e:"/[gim]*",c:[{b:"\\\\/"}]}],r:0},{cN:"function",b:"\\bfunction\\b",e:"{",k:{"function":1},c:[{cN:"title",b:"[A-Za-z$_][0-9A-Za-z$_]*"},{cN:"params",b:"\\(",e:"\\)",c:[hljs.ASM,hljs.QSM,hljs.CLCM,hljs.CBLCLM]}]}]}};hljs.LANGUAGES.css=function(){var a={cN:"function",b:hljs.IR+"\\(",e:"\\)",c:[{eW:true,eE:true,c:[hljs.NM,hljs.ASM,hljs.QSM]}]};return{cI:true,dM:{i:"[=/|']",c:[hljs.CBLCLM,{cN:"id",b:"\\#[A-Za-z0-9_-]+"},{cN:"class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"attr_selector",b:"\\[",e:"\\]",i:"$"},{cN:"pseudo",b:":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\\"\\']+"},{cN:"at_rule",b:"@(font-face|page)",l:"[a-z-]+",k:{"font-face":1,page:1}},{cN:"at_rule",b:"@",e:"[{;]",eE:true,k:{"import":1,page:1,media:1,charset:1},c:[a,hljs.ASM,hljs.QSM,hljs.NM]},{cN:"tag",b:hljs.IR,r:0},{cN:"rules",b:"{",e:"}",i:"[^\\s]",r:0,c:[hljs.CBLCLM,{cN:"rule",b:"[^\\s]",rB:true,e:";",eW:true,c:[{cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:true,i:"[^\\s]",starts:{cN:"value",eW:true,eE:true,c:[a,hljs.NM,hljs.QSM,hljs.ASM,hljs.CBLCLM,{cN:"hexcolor",b:"\\#[0-9A-F]+"},{cN:"important",b:"!important"}]}}]}]}]}}}();hljs.LANGUAGES.xml=function(){var b="[A-Za-z0-9\\._:-]+";var a={eW:true,c:[{cN:"attribute",b:b,r:0},{b:'="',rB:true,e:'"',c:[{cN:"value",b:'"',eW:true}]},{b:"='",rB:true,e:"'",c:[{cN:"value",b:"'",eW:true}]},{b:"=",c:[{cN:"value",b:"[^\\s/>]+"}]}]};return{cI:true,dM:{c:[{cN:"pi",b:"<\\?",e:"\\?>",r:10},{cN:"doctype",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"",k:{title:{style:1}},c:[a],starts:{cN:"css",e:"",rE:true,sL:"css"}},{cN:"tag",b:"",k:{title:{script:1}},c:[a],starts:{cN:"javascript",e:"<\/script>",rE:true,sL:"javascript"}},{cN:"vbscript",b:"<%",e:"%>",sL:"vbscript"},{cN:"tag",b:"",c:[{cN:"title",b:"[^ />]+"},a]}]}}}();hljs.LANGUAGES.java={dM:{k:{"false":1,"synchronized":1,"int":1,"abstract":1,"float":1,"private":1,"char":1,"interface":1,"boolean":1,"static":1,"null":1,"if":1,"const":1,"for":1,"true":1,"while":1,"long":1,"throw":1,strictfp:1,"finally":1,"protected":1,"extends":1,"import":1,"native":1,"final":1,"implements":1,"return":1,"void":1,"enum":1,"else":1,"break":1,"transient":1,"new":1,"catch":1,"instanceof":1,"byte":1,"super":1,"class":1,"volatile":1,"case":1,assert:1,"short":1,"package":1,"default":1,"double":1,"public":1,"try":1,"this":1,"switch":1,"continue":1,"throws":1},c:[{cN:"javadoc",b:"/\\*\\*",e:"\\*/",c:[{cN:"javadoctag",b:"@[A-Za-z]+"}],r:10},hljs.CLCM,hljs.CBLCLM,hljs.ASM,hljs.QSM,{cN:"class",b:"(class |interface )",e:"{",k:{"class":1,"interface":1},i:":",c:[{b:"(implements|extends)",k:{"extends":1,"implements":1},r:10},{cN:"title",b:hljs.UIR}]},hljs.CNM,{cN:"annotation",b:"@[A-Za-z]+"}]}};hljs.LANGUAGES.php={cI:true,dM:{k:{and:1,include_once:1,list:1,"abstract":1,global:1,"private":1,echo:1,"interface":1,as:1,"static":1,endswitch:1,array:1,"null":1,"if":1,endwhile:1,or:1,"const":1,"for":1,endforeach:1,self:1,"var":1,"while":1,isset:1,"public":1,"protected":1,exit:1,foreach:1,"throw":1,elseif:1,"extends":1,include:1,__FILE__:1,empty:1,require_once:1,"function":1,"do":1,xor:1,"return":1,"implements":1,parent:1,clone:1,use:1,__CLASS__:1,__LINE__:1,"else":1,"break":1,print:1,"eval":1,"new":1,"catch":1,__METHOD__:1,"class":1,"case":1,exception:1,php_user_filter:1,"default":1,die:1,require:1,__FUNCTION__:1,enddeclare:1,"final":1,"try":1,"this":1,"switch":1,"continue":1,endfor:1,endif:1,declare:1,unset:1,"true":1,"false":1,namespace:1},c:[hljs.CLCM,hljs.HCM,{cN:"comment",b:"/\\*",e:"\\*/",c:[{cN:"phpdoc",b:"\\s@[A-Za-z]+",r:10}]},hljs.CNM,hljs.inherit(hljs.ASM,{i:null}),hljs.inherit(hljs.QSM,{i:null}),{cN:"variable",b:"\\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*"},{cN:"preprocessor",b:"<\\?php",r:10},{cN:"preprocessor",b:"\\?>"}]}};hljs.LANGUAGES.python=function(){var c={cN:"string",b:"(u|b)?r?'''",e:"'''",r:10};var b={cN:"string",b:'(u|b)?r?"""',e:'"""',r:10};var a={cN:"string",b:"(u|r|ur|b|br)'",e:"'",c:[hljs.BE],r:10};var f={cN:"string",b:'(u|r|ur|b|br)"',e:'"',c:[hljs.BE],r:10};var d={cN:"title",b:hljs.UIR};var e={cN:"params",b:"\\(",e:"\\)",c:[c,b,a,f,hljs.ASM,hljs.QSM]};return{dM:{k:{keyword:{and:1,elif:1,is:1,global:1,as:1,"in":1,"if":1,from:1,raise:1,"for":1,except:1,"finally":1,print:1,"import":1,pass:1,"return":1,exec:1,"else":1,"break":1,not:1,"with":1,"class":1,assert:1,yield:1,"try":1,"while":1,"continue":1,del:1,or:1,def:1,lambda:1,nonlocal:10},built_in:{None:1,True:1,False:1,Ellipsis:1,NotImplemented:1}},i:"(|\\?)",c:[hljs.HCM,c,b,a,f,hljs.ASM,hljs.QSM,{cN:"function",b:"\\bdef ",e:":",i:"$",k:{def:1},c:[d,e],r:10},{cN:"class",b:"\\bclass ",e:":",i:"[${]",k:{"class":1},c:[d,e],r:10},hljs.CNM,{cN:"decorator",b:"@",e:"$"}]}}}();hljs.LANGUAGES.perl=function(){var c={getpwent:1,getservent:1,quotemeta:1,msgrcv:1,scalar:1,kill:1,dbmclose:1,undef:1,lc:1,ma:1,syswrite:1,tr:1,send:1,umask:1,sysopen:1,shmwrite:1,vec:1,qx:1,utime:1,local:1,oct:1,semctl:1,localtime:1,readpipe:1,"do":1,"return":1,format:1,read:1,sprintf:1,dbmopen:1,pop:1,getpgrp:1,not:1,getpwnam:1,rewinddir:1,qq:1,fileno:1,qw:1,endprotoent:1,wait:1,sethostent:1,bless:1,s:1,opendir:1,"continue":1,each:1,sleep:1,endgrent:1,shutdown:1,dump:1,chomp:1,connect:1,getsockname:1,die:1,socketpair:1,close:1,flock:1,exists:1,index:1,shmget:1,sub:1,"for":1,endpwent:1,redo:1,lstat:1,msgctl:1,setpgrp:1,abs:1,exit:1,select:1,print:1,ref:1,gethostbyaddr:1,unshift:1,fcntl:1,syscall:1,"goto":1,getnetbyaddr:1,join:1,gmtime:1,symlink:1,semget:1,splice:1,x:1,getpeername:1,recv:1,log:1,setsockopt:1,cos:1,last:1,reverse:1,gethostbyname:1,getgrnam:1,study:1,formline:1,endhostent:1,times:1,chop:1,length:1,gethostent:1,getnetent:1,pack:1,getprotoent:1,getservbyname:1,rand:1,mkdir:1,pos:1,chmod:1,y:1,substr:1,endnetent:1,printf:1,next:1,open:1,msgsnd:1,readdir:1,use:1,unlink:1,getsockopt:1,getpriority:1,rindex:1,wantarray:1,hex:1,system:1,getservbyport:1,endservent:1,"int":1,chr:1,untie:1,rmdir:1,prototype:1,tell:1,listen:1,fork:1,shmread:1,ucfirst:1,setprotoent:1,"else":1,sysseek:1,link:1,getgrgid:1,shmctl:1,waitpid:1,unpack:1,getnetbyname:1,reset:1,chdir:1,grep:1,split:1,require:1,caller:1,lcfirst:1,until:1,warn:1,"while":1,values:1,shift:1,telldir:1,getpwuid:1,my:1,getprotobynumber:1,"delete":1,and:1,sort:1,uc:1,defined:1,srand:1,accept:1,"package":1,seekdir:1,getprotobyname:1,semop:1,our:1,rename:1,seek:1,"if":1,q:1,chroot:1,sysread:1,setpwent:1,no:1,crypt:1,getc:1,chown:1,sqrt:1,write:1,setnetent:1,setpriority:1,foreach:1,tie:1,sin:1,msgget:1,map:1,stat:1,getlogin:1,unless:1,elsif:1,truncate:1,exec:1,keys:1,glob:1,tied:1,closedir:1,ioctl:1,socket:1,readlink:1,"eval":1,xor:1,readline:1,binmode:1,setservent:1,eof:1,ord:1,bind:1,alarm:1,pipe:1,atan2:1,getgrent:1,exp:1,time:1,push:1,setgrent:1,gt:1,lt:1,or:1,ne:1,m:1};var d={cN:"subst",b:"[$@]\\{",e:"}",k:c,r:10};var b={cN:"variable",b:"\\$\\d"};var a={cN:"variable",b:"[\\$\\%\\@\\*](\\^\\w\\b|#\\w+(\\:\\:\\w+)*|[^\\s\\w{]|{\\w+}|\\w+(\\:\\:\\w*)*)"};var g=[hljs.BE,d,b,a];var f={b:"->",c:[{b:hljs.IR},{b:"{",e:"}"}]};var e=[b,a,hljs.HCM,{cN:"comment",b:"^(__END__|__DATA__)",e:"\\n$",r:5},f,{cN:"string",b:"q[qwxr]?\\s*\\(",e:"\\)",c:g,r:5},{cN:"string",b:"q[qwxr]?\\s*\\[",e:"\\]",c:g,r:5},{cN:"string",b:"q[qwxr]?\\s*\\{",e:"\\}",c:g,r:5},{cN:"string",b:"q[qwxr]?\\s*\\|",e:"\\|",c:g,r:5},{cN:"string",b:"q[qwxr]?\\s*\\<",e:"\\>",c:g,r:5},{cN:"string",b:"qw\\s+q",e:"q",c:g,r:5},{cN:"string",b:"'",e:"'",c:[hljs.BE],r:0},{cN:"string",b:'"',e:'"',c:g,r:0},{cN:"string",b:"`",e:"`",c:[hljs.BE]},{cN:"string",b:"{\\w+}",r:0},{cN:"string",b:"-?\\w+\\s*\\=\\>",r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[hljs.BE],r:0},{cN:"sub",b:"\\bsub\\b",e:"(\\s*\\(.*?\\))?[;{]",k:{sub:1},r:5},{cN:"operator",b:"-\\w\\b",r:0},{cN:"pod",b:"\\=\\w",e:"\\=cut"}];d.c=e;f.c[1].c=e;return{dM:{k:c,c:e}}}();hljs.LANGUAGES.cpp=function(){var b={keyword:{"false":1,"int":1,"float":1,"while":1,"private":1,"char":1,"catch":1,"export":1,virtual:1,operator:2,sizeof:2,dynamic_cast:2,typedef:2,const_cast:2,"const":1,struct:1,"for":1,static_cast:2,union:1,namespace:1,unsigned:1,"long":1,"throw":1,"volatile":2,"static":1,"protected":1,bool:1,template:1,mutable:1,"if":1,"public":1,friend:2,"do":1,"return":1,"goto":1,auto:1,"void":2,"enum":1,"else":1,"break":1,"new":1,extern:1,using:1,"true":1,"class":1,asm:1,"case":1,typeid:1,"short":1,reinterpret_cast:2,"default":1,"double":1,register:1,explicit:1,signed:1,typename:1,"try":1,"this":1,"switch":1,"continue":1,wchar_t:1,inline:1,"delete":1,alignof:1,char16_t:1,char32_t:1,constexpr:1,decltype:1,noexcept:1,nullptr:1,static_assert:1,thread_local:1},built_in:{std:1,string:1,cin:1,cout:1,cerr:1,clog:1,stringstream:1,istringstream:1,ostringstream:1,auto_ptr:1,deque:1,list:1,queue:1,stack:1,vector:1,map:1,set:1,bitset:1,multiset:1,multimap:1,unordered_set:1,unordered_map:1,unordered_multiset:1,unordered_multimap:1,array:1,shared_ptr:1}};var a={cN:"stl_container",b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:b,r:10};a.c=[a];return{dM:{k:b,i:""}while(y.length||z.length){var v=u().splice(0,1)[0];w+=m(x.substr(r,v.offset-r));r=v.offset;if(v.event=="start"){w+=s(v.node);t.push(v.node)}else{if(v.event=="stop"){var q=t.length;do{q--;var p=t[q];w+=("")}while(p!=v.node);t.splice(q,1);while(q'+m(L[0])+""}else{N+=m(L[0])}P=O.lR.lastIndex;L=O.lR.exec(M)}N+=m(M.substr(P,M.length-P));return N}function K(r,M){if(M.sL&&d[M.sL]){var L=e(M.sL,r);t+=L.keyword_count;return L.value}else{return F(r,M)}}function I(M,r){var L=M.cN?'':"";if(M.rB){q+=L;M.buffer=""}else{if(M.eB){q+=m(r)+L;M.buffer=""}else{q+=L;M.buffer=r}}C.push(M);B+=M.r}function E(O,L,Q){var R=C[C.length-1];if(Q){q+=K(R.buffer+O,R);return false}var M=z(L,R);if(M){q+=K(R.buffer+O,R);I(M,L);return M.rB}var r=w(C.length-1,L);if(r){var N=R.cN?"":"";if(R.rE){q+=K(R.buffer+O,R)+N}else{if(R.eE){q+=K(R.buffer+O,R)+N+m(L)}else{q+=K(R.buffer+O+L,R)+N}}while(r>1){N=C[C.length-2].cN?"":"";q+=N;r--;C.length--}var P=C[C.length-1];C.length--;C[C.length-1].buffer="";if(P.starts){I(P.starts,"")}return R.rE}if(x(L,R)){throw"Illegal"}}var H=d[J];var C=[H.dM];var B=0;var t=0;var q="";try{var v=0;H.dM.buffer="";do{var y=s(D,v);var u=E(y[0],y[1],y[2]);v+=y[0].length;if(!u){v+=y[1].length}}while(!y[2]);if(C.length>1){throw"Illegal"}return{r:B,keyword_count:t,value:q}}catch(G){if(G=="Illegal"){return{r:0,keyword_count:0,value:m(D)}}else{throw G}}}function f(t){var r={keyword_count:0,r:0,value:m(t)};var q=r;for(var p in d){if(!d.hasOwnProperty(p)){continue}var s=e(p,t);s.language=p;if(s.keyword_count+s.r>q.keyword_count+q.r){q=s}if(s.keyword_count+s.r>r.keyword_count+r.r){q=r;r=s}}if(q.language){r.second_best=q}return r}function h(r,q,p){if(q){r=r.replace(/^((<[^>]+>|\t)+)/gm,function(t,w,v,u){return w.replace(/\t/g,q)})}if(p){r=r.replace(/\n/g,"
    ")}return r}function o(u,x,q){var y=g(u,q);var s=a(u);if(s=="no-highlight"){return}if(s){var w=e(s,y)}else{var w=f(y);s=w.language}var p=b(u);if(p.length){var r=document.createElement("pre");r.innerHTML=w.value;w.value=l(p,b(r),y)}w.value=h(w.value,x,q);var t=u.className;if(!t.match("(\\s|^)(language-)?"+s+"(\\s|$)")){t=t?(t+" "+s):s}if(/MSIE [678]/.test(navigator.userAgent)&&u.tagName=="CODE"&&u.parentNode.tagName=="PRE"){var r=u.parentNode;var v=document.createElement("div");v.innerHTML="
    "+w.value+"
    ";u=v.firstChild.firstChild;v.firstChild.cN=r.cN;r.parentNode.replaceChild(v.firstChild,r)}else{u.innerHTML=w.value}u.className=t;u.result={language:s,kw:w.keyword_count,re:w.r};if(w.second_best){u.second_best={language:w.second_best.language,kw:w.second_best.keyword_count,re:w.second_best.r}}}function k(){if(k.called){return}k.called=true;var r=document.getElementsByTagName("pre");for(var p=0;p|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\.",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE],r:0};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE],r:0};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.inherit=function(p,s){var r={};for(var q in p){r[q]=p[q]}if(s){for(var q in s){r[q]=s[q]}}return r}}();hljs.LANGUAGES.cs={dM:{k:{"abstract":1,as:1,base:1,bool:1,"break":1,"byte":1,"case":1,"catch":1,"char":1,checked:1,"class":1,"const":1,"continue":1,decimal:1,"default":1,delegate:1,"do":1,"do":1,"double":1,"else":1,"enum":1,event:1,explicit:1,extern:1,"false":1,"finally":1,fixed:1,"float":1,"for":1,foreach:1,"goto":1,"if":1,implicit:1,"in":1,"int":1,"interface":1,internal:1,is:1,lock:1,"long":1,namespace:1,"new":1,"null":1,object:1,operator:1,out:1,override:1,params:1,"private":1,"protected":1,"public":1,readonly:1,ref:1,"return":1,sbyte:1,sealed:1,"short":1,sizeof:1,stackalloc:1,"static":1,string:1,struct:1,"switch":1,"this":1,"throw":1,"true":1,"try":1,"typeof":1,uint:1,ulong:1,unchecked:1,unsafe:1,ushort:1,using:1,virtual:1,"volatile":1,"void":1,"while":1,ascending:1,descending:1,from:1,get:1,group:1,into:1,join:1,let:1,orderby:1,partial:1,select:1,set:1,value:1,"var":1,where:1,yield:1},c:[{cN:"comment",b:"///",e:"$",rB:true,c:[{cN:"xmlDocTag",b:"///|"},{cN:"xmlDocTag",b:""}]},hljs.CLCM,hljs.CBLCLM,{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},hljs.ASM,hljs.QSM,hljs.CNM]}};hljs.LANGUAGES.ruby=function(){var g="[a-zA-Z_][a-zA-Z0-9_]*(\\!|\\?)?";var a="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?";var n={keyword:{and:1,"false":1,then:1,defined:1,module:1,"in":1,"return":1,redo:1,"if":1,BEGIN:1,retry:1,end:1,"for":1,"true":1,self:1,when:1,next:1,until:1,"do":1,begin:1,unless:1,END:1,rescue:1,nil:1,"else":1,"break":1,undef:1,not:1,"super":1,"class":1,"case":1,require:1,yield:1,alias:1,"while":1,ensure:1,elsif:1,or:1,def:1},keymethods:{__id__:1,__send__:1,abort:1,abs:1,"all?":1,allocate:1,ancestors:1,"any?":1,arity:1,assoc:1,at:1,at_exit:1,autoload:1,"autoload?":1,"between?":1,binding:1,binmode:1,"block_given?":1,call:1,callcc:1,caller:1,capitalize:1,"capitalize!":1,casecmp:1,"catch":1,ceil:1,center:1,chomp:1,"chomp!":1,chop:1,"chop!":1,chr:1,"class":1,class_eval:1,"class_variable_defined?":1,class_variables:1,clear:1,clone:1,close:1,close_read:1,close_write:1,"closed?":1,coerce:1,collect:1,"collect!":1,compact:1,"compact!":1,concat:1,"const_defined?":1,const_get:1,const_missing:1,const_set:1,constants:1,count:1,crypt:1,"default":1,default_proc:1,"delete":1,"delete!":1,delete_at:1,delete_if:1,detect:1,display:1,div:1,divmod:1,downcase:1,"downcase!":1,downto:1,dump:1,dup:1,each:1,each_byte:1,each_index:1,each_key:1,each_line:1,each_pair:1,each_value:1,each_with_index:1,"empty?":1,entries:1,eof:1,"eof?":1,"eql?":1,"equal?":1,"eval":1,exec:1,exit:1,"exit!":1,extend:1,fail:1,fcntl:1,fetch:1,fileno:1,fill:1,find:1,find_all:1,first:1,flatten:1,"flatten!":1,floor:1,flush:1,for_fd:1,foreach:1,fork:1,format:1,freeze:1,"frozen?":1,fsync:1,getc:1,gets:1,global_variables:1,grep:1,gsub:1,"gsub!":1,"has_key?":1,"has_value?":1,hash:1,hex:1,id:1,include:1,"include?":1,included_modules:1,index:1,indexes:1,indices:1,induced_from:1,inject:1,insert:1,inspect:1,instance_eval:1,instance_method:1,instance_methods:1,"instance_of?":1,"instance_variable_defined?":1,instance_variable_get:1,instance_variable_set:1,instance_variables:1,"integer?":1,intern:1,invert:1,ioctl:1,"is_a?":1,isatty:1,"iterator?":1,join:1,"key?":1,keys:1,"kind_of?":1,lambda:1,last:1,length:1,lineno:1,ljust:1,load:1,local_variables:1,loop:1,lstrip:1,"lstrip!":1,map:1,"map!":1,match:1,max:1,"member?":1,merge:1,"merge!":1,method:1,"method_defined?":1,method_missing:1,methods:1,min:1,module_eval:1,modulo:1,name:1,nesting:1,"new":1,next:1,"next!":1,"nil?":1,nitems:1,"nonzero?":1,object_id:1,oct:1,open:1,pack:1,partition:1,pid:1,pipe:1,pop:1,popen:1,pos:1,prec:1,prec_f:1,prec_i:1,print:1,printf:1,private_class_method:1,private_instance_methods:1,"private_method_defined?":1,private_methods:1,proc:1,protected_instance_methods:1,"protected_method_defined?":1,protected_methods:1,public_class_method:1,public_instance_methods:1,"public_method_defined?":1,public_methods:1,push:1,putc:1,puts:1,quo:1,raise:1,rand:1,rassoc:1,read:1,read_nonblock:1,readchar:1,readline:1,readlines:1,readpartial:1,rehash:1,reject:1,"reject!":1,remainder:1,reopen:1,replace:1,require:1,"respond_to?":1,reverse:1,"reverse!":1,reverse_each:1,rewind:1,rindex:1,rjust:1,round:1,rstrip:1,"rstrip!":1,scan:1,seek:1,select:1,send:1,set_trace_func:1,shift:1,singleton_method_added:1,singleton_methods:1,size:1,sleep:1,slice:1,"slice!":1,sort:1,"sort!":1,sort_by:1,split:1,sprintf:1,squeeze:1,"squeeze!":1,srand:1,stat:1,step:1,store:1,strip:1,"strip!":1,sub:1,"sub!":1,succ:1,"succ!":1,sum:1,superclass:1,swapcase:1,"swapcase!":1,sync:1,syscall:1,sysopen:1,sysread:1,sysseek:1,system:1,syswrite:1,taint:1,"tainted?":1,tell:1,test:1,"throw":1,times:1,to_a:1,to_ary:1,to_f:1,to_hash:1,to_i:1,to_int:1,to_io:1,to_proc:1,to_s:1,to_str:1,to_sym:1,tr:1,"tr!":1,tr_s:1,"tr_s!":1,trace_var:1,transpose:1,trap:1,truncate:1,"tty?":1,type:1,ungetc:1,uniq:1,"uniq!":1,unpack:1,unshift:1,untaint:1,untrace_var:1,upcase:1,"upcase!":1,update:1,upto:1,"value?":1,values:1,values_at:1,warn:1,write:1,write_nonblock:1,"zero?":1,zip:1}};var h={cN:"yardoctag",b:"@[A-Za-z]+"};var d={cN:"comment",b:"#",e:"$",c:[h]};var c={cN:"comment",b:"^\\=begin",e:"^\\=end",c:[h],r:10};var b={cN:"comment",b:"^__END__",e:"\\n$"};var u={cN:"subst",b:"#\\{",e:"}",l:g,k:n};var p=[hljs.BE,u];var s={cN:"string",b:"'",e:"'",c:p,r:0};var r={cN:"string",b:'"',e:'"',c:p,r:0};var q={cN:"string",b:"%[qw]?\\(",e:"\\)",c:p,r:10};var o={cN:"string",b:"%[qw]?\\[",e:"\\]",c:p,r:10};var m={cN:"string",b:"%[qw]?{",e:"}",c:p,r:10};var l={cN:"string",b:"%[qw]?<",e:">",c:p,r:10};var k={cN:"string",b:"%[qw]?/",e:"/",c:p,r:10};var j={cN:"string",b:"%[qw]?%",e:"%",c:p,r:10};var i={cN:"string",b:"%[qw]?-",e:"-",c:p,r:10};var t={cN:"string",b:"%[qw]?\\|",e:"\\|",c:p,r:10};var e={cN:"function",b:"\\bdef\\s+",e:" |$|;",l:g,k:n,c:[{cN:"title",b:a,l:g,k:n},{cN:"params",b:"\\(",e:"\\)",l:g,k:n},d,c,b]};var f={cN:"identifier",b:g,l:g,k:n,r:0};var v=[d,c,b,s,r,q,o,m,l,k,j,i,t,{cN:"class",b:"\\b(class|module)\\b",e:"$|;",k:{"class":1,module:1},c:[{cN:"title",b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?",r:0},{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+hljs.IR+"::)?"+hljs.IR}]},d,c,b]},e,{cN:"constant",b:"(::)?([A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:":",c:[s,r,q,o,m,l,k,j,i,t,f],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"number",b:"\\?\\w"},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},f,{b:"("+hljs.RSR+")\\s*",c:[d,c,b,{cN:"regexp",b:"/",e:"/[a-z]*",i:"\\n",c:[hljs.BE]}],r:0}];u.c=v;e.c[1].c=v;return{dM:{l:g,k:n,c:v}}}();hljs.LANGUAGES.javascript={dM:{k:{keyword:{"in":1,"if":1,"for":1,"while":1,"finally":1,"var":1,"new":1,"function":1,"do":1,"return":1,"void":1,"else":1,"break":1,"catch":1,"instanceof":1,"with":1,"throw":1,"case":1,"default":1,"try":1,"this":1,"switch":1,"continue":1,"typeof":1,"delete":1},literal:{"true":1,"false":1,"null":1}},c:[hljs.ASM,hljs.QSM,hljs.CLCM,hljs.CBLCLM,hljs.CNM,{b:"("+hljs.RSR+"|case|return|throw)\\s*",k:{"return":1,"throw":1,"case":1},c:[hljs.CLCM,hljs.CBLCLM,{cN:"regexp",b:"/",e:"/[gim]*",c:[{b:"\\\\/"}]}],r:0},{cN:"function",b:"\\bfunction\\b",e:"{",k:{"function":1},c:[{cN:"title",b:"[A-Za-z$_][0-9A-Za-z$_]*"},{cN:"params",b:"\\(",e:"\\)",c:[hljs.ASM,hljs.QSM,hljs.CLCM,hljs.CBLCLM]}]}]}};hljs.LANGUAGES.css=function(){var a={cN:"function",b:hljs.IR+"\\(",e:"\\)",c:[{eW:true,eE:true,c:[hljs.NM,hljs.ASM,hljs.QSM]}]};return{cI:true,dM:{i:"[=/|']",c:[hljs.CBLCLM,{cN:"id",b:"\\#[A-Za-z0-9_-]+"},{cN:"class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"attr_selector",b:"\\[",e:"\\]",i:"$"},{cN:"pseudo",b:":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\\"\\']+"},{cN:"at_rule",b:"@(font-face|page)",l:"[a-z-]+",k:{"font-face":1,page:1}},{cN:"at_rule",b:"@",e:"[{;]",eE:true,k:{"import":1,page:1,media:1,charset:1},c:[a,hljs.ASM,hljs.QSM,hljs.NM]},{cN:"tag",b:hljs.IR,r:0},{cN:"rules",b:"{",e:"}",i:"[^\\s]",r:0,c:[hljs.CBLCLM,{cN:"rule",b:"[^\\s]",rB:true,e:";",eW:true,c:[{cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:true,i:"[^\\s]",starts:{cN:"value",eW:true,eE:true,c:[a,hljs.NM,hljs.QSM,hljs.ASM,hljs.CBLCLM,{cN:"hexcolor",b:"\\#[0-9A-F]+"},{cN:"important",b:"!important"}]}}]}]}]}}}();hljs.LANGUAGES.xml=function(){var b="[A-Za-z0-9\\._:-]+";var a={eW:true,c:[{cN:"attribute",b:b,r:0},{b:'="',rB:true,e:'"',c:[{cN:"value",b:'"',eW:true}]},{b:"='",rB:true,e:"'",c:[{cN:"value",b:"'",eW:true}]},{b:"=",c:[{cN:"value",b:"[^\\s/>]+"}]}]};return{cI:true,dM:{c:[{cN:"pi",b:"<\\?",e:"\\?>",r:10},{cN:"doctype",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"",k:{title:{style:1}},c:[a],starts:{cN:"css",e:"",rE:true,sL:"css"}},{cN:"tag",b:"",k:{title:{script:1}},c:[a],starts:{cN:"javascript",e:"<\/script>",rE:true,sL:"javascript"}},{cN:"vbscript",b:"<%",e:"%>",sL:"vbscript"},{cN:"tag",b:"",c:[{cN:"title",b:"[^ />]+"},a]}]}}}();hljs.LANGUAGES.java={dM:{k:{"false":1,"synchronized":1,"int":1,"abstract":1,"float":1,"private":1,"char":1,"interface":1,"boolean":1,"static":1,"null":1,"if":1,"const":1,"for":1,"true":1,"while":1,"long":1,"throw":1,strictfp:1,"finally":1,"protected":1,"extends":1,"import":1,"native":1,"final":1,"implements":1,"return":1,"void":1,"enum":1,"else":1,"break":1,"transient":1,"new":1,"catch":1,"instanceof":1,"byte":1,"super":1,"class":1,"volatile":1,"case":1,assert:1,"short":1,"package":1,"default":1,"double":1,"public":1,"try":1,"this":1,"switch":1,"continue":1,"throws":1},c:[{cN:"javadoc",b:"/\\*\\*",e:"\\*/",c:[{cN:"javadoctag",b:"@[A-Za-z]+"}],r:10},hljs.CLCM,hljs.CBLCLM,hljs.ASM,hljs.QSM,{cN:"class",b:"(class |interface )",e:"{",k:{"class":1,"interface":1},i:":",c:[{b:"(implements|extends)",k:{"extends":1,"implements":1},r:10},{cN:"title",b:hljs.UIR}]},hljs.CNM,{cN:"annotation",b:"@[A-Za-z]+"}]}};hljs.LANGUAGES.php={cI:true,dM:{k:{and:1,include_once:1,list:1,"abstract":1,global:1,"private":1,echo:1,"interface":1,as:1,"static":1,endswitch:1,array:1,"null":1,"if":1,endwhile:1,or:1,"const":1,"for":1,endforeach:1,self:1,"var":1,"while":1,isset:1,"public":1,"protected":1,exit:1,foreach:1,"throw":1,elseif:1,"extends":1,include:1,__FILE__:1,empty:1,require_once:1,"function":1,"do":1,xor:1,"return":1,"implements":1,parent:1,clone:1,use:1,__CLASS__:1,__LINE__:1,"else":1,"break":1,print:1,"eval":1,"new":1,"catch":1,__METHOD__:1,"class":1,"case":1,exception:1,php_user_filter:1,"default":1,die:1,require:1,__FUNCTION__:1,enddeclare:1,"final":1,"try":1,"this":1,"switch":1,"continue":1,endfor:1,endif:1,declare:1,unset:1,"true":1,"false":1,namespace:1},c:[hljs.CLCM,hljs.HCM,{cN:"comment",b:"/\\*",e:"\\*/",c:[{cN:"phpdoc",b:"\\s@[A-Za-z]+",r:10}]},hljs.CNM,hljs.inherit(hljs.ASM,{i:null}),hljs.inherit(hljs.QSM,{i:null}),{cN:"variable",b:"\\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*"},{cN:"preprocessor",b:"<\\?php",r:10},{cN:"preprocessor",b:"\\?>"}]}};hljs.LANGUAGES.python=function(){var c={cN:"string",b:"(u|b)?r?'''",e:"'''",r:10};var b={cN:"string",b:'(u|b)?r?"""',e:'"""',r:10};var a={cN:"string",b:"(u|r|ur|b|br)'",e:"'",c:[hljs.BE],r:10};var f={cN:"string",b:'(u|r|ur|b|br)"',e:'"',c:[hljs.BE],r:10};var d={cN:"title",b:hljs.UIR};var e={cN:"params",b:"\\(",e:"\\)",c:[c,b,a,f,hljs.ASM,hljs.QSM]};return{dM:{k:{keyword:{and:1,elif:1,is:1,global:1,as:1,"in":1,"if":1,from:1,raise:1,"for":1,except:1,"finally":1,print:1,"import":1,pass:1,"return":1,exec:1,"else":1,"break":1,not:1,"with":1,"class":1,assert:1,yield:1,"try":1,"while":1,"continue":1,del:1,or:1,def:1,lambda:1,nonlocal:10},built_in:{None:1,True:1,False:1,Ellipsis:1,NotImplemented:1}},i:"(|\\?)",c:[hljs.HCM,c,b,a,f,hljs.ASM,hljs.QSM,{cN:"function",b:"\\bdef ",e:":",i:"$",k:{def:1},c:[d,e],r:10},{cN:"class",b:"\\bclass ",e:":",i:"[${]",k:{"class":1},c:[d,e],r:10},hljs.CNM,{cN:"decorator",b:"@",e:"$"}]}}}();hljs.LANGUAGES.perl=function(){var c={getpwent:1,getservent:1,quotemeta:1,msgrcv:1,scalar:1,kill:1,dbmclose:1,undef:1,lc:1,ma:1,syswrite:1,tr:1,send:1,umask:1,sysopen:1,shmwrite:1,vec:1,qx:1,utime:1,local:1,oct:1,semctl:1,localtime:1,readpipe:1,"do":1,"return":1,format:1,read:1,sprintf:1,dbmopen:1,pop:1,getpgrp:1,not:1,getpwnam:1,rewinddir:1,qq:1,fileno:1,qw:1,endprotoent:1,wait:1,sethostent:1,bless:1,s:1,opendir:1,"continue":1,each:1,sleep:1,endgrent:1,shutdown:1,dump:1,chomp:1,connect:1,getsockname:1,die:1,socketpair:1,close:1,flock:1,exists:1,index:1,shmget:1,sub:1,"for":1,endpwent:1,redo:1,lstat:1,msgctl:1,setpgrp:1,abs:1,exit:1,select:1,print:1,ref:1,gethostbyaddr:1,unshift:1,fcntl:1,syscall:1,"goto":1,getnetbyaddr:1,join:1,gmtime:1,symlink:1,semget:1,splice:1,x:1,getpeername:1,recv:1,log:1,setsockopt:1,cos:1,last:1,reverse:1,gethostbyname:1,getgrnam:1,study:1,formline:1,endhostent:1,times:1,chop:1,length:1,gethostent:1,getnetent:1,pack:1,getprotoent:1,getservbyname:1,rand:1,mkdir:1,pos:1,chmod:1,y:1,substr:1,endnetent:1,printf:1,next:1,open:1,msgsnd:1,readdir:1,use:1,unlink:1,getsockopt:1,getpriority:1,rindex:1,wantarray:1,hex:1,system:1,getservbyport:1,endservent:1,"int":1,chr:1,untie:1,rmdir:1,prototype:1,tell:1,listen:1,fork:1,shmread:1,ucfirst:1,setprotoent:1,"else":1,sysseek:1,link:1,getgrgid:1,shmctl:1,waitpid:1,unpack:1,getnetbyname:1,reset:1,chdir:1,grep:1,split:1,require:1,caller:1,lcfirst:1,until:1,warn:1,"while":1,values:1,shift:1,telldir:1,getpwuid:1,my:1,getprotobynumber:1,"delete":1,and:1,sort:1,uc:1,defined:1,srand:1,accept:1,"package":1,seekdir:1,getprotobyname:1,semop:1,our:1,rename:1,seek:1,"if":1,q:1,chroot:1,sysread:1,setpwent:1,no:1,crypt:1,getc:1,chown:1,sqrt:1,write:1,setnetent:1,setpriority:1,foreach:1,tie:1,sin:1,msgget:1,map:1,stat:1,getlogin:1,unless:1,elsif:1,truncate:1,exec:1,keys:1,glob:1,tied:1,closedir:1,ioctl:1,socket:1,readlink:1,"eval":1,xor:1,readline:1,binmode:1,setservent:1,eof:1,ord:1,bind:1,alarm:1,pipe:1,atan2:1,getgrent:1,exp:1,time:1,push:1,setgrent:1,gt:1,lt:1,or:1,ne:1,m:1};var d={cN:"subst",b:"[$@]\\{",e:"}",k:c,r:10};var b={cN:"variable",b:"\\$\\d"};var a={cN:"variable",b:"[\\$\\%\\@\\*](\\^\\w\\b|#\\w+(\\:\\:\\w+)*|[^\\s\\w{]|{\\w+}|\\w+(\\:\\:\\w*)*)"};var g=[hljs.BE,d,b,a];var f={b:"->",c:[{b:hljs.IR},{b:"{",e:"}"}]};var e=[b,a,hljs.HCM,{cN:"comment",b:"^(__END__|__DATA__)",e:"\\n$",r:5},f,{cN:"string",b:"q[qwxr]?\\s*\\(",e:"\\)",c:g,r:5},{cN:"string",b:"q[qwxr]?\\s*\\[",e:"\\]",c:g,r:5},{cN:"string",b:"q[qwxr]?\\s*\\{",e:"\\}",c:g,r:5},{cN:"string",b:"q[qwxr]?\\s*\\|",e:"\\|",c:g,r:5},{cN:"string",b:"q[qwxr]?\\s*\\<",e:"\\>",c:g,r:5},{cN:"string",b:"qw\\s+q",e:"q",c:g,r:5},{cN:"string",b:"'",e:"'",c:[hljs.BE],r:0},{cN:"string",b:'"',e:'"',c:g,r:0},{cN:"string",b:"`",e:"`",c:[hljs.BE]},{cN:"string",b:"{\\w+}",r:0},{cN:"string",b:"-?\\w+\\s*\\=\\>",r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[hljs.BE],r:0},{cN:"sub",b:"\\bsub\\b",e:"(\\s*\\(.*?\\))?[;{]",k:{sub:1},r:5},{cN:"operator",b:"-\\w\\b",r:0},{cN:"pod",b:"\\=\\w",e:"\\=cut"}];d.c=e;f.c[1].c=e;return{dM:{k:c,c:e}}}();hljs.LANGUAGES.cpp=function(){var b={keyword:{"false":1,"int":1,"float":1,"while":1,"private":1,"char":1,"catch":1,"export":1,virtual:1,operator:2,sizeof:2,dynamic_cast:2,typedef:2,const_cast:2,"const":1,struct:1,"for":1,static_cast:2,union:1,namespace:1,unsigned:1,"long":1,"throw":1,"volatile":2,"static":1,"protected":1,bool:1,template:1,mutable:1,"if":1,"public":1,friend:2,"do":1,"return":1,"goto":1,auto:1,"void":2,"enum":1,"else":1,"break":1,"new":1,extern:1,using:1,"true":1,"class":1,asm:1,"case":1,typeid:1,"short":1,reinterpret_cast:2,"default":1,"double":1,register:1,explicit:1,signed:1,typename:1,"try":1,"this":1,"switch":1,"continue":1,wchar_t:1,inline:1,"delete":1,alignof:1,char16_t:1,char32_t:1,constexpr:1,decltype:1,noexcept:1,nullptr:1,static_assert:1,thread_local:1},built_in:{std:1,string:1,cin:1,cout:1,cerr:1,clog:1,stringstream:1,istringstream:1,ostringstream:1,auto_ptr:1,deque:1,list:1,queue:1,stack:1,vector:1,map:1,set:1,bitset:1,multiset:1,multimap:1,unordered_set:1,unordered_map:1,unordered_multiset:1,unordered_multimap:1,array:1,shared_ptr:1}};var a={cN:"stl_container",b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:b,r:10};a.c=[a];return{dM:{k:b,i:"=this.size)return undefined;if(i>=this._buf.length)return undefined;return this._buf[(this.pos-i-1)%this.size]};CircularBuffer.prototype.push=function(o){this._buf[this.pos%this.size]=o;return this.pos++}},{}],3:[function(require,module,exports){var Connection=module.exports=require("./base_connection");Connection.prototype.setupSocket=function(){var connection=this;var socket=new WebSocket(this.getUrl());socket.onopen=function(){connection.handleOpen()};socket.onmessage=function(message){connection.handleData(message.data)};socket.onclose=function(){connection.handleClose()};return socket};Connection.prototype.startHeartbeat=function(){if(!this.protocol.sendHeartbeat||this.heartbeatTimer)return;var connection=this;var propertyName=null;if(typeof document.hidden!=="undefined"){propertyName="hidden"}else if(typeof document.mozHidden!=="undefined"){propertyName="mozHidden"}else if(typeof document.msHidden!=="undefined"){propertyName="msHidden"}else if(typeof document.webkitHidden!=="undefined"){propertyName="webkitHidden"}else{propertyName=undefined}var windowVisible=true;var focusListener=window.addEventListener("focus",function(e){windowVisible=true});var blurListener=window.addEventListener("blur",function(e){windowVisible=false});this.on("disconnect",function(){if(connection.heartbeatTimer){clearTimeout(connection.heartbeatTimer);delete connection.heartbeatTimer}window.removeEventListener(focusListener);window.removeEventListener(blurListener)});this.heartbeatTimer=setInterval(function(){var isVisible=propertyName===undefined?true:document[propertyName]===false;if(isVisible&&windowVisible){connection.sendHeartbeat()}else{connection.setHeartbeatState(false)}},this.opts.heartbeatInterval)}},{"./base_connection":1}],4:[function(require,module,exports){!function(process){var Frame=require("./frame"),CircularBuffer=require("./circular_buffer"),Pipeline=require("./pipeline"),EventEmitter=require("events").EventEmitter,gestureListener=require("./gesture").gestureListener,_=require("underscore");var Controller=module.exports=function(opts){var inNode=typeof process!=="undefined"&&process.title==="node";opts=_.defaults(opts||{},{inNode:inNode});this.inNode=opts.inNode;opts=_.defaults(opts||{},{frameEventName:this.useAnimationLoop()?"animationFrame":"deviceFrame",supressAnimationLoop:false});this.supressAnimationLoop=opts.supressAnimationLoop;this.frameEventName=opts.frameEventName;this.history=new CircularBuffer(200);this.lastFrame=Frame.Invalid;this.lastValidFrame=Frame.Invalid;this.lastConnectionFrame=Frame.Invalid;this.accumulatedGestures=[];if(opts.connectionType===undefined){this.connectionType=this.inBrowser()?require("./connection"):require("./node_connection")}else{this.connectionType=opts.connectionType}this.connection=new this.connectionType(opts);this.setupConnectionEvents()};Controller.prototype.gesture=function(type,cb){var creator=gestureListener(this,type);if(cb!==undefined){creator.stop(cb)}return creator};Controller.prototype.inBrowser=function(){return!this.inNode};Controller.prototype.useAnimationLoop=function(){return this.inBrowser()&&typeof chrome==="undefined"};Controller.prototype.connect=function(){var controller=this;if(this.connection.connect()&&this.inBrowser()&&!controller.supressAnimationLoop){var callback=function(){controller.emit("animationFrame",controller.lastConnectionFrame);window.requestAnimFrame(callback)};window.requestAnimFrame(callback)}};Controller.prototype.disconnect=function(){this.connection.disconnect()};Controller.prototype.frame=function(num){return this.history.get(num)||Frame.Invalid};Controller.prototype.loop=function(callback){switch(callback.length){case 1:this.on(this.frameEventName,callback);break;case 2:var controller=this;var scheduler=null;var immediateRunnerCallback=function(frame){callback(frame,function(){if(controller.lastFrame!=frame){immediateRunnerCallback(controller.lastFrame)}else{controller.once(controller.frameEventName,immediateRunnerCallback)}})};this.once(this.frameEventName,immediateRunnerCallback);break}this.connect()};Controller.prototype.addStep=function(step){if(!this.pipeline)this.pipeline=new Pipeline(this);this.pipeline.addStep(step)};Controller.prototype.processFrame=function(frame){if(frame.gestures){this.accumulatedGestures=this.accumulatedGestures.concat(frame.gestures)}if(this.pipeline){frame=this.pipeline.run(frame);if(!frame)frame=Frame.Invalid}this.lastConnectionFrame=frame;this.emit("deviceFrame",frame)};Controller.prototype.processFinishedFrame=function(frame){this.lastFrame=frame;if(frame.valid){this.lastValidFrame=frame}frame.controller=this;frame.historyIdx=this.history.push(frame);if(frame.gestures){frame.gestures=this.accumulatedGestures;this.accumulatedGestures=[];for(var gestureIdx=0;gestureIdx!=frame.gestures.length;gestureIdx++){this.emit("gesture",frame.gestures[gestureIdx],frame)}}this.emit("frame",frame)};Controller.prototype.setupConnectionEvents=function(){var controller=this;this.connection.on("frame",function(frame){controller.processFrame(frame)});this.on(this.frameEventName,function(frame){controller.processFinishedFrame(frame)});this.connection.on("disconnect",function(){controller.emit("disconnect")});this.connection.on("ready",function(){controller.emit("ready")});this.connection.on("connect",function(){controller.emit("connect")});this.connection.on("focus",function(){controller.emit("focus")});this.connection.on("blur",function(){controller.emit("blur")});this.connection.on("protocol",function(protocol){controller.emit("protocol",protocol)});this.connection.on("deviceConnect",function(evt){controller.emit(evt.state?"deviceConnected":"deviceDisconnected")})};_.extend(Controller.prototype,EventEmitter.prototype)}(require("__browserify_process"))},{"./circular_buffer":2,"./connection":3,"./frame":5,"./gesture":6,"./node_connection":16,"./pipeline":10,__browserify_process:18,events:17,underscore:20}],5:[function(require,module,exports){var Hand=require("./hand"),Pointable=require("./pointable"),createGesture=require("./gesture").createGesture,glMatrix=require("gl-matrix"),mat3=glMatrix.mat3,vec3=glMatrix.vec3,InteractionBox=require("./interaction_box"),_=require("underscore");var Frame=module.exports=function(data){this.valid=true;this.id=data.id;this.timestamp=data.timestamp;this.hands=[];this.handsMap={};this.pointables=[];this.tools=[];this.fingers=[];if(data.interactionBox){this.interactionBox=new InteractionBox(data.interactionBox)}this.gestures=[];this.pointablesMap={};this._translation=data.t;this._rotation=_.flatten(data.r);this._scaleFactor=data.s;this.data=data;this.type="frame";this.currentFrameRate=data.currentFrameRate;var handMap={};for(var handIdx=0,handCount=data.hands.length;handIdx!=handCount;handIdx++){var hand=new Hand(data.hands[handIdx]);hand.frame=this;this.hands.push(hand);this.handsMap[hand.id]=hand;handMap[hand.id]=handIdx}for(var pointableIdx=0,pointableCount=data.pointables.length;pointableIdx!=pointableCount;pointableIdx++){var pointable=new Pointable(data.pointables[pointableIdx]);pointable.frame=this;this.pointables.push(pointable);this.pointablesMap[pointable.id]=pointable;(pointable.tool?this.tools:this.fingers).push(pointable);if(pointable.handId!==undefined&&handMap.hasOwnProperty(pointable.handId)){var hand=this.hands[handMap[pointable.handId]];hand.pointables.push(pointable);(pointable.tool?hand.tools:hand.fingers).push(pointable)}}if(data.gestures){for(var gestureIdx=0,gestureCount=data.gestures.length;gestureIdx!=gestureCount;gestureIdx++){this.gestures.push(createGesture(data.gestures[gestureIdx]))}}};Frame.prototype.tool=function(id){var pointable=this.pointable(id);return pointable.tool?pointable:Pointable.Invalid};Frame.prototype.pointable=function(id){return this.pointablesMap[id]||Pointable.Invalid};Frame.prototype.finger=function(id){var pointable=this.pointable(id);return!pointable.tool?pointable:Pointable.Invalid};Frame.prototype.hand=function(id){return this.handsMap[id]||Hand.Invalid};Frame.prototype.rotationAngle=function(sinceFrame,axis){if(!this.valid||!sinceFrame.valid)return 0;var rot=this.rotationMatrix(sinceFrame);var cs=(rot[0]+rot[4]+rot[8]-1)*.5;var angle=Math.acos(cs);angle=isNaN(angle)?0:angle;if(axis!==undefined){var rotAxis=this.rotationAxis(sinceFrame);angle*=vec3.dot(rotAxis,vec3.normalize(vec3.create(),axis))}return angle};Frame.prototype.rotationAxis=function(sinceFrame){if(!this.valid||!sinceFrame.valid)return vec3.create();return vec3.normalize(vec3.create(),[this._rotation[7]-sinceFrame._rotation[5],this._rotation[2]-sinceFrame._rotation[6],this._rotation[3]-sinceFrame._rotation[1]])};Frame.prototype.rotationMatrix=function(sinceFrame){if(!this.valid||!sinceFrame.valid)return mat3.create();var transpose=mat3.transpose(mat3.create(),this._rotation);return mat3.multiply(mat3.create(),sinceFrame._rotation,transpose)};Frame.prototype.scaleFactor=function(sinceFrame){if(!this.valid||!sinceFrame.valid)return 1;return Math.exp(this._scaleFactor-sinceFrame._scaleFactor)};Frame.prototype.translation=function(sinceFrame){if(!this.valid||!sinceFrame.valid)return vec3.create();return vec3.subtract(vec3.create(),this._translation,sinceFrame._translation)};Frame.prototype.toString=function(){var str="Frame [ id:"+this.id+" | timestamp:"+this.timestamp+" | Hand count:("+this.hands.length+") | Pointable count:("+this.pointables.length+")";if(this.gestures)str+=" | Gesture count:("+this.gestures.length+")";str+=" ]";return str};Frame.prototype.dump=function(){var out="";out+="Frame Info:
    ";out+=this.toString();out+="

    Hands:
    ";for(var handIdx=0,handCount=this.hands.length;handIdx!=handCount;handIdx++){out+=" "+this.hands[handIdx].toString()+"
    "}out+="

    Pointables:
    ";for(var pointableIdx=0,pointableCount=this.pointables.length;pointableIdx!=pointableCount;pointableIdx++){out+=" "+this.pointables[pointableIdx].toString()+"
    "}if(this.gestures){out+="

    Gestures:
    ";for(var gestureIdx=0,gestureCount=this.gestures.length;gestureIdx!=gestureCount;gestureIdx++){out+=" "+this.gestures[gestureIdx].toString()+"
    "}}out+="

    Raw JSON:
    ";out+=JSON.stringify(this.data);return out};Frame.Invalid={valid:false,hands:[],fingers:[],tools:[],gestures:[],pointables:[],pointable:function(){return Pointable.Invalid},finger:function(){return Pointable.Invalid},hand:function(){return Hand.Invalid},toString:function(){return"invalid frame"},dump:function(){return this.toString()},rotationAngle:function(){return 0},rotationMatrix:function(){return mat3.create()},rotationAxis:function(){return vec3.create()},scaleFactor:function(){return 1},translation:function(){return vec3.create()}}},{"./gesture":6,"./hand":7,"./interaction_box":9,"./pointable":11,"gl-matrix":19,underscore:20}],6:[function(require,module,exports){var glMatrix=require("gl-matrix"),vec3=glMatrix.vec3,EventEmitter=require("events").EventEmitter,_=require("underscore");var createGesture=exports.createGesture=function(data){var gesture;switch(data.type){case"circle":gesture=new CircleGesture(data);break;case"swipe":gesture=new SwipeGesture(data);break;case"screenTap":gesture=new ScreenTapGesture(data);break;case"keyTap":gesture=new KeyTapGesture(data);break;default:throw"unkown gesture type"}gesture.id=data.id;gesture.handIds=data.handIds;gesture.pointableIds=data.pointableIds;gesture.duration=data.duration;gesture.state=data.state;gesture.type=data.type;return gesture};var gestureListener=exports.gestureListener=function(controller,type){var handlers={};var gestureMap={};var gestureCreator=function(){var candidateGesture=gestureMap[gesture.id];if(candidateGesture!==undefined)gesture.update(gesture,frame);if(gesture.state=="start"||gesture.state=="stop"){if(type==gesture.type&&gestureMap[gesture.id]===undefined){gestureMap[gesture.id]=new Gesture(gesture,frame);gesture.update(gesture,frame)}if(gesture.state=="stop"){delete gestureMap[gesture.id]}}};controller.on("gesture",function(gesture,frame){if(gesture.type==type){if(gesture.state=="start"||gesture.state=="stop"){if(gestureMap[gesture.id]===undefined){var gestureTracker=new Gesture(gesture,frame);gestureMap[gesture.id]=gestureTracker;_.each(handlers,function(cb,name){gestureTracker.on(name,cb)})}}gestureMap[gesture.id].update(gesture,frame);if(gesture.state=="stop"){delete gestureMap[gesture.id]}}});var builder={start:function(cb){handlers["start"]=cb;return builder},stop:function(cb){handlers["stop"]=cb;return builder},complete:function(cb){handlers["stop"]=cb;return builder},update:function(cb){handlers["update"]=cb;return builder}};return builder};var Gesture=exports.Gesture=function(gesture,frame){this.gestures=[gesture];this.frames=[frame]};Gesture.prototype.update=function(gesture,frame){this.gestures.push(gesture);this.frames.push(frame);this.emit(gesture.state,this)};_.extend(Gesture.prototype,EventEmitter.prototype);var CircleGesture=function(data){this.center=data.center;this.normal=data.normal;this.progress=data.progress;this.radius=data.radius};CircleGesture.prototype.toString=function(){return"CircleGesture ["+JSON.stringify(this)+"]"};var SwipeGesture=function(data){this.startPosition=data.startPosition;this.position=data.position;this.direction=data.direction;this.speed=data.speed};SwipeGesture.prototype.toString=function(){return"SwipeGesture ["+JSON.stringify(this)+"]"};var ScreenTapGesture=function(data){this.position=data.position;this.direction=data.direction;this.progress=data.progress};ScreenTapGesture.prototype.toString=function(){return"ScreenTapGesture ["+JSON.stringify(this)+"]"};var KeyTapGesture=function(data){this.position=data.position;this.direction=data.direction;this.progress=data.progress};KeyTapGesture.prototype.toString=function(){return"KeyTapGesture ["+JSON.stringify(this)+"]"}},{events:17,"gl-matrix":19,underscore:20}],7:[function(require,module,exports){var Pointable=require("./pointable"),glMatrix=require("gl-matrix"),mat3=glMatrix.mat3,vec3=glMatrix.vec3,_=require("underscore");var Hand=module.exports=function(data){this.id=data.id;this.palmPosition=data.palmPosition;this.direction=data.direction;this.palmVelocity=data.palmVelocity;this.palmNormal=data.palmNormal;this.sphereCenter=data.sphereCenter;this.sphereRadius=data.sphereRadius;this.valid=true;this.pointables=[];this.fingers=[];this.tools=[];this._translation=data.t;this._rotation=_.flatten(data.r);this._scaleFactor=data.s;this.timeVisible=data.timeVisible;this.stabilizedPalmPosition=data.stabilizedPalmPosition};Hand.prototype.finger=function(id){var finger=this.frame.finger(id);return finger&&finger.handId==this.id?finger:Pointable.Invalid};Hand.prototype.rotationAngle=function(sinceFrame,axis){if(!this.valid||!sinceFrame.valid)return 0;var sinceHand=sinceFrame.hand(this.id);if(!sinceHand.valid)return 0;var rot=this.rotationMatrix(sinceFrame);var cs=(rot[0]+rot[4]+rot[8]-1)*.5;var angle=Math.acos(cs);angle=isNaN(angle)?0:angle;if(axis!==undefined){var rotAxis=this.rotationAxis(sinceFrame);angle*=vec3.dot(rotAxis,vec3.normalize(vec3.create(),axis))}return angle};Hand.prototype.rotationAxis=function(sinceFrame){if(!this.valid||!sinceFrame.valid)return vec3.create();var sinceHand=sinceFrame.hand(this.id);if(!sinceHand.valid)return vec3.create();return vec3.normalize(vec3.create(),[this._rotation[7]-sinceHand._rotation[5],this._rotation[2]-sinceHand._rotation[6],this._rotation[3]-sinceHand._rotation[1]])};Hand.prototype.rotationMatrix=function(sinceFrame){if(!this.valid||!sinceFrame.valid)return mat3.create();var sinceHand=sinceFrame.hand(this.id);if(!sinceHand.valid)return mat3.create();var transpose=mat3.transpose(mat3.create(),this._rotation);var m=mat3.multiply(mat3.create(),sinceHand._rotation,transpose);return m};Hand.prototype.scaleFactor=function(sinceFrame){if(!this.valid||!sinceFrame.valid)return 1;var sinceHand=sinceFrame.hand(this.id);if(!sinceHand.valid)return 1;return Math.exp(this._scaleFactor-sinceHand._scaleFactor)};Hand.prototype.translation=function(sinceFrame){if(!this.valid||!sinceFrame.valid)return vec3.create();var sinceHand=sinceFrame.hand(this.id);if(!sinceHand.valid)return vec3.create();return[this._translation[0]-sinceHand._translation[0],this._translation[1]-sinceHand._translation[1],this._translation[2]-sinceHand._translation[2]]};Hand.prototype.toString=function(){return"Hand [ id: "+this.id+" | palm velocity:"+this.palmVelocity+" | sphere center:"+this.sphereCenter+" ] "};Hand.Invalid={valid:false,fingers:[],tools:[],pointables:[],pointable:function(){return Pointable.Invalid},finger:function(){return Pointable.Invalid},toString:function(){return"invalid frame"},dump:function(){return this.toString()},rotationAngle:function(){return 0},rotationMatrix:function(){return mat3.create()},rotationAxis:function(){return vec3.create()},scaleFactor:function(){return 1},translation:function(){return vec3.create()}}},{"./pointable":11,"gl-matrix":19,underscore:20}],8:[function(require,module,exports){!function(){module.exports={Controller:require("./controller"),Frame:require("./frame"),Gesture:require("./gesture"),Hand:require("./hand"),Pointable:require("./pointable"),InteractionBox:require("./interaction_box"),Connection:require("./connection"),CircularBuffer:require("./circular_buffer"),UI:require("./ui"),glMatrix:require("gl-matrix"),mat3:require("gl-matrix").mat3,vec3:require("gl-matrix").vec3,loopController:undefined,loop:function(opts,callback){if(callback===undefined){callback=opts;opts={}}if(!this.loopController)this.loopController=new this.Controller(opts);this.loopController.loop(callback)}}}()},{"./circular_buffer":2,"./connection":3,"./controller":4,"./frame":5,"./gesture":6,"./hand":7,"./interaction_box":9,"./pointable":11,"./ui":13,"gl-matrix":19}],9:[function(require,module,exports){var glMatrix=require("gl-matrix"),vec3=glMatrix.vec3;var InteractionBox=module.exports=function(data){this.valid=true;this.center=data.center;this.size=data.size;this.width=data.size[0];this.height=data.size[1];this.depth=data.size[2]};InteractionBox.prototype.denormalizePoint=function(normalizedPosition){return vec3.fromValues((normalizedPosition[0]-.5)*this.size[0]+this.center[0],(normalizedPosition[1]-.5)*this.size[1]+this.center[1],(normalizedPosition[2]-.5)*this.size[2]+this.center[2])};InteractionBox.prototype.normalizePoint=function(position,clamp){var vec=vec3.fromValues((position[0]-this.center[0])/this.size[0]+.5,(position[1]-this.center[1])/this.size[1]+.5,(position[2]-this.center[2])/this.size[2]+.5);if(clamp){vec[0]=Math.min(Math.max(vec[0],0),1);vec[1]=Math.min(Math.max(vec[1],0),1);vec[2]=Math.min(Math.max(vec[2],0),1)}return vec};InteractionBox.prototype.toString=function(){return"InteractionBox [ width:"+this.width+" | height:"+this.height+" | depth:"+this.depth+" ]"};InteractionBox.Invalid={valid:false}},{"gl-matrix":19}],10:[function(require,module,exports){var Pipeline=module.exports=function(){this.steps=[]};Pipeline.prototype.addStep=function(step){this.steps.push(step)};Pipeline.prototype.run=function(frame){var stepsLength=this.steps.length;for(var i=0;i!=stepsLength;i++){if(!frame)break;frame=this.steps[i](frame)}return frame}},{}],11:[function(require,module,exports){var glMatrix=require("gl-matrix"),vec3=glMatrix.vec3;var Pointable=module.exports=function(data){this.valid=true;this.id=data.id;this.handId=data.handId;this.length=data.length;this.tool=data.tool;this.width=data.width;this.direction=data.direction;this.stabilizedTipPosition=data.stabilizedTipPosition;this.tipPosition=data.tipPosition;this.tipVelocity=data.tipVelocity;this.touchZone=data.touchZone;this.touchDistance=data.touchDistance;this.timeVisible=data.timeVisible};Pointable.prototype.toString=function(){if(this.tool==true){return"Pointable [ id:"+this.id+" "+this.length+"mmx | with:"+this.width+"mm | direction:"+this.direction+" ]"}else{return"Pointable [ id:"+this.id+" "+this.length+"mmx | direction: "+this.direction+" ]"}};Pointable.Invalid={valid:false}},{"gl-matrix":19}],12:[function(require,module,exports){var Frame=require("./frame");var Event=function(data){this.type=data.type;this.state=data.state};var chooseProtocol=exports.chooseProtocol=function(header){var protocol;switch(header.version){case 1:protocol=JSONProtocol(1,function(data){return new Frame(data)});break;case 2:protocol=JSONProtocol(2,function(data){return new Frame(data)});protocol.sendHeartbeat=function(connection){connection.send(protocol.encode({heartbeat:true}))};break;case 3:protocol=JSONProtocol(3,function(data){return data.event?new Event(data.event):new Frame(data)});protocol.sendHeartbeat=function(connection){connection.send(protocol.encode({heartbeat:true}))};break;default:throw"unrecognized version"}return protocol};var JSONProtocol=function(version,cb){var protocol=cb;protocol.encode=function(message){return JSON.stringify(message)};protocol.version=version;protocol.versionLong="Version "+version;protocol.type="protocol";return protocol}},{"./frame":5}],13:[function(require,module,exports){exports.UI={Region:require("./ui/region"),Cursor:require("./ui/cursor")}},{"./ui/cursor":14,"./ui/region":15}],14:[function(require,module,exports){var Cursor=module.exports=function(){return function(frame){var pointable=frame.pointables.sort(function(a,b){return a.z-b.z})[0];if(pointable&&pointable.valid){frame.cursorPosition=pointable.tipPosition}return frame}}},{}],15:[function(require,module,exports){var EventEmitter=require("events").EventEmitter,_=require("underscore");var Region=module.exports=function(start,end){this.start=new Vector(start);this.end=new Vector(end);this.enteredFrame=null};Region.prototype.hasPointables=function(frame){for(var i=0;i!=frame.pointables.length;i++){var position=frame.pointables[i].tipPosition;if(position.x>=this.start.x&&position.x<=this.end.x&&position.y>=this.start.y&&position.y<=this.end.y&&position.z>=this.start.z&&position.z<=this.end.z){return true}}return false};Region.prototype.listener=function(opts){var region=this;if(opts&&opts.nearThreshold)this.setupNearRegion(opts.nearThreshold);return function(frame){return region.updatePosition(frame)}};Region.prototype.clipper=function(){var region=this;return function(frame){region.updatePosition(frame);return region.enteredFrame?frame:null}};Region.prototype.setupNearRegion=function(distance){var nearRegion=this.nearRegion=new Region([this.start.x-distance,this.start.y-distance,this.start.z-distance],[this.end.x+distance,this.end.y+distance,this.end.z+distance]);var region=this;nearRegion.on("enter",function(frame){region.emit("near",frame)});nearRegion.on("exit",function(frame){region.emit("far",frame)});region.on("exit",function(frame){region.emit("near",frame)})};Region.prototype.updatePosition=function(frame){if(this.nearRegion)this.nearRegion.updatePosition(frame);if(this.hasPointables(frame)&&this.enteredFrame==null){this.enteredFrame=frame;this.emit("enter",this.enteredFrame)}else if(!this.hasPointables(frame)&&this.enteredFrame!=null){this.enteredFrame=null;this.emit("exit",this.enteredFrame)}return frame};Region.prototype.normalize=function(position){return new Vector([(position.x-this.start.x)/(this.end.x-this.start.x),(position.y-this.start.y)/(this.end.y-this.start.y),(position.z-this.start.z)/(this.end.z-this.start.z)])};Region.prototype.mapToXY=function(position,width,height){var normalized=this.normalize(position);var x=normalized.x,y=normalized.y;if(x>1)x=1;else if(x<-1)x=-1;if(y>1)y=1;else if(y<-1)y=-1;return[(x+1)/2*width,(1-y)/2*height,normalized.z]};_.extend(Region.prototype,EventEmitter.prototype)},{events:17,underscore:20}],16:[function(require,module,exports){},{}],17:[function(require,module,exports){!function(process){if(!process.EventEmitter)process.EventEmitter=function(){};var EventEmitter=exports.EventEmitter=process.EventEmitter;var isArray=typeof Array.isArray==="function"?Array.isArray:function(xs){return Object.prototype.toString.call(xs)==="[object Array]"};function indexOf(xs,x){if(xs.indexOf)return xs.indexOf(x);for(var i=0;i0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);console.trace()}}this._events[type].push(listener)}else{this._events[type]=[this._events[type],listener]}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){var self=this;self.on(type,function g(){self.removeListener(type,g);listener.apply(this,arguments)});return this};EventEmitter.prototype.removeListener=function(type,listener){if("function"!==typeof listener){throw new Error("removeListener only takes instances of Function")}if(!this._events||!this._events[type])return this;var list=this._events[type];if(isArray(list)){var i=indexOf(list,listener);if(i<0)return this;list.splice(i,1);if(list.length==0)delete this._events[type]}else if(this._events[type]===listener){delete this._events[type]}return this};EventEmitter.prototype.removeAllListeners=function(type){if(arguments.length===0){this._events={};return this}if(type&&this._events&&this._events[type])this._events[type]=null;return this};EventEmitter.prototype.listeners=function(type){if(!this._events)this._events={};if(!this._events[type])this._events[type]=[];if(!isArray(this._events[type])){this._events[type]=[this._events[type]]}return this._events[type]}}(require("__browserify_process"))},{__browserify_process:18}],18:[function(require,module,exports){var process=module.exports={};process.nextTick=function(){var canSetImmediate=typeof window!=="undefined"&&window.setImmediate;var canPost=typeof window!=="undefined"&&window.postMessage&&window.addEventListener;if(canSetImmediate){return function(f){return window.setImmediate(f)}}if(canPost){var queue=[];window.addEventListener("message",function(ev){if(ev.source===window&&ev.data==="process-tick"){ev.stopPropagation();if(queue.length>0){var fn=queue.shift();fn()}}},true);return function nextTick(fn){queue.push(fn);window.postMessage("process-tick","*")}}return function nextTick(fn){setTimeout(fn,0)}}();process.title="browser";process.browser=true;process.env={};process.argv=[];process.binding=function(name){throw new Error("process.binding is not supported")};process.cwd=function(){return"/"};process.chdir=function(dir){throw new Error("process.chdir is not supported")}},{}],19:[function(require,module,exports){!function(){!function(){"use strict";var shim={};if(typeof exports==="undefined"){if(typeof define=="function"&&typeof define.amd=="object"&&define.amd){shim.exports={};define(function(){return shim.exports})}else{shim.exports=window}}else{shim.exports=exports}!function(exports){var vec2={};if(!GLMAT_EPSILON){var GLMAT_EPSILON=1e-6}vec2.create=function(){return new Float32Array(2)};vec2.clone=function(a){var out=new Float32Array(2);out[0]=a[0];out[1]=a[1];return out};vec2.fromValues=function(x,y){var out=new Float32Array(2);out[0]=x;out[1]=y;return out};vec2.copy=function(out,a){out[0]=a[0];out[1]=a[1];return out};vec2.set=function(out,x,y){out[0]=x;out[1]=y;return out};vec2.add=function(out,a,b){out[0]=a[0]+b[0];out[1]=a[1]+b[1];return out};vec2.sub=vec2.subtract=function(out,a,b){out[0]=a[0]-b[0];out[1]=a[1]-b[1];return out};vec2.mul=vec2.multiply=function(out,a,b){out[0]=a[0]*b[0];out[1]=a[1]*b[1];return out};vec2.div=vec2.divide=function(out,a,b){out[0]=a[0]/b[0];out[1]=a[1]/b[1];return out};vec2.min=function(out,a,b){out[0]=Math.min(a[0],b[0]); +out[1]=Math.min(a[1],b[1]);return out};vec2.max=function(out,a,b){out[0]=Math.max(a[0],b[0]);out[1]=Math.max(a[1],b[1]);return out};vec2.scale=function(out,a,b){out[0]=a[0]*b;out[1]=a[1]*b;return out};vec2.dist=vec2.distance=function(a,b){var x=b[0]-a[0],y=b[1]-a[1];return Math.sqrt(x*x+y*y)};vec2.sqrDist=vec2.squaredDistance=function(a,b){var x=b[0]-a[0],y=b[1]-a[1];return x*x+y*y};vec2.len=vec2.length=function(a){var x=a[0],y=a[1];return Math.sqrt(x*x+y*y)};vec2.sqrLen=vec2.squaredLength=function(a){var x=a[0],y=a[1];return x*x+y*y};vec2.negate=function(out,a){out[0]=-a[0];out[1]=-a[1];return out};vec2.normalize=function(out,a){var x=a[0],y=a[1];var len=x*x+y*y;if(len>0){len=1/Math.sqrt(len);out[0]=a[0]*len;out[1]=a[1]*len}return out};vec2.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]};vec2.cross=function(out,a,b){var z=a[0]*b[1]-a[1]*b[0];out[0]=out[1]=0;out[2]=z;return out};vec2.lerp=function(out,a,b,t){var ax=a[0],ay=a[1];out[0]=ax+t*(b[0]-ax);out[1]=ay+t*(b[1]-ay);return out};vec2.transformMat2=function(out,a,m){var x=a[0],y=a[1];out[0]=x*m[0]+y*m[1];out[1]=x*m[2]+y*m[3];return out};vec2.forEach=function(){var vec=new Float32Array(2);return function(a,stride,offset,count,fn,arg){var i,l;if(!stride){stride=2}if(!offset){offset=0}if(count){l=Math.min(count*stride+offset,a.length)}else{l=a.length}for(i=offset;i0){len=1/Math.sqrt(len);out[0]=a[0]*len;out[1]=a[1]*len;out[2]=a[2]*len}return out};vec3.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]};vec3.cross=function(out,a,b){var ax=a[0],ay=a[1],az=a[2],bx=b[0],by=b[1],bz=b[2];out[0]=ay*bz-az*by;out[1]=az*bx-ax*bz;out[2]=ax*by-ay*bx;return out};vec3.lerp=function(out,a,b,t){var ax=a[0],ay=a[1],az=a[2];out[0]=ax+t*(b[0]-ax);out[1]=ay+t*(b[1]-ay);out[2]=az+t*(b[2]-az);return out};vec3.transformMat4=function(out,a,m){var x=a[0],y=a[1],z=a[2];out[0]=m[0]*x+m[4]*y+m[8]*z+m[12];out[1]=m[1]*x+m[5]*y+m[9]*z+m[13];out[2]=m[2]*x+m[6]*y+m[10]*z+m[14];return out};vec3.transformQuat=function(out,a,q){var x=a[0],y=a[1],z=a[2],qx=q[0],qy=q[1],qz=q[2],qw=q[3],ix=qw*x+qy*z-qz*y,iy=qw*y+qz*x-qx*z,iz=qw*z+qx*y-qy*x,iw=-qx*x-qy*y-qz*z;out[0]=ix*qw+iw*-qx+iy*-qz-iz*-qy;out[1]=iy*qw+iw*-qy+iz*-qx-ix*-qz;out[2]=iz*qw+iw*-qz+ix*-qy-iy*-qx;return out};vec3.forEach=function(){var vec=new Float32Array(3);return function(a,stride,offset,count,fn,arg){var i,l;if(!stride){stride=3}if(!offset){offset=0}if(count){l=Math.min(count*stride+offset,a.length)}else{l=a.length}for(i=offset;i0){len=1/Math.sqrt(len);out[0]=a[0]*len;out[1]=a[1]*len;out[2]=a[2]*len;out[3]=a[3]*len}return out};vec4.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]};vec4.lerp=function(out,a,b,t){var ax=a[0],ay=a[1],az=a[2],aw=a[3];out[0]=ax+t*(b[0]-ax);out[1]=ay+t*(b[1]-ay);out[2]=az+t*(b[2]-az);out[3]=aw+t*(b[3]-aw);return out};vec4.transformMat4=function(out,a,m){var x=a[0],y=a[1],z=a[2],w=a[3];out[0]=m[0]*x+m[4]*y+m[8]*z+m[12]*w;out[1]=m[1]*x+m[5]*y+m[9]*z+m[13]*w;out[2]=m[2]*x+m[6]*y+m[10]*z+m[14]*w;out[3]=m[3]*x+m[7]*y+m[11]*z+m[15]*w;return out};vec4.transformQuat=function(out,a,q){var x=a[0],y=a[1],z=a[2],qx=q[0],qy=q[1],qz=q[2],qw=q[3],ix=qw*x+qy*z-qz*y,iy=qw*y+qz*x-qx*z,iz=qw*z+qx*y-qy*x,iw=-qx*x-qy*y-qz*z;out[0]=ix*qw+iw*-qx+iy*-qz-iz*-qy;out[1]=iy*qw+iw*-qy+iz*-qx-ix*-qz;out[2]=iz*qw+iw*-qz+ix*-qy-iy*-qx;return out};vec4.forEach=function(){var vec=new Float32Array(4);return function(a,stride,offset,count,fn,arg){var i,l;if(!stride){stride=4}if(!offset){offset=0}if(count){l=Math.min(count*stride+offset,a.length)}else{l=a.length}for(i=offset;i=1){if(out!==a){out[0]=ax;out[1]=ay;out[2]=az;out[3]=aw}return out}halfTheta=Math.acos(cosHalfTheta);sinHalfTheta=Math.sqrt(1-cosHalfTheta*cosHalfTheta);if(Math.abs(sinHalfTheta)<.001){out[0]=ax*.5+bx*.5;out[1]=ay*.5+by*.5;out[2]=az*.5+bz*.5;out[3]=aw*.5+bw*.5;return out}ratioA=Math.sin((1-t)*halfTheta)/sinHalfTheta;ratioB=Math.sin(t*halfTheta)/sinHalfTheta;out[0]=ax*ratioA+bx*ratioB;out[1]=ay*ratioA+by*ratioB;out[2]=az*ratioA+bz*ratioB;out[3]=aw*ratioA+bw*ratioB;return out};quat.invert=function(out,a){var a0=a[0],a1=a[1],a2=a[2],a3=a[3],dot=a0*a0+a1*a1+a2*a2+a3*a3,invDot=dot?1/dot:0;out[0]=-a0*invDot;out[1]=-a1*invDot;out[2]=-a2*invDot;out[3]=a3*invDot;return out};quat.conjugate=function(out,a){out[0]=-a[0];out[1]=-a[1];out[2]=-a[2];out[3]=a[3];return out};quat.len=quat.length=vec4.length;quat.sqrLen=quat.squaredLength=vec4.squaredLength;quat.normalize=vec4.normalize;quat.str=function(a){return"quat("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+")"};if(typeof exports!=="undefined"){exports.quat=quat}}(shim.exports)}()}()},{}],20:[function(require,module,exports){!function(){!function(){var root=this;var previousUnderscore=root._;var breaker={};var ArrayProto=Array.prototype,ObjProto=Object.prototype,FuncProto=Function.prototype;var push=ArrayProto.push,slice=ArrayProto.slice,concat=ArrayProto.concat,toString=ObjProto.toString,hasOwnProperty=ObjProto.hasOwnProperty;var nativeForEach=ArrayProto.forEach,nativeMap=ArrayProto.map,nativeReduce=ArrayProto.reduce,nativeReduceRight=ArrayProto.reduceRight,nativeFilter=ArrayProto.filter,nativeEvery=ArrayProto.every,nativeSome=ArrayProto.some,nativeIndexOf=ArrayProto.indexOf,nativeLastIndexOf=ArrayProto.lastIndexOf,nativeIsArray=Array.isArray,nativeKeys=Object.keys,nativeBind=FuncProto.bind;var _=function(obj){if(obj instanceof _)return obj;if(!(this instanceof _))return new _(obj);this._wrapped=obj};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports){exports=module.exports=_}exports._=_}else{root._=_}_.VERSION="1.4.4";var each=_.each=_.forEach=function(obj,iterator,context){if(obj==null)return;if(nativeForEach&&obj.forEach===nativeForEach){obj.forEach(iterator,context)}else if(obj.length===+obj.length){for(var i=0,l=obj.length;i2;if(obj==null)obj=[];if(nativeReduce&&obj.reduce===nativeReduce){if(context)iterator=_.bind(iterator,context);return initial?obj.reduce(iterator,memo):obj.reduce(iterator)}each(obj,function(value,index,list){if(!initial){memo=value;initial=true}else{memo=iterator.call(context,memo,value,index,list)}});if(!initial)throw new TypeError(reduceError);return memo};_.reduceRight=_.foldr=function(obj,iterator,memo,context){var initial=arguments.length>2;if(obj==null)obj=[];if(nativeReduceRight&&obj.reduceRight===nativeReduceRight){if(context)iterator=_.bind(iterator,context);return initial?obj.reduceRight(iterator,memo):obj.reduceRight(iterator)}var length=obj.length;if(length!==+length){var keys=_.keys(obj);length=keys.length}each(obj,function(value,index,list){index=keys?keys[--length]:--length;if(!initial){memo=obj[index];initial=true}else{memo=iterator.call(context,memo,obj[index],index,list)}});if(!initial)throw new TypeError(reduceError);return memo};_.find=_.detect=function(obj,iterator,context){var result;any(obj,function(value,index,list){if(iterator.call(context,value,index,list)){result=value;return true}});return result};_.filter=_.select=function(obj,iterator,context){var results=[];if(obj==null)return results;if(nativeFilter&&obj.filter===nativeFilter)return obj.filter(iterator,context);each(obj,function(value,index,list){if(iterator.call(context,value,index,list))results[results.length]=value});return results};_.reject=function(obj,iterator,context){return _.filter(obj,function(value,index,list){return!iterator.call(context,value,index,list)},context)};_.every=_.all=function(obj,iterator,context){iterator||(iterator=_.identity);var result=true;if(obj==null)return result;if(nativeEvery&&obj.every===nativeEvery)return obj.every(iterator,context);each(obj,function(value,index,list){if(!(result=result&&iterator.call(context,value,index,list)))return breaker});return!!result};var any=_.some=_.any=function(obj,iterator,context){iterator||(iterator=_.identity);var result=false;if(obj==null)return result;if(nativeSome&&obj.some===nativeSome)return obj.some(iterator,context);each(obj,function(value,index,list){if(result||(result=iterator.call(context,value,index,list)))return breaker});return!!result};_.contains=_.include=function(obj,target){if(obj==null)return false;if(nativeIndexOf&&obj.indexOf===nativeIndexOf)return obj.indexOf(target)!=-1;return any(obj,function(value){return value===target})};_.invoke=function(obj,method){var args=slice.call(arguments,2);var isFunc=_.isFunction(method);return _.map(obj,function(value){return(isFunc?method:value[method]).apply(value,args)})};_.pluck=function(obj,key){return _.map(obj,function(value){return value[key]})};_.where=function(obj,attrs,first){if(_.isEmpty(attrs))return first?null:[];return _[first?"find":"filter"](obj,function(value){for(var key in attrs){if(attrs[key]!==value[key])return false}return true})};_.findWhere=function(obj,attrs){return _.where(obj,attrs,true)};_.max=function(obj,iterator,context){if(!iterator&&_.isArray(obj)&&obj[0]===+obj[0]&&obj.length<65535){return Math.max.apply(Math,obj)}if(!iterator&&_.isEmpty(obj))return-Infinity;var result={computed:-Infinity,value:-Infinity};each(obj,function(value,index,list){var computed=iterator?iterator.call(context,value,index,list):value;computed>=result.computed&&(result={value:value,computed:computed})});return result.value};_.min=function(obj,iterator,context){if(!iterator&&_.isArray(obj)&&obj[0]===+obj[0]&&obj.length<65535){return Math.min.apply(Math,obj)}if(!iterator&&_.isEmpty(obj))return Infinity;var result={computed:Infinity,value:Infinity};each(obj,function(value,index,list){var computed=iterator?iterator.call(context,value,index,list):value;computedb||a===void 0)return 1;if(a>>1;iterator.call(context,array[mid])=0})})};_.difference=function(array){var rest=concat.apply(ArrayProto,slice.call(arguments,1));return _.filter(array,function(value){return!_.contains(rest,value)})};_.zip=function(){var args=slice.call(arguments);var length=_.max(_.pluck(args,"length"));var results=new Array(length);for(var i=0;i=0;i--){args=[funcs[i].apply(this,args)]}return args[0]}};_.after=function(times,func){if(times<=0)return func();return function(){if(--times<1){return func.apply(this,arguments)}}};_.keys=nativeKeys||function(obj){if(obj!==Object(obj))throw new TypeError("Invalid object");var keys=[];for(var key in obj)if(_.has(obj,key))keys[keys.length]=key;return keys};_.values=function(obj){var values=[];for(var key in obj)if(_.has(obj,key))values.push(obj[key]);return values};_.pairs=function(obj){var pairs=[];for(var key in obj)if(_.has(obj,key))pairs.push([key,obj[key]]);return pairs};_.invert=function(obj){var result={};for(var key in obj)if(_.has(obj,key))result[obj[key]]=key;return result};_.functions=_.methods=function(obj){var names=[];for(var key in obj){if(_.isFunction(obj[key]))names.push(key)}return names.sort()};_.extend=function(obj){each(slice.call(arguments,1),function(source){if(source){for(var prop in source){obj[prop]=source[prop]}}});return obj};_.pick=function(obj){var copy={};var keys=concat.apply(ArrayProto,slice.call(arguments,1));each(keys,function(key){if(key in obj)copy[key]=obj[key]});return copy};_.omit=function(obj){var copy={};var keys=concat.apply(ArrayProto,slice.call(arguments,1));for(var key in obj){if(!_.contains(keys,key))copy[key]=obj[key]}return copy};_.defaults=function(obj){each(slice.call(arguments,1),function(source){if(source){for(var prop in source){if(obj[prop]==null)obj[prop]=source[prop]}}});return obj};_.clone=function(obj){if(!_.isObject(obj))return obj;return _.isArray(obj)?obj.slice():_.extend({},obj)};_.tap=function(obj,interceptor){interceptor(obj);return obj};var eq=function(a,b,aStack,bStack){if(a===b)return a!==0||1/a==1/b;if(a==null||b==null)return a===b;if(a instanceof _)a=a._wrapped;if(b instanceof _)b=b._wrapped;var className=toString.call(a);if(className!=toString.call(b))return false;switch(className){case"[object String]":return a==String(b);case"[object Number]":return a!=+a?b!=+b:a==0?1/a==1/b:a==+b;case"[object Date]":case"[object Boolean]":return+a==+b;case"[object RegExp]":return a.source==b.source&&a.global==b.global&&a.multiline==b.multiline&&a.ignoreCase==b.ignoreCase}if(typeof a!="object"||typeof b!="object")return false;var length=aStack.length;while(length--){if(aStack[length]==a)return bStack[length]==b}aStack.push(a);bStack.push(b);var size=0,result=true;if(className=="[object Array]"){size=a.length;result=size==b.length;if(result){while(size--){if(!(result=eq(a[size],b[size],aStack,bStack)))break}}}else{var aCtor=a.constructor,bCtor=b.constructor;if(aCtor!==bCtor&&!(_.isFunction(aCtor)&&aCtor instanceof aCtor&&_.isFunction(bCtor)&&bCtor instanceof bCtor)){return false}for(var key in a){if(_.has(a,key)){size++;if(!(result=_.has(b,key)&&eq(a[key],b[key],aStack,bStack)))break}}if(result){for(key in b){if(_.has(b,key)&&!size--)break}result=!size}}aStack.pop();bStack.pop();return result};_.isEqual=function(a,b){return eq(a,b,[],[])};_.isEmpty=function(obj){if(obj==null)return true;if(_.isArray(obj)||_.isString(obj))return obj.length===0;for(var key in obj)if(_.has(obj,key))return false;return true};_.isElement=function(obj){return!!(obj&&obj.nodeType===1)};_.isArray=nativeIsArray||function(obj){return toString.call(obj)=="[object Array]"};_.isObject=function(obj){return obj===Object(obj)};each(["Arguments","Function","String","Number","Date","RegExp"],function(name){_["is"+name]=function(obj){return toString.call(obj)=="[object "+name+"]"}});if(!_.isArguments(arguments)){_.isArguments=function(obj){return!!(obj&&_.has(obj,"callee"))}}if(typeof/./!=="function"){_.isFunction=function(obj){return typeof obj==="function"}}_.isFinite=function(obj){return isFinite(obj)&&!isNaN(parseFloat(obj))};_.isNaN=function(obj){return _.isNumber(obj)&&obj!=+obj};_.isBoolean=function(obj){return obj===true||obj===false||toString.call(obj)=="[object Boolean]"};_.isNull=function(obj){return obj===null};_.isUndefined=function(obj){return obj===void 0};_.has=function(obj,key){return hasOwnProperty.call(obj,key)};_.noConflict=function(){root._=previousUnderscore;return this};_.identity=function(value){return value};_.times=function(n,iterator,context){var accum=Array(n);for(var i=0;i":">",'"':""","'":"'","/":"/"}};entityMap.unescape=_.invert(entityMap.escape);var entityRegexes={escape:new RegExp("["+_.keys(entityMap.escape).join("")+"]","g"),unescape:new RegExp("("+_.keys(entityMap.unescape).join("|")+")","g")};_.each(["escape","unescape"],function(method){_[method]=function(string){if(string==null)return"";return(""+string).replace(entityRegexes[method],function(match){return entityMap[method][match]})}});_.result=function(object,property){if(object==null)return null;var value=object[property];return _.isFunction(value)?value.call(object):value};_.mixin=function(obj){each(_.functions(obj),function(name){var func=_[name]=obj[name];_.prototype[name]=function(){var args=[this._wrapped];push.apply(args,arguments);return result.call(this,func.apply(_,args))}})};var idCounter=0;_.uniqueId=function(prefix){var id=++idCounter+"";return prefix?prefix+id:id};_.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var noMatch=/(.)^/;var escapes={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"};var escaper=/\\|'|\r|\n|\t|\u2028|\u2029/g;_.template=function(text,data,settings){var render;settings=_.defaults({},settings,_.templateSettings);var matcher=new RegExp([(settings.escape||noMatch).source,(settings.interpolate||noMatch).source,(settings.evaluate||noMatch).source].join("|")+"|$","g");var index=0;var source="__p+='";text.replace(matcher,function(match,escape,interpolate,evaluate,offset){source+=text.slice(index,offset).replace(escaper,function(match){return"\\"+escapes[match]});if(escape){source+="'+\n((__t=("+escape+"))==null?'':_.escape(__t))+\n'"}if(interpolate){source+="'+\n((__t=("+interpolate+"))==null?'':__t)+\n'"}if(evaluate){source+="';\n"+evaluate+"\n__p+='"}index=offset+match.length;return match});source+="';\n";if(!settings.variable)source="with(obj||{}){\n"+source+"}\n";source="var __t,__p='',__j=Array.prototype.join,"+"print=function(){__p+=__j.call(arguments,'');};\n"+source+"return __p;\n";try{render=new Function(settings.variable||"obj","_",source)}catch(e){e.source=source;throw e}if(data)return render(data,_);var template=function(data){return render.call(this,data,_)};template.source="function("+(settings.variable||"obj")+"){\n"+source+"}";return template};_.chain=function(obj){return _(obj).chain()};var result=function(obj){return this._chain?_(obj).chain():obj};_.mixin(_);each(["pop","push","reverse","shift","sort","splice","unshift"],function(name){var method=ArrayProto[name];_.prototype[name]=function(){var obj=this._wrapped;method.apply(obj,arguments);if((name=="shift"||name=="splice")&&obj.length===0)delete obj[0];return result.call(this,obj)}});each(["concat","join","slice"],function(name){var method=ArrayProto[name];_.prototype[name]=function(){return result.call(this,method.apply(this._wrapped,arguments))}});_.extend(_.prototype,{chain:function(){this._chain=true;return this},value:function(){return this._wrapped}})}.call(this)}()},{}],21:[function(require,module,exports){window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(callback){window.setTimeout(callback,1e3/60)}}();Leap=require("../lib/index")},{"../lib/index":8}]},{},[21]); + +/* + * Leap Motion integration for Reveal.js. + * James Sun [sun16] + * Rory Hardy [gneatgeek] + */ + +(function () { + var body = document.body, + controller = new Leap.Controller({ enableGestures: true }), + lastGesture = 0, + leapConfig = Reveal.getConfig().leap, + pointer = document.createElement( 'div' ), + config = { + autoCenter : true, // Center pointer around detected position. + gestureDelay : 500, // How long to delay between gestures. + naturalSwipe : true, // Swipe as if it were a touch screen. + pointerColor : '#00aaff', // Default color of the pointer. + pointerOpacity : 0.7, // Default opacity of the pointer. + pointerSize : 15, // Default minimum height/width of the pointer. + pointerTolerance : 120 // Bigger = slower pointer. + }, + entered, enteredPosition, now, size, tipPosition; // Other vars we need later, but don't need to redeclare. + + // Merge user defined settings with defaults + if( leapConfig ) { + for( key in leapConfig ) { + config[key] = leapConfig[key]; + } + } + + pointer.id = 'leap'; + + pointer.style.position = 'absolute'; + pointer.style.visibility = 'hidden'; + pointer.style.zIndex = 50; + pointer.style.opacity = config.pointerOpacity; + pointer.style.backgroundColor = config.pointerColor; + + body.appendChild( pointer ); + + // Leap's loop + controller.on( 'frame', function ( frame ) { + // Timing code to rate limit gesture execution + now = new Date().getTime(); + + // Pointer: 1 to 2 fingers. Strictly one finger works but may cause innaccuracies. + // The innaccuracies were observed on a development model and may not be an issue with consumer models. + if( frame.fingers.length > 0 && frame.fingers.length < 3 ) { + // Invert direction and multiply by 3 for greater effect. + size = -3 * frame.fingers[0].tipPosition[2]; + + if( size < config.pointerSize ) { + size = config.pointerSize; + } + + pointer.style.width = size + 'px'; + pointer.style.height = size + 'px'; + pointer.style.borderRadius = size - 5 + 'px'; + pointer.style.visibility = 'visible'; + + if( config.autoCenter ) { + tipPosition = frame.fingers[0].tipPosition; + + // Check whether the finger has entered the z range of the Leap Motion. Used for the autoCenter option. + if( !entered ) { + entered = true; + enteredPosition = frame.fingers[0].tipPosition; + } + + pointer.style.top = + (-1 * (( tipPosition[1] - enteredPosition[1] ) * body.offsetHeight / config.pointerTolerance )) + + ( body.offsetHeight / 2 ) + 'px'; + + pointer.style.left = + (( tipPosition[0] - enteredPosition[0] ) * body.offsetWidth / config.pointerTolerance ) + + ( body.offsetWidth / 2 ) + 'px'; + } + else { + pointer.style.top = ( 1 - (( tipPosition[1] - 50) / config.pointerTolerance )) * + body.offsetHeight + 'px'; + + pointer.style.left = ( tipPosition[0] * body.offsetWidth / config.pointerTolerance ) + + ( body.offsetWidth / 2 ) + 'px'; + } + } + else { + // Hide pointer on exit + entered = false; + pointer.style.visibility = 'hidden'; + } + + // Gestures + if( frame.gestures.length > 0 && (now - lastGesture) > config.gestureDelay ) { + var gesture = frame.gestures[0]; + + // One hand gestures + if( frame.hands.length === 1 ) { + // Swipe gestures. 3+ fingers. + if( frame.fingers.length > 2 && gesture.type === 'swipe' ) { + // Define here since some gestures will throw undefined for these. + var x = gesture.direction[0], + y = gesture.direction[1]; + + // Left/right swipe gestures + if( Math.abs( x ) > Math.abs( y )) { + if( x > 0 ) { + config.naturalSwipe ? Reveal.left() : Reveal.right(); + } + else { + config.naturalSwipe ? Reveal.right() : Reveal.left(); + } + } + // Up/down swipe gestures + else { + if( y > 0 ) { + config.naturalSwipe ? Reveal.down() : Reveal.up(); + } + else { + config.naturalSwipe ? Reveal.up() : Reveal.down(); + } + } + + lastGesture = now; + } + } + // Two hand gestures + else if( frame.hands.length === 2 ) { + // Upward two hand swipe gesture + if( gesture.direction[1] > 0 && gesture.type === 'swipe' ) { + Reveal.toggleOverview(); + } + + lastGesture = now; + } + } + }); + + controller.connect(); +})(); diff --git a/plugin/markdown/example.html b/plugin/markdown/example.html new file mode 100644 index 0000000..0b07aa5 --- /dev/null +++ b/plugin/markdown/example.html @@ -0,0 +1,98 @@ + + + + + + + reveal.js - Markdown Demo + + + + + + + +
    + +
    + + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + +
    +
    + + + + + + + + diff --git a/plugin/markdown/example.md b/plugin/markdown/example.md new file mode 100644 index 0000000..6f6f577 --- /dev/null +++ b/plugin/markdown/example.md @@ -0,0 +1,31 @@ +# Markdown Demo + + + +## External 1.1 + +Content 1.1 + +Note: This will only appear in the speaker notes window. + + +## External 1.2 + +Content 1.2 + + + +## External 2 + +Content 2.1 + + + +## External 3.1 + +Content 3.1 + + +## External 3.2 + +Content 3.2 diff --git a/plugin/markdown/markdown.js b/plugin/markdown/markdown.js index 07ffd80..42c847f 100755 --- a/plugin/markdown/markdown.js +++ b/plugin/markdown/markdown.js @@ -1,32 +1,320 @@ -// From https://gist.github.com/1343518 -// Modified by Hakim to handle Markdown indented with tabs -(function(){ +/** + * The reveal.js markdown plugin. Handles parsing of + * markdown inside of presentations as well as loading + * of external markdown documents. + */ +(function( root, factory ) { + if( typeof exports === 'object' ) { + module.exports = factory( require( './marked' ) ); + } + else { + // Browser globals (root is window) + root.RevealMarkdown = factory( root.marked ); + root.RevealMarkdown.initialize(); + } +}( this, function( marked ) { - if( typeof Showdown === 'undefined' ) { - throw 'The reveal.js Markdown plugin requires Showdown to be loaded'; - } + if( typeof marked === 'undefined' ) { + throw 'The reveal.js Markdown plugin requires marked to be loaded'; + } - var sections = document.querySelectorAll( '[data-markdown]' ); + if( typeof hljs !== 'undefined' ) { + marked.setOptions({ + highlight: function( lang, code ) { + return hljs.highlightAuto( lang, code ).value; + } + }); + } - for( var i = 0, len = sections.length; i < len; i++ ) { - var section = sections[i]; + var DEFAULT_SLIDE_SEPARATOR = '^\n---\n$', + DEFAULT_NOTES_SEPARATOR = 'note:'; - var template = section.querySelector( 'script' ); - // strip leading whitespace so it isn't evaluated as code - var text = ( template || section ).innerHTML; + /** + * Retrieves the markdown contents of a slide section + * element. Normalizes leading tabs/whitespace. + */ + function getMarkdownFromSlide( section ) { - var leadingWs = text.match(/^\n?(\s*)/)[1].length, - leadingTabs = text.match(/^\n?(\t*)/)[1].length; + var template = section.querySelector( 'script' ); - if( leadingTabs > 0 ) { - text = text.replace( new RegExp('\\n?\\t{' + leadingTabs + '}','g'), '\n' ); - } - else if( leadingWs > 1 ) { - text = text.replace( new RegExp('\\n? {' + leadingWs + '}','g'), '\n' ); - } + // strip leading whitespace so it isn't evaluated as code + var text = ( template || section ).textContent; - section.innerHTML = (new Showdown.converter()).makeHtml(text); - } + var leadingWs = text.match( /^\n?(\s*)/ )[1].length, + leadingTabs = text.match( /^\n?(\t*)/ )[1].length; -})(); \ No newline at end of file + if( leadingTabs > 0 ) { + text = text.replace( new RegExp('\\n?\\t{' + leadingTabs + '}','g'), '\n' ); + } + else if( leadingWs > 1 ) { + text = text.replace( new RegExp('\\n? {' + leadingWs + '}','g'), '\n' ); + } + + return text; + + } + + /** + * Given a markdown slide section element, this will + * return all arguments that aren't related to markdown + * parsing. Used to forward any other user-defined arguments + * to the output markdown slide. + */ + function getForwardedAttributes( section ) { + + var attributes = section.attributes; + var result = []; + + for( var i = 0, len = attributes.length; i < len; i++ ) { + var name = attributes[i].name, + value = attributes[i].value; + + // disregard attributes that are used for markdown loading/parsing + if( /data\-(markdown|separator|vertical|notes)/gi.test( name ) ) continue; + + if( value ) { + result.push( name + '=' + value ); + } + else { + result.push( name ); + } + } + + return result.join( ' ' ); + + } + + /** + * Inspects the given options and fills out default + * values for what's not defined. + */ + function getSlidifyOptions( options ) { + + options = options || {}; + options.separator = options.separator || DEFAULT_SLIDE_SEPARATOR; + options.notesSeparator = options.notesSeparator || DEFAULT_NOTES_SEPARATOR; + options.attributes = options.attributes || ''; + + return options; + + } + + /** + * Helper function for constructing a markdown slide. + */ + function createMarkdownSlide( content, options ) { + + options = getSlidifyOptions( options ); + + var notesMatch = content.split( new RegExp( options.notesSeparator, 'mgi' ) ); + + if( notesMatch.length === 2 ) { + content = notesMatch[0] + ''; + } + + return ''; + + } + + /** + * Parses a data string into multiple slides based + * on the passed in separator arguments. + */ + function slidify( markdown, options ) { + + options = getSlidifyOptions( options ); + + var separatorRegex = new RegExp( options.separator + ( options.verticalSeparator ? '|' + options.verticalSeparator : '' ), 'mg' ), + horizontalSeparatorRegex = new RegExp( options.separator ); + + var matches, + lastIndex = 0, + isHorizontal, + wasHorizontal = true, + content, + sectionStack = []; + + // iterate until all blocks between separators are stacked up + while( matches = separatorRegex.exec( markdown ) ) { + notes = null; + + // determine direction (horizontal by default) + isHorizontal = horizontalSeparatorRegex.test( matches[0] ); + + if( !isHorizontal && wasHorizontal ) { + // create vertical stack + sectionStack.push( [] ); + } + + // pluck slide content from markdown input + content = markdown.substring( lastIndex, matches.index ); + + if( isHorizontal && wasHorizontal ) { + // add to horizontal stack + sectionStack.push( content ); + } + else { + // add to vertical stack + sectionStack[sectionStack.length-1].push( content ); + } + + lastIndex = separatorRegex.lastIndex; + wasHorizontal = isHorizontal; + } + + // add the remaining slide + ( wasHorizontal ? sectionStack : sectionStack[sectionStack.length-1] ).push( markdown.substring( lastIndex ) ); + + var markdownSections = ''; + + // flatten the hierarchical stack, and insert
    tags + for( var i = 0, len = sectionStack.length; i < len; i++ ) { + // vertical + if( sectionStack[i].propertyIsEnumerable( length ) && typeof sectionStack[i].splice === 'function' ) { + markdownSections += '
    '; + + sectionStack[i].forEach( function( child ) { + markdownSections += '
    ' + createMarkdownSlide( child, options ) + '
    '; + } ); + + markdownSections += '
    '; + } + else { + markdownSections += '
    ' + createMarkdownSlide( sectionStack[i], options ) + '
    '; + } + } + + return markdownSections; + + } + + /** + * Parses any current data-markdown slides, splits + * multi-slide markdown into separate sections and + * handles loading of external markdown. + */ + function processSlides() { + + var sections = document.querySelectorAll( '[data-markdown]'), + section; + + for( var i = 0, len = sections.length; i < len; i++ ) { + + section = sections[i]; + + if( section.getAttribute( 'data-markdown' ).length ) { + + var xhr = new XMLHttpRequest(), + url = section.getAttribute( 'data-markdown' ); + + datacharset = section.getAttribute( 'data-charset' ); + + // see https://developer.mozilla.org/en-US/docs/Web/API/element.getAttribute#Notes + if( datacharset != null && datacharset != '' ) { + xhr.overrideMimeType( 'text/html; charset=' + datacharset ); + } + + xhr.onreadystatechange = function() { + if( xhr.readyState === 4 ) { + if ( xhr.status >= 200 && xhr.status < 300 ) { + + section.outerHTML = slidify( xhr.responseText, { + separator: section.getAttribute( 'data-separator' ), + verticalSeparator: section.getAttribute( 'data-vertical' ), + notesSeparator: section.getAttribute( 'data-notes' ), + attributes: getForwardedAttributes( section ) + }); + + } + else { + + section.outerHTML = '
    ' + + 'ERROR: The attempt to fetch ' + url + ' failed with HTTP status ' + xhr.status + '.' + + 'Check your browser\'s JavaScript console for more details.' + + '

    Remember that you need to serve the presentation HTML from a HTTP server.

    ' + + '
    '; + + } + } + }; + + xhr.open( 'GET', url, false ); + + try { + xhr.send(); + } + catch ( e ) { + alert( 'Failed to get the Markdown file ' + url + '. Make sure that the presentation and the file are served by a HTTP server and the file can be found there. ' + e ); + } + + } + else if( section.getAttribute( 'data-separator' ) || section.getAttribute( 'data-vertical' ) || section.getAttribute( 'data-notes' ) ) { + + section.outerHTML = slidify( getMarkdownFromSlide( section ), { + separator: section.getAttribute( 'data-separator' ), + verticalSeparator: section.getAttribute( 'data-vertical' ), + notesSeparator: section.getAttribute( 'data-notes' ), + attributes: getForwardedAttributes( section ) + }); + + } + else { + + section.innerHTML = createMarkdownSlide( getMarkdownFromSlide( section ) ); + + } + } + + } + + /** + * Converts any current data-markdown slides in the + * DOM to HTML. + */ + function convertSlides() { + + var sections = document.querySelectorAll( '[data-markdown]'); + + for( var i = 0, len = sections.length; i < len; i++ ) { + + var section = sections[i]; + + // Only parse the same slide once + if( !section.getAttribute( 'data-markdown-parsed' ) ) { + + section.setAttribute( 'data-markdown-parsed', true ) + + var notes = section.querySelector( 'aside.notes' ); + var markdown = getMarkdownFromSlide( section ); + + section.innerHTML = marked( markdown ); + + // If there were notes, we need to re-add them after + // having overwritten the section's HTML + if( notes ) { + section.appendChild( notes ); + } + + } + + } + + } + + // API + return { + + initialize: function() { + processSlides(); + convertSlides(); + }, + + // TODO: Do these belong in the API? + processSlides: processSlides, + convertSlides: convertSlides, + slidify: slidify + + }; + +})); diff --git a/plugin/markdown/marked.js b/plugin/markdown/marked.js new file mode 100644 index 0000000..ca558fb --- /dev/null +++ b/plugin/markdown/marked.js @@ -0,0 +1,37 @@ +/** + * marked - a markdown parser + * Copyright (c) 2011-2013, Christopher Jeffrey. (MIT Licensed) + * https://github.com/chjj/marked + */ + +(function(){var block={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:noop,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:noop,lheading:/^([^\n]+)\n *(=|-){3,} *\n*/,blockquote:/^( *>[^\n]+(\n[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment|closed|closing) *(?:\n{2,}|\s*$)/,def:/^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:noop,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/, +text:/^[^\n]+/};block.bullet=/(?:[*+-]|\d+\.)/;block.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;block.item=replace(block.item,"gm")(/bull/g,block.bullet)();block.list=replace(block.list)(/bull/g,block.bullet)("hr",/\n+(?=(?: *[-*_]){3,} *(?:\n+|$))/)();block._tag="(?!(?:"+"a|em|strong|small|s|cite|q|dfn|abbr|data|time|code"+"|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo"+"|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|@)\\b";block.html=replace(block.html)("comment",/\x3c!--[\s\S]*?--\x3e/)("closed", +/<(tag)[\s\S]+?<\/\1>/)("closing",/])*?>/)(/tag/g,block._tag)();block.paragraph=replace(block.paragraph)("hr",block.hr)("heading",block.heading)("lheading",block.lheading)("blockquote",block.blockquote)("tag","<"+block._tag)("def",block.def)();block.normal=merge({},block);block.gfm=merge({},block.normal,{fences:/^ *(`{3,}|~{3,}) *(\S+)? *\n([\s\S]+?)\s*\1 *(?:\n+|$)/,paragraph:/^/});block.gfm.paragraph=replace(block.paragraph)("(?!","(?!"+block.gfm.fences.source.replace("\\1", +"\\2")+"|")();block.tables=merge({},block.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/});function Lexer(options){this.tokens=[];this.tokens.links={};this.options=options||marked.defaults;this.rules=block.normal;if(this.options.gfm)if(this.options.tables)this.rules=block.tables;else this.rules=block.gfm}Lexer.rules=block;Lexer.lex=function(src,options){var lexer=new Lexer(options);return lexer.lex(src)}; +Lexer.prototype.lex=function(src){src=src.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n");return this.token(src,true)};Lexer.prototype.token=function(src,top){var src=src.replace(/^ +$/gm,""),next,loose,cap,bull,b,item,space,i,l;while(src){if(cap=this.rules.newline.exec(src)){src=src.substring(cap[0].length);if(cap[0].length>1)this.tokens.push({type:"space"})}if(cap=this.rules.code.exec(src)){src=src.substring(cap[0].length);cap=cap[0].replace(/^ {4}/gm, +"");this.tokens.push({type:"code",text:!this.options.pedantic?cap.replace(/\n+$/,""):cap});continue}if(cap=this.rules.fences.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"code",lang:cap[2],text:cap[3]});continue}if(cap=this.rules.heading.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"heading",depth:cap[1].length,text:cap[2]});continue}if(top&&(cap=this.rules.nptable.exec(src))){src=src.substring(cap[0].length);item={type:"table",header:cap[1].replace(/^ *| *\| *$/g, +"").split(/ *\| */),align:cap[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:cap[3].replace(/\n$/,"").split("\n")};for(i=0;i ?/gm,"");this.token(cap,top);this.tokens.push({type:"blockquote_end"});continue}if(cap=this.rules.list.exec(src)){src=src.substring(cap[0].length); +bull=cap[2];this.tokens.push({type:"list_start",ordered:bull.length>1});cap=cap[0].match(this.rules.item);next=false;l=cap.length;i=0;for(;i1&&b.length>1)){src=cap.slice(i+ +1).join("\n")+src;i=l-1}}loose=next||/\n\n(?!\s*$)/.test(item);if(i!==l-1){next=item[item.length-1]==="\n";if(!loose)loose=next}this.tokens.push({type:loose?"loose_item_start":"list_item_start"});this.token(item,false);this.tokens.push({type:"list_item_end"})}this.tokens.push({type:"list_end"});continue}if(cap=this.rules.html.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:cap[1]==="pre"||cap[1]==="script",text:cap[0]});continue}if(top&& +(cap=this.rules.def.exec(src))){src=src.substring(cap[0].length);this.tokens.links[cap[1].toLowerCase()]={href:cap[2],title:cap[3]};continue}if(top&&(cap=this.rules.table.exec(src))){src=src.substring(cap[0].length);item={type:"table",header:cap[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:cap[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:cap[3].replace(/(?: *\| *)?\n$/,"").split("\n")};for(i=0;i])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:noop,tag:/^\x3c!--[\s\S]*?--\x3e|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/, +code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:noop,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/;inline.link=replace(inline.link)("inside",inline._inside)("href",inline._href)();inline.reflink=replace(inline.reflink)("inside",inline._inside)();inline.normal=merge({},inline);inline.pedantic=merge({},inline.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/, +em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/});inline.gfm=merge({},inline.normal,{escape:replace(inline.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:replace(inline.text)("]|","~]|")("|","|https?://|")()});inline.breaks=merge({},inline.gfm,{br:replace(inline.br)("{2,}","*")(),text:replace(inline.gfm.text)("{2,}","*")()});function InlineLexer(links,options){this.options=options||marked.defaults;this.links=links;this.rules=inline.normal; +if(!this.links)throw new Error("Tokens array requires a `links` property.");if(this.options.gfm)if(this.options.breaks)this.rules=inline.breaks;else this.rules=inline.gfm;else if(this.options.pedantic)this.rules=inline.pedantic}InlineLexer.rules=inline;InlineLexer.output=function(src,links,options){var inline=new InlineLexer(links,options);return inline.output(src)};InlineLexer.prototype.output=function(src){var out="",link,text,href,cap;while(src){if(cap=this.rules.escape.exec(src)){src=src.substring(cap[0].length); +out+=cap[1];continue}if(cap=this.rules.autolink.exec(src)){src=src.substring(cap[0].length);if(cap[2]==="@"){text=cap[1][6]===":"?this.mangle(cap[1].substring(7)):this.mangle(cap[1]);href=this.mangle("mailto:")+text}else{text=escape(cap[1]);href=text}out+=''+text+"";continue}if(cap=this.rules.url.exec(src)){src=src.substring(cap[0].length);text=escape(cap[1]);href=text;out+=''+text+"";continue}if(cap=this.rules.tag.exec(src)){src=src.substring(cap[0].length); +out+=this.options.sanitize?escape(cap[0]):cap[0];continue}if(cap=this.rules.link.exec(src)){src=src.substring(cap[0].length);out+=this.outputLink(cap,{href:cap[2],title:cap[3]});continue}if((cap=this.rules.reflink.exec(src))||(cap=this.rules.nolink.exec(src))){src=src.substring(cap[0].length);link=(cap[2]||cap[1]).replace(/\s+/g," ");link=this.links[link.toLowerCase()];if(!link||!link.href){out+=cap[0][0];src=cap[0].substring(1)+src;continue}out+=this.outputLink(cap,link);continue}if(cap=this.rules.strong.exec(src)){src= +src.substring(cap[0].length);out+=""+this.output(cap[2]||cap[1])+"";continue}if(cap=this.rules.em.exec(src)){src=src.substring(cap[0].length);out+=""+this.output(cap[2]||cap[1])+"";continue}if(cap=this.rules.code.exec(src)){src=src.substring(cap[0].length);out+=""+escape(cap[2],true)+"";continue}if(cap=this.rules.br.exec(src)){src=src.substring(cap[0].length);out+="
    ";continue}if(cap=this.rules.del.exec(src)){src=src.substring(cap[0].length);out+=""+ +this.output(cap[1])+"";continue}if(cap=this.rules.text.exec(src)){src=src.substring(cap[0].length);out+=escape(cap[0]);continue}if(src)throw new Error("Infinite loop on byte: "+src.charCodeAt(0));}return out};InlineLexer.prototype.outputLink=function(cap,link){if(cap[0][0]!=="!")return'"+this.output(cap[1])+"";else return''+escape(cap[1])+'"};InlineLexer.prototype.smartypants=function(text){if(!this.options.smartypants)return text;return text.replace(/--/g,"\u2014").replace(/'([^']*)'/g,"\u2018$1\u2019").replace(/"([^"]*)"/g,"\u201c$1\u201d").replace(/\.{3}/g,"\u2026")};InlineLexer.prototype.mangle=function(text){var out="",l=text.length,i=0,ch;for(;i0.5)ch="x"+ch.toString(16);out+="&#"+ch+";"}return out};function Parser(options){this.tokens=[];this.token=null; +this.options=options||marked.defaults}Parser.parse=function(src,options){var parser=new Parser(options);return parser.parse(src)};Parser.prototype.parse=function(src){this.inline=new InlineLexer(src.links,this.options);this.tokens=src.reverse();var out="";while(this.next())out+=this.tok();return out};Parser.prototype.next=function(){return this.token=this.tokens.pop()};Parser.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0};Parser.prototype.parseText=function(){var body=this.token.text; +while(this.peek().type==="text")body+="\n"+this.next().text;return this.inline.output(body)};Parser.prototype.tok=function(){switch(this.token.type){case "space":return"";case "hr":return"
    \n";case "heading":return""+this.inline.output(this.token.text)+"\n";case "code":if(this.options.highlight){var code=this.options.highlight(this.token.text,this.token.lang);if(code!=null&&code!==this.token.text){this.token.escaped=true;this.token.text=code}}if(!this.token.escaped)this.token.text= +escape(this.token.text,true);return"
    "+this.token.text+"
    \n";case "table":var body="",heading,i,row,cell,j;body+="\n\n";for(i=0;i'+heading+"\n":""+heading+"\n"}body+="\n\n";body+="\n";for(i=0;i'+cell+"\n":""+cell+"\n"}body+="\n"}body+="\n";return"\n"+body+"
    \n";case "blockquote_start":var body="";while(this.next().type!=="blockquote_end")body+=this.tok();return"
    \n"+body+"
    \n";case "list_start":var type=this.token.ordered?"ol":"ul",body="";while(this.next().type!=="list_end")body+= +this.tok();return"<"+type+">\n"+body+"\n";case "list_item_start":var body="";while(this.next().type!=="list_item_end")body+=this.token.type==="text"?this.parseText():this.tok();return"
  • "+body+"
  • \n";case "loose_item_start":var body="";while(this.next().type!=="list_item_end")body+=this.tok();return"
  • "+body+"
  • \n";case "html":return!this.token.pre&&!this.options.pedantic?this.inline.output(this.token.text):this.token.text;case "paragraph":return"

    "+this.inline.output(this.token.text)+ +"

    \n";case "text":return"

    "+this.parseText()+"

    \n"}};function escape(html,encode){return html.replace(!encode?/&(?!#?\w+;)/g:/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function replace(regex,opt){regex=regex.source;opt=opt||"";return function self(name,val){if(!name)return new RegExp(regex,opt);val=val.source||val;val=val.replace(/(^|[^\[])\^/g,"$1");regex=regex.replace(name,val);return self}}function noop(){}noop.exec=noop;function merge(obj){var i= +1,target,key;for(;iAn error occured:

    "+escape(e.message+"",true)+"
    ";throw e;}}marked.options=marked.setOptions=function(opt){merge(marked.defaults,opt);return marked};marked.defaults={gfm:true,tables:true,breaks:false,pedantic:false,sanitize:false,smartLists:false,silent:false,highlight:null,langPrefix:""};marked.Parser=Parser;marked.parser=Parser.parse;marked.Lexer=Lexer;marked.lexer=Lexer.lex;marked.InlineLexer=InlineLexer;marked.inlineLexer=InlineLexer.output; +marked.parse=marked;if(typeof exports==="object")module.exports=marked;else if(typeof define==="function"&&define.amd)define(function(){return marked});else this.marked=marked}).call(function(){return this||(typeof window!=="undefined"?window:global)}()); diff --git a/plugin/markdown/showdown.js b/plugin/markdown/showdown.js deleted file mode 100755 index 3f280f4..0000000 --- a/plugin/markdown/showdown.js +++ /dev/null @@ -1,62 +0,0 @@ -// -// showdown.js -- A javascript port of Markdown. -// -// Copyright (c) 2007 John Fraser. -// -// Original Markdown Copyright (c) 2004-2005 John Gruber -// -// -// Redistributable under a BSD-style open source license. -// See license.txt for more information. -// -// The full source distribution is at: -// -// A A L -// T C A -// T K B -// -// -// -// -// Wherever possible, Showdown is a straight, line-by-line port -// of the Perl version of Markdown. -// -// This is not a normal parser design; it's basically just a -// series of string substitutions. It's hard to read and -// maintain this way, but keeping Showdown close to the original -// design makes it easier to port new features. -// -// More importantly, Showdown behaves like markdown.pl in most -// edge cases. So web applications can do client-side preview -// in Javascript, and then build identical HTML on the server. -// -// This port needs the new RegExp functionality of ECMA 262, -// 3rd Edition (i.e. Javascript 1.5). Most modern web browsers -// should do fine. Even with the new regular expression features, -// We do a lot of work to emulate Perl's regex functionality. -// The tricky changes in this file mostly have the "attacklab:" -// label. Major or self-explanatory changes don't. -// -// Smart diff tools like Araxis Merge will be able to match up -// this file with markdown.pl in a useful way. A little tweaking -// helps: in a copy of markdown.pl, replace "#" with "//" and -// replace "$text" with "text". Be sure to ignore whitespace -// and line endings. -// -// -// Showdown usage: -// -// var text = "Markdown *rocks*."; -// -// var converter = new Showdown.converter(); -// var html = converter.makeHtml(text); -// -// alert(html); -// -// Note: move the sample code to the bottom of this -// file before uncommenting it. -// -// -// Showdown namespace -// -var Showdown={};Showdown.converter=function(){var a,b,c,d=0;this.makeHtml=function(d){return a=new Array,b=new Array,c=new Array,d=d.replace(/~/g,"~T"),d=d.replace(/\$/g,"~D"),d=d.replace(/\r\n/g,"\n"),d=d.replace(/\r/g,"\n"),d="\n\n"+d+"\n\n",d=F(d),d=d.replace(/^[ \t]+$/mg,""),d=f(d),d=e(d),d=h(d),d=D(d),d=d.replace(/~D/g,"$$"),d=d.replace(/~T/g,"~"),d};var e=function(c){var c=c.replace(/^[ ]{0,3}\[(.+)\]:[ \t]*\n?[ \t]*?[ \t]*\n?[ \t]*(?:(\n*)["(](.+?)[")][ \t]*)?(?:\n+|\Z)/gm,function(c,d,e,f,g){return d=d.toLowerCase(),a[d]=z(e),f?f+g:(g&&(b[d]=g.replace(/"/g,""")),"")});return c},f=function(a){a=a.replace(/\n/g,"\n\n");var b="p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del",c="p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math";return a=a.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b[^\r]*?\n<\/\2>[ \t]*(?=\n+))/gm,g),a=a.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math)\b[^\r]*?.*<\/\2>[ \t]*(?=\n+)\n)/gm,g),a=a.replace(/(\n[ ]{0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,g),a=a.replace(/(\n\n[ ]{0,3}[ \t]*(?=\n{2,}))/g,g),a=a.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,g),a=a.replace(/\n\n/g,"\n"),a},g=function(a,b){var d=b;return d=d.replace(/\n\n/g,"\n"),d=d.replace(/^\n/,""),d=d.replace(/\n+$/g,""),d="\n\n~K"+(c.push(d)-1)+"K\n\n",d},h=function(a){a=o(a);var b=t("
    ");return a=a.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,b),a=a.replace(/^[ ]{0,2}([ ]?\-[ ]?){3,}[ \t]*$/gm,b),a=a.replace(/^[ ]{0,2}([ ]?\_[ ]?){3,}[ \t]*$/gm,b),a=q(a),a=s(a),a=r(a),a=x(a),a=f(a),a=y(a),a},i=function(a){return a=u(a),a=j(a),a=A(a),a=m(a),a=k(a),a=B(a),a=z(a),a=w(a),a=a.replace(/ +\n/g,"
    \n"),a},j=function(a){var b=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|)/gi;return a=a.replace(b,function(a){var b=a.replace(/(.)<\/?code>(?=.)/g,"$1`");return b=G(b,"\\`*_"),b}),a},k=function(a){return a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,l),a=a.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,l),a=a.replace(/(\[([^\[\]]+)\])()()()()()/g,l),a},l=function(c,d,e,f,g,h,i,j){j==undefined&&(j="");var k=d,l=e,m=f.toLowerCase(),n=g,o=j;if(n==""){m==""&&(m=l.toLowerCase().replace(/ ?\n/g," ")),n="#"+m;if(a[m]!=undefined)n=a[m],b[m]!=undefined&&(o=b[m]);else{if(!(k.search(/\(\s*\)$/m)>-1))return k;n=""}}n=G(n,"*_");var p='",p},m=function(a){return a=a.replace(/(!\[(.*?)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,n),a=a.replace(/(!\[(.*?)\]\s?\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,n),a},n=function(c,d,e,f,g,h,i,j){var k=d,l=e,m=f.toLowerCase(),n=g,o=j;o||(o="");if(n==""){m==""&&(m=l.toLowerCase().replace(/ ?\n/g," ")),n="#"+m;if(a[m]==undefined)return k;n=a[m],b[m]!=undefined&&(o=b[m])}l=l.replace(/"/g,"""),n=G(n,"*_");var p=''+l+''+i(c)+"")}),a=a.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(a,c){return t('

    '+i(c)+"

    ")}),a=a.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(a,c,d){var e=c.length;return t("'+i(d)+"")}),a},p,q=function(a){a+="~0";var b=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;return d?a=a.replace(b,function(a,b,c){var d=b,e=c.search(/[*+-]/g)>-1?"ul":"ol";d=d.replace(/\n{2,}/g,"\n\n\n");var f=p(d);return f=f.replace(/\s+$/,""),f="<"+e+">"+f+"\n",f}):(b=/(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g,a=a.replace(b,function(a,b,c,d){var e=b,f=c,g=d.search(/[*+-]/g)>-1?"ul":"ol",f=f.replace(/\n{2,}/g,"\n\n\n"),h=p(f);return h=e+"<"+g+">\n"+h+"\n",h})),a=a.replace(/~0/,""),a};p=function(a){return d++,a=a.replace(/\n{2,}$/,"\n"),a+="~0",a=a.replace(/(\n)?(^[ \t]*)([*+-]|\d+[.])[ \t]+([^\r]+?(\n{1,2}))(?=\n*(~0|\2([*+-]|\d+[.])[ \t]+))/gm,function(a,b,c,d,e){var f=e,g=b,j=c;return g||f.search(/\n{2,}/)>-1?f=h(E(f)):(f=q(E(f)),f=f.replace(/\n$/,""),f=i(f)),"
  • "+f+"
  • \n"}),a=a.replace(/~0/g,""),d--,a};var r=function(a){return a+="~0",a=a.replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,function(a,b,c){var d=b,e=c;return d=v(E(d)),d=F(d),d=d.replace(/^\n+/g,""),d=d.replace(/\n+$/g,""),d="
    "+d+"\n
    ",t(d)+e}),a=a.replace(/~0/,""),a},s=function(a){return a+="~0",a=a.replace(/\n```(.*)\n([^`]+)\n```/g,function(a,b,c){var d=b,e=c;return e=v(e),e=F(e),e=e.replace(/^\n+/g,""),e=e.replace(/\n+$/g,""),e="
    "+e+"\n
    ",t(e)}),a=a.replace(/~0/,""),a},t=function(a){return a=a.replace(/(^\n+|\n+$)/g,""),"\n\n~K"+(c.push(a)-1)+"K\n\n"},u=function(a){return a=a.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(a,b,c,d,e){var f=d;return f=f.replace(/^([ \t]*)/g,""),f=f.replace(/[ \t]*$/g,""),f=v(f),b+""+f+""}),a},v=function(a){return a=a.replace(/&/g,"&"),a=a.replace(//g,">"),a=G(a,"*_{}[]\\",!1),a},w=function(a){return a=a.replace(/(\*\*|__)(?=\S)([^\r]*?\S[*_]*)\1/g,"$2"),a=a.replace(/(\*|_)(?=\S)([^\r]*?\S)\1/g,"$2"),a},x=function(a){return a=a.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(a,b){var c=b;return c=c.replace(/^[ \t]*>[ \t]?/gm,"~0"),c=c.replace(/~0/g,""),c=c.replace(/^[ \t]+$/gm,""),c=h(c),c=c.replace(/(^|\n)/g,"$1 "),c=c.replace(/(\s*
    [^\r]+?<\/pre>)/gm,function(a,b){var c=b;return c=c.replace(/^  /mg,"~0"),c=c.replace(/~0/g,""),c}),t("
    \n"+c+"\n
    ")}),a},y=function(a){a=a.replace(/^\n+/g,""),a=a.replace(/\n+$/g,"");var b=a.split(/\n{2,}/g),d=new Array,e=b.length;for(var f=0;f=0?d.push(g):g.search(/\S/)>=0&&(g=i(g),g=g.replace(/^([ \t]*)/g,"

    "),g+="

    ",d.push(g))}e=d.length;for(var f=0;f=0){var h=c[RegExp.$1];h=h.replace(/\$/g,"$$$$"),d[f]=d[f].replace(/~K\d+K/,h)}return d.join("\n\n")},z=function(a){return a=a.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/g,"&"),a=a.replace(/<(?![a-z\/?\$!])/gi,"<"),a},A=function(a){return a=a.replace(/\\(\\)/g,H),a=a.replace(/\\([`*_{}\[\]()>#+-.!])/g,H),a},B=function(a){return a=a.replace(/<((https?|ftp|dict):[^'">\s]+)>/gi,'
    $1'),a=a.replace(/<(?:mailto:)?([-.\w]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi,function(a,b){return C(D(b))}),a},C=function(a){function b(a){var b="0123456789ABCDEF",c=a.charCodeAt(0);return b.charAt(c>>4)+b.charAt(c&15)}var c=[function(a){return"&#"+a.charCodeAt(0)+";"},function(a){return"&#x"+b(a)+";"},function(a){return a}];return a="mailto:"+a,a=a.replace(/./g,function(a){if(a=="@")a=c[Math.floor(Math.random()*2)](a);else if(a!=":"){var b=Math.random();a=b>.9?c[2](a):b>.45?c[1](a):c[0](a)}return a}),a=''+a+"",a=a.replace(/">.+:/g,'">'),a},D=function(a){return a=a.replace(/~E(\d+)E/g,function(a,b){var c=parseInt(b);return String.fromCharCode(c)}),a},E=function(a){return a=a.replace(/^(\t|[ ]{1,4})/gm,"~0"),a=a.replace(/~0/g,""),a},F=function(a){return a=a.replace(/\t(?=\t)/g," "),a=a.replace(/\t/g,"~A~B"),a=a.replace(/~B(.+?)~A/g,function(a,b,c){var d=b,e=4-d.length%4;for(var f=0;f + + reveal.js - Slide Notes
    - +
    - + UPCOMING:
    + +
    +
    +

    Time

    + 0:00:00 AM +
    +
    +

    Elapsed

    + 00:00:00 +
    +
    +
    - + diff --git a/plugin/notes/notes.js b/plugin/notes/notes.js old mode 100755 new mode 100644 index 7c83366..9a82c3c --- a/plugin/notes/notes.js +++ b/plugin/notes/notes.js @@ -5,75 +5,55 @@ var RevealNotes = (function() { function openNotes() { - var notesPopup = window.open( 'plugin/notes/notes.html', 'reveal.js - Notes', 'width=1120,height=850' ); + var jsFileLocation = document.querySelector('script[src$="notes.js"]').src; // this js file path + jsFileLocation = jsFileLocation.replace(/notes\.js(\?.*)?$/, ''); // the js folder path + var notesPopup = window.open( jsFileLocation + 'notes.html', 'reveal.js - Notes', 'width=1120,height=850' ); // Fires when slide is changed - Reveal.addEventListener( 'slidechanged', function( event ) { - post('slidechanged'); - } ); + Reveal.addEventListener( 'slidechanged', post ); // Fires when a fragment is shown - Reveal.addEventListener( 'fragmentshown', function( event ) { - post('fragmentshown'); - } ); + Reveal.addEventListener( 'fragmentshown', post ); // Fires when a fragment is hidden - Reveal.addEventListener( 'fragmenthidden', function( event ) { - post('fragmenthidden'); - } ); + Reveal.addEventListener( 'fragmenthidden', post ); /** * Posts the current slide data to the notes window - * - * @param {String} eventType Expecting 'slidechanged', 'fragmentshown' - * or 'fragmenthidden' set in the events above to define the needed - * slideDate. */ - function post( eventType ) { + function post() { var slideElement = Reveal.getCurrentSlide(), + slideIndices = Reveal.getIndices(), messageData; - if( eventType === 'slidechanged' ) { - var notes = slideElement.querySelector( 'aside.notes' ), - indexh = Reveal.getIndices().h, - indexv = Reveal.getIndices().v, - nextindexh, - nextindexv; + var notes = slideElement.querySelector( 'aside.notes' ), + nextindexh, + nextindexv; - if( slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION' ) { - nextindexh = indexh; - nextindexv = indexv + 1; - } else { - nextindexh = indexh + 1; - nextindexv = 0; - } - - messageData = { - notes : notes ? notes.innerHTML : '', - indexh : indexh, - indexv : indexv, - nextindexh : nextindexh, - nextindexv : nextindexv, - markdown : notes ? typeof notes.getAttribute( 'data-markdown' ) === 'string' : false - }; - } - else if( eventType === 'fragmentshown' ) { - messageData = { - fragment : 'next' - }; - } - else if( eventType === 'fragmenthidden' ) { - messageData = { - fragment : 'prev' - }; + if( slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION' ) { + nextindexh = slideIndices.h; + nextindexv = slideIndices.v + 1; + } else { + nextindexh = slideIndices.h + 1; + nextindexv = 0; } + messageData = { + notes : notes ? notes.innerHTML : '', + indexh : slideIndices.h, + indexv : slideIndices.v, + indexf : slideIndices.f, + nextindexh : nextindexh, + nextindexv : nextindexv, + markdown : notes ? typeof notes.getAttribute( 'data-markdown' ) === 'string' : false + }; + notesPopup.postMessage( JSON.stringify( messageData ), '*' ); } // Navigate to the current slide when the notes are loaded notesPopup.addEventListener( 'load', function( event ) { - post('slidechanged'); + post(); }, false ); } diff --git a/plugin/postmessage/example.html b/plugin/postmessage/example.html new file mode 100644 index 0000000..cc57a7b --- /dev/null +++ b/plugin/postmessage/example.html @@ -0,0 +1,39 @@ + + + + + +
    + + + +
    + + + + + diff --git a/plugin/postmessage/postmessage.js b/plugin/postmessage/postmessage.js new file mode 100644 index 0000000..d0f4140 --- /dev/null +++ b/plugin/postmessage/postmessage.js @@ -0,0 +1,42 @@ +/* + + simple postmessage plugin + + Useful when a reveal slideshow is inside an iframe. + It allows to call reveal methods from outside. + + Example: + var reveal = window.frames[0]; + + // Reveal.prev(); + reveal.postMessage(JSON.stringify({method: 'prev', args: []}), '*'); + // Reveal.next(); + reveal.postMessage(JSON.stringify({method: 'next', args: []}), '*'); + // Reveal.slide(2, 2); + reveal.postMessage(JSON.stringify({method: 'slide', args: [2,2]}), '*'); + + Add to the slideshow: + + dependencies: [ + ... + { src: 'plugin/postmessage/postmessage.js', async: true, condition: function() { return !!document.body.classList; } } + ] + +*/ + +(function (){ + + window.addEventListener( "message", function ( event ) { + var data = JSON.parse( event.data ), + method = data.method, + args = data.args; + + if( typeof Reveal[method] === 'function' ) { + Reveal[method].apply( Reveal, data.args ); + } + }, false); + +}()); + + + diff --git a/plugin/print-pdf/print-pdf.js b/plugin/print-pdf/print-pdf.js new file mode 100644 index 0000000..6b6cad6 --- /dev/null +++ b/plugin/print-pdf/print-pdf.js @@ -0,0 +1,44 @@ +/** + * phantomjs script for printing presentations to PDF. + * + * Example: + * phantomjs print-pdf.js "http://lab.hakim.se/reveal-js?print-pdf" reveal-demo.pdf + * + * By Manuel Bieh (https://github.com/manuelbieh) + */ + +// html2pdf.js +var page = new WebPage(); +var system = require( 'system' ); + +page.viewportSize = { + width: 1024, + height: 768 +}; + +page.paperSize = { + format: 'letter', + orientation: 'landscape', + margin: { + left: '0', + right: '0', + top: '0', + bottom: '0' + } +}; + +var revealFile = system.args[1] || 'index.html?print-pdf'; +var slideFile = system.args[2] || 'slides.pdf'; + +if( slideFile.match( /\.pdf$/gi ) === null ) { + slideFile += '.pdf'; +} + +console.log( 'Printing PDF...' ); + +page.open( revealFile, function( status ) { + console.log( 'Printed succesfully' ); + page.render( slideFile ); + phantom.exit(); +} ); + diff --git a/plugin/remotes/remotes.js b/plugin/remotes/remotes.js new file mode 100644 index 0000000..294c2b5 --- /dev/null +++ b/plugin/remotes/remotes.js @@ -0,0 +1,39 @@ +/** + * Touch-based remote controller for your presentation courtesy + * of the folks at http://remotes.io + */ + +(function(window){ + + /** + * Detects if we are dealing with a touch enabled device (with some false positives) + * Borrowed from modernizr: https://github.com/Modernizr/Modernizr/blob/master/feature-detects/touch.js + */ + var hasTouch = (function(){ + return ('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch; + })(); + + /** + * Detects if notes are enable and the current page is opened inside an /iframe + * this prevents loading Remotes.io several times + */ + var isNotesAndIframe = (function(){ + return window.RevealNotes && !(self == top); + })(); + + if(!hasTouch && !isNotesAndIframe){ + head.ready( 'remotes.ne.min.js', function() { + new Remotes("preview") + .on("swipe-left", function(e){ Reveal.right(); }) + .on("swipe-right", function(e){ Reveal.left(); }) + .on("swipe-up", function(e){ Reveal.down(); }) + .on("swipe-down", function(e){ Reveal.up(); }) + .on("tap", function(e){ Reveal.next(); }) + .on("zoom-out", function(e){ Reveal.toggleOverview(true); }) + .on("zoom-in", function(e){ Reveal.toggleOverview(false); }) + ; + } ); + + head.js('https://raw.github.com/Remotes/Remotes/master/dist/remotes.ne.min.js'); + } +})(window); \ No newline at end of file diff --git a/plugin/search/search.js b/plugin/search/search.js new file mode 100644 index 0000000..ae6582e --- /dev/null +++ b/plugin/search/search.js @@ -0,0 +1,196 @@ +/* + * Handles finding a text string anywhere in the slides and showing the next occurrence to the user + * by navigatating to that slide and highlighting it. + * + * By Jon Snyder , February 2013 + */ + +var RevealSearch = (function() { + + var matchedSlides; + var currentMatchedIndex; + var searchboxDirty; + var myHilitor; + +// Original JavaScript code by Chirp Internet: www.chirp.com.au +// Please acknowledge use of this code by including this header. +// 2/2013 jon: modified regex to display any match, not restricted to word boundaries. + +function Hilitor(id, tag) +{ + + var targetNode = document.getElementById(id) || document.body; + var hiliteTag = tag || "EM"; + var skipTags = new RegExp("^(?:" + hiliteTag + "|SCRIPT|FORM|SPAN)$"); + var colors = ["#ff6", "#a0ffff", "#9f9", "#f99", "#f6f"]; + var wordColor = []; + var colorIdx = 0; + var matchRegex = ""; + var matchingSlides = []; + + this.setRegex = function(input) + { + input = input.replace(/^[^\w]+|[^\w]+$/g, "").replace(/[^\w'-]+/g, "|"); + matchRegex = new RegExp("(" + input + ")","i"); + } + + this.getRegex = function() + { + return matchRegex.toString().replace(/^\/\\b\(|\)\\b\/i$/g, "").replace(/\|/g, " "); + } + + // recursively apply word highlighting + this.hiliteWords = function(node) + { + if(node == undefined || !node) return; + if(!matchRegex) return; + if(skipTags.test(node.nodeName)) return; + + if(node.hasChildNodes()) { + for(var i=0; i < node.childNodes.length; i++) + this.hiliteWords(node.childNodes[i]); + } + if(node.nodeType == 3) { // NODE_TEXT + if((nv = node.nodeValue) && (regs = matchRegex.exec(nv))) { + //find the slide's section element and save it in our list of matching slides + var secnode = node.parentNode; + while (secnode.nodeName != 'SECTION') { + secnode = secnode.parentNode; + } + + var slideIndex = Reveal.getIndices(secnode); + var slidelen = matchingSlides.length; + var alreadyAdded = false; + for (var i=0; i < slidelen; i++) { + if ( (matchingSlides[i].h === slideIndex.h) && (matchingSlides[i].v === slideIndex.v) ) { + alreadyAdded = true; + } + } + if (! alreadyAdded) { + matchingSlides.push(slideIndex); + } + + if(!wordColor[regs[0].toLowerCase()]) { + wordColor[regs[0].toLowerCase()] = colors[colorIdx++ % colors.length]; + } + + var match = document.createElement(hiliteTag); + match.appendChild(document.createTextNode(regs[0])); + match.style.backgroundColor = wordColor[regs[0].toLowerCase()]; + match.style.fontStyle = "inherit"; + match.style.color = "#000"; + + var after = node.splitText(regs.index); + after.nodeValue = after.nodeValue.substring(regs[0].length); + node.parentNode.insertBefore(match, after); + } + } + }; + + // remove highlighting + this.remove = function() + { + var arr = document.getElementsByTagName(hiliteTag); + while(arr.length && (el = arr[0])) { + el.parentNode.replaceChild(el.firstChild, el); + } + }; + + // start highlighting at target node + this.apply = function(input) + { + if(input == undefined || !input) return; + this.remove(); + this.setRegex(input); + this.hiliteWords(targetNode); + return matchingSlides; + }; + +} + + function openSearch() { + //ensure the search term input dialog is visible and has focus: + var inputbox = document.getElementById("searchinput"); + inputbox.style.display = "inline"; + inputbox.focus(); + inputbox.select(); + } + + function toggleSearch() { + var inputbox = document.getElementById("searchinput"); + if (inputbox.style.display !== "inline") { + openSearch(); + } + else { + inputbox.style.display = "none"; + myHilitor.remove(); + } + } + + function doSearch() { + //if there's been a change in the search term, perform a new search: + if (searchboxDirty) { + var searchstring = document.getElementById("searchinput").value; + + //find the keyword amongst the slides + myHilitor = new Hilitor("slidecontent"); + matchedSlides = myHilitor.apply(searchstring); + currentMatchedIndex = 0; + } + + //navigate to the next slide that has the keyword, wrapping to the first if necessary + if (matchedSlides.length && (matchedSlides.length <= currentMatchedIndex)) { + currentMatchedIndex = 0; + } + if (matchedSlides.length > currentMatchedIndex) { + Reveal.slide(matchedSlides[currentMatchedIndex].h, matchedSlides[currentMatchedIndex].v); + currentMatchedIndex++; + } + } + + var dom = {}; + dom.wrapper = document.querySelector( '.reveal' ); + + if( !dom.wrapper.querySelector( '.searchbox' ) ) { + var searchElement = document.createElement( 'div' ); + searchElement.id = "searchinputdiv"; + searchElement.classList.add( 'searchdiv' ); + searchElement.style.position = 'absolute'; + searchElement.style.top = '10px'; + searchElement.style.left = '10px'; + //embedded base64 search icon Designed by Sketchdock - http://www.sketchdock.com/: + searchElement.innerHTML = ''; + dom.wrapper.appendChild( searchElement ); + } + + document.getElementById("searchbutton").addEventListener( 'click', function(event) { + doSearch(); + }, false ); + + document.getElementById("searchinput").addEventListener( 'keyup', function( event ) { + switch (event.keyCode) { + case 13: + event.preventDefault(); + doSearch(); + searchboxDirty = false; + break; + default: + searchboxDirty = true; + } + }, false ); + + // Open the search when the 's' key is hit (yes, this conflicts with the notes plugin, disabling for now) + /* + document.addEventListener( 'keydown', function( event ) { + // Disregard the event if the target is editable or a + // modifier is present + if ( document.querySelector( ':focus' ) !== null || event.shiftKey || event.altKey || event.ctrlKey || event.metaKey ) return; + + if( event.keyCode === 83 ) { + event.preventDefault(); + openSearch(); + } + }, false ); +*/ + return { open: openSearch }; +})(); diff --git a/plugin/zoom-js/zoom.js b/plugin/zoom-js/zoom.js old mode 100755 new mode 100644 index 6b29f56..b67ae16 --- a/plugin/zoom-js/zoom.js +++ b/plugin/zoom-js/zoom.js @@ -1,29 +1,34 @@ // Custom reveal.js integration (function(){ - document.querySelector( '.reveal' ).addEventListener( 'click', function( event ) { - if( event.altKey ) { + var isEnabled = true; + + document.querySelector( '.reveal' ).addEventListener( 'mousedown', function( event ) { + if( event.altKey && isEnabled ) { event.preventDefault(); zoom.to({ element: event.target, pan: false }); } } ); + + Reveal.addEventListener( 'overviewshown', function() { isEnabled = false; } ); + Reveal.addEventListener( 'overviewhidden', function() { isEnabled = true; } ); })(); /*! * zoom.js 0.2 (modified version for use with reveal.js) * http://lab.hakim.se/zoom-js * MIT licensed - * + * * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se */ var zoom = (function(){ // The current zoom level (scale) var level = 1; - + // The current mouse position, used for panning var mouseX = 0, mouseY = 0; - + // Timeout before pan is activated var panEngageTimeout = -1, panUpdateInterval = -1; @@ -36,7 +41,7 @@ var zoom = (function(){ 'msTransform' in document.body.style || 'OTransform' in document.body.style || 'transform' in document.body.style; - + if( supportsTransforms ) { // The easing that will be applied when we zoom in/out document.body.style.transition = 'transform 0.8s ease'; @@ -45,7 +50,7 @@ var zoom = (function(){ document.body.style.MozTransition = '-moz-transform 0.8s ease'; document.body.style.WebkitTransition = '-webkit-transform 0.8s ease'; } - + // Zoom out if the user hits escape document.addEventListener( 'keyup', function( event ) { if( level !== 1 && event.keyCode === 27 ) { @@ -62,21 +67,21 @@ var zoom = (function(){ }, false ); /** - * Applies the CSS required to zoom in, prioritizes use of CSS3 + * Applies the CSS required to zoom in, prioritizes use of CSS3 * transforms but falls back on zoom for IE. - * - * @param {Number} pageOffsetX - * @param {Number} pageOffsetY - * @param {Number} elementOffsetX - * @param {Number} elementOffsetY - * @param {Number} scale + * + * @param {Number} pageOffsetX + * @param {Number} pageOffsetY + * @param {Number} elementOffsetX + * @param {Number} elementOffsetY + * @param {Number} scale */ function magnify( pageOffsetX, pageOffsetY, elementOffsetX, elementOffsetY, scale ) { if( supportsTransforms ) { var origin = pageOffsetX +'px '+ pageOffsetY +'px', transform = 'translate('+ -elementOffsetX +'px,'+ -elementOffsetY +'px) scale('+ scale +')'; - + document.body.style.transformOrigin = origin; document.body.style.OTransformOrigin = origin; document.body.style.msTransformOrigin = origin; @@ -121,7 +126,7 @@ var zoom = (function(){ } /** - * Pan the document when the mosue cursor approaches the edges + * Pan the document when the mosue cursor approaches the edges * of the window. */ function pan() { @@ -129,7 +134,7 @@ var zoom = (function(){ rangeX = window.innerWidth * range, rangeY = window.innerHeight * range, scrollOffset = getScrollOffset(); - + // Up if( mouseY < rangeY ) { window.scroll( scrollOffset.x, scrollOffset.y - ( 1 - ( mouseY / rangeY ) ) * ( 14 / level ) ); @@ -159,7 +164,7 @@ var zoom = (function(){ return { /** * Zooms in on either a rectangle or HTML element. - * + * * @param {Object} options * - element: HTML element to zoom in on * OR @@ -232,7 +237,7 @@ var zoom = (function(){ if( currentOptions && currentOptions.element ) { scrollOffset.x -= ( window.innerWidth - ( currentOptions.width * currentOptions.scale ) ) / 2; } - + magnify( scrollOffset.x, scrollOffset.y, 0, 0, 1 ); level = 1; @@ -241,11 +246,11 @@ var zoom = (function(){ // Alias magnify: function( options ) { this.to( options ) }, reset: function() { this.out() }, - + zoomLevel: function() { return level; } } - + })();