├── .gitignore ├── common ├── check.png ├── error.png ├── favicon │ ├── favicon.ico │ ├── apple-icon.png │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon-96x96.png │ ├── ms-icon-70x70.png │ ├── apple-icon-57x57.png │ ├── apple-icon-60x60.png │ ├── apple-icon-72x72.png │ ├── apple-icon-76x76.png │ ├── ms-icon-144x144.png │ ├── ms-icon-150x150.png │ ├── ms-icon-310x310.png │ ├── android-icon-36x36.png │ ├── android-icon-48x48.png │ ├── android-icon-72x72.png │ ├── android-icon-96x96.png │ ├── apple-icon-114x114.png │ ├── apple-icon-120x120.png │ ├── apple-icon-144x144.png │ ├── apple-icon-152x152.png │ ├── apple-icon-180x180.png │ ├── android-icon-144x144.png │ ├── android-icon-192x192.png │ ├── apple-icon-precomposed.png │ ├── browserconfig.xml │ └── manifest.json ├── highlight │ ├── styles │ │ ├── pojoaque.jpg │ │ ├── school_book.png │ │ ├── brown_papersq.png │ │ ├── androidstudio.css │ │ ├── ascetic.css │ │ ├── mono-blue.css │ │ ├── codepen-embed.css │ │ ├── tomorrow.css │ │ ├── paraiso.dark.css │ │ ├── paraiso.light.css │ │ ├── vs.css │ │ ├── kimbie.dark.css │ │ ├── kimbie.light.css │ │ ├── tomorrow-night-bright.css │ │ ├── tomorrow-night-eighties.css │ │ ├── atelier-dune.dark.css │ │ ├── atelier-dune.light.css │ │ ├── tomorrow-night.css │ │ ├── atelier-heath.dark.css │ │ ├── atelier-heath.light.css │ │ ├── rainbow.css │ │ ├── tomorrow-night-blue.css │ │ ├── atelier-forest.dark.css │ │ ├── atelier-forest.light.css │ │ ├── ir_black.css │ │ ├── atelier-seaside.dark.css │ │ ├── atelier-seaside.light.css │ │ ├── atelier-lakeside.dark.css │ │ ├── atelier-lakeside.light.css │ │ ├── atelier-sulphurpool.dark.css │ │ ├── atelier-sulphurpool.light.css │ │ ├── solarized_dark.css │ │ ├── solarized_light.css │ │ ├── pojoaque.css │ │ ├── dark.css │ │ ├── brown_paper.css │ │ ├── github.css │ │ ├── foundation.css │ │ ├── far.css │ │ ├── idea.css │ │ ├── zenburn.css │ │ ├── magula.css │ │ ├── school_book.css │ │ ├── docco.css │ │ ├── agate.css │ │ ├── monokai.css │ │ ├── googlecode.css │ │ ├── arta.css │ │ ├── obsidian.css │ │ ├── xcode.css │ │ ├── sunburst.css │ │ ├── darkula.css │ │ ├── monokai_sublime.css │ │ ├── default.css │ │ ├── hybrid.css │ │ ├── railscasts.css │ │ └── color-brewer.css │ ├── LICENSE │ ├── README.ru.md │ └── README.md ├── bootstrap │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ └── js │ │ └── npm.js ├── webrtc.common.js ├── custom.css └── jquery.cookie.js ├── LICENSE ├── speedtest ├── speedtest.scheduler.js └── speedtest.html ├── netperfmeter └── netperfmeter.scheduler.js ├── conformance-tests ├── testharness │ └── testharness.css └── datachannel_test │ ├── logging.js │ ├── helpfunctions.js │ ├── dctest_init.js │ ├── dctest_switcher.js │ └── dctest_connection.js ├── README.md ├── index.html ├── signaling ├── signaling.html └── signaling.js └── gyrocolor └── gyrocolor.html /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .project 3 | /nbproject/private/ -------------------------------------------------------------------------------- /common/check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/check.png -------------------------------------------------------------------------------- /common/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/error.png -------------------------------------------------------------------------------- /common/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/favicon.ico -------------------------------------------------------------------------------- /common/favicon/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/apple-icon.png -------------------------------------------------------------------------------- /common/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /common/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /common/favicon/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/favicon-96x96.png -------------------------------------------------------------------------------- /common/favicon/ms-icon-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/ms-icon-70x70.png -------------------------------------------------------------------------------- /common/favicon/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/apple-icon-57x57.png -------------------------------------------------------------------------------- /common/favicon/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/apple-icon-60x60.png -------------------------------------------------------------------------------- /common/favicon/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/apple-icon-72x72.png -------------------------------------------------------------------------------- /common/favicon/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/apple-icon-76x76.png -------------------------------------------------------------------------------- /common/favicon/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/ms-icon-144x144.png -------------------------------------------------------------------------------- /common/favicon/ms-icon-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/ms-icon-150x150.png -------------------------------------------------------------------------------- /common/favicon/ms-icon-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/ms-icon-310x310.png -------------------------------------------------------------------------------- /common/favicon/android-icon-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/android-icon-36x36.png -------------------------------------------------------------------------------- /common/favicon/android-icon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/android-icon-48x48.png -------------------------------------------------------------------------------- /common/favicon/android-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/android-icon-72x72.png -------------------------------------------------------------------------------- /common/favicon/android-icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/android-icon-96x96.png -------------------------------------------------------------------------------- /common/favicon/apple-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/apple-icon-114x114.png -------------------------------------------------------------------------------- /common/favicon/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/apple-icon-120x120.png -------------------------------------------------------------------------------- /common/favicon/apple-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/apple-icon-144x144.png -------------------------------------------------------------------------------- /common/favicon/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/apple-icon-152x152.png -------------------------------------------------------------------------------- /common/favicon/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/apple-icon-180x180.png -------------------------------------------------------------------------------- /common/highlight/styles/pojoaque.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/highlight/styles/pojoaque.jpg -------------------------------------------------------------------------------- /common/favicon/android-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/android-icon-144x144.png -------------------------------------------------------------------------------- /common/favicon/android-icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/android-icon-192x192.png -------------------------------------------------------------------------------- /common/highlight/styles/school_book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/highlight/styles/school_book.png -------------------------------------------------------------------------------- /common/favicon/apple-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/favicon/apple-icon-precomposed.png -------------------------------------------------------------------------------- /common/highlight/styles/brown_papersq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/highlight/styles/brown_papersq.png -------------------------------------------------------------------------------- /common/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /common/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /common/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /common/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Transport-Protocol/WebRTC-Data-Channel-Playground/master/common/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /common/favicon/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | #ffffff -------------------------------------------------------------------------------- /common/bootstrap/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /common/favicon/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "App", 3 | "icons": [ 4 | { 5 | "src": "\/android-icon-36x36.png", 6 | "sizes": "36x36", 7 | "type": "image\/png", 8 | "density": "0.75" 9 | }, 10 | { 11 | "src": "\/android-icon-48x48.png", 12 | "sizes": "48x48", 13 | "type": "image\/png", 14 | "density": "1.0" 15 | }, 16 | { 17 | "src": "\/android-icon-72x72.png", 18 | "sizes": "72x72", 19 | "type": "image\/png", 20 | "density": "1.5" 21 | }, 22 | { 23 | "src": "\/android-icon-96x96.png", 24 | "sizes": "96x96", 25 | "type": "image\/png", 26 | "density": "2.0" 27 | }, 28 | { 29 | "src": "\/android-icon-144x144.png", 30 | "sizes": "144x144", 31 | "type": "image\/png", 32 | "density": "3.0" 33 | }, 34 | { 35 | "src": "\/android-icon-192x192.png", 36 | "sizes": "192x192", 37 | "type": "image\/png", 38 | "density": "4.0" 39 | } 40 | ] 41 | } -------------------------------------------------------------------------------- /common/highlight/styles/androidstudio.css: -------------------------------------------------------------------------------- 1 | /* 2 | Date: 24 Fev 2015 3 | Author: Pedro Oliveira 4 | */ 5 | 6 | .hljs 7 | { 8 | color: #A9B7C6; 9 | background: #282b2e; 10 | display: block; 11 | overflow-x: auto; 12 | padding: 0.5em; 13 | webkit-text-size-adjust: none; 14 | } 15 | .hljs-number 16 | { 17 | color: #6897BB; 18 | } 19 | 20 | .hljs-keyword, .hljs-deletion 21 | { 22 | color: #CC7832; 23 | } 24 | .hljs-javadoc 25 | { 26 | color: #629755; 27 | } 28 | .hljs-comment 29 | { 30 | color: #808080; 31 | } 32 | .hljs-annotation 33 | { 34 | color: #BBB529; 35 | } 36 | .hljs-string, .hljs-addition 37 | { 38 | color: #6A8759; 39 | } 40 | .hljs-function .hljs-title, .hljs-change 41 | { 42 | color: #FFC66D; 43 | } 44 | .hljs-tag .hljs-title, .hljs-doctype 45 | { 46 | color: #E8BF6A; 47 | } 48 | .hljs-tag .hljs-attribute 49 | { 50 | color: #BABABA; 51 | } 52 | .hljs-tag .hljs-value 53 | { 54 | color: #A5C261; 55 | } 56 | -------------------------------------------------------------------------------- /common/highlight/styles/ascetic.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Original style from softwaremaniacs.org (c) Ivan Sagalaev 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: white; 12 | color: black; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-string, 17 | .hljs-tag .hljs-value, 18 | .hljs-filter .hljs-argument, 19 | .hljs-addition, 20 | .hljs-change, 21 | .hljs-name, 22 | .apache .hljs-tag, 23 | .apache .hljs-cbracket, 24 | .nginx .hljs-built_in, 25 | .tex .hljs-formula { 26 | color: #888; 27 | } 28 | 29 | .hljs-comment, 30 | .hljs-shebang, 31 | .hljs-doctype, 32 | .hljs-pi, 33 | .hljs-javadoc, 34 | .hljs-deletion, 35 | .apache .hljs-sqbracket { 36 | color: #ccc; 37 | } 38 | 39 | .hljs-keyword, 40 | .hljs-tag .hljs-title, 41 | .ini .hljs-title, 42 | .lisp .hljs-title, 43 | .http .hljs-title, 44 | .nginx .hljs-title, 45 | .css .hljs-tag, 46 | .hljs-winutils, 47 | .hljs-flow, 48 | .apache .hljs-tag, 49 | .tex .hljs-command, 50 | .hljs-request, 51 | .hljs-status { 52 | font-weight: bold; 53 | } 54 | -------------------------------------------------------------------------------- /common/highlight/styles/mono-blue.css: -------------------------------------------------------------------------------- 1 | /* 2 | Five-color theme from a single blue hue. 3 | */ 4 | .hljs { 5 | display: block; 6 | overflow-x: auto; 7 | padding: 0.5em; 8 | background: #eaeef3; 9 | -webkit-text-size-adjust: none; 10 | } 11 | 12 | .hljs, 13 | .hljs-list .hljs-built_in { 14 | color: #00193a; 15 | } 16 | 17 | .hljs-keyword, 18 | .hljs-title, 19 | .hljs-important, 20 | .hljs-request, 21 | .hljs-header, 22 | .hljs-javadoctag { 23 | font-weight: bold; 24 | } 25 | 26 | .hljs-comment, 27 | .hljs-chunk { 28 | color: #738191; 29 | } 30 | 31 | .hljs-string, 32 | .hljs-title, 33 | .hljs-parent, 34 | .hljs-built_in, 35 | .hljs-literal, 36 | .hljs-filename, 37 | .hljs-value, 38 | .hljs-addition, 39 | .hljs-tag, 40 | .hljs-argument, 41 | .hljs-link_label, 42 | .hljs-blockquote, 43 | .hljs-header, 44 | .hljs-name { 45 | color: #0048ab; 46 | } 47 | 48 | .hljs-decorator, 49 | .hljs-prompt, 50 | .hljs-yardoctag, 51 | .hljs-subst, 52 | .hljs-symbol, 53 | .hljs-doctype, 54 | .hljs-regexp, 55 | .hljs-preprocessor, 56 | .hljs-pragma, 57 | .hljs-pi, 58 | .hljs-attribute, 59 | .hljs-attr_selector, 60 | .hljs-javadoc, 61 | .hljs-xmlDocTag, 62 | .hljs-deletion, 63 | .hljs-shebang, 64 | .hljs-string .hljs-variable, 65 | .hljs-link_url, 66 | .hljs-bullet, 67 | .hljs-sqbracket, 68 | .hljs-phony { 69 | color: #4c81c9; 70 | } 71 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | /*- 2 | * Copyright (c) 2015 Daniel Richters, Peter Titz, Felix Weinrank 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions 7 | * are met: 8 | * 1. Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 2. Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * 14 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 | * SUCH DAMAGE. 25 | * 26 | */ -------------------------------------------------------------------------------- /common/highlight/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2006, Ivan Sagalaev 2 | All rights reserved. 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions are met: 5 | 6 | * Redistributions of source code must retain the above copyright 7 | notice, this list of conditions and the following disclaimer. 8 | * Redistributions in binary form must reproduce the above copyright 9 | notice, this list of conditions and the following disclaimer in the 10 | documentation and/or other materials provided with the distribution. 11 | * Neither the name of highlight.js nor the names of its contributors 12 | may be used to endorse or promote products derived from this software 13 | without specific prior written permission. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY 16 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY 19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | -------------------------------------------------------------------------------- /speedtest/speedtest.scheduler.js: -------------------------------------------------------------------------------- 1 | /*- 2 | * Copyright (c) 2015 Felix Weinrank 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions 7 | * are met: 8 | * 1. Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 2. Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * 14 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 | * SUCH DAMAGE. 25 | * 26 | */ 27 | 28 | onmessage = function(e) { 29 | if(e.data.sleep > 0) { 30 | setTimeout(function(){ 31 | postMessage(e.data); 32 | },e.data.sleep); 33 | } else { 34 | postMessage(e.data); 35 | } 36 | 37 | }; -------------------------------------------------------------------------------- /netperfmeter/netperfmeter.scheduler.js: -------------------------------------------------------------------------------- 1 | /*- 2 | * Copyright (c) 2015 Felix Weinrank 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions 7 | * are met: 8 | * 1. Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 2. Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * 14 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 | * SUCH DAMAGE. 25 | * 26 | */ 27 | 28 | onmessage = function(e) { 29 | if(e.data.sleep > 0) { 30 | setTimeout(function(){ 31 | postMessage(e.data); 32 | },e.data.sleep); 33 | } else { 34 | postMessage(e.data); 35 | } 36 | 37 | }; -------------------------------------------------------------------------------- /common/webrtc.common.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | // STUN, TURN Servers 4 | var iceServer = { 5 | iceServers : [ 6 | { 7 | urls : 'turn:turn1.nplab.de:3478', 8 | username: 'tiny', 9 | credential : 'turner' 10 | }, { 11 | urls : 'turn:turn2.nplab.de:3478', 12 | username: 'tiny', 13 | credential : 'turner' 14 | }, { 15 | urls : 'stun:stun.l.google.com:19302' 16 | }, { 17 | urls : 'stun:stun1.l.google.com:19302' 18 | }, { 19 | urls : 'stun:stun2.l.google.com:19302' 20 | }, { 21 | urls : 'stun:stun3.l.google.com:19302' 22 | }, { 23 | urls : 'stun:stun4.l.google.com:19302' 24 | }] 25 | }; 26 | 27 | // find and return an IPv4 Address from a given string 28 | function extractIpFromString(string) { 29 | var pattern = '(?:25[0-5]|2[0-4][0-9]|1?[0-9][0-9]{1,2}|[0-9]){1,}(?:\\.(?:25[0-5]|2[0-4][0-9]|1?[0-9]{1,2}|0)){3}'; 30 | 31 | var match = string.match(pattern); 32 | return match ? match[0] : false; 33 | } 34 | 35 | var PeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; 36 | var IceCandidate = window.mozRTCIceCandidate || window.RTCIceCandidate; 37 | var SessionDescription = window.RTCSessionDescription || window.mozRTCSessionDescription || window.RTCSessionDescription; 38 | 39 | // generate a unique-ish string for storage in firebase 40 | function generateSignalingId() { 41 | return (Math.random() * 10000| 0).toString(); 42 | } 43 | 44 | if(!browsercheck()) { 45 | 46 | } 47 | 48 | function browsercheck() { 49 | try { 50 | var pc = new PeerConnection(iceServer); 51 | var dc = pc.createDataChannel('control'); 52 | return true; 53 | 54 | } catch(err) { 55 | console.log('Browser does not support WebRTC!'); 56 | $('div.main').html('
Your Browser does not support WebRTC!
'); 57 | return false; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /common/highlight/styles/codepen-embed.css: -------------------------------------------------------------------------------- 1 | /* 2 | codepen.io Embed Theme 3 | Author: Justin Perry 4 | Original theme - https://github.com/chriskempson/tomorrow-theme 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #222; 12 | color: #fff; 13 | font-family: Menlo, Monaco, 'Andale Mono', 'Lucida Console', 'Courier New', monospace; 14 | -webkit-text-size-adjust: none; 15 | } 16 | 17 | .hljs-comment, 18 | .hljs-title { 19 | color: #777; 20 | } 21 | 22 | .hljs-variable, 23 | .hljs-attribute, 24 | .hljs-tag, 25 | .hljs-regexp, 26 | .hljs-name, 27 | .ruby .constant, 28 | .xml .tag .title, 29 | .xml .pi, 30 | .xml .doctype, 31 | .html .doctype { 32 | color: #ab875d; 33 | } 34 | 35 | .css .value { 36 | color: #cd6a51; 37 | } 38 | 39 | .css .value .function, 40 | .css .value .string { 41 | color: #a67f59; 42 | } 43 | 44 | .css .value .number { 45 | color: #9b869c; 46 | } 47 | 48 | .css .id, 49 | .css .class, 50 | .css-pseudo, 51 | .css .selector, 52 | .css .tag { 53 | color: #dfc48c; 54 | } 55 | 56 | .hljs-number, 57 | .hljs-preprocessor, 58 | .hljs-built_in, 59 | .hljs-literal, 60 | .hljs-params, 61 | .hljs-constant { 62 | color: #ab875d; 63 | } 64 | 65 | .ruby .class .title, 66 | .css .rules .attribute { 67 | color: #9b869b; 68 | } 69 | 70 | .hljs-string, 71 | .hljs-value, 72 | .hljs-inheritance, 73 | .hljs-header, 74 | .ruby .symbol, 75 | .xml .cdata { 76 | color: #8f9c6c; 77 | } 78 | 79 | .css .hexcolor { 80 | color: #cd6a51; 81 | } 82 | 83 | .function, 84 | .python .decorator, 85 | .python .title, 86 | .ruby .function .title, 87 | .ruby .title .keyword, 88 | .perl .sub, 89 | .javascript .title, 90 | .coffeescript .title { 91 | color: #fff; 92 | } 93 | 94 | .hljs-keyword, 95 | .javascript .function { 96 | color: #8f9c6c; 97 | } 98 | -------------------------------------------------------------------------------- /conformance-tests/testharness/testharness.css: -------------------------------------------------------------------------------- 1 | html { 2 | font-family:DejaVu Sans, Bitstream Vera Sans, Arial, Sans; 3 | } 4 | 5 | #log .warning, 6 | #log .warning a { 7 | color: black; 8 | background: yellow; 9 | } 10 | 11 | #log .error, 12 | #log .error a { 13 | color: white; 14 | background: red; 15 | } 16 | 17 | #log pre { 18 | border: 1px solid black; 19 | padding: 1em; 20 | } 21 | 22 | section#summary { 23 | margin-bottom:1em; 24 | } 25 | 26 | table#results { 27 | border-collapse:collapse; 28 | table-layout:fixed; 29 | width:100%; 30 | } 31 | 32 | table#results th:first-child, 33 | table#results td:first-child { 34 | width:4em; 35 | } 36 | 37 | table#results th:last-child, 38 | table#results td:last-child { 39 | width:50%; 40 | } 41 | 42 | table#results.assertions th:last-child, 43 | table#results.assertions td:last-child { 44 | width:35%; 45 | } 46 | 47 | table#results th { 48 | padding:0; 49 | padding-bottom:0.5em; 50 | border-bottom:medium solid black; 51 | } 52 | 53 | table#results td { 54 | padding:1em; 55 | padding-bottom:0.5em; 56 | border-bottom:thin solid black; 57 | } 58 | 59 | tr.pass > td:first-child { 60 | color:green; 61 | } 62 | 63 | tr.fail > td:first-child { 64 | color:red; 65 | } 66 | 67 | tr.timeout > td:first-child { 68 | color:red; 69 | } 70 | 71 | tr.notrun > td:first-child { 72 | color:blue; 73 | } 74 | 75 | .pass > td:first-child, .fail > td:first-child, .timeout > td:first-child, .notrun > td:first-child { 76 | font-variant:small-caps; 77 | } 78 | 79 | table#results span { 80 | display:block; 81 | } 82 | 83 | table#results span.expected { 84 | font-family:DejaVu Sans Mono, Bitstream Vera Sans Mono, Monospace; 85 | white-space:pre; 86 | } 87 | 88 | table#results span.actual { 89 | font-family:DejaVu Sans Mono, Bitstream Vera Sans Mono, Monospace; 90 | white-space:pre; 91 | } 92 | 93 | -------------------------------------------------------------------------------- /common/highlight/styles/tomorrow.css: -------------------------------------------------------------------------------- 1 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 2 | 3 | /* Tomorrow Comment */ 4 | .hljs-comment { 5 | color: #8e908c; 6 | } 7 | 8 | /* Tomorrow Red */ 9 | .hljs-variable, 10 | .hljs-attribute, 11 | .hljs-tag, 12 | .hljs-regexp, 13 | .ruby .hljs-constant, 14 | .xml .hljs-tag .hljs-title, 15 | .xml .hljs-pi, 16 | .xml .hljs-doctype, 17 | .html .hljs-doctype, 18 | .css .hljs-id, 19 | .css .hljs-class, 20 | .css .hljs-pseudo { 21 | color: #c82829; 22 | } 23 | 24 | /* Tomorrow Orange */ 25 | .hljs-number, 26 | .hljs-preprocessor, 27 | .hljs-pragma, 28 | .hljs-built_in, 29 | .hljs-literal, 30 | .hljs-params, 31 | .hljs-constant { 32 | color: #f5871f; 33 | } 34 | 35 | /* Tomorrow Yellow */ 36 | .ruby .hljs-class .hljs-title, 37 | .css .hljs-rule .hljs-attribute { 38 | color: #eab700; 39 | } 40 | 41 | /* Tomorrow Green */ 42 | .hljs-string, 43 | .hljs-value, 44 | .hljs-inheritance, 45 | .hljs-header, 46 | .hljs-name, 47 | .ruby .hljs-symbol, 48 | .xml .hljs-cdata { 49 | color: #718c00; 50 | } 51 | 52 | /* Tomorrow Aqua */ 53 | .hljs-title, 54 | .css .hljs-hexcolor { 55 | color: #3e999f; 56 | } 57 | 58 | /* Tomorrow Blue */ 59 | .hljs-function, 60 | .python .hljs-decorator, 61 | .python .hljs-title, 62 | .ruby .hljs-function .hljs-title, 63 | .ruby .hljs-title .hljs-keyword, 64 | .perl .hljs-sub, 65 | .javascript .hljs-title, 66 | .coffeescript .hljs-title { 67 | color: #4271ae; 68 | } 69 | 70 | /* Tomorrow Purple */ 71 | .hljs-keyword, 72 | .javascript .hljs-function { 73 | color: #8959a8; 74 | } 75 | 76 | .hljs { 77 | display: block; 78 | overflow-x: auto; 79 | background: white; 80 | color: #4d4d4c; 81 | padding: 0.5em; 82 | -webkit-text-size-adjust: none; 83 | } 84 | 85 | .coffeescript .javascript, 86 | .javascript .xml, 87 | .tex .hljs-formula, 88 | .xml .javascript, 89 | .xml .vbscript, 90 | .xml .css, 91 | .xml .hljs-cdata { 92 | opacity: 0.5; 93 | } 94 | -------------------------------------------------------------------------------- /common/highlight/styles/paraiso.dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | Paraíso (dark) 3 | Created by Jan T. Sott (http://github.com/idleberg) 4 | Inspired by the art of Rubens LP (http://www.rubenslp.com.br) 5 | */ 6 | 7 | /* Paraíso Comment */ 8 | .hljs-comment, 9 | .hljs-title { 10 | color: #8d8687; 11 | } 12 | 13 | /* Paraíso Red */ 14 | .hljs-variable, 15 | .hljs-attribute, 16 | .hljs-tag, 17 | .hljs-regexp, 18 | .hljs-name, 19 | .ruby .hljs-constant, 20 | .xml .hljs-tag .hljs-title, 21 | .xml .hljs-pi, 22 | .xml .hljs-doctype, 23 | .html .hljs-doctype, 24 | .css .hljs-id, 25 | .css .hljs-class, 26 | .css .hljs-pseudo { 27 | color: #ef6155; 28 | } 29 | 30 | /* Paraíso Orange */ 31 | .hljs-number, 32 | .hljs-preprocessor, 33 | .hljs-built_in, 34 | .hljs-literal, 35 | .hljs-params, 36 | .hljs-constant { 37 | color: #f99b15; 38 | } 39 | 40 | /* Paraíso Yellow */ 41 | .ruby .hljs-class .hljs-title, 42 | .css .hljs-rule .hljs-attribute { 43 | color: #fec418; 44 | } 45 | 46 | /* Paraíso Green */ 47 | .hljs-string, 48 | .hljs-value, 49 | .hljs-inheritance, 50 | .hljs-header, 51 | .ruby .hljs-symbol, 52 | .xml .hljs-cdata { 53 | color: #48b685; 54 | } 55 | 56 | /* Paraíso Aqua */ 57 | .css .hljs-hexcolor { 58 | color: #5bc4bf; 59 | } 60 | 61 | /* Paraíso Blue */ 62 | .hljs-function, 63 | .python .hljs-decorator, 64 | .python .hljs-title, 65 | .ruby .hljs-function .hljs-title, 66 | .ruby .hljs-title .hljs-keyword, 67 | .perl .hljs-sub, 68 | .javascript .hljs-title, 69 | .coffeescript .hljs-title { 70 | color: #06b6ef; 71 | } 72 | 73 | /* Paraíso Purple */ 74 | .hljs-keyword, 75 | .javascript .hljs-function { 76 | color: #815ba4; 77 | } 78 | 79 | .hljs { 80 | display: block; 81 | overflow-x: auto; 82 | background: #2f1e2e; 83 | color: #a39e9b; 84 | padding: 0.5em; 85 | -webkit-text-size-adjust: none; 86 | } 87 | 88 | .coffeescript .javascript, 89 | .javascript .xml, 90 | .tex .hljs-formula, 91 | .xml .javascript, 92 | .xml .vbscript, 93 | .xml .css, 94 | .xml .hljs-cdata { 95 | opacity: 0.5; 96 | } 97 | -------------------------------------------------------------------------------- /common/highlight/styles/paraiso.light.css: -------------------------------------------------------------------------------- 1 | /* 2 | Paraíso (light) 3 | Created by Jan T. Sott (http://github.com/idleberg) 4 | Inspired by the art of Rubens LP (http://www.rubenslp.com.br) 5 | */ 6 | 7 | /* Paraíso Comment */ 8 | .hljs-comment, 9 | .hljs-title { 10 | color: #776e71; 11 | } 12 | 13 | /* Paraíso Red */ 14 | .hljs-variable, 15 | .hljs-attribute, 16 | .hljs-tag, 17 | .hljs-regexp, 18 | .hljs-name, 19 | .ruby .hljs-constant, 20 | .xml .hljs-tag .hljs-title, 21 | .xml .hljs-pi, 22 | .xml .hljs-doctype, 23 | .html .hljs-doctype, 24 | .css .hljs-id, 25 | .css .hljs-class, 26 | .css .hljs-pseudo { 27 | color: #ef6155; 28 | } 29 | 30 | /* Paraíso Orange */ 31 | .hljs-number, 32 | .hljs-preprocessor, 33 | .hljs-built_in, 34 | .hljs-literal, 35 | .hljs-params, 36 | .hljs-constant { 37 | color: #f99b15; 38 | } 39 | 40 | /* Paraíso Yellow */ 41 | .ruby .hljs-class .hljs-title, 42 | .css .hljs-rule .hljs-attribute { 43 | color: #fec418; 44 | } 45 | 46 | /* Paraíso Green */ 47 | .hljs-string, 48 | .hljs-value, 49 | .hljs-inheritance, 50 | .hljs-header, 51 | .ruby .hljs-symbol, 52 | .xml .hljs-cdata { 53 | color: #48b685; 54 | } 55 | 56 | /* Paraíso Aqua */ 57 | .css .hljs-hexcolor { 58 | color: #5bc4bf; 59 | } 60 | 61 | /* Paraíso Blue */ 62 | .hljs-function, 63 | .python .hljs-decorator, 64 | .python .hljs-title, 65 | .ruby .hljs-function .hljs-title, 66 | .ruby .hljs-title .hljs-keyword, 67 | .perl .hljs-sub, 68 | .javascript .hljs-title, 69 | .coffeescript .hljs-title { 70 | color: #06b6ef; 71 | } 72 | 73 | /* Paraíso Purple */ 74 | .hljs-keyword, 75 | .javascript .hljs-function { 76 | color: #815ba4; 77 | } 78 | 79 | .hljs { 80 | display: block; 81 | overflow-x: auto; 82 | background: #e7e9db; 83 | color: #4f424c; 84 | padding: 0.5em; 85 | -webkit-text-size-adjust: none; 86 | } 87 | 88 | .coffeescript .javascript, 89 | .javascript .xml, 90 | .tex .hljs-formula, 91 | .xml .javascript, 92 | .xml .vbscript, 93 | .xml .css, 94 | .xml .hljs-cdata { 95 | opacity: 0.5; 96 | } 97 | -------------------------------------------------------------------------------- /common/highlight/styles/vs.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Visual Studio-like style based on original C# coloring by Jason Diamond 4 | 5 | */ 6 | .hljs { 7 | display: block; 8 | overflow-x: auto; 9 | padding: 0.5em; 10 | background: white; 11 | color: black; 12 | -webkit-text-size-adjust: none; 13 | } 14 | 15 | .hljs-comment, 16 | .hljs-annotation, 17 | .diff .hljs-header, 18 | .hljs-chunk, 19 | .apache .hljs-cbracket { 20 | color: #008000; 21 | } 22 | 23 | .hljs-keyword, 24 | .hljs-id, 25 | .hljs-built_in,.css 26 | .smalltalk .hljs-class, 27 | .hljs-winutils, 28 | .bash .hljs-variable, 29 | .tex .hljs-command, 30 | .hljs-request, 31 | .hljs-status, 32 | .nginx .hljs-title, 33 | .xml .hljs-tag, 34 | .xml .hljs-tag .hljs-value { 35 | color: #00f; 36 | } 37 | 38 | .hljs-string, 39 | .hljs-title, 40 | .hljs-parent, 41 | .hljs-tag .hljs-value, 42 | .hljs-rule .hljs-value, 43 | .ruby .hljs-symbol, 44 | .ruby .hljs-symbol .hljs-string, 45 | .hljs-template_tag, 46 | .django .hljs-variable, 47 | .hljs-addition, 48 | .hljs-flow, 49 | .hljs-stream, 50 | .apache .hljs-tag, 51 | .hljs-date, 52 | .tex .hljs-formula, 53 | .coffeescript .hljs-attribute, 54 | .hljs-name { 55 | color: #a31515; 56 | } 57 | 58 | .ruby .hljs-string, 59 | .hljs-decorator, 60 | .hljs-filter .hljs-argument, 61 | .hljs-localvars, 62 | .hljs-array, 63 | .hljs-attr_selector, 64 | .hljs-pseudo, 65 | .hljs-pi, 66 | .hljs-doctype, 67 | .hljs-deletion, 68 | .hljs-envvar, 69 | .hljs-shebang, 70 | .hljs-preprocessor, 71 | .hljs-pragma, 72 | .userType, 73 | .apache .hljs-sqbracket, 74 | .nginx .hljs-built_in, 75 | .tex .hljs-special, 76 | .hljs-prompt { 77 | color: #2b91af; 78 | } 79 | 80 | .hljs-phpdoc, 81 | .hljs-dartdoc, 82 | .hljs-javadoc, 83 | .hljs-xmlDocTag { 84 | color: #808080; 85 | } 86 | 87 | .hljs-type, 88 | .hljs-typename { font-weight: bold; } 89 | 90 | .vhdl .hljs-string { color: #666666; } 91 | .vhdl .hljs-literal { color: #a31515; } 92 | .vhdl .hljs-attribute { color: #00b0e8; } 93 | 94 | .xml .hljs-attribute { color: #f00; } 95 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # WebRTC Data Channel Playground 2 | This playground contains testing tools for WebRTC Data Channels. Some are useful for measurements, some are demos and some may not work. 3 | 4 | ## Our Tools 5 | ### [Netperfmeter](https://rawgit.com/nplab/WebRTC-Datachannel-Playground/master/netperfmeter/netperfmeter.html) 6 | Netperfmeter is a perfomance meter for the WebRTC Data Channels. It simultaneously transmits unidirectional data via Data Channels to a peer and measures the resulting bandwith for each Data Channel. 7 | 8 | Each Data Channel can be configured seperately. 9 | 10 | This tool is port of Thomas Dreibholz's [Netperfmeter](https://www.uni-due.de/~be0001/netperfmeter/). 11 | 12 | ### [Browsertests](https://rawgit.com/nplab/WebRTC-Datachannel-Playground/master/conformance-tests/conformance-tests.html) 13 | Browsertests check the implementation of WebRTC Data Channels via a collection of tests according to the [W3C Specification](http://www.w3.org/TR/webrtc/). 14 | 15 | ### [Stresstest](https://rawgit.com/nplab/WebRTC-Datachannel-Playground/master/stresstest/stresstest.html) 16 | Stresstest to create multiple local Peer-Connections containing multiple Data Channels which are sending messages. 17 | 18 | ### [Gyrocolor](https://rawgit.com/nplab/WebRTC-Datachannel-Playground/master/gyrocolor/gyrocolor.html) 19 | If available, the client changes the servers background color in dependence of its gyro-sensor values. 20 | 21 | ### [Speedtest](https://rawgit.com/nplab/WebRTC-Datachannel-Playground/master/speedtest/speedtest.html) 22 | Speedtest - runtime and message-size are configurable. 23 | 24 | ## Trace with Wireshark 25 | You can trace and analyze traffic with Wireshark on Firefox and Chrome (nightly) - [tutorial is here](https://github.com/nplab/WebRTC-Data-Channel-Playground/wiki/Analyze-Data-Channel-traffic-with-Wireshark). 26 | 27 | ## Contact & Feedback 28 | We like feedback! :) 29 | Feel free to report bugs or ideas to us! 30 | 31 | Project maintainer:
Felix Weinrank - weinrank@fh-muenster.de 32 | 33 | 34 | -------------------------------------------------------------------------------- /common/highlight/styles/kimbie.dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | Name: Kimbie (dark) 3 | Author: Jan T. Sott 4 | License: Creative Commons Attribution-ShareAlike 4.0 Unported License 5 | URL: https://github.com/idleberg/Kimbie-highlight.js 6 | */ 7 | 8 | /* Kimbie Comment */ 9 | .hljs-comment, 10 | .hljs-title { 11 | color: #d6baad; 12 | } 13 | 14 | /* Kimbie Red */ 15 | .hljs-variable, 16 | .hljs-attribute, 17 | .hljs-tag, 18 | .hljs-regexp, 19 | .hljs-name, 20 | .ruby .hljs-constant, 21 | .xml .hljs-tag .hljs-title, 22 | .xml .hljs-pi, 23 | .xml .hljs-doctype, 24 | .html .hljs-doctype, 25 | .css .hljs-id, 26 | .css .hljs-class, 27 | .css .hljs-pseudo { 28 | color: #dc3958; 29 | } 30 | 31 | /* Kimbie Orange */ 32 | .hljs-number, 33 | .hljs-preprocessor, 34 | .hljs-built_in, 35 | .hljs-literal, 36 | .hljs-params, 37 | .hljs-constant { 38 | color: #f79a32; 39 | } 40 | 41 | /* Kimbie Yellow */ 42 | .ruby .hljs-class .hljs-title, 43 | .css .hljs-rule .hljs-attribute { 44 | color: #f06431; 45 | } 46 | 47 | /* Kimbie Green */ 48 | .hljs-string, 49 | .hljs-value, 50 | .hljs-inheritance, 51 | .hljs-header, 52 | .ruby .hljs-symbol, 53 | .xml .hljs-cdata { 54 | color: #889b4a; 55 | } 56 | 57 | /* Kimbie Aqua */ 58 | .css .hljs-hexcolor { 59 | color: #088649; 60 | } 61 | 62 | /* Kimbie Blue */ 63 | .hljs-function, 64 | .python .hljs-decorator, 65 | .python .hljs-title, 66 | .ruby .hljs-function .hljs-title, 67 | .ruby .hljs-title .hljs-keyword, 68 | .perl .hljs-sub, 69 | .javascript .hljs-title, 70 | .coffeescript .hljs-title { 71 | color: #8ab1b0; 72 | } 73 | 74 | /* Kimbie Purple */ 75 | .hljs-keyword, 76 | .javascript .hljs-function { 77 | color: #98676a; 78 | } 79 | 80 | .hljs { 81 | display: block; 82 | overflow-x: auto; 83 | background: #221a0f; 84 | color: #d3af86; 85 | padding: 0.5em; 86 | -webkit-text-size-adjust: none; 87 | } 88 | 89 | .coffeescript .javascript, 90 | .javascript .xml, 91 | .tex .hljs-formula, 92 | .xml .javascript, 93 | .xml .vbscript, 94 | .xml .css, 95 | .xml .hljs-cdata { 96 | opacity: 0.5; 97 | } 98 | -------------------------------------------------------------------------------- /common/highlight/styles/kimbie.light.css: -------------------------------------------------------------------------------- 1 | /* 2 | Name: Kimbie (light) 3 | Author: Jan T. Sott 4 | License: Creative Commons Attribution-ShareAlike 4.0 Unported License 5 | URL: https://github.com/idleberg/Kimbie-highlight.js 6 | */ 7 | 8 | /* Kimbie Comment */ 9 | .hljs-comment, 10 | .hljs-title { 11 | color: #a57a4c; 12 | } 13 | 14 | /* Kimbie Red */ 15 | .hljs-variable, 16 | .hljs-attribute, 17 | .hljs-tag, 18 | .hljs-regexp, 19 | .hljs-name, 20 | .ruby .hljs-constant, 21 | .xml .hljs-tag .hljs-title, 22 | .xml .hljs-pi, 23 | .xml .hljs-doctype, 24 | .html .hljs-doctype, 25 | .css .hljs-id, 26 | .css .hljs-class, 27 | .css .hljs-pseudo { 28 | color: #dc3958; 29 | } 30 | 31 | /* Kimbie Orange */ 32 | .hljs-number, 33 | .hljs-preprocessor, 34 | .hljs-built_in, 35 | .hljs-literal, 36 | .hljs-params, 37 | .hljs-constant { 38 | color: #f79a32; 39 | } 40 | 41 | /* Kimbie Yellow */ 42 | .ruby .hljs-class .hljs-title, 43 | .css .hljs-rule .hljs-attribute { 44 | color: #f06431; 45 | } 46 | 47 | /* Kimbie Green */ 48 | .hljs-string, 49 | .hljs-value, 50 | .hljs-inheritance, 51 | .hljs-header, 52 | .ruby .hljs-symbol, 53 | .xml .hljs-cdata { 54 | color: #889b4a; 55 | } 56 | 57 | /* Kimbie Aqua */ 58 | .css .hljs-hexcolor { 59 | color: #088649; 60 | } 61 | 62 | /* Kimbie Blue */ 63 | .hljs-function, 64 | .python .hljs-decorator, 65 | .python .hljs-title, 66 | .ruby .hljs-function .hljs-title, 67 | .ruby .hljs-title .hljs-keyword, 68 | .perl .hljs-sub, 69 | .javascript .hljs-title, 70 | .coffeescript .hljs-title { 71 | color: #8ab1b0; 72 | } 73 | 74 | /* Kimbie Purple */ 75 | .hljs-keyword, 76 | .javascript .hljs-function { 77 | color: #98676a; 78 | } 79 | 80 | .hljs { 81 | display: block; 82 | overflow-x: auto; 83 | background: #fbebd4; 84 | color: #84613d; 85 | padding: 0.5em; 86 | -webkit-text-size-adjust: none; 87 | } 88 | 89 | .coffeescript .javascript, 90 | .javascript .xml, 91 | .tex .hljs-formula, 92 | .xml .javascript, 93 | .xml .vbscript, 94 | .xml .css, 95 | .xml .hljs-cdata { 96 | opacity: 0.5; 97 | } 98 | -------------------------------------------------------------------------------- /common/highlight/styles/tomorrow-night-bright.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Night Bright Theme */ 2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 3 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 4 | 5 | /* Tomorrow Comment */ 6 | .hljs-comment { 7 | color: #969896; 8 | } 9 | 10 | /* Tomorrow Red */ 11 | .hljs-variable, 12 | .hljs-attribute, 13 | .hljs-tag, 14 | .hljs-regexp, 15 | .ruby .hljs-constant, 16 | .xml .hljs-tag .hljs-title, 17 | .xml .hljs-pi, 18 | .xml .hljs-doctype, 19 | .html .hljs-doctype, 20 | .css .hljs-id, 21 | .css .hljs-class, 22 | .css .hljs-pseudo { 23 | color: #d54e53; 24 | } 25 | 26 | /* Tomorrow Orange */ 27 | .hljs-number, 28 | .hljs-preprocessor, 29 | .hljs-pragma, 30 | .hljs-built_in, 31 | .hljs-literal, 32 | .hljs-params, 33 | .hljs-constant { 34 | color: #e78c45; 35 | } 36 | 37 | /* Tomorrow Yellow */ 38 | .ruby .hljs-class .hljs-title, 39 | .css .hljs-rule .hljs-attribute { 40 | color: #e7c547; 41 | } 42 | 43 | /* Tomorrow Green */ 44 | .hljs-string, 45 | .hljs-value, 46 | .hljs-inheritance, 47 | .hljs-header, 48 | .hljs-name, 49 | .ruby .hljs-symbol, 50 | .xml .hljs-cdata { 51 | color: #b9ca4a; 52 | } 53 | 54 | /* Tomorrow Aqua */ 55 | .hljs-title, 56 | .css .hljs-hexcolor { 57 | color: #70c0b1; 58 | } 59 | 60 | /* Tomorrow Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #7aa6da; 70 | } 71 | 72 | /* Tomorrow Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #c397d8; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: black; 82 | color: #eaeaea; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /common/highlight/styles/tomorrow-night-eighties.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Night Eighties Theme */ 2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 3 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 4 | 5 | /* Tomorrow Comment */ 6 | .hljs-comment { 7 | color: #999999; 8 | } 9 | 10 | /* Tomorrow Red */ 11 | .hljs-variable, 12 | .hljs-attribute, 13 | .hljs-tag, 14 | .hljs-regexp, 15 | .ruby .hljs-constant, 16 | .xml .hljs-tag .hljs-title, 17 | .xml .hljs-pi, 18 | .xml .hljs-doctype, 19 | .html .hljs-doctype, 20 | .css .hljs-id, 21 | .css .hljs-class, 22 | .css .hljs-pseudo { 23 | color: #f2777a; 24 | } 25 | 26 | /* Tomorrow Orange */ 27 | .hljs-number, 28 | .hljs-preprocessor, 29 | .hljs-pragma, 30 | .hljs-built_in, 31 | .hljs-literal, 32 | .hljs-params, 33 | .hljs-constant { 34 | color: #f99157; 35 | } 36 | 37 | /* Tomorrow Yellow */ 38 | .ruby .hljs-class .hljs-title, 39 | .css .hljs-rule .hljs-attribute { 40 | color: #ffcc66; 41 | } 42 | 43 | /* Tomorrow Green */ 44 | .hljs-string, 45 | .hljs-value, 46 | .hljs-inheritance, 47 | .hljs-header, 48 | .hljs-name, 49 | .ruby .hljs-symbol, 50 | .xml .hljs-cdata { 51 | color: #99cc99; 52 | } 53 | 54 | /* Tomorrow Aqua */ 55 | .hljs-title, 56 | .css .hljs-hexcolor { 57 | color: #66cccc; 58 | } 59 | 60 | /* Tomorrow Blue */ 61 | .hljs-function, 62 | .python .hljs-decorator, 63 | .python .hljs-title, 64 | .ruby .hljs-function .hljs-title, 65 | .ruby .hljs-title .hljs-keyword, 66 | .perl .hljs-sub, 67 | .javascript .hljs-title, 68 | .coffeescript .hljs-title { 69 | color: #6699cc; 70 | } 71 | 72 | /* Tomorrow Purple */ 73 | .hljs-keyword, 74 | .javascript .hljs-function { 75 | color: #cc99cc; 76 | } 77 | 78 | .hljs { 79 | display: block; 80 | overflow-x: auto; 81 | background: #2d2d2d; 82 | color: #cccccc; 83 | padding: 0.5em; 84 | -webkit-text-size-adjust: none; 85 | } 86 | 87 | .coffeescript .javascript, 88 | .javascript .xml, 89 | .tex .hljs-formula, 90 | .xml .javascript, 91 | .xml .vbscript, 92 | .xml .css, 93 | .xml .hljs-cdata { 94 | opacity: 0.5; 95 | } 96 | -------------------------------------------------------------------------------- /common/highlight/styles/atelier-dune.dark.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Dune Dark - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | 5 | /* Atelier-Dune Comment */ 6 | .hljs-comment { 7 | color: #999580; 8 | } 9 | 10 | /* Atelier-Dune Red */ 11 | .hljs-variable, 12 | .hljs-attribute, 13 | .hljs-tag, 14 | .hljs-regexp, 15 | .hljs-name, 16 | .ruby .hljs-constant, 17 | .xml .hljs-tag .hljs-title, 18 | .xml .hljs-pi, 19 | .xml .hljs-doctype, 20 | .html .hljs-doctype, 21 | .css .hljs-id, 22 | .css .hljs-class, 23 | .css .hljs-pseudo { 24 | color: #d73737; 25 | } 26 | 27 | /* Atelier-Dune Orange */ 28 | .hljs-number, 29 | .hljs-preprocessor, 30 | .hljs-built_in, 31 | .hljs-literal, 32 | .hljs-params, 33 | .hljs-constant { 34 | color: #b65611; 35 | } 36 | 37 | /* Atelier-Dune Yellow */ 38 | .ruby .hljs-class .hljs-title, 39 | .css .hljs-rule .hljs-attribute { 40 | color: #ae9513; 41 | } 42 | 43 | /* Atelier-Dune Green */ 44 | .hljs-string, 45 | .hljs-value, 46 | .hljs-inheritance, 47 | .hljs-header, 48 | .ruby .hljs-symbol, 49 | .xml .hljs-cdata { 50 | color: #60ac39; 51 | } 52 | 53 | /* Atelier-Dune Aqua */ 54 | .hljs-title, 55 | .css .hljs-hexcolor { 56 | color: #1fad83; 57 | } 58 | 59 | /* Atelier-Dune Blue */ 60 | .hljs-function, 61 | .python .hljs-decorator, 62 | .python .hljs-title, 63 | .ruby .hljs-function .hljs-title, 64 | .ruby .hljs-title .hljs-keyword, 65 | .perl .hljs-sub, 66 | .javascript .hljs-title, 67 | .coffeescript .hljs-title { 68 | color: #6684e1; 69 | } 70 | 71 | /* Atelier-Dune Purple */ 72 | .hljs-keyword, 73 | .javascript .hljs-function { 74 | color: #b854d4; 75 | } 76 | 77 | .hljs { 78 | display: block; 79 | overflow-x: auto; 80 | background: #20201d; 81 | color: #a6a28c; 82 | padding: 0.5em; 83 | -webkit-text-size-adjust: none; 84 | } 85 | 86 | .coffeescript .javascript, 87 | .javascript .xml, 88 | .tex .hljs-formula, 89 | .xml .javascript, 90 | .xml .vbscript, 91 | .xml .css, 92 | .xml .hljs-cdata { 93 | opacity: 0.5; 94 | } 95 | -------------------------------------------------------------------------------- /common/highlight/styles/atelier-dune.light.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Dune Light - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | 5 | /* Atelier-Dune Comment */ 6 | .hljs-comment { 7 | color: #7d7a68; 8 | } 9 | 10 | /* Atelier-Dune Red */ 11 | .hljs-variable, 12 | .hljs-attribute, 13 | .hljs-tag, 14 | .hljs-regexp, 15 | .hljs-name, 16 | .ruby .hljs-constant, 17 | .xml .hljs-tag .hljs-title, 18 | .xml .hljs-pi, 19 | .xml .hljs-doctype, 20 | .html .hljs-doctype, 21 | .css .hljs-id, 22 | .css .hljs-class, 23 | .css .hljs-pseudo { 24 | color: #d73737; 25 | } 26 | 27 | /* Atelier-Dune Orange */ 28 | .hljs-number, 29 | .hljs-preprocessor, 30 | .hljs-built_in, 31 | .hljs-literal, 32 | .hljs-params, 33 | .hljs-constant { 34 | color: #b65611; 35 | } 36 | 37 | /* Atelier-Dune Yellow */ 38 | .ruby .hljs-class .hljs-title, 39 | .css .hljs-rule .hljs-attribute { 40 | color: #ae9513; 41 | } 42 | 43 | /* Atelier-Dune Green */ 44 | .hljs-string, 45 | .hljs-value, 46 | .hljs-inheritance, 47 | .hljs-header, 48 | .ruby .hljs-symbol, 49 | .xml .hljs-cdata { 50 | color: #60ac39; 51 | } 52 | 53 | /* Atelier-Dune Aqua */ 54 | .hljs-title, 55 | .css .hljs-hexcolor { 56 | color: #1fad83; 57 | } 58 | 59 | /* Atelier-Dune Blue */ 60 | .hljs-function, 61 | .python .hljs-decorator, 62 | .python .hljs-title, 63 | .ruby .hljs-function .hljs-title, 64 | .ruby .hljs-title .hljs-keyword, 65 | .perl .hljs-sub, 66 | .javascript .hljs-title, 67 | .coffeescript .hljs-title { 68 | color: #6684e1; 69 | } 70 | 71 | /* Atelier-Dune Purple */ 72 | .hljs-keyword, 73 | .javascript .hljs-function { 74 | color: #b854d4; 75 | } 76 | 77 | .hljs { 78 | display: block; 79 | overflow-x: auto; 80 | background: #fefbec; 81 | color: #6e6b5e; 82 | padding: 0.5em; 83 | -webkit-text-size-adjust: none; 84 | } 85 | 86 | .coffeescript .javascript, 87 | .javascript .xml, 88 | .tex .hljs-formula, 89 | .xml .javascript, 90 | .xml .vbscript, 91 | .xml .css, 92 | .xml .hljs-cdata { 93 | opacity: 0.5; 94 | } 95 | -------------------------------------------------------------------------------- /common/highlight/styles/tomorrow-night.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Night Theme */ 2 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 3 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 4 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 5 | 6 | /* Tomorrow Comment */ 7 | .hljs-comment { 8 | color: #969896; 9 | } 10 | 11 | /* Tomorrow Red */ 12 | .hljs-variable, 13 | .hljs-attribute, 14 | .hljs-tag, 15 | .hljs-regexp, 16 | .ruby .hljs-constant, 17 | .xml .hljs-tag .hljs-title, 18 | .xml .hljs-pi, 19 | .xml .hljs-doctype, 20 | .html .hljs-doctype, 21 | .css .hljs-id, 22 | .css .hljs-class, 23 | .css .hljs-pseudo { 24 | color: #cc6666; 25 | } 26 | 27 | /* Tomorrow Orange */ 28 | .hljs-number, 29 | .hljs-preprocessor, 30 | .hljs-pragma, 31 | .hljs-built_in, 32 | .hljs-literal, 33 | .hljs-params, 34 | .hljs-constant { 35 | color: #de935f; 36 | } 37 | 38 | /* Tomorrow Yellow */ 39 | .ruby .hljs-class .hljs-title, 40 | .css .hljs-rule .hljs-attribute { 41 | color: #f0c674; 42 | } 43 | 44 | /* Tomorrow Green */ 45 | .hljs-string, 46 | .hljs-value, 47 | .hljs-inheritance, 48 | .hljs-header, 49 | .hljs-name, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #b5bd68; 53 | } 54 | 55 | /* Tomorrow Aqua */ 56 | .hljs-title, 57 | .css .hljs-hexcolor { 58 | color: #8abeb7; 59 | } 60 | 61 | /* Tomorrow Blue */ 62 | .hljs-function, 63 | .python .hljs-decorator, 64 | .python .hljs-title, 65 | .ruby .hljs-function .hljs-title, 66 | .ruby .hljs-title .hljs-keyword, 67 | .perl .hljs-sub, 68 | .javascript .hljs-title, 69 | .coffeescript .hljs-title { 70 | color: #81a2be; 71 | } 72 | 73 | /* Tomorrow Purple */ 74 | .hljs-keyword, 75 | .javascript .hljs-function { 76 | color: #b294bb; 77 | } 78 | 79 | .hljs { 80 | display: block; 81 | overflow-x: auto; 82 | background: #1d1f21; 83 | color: #c5c8c6; 84 | padding: 0.5em; 85 | -webkit-text-size-adjust: none; 86 | } 87 | 88 | .coffeescript .javascript, 89 | .javascript .xml, 90 | .tex .hljs-formula, 91 | .xml .javascript, 92 | .xml .vbscript, 93 | .xml .css, 94 | .xml .hljs-cdata { 95 | opacity: 0.5; 96 | } 97 | -------------------------------------------------------------------------------- /common/highlight/styles/atelier-heath.dark.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Heath Dark - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | 5 | /* Atelier-Heath Comment */ 6 | .hljs-comment { 7 | color: #9e8f9e; 8 | } 9 | 10 | /* Atelier-Heath Red */ 11 | .hljs-variable, 12 | .hljs-attribute, 13 | .hljs-tag, 14 | .hljs-regexp, 15 | .hljs-name, 16 | .ruby .hljs-constant, 17 | .xml .hljs-tag .hljs-title, 18 | .xml .hljs-pi, 19 | .xml .hljs-doctype, 20 | .html .hljs-doctype, 21 | .css .hljs-id, 22 | .css .hljs-class, 23 | .css .hljs-pseudo { 24 | color: #ca402b; 25 | } 26 | 27 | /* Atelier-Heath Orange */ 28 | .hljs-number, 29 | .hljs-preprocessor, 30 | .hljs-built_in, 31 | .hljs-literal, 32 | .hljs-params, 33 | .hljs-constant { 34 | color: #a65926; 35 | } 36 | 37 | /* Atelier-Heath Yellow */ 38 | .ruby .hljs-class .hljs-title, 39 | .css .hljs-rule .hljs-attribute { 40 | color: #bb8a35; 41 | } 42 | 43 | /* Atelier-Heath Green */ 44 | .hljs-string, 45 | .hljs-value, 46 | .hljs-inheritance, 47 | .hljs-header, 48 | .ruby .hljs-symbol, 49 | .xml .hljs-cdata { 50 | color: #918b3b; 51 | } 52 | 53 | /* Atelier-Heath Aqua */ 54 | .hljs-title, 55 | .css .hljs-hexcolor { 56 | color: #159393; 57 | } 58 | 59 | /* Atelier-Heath Blue */ 60 | .hljs-function, 61 | .python .hljs-decorator, 62 | .python .hljs-title, 63 | .ruby .hljs-function .hljs-title, 64 | .ruby .hljs-title .hljs-keyword, 65 | .perl .hljs-sub, 66 | .javascript .hljs-title, 67 | .coffeescript .hljs-title { 68 | color: #516aec; 69 | } 70 | 71 | /* Atelier-Heath Purple */ 72 | .hljs-keyword, 73 | .javascript .hljs-function { 74 | color: #7b59c0; 75 | } 76 | 77 | .hljs { 78 | display: block; 79 | overflow-x: auto; 80 | background: #1b181b; 81 | color: #ab9bab; 82 | padding: 0.5em; 83 | -webkit-text-size-adjust: none; 84 | } 85 | 86 | .coffeescript .javascript, 87 | .javascript .xml, 88 | .tex .hljs-formula, 89 | .xml .javascript, 90 | .xml .vbscript, 91 | .xml .css, 92 | .xml .hljs-cdata { 93 | opacity: 0.5; 94 | } 95 | -------------------------------------------------------------------------------- /common/highlight/styles/atelier-heath.light.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Heath Light - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | 5 | /* Atelier-Heath Comment */ 6 | .hljs-comment { 7 | color: #776977; 8 | } 9 | 10 | /* Atelier-Heath Red */ 11 | .hljs-variable, 12 | .hljs-attribute, 13 | .hljs-tag, 14 | .hljs-regexp, 15 | .hljs-name, 16 | .ruby .hljs-constant, 17 | .xml .hljs-tag .hljs-title, 18 | .xml .hljs-pi, 19 | .xml .hljs-doctype, 20 | .html .hljs-doctype, 21 | .css .hljs-id, 22 | .css .hljs-class, 23 | .css .hljs-pseudo { 24 | color: #ca402b; 25 | } 26 | 27 | /* Atelier-Heath Orange */ 28 | .hljs-number, 29 | .hljs-preprocessor, 30 | .hljs-built_in, 31 | .hljs-literal, 32 | .hljs-params, 33 | .hljs-constant { 34 | color: #a65926; 35 | } 36 | 37 | /* Atelier-Heath Yellow */ 38 | .ruby .hljs-class .hljs-title, 39 | .css .hljs-rule .hljs-attribute { 40 | color: #bb8a35; 41 | } 42 | 43 | /* Atelier-Heath Green */ 44 | .hljs-string, 45 | .hljs-value, 46 | .hljs-inheritance, 47 | .hljs-header, 48 | .ruby .hljs-symbol, 49 | .xml .hljs-cdata { 50 | color: #918b3b; 51 | } 52 | 53 | /* Atelier-Heath Aqua */ 54 | .hljs-title, 55 | .css .hljs-hexcolor { 56 | color: #159393; 57 | } 58 | 59 | /* Atelier-Heath Blue */ 60 | .hljs-function, 61 | .python .hljs-decorator, 62 | .python .hljs-title, 63 | .ruby .hljs-function .hljs-title, 64 | .ruby .hljs-title .hljs-keyword, 65 | .perl .hljs-sub, 66 | .javascript .hljs-title, 67 | .coffeescript .hljs-title { 68 | color: #516aec; 69 | } 70 | 71 | /* Atelier-Heath Purple */ 72 | .hljs-keyword, 73 | .javascript .hljs-function { 74 | color: #7b59c0; 75 | } 76 | 77 | .hljs { 78 | display: block; 79 | overflow-x: auto; 80 | background: #f7f3f7; 81 | color: #695d69; 82 | padding: 0.5em; 83 | -webkit-text-size-adjust: none; 84 | } 85 | 86 | .coffeescript .javascript, 87 | .javascript .xml, 88 | .tex .hljs-formula, 89 | .xml .javascript, 90 | .xml .vbscript, 91 | .xml .css, 92 | .xml .hljs-cdata { 93 | opacity: 0.5; 94 | } 95 | -------------------------------------------------------------------------------- /common/highlight/styles/rainbow.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Style with support for rainbow parens 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #474949; 12 | color: #d1d9e1; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | 17 | .hljs-body, 18 | .hljs-collection { 19 | color: #d1d9e1; 20 | } 21 | 22 | .hljs-comment, 23 | .diff .hljs-header, 24 | .hljs-doctype, 25 | .lisp .hljs-string, 26 | .hljs-javadoc { 27 | color: #969896; 28 | font-style: italic; 29 | } 30 | 31 | .hljs-keyword, 32 | .clojure .hljs-attribute, 33 | .hljs-winutils, 34 | .javascript .hljs-title, 35 | .hljs-addition, 36 | .css .hljs-tag { 37 | color: #cc99cc; 38 | } 39 | 40 | .hljs-number { color: #f99157; } 41 | 42 | .hljs-command, 43 | .hljs-string, 44 | .hljs-tag .hljs-value, 45 | .hljs-phpdoc, 46 | .hljs-dartdoc, 47 | .tex .hljs-formula, 48 | .hljs-regexp, 49 | .hljs-hexcolor { 50 | color: #8abeb7; 51 | } 52 | 53 | .hljs-title, 54 | .hljs-localvars, 55 | .hljs-function .hljs-title, 56 | .hljs-chunk, 57 | .hljs-decorator, 58 | .hljs-built_in, 59 | .hljs-identifier { 60 | color: #b5bd68; 61 | } 62 | 63 | .hljs-class .hljs-keyword { 64 | color: #f2777a; 65 | } 66 | 67 | .hljs-variable, 68 | .smalltalk .hljs-number, 69 | .hljs-constant, 70 | .hljs-class .hljs-title, 71 | .hljs-parent, 72 | .haskell .hljs-label, 73 | .hljs-id, 74 | .hljs-name { 75 | color: #ffcc66; 76 | } 77 | 78 | .hljs-tag .hljs-title, 79 | .hljs-rule .hljs-property, 80 | .django .hljs-tag .hljs-keyword { 81 | font-weight: bold; 82 | } 83 | 84 | .hljs-attribute { 85 | color: #81a2be; 86 | } 87 | 88 | .hljs-preprocessor, 89 | .hljs-pragma, 90 | .hljs-pi, 91 | .hljs-shebang, 92 | .hljs-symbol, 93 | .hljs-symbol .hljs-string, 94 | .diff .hljs-change, 95 | .hljs-special, 96 | .hljs-attr_selector, 97 | .hljs-important, 98 | .hljs-subst, 99 | .hljs-cdata { 100 | color: #f99157; 101 | } 102 | 103 | .hljs-deletion { 104 | color: #dc322f; 105 | } 106 | 107 | .tex .hljs-formula { 108 | background: #eee8d5; 109 | } 110 | -------------------------------------------------------------------------------- /common/highlight/styles/tomorrow-night-blue.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Night Blue Theme */ 2 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 3 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 4 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ 5 | 6 | /* Tomorrow Comment */ 7 | .hljs-comment { 8 | color: #7285b7; 9 | } 10 | 11 | /* Tomorrow Red */ 12 | .hljs-variable, 13 | .hljs-attribute, 14 | .hljs-tag, 15 | .hljs-regexp, 16 | .ruby .hljs-constant, 17 | .xml .hljs-tag .hljs-title, 18 | .xml .hljs-pi, 19 | .xml .hljs-doctype, 20 | .html .hljs-doctype, 21 | .css .hljs-id, 22 | .css .hljs-class, 23 | .css .hljs-pseudo { 24 | color: #ff9da4; 25 | } 26 | 27 | /* Tomorrow Orange */ 28 | .hljs-number, 29 | .hljs-preprocessor, 30 | .hljs-pragma, 31 | .hljs-built_in, 32 | .hljs-literal, 33 | .hljs-params, 34 | .hljs-constant { 35 | color: #ffc58f; 36 | } 37 | 38 | /* Tomorrow Yellow */ 39 | .ruby .hljs-class .hljs-title, 40 | .css .hljs-rule .hljs-attribute { 41 | color: #ffeead; 42 | } 43 | 44 | /* Tomorrow Green */ 45 | .hljs-string, 46 | .hljs-value, 47 | .hljs-inheritance, 48 | .hljs-header, 49 | .hljs-name, 50 | .ruby .hljs-symbol, 51 | .xml .hljs-cdata { 52 | color: #d1f1a9; 53 | } 54 | 55 | /* Tomorrow Aqua */ 56 | .hljs-title, 57 | .css .hljs-hexcolor { 58 | color: #99ffff; 59 | } 60 | 61 | /* Tomorrow Blue */ 62 | .hljs-function, 63 | .python .hljs-decorator, 64 | .python .hljs-title, 65 | .ruby .hljs-function .hljs-title, 66 | .ruby .hljs-title .hljs-keyword, 67 | .perl .hljs-sub, 68 | .javascript .hljs-title, 69 | .coffeescript .hljs-title { 70 | color: #bbdaff; 71 | } 72 | 73 | /* Tomorrow Purple */ 74 | .hljs-keyword, 75 | .javascript .hljs-function { 76 | color: #ebbbff; 77 | } 78 | 79 | .hljs { 80 | display: block; 81 | overflow-x: auto; 82 | background: #002451; 83 | color: white; 84 | padding: 0.5em; 85 | -webkit-text-size-adjust: none; 86 | } 87 | 88 | .coffeescript .javascript, 89 | .javascript .xml, 90 | .tex .hljs-formula, 91 | .xml .javascript, 92 | .xml .vbscript, 93 | .xml .css, 94 | .xml .hljs-cdata { 95 | opacity: 0.5; 96 | } 97 | -------------------------------------------------------------------------------- /common/highlight/styles/atelier-forest.dark.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Forest Dark - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | 5 | /* Atelier-Forest Comment */ 6 | .hljs-comment { 7 | color: #9c9491; 8 | } 9 | 10 | /* Atelier-Forest Red */ 11 | .hljs-variable, 12 | .hljs-attribute, 13 | .hljs-tag, 14 | .hljs-regexp, 15 | .hljs-name, 16 | .ruby .hljs-constant, 17 | .xml .hljs-tag .hljs-title, 18 | .xml .hljs-pi, 19 | .xml .hljs-doctype, 20 | .html .hljs-doctype, 21 | .css .hljs-id, 22 | .css .hljs-class, 23 | .css .hljs-pseudo { 24 | color: #f22c40; 25 | } 26 | 27 | /* Atelier-Forest Orange */ 28 | .hljs-number, 29 | .hljs-preprocessor, 30 | .hljs-built_in, 31 | .hljs-literal, 32 | .hljs-params, 33 | .hljs-constant { 34 | color: #df5320; 35 | } 36 | 37 | /* Atelier-Forest Yellow */ 38 | .ruby .hljs-class .hljs-title, 39 | .css .hljs-rule .hljs-attribute { 40 | color: #c38418; 41 | } 42 | 43 | /* Atelier-Forest Green */ 44 | .hljs-string, 45 | .hljs-value, 46 | .hljs-inheritance, 47 | .hljs-header, 48 | .ruby .hljs-symbol, 49 | .xml .hljs-cdata { 50 | color: #7b9726; 51 | } 52 | 53 | /* Atelier-Forest Aqua */ 54 | .hljs-title, 55 | .css .hljs-hexcolor { 56 | color: #3d97b8; 57 | } 58 | 59 | /* Atelier-Forest Blue */ 60 | .hljs-function, 61 | .python .hljs-decorator, 62 | .python .hljs-title, 63 | .ruby .hljs-function .hljs-title, 64 | .ruby .hljs-title .hljs-keyword, 65 | .perl .hljs-sub, 66 | .javascript .hljs-title, 67 | .coffeescript .hljs-title { 68 | color: #407ee7; 69 | } 70 | 71 | /* Atelier-Forest Purple */ 72 | .hljs-keyword, 73 | .javascript .hljs-function { 74 | color: #6666ea; 75 | } 76 | 77 | .hljs { 78 | display: block; 79 | overflow-x: auto; 80 | background: #1b1918; 81 | color: #a8a19f; 82 | padding: 0.5em; 83 | -webkit-text-size-adjust: none; 84 | } 85 | 86 | .coffeescript .javascript, 87 | .javascript .xml, 88 | .tex .hljs-formula, 89 | .xml .javascript, 90 | .xml .vbscript, 91 | .xml .css, 92 | .xml .hljs-cdata { 93 | opacity: 0.5; 94 | } 95 | -------------------------------------------------------------------------------- /common/highlight/styles/atelier-forest.light.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Forest Light - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | 5 | /* Atelier-Forest Comment */ 6 | .hljs-comment { 7 | color: #766e6b; 8 | } 9 | 10 | /* Atelier-Forest Red */ 11 | .hljs-variable, 12 | .hljs-attribute, 13 | .hljs-tag, 14 | .hljs-regexp, 15 | .hljs-name, 16 | .ruby .hljs-constant, 17 | .xml .hljs-tag .hljs-title, 18 | .xml .hljs-pi, 19 | .xml .hljs-doctype, 20 | .html .hljs-doctype, 21 | .css .hljs-id, 22 | .css .hljs-class, 23 | .css .hljs-pseudo { 24 | color: #f22c40; 25 | } 26 | 27 | /* Atelier-Forest Orange */ 28 | .hljs-number, 29 | .hljs-preprocessor, 30 | .hljs-built_in, 31 | .hljs-literal, 32 | .hljs-params, 33 | .hljs-constant { 34 | color: #df5320; 35 | } 36 | 37 | /* Atelier-Forest Yellow */ 38 | .ruby .hljs-class .hljs-title, 39 | .css .hljs-rule .hljs-attribute { 40 | color: #c38418; 41 | } 42 | 43 | /* Atelier-Forest Green */ 44 | .hljs-string, 45 | .hljs-value, 46 | .hljs-inheritance, 47 | .hljs-header, 48 | .ruby .hljs-symbol, 49 | .xml .hljs-cdata { 50 | color: #7b9726; 51 | } 52 | 53 | /* Atelier-Forest Aqua */ 54 | .hljs-title, 55 | .css .hljs-hexcolor { 56 | color: #3d97b8; 57 | } 58 | 59 | /* Atelier-Forest Blue */ 60 | .hljs-function, 61 | .python .hljs-decorator, 62 | .python .hljs-title, 63 | .ruby .hljs-function .hljs-title, 64 | .ruby .hljs-title .hljs-keyword, 65 | .perl .hljs-sub, 66 | .javascript .hljs-title, 67 | .coffeescript .hljs-title { 68 | color: #407ee7; 69 | } 70 | 71 | /* Atelier-Forest Purple */ 72 | .hljs-keyword, 73 | .javascript .hljs-function { 74 | color: #6666ea; 75 | } 76 | 77 | .hljs { 78 | display: block; 79 | overflow-x: auto; 80 | background: #f1efee; 81 | color: #68615e; 82 | padding: 0.5em; 83 | -webkit-text-size-adjust: none; 84 | } 85 | 86 | .coffeescript .javascript, 87 | .javascript .xml, 88 | .tex .hljs-formula, 89 | .xml .javascript, 90 | .xml .vbscript, 91 | .xml .css, 92 | .xml .hljs-cdata { 93 | opacity: 0.5; 94 | } 95 | -------------------------------------------------------------------------------- /common/highlight/styles/ir_black.css: -------------------------------------------------------------------------------- 1 | /* 2 | IR_Black style (c) Vasily Mikhailitchenko 3 | */ 4 | 5 | .hljs { 6 | display: block; 7 | overflow-x: auto; 8 | padding: 0.5em; 9 | background: #000; 10 | color: #f8f8f8; 11 | -webkit-text-size-adjust: none; 12 | } 13 | 14 | .hljs-shebang, 15 | .hljs-comment, 16 | .hljs-javadoc { 17 | color: #7c7c7c; 18 | } 19 | 20 | .hljs-keyword, 21 | .hljs-tag, 22 | .tex .hljs-command, 23 | .hljs-request, 24 | .hljs-status, 25 | .clojure .hljs-attribute { 26 | color: #96cbfe; 27 | } 28 | 29 | .hljs-sub .hljs-keyword, 30 | .method, 31 | .hljs-list .hljs-title, 32 | .nginx .hljs-title { 33 | color: #ffffb6; 34 | } 35 | 36 | .hljs-string, 37 | .hljs-tag .hljs-value, 38 | .hljs-cdata, 39 | .hljs-filter .hljs-argument, 40 | .hljs-attr_selector, 41 | .apache .hljs-cbracket, 42 | .hljs-date, 43 | .coffeescript .hljs-attribute { 44 | color: #a8ff60; 45 | } 46 | 47 | .hljs-subst { 48 | color: #daefa3; 49 | } 50 | 51 | .hljs-regexp { 52 | color: #e9c062; 53 | } 54 | 55 | .hljs-title, 56 | .hljs-sub .hljs-identifier, 57 | .hljs-pi, 58 | .hljs-decorator, 59 | .tex .hljs-special, 60 | .hljs-type, 61 | .hljs-constant, 62 | .smalltalk .hljs-class, 63 | .hljs-javadoctag, 64 | .hljs-yardoctag, 65 | .hljs-phpdoc, 66 | .hljs-dartdoc, 67 | .nginx .hljs-built_in { 68 | color: #ffffb6; 69 | } 70 | 71 | .hljs-symbol, 72 | .ruby .hljs-symbol .hljs-string, 73 | .hljs-number, 74 | .hljs-variable, 75 | .vbscript, 76 | .hljs-literal, 77 | .hljs-name { 78 | color: #c6c5fe; 79 | } 80 | 81 | .css .hljs-tag { 82 | color: #96cbfe; 83 | } 84 | 85 | .css .hljs-rule .hljs-property, 86 | .css .hljs-id { 87 | color: #ffffb6; 88 | } 89 | 90 | .css .hljs-class { 91 | color: #fff; 92 | } 93 | 94 | .hljs-hexcolor { 95 | color: #c6c5fe; 96 | } 97 | 98 | .hljs-number { 99 | color:#ff73fd; 100 | } 101 | 102 | .coffeescript .javascript, 103 | .javascript .xml, 104 | .tex .hljs-formula, 105 | .xml .javascript, 106 | .xml .vbscript, 107 | .xml .css, 108 | .xml .hljs-cdata { 109 | opacity: 0.7; 110 | } 111 | -------------------------------------------------------------------------------- /common/highlight/styles/atelier-seaside.dark.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Seaside Dark - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | 5 | /* Atelier-Seaside Comment */ 6 | .hljs-comment { 7 | color: #809980; 8 | } 9 | 10 | /* Atelier-Seaside Red */ 11 | .hljs-variable, 12 | .hljs-attribute, 13 | .hljs-tag, 14 | .hljs-regexp, 15 | .hljs-name, 16 | .ruby .hljs-constant, 17 | .xml .hljs-tag .hljs-title, 18 | .xml .hljs-pi, 19 | .xml .hljs-doctype, 20 | .html .hljs-doctype, 21 | .css .hljs-id, 22 | .css .hljs-class, 23 | .css .hljs-pseudo { 24 | color: #e6193c; 25 | } 26 | 27 | /* Atelier-Seaside Orange */ 28 | .hljs-number, 29 | .hljs-preprocessor, 30 | .hljs-built_in, 31 | .hljs-literal, 32 | .hljs-params, 33 | .hljs-constant { 34 | color: #87711d; 35 | } 36 | 37 | /* Atelier-Seaside Yellow */ 38 | .ruby .hljs-class .hljs-title, 39 | .css .hljs-rule .hljs-attribute { 40 | color: #98981b; 41 | } 42 | 43 | /* Atelier-Seaside Green */ 44 | .hljs-string, 45 | .hljs-value, 46 | .hljs-inheritance, 47 | .hljs-header, 48 | .ruby .hljs-symbol, 49 | .xml .hljs-cdata { 50 | color: #29a329; 51 | } 52 | 53 | /* Atelier-Seaside Aqua */ 54 | .hljs-title, 55 | .css .hljs-hexcolor { 56 | color: #1999b3; 57 | } 58 | 59 | /* Atelier-Seaside Blue */ 60 | .hljs-function, 61 | .python .hljs-decorator, 62 | .python .hljs-title, 63 | .ruby .hljs-function .hljs-title, 64 | .ruby .hljs-title .hljs-keyword, 65 | .perl .hljs-sub, 66 | .javascript .hljs-title, 67 | .coffeescript .hljs-title { 68 | color: #3d62f5; 69 | } 70 | 71 | /* Atelier-Seaside Purple */ 72 | .hljs-keyword, 73 | .javascript .hljs-function { 74 | color: #ad2bee; 75 | } 76 | 77 | .hljs { 78 | display: block; 79 | overflow-x: auto; 80 | background: #131513; 81 | color: #8ca68c; 82 | padding: 0.5em; 83 | -webkit-text-size-adjust: none; 84 | } 85 | 86 | .coffeescript .javascript, 87 | .javascript .xml, 88 | .tex .hljs-formula, 89 | .xml .javascript, 90 | .xml .vbscript, 91 | .xml .css, 92 | .xml .hljs-cdata { 93 | opacity: 0.5; 94 | } 95 | -------------------------------------------------------------------------------- /common/highlight/styles/atelier-seaside.light.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Seaside Light - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | 5 | /* Atelier-Seaside Comment */ 6 | .hljs-comment { 7 | color: #687d68; 8 | } 9 | 10 | /* Atelier-Seaside Red */ 11 | .hljs-variable, 12 | .hljs-attribute, 13 | .hljs-tag, 14 | .hljs-regexp, 15 | .hljs-name, 16 | .ruby .hljs-constant, 17 | .xml .hljs-tag .hljs-title, 18 | .xml .hljs-pi, 19 | .xml .hljs-doctype, 20 | .html .hljs-doctype, 21 | .css .hljs-id, 22 | .css .hljs-class, 23 | .css .hljs-pseudo { 24 | color: #e6193c; 25 | } 26 | 27 | /* Atelier-Seaside Orange */ 28 | .hljs-number, 29 | .hljs-preprocessor, 30 | .hljs-built_in, 31 | .hljs-literal, 32 | .hljs-params, 33 | .hljs-constant { 34 | color: #87711d; 35 | } 36 | 37 | /* Atelier-Seaside Yellow */ 38 | .ruby .hljs-class .hljs-title, 39 | .css .hljs-rule .hljs-attribute { 40 | color: #98981b; 41 | } 42 | 43 | /* Atelier-Seaside Green */ 44 | .hljs-string, 45 | .hljs-value, 46 | .hljs-inheritance, 47 | .hljs-header, 48 | .ruby .hljs-symbol, 49 | .xml .hljs-cdata { 50 | color: #29a329; 51 | } 52 | 53 | /* Atelier-Seaside Aqua */ 54 | .hljs-title, 55 | .css .hljs-hexcolor { 56 | color: #1999b3; 57 | } 58 | 59 | /* Atelier-Seaside Blue */ 60 | .hljs-function, 61 | .python .hljs-decorator, 62 | .python .hljs-title, 63 | .ruby .hljs-function .hljs-title, 64 | .ruby .hljs-title .hljs-keyword, 65 | .perl .hljs-sub, 66 | .javascript .hljs-title, 67 | .coffeescript .hljs-title { 68 | color: #3d62f5; 69 | } 70 | 71 | /* Atelier-Seaside Purple */ 72 | .hljs-keyword, 73 | .javascript .hljs-function { 74 | color: #ad2bee; 75 | } 76 | 77 | .hljs { 78 | display: block; 79 | overflow-x: auto; 80 | background: #f4fbf4; 81 | color: #5e6e5e; 82 | padding: 0.5em; 83 | -webkit-text-size-adjust: none; 84 | } 85 | 86 | .coffeescript .javascript, 87 | .javascript .xml, 88 | .tex .hljs-formula, 89 | .xml .javascript, 90 | .xml .vbscript, 91 | .xml .css, 92 | .xml .hljs-cdata { 93 | opacity: 0.5; 94 | } 95 | -------------------------------------------------------------------------------- /common/highlight/styles/atelier-lakeside.dark.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Lakeside Dark - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | 5 | /* Atelier-Lakeside Comment */ 6 | .hljs-comment { 7 | color: #7195a8; 8 | } 9 | 10 | /* Atelier-Lakeside Red */ 11 | .hljs-variable, 12 | .hljs-attribute, 13 | .hljs-tag, 14 | .hljs-regexp, 15 | .hljs-name, 16 | .ruby .hljs-constant, 17 | .xml .hljs-tag .hljs-title, 18 | .xml .hljs-pi, 19 | .xml .hljs-doctype, 20 | .html .hljs-doctype, 21 | .css .hljs-id, 22 | .css .hljs-class, 23 | .css .hljs-pseudo { 24 | color: #d22d72; 25 | } 26 | 27 | /* Atelier-Lakeside Orange */ 28 | .hljs-number, 29 | .hljs-preprocessor, 30 | .hljs-built_in, 31 | .hljs-literal, 32 | .hljs-params, 33 | .hljs-constant { 34 | color: #935c25; 35 | } 36 | 37 | /* Atelier-Lakeside Yellow */ 38 | .ruby .hljs-class .hljs-title, 39 | .css .hljs-rule .hljs-attribute { 40 | color: #8a8a0f; 41 | } 42 | 43 | /* Atelier-Lakeside Green */ 44 | .hljs-string, 45 | .hljs-value, 46 | .hljs-inheritance, 47 | .hljs-header, 48 | .ruby .hljs-symbol, 49 | .xml .hljs-cdata { 50 | color: #568c3b; 51 | } 52 | 53 | /* Atelier-Lakeside Aqua */ 54 | .hljs-title, 55 | .css .hljs-hexcolor { 56 | color: #2d8f6f; 57 | } 58 | 59 | /* Atelier-Lakeside Blue */ 60 | .hljs-function, 61 | .python .hljs-decorator, 62 | .python .hljs-title, 63 | .ruby .hljs-function .hljs-title, 64 | .ruby .hljs-title .hljs-keyword, 65 | .perl .hljs-sub, 66 | .javascript .hljs-title, 67 | .coffeescript .hljs-title { 68 | color: #257fad; 69 | } 70 | 71 | /* Atelier-Lakeside Purple */ 72 | .hljs-keyword, 73 | .javascript .hljs-function { 74 | color: #6b6bb8; 75 | } 76 | 77 | .hljs { 78 | display: block; 79 | overflow-x: auto; 80 | background: #161b1d; 81 | color: #7ea2b4; 82 | padding: 0.5em; 83 | -webkit-text-size-adjust: none; 84 | } 85 | 86 | .coffeescript .javascript, 87 | .javascript .xml, 88 | .tex .hljs-formula, 89 | .xml .javascript, 90 | .xml .vbscript, 91 | .xml .css, 92 | .xml .hljs-cdata { 93 | opacity: 0.5; 94 | } 95 | -------------------------------------------------------------------------------- /common/highlight/styles/atelier-lakeside.light.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Lakeside Light - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | 5 | /* Atelier-Lakeside Comment */ 6 | .hljs-comment { 7 | color: #5a7b8c; 8 | } 9 | 10 | /* Atelier-Lakeside Red */ 11 | .hljs-variable, 12 | .hljs-attribute, 13 | .hljs-tag, 14 | .hljs-regexp, 15 | .hljs-name, 16 | .ruby .hljs-constant, 17 | .xml .hljs-tag .hljs-title, 18 | .xml .hljs-pi, 19 | .xml .hljs-doctype, 20 | .html .hljs-doctype, 21 | .css .hljs-id, 22 | .css .hljs-class, 23 | .css .hljs-pseudo { 24 | color: #d22d72; 25 | } 26 | 27 | /* Atelier-Lakeside Orange */ 28 | .hljs-number, 29 | .hljs-preprocessor, 30 | .hljs-built_in, 31 | .hljs-literal, 32 | .hljs-params, 33 | .hljs-constant { 34 | color: #935c25; 35 | } 36 | 37 | /* Atelier-Lakeside Yellow */ 38 | .ruby .hljs-class .hljs-title, 39 | .css .hljs-rule .hljs-attribute { 40 | color: #8a8a0f; 41 | } 42 | 43 | /* Atelier-Lakeside Green */ 44 | .hljs-string, 45 | .hljs-value, 46 | .hljs-inheritance, 47 | .hljs-header, 48 | .ruby .hljs-symbol, 49 | .xml .hljs-cdata { 50 | color: #568c3b; 51 | } 52 | 53 | /* Atelier-Lakeside Aqua */ 54 | .hljs-title, 55 | .css .hljs-hexcolor { 56 | color: #2d8f6f; 57 | } 58 | 59 | /* Atelier-Lakeside Blue */ 60 | .hljs-function, 61 | .python .hljs-decorator, 62 | .python .hljs-title, 63 | .ruby .hljs-function .hljs-title, 64 | .ruby .hljs-title .hljs-keyword, 65 | .perl .hljs-sub, 66 | .javascript .hljs-title, 67 | .coffeescript .hljs-title { 68 | color: #257fad; 69 | } 70 | 71 | /* Atelier-Lakeside Purple */ 72 | .hljs-keyword, 73 | .javascript .hljs-function { 74 | color: #6b6bb8; 75 | } 76 | 77 | .hljs { 78 | display: block; 79 | overflow-x: auto; 80 | background: #ebf8ff; 81 | color: #516d7b; 82 | padding: 0.5em; 83 | -webkit-text-size-adjust: none; 84 | } 85 | 86 | .coffeescript .javascript, 87 | .javascript .xml, 88 | .tex .hljs-formula, 89 | .xml .javascript, 90 | .xml .vbscript, 91 | .xml .css, 92 | .xml .hljs-cdata { 93 | opacity: 0.5; 94 | } 95 | -------------------------------------------------------------------------------- /common/highlight/styles/atelier-sulphurpool.dark.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Sulphurpool Dark - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | 5 | /* Atelier-Sulphurpool Comment */ 6 | .hljs-comment { 7 | color: #898ea4; 8 | } 9 | 10 | /* Atelier-Sulphurpool Red */ 11 | .hljs-variable, 12 | .hljs-attribute, 13 | .hljs-tag, 14 | .hljs-regexp, 15 | .hljs-name, 16 | .ruby .hljs-constant, 17 | .xml .hljs-tag .hljs-title, 18 | .xml .hljs-pi, 19 | .xml .hljs-doctype, 20 | .html .hljs-doctype, 21 | .css .hljs-id, 22 | .css .hljs-class, 23 | .css .hljs-pseudo { 24 | color: #c94922; 25 | } 26 | 27 | /* Atelier-Sulphurpool Orange */ 28 | .hljs-number, 29 | .hljs-preprocessor, 30 | .hljs-built_in, 31 | .hljs-literal, 32 | .hljs-params, 33 | .hljs-constant { 34 | color: #c76b29; 35 | } 36 | 37 | /* Atelier-Sulphurpool Yellow */ 38 | .ruby .hljs-class .hljs-title, 39 | .css .hljs-rule .hljs-attribute { 40 | color: #c08b30; 41 | } 42 | 43 | /* Atelier-Sulphurpool Green */ 44 | .hljs-string, 45 | .hljs-value, 46 | .hljs-inheritance, 47 | .hljs-header, 48 | .ruby .hljs-symbol, 49 | .xml .hljs-cdata { 50 | color: #ac9739; 51 | } 52 | 53 | /* Atelier-Sulphurpool Aqua */ 54 | .hljs-title, 55 | .css .hljs-hexcolor { 56 | color: #22a2c9; 57 | } 58 | 59 | /* Atelier-Sulphurpool Blue */ 60 | .hljs-function, 61 | .python .hljs-decorator, 62 | .python .hljs-title, 63 | .ruby .hljs-function .hljs-title, 64 | .ruby .hljs-title .hljs-keyword, 65 | .perl .hljs-sub, 66 | .javascript .hljs-title, 67 | .coffeescript .hljs-title { 68 | color: #3d8fd1; 69 | } 70 | 71 | /* Atelier-Sulphurpool Purple */ 72 | .hljs-keyword, 73 | .javascript .hljs-function { 74 | color: #6679cc; 75 | } 76 | 77 | .hljs { 78 | display: block; 79 | overflow-x: auto; 80 | background: #202746; 81 | color: #979db4; 82 | padding: 0.5em; 83 | -webkit-text-size-adjust: none; 84 | } 85 | 86 | .coffeescript .javascript, 87 | .javascript .xml, 88 | .tex .hljs-formula, 89 | .xml .javascript, 90 | .xml .vbscript, 91 | .xml .css, 92 | .xml .hljs-cdata { 93 | opacity: 0.5; 94 | } 95 | -------------------------------------------------------------------------------- /common/highlight/styles/atelier-sulphurpool.light.css: -------------------------------------------------------------------------------- 1 | /* Base16 Atelier Sulphurpool Light - Theme */ 2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */ 3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ 4 | 5 | /* Atelier-Sulphurpool Comment */ 6 | .hljs-comment { 7 | color: #6b7394; 8 | } 9 | 10 | /* Atelier-Sulphurpool Red */ 11 | .hljs-variable, 12 | .hljs-attribute, 13 | .hljs-tag, 14 | .hljs-regexp, 15 | .hljs-name, 16 | .ruby .hljs-constant, 17 | .xml .hljs-tag .hljs-title, 18 | .xml .hljs-pi, 19 | .xml .hljs-doctype, 20 | .html .hljs-doctype, 21 | .css .hljs-id, 22 | .css .hljs-class, 23 | .css .hljs-pseudo { 24 | color: #c94922; 25 | } 26 | 27 | /* Atelier-Sulphurpool Orange */ 28 | .hljs-number, 29 | .hljs-preprocessor, 30 | .hljs-built_in, 31 | .hljs-literal, 32 | .hljs-params, 33 | .hljs-constant { 34 | color: #c76b29; 35 | } 36 | 37 | /* Atelier-Sulphurpool Yellow */ 38 | .ruby .hljs-class .hljs-title, 39 | .css .hljs-rule .hljs-attribute { 40 | color: #c08b30; 41 | } 42 | 43 | /* Atelier-Sulphurpool Green */ 44 | .hljs-string, 45 | .hljs-value, 46 | .hljs-inheritance, 47 | .hljs-header, 48 | .ruby .hljs-symbol, 49 | .xml .hljs-cdata { 50 | color: #ac9739; 51 | } 52 | 53 | /* Atelier-Sulphurpool Aqua */ 54 | .hljs-title, 55 | .css .hljs-hexcolor { 56 | color: #22a2c9; 57 | } 58 | 59 | /* Atelier-Sulphurpool Blue */ 60 | .hljs-function, 61 | .python .hljs-decorator, 62 | .python .hljs-title, 63 | .ruby .hljs-function .hljs-title, 64 | .ruby .hljs-title .hljs-keyword, 65 | .perl .hljs-sub, 66 | .javascript .hljs-title, 67 | .coffeescript .hljs-title { 68 | color: #3d8fd1; 69 | } 70 | 71 | /* Atelier-Sulphurpool Purple */ 72 | .hljs-keyword, 73 | .javascript .hljs-function { 74 | color: #6679cc; 75 | } 76 | 77 | .hljs { 78 | display: block; 79 | overflow-x: auto; 80 | background: #f5f7ff; 81 | color: #5e6687; 82 | padding: 0.5em; 83 | -webkit-text-size-adjust: none; 84 | } 85 | 86 | .coffeescript .javascript, 87 | .javascript .xml, 88 | .tex .hljs-formula, 89 | .xml .javascript, 90 | .xml .vbscript, 91 | .xml .css, 92 | .xml .hljs-cdata { 93 | opacity: 0.5; 94 | } 95 | -------------------------------------------------------------------------------- /common/highlight/styles/solarized_dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #002b36; 12 | color: #839496; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-comment, 17 | .diff .hljs-header, 18 | .hljs-doctype, 19 | .hljs-pi, 20 | .lisp .hljs-string, 21 | .hljs-javadoc { 22 | color: #586e75; 23 | } 24 | 25 | /* Solarized Green */ 26 | .hljs-keyword, 27 | .hljs-winutils, 28 | .method, 29 | .hljs-addition, 30 | .css .hljs-tag, 31 | .hljs-request, 32 | .hljs-status, 33 | .nginx .hljs-title { 34 | color: #859900; 35 | } 36 | 37 | /* Solarized Cyan */ 38 | .hljs-number, 39 | .hljs-command, 40 | .hljs-string, 41 | .hljs-tag .hljs-value, 42 | .hljs-rule .hljs-value, 43 | .hljs-phpdoc, 44 | .hljs-dartdoc, 45 | .tex .hljs-formula, 46 | .hljs-regexp, 47 | .hljs-hexcolor, 48 | .hljs-link_url { 49 | color: #2aa198; 50 | } 51 | 52 | /* Solarized Blue */ 53 | .hljs-title, 54 | .hljs-localvars, 55 | .hljs-chunk, 56 | .hljs-decorator, 57 | .hljs-built_in, 58 | .hljs-identifier, 59 | .vhdl .hljs-literal, 60 | .hljs-id, 61 | .css .hljs-function, 62 | .hljs-name { 63 | color: #268bd2; 64 | } 65 | 66 | /* Solarized Yellow */ 67 | .hljs-attribute, 68 | .hljs-variable, 69 | .lisp .hljs-body, 70 | .smalltalk .hljs-number, 71 | .hljs-constant, 72 | .hljs-class .hljs-title, 73 | .hljs-parent, 74 | .hljs-type, 75 | .hljs-link_reference { 76 | color: #b58900; 77 | } 78 | 79 | /* Solarized Orange */ 80 | .hljs-preprocessor, 81 | .hljs-preprocessor .hljs-keyword, 82 | .hljs-pragma, 83 | .hljs-shebang, 84 | .hljs-symbol, 85 | .hljs-symbol .hljs-string, 86 | .diff .hljs-change, 87 | .hljs-special, 88 | .hljs-attr_selector, 89 | .hljs-subst, 90 | .hljs-cdata, 91 | .css .hljs-pseudo, 92 | .hljs-header { 93 | color: #cb4b16; 94 | } 95 | 96 | /* Solarized Red */ 97 | .hljs-deletion, 98 | .hljs-important { 99 | color: #dc322f; 100 | } 101 | 102 | /* Solarized Violet */ 103 | .hljs-link_label { 104 | color: #6c71c4; 105 | } 106 | 107 | .tex .hljs-formula { 108 | background: #073642; 109 | } 110 | -------------------------------------------------------------------------------- /common/highlight/styles/solarized_light.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #fdf6e3; 12 | color: #657b83; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-comment, 17 | .diff .hljs-header, 18 | .hljs-doctype, 19 | .hljs-pi, 20 | .lisp .hljs-string, 21 | .hljs-javadoc { 22 | color: #93a1a1; 23 | } 24 | 25 | /* Solarized Green */ 26 | .hljs-keyword, 27 | .hljs-winutils, 28 | .method, 29 | .hljs-addition, 30 | .css .hljs-tag, 31 | .hljs-request, 32 | .hljs-status, 33 | .nginx .hljs-title { 34 | color: #859900; 35 | } 36 | 37 | /* Solarized Cyan */ 38 | .hljs-number, 39 | .hljs-command, 40 | .hljs-string, 41 | .hljs-tag .hljs-value, 42 | .hljs-rule .hljs-value, 43 | .hljs-phpdoc, 44 | .hljs-dartdoc, 45 | .tex .hljs-formula, 46 | .hljs-regexp, 47 | .hljs-hexcolor, 48 | .hljs-link_url { 49 | color: #2aa198; 50 | } 51 | 52 | /* Solarized Blue */ 53 | .hljs-title, 54 | .hljs-localvars, 55 | .hljs-chunk, 56 | .hljs-decorator, 57 | .hljs-built_in, 58 | .hljs-identifier, 59 | .vhdl .hljs-literal, 60 | .hljs-id, 61 | .css .hljs-function, 62 | .hljs-name { 63 | color: #268bd2; 64 | } 65 | 66 | /* Solarized Yellow */ 67 | .hljs-attribute, 68 | .hljs-variable, 69 | .lisp .hljs-body, 70 | .smalltalk .hljs-number, 71 | .hljs-constant, 72 | .hljs-class .hljs-title, 73 | .hljs-parent, 74 | .hljs-type, 75 | .hljs-link_reference { 76 | color: #b58900; 77 | } 78 | 79 | /* Solarized Orange */ 80 | .hljs-preprocessor, 81 | .hljs-preprocessor .hljs-keyword, 82 | .hljs-pragma, 83 | .hljs-shebang, 84 | .hljs-symbol, 85 | .hljs-symbol .hljs-string, 86 | .diff .hljs-change, 87 | .hljs-special, 88 | .hljs-attr_selector, 89 | .hljs-subst, 90 | .hljs-cdata, 91 | .css .hljs-pseudo, 92 | .hljs-header { 93 | color: #cb4b16; 94 | } 95 | 96 | /* Solarized Red */ 97 | .hljs-deletion, 98 | .hljs-important { 99 | color: #dc322f; 100 | } 101 | 102 | /* Solarized Violet */ 103 | .hljs-link_label { 104 | color: #6c71c4; 105 | } 106 | 107 | .tex .hljs-formula { 108 | background: #eee8d5; 109 | } 110 | -------------------------------------------------------------------------------- /common/highlight/styles/pojoaque.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Pojoaque Style by Jason Tate 4 | http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html 5 | Based on Solarized Style from http://ethanschoonover.com/solarized 6 | 7 | */ 8 | 9 | .hljs { 10 | display: block; 11 | overflow-x: auto; 12 | padding: 0.5em; 13 | color: #dccf8f; 14 | background: url(./pojoaque.jpg) repeat scroll left top #181914; 15 | -webkit-text-size-adjust: none; 16 | } 17 | 18 | .hljs-comment, 19 | .diff .hljs-header, 20 | .hljs-doctype, 21 | .lisp .hljs-string, 22 | .hljs-javadoc { 23 | color: #586e75; 24 | font-style: italic; 25 | } 26 | 27 | .hljs-keyword, 28 | .css .rule .hljs-keyword, 29 | .hljs-winutils, 30 | .javascript .hljs-title, 31 | .method, 32 | .hljs-addition, 33 | .css .hljs-tag, 34 | .hljs-list .hljs-keyword, 35 | .nginx .hljs-title { 36 | color: #b64926; 37 | } 38 | 39 | .hljs-number, 40 | .hljs-command, 41 | .hljs-string, 42 | .hljs-tag .hljs-value, 43 | .hljs-phpdoc, 44 | .hljs-dartdoc, 45 | .tex .hljs-formula, 46 | .hljs-regexp, 47 | .hljs-hexcolor { 48 | color: #468966; 49 | } 50 | 51 | .hljs-title, 52 | .hljs-localvars, 53 | .hljs-function .hljs-title, 54 | .hljs-chunk, 55 | .hljs-decorator, 56 | .hljs-built_in, 57 | .hljs-identifier, 58 | .hljs-name, 59 | .hljs-id { 60 | color: #ffb03b; 61 | } 62 | 63 | .hljs-attribute, 64 | .hljs-variable, 65 | .lisp .hljs-body, 66 | .smalltalk .hljs-number, 67 | .hljs-constant, 68 | .hljs-class .hljs-title, 69 | .hljs-parent, 70 | .hljs-type { 71 | color: #b58900; 72 | } 73 | 74 | .css .hljs-attribute { 75 | color: #b89859; 76 | } 77 | 78 | .css .hljs-number, 79 | .css .hljs-hexcolor { 80 | color: #dccf8f; 81 | } 82 | 83 | .css .hljs-class { 84 | color: #d3a60c; 85 | } 86 | 87 | .hljs-preprocessor, 88 | .hljs-pragma, 89 | .hljs-pi, 90 | .hljs-shebang, 91 | .hljs-symbol, 92 | .hljs-symbol .hljs-string, 93 | .diff .hljs-change, 94 | .hljs-special, 95 | .hljs-attr_selector, 96 | .hljs-important, 97 | .hljs-subst, 98 | .hljs-cdata { 99 | color: #cb4b16; 100 | } 101 | 102 | .hljs-deletion { 103 | color: #dc322f; 104 | } 105 | 106 | .tex .hljs-formula { 107 | background: #073642; 108 | } 109 | -------------------------------------------------------------------------------- /common/highlight/styles/dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Dark style from softwaremaniacs.org (c) Ivan Sagalaev 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #444; 12 | -webkit-text-size-adjust: none; 13 | } 14 | 15 | .hljs-keyword, 16 | .hljs-literal, 17 | .hljs-change, 18 | .hljs-winutils, 19 | .hljs-flow, 20 | .nginx .hljs-title, 21 | .tex .hljs-special { 22 | color: white; 23 | } 24 | 25 | .hljs, 26 | .hljs-subst { 27 | color: #ddd; 28 | } 29 | 30 | .hljs-string, 31 | .hljs-title, 32 | .hljs-type, 33 | .ini .hljs-title, 34 | .hljs-tag .hljs-value, 35 | .css .hljs-rule .hljs-value, 36 | .hljs-preprocessor, 37 | .hljs-pragma, 38 | .ruby .hljs-symbol, 39 | .ruby .hljs-symbol .hljs-string, 40 | .ruby .hljs-class .hljs-parent, 41 | .hljs-built_in, 42 | .django .hljs-template_tag, 43 | .django .hljs-variable, 44 | .smalltalk .hljs-class, 45 | .hljs-javadoc, 46 | .ruby .hljs-string, 47 | .django .hljs-filter .hljs-argument, 48 | .smalltalk .hljs-localvars, 49 | .smalltalk .hljs-array, 50 | .hljs-attr_selector, 51 | .hljs-pseudo, 52 | .hljs-addition, 53 | .hljs-stream, 54 | .hljs-envvar, 55 | .apache .hljs-tag, 56 | .apache .hljs-cbracket, 57 | .tex .hljs-command, 58 | .hljs-prompt, 59 | .coffeescript .hljs-attribute, 60 | .hljs-name { 61 | color: #d88; 62 | } 63 | 64 | .hljs-comment, 65 | .hljs-annotation, 66 | .hljs-decorator, 67 | .hljs-pi, 68 | .hljs-doctype, 69 | .hljs-deletion, 70 | .hljs-shebang, 71 | .apache .hljs-sqbracket, 72 | .tex .hljs-formula { 73 | color: #777; 74 | } 75 | 76 | .hljs-keyword, 77 | .hljs-literal, 78 | .hljs-title, 79 | .css .hljs-id, 80 | .hljs-phpdoc, 81 | .hljs-dartdoc, 82 | .hljs-type, 83 | .vbscript .hljs-built_in, 84 | .rsl .hljs-built_in, 85 | .smalltalk .hljs-class, 86 | .diff .hljs-header, 87 | .hljs-chunk, 88 | .hljs-winutils, 89 | .bash .hljs-variable, 90 | .apache .hljs-tag, 91 | .tex .hljs-special, 92 | .hljs-request, 93 | .hljs-status { 94 | font-weight: bold; 95 | } 96 | 97 | .coffeescript .javascript, 98 | .javascript .xml, 99 | .tex .hljs-formula, 100 | .xml .javascript, 101 | .xml .vbscript, 102 | .xml .css, 103 | .xml .hljs-cdata { 104 | opacity: 0.5; 105 | } 106 | -------------------------------------------------------------------------------- /common/highlight/styles/brown_paper.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Brown Paper style from goldblog.com.ua (c) Zaripov Yura 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background:#b7a68e url(./brown_papersq.png); 12 | -webkit-text-size-adjust: none; 13 | } 14 | 15 | .hljs-keyword, 16 | .hljs-literal, 17 | .hljs-change, 18 | .hljs-winutils, 19 | .hljs-flow, 20 | .nginx .hljs-title, 21 | .tex .hljs-special, 22 | .hljs-request, 23 | .hljs-status { 24 | color:#005599; 25 | font-weight:bold; 26 | } 27 | 28 | .hljs, 29 | .hljs-subst, 30 | .hljs-tag .hljs-keyword { 31 | color: #363c69; 32 | } 33 | 34 | .hljs-string, 35 | .hljs-title, 36 | .hljs-type, 37 | .hljs-tag .hljs-value, 38 | .css .hljs-rule .hljs-value, 39 | .hljs-preprocessor, 40 | .hljs-pragma, 41 | .ruby .hljs-symbol, 42 | .ruby .hljs-symbol .hljs-string, 43 | .ruby .hljs-class .hljs-parent, 44 | .hljs-built_in, 45 | .django .hljs-template_tag, 46 | .django .hljs-variable, 47 | .smalltalk .hljs-class, 48 | .hljs-javadoc, 49 | .ruby .hljs-string, 50 | .django .hljs-filter .hljs-argument, 51 | .smalltalk .hljs-localvars, 52 | .smalltalk .hljs-array, 53 | .hljs-attr_selector, 54 | .hljs-pseudo, 55 | .hljs-addition, 56 | .hljs-stream, 57 | .hljs-envvar, 58 | .apache .hljs-tag, 59 | .apache .hljs-cbracket, 60 | .tex .hljs-number, 61 | .hljs-name { 62 | color: #2c009f; 63 | } 64 | 65 | .hljs-comment, 66 | .hljs-annotation, 67 | .hljs-decorator, 68 | .hljs-pi, 69 | .hljs-doctype, 70 | .hljs-deletion, 71 | .hljs-shebang, 72 | .apache .hljs-sqbracket, 73 | .nginx .hljs-built_in, 74 | .tex .hljs-formula { 75 | color: #802022; 76 | } 77 | 78 | .hljs-keyword, 79 | .hljs-literal, 80 | .css .hljs-id, 81 | .hljs-phpdoc, 82 | .hljs-dartdoc, 83 | .hljs-title, 84 | .hljs-type, 85 | .vbscript .hljs-built_in, 86 | .rsl .hljs-built_in, 87 | .smalltalk .hljs-class, 88 | .diff .hljs-header, 89 | .hljs-chunk, 90 | .hljs-winutils, 91 | .bash .hljs-variable, 92 | .apache .hljs-tag, 93 | .tex .hljs-command { 94 | font-weight: bold; 95 | } 96 | 97 | .coffeescript .javascript, 98 | .javascript .xml, 99 | .tex .hljs-formula, 100 | .xml .javascript, 101 | .xml .vbscript, 102 | .xml .css, 103 | .xml .hljs-cdata { 104 | opacity: 0.8; 105 | } 106 | -------------------------------------------------------------------------------- /common/highlight/styles/github.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | github.com style (c) Vasily Polovnyov 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | color: #333; 12 | background: #f8f8f8; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-comment, 17 | .diff .hljs-header, 18 | .hljs-javadoc { 19 | color: #998; 20 | font-style: italic; 21 | } 22 | 23 | .hljs-keyword, 24 | .css .rule .hljs-keyword, 25 | .hljs-winutils, 26 | .nginx .hljs-title, 27 | .hljs-subst, 28 | .hljs-request, 29 | .hljs-status { 30 | color: #333; 31 | font-weight: bold; 32 | } 33 | 34 | .hljs-number, 35 | .hljs-hexcolor, 36 | .ruby .hljs-constant { 37 | color: #008080; 38 | } 39 | 40 | .hljs-string, 41 | .hljs-tag .hljs-value, 42 | .hljs-phpdoc, 43 | .hljs-dartdoc, 44 | .tex .hljs-formula { 45 | color: #d14; 46 | } 47 | 48 | .hljs-title, 49 | .hljs-id, 50 | .scss .hljs-preprocessor { 51 | color: #900; 52 | font-weight: bold; 53 | } 54 | 55 | .hljs-list .hljs-keyword, 56 | .hljs-subst { 57 | font-weight: normal; 58 | } 59 | 60 | .hljs-class .hljs-title, 61 | .hljs-type, 62 | .vhdl .hljs-literal, 63 | .tex .hljs-command { 64 | color: #458; 65 | font-weight: bold; 66 | } 67 | 68 | .hljs-tag, 69 | .hljs-tag .hljs-title, 70 | .hljs-rule .hljs-property, 71 | .django .hljs-tag .hljs-keyword { 72 | color: #000080; 73 | font-weight: normal; 74 | } 75 | 76 | .hljs-attribute, 77 | .hljs-variable, 78 | .lisp .hljs-body, 79 | .hljs-name { 80 | color: #008080; 81 | } 82 | 83 | .hljs-regexp { 84 | color: #009926; 85 | } 86 | 87 | .hljs-symbol, 88 | .ruby .hljs-symbol .hljs-string, 89 | .lisp .hljs-keyword, 90 | .clojure .hljs-keyword, 91 | .scheme .hljs-keyword, 92 | .tex .hljs-special, 93 | .hljs-prompt { 94 | color: #990073; 95 | } 96 | 97 | .hljs-built_in { 98 | color: #0086b3; 99 | } 100 | 101 | .hljs-preprocessor, 102 | .hljs-pragma, 103 | .hljs-pi, 104 | .hljs-doctype, 105 | .hljs-shebang, 106 | .hljs-cdata { 107 | color: #999; 108 | font-weight: bold; 109 | } 110 | 111 | .hljs-deletion { 112 | background: #fdd; 113 | } 114 | 115 | .hljs-addition { 116 | background: #dfd; 117 | } 118 | 119 | .diff .hljs-change { 120 | background: #0086b3; 121 | } 122 | 123 | .hljs-chunk { 124 | color: #aaa; 125 | } 126 | -------------------------------------------------------------------------------- /common/highlight/styles/foundation.css: -------------------------------------------------------------------------------- 1 | /* 2 | Description: Foundation 4 docs style for highlight.js 3 | Author: Dan Allen 4 | Website: http://foundation.zurb.com/docs/ 5 | Version: 1.0 6 | Date: 2013-04-02 7 | */ 8 | 9 | .hljs { 10 | display: block; 11 | overflow-x: auto; 12 | padding: 0.5em; 13 | background: #eee; 14 | -webkit-text-size-adjust: none; 15 | } 16 | 17 | .hljs-header, 18 | .hljs-decorator, 19 | .hljs-annotation { 20 | color: #000077; 21 | } 22 | 23 | .hljs-horizontal_rule, 24 | .hljs-link_url, 25 | .hljs-emphasis, 26 | .hljs-attribute { 27 | color: #070; 28 | } 29 | 30 | .hljs-emphasis { 31 | font-style: italic; 32 | } 33 | 34 | .hljs-link_label, 35 | .hljs-strong, 36 | .hljs-value, 37 | .hljs-string, 38 | .scss .hljs-value .hljs-string { 39 | color: #d14; 40 | } 41 | 42 | .hljs-strong { 43 | font-weight: bold; 44 | } 45 | 46 | .hljs-blockquote, 47 | .hljs-comment { 48 | color: #998; 49 | font-style: italic; 50 | } 51 | 52 | .asciidoc .hljs-title, 53 | .hljs-function .hljs-title { 54 | color: #900; 55 | } 56 | 57 | .hljs-class { 58 | color: #458; 59 | } 60 | 61 | .hljs-id, 62 | .hljs-pseudo, 63 | .hljs-constant, 64 | .hljs-hexcolor { 65 | color: teal; 66 | } 67 | 68 | .hljs-variable { 69 | color: #336699; 70 | } 71 | 72 | .hljs-bullet, 73 | .hljs-javadoc { 74 | color: #997700; 75 | } 76 | 77 | .hljs-pi, 78 | .hljs-doctype { 79 | color: #3344bb; 80 | } 81 | 82 | .hljs-code, 83 | .hljs-number { 84 | color: #099; 85 | } 86 | 87 | .hljs-important { 88 | color: #f00; 89 | } 90 | 91 | .smartquote, 92 | .hljs-label { 93 | color: #970; 94 | } 95 | 96 | .hljs-preprocessor, 97 | .hljs-pragma { 98 | color: #579; 99 | } 100 | 101 | .hljs-reserved, 102 | .hljs-keyword, 103 | .scss .hljs-value { 104 | color: #000; 105 | } 106 | 107 | .hljs-regexp { 108 | background-color: #fff0ff; 109 | color: #880088; 110 | } 111 | 112 | .hljs-symbol { 113 | color: #990073; 114 | } 115 | 116 | .hljs-symbol .hljs-string { 117 | color: #a60; 118 | } 119 | 120 | .hljs-tag { 121 | color: #007700; 122 | } 123 | 124 | .hljs-at_rule, 125 | .hljs-at_rule .hljs-keyword { 126 | color: #088; 127 | } 128 | 129 | .hljs-at_rule .hljs-preprocessor { 130 | color: #808; 131 | } 132 | 133 | .scss .hljs-tag, 134 | .scss .hljs-attribute { 135 | color: #339; 136 | } 137 | -------------------------------------------------------------------------------- /common/highlight/styles/far.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | FAR Style (c) MajestiC 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #000080; 12 | -webkit-text-size-adjust: none; 13 | } 14 | 15 | .hljs, 16 | .hljs-subst { 17 | color: #0ff; 18 | } 19 | 20 | .hljs-string, 21 | .ruby .hljs-string, 22 | .haskell .hljs-type, 23 | .hljs-tag .hljs-value, 24 | .hljs-rule .hljs-value, 25 | .hljs-rule .hljs-value .hljs-number, 26 | .hljs-preprocessor, 27 | .hljs-pragma, 28 | .ruby .hljs-symbol, 29 | .ruby .hljs-symbol .hljs-string, 30 | .hljs-built_in, 31 | .django .hljs-template_tag, 32 | .django .hljs-variable, 33 | .smalltalk .hljs-class, 34 | .hljs-addition, 35 | .apache .hljs-tag, 36 | .apache .hljs-cbracket, 37 | .tex .hljs-command, 38 | .coffeescript .hljs-attribute { 39 | color: #ff0; 40 | } 41 | 42 | .hljs-keyword, 43 | .css .hljs-id, 44 | .hljs-title, 45 | .hljs-type, 46 | .vbscript .hljs-built_in, 47 | .rsl .hljs-built_in, 48 | .smalltalk .hljs-class, 49 | .xml .hljs-tag .hljs-title, 50 | .hljs-winutils, 51 | .hljs-flow, 52 | .hljs-change, 53 | .hljs-envvar, 54 | .bash .hljs-variable, 55 | .tex .hljs-special, 56 | .hljs-name { 57 | color: #fff; 58 | } 59 | 60 | .hljs-comment, 61 | .hljs-phpdoc, 62 | .hljs-dartdoc, 63 | .hljs-javadoc, 64 | .hljs-annotation, 65 | .hljs-deletion, 66 | .apache .hljs-sqbracket, 67 | .tex .hljs-formula { 68 | color: #888; 69 | } 70 | 71 | .hljs-number, 72 | .hljs-date, 73 | .hljs-regexp, 74 | .hljs-literal, 75 | .smalltalk .hljs-symbol, 76 | .smalltalk .hljs-char, 77 | .clojure .hljs-attribute { 78 | color: #0f0; 79 | } 80 | 81 | .hljs-decorator, 82 | .django .hljs-filter .hljs-argument, 83 | .smalltalk .hljs-localvars, 84 | .smalltalk .hljs-array, 85 | .hljs-attr_selector, 86 | .hljs-pseudo, 87 | .xml .hljs-pi, 88 | .diff .hljs-header, 89 | .hljs-chunk, 90 | .hljs-shebang, 91 | .nginx .hljs-built_in, 92 | .hljs-prompt { 93 | color: #008080; 94 | } 95 | 96 | .hljs-keyword, 97 | .css .hljs-id, 98 | .hljs-title, 99 | .hljs-type, 100 | .vbscript .hljs-built_in, 101 | .rsl .hljs-built_in, 102 | .smalltalk .hljs-class, 103 | .hljs-winutils, 104 | .hljs-flow, 105 | .apache .hljs-tag, 106 | .nginx .hljs-built_in, 107 | .tex .hljs-command, 108 | .tex .hljs-special, 109 | .hljs-request, 110 | .hljs-status { 111 | font-weight: bold; 112 | } 113 | -------------------------------------------------------------------------------- /conformance-tests/datachannel_test/logging.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Peter Titz 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions 7 | * are met: 8 | * 1. Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 2. Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * 14 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 | * SUCH DAMAGE. 25 | */ 26 | 27 | // Shows extra test information 28 | var logStart = false; 29 | var time = 0; 30 | 31 | // Hide Logging Information 32 | $('#logWrapper').hide(); 33 | $('#logtable').hide(); 34 | 35 | 36 | // Logging information about tests 37 | function logWrite(text) { 38 | if (!logStart) 39 | logStart = performance.now() / 1000; 40 | time = ((performance.now() / 1000) - logStart).toFixed(3) + ' s'; 41 | $('#logLast').html(text); 42 | $('#logtable > tbody:last').append(''+time+''+text+''); 43 | console.log(text); 44 | } 45 | 46 | $('#btnShowLog').click(function(){ 47 | $('#logtable').toggle(); 48 | }); 49 | 50 | $('#btnShowResults').click(function(){ 51 | // show the results in a table for logging or something else.. 52 | var res = window.open('Test results','Test results','width=800, height=600'); 53 | res.document.open().write(testCompleteResults); 54 | }); 55 | -------------------------------------------------------------------------------- /common/highlight/styles/idea.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Intellij Idea-like styling (c) Vasily Polovnyov 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | color: #000; 12 | background: #fff; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-subst, 17 | .hljs-title, 18 | .json .hljs-value { 19 | font-weight: normal; 20 | color: #000; 21 | } 22 | 23 | .hljs-comment, 24 | .hljs-javadoc, 25 | .diff .hljs-header { 26 | color: #808080; 27 | font-style: italic; 28 | } 29 | 30 | .hljs-annotation, 31 | .hljs-decorator, 32 | .hljs-preprocessor, 33 | .hljs-pragma, 34 | .hljs-doctype, 35 | .hljs-pi, 36 | .hljs-chunk, 37 | .hljs-shebang, 38 | .apache .hljs-cbracket, 39 | .hljs-prompt, 40 | .http .hljs-title { 41 | color: #808000; 42 | } 43 | 44 | .hljs-tag, 45 | .hljs-pi { 46 | background: #efefef; 47 | } 48 | 49 | .hljs-tag .hljs-title, 50 | .hljs-id, 51 | .hljs-attr_selector, 52 | .hljs-pseudo, 53 | .hljs-literal, 54 | .hljs-keyword, 55 | .hljs-hexcolor, 56 | .css .hljs-function, 57 | .ini .hljs-title, 58 | .css .hljs-class, 59 | .hljs-list .hljs-keyword, 60 | .nginx .hljs-title, 61 | .tex .hljs-command, 62 | .hljs-request, 63 | .hljs-status { 64 | font-weight: bold; 65 | color: #000080; 66 | } 67 | 68 | .hljs-attribute, 69 | .hljs-rule .hljs-keyword, 70 | .hljs-number, 71 | .hljs-date, 72 | .hljs-regexp, 73 | .tex .hljs-special { 74 | font-weight: bold; 75 | color: #0000ff; 76 | } 77 | 78 | .hljs-number, 79 | .hljs-regexp { 80 | font-weight: normal; 81 | } 82 | 83 | .hljs-string, 84 | .hljs-value, 85 | .hljs-filter .hljs-argument, 86 | .css .hljs-function .hljs-params, 87 | .apache .hljs-tag { 88 | color: #008000; 89 | font-weight: bold; 90 | } 91 | 92 | .hljs-symbol, 93 | .ruby .hljs-symbol .hljs-string, 94 | .hljs-char, 95 | .tex .hljs-formula { 96 | color: #000; 97 | background: #d0eded; 98 | font-style: italic; 99 | } 100 | 101 | .hljs-phpdoc, 102 | .hljs-dartdoc, 103 | .hljs-yardoctag, 104 | .hljs-javadoctag { 105 | text-decoration: underline; 106 | } 107 | 108 | .hljs-variable, 109 | .hljs-envvar, 110 | .apache .hljs-sqbracket, 111 | .nginx .hljs-built_in, 112 | .hljs-name { 113 | color: #660e7a; 114 | } 115 | 116 | .hljs-addition { 117 | background: #baeeba; 118 | } 119 | 120 | .hljs-deletion { 121 | background: #ffc8bd; 122 | } 123 | 124 | .diff .hljs-change { 125 | background: #bccff9; 126 | } 127 | -------------------------------------------------------------------------------- /common/highlight/styles/zenburn.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Zenburn style from voldmar.ru (c) Vladimir Epifanov 4 | based on dark.css by Ivan Sagalaev 5 | 6 | */ 7 | 8 | .hljs { 9 | display: block; 10 | overflow-x: auto; 11 | padding: 0.5em; 12 | background: #3f3f3f; 13 | color: #dcdcdc; 14 | -webkit-text-size-adjust: none; 15 | } 16 | 17 | .hljs-keyword, 18 | .hljs-tag, 19 | .css .hljs-class, 20 | .css .hljs-id, 21 | .lisp .hljs-title, 22 | .nginx .hljs-title, 23 | .hljs-request, 24 | .hljs-status, 25 | .clojure .hljs-attribute { 26 | color: #e3ceab; 27 | } 28 | 29 | .django .hljs-template_tag, 30 | .django .hljs-variable, 31 | .django .hljs-filter .hljs-argument { 32 | color: #dcdcdc; 33 | } 34 | 35 | .hljs-number, 36 | .hljs-date { 37 | color: #8cd0d3; 38 | } 39 | 40 | .dos .hljs-envvar, 41 | .dos .hljs-stream, 42 | .hljs-variable, 43 | .apache .hljs-sqbracket, 44 | .hljs-name { 45 | color: #efdcbc; 46 | } 47 | 48 | .dos .hljs-flow, 49 | .diff .hljs-change, 50 | .python .exception, 51 | .python .hljs-built_in, 52 | .hljs-literal, 53 | .tex .hljs-special { 54 | color: #efefaf; 55 | } 56 | 57 | .diff .hljs-chunk, 58 | .hljs-subst { 59 | color: #8f8f8f; 60 | } 61 | 62 | .dos .hljs-keyword, 63 | .hljs-decorator, 64 | .hljs-title, 65 | .hljs-type, 66 | .diff .hljs-header, 67 | .ruby .hljs-class .hljs-parent, 68 | .apache .hljs-tag, 69 | .nginx .hljs-built_in, 70 | .tex .hljs-command, 71 | .hljs-prompt { 72 | color: #efef8f; 73 | } 74 | 75 | .dos .hljs-winutils, 76 | .ruby .hljs-symbol, 77 | .ruby .hljs-symbol .hljs-string, 78 | .ruby .hljs-string { 79 | color: #dca3a3; 80 | } 81 | 82 | .diff .hljs-deletion, 83 | .hljs-string, 84 | .hljs-tag .hljs-value, 85 | .hljs-preprocessor, 86 | .hljs-pragma, 87 | .hljs-built_in, 88 | .hljs-javadoc, 89 | .smalltalk .hljs-class, 90 | .smalltalk .hljs-localvars, 91 | .smalltalk .hljs-array, 92 | .css .hljs-rule .hljs-value, 93 | .hljs-attr_selector, 94 | .hljs-pseudo, 95 | .apache .hljs-cbracket, 96 | .tex .hljs-formula, 97 | .coffeescript .hljs-attribute { 98 | color: #cc9393; 99 | } 100 | 101 | .hljs-shebang, 102 | .diff .hljs-addition, 103 | .hljs-comment, 104 | .hljs-annotation, 105 | .hljs-pi, 106 | .hljs-doctype { 107 | color: #7f9f7f; 108 | } 109 | 110 | .coffeescript .javascript, 111 | .javascript .xml, 112 | .tex .hljs-formula, 113 | .xml .javascript, 114 | .xml .vbscript, 115 | .xml .css, 116 | .xml .hljs-cdata { 117 | opacity: 0.5; 118 | } 119 | 120 | -------------------------------------------------------------------------------- /common/highlight/styles/magula.css: -------------------------------------------------------------------------------- 1 | /* 2 | Description: Magula style for highligh.js 3 | Author: Ruslan Keba 4 | Website: http://rukeba.com/ 5 | Version: 1.0 6 | Date: 2009-01-03 7 | Music: Aphex Twin / Xtal 8 | */ 9 | 10 | .hljs { 11 | display: block; 12 | overflow-x: auto; 13 | padding: 0.5em; 14 | background-color: #f4f4f4; 15 | -webkit-text-size-adjust: none; 16 | } 17 | 18 | .hljs, 19 | .hljs-subst { 20 | color: black; 21 | } 22 | 23 | .hljs-string, 24 | .hljs-title, 25 | .hljs-parent, 26 | .hljs-tag .hljs-value, 27 | .hljs-rule .hljs-value, 28 | .hljs-preprocessor, 29 | .hljs-pragma, 30 | .ruby .hljs-symbol, 31 | .ruby .hljs-symbol .hljs-string, 32 | .hljs-template_tag, 33 | .django .hljs-variable, 34 | .smalltalk .hljs-class, 35 | .hljs-addition, 36 | .hljs-flow, 37 | .hljs-stream, 38 | .bash .hljs-variable, 39 | .apache .hljs-cbracket, 40 | .coffeescript .hljs-attribute { 41 | color: #050; 42 | } 43 | 44 | .hljs-comment, 45 | .hljs-annotation, 46 | .diff .hljs-header, 47 | .hljs-chunk { 48 | color: #777; 49 | } 50 | 51 | .hljs-number, 52 | .hljs-date, 53 | .hljs-regexp, 54 | .hljs-literal, 55 | .hljs-name, 56 | .smalltalk .hljs-symbol, 57 | .smalltalk .hljs-char, 58 | .hljs-change, 59 | .tex .hljs-special { 60 | color: #800; 61 | } 62 | 63 | .hljs-label, 64 | .hljs-javadoc, 65 | .ruby .hljs-string, 66 | .hljs-decorator, 67 | .hljs-filter .hljs-argument, 68 | .hljs-localvars, 69 | .hljs-array, 70 | .hljs-attr_selector, 71 | .hljs-pseudo, 72 | .hljs-pi, 73 | .hljs-doctype, 74 | .hljs-deletion, 75 | .hljs-envvar, 76 | .hljs-shebang, 77 | .apache .hljs-sqbracket, 78 | .nginx .hljs-built_in, 79 | .tex .hljs-formula, 80 | .hljs-prompt, 81 | .clojure .hljs-attribute { 82 | color: #00e; 83 | } 84 | 85 | .hljs-keyword, 86 | .hljs-id, 87 | .hljs-phpdoc, 88 | .hljs-dartdoc, 89 | .hljs-title, 90 | .hljs-built_in, 91 | .smalltalk .hljs-class, 92 | .hljs-winutils, 93 | .bash .hljs-variable, 94 | .apache .hljs-tag, 95 | .xml .hljs-tag, 96 | .tex .hljs-command, 97 | .hljs-request, 98 | .hljs-status { 99 | font-weight: bold; 100 | color: navy; 101 | } 102 | 103 | .nginx .hljs-built_in { 104 | font-weight: normal; 105 | } 106 | 107 | .coffeescript .javascript, 108 | .javascript .xml, 109 | .tex .hljs-formula, 110 | .xml .javascript, 111 | .xml .vbscript, 112 | .xml .css, 113 | .xml .hljs-cdata { 114 | opacity: 0.5; 115 | } 116 | 117 | /* --- */ 118 | .apache .hljs-tag { 119 | font-weight: bold; 120 | color: blue; 121 | } 122 | 123 | -------------------------------------------------------------------------------- /common/highlight/styles/school_book.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | School Book style from goldblog.com.ua (c) Zaripov Yura 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 15px 0.5em 0.5em 30px; 11 | font-size: 11px !important; 12 | line-height:16px !important; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | pre{ 17 | background:#f6f6ae url(./school_book.png); 18 | border-top: solid 2px #d2e8b9; 19 | border-bottom: solid 1px #d2e8b9; 20 | } 21 | 22 | .hljs-keyword, 23 | .hljs-literal, 24 | .hljs-change, 25 | .hljs-winutils, 26 | .hljs-flow, 27 | .nginx .hljs-title, 28 | .tex .hljs-special { 29 | color:#005599; 30 | font-weight:bold; 31 | } 32 | 33 | .hljs, 34 | .hljs-subst, 35 | .hljs-tag .hljs-keyword { 36 | color: #3e5915; 37 | } 38 | 39 | .hljs-string, 40 | .hljs-title, 41 | .hljs-type, 42 | .hljs-tag .hljs-value, 43 | .css .hljs-rule .hljs-value, 44 | .hljs-preprocessor, 45 | .hljs-pragma, 46 | .ruby .hljs-symbol, 47 | .ruby .hljs-symbol .hljs-string, 48 | .ruby .hljs-class .hljs-parent, 49 | .hljs-built_in, 50 | .django .hljs-template_tag, 51 | .django .hljs-variable, 52 | .smalltalk .hljs-class, 53 | .hljs-javadoc, 54 | .ruby .hljs-string, 55 | .django .hljs-filter .hljs-argument, 56 | .smalltalk .hljs-localvars, 57 | .smalltalk .hljs-array, 58 | .hljs-attr_selector, 59 | .hljs-pseudo, 60 | .hljs-addition, 61 | .hljs-stream, 62 | .hljs-envvar, 63 | .apache .hljs-tag, 64 | .apache .hljs-cbracket, 65 | .nginx .hljs-built_in, 66 | .tex .hljs-command, 67 | .coffeescript .hljs-attribute, 68 | .hljs-name { 69 | color: #2c009f; 70 | } 71 | 72 | .hljs-comment, 73 | .hljs-annotation, 74 | .hljs-decorator, 75 | .hljs-pi, 76 | .hljs-doctype, 77 | .hljs-deletion, 78 | .hljs-shebang, 79 | .apache .hljs-sqbracket { 80 | color: #e60415; 81 | } 82 | 83 | .hljs-keyword, 84 | .hljs-literal, 85 | .css .hljs-id, 86 | .hljs-phpdoc, 87 | .hljs-dartdoc, 88 | .hljs-title, 89 | .hljs-type, 90 | .vbscript .hljs-built_in, 91 | .rsl .hljs-built_in, 92 | .smalltalk .hljs-class, 93 | .xml .hljs-tag .hljs-title, 94 | .diff .hljs-header, 95 | .hljs-chunk, 96 | .hljs-winutils, 97 | .bash .hljs-variable, 98 | .apache .hljs-tag, 99 | .tex .hljs-command, 100 | .hljs-request, 101 | .hljs-status { 102 | font-weight: bold; 103 | } 104 | 105 | .coffeescript .javascript, 106 | .javascript .xml, 107 | .tex .hljs-formula, 108 | .xml .javascript, 109 | .xml .vbscript, 110 | .xml .css, 111 | .xml .hljs-cdata { 112 | opacity: 0.5; 113 | } 114 | -------------------------------------------------------------------------------- /common/highlight/styles/docco.css: -------------------------------------------------------------------------------- 1 | /* 2 | Docco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars) 3 | */ 4 | 5 | .hljs { 6 | display: block; 7 | overflow-x: auto; 8 | padding: 0.5em; 9 | color: #000; 10 | background: #f8f8ff; 11 | -webkit-text-size-adjust: none; 12 | } 13 | 14 | .hljs-comment, 15 | .diff .hljs-header, 16 | .hljs-javadoc { 17 | color: #408080; 18 | font-style: italic; 19 | } 20 | 21 | .hljs-keyword, 22 | .assignment, 23 | .hljs-literal, 24 | .css .rule .hljs-keyword, 25 | .hljs-winutils, 26 | .javascript .hljs-title, 27 | .lisp .hljs-title, 28 | .hljs-subst { 29 | color: #954121; 30 | } 31 | 32 | .hljs-number, 33 | .hljs-hexcolor { 34 | color: #40a070; 35 | } 36 | 37 | .hljs-string, 38 | .hljs-tag .hljs-value, 39 | .hljs-phpdoc, 40 | .hljs-dartdoc, 41 | .tex .hljs-formula, 42 | .hljs-name { 43 | color: #219161; 44 | } 45 | 46 | .hljs-title, 47 | .hljs-id { 48 | color: #19469d; 49 | } 50 | .hljs-params { 51 | color: #00f; 52 | } 53 | 54 | .javascript .hljs-title, 55 | .lisp .hljs-title, 56 | .hljs-subst { 57 | font-weight: normal; 58 | } 59 | 60 | .hljs-class .hljs-title, 61 | .haskell .hljs-label, 62 | .tex .hljs-command { 63 | color: #458; 64 | font-weight: bold; 65 | } 66 | 67 | .hljs-tag, 68 | .hljs-tag .hljs-title, 69 | .hljs-rule .hljs-property, 70 | .django .hljs-tag .hljs-keyword { 71 | color: #000080; 72 | font-weight: normal; 73 | } 74 | 75 | .hljs-attribute, 76 | .hljs-variable, 77 | .instancevar, 78 | .lisp .hljs-body { 79 | color: #008080; 80 | } 81 | 82 | .hljs-regexp { 83 | color: #b68; 84 | } 85 | 86 | .hljs-class { 87 | color: #458; 88 | font-weight: bold; 89 | } 90 | 91 | .hljs-symbol, 92 | .ruby .hljs-symbol .hljs-string, 93 | .ruby .hljs-symbol .hljs-keyword, 94 | .ruby .hljs-symbol .keymethods, 95 | .lisp .hljs-keyword, 96 | .tex .hljs-special, 97 | .input_number { 98 | color: #990073; 99 | } 100 | 101 | .builtin, 102 | .constructor, 103 | .hljs-built_in, 104 | .lisp .hljs-title { 105 | color: #0086b3; 106 | } 107 | 108 | .hljs-preprocessor, 109 | .hljs-pragma, 110 | .hljs-pi, 111 | .hljs-doctype, 112 | .hljs-shebang, 113 | .hljs-cdata { 114 | color: #999; 115 | font-weight: bold; 116 | } 117 | 118 | .hljs-deletion { 119 | background: #fdd; 120 | } 121 | 122 | .hljs-addition { 123 | background: #dfd; 124 | } 125 | 126 | .diff .hljs-change { 127 | background: #0086b3; 128 | } 129 | 130 | .hljs-chunk { 131 | color: #aaa; 132 | } 133 | 134 | .tex .hljs-formula { 135 | opacity: 0.5; 136 | } 137 | -------------------------------------------------------------------------------- /common/highlight/styles/agate.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Agate by Taufik Nurrohman 3 | * ---------------------------------------------------- 4 | * 5 | * #ade5fc 6 | * #a2fca2 7 | * #c6b4f0 8 | * #d36363 9 | * #fcc28c 10 | * #fc9b9b 11 | * #ffa 12 | * #fff 13 | * #333 14 | * #62c8f3 15 | * #888 16 | * 17 | */ 18 | 19 | .hljs { 20 | display: block; 21 | overflow-x: auto; 22 | padding: .5em; 23 | background: #333; 24 | color: white; 25 | -webkit-text-size-adjust: none; 26 | } 27 | 28 | .asciidoc .hljs-title, 29 | .hljs-label, 30 | .hljs-tag .hljs-title, 31 | .hljs-prompt, 32 | .http .hljs-request { 33 | font-weight: bold; 34 | } 35 | 36 | .hljs-change, 37 | .hljs-code { 38 | font-style: italic; 39 | } 40 | 41 | .hljs-tag, 42 | .ini .hljs-title { 43 | color: #62c8f3; 44 | } 45 | 46 | .hljs-id, 47 | .hljs-cbracket, 48 | .hljs-tag .hljs-value { 49 | color: #ade5fc; 50 | } 51 | 52 | .hljs-string, 53 | .hljs-bullet { 54 | color: #a2fca2; 55 | } 56 | 57 | .hljs-type, 58 | .hljs-variable, 59 | .hljs-name, 60 | .actionscript .hljs-title, 61 | .aspectj .hljs-annotation, 62 | .aspectj .hljs-title, 63 | .hljs-attribute, 64 | .hljs-change, 65 | .hljs-blockquote, 66 | .hljs-built_in { 67 | color: #ffa; 68 | } 69 | 70 | .hljs-number, 71 | .hljs-hexcolor, 72 | .hljs-link_label, 73 | .hljs-link_reference { 74 | color: #d36363; 75 | } 76 | 77 | .hljs-keyword, 78 | .hljs-literal, 79 | .hljs-constant, 80 | .css .hljs-tag, 81 | .hljs-typename, 82 | .hljs-winutils { 83 | color: #fcc28c; 84 | } 85 | 86 | .hljs-comment, 87 | .hljs-cdata, 88 | .hljs-preprocessor, 89 | .hljs-annotation, 90 | .hljs-decorator, 91 | .hljs-doctype, 92 | .hljs-deletion, 93 | .hljs-shebang, 94 | .apache .hljs-sqbracket, 95 | .tex .hljs-formula, 96 | .hljs-header, 97 | .hljs-horizontal_rule, 98 | .hljs-code, 99 | .hljs-javadoc { 100 | color: #888; 101 | } 102 | 103 | .hljs-regexp, 104 | .hljs-attr_selector { 105 | color: #c6b4f0; 106 | } 107 | 108 | .hljs-important, 109 | .hljs-doctype, 110 | .hljs-pi, 111 | .hljs-chunk, 112 | .actionscript .hljs-type, 113 | .hljs-shebang, 114 | .hljs-pragma, 115 | .http .hljs-attribute { 116 | color: #fc9b9b; 117 | } 118 | 119 | .hljs-deletion { 120 | background-color: #fc9b9b; 121 | color: #333; 122 | } 123 | 124 | .hljs-addition { 125 | background-color: #a2fca2; 126 | color: #333; 127 | } 128 | 129 | .hljs a, 130 | .hljs-tag .hljs-attribute { 131 | color: inherit; 132 | } 133 | 134 | .hljs a:focus, 135 | .hljs a:hover { 136 | color: inherit; 137 | text-decoration: underline; 138 | } 139 | -------------------------------------------------------------------------------- /common/highlight/styles/monokai.css: -------------------------------------------------------------------------------- 1 | /* 2 | Monokai style - ported by Luigi Maselli - http://grigio.org 3 | */ 4 | 5 | .hljs { 6 | display: block; 7 | overflow-x: auto; 8 | padding: 0.5em; 9 | background: #272822; 10 | -webkit-text-size-adjust: none; 11 | } 12 | 13 | .hljs-tag, 14 | .hljs-tag .hljs-title, 15 | .hljs-keyword, 16 | .hljs-literal, 17 | .hljs-strong, 18 | .hljs-change, 19 | .hljs-winutils, 20 | .hljs-flow, 21 | .nginx .hljs-title, 22 | .tex .hljs-special { 23 | color: #f92672; 24 | } 25 | 26 | .hljs { 27 | color: #ddd; 28 | } 29 | 30 | .hljs .hljs-constant, 31 | .asciidoc .hljs-code, 32 | .markdown .hljs-code { 33 | color: #66d9ef; 34 | } 35 | 36 | .hljs-code, 37 | .hljs-class .hljs-title, 38 | .hljs-header { 39 | color: white; 40 | } 41 | 42 | .hljs-link_label, 43 | .hljs-attribute, 44 | .hljs-symbol, 45 | .hljs-symbol .hljs-string, 46 | .hljs-value, 47 | .hljs-regexp { 48 | color: #bf79db; 49 | } 50 | 51 | .hljs-link_url, 52 | .hljs-tag .hljs-value, 53 | .hljs-string, 54 | .hljs-bullet, 55 | .hljs-subst, 56 | .hljs-title, 57 | .hljs-emphasis, 58 | .hljs-type, 59 | .hljs-preprocessor, 60 | .hljs-pragma, 61 | .ruby .hljs-class .hljs-parent, 62 | .hljs-built_in, 63 | .django .hljs-template_tag, 64 | .django .hljs-variable, 65 | .smalltalk .hljs-class, 66 | .hljs-javadoc, 67 | .django .hljs-filter .hljs-argument, 68 | .smalltalk .hljs-localvars, 69 | .smalltalk .hljs-array, 70 | .hljs-attr_selector, 71 | .hljs-pseudo, 72 | .hljs-addition, 73 | .hljs-stream, 74 | .hljs-envvar, 75 | .apache .hljs-tag, 76 | .apache .hljs-cbracket, 77 | .tex .hljs-command, 78 | .hljs-prompt, 79 | .hljs-name { 80 | color: #a6e22e; 81 | } 82 | 83 | .hljs-comment, 84 | .hljs-annotation, 85 | .smartquote, 86 | .hljs-blockquote, 87 | .hljs-horizontal_rule, 88 | .hljs-decorator, 89 | .hljs-pi, 90 | .hljs-doctype, 91 | .hljs-deletion, 92 | .hljs-shebang, 93 | .apache .hljs-sqbracket, 94 | .tex .hljs-formula { 95 | color: #75715e; 96 | } 97 | 98 | .hljs-keyword, 99 | .hljs-literal, 100 | .css .hljs-id, 101 | .hljs-phpdoc, 102 | .hljs-dartdoc, 103 | .hljs-title, 104 | .hljs-header, 105 | .hljs-type, 106 | .vbscript .hljs-built_in, 107 | .rsl .hljs-built_in, 108 | .smalltalk .hljs-class, 109 | .diff .hljs-header, 110 | .hljs-chunk, 111 | .hljs-winutils, 112 | .bash .hljs-variable, 113 | .apache .hljs-tag, 114 | .tex .hljs-special, 115 | .hljs-request, 116 | .hljs-status { 117 | font-weight: bold; 118 | } 119 | 120 | .coffeescript .javascript, 121 | .javascript .xml, 122 | .tex .hljs-formula, 123 | .xml .javascript, 124 | .xml .vbscript, 125 | .xml .css, 126 | .xml .hljs-cdata { 127 | opacity: 0.5; 128 | } 129 | -------------------------------------------------------------------------------- /common/custom.css: -------------------------------------------------------------------------------- 1 | .footer { 2 | margin-top: 20px; 3 | padding-top: 5px; 4 | border-top: 1px solid #ddd; 5 | } 6 | 7 | h1 { 8 | font-size: 30px; 9 | } 10 | 11 | h2 { 12 | font-size: 26px; 13 | } 14 | 15 | h3 { 16 | font-size: 22px; 17 | } 18 | 19 | .progressLabel { 20 | float: left; 21 | margin-right: 1em; 22 | } 23 | 24 | 25 | .testControls { 26 | margin-bottom: 20px; 27 | width: 100%; 28 | } 29 | 30 | #testlist label { 31 | font-weight:500; 32 | } 33 | 34 | progress { 35 | height:20px; 36 | border-radius:9px; 37 | } 38 | 39 | .popover{ 40 | max-width: 100%; // Max Width of the popover (depending on the container!) 41 | } 42 | 43 | span.dcStatus-open { 44 | color:#3c763d; 45 | } 46 | 47 | span.dcStatus-closed { 48 | color:#a94442; 49 | } 50 | 51 | span.dcStatus-connecting, span.dcStatus-closing { 52 | color:#337ab7; 53 | } 54 | 55 | table#npmChannelParameters td,table#npmChannelParameters th, table#npmChannelParameters input { 56 | text-align:center; 57 | vertical-align:middle; 58 | } 59 | 60 | #signalingID { 61 | font-size: 14px; 62 | margin-bottom: 5px; 63 | text-align:center; 64 | } 65 | 66 | #npmChannelParameters th span.glyphicon { 67 | cursor: pointer; 68 | } 69 | 70 | input.has-error { 71 | border: 1px solid #a94442; 72 | background-color:#F2DEDE; 73 | } 74 | 75 | table#testlist td, table#npmChannelParameters td{ 76 | white-space: nowrap; 77 | } 78 | 79 | .row 80 | { 81 | margin-top: 10px; 82 | } 83 | 84 | 85 | .spinner { 86 | margin: 10px auto; 87 | width: 50px; 88 | height: 30px; 89 | text-align: center; 90 | font-size: 10px; 91 | } 92 | 93 | .spinner > div { 94 | background-color: #666; 95 | height: 100%; 96 | width: 6px; 97 | display: inline-block; 98 | 99 | -webkit-animation: stretchdelay 1.2s infinite ease-in-out; 100 | animation: stretchdelay 1.2s infinite ease-in-out; 101 | } 102 | 103 | .spinner .rect2 { 104 | -webkit-animation-delay: -1.1s; 105 | animation-delay: -1.1s; 106 | } 107 | 108 | .spinner .rect3 { 109 | -webkit-animation-delay: -1.0s; 110 | animation-delay: -1.0s; 111 | } 112 | 113 | .spinner .rect4 { 114 | -webkit-animation-delay: -0.9s; 115 | animation-delay: -0.9s; 116 | } 117 | 118 | .spinner .rect5 { 119 | -webkit-animation-delay: -0.8s; 120 | animation-delay: -0.8s; 121 | } 122 | 123 | @-webkit-keyframes stretchdelay { 124 | 0%, 40%, 100% { -webkit-transform: scaleY(0.4) } 125 | 20% { -webkit-transform: scaleY(1.0) } 126 | } 127 | 128 | @keyframes stretchdelay { 129 | 0%, 40%, 100% { 130 | transform: scaleY(0.4); 131 | -webkit-transform: scaleY(0.4); 132 | } 20% { 133 | transform: scaleY(1.0); 134 | -webkit-transform: scaleY(1.0); 135 | } 136 | } -------------------------------------------------------------------------------- /common/highlight/styles/googlecode.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Google Code style (c) Aahan Krish 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: white; 12 | color: black; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-comment, 17 | .hljs-javadoc { 18 | color: #800; 19 | } 20 | 21 | .hljs-keyword, 22 | .method, 23 | .hljs-list .hljs-keyword, 24 | .nginx .hljs-title, 25 | .hljs-tag .hljs-title, 26 | .setting .hljs-value, 27 | .hljs-winutils, 28 | .tex .hljs-command, 29 | .http .hljs-title, 30 | .hljs-request, 31 | .hljs-status { 32 | color: #008; 33 | } 34 | 35 | .hljs-envvar, 36 | .tex .hljs-special { 37 | color: #660; 38 | } 39 | 40 | .hljs-string, 41 | .hljs-tag .hljs-value, 42 | .hljs-cdata, 43 | .hljs-filter .hljs-argument, 44 | .hljs-attr_selector, 45 | .apache .hljs-cbracket, 46 | .hljs-date, 47 | .hljs-regexp, 48 | .coffeescript .hljs-attribute { 49 | color: #080; 50 | } 51 | 52 | .hljs-sub .hljs-identifier, 53 | .hljs-pi, 54 | .hljs-tag, 55 | .hljs-tag .hljs-keyword, 56 | .hljs-decorator, 57 | .ini .hljs-title, 58 | .hljs-shebang, 59 | .hljs-prompt, 60 | .hljs-hexcolor, 61 | .hljs-rule .hljs-value, 62 | .hljs-literal, 63 | .hljs-symbol, 64 | .ruby .hljs-symbol .hljs-string, 65 | .hljs-number, 66 | .css .hljs-function, 67 | .clojure .hljs-attribute { 68 | color: #066; 69 | } 70 | 71 | .hljs-class .hljs-title, 72 | .smalltalk .hljs-class, 73 | .hljs-javadoctag, 74 | .hljs-yardoctag, 75 | .hljs-phpdoc, 76 | .hljs-dartdoc, 77 | .hljs-type, 78 | .hljs-typename, 79 | .hljs-tag .hljs-attribute, 80 | .hljs-doctype, 81 | .hljs-class .hljs-id, 82 | .hljs-built_in, 83 | .setting, 84 | .hljs-params, 85 | .hljs-variable, 86 | .hljs-name { 87 | color: #606; 88 | } 89 | 90 | .css .hljs-tag, 91 | .hljs-rule .hljs-property, 92 | .hljs-pseudo, 93 | .hljs-subst { 94 | color: #000; 95 | } 96 | 97 | .css .hljs-class, 98 | .css .hljs-id { 99 | color: #9b703f; 100 | } 101 | 102 | .hljs-value .hljs-important { 103 | color: #ff7700; 104 | font-weight: bold; 105 | } 106 | 107 | .hljs-rule .hljs-keyword { 108 | color: #c5af75; 109 | } 110 | 111 | .hljs-annotation, 112 | .apache .hljs-sqbracket, 113 | .nginx .hljs-built_in { 114 | color: #9b859d; 115 | } 116 | 117 | .hljs-preprocessor, 118 | .hljs-preprocessor *, 119 | .hljs-pragma { 120 | color: #444; 121 | } 122 | 123 | .tex .hljs-formula { 124 | background-color: #eee; 125 | font-style: italic; 126 | } 127 | 128 | .diff .hljs-header, 129 | .hljs-chunk { 130 | color: #808080; 131 | font-weight: bold; 132 | } 133 | 134 | .diff .hljs-change { 135 | background-color: #bccff9; 136 | } 137 | 138 | .hljs-addition { 139 | background-color: #baeeba; 140 | } 141 | 142 | .hljs-deletion { 143 | background-color: #ffc8bd; 144 | } 145 | 146 | .hljs-comment .hljs-yardoctag { 147 | font-weight: bold; 148 | } 149 | -------------------------------------------------------------------------------- /common/highlight/styles/arta.css: -------------------------------------------------------------------------------- 1 | /* 2 | Date: 17.V.2011 3 | Author: pumbur 4 | */ 5 | 6 | .hljs { 7 | display: block; 8 | overflow-x: auto; 9 | padding: 0.5em; 10 | background: #222; 11 | -webkit-text-size-adjust: none; 12 | } 13 | 14 | .profile .hljs-header *, 15 | .ini .hljs-title, 16 | .nginx .hljs-title { 17 | color: #fff; 18 | } 19 | 20 | .hljs-comment, 21 | .hljs-javadoc, 22 | .hljs-preprocessor, 23 | .hljs-preprocessor .hljs-title, 24 | .hljs-pragma, 25 | .hljs-shebang, 26 | .profile .hljs-summary, 27 | .diff, 28 | .hljs-pi, 29 | .hljs-doctype, 30 | .hljs-tag, 31 | .css .hljs-rule, 32 | .tex .hljs-special { 33 | color: #444; 34 | } 35 | 36 | .hljs-string, 37 | .hljs-symbol, 38 | .diff .hljs-change, 39 | .hljs-regexp, 40 | .xml .hljs-attribute, 41 | .smalltalk .hljs-char, 42 | .xml .hljs-value, 43 | .ini .hljs-value, 44 | .clojure .hljs-attribute, 45 | .coffeescript .hljs-attribute { 46 | color: #ffcc33; 47 | } 48 | 49 | .hljs-number, 50 | .hljs-addition { 51 | color: #00cc66; 52 | } 53 | 54 | .hljs-built_in, 55 | .hljs-literal, 56 | .hljs-type, 57 | .hljs-typename, 58 | .go .hljs-constant, 59 | .ini .hljs-keyword, 60 | .lua .hljs-title, 61 | .perl .hljs-variable, 62 | .php .hljs-variable, 63 | .mel .hljs-variable, 64 | .django .hljs-variable, 65 | .css .funtion, 66 | .smalltalk .method, 67 | .hljs-hexcolor, 68 | .hljs-important, 69 | .hljs-flow, 70 | .hljs-inheritance, 71 | .hljs-name, 72 | .parser3 .hljs-variable { 73 | color: #32aaee; 74 | } 75 | 76 | .hljs-keyword, 77 | .hljs-tag .hljs-title, 78 | .css .hljs-tag, 79 | .css .hljs-class, 80 | .css .hljs-id, 81 | .css .hljs-pseudo, 82 | .css .hljs-attr_selector, 83 | .hljs-winutils, 84 | .tex .hljs-command, 85 | .hljs-request, 86 | .hljs-status { 87 | color: #6644aa; 88 | } 89 | 90 | .hljs-title, 91 | .ruby .hljs-constant, 92 | .vala .hljs-constant, 93 | .hljs-parent, 94 | .hljs-deletion, 95 | .hljs-template_tag, 96 | .css .hljs-keyword, 97 | .objectivec .hljs-class .hljs-id, 98 | .smalltalk .hljs-class, 99 | .lisp .hljs-keyword, 100 | .apache .hljs-tag, 101 | .nginx .hljs-variable, 102 | .hljs-envvar, 103 | .bash .hljs-variable, 104 | .go .hljs-built_in, 105 | .vbscript .hljs-built_in, 106 | .lua .hljs-built_in, 107 | .rsl .hljs-built_in, 108 | .tail, 109 | .avrasm .hljs-label, 110 | .tex .hljs-formula, 111 | .tex .hljs-formula * { 112 | color: #bb1166; 113 | } 114 | 115 | .hljs-yardoctag, 116 | .hljs-phpdoc, 117 | .hljs-dartdoc, 118 | .profile .hljs-header, 119 | .ini .hljs-title, 120 | .apache .hljs-tag, 121 | .parser3 .hljs-title { 122 | font-weight: bold; 123 | } 124 | 125 | .coffeescript .javascript, 126 | .javascript .xml, 127 | .tex .hljs-formula, 128 | .xml .javascript, 129 | .xml .vbscript, 130 | .xml .css, 131 | .xml .hljs-cdata { 132 | opacity: 0.6; 133 | } 134 | 135 | .hljs, 136 | .hljs-subst, 137 | .diff .hljs-chunk, 138 | .css .hljs-value, 139 | .css .hljs-attribute { 140 | color: #aaa; 141 | } 142 | -------------------------------------------------------------------------------- /common/highlight/styles/obsidian.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Obsidian style 3 | * ported by Alexander Marenin (http://github.com/ioncreature) 4 | */ 5 | 6 | .hljs { 7 | display: block; 8 | overflow-x: auto; 9 | padding: 0.5em; 10 | background: #282b2e; 11 | -webkit-text-size-adjust: none; 12 | } 13 | 14 | .hljs-keyword, 15 | .hljs-literal, 16 | .hljs-change, 17 | .hljs-winutils, 18 | .hljs-flow, 19 | .nginx .hljs-title, 20 | .css .hljs-id, 21 | .tex .hljs-special { 22 | color: #93c763; 23 | } 24 | 25 | .hljs-number { 26 | color: #ffcd22; 27 | } 28 | 29 | .hljs { 30 | color: #e0e2e4; 31 | } 32 | 33 | .css .hljs-tag, 34 | .css .hljs-pseudo { 35 | color: #d0d2b5; 36 | } 37 | 38 | .hljs-attribute, 39 | .hljs .hljs-constant { 40 | color: #668bb0; 41 | } 42 | 43 | .xml .hljs-attribute { 44 | color: #b3b689; 45 | } 46 | 47 | .xml .hljs-tag .hljs-value { 48 | color: #e8e2b7; 49 | } 50 | 51 | .hljs-code, 52 | .hljs-class .hljs-title, 53 | .hljs-header { 54 | color: white; 55 | } 56 | 57 | .hljs-class, 58 | .hljs-hexcolor { 59 | color: #93c763; 60 | } 61 | 62 | .hljs-regexp { 63 | color: #d39745; 64 | } 65 | 66 | .hljs-at_rule, 67 | .hljs-at_rule .hljs-keyword { 68 | color: #a082bd; 69 | } 70 | 71 | .hljs-doctype { 72 | color: #557182; 73 | } 74 | 75 | .hljs-link_url, 76 | .hljs-tag, 77 | .hljs-tag .hljs-title, 78 | .hljs-bullet, 79 | .hljs-subst, 80 | .hljs-emphasis, 81 | .hljs-type, 82 | .hljs-preprocessor, 83 | .hljs-pragma, 84 | .ruby .hljs-class .hljs-parent, 85 | .hljs-built_in, 86 | .django .hljs-template_tag, 87 | .django .hljs-variable, 88 | .smalltalk .hljs-class, 89 | .hljs-javadoc, 90 | .django .hljs-filter .hljs-argument, 91 | .smalltalk .hljs-localvars, 92 | .smalltalk .hljs-array, 93 | .hljs-attr_selector, 94 | .hljs-pseudo, 95 | .hljs-addition, 96 | .hljs-stream, 97 | .hljs-envvar, 98 | .apache .hljs-tag, 99 | .apache .hljs-cbracket, 100 | .tex .hljs-command, 101 | .hljs-prompt, 102 | .hljs-name { 103 | color: #8cbbad; 104 | } 105 | 106 | .hljs-string { 107 | color: #ec7600; 108 | } 109 | 110 | .hljs-comment, 111 | .hljs-annotation, 112 | .hljs-blockquote, 113 | .hljs-horizontal_rule, 114 | .hljs-decorator, 115 | .hljs-pi, 116 | .hljs-deletion, 117 | .hljs-shebang, 118 | .apache .hljs-sqbracket, 119 | .tex .hljs-formula { 120 | color: #818e96; 121 | } 122 | 123 | .hljs-keyword, 124 | .hljs-literal, 125 | .css .hljs-id, 126 | .hljs-phpdoc, 127 | .hljs-dartdoc, 128 | .hljs-title, 129 | .hljs-header, 130 | .hljs-type, 131 | .vbscript .hljs-built_in, 132 | .rsl .hljs-built_in, 133 | .smalltalk .hljs-class, 134 | .diff .hljs-header, 135 | .hljs-chunk, 136 | .hljs-winutils, 137 | .bash .hljs-variable, 138 | .apache .hljs-tag, 139 | .tex .hljs-special, 140 | .hljs-request, 141 | .hljs-at_rule .hljs-keyword, 142 | .hljs-status { 143 | font-weight: bold; 144 | } 145 | 146 | .coffeescript .javascript, 147 | .javascript .xml, 148 | .tex .hljs-formula, 149 | .xml .javascript, 150 | .xml .vbscript, 151 | .xml .css, 152 | .xml .hljs-cdata { 153 | opacity: 0.5; 154 | } 155 | -------------------------------------------------------------------------------- /common/highlight/styles/xcode.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | XCode style (c) Angel Garcia 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #fff; 12 | color: black; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-comment, 17 | .hljs-javadoc { 18 | color: #006a00; 19 | } 20 | 21 | .hljs-keyword, 22 | .hljs-literal, 23 | .nginx .hljs-title { 24 | color: #aa0d91; 25 | } 26 | .method, 27 | .hljs-list .hljs-title, 28 | .hljs-tag .hljs-title, 29 | .setting .hljs-value, 30 | .hljs-winutils, 31 | .tex .hljs-command, 32 | .http .hljs-title, 33 | .hljs-request, 34 | .hljs-status, 35 | .hljs-name { 36 | color: #008; 37 | } 38 | 39 | .hljs-envvar, 40 | .tex .hljs-special { 41 | color: #660; 42 | } 43 | 44 | .hljs-string { 45 | color: #c41a16; 46 | } 47 | .hljs-tag .hljs-value, 48 | .hljs-cdata, 49 | .hljs-filter .hljs-argument, 50 | .hljs-attr_selector, 51 | .apache .hljs-cbracket, 52 | .hljs-date, 53 | .hljs-regexp { 54 | color: #080; 55 | } 56 | 57 | .hljs-sub .hljs-identifier, 58 | .hljs-pi, 59 | .hljs-tag, 60 | .hljs-tag .hljs-keyword, 61 | .hljs-decorator, 62 | .ini .hljs-title, 63 | .hljs-shebang, 64 | .hljs-prompt, 65 | .hljs-hexcolor, 66 | .hljs-rule .hljs-value, 67 | .hljs-symbol, 68 | .hljs-symbol .hljs-string, 69 | .hljs-number, 70 | .css .hljs-function, 71 | .hljs-function .hljs-title, 72 | .coffeescript .hljs-attribute { 73 | color: #1c00cf; 74 | } 75 | 76 | .hljs-class .hljs-title, 77 | .smalltalk .hljs-class, 78 | .hljs-javadoctag, 79 | .hljs-yardoctag, 80 | .hljs-phpdoc, 81 | .hljs-dartdoc, 82 | .hljs-type, 83 | .hljs-typename, 84 | .hljs-tag .hljs-attribute, 85 | .hljs-doctype, 86 | .hljs-class .hljs-id, 87 | .hljs-built_in, 88 | .setting, 89 | .hljs-params, 90 | .clojure .hljs-attribute { 91 | color: #5c2699; 92 | } 93 | 94 | .hljs-variable { 95 | color: #3f6e74; 96 | } 97 | .css .hljs-tag, 98 | .hljs-rule .hljs-property, 99 | .hljs-pseudo, 100 | .hljs-subst { 101 | color: #000; 102 | } 103 | 104 | .css .hljs-class, 105 | .css .hljs-id { 106 | color: #9b703f; 107 | } 108 | 109 | .hljs-value .hljs-important { 110 | color: #ff7700; 111 | font-weight: bold; 112 | } 113 | 114 | .hljs-rule .hljs-keyword { 115 | color: #c5af75; 116 | } 117 | 118 | .hljs-annotation, 119 | .apache .hljs-sqbracket, 120 | .nginx .hljs-built_in { 121 | color: #9b859d; 122 | } 123 | 124 | .hljs-preprocessor, 125 | .hljs-preprocessor *, 126 | .hljs-pragma { 127 | color: #643820; 128 | } 129 | 130 | .tex .hljs-formula { 131 | background-color: #eee; 132 | font-style: italic; 133 | } 134 | 135 | .diff .hljs-header, 136 | .hljs-chunk { 137 | color: #808080; 138 | font-weight: bold; 139 | } 140 | 141 | .diff .hljs-change { 142 | background-color: #bccff9; 143 | } 144 | 145 | .hljs-addition { 146 | background-color: #baeeba; 147 | } 148 | 149 | .hljs-deletion { 150 | background-color: #ffc8bd; 151 | } 152 | 153 | .hljs-comment .hljs-yardoctag { 154 | font-weight: bold; 155 | } 156 | 157 | .method .hljs-id { 158 | color: #000; 159 | } 160 | -------------------------------------------------------------------------------- /common/highlight/styles/sunburst.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Sunburst-like style (c) Vasily Polovnyov 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #000; 12 | color: #f8f8f8; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-comment, 17 | .hljs-javadoc { 18 | color: #aeaeae; 19 | font-style: italic; 20 | } 21 | 22 | .hljs-keyword, 23 | .ruby .hljs-function .hljs-keyword, 24 | .hljs-request, 25 | .hljs-status, 26 | .nginx .hljs-title { 27 | color: #e28964; 28 | } 29 | 30 | .hljs-function .hljs-keyword, 31 | .hljs-sub .hljs-keyword, 32 | .method, 33 | .hljs-list .hljs-title { 34 | color: #99cf50; 35 | } 36 | 37 | .hljs-string, 38 | .hljs-tag .hljs-value, 39 | .hljs-cdata, 40 | .hljs-filter .hljs-argument, 41 | .hljs-attr_selector, 42 | .apache .hljs-cbracket, 43 | .hljs-date, 44 | .tex .hljs-command, 45 | .coffeescript .hljs-attribute, 46 | .hljs-name { 47 | color: #65b042; 48 | } 49 | 50 | .hljs-subst { 51 | color: #daefa3; 52 | } 53 | 54 | .hljs-regexp { 55 | color: #e9c062; 56 | } 57 | 58 | .hljs-title, 59 | .hljs-sub .hljs-identifier, 60 | .hljs-pi, 61 | .hljs-tag, 62 | .hljs-tag .hljs-keyword, 63 | .hljs-decorator, 64 | .hljs-shebang, 65 | .hljs-prompt { 66 | color: #89bdff; 67 | } 68 | 69 | .hljs-class .hljs-title, 70 | .hljs-type, 71 | .smalltalk .hljs-class, 72 | .hljs-javadoctag, 73 | .hljs-yardoctag, 74 | .hljs-phpdoc, 75 | .hljs-dartdoc { 76 | text-decoration: underline; 77 | } 78 | 79 | .hljs-symbol, 80 | .ruby .hljs-symbol .hljs-string, 81 | .hljs-number { 82 | color: #3387cc; 83 | } 84 | 85 | .hljs-params, 86 | .hljs-variable, 87 | .clojure .hljs-attribute { 88 | color: #3e87e3; 89 | } 90 | 91 | .css .hljs-tag, 92 | .hljs-rule .hljs-property, 93 | .hljs-pseudo, 94 | .tex .hljs-special { 95 | color: #cda869; 96 | } 97 | 98 | .css .hljs-class { 99 | color: #9b703f; 100 | } 101 | 102 | .hljs-rule .hljs-keyword { 103 | color: #c5af75; 104 | } 105 | 106 | .hljs-rule .hljs-value { 107 | color: #cf6a4c; 108 | } 109 | 110 | .css .hljs-id { 111 | color: #8b98ab; 112 | } 113 | 114 | .hljs-annotation, 115 | .apache .hljs-sqbracket, 116 | .nginx .hljs-built_in { 117 | color: #9b859d; 118 | } 119 | 120 | .hljs-preprocessor, 121 | .hljs-pragma { 122 | color: #8996a8; 123 | } 124 | 125 | .hljs-hexcolor, 126 | .css .hljs-value .hljs-number { 127 | color: #dd7b3b; 128 | } 129 | 130 | .css .hljs-function { 131 | color: #dad085; 132 | } 133 | 134 | .diff .hljs-header, 135 | .hljs-chunk, 136 | .tex .hljs-formula { 137 | background-color: #0e2231; 138 | color: #f8f8f8; 139 | font-style: italic; 140 | } 141 | 142 | .diff .hljs-change { 143 | background-color: #4a410d; 144 | color: #f8f8f8; 145 | } 146 | 147 | .hljs-addition { 148 | background-color: #253b22; 149 | color: #f8f8f8; 150 | } 151 | 152 | .hljs-deletion { 153 | background-color: #420e09; 154 | color: #f8f8f8; 155 | } 156 | 157 | .coffeescript .javascript, 158 | .javascript .xml, 159 | .tex .hljs-formula, 160 | .xml .javascript, 161 | .xml .vbscript, 162 | .xml .css, 163 | .xml .hljs-cdata { 164 | opacity: 0.5; 165 | } 166 | -------------------------------------------------------------------------------- /common/highlight/styles/darkula.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Darkula color scheme from the JetBrains family of IDEs 4 | 5 | */ 6 | 7 | 8 | .hljs { 9 | display: block; 10 | overflow-x: auto; 11 | padding: 0.5em; 12 | background: #2b2b2b; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs, 17 | .hljs-tag, 18 | .hljs-title, 19 | .css .hljs-rule, 20 | .css .hljs-value, 21 | .aspectj .hljs-function, 22 | .css .hljs-function .hljs-preprocessor, 23 | .hljs-pragma { 24 | color: #bababa; 25 | } 26 | 27 | .hljs-strongemphasis, 28 | .hljs-strong, 29 | .hljs-emphasis { 30 | color: #a8a8a2; 31 | } 32 | 33 | .hljs-bullet, 34 | .hljs-blockquote, 35 | .hljs-horizontal_rule, 36 | .hljs-number, 37 | .hljs-regexp, 38 | .alias .hljs-keyword, 39 | .hljs-literal, 40 | .hljs-hexcolor { 41 | color: #6896ba; 42 | } 43 | 44 | .hljs-tag .hljs-value, 45 | .hljs-code, 46 | .css .hljs-class, 47 | .hljs-class .hljs-title:last-child { 48 | color: #a6e22e; 49 | } 50 | 51 | .hljs-link_url { 52 | font-size: 80%; 53 | } 54 | 55 | .hljs-emphasis, 56 | .hljs-strongemphasis, 57 | .hljs-class .hljs-title:last-child, 58 | .hljs-typename { 59 | font-style: italic; 60 | } 61 | 62 | .hljs-keyword, 63 | .ruby .hljs-class .hljs-keyword:first-child, 64 | .ruby .hljs-function .hljs-keyword, 65 | .hljs-function, 66 | .hljs-change, 67 | .hljs-winutils, 68 | .hljs-flow, 69 | .nginx .hljs-title, 70 | .tex .hljs-special, 71 | .hljs-header, 72 | .hljs-attribute, 73 | .hljs-symbol, 74 | .hljs-symbol .hljs-string, 75 | .hljs-tag .hljs-title, 76 | .hljs-value, 77 | .alias .hljs-keyword:first-child, 78 | .css .hljs-tag, 79 | .css .unit, 80 | .css .hljs-important { 81 | color: #cb7832; 82 | } 83 | 84 | .hljs-function .hljs-keyword, 85 | .hljs-class .hljs-keyword:first-child, 86 | .hljs-aspect .hljs-keyword:first-child, 87 | .hljs-constant, 88 | .hljs-typename, 89 | .css .hljs-attribute { 90 | color: #cb7832; 91 | } 92 | 93 | .hljs-variable, 94 | .hljs-params, 95 | .hljs-class .hljs-title, 96 | .hljs-aspect .hljs-title { 97 | color: #b9b9b9; 98 | } 99 | 100 | .hljs-string, 101 | .css .hljs-id, 102 | .hljs-subst, 103 | .hljs-type, 104 | .ruby .hljs-class .hljs-parent, 105 | .hljs-built_in, 106 | .django .hljs-template_tag, 107 | .django .hljs-variable, 108 | .smalltalk .hljs-class, 109 | .django .hljs-filter .hljs-argument, 110 | .smalltalk .hljs-localvars, 111 | .smalltalk .hljs-array, 112 | .hljs-attr_selector, 113 | .hljs-pseudo, 114 | .hljs-addition, 115 | .hljs-stream, 116 | .hljs-envvar, 117 | .apache .hljs-tag, 118 | .apache .hljs-cbracket, 119 | .tex .hljs-command, 120 | .hljs-prompt, 121 | .hljs-link_label, 122 | .hljs-link_url, 123 | .hljs-name { 124 | color: #e0c46c; 125 | } 126 | 127 | .hljs-comment, 128 | .hljs-javadoc, 129 | .hljs-annotation, 130 | .hljs-pi, 131 | .hljs-doctype, 132 | .hljs-deletion, 133 | .hljs-shebang, 134 | .apache .hljs-sqbracket, 135 | .tex .hljs-formula { 136 | color: #7f7f7f; 137 | } 138 | 139 | .hljs-decorator { 140 | color: #bab429; 141 | } 142 | 143 | .coffeescript .javascript, 144 | .javascript .xml, 145 | .tex .hljs-formula, 146 | .xml .javascript, 147 | .xml .vbscript, 148 | .xml .css, 149 | .xml .hljs-cdata, 150 | .xml .php, 151 | .php .xml { 152 | opacity: 0.5; 153 | } 154 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | WebRTC-DataChannel Playground - Gyrocolor 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 69 | 70 |
71 |

Select a tool from the menu above

72 |
73 | 74 |
75 |
76 | 77 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /common/highlight/styles/monokai_sublime.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/ 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #23241f; 12 | -webkit-text-size-adjust: none; 13 | } 14 | 15 | .hljs, 16 | .hljs-tag, 17 | .css .hljs-rule, 18 | .css .hljs-value, 19 | .aspectj .hljs-function, 20 | .css .hljs-function 21 | .hljs-preprocessor, 22 | .hljs-pragma { 23 | color: #f8f8f2; 24 | } 25 | 26 | .hljs-strongemphasis, 27 | .hljs-strong, 28 | .hljs-emphasis { 29 | color: #a8a8a2; 30 | } 31 | 32 | .hljs-bullet, 33 | .hljs-blockquote, 34 | .hljs-horizontal_rule, 35 | .hljs-number, 36 | .hljs-regexp, 37 | .alias .hljs-keyword, 38 | .hljs-literal, 39 | .hljs-hexcolor { 40 | color: #ae81ff; 41 | } 42 | 43 | .hljs-tag .hljs-value, 44 | .hljs-code, 45 | .hljs-title, 46 | .css .hljs-class, 47 | .hljs-class .hljs-title:last-child { 48 | color: #a6e22e; 49 | } 50 | 51 | .hljs-link_url { 52 | font-size: 80%; 53 | } 54 | 55 | .hljs-strong, 56 | .hljs-strongemphasis { 57 | font-weight: bold; 58 | } 59 | 60 | .hljs-emphasis, 61 | .hljs-strongemphasis, 62 | .hljs-class .hljs-title:last-child, 63 | .hljs-typename { 64 | font-style: italic; 65 | } 66 | 67 | .hljs-keyword, 68 | .ruby .hljs-class .hljs-keyword:first-child, 69 | .ruby .hljs-function .hljs-keyword, 70 | .hljs-function, 71 | .hljs-change, 72 | .hljs-winutils, 73 | .hljs-flow, 74 | .nginx .hljs-title, 75 | .tex .hljs-special, 76 | .hljs-header, 77 | .hljs-attribute, 78 | .hljs-symbol, 79 | .hljs-symbol .hljs-string, 80 | .hljs-tag .hljs-title, 81 | .hljs-value, 82 | .alias .hljs-keyword:first-child, 83 | .css .hljs-tag, 84 | .css .unit, 85 | .css .hljs-important { 86 | color: #f92672; 87 | } 88 | 89 | .hljs-function .hljs-keyword, 90 | .hljs-class .hljs-keyword:first-child, 91 | .hljs-aspect .hljs-keyword:first-child, 92 | .hljs-constant, 93 | .hljs-typename, 94 | .hljs-name, 95 | .css .hljs-attribute { 96 | color: #66d9ef; 97 | } 98 | 99 | .hljs-variable, 100 | .hljs-params, 101 | .hljs-class .hljs-title, 102 | .hljs-aspect .hljs-title { 103 | color: #f8f8f2; 104 | } 105 | 106 | .hljs-string, 107 | .css .hljs-id, 108 | .hljs-subst, 109 | .hljs-type, 110 | .ruby .hljs-class .hljs-parent, 111 | .hljs-built_in, 112 | .django .hljs-template_tag, 113 | .django .hljs-variable, 114 | .smalltalk .hljs-class, 115 | .django .hljs-filter .hljs-argument, 116 | .smalltalk .hljs-localvars, 117 | .smalltalk .hljs-array, 118 | .hljs-attr_selector, 119 | .hljs-pseudo, 120 | .hljs-addition, 121 | .hljs-stream, 122 | .hljs-envvar, 123 | .apache .hljs-tag, 124 | .apache .hljs-cbracket, 125 | .tex .hljs-command, 126 | .hljs-prompt, 127 | .hljs-link_label, 128 | .hljs-link_url { 129 | color: #e6db74; 130 | } 131 | 132 | .hljs-comment, 133 | .hljs-javadoc, 134 | .hljs-annotation, 135 | .hljs-decorator, 136 | .hljs-pi, 137 | .hljs-doctype, 138 | .hljs-deletion, 139 | .hljs-shebang, 140 | .apache .hljs-sqbracket, 141 | .tex .hljs-formula { 142 | color: #75715e; 143 | } 144 | 145 | .coffeescript .javascript, 146 | .javascript .xml, 147 | .tex .hljs-formula, 148 | .xml .javascript, 149 | .xml .vbscript, 150 | .xml .css, 151 | .xml .hljs-cdata, 152 | .xml .php, 153 | .php .xml { 154 | opacity: 0.5; 155 | } 156 | -------------------------------------------------------------------------------- /common/highlight/styles/default.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Original style from softwaremaniacs.org (c) Ivan Sagalaev 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #f0f0f0; 12 | -webkit-text-size-adjust: none; 13 | } 14 | 15 | .hljs, 16 | .hljs-subst, 17 | .hljs-tag .hljs-title, 18 | .nginx .hljs-title { 19 | color: black; 20 | } 21 | 22 | .hljs-string, 23 | .hljs-title, 24 | .hljs-constant, 25 | .hljs-parent, 26 | .hljs-tag .hljs-value, 27 | .hljs-rule .hljs-value, 28 | .hljs-preprocessor, 29 | .hljs-pragma, 30 | .hljs-name, 31 | .haml .hljs-symbol, 32 | .ruby .hljs-symbol, 33 | .ruby .hljs-symbol .hljs-string, 34 | .hljs-template_tag, 35 | .django .hljs-variable, 36 | .smalltalk .hljs-class, 37 | .hljs-addition, 38 | .hljs-flow, 39 | .hljs-stream, 40 | .bash .hljs-variable, 41 | .pf .hljs-variable, 42 | .apache .hljs-tag, 43 | .apache .hljs-cbracket, 44 | .tex .hljs-command, 45 | .tex .hljs-special, 46 | .erlang_repl .hljs-function_or_atom, 47 | .asciidoc .hljs-header, 48 | .markdown .hljs-header, 49 | .coffeescript .hljs-attribute { 50 | color: #800; 51 | } 52 | 53 | .smartquote, 54 | .hljs-comment, 55 | .hljs-annotation, 56 | .diff .hljs-header, 57 | .hljs-chunk, 58 | .asciidoc .hljs-blockquote, 59 | .markdown .hljs-blockquote { 60 | color: #888; 61 | } 62 | 63 | .hljs-number, 64 | .hljs-date, 65 | .hljs-regexp, 66 | .hljs-literal, 67 | .hljs-hexcolor, 68 | .smalltalk .hljs-symbol, 69 | .smalltalk .hljs-char, 70 | .go .hljs-constant, 71 | .hljs-change, 72 | .lasso .hljs-variable, 73 | .makefile .hljs-variable, 74 | .asciidoc .hljs-bullet, 75 | .markdown .hljs-bullet, 76 | .asciidoc .hljs-link_url, 77 | .markdown .hljs-link_url { 78 | color: #080; 79 | } 80 | 81 | .hljs-label, 82 | .hljs-javadoc, 83 | .ruby .hljs-string, 84 | .hljs-decorator, 85 | .hljs-filter .hljs-argument, 86 | .hljs-localvars, 87 | .hljs-array, 88 | .hljs-attr_selector, 89 | .hljs-important, 90 | .hljs-pseudo, 91 | .hljs-pi, 92 | .haml .hljs-bullet, 93 | .hljs-doctype, 94 | .hljs-deletion, 95 | .hljs-envvar, 96 | .hljs-shebang, 97 | .apache .hljs-sqbracket, 98 | .nginx .hljs-built_in, 99 | .tex .hljs-formula, 100 | .erlang_repl .hljs-reserved, 101 | .hljs-prompt, 102 | .asciidoc .hljs-link_label, 103 | .markdown .hljs-link_label, 104 | .vhdl .hljs-attribute, 105 | .clojure .hljs-attribute, 106 | .asciidoc .hljs-attribute, 107 | .lasso .hljs-attribute, 108 | .coffeescript .hljs-property, 109 | .hljs-phony { 110 | color: #88f; 111 | } 112 | 113 | .hljs-keyword, 114 | .hljs-id, 115 | .hljs-title, 116 | .hljs-built_in, 117 | .css .hljs-tag, 118 | .hljs-javadoctag, 119 | .hljs-phpdoc, 120 | .hljs-dartdoc, 121 | .hljs-yardoctag, 122 | .smalltalk .hljs-class, 123 | .hljs-winutils, 124 | .bash .hljs-variable, 125 | .pf .hljs-variable, 126 | .apache .hljs-tag, 127 | .hljs-type, 128 | .hljs-typename, 129 | .tex .hljs-command, 130 | .asciidoc .hljs-strong, 131 | .markdown .hljs-strong, 132 | .hljs-request, 133 | .hljs-status { 134 | font-weight: bold; 135 | } 136 | 137 | .asciidoc .hljs-emphasis, 138 | .markdown .hljs-emphasis { 139 | font-style: italic; 140 | } 141 | 142 | .nginx .hljs-built_in { 143 | font-weight: normal; 144 | } 145 | 146 | .coffeescript .javascript, 147 | .javascript .xml, 148 | .lasso .markup, 149 | .tex .hljs-formula, 150 | .xml .javascript, 151 | .xml .vbscript, 152 | .xml .css, 153 | .xml .hljs-cdata { 154 | opacity: 0.5; 155 | } 156 | -------------------------------------------------------------------------------- /common/highlight/styles/hybrid.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | vim-hybrid theme by w0ng (https://github.com/w0ng/vim-hybrid) 4 | 5 | */ 6 | 7 | /*background color*/ 8 | .hljs { 9 | display: block; 10 | overflow-x: auto; 11 | padding: 0.5em; 12 | background: #1d1f21; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | /*selection color*/ 17 | .hljs::selection, 18 | .hljs span::selection { 19 | background: #373b41; 20 | } 21 | .hljs::-moz-selection, 22 | .hljs span::-moz-selection { 23 | background: #373b41; 24 | } 25 | 26 | /*foreground color*/ 27 | .hljs, 28 | .hljs-setting .hljs-value, 29 | .hljs-expression .hljs-variable, 30 | .hljs-expression .hljs-begin-block, 31 | .hljs-expression .hljs-end-block, 32 | .hljs-class .hljs-params, 33 | .hljs-function .hljs-params, 34 | .hljs-at_rule .hljs-preprocessor { 35 | color: #c5c8c6; 36 | } 37 | 38 | /*color: fg_yellow*/ 39 | .hljs-title, 40 | .hljs-function .hljs-title, 41 | .hljs-keyword .hljs-common, 42 | .hljs-class .hljs-title, 43 | .hljs-decorator, 44 | .hljs-tag .hljs-title, 45 | .hljs-header, 46 | .hljs-sub, 47 | .hljs-function { 48 | color: #f0c674; 49 | } 50 | 51 | /*color: fg_comment*/ 52 | .hljs-comment, 53 | .hljs-javadoc, 54 | .hljs-output .hljs-value, 55 | .hljs-pi, 56 | .hljs-shebang, 57 | .hljs-doctype { 58 | color: #707880; 59 | } 60 | 61 | /*color: fg_red*/ 62 | .hljs-number, 63 | .hljs-symbol, 64 | .hljs-literal, 65 | .hljs-deletion, 66 | .hljs-link_url, 67 | .hljs-symbol .hljs-string, 68 | .hljs-argument, 69 | .hljs-hexcolor, 70 | .hljs-input .hljs-prompt, 71 | .hljs-char { 72 | color: #cc6666 73 | } 74 | 75 | /*color: fg_green*/ 76 | .hljs-string, 77 | .hljs-special, 78 | .hljs-javadoctag, 79 | .hljs-addition, 80 | .hljs-important, 81 | .hljs-tag .hljs-value, 82 | .hljs-at.rule .hljs-keyword, 83 | .hljs-regexp, 84 | .hljs-attr_selector { 85 | color: #b5bd68; 86 | } 87 | 88 | /*color: fg_purple*/ 89 | .hljs-variable, 90 | .hljs-property, 91 | .hljs-envar, 92 | .hljs-code, 93 | .hljs-expression, 94 | .hljs-localvars, 95 | .hljs-id, 96 | .hljs-variable .hljs-filter, 97 | .hljs-variable .hljs-filter .hljs-keyword, 98 | .hljs-template_tag .hljs-filter .hljs-keyword, 99 | .hljs-name { 100 | color: #b294bb; 101 | } 102 | 103 | /*color: fg_blue*/ 104 | .hljs-statement, 105 | .hljs-label, 106 | .hljs-keyword, 107 | .hljs-xmlDocTag, 108 | .hljs-function .hljs-keyword, 109 | .hljs-chunk, 110 | .hljs-cdata, 111 | .hljs-link_label, 112 | .hljs-bullet, 113 | .hljs-class .hljs-keyword, 114 | .hljs-smartquote, 115 | .hljs-method, 116 | .hljs-list .hljs-title, 117 | .hljs-tag { 118 | color: #81a2be; 119 | } 120 | 121 | /*color: fg_aqua*/ 122 | .hljs-pseudo, 123 | .hljs-exception, 124 | .hljs-annotation, 125 | .hljs-subst, 126 | .hljs-change, 127 | .hljs-cbracket, 128 | .hljs-operator, 129 | .hljs-horizontal_rule, 130 | .hljs-preprocessor .hljs-keyword, 131 | .hljs-typedef, 132 | .hljs-template_tag, 133 | .hljs-variable, 134 | .hljs-variable .hljs-filter .hljs-argument, 135 | .hljs-at_rule, 136 | .hljs-at_rule .hljs-string, 137 | .hljs-at_rule .hljs-keyword { 138 | color: #8abeb7; 139 | } 140 | 141 | 142 | /*color: fg_orange*/ 143 | .hljs-type, 144 | .hljs-typename, 145 | .hljs-inheritance .hljs-parent, 146 | .hljs-constant, 147 | .hljs-built_in, 148 | .hljs-setting, 149 | .hljs-structure, 150 | .hljs-link_reference, 151 | .hljs-attribute, 152 | .hljs-blockquote, 153 | .hljs-quoted, 154 | .hljs-class, 155 | .hljs-header { 156 | color: #de935f; 157 | } 158 | 159 | .hljs-emphasis 160 | { 161 | font-style: italic; 162 | } 163 | 164 | .hljs-strong 165 | { 166 | font-weight: bold; 167 | } 168 | 169 | 170 | 171 | 172 | -------------------------------------------------------------------------------- /common/highlight/styles/railscasts.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Railscasts-like style (c) Visoft, Inc. (Damien White) 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | background: #232323; 12 | color: #e6e1dc; 13 | -webkit-text-size-adjust: none; 14 | } 15 | 16 | .hljs-comment, 17 | .hljs-javadoc, 18 | .hljs-shebang { 19 | color: #bc9458; 20 | font-style: italic; 21 | } 22 | 23 | .hljs-keyword, 24 | .ruby .hljs-function .hljs-keyword, 25 | .hljs-request, 26 | .hljs-status, 27 | .nginx .hljs-title, 28 | .method, 29 | .hljs-list .hljs-title { 30 | color: #c26230; 31 | } 32 | 33 | .hljs-string, 34 | .hljs-number, 35 | .hljs-regexp, 36 | .hljs-tag .hljs-value, 37 | .hljs-cdata, 38 | .hljs-filter .hljs-argument, 39 | .hljs-attr_selector, 40 | .apache .hljs-cbracket, 41 | .hljs-date, 42 | .tex .hljs-command, 43 | .asciidoc .hljs-link_label, 44 | .markdown .hljs-link_label { 45 | color: #a5c261; 46 | } 47 | 48 | .hljs-subst { 49 | color: #519f50; 50 | } 51 | 52 | .hljs-tag, 53 | .hljs-tag .hljs-keyword, 54 | .hljs-tag .hljs-title, 55 | .hljs-doctype, 56 | .hljs-sub .hljs-identifier, 57 | .hljs-pi, 58 | .input_number { 59 | color: #e8bf6a; 60 | } 61 | 62 | .hljs-identifier { 63 | color: #d0d0ff; 64 | } 65 | 66 | .hljs-class .hljs-title, 67 | .hljs-type, 68 | .smalltalk .hljs-class, 69 | .hljs-javadoctag, 70 | .hljs-yardoctag, 71 | .hljs-phpdoc, 72 | .hljs-dartdoc { 73 | text-decoration: none; 74 | } 75 | 76 | .hljs-constant, 77 | .hljs-name { 78 | color: #da4939; 79 | } 80 | 81 | 82 | .hljs-symbol, 83 | .hljs-built_in, 84 | .ruby .hljs-symbol .hljs-string, 85 | .ruby .hljs-symbol .hljs-identifier, 86 | .asciidoc .hljs-link_url, 87 | .markdown .hljs-link_url, 88 | .hljs-attribute { 89 | color: #6d9cbe; 90 | } 91 | 92 | .asciidoc .hljs-link_url, 93 | .markdown .hljs-link_url { 94 | text-decoration: underline; 95 | } 96 | 97 | 98 | 99 | .hljs-params, 100 | .hljs-variable, 101 | .clojure .hljs-attribute { 102 | color: #d0d0ff; 103 | } 104 | 105 | .css .hljs-tag, 106 | .hljs-rule .hljs-property, 107 | .hljs-pseudo, 108 | .tex .hljs-special { 109 | color: #cda869; 110 | } 111 | 112 | .css .hljs-class { 113 | color: #9b703f; 114 | } 115 | 116 | .hljs-rule .hljs-keyword { 117 | color: #c5af75; 118 | } 119 | 120 | .hljs-rule .hljs-value { 121 | color: #cf6a4c; 122 | } 123 | 124 | .css .hljs-id { 125 | color: #8b98ab; 126 | } 127 | 128 | .hljs-annotation, 129 | .apache .hljs-sqbracket, 130 | .nginx .hljs-built_in { 131 | color: #9b859d; 132 | } 133 | 134 | .hljs-preprocessor, 135 | .hljs-preprocessor *, 136 | .hljs-pragma { 137 | color: #8996a8 !important; 138 | } 139 | 140 | .hljs-hexcolor, 141 | .css .hljs-value .hljs-number { 142 | color: #a5c261; 143 | } 144 | 145 | .hljs-title, 146 | .hljs-decorator, 147 | .css .hljs-function { 148 | color: #ffc66d; 149 | } 150 | 151 | .diff .hljs-header, 152 | .hljs-chunk { 153 | background-color: #2f33ab; 154 | color: #e6e1dc; 155 | display: inline-block; 156 | width: 100%; 157 | } 158 | 159 | .diff .hljs-change { 160 | background-color: #4a410d; 161 | color: #f8f8f8; 162 | display: inline-block; 163 | width: 100%; 164 | } 165 | 166 | .hljs-addition { 167 | background-color: #144212; 168 | color: #e6e1dc; 169 | display: inline-block; 170 | width: 100%; 171 | } 172 | 173 | .hljs-deletion { 174 | background-color: #600; 175 | color: #e6e1dc; 176 | display: inline-block; 177 | width: 100%; 178 | } 179 | 180 | .coffeescript .javascript, 181 | .javascript .xml, 182 | .tex .hljs-formula, 183 | .xml .javascript, 184 | .xml .vbscript, 185 | .xml .css, 186 | .xml .hljs-cdata { 187 | opacity: 0.7; 188 | } 189 | -------------------------------------------------------------------------------- /common/jquery.cookie.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * jQuery Cookie Plugin v1.4.1 3 | * https://github.com/carhartl/jquery-cookie 4 | * 5 | * Copyright 2006, 2014 Klaus Hartl 6 | * Released under the MIT license 7 | */ 8 | (function (factory) { 9 | if (typeof define === 'function' && define.amd) { 10 | // AMD 11 | define(['jquery'], factory); 12 | } else if (typeof exports === 'object') { 13 | // CommonJS 14 | factory(require('jquery')); 15 | } else { 16 | // Browser globals 17 | factory(jQuery); 18 | } 19 | }(function ($) { 20 | 21 | var pluses = /\+/g; 22 | 23 | function encode(s) { 24 | return config.raw ? s : encodeURIComponent(s); 25 | } 26 | 27 | function decode(s) { 28 | return config.raw ? s : decodeURIComponent(s); 29 | } 30 | 31 | function stringifyCookieValue(value) { 32 | return encode(config.json ? JSON.stringify(value) : String(value)); 33 | } 34 | 35 | function parseCookieValue(s) { 36 | if (s.indexOf('"') === 0) { 37 | // This is a quoted cookie as according to RFC2068, unescape... 38 | s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); 39 | } 40 | 41 | try { 42 | // Replace server-side written pluses with spaces. 43 | // If we can't decode the cookie, ignore it, it's unusable. 44 | // If we can't parse the cookie, ignore it, it's unusable. 45 | s = decodeURIComponent(s.replace(pluses, ' ')); 46 | return config.json ? JSON.parse(s) : s; 47 | } catch(e) {} 48 | } 49 | 50 | function read(s, converter) { 51 | var value = config.raw ? s : parseCookieValue(s); 52 | return $.isFunction(converter) ? converter(value) : value; 53 | } 54 | 55 | var config = $.cookie = function (key, value, options) { 56 | 57 | // Write 58 | 59 | if (arguments.length > 1 && !$.isFunction(value)) { 60 | options = $.extend({}, config.defaults, options); 61 | 62 | if (typeof options.expires === 'number') { 63 | var days = options.expires, t = options.expires = new Date(); 64 | t.setTime(+t + days * 864e+5); 65 | } 66 | 67 | return (document.cookie = [ 68 | encode(key), '=', stringifyCookieValue(value), 69 | options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE 70 | options.path ? '; path=' + options.path : '', 71 | options.domain ? '; domain=' + options.domain : '', 72 | options.secure ? '; secure' : '' 73 | ].join('')); 74 | } 75 | 76 | // Read 77 | 78 | var result = key ? undefined : {}; 79 | 80 | // To prevent the for loop in the first place assign an empty array 81 | // in case there are no cookies at all. Also prevents odd result when 82 | // calling $.cookie(). 83 | var cookies = document.cookie ? document.cookie.split('; ') : []; 84 | 85 | for (var i = 0, l = cookies.length; i < l; i++) { 86 | var parts = cookies[i].split('='); 87 | var name = decode(parts.shift()); 88 | var cookie = parts.join('='); 89 | 90 | if (key && key === name) { 91 | // If second argument (value) is a function it's a converter... 92 | result = read(cookie, value); 93 | break; 94 | } 95 | 96 | // Prevent storing a cookie that we couldn't decode. 97 | if (!key && (cookie = read(cookie)) !== undefined) { 98 | result[name] = cookie; 99 | } 100 | } 101 | 102 | return result; 103 | }; 104 | 105 | config.defaults = {}; 106 | 107 | $.removeCookie = function (key, options) { 108 | if ($.cookie(key) === undefined) { 109 | return false; 110 | } 111 | 112 | // Must not alter options, thus extending a fresh object... 113 | $.cookie(key, '', $.extend({}, options, { expires: -1 })); 114 | return !$.cookie(key); 115 | }; 116 | 117 | })); -------------------------------------------------------------------------------- /common/highlight/styles/color-brewer.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Colorbrewer theme 4 | Original: https://github.com/mbostock/colorbrewer-theme (c) Mike Bostock 5 | Ported by Fabrício Tavares de Oliveira 6 | 7 | */ 8 | 9 | .hljs { 10 | display: block; 11 | overflow-x: auto; 12 | padding: 0.5em; 13 | background: #fff; 14 | -webkit-text-size-adjust: none; 15 | } 16 | 17 | .hljs, 18 | .hljs-subst, 19 | .hljs-tag .hljs-title, 20 | .nginx .hljs-title { 21 | color: #000; 22 | } 23 | 24 | .hljs-string, 25 | .hljs-title, 26 | .hljs-constant, 27 | .hljs-parent, 28 | .hljs-tag .hljs-value, 29 | .hljs-rule .hljs-value, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .haml .hljs-symbol, 33 | .ruby .hljs-symbol, 34 | .ruby .hljs-symbol .hljs-string, 35 | .hljs-template_tag, 36 | .django .hljs-variable, 37 | .smalltalk .hljs-class, 38 | .hljs-addition, 39 | .hljs-flow, 40 | .hljs-stream, 41 | .bash .hljs-variable, 42 | .apache .hljs-tag, 43 | .apache .hljs-cbracket, 44 | .tex .hljs-command, 45 | .tex .hljs-special, 46 | .erlang_repl .hljs-function_or_atom, 47 | .asciidoc .hljs-header, 48 | .markdown .hljs-header, 49 | .coffeescript .hljs-attribute, 50 | .hljs-name { 51 | color: #756bb1; 52 | } 53 | 54 | .smartquote, 55 | .hljs-comment, 56 | .hljs-annotation, 57 | .diff .hljs-header, 58 | .hljs-chunk, 59 | .asciidoc .hljs-blockquote, 60 | .markdown .hljs-blockquote { 61 | color: #636363; 62 | } 63 | 64 | .hljs-number, 65 | .hljs-date, 66 | .hljs-regexp, 67 | .hljs-literal, 68 | .hljs-hexcolor, 69 | .smalltalk .hljs-symbol, 70 | .smalltalk .hljs-char, 71 | .go .hljs-constant, 72 | .hljs-change, 73 | .lasso .hljs-variable, 74 | .makefile .hljs-variable, 75 | .asciidoc .hljs-bullet, 76 | .markdown .hljs-bullet, 77 | .asciidoc .hljs-link_url, 78 | .markdown .hljs-link_url { 79 | color: #31a354; 80 | } 81 | 82 | .hljs-label, 83 | .hljs-javadoc, 84 | .ruby .hljs-string, 85 | .hljs-decorator, 86 | .hljs-filter .hljs-argument, 87 | .hljs-localvars, 88 | .hljs-array, 89 | .hljs-attr_selector, 90 | .hljs-important, 91 | .hljs-pseudo, 92 | .hljs-pi, 93 | .haml .hljs-bullet, 94 | .hljs-doctype, 95 | .hljs-deletion, 96 | .hljs-envvar, 97 | .hljs-shebang, 98 | .apache .hljs-sqbracket, 99 | .nginx .hljs-built_in, 100 | .hljs-list .hljs-built_in, 101 | .tex .hljs-formula, 102 | .erlang_repl .hljs-reserved, 103 | .hljs-prompt, 104 | .asciidoc .hljs-link_label, 105 | .markdown .hljs-link_label, 106 | .vhdl .hljs-attribute, 107 | .clojure .hljs-attribute, 108 | .asciidoc .hljs-attribute, 109 | .lasso .hljs-attribute, 110 | .coffeescript .hljs-property, 111 | .hljs-phony { 112 | color: #88f; 113 | } 114 | 115 | 116 | 117 | .hljs-keyword, 118 | .hljs-id, 119 | .hljs-title, 120 | .hljs-built_in, 121 | .css .hljs-tag, 122 | .hljs-javadoctag, 123 | .hljs-phpdoc, 124 | .hljs-dartdoc, 125 | .hljs-yardoctag, 126 | .smalltalk .hljs-class, 127 | .hljs-winutils, 128 | .bash .hljs-variable, 129 | .apache .hljs-tag, 130 | .hljs-type, 131 | .hljs-typename, 132 | .tex .hljs-command, 133 | .asciidoc .hljs-strong, 134 | .markdown .hljs-strong, 135 | .hljs-request, 136 | .hljs-status { 137 | color: #3182bd; 138 | } 139 | 140 | .asciidoc .hljs-emphasis, 141 | .markdown .hljs-emphasis { 142 | font-style: italic; 143 | } 144 | 145 | .nginx .hljs-built_in { 146 | font-weight: normal; 147 | } 148 | 149 | .coffeescript .javascript, 150 | .javascript .xml, 151 | .lasso .markup, 152 | .tex .hljs-formula, 153 | .xml .javascript, 154 | .xml .vbscript, 155 | .xml .css, 156 | .xml .hljs-cdata { 157 | opacity: 0.5; 158 | } 159 | 160 | .css .hljs-attribute, 161 | .html .hljs-attribute { 162 | color: #e6550d; 163 | } 164 | 165 | .css .hljs-class, 166 | .html .hljs-tag, 167 | .html .hljs-title { 168 | color: #3182bd; 169 | } 170 | -------------------------------------------------------------------------------- /common/highlight/README.ru.md: -------------------------------------------------------------------------------- 1 | # Highlight.js 2 | 3 | Highlight.js — это подсветчик синтаксиса, написанный на JavaScript. Он работает 4 | и в браузере, и на сервере. Он работает с практически любой HTML разметкой, не 5 | зависит от каких-либо фреймворков и умеет автоматически определять язык. 6 | 7 | 8 | ## Начало работы 9 | 10 | Минимум, что нужно сделать для использования highlight.js на веб-странице — это 11 | подключить библиотеку, CSS-стили и вызывать [`initHighlightingOnLoad`][1]: 12 | 13 | ```html 14 | 15 | 16 | 17 | ``` 18 | 19 | Библиотека найдёт и раскрасит код внутри тегов `
`, попытавшись
 20 | автоматически определить язык. Когда автоопределение не срабатывает, можно явно
 21 | указать язык в атрибуте class:
 22 | 
 23 | ```html
 24 | 
...
25 | ``` 26 | 27 | Список поддерживаемых классов языков доступен в [справочнике по классам][8]. 28 | Класс также можно предваоить префиксами `language-` или `lang-`. 29 | 30 | Чтобы отключить подсветку для какого-то блока, используйте класс `nohighlight`: 31 | 32 | ```html 33 |
...
34 | ``` 35 | 36 | ## Инициализация вручную 37 | 38 | Чтобы иметь чуть больше контроля за инициализацией подсветки, вы можете 39 | использовать функции [`highlightBlock`][2] и [`configure`][3]. Таким образом 40 | можно управлять тем, *что* подсвечивать и *когда*. 41 | 42 | Вот пример инициализация, эквивалентной вызову [`initHighlightingOnLoad`][1], но 43 | с использованием jQuery: 44 | 45 | ```javascript 46 | $(document).ready(function() { 47 | $('pre code').each(function(i, block) { 48 | hljs.highlightBlock(block); 49 | }); 50 | }); 51 | ``` 52 | 53 | Вы можете использовать любые теги разметки вместо `
`. Если
 54 | используете контейнер, не сохраняющий переводы строк, вам нужно сказать
 55 | highlight.js использовать для них тег `
`: 56 | 57 | ```javascript 58 | hljs.configure({useBR: true}); 59 | 60 | $('div.code').each(function(i, block) { 61 | hljs.highlightBlock(block); 62 | }); 63 | ``` 64 | 65 | Другие опции можно найти в документации функции [`configure`][3]. 66 | 67 | 68 | ## Установка библиотеки 69 | 70 | Highlight.js можно использовать в браузере прямо с CDN хостинга или скачать 71 | индивидуальную сборку, а также установив модуль на сервере. На 72 | [страница загрузки][4] подробно описаны все варианты. 73 | 74 | Обратите внимание, что библиотека не предназначена для использования в виде 75 | исходного кода на GitHub, а требует отдельной сборки. Если вам не подходит ни 76 | один из готовых вариантов, читайте [документацию по сборке][5]. 77 | 78 | 79 | ## Лицензия 80 | 81 | Highlight.js распространяется под лицензией BSD. Подробнее читайте файл 82 | [LICENSE][10]. 83 | 84 | 85 | ## Ссылки 86 | 87 | Официальный сайт билиотеки расположен по адресу . 88 | 89 | Более подробная документация по API и другим темам расположена на 90 | . 91 | 92 | Авторы и контрибьютора перечислена в файле [AUTHORS.ru.txt][9] file. 93 | 94 | [1]: http://highlightjs.readthedocs.org/en/latest/api.html#inithighlightingonload 95 | [2]: http://highlightjs.readthedocs.org/en/latest/api.html#highlightblock-block 96 | [3]: http://highlightjs.readthedocs.org/en/latest/api.html#configure-options 97 | [4]: https://highlightjs.org/download/ 98 | [5]: http://highlightjs.readthedocs.org/en/latest/building-testing.html 99 | [8]: http://highlightjs.readthedocs.org/en/latest/css-classes-reference.html 100 | [9]: https://github.com/isagalaev/highlight.js/blob/master/AUTHORS.ru.txt 101 | [10]: https://github.com/isagalaev/highlight.js/blob/master/LICENSE 102 | -------------------------------------------------------------------------------- /common/highlight/README.md: -------------------------------------------------------------------------------- 1 | # Highlight.js 2 | 3 | [![Build Status](https://travis-ci.org/isagalaev/highlight.js.svg?branch=master)](https://travis-ci.org/isagalaev/highlight.js) 4 | 5 | Highlight.js is a syntax highlighter written in JavaScript. It works in the 6 | browser as well as on the server. It works with pretty much any markup, 7 | doesn’t depend on any framework and has automatic language detection. 8 | 9 | 10 | ## Getting Started 11 | 12 | The bare minimum for using highlight.js on a web page is linking to the library 13 | along with one of the styles and calling [`initHighlightingOnLoad`][1]: 14 | 15 | ```html 16 | 17 | 18 | 19 | ``` 20 | 21 | This will find and highlight code inside of `
` tags; it tries to detect
 22 | the language automatically. If automatic detection doesn’t work for you, you can
 23 | specify the language in the `class` attribute:
 24 | 
 25 | ```html
 26 | 
...
27 | ``` 28 | 29 | The list of supported language classes is available in the [class reference][8]. 30 | Classes can also be prefixed with either `language-` or `lang-`. 31 | 32 | To disable highlighting altogether use the `nohighlight` class: 33 | 34 | ```html 35 |
...
36 | ``` 37 | 38 | ## Custom Initialization 39 | 40 | When you need a bit more control over the initialization of 41 | highlight.js, you can use the [`highlightBlock`][2] and [`configure`][3] 42 | functions. This allows you to control *what* to highlight and *when*. 43 | 44 | Here’s an equivalent way to calling [`initHighlightingOnLoad`][1] using jQuery: 45 | 46 | ```javascript 47 | $(document).ready(function() { 48 | $('pre code').each(function(i, block) { 49 | hljs.highlightBlock(block); 50 | }); 51 | }); 52 | ``` 53 | 54 | You can use any tags instead of `
` to mark up your code. If you don't
 55 | use a container that preserve line breaks you will need to configure
 56 | highlight.js to use the `
` tag: 57 | 58 | ```javascript 59 | hljs.configure({useBR: true}); 60 | 61 | $('div.code').each(function(i, block) { 62 | hljs.highlightBlock(block); 63 | }); 64 | ``` 65 | 66 | For other options refer to the documentation for [`configure`][3]. 67 | 68 | 69 | ## Getting the Library 70 | 71 | You can get highlight.js as a hosted or custom-build browser script or as a 72 | server module. Head over to the [download page][4] for all the options. 73 | 74 | **Note:** the library is not supposed to work straight from the source on 75 | GitHub; it requires building. If none of the pre-packaged options work for you 76 | refer to the [building documentation][5]. 77 | 78 | 79 | ## License 80 | 81 | Highlight.js is released under the BSD License. See [LICENSE][10] file for 82 | details. 83 | 84 | 85 | ## Links 86 | 87 | The official site for the library is at . 88 | 89 | Further in-depth documentation for the API and other topics is at 90 | . 91 | 92 | Authors and contributors are listed in the [AUTHORS.en.txt][9] file. 93 | 94 | [1]: http://highlightjs.readthedocs.org/en/latest/api.html#inithighlightingonload 95 | [2]: http://highlightjs.readthedocs.org/en/latest/api.html#highlightblock-block 96 | [3]: http://highlightjs.readthedocs.org/en/latest/api.html#configure-options 97 | [4]: https://highlightjs.org/download/ 98 | [5]: http://highlightjs.readthedocs.org/en/latest/building-testing.html 99 | [8]: http://highlightjs.readthedocs.org/en/latest/css-classes-reference.html 100 | [9]: https://github.com/isagalaev/highlight.js/blob/master/AUTHORS.en.txt 101 | [10]: https://github.com/isagalaev/highlight.js/blob/master/LICENSE 102 | -------------------------------------------------------------------------------- /conformance-tests/datachannel_test/helpfunctions.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Peter Titz 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions 7 | * are met: 8 | * 1. Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 2. Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * 14 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 | * SUCH DAMAGE. 25 | */ 26 | /** 27 | * Returns current System Time: HH:MM:SS,ms 28 | */ 29 | function getCurrentTime() { 30 | var now = new Date(); 31 | var hour = now.getHours(); 32 | var min = now.getMinutes(); 33 | var sec = now.getSeconds(); 34 | var ms = now.getMilliseconds(); 35 | if (hour < 10) { 36 | hour = "0" + hour; 37 | } 38 | if (min < 10) { 39 | min = "0" + min; 40 | } 41 | if (sec < 10) { 42 | sec = "0" + sec; 43 | } 44 | return hour + ":" + min + ":" + sec+","+ms; 45 | } 46 | 47 | /** 48 | * Returns a string 49 | * @param {Object} size: returns a string: 2^size Byte (= letters) 50 | */ 51 | function generateData(size) { 52 | var s = "-"; 53 | for (var i = 0; i < size; i++) { 54 | s += s; 55 | } 56 | return s; 57 | } 58 | 59 | /** 60 | * Retruns a String 61 | * @param {Object} size: returns a string with length size 62 | */ 63 | function generateLinearData(size) { 64 | var s = ""; 65 | for (var i = 0; i < size; i++) { 66 | s += "s"; 67 | } 68 | return s; 69 | } 70 | 71 | function generateLinearDataChar(character, length) { 72 | var string = ""; 73 | for(var i=0; i < length; i++) { 74 | string += character; 75 | } 76 | 77 | return string; 78 | } 79 | 80 | /** 81 | * Returns the Byte count from a string 82 | * @param {Object} str 83 | */ 84 | function byteCount(str) { 85 | return encodeURI(str).split(/%..|./).length - 1; 86 | } 87 | 88 | /** 89 | * Check for available readyStates in a String, returns the Objekt 90 | * @param {Object} str 91 | */ 92 | function checkForReadyStates(str){ 93 | var check = new Array(); 94 | var values = ["connecting", "open", "closing", "closed"]; 95 | var returnValue = { missed: false,message: ""}; 96 | for(var i = 0; i< values.length; i++){ 97 | if(str.search(values[i]) == -1){ 98 | returnValue.message += " '" +values[i]+"'"; 99 | returnValue.missed = true; 100 | } 101 | } 102 | if(returnValue.missed == true) 103 | returnValue.message = "Missed readyState" + returnValue.message; 104 | return returnValue; 105 | } 106 | 107 | function getBrowserInformation() { 108 | if(window.mozRTCPeerConnection || window.webkitRTCPeerConnection || window.RTCPeerConnection){ 109 | $('#browserInformation').addClass('alert-success'); 110 | } else { 111 | $('#browserInformation').addClass('alert-danger'); 112 | } 113 | $('#browserInformation').append(navigator.userAgent); 114 | } 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | -------------------------------------------------------------------------------- /signaling/signaling.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | WebRTC Data Channel Playground - Signaling Demo 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 68 | 69 |
70 |

Signaling Demo

71 | 72 | 76 | 77 |
78 |
79 |

Create peer ID ...

80 | 83 |
84 | 85 | 86 | 87 |
88 |

... or connect to peer

89 |
90 | 91 | 92 | 93 | 96 | 97 |
98 | 99 |
100 | 101 |
102 | 103 | 114 | 115 | 125 | 126 | 129 |
130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 144 | 145 | 146 | 147 | -------------------------------------------------------------------------------- /conformance-tests/datachannel_test/dctest_init.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Peter Titz 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions 7 | * are met: 8 | * 1. Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 2. Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * 14 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 | * SUCH DAMAGE. 25 | */ 26 | 27 | /** 28 | * This testsuite runs with datachannellocal.js and datachannellocal_switcher.js 29 | * Testframework: testharness W3C http://testthewebforward.org/docs/ 30 | * Testing the webRTC DataChannel API: http://dev.w3.org/2011/webrtc/editor/webrtc.html#peer-to-peer-data-api 31 | * 32 | * To mimic a DataChannel connection between two peers the sript creates two different RTCPeerConnections in one Browser 33 | * Peer A = localPeerConnection, localChannel 34 | * Peer B = remotePeerConnection, remoteChannel 35 | */ 36 | 37 | var showResults = false; 38 | var testResult = ["Pass", "Fail", "Timeout"]; 39 | var testCounter = 0; 40 | // Stores all test names 41 | var testNames =""; 42 | // Stores all test results 43 | var testResults = ""; 44 | // Stores complete information 45 | var testCompleteResults = ""; 46 | 47 | function testMessage(res){ 48 | if(res!= null){ 49 | return res; 50 | } 51 | return ""; 52 | } 53 | 54 | // Testharness setup 55 | setup({ 56 | explicit_done : true, 57 | explicit_timeout : true 58 | }); 59 | 60 | // Testharness callback - start 61 | function start_callback() { 62 | logWrite("Tests started!"); 63 | } 64 | 65 | // Testharness functions result callback 66 | function result_callback(res) { 67 | // increment Counter and Progressbar 68 | //progressBar.value++; 69 | $('#progressbar').css('width', 100*testCounter/selectedTestList.length+'%').attr('aria-valuenow', 0).html(testCounter+'/'+selectedTestList.length); 70 | testCounter++; 71 | 72 | // Safe Values for logging test information 73 | testNames += res.name + "
"; 74 | testResults += testResult[res.status] +"
"; 75 | testCompleteResults += ""; 76 | 77 | 78 | logWrite("Test: " + (res.name) + "... done! - \"" + availableTestList[testCounter] + "\""); 79 | if (showResults) 80 | console.log("Result received", res); 81 | 82 | //If only runs one test don't close the channels to test with the console 83 | if(availableTestList.length != 1) 84 | { 85 | // Close the channels and set to null 86 | closeRTCPeerConnection(); 87 | } 88 | 89 | // If test completed start the next test after short break 90 | setTimeout(function(){ 91 | testSwitcher(testCounter); 92 | }, 500); 93 | } 94 | 95 | // Testharness completion callback from all tests. 96 | function completion_callback(allRes, status) { 97 | $('#progressbar').css('width', '100%').attr('aria-valuenow', 100).html(testCounter+' tests completed!').removeClass('active').removeClass('progress-bar-striped'); 98 | 99 | logWrite("Tests completed!"); 100 | testCompleteResults += "
No.Test nameResult Message
"+testCounter+""+res.name+""+testResult[res.status]+""+testMessage(res.message)+"
"; 101 | console.log("Test results: ", allRes, status); 102 | } 103 | 104 | 105 | /** 106 | * Test whether prefixes are used 107 | */ 108 | function testDCPC() { 109 | test(function() { 110 | assert_true(!!testRTCPeerConnection, "RTCPeerConnection not available, musst use prefix"); 111 | }, "testDCPC: Check if RTCPeerConnection is available"); 112 | } 113 | 114 | function testDCPCMoz() { 115 | test(function() { 116 | assert_true(!!window.mozRTCPeerConnection, "You don't use Firefox or a too old version"); 117 | }, "testDCPCMoz: Check if mozRTCPeerConnection (Firefox) is available"); 118 | } 119 | 120 | function testDCPCWebkit() { 121 | test(function() { 122 | assert_true(!!window.webkitRTCPeerConnection, "You don't use Google/Opera or a too old version"); 123 | }, "testDCPCWebkit: Check if webkitRTCPeerConnection (Google/Opera) is available"); 124 | } 125 | -------------------------------------------------------------------------------- /gyrocolor/gyrocolor.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | WebRTC Data Channel Playground - Gyrocolor 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 68 | 69 |
70 |

Gyrocolor

71 | 72 | 76 | 77 |
78 |
79 |

Create peer ID ...

80 | 83 |
84 | 85 | 86 | 87 |
88 |

... or connect to peer

89 |
90 | 91 | 92 | 93 | 96 | 97 |
98 | 99 |
100 | 101 |
102 | 103 | 114 | 115 |
116 |
117 |

Gyro Data:

118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 |
typealphabetagamma
nothing yet
nothing yet
137 |
138 |
139 | 140 | 143 |
144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 161 | 162 | 163 | 164 | -------------------------------------------------------------------------------- /conformance-tests/datachannel_test/dctest_switcher.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Peter Titz 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions 7 | * are met: 8 | * 1. Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 2. Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * 14 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 | * SUCH DAMAGE. 25 | */ 26 | 27 | /** 28 | * This file takes care of the test excecution 29 | */ 30 | 31 | var availableTestList = []; 32 | var selectedTestList = []; 33 | 34 | 35 | // Run the next test 36 | function testSwitcher(count) { 37 | if (count < selectedTestList.length) { 38 | try { 39 | eval(selectedTestList[count] + "()"); 40 | } catch(err) { 41 | console.log("Error while eval function " + selectedTestList[count], err); 42 | } 43 | } else { 44 | done(); 45 | } 46 | } 47 | 48 | // Check for all functions are available in space with name testDC - all dataChannel tests 49 | function getMethods(obj) { 50 | var tests = []; 51 | for (var m in obj) { 52 | if ( typeof obj[m] === "function") { 53 | if (m.search("testDC") != -1) { 54 | tests.push(m); 55 | } 56 | } 57 | } 58 | $('#badgeTestcount').html(tests.length); 59 | availableTestList = tests; 60 | } 61 | 62 | // Create the table with all available tests 63 | function fillTestList() { 64 | var testlistHTML = ""; 65 | 66 | $.each(availableTestList,function(key,val) { 67 | testlistHTML += ' '; 68 | // new row every 5 cols 69 | if (key % 5 == 4) { 70 | testlistHTML += ""; 71 | } 72 | }); 73 | testlistHTML += ""; 74 | 75 | $('#testlist').append(testlistHTML); 76 | } 77 | 78 | // Create new TestList with only selected Tests 79 | function generateNewTestList() { 80 | selectedTestList = []; 81 | $('#testlist input:checkbox').each(function(){ 82 | if($(this).prop('checked')) { 83 | selectedTestList.push($(this).prop('value')); 84 | } 85 | }); 86 | 87 | console.log('new list ist generated: '+selectedTestList.length + ' items'); 88 | } 89 | 90 | // check the tests from selected tests (eg loaded from cookies) 91 | function setCertainCheckboxes(){ 92 | $("#testlist INPUT[type='checkbox']").prop('checked',false); 93 | $.each(selectedTestList,function(key,val) { 94 | $('#testlist input:checkbox[value='+val+']').prop('checked',true); 95 | }); 96 | 97 | } 98 | 99 | function setCookie(name) { 100 | $.cookie(name, JSON.stringify(selectedTestList)); 101 | return true; 102 | } 103 | 104 | function loadCookie(name) { 105 | var cookie = $.cookie(name); 106 | if(cookie != null) { 107 | selectedTestList = JSON.parse($.cookie(name)); 108 | setCertainCheckboxes(); 109 | } else { 110 | alert("Sorry, no Data!"); 111 | } 112 | 113 | } 114 | 115 | function startSelectedTests() { 116 | $('.progressbar').css('width', '0%').attr('aria-valuenow', 0).html('0/'+selectedTestList.length); 117 | testSwitcher(0); 118 | $('#logWrapper').show(); 119 | $('#testWrapper').hide(); 120 | 121 | } 122 | 123 | // Button - start all Tests 124 | $('button#btnTestStartAll').click(function() { 125 | //setCookie("previous"); 126 | selectedTestList = availableTestList; 127 | startSelectedTests(); 128 | }); 129 | 130 | // Button - start selected Tests 131 | $('button#btnTestStartSelected').click(function() { 132 | generateNewTestList(); 133 | 134 | if (selectedTestList.length == 0) { 135 | alert("Please choose some tests"); 136 | } else { 137 | setCookie("previous"); 138 | startSelectedTests(); 139 | } 140 | }); 141 | 142 | // Dropdown - select Testgroup 143 | $('ul#testGroupSelect li a').click(function(event){ 144 | console.log('selecting: '+ $(this).data("testgroup")); 145 | $("#testlist INPUT[type='checkbox']").prop('checked',false); 146 | $("#testlist INPUT[type='checkbox'][value^='"+$(this).data('testgroup')+"']").prop('checked',true); 147 | event.preventDefault(); 148 | }); 149 | 150 | // Button - invert selection 151 | $('button#btnTestSelectOpposite').click(function(){ 152 | $("#testlist INPUT[type='checkbox']").each( function() { 153 | if($(this).prop('checked', !$(this).prop('checked'))){ 154 | 155 | }; 156 | }); 157 | return false; 158 | }); 159 | 160 | // Button - unselect all 161 | $('button#btnTestUnselect').click(function(){ 162 | $("#testlist INPUT[type='checkbox']").prop('checked',false); 163 | return false; 164 | }); 165 | 166 | // Button - load selection from cookie 167 | $('button#btnTestLoad').click(function(){ 168 | //alert("hallo"); 169 | loadCookie("test"); 170 | 171 | }); 172 | 173 | // Button - save selection to cookie 174 | $('button#btnTestSave').click(function(){ 175 | generateNewTestList(); 176 | setCookie("test"); 177 | }); 178 | 179 | $('button#btnTestLoadPrevious').click(function(){ 180 | loadCookie("previous"); 181 | }); 182 | 183 | -------------------------------------------------------------------------------- /conformance-tests/datachannel_test/dctest_connection.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2014 Peter Titz 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions 7 | * are met: 8 | * 1. Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 2. Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * 14 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 | * SUCH DAMAGE. 25 | */ 26 | 27 | /** 28 | * This file handels the SDP and ICE Candidates for Signalling on local Peers, necessary for dataChannel_local_test 29 | * To mimic an RTCDataChannel connection between two peers we need two RTCPeerConnections and two RTCDataChannels 30 | */ 31 | 32 | // RTCDataChannel variables 33 | var showSDP = true; 34 | var showICE = true; 35 | var localChannel = null; 36 | var remoteChannel = null; 37 | var remotePeerConnection = null; 38 | var localPeerConnection = null; 39 | var testRTCPeerConnection = window.RTCPeerConnection; 40 | var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; 41 | var RTCIceCandidate = window.mozRTCIceCandidate || window.RTCIceCandidate; 42 | var RTCSessionDescription = window.RTCSessionDescription || window.mozRTCSessionDescription || window.RTCSessionDescription; 43 | 44 | //In this case we need no ICE Servers 45 | var iceServers = null; 46 | 47 | // Otherwise audio will be enabled (Deprecated) 48 | var constraints = { 49 | mandatory : { 50 | OfferToReceiveAudio : false, 51 | OfferToReceiveVideo : false 52 | } 53 | }; 54 | 55 | /* 56 | var constraints = { 57 | OfferToReceiveAudio : false, 58 | OfferToReceiveVideo : false 59 | };*/ 60 | 61 | function setDescFail(e) { 62 | console.log("Set description Fail ", e); 63 | } 64 | 65 | function setDescSuccess() { 66 | //console.log("Set description Success"); 67 | } 68 | 69 | function setICEFail(e){ 70 | console.log("Fail to add ICE Candidate: " + e); 71 | } 72 | 73 | function setICESuccess(){ 74 | // Success 75 | } 76 | // Handler to be called as soon as the local SDP (Session Description Protocol) is available to the application 77 | function gotLocalDescription(desc) { 78 | // Set local SDP as (local/remote) description for both local and remote parties 79 | localPeerConnection.setLocalDescription(desc, setDescSuccess, setDescFail); 80 | if (showSDP) 81 | console.log('localPeerConnection\'s SDP: \n', desc); 82 | 83 | remotePeerConnection.setRemoteDescription(desc, setDescSuccess, setDescFail); 84 | // Create answer from the 'remote party, based on the local SDP 85 | remotePeerConnection.createAnswer(gotRemoteDescription, onSignalingError); 86 | } 87 | 88 | // Handler to be called as soon as the remote SDP is made available to the application 89 | function gotRemoteDescription(desc) { 90 | // Set 'remote' SDP as the right (remote/local) description for both local and 'remote' parties 91 | remotePeerConnection.setLocalDescription(desc, setDescSuccess, setDescFail); 92 | if (showSDP) 93 | console.log('Answer from remotePeerConnection\'s SDP: \n', desc); 94 | localPeerConnection.setRemoteDescription(desc, setDescSuccess, setDescFail); 95 | } 96 | 97 | function onSignalingError(err) { 98 | console.log("Failed to create signaling message : ", err); 99 | } 100 | 101 | // Make the dataChannel association 102 | function createIceCandidatesAndOffer() { 103 | // Associate peer connection with ICE events 104 | localPeerConnection.onicecandidate = function(e) { 105 | if (e.candidate) { 106 | remotePeerConnection.addIceCandidate(e.candidate, setICESuccess, setICEFail); 107 | if (showICE) 108 | console.log("local ", e.candidate); 109 | } 110 | }; 111 | 112 | remotePeerConnection.onicecandidate = function(e) { 113 | if (e.candidate) { 114 | localPeerConnection.addIceCandidate(e.candidate, setICESuccess, setICEFail); 115 | if (showICE) 116 | console.log("remote ", e.candidate); 117 | } 118 | }; 119 | 120 | /* Can also Use onnegotiationneeded to create the offer 121 | localPeerConnection.onnegotiationneeded = function(){ 122 | localPeerConnection.createOffer(gotLocalDescription, onSignalingError); 123 | }; 124 | */ 125 | 126 | // Now we can negoatiate a session 127 | localPeerConnection.createOffer(gotLocalDescription, onSignalingError, constraints); 128 | 129 | } 130 | 131 | // Close the available RTCPeerConnections 132 | function closeRTCPeerConnection() { 133 | try { 134 | if (localChannel != null) { 135 | if (localChannel.readyState != "closed") { 136 | localChannel.close(); 137 | } 138 | } 139 | 140 | if (remoteChannel != null) { 141 | if (remoteChannel.readyState != "closed") { 142 | remoteChannel.close(); 143 | } 144 | } 145 | // Close peer connections 146 | if (localPeerConnection != null) { 147 | if (localPeerConnection.signalingState != "closed") { 148 | // console.log("Close local peer connection"); 149 | localPeerConnection.close(); 150 | } 151 | } 152 | 153 | if (remotePeerConnection != null) { 154 | if (remotePeerConnection.signalingState != "closed") { 155 | // console.log("Close remote peer connection"); 156 | remotePeerConnection.close(); 157 | } 158 | 159 | } 160 | 161 | // Objects 162 | localChannel = null; 163 | remoteChannel = null; 164 | localPeerConnection = null; 165 | remotePeerConnection = null; 166 | 167 | } catch(err) { 168 | console.log("Error - Closing Channels", err); 169 | } 170 | } 171 | 172 | -------------------------------------------------------------------------------- /signaling/signaling.js: -------------------------------------------------------------------------------- 1 | /*- 2 | * Copyright (c) 2015 Felix Weinrank 3 | * All rights reserved. 4 | * 5 | * Redistribution and use in source and binary forms, with or without 6 | * modification, are permitted provided that the following conditions 7 | * are met: 8 | * 1. Redistributions of source code must retain the above copyright 9 | * notice, this list of conditions and the following disclaimer. 10 | * 2. Redistributions in binary form must reproduce the above copyright 11 | * notice, this list of conditions and the following disclaimer in the 12 | * documentation and/or other materials provided with the distribution. 13 | * 14 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 | * SUCH DAMAGE. 25 | * 26 | */ 27 | 28 | var socket = io("https://webrtc.nplab.de/"); 29 | var appIdent = 'signaling'; 30 | 31 | // constraints for the offer SDP - here we don't need audio or video... 32 | var sdpConstraints = { 33 | 'mandatory' : { 34 | 'offerToReceiveAudio' : false, 35 | 'offerToReceiveVideo' : false 36 | } 37 | }; 38 | 39 | var pc = new PeerConnection(iceServer); 40 | var dcControl = {}; 41 | var offerer; 42 | var signalingInProgress = false; 43 | var signalingId; 44 | 45 | // handle incoming info messages from server 46 | socket.on('info', function(msg) { 47 | console.log('server info: ' + msg); 48 | }); 49 | 50 | // handle incoming signaling messages 51 | socket.on('signaling', function(msg) { 52 | if(!signalingInProgress) { 53 | console.log('signaling - error: no signaling in progress...'); 54 | return; 55 | } 56 | 57 | switch(msg.type) { 58 | // answerer requests SDP-Offer 59 | case 'sdpRequest': 60 | if(offerer) { 61 | pc.createOffer(function(offer) { 62 | pc.setLocalDescription(offer); 63 | console.log(JSON.stringify(offer)); 64 | socket.emit('signaling', {type:'sdp',payload:offer}); 65 | }, errorHandler, sdpConstraints); 66 | } else { 67 | console.log('error: got sdpRequest as answerer...'); 68 | } 69 | break; 70 | 71 | // we receive an sdp message 72 | case 'sdp': 73 | // only process message if it's an offer and we aren't offerer and signaling hasn't finished yet 74 | if(msg.payload.type === 'offer' && !offerer) { 75 | pc.setRemoteDescription(new SessionDescription(msg.payload)); 76 | // generate our answer SDP and send it to peer 77 | pc.createAnswer(function(answer) { 78 | pc.setLocalDescription(answer); 79 | socket.emit('signaling', {type:'sdp',payload:answer}); 80 | }, errorHandler); 81 | console.log('signaling - handle sdp offer and send answer'); 82 | // if we receive a sdp answer, we are the answerer and signaling isn't done yet, process answer 83 | } else if(msg.payload.type === 'answer' && offerer) { 84 | pc.setRemoteDescription(new SessionDescription(msg.payload)); 85 | console.log('signaling - handle sdp answer'); 86 | } else { 87 | console.log('signaling - unexpected message'); 88 | } 89 | break; 90 | // we receive an ice candidate 91 | case 'ice': 92 | var peerIceCandidate = new IceCandidate(msg.payload); 93 | pc.addIceCandidate(peerIceCandidate); 94 | console.log('singaling - remote ice candiate: ' + extractIpFromString(msg.payload.candidate)); 95 | break; 96 | } 97 | }); 98 | 99 | // generic error handler 100 | function errorHandler(err) { 101 | console.error(err); 102 | } 103 | 104 | 105 | // handle local ice candidates 106 | pc.onicecandidate = function(event) { 107 | // take the first candidate that isn't null 108 | if (!pc || !event || !event.candidate) { 109 | return; 110 | } 111 | // send ice candidate to signaling service 112 | socket.emit('signaling', {type:'ice',payload:event.candidate}); 113 | console.log('local ice candidate:' + extractIpFromString(event.candidate.candidate)); 114 | }; 115 | 116 | // establish connection to remote peer via webrtc 117 | function connect(active) { 118 | signalingInProgress = true; 119 | 120 | if(active == true) { 121 | console.log('connecting actively'); 122 | offerer = true; 123 | signalingId = generateSignalingId(); 124 | } else { 125 | console.log('connecting passively'); 126 | offerer = false; 127 | signalingId = $("#signalingId").val(); 128 | } 129 | 130 | if(signalingId.length === 0) { 131 | console.log('signalingId empty'); 132 | return; 133 | } 134 | 135 | // join room 136 | socket.emit('roomJoin', appIdent + signalingId); 137 | $("#rowInit").slideUp(); 138 | 139 | if (offerer == true) { 140 | $(".spinnerStatus").html('waiting for peer
use id: ' + signalingId + '

'); 141 | //new QRCode(document.getElementById("qrcode"), window.location.href + '#' + signalingId); 142 | 143 | // create data channel 144 | dcControl = pc.createDataChannel('control'); 145 | bindEventsControl(dcControl); 146 | console.log("connect - role: offerer"); 147 | } else { 148 | // request SDP from offerer 149 | socket.emit('signaling', {type:'sdpRequest'}); 150 | // answerer must wait for the data channel 151 | pc.ondatachannel = function(event) { 152 | // bin incoming control channel 153 | if (event.channel.label == "control") { 154 | dcControl = event.channel; 155 | bindEventsControl(event.channel); 156 | } else { 157 | alert("error: unknown channel!"); 158 | } 159 | console.log('incoming datachannel'); 160 | }; 161 | 162 | $(".spinnerStatus").text("connecting to peer id: " + signalingId); 163 | console.log('connect - role answerer'); 164 | } 165 | $("#rowSpinner").hide().removeClass('hidden').slideDown(); 166 | } 167 | 168 | // bind events for control channel 169 | function bindEventsControl(channel) { 170 | channel.onopen = function() { 171 | $("#rowSpinner").slideUp(); 172 | $("#rowChat").hide().removeClass('hidden').slideDown(); 173 | $('#chatMessages').append(''); 174 | console.log("Channel Open - Label:" + channel.label + ', ID:' + channel.id); 175 | }; 176 | 177 | channel.onclose = function(e) { 178 | console.log("Channel Close"); 179 | $('#chatMessages').append(''); 180 | $("#chatControl").slideUp(); 181 | }; 182 | 183 | window.onbeforeunload = function() { 184 | channel.close(); 185 | }; 186 | 187 | channel.onmessage = function(e) { 188 | $('#chatMessages').append(''); 189 | }; 190 | } 191 | 192 | // Send message to peer 193 | $('#chatInput').keypress(function (e) { 194 | if (e.which == 13) { 195 | var text = $(this).val(); 196 | dcControl.send(text); 197 | $('#chatMessages').append(''); 198 | $(this).val(''); 199 | } 200 | }); 201 | -------------------------------------------------------------------------------- /speedtest/speedtest.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | WebRTC Data Channel Playground - Speedtest 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 68 | 69 |
70 |

Speedtest

71 | 72 | 76 | 77 |
78 |
79 |

Create peer ID ...

80 | 83 |
84 | 85 |
86 |

filter ice ip

87 |
88 |
89 | local ip to offer 90 |
91 | 92 |
93 |
94 | 95 |
96 |

... or connect to peer

97 |
98 | 99 | 100 | 101 | 104 |
105 | 106 |
107 | 108 |
109 | 110 | 111 | 141 | 142 | 143 | 144 | 155 | 156 | 171 | 172 | 190 | 191 | 192 | 195 |
196 | 197 | 198 | 199 | 200 | 201 | 217 | 218 | 219 | 220 | --------------------------------------------------------------------------------