From f64b81fed9702c41af4cec14d91f38ce5ad3384e Mon Sep 17 00:00:00 2001
From: Trygve Laugstøl
Date: Tue, 24 Apr 2018 09:23:08 +0200
Subject: o Moving everything under slides.
---
slides/bower_components/reveal.js/CONTRIBUTING.md | 23 +
slides/bower_components/reveal.js/Gruntfile.js | 192 +
slides/bower_components/reveal.js/LICENSE | 19 +
slides/bower_components/reveal.js/README.md | 1238 +++++
slides/bower_components/reveal.js/bower.json | 27 +
.../bower_components/reveal.js/css/print/paper.css | 203 +
.../bower_components/reveal.js/css/print/pdf.css | 178 +
slides/bower_components/reveal.js/css/reveal.css | 1555 ++++++
slides/bower_components/reveal.js/css/reveal.scss | 1717 +++++++
.../bower_components/reveal.js/css/theme/README.md | 21 +
.../bower_components/reveal.js/css/theme/beige.css | 268 +
.../bower_components/reveal.js/css/theme/black.css | 264 +
.../bower_components/reveal.js/css/theme/blood.css | 287 ++
.../reveal.js/css/theme/league.css | 270 +
.../bower_components/reveal.js/css/theme/moon.css | 268 +
.../bower_components/reveal.js/css/theme/night.css | 262 +
.../bower_components/reveal.js/css/theme/serif.css | 264 +
.../reveal.js/css/theme/simple.css | 267 +
.../bower_components/reveal.js/css/theme/sky.css | 271 +
.../reveal.js/css/theme/solarized.css | 268 +
.../reveal.js/css/theme/source/beige.scss | 39 +
.../reveal.js/css/theme/source/black.scss | 49 +
.../reveal.js/css/theme/source/blood.scss | 78 +
.../reveal.js/css/theme/source/league.scss | 34 +
.../reveal.js/css/theme/source/moon.scss | 57 +
.../reveal.js/css/theme/source/night.scss | 34 +
.../reveal.js/css/theme/source/serif.scss | 35 +
.../reveal.js/css/theme/source/simple.scss | 43 +
.../reveal.js/css/theme/source/sky.scss | 46 +
.../reveal.js/css/theme/source/solarized.scss | 63 +
.../reveal.js/css/theme/source/white.scss | 49 +
.../reveal.js/css/theme/template/mixins.scss | 29 +
.../reveal.js/css/theme/template/settings.scss | 43 +
.../reveal.js/css/theme/template/theme.scss | 316 ++
.../bower_components/reveal.js/css/theme/white.css | 264 +
slides/bower_components/reveal.js/demo.html | 410 ++
slides/bower_components/reveal.js/index.html | 49 +
slides/bower_components/reveal.js/js/reveal.js | 5239 ++++++++++++++++++++
.../bower_components/reveal.js/lib/css/zenburn.css | 80 +
.../reveal.js/lib/font/league-gothic/LICENSE | 2 +
.../lib/font/league-gothic/league-gothic.css | 10 +
.../lib/font/league-gothic/league-gothic.eot | Bin 0 -> 25696 bytes
.../lib/font/league-gothic/league-gothic.ttf | Bin 0 -> 64256 bytes
.../lib/font/league-gothic/league-gothic.woff | Bin 0 -> 30764 bytes
.../reveal.js/lib/font/source-sans-pro/LICENSE | 45 +
.../source-sans-pro/source-sans-pro-italic.eot | Bin 0 -> 75720 bytes
.../source-sans-pro/source-sans-pro-italic.ttf | Bin 0 -> 238084 bytes
.../source-sans-pro/source-sans-pro-italic.woff | Bin 0 -> 98556 bytes
.../source-sans-pro/source-sans-pro-regular.eot | Bin 0 -> 88070 bytes
.../source-sans-pro/source-sans-pro-regular.ttf | Bin 0 -> 288008 bytes
.../source-sans-pro/source-sans-pro-regular.woff | Bin 0 -> 114324 bytes
.../source-sans-pro/source-sans-pro-semibold.eot | Bin 0 -> 89897 bytes
.../source-sans-pro/source-sans-pro-semibold.ttf | Bin 0 -> 284640 bytes
.../source-sans-pro/source-sans-pro-semibold.woff | Bin 0 -> 115648 bytes
.../source-sans-pro-semibolditalic.eot | Bin 0 -> 75706 bytes
.../source-sans-pro-semibolditalic.ttf | Bin 0 -> 240944 bytes
.../source-sans-pro-semibolditalic.woff | Bin 0 -> 98816 bytes
.../lib/font/source-sans-pro/source-sans-pro.css | 39 +
.../bower_components/reveal.js/lib/js/classList.js | 2 +
.../bower_components/reveal.js/lib/js/head.min.js | 9 +
.../bower_components/reveal.js/lib/js/html5shiv.js | 7 +
slides/bower_components/reveal.js/package.json | 43 +
.../reveal.js/plugin/highlight/highlight.js | 77 +
.../reveal.js/plugin/markdown/example.html | 129 +
.../reveal.js/plugin/markdown/example.md | 31 +
.../reveal.js/plugin/markdown/markdown.js | 412 ++
.../reveal.js/plugin/markdown/marked.js | 6 +
.../bower_components/reveal.js/plugin/math/math.js | 67 +
.../reveal.js/plugin/multiplex/client.js | 13 +
.../reveal.js/plugin/multiplex/index.js | 64 +
.../reveal.js/plugin/multiplex/master.js | 34 +
.../reveal.js/plugin/multiplex/package.json | 19 +
.../reveal.js/plugin/notes-server/client.js | 65 +
.../reveal.js/plugin/notes-server/index.js | 69 +
.../reveal.js/plugin/notes-server/notes.html | 585 +++
.../reveal.js/plugin/notes/notes.html | 759 +++
.../reveal.js/plugin/notes/notes.js | 155 +
.../reveal.js/plugin/print-pdf/print-pdf.js | 69 +
.../reveal.js/plugin/search/search.js | 206 +
.../reveal.js/plugin/zoom-js/zoom.js | 272 +
80 files changed, 18008 insertions(+)
create mode 100644 slides/bower_components/reveal.js/CONTRIBUTING.md
create mode 100644 slides/bower_components/reveal.js/Gruntfile.js
create mode 100644 slides/bower_components/reveal.js/LICENSE
create mode 100644 slides/bower_components/reveal.js/README.md
create mode 100644 slides/bower_components/reveal.js/bower.json
create mode 100644 slides/bower_components/reveal.js/css/print/paper.css
create mode 100644 slides/bower_components/reveal.js/css/print/pdf.css
create mode 100644 slides/bower_components/reveal.js/css/reveal.css
create mode 100644 slides/bower_components/reveal.js/css/reveal.scss
create mode 100644 slides/bower_components/reveal.js/css/theme/README.md
create mode 100644 slides/bower_components/reveal.js/css/theme/beige.css
create mode 100644 slides/bower_components/reveal.js/css/theme/black.css
create mode 100644 slides/bower_components/reveal.js/css/theme/blood.css
create mode 100644 slides/bower_components/reveal.js/css/theme/league.css
create mode 100644 slides/bower_components/reveal.js/css/theme/moon.css
create mode 100644 slides/bower_components/reveal.js/css/theme/night.css
create mode 100644 slides/bower_components/reveal.js/css/theme/serif.css
create mode 100644 slides/bower_components/reveal.js/css/theme/simple.css
create mode 100644 slides/bower_components/reveal.js/css/theme/sky.css
create mode 100644 slides/bower_components/reveal.js/css/theme/solarized.css
create mode 100644 slides/bower_components/reveal.js/css/theme/source/beige.scss
create mode 100644 slides/bower_components/reveal.js/css/theme/source/black.scss
create mode 100644 slides/bower_components/reveal.js/css/theme/source/blood.scss
create mode 100644 slides/bower_components/reveal.js/css/theme/source/league.scss
create mode 100644 slides/bower_components/reveal.js/css/theme/source/moon.scss
create mode 100644 slides/bower_components/reveal.js/css/theme/source/night.scss
create mode 100644 slides/bower_components/reveal.js/css/theme/source/serif.scss
create mode 100644 slides/bower_components/reveal.js/css/theme/source/simple.scss
create mode 100644 slides/bower_components/reveal.js/css/theme/source/sky.scss
create mode 100644 slides/bower_components/reveal.js/css/theme/source/solarized.scss
create mode 100644 slides/bower_components/reveal.js/css/theme/source/white.scss
create mode 100644 slides/bower_components/reveal.js/css/theme/template/mixins.scss
create mode 100644 slides/bower_components/reveal.js/css/theme/template/settings.scss
create mode 100644 slides/bower_components/reveal.js/css/theme/template/theme.scss
create mode 100644 slides/bower_components/reveal.js/css/theme/white.css
create mode 100644 slides/bower_components/reveal.js/demo.html
create mode 100644 slides/bower_components/reveal.js/index.html
create mode 100644 slides/bower_components/reveal.js/js/reveal.js
create mode 100644 slides/bower_components/reveal.js/lib/css/zenburn.css
create mode 100644 slides/bower_components/reveal.js/lib/font/league-gothic/LICENSE
create mode 100644 slides/bower_components/reveal.js/lib/font/league-gothic/league-gothic.css
create mode 100755 slides/bower_components/reveal.js/lib/font/league-gothic/league-gothic.eot
create mode 100755 slides/bower_components/reveal.js/lib/font/league-gothic/league-gothic.ttf
create mode 100755 slides/bower_components/reveal.js/lib/font/league-gothic/league-gothic.woff
create mode 100644 slides/bower_components/reveal.js/lib/font/source-sans-pro/LICENSE
create mode 100755 slides/bower_components/reveal.js/lib/font/source-sans-pro/source-sans-pro-italic.eot
create mode 100755 slides/bower_components/reveal.js/lib/font/source-sans-pro/source-sans-pro-italic.ttf
create mode 100755 slides/bower_components/reveal.js/lib/font/source-sans-pro/source-sans-pro-italic.woff
create mode 100755 slides/bower_components/reveal.js/lib/font/source-sans-pro/source-sans-pro-regular.eot
create mode 100755 slides/bower_components/reveal.js/lib/font/source-sans-pro/source-sans-pro-regular.ttf
create mode 100755 slides/bower_components/reveal.js/lib/font/source-sans-pro/source-sans-pro-regular.woff
create mode 100755 slides/bower_components/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibold.eot
create mode 100755 slides/bower_components/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibold.ttf
create mode 100755 slides/bower_components/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibold.woff
create mode 100755 slides/bower_components/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibolditalic.eot
create mode 100755 slides/bower_components/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibolditalic.ttf
create mode 100755 slides/bower_components/reveal.js/lib/font/source-sans-pro/source-sans-pro-semibolditalic.woff
create mode 100644 slides/bower_components/reveal.js/lib/font/source-sans-pro/source-sans-pro.css
create mode 100644 slides/bower_components/reveal.js/lib/js/classList.js
create mode 100644 slides/bower_components/reveal.js/lib/js/head.min.js
create mode 100644 slides/bower_components/reveal.js/lib/js/html5shiv.js
create mode 100644 slides/bower_components/reveal.js/package.json
create mode 100644 slides/bower_components/reveal.js/plugin/highlight/highlight.js
create mode 100644 slides/bower_components/reveal.js/plugin/markdown/example.html
create mode 100644 slides/bower_components/reveal.js/plugin/markdown/example.md
create mode 100755 slides/bower_components/reveal.js/plugin/markdown/markdown.js
create mode 100644 slides/bower_components/reveal.js/plugin/markdown/marked.js
create mode 100755 slides/bower_components/reveal.js/plugin/math/math.js
create mode 100644 slides/bower_components/reveal.js/plugin/multiplex/client.js
create mode 100644 slides/bower_components/reveal.js/plugin/multiplex/index.js
create mode 100644 slides/bower_components/reveal.js/plugin/multiplex/master.js
create mode 100644 slides/bower_components/reveal.js/plugin/multiplex/package.json
create mode 100644 slides/bower_components/reveal.js/plugin/notes-server/client.js
create mode 100644 slides/bower_components/reveal.js/plugin/notes-server/index.js
create mode 100644 slides/bower_components/reveal.js/plugin/notes-server/notes.html
create mode 100644 slides/bower_components/reveal.js/plugin/notes/notes.html
create mode 100644 slides/bower_components/reveal.js/plugin/notes/notes.js
create mode 100644 slides/bower_components/reveal.js/plugin/print-pdf/print-pdf.js
create mode 100644 slides/bower_components/reveal.js/plugin/search/search.js
create mode 100644 slides/bower_components/reveal.js/plugin/zoom-js/zoom.js
(limited to 'slides/bower_components/reveal.js')
diff --git a/slides/bower_components/reveal.js/CONTRIBUTING.md b/slides/bower_components/reveal.js/CONTRIBUTING.md
new file mode 100644
index 0000000..c2091e8
--- /dev/null
+++ b/slides/bower_components/reveal.js/CONTRIBUTING.md
@@ -0,0 +1,23 @@
+## Contributing
+
+Please keep the [issue tracker](http://github.com/hakimel/reveal.js/issues) limited to **bug reports**, **feature requests** and **pull requests**.
+
+
+### Personal Support
+If you have personal support or setup questions the best place to ask those are [StackOverflow](http://stackoverflow.com/questions/tagged/reveal.js).
+
+
+### Bug Reports
+When reporting a bug make sure to include information about which browser and operating system you are on as well as the necessary steps to reproduce the issue. If possible please include a link to a sample presentation where the bug can be tested.
+
+
+### Pull Requests
+- Should follow the coding style of the file you work in, most importantly:
+ - Tabs to indent
+ - Single-quoted strings
+- Should be made towards the **dev branch**
+- Should be submitted from a feature/topic branch (not your master)
+
+
+### Plugins
+Please do not submit plugins as pull requests. They should be maintained in their own separate repository. More information here: https://github.com/hakimel/reveal.js/wiki/Plugin-Guidelines
diff --git a/slides/bower_components/reveal.js/Gruntfile.js b/slides/bower_components/reveal.js/Gruntfile.js
new file mode 100644
index 0000000..b6ef63b
--- /dev/null
+++ b/slides/bower_components/reveal.js/Gruntfile.js
@@ -0,0 +1,192 @@
+/* global module:false */
+module.exports = function(grunt) {
+ var port = grunt.option('port') || 8000;
+ var root = grunt.option('root') || '.';
+
+ if (!Array.isArray(root)) root = [root];
+
+ // Project configuration
+ grunt.initConfig({
+ pkg: grunt.file.readJSON('package.json'),
+ meta: {
+ banner:
+ '/*!\n' +
+ ' * reveal.js <%= pkg.version %> (<%= grunt.template.today("yyyy-mm-dd, HH:MM") %>)\n' +
+ ' * http://revealjs.com\n' +
+ ' * MIT licensed\n' +
+ ' *\n' +
+ ' * Copyright (C) 2017 Hakim El Hattab, http://hakim.se\n' +
+ ' */'
+ },
+
+ qunit: {
+ files: [ 'test/*.html' ]
+ },
+
+ uglify: {
+ options: {
+ banner: '<%= meta.banner %>\n',
+ screwIE8: false
+ },
+ build: {
+ src: 'js/reveal.js',
+ dest: 'js/reveal.min.js'
+ }
+ },
+
+ sass: {
+ core: {
+ src: 'css/reveal.scss',
+ dest: 'css/reveal.css'
+ },
+ themes: {
+ expand: true,
+ cwd: 'css/theme/source',
+ src: ['*.sass', '*.scss'],
+ dest: 'css/theme',
+ ext: '.css'
+ }
+ },
+
+ autoprefixer: {
+ core: {
+ src: 'css/reveal.css'
+ }
+ },
+
+ cssmin: {
+ options: {
+ compatibility: 'ie9'
+ },
+ compress: {
+ src: 'css/reveal.css',
+ dest: 'css/reveal.min.css'
+ }
+ },
+
+ jshint: {
+ options: {
+ curly: false,
+ eqeqeq: true,
+ immed: true,
+ esnext: true,
+ latedef: 'nofunc',
+ newcap: true,
+ noarg: true,
+ sub: true,
+ undef: true,
+ eqnull: true,
+ browser: true,
+ expr: true,
+ globals: {
+ head: false,
+ module: false,
+ console: false,
+ unescape: false,
+ define: false,
+ exports: false
+ }
+ },
+ files: [ 'Gruntfile.js', 'js/reveal.js' ]
+ },
+
+ connect: {
+ server: {
+ options: {
+ port: port,
+ base: root,
+ livereload: true,
+ open: true,
+ useAvailablePort: true
+ }
+ }
+ },
+
+ zip: {
+ bundle: {
+ src: [
+ 'index.html',
+ 'css/**',
+ 'js/**',
+ 'lib/**',
+ 'images/**',
+ 'plugin/**',
+ '**.md'
+ ],
+ dest: 'reveal-js-presentation.zip'
+ }
+ },
+
+ watch: {
+ js: {
+ files: [ 'Gruntfile.js', 'js/reveal.js' ],
+ tasks: 'js'
+ },
+ theme: {
+ files: [
+ 'css/theme/source/*.sass',
+ 'css/theme/source/*.scss',
+ 'css/theme/template/*.sass',
+ 'css/theme/template/*.scss'
+ ],
+ tasks: 'css-themes'
+ },
+ css: {
+ files: [ 'css/reveal.scss' ],
+ tasks: 'css-core'
+ },
+ html: {
+ files: root.map(path => path + '/*.html')
+ },
+ markdown: {
+ files: root.map(path => path + '/*.md')
+ },
+ options: {
+ livereload: true
+ }
+ },
+
+ retire: {
+ js: [ 'js/reveal.js', 'lib/js/*.js', 'plugin/**/*.js' ],
+ node: [ '.' ]
+ }
+
+ });
+
+ // Dependencies
+ grunt.loadNpmTasks( 'grunt-contrib-connect' );
+ grunt.loadNpmTasks( 'grunt-contrib-cssmin' );
+ grunt.loadNpmTasks( 'grunt-contrib-jshint' );
+ grunt.loadNpmTasks( 'grunt-contrib-qunit' );
+ grunt.loadNpmTasks( 'grunt-contrib-uglify' );
+ grunt.loadNpmTasks( 'grunt-contrib-watch' );
+ grunt.loadNpmTasks( 'grunt-autoprefixer' );
+ grunt.loadNpmTasks( 'grunt-retire' );
+ grunt.loadNpmTasks( 'grunt-sass' );
+ grunt.loadNpmTasks( 'grunt-zip' );
+
+ // Default task
+ grunt.registerTask( 'default', [ 'css', 'js' ] );
+
+ // JS task
+ grunt.registerTask( 'js', [ 'jshint', 'uglify', 'qunit' ] );
+
+ // Theme CSS
+ grunt.registerTask( 'css-themes', [ 'sass:themes' ] );
+
+ // Core framework CSS
+ grunt.registerTask( 'css-core', [ 'sass:core', 'autoprefixer', 'cssmin' ] );
+
+ // All CSS
+ grunt.registerTask( 'css', [ 'sass', 'autoprefixer', 'cssmin' ] );
+
+ // Package presentation to archive
+ grunt.registerTask( 'package', [ 'default', 'zip' ] );
+
+ // Serve presentation locally
+ grunt.registerTask( 'serve', [ 'connect', 'watch' ] );
+
+ // Run tests
+ grunt.registerTask( 'test', [ 'jshint', 'qunit' ] );
+
+};
diff --git a/slides/bower_components/reveal.js/LICENSE b/slides/bower_components/reveal.js/LICENSE
new file mode 100644
index 0000000..c3e6e5f
--- /dev/null
+++ b/slides/bower_components/reveal.js/LICENSE
@@ -0,0 +1,19 @@
+Copyright (C) 2017 Hakim El Hattab, http://hakim.se, and reveal.js contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
\ No newline at end of file
diff --git a/slides/bower_components/reveal.js/README.md b/slides/bower_components/reveal.js/README.md
new file mode 100644
index 0000000..9d71472
--- /dev/null
+++ b/slides/bower_components/reveal.js/README.md
@@ -0,0 +1,1238 @@
+# reveal.js [![Build Status](https://travis-ci.org/hakimel/reveal.js.svg?branch=master)](https://travis-ci.org/hakimel/reveal.js)
+
+A framework for easily creating beautiful presentations using HTML. [Check out the live demo](http://revealjs.com/).
+
+reveal.js comes with a broad range of features including [nested slides](https://github.com/hakimel/reveal.js#markup), [Markdown contents](https://github.com/hakimel/reveal.js#markdown), [PDF export](https://github.com/hakimel/reveal.js#pdf-export), [speaker notes](https://github.com/hakimel/reveal.js#speaker-notes) and a [JavaScript API](https://github.com/hakimel/reveal.js#api). There's also a fully featured visual editor and platform for sharing reveal.js presentations at [slides.com](https://slides.com?ref=github).
+
+## Table of contents
+- [Online Editor](#online-editor)
+- [Instructions](#instructions)
+ - [Markup](#markup)
+ - [Markdown](#markdown)
+ - [Element Attributes](#element-attributes)
+ - [Slide Attributes](#slide-attributes)
+- [Configuration](#configuration)
+- [Presentation Size](#presentation-size)
+- [Dependencies](#dependencies)
+- [Ready Event](#ready-event)
+- [Auto-sliding](#auto-sliding)
+- [Keyboard Bindings](#keyboard-bindings)
+- [Touch Navigation](#touch-navigation)
+- [Lazy Loading](#lazy-loading)
+- [API](#api)
+ - [Slide Changed Event](#slide-changed-event)
+ - [Presentation State](#presentation-state)
+ - [Slide States](#slide-states)
+ - [Slide Backgrounds](#slide-backgrounds)
+ - [Parallax Background](#parallax-background)
+ - [Slide Transitions](#slide-transitions)
+ - [Internal links](#internal-links)
+ - [Fragments](#fragments)
+ - [Fragment events](#fragment-events)
+ - [Code syntax highlighting](#code-syntax-highlighting)
+ - [Slide number](#slide-number)
+ - [Overview mode](#overview-mode)
+ - [Fullscreen mode](#fullscreen-mode)
+ - [Embedded media](#embedded-media)
+ - [Stretching elements](#stretching-elements)
+ - [postMessage API](#postmessage-api)
+- [PDF Export](#pdf-export)
+- [Theming](#theming)
+- [Speaker Notes](#speaker-notes)
+ - [Share and Print Speaker Notes](#share-and-print-speaker-notes)
+ - [Server Side Speaker Notes](#server-side-speaker-notes)
+- [Multiplexing](#multiplexing)
+ - [Master presentation](#master-presentation)
+ - [Client presentation](#client-presentation)
+ - [Socket.io server](#socketio-server)
+- [MathJax](#mathjax)
+- [Installation](#installation)
+ - [Basic setup](#basic-setup)
+ - [Full setup](#full-setup)
+ - [Folder Structure](#folder-structure)
+- [License](#license)
+
+#### More reading
+- [Changelog](https://github.com/hakimel/reveal.js/releases): Up-to-date version history.
+- [Examples](https://github.com/hakimel/reveal.js/wiki/Example-Presentations): Presentations created with reveal.js, add your own!
+- [Browser Support](https://github.com/hakimel/reveal.js/wiki/Browser-Support): Explanation of browser support and fallbacks.
+- [Plugins](https://github.com/hakimel/reveal.js/wiki/Plugins,-Tools-and-Hardware): A list of plugins that can be used to extend reveal.js.
+
+## Online Editor
+
+Presentations are written using HTML or Markdown but there's also an online editor for those of you who prefer a graphical interface. Give it a try at [https://slides.com](https://slides.com?ref=github).
+
+
+## Instructions
+
+### Markup
+
+Here's a barebones example of a fully working reveal.js presentation:
+```html
+
+
+
+
+
+
+
+
+ Slide 1
+ Slide 2
+
+
+
+
+
+
+```
+
+The presentation markup hierarchy needs to be `.reveal > .slides > section` where the `section` represents one slide and can be repeated indefinitely. If you place multiple `section` elements inside of another `section` they will be shown as vertical slides. The first of the vertical slides is the "root" of the others (at the top), and will be included in the horizontal sequence. For example:
+
+```html
+
+```
+
+### Markdown
+
+It's possible to write your slides using Markdown. To enable Markdown, add the `data-markdown` attribute to your `` elements and wrap the contents in a `
"+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,sanitizer:null,mangle:true,smartLists:false,silent:false,highlight:null,langPrefix:"lang-",smartypants:false,headerPrefix:"",renderer:new Renderer,xhtml:false};marked.Parser=Parser;marked.parser=Parser.parse;marked.Renderer=Renderer;marked.Lexer=Lexer;marked.lexer=Lexer.lex;marked.InlineLexer=InlineLexer;marked.inlineLexer=InlineLexer.output;marked.parse=marked;if(typeof module!=="undefined"&&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)}());
\ No newline at end of file
diff --git a/slides/bower_components/reveal.js/plugin/math/math.js b/slides/bower_components/reveal.js/plugin/math/math.js
new file mode 100755
index 0000000..e3b4089
--- /dev/null
+++ b/slides/bower_components/reveal.js/plugin/math/math.js
@@ -0,0 +1,67 @@
+/**
+ * A plugin which enables rendering of math equations inside
+ * of reveal.js slides. Essentially a thin wrapper for MathJax.
+ *
+ * @author Hakim El Hattab
+ */
+var RevealMath = window.RevealMath || (function(){
+
+ var options = Reveal.getConfig().math || {};
+ options.mathjax = options.mathjax || 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js';
+ options.config = options.config || 'TeX-AMS_HTML-full';
+
+ loadScript( options.mathjax + '?config=' + options.config, function() {
+
+ MathJax.Hub.Config({
+ messageStyle: 'none',
+ tex2jax: {
+ inlineMath: [['$','$'],['\\(','\\)']] ,
+ skipTags: ['script','noscript','style','textarea','pre']
+ },
+ skipStartupTypeset: true
+ });
+
+ // Typeset followed by an immediate reveal.js layout since
+ // the typesetting process could affect slide height
+ MathJax.Hub.Queue( [ 'Typeset', MathJax.Hub ] );
+ MathJax.Hub.Queue( Reveal.layout );
+
+ // Reprocess equations in slides when they turn visible
+ Reveal.addEventListener( 'slidechanged', function( event ) {
+
+ MathJax.Hub.Queue( [ 'Typeset', MathJax.Hub, event.currentSlide ] );
+
+ } );
+
+ } );
+
+ function loadScript( url, callback ) {
+
+ var head = document.querySelector( 'head' );
+ var script = document.createElement( 'script' );
+ script.type = 'text/javascript';
+ script.src = url;
+
+ // Wrapper for callback to make sure it only fires once
+ var finish = function() {
+ if( typeof callback === 'function' ) {
+ callback.call();
+ callback = null;
+ }
+ }
+
+ script.onload = finish;
+
+ // IE
+ script.onreadystatechange = function() {
+ if ( this.readyState === 'loaded' ) {
+ finish();
+ }
+ }
+
+ // Normal browsers
+ head.appendChild( script );
+
+ }
+
+})();
diff --git a/slides/bower_components/reveal.js/plugin/multiplex/client.js b/slides/bower_components/reveal.js/plugin/multiplex/client.js
new file mode 100644
index 0000000..3ffd1e0
--- /dev/null
+++ b/slides/bower_components/reveal.js/plugin/multiplex/client.js
@@ -0,0 +1,13 @@
+(function() {
+ var multiplex = Reveal.getConfig().multiplex;
+ var socketId = multiplex.id;
+ var socket = io.connect(multiplex.url);
+
+ socket.on(multiplex.id, function(data) {
+ // ignore data from sockets that aren't ours
+ if (data.socketId !== socketId) { return; }
+ if( window.location.host === 'localhost:1947' ) return;
+
+ Reveal.setState(data.state);
+ });
+}());
diff --git a/slides/bower_components/reveal.js/plugin/multiplex/index.js b/slides/bower_components/reveal.js/plugin/multiplex/index.js
new file mode 100644
index 0000000..8195f04
--- /dev/null
+++ b/slides/bower_components/reveal.js/plugin/multiplex/index.js
@@ -0,0 +1,64 @@
+var http = require('http');
+var express = require('express');
+var fs = require('fs');
+var io = require('socket.io');
+var crypto = require('crypto');
+
+var app = express();
+var staticDir = express.static;
+var server = http.createServer(app);
+
+io = io(server);
+
+var opts = {
+ port: process.env.PORT || 1948,
+ baseDir : __dirname + '/../../'
+};
+
+io.on( 'connection', function( socket ) {
+ socket.on('multiplex-statechanged', function(data) {
+ if (typeof data.secret == 'undefined' || data.secret == null || data.secret === '') return;
+ if (createHash(data.secret) === data.socketId) {
+ data.secret = null;
+ socket.broadcast.emit(data.socketId, data);
+ };
+ });
+});
+
+[ 'css', 'js', 'plugin', 'lib' ].forEach(function(dir) {
+ app.use('/' + dir, staticDir(opts.baseDir + dir));
+});
+
+app.get("/", function(req, res) {
+ res.writeHead(200, {'Content-Type': 'text/html'});
+
+ var stream = fs.createReadStream(opts.baseDir + '/index.html');
+ stream.on('error', function( error ) {
+ res.write('
reveal.js multiplex server.
Generate token');
+ res.end();
+ });
+ stream.on('readable', function() {
+ stream.pipe(res);
+ });
+});
+
+app.get("/token", function(req,res) {
+ var ts = new Date().getTime();
+ var rand = Math.floor(Math.random()*9999999);
+ var secret = ts.toString() + rand.toString();
+ res.send({secret: secret, socketId: createHash(secret)});
+});
+
+var createHash = function(secret) {
+ var cipher = crypto.createCipher('blowfish', secret);
+ return(cipher.final('hex'));
+};
+
+// Actually listen
+server.listen( opts.port || null );
+
+var brown = '\033[33m',
+ green = '\033[32m',
+ reset = '\033[0m';
+
+console.log( brown + "reveal.js:" + reset + " Multiplex running on port " + green + opts.port + reset );
\ No newline at end of file
diff --git a/slides/bower_components/reveal.js/plugin/multiplex/master.js b/slides/bower_components/reveal.js/plugin/multiplex/master.js
new file mode 100644
index 0000000..7f4bf45
--- /dev/null
+++ b/slides/bower_components/reveal.js/plugin/multiplex/master.js
@@ -0,0 +1,34 @@
+(function() {
+
+ // Don't emit events from inside of notes windows
+ if ( window.location.search.match( /receiver/gi ) ) { return; }
+
+ var multiplex = Reveal.getConfig().multiplex;
+
+ var socket = io.connect( multiplex.url );
+
+ function post() {
+
+ var messageData = {
+ state: Reveal.getState(),
+ secret: multiplex.secret,
+ socketId: multiplex.id
+ };
+
+ socket.emit( 'multiplex-statechanged', messageData );
+
+ };
+
+ // post once the page is loaded, so the client follows also on "open URL".
+ window.addEventListener( 'load', post );
+
+ // Monitor events that trigger a change in state
+ Reveal.addEventListener( 'slidechanged', post );
+ Reveal.addEventListener( 'fragmentshown', post );
+ Reveal.addEventListener( 'fragmenthidden', post );
+ Reveal.addEventListener( 'overviewhidden', post );
+ Reveal.addEventListener( 'overviewshown', post );
+ Reveal.addEventListener( 'paused', post );
+ Reveal.addEventListener( 'resumed', post );
+
+}());
diff --git a/slides/bower_components/reveal.js/plugin/multiplex/package.json b/slides/bower_components/reveal.js/plugin/multiplex/package.json
new file mode 100644
index 0000000..bbed77a
--- /dev/null
+++ b/slides/bower_components/reveal.js/plugin/multiplex/package.json
@@ -0,0 +1,19 @@
+{
+ "name": "reveal-js-multiplex",
+ "version": "1.0.0",
+ "description": "reveal.js multiplex server",
+ "homepage": "http://revealjs.com",
+ "scripts": {
+ "start": "node index.js"
+ },
+ "engines": {
+ "node": "~4.1.1"
+ },
+ "dependencies": {
+ "express": "~4.13.3",
+ "grunt-cli": "~0.1.13",
+ "mustache": "~2.2.1",
+ "socket.io": "~1.3.7"
+ },
+ "license": "MIT"
+}
diff --git a/slides/bower_components/reveal.js/plugin/notes-server/client.js b/slides/bower_components/reveal.js/plugin/notes-server/client.js
new file mode 100644
index 0000000..00b277b
--- /dev/null
+++ b/slides/bower_components/reveal.js/plugin/notes-server/client.js
@@ -0,0 +1,65 @@
+(function() {
+
+ // don't emit events from inside the previews themselves
+ if( window.location.search.match( /receiver/gi ) ) { return; }
+
+ var socket = io.connect( window.location.origin ),
+ socketId = Math.random().toString().slice( 2 );
+
+ console.log( 'View slide notes at ' + window.location.origin + '/notes/' + socketId );
+
+ window.open( window.location.origin + '/notes/' + socketId, 'notes-' + socketId );
+
+ /**
+ * Posts the current slide data to the notes window
+ */
+ function post() {
+
+ var slideElement = Reveal.getCurrentSlide(),
+ notesElement = slideElement.querySelector( 'aside.notes' );
+
+ var messageData = {
+ notes: '',
+ markdown: false,
+ socketId: socketId,
+ state: Reveal.getState()
+ };
+
+ // Look for notes defined in a slide attribute
+ if( slideElement.hasAttribute( 'data-notes' ) ) {
+ messageData.notes = slideElement.getAttribute( 'data-notes' );
+ }
+
+ // Look for notes defined in an aside element
+ if( notesElement ) {
+ messageData.notes = notesElement.innerHTML;
+ messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string';
+ }
+
+ socket.emit( 'statechanged', messageData );
+
+ }
+
+ // When a new notes window connects, post our current state
+ socket.on( 'new-subscriber', function( data ) {
+ post();
+ } );
+
+ // When the state changes from inside of the speaker view
+ socket.on( 'statechanged-speaker', function( data ) {
+ Reveal.setState( data.state );
+ } );
+
+ // Monitor events that trigger a change in state
+ Reveal.addEventListener( 'slidechanged', post );
+ Reveal.addEventListener( 'fragmentshown', post );
+ Reveal.addEventListener( 'fragmenthidden', post );
+ Reveal.addEventListener( 'overviewhidden', post );
+ Reveal.addEventListener( 'overviewshown', post );
+ Reveal.addEventListener( 'paused', post );
+ Reveal.addEventListener( 'resumed', post );
+
+ // Post the initial state
+ post();
+
+}());
diff --git a/slides/bower_components/reveal.js/plugin/notes-server/index.js b/slides/bower_components/reveal.js/plugin/notes-server/index.js
new file mode 100644
index 0000000..b95f071
--- /dev/null
+++ b/slides/bower_components/reveal.js/plugin/notes-server/index.js
@@ -0,0 +1,69 @@
+var http = require('http');
+var express = require('express');
+var fs = require('fs');
+var io = require('socket.io');
+var Mustache = require('mustache');
+
+var app = express();
+var staticDir = express.static;
+var server = http.createServer(app);
+
+io = io(server);
+
+var opts = {
+ port : 1947,
+ baseDir : __dirname + '/../../'
+};
+
+io.on( 'connection', function( socket ) {
+
+ socket.on( 'new-subscriber', function( data ) {
+ socket.broadcast.emit( 'new-subscriber', data );
+ });
+
+ socket.on( 'statechanged', function( data ) {
+ delete data.state.overview;
+ socket.broadcast.emit( 'statechanged', data );
+ });
+
+ socket.on( 'statechanged-speaker', function( data ) {
+ delete data.state.overview;
+ socket.broadcast.emit( 'statechanged-speaker', data );
+ });
+
+});
+
+[ 'css', 'js', 'images', 'plugin', 'lib' ].forEach( function( dir ) {
+ app.use( '/' + dir, staticDir( opts.baseDir + dir ) );
+});
+
+app.get('/', function( req, res ) {
+
+ res.writeHead( 200, { 'Content-Type': 'text/html' } );
+ fs.createReadStream( opts.baseDir + '/index.html' ).pipe( res );
+
+});
+
+app.get( '/notes/:socketId', function( req, res ) {
+
+ fs.readFile( opts.baseDir + 'plugin/notes-server/notes.html', function( err, data ) {
+ res.send( Mustache.to_html( data.toString(), {
+ socketId : req.params.socketId
+ }));
+ });
+
+});
+
+// Actually listen
+server.listen( opts.port || null );
+
+var brown = '\033[33m',
+ green = '\033[32m',
+ reset = '\033[0m';
+
+var slidesLocation = 'http://localhost' + ( opts.port ? ( ':' + opts.port ) : '' );
+
+console.log( brown + 'reveal.js - Speaker Notes' + reset );
+console.log( '1. Open the slides at ' + green + slidesLocation + reset );
+console.log( '2. Click on the link in your JS console to go to the notes page' );
+console.log( '3. Advance through your slides and your notes will advance automatically' );
diff --git a/slides/bower_components/reveal.js/plugin/notes-server/notes.html b/slides/bower_components/reveal.js/plugin/notes-server/notes.html
new file mode 100644
index 0000000..ab8c5b1
--- /dev/null
+++ b/slides/bower_components/reveal.js/plugin/notes-server/notes.html
@@ -0,0 +1,585 @@
+
+
+
+
+
+ reveal.js - Slide Notes
+
+
+
+
+
+
+
+