diff --git a/butterfly/bin/butterfly_help b/butterfly/bin/butterfly_help index b78884d..8e73d0d 100755 --- a/butterfly/bin/butterfly_help +++ b/butterfly/bin/butterfly_help @@ -16,9 +16,9 @@ print(""" Butterfly is a xterm compliant terminal built with python and javascript. {title}Terminal functionalities:{reset} - {strong}[Alt] + [a] : {reset}Set an alarm which sends a notification when a modification is detected. (Add a regexp with [Shift]) - {strong}[Ctrl] + [Shift] + [Up] : {reset}Trigger visual selection mode. Hitting [Enter] inserts the selection in the prompt. + {strong}[Alt] + [a] : {reset}Set an alarm which sends a notification when a modification is detected. (Ring on regexp match with [Shift]) {strong}[Alt] + [s] : {reset}Open theme selection prompt. Use [Alt] + [Shift] + [s] to refresh current theme. + {strong}[Ctrl] + [Shift] + [Up] : {reset}Trigger visual selection mode. Hitting [Enter] inserts the selection in the prompt. {strong}[ScrollLock] : {reset}Lock the scrolling to the current position. Press again to release. {strong}[Ctrl] + [c] <> : {reset}Cut the output when [Ctrl] + [c] is not enough. {strong}[Alt] + [z] : {reset}Escape: don't catch the next pressed key. diff --git a/butterfly/sass/_16_colors.sass b/butterfly/sass/_16_colors.sass index d49ca46..dca0df4 100644 --- a/butterfly/sass/_16_colors.sass +++ b/butterfly/sass/_16_colors.sass @@ -18,35 +18,19 @@ /* Here are the 16 "normal" colors for theming */ -/* Black */ -+termcolor(0, #2e3436) -/* Red */ -+termcolor(1, #cc0000) -/* Green */ -+termcolor(2, #4e9a06) -/* Yellow */ -+termcolor(3, #c4a000) -/* Blue */ -+termcolor(4, #3465a4) -/* Magenta */ -+termcolor(5, #75507b) -/* Cyan */ -+termcolor(6, #06989a) -/* White */ -+termcolor(7, #d3d7cf) -/* Bright Black */ -+termcolor(8, #555753) -/* Bright Red */ -+termcolor(9, #ef2929) -/* Bright Green */ -+termcolor(10, #8ae234) -/* Bright Yellow */ -+termcolor(11, #fce94f) -/* Bright Blue */ -+termcolor(12, #729fcf) -/* Bright Magenta */ -+termcolor(13, #ad7fa8) -/* Bright Cyan */ -+termcolor(14, #34e2e2) -/* Bright White */ -+termcolor(15, #eeeeec) ++termcolor(0, nth($colors, 1)) ++termcolor(1, nth($colors, 2)) ++termcolor(2, nth($colors, 3)) ++termcolor(3, nth($colors, 4)) ++termcolor(4, nth($colors, 5)) ++termcolor(5, nth($colors, 6)) ++termcolor(6, nth($colors, 7)) ++termcolor(7, nth($colors, 8)) ++termcolor(8, nth($colors, 9)) ++termcolor(9, nth($colors, 10)) ++termcolor(10, nth($colors, 11)) ++termcolor(11, nth($colors, 12)) ++termcolor(12, nth($colors, 13)) ++termcolor(13, nth($colors, 14)) ++termcolor(14, nth($colors, 15)) ++termcolor(15, nth($colors, 16)) diff --git a/butterfly/sass/_256_colors.sass b/butterfly/sass/_256_colors.sass index cfd8797..223bf14 100644 --- a/butterfly/sass/_256_colors.sass +++ b/butterfly/sass/_256_colors.sass @@ -15,11 +15,9 @@ /* You should have received a copy of the GNU General Public License */ /* along with this program. If not, see . */ -$fg: #f4ead5 !default -$bg: #110f13 !default - /* Here are the 240 xterm colors */ /* See http://upload.wikimedia.org/wikipedia/en/1/15/Xterm_256color_chart.svg */ + $st: 00, 95, 135, 175, 215, 255 @for $i from 0 through 215 @@ -32,5 +30,5 @@ $st: 00, 95, 135, 175, 215, 255 $l: 8 + $i * 10 +termcolor($i + 232, rgb($l, $l, $l)) -+termcolor(256, $bg) -+termcolor(257, $fg) ++termcolor(256, $default-bg) ++termcolor(257, $default-fg) diff --git a/butterfly/sass/_colors.sass b/butterfly/sass/_colors.sass index 986f367..e878e09 100644 --- a/butterfly/sass/_colors.sass +++ b/butterfly/sass/_colors.sass @@ -15,15 +15,14 @@ /* You should have received a copy of the GNU General Public License */ /* along with this program. If not, see . */ -$shadow: 0 !default -$shadow-alpha: 0 !default - - =termcolor($i, $color) .bg-color-#{$i} background-color: $color &.reverse-video - color: $color !important + @if $color == transparent + color: $reverse-transparent !important + @else + color: $color !important .fg-color-#{$i} color: $color diff --git a/butterfly/sass/_cursor.sass b/butterfly/sass/_cursor.sass index 64b2e87..bce5cf3 100644 --- a/butterfly/sass/_cursor.sass +++ b/butterfly/sass/_cursor.sass @@ -15,9 +15,6 @@ /* You should have received a copy of the GNU General Public License */ /* along with this program. If not, see . */ -$fg: #fff !default -$shadow-alpha: 0 !default - .focus .cursor transition: 300ms diff --git a/butterfly/sass/_font.sass b/butterfly/sass/_font.sass index 1eda821..82f50f6 100644 --- a/butterfly/sass/_font.sass +++ b/butterfly/sass/_font.sass @@ -27,4 +27,5 @@ $weights: (ExtraLight 100) (Light 300) (Regular 400) (Medium 500) (Semibold 600) body font-family: "SourceCodePro" + font-size: $font-size line-height: 1.2 diff --git a/butterfly/sass/_layout.sass b/butterfly/sass/_layout.sass index 6d1b433..85505a5 100644 --- a/butterfly/sass/_layout.sass +++ b/butterfly/sass/_layout.sass @@ -22,21 +22,20 @@ html, body background-color: $bg color: $fg - body white-space: nowrap overflow-x: hidden overflow-y: scroll &::-webkit-scrollbar - background: $bg - width: .75em + background: $scroll-bg + width: $scroll-width &::-webkit-scrollbar-thumb - background: rgba($fg, .1) + background: $scroll-fg &::-webkit-scrollbar-thumb:hover - background: rgba($fg, .15) + background: $scroll-fg-hover /* Pop ups */ .hidden @@ -52,7 +51,10 @@ body form padding: 1.5em - background: rgba(127, 127, 127, .5) + background: $popup-bg + color: $popup-fg + font-size: $popup-fs + h2 margin: .5em select diff --git a/butterfly/sass/_styles.sass b/butterfly/sass/_styles.sass new file mode 100644 index 0000000..b4a533f --- /dev/null +++ b/butterfly/sass/_styles.sass @@ -0,0 +1,38 @@ +/* *-* coding: utf-8 *-* */ +/* This file is part of butterfly */ + +/* butterfly Copyright (C) 2015 Florian Mounier */ +/* This program is free software: you can redistribute it and/or modify */ +/* it under the terms of the GNU General Public License as published by */ +/* the Free Software Foundation, either version 3 of the License, or */ +/* (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, */ +/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ +/* GNU General Public License for more details. */ + +/* You should have received a copy of the GNU General Public License */ +/* along with this program. If not, see . */ + +/* Theses are the various imported style files +/* THIS NEEDS the python `libsass` library to be installed. +/* You can copy the imported files in the theme dir, they will be imported prioritarily. + +/* You can change this file to import any webfont: +@import font + +/* You can comment / uncomment the following to enable/disable terminal effects. +@import light_fx +/* Comment this one to remove the blurry text: +@import text_fx +/* @import all_fx + +@import colors +/* The color theme is defined in this one: +@import 16_colors +@import 256_colors + +@import layout +@import cursor +@import term_styles diff --git a/butterfly/sass/_variables.sass b/butterfly/sass/_variables.sass new file mode 100644 index 0000000..c4e4039 --- /dev/null +++ b/butterfly/sass/_variables.sass @@ -0,0 +1,48 @@ +/* *-* coding: utf-8 *-* */ +/* This file is part of butterfly */ + +/* butterfly Copyright (C) 2015 Florian Mounier */ +/* This program is free software: you can redistribute it and/or modify */ +/* it under the terms of the GNU General Public License as published by */ +/* the Free Software Foundation, either version 3 of the License, or */ +/* (at your option) any later version. */ + +/* This program is distributed in the hope that it will be useful, */ +/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ +/* GNU General Public License for more details. */ + +/* Variables */ + +/** Font Size +$font-size: 1em !default + +/** Colors */ +/* Foreground */ +$fg: #f4ead5 !default +/* Background */ +$bg: #110f13 !default + +$default-bg: $bg !default +$default-fg: $fg !default + +$reverse-transparent: $bg !default + +/* 16 Colors in this orders :Black, Red, Green, Yellow, Blue, Magenta, Cyan, White, Bright Black, Bright Red, Bright Green, Bright Yellow, Bright Blue, Bright Magenta, Bright Cyan, Bright White */ +$colors: #2e3436, #cc0000, #4e9a06, #c4a000, #3465a4, #75507b, #06989a, #d3d7cf, #555753, #ef2929, #8ae234, #fce94f, #729fcf, #ad7fa8, #34e2e2, #eeeeec !default + +/** Text effects */ +$shadow: 0 !default +$shadow-alpha: 0 !default + +/** Scroll */ +$scroll-bg: $bg !default +$scroll-fg: rgba($fg, .1) !default +$scroll-fg-hover: rgba($fg, .1) !default +$scroll-width: .75em !default + +/** Popup */ +$popup-bg: rgba(127, 127, 127, .5) !default +$popup-fg: $fg !default +$popup-fs: 1em !default + diff --git a/butterfly/sass/main.sass b/butterfly/sass/main.sass index 42208f0..f0be125 100644 --- a/butterfly/sass/main.sass +++ b/butterfly/sass/main.sass @@ -15,28 +15,12 @@ /* You should have received a copy of the GNU General Public License */ /* along with this program. If not, see . */ - - /* Theses are the various imported style files -/* You can put this file in /etc/butterfly/style.sass or ~/.butterfly/style.sass -/* To customize the style of your terminal. /* THIS NEEDS the python `libsass` library to be installed. -/* You can also copy the imported files in those dirs, they will be imported prioritarily. +/* You can copy the imported files in the theme dir, they will be imported prioritarily. -/* You can change this file to import any webfont: -@import font +/* These a the default variables */ +@import variables -/* You can comment / uncomment the following to enable/disable terminal effects. -@import light_fx -/* Comment this one to remove the blurry text: -@import text_fx -/* @import all_fx - -@import colors -/* The color theme is defined in this one: -@import 16_colors -@import 256_colors - -@import layout -@import cursor -@import term_styles +/* These are all imported files */ +@import styles diff --git a/butterfly/static/ext.js b/butterfly/static/ext.js index f016774..a9ec851 100644 --- a/butterfly/static/ext.js +++ b/butterfly/static/ext.js @@ -567,7 +567,7 @@ if (e.shiftKey) { style = document.getElementById('style').getAttribute('href'); style = style.split('?')[0]; - document.getElementById('style').setAttribute('href', style + '?' + (new Date().getTime())); + _set_theme_href(style + '?' + (new Date().getTime())); return cancel(e); } oReq = new XMLHttpRequest(); diff --git a/butterfly/static/ext.min.js b/butterfly/static/ext.min.js index 0dff853..3b2e081 100644 --- a/butterfly/static/ext.min.js +++ b/butterfly/static/ext.min.js @@ -1,4 +1,4 @@ -/*! butterfly 2015-10-07 */ +/*! butterfly 2015-10-08 */ -(function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};n=function(a){var b;return b=function(c){var d;return butterfly.body.classList.remove("alarm"),d="New activity on butterfly terminal ["+butterfly.title+"]",a?new Notification(d,{body:c.data,icon:"/static/images/favicon.png"}):alert(d+"\n"+c.data),butterfly.ws.removeEventListener("message",b)},butterfly.ws.addEventListener("message",b),butterfly.body.classList.add("alarm")},f=function(a){return a.preventDefault&&a.preventDefault(),a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0,!1},document.addEventListener("keydown",function(a){return a.altKey&&65===a.keyCode?(Notification&&"default"===Notification.permission?Notification.requestPermission(function(){return n("granted"===Notification.permission)}):n("granted"===Notification.permission),f(a)):!0}),addEventListener("copy",g=function(a){var b,c,d,e,f,g,h;for(butterfly.bell("copied"),a.clipboardData.clearData(),h=getSelection().toString().replace(/\u00A0/g," ").replace(/\u2007/g," "),b="",g=h.split("\n"),d=0,e=g.length;e>d;d++)f=g[d],"⏎"===f.slice(-1)?(c="",f=f.slice(0,-1)):c="\n",b+=f.replace(/\s*$/,"")+c;return a.clipboardData.setData("text/plain",b.slice(0,-1)),a.preventDefault()}),addEventListener("paste",function(a){var b;return butterfly.bell("pasted"),b=a.clipboardData.getData("text/plain"),b=b.replace(/\r\n/g,"\n").replace(/\n/g,"\r"),butterfly.send(b),a.preventDefault()}),addEventListener("beforeunload",function(a){return butterfly.body.classList.contains("dead")||location.href.indexOf("session")>-1?void 0:a.returnValue="This terminal is active and not in session. Are you sure you want to kill it?"}),a=function(){function a(){this.el=document.getElementById("popup"),this.bound_click_maybe_close=this.click_maybe_close.bind(this),this.bound_key_maybe_close=this.key_maybe_close.bind(this)}return a.prototype.open=function(a){return this.el.innerHTML=a,this.el.classList.remove("hidden"),addEventListener("click",this.bound_click_maybe_close),addEventListener("keydown",this.bound_key_maybe_close)},a.prototype.close=function(){return removeEventListener("click",this.bound_click_maybe_close),removeEventListener("keydown",this.bound_key_maybe_close),this.el.classList.add("hidden"),this.el.innerHTML=""},a.prototype.click_maybe_close=function(a){var b;for(b=a.target;b.parentElement;){if(Array.prototype.slice.call(this.el.children).indexOf(b)>-1)return!0;b=b.parentElement}return this.close(),f(a)},a.prototype.key_maybe_close=function(a){return 27!==a.keyCode?!0:(this.close(),f(a))},a}(),k=new a,m=null,f=function(a){return a.preventDefault&&a.preventDefault(),a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0,!1},l=function(a){var b;for(b=a.previousSibling,b||(b=a.parentNode.previousSibling),b||(b=a.parentNode.parentNode.previousSibling);b.lastChild;)b=b.lastChild;return b},j=function(a){var b;for(b=a.nextSibling,b||(b=a.parentNode.nextSibling),b||(b=a.parentNode.parentNode.nextSibling);null!=b?b.firstChild:void 0;)b=b.firstChild;return b},b=function(){function a(){butterfly.body.classList.add("selection"),this.selection=getSelection()}return a.prototype.reset=function(){var a,b,c;for(this.selection=getSelection(),a=document.createRange(),a.setStart(this.selection.anchorNode,this.selection.anchorOffset),a.setEnd(this.selection.focusNode,this.selection.focusOffset),this.start={node:this.selection.anchorNode,offset:this.selection.anchorOffset},this.end={node:this.selection.focusNode,offset:this.selection.focusOffset},a.collapsed&&(b=[this.end,this.start],this.start=b[0],this.end=b[1]),this.startLine=this.start.node;!this.startLine.classList||p.call(this.startLine.classList,"line")<0;)this.startLine=this.startLine.parentNode;for(this.endLine=this.end.node,c=[];!this.endLine.classList||p.call(this.endLine.classList,"line")<0;)c.push(this.endLine=this.endLine.parentNode);return c},a.prototype.clear=function(){return this.selection.removeAllRanges()},a.prototype.destroy=function(){return butterfly.body.classList.remove("selection"),this.clear()},a.prototype.text=function(){return this.selection.toString().replace(/\u00A0/g," ").replace(/\u2007/g," ")},a.prototype.up=function(){return this.go(-1)},a.prototype.down=function(){return this.go(1)},a.prototype.go=function(a){var b;if(b=butterfly.children.indexOf(this.startLine)+a,b>=0&&b=0&&b0;)if(f[--d].match(b))return{node:e,offset:d+1};e=l(e),f=null!=e?e.textContent:void 0,d=f.length}else for(;e;){for(;d=0)return!0;if(a.shiftKey&&13===a.keyCode&&!m&&!getSelection().isCollapsed)return butterfly.send(getSelection().toString()),getSelection().removeAllRanges(),f(a);if(m){if(m.reset(),!a.ctrlKey&&a.shiftKey&&37<=(d=a.keyCode)&&40>=d)return!0;if(a.shiftKey&&a.ctrlKey)38===a.keyCode?m.up():40===a.keyCode&&m.down();else if(39===a.keyCode)m.shrinkLeft();else if(38===a.keyCode)m.expandLeft();else if(37===a.keyCode)m.shrinkRight();else{if(40!==a.keyCode)return f(a);m.expandRight()}return null!=m&&m.apply(),f(a)}return!m&&a.ctrlKey&&a.shiftKey&&38===a.keyCode?(m=new b,m.selectLine(butterfly.y-1),m.apply(),f(a)):!0}),document.addEventListener("keyup",function(a){var b,c;if(b=a.keyCode,p.call([16,17,18,19],b)>=0)return!0;if(m){if(13===a.keyCode)return butterfly.send(m.text()),m.destroy(),m=null,f(a);if(c=a.keyCode,p.call([37,38,39,40],c)<0)return m.destroy(),m=null,!0}return!0}),document.addEventListener("dblclick",function(a){var b,c,d,e,f;if(!(a.ctrlKey||a.altkey||(f=getSelection(),f.isCollapsed||f.toString().match(/\s/)))){for(e=document.createRange(),e.setStart(f.anchorNode,f.anchorOffset),e.setEnd(f.focusNode,f.focusOffset),e.collapsed&&(f.removeAllRanges(),d=document.createRange(),d.setStart(f.focusNode,f.focusOffset),d.setEnd(f.anchorNode,f.anchorOffset),f.addRange(d));!f.toString().match(/\s/)&&f.toString();)f.modify("extend","forward","character");for(f.modify("extend","backward","character"),b=f.anchorNode,c=f.anchorOffset,f.collapseToEnd(),f.extend(b,c);!f.toString().match(/\s/)&&f.toString();)f.modify("extend","backward","character");return f.modify("extend","forward","character")}}),c=function(a){var b;return document.getElementById("style").setAttribute("href",a),b=document.createElement("img"),b.onerror=function(){return setTimeout(function(){return"undefined"!=typeof butterfly&&null!==butterfly?butterfly.resize():void 0},50)},b.src=a},d="undefined"!=typeof localStorage&&null!==localStorage?localStorage.getItem("theme"):void 0,d&&c(d),this.set_theme=function(a){return d=a,"undefined"!=typeof localStorage&&null!==localStorage&&localStorage.setItem("theme",a),a?c(a):void 0},document.addEventListener("keydown",function(a){}),document.addEventListener("keydown",function(a){var b,c;return a.altKey&&83===a.keyCode?a.shiftKey?(c=document.getElementById("style").getAttribute("href"),c=c.split("?")[0],document.getElementById("style").setAttribute("href",c+"?"+(new Date).getTime()),f(a)):(b=new XMLHttpRequest,b.addEventListener("load",function(){var a,b,c,e,f,g,h,i,j;if(f=JSON.parse(this.responseText),i=f.themes,0===i.length)return void alert("No themes found in "+f.dir+".\n Please install themes with butterfly.server.py --install-themes");for(a='
\n

Pick a theme:

\n \n \n
",k.open(a),h=document.getElementById("theme_list"),h.addEventListener("change",function(){return set_theme(h.value)})}),b.open("GET","/themes/list.json"),b.send(),f(a)):!0}),/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)&&(h=!1,e=!1,i=!0,o=document.createElement("input"),o.type="password",o.style.position="fixed",o.style.top=0,o.style.left=0,o.style.border="none",o.style.outline="none",o.style.opacity=0,o.value="0",document.body.appendChild(o),o.addEventListener("blur",function(){return setTimeout(function(a){return function(){return a.focus()}}(this),10)}),addEventListener("click",function(){return o.focus()}),addEventListener("touchstart",function(a){return 2===a.touches.length?h=!0:3===a.touches.length?(h=!1,e=!0):4===a.touches.length?(h=!0,e=!0):void 0}),o.addEventListener("keydown",function(a){return butterfly.keyDown(a),!0}),o.addEventListener("input",function(a){var b;return b=this.value.length,0===b?(a.keyCode=8,butterfly.keyDown(a),this.value="0",!0):(a.keyCode=this.value.charAt(1).charCodeAt(0),!h&&!e||i?(butterfly.keyPress(a),i=!1,this.value="0",!0):(a.keyCode=this.value.charAt(1).charCodeAt(0),a.ctrlKey=h,a.altKey=e,a.keyCode>=97&&a.keyCode<=122&&(a.keyCode-=32),butterfly.keyDown(a),this.value="0",h=e=!1,!0))}))}).call(this); +(function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};g=function(a){var b,c,d,e;if(a.indexOf("")<0)return a;for(c=-1,d="",e="normal";c=0&&c++,e="normal";break;case"csi":if("?>!$\" '".indexOf(b)>=0)break;if(b>="0"&&"9">=b)break;if(";"===b)break;e="normal";break;case"osc":(""===b||""===b)&&(""===b&&c++,e="normal")}return d},o=function(a,b){var c;return c=function(d){var e,f,h;return e=g(d.data),console.log(e),null===b||b.test(e)?(butterfly.body.classList.remove("alarm"),f="Butterfly ["+butterfly.title+"]",a?(h=new Notification(f,{body:e,icon:"/static/images/favicon.png"}),h.onclick=function(){return window.focus(),h.close()}):alert(f+"\n"+e),butterfly.ws.removeEventListener("message",c)):void 0},butterfly.ws.addEventListener("message",c),butterfly.body.classList.add("alarm")},f=function(a){return a.preventDefault&&a.preventDefault(),a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0,!1},document.addEventListener("keydown",function(a){var b;if(!a.altKey||65!==a.keyCode)return!0;if(b=null,a.shiftKey){if(b=prompt("Ring alarm when encountering the following text: (can be a regexp)"),!b)return;b=new RegExp(b)}return Notification&&"default"===Notification.permission?Notification.requestPermission(function(){return o("granted"===Notification.permission,b)}):o("granted"===Notification.permission,b),f(a)}),addEventListener("copy",h=function(a){var b,c,d,e,f,g,h;for(butterfly.bell("copied"),a.clipboardData.clearData(),h=getSelection().toString().replace(/\u00A0/g," ").replace(/\u2007/g," "),b="",g=h.split("\n"),d=0,e=g.length;e>d;d++)f=g[d],"⏎"===f.slice(-1)?(c="",f=f.slice(0,-1)):c="\n",b+=f.replace(/\s*$/,"")+c;return a.clipboardData.setData("text/plain",b.slice(0,-1)),a.preventDefault()}),addEventListener("paste",function(a){var b;return butterfly.bell("pasted"),b=a.clipboardData.getData("text/plain"),b=b.replace(/\r\n/g,"\n").replace(/\n/g,"\r"),butterfly.send(b),a.preventDefault()}),addEventListener("beforeunload",function(a){return butterfly.body.classList.contains("dead")||location.href.indexOf("session")>-1?void 0:a.returnValue="This terminal is active and not in session. Are you sure you want to kill it?"}),a=function(){function a(){this.el=document.getElementById("popup"),this.bound_click_maybe_close=this.click_maybe_close.bind(this),this.bound_key_maybe_close=this.key_maybe_close.bind(this)}return a.prototype.open=function(a){return this.el.innerHTML=a,this.el.classList.remove("hidden"),addEventListener("click",this.bound_click_maybe_close),addEventListener("keydown",this.bound_key_maybe_close)},a.prototype.close=function(){return removeEventListener("click",this.bound_click_maybe_close),removeEventListener("keydown",this.bound_key_maybe_close),this.el.classList.add("hidden"),this.el.innerHTML=""},a.prototype.click_maybe_close=function(a){var b;for(b=a.target;b.parentElement;){if(Array.prototype.slice.call(this.el.children).indexOf(b)>-1)return!0;b=b.parentElement}return this.close(),f(a)},a.prototype.key_maybe_close=function(a){return 27!==a.keyCode?!0:(this.close(),f(a))},a}(),l=new a,n=null,f=function(a){return a.preventDefault&&a.preventDefault(),a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0,!1},m=function(a){var b;for(b=a.previousSibling,b||(b=a.parentNode.previousSibling),b||(b=a.parentNode.parentNode.previousSibling);b.lastChild;)b=b.lastChild;return b},k=function(a){var b;for(b=a.nextSibling,b||(b=a.parentNode.nextSibling),b||(b=a.parentNode.parentNode.nextSibling);null!=b?b.firstChild:void 0;)b=b.firstChild;return b},b=function(){function a(){butterfly.body.classList.add("selection"),this.selection=getSelection()}return a.prototype.reset=function(){var a,b,c;for(this.selection=getSelection(),a=document.createRange(),a.setStart(this.selection.anchorNode,this.selection.anchorOffset),a.setEnd(this.selection.focusNode,this.selection.focusOffset),this.start={node:this.selection.anchorNode,offset:this.selection.anchorOffset},this.end={node:this.selection.focusNode,offset:this.selection.focusOffset},a.collapsed&&(b=[this.end,this.start],this.start=b[0],this.end=b[1]),this.startLine=this.start.node;!this.startLine.classList||q.call(this.startLine.classList,"line")<0;)this.startLine=this.startLine.parentNode;for(this.endLine=this.end.node,c=[];!this.endLine.classList||q.call(this.endLine.classList,"line")<0;)c.push(this.endLine=this.endLine.parentNode);return c},a.prototype.clear=function(){return this.selection.removeAllRanges()},a.prototype.destroy=function(){return butterfly.body.classList.remove("selection"),this.clear()},a.prototype.text=function(){return this.selection.toString().replace(/\u00A0/g," ").replace(/\u2007/g," ")},a.prototype.up=function(){return this.go(-1)},a.prototype.down=function(){return this.go(1)},a.prototype.go=function(a){var b;if(b=butterfly.children.indexOf(this.startLine)+a,b>=0&&b=0&&b0;)if(f[--d].match(b))return{node:e,offset:d+1};e=m(e),f=null!=e?e.textContent:void 0,d=f.length}else for(;e;){for(;d=0)return!0;if(a.shiftKey&&13===a.keyCode&&!n&&!getSelection().isCollapsed)return butterfly.send(getSelection().toString()),getSelection().removeAllRanges(),f(a);if(n){if(n.reset(),!a.ctrlKey&&a.shiftKey&&37<=(d=a.keyCode)&&40>=d)return!0;if(a.shiftKey&&a.ctrlKey)38===a.keyCode?n.up():40===a.keyCode&&n.down();else if(39===a.keyCode)n.shrinkLeft();else if(38===a.keyCode)n.expandLeft();else if(37===a.keyCode)n.shrinkRight();else{if(40!==a.keyCode)return f(a);n.expandRight()}return null!=n&&n.apply(),f(a)}return!n&&a.ctrlKey&&a.shiftKey&&38===a.keyCode?(n=new b,n.selectLine(butterfly.y-1),n.apply(),f(a)):!0}),document.addEventListener("keyup",function(a){var b,c;if(b=a.keyCode,q.call([16,17,18,19],b)>=0)return!0;if(n){if(13===a.keyCode)return butterfly.send(n.text()),n.destroy(),n=null,f(a);if(c=a.keyCode,q.call([37,38,39,40],c)<0)return n.destroy(),n=null,!0}return!0}),document.addEventListener("dblclick",function(a){var b,c,d,e,f;if(!(a.ctrlKey||a.altkey||(f=getSelection(),f.isCollapsed||f.toString().match(/\s/)))){for(e=document.createRange(),e.setStart(f.anchorNode,f.anchorOffset),e.setEnd(f.focusNode,f.focusOffset),e.collapsed&&(f.removeAllRanges(),d=document.createRange(),d.setStart(f.focusNode,f.focusOffset),d.setEnd(f.anchorNode,f.anchorOffset),f.addRange(d));!f.toString().match(/\s/)&&f.toString();)f.modify("extend","forward","character");for(f.modify("extend","backward","character"),b=f.anchorNode,c=f.anchorOffset,f.collapseToEnd(),f.extend(b,c);!f.toString().match(/\s/)&&f.toString();)f.modify("extend","backward","character");return f.modify("extend","forward","character")}}),c=function(a){var b;return document.getElementById("style").setAttribute("href",a),b=document.createElement("img"),b.onerror=function(){return setTimeout(function(){return"undefined"!=typeof butterfly&&null!==butterfly?butterfly.resize():void 0},50)},b.src=a},d="undefined"!=typeof localStorage&&null!==localStorage?localStorage.getItem("theme"):void 0,d&&c(d),this.set_theme=function(a){return d=a,"undefined"!=typeof localStorage&&null!==localStorage&&localStorage.setItem("theme",a),a?c(a):void 0},document.addEventListener("keydown",function(a){}),document.addEventListener("keydown",function(a){var b,e;return a.altKey&&83===a.keyCode?a.shiftKey?(e=document.getElementById("style").getAttribute("href"),e=e.split("?")[0],c(e+"?"+(new Date).getTime()),f(a)):(b=new XMLHttpRequest,b.addEventListener("load",function(){var a,b,c,e,f,g,h,i,j;if(f=JSON.parse(this.responseText),i=f.themes,0===i.length)return void alert("No themes found in "+f.dir+".\n Please install themes with butterfly.server.py --install-themes");for(a='
\n

Pick a theme:

\n \n \n
",l.open(a),h=document.getElementById("theme_list"),h.addEventListener("change",function(){return set_theme(h.value)})}),b.open("GET","/themes/list.json"),b.send(),f(a)):!0}),/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)&&(i=!1,e=!1,j=!0,p=document.createElement("input"),p.type="password",p.style.position="fixed",p.style.top=0,p.style.left=0,p.style.border="none",p.style.outline="none",p.style.opacity=0,p.value="0",document.body.appendChild(p),p.addEventListener("blur",function(){return setTimeout(function(a){return function(){return a.focus()}}(this),10)}),addEventListener("click",function(){return p.focus()}),addEventListener("touchstart",function(a){return 2===a.touches.length?i=!0:3===a.touches.length?(i=!1,e=!0):4===a.touches.length?(i=!0,e=!0):void 0}),p.addEventListener("keydown",function(a){return butterfly.keyDown(a),!0}),p.addEventListener("input",function(a){var b;return b=this.value.length,0===b?(a.keyCode=8,butterfly.keyDown(a),this.value="0",!0):(a.keyCode=this.value.charAt(1).charCodeAt(0),!i&&!e||j?(butterfly.keyPress(a),j=!1,this.value="0",!0):(a.keyCode=this.value.charAt(1).charCodeAt(0),a.ctrlKey=i,a.altKey=e,a.keyCode>=97&&a.keyCode<=122&&(a.keyCode-=32),butterfly.keyDown(a),this.value="0",i=e=!1,!0))}))}).call(this); //# sourceMappingURL=ext.min.js.map \ No newline at end of file diff --git a/butterfly/static/main.css b/butterfly/static/main.css index 9bda4bf..2ff33ee 100644 --- a/butterfly/static/main.css +++ b/butterfly/static/main.css @@ -12,10 +12,46 @@ /* You should have received a copy of the GNU General Public License */ /* along with this program. If not, see . */ /* Theses are the various imported style files */ -/* You can put this file in /etc/butterfly/style.sass or ~/.butterfly/style.sass */ -/* To customize the style of your terminal. */ /* THIS NEEDS the python `libsass` library to be installed. */ -/* You can also copy the imported files in those dirs, they will be imported prioritarily. */ +/* You can copy the imported files in the theme dir, they will be imported prioritarily. */ +/* These a the default variables */ +/* *-* coding: utf-8 *-* */ +/* This file is part of butterfly */ +/* butterfly Copyright (C) 2015 Florian Mounier */ +/* This program is free software: you can redistribute it and/or modify */ +/* it under the terms of the GNU General Public License as published by */ +/* the Free Software Foundation, either version 3 of the License, or */ +/* (at your option) any later version. */ +/* This program is distributed in the hope that it will be useful, */ +/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ +/* GNU General Public License for more details. */ +/* Variables */ +/** Font Size */ +/** Colors */ +/* Foreground */ +/* Background */ +/* 16 Colors in this orders :Black, Red, Green, Yellow, Blue, Magenta, Cyan, White, Bright Black, Bright Red, Bright Green, Bright Yellow, Bright Blue, Bright Magenta, Bright Cyan, Bright White */ +/** Text effects */ +/** Scroll */ +/** Popup */ +/* These are all imported files */ +/* *-* coding: utf-8 *-* */ +/* This file is part of butterfly */ +/* butterfly Copyright (C) 2015 Florian Mounier */ +/* This program is free software: you can redistribute it and/or modify */ +/* it under the terms of the GNU General Public License as published by */ +/* the Free Software Foundation, either version 3 of the License, or */ +/* (at your option) any later version. */ +/* This program is distributed in the hope that it will be useful, */ +/* but WITHOUT ANY WARRANTY; without even the implied warranty of */ +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ +/* GNU General Public License for more details. */ +/* You should have received a copy of the GNU General Public License */ +/* along with this program. If not, see . */ +/* Theses are the various imported style files */ +/* THIS NEEDS the python `libsass` library to be installed. */ +/* You can copy the imported files in the theme dir, they will be imported prioritarily. */ /* You can change this file to import any webfont: */ /* *-* coding: utf-8 *-* */ /* This file is part of butterfly */ @@ -67,6 +103,7 @@ body { font-family: "SourceCodePro"; + font-size: 1em; line-height: 1.2; } /* You can comment / uncomment the following to enable/disable terminal effects. */ @@ -125,7 +162,7 @@ body { /* Comment this one to remove the blurry text: */ body { - text-shadow: 0 0 6px rgba(255, 255, 255, 0.5); } + text-shadow: 0 0 0 rgba(244, 234, 213, 0); } /* @import all_fx */ /* *-* coding: utf-8 *-* */ @@ -156,195 +193,163 @@ body { /* You should have received a copy of the GNU General Public License */ /* along with this program. If not, see . */ /* Here are the 16 "normal" colors for theming */ -/* Black */ .bg-color-0 { background-color: #2e3436; } .bg-color-0.reverse-video { color: #2e3436 !important; } .fg-color-0 { - color: #2e3436; - text-shadow: 0 0 6px rgba(46, 52, 54, 0.5); } + color: #2e3436; } .fg-color-0.reverse-video { background-color: #2e3436 !important; } -/* Red */ .bg-color-1 { background-color: #cc0000; } .bg-color-1.reverse-video { color: #cc0000 !important; } .fg-color-1, .nbsp { - color: #cc0000; - text-shadow: 0 0 6px rgba(204, 0, 0, 0.5); } + color: #cc0000; } .fg-color-1.reverse-video, .reverse-video.nbsp { background-color: #cc0000 !important; } -/* Green */ .bg-color-2 { background-color: #4e9a06; } .bg-color-2.reverse-video { color: #4e9a06 !important; } .fg-color-2 { - color: #4e9a06; - text-shadow: 0 0 6px rgba(78, 154, 6, 0.5); } + color: #4e9a06; } .fg-color-2.reverse-video { background-color: #4e9a06 !important; } -/* Yellow */ .bg-color-3 { background-color: #c4a000; } .bg-color-3.reverse-video { color: #c4a000 !important; } .fg-color-3 { - color: #c4a000; - text-shadow: 0 0 6px rgba(196, 160, 0, 0.5); } + color: #c4a000; } .fg-color-3.reverse-video { background-color: #c4a000 !important; } -/* Blue */ .bg-color-4 { background-color: #3465a4; } .bg-color-4.reverse-video { color: #3465a4 !important; } .fg-color-4 { - color: #3465a4; - text-shadow: 0 0 6px rgba(52, 101, 164, 0.5); } + color: #3465a4; } .fg-color-4.reverse-video { background-color: #3465a4 !important; } -/* Magenta */ .bg-color-5 { background-color: #75507b; } .bg-color-5.reverse-video { color: #75507b !important; } .fg-color-5 { - color: #75507b; - text-shadow: 0 0 6px rgba(117, 80, 123, 0.5); } + color: #75507b; } .fg-color-5.reverse-video { background-color: #75507b !important; } -/* Cyan */ .bg-color-6 { background-color: #06989a; } .bg-color-6.reverse-video { color: #06989a !important; } .fg-color-6 { - color: #06989a; - text-shadow: 0 0 6px rgba(6, 152, 154, 0.5); } + color: #06989a; } .fg-color-6.reverse-video { background-color: #06989a !important; } -/* White */ .bg-color-7 { background-color: #d3d7cf; } .bg-color-7.reverse-video { color: #d3d7cf !important; } .fg-color-7 { - color: #d3d7cf; - text-shadow: 0 0 6px rgba(211, 215, 207, 0.5); } + color: #d3d7cf; } .fg-color-7.reverse-video { background-color: #d3d7cf !important; } -/* Bright Black */ .bg-color-8 { background-color: #555753; } .bg-color-8.reverse-video { color: #555753 !important; } .fg-color-8 { - color: #555753; - text-shadow: 0 0 6px rgba(85, 87, 83, 0.5); } + color: #555753; } .fg-color-8.reverse-video { background-color: #555753 !important; } -/* Bright Red */ .bg-color-9 { background-color: #ef2929; } .bg-color-9.reverse-video { color: #ef2929 !important; } .fg-color-9 { - color: #ef2929; - text-shadow: 0 0 6px rgba(239, 41, 41, 0.5); } + color: #ef2929; } .fg-color-9.reverse-video { background-color: #ef2929 !important; } -/* Bright Green */ .bg-color-10 { background-color: #8ae234; } .bg-color-10.reverse-video { color: #8ae234 !important; } .fg-color-10 { - color: #8ae234; - text-shadow: 0 0 6px rgba(138, 226, 52, 0.5); } + color: #8ae234; } .fg-color-10.reverse-video { background-color: #8ae234 !important; } -/* Bright Yellow */ .bg-color-11 { background-color: #fce94f; } .bg-color-11.reverse-video { color: #fce94f !important; } .fg-color-11 { - color: #fce94f; - text-shadow: 0 0 6px rgba(252, 233, 79, 0.5); } + color: #fce94f; } .fg-color-11.reverse-video { background-color: #fce94f !important; } -/* Bright Blue */ .bg-color-12 { background-color: #729fcf; } .bg-color-12.reverse-video { color: #729fcf !important; } .fg-color-12 { - color: #729fcf; - text-shadow: 0 0 6px rgba(114, 159, 207, 0.5); } + color: #729fcf; } .fg-color-12.reverse-video { background-color: #729fcf !important; } -/* Bright Magenta */ .bg-color-13 { background-color: #ad7fa8; } .bg-color-13.reverse-video { color: #ad7fa8 !important; } .fg-color-13 { - color: #ad7fa8; - text-shadow: 0 0 6px rgba(173, 127, 168, 0.5); } + color: #ad7fa8; } .fg-color-13.reverse-video { background-color: #ad7fa8 !important; } -/* Bright Cyan */ .bg-color-14 { background-color: #34e2e2; } .bg-color-14.reverse-video { color: #34e2e2 !important; } .fg-color-14 { - color: #34e2e2; - text-shadow: 0 0 6px rgba(52, 226, 226, 0.5); } + color: #34e2e2; } .fg-color-14.reverse-video { background-color: #34e2e2 !important; } -/* Bright White */ .bg-color-15 { background-color: #eeeeec; } .bg-color-15.reverse-video { color: #eeeeec !important; } .fg-color-15 { - color: #eeeeec; - text-shadow: 0 0 6px rgba(238, 238, 236, 0.5); } + color: #eeeeec; } .fg-color-15.reverse-video { background-color: #eeeeec !important; } @@ -369,8 +374,7 @@ body { color: black !important; } .fg-color-16 { - color: black; - text-shadow: 0 0 6px rgba(0, 0, 0, 0.5); } + color: black; } .fg-color-16.reverse-video { background-color: black !important; } @@ -380,8 +384,7 @@ body { color: #00005f !important; } .fg-color-17 { - color: #00005f; - text-shadow: 0 0 6px rgba(0, 0, 95, 0.5); } + color: #00005f; } .fg-color-17.reverse-video { background-color: #00005f !important; } @@ -391,8 +394,7 @@ body { color: #000087 !important; } .fg-color-18 { - color: #000087; - text-shadow: 0 0 6px rgba(0, 0, 135, 0.5); } + color: #000087; } .fg-color-18.reverse-video { background-color: #000087 !important; } @@ -402,8 +404,7 @@ body { color: #0000af !important; } .fg-color-19 { - color: #0000af; - text-shadow: 0 0 6px rgba(0, 0, 175, 0.5); } + color: #0000af; } .fg-color-19.reverse-video { background-color: #0000af !important; } @@ -413,8 +414,7 @@ body { color: #0000d7 !important; } .fg-color-20 { - color: #0000d7; - text-shadow: 0 0 6px rgba(0, 0, 215, 0.5); } + color: #0000d7; } .fg-color-20.reverse-video { background-color: #0000d7 !important; } @@ -424,8 +424,7 @@ body { color: blue !important; } .fg-color-21 { - color: blue; - text-shadow: 0 0 6px rgba(0, 0, 255, 0.5); } + color: blue; } .fg-color-21.reverse-video { background-color: blue !important; } @@ -435,8 +434,7 @@ body { color: #005f00 !important; } .fg-color-22 { - color: #005f00; - text-shadow: 0 0 6px rgba(0, 95, 0, 0.5); } + color: #005f00; } .fg-color-22.reverse-video { background-color: #005f00 !important; } @@ -446,8 +444,7 @@ body { color: #005f5f !important; } .fg-color-23 { - color: #005f5f; - text-shadow: 0 0 6px rgba(0, 95, 95, 0.5); } + color: #005f5f; } .fg-color-23.reverse-video { background-color: #005f5f !important; } @@ -457,8 +454,7 @@ body { color: #005f87 !important; } .fg-color-24 { - color: #005f87; - text-shadow: 0 0 6px rgba(0, 95, 135, 0.5); } + color: #005f87; } .fg-color-24.reverse-video { background-color: #005f87 !important; } @@ -468,8 +464,7 @@ body { color: #005faf !important; } .fg-color-25 { - color: #005faf; - text-shadow: 0 0 6px rgba(0, 95, 175, 0.5); } + color: #005faf; } .fg-color-25.reverse-video { background-color: #005faf !important; } @@ -479,8 +474,7 @@ body { color: #005fd7 !important; } .fg-color-26 { - color: #005fd7; - text-shadow: 0 0 6px rgba(0, 95, 215, 0.5); } + color: #005fd7; } .fg-color-26.reverse-video { background-color: #005fd7 !important; } @@ -490,8 +484,7 @@ body { color: #005fff !important; } .fg-color-27 { - color: #005fff; - text-shadow: 0 0 6px rgba(0, 95, 255, 0.5); } + color: #005fff; } .fg-color-27.reverse-video { background-color: #005fff !important; } @@ -501,8 +494,7 @@ body { color: #008700 !important; } .fg-color-28 { - color: #008700; - text-shadow: 0 0 6px rgba(0, 135, 0, 0.5); } + color: #008700; } .fg-color-28.reverse-video { background-color: #008700 !important; } @@ -512,8 +504,7 @@ body { color: #00875f !important; } .fg-color-29 { - color: #00875f; - text-shadow: 0 0 6px rgba(0, 135, 95, 0.5); } + color: #00875f; } .fg-color-29.reverse-video { background-color: #00875f !important; } @@ -523,8 +514,7 @@ body { color: #008787 !important; } .fg-color-30 { - color: #008787; - text-shadow: 0 0 6px rgba(0, 135, 135, 0.5); } + color: #008787; } .fg-color-30.reverse-video { background-color: #008787 !important; } @@ -534,8 +524,7 @@ body { color: #0087af !important; } .fg-color-31 { - color: #0087af; - text-shadow: 0 0 6px rgba(0, 135, 175, 0.5); } + color: #0087af; } .fg-color-31.reverse-video { background-color: #0087af !important; } @@ -545,8 +534,7 @@ body { color: #0087d7 !important; } .fg-color-32 { - color: #0087d7; - text-shadow: 0 0 6px rgba(0, 135, 215, 0.5); } + color: #0087d7; } .fg-color-32.reverse-video { background-color: #0087d7 !important; } @@ -556,8 +544,7 @@ body { color: #0087ff !important; } .fg-color-33 { - color: #0087ff; - text-shadow: 0 0 6px rgba(0, 135, 255, 0.5); } + color: #0087ff; } .fg-color-33.reverse-video { background-color: #0087ff !important; } @@ -567,8 +554,7 @@ body { color: #00af00 !important; } .fg-color-34 { - color: #00af00; - text-shadow: 0 0 6px rgba(0, 175, 0, 0.5); } + color: #00af00; } .fg-color-34.reverse-video { background-color: #00af00 !important; } @@ -578,8 +564,7 @@ body { color: #00af5f !important; } .fg-color-35 { - color: #00af5f; - text-shadow: 0 0 6px rgba(0, 175, 95, 0.5); } + color: #00af5f; } .fg-color-35.reverse-video { background-color: #00af5f !important; } @@ -589,8 +574,7 @@ body { color: #00af87 !important; } .fg-color-36 { - color: #00af87; - text-shadow: 0 0 6px rgba(0, 175, 135, 0.5); } + color: #00af87; } .fg-color-36.reverse-video { background-color: #00af87 !important; } @@ -600,8 +584,7 @@ body { color: #00afaf !important; } .fg-color-37 { - color: #00afaf; - text-shadow: 0 0 6px rgba(0, 175, 175, 0.5); } + color: #00afaf; } .fg-color-37.reverse-video { background-color: #00afaf !important; } @@ -611,8 +594,7 @@ body { color: #00afd7 !important; } .fg-color-38 { - color: #00afd7; - text-shadow: 0 0 6px rgba(0, 175, 215, 0.5); } + color: #00afd7; } .fg-color-38.reverse-video { background-color: #00afd7 !important; } @@ -622,8 +604,7 @@ body { color: #00afff !important; } .fg-color-39 { - color: #00afff; - text-shadow: 0 0 6px rgba(0, 175, 255, 0.5); } + color: #00afff; } .fg-color-39.reverse-video { background-color: #00afff !important; } @@ -633,8 +614,7 @@ body { color: #00d700 !important; } .fg-color-40 { - color: #00d700; - text-shadow: 0 0 6px rgba(0, 215, 0, 0.5); } + color: #00d700; } .fg-color-40.reverse-video { background-color: #00d700 !important; } @@ -644,8 +624,7 @@ body { color: #00d75f !important; } .fg-color-41 { - color: #00d75f; - text-shadow: 0 0 6px rgba(0, 215, 95, 0.5); } + color: #00d75f; } .fg-color-41.reverse-video { background-color: #00d75f !important; } @@ -655,8 +634,7 @@ body { color: #00d787 !important; } .fg-color-42 { - color: #00d787; - text-shadow: 0 0 6px rgba(0, 215, 135, 0.5); } + color: #00d787; } .fg-color-42.reverse-video { background-color: #00d787 !important; } @@ -666,8 +644,7 @@ body { color: #00d7af !important; } .fg-color-43 { - color: #00d7af; - text-shadow: 0 0 6px rgba(0, 215, 175, 0.5); } + color: #00d7af; } .fg-color-43.reverse-video { background-color: #00d7af !important; } @@ -677,8 +654,7 @@ body { color: #00d7d7 !important; } .fg-color-44 { - color: #00d7d7; - text-shadow: 0 0 6px rgba(0, 215, 215, 0.5); } + color: #00d7d7; } .fg-color-44.reverse-video { background-color: #00d7d7 !important; } @@ -688,8 +664,7 @@ body { color: #00d7ff !important; } .fg-color-45 { - color: #00d7ff; - text-shadow: 0 0 6px rgba(0, 215, 255, 0.5); } + color: #00d7ff; } .fg-color-45.reverse-video { background-color: #00d7ff !important; } @@ -699,8 +674,7 @@ body { color: lime !important; } .fg-color-46 { - color: lime; - text-shadow: 0 0 6px rgba(0, 255, 0, 0.5); } + color: lime; } .fg-color-46.reverse-video { background-color: lime !important; } @@ -710,8 +684,7 @@ body { color: #00ff5f !important; } .fg-color-47 { - color: #00ff5f; - text-shadow: 0 0 6px rgba(0, 255, 95, 0.5); } + color: #00ff5f; } .fg-color-47.reverse-video { background-color: #00ff5f !important; } @@ -721,8 +694,7 @@ body { color: #00ff87 !important; } .fg-color-48 { - color: #00ff87; - text-shadow: 0 0 6px rgba(0, 255, 135, 0.5); } + color: #00ff87; } .fg-color-48.reverse-video { background-color: #00ff87 !important; } @@ -732,8 +704,7 @@ body { color: #00ffaf !important; } .fg-color-49 { - color: #00ffaf; - text-shadow: 0 0 6px rgba(0, 255, 175, 0.5); } + color: #00ffaf; } .fg-color-49.reverse-video { background-color: #00ffaf !important; } @@ -743,8 +714,7 @@ body { color: #00ffd7 !important; } .fg-color-50 { - color: #00ffd7; - text-shadow: 0 0 6px rgba(0, 255, 215, 0.5); } + color: #00ffd7; } .fg-color-50.reverse-video { background-color: #00ffd7 !important; } @@ -754,8 +724,7 @@ body { color: cyan !important; } .fg-color-51 { - color: cyan; - text-shadow: 0 0 6px rgba(0, 255, 255, 0.5); } + color: cyan; } .fg-color-51.reverse-video { background-color: cyan !important; } @@ -765,8 +734,7 @@ body { color: #5f0000 !important; } .fg-color-52 { - color: #5f0000; - text-shadow: 0 0 6px rgba(95, 0, 0, 0.5); } + color: #5f0000; } .fg-color-52.reverse-video { background-color: #5f0000 !important; } @@ -776,8 +744,7 @@ body { color: #5f005f !important; } .fg-color-53 { - color: #5f005f; - text-shadow: 0 0 6px rgba(95, 0, 95, 0.5); } + color: #5f005f; } .fg-color-53.reverse-video { background-color: #5f005f !important; } @@ -787,8 +754,7 @@ body { color: #5f0087 !important; } .fg-color-54 { - color: #5f0087; - text-shadow: 0 0 6px rgba(95, 0, 135, 0.5); } + color: #5f0087; } .fg-color-54.reverse-video { background-color: #5f0087 !important; } @@ -798,8 +764,7 @@ body { color: #5f00af !important; } .fg-color-55 { - color: #5f00af; - text-shadow: 0 0 6px rgba(95, 0, 175, 0.5); } + color: #5f00af; } .fg-color-55.reverse-video { background-color: #5f00af !important; } @@ -809,8 +774,7 @@ body { color: #5f00d7 !important; } .fg-color-56 { - color: #5f00d7; - text-shadow: 0 0 6px rgba(95, 0, 215, 0.5); } + color: #5f00d7; } .fg-color-56.reverse-video { background-color: #5f00d7 !important; } @@ -820,8 +784,7 @@ body { color: #5f00ff !important; } .fg-color-57 { - color: #5f00ff; - text-shadow: 0 0 6px rgba(95, 0, 255, 0.5); } + color: #5f00ff; } .fg-color-57.reverse-video { background-color: #5f00ff !important; } @@ -831,8 +794,7 @@ body { color: #5f5f00 !important; } .fg-color-58 { - color: #5f5f00; - text-shadow: 0 0 6px rgba(95, 95, 0, 0.5); } + color: #5f5f00; } .fg-color-58.reverse-video { background-color: #5f5f00 !important; } @@ -842,8 +804,7 @@ body { color: #5f5f5f !important; } .fg-color-59 { - color: #5f5f5f; - text-shadow: 0 0 6px rgba(95, 95, 95, 0.5); } + color: #5f5f5f; } .fg-color-59.reverse-video { background-color: #5f5f5f !important; } @@ -853,8 +814,7 @@ body { color: #5f5f87 !important; } .fg-color-60 { - color: #5f5f87; - text-shadow: 0 0 6px rgba(95, 95, 135, 0.5); } + color: #5f5f87; } .fg-color-60.reverse-video { background-color: #5f5f87 !important; } @@ -864,8 +824,7 @@ body { color: #5f5faf !important; } .fg-color-61 { - color: #5f5faf; - text-shadow: 0 0 6px rgba(95, 95, 175, 0.5); } + color: #5f5faf; } .fg-color-61.reverse-video { background-color: #5f5faf !important; } @@ -875,8 +834,7 @@ body { color: #5f5fd7 !important; } .fg-color-62 { - color: #5f5fd7; - text-shadow: 0 0 6px rgba(95, 95, 215, 0.5); } + color: #5f5fd7; } .fg-color-62.reverse-video { background-color: #5f5fd7 !important; } @@ -886,8 +844,7 @@ body { color: #5f5fff !important; } .fg-color-63 { - color: #5f5fff; - text-shadow: 0 0 6px rgba(95, 95, 255, 0.5); } + color: #5f5fff; } .fg-color-63.reverse-video { background-color: #5f5fff !important; } @@ -897,8 +854,7 @@ body { color: #5f8700 !important; } .fg-color-64 { - color: #5f8700; - text-shadow: 0 0 6px rgba(95, 135, 0, 0.5); } + color: #5f8700; } .fg-color-64.reverse-video { background-color: #5f8700 !important; } @@ -908,8 +864,7 @@ body { color: #5f875f !important; } .fg-color-65 { - color: #5f875f; - text-shadow: 0 0 6px rgba(95, 135, 95, 0.5); } + color: #5f875f; } .fg-color-65.reverse-video { background-color: #5f875f !important; } @@ -919,8 +874,7 @@ body { color: #5f8787 !important; } .fg-color-66 { - color: #5f8787; - text-shadow: 0 0 6px rgba(95, 135, 135, 0.5); } + color: #5f8787; } .fg-color-66.reverse-video { background-color: #5f8787 !important; } @@ -930,8 +884,7 @@ body { color: #5f87af !important; } .fg-color-67 { - color: #5f87af; - text-shadow: 0 0 6px rgba(95, 135, 175, 0.5); } + color: #5f87af; } .fg-color-67.reverse-video { background-color: #5f87af !important; } @@ -941,8 +894,7 @@ body { color: #5f87d7 !important; } .fg-color-68 { - color: #5f87d7; - text-shadow: 0 0 6px rgba(95, 135, 215, 0.5); } + color: #5f87d7; } .fg-color-68.reverse-video { background-color: #5f87d7 !important; } @@ -952,8 +904,7 @@ body { color: #5f87ff !important; } .fg-color-69 { - color: #5f87ff; - text-shadow: 0 0 6px rgba(95, 135, 255, 0.5); } + color: #5f87ff; } .fg-color-69.reverse-video { background-color: #5f87ff !important; } @@ -963,8 +914,7 @@ body { color: #5faf00 !important; } .fg-color-70 { - color: #5faf00; - text-shadow: 0 0 6px rgba(95, 175, 0, 0.5); } + color: #5faf00; } .fg-color-70.reverse-video { background-color: #5faf00 !important; } @@ -974,8 +924,7 @@ body { color: #5faf5f !important; } .fg-color-71 { - color: #5faf5f; - text-shadow: 0 0 6px rgba(95, 175, 95, 0.5); } + color: #5faf5f; } .fg-color-71.reverse-video { background-color: #5faf5f !important; } @@ -985,8 +934,7 @@ body { color: #5faf87 !important; } .fg-color-72 { - color: #5faf87; - text-shadow: 0 0 6px rgba(95, 175, 135, 0.5); } + color: #5faf87; } .fg-color-72.reverse-video { background-color: #5faf87 !important; } @@ -996,8 +944,7 @@ body { color: #5fafaf !important; } .fg-color-73 { - color: #5fafaf; - text-shadow: 0 0 6px rgba(95, 175, 175, 0.5); } + color: #5fafaf; } .fg-color-73.reverse-video { background-color: #5fafaf !important; } @@ -1007,8 +954,7 @@ body { color: #5fafd7 !important; } .fg-color-74 { - color: #5fafd7; - text-shadow: 0 0 6px rgba(95, 175, 215, 0.5); } + color: #5fafd7; } .fg-color-74.reverse-video { background-color: #5fafd7 !important; } @@ -1018,8 +964,7 @@ body { color: #5fafff !important; } .fg-color-75 { - color: #5fafff; - text-shadow: 0 0 6px rgba(95, 175, 255, 0.5); } + color: #5fafff; } .fg-color-75.reverse-video { background-color: #5fafff !important; } @@ -1029,8 +974,7 @@ body { color: #5fd700 !important; } .fg-color-76 { - color: #5fd700; - text-shadow: 0 0 6px rgba(95, 215, 0, 0.5); } + color: #5fd700; } .fg-color-76.reverse-video { background-color: #5fd700 !important; } @@ -1040,8 +984,7 @@ body { color: #5fd75f !important; } .fg-color-77 { - color: #5fd75f; - text-shadow: 0 0 6px rgba(95, 215, 95, 0.5); } + color: #5fd75f; } .fg-color-77.reverse-video { background-color: #5fd75f !important; } @@ -1051,8 +994,7 @@ body { color: #5fd787 !important; } .fg-color-78 { - color: #5fd787; - text-shadow: 0 0 6px rgba(95, 215, 135, 0.5); } + color: #5fd787; } .fg-color-78.reverse-video { background-color: #5fd787 !important; } @@ -1062,8 +1004,7 @@ body { color: #5fd7af !important; } .fg-color-79 { - color: #5fd7af; - text-shadow: 0 0 6px rgba(95, 215, 175, 0.5); } + color: #5fd7af; } .fg-color-79.reverse-video { background-color: #5fd7af !important; } @@ -1073,8 +1014,7 @@ body { color: #5fd7d7 !important; } .fg-color-80 { - color: #5fd7d7; - text-shadow: 0 0 6px rgba(95, 215, 215, 0.5); } + color: #5fd7d7; } .fg-color-80.reverse-video { background-color: #5fd7d7 !important; } @@ -1084,8 +1024,7 @@ body { color: #5fd7ff !important; } .fg-color-81 { - color: #5fd7ff; - text-shadow: 0 0 6px rgba(95, 215, 255, 0.5); } + color: #5fd7ff; } .fg-color-81.reverse-video { background-color: #5fd7ff !important; } @@ -1095,8 +1034,7 @@ body { color: #5fff00 !important; } .fg-color-82 { - color: #5fff00; - text-shadow: 0 0 6px rgba(95, 255, 0, 0.5); } + color: #5fff00; } .fg-color-82.reverse-video { background-color: #5fff00 !important; } @@ -1106,8 +1044,7 @@ body { color: #5fff5f !important; } .fg-color-83 { - color: #5fff5f; - text-shadow: 0 0 6px rgba(95, 255, 95, 0.5); } + color: #5fff5f; } .fg-color-83.reverse-video { background-color: #5fff5f !important; } @@ -1117,8 +1054,7 @@ body { color: #5fff87 !important; } .fg-color-84 { - color: #5fff87; - text-shadow: 0 0 6px rgba(95, 255, 135, 0.5); } + color: #5fff87; } .fg-color-84.reverse-video { background-color: #5fff87 !important; } @@ -1128,8 +1064,7 @@ body { color: #5fffaf !important; } .fg-color-85 { - color: #5fffaf; - text-shadow: 0 0 6px rgba(95, 255, 175, 0.5); } + color: #5fffaf; } .fg-color-85.reverse-video { background-color: #5fffaf !important; } @@ -1139,8 +1074,7 @@ body { color: #5fffd7 !important; } .fg-color-86 { - color: #5fffd7; - text-shadow: 0 0 6px rgba(95, 255, 215, 0.5); } + color: #5fffd7; } .fg-color-86.reverse-video { background-color: #5fffd7 !important; } @@ -1150,8 +1084,7 @@ body { color: #5fffff !important; } .fg-color-87 { - color: #5fffff; - text-shadow: 0 0 6px rgba(95, 255, 255, 0.5); } + color: #5fffff; } .fg-color-87.reverse-video { background-color: #5fffff !important; } @@ -1161,8 +1094,7 @@ body { color: #870000 !important; } .fg-color-88 { - color: #870000; - text-shadow: 0 0 6px rgba(135, 0, 0, 0.5); } + color: #870000; } .fg-color-88.reverse-video { background-color: #870000 !important; } @@ -1172,8 +1104,7 @@ body { color: #87005f !important; } .fg-color-89 { - color: #87005f; - text-shadow: 0 0 6px rgba(135, 0, 95, 0.5); } + color: #87005f; } .fg-color-89.reverse-video { background-color: #87005f !important; } @@ -1183,8 +1114,7 @@ body { color: #870087 !important; } .fg-color-90 { - color: #870087; - text-shadow: 0 0 6px rgba(135, 0, 135, 0.5); } + color: #870087; } .fg-color-90.reverse-video { background-color: #870087 !important; } @@ -1194,8 +1124,7 @@ body { color: #8700af !important; } .fg-color-91 { - color: #8700af; - text-shadow: 0 0 6px rgba(135, 0, 175, 0.5); } + color: #8700af; } .fg-color-91.reverse-video { background-color: #8700af !important; } @@ -1205,8 +1134,7 @@ body { color: #8700d7 !important; } .fg-color-92 { - color: #8700d7; - text-shadow: 0 0 6px rgba(135, 0, 215, 0.5); } + color: #8700d7; } .fg-color-92.reverse-video { background-color: #8700d7 !important; } @@ -1216,8 +1144,7 @@ body { color: #8700ff !important; } .fg-color-93 { - color: #8700ff; - text-shadow: 0 0 6px rgba(135, 0, 255, 0.5); } + color: #8700ff; } .fg-color-93.reverse-video { background-color: #8700ff !important; } @@ -1227,8 +1154,7 @@ body { color: #875f00 !important; } .fg-color-94 { - color: #875f00; - text-shadow: 0 0 6px rgba(135, 95, 0, 0.5); } + color: #875f00; } .fg-color-94.reverse-video { background-color: #875f00 !important; } @@ -1238,8 +1164,7 @@ body { color: #875f5f !important; } .fg-color-95 { - color: #875f5f; - text-shadow: 0 0 6px rgba(135, 95, 95, 0.5); } + color: #875f5f; } .fg-color-95.reverse-video { background-color: #875f5f !important; } @@ -1249,8 +1174,7 @@ body { color: #875f87 !important; } .fg-color-96 { - color: #875f87; - text-shadow: 0 0 6px rgba(135, 95, 135, 0.5); } + color: #875f87; } .fg-color-96.reverse-video { background-color: #875f87 !important; } @@ -1260,8 +1184,7 @@ body { color: #875faf !important; } .fg-color-97 { - color: #875faf; - text-shadow: 0 0 6px rgba(135, 95, 175, 0.5); } + color: #875faf; } .fg-color-97.reverse-video { background-color: #875faf !important; } @@ -1271,8 +1194,7 @@ body { color: #875fd7 !important; } .fg-color-98 { - color: #875fd7; - text-shadow: 0 0 6px rgba(135, 95, 215, 0.5); } + color: #875fd7; } .fg-color-98.reverse-video { background-color: #875fd7 !important; } @@ -1282,8 +1204,7 @@ body { color: #875fff !important; } .fg-color-99 { - color: #875fff; - text-shadow: 0 0 6px rgba(135, 95, 255, 0.5); } + color: #875fff; } .fg-color-99.reverse-video { background-color: #875fff !important; } @@ -1293,8 +1214,7 @@ body { color: #878700 !important; } .fg-color-100 { - color: #878700; - text-shadow: 0 0 6px rgba(135, 135, 0, 0.5); } + color: #878700; } .fg-color-100.reverse-video { background-color: #878700 !important; } @@ -1304,8 +1224,7 @@ body { color: #87875f !important; } .fg-color-101 { - color: #87875f; - text-shadow: 0 0 6px rgba(135, 135, 95, 0.5); } + color: #87875f; } .fg-color-101.reverse-video { background-color: #87875f !important; } @@ -1315,8 +1234,7 @@ body { color: #878787 !important; } .fg-color-102 { - color: #878787; - text-shadow: 0 0 6px rgba(135, 135, 135, 0.5); } + color: #878787; } .fg-color-102.reverse-video { background-color: #878787 !important; } @@ -1326,8 +1244,7 @@ body { color: #8787af !important; } .fg-color-103 { - color: #8787af; - text-shadow: 0 0 6px rgba(135, 135, 175, 0.5); } + color: #8787af; } .fg-color-103.reverse-video { background-color: #8787af !important; } @@ -1337,8 +1254,7 @@ body { color: #8787d7 !important; } .fg-color-104 { - color: #8787d7; - text-shadow: 0 0 6px rgba(135, 135, 215, 0.5); } + color: #8787d7; } .fg-color-104.reverse-video { background-color: #8787d7 !important; } @@ -1348,8 +1264,7 @@ body { color: #8787ff !important; } .fg-color-105 { - color: #8787ff; - text-shadow: 0 0 6px rgba(135, 135, 255, 0.5); } + color: #8787ff; } .fg-color-105.reverse-video { background-color: #8787ff !important; } @@ -1359,8 +1274,7 @@ body { color: #87af00 !important; } .fg-color-106 { - color: #87af00; - text-shadow: 0 0 6px rgba(135, 175, 0, 0.5); } + color: #87af00; } .fg-color-106.reverse-video { background-color: #87af00 !important; } @@ -1370,8 +1284,7 @@ body { color: #87af5f !important; } .fg-color-107 { - color: #87af5f; - text-shadow: 0 0 6px rgba(135, 175, 95, 0.5); } + color: #87af5f; } .fg-color-107.reverse-video { background-color: #87af5f !important; } @@ -1381,8 +1294,7 @@ body { color: #87af87 !important; } .fg-color-108 { - color: #87af87; - text-shadow: 0 0 6px rgba(135, 175, 135, 0.5); } + color: #87af87; } .fg-color-108.reverse-video { background-color: #87af87 !important; } @@ -1392,8 +1304,7 @@ body { color: #87afaf !important; } .fg-color-109 { - color: #87afaf; - text-shadow: 0 0 6px rgba(135, 175, 175, 0.5); } + color: #87afaf; } .fg-color-109.reverse-video { background-color: #87afaf !important; } @@ -1403,8 +1314,7 @@ body { color: #87afd7 !important; } .fg-color-110 { - color: #87afd7; - text-shadow: 0 0 6px rgba(135, 175, 215, 0.5); } + color: #87afd7; } .fg-color-110.reverse-video { background-color: #87afd7 !important; } @@ -1414,8 +1324,7 @@ body { color: #87afff !important; } .fg-color-111 { - color: #87afff; - text-shadow: 0 0 6px rgba(135, 175, 255, 0.5); } + color: #87afff; } .fg-color-111.reverse-video { background-color: #87afff !important; } @@ -1425,8 +1334,7 @@ body { color: #87d700 !important; } .fg-color-112 { - color: #87d700; - text-shadow: 0 0 6px rgba(135, 215, 0, 0.5); } + color: #87d700; } .fg-color-112.reverse-video { background-color: #87d700 !important; } @@ -1436,8 +1344,7 @@ body { color: #87d75f !important; } .fg-color-113 { - color: #87d75f; - text-shadow: 0 0 6px rgba(135, 215, 95, 0.5); } + color: #87d75f; } .fg-color-113.reverse-video { background-color: #87d75f !important; } @@ -1447,8 +1354,7 @@ body { color: #87d787 !important; } .fg-color-114 { - color: #87d787; - text-shadow: 0 0 6px rgba(135, 215, 135, 0.5); } + color: #87d787; } .fg-color-114.reverse-video { background-color: #87d787 !important; } @@ -1458,8 +1364,7 @@ body { color: #87d7af !important; } .fg-color-115 { - color: #87d7af; - text-shadow: 0 0 6px rgba(135, 215, 175, 0.5); } + color: #87d7af; } .fg-color-115.reverse-video { background-color: #87d7af !important; } @@ -1469,8 +1374,7 @@ body { color: #87d7d7 !important; } .fg-color-116 { - color: #87d7d7; - text-shadow: 0 0 6px rgba(135, 215, 215, 0.5); } + color: #87d7d7; } .fg-color-116.reverse-video { background-color: #87d7d7 !important; } @@ -1480,8 +1384,7 @@ body { color: #87d7ff !important; } .fg-color-117 { - color: #87d7ff; - text-shadow: 0 0 6px rgba(135, 215, 255, 0.5); } + color: #87d7ff; } .fg-color-117.reverse-video { background-color: #87d7ff !important; } @@ -1491,8 +1394,7 @@ body { color: #87ff00 !important; } .fg-color-118 { - color: #87ff00; - text-shadow: 0 0 6px rgba(135, 255, 0, 0.5); } + color: #87ff00; } .fg-color-118.reverse-video { background-color: #87ff00 !important; } @@ -1502,8 +1404,7 @@ body { color: #87ff5f !important; } .fg-color-119 { - color: #87ff5f; - text-shadow: 0 0 6px rgba(135, 255, 95, 0.5); } + color: #87ff5f; } .fg-color-119.reverse-video { background-color: #87ff5f !important; } @@ -1513,8 +1414,7 @@ body { color: #87ff87 !important; } .fg-color-120 { - color: #87ff87; - text-shadow: 0 0 6px rgba(135, 255, 135, 0.5); } + color: #87ff87; } .fg-color-120.reverse-video { background-color: #87ff87 !important; } @@ -1524,8 +1424,7 @@ body { color: #87ffaf !important; } .fg-color-121 { - color: #87ffaf; - text-shadow: 0 0 6px rgba(135, 255, 175, 0.5); } + color: #87ffaf; } .fg-color-121.reverse-video { background-color: #87ffaf !important; } @@ -1535,8 +1434,7 @@ body { color: #87ffd7 !important; } .fg-color-122 { - color: #87ffd7; - text-shadow: 0 0 6px rgba(135, 255, 215, 0.5); } + color: #87ffd7; } .fg-color-122.reverse-video { background-color: #87ffd7 !important; } @@ -1546,8 +1444,7 @@ body { color: #87ffff !important; } .fg-color-123 { - color: #87ffff; - text-shadow: 0 0 6px rgba(135, 255, 255, 0.5); } + color: #87ffff; } .fg-color-123.reverse-video { background-color: #87ffff !important; } @@ -1557,8 +1454,7 @@ body { color: #af0000 !important; } .fg-color-124 { - color: #af0000; - text-shadow: 0 0 6px rgba(175, 0, 0, 0.5); } + color: #af0000; } .fg-color-124.reverse-video { background-color: #af0000 !important; } @@ -1568,8 +1464,7 @@ body { color: #af005f !important; } .fg-color-125 { - color: #af005f; - text-shadow: 0 0 6px rgba(175, 0, 95, 0.5); } + color: #af005f; } .fg-color-125.reverse-video { background-color: #af005f !important; } @@ -1579,8 +1474,7 @@ body { color: #af0087 !important; } .fg-color-126 { - color: #af0087; - text-shadow: 0 0 6px rgba(175, 0, 135, 0.5); } + color: #af0087; } .fg-color-126.reverse-video { background-color: #af0087 !important; } @@ -1590,8 +1484,7 @@ body { color: #af00af !important; } .fg-color-127 { - color: #af00af; - text-shadow: 0 0 6px rgba(175, 0, 175, 0.5); } + color: #af00af; } .fg-color-127.reverse-video { background-color: #af00af !important; } @@ -1601,8 +1494,7 @@ body { color: #af00d7 !important; } .fg-color-128 { - color: #af00d7; - text-shadow: 0 0 6px rgba(175, 0, 215, 0.5); } + color: #af00d7; } .fg-color-128.reverse-video { background-color: #af00d7 !important; } @@ -1612,8 +1504,7 @@ body { color: #af00ff !important; } .fg-color-129 { - color: #af00ff; - text-shadow: 0 0 6px rgba(175, 0, 255, 0.5); } + color: #af00ff; } .fg-color-129.reverse-video { background-color: #af00ff !important; } @@ -1623,8 +1514,7 @@ body { color: #af5f00 !important; } .fg-color-130 { - color: #af5f00; - text-shadow: 0 0 6px rgba(175, 95, 0, 0.5); } + color: #af5f00; } .fg-color-130.reverse-video { background-color: #af5f00 !important; } @@ -1634,8 +1524,7 @@ body { color: #af5f5f !important; } .fg-color-131 { - color: #af5f5f; - text-shadow: 0 0 6px rgba(175, 95, 95, 0.5); } + color: #af5f5f; } .fg-color-131.reverse-video { background-color: #af5f5f !important; } @@ -1645,8 +1534,7 @@ body { color: #af5f87 !important; } .fg-color-132 { - color: #af5f87; - text-shadow: 0 0 6px rgba(175, 95, 135, 0.5); } + color: #af5f87; } .fg-color-132.reverse-video { background-color: #af5f87 !important; } @@ -1656,8 +1544,7 @@ body { color: #af5faf !important; } .fg-color-133 { - color: #af5faf; - text-shadow: 0 0 6px rgba(175, 95, 175, 0.5); } + color: #af5faf; } .fg-color-133.reverse-video { background-color: #af5faf !important; } @@ -1667,8 +1554,7 @@ body { color: #af5fd7 !important; } .fg-color-134 { - color: #af5fd7; - text-shadow: 0 0 6px rgba(175, 95, 215, 0.5); } + color: #af5fd7; } .fg-color-134.reverse-video { background-color: #af5fd7 !important; } @@ -1678,8 +1564,7 @@ body { color: #af5fff !important; } .fg-color-135 { - color: #af5fff; - text-shadow: 0 0 6px rgba(175, 95, 255, 0.5); } + color: #af5fff; } .fg-color-135.reverse-video { background-color: #af5fff !important; } @@ -1689,8 +1574,7 @@ body { color: #af8700 !important; } .fg-color-136 { - color: #af8700; - text-shadow: 0 0 6px rgba(175, 135, 0, 0.5); } + color: #af8700; } .fg-color-136.reverse-video { background-color: #af8700 !important; } @@ -1700,8 +1584,7 @@ body { color: #af875f !important; } .fg-color-137 { - color: #af875f; - text-shadow: 0 0 6px rgba(175, 135, 95, 0.5); } + color: #af875f; } .fg-color-137.reverse-video { background-color: #af875f !important; } @@ -1711,8 +1594,7 @@ body { color: #af8787 !important; } .fg-color-138 { - color: #af8787; - text-shadow: 0 0 6px rgba(175, 135, 135, 0.5); } + color: #af8787; } .fg-color-138.reverse-video { background-color: #af8787 !important; } @@ -1722,8 +1604,7 @@ body { color: #af87af !important; } .fg-color-139 { - color: #af87af; - text-shadow: 0 0 6px rgba(175, 135, 175, 0.5); } + color: #af87af; } .fg-color-139.reverse-video { background-color: #af87af !important; } @@ -1733,8 +1614,7 @@ body { color: #af87d7 !important; } .fg-color-140 { - color: #af87d7; - text-shadow: 0 0 6px rgba(175, 135, 215, 0.5); } + color: #af87d7; } .fg-color-140.reverse-video { background-color: #af87d7 !important; } @@ -1744,8 +1624,7 @@ body { color: #af87ff !important; } .fg-color-141 { - color: #af87ff; - text-shadow: 0 0 6px rgba(175, 135, 255, 0.5); } + color: #af87ff; } .fg-color-141.reverse-video { background-color: #af87ff !important; } @@ -1755,8 +1634,7 @@ body { color: #afaf00 !important; } .fg-color-142 { - color: #afaf00; - text-shadow: 0 0 6px rgba(175, 175, 0, 0.5); } + color: #afaf00; } .fg-color-142.reverse-video { background-color: #afaf00 !important; } @@ -1766,8 +1644,7 @@ body { color: #afaf5f !important; } .fg-color-143 { - color: #afaf5f; - text-shadow: 0 0 6px rgba(175, 175, 95, 0.5); } + color: #afaf5f; } .fg-color-143.reverse-video { background-color: #afaf5f !important; } @@ -1777,8 +1654,7 @@ body { color: #afaf87 !important; } .fg-color-144 { - color: #afaf87; - text-shadow: 0 0 6px rgba(175, 175, 135, 0.5); } + color: #afaf87; } .fg-color-144.reverse-video { background-color: #afaf87 !important; } @@ -1788,8 +1664,7 @@ body { color: #afafaf !important; } .fg-color-145 { - color: #afafaf; - text-shadow: 0 0 6px rgba(175, 175, 175, 0.5); } + color: #afafaf; } .fg-color-145.reverse-video { background-color: #afafaf !important; } @@ -1799,8 +1674,7 @@ body { color: #afafd7 !important; } .fg-color-146 { - color: #afafd7; - text-shadow: 0 0 6px rgba(175, 175, 215, 0.5); } + color: #afafd7; } .fg-color-146.reverse-video { background-color: #afafd7 !important; } @@ -1810,8 +1684,7 @@ body { color: #afafff !important; } .fg-color-147 { - color: #afafff; - text-shadow: 0 0 6px rgba(175, 175, 255, 0.5); } + color: #afafff; } .fg-color-147.reverse-video { background-color: #afafff !important; } @@ -1821,8 +1694,7 @@ body { color: #afd700 !important; } .fg-color-148 { - color: #afd700; - text-shadow: 0 0 6px rgba(175, 215, 0, 0.5); } + color: #afd700; } .fg-color-148.reverse-video { background-color: #afd700 !important; } @@ -1832,8 +1704,7 @@ body { color: #afd75f !important; } .fg-color-149 { - color: #afd75f; - text-shadow: 0 0 6px rgba(175, 215, 95, 0.5); } + color: #afd75f; } .fg-color-149.reverse-video { background-color: #afd75f !important; } @@ -1843,8 +1714,7 @@ body { color: #afd787 !important; } .fg-color-150 { - color: #afd787; - text-shadow: 0 0 6px rgba(175, 215, 135, 0.5); } + color: #afd787; } .fg-color-150.reverse-video { background-color: #afd787 !important; } @@ -1854,8 +1724,7 @@ body { color: #afd7af !important; } .fg-color-151 { - color: #afd7af; - text-shadow: 0 0 6px rgba(175, 215, 175, 0.5); } + color: #afd7af; } .fg-color-151.reverse-video { background-color: #afd7af !important; } @@ -1865,8 +1734,7 @@ body { color: #afd7d7 !important; } .fg-color-152 { - color: #afd7d7; - text-shadow: 0 0 6px rgba(175, 215, 215, 0.5); } + color: #afd7d7; } .fg-color-152.reverse-video { background-color: #afd7d7 !important; } @@ -1876,8 +1744,7 @@ body { color: #afd7ff !important; } .fg-color-153 { - color: #afd7ff; - text-shadow: 0 0 6px rgba(175, 215, 255, 0.5); } + color: #afd7ff; } .fg-color-153.reverse-video { background-color: #afd7ff !important; } @@ -1887,8 +1754,7 @@ body { color: #afff00 !important; } .fg-color-154 { - color: #afff00; - text-shadow: 0 0 6px rgba(175, 255, 0, 0.5); } + color: #afff00; } .fg-color-154.reverse-video { background-color: #afff00 !important; } @@ -1898,8 +1764,7 @@ body { color: #afff5f !important; } .fg-color-155 { - color: #afff5f; - text-shadow: 0 0 6px rgba(175, 255, 95, 0.5); } + color: #afff5f; } .fg-color-155.reverse-video { background-color: #afff5f !important; } @@ -1909,8 +1774,7 @@ body { color: #afff87 !important; } .fg-color-156 { - color: #afff87; - text-shadow: 0 0 6px rgba(175, 255, 135, 0.5); } + color: #afff87; } .fg-color-156.reverse-video { background-color: #afff87 !important; } @@ -1920,8 +1784,7 @@ body { color: #afffaf !important; } .fg-color-157 { - color: #afffaf; - text-shadow: 0 0 6px rgba(175, 255, 175, 0.5); } + color: #afffaf; } .fg-color-157.reverse-video { background-color: #afffaf !important; } @@ -1931,8 +1794,7 @@ body { color: #afffd7 !important; } .fg-color-158 { - color: #afffd7; - text-shadow: 0 0 6px rgba(175, 255, 215, 0.5); } + color: #afffd7; } .fg-color-158.reverse-video { background-color: #afffd7 !important; } @@ -1942,8 +1804,7 @@ body { color: #afffff !important; } .fg-color-159 { - color: #afffff; - text-shadow: 0 0 6px rgba(175, 255, 255, 0.5); } + color: #afffff; } .fg-color-159.reverse-video { background-color: #afffff !important; } @@ -1953,8 +1814,7 @@ body { color: #d70000 !important; } .fg-color-160 { - color: #d70000; - text-shadow: 0 0 6px rgba(215, 0, 0, 0.5); } + color: #d70000; } .fg-color-160.reverse-video { background-color: #d70000 !important; } @@ -1964,8 +1824,7 @@ body { color: #d7005f !important; } .fg-color-161 { - color: #d7005f; - text-shadow: 0 0 6px rgba(215, 0, 95, 0.5); } + color: #d7005f; } .fg-color-161.reverse-video { background-color: #d7005f !important; } @@ -1975,8 +1834,7 @@ body { color: #d70087 !important; } .fg-color-162 { - color: #d70087; - text-shadow: 0 0 6px rgba(215, 0, 135, 0.5); } + color: #d70087; } .fg-color-162.reverse-video { background-color: #d70087 !important; } @@ -1986,8 +1844,7 @@ body { color: #d700af !important; } .fg-color-163 { - color: #d700af; - text-shadow: 0 0 6px rgba(215, 0, 175, 0.5); } + color: #d700af; } .fg-color-163.reverse-video { background-color: #d700af !important; } @@ -1997,8 +1854,7 @@ body { color: #d700d7 !important; } .fg-color-164 { - color: #d700d7; - text-shadow: 0 0 6px rgba(215, 0, 215, 0.5); } + color: #d700d7; } .fg-color-164.reverse-video { background-color: #d700d7 !important; } @@ -2008,8 +1864,7 @@ body { color: #d700ff !important; } .fg-color-165 { - color: #d700ff; - text-shadow: 0 0 6px rgba(215, 0, 255, 0.5); } + color: #d700ff; } .fg-color-165.reverse-video { background-color: #d700ff !important; } @@ -2019,8 +1874,7 @@ body { color: #d75f00 !important; } .fg-color-166 { - color: #d75f00; - text-shadow: 0 0 6px rgba(215, 95, 0, 0.5); } + color: #d75f00; } .fg-color-166.reverse-video { background-color: #d75f00 !important; } @@ -2030,8 +1884,7 @@ body { color: #d75f5f !important; } .fg-color-167 { - color: #d75f5f; - text-shadow: 0 0 6px rgba(215, 95, 95, 0.5); } + color: #d75f5f; } .fg-color-167.reverse-video { background-color: #d75f5f !important; } @@ -2041,8 +1894,7 @@ body { color: #d75f87 !important; } .fg-color-168 { - color: #d75f87; - text-shadow: 0 0 6px rgba(215, 95, 135, 0.5); } + color: #d75f87; } .fg-color-168.reverse-video { background-color: #d75f87 !important; } @@ -2052,8 +1904,7 @@ body { color: #d75faf !important; } .fg-color-169 { - color: #d75faf; - text-shadow: 0 0 6px rgba(215, 95, 175, 0.5); } + color: #d75faf; } .fg-color-169.reverse-video { background-color: #d75faf !important; } @@ -2063,8 +1914,7 @@ body { color: #d75fd7 !important; } .fg-color-170 { - color: #d75fd7; - text-shadow: 0 0 6px rgba(215, 95, 215, 0.5); } + color: #d75fd7; } .fg-color-170.reverse-video { background-color: #d75fd7 !important; } @@ -2074,8 +1924,7 @@ body { color: #d75fff !important; } .fg-color-171 { - color: #d75fff; - text-shadow: 0 0 6px rgba(215, 95, 255, 0.5); } + color: #d75fff; } .fg-color-171.reverse-video { background-color: #d75fff !important; } @@ -2085,8 +1934,7 @@ body { color: #d78700 !important; } .fg-color-172 { - color: #d78700; - text-shadow: 0 0 6px rgba(215, 135, 0, 0.5); } + color: #d78700; } .fg-color-172.reverse-video { background-color: #d78700 !important; } @@ -2096,8 +1944,7 @@ body { color: #d7875f !important; } .fg-color-173 { - color: #d7875f; - text-shadow: 0 0 6px rgba(215, 135, 95, 0.5); } + color: #d7875f; } .fg-color-173.reverse-video { background-color: #d7875f !important; } @@ -2107,8 +1954,7 @@ body { color: #d78787 !important; } .fg-color-174 { - color: #d78787; - text-shadow: 0 0 6px rgba(215, 135, 135, 0.5); } + color: #d78787; } .fg-color-174.reverse-video { background-color: #d78787 !important; } @@ -2118,8 +1964,7 @@ body { color: #d787af !important; } .fg-color-175 { - color: #d787af; - text-shadow: 0 0 6px rgba(215, 135, 175, 0.5); } + color: #d787af; } .fg-color-175.reverse-video { background-color: #d787af !important; } @@ -2129,8 +1974,7 @@ body { color: #d787d7 !important; } .fg-color-176 { - color: #d787d7; - text-shadow: 0 0 6px rgba(215, 135, 215, 0.5); } + color: #d787d7; } .fg-color-176.reverse-video { background-color: #d787d7 !important; } @@ -2140,8 +1984,7 @@ body { color: #d787ff !important; } .fg-color-177 { - color: #d787ff; - text-shadow: 0 0 6px rgba(215, 135, 255, 0.5); } + color: #d787ff; } .fg-color-177.reverse-video { background-color: #d787ff !important; } @@ -2151,8 +1994,7 @@ body { color: #d7af00 !important; } .fg-color-178 { - color: #d7af00; - text-shadow: 0 0 6px rgba(215, 175, 0, 0.5); } + color: #d7af00; } .fg-color-178.reverse-video { background-color: #d7af00 !important; } @@ -2162,8 +2004,7 @@ body { color: #d7af5f !important; } .fg-color-179 { - color: #d7af5f; - text-shadow: 0 0 6px rgba(215, 175, 95, 0.5); } + color: #d7af5f; } .fg-color-179.reverse-video { background-color: #d7af5f !important; } @@ -2173,8 +2014,7 @@ body { color: #d7af87 !important; } .fg-color-180 { - color: #d7af87; - text-shadow: 0 0 6px rgba(215, 175, 135, 0.5); } + color: #d7af87; } .fg-color-180.reverse-video { background-color: #d7af87 !important; } @@ -2184,8 +2024,7 @@ body { color: #d7afaf !important; } .fg-color-181 { - color: #d7afaf; - text-shadow: 0 0 6px rgba(215, 175, 175, 0.5); } + color: #d7afaf; } .fg-color-181.reverse-video { background-color: #d7afaf !important; } @@ -2195,8 +2034,7 @@ body { color: #d7afd7 !important; } .fg-color-182 { - color: #d7afd7; - text-shadow: 0 0 6px rgba(215, 175, 215, 0.5); } + color: #d7afd7; } .fg-color-182.reverse-video { background-color: #d7afd7 !important; } @@ -2206,8 +2044,7 @@ body { color: #d7afff !important; } .fg-color-183 { - color: #d7afff; - text-shadow: 0 0 6px rgba(215, 175, 255, 0.5); } + color: #d7afff; } .fg-color-183.reverse-video { background-color: #d7afff !important; } @@ -2217,8 +2054,7 @@ body { color: #d7d700 !important; } .fg-color-184 { - color: #d7d700; - text-shadow: 0 0 6px rgba(215, 215, 0, 0.5); } + color: #d7d700; } .fg-color-184.reverse-video { background-color: #d7d700 !important; } @@ -2228,8 +2064,7 @@ body { color: #d7d75f !important; } .fg-color-185 { - color: #d7d75f; - text-shadow: 0 0 6px rgba(215, 215, 95, 0.5); } + color: #d7d75f; } .fg-color-185.reverse-video { background-color: #d7d75f !important; } @@ -2239,8 +2074,7 @@ body { color: #d7d787 !important; } .fg-color-186 { - color: #d7d787; - text-shadow: 0 0 6px rgba(215, 215, 135, 0.5); } + color: #d7d787; } .fg-color-186.reverse-video { background-color: #d7d787 !important; } @@ -2250,8 +2084,7 @@ body { color: #d7d7af !important; } .fg-color-187 { - color: #d7d7af; - text-shadow: 0 0 6px rgba(215, 215, 175, 0.5); } + color: #d7d7af; } .fg-color-187.reverse-video { background-color: #d7d7af !important; } @@ -2261,8 +2094,7 @@ body { color: #d7d7d7 !important; } .fg-color-188 { - color: #d7d7d7; - text-shadow: 0 0 6px rgba(215, 215, 215, 0.5); } + color: #d7d7d7; } .fg-color-188.reverse-video { background-color: #d7d7d7 !important; } @@ -2272,8 +2104,7 @@ body { color: #d7d7ff !important; } .fg-color-189 { - color: #d7d7ff; - text-shadow: 0 0 6px rgba(215, 215, 255, 0.5); } + color: #d7d7ff; } .fg-color-189.reverse-video { background-color: #d7d7ff !important; } @@ -2283,8 +2114,7 @@ body { color: #d7ff00 !important; } .fg-color-190 { - color: #d7ff00; - text-shadow: 0 0 6px rgba(215, 255, 0, 0.5); } + color: #d7ff00; } .fg-color-190.reverse-video { background-color: #d7ff00 !important; } @@ -2294,8 +2124,7 @@ body { color: #d7ff5f !important; } .fg-color-191 { - color: #d7ff5f; - text-shadow: 0 0 6px rgba(215, 255, 95, 0.5); } + color: #d7ff5f; } .fg-color-191.reverse-video { background-color: #d7ff5f !important; } @@ -2305,8 +2134,7 @@ body { color: #d7ff87 !important; } .fg-color-192 { - color: #d7ff87; - text-shadow: 0 0 6px rgba(215, 255, 135, 0.5); } + color: #d7ff87; } .fg-color-192.reverse-video { background-color: #d7ff87 !important; } @@ -2316,8 +2144,7 @@ body { color: #d7ffaf !important; } .fg-color-193 { - color: #d7ffaf; - text-shadow: 0 0 6px rgba(215, 255, 175, 0.5); } + color: #d7ffaf; } .fg-color-193.reverse-video { background-color: #d7ffaf !important; } @@ -2327,8 +2154,7 @@ body { color: #d7ffd7 !important; } .fg-color-194 { - color: #d7ffd7; - text-shadow: 0 0 6px rgba(215, 255, 215, 0.5); } + color: #d7ffd7; } .fg-color-194.reverse-video { background-color: #d7ffd7 !important; } @@ -2338,8 +2164,7 @@ body { color: #d7ffff !important; } .fg-color-195 { - color: #d7ffff; - text-shadow: 0 0 6px rgba(215, 255, 255, 0.5); } + color: #d7ffff; } .fg-color-195.reverse-video { background-color: #d7ffff !important; } @@ -2349,8 +2174,7 @@ body { color: red !important; } .fg-color-196 { - color: red; - text-shadow: 0 0 6px rgba(255, 0, 0, 0.5); } + color: red; } .fg-color-196.reverse-video { background-color: red !important; } @@ -2360,8 +2184,7 @@ body { color: #ff005f !important; } .fg-color-197 { - color: #ff005f; - text-shadow: 0 0 6px rgba(255, 0, 95, 0.5); } + color: #ff005f; } .fg-color-197.reverse-video { background-color: #ff005f !important; } @@ -2371,8 +2194,7 @@ body { color: #ff0087 !important; } .fg-color-198 { - color: #ff0087; - text-shadow: 0 0 6px rgba(255, 0, 135, 0.5); } + color: #ff0087; } .fg-color-198.reverse-video { background-color: #ff0087 !important; } @@ -2382,8 +2204,7 @@ body { color: #ff00af !important; } .fg-color-199 { - color: #ff00af; - text-shadow: 0 0 6px rgba(255, 0, 175, 0.5); } + color: #ff00af; } .fg-color-199.reverse-video { background-color: #ff00af !important; } @@ -2393,8 +2214,7 @@ body { color: #ff00d7 !important; } .fg-color-200 { - color: #ff00d7; - text-shadow: 0 0 6px rgba(255, 0, 215, 0.5); } + color: #ff00d7; } .fg-color-200.reverse-video { background-color: #ff00d7 !important; } @@ -2404,8 +2224,7 @@ body { color: magenta !important; } .fg-color-201 { - color: magenta; - text-shadow: 0 0 6px rgba(255, 0, 255, 0.5); } + color: magenta; } .fg-color-201.reverse-video { background-color: magenta !important; } @@ -2415,8 +2234,7 @@ body { color: #ff5f00 !important; } .fg-color-202 { - color: #ff5f00; - text-shadow: 0 0 6px rgba(255, 95, 0, 0.5); } + color: #ff5f00; } .fg-color-202.reverse-video { background-color: #ff5f00 !important; } @@ -2426,8 +2244,7 @@ body { color: #ff5f5f !important; } .fg-color-203 { - color: #ff5f5f; - text-shadow: 0 0 6px rgba(255, 95, 95, 0.5); } + color: #ff5f5f; } .fg-color-203.reverse-video { background-color: #ff5f5f !important; } @@ -2437,8 +2254,7 @@ body { color: #ff5f87 !important; } .fg-color-204 { - color: #ff5f87; - text-shadow: 0 0 6px rgba(255, 95, 135, 0.5); } + color: #ff5f87; } .fg-color-204.reverse-video { background-color: #ff5f87 !important; } @@ -2448,8 +2264,7 @@ body { color: #ff5faf !important; } .fg-color-205 { - color: #ff5faf; - text-shadow: 0 0 6px rgba(255, 95, 175, 0.5); } + color: #ff5faf; } .fg-color-205.reverse-video { background-color: #ff5faf !important; } @@ -2459,8 +2274,7 @@ body { color: #ff5fd7 !important; } .fg-color-206 { - color: #ff5fd7; - text-shadow: 0 0 6px rgba(255, 95, 215, 0.5); } + color: #ff5fd7; } .fg-color-206.reverse-video { background-color: #ff5fd7 !important; } @@ -2470,8 +2284,7 @@ body { color: #ff5fff !important; } .fg-color-207 { - color: #ff5fff; - text-shadow: 0 0 6px rgba(255, 95, 255, 0.5); } + color: #ff5fff; } .fg-color-207.reverse-video { background-color: #ff5fff !important; } @@ -2481,8 +2294,7 @@ body { color: #ff8700 !important; } .fg-color-208 { - color: #ff8700; - text-shadow: 0 0 6px rgba(255, 135, 0, 0.5); } + color: #ff8700; } .fg-color-208.reverse-video { background-color: #ff8700 !important; } @@ -2492,8 +2304,7 @@ body { color: #ff875f !important; } .fg-color-209 { - color: #ff875f; - text-shadow: 0 0 6px rgba(255, 135, 95, 0.5); } + color: #ff875f; } .fg-color-209.reverse-video { background-color: #ff875f !important; } @@ -2503,8 +2314,7 @@ body { color: #ff8787 !important; } .fg-color-210 { - color: #ff8787; - text-shadow: 0 0 6px rgba(255, 135, 135, 0.5); } + color: #ff8787; } .fg-color-210.reverse-video { background-color: #ff8787 !important; } @@ -2514,8 +2324,7 @@ body { color: #ff87af !important; } .fg-color-211 { - color: #ff87af; - text-shadow: 0 0 6px rgba(255, 135, 175, 0.5); } + color: #ff87af; } .fg-color-211.reverse-video { background-color: #ff87af !important; } @@ -2525,8 +2334,7 @@ body { color: #ff87d7 !important; } .fg-color-212 { - color: #ff87d7; - text-shadow: 0 0 6px rgba(255, 135, 215, 0.5); } + color: #ff87d7; } .fg-color-212.reverse-video { background-color: #ff87d7 !important; } @@ -2536,8 +2344,7 @@ body { color: #ff87ff !important; } .fg-color-213 { - color: #ff87ff; - text-shadow: 0 0 6px rgba(255, 135, 255, 0.5); } + color: #ff87ff; } .fg-color-213.reverse-video { background-color: #ff87ff !important; } @@ -2547,8 +2354,7 @@ body { color: #ffaf00 !important; } .fg-color-214 { - color: #ffaf00; - text-shadow: 0 0 6px rgba(255, 175, 0, 0.5); } + color: #ffaf00; } .fg-color-214.reverse-video { background-color: #ffaf00 !important; } @@ -2558,8 +2364,7 @@ body { color: #ffaf5f !important; } .fg-color-215 { - color: #ffaf5f; - text-shadow: 0 0 6px rgba(255, 175, 95, 0.5); } + color: #ffaf5f; } .fg-color-215.reverse-video { background-color: #ffaf5f !important; } @@ -2569,8 +2374,7 @@ body { color: #ffaf87 !important; } .fg-color-216 { - color: #ffaf87; - text-shadow: 0 0 6px rgba(255, 175, 135, 0.5); } + color: #ffaf87; } .fg-color-216.reverse-video { background-color: #ffaf87 !important; } @@ -2580,8 +2384,7 @@ body { color: #ffafaf !important; } .fg-color-217 { - color: #ffafaf; - text-shadow: 0 0 6px rgba(255, 175, 175, 0.5); } + color: #ffafaf; } .fg-color-217.reverse-video { background-color: #ffafaf !important; } @@ -2591,8 +2394,7 @@ body { color: #ffafd7 !important; } .fg-color-218 { - color: #ffafd7; - text-shadow: 0 0 6px rgba(255, 175, 215, 0.5); } + color: #ffafd7; } .fg-color-218.reverse-video { background-color: #ffafd7 !important; } @@ -2602,8 +2404,7 @@ body { color: #ffafff !important; } .fg-color-219 { - color: #ffafff; - text-shadow: 0 0 6px rgba(255, 175, 255, 0.5); } + color: #ffafff; } .fg-color-219.reverse-video { background-color: #ffafff !important; } @@ -2613,8 +2414,7 @@ body { color: gold !important; } .fg-color-220 { - color: gold; - text-shadow: 0 0 6px rgba(255, 215, 0, 0.5); } + color: gold; } .fg-color-220.reverse-video { background-color: gold !important; } @@ -2624,8 +2424,7 @@ body { color: #ffd75f !important; } .fg-color-221 { - color: #ffd75f; - text-shadow: 0 0 6px rgba(255, 215, 95, 0.5); } + color: #ffd75f; } .fg-color-221.reverse-video { background-color: #ffd75f !important; } @@ -2635,8 +2434,7 @@ body { color: #ffd787 !important; } .fg-color-222 { - color: #ffd787; - text-shadow: 0 0 6px rgba(255, 215, 135, 0.5); } + color: #ffd787; } .fg-color-222.reverse-video { background-color: #ffd787 !important; } @@ -2646,8 +2444,7 @@ body { color: #ffd7af !important; } .fg-color-223 { - color: #ffd7af; - text-shadow: 0 0 6px rgba(255, 215, 175, 0.5); } + color: #ffd7af; } .fg-color-223.reverse-video { background-color: #ffd7af !important; } @@ -2657,8 +2454,7 @@ body { color: #ffd7d7 !important; } .fg-color-224 { - color: #ffd7d7; - text-shadow: 0 0 6px rgba(255, 215, 215, 0.5); } + color: #ffd7d7; } .fg-color-224.reverse-video { background-color: #ffd7d7 !important; } @@ -2668,8 +2464,7 @@ body { color: #ffd7ff !important; } .fg-color-225 { - color: #ffd7ff; - text-shadow: 0 0 6px rgba(255, 215, 255, 0.5); } + color: #ffd7ff; } .fg-color-225.reverse-video { background-color: #ffd7ff !important; } @@ -2679,8 +2474,7 @@ body { color: yellow !important; } .fg-color-226 { - color: yellow; - text-shadow: 0 0 6px rgba(255, 255, 0, 0.5); } + color: yellow; } .fg-color-226.reverse-video { background-color: yellow !important; } @@ -2690,8 +2484,7 @@ body { color: #ffff5f !important; } .fg-color-227 { - color: #ffff5f; - text-shadow: 0 0 6px rgba(255, 255, 95, 0.5); } + color: #ffff5f; } .fg-color-227.reverse-video { background-color: #ffff5f !important; } @@ -2701,8 +2494,7 @@ body { color: #ffff87 !important; } .fg-color-228 { - color: #ffff87; - text-shadow: 0 0 6px rgba(255, 255, 135, 0.5); } + color: #ffff87; } .fg-color-228.reverse-video { background-color: #ffff87 !important; } @@ -2712,8 +2504,7 @@ body { color: #ffffaf !important; } .fg-color-229 { - color: #ffffaf; - text-shadow: 0 0 6px rgba(255, 255, 175, 0.5); } + color: #ffffaf; } .fg-color-229.reverse-video { background-color: #ffffaf !important; } @@ -2723,8 +2514,7 @@ body { color: #ffffd7 !important; } .fg-color-230 { - color: #ffffd7; - text-shadow: 0 0 6px rgba(255, 255, 215, 0.5); } + color: #ffffd7; } .fg-color-230.reverse-video { background-color: #ffffd7 !important; } @@ -2734,8 +2524,7 @@ body { color: white !important; } .fg-color-231 { - color: white; - text-shadow: 0 0 6px rgba(255, 255, 255, 0.5); } + color: white; } .fg-color-231.reverse-video { background-color: white !important; } @@ -2745,8 +2534,7 @@ body { color: #080808 !important; } .fg-color-232 { - color: #080808; - text-shadow: 0 0 6px rgba(8, 8, 8, 0.5); } + color: #080808; } .fg-color-232.reverse-video { background-color: #080808 !important; } @@ -2756,8 +2544,7 @@ body { color: #121212 !important; } .fg-color-233 { - color: #121212; - text-shadow: 0 0 6px rgba(18, 18, 18, 0.5); } + color: #121212; } .fg-color-233.reverse-video { background-color: #121212 !important; } @@ -2767,8 +2554,7 @@ body { color: #1c1c1c !important; } .fg-color-234 { - color: #1c1c1c; - text-shadow: 0 0 6px rgba(28, 28, 28, 0.5); } + color: #1c1c1c; } .fg-color-234.reverse-video { background-color: #1c1c1c !important; } @@ -2778,8 +2564,7 @@ body { color: #262626 !important; } .fg-color-235 { - color: #262626; - text-shadow: 0 0 6px rgba(38, 38, 38, 0.5); } + color: #262626; } .fg-color-235.reverse-video { background-color: #262626 !important; } @@ -2789,8 +2574,7 @@ body { color: #303030 !important; } .fg-color-236 { - color: #303030; - text-shadow: 0 0 6px rgba(48, 48, 48, 0.5); } + color: #303030; } .fg-color-236.reverse-video { background-color: #303030 !important; } @@ -2800,8 +2584,7 @@ body { color: #3a3a3a !important; } .fg-color-237 { - color: #3a3a3a; - text-shadow: 0 0 6px rgba(58, 58, 58, 0.5); } + color: #3a3a3a; } .fg-color-237.reverse-video { background-color: #3a3a3a !important; } @@ -2811,8 +2594,7 @@ body { color: #444444 !important; } .fg-color-238 { - color: #444444; - text-shadow: 0 0 6px rgba(68, 68, 68, 0.5); } + color: #444444; } .fg-color-238.reverse-video { background-color: #444444 !important; } @@ -2822,8 +2604,7 @@ body { color: #4e4e4e !important; } .fg-color-239 { - color: #4e4e4e; - text-shadow: 0 0 6px rgba(78, 78, 78, 0.5); } + color: #4e4e4e; } .fg-color-239.reverse-video { background-color: #4e4e4e !important; } @@ -2833,8 +2614,7 @@ body { color: #585858 !important; } .fg-color-240 { - color: #585858; - text-shadow: 0 0 6px rgba(88, 88, 88, 0.5); } + color: #585858; } .fg-color-240.reverse-video { background-color: #585858 !important; } @@ -2844,8 +2624,7 @@ body { color: #626262 !important; } .fg-color-241 { - color: #626262; - text-shadow: 0 0 6px rgba(98, 98, 98, 0.5); } + color: #626262; } .fg-color-241.reverse-video { background-color: #626262 !important; } @@ -2855,8 +2634,7 @@ body { color: #6c6c6c !important; } .fg-color-242 { - color: #6c6c6c; - text-shadow: 0 0 6px rgba(108, 108, 108, 0.5); } + color: #6c6c6c; } .fg-color-242.reverse-video { background-color: #6c6c6c !important; } @@ -2866,8 +2644,7 @@ body { color: #767676 !important; } .fg-color-243 { - color: #767676; - text-shadow: 0 0 6px rgba(118, 118, 118, 0.5); } + color: #767676; } .fg-color-243.reverse-video { background-color: #767676 !important; } @@ -2877,8 +2654,7 @@ body { color: gray !important; } .fg-color-244 { - color: gray; - text-shadow: 0 0 6px rgba(128, 128, 128, 0.5); } + color: gray; } .fg-color-244.reverse-video { background-color: gray !important; } @@ -2888,8 +2664,7 @@ body { color: #8a8a8a !important; } .fg-color-245 { - color: #8a8a8a; - text-shadow: 0 0 6px rgba(138, 138, 138, 0.5); } + color: #8a8a8a; } .fg-color-245.reverse-video { background-color: #8a8a8a !important; } @@ -2899,8 +2674,7 @@ body { color: #949494 !important; } .fg-color-246 { - color: #949494; - text-shadow: 0 0 6px rgba(148, 148, 148, 0.5); } + color: #949494; } .fg-color-246.reverse-video { background-color: #949494 !important; } @@ -2910,8 +2684,7 @@ body { color: #9e9e9e !important; } .fg-color-247 { - color: #9e9e9e; - text-shadow: 0 0 6px rgba(158, 158, 158, 0.5); } + color: #9e9e9e; } .fg-color-247.reverse-video { background-color: #9e9e9e !important; } @@ -2921,8 +2694,7 @@ body { color: #a8a8a8 !important; } .fg-color-248 { - color: #a8a8a8; - text-shadow: 0 0 6px rgba(168, 168, 168, 0.5); } + color: #a8a8a8; } .fg-color-248.reverse-video { background-color: #a8a8a8 !important; } @@ -2932,8 +2704,7 @@ body { color: #b2b2b2 !important; } .fg-color-249 { - color: #b2b2b2; - text-shadow: 0 0 6px rgba(178, 178, 178, 0.5); } + color: #b2b2b2; } .fg-color-249.reverse-video { background-color: #b2b2b2 !important; } @@ -2943,8 +2714,7 @@ body { color: #bcbcbc !important; } .fg-color-250 { - color: #bcbcbc; - text-shadow: 0 0 6px rgba(188, 188, 188, 0.5); } + color: #bcbcbc; } .fg-color-250.reverse-video { background-color: #bcbcbc !important; } @@ -2954,8 +2724,7 @@ body { color: #c6c6c6 !important; } .fg-color-251 { - color: #c6c6c6; - text-shadow: 0 0 6px rgba(198, 198, 198, 0.5); } + color: #c6c6c6; } .fg-color-251.reverse-video { background-color: #c6c6c6 !important; } @@ -2965,8 +2734,7 @@ body { color: #d0d0d0 !important; } .fg-color-252 { - color: #d0d0d0; - text-shadow: 0 0 6px rgba(208, 208, 208, 0.5); } + color: #d0d0d0; } .fg-color-252.reverse-video { background-color: #d0d0d0 !important; } @@ -2976,8 +2744,7 @@ body { color: #dadada !important; } .fg-color-253 { - color: #dadada; - text-shadow: 0 0 6px rgba(218, 218, 218, 0.5); } + color: #dadada; } .fg-color-253.reverse-video { background-color: #dadada !important; } @@ -2987,8 +2754,7 @@ body { color: #e4e4e4 !important; } .fg-color-254 { - color: #e4e4e4; - text-shadow: 0 0 6px rgba(228, 228, 228, 0.5); } + color: #e4e4e4; } .fg-color-254.reverse-video { background-color: #e4e4e4 !important; } @@ -2998,8 +2764,7 @@ body { color: #eeeeee !important; } .fg-color-255 { - color: #eeeeee; - text-shadow: 0 0 6px rgba(238, 238, 238, 0.5); } + color: #eeeeee; } .fg-color-255.reverse-video { background-color: #eeeeee !important; } @@ -3009,21 +2774,19 @@ body { color: #110f13 !important; } .fg-color-256 { - color: #110f13; - text-shadow: 0 0 6px rgba(17, 15, 19, 0.5); } + color: #110f13; } .fg-color-256.reverse-video { background-color: #110f13 !important; } .bg-color-257 { - background-color: #fff; } + background-color: #f4ead5; } .bg-color-257.reverse-video { - color: #fff !important; } + color: #f4ead5 !important; } .fg-color-257 { - color: #fff; - text-shadow: 0 0 6px rgba(255, 255, 255, 0.5); } + color: #f4ead5; } .fg-color-257.reverse-video { - background-color: #fff !important; } + background-color: #f4ead5 !important; } /* *-* coding: utf-8 *-* */ /* This file is part of butterfly */ @@ -3043,7 +2806,7 @@ html, body { padding: 0; line-height: 1.2; background-color: #110f13; - color: #fff; } + color: #f4ead5; } body { white-space: nowrap; @@ -3052,11 +2815,11 @@ body { /* Pop ups */ } body::-webkit-scrollbar { background: #110f13; - width: .75em; } + width: 0.75em; } body::-webkit-scrollbar-thumb { - background: rgba(255, 255, 255, 0.1); } + background: rgba(244, 234, 213, 0.1); } body::-webkit-scrollbar-thumb:hover { - background: rgba(255, 255, 255, 0.15); } + background: rgba(244, 234, 213, 0.1); } body .hidden { display: none !important; } body #popup { @@ -3068,7 +2831,9 @@ body { height: 100%; } body #popup form { padding: 1.5em; - background: rgba(127, 127, 127, 0.5); } + background: rgba(127, 127, 127, 0.5); + color: #f4ead5; + font-size: 1em; } body #popup form h2 { margin: .5em; } body #popup form select { @@ -3100,7 +2865,7 @@ body { transition: 300ms; } .cursor.reverse-video { - box-shadow: 0 0 0.5 #fff; } + box-shadow: 0 0 0 #f4ead5; } /* *-* coding: utf-8 *-* */ /* This file is part of butterfly */ @@ -3152,7 +2917,7 @@ body { .reverse-video { color: #110f13; - background-color: #fff; } + background-color: #f4ead5; } .blur .cursor.reverse-video { background: none; } diff --git a/butterfly/static/main.js b/butterfly/static/main.js index 7c7f939..be49f13 100644 --- a/butterfly/static/main.js +++ b/butterfly/static/main.js @@ -148,6 +148,7 @@ this.out = out1; this.ctl = ctl1 != null ? ctl1 : function() {}; this.document = this.parent.ownerDocument; + this.html = this.document.getElementsByTagName('html')[0]; this.body = this.document.getElementsByTagName('body')[0]; this.forceWidth = this.body.getAttribute('data-force-unicode-width') === 'yes'; this.body.className = 'terminal focus'; @@ -1640,7 +1641,7 @@ }; Terminal.prototype.resize = function(x, y) { - var el, i, j, line, oldCols, oldRows, px; + var el, h, i, j, line, oldCols, oldRows, px, w; if (x == null) { x = null; } @@ -1650,10 +1651,13 @@ oldCols = this.cols; oldRows = this.rows; this.computeCharSize(); - this.cols = x || Math.floor(this.body.clientWidth / this.charSize.width); - this.rows = y || Math.floor(window.innerHeight / this.charSize.height); - px = window.innerHeight % this.charSize.height; + w = this.body.clientWidth; + h = this.html.clientHeight - (this.html.offsetHeight - this.html.scrollHeight); + this.cols = x || Math.floor(w / this.charSize.width); + this.rows = y || Math.floor(h / this.charSize.height); + px = h % this.charSize.height; this.body.style['padding-bottom'] = px + "px"; + this.nativeScrollTo(); if ((!x && !y) && oldCols === this.cols && oldRows === this.rows) { return; } diff --git a/butterfly/static/main.min.js b/butterfly/static/main.min.js index 6a19457..52867fd 100644 --- a/butterfly/static/main.min.js +++ b/butterfly/static/main.min.js @@ -1,5 +1,5 @@ -/*! butterfly 2015-10-07 */ +/*! butterfly 2015-10-08 */ -(function(){var a,b,c,d,e,f,g,h,i,j=[].slice,k=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};e=h=null,g=!1,f=(new Date).getTime(),a=document.querySelectorAll.bind(document),document.addEventListener("DOMContentLoaded",function(){var a,b,d,e,h,i,k,l,m;return i=null,e=function(a){return l.send("S"+a)},a=function(){var a,b,c;return c=arguments[0],a=2<=arguments.length?j.call(arguments,1):[],b=a.join(","),"Resize"===c?l.send("R"+b):void 0},m="https:"===location.protocol?"wss://":"ws://",m+=document.location.host+"/ws"+location.pathname,l=new WebSocket(m),l.addEventListener("open",function(){return console.log("WebSocket open",arguments),i=new c(document.body,e,a),i.ws=l,window.butterfly=i,l.send("R"+i.cols+","+i.rows),f=(new Date).getTime()}),l.addEventListener("error",function(){return console.log("WebSocket error",arguments)}),b="",h=null,d="",l.addEventListener("message",function(a){return h&&clearTimeout(h),d+=a.data,i.stop&&(d=d.slice(-10240)),d.length>i.buffSize?k():h=setTimeout(k,1)}),k=function(){return i.write(d),i.stop&&(i.stop=!1,i.body.classList.remove("stopped")),d=""},l.addEventListener("close",function(){return console.log("WebSocket closed",arguments),setTimeout(function(){return i.write("Closed"),i.skipNextKey=!0,i.body.classList.add("dead")},1),g=!0,(new Date).getTime()-f>6e4?open("","_self").close():void 0}),addEventListener("beforeunload",function(){return g?void 0:"This will exit the terminal session"}),window.bench=function(a){var b;for(null==a&&(a=1e8),b="";b.lengthc?b.push(c):(c>2047&&(c=2047),b.push(192|c>>6),b.push(128|63&c)):255===c?b.push(0):(c>127&&(c=127),b.push(c))}}(this),g=function(b){return function(c,d,e){var f;return b.urxvtMouse?(d.x-=32,d.y-=32,d.x++,d.y++,void b.send("["+c+";"+d.x+";"+d.y+"M")):b.sgrMouse?(d.x-=32,d.y-=32,c-=32,void b.send("[<"+c+";"+d.x+";"+d.y+("mouseup"===e?"m":"M"))):(f=[],a(f,c),a(f,d.x),a(f,d.y),b.send(""+String.fromCharCode.apply(String,f)))}}(this),b=function(a){return function(b){var c,d,e,f,g;switch(b.type){case"mousedown":c=null!=b.button?+b.button:null!=b.which?b.which-1:null;break;case"mouseup":c=3;break;case"wheel":c=b.deltaY<0?64:65}return g=b.shiftKey?4:0,e=b.metaKey?8:0,d=b.ctrlKey?16:0,f=g|e|d,a.vt200Mouse?f&=d:a.normalMouse||(f=0),32+(f<<2)+c}}(this),c=function(a){return function(b){var c,d,e,f;return e=b.pageX,f=b.pageY-window.scrollY,d=a.body.clientWidth,c=window.innerHeight,e=Math.ceil(e/d*a.cols),f=Math.ceil(f/c*a.rows),0>e&&(e=0),e>a.cols&&(e=a.cols),0>f&&(f=0),f>a.rows&&(f=a.rows),e+=32,f+=32,{x:e,y:f,type:b.type}}}(this),addEventListener("contextmenu",function(a){return function(b){return a.mouseEvents?d(b):void 0}}(this)),addEventListener("mousedown",function(a){return function(b){var c,e;if(a.mouseEvents)return f(b),c=h.bind(a),addEventListener("mousemove",c),a.x10Mouse||addEventListener("mouseup",e=function(a){return f(a),removeEventListener("mousemove",c),removeEventListener("mouseup",e),d(a)}),d(b)}}(this)),addEventListener("wheel",function(a){return function(b){if(a.mouseEvents){if(a.x10Mouse)return;return f(b),d(b)}}}(this))},a.prototype.linkify=function(a){var b,c,d,e;return e=/\b(?:https?|ftp):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*[a-z0-9-+&@#\/%=~_|]/gim,d=/(^|[^\/])(www\.[\S]+(\b|$))/gim,b=/[\w.]+@[a-zA-Z_-]+?(?:\.[a-zA-Z]{2,6})+/gim,function(){var f,g,h,i;for(h=a.split(" "),i=[],f=0,g=h.length;g>f;f++)c=h[f],i.push(c.replace(e,'$&').replace(d,'$1$2').replace(b,'$&'));return i}().join(" ")},a.prototype.refresh=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E;for(null==a&&(a=!1),w=this.body.querySelectorAll(".cursor"),k=0,l=w.length;l>k;k++)e=w[k],e.parentNode.replaceChild(this.document.createTextNode(e.textContent),e);for(s="",x=this.screen,j=r=0,m=x.length;m>r;j=++r)if(p=x[j],p.dirty||a){for(u="",E=j!==this.y+this.shift||this.cursorHidden?-(1/0):this.x,b=this.cloneAttr(this.defAttr),B=!1,i=t=0,y=this.cols-1;y>=0?y>=t:t>=y;i=y>=0?++t:--t){if(f=p.chars[i],f.html){u+=f.html;break}if(B)B=!1;else{if(c=f.ch,this.equalAttr(f,b)||(this.equalAttr(b,this.defAttr)||(u+=""),this.equalAttr(f,this.defAttr)||(d=[],C=[],u+="g&&(g+=8),d.push("fg-color-"+g)),"string"==typeof f.fg&&C.push("color: "+f.fg),"number"==typeof f.bg&&d.push("bg-color-"+f.bg),"string"==typeof f.bg&&C.push("background-color: "+f.bg),u+='class="',u+=d.join(" "),u+='"',C.length&&(u+=' style="'+C.join("; ")+'"'),u+=">")),i===E&&(u+=''),c.length>1)u+=c;else switch(c){case"&":u+="&";break;case"<":u+="<";break;case">":u+=">";break;default:" "===c?u+='':" ">=c?u+=" ":!this.forceWidth||"~">=c?u+=c:c>"＀"&&"￯">c?(B=!0,u+=''+c+""):u+=''+c+""}i===E&&(u+=""),b=f}}this.equalAttr(b,this.defAttr)||(u+=""),j===this.y+this.shift||f.html||(u=this.linkify(u)),p.wrap&&(u+="⏎"),this.children[j]?this.children[j].innerHTML=u:s+='
'+u+"
",this.screen[j].dirty=!1}if(""!==s){if(h=this.document.createElement("div"),h.className="group",h.innerHTML=s,this.body.appendChild(h),this.screen=this.screen.slice(-this.rows),this.shift=0,q=document.querySelectorAll(".line"),q.length>this.scrollback){for(z=Array.prototype.slice.call(q,0,q.length-this.scrollback),v=0,n=z.length;n>v;v++)p=z[v],p.remove();for(A=document.querySelectorAll(".group:empty"),D=0,o=A.length;o>D;D++)h=A[D],h.remove();q=document.querySelectorAll(".line")}this.children=Array.prototype.slice.call(q,-this.rows)}return this.scrollLock?void 0:this.nativeScrollTo()},a.prototype._cursorBlink=function(){var a;return this.cursorState^=1,(a=this.body.querySelector(".cursor"))?a.classList.contains("reverse-video")?a.classList.remove("reverse-video"):a.classList.add("reverse-video"):void 0},a.prototype.showCursor=function(){return this.cursorState?void 0:(this.cursorState=1,this.screen[this.y+this.shift].dirty=!0,this.refresh())},a.prototype.startBlink=function(){return this.cursorBlink?(this._blinker=function(a){return function(){return a._cursorBlink()}}(this),this.t_blink=setInterval(this._blinker,500)):void 0},a.prototype.refreshBlink=function(){return this.cursorBlink?(clearInterval(this.t_blink),this.t_blink=setInterval(this._blinker,500)):void 0},a.prototype.scroll=function(){var a,b,c,d,e;if(this.normal||0!==this.scrollTop||this.scrollBottom!==this.rows-1){for(this.screen.splice(this.shift+this.scrollBottom+1,0,this.blankLine()),this.screen.splice(this.shift+this.scrollTop,1),e=[],a=b=c=this.scrollTop,d=this.scrollBottom;d>=c?d>=b:b>=d;a=d>=c?++b:--b)e.push(this.screen[a+this.shift].dirty=!0);return e}return this.screen.push(this.blankLine()),this.shift++},a.prototype.unscroll=function(){var a,b,c,d,e;for(this.screen.splice(this.shift+this.scrollTop,0,this.blankLine(!0)),this.screen.splice(this.shift+this.scrollBottom+1,1),e=[],a=b=c=this.scrollTop,d=this.scrollBottom;d>=c?d>=b:b>=d;a=d>=c?++b:--b)e.push(this.screen[a+this.shift].dirty=!0);return e},a.prototype.nativeScrollTo=function(a){return null==a&&(a=2e9),window.scrollTo(0,a)},a.prototype.scrollDisplay=function(a){return this.nativeScrollTo(window.scrollY+a*this.charSize.height)},a.prototype.nextLine=function(){return this.y++,this.y>this.scrollBottom?(this.y--,this.scroll()):void 0},a.prototype.prevLine=function(){return this.y--,this.yj;){switch(g=c.charAt(j),this.state){case b.normal:switch(g){case"":this.bell();break;case"\n":case" ":case"\f":this.screen[this.y+this.shift].dirty=!0,this.nextLine();break;case"\r":this.x=0;break;case"\b":this.x>=this.cols&&this.x--,this.x>0&&this.x--;break;case" ":this.x=this.nextStop();break;case"":this.setgLevel(1);break;case"":this.setgLevel(0);break;case"":this.state=b.escaped;break;default:if(g>="̀"&&"ͯ">=g||g>="᪰"&&"᫿">=g||g>="᷀"&&"᷿">=g||g>="⃐"&&"⃿">=g||g>="︠"&&"︯">=g){if(z=this.x,A=this.y+this.shift,this.x>0)z-=1;else{if(!(this.y>0))break;A-=1,z=this.cols-1}this.screen[A].chars[z].ch+=g;break}if(g>=" "&&((null!=(s=this.charset)?s[g]:void 0)&&(g=this.charset[g]),this.x>=this.cols&&(this.autowrap&&(this.screen[this.y+this.shift].wrap=!0,this.nextLine()),this.x=0),this.putChar(g),this.x++,this.forceWidth&&g>"＀"&&"￯">g)){if(this.cols<2||this.x>=this.cols){this.putChar(" ");break}this.putChar(" "),this.x++}}break;case b.escaped:switch(g){case"[":this.params=[],this.currentParam=0,this.state=b.csi;break;case"]":this.params=[],this.currentParam=0,this.state=b.osc;break;case"P":this.params=[],this.currentParam=0,this.state=b.dcs;break;case"_":this.state=b.ignore;break;case"^":this.state=b.ignore;break;case"c":this.reset();break;case"E":this.x=0,this.index();break;case"D":this.index();break;case"M":this.reverseIndex();break;case"%":this.setgLevel(0),this.setgCharset(0,a.prototype.charsets.US),this.state=b.normal,j++;break;case"(":case")":case"*":case"+":case"-":case".":switch(g){case"(":this.gcharset=0;break;case")":case"-":this.gcharset=1;break;case"*":case".":this.gcharset=2;break;case"+":this.gcharset=3}this.state=b.charset;break;case"/":this.gcharset=3,this.state=b.charset,j--;break;case"n":this.setgLevel(2);break;case"o":this.setgLevel(3);break;case"|":this.setgLevel(3);break;case"}":this.setgLevel(2);break;case"~":this.setgLevel(1);break;case"7":this.saveCursor(),this.state=b.normal;break;case"8":this.restoreCursor(),this.state=b.normal;break;case"#":switch(this.state=b.normal,j++,q=c.charAt(j)){case"3":break;case"4":break;case"5":break;case"6":break;case"8":for(t=this.screen,k=0,m=t.length;m>k;k++)for(n=t[k],n.dirty=!0,f=o=0,u=n.chars.length;u>=0?u>=o:o>=u;f=u>=0?++o:--o)n.chars[f]=this.cloneAttr(this.curAttr,"E");this.x=this.y=0}break;case"H":this.tabSet();break;case"=":this.applicationKeypad=!0,this.state=b.normal;break;case">":this.applicationKeypad=!1,this.state=b.normal;break;default:this.state=b.normal,console.log("Unknown ESC control:",g)}break;case b.charset:switch(g){case"0":i=a.prototype.charsets.SCLD;break;case"A":i=a.prototype.charsets.UK;break;case"B":i=a.prototype.charsets.US;break;case"4":i=a.prototype.charsets.Dutch;break;case"C":case"5":i=a.prototype.charsets.Finnish;break;case"R":i=a.prototype.charsets.French;break;case"Q":i=a.prototype.charsets.FrenchCanadian;break;case"K":i=a.prototype.charsets.German;break;case"Y":i=a.prototype.charsets.Italian;break;case"E":case"6":i=a.prototype.charsets.NorwegianDanish;break;case"Z":i=a.prototype.charsets.Spanish;break;case"H":case"7":i=a.prototype.charsets.Swedish;break;case"=":i=a.prototype.charsets.Swiss;break;case"/":i=a.prototype.charsets.ISOLatin,j++;break;default:i=a.prototype.charsets.US}this.setgCharset(this.gcharset,i),this.gcharset=null,this.state=b.normal;break;case b.osc:if(""===g||""===g){switch(""===g&&j++,this.params.push(this.currentParam),this.params[0]){case 0:case 1:case 2:this.params[1]&&(this.title=this.params[1]+" - ƸӜƷ butterfly",this.handleTitle(this.title))}this.params=[],this.currentParam=0,this.state=b.normal}else this.params.length?this.currentParam+=g:g>="0"&&"9">=g?this.currentParam=10*this.currentParam+g.charCodeAt(0)-48:";"===g&&(this.params.push(this.currentParam),this.currentParam="");break;case b.csi:if("?"===g||">"===g||"!"===g){this.prefix=g;break}if(g>="0"&&"9">=g){this.currentParam=10*this.currentParam+g.charCodeAt(0)-48;break}if("$"===g||'"'===g||" "===g||"'"===g)break;if(" ">=g||g>="~"){"\b"===g&&(this.currentParam=this.currentParam/10&1),"\r"===g&&(this.x=0),["\n"," ","\f"].indexOf(g)>=0&&(this.screen[this.y+this.shift].dirty=!0,this.nextLine());break}if(this.params.push(this.currentParam),this.currentParam=0,";"===g)break;switch(this.state=b.normal,g){case"A":this.cursorUp(this.params);break;case"B":this.cursorDown(this.params);break;case"C":this.cursorForward(this.params);break;case"D":this.cursorBackward(this.params);break;case"H":this.cursorPos(this.params);break;case"J":this.eraseInDisplay(this.params);break;case"K":this.eraseInLine(this.params);break;case"m":this.prefix||this.charAttributes(this.params);break;case"n":this.prefix||this.deviceStatus(this.params);break;case"@":this.insertChars(this.params);break;case"E":this.cursorNextLine(this.params);break;case"F":this.cursorPrecedingLine(this.params);break;case"G":this.cursorCharAbsolute(this.params);break;case"L":this.insertLines(this.params);break;case"M":this.deleteLines(this.params);break;case"P":this.deleteChars(this.params);break;case"X":this.eraseChars(this.params);break;case"`":this.charPosAbsolute(this.params);break;case"a":this.HPositionRelative(this.params);break;case"c":this.sendDeviceAttributes(this.params);break;case"d":this.linePosAbsolute(this.params);break;case"e":this.VPositionRelative(this.params);break;case"f":this.HVPosition(this.params);break;case"h":this.setMode(this.params);break;case"l":this.resetMode(this.params);break;case"r":this.setScrollRegion(this.params);break;case"s":this.saveCursor(this.params);break;case"u":this.restoreCursor(this.params);break;case"I":this.cursorForwardTab(this.params);break;case"S":this.scrollUp(this.params);break;case"T":this.params.length<2&&!this.prefix&&this.scrollDown(this.params);break;case"Z":this.cursorBackwardTab(this.params);break;case"b":this.repeatPrecedingCharacter(this.params);break;case"g":this.tabClear(this.params);break;case"p":"!"===this.prefix&&this.softReset(this.params);break;default:console.error("Unknown CSI code: %s (%d).",g,g.charCodeAt(0))}this.prefix="";break;case b.dcs:if(""===g||""===g){switch(""===g&&j++,this.prefix){case"":if(r=this.currentParam,";"!==r[0]){console.error("Unknown DECUDK: "+r);break}if(r=r.slice(1),v=r.split("|",2),x=v[0],h=v[1],!h){console.error("No type for inline DECUDK: "+r);break}switch(x){case"HTML":w=html_sanitize(h,function(a){return a}),d=this.cloneAttr(this.curAttr),d.html='
'+w+"
",this.screen[this.y+this.shift].chars[this.x]=d,this.screen[this.y+this.shift].dirty=!0,this.screen[this.y+this.shift].wrap=!1,this.nextLine();break;case"IMAGE":h=encodeURI(h),h.indexOf(";")?(p=h.slice(0,h.indexOf(";")),e=h.slice(h.indexOf(";")+1)):(p="image",e=h),d=this.cloneAttr(this.curAttr),d.html='',this.screen[this.y+this.shift].chars[this.x]=d,this.screen[this.y+this.shift].dirty=!0,this.screen[this.y+this.shift].wrap=!1;break;case"PROMPT":this.send(h);break;case"TEXT":l+=h.length,c=c.slice(0,j+1)+h+c.slice(j+1);break;default:console.error("Unknown type "+x+" for DECUDK")}break;case"$q":switch(r=this.currentParam,y=!1,r){case'"q':r='0"q';break;case'"p':r='61"p';break;case"r":r=""+(this.scrollTop+1)+";"+(this.scrollBottom+1)+"r";break;case"m":r="0m";break;default:console.error("Unknown DCS Pt: %s.",r),r=""}this.send("P"+ +y+"$r"+r+"\\");break;case"+q":r=this.currentParam,y=!1,this.send("P"+ +y+"+r"+r+"\\");break;default:console.error("Unknown DCS prefix: %s.",this.prefix)}this.currentParam=0,this.prefix="",this.state=b.normal}else this.currentParam?this.currentParam+=g:this.prefix||"$"===g||"+"===g?2===this.prefix.length?this.currentParam=g:this.prefix+=g:this.currentParam=g;break;case b.ignore:(""===g||""===g)&&(""===g&&j++,this.state=b.normal)}j++}return this.screen[this.y+this.shift].dirty=!0,this.refresh()},a.prototype.writeln=function(a){return this.write(a+"\r\n")},a.prototype.keyDown=function(a){var b,c,e,f;if(a.keyCode>15&&a.keyCode<19)return!0;if((a.shiftKey||a.ctrlKey)&&45===a.keyCode)return!0;if(a.shiftKey&&a.ctrlKey&&(67===(e=a.keyCode)||86===e))return!0;if(a.altKey&&90===a.keyCode&&!this.skipNextKey)return this.skipNextKey=!0,this.body.classList.add("skip"),d(a);if(this.skipNextKey)return this.skipNextKey=!1,this.body.classList.remove("skip"),!0;switch(a.keyCode){case 8:if(c=a.altKey?"":"",a.shiftKey){c+="\b";break}c+="";break;case 9:if(a.shiftKey){c="";break}c=" ";break;case 13:c="\r";break;case 27:c="";break;case 37:if(this.applicationCursor){c="OD";break}c="";break;case 39:if(this.applicationCursor){c="OC";break}c="";break;case 38:if(this.applicationCursor){c="OA";break}if(a.ctrlKey)return this.scrollDisplay(-1),d(a);c="";break;case 40:if(this.applicationCursor){c="OB";break}if(a.ctrlKey)return this.scrollDisplay(1),d(a);c="";break;case 46:c="[3~";break;case 45:c="[2~";break;case 36:if(this.applicationKeypad){c="OH";break}c="OH";break;case 35:if(this.applicationKeypad){c="OF";break}c="OF";break;case 33:if(a.shiftKey){if(a.ctrlKey)break;return this.scrollDisplay(-(this.rows-1)),d(a)}c="[5~";break;case 34:if(a.shiftKey){if(a.ctrlKey)break;return this.scrollDisplay(this.rows-1),d(a)}c="[6~";break;case 112:c="OP";break;case 113:c="OQ";break;case 114:c="OR";break;case 115:c="OS";break;case 116:c="[15~";break;case 117:c="[17~";break;case 118:c="[18~";break;case 119:c="[19~";break;case 120:c="[20~";break;case 121:c="[21~";break;case 122:c="[23~";break;case 123:c="[24~";break;case 145:return this.scrollLock=!this.scrollLock,this.scrollLock?this.body.classList.add("locked"):this.body.classList.remove("locked"),d(a);default:if(a.ctrlKey)if(a.keyCode>=65&&a.keyCode<=90){if(67===a.keyCode){if(f=(new Date).getTime(),f-this.lastcc<500&&!this.stop){for(b=setTimeout(function(){});b--;)b!==this.t_bell&&b!==this.t_queue&&b!==this.t_blink&&clearTimeout(b);return this.body.classList.add("stopped"),this.stop=!0,this.send(" ")}if(this.stop)return!0;this.lastcc=f}c=String.fromCharCode(a.keyCode-64)}else 32===a.keyCode?c=String.fromCharCode(0):a.keyCode>=51&&a.keyCode<=55?c=String.fromCharCode(a.keyCode-51+27):56===a.keyCode?c=String.fromCharCode(127):219===a.keyCode?c=String.fromCharCode(27):221===a.keyCode&&(c=String.fromCharCode(29));else(a.altKey&&k.call(navigator.platform,"Mac")<0||a.metaKey&&k.call(navigator.platform,"Mac")>=0)&&(a.keyCode>=65&&a.keyCode<=90?c=""+String.fromCharCode(a.keyCode+32):192===a.keyCode?c="`":a.keyCode>=48&&a.keyCode<=57&&(c=""+(a.keyCode-48)))}return a.keyCode>=37&&a.keyCode<=40&&(a.ctrlKey?c=c.slice(0,-1)+"1;5"+c.slice(-1):a.altKey?c=c.slice(0,-1)+"1;3"+c.slice(-1):a.shiftKey&&(c=c.slice(0,-1)+"1;4"+c.slice(-1))),c?(this.showCursor(),this.send(c),d(a)):!0},a.prototype.setgLevel=function(a){return this.glevel=a,this.charset=this.charsets[a]},a.prototype.setgCharset=function(a,b){return this.charsets[a]=b,this.glevel===a?this.charset=b:void 0},a.prototype.keyPress=function(a){var b,c;if(this.skipNextKey===!1)return this.skipNextKey=null,!0;if(a.keyCode>15&&a.keyCode<19)return!0;if((a.shiftKey||a.ctrlKey)&&45===a.keyCode)return!0;if(a.shiftKey&&a.ctrlKey&&(67===(c=a.keyCode)||86===c))return!0;if(d(a),a.charCode)b=a.charCode;else if(null==a.which)b=a.keyCode;else{if(0===a.which||0===a.charCode)return!1;b=a.which}return!b||a.ctrlKey||a.altKey||a.metaKey?!1:(b=String.fromCharCode(b),this.showCursor(),this.send(b),!1)},a.prototype.bell=function(a){return null==a&&(a="bell"),this.visualBell?(this.body.classList.add(a),this.t_bell=setTimeout(function(b){return function(){return b.body.classList.remove(a)}}(this),this.visualBell)):void 0},a.prototype.resize=function(a,b){var c,d,e,f,g,h,i;if(null==a&&(a=null),null==b&&(b=null),g=this.cols,h=this.rows,this.computeCharSize(),this.cols=a||Math.floor(this.body.clientWidth/this.charSize.width),this.rows=b||Math.floor(window.innerHeight/this.charSize.height),i=window.innerHeight%this.charSize.height,this.body.style["padding-bottom"]=i+"px",a||b||g!==this.cols||h!==this.rows){if(this.ctl("Resize",this.cols,this.rows),gthis.cols)for(d=this.screen.length;d--;)for(;this.screen[d].chars.length>this.cols;)this.screen[d].chars.pop();if(this.setupStops(g),e=h,ethis.rows)for(;e-->this.rows;)this.screen.length>this.rows&&this.screen.pop(),this.children.length>this.rows&&(c=this.children.pop(),null!=c&&c.parentNode.removeChild(c));if(this.normal){if(gthis.cols)for(d=this.normal.screen.length;d--;)for(;this.normal.screen[d].chars.length>this.cols;)this.normal.screen[d].chars.pop();if(e=h,ethis.rows)for(;e-->this.rows;)this.normal.screen.length>this.rows&&this.normal.screen.pop()}return this.y>=this.rows&&(this.y=this.rows-1),this.x>=this.cols&&(this.x=this.cols-1),this.scrollTop=0,this.scrollBottom=this.rows-1,this.refresh(!0),a||b?this.reset():void 0}},a.prototype.resizeWindowPlease=function(a){var b,c;return b=window.innerWidth-this.body.clientWidth,c=a*this.charSize.width+b,resizeTo(c,window.innerHeight)},a.prototype.setupStops=function(a){var b;for(null!=a?this.tabs[a]||(a=this.prevStop(a)):(this.tabs={},a=0),b=[];a0;);return a>=this.cols?this.cols-1:0>a?0:a},a.prototype.nextStop=function(a){for(null==a&&(a=this.x);!this.tabs[++a]&&a=this.cols?this.cols-1:0>a?0:a},a.prototype.eraseRight=function(a,b){var c;for(c=this.screen[b+this.shift].chars;ab&&(b=1),this.y-=b,this.y<0?this.y=0:void 0},a.prototype.cursorDown=function(a){var b;return b=a[0],1>b&&(b=1),this.y+=b,this.y>=this.rows?this.y=this.rows-1:void 0},a.prototype.cursorForward=function(a){var b;return b=a[0],1>b&&(b=1),this.x+=b,this.x>=this.cols?this.x=this.cols-1:void 0},a.prototype.cursorBackward=function(a){var b;return b=a[0],1>b&&(b=1),this.x-=b,this.x<0?this.x=0:void 0},a.prototype.cursorPos=function(a){var b,c;return c=a[0]-1,b=a.length>=2?a[1]-1:0,0>c?c=0:c>=this.rows&&(c=this.rows-1),0>b?b=0:b>=this.cols&&(b=this.cols-1),this.x=b,this.y=c+(this.originMode?this.scrollTop:0)},a.prototype.eraseInDisplay=function(a){var b,c,d,e;switch(a[0]){case 0:for(this.eraseRight(this.x,this.y),b=this.y+1,c=[];bb;)d=a[b],d>=30&&37>=d?this.curAttr.fg=d-30:d>=40&&47>=d?this.curAttr.bg=d-40:d>=90&&97>=d?(d+=8,this.curAttr.fg=d-90):d>=100&&107>=d?(d+=8,this.curAttr.bg=d-100):0===d?this.curAttr=this.cloneAttr(this.defAttr):1===d?this.curAttr.bold=!0:2===d?this.curAttr.faint=!0:3===d?this.curAttr.italic=!0:4===d?this.curAttr.underline=!0:5===d?this.curAttr.blink=1:6===d?this.curAttr.blink=2:7===d?this.curAttr.inverse=!0:8===d?this.curAttr.invisible=!0:9===d?this.curAttr.crossed=!0:10===d||(21===d?this.curAttr.bold=!1:22===d?(this.curAttr.bold=!1,this.curAttr.faint=!1):23===d?this.curAttr.italic=!1:24===d?this.curAttr.underline=!1:25===d?this.curAttr.blink=!1:27===d?this.curAttr.inverse=!1:28===d?this.curAttr.invisible=!1:29===d?this.curAttr.crossed=!1:39===d?this.curAttr.fg=257:49===d?this.curAttr.bg=256:38===d?2===a[b+1]?(b+=2,this.curAttr.fg="rgb("+a[b]+", "+a[b+1]+", "+a[b+2]+")",b+=2):5===a[b+1]&&(b+=2,this.curAttr.fg=255&a[b]):48===d?2===a[b+1]?(b+=2,this.curAttr.bg="rgb("+a[b]+", "+a[b+1]+", "+a[b+2]+")",b+=2):5===a[b+1]&&(b+=2,this.curAttr.bg=255&a[b]):100===d?(this.curAttr.fg=257,this.curAttr.bg=256):console.error("Unknown SGR attribute: %d.",d)),e.push(b++);return e},a.prototype.deviceStatus=function(a){if(this.prefix){if("?"===this.prefix&&6===a[0])return this.send("[?"+(this.y+1)+";"+(this.x+1)+"R")}else switch(a[0]){case 5:return this.send("");case 6:return this.send("["+(this.y+1)+";"+(this.x+1)+"R")}},a.prototype.insertChars=function(a){var b,c,d;for(c=a[0],1>c&&(c=1),d=this.y,b=this.x;c--&&bb&&(b=1),this.y+=b,this.y>=this.rows&&(this.y=this.rows-1),this.x=0},a.prototype.cursorPrecedingLine=function(a){var b;return b=a[0],1>b&&(b=1),this.y-=b,this.y<0&&(this.y=0),this.x=0},a.prototype.cursorCharAbsolute=function(a){var b;return b=a[0],1>b&&(b=1),this.x=b-1},a.prototype.insertLines=function(a){var b,c,d,e,f,g;for(d=a[0],1>d&&(d=1);d--;)this.screen.splice(this.y+this.shift,0,this.blankLine(!0)),this.screen.splice(this.scrollBottom+1+this.shift,1);for(g=[],b=c=e=this.y+this.shift,f=this.screen.length-1;f>=e?f>=c:c>=f;b=f>=e?++c:--c)g.push(this.screen[b].dirty=!0);return g},a.prototype.deleteLines=function(a){var b,c,d,e,f,g;for(d=a[0],1>d&&(d=1);d--;)this.screen.splice(this.scrollBottom+this.shift,0,this.blankLine(!0)),this.screen.splice(this.y+this.shift,1),this.normal||0!==this.scrollTop||this.scrollBottom!==this.rows-1||(this.children[this.y+this.shift].remove(),this.children.splice(this.y+this.shift,1));if(this.normal||0!==this.scrollTop||this.scrollBottom!==this.rows-1){for(g=[], -b=c=e=this.y+this.shift,f=this.screen.length-1;f>=e?f>=c:c>=f;b=f>=e?++c:--c)g.push(this.screen[b].dirty=!0);return g}},a.prototype.deleteChars=function(a){var b;for(b=a[0],1>b&&(b=1);b--;)this.screen[this.y+this.shift].chars.splice(this.x,1),this.screen[this.y+this.shift].chars.push(this.eraseAttr());return this.screen[this.y+this.shift].dirty=!0,this.screen[this.y+this.shift].wrap=!1},a.prototype.eraseChars=function(a){var b,c;for(c=a[0],1>c&&(c=1),b=this.x;c--&&bb&&(b=1),this.x=b-1,this.x>=this.cols?this.x=this.cols-1:void 0},a.prototype.HPositionRelative=function(a){var b;return b=a[0],1>b&&(b=1),this.x+=b,this.x>=this.cols?this.x=this.cols-1:void 0},a.prototype.sendDeviceAttributes=function(a){if(!(a[0]>0))if(this.prefix){if(">"===this.prefix){if(this.isterm("xterm"))return this.send("[>0;276;0c");if(this.isterm("rxvt-unicode"))return this.send("[>85;95;0c");if(this.isterm("linux"))return this.send(a[0]+"c");if(this.isterm("screen"))return this.send("[>83;40003;0c")}}else{if(this.isterm("xterm")||this.isterm("rxvt-unicode")||this.isterm("screen"))return this.send("[?1;2c");if(this.isterm("linux"))return this.send("[?6c")}},a.prototype.linePosAbsolute=function(a){var b;return b=a[0],1>b&&(b=1),this.y=b-1,this.y>=this.rows?this.y=this.rows-1:void 0},a.prototype.VPositionRelative=function(a){var b;return b=a[0],1>b&&(b=1),this.y+=b,this.y>=this.rows?this.y=this.rows-1:void 0},a.prototype.HVPosition=function(a){return a[0]<1&&(a[0]=1),a[1]<1&&(a[1]=1),this.y=a[0]-1,this.y>=this.rows&&(this.y=this.rows-1),this.x=a[1]-1,this.x>=this.cols?this.x=this.cols-1:void 0},a.prototype.setMode=function(b){var c,d,e;if("object"!=typeof b)if(this.prefix){if("?"===this.prefix)switch(b){case 1:return this.applicationCursor=!0;case 2:return this.setgCharset(0,a.prototype.charsets.US),this.setgCharset(1,a.prototype.charsets.US),this.setgCharset(2,a.prototype.charsets.US),this.setgCharset(3,a.prototype.charsets.US);case 3:return this.savedCols=this.cols,this.resize(132,this.rows),this.resizeWindowPlease(132),this.reset();case 6:return this.originMode=!0;case 7:return this.autowrap=!0;case 66:return this.applicationKeypad=!0;case 9:case 1e3:case 1002:case 1003:return this.x10Mouse=9===b,this.vt200Mouse=1e3===b,this.normalMouse=b>1e3,this.mouseEvents=!0,this.body.style.cursor="pointer";case 1004:return this.sendFocus=!0;case 1005:return this.utfMouse=!0;case 1006:return this.sgrMouse=!0;case 1015:return this.urxvtMouse=!0;case 25:return this.cursorHidden=!1;case 1049:case 47:case 1047:if(!this.normal)return e={screen:this.screen,x:this.x,y:this.y,shift:this.shift,scrollTop:this.scrollTop,scrollBottom:this.scrollBottom,tabs:this.tabs,curAttr:this.curAttr},this.reset(),this.normal=e,this.showCursor()}}else switch(b){case 4:this.insertMode=!0;break;case 20:this.convertEol=!0}else for(d=b.length,c=0;d>c;)this.setMode(b[c]),c++},a.prototype.resetMode=function(a){var b,c;if("object"!=typeof a)if(this.prefix){if("?"===this.prefix)switch(a){case 1:return this.applicationCursor=!1;case 3:return 132===this.cols&&this.savedCols&&this.resize(this.savedCols,this.rows),this.resizeWindowPlease(80),this.reset(),delete this.savedCols;case 6:return this.originMode=!1;case 7:return this.autowrap=!1;case 66:return this.applicationKeypad=!1;case 9:case 1e3:case 1002:case 1003:return this.x10Mouse=!1,this.vt200Mouse=!1,this.normalMouse=!1,this.mouseEvents=!1,this.body.style.cursor="";case 1004:return this.sendFocus=!1;case 1005:return this.utfMouse=!1;case 1006:return this.sgrMouse=!1;case 1015:return this.urxvtMouse=!1;case 25:return this.cursorHidden=!0;case 1049:case 47:case 1047:if(this.normal)return this.screen=this.normal.screen,this.x=this.normal.x,this.y=this.normal.y,this.shift=this.normal.shift,this.scrollTop=this.normal.scrollTop,this.scrollBottom=this.normal.scrollBottom,this.tabs=this.normal.tabs,this.curAttr=this.normal.curAttr,this.normal=null,this.refresh(!0),this.showCursor()}}else switch(a){case 4:this.insertMode=!1;break;case 20:this.convertEol=!1}else for(c=a.length,b=0;c>b;)this.resetMode(a[b]),b++},a.prototype.setScrollRegion=function(a){return this.prefix?void 0:(this.scrollTop=(a[0]||1)-1,this.scrollBottom=(a[1]||this.rows)-1,this.x=0,this.y=0)},a.prototype.saveCursor=function(a){return this.savedX=this.x,this.savedY=this.y},a.prototype.restoreCursor=function(a){return this.x=this.savedX||0,this.y=this.savedY||0},a.prototype.cursorForwardTab=function(a){var b,c;for(b=a[0]||1,c=[];b--;)c.push(this.x=this.nextStop());return c},a.prototype.scrollUp=function(a){var b,c,d,e,f,g;for(d=a[0]||1;d--;)this.screen.splice(this.scrollTop,1),this.screen.splice(this.scrollBottom,0,this.blankLine());for(g=[],b=c=e=this.scrollTop,f=this.scrollBottom;f>=e?f>=c:c>=f;b=f>=e?++c:--c)g.push(this.screen[b+this.shift].dirty=!0);return g},a.prototype.scrollDown=function(a){var b,c,d,e,f,g;for(d=a[0]||1;d--;)this.screen.splice(this.scrollBottom,1),this.screen.splice(this.scrollTop,0,this.blankLine());for(g=[],b=c=e=this.scrollTop,f=this.scrollBottom;f>=e?f>=c:c>=f;b=f>=e?++c:--c)g.push(this.screen[b+this.shift].dirty=!0);return g},a.prototype.initMouseTracking=function(a){},a.prototype.resetTitleModes=function(a){},a.prototype.cursorBackwardTab=function(a){var b,c;for(b=a[0]||1,c=[];b--;)c.push(this.x=this.prevStop());return c},a.prototype.repeatPrecedingCharacter=function(a){var b,c,d;for(d=a[0]||1,c=this.screen[this.y+this.shift].chars,b=c[this.x-1]||this.defAttr;d--;)c[this.x++]=b;return this.screen[this.y+this.shift].dirty=!0},a.prototype.tabClear=function(a){var b;return b=a[0],0>=b?delete this.tabs[this.x]:3===b?this.tabs={}:void 0},a.prototype.mediaCopy=function(a){},a.prototype.setResources=function(a){},a.prototype.disableModifiers=function(a){},a.prototype.setPointerMode=function(a){},a.prototype.softReset=function(a){return this.cursorHidden=!1,this.insertMode=!1,this.originMode=!1,this.autowrap=!0,this.applicationKeypad=!1,this.applicationCursor=!1,this.scrollTop=0,this.scrollBottom=this.rows-1,this.curAttr=this.defAttr,this.x=this.y=0,this.charset=null,this.glevel=0,this.charsets=[null]},a.prototype.requestAnsiMode=function(a){},a.prototype.requestPrivateMode=function(a){},a.prototype.setConformanceLevel=function(a){},a.prototype.loadLEDs=function(a){},a.prototype.setCursorStyle=function(a){},a.prototype.setCharProtectionAttr=function(a){},a.prototype.restorePrivateValues=function(a){},a.prototype.setAttrInRectangle=function(a){var b,c,d,e,f,g,h,i;for(i=a[0],e=a[1],c=a[2],g=a[3],b=a[4],h=[];c+1>i;){for(f=this.screen[i+this.shift].chars,this.screen[i+this.shift].dirty=!0,d=e;g>d;)f[d]=this.cloneAttr(b,f[d].ch),d++;h.push(i++)}return h},a.prototype.savePrivateValues=function(a){},a.prototype.manipulateWindow=function(a){},a.prototype.reverseAttrInRectangle=function(a){},a.prototype.setTitleModeFeature=function(a){},a.prototype.setWarningBellVolume=function(a){},a.prototype.setMarginBellVolume=function(a){},a.prototype.copyRectangle=function(a){},a.prototype.enableFilterRectangle=function(a){},a.prototype.requestParameters=function(a){},a.prototype.selectChangeExtent=function(a){},a.prototype.fillRectangle=function(a){var b,c,d,e,f,g,h,i;for(c=a[0],i=a[1],e=a[2],b=a[3],g=a[4],h=[];b+1>i;){for(f=this.screen[i+this.shift].chars,this.screen[i+this.shift].dirty=!0,d=e;g>d;)f[d]=this.cloneAttr(f[d][0],String.fromCharCode(c)),d++;h.push(i++)}return h},a.prototype.enableLocatorReporting=function(a){var b;return b=a[0]>0},a.prototype.eraseRectangle=function(a){var b,c,d,e,f,g,h;for(h=a[0],d=a[1],b=a[2],f=a[3],g=[];b+1>h;){for(e=this.screen[h+this.shift].chars,this.screen[h+this.shift].dirty=!0,c=d;f>c;)e[c]=this.eraseAttr(),c++;g.push(h++)}return g},a.prototype.setLocatorEvents=function(a){},a.prototype.selectiveEraseRectangle=function(a){},a.prototype.requestLocatorPosition=function(a){},a.prototype.insertColumns=function(){var a,b,c,d;for(c=params[0],b=this.rows+this.shift,d=[];c--;)a=this.shift,d.push(function(){var c;for(c=[];b>a;)this.screen[a].chars.splice(this.x+1,0,this.eraseAttr()),this.screen[a].chars.pop(),this.screen[a].dirty=!0,c.push(a++);return c}.call(this));return d},a.prototype.deleteColumns=function(){var a,b,c,d;for(c=params[0],b=this.rows+this.shift,d=[];c--;)a=this.shift,d.push(function(){var c;for(c=[];b>a;)this.screen[a].chars.splice(this.x,1),this.screen[a].chars.push(this.eraseAttr()),this.screen[a].dirty=!0,this.screen[a].wrap=!1,c.push(a++);return c}.call(this));return d},a.prototype.charsets={SCLD:{"`":"◆",a:"▒",b:" ",c:"\f",d:"\r",e:"\n",f:"°",g:"±",h:"␤",i:" ",j:"┘",k:"┐",l:"┌",m:"└",n:"┼",o:"⎺",p:"⎻",q:"─",r:"⎼",s:"⎽",t:"├",u:"┤",v:"┴",w:"┬",x:"│",y:"≤",z:"≥","{":"π","|":"≠","}":"£","~":"·"},UK:null,US:null,Dutch:null,Finnish:null,French:null,FrenchCanadian:null,German:null,Italian:null,NorwegianDanish:null,Spanish:null,Swedish:null,Swiss:null,ISOLatin:null},a}(),window.Terminal=c}).call(this); +(function(){var a,b,c,d,e,f,g,h,i,j=[].slice,k=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};e=h=null,g=!1,f=(new Date).getTime(),a=document.querySelectorAll.bind(document),document.addEventListener("DOMContentLoaded",function(){var a,b,d,e,h,i,k,l,m;return i=null,e=function(a){return l.send("S"+a)},a=function(){var a,b,c;return c=arguments[0],a=2<=arguments.length?j.call(arguments,1):[],b=a.join(","),"Resize"===c?l.send("R"+b):void 0},m="https:"===location.protocol?"wss://":"ws://",m+=document.location.host+"/ws"+location.pathname,l=new WebSocket(m),l.addEventListener("open",function(){return console.log("WebSocket open",arguments),i=new c(document.body,e,a),i.ws=l,window.butterfly=i,l.send("R"+i.cols+","+i.rows),f=(new Date).getTime()}),l.addEventListener("error",function(){return console.log("WebSocket error",arguments)}),b="",h=null,d="",l.addEventListener("message",function(a){return h&&clearTimeout(h),d+=a.data,i.stop&&(d=d.slice(-10240)),d.length>i.buffSize?k():h=setTimeout(k,1)}),k=function(){return i.write(d),i.stop&&(i.stop=!1,i.body.classList.remove("stopped")),d=""},l.addEventListener("close",function(){return console.log("WebSocket closed",arguments),setTimeout(function(){return i.write("Closed"),i.skipNextKey=!0,i.body.classList.add("dead")},1),g=!0,(new Date).getTime()-f>6e4?open("","_self").close():void 0}),addEventListener("beforeunload",function(){return g?void 0:"This will exit the terminal session"}),window.bench=function(a){var b;for(null==a&&(a=1e8),b="";b.lengthc?b.push(c):(c>2047&&(c=2047),b.push(192|c>>6),b.push(128|63&c)):255===c?b.push(0):(c>127&&(c=127),b.push(c))}}(this),g=function(b){return function(c,d,e){var f;return b.urxvtMouse?(d.x-=32,d.y-=32,d.x++,d.y++,void b.send("["+c+";"+d.x+";"+d.y+"M")):b.sgrMouse?(d.x-=32,d.y-=32,c-=32,void b.send("[<"+c+";"+d.x+";"+d.y+("mouseup"===e?"m":"M"))):(f=[],a(f,c),a(f,d.x),a(f,d.y),b.send(""+String.fromCharCode.apply(String,f)))}}(this),b=function(a){return function(b){var c,d,e,f,g;switch(b.type){case"mousedown":c=null!=b.button?+b.button:null!=b.which?b.which-1:null;break;case"mouseup":c=3;break;case"wheel":c=b.deltaY<0?64:65}return g=b.shiftKey?4:0,e=b.metaKey?8:0,d=b.ctrlKey?16:0,f=g|e|d,a.vt200Mouse?f&=d:a.normalMouse||(f=0),32+(f<<2)+c}}(this),c=function(a){return function(b){var c,d,e,f;return e=b.pageX,f=b.pageY-window.scrollY,d=a.body.clientWidth,c=window.innerHeight,e=Math.ceil(e/d*a.cols),f=Math.ceil(f/c*a.rows),0>e&&(e=0),e>a.cols&&(e=a.cols),0>f&&(f=0),f>a.rows&&(f=a.rows),e+=32,f+=32,{x:e,y:f,type:b.type}}}(this),addEventListener("contextmenu",function(a){return function(b){return a.mouseEvents?d(b):void 0}}(this)),addEventListener("mousedown",function(a){return function(b){var c,e;if(a.mouseEvents)return f(b),c=h.bind(a),addEventListener("mousemove",c),a.x10Mouse||addEventListener("mouseup",e=function(a){return f(a),removeEventListener("mousemove",c),removeEventListener("mouseup",e),d(a)}),d(b)}}(this)),addEventListener("wheel",function(a){return function(b){if(a.mouseEvents){if(a.x10Mouse)return;return f(b),d(b)}}}(this))},a.prototype.linkify=function(a){var b,c,d,e;return e=/\b(?:https?|ftp):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*[a-z0-9-+&@#\/%=~_|]/gim,d=/(^|[^\/])(www\.[\S]+(\b|$))/gim,b=/[\w.]+@[a-zA-Z_-]+?(?:\.[a-zA-Z]{2,6})+/gim,function(){var f,g,h,i;for(h=a.split(" "),i=[],f=0,g=h.length;g>f;f++)c=h[f],i.push(c.replace(e,'$&').replace(d,'$1$2').replace(b,'$&'));return i}().join(" ")},a.prototype.refresh=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E;for(null==a&&(a=!1),w=this.body.querySelectorAll(".cursor"),k=0,l=w.length;l>k;k++)e=w[k],e.parentNode.replaceChild(this.document.createTextNode(e.textContent),e);for(s="",x=this.screen,j=r=0,m=x.length;m>r;j=++r)if(p=x[j],p.dirty||a){for(u="",E=j!==this.y+this.shift||this.cursorHidden?-(1/0):this.x,b=this.cloneAttr(this.defAttr),B=!1,i=t=0,y=this.cols-1;y>=0?y>=t:t>=y;i=y>=0?++t:--t){if(f=p.chars[i],f.html){u+=f.html;break}if(B)B=!1;else{if(c=f.ch,this.equalAttr(f,b)||(this.equalAttr(b,this.defAttr)||(u+=""),this.equalAttr(f,this.defAttr)||(d=[],C=[],u+="g&&(g+=8),d.push("fg-color-"+g)),"string"==typeof f.fg&&C.push("color: "+f.fg),"number"==typeof f.bg&&d.push("bg-color-"+f.bg),"string"==typeof f.bg&&C.push("background-color: "+f.bg),u+='class="',u+=d.join(" "),u+='"',C.length&&(u+=' style="'+C.join("; ")+'"'),u+=">")),i===E&&(u+=''),c.length>1)u+=c;else switch(c){case"&":u+="&";break;case"<":u+="<";break;case">":u+=">";break;default:" "===c?u+='':" ">=c?u+=" ":!this.forceWidth||"~">=c?u+=c:c>"＀"&&"￯">c?(B=!0,u+=''+c+""):u+=''+c+""}i===E&&(u+=""),b=f}}this.equalAttr(b,this.defAttr)||(u+=""),j===this.y+this.shift||f.html||(u=this.linkify(u)),p.wrap&&(u+="⏎"),this.children[j]?this.children[j].innerHTML=u:s+='
'+u+"
",this.screen[j].dirty=!1}if(""!==s){if(h=this.document.createElement("div"),h.className="group",h.innerHTML=s,this.body.appendChild(h),this.screen=this.screen.slice(-this.rows),this.shift=0,q=document.querySelectorAll(".line"),q.length>this.scrollback){for(z=Array.prototype.slice.call(q,0,q.length-this.scrollback),v=0,n=z.length;n>v;v++)p=z[v],p.remove();for(A=document.querySelectorAll(".group:empty"),D=0,o=A.length;o>D;D++)h=A[D],h.remove();q=document.querySelectorAll(".line")}this.children=Array.prototype.slice.call(q,-this.rows)}return this.scrollLock?void 0:this.nativeScrollTo()},a.prototype._cursorBlink=function(){var a;return this.cursorState^=1,(a=this.body.querySelector(".cursor"))?a.classList.contains("reverse-video")?a.classList.remove("reverse-video"):a.classList.add("reverse-video"):void 0},a.prototype.showCursor=function(){return this.cursorState?void 0:(this.cursorState=1,this.screen[this.y+this.shift].dirty=!0,this.refresh())},a.prototype.startBlink=function(){return this.cursorBlink?(this._blinker=function(a){return function(){return a._cursorBlink()}}(this),this.t_blink=setInterval(this._blinker,500)):void 0},a.prototype.refreshBlink=function(){return this.cursorBlink?(clearInterval(this.t_blink),this.t_blink=setInterval(this._blinker,500)):void 0},a.prototype.scroll=function(){var a,b,c,d,e;if(this.normal||0!==this.scrollTop||this.scrollBottom!==this.rows-1){for(this.screen.splice(this.shift+this.scrollBottom+1,0,this.blankLine()),this.screen.splice(this.shift+this.scrollTop,1),e=[],a=b=c=this.scrollTop,d=this.scrollBottom;d>=c?d>=b:b>=d;a=d>=c?++b:--b)e.push(this.screen[a+this.shift].dirty=!0);return e}return this.screen.push(this.blankLine()),this.shift++},a.prototype.unscroll=function(){var a,b,c,d,e;for(this.screen.splice(this.shift+this.scrollTop,0,this.blankLine(!0)),this.screen.splice(this.shift+this.scrollBottom+1,1),e=[],a=b=c=this.scrollTop,d=this.scrollBottom;d>=c?d>=b:b>=d;a=d>=c?++b:--b)e.push(this.screen[a+this.shift].dirty=!0);return e},a.prototype.nativeScrollTo=function(a){return null==a&&(a=2e9),window.scrollTo(0,a)},a.prototype.scrollDisplay=function(a){return this.nativeScrollTo(window.scrollY+a*this.charSize.height)},a.prototype.nextLine=function(){return this.y++,this.y>this.scrollBottom?(this.y--,this.scroll()):void 0},a.prototype.prevLine=function(){return this.y--,this.yj;){switch(g=c.charAt(j),this.state){case b.normal:switch(g){case"":this.bell();break;case"\n":case" ":case"\f":this.screen[this.y+this.shift].dirty=!0,this.nextLine();break;case"\r":this.x=0;break;case"\b":this.x>=this.cols&&this.x--,this.x>0&&this.x--;break;case" ":this.x=this.nextStop();break;case"":this.setgLevel(1);break;case"":this.setgLevel(0);break;case"":this.state=b.escaped;break;default:if(g>="̀"&&"ͯ">=g||g>="᪰"&&"᫿">=g||g>="᷀"&&"᷿">=g||g>="⃐"&&"⃿">=g||g>="︠"&&"︯">=g){if(z=this.x,A=this.y+this.shift,this.x>0)z-=1;else{if(!(this.y>0))break;A-=1,z=this.cols-1}this.screen[A].chars[z].ch+=g;break}if(g>=" "&&((null!=(s=this.charset)?s[g]:void 0)&&(g=this.charset[g]),this.x>=this.cols&&(this.autowrap&&(this.screen[this.y+this.shift].wrap=!0,this.nextLine()),this.x=0),this.putChar(g),this.x++,this.forceWidth&&g>"＀"&&"￯">g)){if(this.cols<2||this.x>=this.cols){this.putChar(" ");break}this.putChar(" "),this.x++}}break;case b.escaped:switch(g){case"[":this.params=[],this.currentParam=0,this.state=b.csi;break;case"]":this.params=[],this.currentParam=0,this.state=b.osc;break;case"P":this.params=[],this.currentParam=0,this.state=b.dcs;break;case"_":this.state=b.ignore;break;case"^":this.state=b.ignore;break;case"c":this.reset();break;case"E":this.x=0,this.index();break;case"D":this.index();break;case"M":this.reverseIndex();break;case"%":this.setgLevel(0),this.setgCharset(0,a.prototype.charsets.US),this.state=b.normal,j++;break;case"(":case")":case"*":case"+":case"-":case".":switch(g){case"(":this.gcharset=0;break;case")":case"-":this.gcharset=1;break;case"*":case".":this.gcharset=2;break;case"+":this.gcharset=3}this.state=b.charset;break;case"/":this.gcharset=3,this.state=b.charset,j--;break;case"n":this.setgLevel(2);break;case"o":this.setgLevel(3);break;case"|":this.setgLevel(3);break;case"}":this.setgLevel(2);break;case"~":this.setgLevel(1);break;case"7":this.saveCursor(),this.state=b.normal;break;case"8":this.restoreCursor(),this.state=b.normal;break;case"#":switch(this.state=b.normal,j++,q=c.charAt(j)){case"3":break;case"4":break;case"5":break;case"6":break;case"8":for(t=this.screen,k=0,m=t.length;m>k;k++)for(n=t[k],n.dirty=!0,f=o=0,u=n.chars.length;u>=0?u>=o:o>=u;f=u>=0?++o:--o)n.chars[f]=this.cloneAttr(this.curAttr,"E");this.x=this.y=0}break;case"H":this.tabSet();break;case"=":this.applicationKeypad=!0,this.state=b.normal;break;case">":this.applicationKeypad=!1,this.state=b.normal;break;default:this.state=b.normal,console.log("Unknown ESC control:",g)}break;case b.charset:switch(g){case"0":i=a.prototype.charsets.SCLD;break;case"A":i=a.prototype.charsets.UK;break;case"B":i=a.prototype.charsets.US;break;case"4":i=a.prototype.charsets.Dutch;break;case"C":case"5":i=a.prototype.charsets.Finnish;break;case"R":i=a.prototype.charsets.French;break;case"Q":i=a.prototype.charsets.FrenchCanadian;break;case"K":i=a.prototype.charsets.German;break;case"Y":i=a.prototype.charsets.Italian;break;case"E":case"6":i=a.prototype.charsets.NorwegianDanish;break;case"Z":i=a.prototype.charsets.Spanish;break;case"H":case"7":i=a.prototype.charsets.Swedish;break;case"=":i=a.prototype.charsets.Swiss;break;case"/":i=a.prototype.charsets.ISOLatin,j++;break;default:i=a.prototype.charsets.US}this.setgCharset(this.gcharset,i),this.gcharset=null,this.state=b.normal;break;case b.osc:if(""===g||""===g){switch(""===g&&j++,this.params.push(this.currentParam),this.params[0]){case 0:case 1:case 2:this.params[1]&&(this.title=this.params[1]+" - ƸӜƷ butterfly",this.handleTitle(this.title))}this.params=[],this.currentParam=0,this.state=b.normal}else this.params.length?this.currentParam+=g:g>="0"&&"9">=g?this.currentParam=10*this.currentParam+g.charCodeAt(0)-48:";"===g&&(this.params.push(this.currentParam),this.currentParam="");break;case b.csi:if("?"===g||">"===g||"!"===g){this.prefix=g;break}if(g>="0"&&"9">=g){this.currentParam=10*this.currentParam+g.charCodeAt(0)-48;break}if("$"===g||'"'===g||" "===g||"'"===g)break;if(" ">=g||g>="~"){"\b"===g&&(this.currentParam=this.currentParam/10&1),"\r"===g&&(this.x=0),["\n"," ","\f"].indexOf(g)>=0&&(this.screen[this.y+this.shift].dirty=!0,this.nextLine());break}if(this.params.push(this.currentParam),this.currentParam=0,";"===g)break;switch(this.state=b.normal,g){case"A":this.cursorUp(this.params);break;case"B":this.cursorDown(this.params);break;case"C":this.cursorForward(this.params);break;case"D":this.cursorBackward(this.params);break;case"H":this.cursorPos(this.params);break;case"J":this.eraseInDisplay(this.params);break;case"K":this.eraseInLine(this.params);break;case"m":this.prefix||this.charAttributes(this.params);break;case"n":this.prefix||this.deviceStatus(this.params);break;case"@":this.insertChars(this.params);break;case"E":this.cursorNextLine(this.params);break;case"F":this.cursorPrecedingLine(this.params);break;case"G":this.cursorCharAbsolute(this.params);break;case"L":this.insertLines(this.params);break;case"M":this.deleteLines(this.params);break;case"P":this.deleteChars(this.params);break;case"X":this.eraseChars(this.params);break;case"`":this.charPosAbsolute(this.params);break;case"a":this.HPositionRelative(this.params);break;case"c":this.sendDeviceAttributes(this.params);break;case"d":this.linePosAbsolute(this.params);break;case"e":this.VPositionRelative(this.params);break;case"f":this.HVPosition(this.params);break;case"h":this.setMode(this.params);break;case"l":this.resetMode(this.params);break;case"r":this.setScrollRegion(this.params);break;case"s":this.saveCursor(this.params);break;case"u":this.restoreCursor(this.params);break;case"I":this.cursorForwardTab(this.params);break;case"S":this.scrollUp(this.params);break;case"T":this.params.length<2&&!this.prefix&&this.scrollDown(this.params);break;case"Z":this.cursorBackwardTab(this.params);break;case"b":this.repeatPrecedingCharacter(this.params);break;case"g":this.tabClear(this.params);break;case"p":"!"===this.prefix&&this.softReset(this.params);break;default:console.error("Unknown CSI code: %s (%d).",g,g.charCodeAt(0))}this.prefix="";break;case b.dcs:if(""===g||""===g){switch(""===g&&j++,this.prefix){case"":if(r=this.currentParam,";"!==r[0]){console.error("Unknown DECUDK: "+r);break}if(r=r.slice(1),v=r.split("|",2),x=v[0],h=v[1],!h){console.error("No type for inline DECUDK: "+r);break}switch(x){case"HTML":w=html_sanitize(h,function(a){return a}),d=this.cloneAttr(this.curAttr),d.html='
'+w+"
",this.screen[this.y+this.shift].chars[this.x]=d,this.screen[this.y+this.shift].dirty=!0,this.screen[this.y+this.shift].wrap=!1,this.nextLine();break;case"IMAGE":h=encodeURI(h),h.indexOf(";")?(p=h.slice(0,h.indexOf(";")),e=h.slice(h.indexOf(";")+1)):(p="image",e=h),d=this.cloneAttr(this.curAttr),d.html='',this.screen[this.y+this.shift].chars[this.x]=d,this.screen[this.y+this.shift].dirty=!0,this.screen[this.y+this.shift].wrap=!1;break;case"PROMPT":this.send(h);break;case"TEXT":l+=h.length,c=c.slice(0,j+1)+h+c.slice(j+1);break;default:console.error("Unknown type "+x+" for DECUDK")}break;case"$q":switch(r=this.currentParam,y=!1,r){case'"q':r='0"q';break;case'"p':r='61"p';break;case"r":r=""+(this.scrollTop+1)+";"+(this.scrollBottom+1)+"r";break;case"m":r="0m";break;default:console.error("Unknown DCS Pt: %s.",r),r=""}this.send("P"+ +y+"$r"+r+"\\");break;case"+q":r=this.currentParam,y=!1,this.send("P"+ +y+"+r"+r+"\\");break;default:console.error("Unknown DCS prefix: %s.",this.prefix)}this.currentParam=0,this.prefix="",this.state=b.normal}else this.currentParam?this.currentParam+=g:this.prefix||"$"===g||"+"===g?2===this.prefix.length?this.currentParam=g:this.prefix+=g:this.currentParam=g;break;case b.ignore:(""===g||""===g)&&(""===g&&j++,this.state=b.normal)}j++}return this.screen[this.y+this.shift].dirty=!0,this.refresh()},a.prototype.writeln=function(a){return this.write(a+"\r\n")},a.prototype.keyDown=function(a){var b,c,e,f;if(a.keyCode>15&&a.keyCode<19)return!0;if((a.shiftKey||a.ctrlKey)&&45===a.keyCode)return!0;if(a.shiftKey&&a.ctrlKey&&(67===(e=a.keyCode)||86===e))return!0;if(a.altKey&&90===a.keyCode&&!this.skipNextKey)return this.skipNextKey=!0,this.body.classList.add("skip"),d(a);if(this.skipNextKey)return this.skipNextKey=!1,this.body.classList.remove("skip"),!0;switch(a.keyCode){case 8:if(c=a.altKey?"":"",a.shiftKey){c+="\b";break}c+="";break;case 9:if(a.shiftKey){c="";break}c=" ";break;case 13:c="\r";break;case 27:c="";break;case 37:if(this.applicationCursor){c="OD";break}c="";break;case 39:if(this.applicationCursor){c="OC";break}c="";break;case 38:if(this.applicationCursor){c="OA";break}if(a.ctrlKey)return this.scrollDisplay(-1),d(a);c="";break;case 40:if(this.applicationCursor){c="OB";break}if(a.ctrlKey)return this.scrollDisplay(1),d(a);c="";break;case 46:c="[3~";break;case 45:c="[2~";break;case 36:if(this.applicationKeypad){c="OH";break}c="OH";break;case 35:if(this.applicationKeypad){c="OF";break}c="OF";break;case 33:if(a.shiftKey){if(a.ctrlKey)break;return this.scrollDisplay(-(this.rows-1)),d(a)}c="[5~";break;case 34:if(a.shiftKey){if(a.ctrlKey)break;return this.scrollDisplay(this.rows-1),d(a)}c="[6~";break;case 112:c="OP";break;case 113:c="OQ";break;case 114:c="OR";break;case 115:c="OS";break;case 116:c="[15~";break;case 117:c="[17~";break;case 118:c="[18~";break;case 119:c="[19~";break;case 120:c="[20~";break;case 121:c="[21~";break;case 122:c="[23~";break;case 123:c="[24~";break;case 145:return this.scrollLock=!this.scrollLock,this.scrollLock?this.body.classList.add("locked"):this.body.classList.remove("locked"),d(a);default:if(a.ctrlKey)if(a.keyCode>=65&&a.keyCode<=90){if(67===a.keyCode){if(f=(new Date).getTime(),f-this.lastcc<500&&!this.stop){for(b=setTimeout(function(){});b--;)b!==this.t_bell&&b!==this.t_queue&&b!==this.t_blink&&clearTimeout(b);return this.body.classList.add("stopped"),this.stop=!0,this.send(" ")}if(this.stop)return!0;this.lastcc=f}c=String.fromCharCode(a.keyCode-64)}else 32===a.keyCode?c=String.fromCharCode(0):a.keyCode>=51&&a.keyCode<=55?c=String.fromCharCode(a.keyCode-51+27):56===a.keyCode?c=String.fromCharCode(127):219===a.keyCode?c=String.fromCharCode(27):221===a.keyCode&&(c=String.fromCharCode(29));else(a.altKey&&k.call(navigator.platform,"Mac")<0||a.metaKey&&k.call(navigator.platform,"Mac")>=0)&&(a.keyCode>=65&&a.keyCode<=90?c=""+String.fromCharCode(a.keyCode+32):192===a.keyCode?c="`":a.keyCode>=48&&a.keyCode<=57&&(c=""+(a.keyCode-48)))}return a.keyCode>=37&&a.keyCode<=40&&(a.ctrlKey?c=c.slice(0,-1)+"1;5"+c.slice(-1):a.altKey?c=c.slice(0,-1)+"1;3"+c.slice(-1):a.shiftKey&&(c=c.slice(0,-1)+"1;4"+c.slice(-1))),c?(this.showCursor(),this.send(c),d(a)):!0},a.prototype.setgLevel=function(a){return this.glevel=a,this.charset=this.charsets[a]},a.prototype.setgCharset=function(a,b){return this.charsets[a]=b,this.glevel===a?this.charset=b:void 0},a.prototype.keyPress=function(a){var b,c;if(this.skipNextKey===!1)return this.skipNextKey=null,!0;if(a.keyCode>15&&a.keyCode<19)return!0;if((a.shiftKey||a.ctrlKey)&&45===a.keyCode)return!0;if(a.shiftKey&&a.ctrlKey&&(67===(c=a.keyCode)||86===c))return!0;if(d(a),a.charCode)b=a.charCode;else if(null==a.which)b=a.keyCode;else{if(0===a.which||0===a.charCode)return!1;b=a.which}return!b||a.ctrlKey||a.altKey||a.metaKey?!1:(b=String.fromCharCode(b),this.showCursor(),this.send(b),!1)},a.prototype.bell=function(a){return null==a&&(a="bell"),this.visualBell?(this.body.classList.add(a),this.t_bell=setTimeout(function(b){return function(){return b.body.classList.remove(a)}}(this),this.visualBell)):void 0},a.prototype.resize=function(a,b){var c,d,e,f,g,h,i,j,k;if(null==a&&(a=null),null==b&&(b=null),h=this.cols,i=this.rows,this.computeCharSize(),k=this.body.clientWidth,d=this.html.clientHeight-(this.html.offsetHeight-this.html.scrollHeight),this.cols=a||Math.floor(k/this.charSize.width),this.rows=b||Math.floor(d/this.charSize.height),j=d%this.charSize.height,this.body.style["padding-bottom"]=j+"px",this.nativeScrollTo(),a||b||h!==this.cols||i!==this.rows){if(this.ctl("Resize",this.cols,this.rows),hthis.cols)for(e=this.screen.length;e--;)for(;this.screen[e].chars.length>this.cols;)this.screen[e].chars.pop();if(this.setupStops(h),f=i,fthis.rows)for(;f-->this.rows;)this.screen.length>this.rows&&this.screen.pop(),this.children.length>this.rows&&(c=this.children.pop(),null!=c&&c.parentNode.removeChild(c));if(this.normal){if(hthis.cols)for(e=this.normal.screen.length;e--;)for(;this.normal.screen[e].chars.length>this.cols;)this.normal.screen[e].chars.pop();if(f=i,fthis.rows)for(;f-->this.rows;)this.normal.screen.length>this.rows&&this.normal.screen.pop()}return this.y>=this.rows&&(this.y=this.rows-1),this.x>=this.cols&&(this.x=this.cols-1),this.scrollTop=0,this.scrollBottom=this.rows-1,this.refresh(!0),a||b?this.reset():void 0}},a.prototype.resizeWindowPlease=function(a){var b,c;return b=window.innerWidth-this.body.clientWidth,c=a*this.charSize.width+b,resizeTo(c,window.innerHeight)},a.prototype.setupStops=function(a){var b;for(null!=a?this.tabs[a]||(a=this.prevStop(a)):(this.tabs={},a=0),b=[];a0;);return a>=this.cols?this.cols-1:0>a?0:a},a.prototype.nextStop=function(a){for(null==a&&(a=this.x);!this.tabs[++a]&&a=this.cols?this.cols-1:0>a?0:a},a.prototype.eraseRight=function(a,b){var c;for(c=this.screen[b+this.shift].chars;ab&&(b=1),this.y-=b,this.y<0?this.y=0:void 0},a.prototype.cursorDown=function(a){var b;return b=a[0],1>b&&(b=1),this.y+=b,this.y>=this.rows?this.y=this.rows-1:void 0},a.prototype.cursorForward=function(a){var b;return b=a[0],1>b&&(b=1),this.x+=b,this.x>=this.cols?this.x=this.cols-1:void 0},a.prototype.cursorBackward=function(a){var b;return b=a[0],1>b&&(b=1),this.x-=b,this.x<0?this.x=0:void 0},a.prototype.cursorPos=function(a){var b,c;return c=a[0]-1,b=a.length>=2?a[1]-1:0,0>c?c=0:c>=this.rows&&(c=this.rows-1),0>b?b=0:b>=this.cols&&(b=this.cols-1),this.x=b,this.y=c+(this.originMode?this.scrollTop:0)},a.prototype.eraseInDisplay=function(a){var b,c,d,e;switch(a[0]){case 0:for(this.eraseRight(this.x,this.y),b=this.y+1,c=[];bb;)d=a[b],d>=30&&37>=d?this.curAttr.fg=d-30:d>=40&&47>=d?this.curAttr.bg=d-40:d>=90&&97>=d?(d+=8,this.curAttr.fg=d-90):d>=100&&107>=d?(d+=8,this.curAttr.bg=d-100):0===d?this.curAttr=this.cloneAttr(this.defAttr):1===d?this.curAttr.bold=!0:2===d?this.curAttr.faint=!0:3===d?this.curAttr.italic=!0:4===d?this.curAttr.underline=!0:5===d?this.curAttr.blink=1:6===d?this.curAttr.blink=2:7===d?this.curAttr.inverse=!0:8===d?this.curAttr.invisible=!0:9===d?this.curAttr.crossed=!0:10===d||(21===d?this.curAttr.bold=!1:22===d?(this.curAttr.bold=!1,this.curAttr.faint=!1):23===d?this.curAttr.italic=!1:24===d?this.curAttr.underline=!1:25===d?this.curAttr.blink=!1:27===d?this.curAttr.inverse=!1:28===d?this.curAttr.invisible=!1:29===d?this.curAttr.crossed=!1:39===d?this.curAttr.fg=257:49===d?this.curAttr.bg=256:38===d?2===a[b+1]?(b+=2,this.curAttr.fg="rgb("+a[b]+", "+a[b+1]+", "+a[b+2]+")",b+=2):5===a[b+1]&&(b+=2,this.curAttr.fg=255&a[b]):48===d?2===a[b+1]?(b+=2,this.curAttr.bg="rgb("+a[b]+", "+a[b+1]+", "+a[b+2]+")",b+=2):5===a[b+1]&&(b+=2,this.curAttr.bg=255&a[b]):100===d?(this.curAttr.fg=257,this.curAttr.bg=256):console.error("Unknown SGR attribute: %d.",d)),e.push(b++);return e},a.prototype.deviceStatus=function(a){if(this.prefix){if("?"===this.prefix&&6===a[0])return this.send("[?"+(this.y+1)+";"+(this.x+1)+"R")}else switch(a[0]){case 5:return this.send("");case 6:return this.send("["+(this.y+1)+";"+(this.x+1)+"R")}},a.prototype.insertChars=function(a){var b,c,d;for(c=a[0],1>c&&(c=1),d=this.y,b=this.x;c--&&bb&&(b=1),this.y+=b,this.y>=this.rows&&(this.y=this.rows-1),this.x=0},a.prototype.cursorPrecedingLine=function(a){var b;return b=a[0],1>b&&(b=1),this.y-=b,this.y<0&&(this.y=0),this.x=0},a.prototype.cursorCharAbsolute=function(a){var b;return b=a[0],1>b&&(b=1),this.x=b-1},a.prototype.insertLines=function(a){var b,c,d,e,f,g;for(d=a[0],1>d&&(d=1);d--;)this.screen.splice(this.y+this.shift,0,this.blankLine(!0)),this.screen.splice(this.scrollBottom+1+this.shift,1);for(g=[],b=c=e=this.y+this.shift,f=this.screen.length-1;f>=e?f>=c:c>=f;b=f>=e?++c:--c)g.push(this.screen[b].dirty=!0);return g},a.prototype.deleteLines=function(a){var b,c,d,e,f,g;for(d=a[0],1>d&&(d=1);d--;)this.screen.splice(this.scrollBottom+this.shift,0,this.blankLine(!0)),this.screen.splice(this.y+this.shift,1),this.normal||0!==this.scrollTop||this.scrollBottom!==this.rows-1||(this.children[this.y+this.shift].remove(), +this.children.splice(this.y+this.shift,1));if(this.normal||0!==this.scrollTop||this.scrollBottom!==this.rows-1){for(g=[],b=c=e=this.y+this.shift,f=this.screen.length-1;f>=e?f>=c:c>=f;b=f>=e?++c:--c)g.push(this.screen[b].dirty=!0);return g}},a.prototype.deleteChars=function(a){var b;for(b=a[0],1>b&&(b=1);b--;)this.screen[this.y+this.shift].chars.splice(this.x,1),this.screen[this.y+this.shift].chars.push(this.eraseAttr());return this.screen[this.y+this.shift].dirty=!0,this.screen[this.y+this.shift].wrap=!1},a.prototype.eraseChars=function(a){var b,c;for(c=a[0],1>c&&(c=1),b=this.x;c--&&bb&&(b=1),this.x=b-1,this.x>=this.cols?this.x=this.cols-1:void 0},a.prototype.HPositionRelative=function(a){var b;return b=a[0],1>b&&(b=1),this.x+=b,this.x>=this.cols?this.x=this.cols-1:void 0},a.prototype.sendDeviceAttributes=function(a){if(!(a[0]>0))if(this.prefix){if(">"===this.prefix){if(this.isterm("xterm"))return this.send("[>0;276;0c");if(this.isterm("rxvt-unicode"))return this.send("[>85;95;0c");if(this.isterm("linux"))return this.send(a[0]+"c");if(this.isterm("screen"))return this.send("[>83;40003;0c")}}else{if(this.isterm("xterm")||this.isterm("rxvt-unicode")||this.isterm("screen"))return this.send("[?1;2c");if(this.isterm("linux"))return this.send("[?6c")}},a.prototype.linePosAbsolute=function(a){var b;return b=a[0],1>b&&(b=1),this.y=b-1,this.y>=this.rows?this.y=this.rows-1:void 0},a.prototype.VPositionRelative=function(a){var b;return b=a[0],1>b&&(b=1),this.y+=b,this.y>=this.rows?this.y=this.rows-1:void 0},a.prototype.HVPosition=function(a){return a[0]<1&&(a[0]=1),a[1]<1&&(a[1]=1),this.y=a[0]-1,this.y>=this.rows&&(this.y=this.rows-1),this.x=a[1]-1,this.x>=this.cols?this.x=this.cols-1:void 0},a.prototype.setMode=function(b){var c,d,e;if("object"!=typeof b)if(this.prefix){if("?"===this.prefix)switch(b){case 1:return this.applicationCursor=!0;case 2:return this.setgCharset(0,a.prototype.charsets.US),this.setgCharset(1,a.prototype.charsets.US),this.setgCharset(2,a.prototype.charsets.US),this.setgCharset(3,a.prototype.charsets.US);case 3:return this.savedCols=this.cols,this.resize(132,this.rows),this.resizeWindowPlease(132),this.reset();case 6:return this.originMode=!0;case 7:return this.autowrap=!0;case 66:return this.applicationKeypad=!0;case 9:case 1e3:case 1002:case 1003:return this.x10Mouse=9===b,this.vt200Mouse=1e3===b,this.normalMouse=b>1e3,this.mouseEvents=!0,this.body.style.cursor="pointer";case 1004:return this.sendFocus=!0;case 1005:return this.utfMouse=!0;case 1006:return this.sgrMouse=!0;case 1015:return this.urxvtMouse=!0;case 25:return this.cursorHidden=!1;case 1049:case 47:case 1047:if(!this.normal)return e={screen:this.screen,x:this.x,y:this.y,shift:this.shift,scrollTop:this.scrollTop,scrollBottom:this.scrollBottom,tabs:this.tabs,curAttr:this.curAttr},this.reset(),this.normal=e,this.showCursor()}}else switch(b){case 4:this.insertMode=!0;break;case 20:this.convertEol=!0}else for(d=b.length,c=0;d>c;)this.setMode(b[c]),c++},a.prototype.resetMode=function(a){var b,c;if("object"!=typeof a)if(this.prefix){if("?"===this.prefix)switch(a){case 1:return this.applicationCursor=!1;case 3:return 132===this.cols&&this.savedCols&&this.resize(this.savedCols,this.rows),this.resizeWindowPlease(80),this.reset(),delete this.savedCols;case 6:return this.originMode=!1;case 7:return this.autowrap=!1;case 66:return this.applicationKeypad=!1;case 9:case 1e3:case 1002:case 1003:return this.x10Mouse=!1,this.vt200Mouse=!1,this.normalMouse=!1,this.mouseEvents=!1,this.body.style.cursor="";case 1004:return this.sendFocus=!1;case 1005:return this.utfMouse=!1;case 1006:return this.sgrMouse=!1;case 1015:return this.urxvtMouse=!1;case 25:return this.cursorHidden=!0;case 1049:case 47:case 1047:if(this.normal)return this.screen=this.normal.screen,this.x=this.normal.x,this.y=this.normal.y,this.shift=this.normal.shift,this.scrollTop=this.normal.scrollTop,this.scrollBottom=this.normal.scrollBottom,this.tabs=this.normal.tabs,this.curAttr=this.normal.curAttr,this.normal=null,this.refresh(!0),this.showCursor()}}else switch(a){case 4:this.insertMode=!1;break;case 20:this.convertEol=!1}else for(c=a.length,b=0;c>b;)this.resetMode(a[b]),b++},a.prototype.setScrollRegion=function(a){return this.prefix?void 0:(this.scrollTop=(a[0]||1)-1,this.scrollBottom=(a[1]||this.rows)-1,this.x=0,this.y=0)},a.prototype.saveCursor=function(a){return this.savedX=this.x,this.savedY=this.y},a.prototype.restoreCursor=function(a){return this.x=this.savedX||0,this.y=this.savedY||0},a.prototype.cursorForwardTab=function(a){var b,c;for(b=a[0]||1,c=[];b--;)c.push(this.x=this.nextStop());return c},a.prototype.scrollUp=function(a){var b,c,d,e,f,g;for(d=a[0]||1;d--;)this.screen.splice(this.scrollTop,1),this.screen.splice(this.scrollBottom,0,this.blankLine());for(g=[],b=c=e=this.scrollTop,f=this.scrollBottom;f>=e?f>=c:c>=f;b=f>=e?++c:--c)g.push(this.screen[b+this.shift].dirty=!0);return g},a.prototype.scrollDown=function(a){var b,c,d,e,f,g;for(d=a[0]||1;d--;)this.screen.splice(this.scrollBottom,1),this.screen.splice(this.scrollTop,0,this.blankLine());for(g=[],b=c=e=this.scrollTop,f=this.scrollBottom;f>=e?f>=c:c>=f;b=f>=e?++c:--c)g.push(this.screen[b+this.shift].dirty=!0);return g},a.prototype.initMouseTracking=function(a){},a.prototype.resetTitleModes=function(a){},a.prototype.cursorBackwardTab=function(a){var b,c;for(b=a[0]||1,c=[];b--;)c.push(this.x=this.prevStop());return c},a.prototype.repeatPrecedingCharacter=function(a){var b,c,d;for(d=a[0]||1,c=this.screen[this.y+this.shift].chars,b=c[this.x-1]||this.defAttr;d--;)c[this.x++]=b;return this.screen[this.y+this.shift].dirty=!0},a.prototype.tabClear=function(a){var b;return b=a[0],0>=b?delete this.tabs[this.x]:3===b?this.tabs={}:void 0},a.prototype.mediaCopy=function(a){},a.prototype.setResources=function(a){},a.prototype.disableModifiers=function(a){},a.prototype.setPointerMode=function(a){},a.prototype.softReset=function(a){return this.cursorHidden=!1,this.insertMode=!1,this.originMode=!1,this.autowrap=!0,this.applicationKeypad=!1,this.applicationCursor=!1,this.scrollTop=0,this.scrollBottom=this.rows-1,this.curAttr=this.defAttr,this.x=this.y=0,this.charset=null,this.glevel=0,this.charsets=[null]},a.prototype.requestAnsiMode=function(a){},a.prototype.requestPrivateMode=function(a){},a.prototype.setConformanceLevel=function(a){},a.prototype.loadLEDs=function(a){},a.prototype.setCursorStyle=function(a){},a.prototype.setCharProtectionAttr=function(a){},a.prototype.restorePrivateValues=function(a){},a.prototype.setAttrInRectangle=function(a){var b,c,d,e,f,g,h,i;for(i=a[0],e=a[1],c=a[2],g=a[3],b=a[4],h=[];c+1>i;){for(f=this.screen[i+this.shift].chars,this.screen[i+this.shift].dirty=!0,d=e;g>d;)f[d]=this.cloneAttr(b,f[d].ch),d++;h.push(i++)}return h},a.prototype.savePrivateValues=function(a){},a.prototype.manipulateWindow=function(a){},a.prototype.reverseAttrInRectangle=function(a){},a.prototype.setTitleModeFeature=function(a){},a.prototype.setWarningBellVolume=function(a){},a.prototype.setMarginBellVolume=function(a){},a.prototype.copyRectangle=function(a){},a.prototype.enableFilterRectangle=function(a){},a.prototype.requestParameters=function(a){},a.prototype.selectChangeExtent=function(a){},a.prototype.fillRectangle=function(a){var b,c,d,e,f,g,h,i;for(c=a[0],i=a[1],e=a[2],b=a[3],g=a[4],h=[];b+1>i;){for(f=this.screen[i+this.shift].chars,this.screen[i+this.shift].dirty=!0,d=e;g>d;)f[d]=this.cloneAttr(f[d][0],String.fromCharCode(c)),d++;h.push(i++)}return h},a.prototype.enableLocatorReporting=function(a){var b;return b=a[0]>0},a.prototype.eraseRectangle=function(a){var b,c,d,e,f,g,h;for(h=a[0],d=a[1],b=a[2],f=a[3],g=[];b+1>h;){for(e=this.screen[h+this.shift].chars,this.screen[h+this.shift].dirty=!0,c=d;f>c;)e[c]=this.eraseAttr(),c++;g.push(h++)}return g},a.prototype.setLocatorEvents=function(a){},a.prototype.selectiveEraseRectangle=function(a){},a.prototype.requestLocatorPosition=function(a){},a.prototype.insertColumns=function(){var a,b,c,d;for(c=params[0],b=this.rows+this.shift,d=[];c--;)a=this.shift,d.push(function(){var c;for(c=[];b>a;)this.screen[a].chars.splice(this.x+1,0,this.eraseAttr()),this.screen[a].chars.pop(),this.screen[a].dirty=!0,c.push(a++);return c}.call(this));return d},a.prototype.deleteColumns=function(){var a,b,c,d;for(c=params[0],b=this.rows+this.shift,d=[];c--;)a=this.shift,d.push(function(){var c;for(c=[];b>a;)this.screen[a].chars.splice(this.x,1),this.screen[a].chars.push(this.eraseAttr()),this.screen[a].dirty=!0,this.screen[a].wrap=!1,c.push(a++);return c}.call(this));return d},a.prototype.charsets={SCLD:{"`":"◆",a:"▒",b:" ",c:"\f",d:"\r",e:"\n",f:"°",g:"±",h:"␤",i:" ",j:"┘",k:"┐",l:"┌",m:"└",n:"┼",o:"⎺",p:"⎻",q:"─",r:"⎼",s:"⎽",t:"├",u:"┤",v:"┴",w:"┬",x:"│",y:"≤",z:"≥","{":"π","|":"≠","}":"£","~":"·"},UK:null,US:null,Dutch:null,Finnish:null,French:null,FrenchCanadian:null,German:null,Italian:null,NorwegianDanish:null,Spanish:null,Swedish:null,Swiss:null,ISOLatin:null},a}(),window.Terminal=c}).call(this); //# sourceMappingURL=main.min.js.map \ No newline at end of file diff --git a/coffees/ext/theme.coffee b/coffees/ext/theme.coffee index c2b71d6..5bcb0c7 100644 --- a/coffees/ext/theme.coffee +++ b/coffees/ext/theme.coffee @@ -20,8 +20,7 @@ document.addEventListener 'keydown', (e) -> if e.shiftKey style = document.getElementById('style').getAttribute('href') style = style.split('?')[0] - document.getElementById('style').setAttribute( - 'href', style + '?' + (new Date().getTime())) + _set_theme_href style + '?' + (new Date().getTime()) return cancel(e) diff --git a/coffees/term.coffee b/coffees/term.coffee index 49470ce..44acedb 100644 --- a/coffees/term.coffee +++ b/coffees/term.coffee @@ -49,6 +49,7 @@ class Terminal constructor: (@parent, @out, @ctl=->) -> # Global elements @document = @parent.ownerDocument + @html = @document.getElementsByTagName('html')[0] @body = @document.getElementsByTagName('body')[0] @forceWidth = @body.getAttribute( 'data-force-unicode-width') is 'yes' @@ -1538,11 +1539,14 @@ class Terminal oldCols = @cols oldRows = @rows @computeCharSize() - @cols = x or Math.floor(@body.clientWidth / @charSize.width) - @rows = y or Math.floor(window.innerHeight / @charSize.height) - px = window.innerHeight % @charSize.height + w = @body.clientWidth + h = @html.clientHeight - (@html.offsetHeight - @html.scrollHeight) + @cols = x or Math.floor(w / @charSize.width) + @rows = y or Math.floor(h / @charSize.height) + px = h % @charSize.height @body.style['padding-bottom'] = "#{px}px" + @nativeScrollTo() if (not x and not y) and oldCols == @cols and oldRows == @rows return