From 3046a091ac686d7c247515528b397327d4fcb7d8 Mon Sep 17 00:00:00 2001 From: Koushik M L N Date: Fri, 22 Jun 2018 21:21:37 +0530 Subject: [PATCH] Shifted Hterm.js to wetty file - Revert --- public/wetty/hterm_all.js | 873 ++++++++++++++++++++++++++++++++++++++ public/wetty/index.html | 1 + 2 files changed, 874 insertions(+) create mode 100644 public/wetty/hterm_all.js diff --git a/public/wetty/hterm_all.js b/public/wetty/hterm_all.js new file mode 100644 index 0000000..05eaafb --- /dev/null +++ b/public/wetty/hterm_all.js @@ -0,0 +1,873 @@ +'use strict';if(typeof lib!='undefined') + throw new Error('Global "lib" object already exists.');var lib={};lib.runtimeDependencies_={};lib.initCallbacks_=[];lib.rtdep=function(var_args){var source;try{throw new Error()}catch(ex){var stackArray=ex.stack.split('\n');if(stackArray.length>=3){source=stackArray[2].replace(/^\s*at\s+/,'')}else{source=stackArray[1].replace(/^\s*global code@/,'')}} + for(var i=0;ipadString.length) + padString=padString.repeat((targetLength/padString.length)+1);return padString.slice(0,targetLength)+String(this)}} +if(!String.prototype.padEnd){String.prototype.padEnd=function(targetLength,padString){targetLength-=this.length;if(targetLength<=0) + return String(this);if(padString===undefined) + padString=' ';if(targetLength>padString.length) + padString=padString.repeat((targetLength/padString.length)+1);return String(this)+padString.slice(0,targetLength)}} +if(!Object.values||!Object.entries){const reduce=Function.bind.call(Function.call,Array.prototype.reduce);const isEnumerable=Function.bind.call(Function.call,Object.prototype.propertyIsEnumerable);const concat=Function.bind.call(Function.call,Array.prototype.concat);if(!Object.values){Object.values=function values(O){return reduce(Reflect.ownKeys(O),(v,k)=>concat(v,typeof k==='string'&&isEnumerable(O,k)?[O[k]]:[]),[])}} + if(!Object.entries){Object.entries=function entries(O){return reduce(Reflect.ownKeys(O),(e,k)=>concat(e,typeof k==='string'&&isEnumerable(O,k)?[[k,O[k]]]:[]),[])}}} +'use strict';lib.array={};lib.array.arrayBigEndianToUint32=function(array){const maybeSigned=(array[0]<<24)|(array[1]<<16)|(array[2]<<8)|(array[3]<<0);return maybeSigned>>>0};lib.array.uint32ToArrayBigEndian=function(uint32){return[(uint32>>>24)&0xFF,(uint32>>>16)&0xFF,(uint32>>>8)&0xFF,(uint32>>>0)&0xFF,]};lib.array.concatTyped=function(...arrays){let resultLength=0;for(const array of arrays){resultLength+=array.length} + const result=new arrays[0].constructor(resultLength);let pos=0;for(const array of arrays){result.set(array,pos);pos+=array.length} + return result};lib.array.compare=function(a,b){if(a===null||b===null){return a===null&&b===null} + if(a.length!==b.length){return!1} + for(let i=0;i>(4*(size-2))} + return lib.colors.arrayToRGBA([r,g,b].map(norm16))};lib.colors.x11ToCSS=function(v){function scale(v){if(v.length==1){return parseInt(v+v,16)} + if(v.length==2){return parseInt(v,16)} + if(v.length==3){v=v+v.substr(2)} + return Math.round(parseInt(v,16)/257)} + var ary=v.match(lib.colors.re_.x11rgb);if(!ary){if(v.startsWith('#')) + return lib.colors.x11HexToCSS(v);else return lib.colors.nameToRGB(v)} + ary.splice(0,1);return lib.colors.arrayToRGBA(ary.map(scale))};lib.colors.hexToRGB=function(arg){var hex16=lib.colors.re_.hex16;var hex24=lib.colors.re_.hex24;function convert(hex){if(hex.length==4){hex=hex.replace(hex16,function(h,r,g,b){return"#"+r+r+g+g+b+b})} + var ary=hex.match(hex24);if(!ary) + return null;return'rgb('+parseInt(ary[1],16)+', '+parseInt(ary[2],16)+', '+parseInt(ary[3],16)+')'} + if(arg instanceof Array){for(var i=0;i3)?ary[3]:1;return'rgba('+ary[0]+', '+ary[1]+', '+ary[2]+', '+alpha+')'};lib.colors.setAlpha=function(rgb,alpha){var ary=lib.colors.crackRGB(rgb);ary[3]=alpha;return lib.colors.arrayToRGBA(ary)};lib.colors.mix=function(base,tint,percent){var ary1=lib.colors.crackRGB(base);var ary2=lib.colors.crackRGB(tint);for(var i=0;i<4;++i){var diff=ary2[i]-ary1[i];ary1[i]=Math.round(parseInt(ary1[i])+diff*percent)} + return lib.colors.arrayToRGBA(ary1)};lib.colors.crackRGB=function(color){if(color.startsWith('rgba')){var ary=color.match(lib.colors.re_.rgba);if(ary){ary.shift();return ary}}else{var ary=color.match(lib.colors.re_.rgb);if(ary){ary.shift();ary.push('1');return ary}} + console.error('Couldn\'t crack: '+color);return null};lib.colors.nameToRGB=function(name){if(name in lib.colors.colorNames) + return lib.colors.colorNames[name];name=name.toLowerCase();if(name in lib.colors.colorNames) + return lib.colors.colorNames[name];name=name.replace(/\s+/g,'');if(name in lib.colors.colorNames) + return lib.colors.colorNames[name];return null};lib.colors.stockColorPalette=lib.colors.hexToRGB(['#000000','#CC0000','#4E9A06','#C4A000','#3465A4','#75507B','#06989A','#D3D7CF','#555753','#EF2929','#00BA13','#FCE94F','#729FCF','#F200CB','#00B5BD','#EEEEEC','#000000','#00005F','#000087','#0000AF','#0000D7','#0000FF','#005F00','#005F5F','#005F87','#005FAF','#005FD7','#005FFF','#008700','#00875F','#008787','#0087AF','#0087D7','#0087FF','#00AF00','#00AF5F','#00AF87','#00AFAF','#00AFD7','#00AFFF','#00D700','#00D75F','#00D787','#00D7AF','#00D7D7','#00D7FF','#00FF00','#00FF5F','#00FF87','#00FFAF','#00FFD7','#00FFFF','#5F0000','#5F005F','#5F0087','#5F00AF','#5F00D7','#5F00FF','#5F5F00','#5F5F5F','#5F5F87','#5F5FAF','#5F5FD7','#5F5FFF','#5F8700','#5F875F','#5F8787','#5F87AF','#5F87D7','#5F87FF','#5FAF00','#5FAF5F','#5FAF87','#5FAFAF','#5FAFD7','#5FAFFF','#5FD700','#5FD75F','#5FD787','#5FD7AF','#5FD7D7','#5FD7FF','#5FFF00','#5FFF5F','#5FFF87','#5FFFAF','#5FFFD7','#5FFFFF','#870000','#87005F','#870087','#8700AF','#8700D7','#8700FF','#875F00','#875F5F','#875F87','#875FAF','#875FD7','#875FFF','#878700','#87875F','#878787','#8787AF','#8787D7','#8787FF','#87AF00','#87AF5F','#87AF87','#87AFAF','#87AFD7','#87AFFF','#87D700','#87D75F','#87D787','#87D7AF','#87D7D7','#87D7FF','#87FF00','#87FF5F','#87FF87','#87FFAF','#87FFD7','#87FFFF','#AF0000','#AF005F','#AF0087','#AF00AF','#AF00D7','#AF00FF','#AF5F00','#AF5F5F','#AF5F87','#AF5FAF','#AF5FD7','#AF5FFF','#AF8700','#AF875F','#AF8787','#AF87AF','#AF87D7','#AF87FF','#AFAF00','#AFAF5F','#AFAF87','#AFAFAF','#AFAFD7','#AFAFFF','#AFD700','#AFD75F','#AFD787','#AFD7AF','#AFD7D7','#AFD7FF','#AFFF00','#AFFF5F','#AFFF87','#AFFFAF','#AFFFD7','#AFFFFF','#D70000','#D7005F','#D70087','#D700AF','#D700D7','#D700FF','#D75F00','#D75F5F','#D75F87','#D75FAF','#D75FD7','#D75FFF','#D78700','#D7875F','#D78787','#D787AF','#D787D7','#D787FF','#D7AF00','#D7AF5F','#D7AF87','#D7AFAF','#D7AFD7','#D7AFFF','#D7D700','#D7D75F','#D7D787','#D7D7AF','#D7D7D7','#D7D7FF','#D7FF00','#D7FF5F','#D7FF87','#D7FFAF','#D7FFD7','#D7FFFF','#FF0000','#FF005F','#FF0087','#FF00AF','#FF00D7','#FF00FF','#FF5F00','#FF5F5F','#FF5F87','#FF5FAF','#FF5FD7','#FF5FFF','#FF8700','#FF875F','#FF8787','#FF87AF','#FF87D7','#FF87FF','#FFAF00','#FFAF5F','#FFAF87','#FFAFAF','#FFAFD7','#FFAFFF','#FFD700','#FFD75F','#FFD787','#FFD7AF','#FFD7D7','#FFD7FF','#FFFF00','#FFFF5F','#FFFF87','#FFFFAF','#FFFFD7','#FFFFFF','#080808','#121212','#1C1C1C','#262626','#303030','#3A3A3A','#444444','#4E4E4E','#585858','#626262','#6C6C6C','#767676','#808080','#8A8A8A','#949494','#9E9E9E','#A8A8A8','#B2B2B2','#BCBCBC','#C6C6C6','#D0D0D0','#DADADA','#E4E4E4','#EEEEEE']);lib.colors.colorPalette=lib.colors.stockColorPalette;lib.colors.colorNames={"aliceblue":"rgb(240, 248, 255)","antiquewhite":"rgb(250, 235, 215)","antiquewhite1":"rgb(255, 239, 219)","antiquewhite2":"rgb(238, 223, 204)","antiquewhite3":"rgb(205, 192, 176)","antiquewhite4":"rgb(139, 131, 120)","aquamarine":"rgb(127, 255, 212)","aquamarine1":"rgb(127, 255, 212)","aquamarine2":"rgb(118, 238, 198)","aquamarine3":"rgb(102, 205, 170)","aquamarine4":"rgb(69, 139, 116)","azure":"rgb(240, 255, 255)","azure1":"rgb(240, 255, 255)","azure2":"rgb(224, 238, 238)","azure3":"rgb(193, 205, 205)","azure4":"rgb(131, 139, 139)","beige":"rgb(245, 245, 220)","bisque":"rgb(255, 228, 196)","bisque1":"rgb(255, 228, 196)","bisque2":"rgb(238, 213, 183)","bisque3":"rgb(205, 183, 158)","bisque4":"rgb(139, 125, 107)","black":"rgb(0, 0, 0)","blanchedalmond":"rgb(255, 235, 205)","blue":"rgb(0, 0, 255)","blue1":"rgb(0, 0, 255)","blue2":"rgb(0, 0, 238)","blue3":"rgb(0, 0, 205)","blue4":"rgb(0, 0, 139)","blueviolet":"rgb(138, 43, 226)","brown":"rgb(165, 42, 42)","brown1":"rgb(255, 64, 64)","brown2":"rgb(238, 59, 59)","brown3":"rgb(205, 51, 51)","brown4":"rgb(139, 35, 35)","burlywood":"rgb(222, 184, 135)","burlywood1":"rgb(255, 211, 155)","burlywood2":"rgb(238, 197, 145)","burlywood3":"rgb(205, 170, 125)","burlywood4":"rgb(139, 115, 85)","cadetblue":"rgb(95, 158, 160)","cadetblue1":"rgb(152, 245, 255)","cadetblue2":"rgb(142, 229, 238)","cadetblue3":"rgb(122, 197, 205)","cadetblue4":"rgb(83, 134, 139)","chartreuse":"rgb(127, 255, 0)","chartreuse1":"rgb(127, 255, 0)","chartreuse2":"rgb(118, 238, 0)","chartreuse3":"rgb(102, 205, 0)","chartreuse4":"rgb(69, 139, 0)","chocolate":"rgb(210, 105, 30)","chocolate1":"rgb(255, 127, 36)","chocolate2":"rgb(238, 118, 33)","chocolate3":"rgb(205, 102, 29)","chocolate4":"rgb(139, 69, 19)","coral":"rgb(255, 127, 80)","coral1":"rgb(255, 114, 86)","coral2":"rgb(238, 106, 80)","coral3":"rgb(205, 91, 69)","coral4":"rgb(139, 62, 47)","cornflowerblue":"rgb(100, 149, 237)","cornsilk":"rgb(255, 248, 220)","cornsilk1":"rgb(255, 248, 220)","cornsilk2":"rgb(238, 232, 205)","cornsilk3":"rgb(205, 200, 177)","cornsilk4":"rgb(139, 136, 120)","cyan":"rgb(0, 255, 255)","cyan1":"rgb(0, 255, 255)","cyan2":"rgb(0, 238, 238)","cyan3":"rgb(0, 205, 205)","cyan4":"rgb(0, 139, 139)","darkblue":"rgb(0, 0, 139)","darkcyan":"rgb(0, 139, 139)","darkgoldenrod":"rgb(184, 134, 11)","darkgoldenrod1":"rgb(255, 185, 15)","darkgoldenrod2":"rgb(238, 173, 14)","darkgoldenrod3":"rgb(205, 149, 12)","darkgoldenrod4":"rgb(139, 101, 8)","darkgray":"rgb(169, 169, 169)","darkgreen":"rgb(0, 100, 0)","darkgrey":"rgb(169, 169, 169)","darkkhaki":"rgb(189, 183, 107)","darkmagenta":"rgb(139, 0, 139)","darkolivegreen":"rgb(85, 107, 47)","darkolivegreen1":"rgb(202, 255, 112)","darkolivegreen2":"rgb(188, 238, 104)","darkolivegreen3":"rgb(162, 205, 90)","darkolivegreen4":"rgb(110, 139, 61)","darkorange":"rgb(255, 140, 0)","darkorange1":"rgb(255, 127, 0)","darkorange2":"rgb(238, 118, 0)","darkorange3":"rgb(205, 102, 0)","darkorange4":"rgb(139, 69, 0)","darkorchid":"rgb(153, 50, 204)","darkorchid1":"rgb(191, 62, 255)","darkorchid2":"rgb(178, 58, 238)","darkorchid3":"rgb(154, 50, 205)","darkorchid4":"rgb(104, 34, 139)","darkred":"rgb(139, 0, 0)","darksalmon":"rgb(233, 150, 122)","darkseagreen":"rgb(143, 188, 143)","darkseagreen1":"rgb(193, 255, 193)","darkseagreen2":"rgb(180, 238, 180)","darkseagreen3":"rgb(155, 205, 155)","darkseagreen4":"rgb(105, 139, 105)","darkslateblue":"rgb(72, 61, 139)","darkslategray":"rgb(47, 79, 79)","darkslategray1":"rgb(151, 255, 255)","darkslategray2":"rgb(141, 238, 238)","darkslategray3":"rgb(121, 205, 205)","darkslategray4":"rgb(82, 139, 139)","darkslategrey":"rgb(47, 79, 79)","darkturquoise":"rgb(0, 206, 209)","darkviolet":"rgb(148, 0, 211)","debianred":"rgb(215, 7, 81)","deeppink":"rgb(255, 20, 147)","deeppink1":"rgb(255, 20, 147)","deeppink2":"rgb(238, 18, 137)","deeppink3":"rgb(205, 16, 118)","deeppink4":"rgb(139, 10, 80)","deepskyblue":"rgb(0, 191, 255)","deepskyblue1":"rgb(0, 191, 255)","deepskyblue2":"rgb(0, 178, 238)","deepskyblue3":"rgb(0, 154, 205)","deepskyblue4":"rgb(0, 104, 139)","dimgray":"rgb(105, 105, 105)","dimgrey":"rgb(105, 105, 105)","dodgerblue":"rgb(30, 144, 255)","dodgerblue1":"rgb(30, 144, 255)","dodgerblue2":"rgb(28, 134, 238)","dodgerblue3":"rgb(24, 116, 205)","dodgerblue4":"rgb(16, 78, 139)","firebrick":"rgb(178, 34, 34)","firebrick1":"rgb(255, 48, 48)","firebrick2":"rgb(238, 44, 44)","firebrick3":"rgb(205, 38, 38)","firebrick4":"rgb(139, 26, 26)","floralwhite":"rgb(255, 250, 240)","forestgreen":"rgb(34, 139, 34)","gainsboro":"rgb(220, 220, 220)","ghostwhite":"rgb(248, 248, 255)","gold":"rgb(255, 215, 0)","gold1":"rgb(255, 215, 0)","gold2":"rgb(238, 201, 0)","gold3":"rgb(205, 173, 0)","gold4":"rgb(139, 117, 0)","goldenrod":"rgb(218, 165, 32)","goldenrod1":"rgb(255, 193, 37)","goldenrod2":"rgb(238, 180, 34)","goldenrod3":"rgb(205, 155, 29)","goldenrod4":"rgb(139, 105, 20)","gray":"rgb(190, 190, 190)","gray0":"rgb(0, 0, 0)","gray1":"rgb(3, 3, 3)","gray10":"rgb(26, 26, 26)","gray100":"rgb(255, 255, 255)","gray11":"rgb(28, 28, 28)","gray12":"rgb(31, 31, 31)","gray13":"rgb(33, 33, 33)","gray14":"rgb(36, 36, 36)","gray15":"rgb(38, 38, 38)","gray16":"rgb(41, 41, 41)","gray17":"rgb(43, 43, 43)","gray18":"rgb(46, 46, 46)","gray19":"rgb(48, 48, 48)","gray2":"rgb(5, 5, 5)","gray20":"rgb(51, 51, 51)","gray21":"rgb(54, 54, 54)","gray22":"rgb(56, 56, 56)","gray23":"rgb(59, 59, 59)","gray24":"rgb(61, 61, 61)","gray25":"rgb(64, 64, 64)","gray26":"rgb(66, 66, 66)","gray27":"rgb(69, 69, 69)","gray28":"rgb(71, 71, 71)","gray29":"rgb(74, 74, 74)","gray3":"rgb(8, 8, 8)","gray30":"rgb(77, 77, 77)","gray31":"rgb(79, 79, 79)","gray32":"rgb(82, 82, 82)","gray33":"rgb(84, 84, 84)","gray34":"rgb(87, 87, 87)","gray35":"rgb(89, 89, 89)","gray36":"rgb(92, 92, 92)","gray37":"rgb(94, 94, 94)","gray38":"rgb(97, 97, 97)","gray39":"rgb(99, 99, 99)","gray4":"rgb(10, 10, 10)","gray40":"rgb(102, 102, 102)","gray41":"rgb(105, 105, 105)","gray42":"rgb(107, 107, 107)","gray43":"rgb(110, 110, 110)","gray44":"rgb(112, 112, 112)","gray45":"rgb(115, 115, 115)","gray46":"rgb(117, 117, 117)","gray47":"rgb(120, 120, 120)","gray48":"rgb(122, 122, 122)","gray49":"rgb(125, 125, 125)","gray5":"rgb(13, 13, 13)","gray50":"rgb(127, 127, 127)","gray51":"rgb(130, 130, 130)","gray52":"rgb(133, 133, 133)","gray53":"rgb(135, 135, 135)","gray54":"rgb(138, 138, 138)","gray55":"rgb(140, 140, 140)","gray56":"rgb(143, 143, 143)","gray57":"rgb(145, 145, 145)","gray58":"rgb(148, 148, 148)","gray59":"rgb(150, 150, 150)","gray6":"rgb(15, 15, 15)","gray60":"rgb(153, 153, 153)","gray61":"rgb(156, 156, 156)","gray62":"rgb(158, 158, 158)","gray63":"rgb(161, 161, 161)","gray64":"rgb(163, 163, 163)","gray65":"rgb(166, 166, 166)","gray66":"rgb(168, 168, 168)","gray67":"rgb(171, 171, 171)","gray68":"rgb(173, 173, 173)","gray69":"rgb(176, 176, 176)","gray7":"rgb(18, 18, 18)","gray70":"rgb(179, 179, 179)","gray71":"rgb(181, 181, 181)","gray72":"rgb(184, 184, 184)","gray73":"rgb(186, 186, 186)","gray74":"rgb(189, 189, 189)","gray75":"rgb(191, 191, 191)","gray76":"rgb(194, 194, 194)","gray77":"rgb(196, 196, 196)","gray78":"rgb(199, 199, 199)","gray79":"rgb(201, 201, 201)","gray8":"rgb(20, 20, 20)","gray80":"rgb(204, 204, 204)","gray81":"rgb(207, 207, 207)","gray82":"rgb(209, 209, 209)","gray83":"rgb(212, 212, 212)","gray84":"rgb(214, 214, 214)","gray85":"rgb(217, 217, 217)","gray86":"rgb(219, 219, 219)","gray87":"rgb(222, 222, 222)","gray88":"rgb(224, 224, 224)","gray89":"rgb(227, 227, 227)","gray9":"rgb(23, 23, 23)","gray90":"rgb(229, 229, 229)","gray91":"rgb(232, 232, 232)","gray92":"rgb(235, 235, 235)","gray93":"rgb(237, 237, 237)","gray94":"rgb(240, 240, 240)","gray95":"rgb(242, 242, 242)","gray96":"rgb(245, 245, 245)","gray97":"rgb(247, 247, 247)","gray98":"rgb(250, 250, 250)","gray99":"rgb(252, 252, 252)","green":"rgb(0, 255, 0)","green1":"rgb(0, 255, 0)","green2":"rgb(0, 238, 0)","green3":"rgb(0, 205, 0)","green4":"rgb(0, 139, 0)","greenyellow":"rgb(173, 255, 47)","grey":"rgb(190, 190, 190)","grey0":"rgb(0, 0, 0)","grey1":"rgb(3, 3, 3)","grey10":"rgb(26, 26, 26)","grey100":"rgb(255, 255, 255)","grey11":"rgb(28, 28, 28)","grey12":"rgb(31, 31, 31)","grey13":"rgb(33, 33, 33)","grey14":"rgb(36, 36, 36)","grey15":"rgb(38, 38, 38)","grey16":"rgb(41, 41, 41)","grey17":"rgb(43, 43, 43)","grey18":"rgb(46, 46, 46)","grey19":"rgb(48, 48, 48)","grey2":"rgb(5, 5, 5)","grey20":"rgb(51, 51, 51)","grey21":"rgb(54, 54, 54)","grey22":"rgb(56, 56, 56)","grey23":"rgb(59, 59, 59)","grey24":"rgb(61, 61, 61)","grey25":"rgb(64, 64, 64)","grey26":"rgb(66, 66, 66)","grey27":"rgb(69, 69, 69)","grey28":"rgb(71, 71, 71)","grey29":"rgb(74, 74, 74)","grey3":"rgb(8, 8, 8)","grey30":"rgb(77, 77, 77)","grey31":"rgb(79, 79, 79)","grey32":"rgb(82, 82, 82)","grey33":"rgb(84, 84, 84)","grey34":"rgb(87, 87, 87)","grey35":"rgb(89, 89, 89)","grey36":"rgb(92, 92, 92)","grey37":"rgb(94, 94, 94)","grey38":"rgb(97, 97, 97)","grey39":"rgb(99, 99, 99)","grey4":"rgb(10, 10, 10)","grey40":"rgb(102, 102, 102)","grey41":"rgb(105, 105, 105)","grey42":"rgb(107, 107, 107)","grey43":"rgb(110, 110, 110)","grey44":"rgb(112, 112, 112)","grey45":"rgb(115, 115, 115)","grey46":"rgb(117, 117, 117)","grey47":"rgb(120, 120, 120)","grey48":"rgb(122, 122, 122)","grey49":"rgb(125, 125, 125)","grey5":"rgb(13, 13, 13)","grey50":"rgb(127, 127, 127)","grey51":"rgb(130, 130, 130)","grey52":"rgb(133, 133, 133)","grey53":"rgb(135, 135, 135)","grey54":"rgb(138, 138, 138)","grey55":"rgb(140, 140, 140)","grey56":"rgb(143, 143, 143)","grey57":"rgb(145, 145, 145)","grey58":"rgb(148, 148, 148)","grey59":"rgb(150, 150, 150)","grey6":"rgb(15, 15, 15)","grey60":"rgb(153, 153, 153)","grey61":"rgb(156, 156, 156)","grey62":"rgb(158, 158, 158)","grey63":"rgb(161, 161, 161)","grey64":"rgb(163, 163, 163)","grey65":"rgb(166, 166, 166)","grey66":"rgb(168, 168, 168)","grey67":"rgb(171, 171, 171)","grey68":"rgb(173, 173, 173)","grey69":"rgb(176, 176, 176)","grey7":"rgb(18, 18, 18)","grey70":"rgb(179, 179, 179)","grey71":"rgb(181, 181, 181)","grey72":"rgb(184, 184, 184)","grey73":"rgb(186, 186, 186)","grey74":"rgb(189, 189, 189)","grey75":"rgb(191, 191, 191)","grey76":"rgb(194, 194, 194)","grey77":"rgb(196, 196, 196)","grey78":"rgb(199, 199, 199)","grey79":"rgb(201, 201, 201)","grey8":"rgb(20, 20, 20)","grey80":"rgb(204, 204, 204)","grey81":"rgb(207, 207, 207)","grey82":"rgb(209, 209, 209)","grey83":"rgb(212, 212, 212)","grey84":"rgb(214, 214, 214)","grey85":"rgb(217, 217, 217)","grey86":"rgb(219, 219, 219)","grey87":"rgb(222, 222, 222)","grey88":"rgb(224, 224, 224)","grey89":"rgb(227, 227, 227)","grey9":"rgb(23, 23, 23)","grey90":"rgb(229, 229, 229)","grey91":"rgb(232, 232, 232)","grey92":"rgb(235, 235, 235)","grey93":"rgb(237, 237, 237)","grey94":"rgb(240, 240, 240)","grey95":"rgb(242, 242, 242)","grey96":"rgb(245, 245, 245)","grey97":"rgb(247, 247, 247)","grey98":"rgb(250, 250, 250)","grey99":"rgb(252, 252, 252)","honeydew":"rgb(240, 255, 240)","honeydew1":"rgb(240, 255, 240)","honeydew2":"rgb(224, 238, 224)","honeydew3":"rgb(193, 205, 193)","honeydew4":"rgb(131, 139, 131)","hotpink":"rgb(255, 105, 180)","hotpink1":"rgb(255, 110, 180)","hotpink2":"rgb(238, 106, 167)","hotpink3":"rgb(205, 96, 144)","hotpink4":"rgb(139, 58, 98)","indianred":"rgb(205, 92, 92)","indianred1":"rgb(255, 106, 106)","indianred2":"rgb(238, 99, 99)","indianred3":"rgb(205, 85, 85)","indianred4":"rgb(139, 58, 58)","ivory":"rgb(255, 255, 240)","ivory1":"rgb(255, 255, 240)","ivory2":"rgb(238, 238, 224)","ivory3":"rgb(205, 205, 193)","ivory4":"rgb(139, 139, 131)","khaki":"rgb(240, 230, 140)","khaki1":"rgb(255, 246, 143)","khaki2":"rgb(238, 230, 133)","khaki3":"rgb(205, 198, 115)","khaki4":"rgb(139, 134, 78)","lavender":"rgb(230, 230, 250)","lavenderblush":"rgb(255, 240, 245)","lavenderblush1":"rgb(255, 240, 245)","lavenderblush2":"rgb(238, 224, 229)","lavenderblush3":"rgb(205, 193, 197)","lavenderblush4":"rgb(139, 131, 134)","lawngreen":"rgb(124, 252, 0)","lemonchiffon":"rgb(255, 250, 205)","lemonchiffon1":"rgb(255, 250, 205)","lemonchiffon2":"rgb(238, 233, 191)","lemonchiffon3":"rgb(205, 201, 165)","lemonchiffon4":"rgb(139, 137, 112)","lightblue":"rgb(173, 216, 230)","lightblue1":"rgb(191, 239, 255)","lightblue2":"rgb(178, 223, 238)","lightblue3":"rgb(154, 192, 205)","lightblue4":"rgb(104, 131, 139)","lightcoral":"rgb(240, 128, 128)","lightcyan":"rgb(224, 255, 255)","lightcyan1":"rgb(224, 255, 255)","lightcyan2":"rgb(209, 238, 238)","lightcyan3":"rgb(180, 205, 205)","lightcyan4":"rgb(122, 139, 139)","lightgoldenrod":"rgb(238, 221, 130)","lightgoldenrod1":"rgb(255, 236, 139)","lightgoldenrod2":"rgb(238, 220, 130)","lightgoldenrod3":"rgb(205, 190, 112)","lightgoldenrod4":"rgb(139, 129, 76)","lightgoldenrodyellow":"rgb(250, 250, 210)","lightgray":"rgb(211, 211, 211)","lightgreen":"rgb(144, 238, 144)","lightgrey":"rgb(211, 211, 211)","lightpink":"rgb(255, 182, 193)","lightpink1":"rgb(255, 174, 185)","lightpink2":"rgb(238, 162, 173)","lightpink3":"rgb(205, 140, 149)","lightpink4":"rgb(139, 95, 101)","lightsalmon":"rgb(255, 160, 122)","lightsalmon1":"rgb(255, 160, 122)","lightsalmon2":"rgb(238, 149, 114)","lightsalmon3":"rgb(205, 129, 98)","lightsalmon4":"rgb(139, 87, 66)","lightseagreen":"rgb(32, 178, 170)","lightskyblue":"rgb(135, 206, 250)","lightskyblue1":"rgb(176, 226, 255)","lightskyblue2":"rgb(164, 211, 238)","lightskyblue3":"rgb(141, 182, 205)","lightskyblue4":"rgb(96, 123, 139)","lightslateblue":"rgb(132, 112, 255)","lightslategray":"rgb(119, 136, 153)","lightslategrey":"rgb(119, 136, 153)","lightsteelblue":"rgb(176, 196, 222)","lightsteelblue1":"rgb(202, 225, 255)","lightsteelblue2":"rgb(188, 210, 238)","lightsteelblue3":"rgb(162, 181, 205)","lightsteelblue4":"rgb(110, 123, 139)","lightyellow":"rgb(255, 255, 224)","lightyellow1":"rgb(255, 255, 224)","lightyellow2":"rgb(238, 238, 209)","lightyellow3":"rgb(205, 205, 180)","lightyellow4":"rgb(139, 139, 122)","limegreen":"rgb(50, 205, 50)","linen":"rgb(250, 240, 230)","magenta":"rgb(255, 0, 255)","magenta1":"rgb(255, 0, 255)","magenta2":"rgb(238, 0, 238)","magenta3":"rgb(205, 0, 205)","magenta4":"rgb(139, 0, 139)","maroon":"rgb(176, 48, 96)","maroon1":"rgb(255, 52, 179)","maroon2":"rgb(238, 48, 167)","maroon3":"rgb(205, 41, 144)","maroon4":"rgb(139, 28, 98)","mediumaquamarine":"rgb(102, 205, 170)","mediumblue":"rgb(0, 0, 205)","mediumorchid":"rgb(186, 85, 211)","mediumorchid1":"rgb(224, 102, 255)","mediumorchid2":"rgb(209, 95, 238)","mediumorchid3":"rgb(180, 82, 205)","mediumorchid4":"rgb(122, 55, 139)","mediumpurple":"rgb(147, 112, 219)","mediumpurple1":"rgb(171, 130, 255)","mediumpurple2":"rgb(159, 121, 238)","mediumpurple3":"rgb(137, 104, 205)","mediumpurple4":"rgb(93, 71, 139)","mediumseagreen":"rgb(60, 179, 113)","mediumslateblue":"rgb(123, 104, 238)","mediumspringgreen":"rgb(0, 250, 154)","mediumturquoise":"rgb(72, 209, 204)","mediumvioletred":"rgb(199, 21, 133)","midnightblue":"rgb(25, 25, 112)","mintcream":"rgb(245, 255, 250)","mistyrose":"rgb(255, 228, 225)","mistyrose1":"rgb(255, 228, 225)","mistyrose2":"rgb(238, 213, 210)","mistyrose3":"rgb(205, 183, 181)","mistyrose4":"rgb(139, 125, 123)","moccasin":"rgb(255, 228, 181)","navajowhite":"rgb(255, 222, 173)","navajowhite1":"rgb(255, 222, 173)","navajowhite2":"rgb(238, 207, 161)","navajowhite3":"rgb(205, 179, 139)","navajowhite4":"rgb(139, 121, 94)","navy":"rgb(0, 0, 128)","navyblue":"rgb(0, 0, 128)","oldlace":"rgb(253, 245, 230)","olivedrab":"rgb(107, 142, 35)","olivedrab1":"rgb(192, 255, 62)","olivedrab2":"rgb(179, 238, 58)","olivedrab3":"rgb(154, 205, 50)","olivedrab4":"rgb(105, 139, 34)","orange":"rgb(255, 165, 0)","orange1":"rgb(255, 165, 0)","orange2":"rgb(238, 154, 0)","orange3":"rgb(205, 133, 0)","orange4":"rgb(139, 90, 0)","orangered":"rgb(255, 69, 0)","orangered1":"rgb(255, 69, 0)","orangered2":"rgb(238, 64, 0)","orangered3":"rgb(205, 55, 0)","orangered4":"rgb(139, 37, 0)","orchid":"rgb(218, 112, 214)","orchid1":"rgb(255, 131, 250)","orchid2":"rgb(238, 122, 233)","orchid3":"rgb(205, 105, 201)","orchid4":"rgb(139, 71, 137)","palegoldenrod":"rgb(238, 232, 170)","palegreen":"rgb(152, 251, 152)","palegreen1":"rgb(154, 255, 154)","palegreen2":"rgb(144, 238, 144)","palegreen3":"rgb(124, 205, 124)","palegreen4":"rgb(84, 139, 84)","paleturquoise":"rgb(175, 238, 238)","paleturquoise1":"rgb(187, 255, 255)","paleturquoise2":"rgb(174, 238, 238)","paleturquoise3":"rgb(150, 205, 205)","paleturquoise4":"rgb(102, 139, 139)","palevioletred":"rgb(219, 112, 147)","palevioletred1":"rgb(255, 130, 171)","palevioletred2":"rgb(238, 121, 159)","palevioletred3":"rgb(205, 104, 137)","palevioletred4":"rgb(139, 71, 93)","papayawhip":"rgb(255, 239, 213)","peachpuff":"rgb(255, 218, 185)","peachpuff1":"rgb(255, 218, 185)","peachpuff2":"rgb(238, 203, 173)","peachpuff3":"rgb(205, 175, 149)","peachpuff4":"rgb(139, 119, 101)","peru":"rgb(205, 133, 63)","pink":"rgb(255, 192, 203)","pink1":"rgb(255, 181, 197)","pink2":"rgb(238, 169, 184)","pink3":"rgb(205, 145, 158)","pink4":"rgb(139, 99, 108)","plum":"rgb(221, 160, 221)","plum1":"rgb(255, 187, 255)","plum2":"rgb(238, 174, 238)","plum3":"rgb(205, 150, 205)","plum4":"rgb(139, 102, 139)","powderblue":"rgb(176, 224, 230)","purple":"rgb(160, 32, 240)","purple1":"rgb(155, 48, 255)","purple2":"rgb(145, 44, 238)","purple3":"rgb(125, 38, 205)","purple4":"rgb(85, 26, 139)","red":"rgb(255, 0, 0)","red1":"rgb(255, 0, 0)","red2":"rgb(238, 0, 0)","red3":"rgb(205, 0, 0)","red4":"rgb(139, 0, 0)","rosybrown":"rgb(188, 143, 143)","rosybrown1":"rgb(255, 193, 193)","rosybrown2":"rgb(238, 180, 180)","rosybrown3":"rgb(205, 155, 155)","rosybrown4":"rgb(139, 105, 105)","royalblue":"rgb(65, 105, 225)","royalblue1":"rgb(72, 118, 255)","royalblue2":"rgb(67, 110, 238)","royalblue3":"rgb(58, 95, 205)","royalblue4":"rgb(39, 64, 139)","saddlebrown":"rgb(139, 69, 19)","salmon":"rgb(250, 128, 114)","salmon1":"rgb(255, 140, 105)","salmon2":"rgb(238, 130, 98)","salmon3":"rgb(205, 112, 84)","salmon4":"rgb(139, 76, 57)","sandybrown":"rgb(244, 164, 96)","seagreen":"rgb(46, 139, 87)","seagreen1":"rgb(84, 255, 159)","seagreen2":"rgb(78, 238, 148)","seagreen3":"rgb(67, 205, 128)","seagreen4":"rgb(46, 139, 87)","seashell":"rgb(255, 245, 238)","seashell1":"rgb(255, 245, 238)","seashell2":"rgb(238, 229, 222)","seashell3":"rgb(205, 197, 191)","seashell4":"rgb(139, 134, 130)","sienna":"rgb(160, 82, 45)","sienna1":"rgb(255, 130, 71)","sienna2":"rgb(238, 121, 66)","sienna3":"rgb(205, 104, 57)","sienna4":"rgb(139, 71, 38)","skyblue":"rgb(135, 206, 235)","skyblue1":"rgb(135, 206, 255)","skyblue2":"rgb(126, 192, 238)","skyblue3":"rgb(108, 166, 205)","skyblue4":"rgb(74, 112, 139)","slateblue":"rgb(106, 90, 205)","slateblue1":"rgb(131, 111, 255)","slateblue2":"rgb(122, 103, 238)","slateblue3":"rgb(105, 89, 205)","slateblue4":"rgb(71, 60, 139)","slategray":"rgb(112, 128, 144)","slategray1":"rgb(198, 226, 255)","slategray2":"rgb(185, 211, 238)","slategray3":"rgb(159, 182, 205)","slategray4":"rgb(108, 123, 139)","slategrey":"rgb(112, 128, 144)","snow":"rgb(255, 250, 250)","snow1":"rgb(255, 250, 250)","snow2":"rgb(238, 233, 233)","snow3":"rgb(205, 201, 201)","snow4":"rgb(139, 137, 137)","springgreen":"rgb(0, 255, 127)","springgreen1":"rgb(0, 255, 127)","springgreen2":"rgb(0, 238, 118)","springgreen3":"rgb(0, 205, 102)","springgreen4":"rgb(0, 139, 69)","steelblue":"rgb(70, 130, 180)","steelblue1":"rgb(99, 184, 255)","steelblue2":"rgb(92, 172, 238)","steelblue3":"rgb(79, 148, 205)","steelblue4":"rgb(54, 100, 139)","tan":"rgb(210, 180, 140)","tan1":"rgb(255, 165, 79)","tan2":"rgb(238, 154, 73)","tan3":"rgb(205, 133, 63)","tan4":"rgb(139, 90, 43)","thistle":"rgb(216, 191, 216)","thistle1":"rgb(255, 225, 255)","thistle2":"rgb(238, 210, 238)","thistle3":"rgb(205, 181, 205)","thistle4":"rgb(139, 123, 139)","tomato":"rgb(255, 99, 71)","tomato1":"rgb(255, 99, 71)","tomato2":"rgb(238, 92, 66)","tomato3":"rgb(205, 79, 57)","tomato4":"rgb(139, 54, 38)","turquoise":"rgb(64, 224, 208)","turquoise1":"rgb(0, 245, 255)","turquoise2":"rgb(0, 229, 238)","turquoise3":"rgb(0, 197, 205)","turquoise4":"rgb(0, 134, 139)","violet":"rgb(238, 130, 238)","violetred":"rgb(208, 32, 144)","violetred1":"rgb(255, 62, 150)","violetred2":"rgb(238, 58, 140)","violetred3":"rgb(205, 50, 120)","violetred4":"rgb(139, 34, 82)","wheat":"rgb(245, 222, 179)","wheat1":"rgb(255, 231, 186)","wheat2":"rgb(238, 216, 174)","wheat3":"rgb(205, 186, 150)","wheat4":"rgb(139, 126, 102)","white":"rgb(255, 255, 255)","whitesmoke":"rgb(245, 245, 245)","yellow":"rgb(255, 255, 0)","yellow1":"rgb(255, 255, 0)","yellow2":"rgb(238, 238, 0)","yellow3":"rgb(205, 205, 0)","yellow4":"rgb(139, 139, 0)","yellowgreen":"rgb(154, 205, 50)"};'use strict';lib.f={};lib.f.createEnum=function(name){return new String(name)};lib.f.replaceVars=function(str,vars){return str.replace(/%([a-z]*)\(([^\)]+)\)/gi,function(match,fn,varname){if(typeof vars[varname]=='undefined') + throw 'Unknown variable: '+varname;var rv=vars[varname];if(fn in lib.f.replaceVars.functions){rv=lib.f.replaceVars.functions[fn](rv)}else if(fn){throw 'Unknown escape function: '+fn} + return rv})};lib.f.replaceVars.functions={encodeURI:encodeURI,encodeURIComponent:encodeURIComponent,escapeHTML:function(str){var map={'<':'<','>':'>','&':'&','"':'"',"'":'''};return str.replace(/[<>&\"\']/g,(m)=>map[m])}};lib.f.getAcceptLanguages=function(callback){if(lib.f.getAcceptLanguages.chromeSupported()){chrome.i18n.getAcceptLanguages(callback)}else{setTimeout(function(){callback([navigator.language.replace(/-/g,'_')])},0)}};lib.f.getAcceptLanguages.chromeSupported=function(){return window.chrome&&chrome.i18n};lib.f.parseQuery=function(queryString){if(queryString.startsWith('?')) + queryString=queryString.substr(1);var rv={};var pairs=queryString.split('&');for(var i=0;imax) + return max;return v};lib.f.zpad=function(number,length){return String(number).padStart(length,'0')};lib.f.getWhitespace=function(length){if(length<=0) + return'';var f=this.getWhitespace;if(!f.whitespace) + f.whitespace=' ';while(length>f.whitespace.length){f.whitespace+=f.whitespace} + return f.whitespace.substr(0,length)};lib.f.alarm=function(callback,opt_ms){var ms=opt_ms||5*1000;var stack=lib.f.getStack(1);return(function(){var timeout=setTimeout(function(){var name=(typeof callback=='string')?name:callback.name;name=name?(': '+name):'';console.warn('lib.f.alarm: timeout expired: '+(ms/1000)+'s'+name);console.log(stack);timeout=null},ms);var wrapperGenerator=function(callback){return function(){if(timeout){clearTimeout(timeout);timeout=null} + return callback.apply(null,arguments)}};if(typeof callback=='string') + return wrapperGenerator;return wrapperGenerator(callback)})()};lib.f.getStack=function(opt_ignoreFrames){var ignoreFrames=opt_ignoreFrames?opt_ignoreFrames+2:2;var stackArray;try{throw new Error()}catch(ex){stackArray=ex.stack.split('\n')} + var stackObject={};for(var i=ignoreFrames;iinfo.os);if(window.chrome&&chrome.runtime&&chrome.runtime.getPlatformInfo){return new Promise((resolve,reject)=>chrome.runtime.getPlatformInfo((info)=>resolve(info.os)))} + if(window.navigator&&navigator.userAgent){const ua=navigator.userAgent;if(ua.includes('Mac OS X')) + return Promise.resolve('mac');else if(ua.includes('CrOS')) + return Promise.resolve('cros');else if(ua.includes('Linux')) + return Promise.resolve('linux');else if(ua.includes('Android')) + return Promise.resolve('android');else if(ua.includes('Windows')) + return Promise.resolve('windows')} + return Promise.reject(null)};lib.f.getChromeMilestone=function(){if(window.navigator&&navigator.userAgent){const ary=navigator.userAgent.match(/\sChrome\/(\d+)/);if(ary) + return parseInt(ary[1])} + return NaN};lib.f.lastError=function(defaultMsg=null){let lastError;if(window.browser&&browser.runtime) + lastError=browser.runtime.lastError;else if(window.chrome&&chrome.runtime) + lastError=chrome.runtime.lastError;if(lastError&&lastError.message) + return lastError.message;else return defaultMsg};'use strict';lib.MessageManager=function(languages){this.languages_=languages.map((el)=>el.replace(/-/g,'_'));if(this.languages_.indexOf('en')==-1) + this.languages_.unshift('en');this.messages={}};lib.MessageManager.prototype.addMessages=function(defs){for(var key in defs){var def=defs[key];if(!def.placeholders){this.messages[key]=def.message}else{this.messages[key]=def.message.replace(/\$([a-z][^\s\$]+)\$/ig,function(m,name){return defs[key].placeholders[name.toLowerCase()].content})}}};lib.MessageManager.prototype.findAndLoadMessages=function(pattern,onComplete){var languages=this.languages_.concat();var loaded=[];var failed=[];function onLanguageComplete(state){if(state){loaded=languages.shift()}else{failed=languages.shift()} + if(languages.length){tryNextLanguage()}else{onComplete(loaded,failed)}} + var tryNextLanguage=function(){this.loadMessages(this.replaceReferences(pattern,languages),onLanguageComplete.bind(this,!0),onLanguageComplete.bind(this,!1))}.bind(this);tryNextLanguage()};lib.MessageManager.prototype.loadMessages=function(url,onSuccess,opt_onError){var xhr=new XMLHttpRequest();xhr.onload=()=>{this.addMessages(JSON.parse(xhr.responseText));onSuccess()};if(opt_onError) + xhr.onerror=()=>opt_onError(xhr);xhr.open('GET',url);xhr.send()};lib.MessageManager.replaceReferences=function(msg,args){return msg.replace(/\$(\d+)/g,function(m,index){return args[index-1]})};lib.MessageManager.prototype.replaceReferences=lib.MessageManager.replaceReferences;lib.MessageManager.prototype.get=function(msgname,opt_args,opt_default){var message;if(msgname in this.messages){message=this.messages[msgname]}else{if(window.chrome&&window.chrome.i18n) + message=chrome.i18n.getMessage(msgname);if(!message){console.warn('Unknown message: '+msgname);message=opt_default===undefined?msgname:opt_default;this.messages[msgname]=message}} + if(!opt_args) + return message;if(!(opt_args instanceof Array)) + opt_args=[opt_args];return this.replaceReferences(message,opt_args)};lib.MessageManager.prototype.processI18nAttributes=function(dom){var nodes=dom.querySelectorAll('[i18n]');for(var i=0;istr.replace(/-/g,'_').toUpperCase();var i18n=node.getAttribute('i18n');if(!i18n) + return;try{i18n=JSON.parse(i18n)}catch(ex){console.error('Can\'t parse '+node.tagName+'#'+node.id+': '+i18n);throw ex} + for(var key in i18n){var attr=key;var msgname=i18n[key];if(msgname.startsWith('=')){key=msgname.substr(1);msgname=i18n[key]} + if(msgname.startsWith('$')) + msgname=thunk(node.getAttribute(msgname.substr(1))+'_'+key);var msg=this.get(msgname);if(attr=='_') + node.textContent=msg;else node.setAttribute(attr,msg)}};'use strict';lib.PreferenceManager=function(storage,opt_prefix){this.storage=storage;this.storageObserver_=this.onStorageChange_.bind(this);this.isActive_=!1;this.activate();this.trace=!1;var prefix=opt_prefix||'/';if(!prefix.endsWith('/')) + prefix+='/';this.prefix=prefix;this.prefRecords_={};this.globalObservers_=[];this.childFactories_={};this.childLists_={}};lib.PreferenceManager.prototype.DEFAULT_VALUE=lib.f.createEnum('DEFAULT');lib.PreferenceManager.Record=function(name,defaultValue){this.name=name;this.defaultValue=defaultValue;this.currentValue=this.DEFAULT_VALUE;this.observers=[]};lib.PreferenceManager.Record.prototype.DEFAULT_VALUE=lib.PreferenceManager.prototype.DEFAULT_VALUE;lib.PreferenceManager.Record.prototype.addObserver=function(observer){this.observers.push(observer)};lib.PreferenceManager.Record.prototype.removeObserver=function(observer){var i=this.observers.indexOf(observer);if(i>=0) + this.observers.splice(i,1)};lib.PreferenceManager.Record.prototype.get=function(){if(this.currentValue===this.DEFAULT_VALUE){if(/^(string|number)$/.test(typeof this.defaultValue)) + return this.defaultValue;if(typeof this.defaultValue=='object'){return JSON.parse(JSON.stringify(this.defaultValue))} + return this.defaultValue} + return this.currentValue};lib.PreferenceManager.prototype.deactivate=function(){if(!this.isActive_) + throw new Error('Not activated');this.isActive_=!1;this.storage.removeObserver(this.storageObserver_)};lib.PreferenceManager.prototype.activate=function(){if(this.isActive_) + throw new Error('Already activated');this.isActive_=!0;this.storage.addObserver(this.storageObserver_)};lib.PreferenceManager.prototype.readStorage=function(opt_callback){var pendingChildren=0;function onChildComplete(){if(--pendingChildren==0&&opt_callback) + opt_callback()} + var keys=Object.keys(this.prefRecords_).map((el)=>this.prefix+el);if(this.trace) + console.log('Preferences read: '+this.prefix);this.storage.getItems(keys,function(items){var prefixLength=this.prefix.length;for(var key in items){var value=items[key];var name=key.substr(prefixLength);var needSync=(name in this.childLists_&&(JSON.stringify(value)!=JSON.stringify(this.prefRecords_[name].currentValue)));this.prefRecords_[name].currentValue=value;if(needSync){pendingChildren++;this.syncChildList(name,onChildComplete)}} + if(pendingChildren==0&&opt_callback) + setTimeout(opt_callback)}.bind(this))};lib.PreferenceManager.prototype.definePreference=function(name,value,opt_onChange){var record=this.prefRecords_[name];if(record){this.changeDefault(name,value)}else{record=this.prefRecords_[name]=new lib.PreferenceManager.Record(name,value)} + if(opt_onChange) + record.addObserver(opt_onChange)};lib.PreferenceManager.prototype.definePreferences=function(defaults){for(var i=0;i=0) + oldIds.splice(managerIndex,1);if(!this.childLists_[listName][id]){var childManager=this.childFactories_[listName](this,id);if(!childManager){console.warn('Unable to restore child: '+listName+': '+id);continue} + childManager.trace=this.trace;this.childLists_[listName][id]=childManager;pendingChildren++;childManager.readStorage(onChildStorage)}} + for(var i=0;i{if(--pendingWrites<1&&opt_onComplete) + opt_onComplete()};for(var name in json){if(name in this.childLists_){var childList=json[name];for(var i=0;i{const err=lib.f.lastError();if(err){if(err.indexOf('MAX_WRITE_OPERATIONS')){console.warn(`Will retry save of ${key} after exceeding quota: ${err}`);setTimeout(()=>this.setItem(key,value,onComplete),1000);return}else{console.error(`Unknown runtime error: ${err}`)}} + if(opt_callback) + opt_callback()};var obj={};obj[key]=value;this.storage_.set(obj,onComplete)};lib.Storage.Chrome.prototype.setItems=function(obj,opt_callback){this.storage_.set(obj,opt_callback)};lib.Storage.Chrome.prototype.removeItem=function(key,opt_callback){this.storage_.remove(key,opt_callback)};lib.Storage.Chrome.prototype.removeItems=function(keys,opt_callback){this.storage_.remove(keys,opt_callback)};'use strict';lib.Storage.Local=function(){this.observers_=[];this.storage_=window.localStorage;window.addEventListener('storage',this.onStorage_.bind(this))};lib.Storage.Local.prototype.onStorage_=function(e){if(e.storageArea!=this.storage_) + return;var prevValue=e.oldValue?JSON.parse(e.oldValue):e.oldValue;var curValue=e.newValue?JSON.parse(e.newValue):e.newValue;var o={};o[e.key]={oldValue:prevValue,newValue:curValue};for(var i=0;i=0;i--){var key=keys[i];var value=this.storage_.getItem(key);if(typeof value=='string'){try{rv[key]=JSON.parse(value)}catch(e){rv[key]=value}}else{keys.splice(i,1)}} + setTimeout(callback.bind(null,rv),0)};lib.Storage.Local.prototype.setItem=function(key,value,opt_callback){this.storage_.setItem(key,JSON.stringify(value));if(opt_callback) + setTimeout(opt_callback,0)};lib.Storage.Local.prototype.setItems=function(obj,opt_callback){for(var key in obj){this.storage_.setItem(key,JSON.stringify(obj[key]))} + if(opt_callback) + setTimeout(opt_callback,0)};lib.Storage.Local.prototype.removeItem=function(key,opt_callback){this.storage_.removeItem(key);if(opt_callback) + setTimeout(opt_callback,0)};lib.Storage.Local.prototype.removeItems=function(ary,opt_callback){for(var i=0;i=0;i--){var key=keys[i];var value=this.storage_[key];if(typeof value=='string'){try{rv[key]=JSON.parse(value)}catch(e){rv[key]=value}}else{keys.splice(i,1)}} + setTimeout(callback.bind(null,rv),0)};lib.Storage.Memory.prototype.setItem=function(key,value,opt_callback){var oldValue=this.storage_[key];this.storage_[key]=JSON.stringify(value);var e={};e[key]={oldValue:oldValue,newValue:value};setTimeout(function(){for(var i=0;i{let msgPrefix='';switch(level){case 'debug':case 'warn':case 'error':msgPrefix=level.toUpperCase()+': ';break} + const oLog=this.console_[level];this[level]=this.console_[level]=(...args)=>{if(this.save) + this.data+=this.prefix_+msgPrefix+args.join(' ')+'\n';oLog.apply(this.console_,args)}});['group','groupCollapsed'].forEach((group)=>{const oGroup=this.console_[group];this[group]=this.console_[group]=(label='')=>{oGroup(label);if(this.save) + this.data+=this.prefix_+label+'\n';this.prefix_=' '.repeat(++this.prefixStack_)}});const oGroupEnd=this.console_.groupEnd;this.groupEnd=this.console_.groupEnd=()=>{oGroupEnd();if(this.prefixStack_) + this.prefix_=' '.repeat(--this.prefixStack_)}};lib.TestManager.Suite=function(suiteName){function ctor(testManager,cx){this.testManager_=testManager;this.suiteName=suiteName;this.setup(cx)} + ctor.suiteName=suiteName;ctor.addTest=lib.TestManager.Suite.addTest;ctor.disableTest=lib.TestManager.Suite.disableTest;ctor.getTest=lib.TestManager.Suite.getTest;ctor.getTestList=lib.TestManager.Suite.getTestList;ctor.testList_=[];ctor.testMap_={};ctor.prototype=Object.create(lib.TestManager.Suite.prototype);ctor.constructor=lib.TestManager.Suite;lib.TestManager.Suite.subclasses.push(ctor);return ctor};lib.TestManager.Suite.subclasses=[];lib.TestManager.Suite.addTest=function(testName,testFunction){if(testName in this.testMap_) + throw 'Duplicate test name: '+testName;var test=new lib.TestManager.Test(this,testName,testFunction);this.testMap_[testName]=test;this.testList_.push(test)};lib.TestManager.Suite.disableTest=function(testName,testFunction){if(testName in this.testMap_) + throw 'Duplicate test name: '+testName;var test=new lib.TestManager.Test(this,testName,testFunction);console.log('Disabled test: '+test.fullName)};lib.TestManager.Suite.getTest=function(testName){return this.testMap_[testName]};lib.TestManager.Suite.getTestList=function(){return this.testList_};lib.TestManager.Suite.prototype.setDefaults=function(cx,defaults){for(var k in defaults){this[k]=(k in cx)?cx[k]:defaults[k]}};lib.TestManager.Suite.prototype.setup=function(cx){};lib.TestManager.Suite.prototype.preamble=function(result,cx){};lib.TestManager.Suite.prototype.postamble=function(result,cx){};lib.TestManager.Test=function(suiteClass,testName,testFunction){this.suiteClass=suiteClass;this.testName=testName;this.fullName=suiteClass.suiteName+'['+testName+']';this.testFunction_=testFunction};lib.TestManager.Test.prototype.run=function(result){try{this.testFunction_.apply(result.suite,[result,result.testRun.cx])}catch(ex){if(ex instanceof lib.TestManager.Result.TestComplete) + return;result.println('Test raised an exception: '+ex);if(ex.stack){if(ex.stack instanceof Array){result.println(ex.stack.join('\n'))}else{result.println(ex.stack)}} + result.completeTest_(result.FAILED,!1)}};lib.TestManager.TestRun=function(testManager,cx){this.testManager=testManager;this.log=testManager.log;this.cx=cx||{};this.failures=[];this.passes=[];this.startDate=null;this.duration=null;this.currentResult=null;this.maxFailures=0;this.panic=!1;this.testQueue_=[]};lib.TestManager.TestRun.prototype.ALL_TESTS=lib.f.createEnum('');lib.TestManager.TestRun.prototype.selectTest=function(test){this.testQueue_.push(test)};lib.TestManager.TestRun.prototype.selectSuite=function(suiteClass,opt_pattern){var pattern=opt_pattern||this.ALL_TESTS;var selectCount=0;var testList=suiteClass.getTestList();for(var j=0;j500) + this.log.warn('Slow test took '+this.msToSeconds_(result.duration));this.log.groupEnd();if(result.status==result.FAILED){this.failures.push(result);this.currentSuite=null}else if(result.status==result.PASSED){this.passes.push(result)}else{this.log.error('Unknown result status: '+result.test.fullName+': '+result.status);this.panic=!0;return} + this.runNextTest_()};lib.TestManager.TestRun.prototype.onResultReComplete=function(result,lateStatus){this.log.error('Late complete for test: '+result.test.fullName+': '+lateStatus);var index=this.passes.indexOf(result);if(index>=0){this.passes.splice(index,1);this.failures.push(result)}};lib.TestManager.TestRun.prototype.runNextTest_=function(){if(this.panic||!this.testQueue_.length){this.onTestRunComplete_();return} + if(this.maxFailures&&this.failures.length>=this.maxFailures){this.log.error('Maximum failure count reached, aborting test run.');this.onTestRunComplete_();return} + var test=this.testQueue_[0];var suite=this.currentResult?this.currentResult.suite:null;try{if(!suite||!(suite instanceof test.suiteClass)){if(suite) + this.log.groupEnd();this.log.group(test.suiteClass.suiteName);suite=new test.suiteClass(this.testManager,this.cx)}}catch(ex){this.log.error('Exception during setup: '+(ex.stack?ex.stack:ex));this.panic=!0;this.onTestRunComplete_();return} + try{this.log.group(test.testName);this.currentResult=new lib.TestManager.Result(this,suite,test);this.testManager.testPreamble(this.currentResult,this.cx);suite.preamble(this.currentResult,this.cx);this.testQueue_.shift()}catch(ex){this.log.error('Unexpected exception during test preamble: '+(ex.stack?ex.stack:ex));this.log.groupEnd();this.panic=!0;this.onTestRunComplete_();return} + try{this.currentResult.run()}catch(ex){this.log.error('Unexpected exception during test run: '+(ex.stack?ex.stack:ex));this.panic=!0}};lib.TestManager.TestRun.prototype.run=function(){this.log.info('Running '+this.testQueue_.length+' test(s)');window.onerror=this.onUncaughtException_.bind(this);this.startDate=new Date();this.runNextTest_()};lib.TestManager.TestRun.prototype.msToSeconds_=function(ms){var secs=(ms/1000).toFixed(2);return secs+'s'};lib.TestManager.TestRun.prototype.summarize=function(){if(this.failures.length){for(var i=0;iJSON.stringify(e));if(ary.length>1){return'\n'+ary.join('\n')}else{return ary.join('\n')}} + if(actual===expected) + return;if(expected instanceof Array) + if(lib.array.compare(actual,expected)) + return;var name=opt_name?'['+opt_name+']':'';this.fail('assertEQ'+name+': '+this.getCallerLocation_(1)+': '+format(actual)+' !== '+format(expected))};lib.TestManager.Result.prototype.assert=function(actual,opt_name){if(actual===!0) + return;var name=opt_name?'['+opt_name+']':'';this.fail('assert'+name+': '+this.getCallerLocation_(1)+': '+String(actual))};lib.TestManager.Result.prototype.getCallerLocation_=function(frameIndex){try{throw new Error()}catch(ex){var frame=ex.stack.split('\n')[frameIndex+2];var ary=frame.match(/([^/]+:\d+):\d+\)?$/);return ary?ary[1]:'???'}};lib.TestManager.Result.prototype.println=function(message){this.testRun.log.info(message)};lib.TestManager.Result.prototype.fail=function(opt_message){if(arguments.length) + this.println(opt_message);this.completeTest_(this.FAILED,!0)};lib.TestManager.Result.prototype.pass=function(){this.completeTest_(this.PASSED,!0)};'use strict';lib.UTF8Decoder=function(){this.bytesLeft=0;this.codePoint=0;this.lowerBound=0};lib.UTF8Decoder.prototype.decode=function(str){var ret='';for(var i=0;i0x10FFFF){ret+='\ufffd'}else{if(codePoint<0x10000){ret+=String.fromCharCode(codePoint)}else{codePoint-=0x10000;ret+=String.fromCharCode(0xD800+((codePoint>>>10)&0x3FF),0xDC00+(codePoint&0x3FF))}}}}else{ret+='\ufffd';this.bytesLeft=0;i--}}} + return ret};lib.decodeUTF8=function(utf8){return(new lib.UTF8Decoder()).decode(utf8)};lib.encodeUTF8=function(str){var ret='';for(var i=0;i>>6));bytesLeft=1}else if(c<=0xFFFF){ret+=String.fromCharCode(0xE0|(c>>>12));bytesLeft=2}else{ret+=String.fromCharCode(0xF0|(c>>>18));bytesLeft=3} + while(bytesLeft>0){bytesLeft--;ret+=String.fromCharCode(0x80|((c>>>(6*bytesLeft))&0x3F))}} + return ret};'use strict';lib.wc={};lib.wc.nulWidth=0;lib.wc.controlWidth=0;lib.wc.regardCjkAmbiguous=!1;lib.wc.cjkAmbiguousWidth=2;lib.wc.combining=[[0x00ad,0x00ad],[0x0300,0x036f],[0x0483,0x0489],[0x0591,0x05bd],[0x05bf,0x05bf],[0x05c1,0x05c2],[0x05c4,0x05c5],[0x05c7,0x05c7],[0x0610,0x061a],[0x061c,0x061c],[0x064b,0x065f],[0x0670,0x0670],[0x06d6,0x06dc],[0x06df,0x06e4],[0x06e7,0x06e8],[0x06ea,0x06ed],[0x0711,0x0711],[0x0730,0x074a],[0x07a6,0x07b0],[0x07eb,0x07f3],[0x07fd,0x07fd],[0x0816,0x0819],[0x081b,0x0823],[0x0825,0x0827],[0x0829,0x082d],[0x0859,0x085b],[0x08d3,0x08e1],[0x08e3,0x0902],[0x093a,0x093a],[0x093c,0x093c],[0x0941,0x0948],[0x094d,0x094d],[0x0951,0x0957],[0x0962,0x0963],[0x0981,0x0981],[0x09bc,0x09bc],[0x09c1,0x09c4],[0x09cd,0x09cd],[0x09e2,0x09e3],[0x09fe,0x09fe],[0x0a01,0x0a02],[0x0a3c,0x0a3c],[0x0a41,0x0a42],[0x0a47,0x0a48],[0x0a4b,0x0a4d],[0x0a51,0x0a51],[0x0a70,0x0a71],[0x0a75,0x0a75],[0x0a81,0x0a82],[0x0abc,0x0abc],[0x0ac1,0x0ac5],[0x0ac7,0x0ac8],[0x0acd,0x0acd],[0x0ae2,0x0ae3],[0x0afa,0x0aff],[0x0b01,0x0b01],[0x0b3c,0x0b3c],[0x0b3f,0x0b3f],[0x0b41,0x0b44],[0x0b4d,0x0b4d],[0x0b56,0x0b56],[0x0b62,0x0b63],[0x0b82,0x0b82],[0x0bc0,0x0bc0],[0x0bcd,0x0bcd],[0x0c00,0x0c00],[0x0c04,0x0c04],[0x0c3e,0x0c40],[0x0c46,0x0c48],[0x0c4a,0x0c4d],[0x0c55,0x0c56],[0x0c62,0x0c63],[0x0c81,0x0c81],[0x0cbc,0x0cbc],[0x0cbf,0x0cbf],[0x0cc6,0x0cc6],[0x0ccc,0x0ccd],[0x0ce2,0x0ce3],[0x0d00,0x0d01],[0x0d3b,0x0d3c],[0x0d41,0x0d44],[0x0d4d,0x0d4d],[0x0d62,0x0d63],[0x0dca,0x0dca],[0x0dd2,0x0dd4],[0x0dd6,0x0dd6],[0x0e31,0x0e31],[0x0e34,0x0e3a],[0x0e47,0x0e4e],[0x0eb1,0x0eb1],[0x0eb4,0x0eb9],[0x0ebb,0x0ebc],[0x0ec8,0x0ecd],[0x0f18,0x0f19],[0x0f35,0x0f35],[0x0f37,0x0f37],[0x0f39,0x0f39],[0x0f71,0x0f7e],[0x0f80,0x0f84],[0x0f86,0x0f87],[0x0f8d,0x0f97],[0x0f99,0x0fbc],[0x0fc6,0x0fc6],[0x102d,0x1030],[0x1032,0x1037],[0x1039,0x103a],[0x103d,0x103e],[0x1058,0x1059],[0x105e,0x1060],[0x1071,0x1074],[0x1082,0x1082],[0x1085,0x1086],[0x108d,0x108d],[0x109d,0x109d],[0x1160,0x11ff],[0x135d,0x135f],[0x1712,0x1714],[0x1732,0x1734],[0x1752,0x1753],[0x1772,0x1773],[0x17b4,0x17b5],[0x17b7,0x17bd],[0x17c6,0x17c6],[0x17c9,0x17d3],[0x17dd,0x17dd],[0x180b,0x180e],[0x1885,0x1886],[0x18a9,0x18a9],[0x1920,0x1922],[0x1927,0x1928],[0x1932,0x1932],[0x1939,0x193b],[0x1a17,0x1a18],[0x1a1b,0x1a1b],[0x1a56,0x1a56],[0x1a58,0x1a5e],[0x1a60,0x1a60],[0x1a62,0x1a62],[0x1a65,0x1a6c],[0x1a73,0x1a7c],[0x1a7f,0x1a7f],[0x1ab0,0x1abe],[0x1b00,0x1b03],[0x1b34,0x1b34],[0x1b36,0x1b3a],[0x1b3c,0x1b3c],[0x1b42,0x1b42],[0x1b6b,0x1b73],[0x1b80,0x1b81],[0x1ba2,0x1ba5],[0x1ba8,0x1ba9],[0x1bab,0x1bad],[0x1be6,0x1be6],[0x1be8,0x1be9],[0x1bed,0x1bed],[0x1bef,0x1bf1],[0x1c2c,0x1c33],[0x1c36,0x1c37],[0x1cd0,0x1cd2],[0x1cd4,0x1ce0],[0x1ce2,0x1ce8],[0x1ced,0x1ced],[0x1cf4,0x1cf4],[0x1cf8,0x1cf9],[0x1dc0,0x1df9],[0x1dfb,0x1dff],[0x200b,0x200f],[0x202a,0x202e],[0x2060,0x2064],[0x2066,0x206f],[0x20d0,0x20f0],[0x2cef,0x2cf1],[0x2d7f,0x2d7f],[0x2de0,0x2dff],[0x302a,0x302d],[0x3099,0x309a],[0xa66f,0xa672],[0xa674,0xa67d],[0xa69e,0xa69f],[0xa6f0,0xa6f1],[0xa802,0xa802],[0xa806,0xa806],[0xa80b,0xa80b],[0xa825,0xa826],[0xa8c4,0xa8c5],[0xa8e0,0xa8f1],[0xa8ff,0xa8ff],[0xa926,0xa92d],[0xa947,0xa951],[0xa980,0xa982],[0xa9b3,0xa9b3],[0xa9b6,0xa9b9],[0xa9bc,0xa9bc],[0xa9e5,0xa9e5],[0xaa29,0xaa2e],[0xaa31,0xaa32],[0xaa35,0xaa36],[0xaa43,0xaa43],[0xaa4c,0xaa4c],[0xaa7c,0xaa7c],[0xaab0,0xaab0],[0xaab2,0xaab4],[0xaab7,0xaab8],[0xaabe,0xaabf],[0xaac1,0xaac1],[0xaaec,0xaaed],[0xaaf6,0xaaf6],[0xabe5,0xabe5],[0xabe8,0xabe8],[0xabed,0xabed],[0xfb1e,0xfb1e],[0xfe00,0xfe0f],[0xfe20,0xfe2f],[0xfeff,0xfeff],[0xfff9,0xfffb],[0x101fd,0x101fd],[0x102e0,0x102e0],[0x10376,0x1037a],[0x10a01,0x10a03],[0x10a05,0x10a06],[0x10a0c,0x10a0f],[0x10a38,0x10a3a],[0x10a3f,0x10a3f],[0x10ae5,0x10ae6],[0x10d24,0x10d27],[0x10f46,0x10f50],[0x11001,0x11001],[0x11038,0x11046],[0x1107f,0x11081],[0x110b3,0x110b6],[0x110b9,0x110ba],[0x11100,0x11102],[0x11127,0x1112b],[0x1112d,0x11134],[0x11173,0x11173],[0x11180,0x11181],[0x111b6,0x111be],[0x111c9,0x111cc],[0x1122f,0x11231],[0x11234,0x11234],[0x11236,0x11237],[0x1123e,0x1123e],[0x112df,0x112df],[0x112e3,0x112ea],[0x11300,0x11301],[0x1133b,0x1133c],[0x11340,0x11340],[0x11366,0x1136c],[0x11370,0x11374],[0x11438,0x1143f],[0x11442,0x11444],[0x11446,0x11446],[0x1145e,0x1145e],[0x114b3,0x114b8],[0x114ba,0x114ba],[0x114bf,0x114c0],[0x114c2,0x114c3],[0x115b2,0x115b5],[0x115bc,0x115bd],[0x115bf,0x115c0],[0x115dc,0x115dd],[0x11633,0x1163a],[0x1163d,0x1163d],[0x1163f,0x11640],[0x116ab,0x116ab],[0x116ad,0x116ad],[0x116b0,0x116b5],[0x116b7,0x116b7],[0x1171d,0x1171f],[0x11722,0x11725],[0x11727,0x1172b],[0x1182f,0x11837],[0x11839,0x1183a],[0x11a01,0x11a0a],[0x11a33,0x11a38],[0x11a3b,0x11a3e],[0x11a47,0x11a47],[0x11a51,0x11a56],[0x11a59,0x11a5b],[0x11a8a,0x11a96],[0x11a98,0x11a99],[0x11c30,0x11c36],[0x11c38,0x11c3d],[0x11c3f,0x11c3f],[0x11c92,0x11ca7],[0x11caa,0x11cb0],[0x11cb2,0x11cb3],[0x11cb5,0x11cb6],[0x11d31,0x11d36],[0x11d3a,0x11d3a],[0x11d3c,0x11d3d],[0x11d3f,0x11d45],[0x11d47,0x11d47],[0x11d90,0x11d91],[0x11d95,0x11d95],[0x11d97,0x11d97],[0x11ef3,0x11ef4],[0x16af0,0x16af4],[0x16b30,0x16b36],[0x16f8f,0x16f92],[0x1bc9d,0x1bc9e],[0x1bca0,0x1bca3],[0x1d167,0x1d169],[0x1d173,0x1d182],[0x1d185,0x1d18b],[0x1d1aa,0x1d1ad],[0x1d242,0x1d244],[0x1da00,0x1da36],[0x1da3b,0x1da6c],[0x1da75,0x1da75],[0x1da84,0x1da84],[0x1da9b,0x1da9f],[0x1daa1,0x1daaf],[0x1e000,0x1e006],[0x1e008,0x1e018],[0x1e01b,0x1e021],[0x1e023,0x1e024],[0x1e026,0x1e02a],[0x1e8d0,0x1e8d6],[0x1e944,0x1e94a],[0xe0001,0xe0001],[0xe0020,0xe007f],[0xe0100,0xe01ef],];lib.wc.ambiguous=[[0x00a1,0x00a1],[0x00a4,0x00a4],[0x00a7,0x00a8],[0x00aa,0x00aa],[0x00ad,0x00ae],[0x00b0,0x00b4],[0x00b6,0x00ba],[0x00bc,0x00bf],[0x00c6,0x00c6],[0x00d0,0x00d0],[0x00d7,0x00d8],[0x00de,0x00e1],[0x00e6,0x00e6],[0x00e8,0x00ea],[0x00ec,0x00ed],[0x00f0,0x00f0],[0x00f2,0x00f3],[0x00f7,0x00fa],[0x00fc,0x00fc],[0x00fe,0x00fe],[0x0101,0x0101],[0x0111,0x0111],[0x0113,0x0113],[0x011b,0x011b],[0x0126,0x0127],[0x012b,0x012b],[0x0131,0x0133],[0x0138,0x0138],[0x013f,0x0142],[0x0144,0x0144],[0x0148,0x014b],[0x014d,0x014d],[0x0152,0x0153],[0x0166,0x0167],[0x016b,0x016b],[0x01ce,0x01ce],[0x01d0,0x01d0],[0x01d2,0x01d2],[0x01d4,0x01d4],[0x01d6,0x01d6],[0x01d8,0x01d8],[0x01da,0x01da],[0x01dc,0x01dc],[0x0251,0x0251],[0x0261,0x0261],[0x02c4,0x02c4],[0x02c7,0x02c7],[0x02c9,0x02cb],[0x02cd,0x02cd],[0x02d0,0x02d0],[0x02d8,0x02db],[0x02dd,0x02dd],[0x02df,0x02df],[0x0300,0x036f],[0x0391,0x03a1],[0x03a3,0x03a9],[0x03b1,0x03c1],[0x03c3,0x03c9],[0x0401,0x0401],[0x0410,0x044f],[0x0451,0x0451],[0x1100,0x115f],[0x2010,0x2010],[0x2013,0x2016],[0x2018,0x2019],[0x201c,0x201d],[0x2020,0x2022],[0x2024,0x2027],[0x2030,0x2030],[0x2032,0x2033],[0x2035,0x2035],[0x203b,0x203b],[0x203e,0x203e],[0x2074,0x2074],[0x207f,0x207f],[0x2081,0x2084],[0x20ac,0x20ac],[0x2103,0x2103],[0x2105,0x2105],[0x2109,0x2109],[0x2113,0x2113],[0x2116,0x2116],[0x2121,0x2122],[0x2126,0x2126],[0x212b,0x212b],[0x2153,0x2154],[0x215b,0x215e],[0x2160,0x216b],[0x2170,0x2179],[0x2189,0x2189],[0x2190,0x2199],[0x21b8,0x21b9],[0x21d2,0x21d2],[0x21d4,0x21d4],[0x21e7,0x21e7],[0x2200,0x2200],[0x2202,0x2203],[0x2207,0x2208],[0x220b,0x220b],[0x220f,0x220f],[0x2211,0x2211],[0x2215,0x2215],[0x221a,0x221a],[0x221d,0x2220],[0x2223,0x2223],[0x2225,0x2225],[0x2227,0x222c],[0x222e,0x222e],[0x2234,0x2237],[0x223c,0x223d],[0x2248,0x2248],[0x224c,0x224c],[0x2252,0x2252],[0x2260,0x2261],[0x2264,0x2267],[0x226a,0x226b],[0x226e,0x226f],[0x2282,0x2283],[0x2286,0x2287],[0x2295,0x2295],[0x2299,0x2299],[0x22a5,0x22a5],[0x22bf,0x22bf],[0x2312,0x2312],[0x231a,0x231b],[0x2329,0x232a],[0x23e9,0x23ec],[0x23f0,0x23f0],[0x23f3,0x23f3],[0x2460,0x24e9],[0x24eb,0x254b],[0x2550,0x2573],[0x2580,0x258f],[0x2592,0x2595],[0x25a0,0x25a1],[0x25a3,0x25a9],[0x25b2,0x25b3],[0x25b6,0x25b7],[0x25bc,0x25bd],[0x25c0,0x25c1],[0x25c6,0x25c8],[0x25cb,0x25cb],[0x25ce,0x25d1],[0x25e2,0x25e5],[0x25ef,0x25ef],[0x25fd,0x25fe],[0x2605,0x2606],[0x2609,0x2609],[0x260e,0x260f],[0x2614,0x2615],[0x261c,0x261c],[0x261e,0x261e],[0x2640,0x2640],[0x2642,0x2642],[0x2648,0x2653],[0x2660,0x2661],[0x2663,0x2665],[0x2667,0x266a],[0x266c,0x266d],[0x266f,0x266f],[0x267f,0x267f],[0x2693,0x2693],[0x269e,0x269f],[0x26a1,0x26a1],[0x26aa,0x26ab],[0x26bd,0x26bf],[0x26c4,0x26e1],[0x26e3,0x26e3],[0x26e8,0x26ff],[0x2705,0x2705],[0x270a,0x270b],[0x2728,0x2728],[0x273d,0x273d],[0x274c,0x274c],[0x274e,0x274e],[0x2753,0x2755],[0x2757,0x2757],[0x2776,0x277f],[0x2795,0x2797],[0x27b0,0x27b0],[0x27bf,0x27bf],[0x2b1b,0x2b1c],[0x2b50,0x2b50],[0x2b55,0x2b59],[0x2e80,0x2fdf],[0x2ff0,0x303e],[0x3040,0x4dbf],[0x4e00,0xa4cf],[0xa960,0xa97f],[0xac00,0xd7a3],[0xe000,0xfaff],[0xfe00,0xfe19],[0xfe30,0xfe6f],[0xff01,0xff60],[0xffe0,0xffe6],[0xfffd,0xfffd],[0x16fe0,0x16fe1],[0x17000,0x18aff],[0x1b000,0x1b12f],[0x1b170,0x1b2ff],[0x1f004,0x1f004],[0x1f0cf,0x1f0cf],[0x1f100,0x1f10a],[0x1f110,0x1f12d],[0x1f130,0x1f169],[0x1f170,0x1f1ac],[0x1f200,0x1f202],[0x1f210,0x1f23b],[0x1f240,0x1f248],[0x1f250,0x1f251],[0x1f260,0x1f265],[0x1f300,0x1f320],[0x1f32d,0x1f335],[0x1f337,0x1f37c],[0x1f37e,0x1f393],[0x1f3a0,0x1f3ca],[0x1f3cf,0x1f3d3],[0x1f3e0,0x1f3f0],[0x1f3f4,0x1f3f4],[0x1f3f8,0x1f43e],[0x1f440,0x1f440],[0x1f442,0x1f4fc],[0x1f4ff,0x1f53d],[0x1f54b,0x1f54e],[0x1f550,0x1f567],[0x1f57a,0x1f57a],[0x1f595,0x1f596],[0x1f5a4,0x1f5a4],[0x1f5fb,0x1f64f],[0x1f680,0x1f6c5],[0x1f6cc,0x1f6cc],[0x1f6d0,0x1f6d2],[0x1f6eb,0x1f6ec],[0x1f6f4,0x1f6f9],[0x1f910,0x1f93e],[0x1f940,0x1f970],[0x1f973,0x1f976],[0x1f97a,0x1f97a],[0x1f97c,0x1f9a2],[0x1f9b0,0x1f9b9],[0x1f9c0,0x1f9c2],[0x1f9d0,0x1f9ff],[0x20000,0x2fffd],[0x30000,0x3fffd],[0xe0100,0xe01ef],[0xf0000,0xffffd],[0x100000,0x10fffd],];lib.wc.unambiguous=[[0x1100,0x115f],[0x231a,0x231b],[0x2329,0x232a],[0x23e9,0x23ec],[0x23f0,0x23f0],[0x23f3,0x23f3],[0x25fd,0x25fe],[0x2614,0x2615],[0x2648,0x2653],[0x267f,0x267f],[0x2693,0x2693],[0x26a1,0x26a1],[0x26aa,0x26ab],[0x26bd,0x26be],[0x26c4,0x26c5],[0x26ce,0x26ce],[0x26d4,0x26d4],[0x26ea,0x26ea],[0x26f2,0x26f3],[0x26f5,0x26f5],[0x26fa,0x26fa],[0x26fd,0x26fd],[0x2705,0x2705],[0x270a,0x270b],[0x2728,0x2728],[0x274c,0x274c],[0x274e,0x274e],[0x2753,0x2755],[0x2757,0x2757],[0x2795,0x2797],[0x27b0,0x27b0],[0x27bf,0x27bf],[0x2b1b,0x2b1c],[0x2b50,0x2b50],[0x2b55,0x2b55],[0x2e80,0x2fdf],[0x2ff0,0x303e],[0x3040,0x3247],[0x3250,0x4dbf],[0x4e00,0xa4cf],[0xa960,0xa97f],[0xac00,0xd7a3],[0xf900,0xfaff],[0xfe10,0xfe19],[0xfe30,0xfe6f],[0xff01,0xff60],[0xffe0,0xffe6],[0x16fe0,0x16fe1],[0x17000,0x18aff],[0x1b000,0x1b12f],[0x1b170,0x1b2ff],[0x1f004,0x1f004],[0x1f0cf,0x1f0cf],[0x1f18e,0x1f18e],[0x1f191,0x1f19a],[0x1f200,0x1f202],[0x1f210,0x1f23b],[0x1f240,0x1f248],[0x1f250,0x1f251],[0x1f260,0x1f265],[0x1f300,0x1f320],[0x1f32d,0x1f335],[0x1f337,0x1f37c],[0x1f37e,0x1f393],[0x1f3a0,0x1f3ca],[0x1f3cf,0x1f3d3],[0x1f3e0,0x1f3f0],[0x1f3f4,0x1f3f4],[0x1f3f8,0x1f43e],[0x1f440,0x1f440],[0x1f442,0x1f4fc],[0x1f4ff,0x1f53d],[0x1f54b,0x1f54e],[0x1f550,0x1f567],[0x1f57a,0x1f57a],[0x1f595,0x1f596],[0x1f5a4,0x1f5a4],[0x1f5fb,0x1f64f],[0x1f680,0x1f6c5],[0x1f6cc,0x1f6cc],[0x1f6d0,0x1f6d2],[0x1f6eb,0x1f6ec],[0x1f6f4,0x1f6f9],[0x1f910,0x1f93e],[0x1f940,0x1f970],[0x1f973,0x1f976],[0x1f97a,0x1f97a],[0x1f97c,0x1f9a2],[0x1f9b0,0x1f9b9],[0x1f9c0,0x1f9c2],[0x1f9d0,0x1f9ff],[0x20000,0x2fffd],[0x30000,0x3fffd],];lib.wc.binaryTableSearch_=function(ucs,table){var min=0,max=table.length-1;var mid;if(ucstable[max][1]) + return!1;while(max>=min){mid=Math.floor((min+max)/2);if(ucs>table[mid][1]){min=mid+1}else if(ucs=0x20) + return 1;else if(ucs==0) + return lib.wc.nulWidth;else return lib.wc.controlWidth} + if(ucs<0xa0) + return lib.wc.controlWidth;if(lib.wc.isSpace(ucs)) + return 0;return lib.wc.binaryTableSearch_(ucs,lib.wc.unambiguous)?2:1};lib.wc.charWidthRegardAmbiguous=function(ucs){if(lib.wc.isCjkAmbiguous(ucs)) + return lib.wc.cjkAmbiguousWidth;return lib.wc.charWidthDisregardAmbiguous(ucs)};lib.wc.strWidth=function(str){var width,rv=0;for(var i=0;istart) + break;startIndex+=(codePoint<=0xffff)?1:2}} + if(opt_width!=undefined){for(endIndex=startIndex,width=0;endIndexopt_width) + break;endIndex+=(codePoint<=0xffff)?1:2} + return str.substring(startIndex,endIndex)} + return str.substr(startIndex)};lib.wc.substring=function(str,start,end){return lib.wc.substr(str,start,end-start)};lib.resource.add('libdot/changelog/version','text/plain','1.22');lib.resource.add('libdot/changelog/date','text/plain','2018-06-20');lib.resource.add('hterm/audio/bell','audio/ogg;base64','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'+'VbVtzzRl2VRV3RZV1bZl2xZ+V5Z13zNNWRZV1dZNVbV115Z9X9ZtXZg0zTQ1UVRVTRRV1VRV2zZV'+'17Y1UXRVUVVlWVRVWXZlWfdVV9Z9SxRV1VNN2RVVVbZV2fVtVZZ94XRVXVdl2fdVWRZ+W9eF4fZ9'+'4RhV1dZN19V1VZZ9YdZlYbd13yhpmmlqoqiqmiiqqqmqtm2qrq1bouiqoqrKsmeqrqzKsq+rrmzr'+'miiqrqiqsiyqqiyrsqz7qizrtqiquq3KsrCbrqvrtu8LwyzrunCqrq6rsuz7qizruq3rxnHrujB8'+'pinLpqvquqm6um7runHMtm0co6rqvirLwrDKsu/rui+0dSFRVXXdlF3jV2VZ921fd55b94WybTu/'+'rfvKceu60vg5z28cubZtHLNuG7+t+8bzKz9hOI6lZ5q2baqqrZuqq+uybivDrOtCUVV9XZVl3zdd'+'WRdu3zeOW9eNoqrquirLvrDKsjHcxm8cuzAcXds2jlvXnbKtC31jyPcJz2vbxnH7OuP2daOvDAnH'+'jwAAgAEHAIAAE8pAoSErAoA4AQAGIecUUxAqxSB0EFLqIKRUMQYhc05KxRyUUEpqIZTUKsYgVI5J'+'yJyTEkpoKZTSUgehpVBKa6GU1lJrsabUYu0gpBZKaS2U0lpqqcbUWowRYxAy56RkzkkJpbQWSmkt'+'c05K56CkDkJKpaQUS0otVsxJyaCj0kFIqaQSU0mptVBKa6WkFktKMbYUW24x1hxKaS2kEltJKcYU'+'U20txpojxiBkzknJnJMSSmktlNJa5ZiUDkJKmYOSSkqtlZJSzJyT0kFIqYOOSkkptpJKTKGU1kpK'+'sYVSWmwx1pxSbDWU0lpJKcaSSmwtxlpbTLV1EFoLpbQWSmmttVZraq3GUEprJaUYS0qxtRZrbjHm'+'GkppraQSW0mpxRZbji3GmlNrNabWam4x5hpbbT3WmnNKrdbUUo0txppjbb3VmnvvIKQWSmktlNJi'+'ai3G1mKtoZTWSiqxlZJabDHm2lqMOZTSYkmpxZJSjC3GmltsuaaWamwx5ppSi7Xm2nNsNfbUWqwt'+'xppTS7XWWnOPufVWAADAgAMAQIAJZaDQkJUAQBQAAEGIUs5JaRByzDkqCULMOSepckxCKSlVzEEI'+'JbXOOSkpxdY5CCWlFksqLcVWaykptRZrLQAAoMABACDABk2JxQEKDVkJAEQBACDGIMQYhAYZpRiD'+'0BikFGMQIqUYc05KpRRjzknJGHMOQioZY85BKCmEUEoqKYUQSkklpQIAAAocAAACbNCUWByg0JAV'+'AUAUAABgDGIMMYYgdFQyKhGETEonqYEQWgutddZSa6XFzFpqrbTYQAithdYySyXG1FpmrcSYWisA'+'AOzAAQDswEIoNGQlAJAHAEAYoxRjzjlnEGLMOegcNAgx5hyEDirGnIMOQggVY85BCCGEzDkIIYQQ'+'QuYchBBCCKGDEEIIpZTSQQghhFJK6SCEEEIppXQQQgihlFIKAAAqcAAACLBRZHOCkaBCQ1YCAHkA'+'AIAxSjkHoZRGKcYglJJSoxRjEEpJqXIMQikpxVY5B6GUlFrsIJTSWmw1dhBKaS3GWkNKrcVYa64h'+'pdZirDXX1FqMteaaa0otxlprzbkAANwFBwCwAxtFNicYCSo0ZCUAkAcAgCCkFGOMMYYUYoox55xD'+'CCnFmHPOKaYYc84555RijDnnnHOMMeecc845xphzzjnnHHPOOeecc44555xzzjnnnHPOOeecc845'+'55xzzgkAACpwAAAIsFFkc4KRoEJDVgIAqQAAABFWYowxxhgbCDHGGGOMMUYSYowxxhhjbDHGGGOM'+'McaYYowxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHG'+'GFtrrbXWWmuttdZaa6211lprrQBAvwoHAP8HG1ZHOCkaCyw0ZCUAEA4AABjDmHOOOQYdhIYp6KSE'+'DkIIoUNKOSglhFBKKSlzTkpKpaSUWkqZc1JSKiWlllLqIKTUWkottdZaByWl1lJqrbXWOgiltNRa'+'a6212EFIKaXWWostxlBKSq212GKMNYZSUmqtxdhirDGk0lJsLcYYY6yhlNZaazHGGGstKbXWYoy1'+'xlprSam11mKLNdZaCwDgbnAAgEiwcYaVpLPC0eBCQ1YCACEBAARCjDnnnHMQQgghUoox56CDEEII'+'IURKMeYcdBBCCCGEjDHnoIMQQgghhJAx5hx0EEIIIYQQOucchBBCCKGEUkrnHHQQQgghlFBC6SCE'+'EEIIoYRSSikdhBBCKKGEUkopJYQQQgmllFJKKaWEEEIIoYQSSimllBBCCKWUUkoppZQSQgghlFJK'+'KaWUUkIIoZRQSimllFJKCCGEUkoppZRSSgkhhFBKKaWUUkopIYQSSimllFJKKaUAAIADBwCAACPo'+'JKPKImw04cIDUGjISgCADAAAcdhq6ynWyCDFnISWS4SQchBiLhFSijlHsWVIGcUY1ZQxpRRTUmvo'+'nGKMUU+dY0oxw6yUVkookYLScqy1dswBAAAgCAAwECEzgUABFBjIAIADhAQpAKCwwNAxXAQE5BIy'+'CgwKx4Rz0mkDABCEyAyRiFgMEhOqgaJiOgBYXGDIB4AMjY20iwvoMsAFXdx1IIQgBCGIxQEUkICD'+'E2544g1PuMEJOkWlDgIAAAAA4AAAHgAAkg0gIiKaOY4Ojw+QEJERkhKTE5QAAAAAALABgA8AgCQF'+'iIiIZo6jw+MDJERkhKTE5AQlAAAAAAAAAAAACAgIAAAAAAAEAAAACAhPZ2dTAAQYOwAAAAAAAOGp'+'bkoCAAAAmc74DRgyNjM69TAzOTk74dnLubewsbagmZiNp4d0KbsExSY/I3XUTwJgkeZdn1HY4zoj'+'33/q9DFtv3Ui1/jmx7lCUtPt18/sYf9MkgAsAGRBd3gMGP4sU+qCPYBy9VrA3YqJosW3W2/ef1iO'+'/u3cg8ZG/57jU+pPmbGEJUgkfnaI39DbPqxddZphbMRmCc5rKlkUMkyx8iIoug5dJv1OYH9a59c+'+'3Gevqc7Z2XFdDjL/qHztRfjWEWxJ/aiGezjohu9HsCZdQBKbiH0VtU/3m85lDG2T/+xkZcYnX+E+'+'aqzv/xTgOoTFG+x7SNqQ4N+oAABSxuVXw77Jd5bmmTmuJakX7509HH0kGYKvARPpwfOSAPySPAc2'+'EkneDwB2HwAAJlQDYK5586N79GJCjx4+p6aDUd27XSvRyXLJkIC5YZ1jLv5lpOhZTz0s+DmnF1di'+'ptrnM6UDgIW11Xh8cHTd0/SmbgOAdxcyWwMAAGIrZ3fNSfZbzKiYrK4+tPqtnMVLOeWOG2kVvUY+'+'p2PJ/hkCl5aFRO4TLGYPZcIU3vYM1hohS4jHFlnyW/2T5J7kGsShXWT8N05V+3C/GPqJ1QdWisGP'+'xEzHqXISBPIinWDUt7IeJv/f5OtzBxpTzZZQ+CYEhHXfqG4aABQli72GJhN4oJv+hXcApAJSErAW'+'8G2raAX4NUcABnVt77CzZAB+LsHcVe+Q4h+QB1wh/ZrJTPxSBdI8mgTeAdTsQOoFUEng9BHcVPhx'+'SRRYkKWZJXOFYP6V4AEripJoEjXgA2wJRZHSExmJDm8F0A6gEXsg5a4ZsALItrMB7+fh7UKLvYWS'+'dtsDwFf1mzYzS1F82N1h2Oyt2e76B1QdS0SAsQigLPMOgJS9JRC7hFXA6kUsLFNKD5cA5cTRvgSq'+'Pc3Fl99xW3QTi/MHR8DEm6WnvaVQATwRqRKjywQ9BrrhugR2AKTsPQeQckrAOgDOhbTESyrXQ50C'+'kNpXdtWjW7W2/3UjeX3U95gIdalfRAoAmqUEiwp53hCdcCwlg47fcbfzlmQMAgaBkh7c+fcDgF+i'+'fwDXfzegLPcLYJsAAJQArTXjnh/uXGy3v1Hk3pV6/3t5ruW81f6prfbM2Q3WNVy98BwUtbCwhFhA'+'WuPev6Oe/4ZaFQUcgKrVs4defzh1TADA1DEh5b3VlDaECw5b+bPfkKos3tIAue3vJZOih3ga3l6O'+'3PSfIkrLv0PAS86PPdL7g8oc2KteNFKKzKRehOv2gJoFLBPXmaXvPBQILgJon0bbWBszrYZYYwE7'+'jl2j+vTdU7Vpk21LiU0QajPkywAAHqbUC0/YsYOdb4e6BOp7E0cCi04Ao/TgD8ZVAMid6h/A8IeB'+'Nkp6/xsAACZELEYIk+yvI6Qz1NN6lIftB/6IMWjWJNOqPTMedAmyaj6Es0QBklJpiSWWHnQ2CoYb'+'GWAmt+0gLQBFKCBnp2QUUQZ/1thtZDBJUpFWY82z34ocorB62oX7qB5y0oPAv/foxH25wVmgIHf2'+'xFOr8leZcBq1Kx3ZvCq9Bga639AxuHuPNL/71YCF4EywJpqHFAX6XF0sjVbuANnvvdLcrufYwOM/'+'iDa6iA468AYAAB6mNBMXcgTD8HSRqJ4vw8CjAlCEPACASlX/APwPOJKl9xQAAAPmnev2eWp33Xgy'+'w3Dvfz6myGk3oyP8YTKsCOvzAgALQi0o1c6Nzs2O2Pg2h4ACIJAgAGP0aNn5x0BDgVfH7u2TtyfD'+'cRIuYAyQhBF/lvSRAttgA6TPbWZA9gaUrZWAUEAA+Dx47Q3/r87HxUUqZmB0BmUuMlojFjHt1gDu'+'nnvuX8MImsjSq5WkzSzGS62OEIlOufWWezxWpv6FBgDgJVltfXFYtNAAnqU0xQoD0YLiXo5cF5QV'+'4CnY1tBLAkZCOABAhbk/AM+/AwSCCdlWAAAMcFjS7owb8GVDzveDiZvznbt2tF4bL5odN1YKl88T'+'AEABCZvufq9YCTBtMwVAQUEAwGtNltzSaHvADYC3TxLVjqiRA+OZAMhzcqEgRcAOwoCgvdTxsTHL'+'QEF6+oOb2+PAI8ciPQcXg7pOY+LjxQSv2fjmFuj34gGwz310/bGK6z3xgT887eomWULEaDd04wHe'+'tYxdjcgV2SxvSwn0VoZXJRqkRC5ASQ/muVoAUsX7AgAQMBNaVwAAlABRxT/1PmfqLqSRNDbhXb07'+'berpB3b94jpuWEZjBCD2OcdXFpCKEgCDfcFPMw8AAADUwT4lnUm50lmwrpMMhPQIKj6u0E8fr2vG'+'BngMNdIlrZsigjahljud6AFVg+tzXwUnXL3TJLpajaWKA4VAAAAMiFfqJgKAZ08XrtS3dxtQNYcp'+'PvYEG8ClvrQRJgBephwnNWJjtGqmp6VEPSvBe7EBiU3qgJbQAwD4Le8LAMDMhHbNAAAlgK+tFs5O'+'+YyJc9yCnJa3rxLPulGnxwsXV9Fsk2k4PisCAHC8FkwbGE9gJQAAoMnyksj0CdFMZLLgoz8M+Fxz'+'iwYBgIx+zHiCBAKAlBKNpF1sO9JpVcyEi9ar15YlHgrut5fPJnkdJ6vEwZPyAHQBIEDUrlMcBAAd'+'2KAS0Qq+JwRsE4AJZtMnAD6GnOYwYlOIZvtzUNdjreB7fiMkWI0CmBB6AIAKc38A9osEFlTSGECB'+'+cbeRDC0aRpLHqNPplcK/76Lxn2rpmqyXsYJWRi/FQAAAKBQk9MCAOibrQBQADCDsqpooPutd+05'+'Ce9g6iEdiYXgVmQAI4+4wskEBEiBloNQ6Ki0/KTQ0QjWfjxzi+AeuXKoMjEVfQOZzr0y941qLgM2'+'AExvbZOqcxZ6J6krlrj4y2j9AdgKDx6GnJsVLhbc42uq584+ouSdNBpoCiCVHrz+WzUA/DDtD8AT'+'gA3h0lMCAAzcFv+S+fSSNkeYWlTpb34mf2RfmqqJeMeklhHAfu7VoAEACgAApKRktL+KkQDWMwYC'+'UAAAAHCKsp80xhp91UjqQBw3x45cetqkjQEyu3G9B6N+R650Uq8OVig7wOm6Wun0ea4lKDPoabJs'+'6aLqgbhPzpv4KR4iODilw88ZpY7q1IOMcbASAOAVtmcCnobcrkG4KGS7/ZnskVWRNF9J0RUHKOnB'+'yy9WA8Dv6L4AAARMCQUA4GritfVM2lcZfH3Q3T/vZ47J2YHhcmBazjfdyuV25gLAzrc0cwAAAAAY'+'Ch6PdwAAAGyWjFW4yScjaWa2mGcofHxWxewKALglWBpLUvwwk+UOh5eNGyUOs1/EF+pZr+ud5Ozo'+'GwYdAABg2p52LiSgAY/ZVlOmilEgHn6G3OcwYjzI7vOj1t6xsx4S3lBY96EUQBF6AIBAmPYH4PoG'+'YCoJAADWe+OZJZi7/x76/yH7Lzf9M5XzRKnFPmveMsilQHwVAAAAAKB3LQD8PCIAAADga0QujBLy'+'wzeJ4a6Z/ERVBAUlAEDqvoM7BQBAuAguzFqILtmjH3Kd4wfKobnOhA3z85qWoRPm9hwoOHoDAAlC'+'bwDAA56FHAuXflHo3fe2ttG9XUDeA9YmYCBQ0oPr/1QC8IvuCwAAApbUAQCK22MmE3O78VAbHQT9'+'PIPNoT9zNc3l2Oe7TAVLANBufT8MAQAAAGzT4PS8AQAAoELGHb2uaCwwEv1EWhFriUkbAaAZ27/f'+'VZnTZXbWz3BwWpjUaMZKRj7dZ0J//gUeTdpVEwAAZOFsNxKAjQSgA+ABPoY8Jj5y2wje81jsXc/1'+'TOQWTDYZBmAkNDiqVwuA2NJ9AQAAEBKAt9Vrsfs/2N19MO91S9rd8EHTZHnzC5MYmfQEACy/FBcA'+'AADA5c4gi4z8RANs/m6FNXVo9DV46JG1BBDukqlw/Va5G7QbuGVSI+2aZaoLXJrdVj2zlC9Z5QEA'+'EFz/5QzgVZwAAAAA/oXcxyC6WfTu+09Ve/c766J4VTAGUFmA51+VANKi/QPoPwYgYAkA715OH4S0'+'s5KDHvj99MMq8TPFc3roKZnGOoT1bmIhVgc7XAMBAAAAAMAW1VbQw3gapzOpJd+Kd2fc4iSO62fJ'+'v9+movui1wUNPAj059N3OVxzk4gV73PmE8FIA2F5mRq37Evc76vLXfF4rD5UJJAw46hW6LZCb5sN'+'Ldx+kzMCAAB+hfy95+965ZCLP7B3/VlTHCvDEKtQhTm4KiCgAEAbrfbWTPssAAAAXpee1tVrozYY'+'n41wD1aeYtkKfswN5/SXPO0JDnhO/4laUortv/s412fybe/nONdncoCHnBVliu0CQGBWlPY/5Kwo'+'m2L/kruPM6Q7oz4tvDQy+bZ3HzOi+gNHA4DZEgA=');lib.resource.add('hterm/images/icon-96','image/png;base64','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'+'YII=');lib.resource.add('hterm/concat/date','text/plain','Fri, 22 Jun 2018 14:27:06 +0000');lib.resource.add('hterm/changelog/version','text/plain','1.79');lib.resource.add('hterm/changelog/date','text/plain','2018-06-20');lib.resource.add('hterm/git/HEAD','text/plain','f23927ce63ed5b1258305f8fcd0c7aa33ffb9ab2');'use strict';lib.rtdep('lib.Storage');var hterm={};hterm.windowType=null;hterm.os=null;hterm.zoomWarningMessage='ZOOM != 100%';hterm.notifyCopyMessage='\u2702';hterm.desktopNotificationTitle='\u266A %(title) \u266A';hterm.testDeps=['hterm.AccessibilityReader.Tests','hterm.ScrollPort.Tests','hterm.Screen.Tests','hterm.Terminal.Tests','hterm.VT.Tests','hterm.VT.CannedTests'];lib.registerInit('hterm',function(onInit){function initOs(os){hterm.os=os;onInit()} + function initMessageManager(){lib.f.getAcceptLanguages((languages)=>{if(!hterm.messageManager) + hterm.messageManager=new lib.MessageManager(languages);lib.f.getOs().then(initOs).catch(initOs)})} + function onWindow(window){hterm.windowType=window.type;initMessageManager()} + function onTab(tab){if(tab&&window.chrome){chrome.windows.get(tab.windowId,null,onWindow)}else{hterm.windowType='normal';initMessageManager()}} + if(!hterm.defaultStorage){if(window.chrome&&chrome.storage&&chrome.storage.sync){hterm.defaultStorage=new lib.Storage.Chrome(chrome.storage.sync)}else{hterm.defaultStorage=new lib.Storage.Local()}} + var isPackagedApp=!1;if(window.chrome&&chrome.runtime&&chrome.runtime.getManifest){var manifest=chrome.runtime.getManifest();isPackagedApp=manifest.app&&manifest.app.background} + if(isPackagedApp){setTimeout(onWindow.bind(null,{type:'popup'}),0)}else{if(window.chrome&&chrome.tabs){chrome.tabs.getCurrent(onTab)}else{setTimeout(onWindow.bind(null,{type:'normal'}),0)}}});hterm.getClientSize=function(dom){return dom.getBoundingClientRect()};hterm.getClientWidth=function(dom){return dom.getBoundingClientRect().width};hterm.getClientHeight=function(dom){return dom.getBoundingClientRect().height};hterm.copySelectionToClipboard=function(document){try{document.execCommand('copy')}catch(firefoxException){}};hterm.pasteFromClipboard=function(document){try{return document.execCommand('paste')}catch(firefoxException){return!1}};hterm.msg=function(name,args=[],string){return hterm.messageManager.get('HTERM_'+name,args,string)};hterm.notify=function(params){var def=(curr,fallback)=>curr!==undefined?curr:fallback;if(params===undefined||params===null) + params={};var options={'body':params.body,'icon':def(params.icon,lib.resource.getDataUrl('hterm/images/icon-96')),};var title=def(params.title,window.document.title);if(!title) + title='hterm';title=lib.f.replaceVars(hterm.desktopNotificationTitle,{'title':title});var n=new Notification(title,options);n.onclick=function(){window.focus();this.close()};return n};hterm.openUrl=function(url){if(window.chrome&&chrome.browser&&chrome.browser.openTab){chrome.browser.openTab({'url':url})}else{const win=window.open(url,'_blank');win.focus()}};hterm.Size=function(width,height){this.width=width;this.height=height};hterm.Size.prototype.resize=function(width,height){this.width=width;this.height=height};hterm.Size.prototype.clone=function(){return new hterm.Size(this.width,this.height)};hterm.Size.prototype.setTo=function(that){this.width=that.width;this.height=that.height};hterm.Size.prototype.equals=function(that){return this.width==that.width&&this.height==that.height};hterm.Size.prototype.toString=function(){return'[hterm.Size: '+this.width+', '+this.height+']'};hterm.RowCol=function(row,column,opt_overflow){this.row=row;this.column=column;this.overflow=!!opt_overflow};hterm.RowCol.prototype.move=function(row,column,opt_overflow){this.row=row;this.column=column;this.overflow=!!opt_overflow};hterm.RowCol.prototype.clone=function(){return new hterm.RowCol(this.row,this.column,this.overflow)};hterm.RowCol.prototype.setTo=function(that){this.row=that.row;this.column=that.column;this.overflow=that.overflow};hterm.RowCol.prototype.equals=function(that){return(this.row==that.row&&this.column==that.column&&this.overflow==that.overflow)};hterm.RowCol.prototype.toString=function(){return('[hterm.RowCol: '+this.row+', '+this.column+', '+this.overflow+']')};'use strict';hterm.AccessibilityReader=function(div){this.document_=div.ownerDocument;const liveRegion=this.document_.createElement('div');liveRegion.id='hterm:accessibility-live-region';liveRegion.setAttribute('aria-live','polite');liveRegion.style.cssText=`position: absolute; + width: 0; height: 0; + overflow: hidden; + left: 0; top: 0;`;div.appendChild(liveRegion);this.liveElement_=this.document_.createElement('p');this.liveElement_.setAttribute('aria-label','');liveRegion.appendChild(this.liveElement_);this.queue_=[];this.nextReadTimer_=null};hterm.AccessibilityReader.DELAY=90;hterm.AccessibilityReader.prototype.announce=function(str){if(this.queue_.length==0){this.queue_.push(str)}else{let padding='';if(this.queue_[this.queue_.length-1].length!=0){padding=' '} + this.queue_[this.queue_.length-1]+=padding+str} + if(this.nextReadTimer_){return} + if(this.queue_.length==1){this.nextReadTimer_=setTimeout(this.onNextReadTimer_.bind(this),hterm.AccessibilityReader.DELAY/2)}else{throw new Error('Expected only one item in queue_ or nextReadTimer_ to be running.')}};hterm.AccessibilityReader.prototype.newLine=function(){this.queue_.push('')};hterm.AccessibilityReader.prototype.clear=function(){this.liveElement_.setAttribute('aria-label','');this.queue_=[]};hterm.AccessibilityReader.prototype.addToLiveRegion_=function(){if(this.nextReadTimer_){throw new Error('Expected nextReadTimer_ not to be running.')} + this.liveElement_.setAttribute('aria-label',this.queue_.join('\n'));this.queue_=[]};hterm.AccessibilityReader.prototype.onNextReadTimer_=function(){this.liveElement_.setAttribute('aria-label','');setTimeout(this.onClearFinished_.bind(this),hterm.AccessibilityReader.DELAY/2)};hterm.AccessibilityReader.prototype.onClearFinished_=function(){this.nextReadTimer_=null;this.addToLiveRegion_()};'use strict';lib.rtdep('lib.f');hterm.Frame=function(terminal,url,opt_options){this.terminal_=terminal;this.div_=terminal.div_;this.url=url;this.options=opt_options||{};this.iframe_=null;this.container_=null;this.messageChannel_=null};hterm.Frame.prototype.onMessage_=function(e){switch(e.data.name){case 'ipc-init-ok':this.sendTerminalInfo_();return;case 'terminal-info-ok':this.container_.style.display='flex';this.postMessage('visible');this.messageChannel_.port1.onmessage=this.onMessage.bind(this);this.onLoad();return;default:console.log('Unknown message from frame:',e.data);return}};hterm.Frame.prototype.onMessage=function(){};hterm.Frame.prototype.onLoad_=function(){this.messageChannel_=new MessageChannel();this.messageChannel_.port1.onmessage=this.onMessage_.bind(this);this.messageChannel_.port1.start();this.iframe_.contentWindow.postMessage({name:'ipc-init',argv:[{messagePort:this.messageChannel_.port2}]},this.url,[this.messageChannel_.port2])};hterm.Frame.prototype.onLoad=function(){};hterm.Frame.prototype.sendTerminalInfo_=function(){lib.f.getAcceptLanguages(function(languages){this.postMessage('terminal-info',[{acceptLanguages:languages,foregroundColor:this.terminal_.getForegroundColor(),backgroundColor:this.terminal_.getBackgroundColor(),cursorColor:this.terminal_.getCursorColor(),fontSize:this.terminal_.getFontSize(),fontFamily:this.terminal_.getFontFamily(),baseURL:lib.f.getURL('/')}])}.bind(this))};hterm.Frame.prototype.onCloseClicked_=function(){this.close()};hterm.Frame.prototype.close=function(){if(!this.container_||!this.container_.parentNode) + return;this.container_.parentNode.removeChild(this.container_);this.onClose()};hterm.Frame.prototype.onClose=function(){};hterm.Frame.prototype.postMessage=function(name,argv){if(!this.messageChannel_) + throw new Error('Message channel is not set up.');this.messageChannel_.port1.postMessage({name:name,argv:argv})};hterm.Frame.prototype.show=function(){var self=this;function opt(name,defaultValue){if(name in self.options) + return self.options[name];return defaultValue} + var self=this;if(this.container_&&this.container_.parentNode){console.error('Frame already visible');return} + var headerHeight='16px';var divSize=hterm.getClientSize(this.div_);var width=opt('width',640);var height=opt('height',480);var left=(divSize.width-width)/2;var top=(divSize.height-height)/2;var document=this.terminal_.document_;var container=this.container_=document.createElement('div');container.style.cssText=('position: absolute;'+'display: none;'+'flex-direction: column;'+'top: 10%;'+'left: 4%;'+'width: 90%;'+'height: 80%;'+'min-height: 20%;'+'max-height: 80%;'+'box-shadow: 0 0 2px '+this.terminal_.getForegroundColor()+';'+'border: 2px '+this.terminal_.getForegroundColor()+' solid;');if(!1){var header=document.createElement('div');header.style.cssText=('display: flex;'+'justify-content: flex-end;'+'height: '+headerHeight+';'+'background-color: '+this.terminal_.getForegroundColor()+';'+'color: '+this.terminal_.getBackgroundColor()+';'+'font-size: 16px;'+'font-family: '+this.terminal_.getFontFamily());container.appendChild(header);var button=document.createElement('div');button.setAttribute('role','button');button.style.cssText=('margin-top: -3px;'+'margin-right: 3px;'+'cursor: pointer;');button.textContent='\u2a2f';button.addEventListener('click',this.onCloseClicked_.bind(this));header.appendChild(button)} + var iframe=this.iframe_=document.createElement('iframe');iframe.onload=this.onLoad_.bind(this);iframe.style.cssText=('display: flex;'+'flex: 1;'+'width: 100%');iframe.setAttribute('src',this.url);iframe.setAttribute('seamless',!0);container.appendChild(iframe);this.div_.appendChild(container)};'use strict';lib.rtdep('hterm.Keyboard.KeyMap');hterm.Keyboard=function(terminal){this.terminal=terminal;this.keyboardElement_=null;this.handlers_=[['focusout',this.onFocusOut_.bind(this)],['keydown',this.onKeyDown_.bind(this)],['keypress',this.onKeyPress_.bind(this)],['keyup',this.onKeyUp_.bind(this)],['textInput',this.onTextInput_.bind(this)]];this.keyMap=new hterm.Keyboard.KeyMap(this);this.bindings=new hterm.Keyboard.Bindings(this);this.altGrMode='none';this.shiftInsertPaste=!0;this.homeKeysScroll=!1;this.pageKeysScroll=!1;this.ctrlPlusMinusZeroZoom=!0;this.ctrlCCopy=!1;this.ctrlVPaste=!1;this.applicationKeypad=!1;this.applicationCursor=!1;this.backspaceSendsBackspace=!1;this.characterEncoding='utf-8';this.metaSendsEscape=!0;this.passMetaV=!0;this.altSendsWhat='escape';this.altIsMeta=!1;this.altBackspaceIsMetaBackspace=!1;this.altKeyPressed=0;this.mediaKeysAreFKeys=!1;this.previousAltSendsWhat_=null};hterm.Keyboard.KeyActions={CANCEL:lib.f.createEnum('CANCEL'),DEFAULT:lib.f.createEnum('DEFAULT'),PASS:lib.f.createEnum('PASS'),STRIP:lib.f.createEnum('STRIP')};hterm.Keyboard.prototype.encode=function(str){if(this.characterEncoding=='utf-8') + return this.terminal.vt.encodeUTF8(str);return str};hterm.Keyboard.prototype.installKeyboard=function(element){if(element==this.keyboardElement_) + return;if(element&&this.keyboardElement_) + this.installKeyboard(null);for(var i=0;i=32){ch=e.charCode} + if(ch) + this.terminal.onVTKeystroke(String.fromCharCode(ch));e.preventDefault();e.stopPropagation()};hterm.Keyboard.prototype.preventChromeAppNonCtrlShiftDefault_=function(e){if(!window.chrome||!window.chrome.app||!window.chrome.app.window) + return;if(!e.ctrlKey||!e.shiftKey) + e.preventDefault()};hterm.Keyboard.prototype.onFocusOut_=function(e){this.altKeyPressed=0};hterm.Keyboard.prototype.onKeyUp_=function(e){if(e.keyCode==18) + this.altKeyPressed=this.altKeyPressed&~(1<<(e.location-1));if(e.keyCode==27) + this.preventChromeAppNonCtrlShiftDefault_(e)};hterm.Keyboard.prototype.onKeyDown_=function(e){if(e.keyCode==18) + this.altKeyPressed=this.altKeyPressed|(1<<(e.location-1));if(e.keyCode==27) + this.preventChromeAppNonCtrlShiftDefault_(e);var keyDef=this.keyMap.keyDefs[e.keyCode];if(!keyDef){console.warn(`No definition for key ${e.key} (keyCode ${e.keyCode})`);keyDef=this.keyMap.keyDefs[0];this.keyMap.addKeyDef(e.keyCode,keyDef)} + var resolvedActionType=null;var self=this;function getAction(name){resolvedActionType=name;var action=keyDef[name];if(typeof action=='function') + action=action.apply(self.keyMap,[e,keyDef]);if(action===DEFAULT&&name!='normal') + action=getAction('normal');return action} + var CANCEL=hterm.Keyboard.KeyActions.CANCEL;var DEFAULT=hterm.Keyboard.KeyActions.DEFAULT;var PASS=hterm.Keyboard.KeyActions.PASS;var STRIP=hterm.Keyboard.KeyActions.STRIP;var control=e.ctrlKey;var alt=this.altIsMeta?!1:e.altKey;var meta=this.altIsMeta?(e.altKey||e.metaKey):e.metaKey;var isPrintable=!(/^\[\w+\]$/.test(keyDef.keyCap));switch(this.altGrMode){case 'ctrl-alt':if(isPrintable&&control&&alt){control=!1;alt=!1} + break;case 'right-alt':if(isPrintable&&(this.terminal.keyboard.altKeyPressed&2)){control=!1;alt=!1} + break;case 'left-alt':if(isPrintable&&(this.terminal.keyboard.altKeyPressed&1)){control=!1;alt=!1} + break} + var action;if(control){action=getAction('control')}else if(alt){action=getAction('alt')}else if(meta){action=getAction('meta')}else{action=getAction('normal')} + var shift=!e.maskShiftKey&&e.shiftKey;var keyDown={keyCode:e.keyCode,shift:e.shiftKey,ctrl:control,alt:alt,meta:meta};var binding=this.bindings.getBinding(keyDown);if(binding){shift=control=alt=meta=!1;resolvedActionType='normal';action=binding.action;if(typeof action=='function') + action=action.call(this,this.terminal,keyDown)} + if(alt&&this.altSendsWhat=='browser-key'&&action==DEFAULT){action=PASS} + if(action===PASS||(action===DEFAULT&&!(control||alt||meta))){return} + if(action===STRIP){alt=control=!1;action=keyDef.normal;if(typeof action=='function') + action=action.apply(this.keyMap,[e,keyDef]);if(action==DEFAULT&&keyDef.keyCap.length==2) + action=keyDef.keyCap.substr((shift?1:0),1)} + e.preventDefault();e.stopPropagation();if(action===CANCEL) + return;if(action!==DEFAULT&&typeof action!='string'){console.warn('Invalid action: '+JSON.stringify(action));return} + if(resolvedActionType=='control'){control=!1}else if(resolvedActionType=='alt'){alt=!1}else if(resolvedActionType=='meta'){meta=!1} + if(action.substr(0,2)=='\x1b['&&(alt||control||shift||meta)){let imod=1;if(shift) + imod+=1;if(alt) + imod+=2;if(control) + imod+=4;if(meta) + imod+=8;let mod=';'+imod;if(action.length==3){action='\x1b[1'+mod+action.substr(2,1)}else{action=action.substr(0,action.length-1)+mod+action.substr(action.length-1)}}else{if(action===DEFAULT){action=keyDef.keyCap.substr((shift?1:0),1);if(control){var unshifted=keyDef.keyCap.substr(0,1);var code=unshifted.charCodeAt(0);if(code>=64&&code<=95){action=String.fromCharCode(code-64)}}} + if(alt&&this.altSendsWhat=='8-bit'&&action.length==1){var code=action.charCodeAt(0)+128;action=String.fromCharCode(code)} + if((alt&&this.altSendsWhat=='escape')||(meta&&this.metaSendsEscape)){action='\x1b'+action}} + this.terminal.onVTKeystroke(action)};'use strict';hterm.Keyboard.Bindings=function(){this.bindings_={}};hterm.Keyboard.Bindings.prototype.clear=function(){this.bindings_={}};hterm.Keyboard.Bindings.prototype.addBinding_=function(keyPattern,action){var binding=null;var list=this.bindings_[keyPattern.keyCode];if(list){for(var i=0;i',DEFAULT,alt(STRIP,PASS),DEFAULT,DEFAULT],[191,'/?',DEFAULT,sh(ctl('_'),ctl('?')),DEFAULT,DEFAULT],[17,'[CTRL]',PASS,PASS,PASS,PASS],[18,'[ALT]',PASS,PASS,PASS,PASS],[91,'[LAPL]',PASS,PASS,PASS,PASS],[32,' ',DEFAULT,ctl('@'),DEFAULT,DEFAULT],[92,'[RAPL]',PASS,PASS,PASS,PASS],[93,'[RMENU]',PASS,PASS,PASS,PASS],[42,'[PRTSCR]',PASS,PASS,PASS,PASS],[145,'[SCRLK]',PASS,PASS,PASS,PASS],[19,'[BREAK]',PASS,PASS,PASS,PASS],[45,'[INSERT]',c('onKeyInsert_'),DEFAULT,DEFAULT,DEFAULT],[36,'[HOME]',c('onKeyHome_'),DEFAULT,DEFAULT,DEFAULT],[33,'[PGUP]',c('onKeyPageUp_'),DEFAULT,DEFAULT,DEFAULT],[46,'[DEL]',c('onKeyDel_'),DEFAULT,DEFAULT,DEFAULT],[35,'[END]',c('onKeyEnd_'),DEFAULT,DEFAULT,DEFAULT],[34,'[PGDOWN]',c('onKeyPageDown_'),DEFAULT,DEFAULT,DEFAULT],[38,'[UP]',c('onKeyArrowUp_'),DEFAULT,DEFAULT,DEFAULT],[40,'[DOWN]',c('onKeyArrowDown_'),DEFAULT,DEFAULT,DEFAULT],[39,'[RIGHT]',ac(CSI+'C',SS3+'C'),DEFAULT,DEFAULT,DEFAULT],[37,'[LEFT]',ac(CSI+'D',SS3+'D'),DEFAULT,DEFAULT,DEFAULT],[144,'[NUMLOCK]',PASS,PASS,PASS,PASS],[12,'[CLEAR]',PASS,PASS,PASS,PASS],[96,'[KP0]',DEFAULT,DEFAULT,DEFAULT,DEFAULT],[97,'[KP1]',DEFAULT,DEFAULT,DEFAULT,DEFAULT],[98,'[KP2]',DEFAULT,DEFAULT,DEFAULT,DEFAULT],[99,'[KP3]',DEFAULT,DEFAULT,DEFAULT,DEFAULT],[100,'[KP4]',DEFAULT,DEFAULT,DEFAULT,DEFAULT],[101,'[KP5]',DEFAULT,DEFAULT,DEFAULT,DEFAULT],[102,'[KP6]',DEFAULT,DEFAULT,DEFAULT,DEFAULT],[103,'[KP7]',DEFAULT,DEFAULT,DEFAULT,DEFAULT],[104,'[KP8]',DEFAULT,DEFAULT,DEFAULT,DEFAULT],[105,'[KP9]',DEFAULT,DEFAULT,DEFAULT,DEFAULT],[107,'[KP+]',DEFAULT,c('onPlusMinusZero_'),DEFAULT,c('onPlusMinusZero_')],[109,'[KP-]',DEFAULT,c('onPlusMinusZero_'),DEFAULT,c('onPlusMinusZero_')],[106,'[KP*]',DEFAULT,DEFAULT,DEFAULT,DEFAULT],[111,'[KP/]',DEFAULT,DEFAULT,DEFAULT,DEFAULT],[110,'[KP.]',DEFAULT,DEFAULT,DEFAULT,DEFAULT]);if(hterm.os=='cros'){this.addKeyDefs([166,'[BACK]',med(mod(SS3+'P',CSI+'P')),DEFAULT,CSI+'23~',DEFAULT],[167,'[FWD]',med(mod(SS3+'Q',CSI+'Q')),DEFAULT,CSI+'24~',DEFAULT],[168,'[RELOAD]',med(mod(SS3+'R',CSI+'R')),DEFAULT,CSI+'25~',DEFAULT],[183,'[FSCR]',med(mod(SS3+'S',CSI+'S')),DEFAULT,CSI+'26~',DEFAULT],[182,'[WINS]',med(CSI+'15~'),DEFAULT,CSI+'28~',DEFAULT],[216,'[BRIT-]',med(CSI+'17~'),DEFAULT,CSI+'29~',DEFAULT],[217,'[BRIT+]',med(CSI+'18~'),DEFAULT,CSI+'31~',DEFAULT],[173,'[MUTE]',med(CSI+'19~'),DEFAULT,CSI+'32~',DEFAULT],[174,'[VOL-]',med(CSI+'20~'),DEFAULT,CSI+'33~',DEFAULT],[175,'[VOL+]',med(CSI+'21~'),DEFAULT,CSI+'34~',DEFAULT],[152,'[POWER]',DEFAULT,DEFAULT,DEFAULT,DEFAULT],[179,'[PLAY]',med(CSI+'18~'),DEFAULT,CSI+'31~',DEFAULT],[154,'[DOGS]',med(CSI+'23~'),DEFAULT,CSI+'42~',DEFAULT],[153,'[ASSIST]',DEFAULT,DEFAULT,DEFAULT,DEFAULT])}};hterm.Keyboard.KeyMap.prototype.onKeyInsert_=function(e){if(this.keyboard.shiftInsertPaste&&e.shiftKey) + return hterm.Keyboard.KeyActions.PASS;return'\x1b[2~'};hterm.Keyboard.KeyMap.prototype.onKeyHome_=function(e){if(!this.keyboard.homeKeysScroll^e.shiftKey){if((e.altey||e.ctrlKey||e.shiftKey)||!this.keyboard.applicationCursor){return'\x1b[H'} + return'\x1bOH'} + this.keyboard.terminal.scrollHome();return hterm.Keyboard.KeyActions.CANCEL};hterm.Keyboard.KeyMap.prototype.onKeyEnd_=function(e){if(!this.keyboard.homeKeysScroll^e.shiftKey){if((e.altKey||e.ctrlKey||e.shiftKey)||!this.keyboard.applicationCursor){return'\x1b[F'} + return'\x1bOF'} + this.keyboard.terminal.scrollEnd();return hterm.Keyboard.KeyActions.CANCEL};hterm.Keyboard.KeyMap.prototype.onKeyPageUp_=function(e){if(!this.keyboard.pageKeysScroll^e.shiftKey) + return'\x1b[5~';this.keyboard.terminal.scrollPageUp();return hterm.Keyboard.KeyActions.CANCEL};hterm.Keyboard.KeyMap.prototype.onKeyDel_=function(e){if(this.keyboard.altBackspaceIsMetaBackspace&&this.keyboard.altKeyPressed&&!e.altKey) + return'\x1b\x7f';return'\x1b[3~'};hterm.Keyboard.KeyMap.prototype.onKeyPageDown_=function(e){if(!this.keyboard.pageKeysScroll^e.shiftKey) + return'\x1b[6~';this.keyboard.terminal.scrollPageDown();return hterm.Keyboard.KeyActions.CANCEL};hterm.Keyboard.KeyMap.prototype.onKeyArrowUp_=function(e){if(!this.keyboard.applicationCursor&&e.shiftKey){this.keyboard.terminal.scrollLineUp();return hterm.Keyboard.KeyActions.CANCEL} + return(e.shiftKey||e.ctrlKey||e.altKey||e.metaKey||!this.keyboard.applicationCursor)?'\x1b[A':'\x1bOA'};hterm.Keyboard.KeyMap.prototype.onKeyArrowDown_=function(e){if(!this.keyboard.applicationCursor&&e.shiftKey){this.keyboard.terminal.scrollLineDown();return hterm.Keyboard.KeyActions.CANCEL} + return(e.shiftKey||e.ctrlKey||e.altKey||e.metaKey||!this.keyboard.applicationCursor)?'\x1b[B':'\x1bOB'};hterm.Keyboard.KeyMap.prototype.onClear_=function(e,keyDef){this.keyboard.terminal.wipeContents();return hterm.Keyboard.KeyActions.CANCEL};hterm.Keyboard.KeyMap.prototype.onF11_=function(e,keyDef){if(hterm.windowType!='popup') + return hterm.Keyboard.KeyActions.PASS;else return'\x1b[23~'};hterm.Keyboard.KeyMap.prototype.onCtrlNum_=function(e,keyDef){function ctl(ch){return String.fromCharCode(ch.charCodeAt(0)-64)} + if(this.keyboard.terminal.passCtrlNumber&&!e.shiftKey) + return hterm.Keyboard.KeyActions.PASS;switch(keyDef.keyCap.substr(0,1)){case '1':return'1';case '2':return ctl('@');case '3':return ctl('[');case '4':return ctl('\\');case '5':return ctl(']');case '6':return ctl('^');case '7':return ctl('_');case '8':return'\x7f';case '9':return'9'}};hterm.Keyboard.KeyMap.prototype.onAltNum_=function(e,keyDef){if(this.keyboard.terminal.passAltNumber&&!e.shiftKey) + return hterm.Keyboard.KeyActions.PASS;return hterm.Keyboard.KeyActions.DEFAULT};hterm.Keyboard.KeyMap.prototype.onMetaNum_=function(e,keyDef){if(this.keyboard.terminal.passMetaNumber&&!e.shiftKey) + return hterm.Keyboard.KeyActions.PASS;return hterm.Keyboard.KeyActions.DEFAULT};hterm.Keyboard.KeyMap.prototype.onCtrlC_=function(e,keyDef){var selection=this.keyboard.terminal.getDocument().getSelection();if(!selection.isCollapsed){if(this.keyboard.ctrlCCopy&&!e.shiftKey){if(this.keyboard.terminal.clearSelectionAfterCopy){setTimeout(selection.collapseToEnd.bind(selection),50)} + return hterm.Keyboard.KeyActions.PASS} + if(!this.keyboard.ctrlCCopy&&e.shiftKey){if(this.keyboard.terminal.clearSelectionAfterCopy){setTimeout(selection.collapseToEnd.bind(selection),50)} + this.keyboard.terminal.copySelectionToClipboard();return hterm.Keyboard.KeyActions.CANCEL}} + return'\x03'};hterm.Keyboard.KeyMap.prototype.onCtrlN_=function(e,keyDef){if(e.shiftKey){window.open(document.location.href,'','chrome=no,close=yes,resize=yes,scrollbars=yes,'+'minimizable=yes,width='+window.innerWidth+',height='+window.innerHeight);return hterm.Keyboard.KeyActions.CANCEL} + return'\x0e'};hterm.Keyboard.KeyMap.prototype.onCtrlV_=function(e,keyDef){if((!e.shiftKey&&this.keyboard.ctrlVPaste)||(e.shiftKey&&!this.keyboard.ctrlVPaste)){if(this.keyboard.terminal.paste()) + return hterm.Keyboard.KeyActions.CANCEL;else return hterm.Keyboard.KeyActions.PASS} + return'\x16'};hterm.Keyboard.KeyMap.prototype.onMetaN_=function(e,keyDef){if(e.shiftKey){window.open(document.location.href,'','chrome=no,close=yes,resize=yes,scrollbars=yes,'+'minimizable=yes,width='+window.outerWidth+',height='+window.outerHeight);return hterm.Keyboard.KeyActions.CANCEL} + return hterm.Keyboard.KeyActions.DEFAULT};hterm.Keyboard.KeyMap.prototype.onMetaC_=function(e,keyDef){var document=this.keyboard.terminal.getDocument();if(e.shiftKey||document.getSelection().isCollapsed){return keyDef.keyCap.substr(e.shiftKey?1:0,1)} + if(this.keyboard.terminal.clearSelectionAfterCopy){setTimeout(function(){document.getSelection().collapseToEnd()},50)} + return hterm.Keyboard.KeyActions.PASS};hterm.Keyboard.KeyMap.prototype.onMetaV_=function(e,keyDef){if(e.shiftKey) + return hterm.Keyboard.KeyActions.PASS;return this.keyboard.passMetaV?hterm.Keyboard.KeyActions.PASS:hterm.Keyboard.KeyActions.DEFAULT};hterm.Keyboard.KeyMap.prototype.onPlusMinusZero_=function(e,keyDef){if(!(this.keyboard.ctrlPlusMinusZeroZoom^e.shiftKey)){if(keyDef.keyCap=='-_') + return'\x1f';return hterm.Keyboard.KeyActions.CANCEL} + if(this.keyboard.terminal.getZoomFactor()!=1){return hterm.Keyboard.KeyActions.PASS} + var cap=keyDef.keyCap.substr(0,1);if(cap=='0'){this.keyboard.terminal.setFontSize(0)}else{var size=this.keyboard.terminal.getFontSize();if(cap=='-'||keyDef.keyCap=='[KP-]'){size-=1}else{size+=1} + this.keyboard.terminal.setFontSize(size)} + return hterm.Keyboard.KeyActions.CANCEL};'use strict';hterm.Keyboard.KeyPattern=function(spec){this.wildcardCount=0;this.keyCode=spec.keyCode;hterm.Keyboard.KeyPattern.modifiers.forEach(function(mod){this[mod]=spec[mod]||!1;if(this[mod]=='*') + this.wildcardCount++}.bind(this))};hterm.Keyboard.KeyPattern.modifiers=['shift','ctrl','alt','meta'];hterm.Keyboard.KeyPattern.sortCompare=function(a,b){if(a.wildcardCountb.wildcardCount) + return 1;return 0};hterm.Keyboard.KeyPattern.prototype.match_=function(obj,exactMatch){if(this.keyCode!=obj.keyCode) + return!1;var rv=!0;hterm.Keyboard.KeyPattern.modifiers.forEach(function(mod){var modValue=(mod in obj)?obj[mod]:!1;if(!rv||(!exactMatch&&this[mod]=='*')||this[mod]==modValue) + return;rv=!1}.bind(this));return rv};hterm.Keyboard.KeyPattern.prototype.matchKeyDown=function(keyDown){return this.match_(keyDown,!1)};hterm.Keyboard.KeyPattern.prototype.matchKeyPattern=function(keyPattern){return this.match_(keyPattern,!0)};'use strict';hterm.Options=function(opt_copy){this.wraparound=opt_copy?opt_copy.wraparound:!0;this.reverseWraparound=opt_copy?opt_copy.reverseWraparound:!1;this.originMode=opt_copy?opt_copy.originMode:!1;this.autoCarriageReturn=opt_copy?opt_copy.autoCarriageReturn:!1;this.cursorVisible=opt_copy?opt_copy.cursorVisible:!1;this.cursorBlink=opt_copy?opt_copy.cursorBlink:!1;this.insertMode=opt_copy?opt_copy.insertMode:!1;this.reverseVideo=opt_copy?opt_copy.reverseVideo:!1;this.bracketedPaste=opt_copy?opt_copy.bracketedPaste:!1};'use strict';lib.rtdep('hterm.Keyboard.KeyActions');hterm.Parser=function(){this.source='';this.pos=0;this.ch=null};hterm.Parser.prototype.error=function(message){return new Error('Parse error at '+this.pos+': '+message)};hterm.Parser.prototype.isComplete=function(){return this.pos==this.source.length};hterm.Parser.prototype.reset=function(source,opt_pos){this.source=source;this.pos=opt_pos||0;this.ch=source.substr(0,1)};hterm.Parser.prototype.parseKeySequence=function(){var rv={keyCode:null};for(var k in hterm.Parser.identifiers.modifierKeys){rv[hterm.Parser.identifiers.modifierKeys[k]]=!1} + while(this.pos{const profiles={};for(let key of Object.keys(items)){if(key.startsWith(hterm.PreferenceManager.prefix_)){const subKey=key.slice(hterm.PreferenceManager.prefix_.length);profiles[subKey.split('/',1)[0]]=!0}} + callback(Object.keys(profiles))})};hterm.PreferenceManager.categories={};hterm.PreferenceManager.categories.Keyboard='Keyboard';hterm.PreferenceManager.categories.Appearance='Appearance';hterm.PreferenceManager.categories.CopyPaste='CopyPaste';hterm.PreferenceManager.categories.Sounds='Sounds';hterm.PreferenceManager.categories.Scrolling='Scrolling';hterm.PreferenceManager.categories.Encoding='Encoding';hterm.PreferenceManager.categories.Extensions='Extensions';hterm.PreferenceManager.categories.Miscellaneous='Miscellaneous';hterm.PreferenceManager.categoryDefinitions=[{id:hterm.PreferenceManager.categories.Appearance,text:'Appearance (fonts, colors, images)'},{id:hterm.PreferenceManager.categories.CopyPaste,text:'Copy & Paste'},{id:hterm.PreferenceManager.categories.Encoding,text:'Encoding'},{id:hterm.PreferenceManager.categories.Keyboard,text:'Keyboard'},{id:hterm.PreferenceManager.categories.Scrolling,text:'Scrolling'},{id:hterm.PreferenceManager.categories.Sounds,text:'Sounds'},{id:hterm.PreferenceManager.categories.Extensions,text:'Extensions'},{id:hterm.PreferenceManager.categories.Miscellaneous,text:'Miscellaneous'}];hterm.PreferenceManager.defaultPreferences={'alt-gr-mode':[hterm.PreferenceManager.categories.Keyboard,null,[null,'none','ctrl-alt','left-alt','right-alt'],'Select an AltGr detection heuristic.\n'+'\n'+'\'null\': Autodetect based on navigator.language:\n'+' \'en-us\' => \'none\', else => \'right-alt\'\n'+'\'none\': Disable any AltGr related munging.\n'+'\'ctrl-alt\': Assume Ctrl+Alt means AltGr.\n'+'\'left-alt\': Assume left Alt means AltGr.\n'+'\'right-alt\': Assume right Alt means AltGr.'],'alt-backspace-is-meta-backspace':[hterm.PreferenceManager.categories.Keyboard,!1,'bool','If set, undoes the Chrome OS Alt-Backspace->DEL remap, so that '+'Alt-Backspace indeed is Alt-Backspace.'],'alt-is-meta':[hterm.PreferenceManager.categories.Keyboard,!1,'bool','Whether the Alt key acts as a Meta key or as a distinct Alt key.'],'alt-sends-what':[hterm.PreferenceManager.categories.Keyboard,'escape',['escape','8-bit','browser-key'],'Controls how the Alt key is handled.\n'+'\n'+' escape: Send an ESC prefix.\n'+' 8-bit: Add 128 to the typed character as in xterm.\n'+' browser-key: Wait for the keypress event and see what the browser\n'+' says. (This won\'t work well on platforms where the browser\n'+' performs a default action for some Alt sequences.)'],'audible-bell-sound':[hterm.PreferenceManager.categories.Sounds,'lib-resource:hterm/audio/bell','url','URL of the terminal bell sound. Empty string for no audible bell.'],'desktop-notification-bell':[hterm.PreferenceManager.categories.Sounds,!1,'bool','If true, terminal bells in the background will create a Web '+'Notification. https://www.w3.org/TR/notifications/\n'+'\n'+'Displaying notifications requires permission from the user. When this '+'option is set to true, hterm will attempt to ask the user for permission '+'if necessary. Browsers may not show this permission request if it was '+'not triggered by a user action.\n'+'\n'+'Chrome extensions with the "notifications" permission have permission to '+'display notifications.'],'background-color':[hterm.PreferenceManager.categories.Appearance,'rgb(16, 16, 16)','color','The background color for text with no other color attributes.'],'background-image':[hterm.PreferenceManager.categories.Appearance,'','string','CSS value of the background image. Empty string for no image.\n'+'\n'+'For example:\n'+' url(https://goo.gl/anedTK)\n'+' linear-gradient(top bottom, blue, red)'],'background-size':[hterm.PreferenceManager.categories.Appearance,'','string','CSS value of the background image size.'],'background-position':[hterm.PreferenceManager.categories.Appearance,'','string','CSS value of the background image position.\n'+'\n'+'For example:\n'+' 10% 10%\n'+' center'],'backspace-sends-backspace':[hterm.PreferenceManager.categories.Keyboard,!1,'bool','If true, the backspace should send BS (\'\\x08\', aka ^H). Otherwise '+'the backspace key should send \'\\x7f\'.'],'character-map-overrides':[hterm.PreferenceManager.categories.Appearance,null,'value','This is specified as an object. It is a sparse array, where each '+'property is the character set code and the value is an object that is '+'a sparse array itself. In that sparse array, each property is the '+'received character and the value is the displayed character.\n'+'\n'+'For example:\n'+' {"0":{"+":"\\u2192",",":"\\u2190","-":"\\u2191",".":"\\u2193", '+'"0":"\\u2588"}}'],'close-on-exit':[hterm.PreferenceManager.categories.Miscellaneous,!0,'bool','Whether to close the window when the command finishes executing.'],'cursor-blink':[hterm.PreferenceManager.categories.Appearance,!1,'bool','Whether the text cursor blinks by default. This can be toggled at '+'runtime via terminal escape sequences.'],'cursor-blink-cycle':[hterm.PreferenceManager.categories.Appearance,[1000,500],'value','The text cursor blink rate in milliseconds.\n'+'\n'+'A two element array, the first of which is how long the text cursor '+'should be on, second is how long it should be off.'],'cursor-color':[hterm.PreferenceManager.categories.Appearance,'rgba(255, 0, 0, 0.5)','color','The color of the visible text cursor.'],'color-palette-overrides':[hterm.PreferenceManager.categories.Appearance,null,'value','Override colors in the default palette.\n'+'\n'+'This can be specified as an array or an object. If specified as an '+'object it is assumed to be a sparse array, where each property '+'is a numeric index into the color palette.\n'+'\n'+'Values can be specified as almost any CSS color value. This '+'includes #RGB, #RRGGBB, rgb(...), rgba(...), and any color names '+'that are also part of the standard X11 rgb.txt file.\n'+'\n'+'You can use \'null\' to specify that the default value should be not '+'be changed. This is useful for skipping a small number of indices '+'when the value is specified as an array.\n'+'\n'+'For example, these both set color index 1 to blue:\n'+' {1: "#0000ff"}\n'+' [null, "#0000ff"]'],'copy-on-select':[hterm.PreferenceManager.categories.CopyPaste,!0,'bool','Automatically copy mouse selection to the clipboard.'],'use-default-window-copy':[hterm.PreferenceManager.categories.CopyPaste,!1,'bool','Whether to use the default browser/OS\'s copy behavior.\n'+'\n'+'Allow the browser/OS to handle the copy event directly which might '+'improve compatibility with some systems (where copying doesn\'t work '+'at all), but makes the text selection less robust.\n'+'\n'+'For example, long lines that were automatically line wrapped will '+'be copied with the newlines still in them.'],'clear-selection-after-copy':[hterm.PreferenceManager.categories.CopyPaste,!0,'bool','Whether to clear the selection after copying.'],'ctrl-plus-minus-zero-zoom':[hterm.PreferenceManager.categories.Keyboard,!0,'bool','If true, Ctrl-Plus/Minus/Zero controls zoom.\n'+'If false, Ctrl-Shift-Plus/Minus/Zero controls zoom, Ctrl-Minus sends ^_, '+'Ctrl-Plus/Zero do nothing.'],'ctrl-c-copy':[hterm.PreferenceManager.categories.Keyboard,!1,'bool','Ctrl-C copies if true, send ^C to host if false.\n'+'Ctrl-Shift-C sends ^C to host if true, copies if false.'],'ctrl-v-paste':[hterm.PreferenceManager.categories.Keyboard,!1,'bool','Ctrl-V pastes if true, send ^V to host if false.\n'+'Ctrl-Shift-V sends ^V to host if true, pastes if false.'],'east-asian-ambiguous-as-two-column':[hterm.PreferenceManager.categories.Keyboard,!1,'bool','Whether East Asian Ambiguous characters have two column width.'],'enable-8-bit-control':[hterm.PreferenceManager.categories.Keyboard,!1,'bool','True to enable 8-bit control characters, false to ignore them.\n'+'\n'+'We\'ll respect the two-byte versions of these control characters '+'regardless of this setting.'],'enable-bold':[hterm.PreferenceManager.categories.Appearance,null,'tristate','If true, use bold weight font for text with the bold/bright attribute. '+'False to use the normal weight font. Null to autodetect.'],'enable-bold-as-bright':[hterm.PreferenceManager.categories.Appearance,!0,'bool','If true, use bright colors (8-15 on a 16 color palette) for any text '+'with the bold attribute. False otherwise.'],'enable-blink':[hterm.PreferenceManager.categories.Appearance,!0,'bool','If true, respect the blink attribute. False to ignore it.'],'enable-clipboard-notice':[hterm.PreferenceManager.categories.CopyPaste,!0,'bool','Whether to show a message in the terminal when the host writes to the '+'clipboard.'],'enable-clipboard-write':[hterm.PreferenceManager.categories.CopyPaste,!0,'bool','Allow the remote host to write directly to the local system clipboard.\n'+'Read access is never granted regardless of this setting.\n'+'\n'+'This is used to control access to features like OSC-52.'],'enable-dec12':[hterm.PreferenceManager.categories.Miscellaneous,!1,'bool','Respect the host\'s attempt to change the text cursor blink status using '+'DEC Private Mode 12.'],'environment':[hterm.PreferenceManager.categories.Miscellaneous,{'NCURSES_NO_UTF8_ACS':'1','TERM':'xterm-256color','COLORTERM':'truecolor',},'value','The initial set of environment variables, as an object.'],'font-family':[hterm.PreferenceManager.categories.Appearance,'"DejaVu Sans Mono", "Noto Sans Mono", "Everson Mono", '+'FreeMono, Menlo, Terminal, monospace','string','Default font family for the terminal text.'],'font-size':[hterm.PreferenceManager.categories.Appearance,15,'int','The default font size in pixels.'],'font-smoothing':[hterm.PreferenceManager.categories.Appearance,'antialiased','string','CSS font-smoothing property.'],'foreground-color':[hterm.PreferenceManager.categories.Appearance,'rgb(240, 240, 240)','color','The foreground color for text with no other color attributes.'],'hide-mouse-while-typing':[hterm.PreferenceManager.categories.Keyboard,null,'tristate','Whether to automatically hide the mouse cursor when typing. '+'By default, autodetect whether the platform/OS handles this.\n'+'\n'+'Note: Some operating systems may override this setting and thus you '+'might not be able to always disable it.'],'home-keys-scroll':[hterm.PreferenceManager.categories.Keyboard,!1,'bool','If true, Home/End controls the terminal scrollbar and Shift-Home/'+'Shift-End are sent to the remote host. If false, then Home/End are '+'sent to the remote host and Shift-Home/Shift-End scrolls.'],'keybindings':[hterm.PreferenceManager.categories.Keyboard,null,'value','A map of key sequence to key actions. Key sequences include zero or '+'more modifier keys followed by a key code. Key codes can be decimal or '+'hexadecimal numbers, or a key identifier. Key actions can be specified '+'as a string to send to the host, or an action identifier. For a full '+'explanation of the format, see https://goo.gl/LWRndr.\n'+'\n'+'Sample keybindings:\n'+'{\n'+' "Ctrl-Alt-K": "clearScrollback",\n'+' "Ctrl-Shift-L": "PASS",\n'+' "Ctrl-H": "\'Hello World\'"\n'+'}'],'media-keys-are-fkeys':[hterm.PreferenceManager.categories.Keyboard,!1,'bool','If true, convert media keys to their Fkey equivalent. If false, let '+'the browser handle the keys.'],'meta-sends-escape':[hterm.PreferenceManager.categories.Keyboard,!0,'bool','Send an ESC prefix when pressing a key while holding the Meta key.\n'+'\n'+'For example, when enabled, pressing Meta-K will send ^[k as if you '+'typed Escape then k. When disabled, only k will be sent.'],'mouse-right-click-paste':[hterm.PreferenceManager.categories.CopyPaste,!0,'bool','Paste on right mouse button clicks.\n'+'\n'+'This option is independent of the "mouse-paste-button" setting.\n'+'\n'+'Note: This will handle left & right handed mice correctly.'],'mouse-paste-button':[hterm.PreferenceManager.categories.CopyPaste,null,[null,0,1,2,3,4,5,6],'Mouse paste button, or null to autodetect.\n'+'\n'+'For autodetect, we\'ll use the middle mouse button for non-X11 '+'platforms (including Chrome OS). On X11, we\'ll use the right mouse '+'button (since the native window manager should paste via the middle '+'mouse button).\n'+'\n'+'0 == left (primary) button.\n'+'1 == middle (auxiliary) button.\n'+'2 == right (secondary) button.\n'+'\n'+'This option is independent of the setting for right-click paste.\n'+'\n'+'Note: This will handle left & right handed mice correctly.'],'word-break-match-left':[hterm.PreferenceManager.categories.CopyPaste,'[^\\s\\[\\](){}<>"\'\\^!@#$%&*,;:`]','string','Regular expression to halt matching to the left (start) of a selection.\n'+'\n'+'Normally this is a character class to reject specific characters.\n'+'We allow "~" and "." by default as paths frequently start with those.'],'word-break-match-right':[hterm.PreferenceManager.categories.CopyPaste,'[^\\s\\[\\](){}<>"\'\\^!@#$%&*,;:~.`]','string','Regular expression to halt matching to the right (end) of a selection.\n'+'\n'+'Normally this is a character class to reject specific characters.'],'word-break-match-middle':[hterm.PreferenceManager.categories.CopyPaste,'[^\\s\\[\\](){}<>"\'\\^]*','string','Regular expression to match all the characters in the middle.\n'+'\n'+'Normally this is a character class to reject specific characters.\n'+'\n'+'Used to expand the selection surrounding the starting point.'],'page-keys-scroll':[hterm.PreferenceManager.categories.Keyboard,!1,'bool','If true, Page Up/Page Down controls the terminal scrollbar and '+'Shift-Page Up/Shift-Page Down are sent to the remote host. If false, '+'then Page Up/Page Down are sent to the remote host and Shift-Page Up/'+'Shift-Page Down scrolls.'],'pass-alt-number':[hterm.PreferenceManager.categories.Keyboard,null,'tristate','Whether Alt-1..9 is passed to the browser.\n'+'\n'+'This is handy when running hterm in a browser tab, so that you don\'t '+'lose Chrome\'s "switch to tab" keyboard accelerators. When not running '+'in a tab it\'s better to send these keys to the host so they can be '+'used in vim or emacs.\n'+'\n'+'If true, Alt-1..9 will be handled by the browser. If false, Alt-1..9 '+'will be sent to the host. If null, autodetect based on browser platform '+'and window type.'],'pass-ctrl-number':[hterm.PreferenceManager.categories.Keyboard,null,'tristate','Whether Ctrl-1..9 is passed to the browser.\n'+'\n'+'This is handy when running hterm in a browser tab, so that you don\'t '+'lose Chrome\'s "switch to tab" keyboard accelerators. When not running '+'in a tab it\'s better to send these keys to the host so they can be '+'used in vim or emacs.\n'+'\n'+'If true, Ctrl-1..9 will be handled by the browser. If false, Ctrl-1..9 '+'will be sent to the host. If null, autodetect based on browser platform '+'and window type.'],'pass-meta-number':[hterm.PreferenceManager.categories.Keyboard,null,'tristate','Whether Meta-1..9 is passed to the browser.\n'+'\n'+'This is handy when running hterm in a browser tab, so that you don\'t '+'lose Chrome\'s "switch to tab" keyboard accelerators. When not running '+'in a tab it\'s better to send these keys to the host so they can be '+'used in vim or emacs.\n'+'\n'+'If true, Meta-1..9 will be handled by the browser. If false, Meta-1..9 '+'will be sent to the host. If null, autodetect based on browser platform '+'and window type.'],'pass-meta-v':[hterm.PreferenceManager.categories.Keyboard,!0,'bool','Whether Meta-V gets passed to host.'],'receive-encoding':[hterm.PreferenceManager.categories.Encoding,'utf-8',['utf-8','raw'],'Set the expected encoding for data received from the host.\n'+'If the encodings do not match, visual bugs are likely to be observed.\n'+'\n'+'Valid values are \'utf-8\' and \'raw\'.'],'scroll-on-keystroke':[hterm.PreferenceManager.categories.Scrolling,!0,'bool','Whether to scroll to the bottom on any keystroke.'],'scroll-on-output':[hterm.PreferenceManager.categories.Scrolling,!1,'bool','Whether to scroll to the bottom on terminal output.'],'scrollbar-visible':[hterm.PreferenceManager.categories.Scrolling,!0,'bool','The vertical scrollbar mode.'],'scroll-wheel-may-send-arrow-keys':[hterm.PreferenceManager.categories.Scrolling,!1,'bool','When using the alternative screen buffer, and DECCKM (Application Cursor '+'Keys) is active, mouse wheel scroll events will emulate arrow keys.\n'+'\n'+'It can be temporarily disabled by holding the Shift key.\n'+'\n'+'This frequently comes up when using pagers (less) or reading man pages '+'or text editors (vi/nano) or using screen/tmux.'],'scroll-wheel-move-multiplier':[hterm.PreferenceManager.categories.Scrolling,1,'int','The multiplier for scroll wheel events when measured in pixels.\n'+'\n'+'Alters how fast the page scrolls.'],'send-encoding':[hterm.PreferenceManager.categories.Encoding,'utf-8',['utf-8','raw'],'Set the encoding for data sent to host.'],'terminal-encoding':[hterm.PreferenceManager.categories.Encoding,'utf-8',['iso-2022','utf-8','utf-8-locked'],'The default terminal encoding (DOCS).\n'+'\n'+'ISO-2022 enables character map translations (like graphics maps).\n'+'UTF-8 disables support for those.\n'+'\n'+'The locked variant means the encoding cannot be changed at runtime '+'via terminal escape sequences.\n'+'\n'+'You should stick with UTF-8 unless you notice broken rendering with '+'legacy applications.'],'shift-insert-paste':[hterm.PreferenceManager.categories.Keyboard,!0,'bool','Whether Shift-Insert is used for pasting or is sent to the remote host.'],'user-css':[hterm.PreferenceManager.categories.Appearance,'','url','URL of user stylesheet to include in the terminal document.'],'user-css-text':[hterm.PreferenceManager.categories.Appearance,'','multiline-string','Custom CSS text for styling the terminal.'],'allow-images-inline':[hterm.PreferenceManager.categories.Extensions,null,'tristate','Whether to allow the remote host to display images in the terminal.\n'+'\n'+'By default, we prompt until a choice is made.'],};hterm.PreferenceManager.prototype=Object.create(lib.PreferenceManager.prototype);hterm.PreferenceManager.constructor=hterm.PreferenceManager;'use strict';hterm.PubSub=function(){this.observers_={}};hterm.PubSub.addBehavior=function(obj){var pubsub=new hterm.PubSub();for(var m in hterm.PubSub.prototype){obj[m]=hterm.PubSub.prototype[m].bind(pubsub)}};hterm.PubSub.prototype.subscribe=function(subject,callback){if(!(subject in this.observers_)) + this.observers_[subject]=[];this.observers_[subject].push(callback)};hterm.PubSub.prototype.unsubscribe=function(subject,callback){var list=this.observers_[subject];if(!list) + throw 'Invalid subject: '+subject;var i=list.indexOf(callback);if(i<0) + throw 'Not subscribed: '+subject;list.splice(i,1)};hterm.PubSub.prototype.publish=function(subject,e,opt_lastCallback){function notifyList(i){if(i=count) + this.setCursorPosition(this.cursorPosition.row,count-1)};hterm.Screen.prototype.shiftRow=function(){return this.shiftRows(1)[0]};hterm.Screen.prototype.shiftRows=function(count){return this.rowsArray.splice(0,count)};hterm.Screen.prototype.unshiftRow=function(row){this.rowsArray.splice(0,0,row)};hterm.Screen.prototype.unshiftRows=function(rows){this.rowsArray.unshift.apply(this.rowsArray,rows)};hterm.Screen.prototype.popRow=function(){return this.popRows(1)[0]};hterm.Screen.prototype.popRows=function(count){return this.rowsArray.splice(this.rowsArray.length-count,count)};hterm.Screen.prototype.pushRow=function(row){this.rowsArray.push(row)};hterm.Screen.prototype.pushRows=function(rows){rows.push.apply(this.rowsArray,rows)};hterm.Screen.prototype.insertRow=function(index,row){this.rowsArray.splice(index,0,row)};hterm.Screen.prototype.insertRows=function(index,rows){for(var i=0;i=this.rowsArray.length){console.error('Row out of bounds: '+row);row=this.rowsArray.length-1}else if(row<0){console.error('Row out of bounds: '+row);row=0} + if(column>=this.columnCount_){console.error('Column out of bounds: '+column);column=this.columnCount_-1}else if(column<0){console.error('Column out of bounds: '+column);column=0} + this.cursorPosition.overflow=!1;var rowNode=this.rowsArray[row];var node=rowNode.firstChild;if(!node){node=rowNode.ownerDocument.createTextNode('');rowNode.appendChild(node)} + var currentColumn=0;if(rowNode==this.cursorRowNode_){if(column>=this.cursorPosition.column-this.cursorOffset_){node=this.cursorNode_;currentColumn=this.cursorPosition.column-this.cursorOffset_}}else{this.cursorRowNode_=rowNode} + this.cursorPosition.move(row,column);while(node){var offset=column-currentColumn;var width=hterm.TextAttributes.nodeWidth(node);if(!node.nextSibling||width>offset){this.cursorNode_=node;this.cursorOffset_=offset;return} + currentColumn+=width;node=node.nextSibling}};hterm.Screen.prototype.syncSelectionCaret=function(selection){try{selection.collapse(this.cursorNode_,this.cursorOffset_)}catch(firefoxIgnoredException){}};hterm.Screen.prototype.splitNode_=function(node,offset){var afterNode=node.cloneNode(!1);var textContent=node.textContent;node.textContent=hterm.TextAttributes.nodeSubstr(node,0,offset);afterNode.textContent=lib.wc.substr(textContent,offset);if(afterNode.textContent) + node.parentNode.insertBefore(afterNode,node.nextSibling);if(!node.textContent) + node.parentNode.removeChild(node)};hterm.Screen.prototype.maybeClipCurrentRow=function(){var width=hterm.TextAttributes.nodeWidth(this.cursorRowNode_);if(width<=this.columnCount_){if(this.cursorPosition.column>=this.columnCount_){this.setCursorPosition(this.cursorPosition.row,this.columnCount_-1);this.cursorPosition.overflow=!0} + return} + var currentColumn=this.cursorPosition.column;this.setCursorPosition(this.cursorPosition.row,this.columnCount_-1);width=hterm.TextAttributes.nodeWidth(this.cursorNode_);if(this.cursorOffset_hterm.TextAttributes.nodeWidth(row)){if(row.hasAttribute('line-overflow')&&row.nextSibling){position-=hterm.TextAttributes.nodeWidth(row);row=row.nextSibling}else{return-1}} + return this.getNodeAndOffsetWithinRow_(row,position)};hterm.Screen.prototype.getNodeAndOffsetWithinRow_=function(row,position){for(var i=0;istartPosition) + return;var lineFromRange=lib.wc.substring(rowText,startPosition,lib.wc.strWidth(rowText));var rightRegularExpression=new RegExp("^"+insideMatch+rightMatch);var found=lineFromRange.match(rightRegularExpression);if(!found) + return;var expandedEnd=startPosition+lib.wc.strWidth(found[0]);if(expandedEnd==-1||expandedEnd\"'\\^!@#$%&*,;:`]","[^\\s\\[\\](){}<>\"'\\^!@#$%&*,;:~.`]","[^\\s\\[\\](){}<>\"'\\^]*")};hterm.Screen.prototype.saveCursorAndState=function(vt){this.cursorState_.save(vt)};hterm.Screen.prototype.restoreCursorAndState=function(vt){this.cursorState_.restore(vt)};hterm.Screen.CursorState=function(screen){this.screen_=screen;this.cursor=null;this.textAttributes=null;this.GL=this.GR=this.G0=this.G1=this.G2=this.G3=null};hterm.Screen.CursorState.prototype.save=function(vt){this.cursor=vt.terminal.saveCursor();this.textAttributes=this.screen_.textAttributes.clone();this.GL=vt.GL;this.GR=vt.GR;this.G0=vt.G0;this.G1=vt.G1;this.G2=vt.G2;this.G3=vt.G3};hterm.Screen.CursorState.prototype.restore=function(vt){vt.terminal.restoreCursor(this.cursor);const tattrs=this.textAttributes.clone();tattrs.colorPalette=this.screen_.textAttributes.colorPalette;tattrs.syncColors();this.screen_.textAttributes=tattrs;vt.GL=this.GL;vt.GR=this.GR;vt.G0=this.G0;vt.G1=this.G1;vt.G2=this.G2;vt.G3=this.G3};'use strict';lib.rtdep('lib.f','hterm.PubSub','hterm.Size');hterm.ScrollPort=function(rowProvider){hterm.PubSub.addBehavior(this);this.rowProvider_=rowProvider;this.characterSize=new hterm.Size(10,10);this.ruler_=null;this.selection=new hterm.ScrollPort.Selection(this);this.currentRowNodeCache_=null;this.previousRowNodeCache_={};this.lastScreenWidth_=null;this.lastScreenHeight_=null;this.selectionEnabled_=!0;this.lastRowCount_=0;this.scrollWheelMultiplier_=1;this.lastTouch_={};this.isScrolledEnd=!0;this.currentScrollbarWidthPx=16;this.ctrlVPaste=!1;this.accessibilityEnabled_=!1;this.div_=null;this.document_=null;this.timeouts_={};this.observers_={};this.DEBUG_=!1};hterm.ScrollPort.Selection=function(scrollPort){this.scrollPort_=scrollPort;this.startRow=null;this.endRow=null;this.isMultiline=null;this.isCollapsed=null};hterm.ScrollPort.Selection.prototype.findFirstChild=function(parent,childAry){var node=parent.firstChild;while(node){if(childAry.indexOf(node)!=-1) + return node;if(node.childNodes.length){var rv=this.findFirstChild(node,childAry);if(rv) + return rv} + node=node.nextSibling} + return null};hterm.ScrollPort.Selection.prototype.sync=function(){var self=this;function anchorFirst(){self.startRow=anchorRow;self.startNode=selection.anchorNode;self.startOffset=selection.anchorOffset;self.endRow=focusRow;self.endNode=selection.focusNode;self.endOffset=selection.focusOffset} + function focusFirst(){self.startRow=focusRow;self.startNode=selection.focusNode;self.startOffset=selection.focusOffset;self.endRow=anchorRow;self.endNode=selection.anchorNode;self.endOffset=selection.anchorOffset} + var selection=this.scrollPort_.getDocument().getSelection();this.startRow=null;this.endRow=null;this.isMultiline=null;this.isCollapsed=!selection||selection.isCollapsed;if(!selection){return} + if(this.isCollapsed&&!this.scrollPort_.accessibilityEnabled_){return} + var anchorRow=selection.anchorNode;while(anchorRow&&anchorRow.nodeName!='X-ROW'){anchorRow=anchorRow.parentNode} + if(!anchorRow){return} + var focusRow=selection.focusNode;while(focusRow&&focusRow.nodeName!='X-ROW'){focusRow=focusRow.parentNode} + if(!focusRow){return} + if(anchorRow.rowIndexfocusRow.rowIndex){focusFirst()}else if(selection.focusNode==selection.anchorNode){if(selection.anchorOffset{this.selection.sync()});this.rowNodes_=doc.createElement('div');this.rowNodes_.id='hterm:row-nodes';this.rowNodes_.style.cssText=('display: block;'+'position: fixed;'+'overflow: hidden;'+'-webkit-user-select: text;'+'-moz-user-select: text;');this.screen_.appendChild(this.rowNodes_);this.topSelectBag_=doc.createElement('x-select-bag');this.topSelectBag_.style.cssText=('display: block;'+'overflow: hidden;'+'height: var(--hterm-charsize-height);'+'white-space: pre;');this.bottomSelectBag_=this.topSelectBag_.cloneNode();this.topFold_=doc.createElement('x-fold');this.topFold_.id='hterm:top-fold-for-row-selection';this.topFold_.style.cssText='display: block;';this.rowNodes_.appendChild(this.topFold_);this.bottomFold_=this.topFold_.cloneNode();this.bottomFold_.id='hterm:bottom-fold-for-row-selection';this.rowNodes_.appendChild(this.bottomFold_);this.scrollArea_=doc.createElement('div');this.scrollArea_.id='hterm:scrollarea';this.scrollArea_.style.cssText='visibility: hidden';this.screen_.appendChild(this.scrollArea_);var xmlns='http://www.w3.org/2000/svg';this.svg_=this.div_.ownerDocument.createElementNS(xmlns,'svg');this.svg_.id='hterm:zoom-detector';this.svg_.setAttribute('xmlns',xmlns);this.svg_.setAttribute('version','1.1');this.svg_.style.cssText=('position: absolute;'+'top: 0;'+'left: 0;'+'visibility: hidden');this.pasteTarget_=doc.createElement('textarea');this.pasteTarget_.id='hterm:ctrl-v-paste-target';this.pasteTarget_.setAttribute('tabindex','-1');this.pasteTarget_.setAttribute('aria-hidden','true');this.pasteTarget_.style.cssText=('position: absolute;'+'height: 1px;'+'width: 1px;'+'left: 0px; '+'bottom: 0px;'+'opacity: 0');this.pasteTarget_.contentEditable=!0;this.screen_.appendChild(this.pasteTarget_);this.pasteTarget_.addEventListener('textInput',this.handlePasteTargetTextInput_.bind(this));this.resize()};hterm.ScrollPort.prototype.setAccessibilityEnabled=function(enabled){this.accessibilityEnabled_=enabled};hterm.ScrollPort.prototype.setFontFamily=function(fontFamily,opt_smoothing){this.screen_.style.fontFamily=fontFamily;if(opt_smoothing){this.screen_.style.webkitFontSmoothing=opt_smoothing}else{this.screen_.style.webkitFontSmoothing=''} + this.syncCharacterSize()};hterm.ScrollPort.prototype.getFontFamily=function(){return this.screen_.style.fontFamily};hterm.ScrollPort.prototype.setUserCssUrl=function(url){if(url){this.userCssLink_.setAttribute('href',url);if(!this.userCssLink_.parentNode) + this.document_.head.appendChild(this.userCssLink_)}else if(this.userCssLink_.parentNode){this.document_.head.removeChild(this.userCssLink_)}};hterm.ScrollPort.prototype.setUserCssText=function(text){this.userCssText_.textContent=text};hterm.ScrollPort.prototype.focus=function(){this.iframe_.focus();this.screen_.focus()};hterm.ScrollPort.prototype.getForegroundColor=function(){return this.screen_.style.color};hterm.ScrollPort.prototype.setForegroundColor=function(color){this.screen_.style.color=color};hterm.ScrollPort.prototype.getBackgroundColor=function(){return this.screen_.style.backgroundColor};hterm.ScrollPort.prototype.setBackgroundColor=function(color){this.screen_.style.backgroundColor=color};hterm.ScrollPort.prototype.setBackgroundImage=function(image){this.screen_.style.backgroundImage=image};hterm.ScrollPort.prototype.setBackgroundSize=function(size){this.screen_.style.backgroundSize=size};hterm.ScrollPort.prototype.setBackgroundPosition=function(position){this.screen_.style.backgroundPosition=position};hterm.ScrollPort.prototype.setCtrlVPaste=function(ctrlVPaste){this.ctrlVPaste=ctrlVPaste};hterm.ScrollPort.prototype.getScreenSize=function(){var size=hterm.getClientSize(this.screen_);return{height:size.height,width:size.width-this.currentScrollbarWidthPx}};hterm.ScrollPort.prototype.getScreenWidth=function(){return this.getScreenSize().width};hterm.ScrollPort.prototype.getScreenHeight=function(){return this.getScreenSize().height};hterm.ScrollPort.prototype.getDocument=function(){return this.document_};hterm.ScrollPort.prototype.getScreenNode=function(){return this.screen_};hterm.ScrollPort.prototype.resetCache=function(){this.currentRowNodeCache_=null;this.previousRowNodeCache_={}};hterm.ScrollPort.prototype.setRowProvider=function(rowProvider){this.resetCache();this.rowProvider_=rowProvider;this.scheduleRedraw()};hterm.ScrollPort.prototype.invalidate=function(){var node=this.topFold_.nextSibling;while(node!=this.bottomFold_){var nextSibling=node.nextSibling;node.parentElement.removeChild(node);node=nextSibling} + this.previousRowNodeCache_=null;var topRowIndex=this.getTopRowIndex();var bottomRowIndex=this.getBottomRowIndex(topRowIndex);this.drawVisibleRows_(topRowIndex,bottomRowIndex)};hterm.ScrollPort.prototype.scheduleInvalidate=function(){if(this.timeouts_.invalidate) + return;var self=this;this.timeouts_.invalidate=setTimeout(function(){delete self.timeouts_.invalidate;self.invalidate()},0)};hterm.ScrollPort.prototype.setFontSize=function(px){this.screen_.style.fontSize=px+'px';this.syncCharacterSize()};hterm.ScrollPort.prototype.getFontSize=function(){return parseInt(this.screen_.style.fontSize)};hterm.ScrollPort.prototype.measureCharacterSize=function(opt_weight){var numberOfLines=100;var lineLength=100;if(!this.ruler_){this.ruler_=this.document_.createElement('div');this.ruler_.id='hterm:ruler-character-size';this.ruler_.style.cssText=('position: absolute;'+'top: 0;'+'left: 0;'+'visibility: hidden;'+'height: auto !important;'+'width: auto !important;');this.rulerSpan_=this.document_.createElement('span');this.rulerSpan_.id='hterm:ruler-span-workaround';this.rulerSpan_.innerHTML=('X'.repeat(lineLength)+'\r').repeat(numberOfLines);this.ruler_.appendChild(this.rulerSpan_);this.rulerBaseline_=this.document_.createElement('span');this.rulerSpan_.id='hterm:ruler-baseline';this.rulerBaseline_.style.fontSize='0px';this.rulerBaseline_.textContent='X'} + this.rulerSpan_.style.fontWeight=opt_weight||'';this.rowNodes_.appendChild(this.ruler_);var rulerSize=hterm.getClientSize(this.rulerSpan_);var size=new hterm.Size(rulerSize.width/lineLength,rulerSize.height/numberOfLines);this.ruler_.appendChild(this.rulerBaseline_);size.baseline=this.rulerBaseline_.offsetTop;this.ruler_.removeChild(this.rulerBaseline_);this.rowNodes_.removeChild(this.ruler_);this.div_.ownerDocument.body.appendChild(this.svg_);size.zoomFactor=this.svg_.currentScale;this.div_.ownerDocument.body.removeChild(this.svg_);return size};hterm.ScrollPort.prototype.syncCharacterSize=function(){this.characterSize=this.measureCharacterSize();this.resize()};hterm.ScrollPort.prototype.resize=function(){this.currentScrollbarWidthPx=hterm.getClientWidth(this.screen_)-this.screen_.clientWidth;this.syncScrollHeight();this.syncRowNodesDimensions_();var self=this;this.publish('resize',{scrollPort:this},function(){self.scrollRowToBottom(self.rowProvider_.getRowCount());self.scheduleRedraw()})};hterm.ScrollPort.prototype.syncRowNodesDimensions_=function(){var screenSize=this.getScreenSize();this.lastScreenWidth_=screenSize.width;this.lastScreenHeight_=screenSize.height;this.visibleRowCount=lib.f.smartFloorDivide(screenSize.height,this.characterSize.height);var visibleRowsHeight=this.visibleRowCount*this.characterSize.height;this.visibleRowTopMargin=0;this.visibleRowBottomMargin=screenSize.height-visibleRowsHeight;this.topFold_.style.marginBottom=this.visibleRowTopMargin+'px';var topFoldOffset=0;var node=this.topFold_.previousSibling;while(node){topFoldOffset+=hterm.getClientHeight(node);node=node.previousSibling} + this.rowNodes_.style.width=screenSize.width+'px';this.rowNodes_.style.height=visibleRowsHeight+topFoldOffset+'px';this.rowNodes_.style.left=this.screen_.offsetLeft+'px';this.rowNodes_.style.top=this.screen_.offsetTop-topFoldOffset+'px'};hterm.ScrollPort.prototype.syncScrollHeight=function(){this.lastRowCount_=this.rowProvider_.getRowCount();this.scrollArea_.style.height=(this.characterSize.height*this.lastRowCount_+this.visibleRowTopMargin+this.visibleRowBottomMargin+'px')};hterm.ScrollPort.prototype.scheduleRedraw=function(){if(this.timeouts_.redraw) + return;var self=this;this.timeouts_.redraw=setTimeout(function(){delete self.timeouts_.redraw;self.redraw_()},0)};hterm.ScrollPort.prototype.redraw_=function(){this.resetSelectBags_();this.selection.sync();this.syncScrollHeight();this.currentRowNodeCache_={};var topRowIndex=this.getTopRowIndex();var bottomRowIndex=this.getBottomRowIndex(topRowIndex);this.drawTopFold_(topRowIndex);this.drawBottomFold_(bottomRowIndex);this.drawVisibleRows_(topRowIndex,bottomRowIndex);this.syncRowNodesDimensions_();this.previousRowNodeCache_=this.currentRowNodeCache_;this.currentRowNodeCache_=null;this.isScrolledEnd=(this.getTopRowIndex()+this.visibleRowCount>=this.lastRowCount_)};hterm.ScrollPort.prototype.drawTopFold_=function(topRowIndex){if(!this.selection.startRow||this.selection.startRow.rowIndex>=topRowIndex){if(this.rowNodes_.firstChild!=this.topFold_) + this.rowNodes_.insertBefore(this.topFold_,this.rowNodes_.firstChild);return} + if(!this.selection.isMultiline||this.selection.endRow.rowIndex>=topRowIndex){if(this.selection.startRow.nextSibling!=this.topFold_) + this.rowNodes_.insertBefore(this.topFold_,this.selection.startRow.nextSibling)}else{if(this.selection.endRow.nextSibling!=this.topFold_){this.rowNodes_.insertBefore(this.topFold_,this.selection.endRow.nextSibling)} + while(this.selection.startRow.nextSibling!=this.selection.endRow){this.rowNodes_.removeChild(this.selection.startRow.nextSibling)}} + while(this.rowNodes_.firstChild!=this.selection.startRow){this.rowNodes_.removeChild(this.rowNodes_.firstChild)}};hterm.ScrollPort.prototype.drawBottomFold_=function(bottomRowIndex){if(!this.selection.endRow||this.selection.endRow.rowIndex<=bottomRowIndex){if(this.rowNodes_.lastChild!=this.bottomFold_) + this.rowNodes_.appendChild(this.bottomFold_);return} + if(!this.selection.isMultiline||this.selection.startRow.rowIndex<=bottomRowIndex){if(this.bottomFold_.nextSibling!=this.selection.endRow) + this.rowNodes_.insertBefore(this.bottomFold_,this.selection.endRow)}else{if(this.bottomFold_.nextSibling!=this.selection.startRow){this.rowNodes_.insertBefore(this.bottomFold_,this.selection.startRow)} + while(this.selection.startRow.nextSibling!=this.selection.endRow){this.rowNodes_.removeChild(this.selection.startRow.nextSibling)}} + while(this.rowNodes_.lastChild!=this.selection.endRow){this.rowNodes_.removeChild(this.rowNodes_.lastChild)}};hterm.ScrollPort.prototype.drawVisibleRows_=function(topRowIndex,bottomRowIndex){var self=this;function removeUntilNode(currentNode,targetNode){while(currentNode!=targetNode){if(!currentNode) + throw 'Did not encounter target node';if(currentNode==self.bottomFold_) + throw 'Encountered bottom fold before target node';var deadNode=currentNode;currentNode=currentNode.nextSibling;deadNode.parentNode.removeChild(deadNode)}} + var selectionStartRow=this.selection.startRow;var selectionEndRow=this.selection.endRow;var bottomFold=this.bottomFold_;var node=this.topFold_.nextSibling;var targetDrawCount=Math.min(this.visibleRowCount,this.rowProvider_.getRowCount());for(var drawCount=0;drawCount=this.lastRowCount_);var scrollTop=rowIndex*this.characterSize.height+this.visibleRowTopMargin;var scrollMax=this.getScrollMax_();if(scrollTop>scrollMax) + scrollTop=scrollMax;if(this.screen_.scrollTop==scrollTop) + return;this.screen_.scrollTop=scrollTop;this.scheduleRedraw()};hterm.ScrollPort.prototype.scrollRowToBottom=function(rowIndex){this.syncScrollHeight();this.isScrolledEnd=(rowIndex+this.visibleRowCount>=this.lastRowCount_);var scrollTop=rowIndex*this.characterSize.height+this.visibleRowTopMargin+this.visibleRowBottomMargin;scrollTop-=this.visibleRowCount*this.characterSize.height;if(scrollTop<0) + scrollTop=0;if(this.screen_.scrollTop==scrollTop) + return;this.screen_.scrollTop=scrollTop};hterm.ScrollPort.prototype.getTopRowIndex=function(){return Math.round(this.screen_.scrollTop/this.characterSize.height)};hterm.ScrollPort.prototype.getBottomRowIndex=function(topRowIndex){return topRowIndex+this.visibleRowCount-1};hterm.ScrollPort.prototype.onScroll_=function(e){var screenSize=this.getScreenSize();if(screenSize.width!=this.lastScreenWidth_||screenSize.height!=this.lastScreenHeight_){this.resize();return} + this.redraw_();this.publish('scroll',{scrollPort:this})};hterm.ScrollPort.prototype.onScrollWheel=function(e){};hterm.ScrollPort.prototype.onScrollWheel_=function(e){this.onScrollWheel(e);if(e.defaultPrevented) + return;var delta=this.scrollWheelDelta(e);var top=this.screen_.scrollTop-delta;if(top<0) + top=0;var scrollMax=this.getScrollMax_();if(top>scrollMax) + top=scrollMax;if(top!=this.screen_.scrollTop){this.screen_.scrollTop=top;e.preventDefault()}};hterm.ScrollPort.prototype.scrollWheelDelta=function(e){var delta;switch(e.deltaMode){case WheelEvent.DOM_DELTA_PIXEL:delta=e.deltaY*this.scrollWheelMultiplier_;break;case WheelEvent.DOM_DELTA_LINE:delta=e.deltaY*this.characterSize.height;break;case WheelEvent.DOM_DELTA_PAGE:delta=e.deltaY*this.characterSize.height*this.screen_.getHeight();break} + return delta*-1};hterm.ScrollPort.prototype.onTouch=function(e){};hterm.ScrollPort.prototype.onTouch_=function(e){this.onTouch(e);if(e.defaultPrevented) + return;var scrubTouch=function(t){return{id:t.identifier,y:t.clientY,x:t.clientX,}};var i,touch;switch(e.type){case 'touchstart':for(i=0;iscrollMax) + top=scrollMax;if(top!=this.screen_.scrollTop){this.screen_.scrollTop=top} + break} + e.preventDefault()};hterm.ScrollPort.prototype.onResize_=function(e){this.syncCharacterSize()};hterm.ScrollPort.prototype.onCopy=function(e){};hterm.ScrollPort.prototype.onCopy_=function(e){this.onCopy(e);if(e.defaultPrevented) + return;this.resetSelectBags_();this.selection.sync();if(this.selection.isCollapsed||this.selection.endRow.rowIndex-this.selection.startRow.rowIndex<2){return} + var topRowIndex=this.getTopRowIndex();var bottomRowIndex=this.getBottomRowIndex(topRowIndex);if(this.selection.startRow.rowIndexbottomRowIndex){var startBackfillIndex;if(this.selection.startRow.rowIndex>bottomRowIndex){startBackfillIndex=this.selection.startRow.rowIndex+1}else{startBackfillIndex=this.bottomFold_.previousSibling.rowIndex+1} + this.bottomSelectBag_.textContent=this.rowProvider_.getRowsText(startBackfillIndex,this.selection.endRow.rowIndex);this.rowNodes_.insertBefore(this.bottomSelectBag_,this.selection.endRow)}};hterm.ScrollPort.prototype.onBodyKeyDown_=function(e){if(!this.ctrlVPaste) + return;var key=String.fromCharCode(e.which);var lowerKey=key.toLowerCase();if((e.ctrlKey||e.metaKey)&&lowerKey=="v") + this.pasteTarget_.focus()};hterm.ScrollPort.prototype.onPaste_=function(e){this.pasteTarget_.focus();var self=this;setTimeout(function(){self.publish('paste',{text:self.pasteTarget_.value});self.pasteTarget_.value='';self.screen_.focus()},0)};hterm.ScrollPort.prototype.handlePasteTargetTextInput_=function(e){e.stopPropagation()};hterm.ScrollPort.prototype.onDragAndDrop_=function(e){e.preventDefault();let data;let format;if(e.shiftKey){e.dataTransfer.types.forEach((t)=>{if(!format&&t!='text/plain'&&t.startsWith('text/')) + format=t});if(format) + data=e.dataTransfer.getData(format)} + if(!data) + data=e.dataTransfer.getData('text/plain');if(data) + this.publish('paste',{text:data})};hterm.ScrollPort.prototype.setScrollbarVisible=function(state){this.screen_.style.overflowY=state?'scroll':'hidden'};hterm.ScrollPort.prototype.setScrollWheelMoveMultipler=function(multiplier){this.scrollWheelMultiplier_=multiplier};'use strict';lib.rtdep('lib.colors','lib.PreferenceManager','lib.resource','lib.wc','lib.f','hterm.AccessibilityReader','hterm.Keyboard','hterm.Options','hterm.PreferenceManager','hterm.Screen','hterm.ScrollPort','hterm.Size','hterm.TextAttributes','hterm.VT');hterm.Terminal=function(opt_profileId){this.profileId_=null;this.primaryScreen_=new hterm.Screen();this.alternateScreen_=new hterm.Screen();this.screen_=this.primaryScreen_;this.screenSize=new hterm.Size(0,0);this.scrollPort_=new hterm.ScrollPort(this);this.scrollPort_.subscribe('resize',this.onResize_.bind(this));this.scrollPort_.subscribe('scroll',this.onScroll_.bind(this));this.scrollPort_.subscribe('paste',this.onPaste_.bind(this));this.scrollPort_.onCopy=this.onCopy_.bind(this);this.div_=null;this.document_=window.document;this.scrollbackRows_=[];this.tabStops_=[];this.defaultTabStops=!0;this.vtScrollTop_=null;this.vtScrollBottom_=null;this.cursorNode_=null;this.cursorShape_=hterm.Terminal.cursorShape.BLOCK;this.cursorColor_=null;this.cursorBlinkCycle_=[100,100];this.myOnCursorBlink_=this.onCursorBlink_.bind(this);this.backgroundColor_=null;this.foregroundColor_=null;this.scrollOnOutput_=null;this.scrollOnKeystroke_=null;this.scrollWheelArrowKeys_=null;this.defeatMouseReports_=!1;this.setAutomaticMouseHiding();this.mouseHideDelay_=null;this.bellAudio_=this.document_.createElement('audio');this.bellAudio_.id='hterm:bell-audio';this.bellAudio_.setAttribute('preload','auto');this.accessibilityReader_=null;this.accessibilityEnabled_=!1;this.bellNotificationList_=[];this.desktopNotificationBell_=!1;this.savedOptions_={};this.options_=new hterm.Options();this.timeouts_={};this.vt=new hterm.VT(this);this.saveCursorAndState(!0);this.keyboard=new hterm.Keyboard(this);this.io=new hterm.Terminal.IO(this);this.enableMouseDragScroll=!0;this.copyOnSelect=null;this.mouseRightClickPaste=null;this.mousePasteButton=null;this.useDefaultWindowCopy=!1;this.clearSelectionAfterCopy=!0;this.realizeSize_(80,24);this.setDefaultTabStops();this.allowImagesInline=null;this.reportFocus=!1;this.setProfile(opt_profileId||'default',function(){this.onTerminalReady()}.bind(this))};hterm.Terminal.cursorShape={BLOCK:'BLOCK',BEAM:'BEAM',UNDERLINE:'UNDERLINE'};hterm.Terminal.prototype.onTerminalReady=function(){};hterm.Terminal.prototype.tabWidth=8;hterm.Terminal.prototype.setProfile=function(profileId,opt_callback){this.profileId_=profileId.replace(/\//g,'');var terminal=this;if(this.prefs_) + this.prefs_.deactivate();this.prefs_=new hterm.PreferenceManager(this.profileId_);this.prefs_.addObservers(null,{'alt-gr-mode':function(v){if(v==null){if(navigator.language.toLowerCase()=='en-us'){v='none'}else{v='right-alt'}}else if(typeof v=='string'){v=v.toLowerCase()}else{v='none'} + if(!/^(none|ctrl-alt|left-alt|right-alt)$/.test(v)) + v='none';terminal.keyboard.altGrMode=v},'alt-backspace-is-meta-backspace':function(v){terminal.keyboard.altBackspaceIsMetaBackspace=v},'alt-is-meta':function(v){terminal.keyboard.altIsMeta=v},'alt-sends-what':function(v){if(!/^(escape|8-bit|browser-key)$/.test(v)) + v='escape';terminal.keyboard.altSendsWhat=v},'audible-bell-sound':function(v){var ary=v.match(/^lib-resource:(\S+)/);if(ary){terminal.bellAudio_.setAttribute('src',lib.resource.getDataUrl(ary[1]))}else{terminal.bellAudio_.setAttribute('src',v)}},'desktop-notification-bell':function(v){if(v&&Notification){terminal.desktopNotificationBell_=Notification.permission==='granted';if(!terminal.desktopNotificationBell_){console.warn('desktop-notification-bell is true but we do not have '+'permission to display notifications.')}}else{terminal.desktopNotificationBell_=!1}},'background-color':function(v){terminal.setBackgroundColor(v)},'background-image':function(v){terminal.scrollPort_.setBackgroundImage(v)},'background-size':function(v){terminal.scrollPort_.setBackgroundSize(v)},'background-position':function(v){terminal.scrollPort_.setBackgroundPosition(v)},'backspace-sends-backspace':function(v){terminal.keyboard.backspaceSendsBackspace=v},'character-map-overrides':function(v){if(!(v==null||v instanceof Object)){console.warn('Preference character-map-modifications is not an '+'object: '+v);return} + terminal.vt.characterMaps.reset();terminal.vt.characterMaps.setOverrides(v)},'cursor-blink':function(v){terminal.setCursorBlink(!!v)},'cursor-blink-cycle':function(v){if(v instanceof Array&&typeof v[0]=='number'&&typeof v[1]=='number'){terminal.cursorBlinkCycle_=v}else if(typeof v=='number'){terminal.cursorBlinkCycle_=[v,v]}else{terminal.cursorBlinkCycle_=[100,100]}},'cursor-color':function(v){terminal.setCursorColor(v)},'color-palette-overrides':function(v){if(!(v==null||v instanceof Object||v instanceof Array)){console.warn('Preference color-palette-overrides is not an array or '+'object: '+v);return} + lib.colors.colorPalette=lib.colors.stockColorPalette.concat();if(v){for(var key in v){var i=parseInt(key);if(isNaN(i)||i<0||i>255){console.log('Invalid value in palette: '+key+': '+v[key]);continue} + if(v[i]){var rgb=lib.colors.normalizeCSS(v[i]);if(rgb) + lib.colors.colorPalette[i]=rgb}}} + terminal.primaryScreen_.textAttributes.resetColorPalette();terminal.alternateScreen_.textAttributes.resetColorPalette()},'copy-on-select':function(v){terminal.copyOnSelect=!!v},'use-default-window-copy':function(v){terminal.useDefaultWindowCopy=!!v},'clear-selection-after-copy':function(v){terminal.clearSelectionAfterCopy=!!v},'ctrl-plus-minus-zero-zoom':function(v){terminal.keyboard.ctrlPlusMinusZeroZoom=v},'ctrl-c-copy':function(v){terminal.keyboard.ctrlCCopy=v},'ctrl-v-paste':function(v){terminal.keyboard.ctrlVPaste=v;terminal.scrollPort_.setCtrlVPaste(v)},'east-asian-ambiguous-as-two-column':function(v){lib.wc.regardCjkAmbiguous=v},'enable-8-bit-control':function(v){terminal.vt.enable8BitControl=!!v},'enable-bold':function(v){terminal.syncBoldSafeState()},'enable-bold-as-bright':function(v){terminal.primaryScreen_.textAttributes.enableBoldAsBright=!!v;terminal.alternateScreen_.textAttributes.enableBoldAsBright=!!v},'enable-blink':function(v){terminal.setTextBlink(!!v)},'enable-clipboard-write':function(v){terminal.vt.enableClipboardWrite=!!v},'enable-dec12':function(v){terminal.vt.enableDec12=!!v},'font-family':function(v){terminal.syncFontFamily()},'font-size':function(v){v=parseInt(v);if(v<=0){console.error(`Invalid font size: ${v}`);return} + terminal.setFontSize(v)},'font-smoothing':function(v){terminal.syncFontFamily()},'foreground-color':function(v){terminal.setForegroundColor(v)},'hide-mouse-while-typing':function(v){terminal.setAutomaticMouseHiding(v)},'home-keys-scroll':function(v){terminal.keyboard.homeKeysScroll=v},'keybindings':function(v){terminal.keyboard.bindings.clear();if(!v) + return;if(!(v instanceof Object)){console.error('Error in keybindings preference: Expected object');return} + try{terminal.keyboard.bindings.addBindings(v)}catch(ex){console.error('Error in keybindings preference: '+ex)}},'media-keys-are-fkeys':function(v){terminal.keyboard.mediaKeysAreFKeys=v},'meta-sends-escape':function(v){terminal.keyboard.metaSendsEscape=v},'mouse-right-click-paste':function(v){terminal.mouseRightClickPaste=v},'mouse-paste-button':function(v){terminal.syncMousePasteButton()},'page-keys-scroll':function(v){terminal.keyboard.pageKeysScroll=v},'pass-alt-number':function(v){if(v==null){v=(hterm.os!='mac'&&hterm.windowType!='popup')} + terminal.passAltNumber=v},'pass-ctrl-number':function(v){if(v==null){v=(hterm.os!='mac'&&hterm.windowType!='popup')} + terminal.passCtrlNumber=v},'pass-meta-number':function(v){if(v==null){v=(hterm.os=='mac'&&hterm.windowType!='popup')} + terminal.passMetaNumber=v},'pass-meta-v':function(v){terminal.keyboard.passMetaV=v},'receive-encoding':function(v){if(!(/^(utf-8|raw)$/).test(v)){console.warn('Invalid value for "receive-encoding": '+v);v='utf-8'} + terminal.vt.characterEncoding=v},'scroll-on-keystroke':function(v){terminal.scrollOnKeystroke_=v},'scroll-on-output':function(v){terminal.scrollOnOutput_=v},'scrollbar-visible':function(v){terminal.setScrollbarVisible(v)},'scroll-wheel-may-send-arrow-keys':function(v){terminal.scrollWheelArrowKeys_=v},'scroll-wheel-move-multiplier':function(v){terminal.setScrollWheelMoveMultipler(v)},'send-encoding':function(v){if(!(/^(utf-8|raw)$/).test(v)){console.warn('Invalid value for "send-encoding": '+v);v='utf-8'} + terminal.keyboard.characterEncoding=v},'shift-insert-paste':function(v){terminal.keyboard.shiftInsertPaste=v},'terminal-encoding':function(v){terminal.vt.setEncoding(v)},'user-css':function(v){terminal.scrollPort_.setUserCssUrl(v)},'user-css-text':function(v){terminal.scrollPort_.setUserCssText(v)},'word-break-match-left':function(v){terminal.primaryScreen_.wordBreakMatchLeft=v;terminal.alternateScreen_.wordBreakMatchLeft=v},'word-break-match-right':function(v){terminal.primaryScreen_.wordBreakMatchRight=v;terminal.alternateScreen_.wordBreakMatchRight=v},'word-break-match-middle':function(v){terminal.primaryScreen_.wordBreakMatchMiddle=v;terminal.alternateScreen_.wordBreakMatchMiddle=v},'allow-images-inline':function(v){terminal.allowImagesInline=v},});this.prefs_.readStorage(function(){this.prefs_.notifyAll();if(opt_callback) + opt_callback()}.bind(this))};hterm.Terminal.prototype.getPrefs=function(){return this.prefs_};hterm.Terminal.prototype.setBracketedPaste=function(state){this.options_.bracketedPaste=state};hterm.Terminal.prototype.setCursorColor=function(color){if(color===undefined) + color=this.prefs_.get('cursor-color');this.cursorColor_=color;this.cursorNode_.style.backgroundColor=color;this.cursorNode_.style.borderColor=color};hterm.Terminal.prototype.getCursorColor=function(){return this.cursorColor_};hterm.Terminal.prototype.setSelectionEnabled=function(state){this.enableMouseDragScroll=state};hterm.Terminal.prototype.setBackgroundColor=function(color){if(color===undefined) + color=this.prefs_.get('background-color');this.backgroundColor_=lib.colors.normalizeCSS(color);this.primaryScreen_.textAttributes.setDefaults(this.foregroundColor_,this.backgroundColor_);this.alternateScreen_.textAttributes.setDefaults(this.foregroundColor_,this.backgroundColor_);this.scrollPort_.setBackgroundColor(color)};hterm.Terminal.prototype.getBackgroundColor=function(){return this.backgroundColor_};hterm.Terminal.prototype.setForegroundColor=function(color){if(color===undefined) + color=this.prefs_.get('foreground-color');this.foregroundColor_=lib.colors.normalizeCSS(color);this.primaryScreen_.textAttributes.setDefaults(this.foregroundColor_,this.backgroundColor_);this.alternateScreen_.textAttributes.setDefaults(this.foregroundColor_,this.backgroundColor_);this.scrollPort_.setForegroundColor(color)};hterm.Terminal.prototype.getForegroundColor=function(){return this.foregroundColor_};hterm.Terminal.prototype.runCommandClass=function(commandClass,argString){var environment=this.prefs_.get('environment');if(typeof environment!='object'||environment==null) + environment={};var self=this;this.command=new commandClass({argString:argString||'',io:this.io.push(),environment:environment,onExit:function(code){self.io.pop();self.uninstallKeyboard();if(self.prefs_.get('close-on-exit')) + window.close()}});this.installKeyboard();this.command.run()};hterm.Terminal.prototype.isPrimaryScreen=function(){return this.screen_==this.primaryScreen_};hterm.Terminal.prototype.installKeyboard=function(){this.keyboard.installKeyboard(this.scrollPort_.getDocument().body)};hterm.Terminal.prototype.uninstallKeyboard=function(){this.keyboard.installKeyboard(null)};hterm.Terminal.prototype.setCssVar=function(name,value,opt_prefix='--hterm-'){this.document_.documentElement.style.setProperty(`${opt_prefix}${name}`,value)};hterm.Terminal.prototype.getCssVar=function(name,opt_prefix='--hterm-'){return this.document_.documentElement.style.getPropertyValue(`${opt_prefix}${name}`)};hterm.Terminal.prototype.setFontSize=function(px){if(px<=0) + px=this.prefs_.get('font-size');this.scrollPort_.setFontSize(px);this.setCssVar('charsize-width',this.scrollPort_.characterSize.width+'px');this.setCssVar('charsize-height',this.scrollPort_.characterSize.height+'px')};hterm.Terminal.prototype.getFontSize=function(){return this.scrollPort_.getFontSize()};hterm.Terminal.prototype.getFontFamily=function(){return this.scrollPort_.getFontFamily()};hterm.Terminal.prototype.syncFontFamily=function(){this.scrollPort_.setFontFamily(this.prefs_.get('font-family'),this.prefs_.get('font-smoothing'));this.syncBoldSafeState()};hterm.Terminal.prototype.syncMousePasteButton=function(){var button=this.prefs_.get('mouse-paste-button');if(typeof button=='number'){this.mousePasteButton=button;return} + if(hterm.os!='linux'){this.mousePasteButton=1}else{this.mousePasteButton=2}};hterm.Terminal.prototype.syncBoldSafeState=function(){var enableBold=this.prefs_.get('enable-bold');if(enableBold!==null){this.primaryScreen_.textAttributes.enableBold=enableBold;this.alternateScreen_.textAttributes.enableBold=enableBold;return} + var normalSize=this.scrollPort_.measureCharacterSize();var boldSize=this.scrollPort_.measureCharacterSize('bold');var isBoldSafe=normalSize.equals(boldSize);if(!isBoldSafe){console.warn('Bold characters disabled: Size of bold weight differs '+'from normal. Font family is: '+this.scrollPort_.getFontFamily())} + this.primaryScreen_.textAttributes.enableBold=isBoldSafe;this.alternateScreen_.textAttributes.enableBold=isBoldSafe};hterm.Terminal.prototype.setTextBlink=function(state){if(state===undefined) + state=this.prefs_.get('enable-blink');this.setCssVar('blink-node-duration',state?'0.7s':'0')};hterm.Terminal.prototype.syncMouseStyle=function(){this.setCssVar('mouse-cursor-style',this.vt.mouseReport==this.vt.MOUSE_REPORT_DISABLED?'var(--hterm-mouse-cursor-text)':'var(--hterm-mouse-cursor-pointer)')};hterm.Terminal.prototype.saveCursor=function(){return this.screen_.cursorPosition.clone()};hterm.Terminal.prototype.getTextAttributes=function(){return this.screen_.textAttributes};hterm.Terminal.prototype.setTextAttributes=function(textAttributes){this.screen_.textAttributes=textAttributes};hterm.Terminal.prototype.getZoomFactor=function(){return this.scrollPort_.characterSize.zoomFactor};hterm.Terminal.prototype.setWindowTitle=function(title){window.document.title=title};hterm.Terminal.prototype.restoreCursor=function(cursor){var row=lib.f.clamp(cursor.row,0,this.screenSize.height-1);var column=lib.f.clamp(cursor.column,0,this.screenSize.width-1);this.screen_.setCursorPosition(row,column);if(cursor.column>column||cursor.column==column&&cursor.overflow){this.screen_.cursorPosition.overflow=!0}};hterm.Terminal.prototype.clearCursorOverflow=function(){this.screen_.cursorPosition.overflow=!1};hterm.Terminal.prototype.saveCursorAndState=function(both){if(both){this.primaryScreen_.saveCursorAndState(this.vt);this.alternateScreen_.saveCursorAndState(this.vt)}else this.screen_.saveCursorAndState(this.vt)};hterm.Terminal.prototype.restoreCursorAndState=function(both){if(both){this.primaryScreen_.restoreCursorAndState(this.vt);this.alternateScreen_.restoreCursorAndState(this.vt)}else this.screen_.restoreCursorAndState(this.vt)};hterm.Terminal.prototype.setCursorShape=function(shape){this.cursorShape_=shape;this.restyleCursor_()};hterm.Terminal.prototype.getCursorShape=function(){return this.cursorShape_};hterm.Terminal.prototype.setWidth=function(columnCount){if(columnCount==null){this.div_.style.width='100%';return} + this.div_.style.width=Math.ceil(this.scrollPort_.characterSize.width*columnCount+this.scrollPort_.currentScrollbarWidthPx)+'px';this.realizeSize_(columnCount,this.screenSize.height);this.scheduleSyncCursorPosition_()};hterm.Terminal.prototype.setHeight=function(rowCount){if(rowCount==null){this.div_.style.height='100%';return} + this.div_.style.height=this.scrollPort_.characterSize.height*rowCount+'px';this.realizeSize_(this.screenSize.width,rowCount);this.scheduleSyncCursorPosition_()};hterm.Terminal.prototype.realizeSize_=function(columnCount,rowCount){if(columnCount!=this.screenSize.width) + this.realizeWidth_(columnCount);if(rowCount!=this.screenSize.height) + this.realizeHeight_(rowCount);this.io.onTerminalResize_(columnCount,rowCount)};hterm.Terminal.prototype.realizeWidth_=function(columnCount){if(columnCount<=0) + throw new Error('Attempt to realize bad width: '+columnCount);var deltaColumns=columnCount-this.screen_.getWidth();this.screenSize.width=columnCount;this.screen_.setColumnCount(columnCount);if(deltaColumns>0){if(this.defaultTabStops) + this.setDefaultTabStops(this.screenSize.width-deltaColumns)}else{for(var i=this.tabStops_.length-1;i>=0;i--){if(this.tabStops_[i]0){if(deltaRows<=this.scrollbackRows_.length){var scrollbackCount=Math.min(deltaRows,this.scrollbackRows_.length);var rows=this.scrollbackRows_.splice(this.scrollbackRows_.length-scrollbackCount,scrollbackCount);this.screen_.unshiftRows(rows);deltaRows-=scrollbackCount;cursor.row+=scrollbackCount} + if(deltaRows) + this.appendRows_(deltaRows)} + this.setVTScrollRegion(null,null);this.restoreCursor(cursor)};hterm.Terminal.prototype.scrollHome=function(){this.scrollPort_.scrollRowToTop(0)};hterm.Terminal.prototype.scrollEnd=function(){this.scrollPort_.scrollRowToBottom(this.getRowCount())};hterm.Terminal.prototype.scrollPageUp=function(){var i=this.scrollPort_.getTopRowIndex();this.scrollPort_.scrollRowToTop(i-this.screenSize.height+1)};hterm.Terminal.prototype.scrollPageDown=function(){var i=this.scrollPort_.getTopRowIndex();this.scrollPort_.scrollRowToTop(i+this.screenSize.height-1)};hterm.Terminal.prototype.scrollLineUp=function(){var i=this.scrollPort_.getTopRowIndex();this.scrollPort_.scrollRowToTop(i-1)};hterm.Terminal.prototype.scrollLineDown=function(){var i=this.scrollPort_.getTopRowIndex();this.scrollPort_.scrollRowToTop(i+1)};hterm.Terminal.prototype.wipeContents=function(){this.scrollbackRows_.length=0;this.scrollPort_.resetCache();[this.primaryScreen_,this.alternateScreen_].forEach(function(screen){var bottom=screen.getHeight();if(bottom>0){this.renumberRows_(0,bottom);this.clearHome(screen)}}.bind(this));this.syncCursorPosition_();this.scrollPort_.invalidate()};hterm.Terminal.prototype.reset=function(){this.vt.reset();this.clearAllTabStops();this.setDefaultTabStops();const resetScreen=(screen)=>{screen.textAttributes.reset();screen.textAttributes.resetColorPalette();this.clearHome(screen);screen.saveCursorAndState(this.vt)};resetScreen(this.primaryScreen_);resetScreen(this.alternateScreen_);this.options_=new hterm.Options();this.setCursorBlink(!!this.prefs_.get('cursor-blink'));this.setVTScrollRegion(null,null);this.setCursorVisible(!0)};hterm.Terminal.prototype.softReset=function(){this.vt.reset();this.options_=new hterm.Options();this.options_.cursorBlink=!!this.timeouts_.cursorBlink;const resetScreen=(screen)=>{screen.textAttributes.reset();screen.textAttributes.resetColorPalette();screen.saveCursorAndState(this.vt)};resetScreen(this.primaryScreen_);resetScreen(this.alternateScreen_);this.setVTScrollRegion(null,null);this.setCursorVisible(!0)};hterm.Terminal.prototype.forwardTabStop=function(){var column=this.screen_.cursorPosition.column;for(var i=0;icolumn){this.setCursorColumn(this.tabStops_[i]);return}} + var overflow=this.screen_.cursorPosition.overflow;this.setCursorColumn(this.screenSize.width-1);this.screen_.cursorPosition.overflow=overflow};hterm.Terminal.prototype.backwardTabStop=function(){var column=this.screen_.cursorPosition.column;for(var i=this.tabStops_.length-1;i>=0;i--){if(this.tabStops_[i]=0;i--){if(this.tabStops_[i]==column) + return;if(this.tabStops_[i] to your HTML to fix.`)} + this.div_=div;this.accessibilityReader_=new hterm.AccessibilityReader(div);this.scrollPort_.decorate(div);this.scrollPort_.setBackgroundImage(this.prefs_.get('background-image'));this.scrollPort_.setBackgroundSize(this.prefs_.get('background-size'));this.scrollPort_.setBackgroundPosition(this.prefs_.get('background-position'));this.scrollPort_.setUserCssUrl(this.prefs_.get('user-css'));this.scrollPort_.setUserCssText(this.prefs_.get('user-css-text'));this.div_.focus=this.focus.bind(this);this.setFontSize(this.prefs_.get('font-size'));this.syncFontFamily();this.setScrollbarVisible(this.prefs_.get('scrollbar-visible'));this.setScrollWheelMoveMultipler(this.prefs_.get('scroll-wheel-move-multiplier'));this.document_=this.scrollPort_.getDocument();this.document_.body.oncontextmenu=function(){return!1};var onMouse=this.onMouse_.bind(this);var screenNode=this.scrollPort_.getScreenNode();screenNode.addEventListener('mousedown',onMouse);screenNode.addEventListener('mouseup',onMouse);screenNode.addEventListener('mousemove',onMouse);this.scrollPort_.onScrollWheel=onMouse;screenNode.addEventListener('keydown',this.onKeyboardActivity_.bind(this));screenNode.addEventListener('focus',this.onFocusChange_.bind(this,!0));screenNode.addEventListener('mousedown',function(){setTimeout(this.onFocusChange_.bind(this,!0))}.bind(this));screenNode.addEventListener('blur',this.onFocusChange_.bind(this,!1));var style=this.document_.createElement('style');style.textContent=('.cursor-node[focus="false"] {'+' box-sizing: border-box;'+' background-color: transparent !important;'+' border-width: 2px;'+' border-style: solid;'+'}'+'.wc-node {'+' display: inline-block;'+' text-align: center;'+' width: calc(var(--hterm-charsize-width) * 2);'+' line-height: var(--hterm-charsize-height);'+'}'+':root {'+' --hterm-charsize-width: '+this.scrollPort_.characterSize.width+'px;'+' --hterm-charsize-height: '+this.scrollPort_.characterSize.height+'px;'+' --hterm-cursor-offset-col: -1;'+' --hterm-cursor-offset-row: -1;'+' --hterm-blink-node-duration: 0.7s;'+' --hterm-mouse-cursor-text: text;'+' --hterm-mouse-cursor-pointer: default;'+' --hterm-mouse-cursor-style: var(--hterm-mouse-cursor-text);'+'}'+'.uri-node:hover {'+' text-decoration: underline;'+' cursor: pointer;'+'}'+'@keyframes blink {'+' from { opacity: 1.0; }'+' to { opacity: 0.0; }'+'}'+'.blink-node {'+' animation-name: blink;'+' animation-duration: var(--hterm-blink-node-duration);'+' animation-iteration-count: infinite;'+' animation-timing-function: ease-in-out;'+' animation-direction: alternate;'+'}');this.document_.head.appendChild(style);this.cursorNode_=this.document_.createElement('div');this.cursorNode_.id='hterm:terminal-cursor';this.cursorNode_.className='cursor-node';this.cursorNode_.style.cssText=('position: absolute;'+'left: calc(var(--hterm-charsize-width) * var(--hterm-cursor-offset-col));'+'top: calc(var(--hterm-charsize-height) * var(--hterm-cursor-offset-row));'+'display: '+(this.options_.cursorVisible?'':'none')+';'+'width: var(--hterm-charsize-width);'+'height: var(--hterm-charsize-height);'+'-webkit-transition: opacity, background-color 100ms linear;'+'-moz-transition: opacity, background-color 100ms linear;');this.setCursorColor();this.setCursorBlink(!!this.prefs_.get('cursor-blink'));this.restyleCursor_();this.document_.body.appendChild(this.cursorNode_);this.scrollBlockerNode_=this.document_.createElement('div');this.scrollBlockerNode_.id='hterm:mouse-drag-scroll-blocker';this.scrollBlockerNode_.setAttribute('aria-hidden','true');this.scrollBlockerNode_.style.cssText=('position: absolute;'+'top: -99px;'+'display: block;'+'width: 10px;'+'height: 10px;');this.document_.body.appendChild(this.scrollBlockerNode_);this.scrollPort_.onScrollWheel=onMouse;['mousedown','mouseup','mousemove','click','dblclick',].forEach(function(event){this.scrollBlockerNode_.addEventListener(event,onMouse);this.cursorNode_.addEventListener(event,onMouse);this.document_.addEventListener(event,onMouse)}.bind(this));this.cursorNode_.addEventListener('mousedown',function(){setTimeout(this.focus.bind(this))}.bind(this));this.setReverseVideo(!1);this.scrollPort_.focus();this.scrollPort_.scheduleRedraw()};hterm.Terminal.prototype.getDocument=function(){return this.document_};hterm.Terminal.prototype.focus=function(){this.scrollPort_.focus()};hterm.Terminal.prototype.getRowNode=function(index){if(index0){var ary=this.screen_.shiftRows(extraRows);Array.prototype.push.apply(this.scrollbackRows_,ary);if(this.scrollPort_.isScrolledEnd) + this.scheduleScrollDown_()} + if(cursorRow>=this.screen_.rowsArray.length) + cursorRow=this.screen_.rowsArray.length-1;this.setAbsoluteCursorPosition(cursorRow,0)};hterm.Terminal.prototype.moveRows_=function(fromIndex,count,toIndex){var ary=this.screen_.removeRows(fromIndex,count);this.screen_.insertRows(toIndex,ary);var start,end;if(fromIndex=this.screenSize.width){didOverflow=!0;count=this.screenSize.width-this.screen_.cursorPosition.column} + if(didOverflow&&!this.options_.wraparound){substr=lib.wc.substr(str,startOffset,count-1)+lib.wc.substr(str,strWidth-1);count=strWidth}else{substr=lib.wc.substr(str,startOffset,count)} + var tokens=hterm.TextAttributes.splitWidecharString(substr);for(var i=0;i=0;i--){this.setAbsoluteCursorPosition(cursorRow+i,0);this.screen_.clearCursorRow()}};hterm.Terminal.prototype.deleteLines=function(count){var cursor=this.saveCursor();var top=cursor.row;var bottom=this.getVTScrollBottom();var maxCount=bottom-top+1;count=Math.min(count,maxCount);var moveStart=bottom-count+1;if(count!=maxCount) + this.moveRows_(top,count,moveStart);for(var i=0;ibottomRowIndex){this.setCssVar('cursor-offset-row','-1');return} + if(this.options_.cursorVisible&&this.cursorNode_.style.display=='none'){this.cursorNode_.style.display=''} + this.setCssVar('cursor-offset-row',`${cursorRowIndex - topRowIndex} + `+`${this.scrollPort_.visibleRowTopMargin}px`);this.setCssVar('cursor-offset-col',this.screen_.cursorPosition.column);this.cursorNode_.setAttribute('title','('+this.screen_.cursorPosition.column+', '+this.screen_.cursorPosition.row+')');var selection=this.document_.getSelection();if(selection&&selection.isCollapsed) + this.screen_.syncSelectionCaret(selection)};hterm.Terminal.prototype.restyleCursor_=function(){var shape=this.cursorShape_;if(this.cursorNode_.getAttribute('focus')=='false'){shape=hterm.Terminal.cursorShape.BLOCK} + var style=this.cursorNode_.style;switch(shape){case hterm.Terminal.cursorShape.BEAM:style.height='var(--hterm-charsize-height)';style.backgroundColor='transparent';style.borderBottomStyle=null;style.borderLeftStyle='solid';break;case hterm.Terminal.cursorShape.UNDERLINE:style.height=this.scrollPort_.characterSize.baseline+'px';style.backgroundColor='transparent';style.borderBottomStyle='solid';style.borderLeftStyle=null;break;default:style.height='var(--hterm-charsize-height)';style.backgroundColor=this.cursorColor_;style.borderBottomStyle=null;style.borderLeftStyle=null;break}};hterm.Terminal.prototype.scheduleSyncCursorPosition_=function(){if(this.timeouts_.syncCursor) + return;var self=this;this.timeouts_.syncCursor=setTimeout(function(){self.syncCursorPosition_();delete self.timeouts_.syncCursor},0)};hterm.Terminal.prototype.showZoomWarning_=function(state){if(!this.zoomWarningNode_){if(!state) + return;this.zoomWarningNode_=this.document_.createElement('div');this.zoomWarningNode_.id='hterm:zoom-warning';this.zoomWarningNode_.style.cssText=('color: black;'+'background-color: #ff2222;'+'font-size: large;'+'border-radius: 8px;'+'opacity: 0.75;'+'padding: 0.2em 0.5em 0.2em 0.5em;'+'top: 0.5em;'+'right: 1.2em;'+'position: absolute;'+'-webkit-text-size-adjust: none;'+'-webkit-user-select: none;'+'-moz-text-size-adjust: none;'+'-moz-user-select: none;');this.zoomWarningNode_.addEventListener('click',function(e){this.parentNode.removeChild(this)})} + this.zoomWarningNode_.textContent=lib.MessageManager.replaceReferences(hterm.zoomWarningMessage,[parseInt(this.scrollPort_.characterSize.zoomFactor*100)]);this.zoomWarningNode_.style.fontFamily=this.prefs_.get('font-family');if(state){if(!this.zoomWarningNode_.parentNode) + this.div_.parentNode.appendChild(this.zoomWarningNode_)}else if(this.zoomWarningNode_.parentNode){this.zoomWarningNode_.parentNode.removeChild(this.zoomWarningNode_)}};hterm.Terminal.prototype.showOverlay=function(msg,opt_timeout){if(!this.overlayNode_){if(!this.div_) + return;this.overlayNode_=this.document_.createElement('div');this.overlayNode_.style.cssText=('border-radius: 15px;'+'font-size: xx-large;'+'opacity: 0.75;'+'padding: 0.2em 0.5em 0.2em 0.5em;'+'position: absolute;'+'-webkit-user-select: none;'+'-webkit-transition: opacity 180ms ease-in;'+'-moz-user-select: none;'+'-moz-transition: opacity 180ms ease-in;');this.overlayNode_.addEventListener('mousedown',function(e){e.preventDefault();e.stopPropagation()},!0)} + this.overlayNode_.style.color=this.prefs_.get('background-color');this.overlayNode_.style.backgroundColor=this.prefs_.get('foreground-color');this.overlayNode_.style.fontFamily=this.prefs_.get('font-family');this.overlayNode_.textContent=msg;this.overlayNode_.style.opacity='0.75';if(!this.overlayNode_.parentNode) + this.div_.appendChild(this.overlayNode_);var divSize=hterm.getClientSize(this.div_);var overlaySize=hterm.getClientSize(this.overlayNode_);this.overlayNode_.style.top=(divSize.height-overlaySize.height)/2+'px';this.overlayNode_.style.left=(divSize.width-overlaySize.width-this.scrollPort_.currentScrollbarWidthPx)/2+'px';if(this.overlayTimeout_) + clearTimeout(this.overlayTimeout_);if(opt_timeout===null) + return;this.overlayTimeout_=setTimeout(()=>{this.overlayNode_.style.opacity='0';this.overlayTimeout_=setTimeout(()=>this.hideOverlay(),200)},opt_timeout||1500)};hterm.Terminal.prototype.hideOverlay=function(){if(this.overlayTimeout_) + clearTimeout(this.overlayTimeout_);this.overlayTimeout_=null;if(this.overlayNode_.parentNode) + this.overlayNode_.parentNode.removeChild(this.overlayNode_);this.overlayNode_.style.opacity='0.75'};hterm.Terminal.prototype.paste=function(){return hterm.pasteFromClipboard(this.document_)};hterm.Terminal.prototype.copyStringToClipboard=function(str){if(this.prefs_.get('enable-clipboard-notice')) + setTimeout(this.showOverlay.bind(this,hterm.notifyCopyMessage,500),200);var copySource=this.document_.createElement('pre');copySource.id='hterm:copy-to-clipboard-source';copySource.textContent=str;copySource.style.cssText=('-webkit-user-select: text;'+'-moz-user-select: text;'+'position: absolute;'+'top: -99px');this.document_.body.appendChild(copySource);var selection=this.document_.getSelection();var anchorNode=selection.anchorNode;var anchorOffset=selection.anchorOffset;var focusNode=selection.focusNode;var focusOffset=selection.focusOffset;selection.selectAllChildren(copySource);hterm.copySelectionToClipboard(this.document_);if(selection.extend){selection.collapse(anchorNode,anchorOffset);selection.extend(focusNode,focusOffset)} + copySource.parentNode.removeChild(copySource)};hterm.Terminal.prototype.displayImage=function(options,onLoad,onError){if(options.uri===undefined) + return;if(!options.name) + options.name='';if(this.allowImagesInline!==!0){this.newLine();const row=this.getRowNode(this.scrollbackRows_.length+this.getCursorRow()-1);if(this.allowImagesInline===!1){row.textContent=hterm.msg('POPUP_INLINE_IMAGE_DISABLED',[],'Inline Images Disabled');return} + let button;const span=this.document_.createElement('span');span.innerText=hterm.msg('POPUP_INLINE_IMAGE',[],'Inline Images');span.style.fontWeight='bold';span.style.borderWidth='1px';span.style.borderStyle='dashed';button=this.document_.createElement('span');button.innerText=hterm.msg('BUTTON_BLOCK',[],'block');button.style.marginLeft='1em';button.style.borderWidth='1px';button.style.borderStyle='solid';button.addEventListener('click',()=>{this.prefs_.set('allow-images-inline',!1)});span.appendChild(button);button=this.document_.createElement('span');button.innerText=hterm.msg('BUTTON_ALLOW_SESSION',[],'allow this session');button.style.marginLeft='1em';button.style.borderWidth='1px';button.style.borderStyle='solid';button.addEventListener('click',()=>{this.allowImagesInline=!0});span.appendChild(button);button=this.document_.createElement('span');button.innerText=hterm.msg('BUTTON_ALLOW_ALWAYS',[],'always allow');button.style.marginLeft='1em';button.style.borderWidth='1px';button.style.borderStyle='solid';button.addEventListener('click',()=>{this.prefs_.set('allow-images-inline',!0)});span.appendChild(button);row.appendChild(span);return} + if(options.inline){const io=this.io.push();io.showOverlay(hterm.msg('LOADING_RESOURCE_START',[options.name],'Loading $1 ...'),null);io.onVTKeystroke=io.sendString=()=>{};const img=this.document_.createElement('img');img.src=options.uri;img.title=img.alt=options.name;this.document_.body.appendChild(img);img.onload=()=>{img.style.objectFit=options.preserveAspectRatio?'scale-down':'fill';img.style.maxWidth=`${this.document_.body.clientWidth}px`;img.style.maxHeight=`${this.document_.body.clientHeight}px`;const parseDim=(dim,maxDim,cssVar)=>{if(!dim||dim=='auto') + return'';const ary=dim.match(/^([0-9]+)(px|%)?$/);if(ary){if(ary[2]=='%') + return maxDim*parseInt(ary[1])/100+'px';else if(ary[2]=='px') + return dim;else return `calc(${dim} * var(${cssVar}))`} + return''};img.style.width=parseDim(options.width,this.document_.body.clientWidth,'--hterm-charsize-width');img.style.height=parseDim(options.height,this.document_.body.clientHeight,'--hterm-charsize-height');const padRows=Math.ceil(img.clientHeight/this.scrollPort_.characterSize.height);for(let i=0;i{this.document_.body.removeChild(img);io.showOverlay(hterm.msg('LOADING_RESOURCE_FAILED',[options.name],'Loading $1 failed'));io.pop();if(onError) + onError(e)}}else{const a=this.document_.createElement('a');a.href=options.uri;a.download=options.name;this.document_.body.appendChild(a);a.click();a.remove()}};hterm.Terminal.prototype.getSelectionText=function(){var selection=this.scrollPort_.selection;selection.sync();if(selection.isCollapsed) + return null;var startOffset=selection.startOffset;var node=selection.startNode;if(node.nodeName!='X-ROW'){if(node.nodeName=='#text'&&node.parentNode.nodeName=='SPAN'){node=node.parentNode} + while(node.previousSibling){node=node.previousSibling;startOffset+=hterm.TextAttributes.nodeWidth(node)}} + var endOffset=(hterm.TextAttributes.nodeWidth(selection.endNode)-selection.endOffset);node=selection.endNode;if(node.nodeName!='X-ROW'){if(node.nodeName=='#text'&&node.parentNode.nodeName=='SPAN'){node=node.parentNode} + while(node.nextSibling){node=node.nextSibling;endOffset+=hterm.TextAttributes.nodeWidth(node)}} + var rv=this.getRowsText(selection.startRow.rowIndex,selection.endRow.rowIndex+1);return lib.wc.substring(rv,startOffset,lib.wc.strWidth(rv)-endOffset)};hterm.Terminal.prototype.copySelectionToClipboard=function(){var text=this.getSelectionText();if(text!=null) + this.copyStringToClipboard(text)};hterm.Terminal.prototype.overlaySize=function(){this.showOverlay(this.screenSize.width+'x'+this.screenSize.height)};hterm.Terminal.prototype.onVTKeystroke=function(string){if(this.scrollOnKeystroke_) + this.scrollPort_.scrollRowToBottom(this.getRowCount());this.io.onVTKeystroke(this.keyboard.encode(string))};hterm.Terminal.prototype.openSelectedUrl_=function(){var str=this.getSelectionText();if(str==null){this.screen_.expandSelectionForUrl(this.document_.getSelection());str=this.getSelectionText();if(str==null) + return} + if(str.length>2048||str.search(/[\s\[\](){}<>"'\\^`]/)>=0) + return;if(str.search('^[a-zA-Z][a-zA-Z0-9+.-]*://')<0){switch(str.split(':',1)[0]){case 'mailto':break;default:str='http://'+str;break}} + hterm.openUrl(str)};hterm.Terminal.prototype.setAutomaticMouseHiding=function(v=null){if(v===null) + v=(hterm.os!='cros'&&hterm.os!='mac');this.mouseHideWhileTyping_=!!v};hterm.Terminal.prototype.onKeyboardActivity_=function(e){if(this.mouseHideWhileTyping_&&!this.mouseHideDelay_) + this.setCssVar('mouse-cursor-style','none')};hterm.Terminal.prototype.onMouse_=function(e){if(e.processedByTerminalHandler_){return} + var reportMouseEvents=(!this.defeatMouseReports_&&this.vt.mouseReport!=this.vt.MOUSE_REPORT_DISABLED);e.processedByTerminalHandler_=!0;if(this.mouseHideWhileTyping_&&!this.mouseHideDelay_){this.syncMouseStyle();this.mouseHideDelay_=setTimeout(()=>this.mouseHideDelay_=null,1000)} + e.terminalRow=parseInt((e.clientY-this.scrollPort_.visibleRowTopMargin)/ + this.scrollPort_.characterSize.height) + 1; + e.terminalColumn = parseInt(e.clientX / + this.scrollPort_.characterSize.width)+1;if(e.type=='mousedown'&&e.terminalColumn>this.screenSize.width){return} + if(this.options_.cursorVisible&&!reportMouseEvents){if(e.terminalRow-1==this.screen_.cursorPosition.row&&e.terminalColumn-1==this.screen_.cursorPosition.column){this.cursorNode_.style.display='none'}else if(this.cursorNode_.style.display=='none'){this.cursorNode_.style.display=''}} + if(e.type=='mousedown'){if(e.altKey||!reportMouseEvents){this.defeatMouseReports_=!0;this.setSelectionEnabled(!0)}else{this.defeatMouseReports_=!1;this.document_.getSelection().collapseToEnd();this.setSelectionEnabled(!1);e.preventDefault()}} + if(!reportMouseEvents){if(e.type=='dblclick'){this.screen_.expandSelection(this.document_.getSelection());if(this.copyOnSelect) + this.copySelectionToClipboard(this.document_)} + if(e.type=='click'&&!e.shiftKey&&(e.ctrlKey||e.metaKey)){clearTimeout(this.timeouts_.openUrl);this.timeouts_.openUrl=setTimeout(this.openSelectedUrl_.bind(this),500);return} + if(e.type=='mousedown'){if((this.mouseRightClickPaste&&e.button==2)||e.button==this.mousePasteButton){if(!this.paste()) + console.warn('Could not paste manually due to web restrictions')}} + if(e.type=='mouseup'&&e.button==0&&this.copyOnSelect&&!this.document_.getSelection().isCollapsed){this.copySelectionToClipboard(this.document_)} + if((e.type=='mousemove'||e.type=='mouseup')&&this.scrollBlockerNode_.engaged){this.scrollBlockerNode_.engaged=!1;this.scrollBlockerNode_.style.top='-99px'} + if(this.scrollWheelArrowKeys_&&!e.shiftKey&&this.keyboard.applicationCursor&&!this.isPrimaryScreen()){if(e.type=='wheel'){var delta=this.scrollPort_.scrollWheelDelta(e);var lines=lib.f.smartFloorDivide(Math.abs(delta),this.scrollPort_.characterSize.height);var data='\x1bO'+(delta<0?'B':'A');this.io.sendString(data.repeat(lines));e.preventDefault()}}}else{if(!this.scrollBlockerNode_.engaged){if(e.type=='mousedown'){this.scrollBlockerNode_.engaged=!0;this.scrollBlockerNode_.style.top=(e.clientY-5)+'px';this.scrollBlockerNode_.style.left=(e.clientX-5)+'px'}else if(e.type=='mousemove'){this.document_.getSelection().collapseToEnd();e.preventDefault()}} + this.onMouse(e)} + if(e.type=='mouseup'&&this.document_.getSelection().isCollapsed){this.defeatMouseReports_=!1}};hterm.Terminal.prototype.onMouse=function(e){};hterm.Terminal.prototype.onFocusChange_=function(focused){this.cursorNode_.setAttribute('focus',focused);this.restyleCursor_();if(this.reportFocus) + this.io.sendString(focused===!0?'\x1b[I':'\x1b[O');if(focused===!0) + this.closeBellNotifications_()};hterm.Terminal.prototype.onScroll_=function(){this.scheduleSyncCursorPosition_()};hterm.Terminal.prototype.onPaste_=function(e){var data=e.text.replace(/\n/mg,'\r');data=this.keyboard.encode(data);if(this.options_.bracketedPaste){const filter=(data)=>data.replace(/[\x00-\x07\x0b-\x0c\x0e-\x1f]/g,'');data='\x1b[200~'+filter(data)+'\x1b[201~'} + this.io.sendString(data)};hterm.Terminal.prototype.onCopy_=function(e){if(!this.useDefaultWindowCopy){e.preventDefault();setTimeout(this.copySelectionToClipboard.bind(this),0)}};hterm.Terminal.prototype.onResize_=function(){var columnCount=Math.floor(this.scrollPort_.getScreenWidth()/this.scrollPort_.characterSize.width)||0;var rowCount=lib.f.smartFloorDivide(this.scrollPort_.getScreenHeight(),this.scrollPort_.characterSize.height)||0;if(columnCount<=0||rowCount<=0){return} + var isNewSize=(columnCount!=this.screenSize.width||rowCount!=this.screenSize.height);this.realizeSize_(columnCount,rowCount);this.showZoomWarning_(this.scrollPort_.characterSize.zoomFactor!=1);if(isNewSize) + this.overlaySize();this.restyleCursor_();this.scheduleSyncCursorPosition_()};hterm.Terminal.prototype.onCursorBlink_=function(){if(!this.options_.cursorBlink){delete this.timeouts_.cursorBlink;return} + if(this.cursorNode_.getAttribute('focus')=='false'||this.cursorNode_.style.opacity=='0'){this.cursorNode_.style.opacity='1';this.timeouts_.cursorBlink=setTimeout(this.myOnCursorBlink_,this.cursorBlinkCycle_[0])}else{this.cursorNode_.style.opacity='0';this.timeouts_.cursorBlink=setTimeout(this.myOnCursorBlink_,this.cursorBlinkCycle_[1])}};hterm.Terminal.prototype.setScrollbarVisible=function(state){this.scrollPort_.setScrollbarVisible(state)};hterm.Terminal.prototype.setScrollWheelMoveMultipler=function(multiplier){this.scrollPort_.setScrollWheelMoveMultipler(multiplier)};hterm.Terminal.prototype.closeBellNotifications_=function(){this.bellNotificationList_.forEach(function(n){n.close()});this.bellNotificationList_.length=0};'use strict';lib.rtdep('lib.encodeUTF8');hterm.Terminal.IO=function(terminal){this.terminal_=terminal;this.previousIO_=null;this.buffered_=''};hterm.Terminal.IO.prototype.showOverlay=function(message,opt_timeout){this.terminal_.showOverlay(message,opt_timeout)};hterm.Terminal.IO.prototype.hideOverlay=function(){this.terminal_.hideOverlay()};hterm.Terminal.IO.prototype.createFrame=function(url,opt_options){return new hterm.Frame(this.terminal_,url,opt_options)};hterm.Terminal.IO.prototype.setTerminalProfile=function(profileName){this.terminal_.setProfile(profileName)};hterm.Terminal.IO.prototype.push=function(){var io=new hterm.Terminal.IO(this.terminal_);io.keyboardCaptured_=this.keyboardCaptured_;io.columnCount=this.columnCount;io.rowCount=this.rowCount;io.previousIO_=this.terminal_.io;this.terminal_.io=io;return io};hterm.Terminal.IO.prototype.pop=function(){this.terminal_.io=this.previousIO_;this.previousIO_.flush()};hterm.Terminal.IO.prototype.flush=function(){if(this.buffered_){this.terminal_.interpret(this.buffered_);this.buffered_=''}};hterm.Terminal.IO.prototype.sendString=function(string){console.log('Unhandled sendString: '+string)};hterm.Terminal.IO.prototype.onVTKeystroke=function(string){console.log('Unobserverd VT keystroke: '+JSON.stringify(string))};hterm.Terminal.IO.prototype.onTerminalResize_=function(width,height){var obj=this;while(obj){obj.columnCount=width;obj.rowCount=height;obj=obj.previousIO_} + this.onTerminalResize(width,height)};hterm.Terminal.IO.prototype.onTerminalResize=function(width,height){};hterm.Terminal.IO.prototype.writeUTF8=function(string){if(this.terminal_.io!=this){this.buffered_+=string;return} + this.terminal_.interpret(string)};hterm.Terminal.IO.prototype.writelnUTF8=function(string){this.writeUTF8(string+'\r\n')};hterm.Terminal.IO.prototype.print=hterm.Terminal.IO.prototype.writeUTF16=function(string){this.writeUTF8(lib.encodeUTF8(string))};hterm.Terminal.IO.prototype.println=hterm.Terminal.IO.prototype.writelnUTF16=function(string){this.writelnUTF8(lib.encodeUTF8(string))};'use strict';lib.rtdep('lib.colors');hterm.TextAttributes=function(document){this.document_=document;this.foregroundSource=this.SRC_DEFAULT;this.backgroundSource=this.SRC_DEFAULT;this.underlineSource=this.SRC_DEFAULT;this.foreground=this.DEFAULT_COLOR;this.background=this.DEFAULT_COLOR;this.underlineColor=this.DEFAULT_COLOR;this.defaultForeground='rgb(255, 255, 255)';this.defaultBackground='rgb(0, 0, 0)';this.bold=!1;this.faint=!1;this.italic=!1;this.blink=!1;this.underline=!1;this.strikethrough=!1;this.inverse=!1;this.invisible=!1;this.wcNode=!1;this.asciiNode=!0;this.tileData=null;this.uri=null;this.uriId=null;this.colorPalette=null;this.resetColorPalette()};hterm.TextAttributes.prototype.enableBold=!0;hterm.TextAttributes.prototype.enableBoldAsBright=!0;hterm.TextAttributes.prototype.DEFAULT_COLOR=lib.f.createEnum('');hterm.TextAttributes.prototype.SRC_DEFAULT='default';hterm.TextAttributes.prototype.setDocument=function(document){this.document_=document};hterm.TextAttributes.prototype.clone=function(){var rv=new hterm.TextAttributes(null);for(var key in this){rv[key]=this[key]} + rv.colorPalette=this.colorPalette.concat();return rv};hterm.TextAttributes.prototype.reset=function(){this.foregroundSource=this.SRC_DEFAULT;this.backgroundSource=this.SRC_DEFAULT;this.underlineSource=this.SRC_DEFAULT;this.foreground=this.DEFAULT_COLOR;this.background=this.DEFAULT_COLOR;this.underlineColor=this.DEFAULT_COLOR;this.bold=!1;this.faint=!1;this.italic=!1;this.blink=!1;this.underline=!1;this.strikethrough=!1;this.inverse=!1;this.invisible=!1;this.wcNode=!1;this.asciiNode=!0;this.uri=null;this.uriId=null};hterm.TextAttributes.prototype.resetColorPalette=function(){this.colorPalette=lib.colors.colorPalette.concat();this.syncColors()};hterm.TextAttributes.prototype.resetColor=function(index){index=parseInt(index,10);if(isNaN(index)||index>=this.colorPalette.length) + return;this.colorPalette[index]=lib.colors.stockColorPalette[index];this.syncColors()};hterm.TextAttributes.prototype.isDefault=function(){return(this.foregroundSource==this.SRC_DEFAULT&&this.backgroundSource==this.SRC_DEFAULT&&!this.bold&&!this.faint&&!this.italic&&!this.blink&&!this.underline&&!this.strikethrough&&!this.inverse&&!this.invisible&&!this.wcNode&&this.asciiNode&&this.tileData==null&&this.uri==null)};hterm.TextAttributes.prototype.createContainer=function(opt_textContent){if(this.isDefault()){const node=this.document_.createTextNode(opt_textContent);node.asciiNode=!0;return node} + var span=this.document_.createElement('span');var style=span.style;var classes=[];if(this.foreground!=this.DEFAULT_COLOR) + style.color=this.foreground;if(this.background!=this.DEFAULT_COLOR) + style.backgroundColor=this.background;if(this.enableBold&&this.bold) + style.fontWeight='bold';if(this.faint) + span.faint=!0;if(this.italic) + style.fontStyle='italic';if(this.blink){classes.push('blink-node');span.blinkNode=!0} + let textDecorationLine='';span.underline=this.underline;if(this.underline){textDecorationLine+=' underline';style.textDecorationStyle=this.underline} + if(this.underlineSource!=this.SRC_DEFAULT) + style.textDecorationColor=this.underlineColor;if(this.strikethrough){textDecorationLine+=' line-through';span.strikethrough=!0} + if(textDecorationLine) + style.textDecorationLine=textDecorationLine;if(this.wcNode){classes.push('wc-node');span.wcNode=!0} + span.asciiNode=this.asciiNode;if(this.tileData!=null){classes.push('tile');classes.push('tile_'+this.tileData);span.tileNode=!0} + if(opt_textContent) + span.textContent=opt_textContent;if(this.uri){classes.push('uri-node');span.uriId=this.uriId;span.title=this.uri;span.addEventListener('click',hterm.openUrl.bind(this,this.uri))} + if(classes.length) + span.className=classes.join(' ');return span};hterm.TextAttributes.prototype.matchesContainer=function(obj){if(typeof obj=='string'||obj.nodeType==Node.TEXT_NODE) + return this.isDefault();var style=obj.style;return(!(this.wcNode||obj.wcNode)&&this.asciiNode==obj.asciiNode&&!(this.tileData!=null||obj.tileNode)&&this.uriId==obj.uriId&&this.foreground==style.color&&this.background==style.backgroundColor&&this.underlineColor==style.textDecorationColor&&(this.enableBold&&this.bold)==!!style.fontWeight&&this.blink==!!obj.blinkNode&&this.italic==!!style.fontStyle&&this.underline==obj.underline&&!!this.strikethrough==!!obj.strikethrough)};hterm.TextAttributes.prototype.setDefaults=function(foreground,background){this.defaultForeground=foreground;this.defaultBackground=background;this.syncColors()};hterm.TextAttributes.prototype.syncColors=function(){function getBrightIndex(i){if(i<8){return i+8} + return i} + var foregroundSource=this.foregroundSource;var backgroundSource=this.backgroundSource;var defaultForeground=this.DEFAULT_COLOR;var defaultBackground=this.DEFAULT_COLOR;if(this.inverse){foregroundSource=this.backgroundSource;backgroundSource=this.foregroundSource;defaultForeground=this.defaultBackground;defaultBackground=this.defaultForeground} + if(this.enableBoldAsBright&&this.bold){if(Number.isInteger(foregroundSource)){foregroundSource=getBrightIndex(foregroundSource)}} + if(foregroundSource==this.SRC_DEFAULT) + this.foreground=defaultForeground;else if(Number.isInteger(foregroundSource)) + this.foreground=this.colorPalette[foregroundSource];else this.foreground=foregroundSource;if(this.faint){var colorToMakeFaint=((this.foreground==this.DEFAULT_COLOR)?this.defaultForeground:this.foreground);this.foreground=lib.colors.mix(colorToMakeFaint,'rgb(0, 0, 0)',0.3333)} + if(backgroundSource==this.SRC_DEFAULT) + this.background=defaultBackground;else if(Number.isInteger(backgroundSource)) + this.background=this.colorPalette[backgroundSource];else this.background=backgroundSource;if(this.invisible) + this.foreground=this.background;if(this.underlineSource==this.SRC_DEFAULT) + this.underlineColor='';else if(Number.isInteger(this.underlineSource)) + this.underlineColor=this.colorPalette[this.underlineSource];else this.underlineColor=this.underlineSource};hterm.TextAttributes.containersMatch=function(obj1,obj2){if(typeof obj1=='string') + return hterm.TextAttributes.containerIsDefault(obj2);if(obj1.nodeType!=obj2.nodeType) + return!1;if(obj1.nodeType==Node.TEXT_NODE) + return!0;var style1=obj1.style;var style2=obj2.style;return(style1.color==style2.color&&style1.backgroundColor==style2.backgroundColor&&style1.backgroundColor==style2.backgroundColor&&style1.fontWeight==style2.fontWeight&&style1.fontStyle==style2.fontStyle&&style1.textDecoration==style2.textDecoration&&style1.textDecorationColor==style2.textDecorationColor&&style1.textDecorationStyle==style2.textDecorationStyle&&style1.textDecorationLine==style2.textDecorationLine)};hterm.TextAttributes.containerIsDefault=function(obj){return typeof obj=='string'||obj.nodeType==Node.TEXT_NODE};hterm.TextAttributes.nodeWidth=function(node){if(!node.asciiNode){return lib.wc.strWidth(node.textContent)}else{return node.textContent.length}};hterm.TextAttributes.nodeSubstr=function(node,start,width){if(!node.asciiNode){return lib.wc.substr(node.textContent,start,width)}else{return node.textContent.substr(start,width)}};hterm.TextAttributes.nodeSubstring=function(node,start,end){if(!node.asciiNode){return lib.wc.substring(node.textContent,start,end)}else{return node.textContent.substring(start,end)}};hterm.TextAttributes.splitWidecharString=function(str){var rv=[];var base=0,length=0,wcStrWidth=0,wcCharWidth;var asciiNode=!0;for(var i=0;i0)?0:1)+64;b|=mod;if(this.mouseCoordinates==this.MOUSE_COORDINATES_SGR){response=`\x1b[<${b};${x};${y}M`}else{response='\x1b[M'+String.fromCharCode(b+32)+x+y} + e.preventDefault();break;case 'mousedown':var b=Math.min(e.button,2);if(this.mouseCoordinates!=this.MOUSE_COORDINATES_SGR) + b+=32;b|=mod;if(this.mouseCoordinates==this.MOUSE_COORDINATES_SGR) + response=`\x1b[<${b};${x};${y}M`;else response='\x1b[M'+String.fromCharCode(b)+x+y;break;case 'mouseup':if(this.mouseReport!=this.MOUSE_REPORT_PRESS){if(this.mouseCoordinates==this.MOUSE_COORDINATES_SGR){response=`\x1b[<${e.button};${x};${y}m`}else{response='\x1b[M\x23'+x+y}} + break;case 'mousemove':if(this.mouseReport==this.MOUSE_REPORT_DRAG&&e.buttons){b=this.mouseCoordinates==this.MOUSE_COORDINATES_SGR?0:32;if(e.buttons&0x1){b+=0}else if(e.buttons&0x4){b+=1}else if(e.buttons&0x2){b+=2}else{b+=3} + b+=32;b|=mod;if(this.mouseCoordinates==this.MOUSE_COORDINATES_SGR) + response=`\x1b[<${b};${x};${y}M`;else response='\x1b[M'+String.fromCharCode(b)+x+y;if(this.lastMouseDragResponse_==response) + response='';else this.lastMouseDragResponse_=response} + break;case 'click':case 'dblclick':break;default:console.error('Unknown mouse event: '+e.type,e);break} + if(response) + this.terminal.io.sendString(response)};hterm.VT.prototype.interpret=function(buf){this.parseState_.resetBuf(this.decode(buf));while(!this.parseState_.isComplete()){var func=this.parseState_.func;var pos=this.parseState_.pos;var buf=this.parseState_.buf;this.parseState_.func.call(this,this.parseState_);if(this.parseState_.func==func&&this.parseState_.pos==pos&&this.parseState_.buf==buf){throw 'Parser did not alter the state!'}}};hterm.VT.prototype.decode=function(str){if(this.characterEncoding=='utf-8') + return this.decodeUTF8(str);return str};hterm.VT.prototype.encodeUTF8=function(str){return lib.encodeUTF8(str)};hterm.VT.prototype.decodeUTF8=function(str){return this.utf8Decoder_.decode(str)};hterm.VT.prototype.setEncoding=function(encoding){switch(encoding){default:console.warn('Invalid value for "terminal-encoding": '+encoding);case 'iso-2022':this.codingSystemUtf8_=!1;this.codingSystemLocked_=!1;break;case 'utf-8-locked':this.codingSystemUtf8_=!0;this.codingSystemLocked_=!0;break;case 'utf-8':this.codingSystemUtf8_=!0;this.codingSystemLocked_=!1;break} + this.updateEncodingState_()};hterm.VT.prototype.updateEncodingState_=function(){var cc1=Object.keys(hterm.VT.CC1).filter((e)=>!this.codingSystemUtf8_||e.charCodeAt()<0x80).map((e)=>'\\x'+lib.f.zpad(e.charCodeAt().toString(16),2)).join('');this.cc1Pattern_=new RegExp(`[${cc1}]`)};hterm.VT.prototype.parseUnknown_=function(parseState){var self=this;function print(str){if(!self.codingSystemUtf8_&&self[self.GL].GL) + str=self[self.GL].GL(str);self.terminal.print(str)} + var buf=parseState.peekRemainingBuf();var nextControl=buf.search(this.cc1Pattern_);if(nextControl==0){this.dispatch('CC1',buf.substr(0,1),parseState);parseState.advance(1);return} + if(nextControl==-1){print(buf);parseState.reset();return} + print(buf.substr(0,nextControl));this.dispatch('CC1',buf.substr(nextControl,1),parseState);parseState.advance(nextControl+1)};hterm.VT.prototype.parseCSI_=function(parseState){var ch=parseState.peekChar();var args=parseState.args;const finishParsing=()=>{parseState.resetArguments();parseState.subargs=null;parseState.resetParseFunction()};if(ch>='@'&&ch<='~'){this.dispatch('CSI',this.leadingModifier_+this.trailingModifier_+ch,parseState);finishParsing()}else if(ch==';'){if(this.trailingModifier_){finishParsing()}else{if(!args.length){args.push('')} + args.push('')}}else if(ch>='0'&&ch<='9'||ch==':'){if(this.trailingModifier_){finishParsing()}else{if(!args.length){args[0]=ch}else{args[args.length-1]+=ch} + if(ch==':') + parseState.argSetSubargs(args.length-1)}}else if(ch>=' '&&ch<='?'){if(!args.length){this.leadingModifier_+=ch}else{this.trailingModifier_+=ch}}else if(this.cc1Pattern_.test(ch)){this.dispatch('CC1',ch,parseState)}else{finishParsing()} + parseState.advance(1)};hterm.VT.prototype.parseUntilStringTerminator_=function(parseState){var buf=parseState.peekRemainingBuf();var args=parseState.args;let bufInserted=0;if(!args.length){args[0]='';args[1]=new Date()}else{if(args[0].slice(-1)=='\x1b'){args[0]=args[0].slice(0,-1);buf='\x1b'+buf;bufInserted=1}} + const nextTerminator=buf.search(/[\x1b\x07]/);const terminator=buf[nextTerminator];let foundTerminator;if(terminator=='\x1b'&&buf[nextTerminator+1]!='\\') + foundTerminator=!1;else foundTerminator=(nextTerminator!=-1);if(!foundTerminator){args[0]+=buf;var abortReason;if(terminator=='\x1b'&&nextTerminator!=buf.length-1) + abortReason='embedded escape: '+nextTerminator;if(new Date()-args[1]>this.oscTimeLimit_) + abortReason='timeout expired: '+(new Date()-args[1]);if(abortReason){if(this.warnUnimplemented) + console.log('parseUntilStringTerminator_: aborting: '+abortReason,args[0]);parseState.reset(args[0]);return!1} + parseState.advance(buf.length-bufInserted);return!0} + args[0]+=buf.substr(0,nextTerminator);parseState.resetParseFunction();parseState.advance(nextTerminator+(terminator=='\x1b'?2:1)-bufInserted);return!0};hterm.VT.prototype.dispatch=function(type,code,parseState){var handler=hterm.VT[type][code];if(!handler){if(this.warnUnimplemented) + console.warn('Unknown '+type+' code: '+JSON.stringify(code));return} + if(handler==hterm.VT.ignore){if(this.warnUnimplemented) + console.warn('Ignored '+type+' code: '+JSON.stringify(code));return} + if(parseState.subargs&&!handler.supportsSubargs){if(this.warnUnimplemented) + console.warn('Ignored '+type+' code w/subargs: '+JSON.stringify(code));return} + if(type=='CC1'&&code>'\x7f'&&!this.enable8BitControl){console.warn('Ignoring 8-bit control code: 0x'+code.charCodeAt(0).toString(16));return} + handler.apply(this,[parseState,code])};hterm.VT.prototype.setANSIMode=function(code,state){if(code==4){this.terminal.setInsertMode(state)}else if(code==20){this.terminal.setAutoCarriageReturn(state)}else if(this.warnUnimplemented){console.warn('Unimplemented ANSI Mode: '+code)}};hterm.VT.prototype.setDECMode=function(code,state){switch(parseInt(code,10)){case 1:this.terminal.keyboard.applicationCursor=state;break;case 3:if(this.allowColumnWidthChanges_){this.terminal.setWidth(state?132:80);this.terminal.clearHome();this.terminal.setVTScrollRegion(null,null)} + break;case 5:this.terminal.setReverseVideo(state);break;case 6:this.terminal.setOriginMode(state);break;case 7:this.terminal.setWraparound(state);break;case 9:this.mouseReport=(state?this.MOUSE_REPORT_PRESS:this.MOUSE_REPORT_DISABLED);this.terminal.syncMouseStyle();break;case 12:if(this.enableDec12) + this.terminal.setCursorBlink(state);break;case 25:this.terminal.setCursorVisible(state);break;case 30:this.terminal.setScrollbarVisible(state);break;case 40:this.terminal.allowColumnWidthChanges_=state;break;case 45:this.terminal.setReverseWraparound(state);break;case 67:this.terminal.keyboard.backspaceSendsBackspace=state;break;case 1000:this.mouseReport=(state?this.MOUSE_REPORT_CLICK:this.MOUSE_REPORT_DISABLED);this.terminal.syncMouseStyle();break;case 1002:this.mouseReport=(state?this.MOUSE_REPORT_DRAG:this.MOUSE_REPORT_DISABLED);this.terminal.syncMouseStyle();break;case 1004:this.terminal.reportFocus=state;break;case 1005:this.mouseCoordinates=(state?this.MOUSE_COORDINATES_UTF8:this.MOUSE_COORDINATES_X10);break;case 1006:this.mouseCoordinates=(state?this.MOUSE_COORDINATES_SGR:this.MOUSE_COORDINATES_X10);break;case 1007:this.terminal.scrollWheelArrowKeys_=state;break;case 1010:this.terminal.scrollOnOutput=state;break;case 1011:this.terminal.scrollOnKeystroke=state;break;case 1036:this.terminal.keyboard.metaSendsEscape=state;break;case 1039:if(state){if(!this.terminal.keyboard.previousAltSendsWhat_){this.terminal.keyboard.previousAltSendsWhat_=this.terminal.keyboard.altSendsWhat;this.terminal.keyboard.altSendsWhat='escape'}}else if(this.terminal.keyboard.previousAltSendsWhat_){this.terminal.keyboard.altSendsWhat=this.terminal.keyboard.previousAltSendsWhat_;this.terminal.keyboard.previousAltSendsWhat_=null} + break;case 47:case 1047:this.terminal.setAlternateMode(state);break;case 1048:if(state) + this.terminal.saveCursorAndState();else this.terminal.restoreCursorAndState();break;case 1049:if(state){this.terminal.saveCursorAndState();this.terminal.setAlternateMode(state);this.terminal.clear()}else{this.terminal.setAlternateMode(state);this.terminal.restoreCursorAndState()} + break;case 2004:this.terminal.setBracketedPaste(state);break;default:if(this.warnUnimplemented) + console.warn('Unimplemented DEC Private Mode: '+code);break}};hterm.VT.ignore=function(){};hterm.VT.CC1={};hterm.VT.ESC={};hterm.VT.CSI={};hterm.VT.OSC={};hterm.VT.VT52={};hterm.VT.CC1['\x00']=hterm.VT.ignore;hterm.VT.CC1['\x05']=hterm.VT.ignore;hterm.VT.CC1['\x07']=function(){this.terminal.ringBell()};hterm.VT.CC1['\x08']=function(){this.terminal.cursorLeft(1)};hterm.VT.CC1['\x09']=function(){this.terminal.forwardTabStop()};hterm.VT.CC1['\x0a']=function(){this.terminal.formFeed()};hterm.VT.CC1['\x0b']=hterm.VT.CC1['\x0a'];hterm.VT.CC1['\x0c']=hterm.VT.CC1['\x0a'];hterm.VT.CC1['\x0d']=function(){this.terminal.setCursorColumn(0)};hterm.VT.CC1['\x0e']=function(){this.GL='G1'};hterm.VT.CC1['\x0f']=function(){this.GL='G0'};hterm.VT.CC1['\x11']=hterm.VT.ignore;hterm.VT.CC1['\x13']=hterm.VT.ignore;hterm.VT.CC1['\x18']=function(parseState){if(this.GL=='G1'){this.GL='G0'} + parseState.resetParseFunction();this.terminal.print('?')};hterm.VT.CC1['\x1a']=hterm.VT.CC1['\x18'];hterm.VT.CC1['\x1b']=function(parseState){function parseESC(parseState){var ch=parseState.consumeChar();if(ch=='\x1b') + return;this.dispatch('ESC',ch,parseState);if(parseState.func==parseESC) + parseState.resetParseFunction()} + parseState.func=parseESC};hterm.VT.CC1['\x7f']=hterm.VT.ignore;hterm.VT.CC1['\x84']=hterm.VT.ESC.D=function(){this.terminal.lineFeed()};hterm.VT.CC1['\x85']=hterm.VT.ESC.E=function(){this.terminal.setCursorColumn(0);this.terminal.cursorDown(1)};hterm.VT.CC1['\x88']=hterm.VT.ESC.H=function(){this.terminal.setTabStop(this.terminal.getCursorColumn())};hterm.VT.CC1['\x8d']=hterm.VT.ESC.M=function(){this.terminal.reverseLineFeed()};hterm.VT.CC1['\x8e']=hterm.VT.ESC.N=hterm.VT.ignore;hterm.VT.CC1['\x8f']=hterm.VT.ESC.O=hterm.VT.ignore;hterm.VT.CC1['\x90']=hterm.VT.ESC.P=function(parseState){parseState.resetArguments();parseState.func=this.parseUntilStringTerminator_};hterm.VT.CC1['\x96']=hterm.VT.ESC.V=hterm.VT.ignore;hterm.VT.CC1['\x97']=hterm.VT.ESC.W=hterm.VT.ignore;hterm.VT.CC1['\x98']=hterm.VT.ESC.X=hterm.VT.ignore;hterm.VT.CC1['\x9a']=hterm.VT.ESC.Z=function(){this.terminal.io.sendString('\x1b[?1;2c')};hterm.VT.CC1['\x9b']=hterm.VT.ESC['[']=function(parseState){parseState.resetArguments();this.leadingModifier_='';this.trailingModifier_='';parseState.func=this.parseCSI_};hterm.VT.CC1['\x9c']=hterm.VT.ESC['\\']=hterm.VT.ignore;hterm.VT.CC1['\x9d']=hterm.VT.ESC[']']=function(parseState){parseState.resetArguments();function parseOSC(parseState){if(!this.parseUntilStringTerminator_(parseState)){return} + if(parseState.func==parseOSC){return} + var ary=parseState.args[0].match(/^(\d+);(.*)$/);if(ary){parseState.args[0]=ary[2];this.dispatch('OSC',ary[1],parseState)}else{console.warn('Invalid OSC: '+JSON.stringify(parseState.args[0]))} + parseState.resetArguments()} + parseState.func=parseOSC};hterm.VT.CC1['\x9e']=hterm.VT.ESC['^']=function(parseState){parseState.resetArguments();parseState.func=this.parseUntilStringTerminator_};hterm.VT.CC1['\x9f']=hterm.VT.ESC._=function(parseState){parseState.resetArguments();parseState.func=this.parseUntilStringTerminator_};hterm.VT.ESC['\x20']=function(parseState){parseState.func=function(parseState){var ch=parseState.consumeChar();if(this.warnUnimplemented) + console.warn('Unimplemented sequence: ESC 0x20 '+ch);parseState.resetParseFunction()}};hterm.VT.ESC['#']=function(parseState){parseState.func=function(parseState){var ch=parseState.consumeChar();if(ch=='8'){this.terminal.setCursorPosition(0,0);this.terminal.fill('E')} + parseState.resetParseFunction()}};hterm.VT.ESC['%']=function(parseState){parseState.func=function(parseState){var ch=parseState.consumeChar();if(this.codingSystemLocked_){if(ch=='/') + parseState.consumeChar();parseState.resetParseFunction();return} + switch(ch){case '@':this.setEncoding('iso-2022');break;case 'G':this.setEncoding('utf-8');break;case '/':ch=parseState.consumeChar();switch(ch){case 'G':case 'H':case 'I':this.setEncoding('utf-8-locked');break;default:if(this.warnUnimplemented) + console.warn('Unknown ESC % / argument: '+JSON.stringify(ch));break} + break;default:if(this.warnUnimplemented) + console.warn('Unknown ESC % argument: '+JSON.stringify(ch));break} + parseState.resetParseFunction()}};hterm.VT.ESC['(']=hterm.VT.ESC[')']=hterm.VT.ESC['*']=hterm.VT.ESC['+']=hterm.VT.ESC['-']=hterm.VT.ESC['.']=hterm.VT.ESC['/']=function(parseState,code){parseState.func=function(parseState){var ch=parseState.consumeChar();if(ch=='\x1b'){parseState.resetParseFunction();parseState.func();return} + var map=this.characterMaps.getMap(ch);if(map!==undefined){if(code=='('){this.G0=map}else if(code==')'||code=='-'){this.G1=map}else if(code=='*'||code=='.'){this.G2=map}else if(code=='+'||code=='/'){this.G3=map}}else if(this.warnUnimplemented){console.log('Invalid character set for "'+code+'": '+ch)} + parseState.resetParseFunction()}};hterm.VT.ESC['6']=hterm.VT.ignore;hterm.VT.ESC['7']=function(){this.terminal.saveCursorAndState()};hterm.VT.ESC['8']=function(){this.terminal.restoreCursorAndState()};hterm.VT.ESC['9']=hterm.VT.ignore;hterm.VT.ESC['=']=function(){this.terminal.keyboard.applicationKeypad=!0};hterm.VT.ESC['>']=function(){this.terminal.keyboard.applicationKeypad=!1};hterm.VT.ESC.F=hterm.VT.ignore;hterm.VT.ESC.c=function(){this.terminal.reset()};hterm.VT.ESC.l=hterm.VT.ESC.m=hterm.VT.ignore;hterm.VT.ESC.n=function(){this.GL='G2'};hterm.VT.ESC.o=function(){this.GL='G3'};hterm.VT.ESC['|']=function(){this.GR='G3'};hterm.VT.ESC['}']=function(){this.GR='G2'};hterm.VT.ESC['~']=function(){this.GR='G1'};hterm.VT.OSC['0']=function(parseState){this.terminal.setWindowTitle(parseState.args[0])};hterm.VT.OSC['2']=hterm.VT.OSC['0'];hterm.VT.OSC['4']=function(parseState){var args=parseState.args[0].split(';');var pairCount=parseInt(args.length/2);var colorPalette=this.terminal.getTextAttributes().colorPalette;var responseArray=[];for(var pairNumber=0;pairNumber=colorPalette.length) + continue;if(colorValue=='?'){colorValue=lib.colors.rgbToX11(colorPalette[colorIndex]);if(colorValue) + responseArray.push(colorIndex+';'+colorValue);continue} + colorValue=lib.colors.x11ToCSS(colorValue);if(colorValue) + colorPalette[colorIndex]=colorValue} + if(responseArray.length) + this.terminal.io.sendString('\x1b]4;'+responseArray.join(';')+'\x07')};hterm.VT.OSC['8']=function(parseState){const args=parseState.args[0].split(';');let id=null;let uri=null;if(args.length!=2||args[1].length==0){}else{const params=args[0].split(':');id='';params.forEach((param)=>{const idx=param.indexOf('=');if(idx==-1) + return;const key=param.slice(0,idx);const value=param.slice(idx+1);switch(key){case 'id':id=value;break;default:break}});uri=args[1]} + const attrs=this.terminal.getTextAttributes();attrs.uri=uri;attrs.uriId=id};hterm.VT.OSC['9']=function(parseState){hterm.notify({'body':parseState.args[0]})};hterm.VT.OSC['10']=function(parseState){var args=parseState.args[0].split(';');if(!args) + return;var colorArg;var colorX11=lib.colors.x11ToCSS(args.shift());if(colorX11) + this.terminal.setForegroundColor(colorX11);if(args.length>0){parseState.args[0]=args.join(';');hterm.VT.OSC['11'].apply(this,[parseState])}};hterm.VT.OSC['11']=function(parseState){var args=parseState.args[0].split(';');if(!args) + return;var colorArg;var colorX11=lib.colors.x11ToCSS(args.shift());if(colorX11) + this.terminal.setBackgroundColor(colorX11);if(args.length>0){parseState.args[0]=args.join(';');hterm.VT.OSC['12'].apply(this,[parseState])}};hterm.VT.OSC['12']=function(parseState){var args=parseState.args[0].split(';');if(!args) + return;var colorArg;var colorX11=lib.colors.x11ToCSS(args.shift());if(colorX11) + this.terminal.setCursorColor(colorX11)};hterm.VT.OSC['50']=function(parseState){var args=parseState.args[0].match(/CursorShape=(.)/i);if(!args){console.warn('Could not parse OSC 50 args: '+parseState.args[0]);return} + switch(args[1]){case '1':this.terminal.setCursorShape(hterm.Terminal.cursorShape.BEAM);break;case '2':this.terminal.setCursorShape(hterm.Terminal.cursorShape.UNDERLINE);break;default:this.terminal.setCursorShape(hterm.Terminal.cursorShape.BLOCK)}};hterm.VT.OSC['52']=function(parseState){if(!this.enableClipboardWrite) + return;var args=parseState.args[0].match(/^[cps01234567]*;(.*)/);if(!args) + return;var data=window.atob(args[1]);if(data) + this.terminal.copyStringToClipboard(this.decode(data))};hterm.VT.OSC['104']=function(parseState){const attrs=this.terminal.getTextAttributes();if(!parseState.args[0]){attrs.resetColorPalette();return} + const args=parseState.args[0].split(';');args.forEach((c)=>attrs.resetColor(c))};hterm.VT.OSC['110']=function(parseState){this.terminal.setForegroundColor()};hterm.VT.OSC['111']=function(parseState){this.terminal.setBackgroundColor()};hterm.VT.OSC['112']=function(parseState){this.terminal.setCursorColor()};hterm.VT.OSC['1337']=function(parseState){let args=parseState.args[0].match(/^File=([^:]*):([\s\S]*)$/m);if(!args){if(this.warnUnimplemented) + console.log(`iTerm2 1337: unsupported sequence: ${args[1]}`);return} + const options={name:'',size:0,preserveAspectRatio:!0,inline:!1,width:'auto',height:'auto',align:'left',uri:'data:application/octet-stream;base64,'+args[2].replace(/[\n\r]+/gm,''),};args[1].split(';').forEach((ele)=>{const kv=ele.match(/^([^=]+)=(.*)$/m);if(!kv) + return;switch(kv[1]){case 'name':try{options.name=window.atob(kv[2])}catch(e){} + break;case 'size':try{options.size=parseInt(kv[2])}catch(e){} + break;case 'width':options.width=kv[2];break;case 'height':options.height=kv[2];break;case 'preserveAspectRatio':options.preserveAspectRatio=!(kv[2]=='0');break;case 'inline':options.inline=!(kv[2]=='0');break;case 'align':options.align=kv[2];break;default:break}});if(options.inline){const io=this.terminal.io;const queued=parseState.peekRemainingBuf();parseState.advance(queued.length);this.terminal.displayImage(options);io.writeUTF8(queued)}else this.terminal.displayImage(options)};hterm.VT.OSC['777']=function(parseState){var ary;var urxvtMod=parseState.args[0].split(';',1)[0];switch(urxvtMod){case 'notify':var title,message;ary=parseState.args[0].match(/^[^;]+;([^;]*)(;([\s\S]*))?$/);if(ary){title=ary[1];message=ary[3]} + hterm.notify({'title':title,'body':message});break;default:console.warn('Unknown urxvt module: '+parseState.args[0]);break}};hterm.VT.CSI['@']=function(parseState){this.terminal.insertSpace(parseState.iarg(0,1))};hterm.VT.CSI.A=function(parseState){this.terminal.cursorUp(parseState.iarg(0,1))};hterm.VT.CSI.B=function(parseState){this.terminal.cursorDown(parseState.iarg(0,1))};hterm.VT.CSI.C=function(parseState){this.terminal.cursorRight(parseState.iarg(0,1))};hterm.VT.CSI.D=function(parseState){this.terminal.cursorLeft(parseState.iarg(0,1))};hterm.VT.CSI.E=function(parseState){this.terminal.cursorDown(parseState.iarg(0,1));this.terminal.setCursorColumn(0)};hterm.VT.CSI.F=function(parseState){this.terminal.cursorUp(parseState.iarg(0,1));this.terminal.setCursorColumn(0)};hterm.VT.CSI.G=function(parseState){this.terminal.setCursorColumn(parseState.iarg(0,1)-1)};hterm.VT.CSI.H=function(parseState){this.terminal.setCursorPosition(parseState.iarg(0,1)-1,parseState.iarg(1,1)-1)};hterm.VT.CSI.I=function(parseState){var count=parseState.iarg(0,1);count=lib.f.clamp(count,1,this.terminal.screenSize.width);for(var i=0;iT']=hterm.VT.ignore;hterm.VT.CSI.X=function(parseState){this.terminal.eraseToRight(parseState.iarg(0,1))};hterm.VT.CSI.Z=function(parseState){var count=parseState.iarg(0,1);count=lib.f.clamp(count,1,this.terminal.screenSize.width);for(var i=0;ic']=function(parseState){this.terminal.io.sendString('\x1b[>0;256;0c')};hterm.VT.CSI.d=function(parseState){this.terminal.setAbsoluteCursorRow(parseState.iarg(0,1)-1)};hterm.VT.CSI.f=hterm.VT.CSI.H;hterm.VT.CSI.g=function(parseState){if(!parseState.args[0]||parseState.args[0]==0){this.terminal.clearTabStopAtCursor(!1)}else if(parseState.args[0]==3){this.terminal.clearAllTabStops()}};hterm.VT.CSI.h=function(parseState){for(var i=0;i=90&&arg<=97){attrs.foregroundSource=arg-90+8}else if(arg>=100&&arg<=107){attrs.backgroundSource=arg-100+8}} + attrs.setDefaults(this.terminal.getForegroundColor(),this.terminal.getBackgroundColor())};hterm.VT.CSI.m.supportsSubargs=!0;hterm.VT.CSI['>m']=hterm.VT.ignore;hterm.VT.CSI.n=function(parseState){if(parseState.args[0]==5){this.terminal.io.sendString('\x1b0n')}else if(parseState.args[0]==6){var row=this.terminal.getCursorRow()+1;var col=this.terminal.getCursorColumn()+1;this.terminal.io.sendString('\x1b['+row+';'+col+'R')}};hterm.VT.CSI['>n']=hterm.VT.ignore;hterm.VT.CSI['?n']=function(parseState){if(parseState.args[0]==6){var row=this.terminal.getCursorRow()+1;var col=this.terminal.getCursorColumn()+1;this.terminal.io.sendString('\x1b['+row+';'+col+'R')}else if(parseState.args[0]==15){this.terminal.io.sendString('\x1b[?11n')}else if(parseState.args[0]==25){this.terminal.io.sendString('\x1b[?21n')}else if(parseState.args[0]==26){this.terminal.io.sendString('\x1b[?12;1;0;0n')}else if(parseState.args[0]==53){this.terminal.io.sendString('\x1b[?50n')}};hterm.VT.CSI['>p']=hterm.VT.ignore;hterm.VT.CSI['!p']=function(){this.terminal.softReset()};hterm.VT.CSI['$p']=hterm.VT.ignore;hterm.VT.CSI['?$p']=hterm.VT.ignore;hterm.VT.CSI.p=hterm.VT.ignore;hterm.VT.CSI.q=hterm.VT.ignore;hterm.VT.CSI[' q']=function(parseState){var arg=parseState.args[0];if(arg==0||arg==1){this.terminal.setCursorShape(hterm.Terminal.cursorShape.BLOCK);this.terminal.setCursorBlink(!0)}else if(arg==2){this.terminal.setCursorShape(hterm.Terminal.cursorShape.BLOCK);this.terminal.setCursorBlink(!1)}else if(arg==3){this.terminal.setCursorShape(hterm.Terminal.cursorShape.UNDERLINE);this.terminal.setCursorBlink(!0)}else if(arg==4){this.terminal.setCursorShape(hterm.Terminal.cursorShape.UNDERLINE);this.terminal.setCursorBlink(!1)}else if(arg==5){this.terminal.setCursorShape(hterm.Terminal.cursorShape.BEAM);this.terminal.setCursorBlink(!0)}else if(arg==6){this.terminal.setCursorShape(hterm.Terminal.cursorShape.BEAM);this.terminal.setCursorBlink(!1)}else{console.warn('Unknown cursor style: '+arg)}};hterm.VT.CSI.q=hterm.VT.ignore;hterm.VT.CSI.r=function(parseState){var args=parseState.args;var scrollTop=args[0]?parseInt(args[0],10)-1:null;var scrollBottom=args[1]?parseInt(args[1],10)-1:null;this.terminal.setVTScrollRegion(scrollTop,scrollBottom);this.terminal.setCursorPosition(0,0)};hterm.VT.CSI['?r']=hterm.VT.ignore;hterm.VT.CSI['$r']=hterm.VT.ignore;hterm.VT.CSI.s=function(){this.terminal.saveCursorAndState()};hterm.VT.CSI['?s']=hterm.VT.ignore;hterm.VT.CSI.t=hterm.VT.ignore;hterm.VT.CSI['$t']=hterm.VT.ignore;hterm.VT.CSI['>t']=hterm.VT.ignore;hterm.VT.CSI[' t']=hterm.VT.ignore;hterm.VT.CSI.u=function(){this.terminal.restoreCursorAndState()};hterm.VT.CSI[' u']=hterm.VT.ignore;hterm.VT.CSI['$v']=hterm.VT.ignore;hterm.VT.CSI['\'w']=hterm.VT.ignore;hterm.VT.CSI.x=hterm.VT.ignore;hterm.VT.CSI['*x']=hterm.VT.ignore;hterm.VT.CSI['$x']=hterm.VT.ignore;hterm.VT.CSI.z=function(parseState){if(parseState.args.length<1) + return;var arg=parseState.args[0];if(arg==0){if(parseState.args.length<2) + return;this.terminal.getTextAttributes().tileData=parseState.args[1]}else if(arg==1){this.terminal.getTextAttributes().tileData=null}};hterm.VT.CSI['\'z']=hterm.VT.ignore;hterm.VT.CSI['$z']=hterm.VT.ignore;hterm.VT.CSI['\'{']=hterm.VT.ignore;hterm.VT.CSI['\'|']=hterm.VT.ignore;hterm.VT.CSI['\'}']=hterm.VT.ignore;hterm.VT.CSI['\'~']=hterm.VT.ignore;'use strict';lib.rtdep('lib.f');hterm.VT.CharacterMap=function(description,glmap){this.description=description;this.GL=null;this.glmapBase_=glmap;this.sync_()};hterm.VT.CharacterMap.prototype.sync_=function(opt_glmap){if(!this.glmapBase_&&!opt_glmap){this.GL=null;delete this.glmap_;delete this.glre_;return} + if(opt_glmap) + this.glmap_=Object.assign({},this.glmapBase_,opt_glmap);else this.glmap_=this.glmapBase_;var glchars=Object.keys(this.glmap_).map((key)=>'\\x'+lib.f.zpad(key.charCodeAt(0).toString(16)));this.glre_=new RegExp('['+glchars.join('')+']','g');this.GL=(str)=>str.replace(this.glre_,(ch)=>this.glmap_[ch])};hterm.VT.CharacterMap.prototype.reset=function(){if(this.glmap_!==this.glmapBase_) + this.sync_()};hterm.VT.CharacterMap.prototype.setOverrides=function(glmap){this.sync_(glmap)};hterm.VT.CharacterMap.prototype.clone=function(){var map=new hterm.VT.CharacterMap(this.description,this.glmapBase_);if(this.glmap_!==this.glmapBase_) + map.setOverrides(this.glmap_);return map};hterm.VT.CharacterMaps=function(){this.maps_=hterm.VT.CharacterMaps.DefaultMaps;this.mapsBase_=this.maps_};hterm.VT.CharacterMaps.prototype.getMap=function(name){if(this.maps_.hasOwnProperty(name)) + return this.maps_[name];else return undefined};hterm.VT.CharacterMaps.prototype.addMap=function(name,map){if(this.maps_===this.mapsBase_) + this.maps_=Object.assign({},this.mapsBase_);this.maps_[name]=map};hterm.VT.CharacterMaps.prototype.reset=function(){if(this.maps_!==hterm.VT.CharacterMaps.DefaultMaps) + this.maps_=hterm.VT.CharacterMaps.DefaultMaps};hterm.VT.CharacterMaps.prototype.setOverrides=function(maps){if(this.maps_===this.mapsBase_) + this.maps_=Object.assign({},this.mapsBase_);for(var name in maps){var map=this.getMap(name);if(map!==undefined){this.maps_[name]=map.clone();this.maps_[name].setOverrides(maps[name])}else this.addMap(name,new hterm.VT.CharacterMap('user '+name,maps[name]))}};hterm.VT.CharacterMaps.DefaultMaps={};hterm.VT.CharacterMaps.DefaultMaps['0']=new hterm.VT.CharacterMap('graphic',{'\x60':'\u25c6','\x61':'\u2592','\x62':'\u2409','\x63':'\u240c','\x64':'\u240d','\x65':'\u240a','\x66':'\u00b0','\x67':'\u00b1','\x68':'\u2424','\x69':'\u240b','\x6a':'\u2518','\x6b':'\u2510','\x6c':'\u250c','\x6d':'\u2514','\x6e':'\u253c','\x6f':'\u23ba','\x70':'\u23bb','\x71':'\u2500','\x72':'\u23bc','\x73':'\u23bd','\x74':'\u251c','\x75':'\u2524','\x76':'\u2534','\x77':'\u252c','\x78':'\u2502','\x79':'\u2264','\x7a':'\u2265','\x7b':'\u03c0','\x7c':'\u2260','\x7d':'\u00a3','\x7e':'\u00b7',});hterm.VT.CharacterMaps.DefaultMaps.A=new hterm.VT.CharacterMap('british',{'\x23':'\u00a3',});hterm.VT.CharacterMaps.DefaultMaps.B=new hterm.VT.CharacterMap('us',null);hterm.VT.CharacterMaps.DefaultMaps['4']=new hterm.VT.CharacterMap('dutch',{'\x23':'\u00a3','\x40':'\u00be','\x5b':'\u0132','\x5c':'\u00bd','\x5d':'\u007c','\x7b':'\u00a8','\x7c':'\u0066','\x7d':'\u00bc','\x7e':'\u00b4',});hterm.VT.CharacterMaps.DefaultMaps.C=hterm.VT.CharacterMaps.DefaultMaps['5']=new hterm.VT.CharacterMap('finnish',{'\x5b':'\u00c4','\x5c':'\u00d6','\x5d':'\u00c5','\x5e':'\u00dc','\x60':'\u00e9','\x7b':'\u00e4','\x7c':'\u00f6','\x7d':'\u00e5','\x7e':'\u00fc',});hterm.VT.CharacterMaps.DefaultMaps.R=new hterm.VT.CharacterMap('french',{'\x23':'\u00a3','\x40':'\u00e0','\x5b':'\u00b0','\x5c':'\u00e7','\x5d':'\u00a7','\x7b':'\u00e9','\x7c':'\u00f9','\x7d':'\u00e8','\x7e':'\u00a8',});hterm.VT.CharacterMaps.DefaultMaps.Q=new hterm.VT.CharacterMap('french canadian',{'\x40':'\u00e0','\x5b':'\u00e2','\x5c':'\u00e7','\x5d':'\u00ea','\x5e':'\u00ee','\x60':'\u00f4','\x7b':'\u00e9','\x7c':'\u00f9','\x7d':'\u00e8','\x7e':'\u00fb',});hterm.VT.CharacterMaps.DefaultMaps.K=new hterm.VT.CharacterMap('german',{'\x40':'\u00a7','\x5b':'\u00c4','\x5c':'\u00d6','\x5d':'\u00dc','\x7b':'\u00e4','\x7c':'\u00f6','\x7d':'\u00fc','\x7e':'\u00df',});hterm.VT.CharacterMaps.DefaultMaps.Y=new hterm.VT.CharacterMap('italian',{'\x23':'\u00a3','\x40':'\u00a7','\x5b':'\u00b0','\x5c':'\u00e7','\x5d':'\u00e9','\x60':'\u00f9','\x7b':'\u00e0','\x7c':'\u00f2','\x7d':'\u00e8','\x7e':'\u00ec',});hterm.VT.CharacterMaps.DefaultMaps.E=hterm.VT.CharacterMaps.DefaultMaps['6']=new hterm.VT.CharacterMap('norwegian/danish',{'\x40':'\u00c4','\x5b':'\u00c6','\x5c':'\u00d8','\x5d':'\u00c5','\x5e':'\u00dc','\x60':'\u00e4','\x7b':'\u00e6','\x7c':'\u00f8','\x7d':'\u00e5','\x7e':'\u00fc',});hterm.VT.CharacterMaps.DefaultMaps.Z=new hterm.VT.CharacterMap('spanish',{'\x23':'\u00a3','\x40':'\u00a7','\x5b':'\u00a1','\x5c':'\u00d1','\x5d':'\u00bf','\x7b':'\u00b0','\x7c':'\u00f1','\x7d':'\u00e7',});hterm.VT.CharacterMaps.DefaultMaps['7']=hterm.VT.CharacterMaps.DefaultMaps.H=new hterm.VT.CharacterMap('swedish',{'\x40':'\u00c9','\x5b':'\u00c4','\x5c':'\u00d6','\x5d':'\u00c5','\x5e':'\u00dc','\x60':'\u00e9','\x7b':'\u00e4','\x7c':'\u00f6','\x7d':'\u00e5','\x7e':'\u00fc',});hterm.VT.CharacterMaps.DefaultMaps['=']=new hterm.VT.CharacterMap('swiss',{'\x23':'\u00f9','\x40':'\u00e0','\x5b':'\u00e9','\x5c':'\u00e7','\x5d':'\u00ea','\x5e':'\u00ee','\x5f':'\u00e8','\x60':'\u00f4','\x7b':'\u00e4','\x7c':'\u00f6','\x7d':'\u00fc','\x7e':'\u00fb',});lib.resource.add('hterm/audio/bell','audio/ogg;base64','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'+'VbVtzzRl2VRV3RZV1bZl2xZ+V5Z13zNNWRZV1dZNVbV115Z9X9ZtXZg0zTQ1UVRVTRRV1VRV2zZV'+'17Y1UXRVUVVlWVRVWXZlWfdVV9Z9SxRV1VNN2RVVVbZV2fVtVZZ94XRVXVdl2fdVWRZ+W9eF4fZ9'+'4RhV1dZN19V1VZZ9YdZlYbd13yhpmmlqoqiqmiiqqqmqtm2qrq1bouiqoqrKsmeqrqzKsq+rrmzr'+'miiqrqiqsiyqqiyrsqz7qizrtqiquq3KsrCbrqvrtu8LwyzrunCqrq6rsuz7qizruq3rxnHrujB8'+'pinLpqvquqm6um7runHMtm0co6rqvirLwrDKsu/rui+0dSFRVXXdlF3jV2VZ921fd55b94WybTu/'+'rfvKceu60vg5z28cubZtHLNuG7+t+8bzKz9hOI6lZ5q2baqqrZuqq+uybivDrOtCUVV9XZVl3zdd'+'WRdu3zeOW9eNoqrquirLvrDKsjHcxm8cuzAcXds2jlvXnbKtC31jyPcJz2vbxnH7OuP2daOvDAnH'+'jwAAgAEHAIAAE8pAoSErAoA4AQAGIecUUxAqxSB0EFLqIKRUMQYhc05KxRyUUEpqIZTUKsYgVI5J'+'yJyTEkpoKZTSUgehpVBKa6GU1lJrsabUYu0gpBZKaS2U0lpqqcbUWowRYxAy56RkzkkJpbQWSmkt'+'c05K56CkDkJKpaQUS0otVsxJyaCj0kFIqaQSU0mptVBKa6WkFktKMbYUW24x1hxKaS2kEltJKcYU'+'U20txpojxiBkzknJnJMSSmktlNJa5ZiUDkJKmYOSSkqtlZJSzJyT0kFIqYOOSkkptpJKTKGU1kpK'+'sYVSWmwx1pxSbDWU0lpJKcaSSmwtxlpbTLV1EFoLpbQWSmmttVZraq3GUEprJaUYS0qxtRZrbjHm'+'GkppraQSW0mpxRZbji3GmlNrNabWam4x5hpbbT3WmnNKrdbUUo0txppjbb3VmnvvIKQWSmktlNJi'+'ai3G1mKtoZTWSiqxlZJabDHm2lqMOZTSYkmpxZJSjC3GmltsuaaWamwx5ppSi7Xm2nNsNfbUWqwt'+'xppTS7XWWnOPufVWAADAgAMAQIAJZaDQkJUAQBQAAEGIUs5JaRByzDkqCULMOSepckxCKSlVzEEI'+'JbXOOSkpxdY5CCWlFksqLcVWaykptRZrLQAAoMABACDABk2JxQEKDVkJAEQBACDGIMQYhAYZpRiD'+'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'+'m2L/kruPM6Q7oz4tvDQy+bZ3HzOi+gNHA4DZEgA=');lib.resource.add('hterm/images/icon-96','image/png;base64','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'+'YII=');lib.resource.add('hterm/concat/date','text/plain','Fri, 22 Jun 2018 14:27:07 +0000');lib.resource.add('hterm/changelog/version','text/plain','1.79');lib.resource.add('hterm/changelog/date','text/plain','2018-06-20');lib.resource.add('hterm/git/HEAD','text/plain','f23927ce63ed5b1258305f8fcd0c7aa33ffb9ab2') + diff --git a/public/wetty/index.html b/public/wetty/index.html index 1f468f9..376cb98 100644 --- a/public/wetty/index.html +++ b/public/wetty/index.html @@ -3,6 +3,7 @@ Wetty - The WebTTY Terminal Emulator +