Plugin Directory

Changeset 2148361


Ignore:
Timestamp:
08/30/2019 10:44:43 AM (7 years ago)
Author:
gtanyware
Message:

Version 2.5.1 CORS and bug fixes

Location:
easycoder/trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • easycoder/trunk/easycoder-min.js

    r2145506 r2148361  
    33$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var d=$jscomp.global.Symbol.iterator;d||(d=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[d]&&$jscomp.defineProperty(Array.prototype,d,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(d){var k=0;return $jscomp.iteratorPrototype(function(){return k<d.length?{done:!1,value:d[k++]}:{done:!0}})};
    44$jscomp.iteratorPrototype=function(d){$jscomp.initSymbolIterator();d={next:d};d[$jscomp.global.Symbol.iterator]=function(){return this};return d};$jscomp.makeIterator=function(d){$jscomp.initSymbolIterator();var k=d[Symbol.iterator];return k?k.call(d):$jscomp.arrayIterator(d)};$jscomp.owns=function(d,k){return Object.prototype.hasOwnProperty.call(d,k)};
    5 $jscomp.assign="function"==typeof Object.assign?Object.assign:function(d,k){for(var h=1;h<arguments.length;h++){var f=arguments[h];if(f)for(var c in f)$jscomp.owns(f,c)&&(d[c]=f[c])}return d};$jscomp.polyfill=function(d,k,h,f){if(k){h=$jscomp.global;d=d.split(".");for(f=0;f<d.length-1;f++){var c=d[f];c in h||(h[c]={});h=h[c]}d=d[d.length-1];f=h[d];k=k(f);k!=f&&null!=k&&$jscomp.defineProperty(h,d,{configurable:!0,writable:!0,value:k})}};
    6 $jscomp.polyfill("Object.assign",function(d){return d||$jscomp.assign},"es6","es3");$jscomp.iteratorFromArray=function(d,k){$jscomp.initSymbolIterator();d instanceof String&&(d+="");var h=0,f={next:function(){if(h<d.length){var c=h++;return{value:k(c,d[c]),done:!1}}f.next=function(){return{done:!0,value:void 0}};return f.next()}};f[Symbol.iterator]=function(){return f};return f};
     5$jscomp.assign="function"==typeof Object.assign?Object.assign:function(d,k){for(var h=1;h<arguments.length;h++){var g=arguments[h];if(g)for(var c in g)$jscomp.owns(g,c)&&(d[c]=g[c])}return d};$jscomp.polyfill=function(d,k,h,g){if(k){h=$jscomp.global;d=d.split(".");for(g=0;g<d.length-1;g++){var c=d[g];c in h||(h[c]={});h=h[c]}d=d[d.length-1];g=h[d];k=k(g);k!=g&&null!=k&&$jscomp.defineProperty(h,d,{configurable:!0,writable:!0,value:k})}};
     6$jscomp.polyfill("Object.assign",function(d){return d||$jscomp.assign},"es6","es3");$jscomp.iteratorFromArray=function(d,k){$jscomp.initSymbolIterator();d instanceof String&&(d+="");var h=0,g={next:function(){if(h<d.length){var c=h++;return{value:k(c,d[c]),done:!1}}g.next=function(){return{done:!0,value:void 0}};return g.next()}};g[Symbol.iterator]=function(){return g};return g};
    77$jscomp.polyfill("Array.prototype.keys",function(d){return d?d:function(){return $jscomp.iteratorFromArray(this,function(d){return d})}},"es6","es3");$jscomp.checkStringArgs=function(d,k,h){if(null==d)throw new TypeError("The 'this' value for String.prototype."+h+" must not be null or undefined");if(k instanceof RegExp)throw new TypeError("First argument to String.prototype."+h+" must not be a regular expression");return d+""};
    8 $jscomp.polyfill("String.prototype.endsWith",function(d){return d?d:function(d,h){var f=$jscomp.checkStringArgs(this,d,"endsWith");d+="";void 0===h&&(h=f.length);h=Math.max(0,Math.min(h|0,f.length));for(var c=d.length;0<c&&0<h;)if(f[--h]!=d[--c])return!1;return 0>=c}},"es6","es3");$jscomp.polyfill("Object.is",function(d){return d?d:function(d,h){return d===h?0!==d||1/d===1/h:d!==d&&h!==h}},"es6","es3");
    9 $jscomp.polyfill("Array.prototype.includes",function(d){return d?d:function(d,h){var f=this;f instanceof String&&(f=String(f));var c=f.length;h=h||0;for(0>h&&(h=Math.max(h+c,0));h<c;h++){var a=f[h];if(a===d||Object.is(a,d))return!0}return!1}},"es7","es3");$jscomp.polyfill("String.prototype.includes",function(d){return d?d:function(d,h){return-1!==$jscomp.checkStringArgs(this,d,"includes").indexOf(d,h||0)}},"es6","es3");
    10 $jscomp.polyfill("Math.trunc",function(d){return d?d:function(d){d=Number(d);if(isNaN(d)||Infinity===d||-Infinity===d||0===d)return d;var k=Math.floor(Math.abs(d));return 0>d?-k:k}},"es6","es3");$jscomp.polyfill("String.prototype.repeat",function(d){return d?d:function(d){var k=$jscomp.checkStringArgs(this,null,"repeat");if(0>d||1342177279<d)throw new RangeError("Invalid count value");d|=0;for(var f="";d;)if(d&1&&(f+=k),d>>>=1)k+=k;return f}},"es6","es3");
    11 $jscomp.stringPadding=function(d,k){d=void 0!==d?String(d):" ";return 0<k&&d?d.repeat(Math.ceil(k/d.length)).substring(0,k):""};$jscomp.polyfill("String.prototype.padStart",function(d){return d?d:function(d,h){var f=$jscomp.checkStringArgs(this,null,"padStart");return $jscomp.stringPadding(h,d-f.length)+f}},"es8","es3");$jscomp.polyfill("Number.isFinite",function(d){return d?d:function(d){return"number"!==typeof d?!1:!isNaN(d)&&Infinity!==d&&-Infinity!==d}},"es6","es3");
     8$jscomp.polyfill("String.prototype.endsWith",function(d){return d?d:function(d,h){var g=$jscomp.checkStringArgs(this,d,"endsWith");d+="";void 0===h&&(h=g.length);h=Math.max(0,Math.min(h|0,g.length));for(var c=d.length;0<c&&0<h;)if(g[--h]!=d[--c])return!1;return 0>=c}},"es6","es3");$jscomp.polyfill("Object.is",function(d){return d?d:function(d,h){return d===h?0!==d||1/d===1/h:d!==d&&h!==h}},"es6","es3");
     9$jscomp.polyfill("Array.prototype.includes",function(d){return d?d:function(d,h){var g=this;g instanceof String&&(g=String(g));var c=g.length;h=h||0;for(0>h&&(h=Math.max(h+c,0));h<c;h++){var a=g[h];if(a===d||Object.is(a,d))return!0}return!1}},"es7","es3");$jscomp.polyfill("String.prototype.includes",function(d){return d?d:function(d,h){return-1!==$jscomp.checkStringArgs(this,d,"includes").indexOf(d,h||0)}},"es6","es3");
     10$jscomp.polyfill("Math.trunc",function(d){return d?d:function(d){d=Number(d);if(isNaN(d)||Infinity===d||-Infinity===d||0===d)return d;var k=Math.floor(Math.abs(d));return 0>d?-k:k}},"es6","es3");$jscomp.polyfill("String.prototype.repeat",function(d){return d?d:function(d){var k=$jscomp.checkStringArgs(this,null,"repeat");if(0>d||1342177279<d)throw new RangeError("Invalid count value");d|=0;for(var g="";d;)if(d&1&&(g+=k),d>>>=1)k+=k;return g}},"es6","es3");
     11$jscomp.stringPadding=function(d,k){d=void 0!==d?String(d):" ";return 0<k&&d?d.repeat(Math.ceil(k/d.length)).substring(0,k):""};$jscomp.polyfill("String.prototype.padStart",function(d){return d?d:function(d,h){var g=$jscomp.checkStringArgs(this,null,"padStart");return $jscomp.stringPadding(h,d-g.length)+g}},"es8","es3");$jscomp.polyfill("Number.isFinite",function(d){return d?d:function(d){return"number"!==typeof d?!1:!isNaN(d)&&Infinity!==d&&-Infinity!==d}},"es6","es3");
    1212$jscomp.polyfill("Number.isInteger",function(d){return d?d:function(d){return Number.isFinite(d)?d===Math.floor(d):!1}},"es6","es3");
    13 (function(){function d(k,h,f){function c(b,q){if(!h[b]){if(!k[b]){var e="function"==typeof require&&require;if(!q&&e)return e(b,!0);if(a)return a(b,!0);q=Error("Cannot find module '"+b+"'");throw q.code="MODULE_NOT_FOUND",q;}q=h[b]={exports:{}};k[b][0].call(q.exports,function(a){return c(k[b][1][a]||a)},q,q.exports,d,k,h,f)}return h[b].exports}for(var a="function"==typeof require&&require,b=0;b<f.length;b++)c(f[b]);return c}return d})()({1:[function(d,k,h){var f=d("./easycoder/Main");f.version="2.5.0";
    14 f.timestamp=Date.now();console.log("EasyCoder loaded; waiting for page");window.onload=function(){console.log(Date.now()-f.timestamp+" ms: Page loaded; reset timer & start EasyCoder");f.timestamp=Date.now();f.scripts={};window.EasyCoder=f;var c=document.getElementById("easycoder-script");if(c){c.style.display="none";try{f.start(c.innerText)}catch(a){f.reportError(a)}}}},{"./easycoder/Main":6}],2:[function(d,k,h){k.exports=function(d,c,a){c=d.value.evaluate(d,c);d=d.value.evaluate(d,a);a=c.content;
    15 var b=d.content;a&&c.numeric?d.numeric||(b="undefined"===typeof b?0:parseInt(b)):(b&&d.numeric&&(b=b.toString()),"undefined"===typeof a&&(a=""),"undefined"===typeof b&&(b=""));return a>b?1:a<b?-1:0}},{}],3:[function(d,k,h){var f=Object.assign||function(a){for(var b=1;b<arguments.length;b++){var c=arguments[b],d;for(d in c)Object.prototype.hasOwnProperty.call(c,d)&&(a[d]=c[d])}return a},c=this,a={getTokens:function(){return c.tokens},addWarning:function(a){c.warnings.push(a)},warning:function(b){a.addWarning(b)},
     13(function(){function d(k,h,g){function c(b,p){if(!h[b]){if(!k[b]){var e="function"==typeof require&&require;if(!p&&e)return e(b,!0);if(a)return a(b,!0);p=Error("Cannot find module '"+b+"'");throw p.code="MODULE_NOT_FOUND",p;}p=h[b]={exports:{}};k[b][0].call(p.exports,function(a){return c(k[b][1][a]||a)},p,p.exports,d,k,h,g)}return h[b].exports}for(var a="function"==typeof require&&require,b=0;b<g.length;b++)c(g[b]);return c}return d})()({1:[function(d,k,h){var g=d("./easycoder/Main");g.version="2.5.1";
     14g.timestamp=Date.now();console.log("EasyCoder loaded; waiting for page");window.onload=function(){console.log(Date.now()-g.timestamp+" ms: Page loaded; reset timer & start EasyCoder");g.timestamp=Date.now();g.scripts={};window.EasyCoder=g;var c=document.getElementById("easycoder-script");if(c){c.style.display="none";try{g.start(c.innerText)}catch(a){g.reportError(a)}}}},{"./easycoder/Main":6}],2:[function(d,k,h){k.exports=function(d,c,a){c=d.value.evaluate(d,c);d=d.value.evaluate(d,a);a=c.content;
     15var b=d.content;a&&c.numeric?d.numeric||(b="undefined"===typeof b?0:parseInt(b)):(b&&d.numeric&&(b=b.toString()),"undefined"===typeof a&&(a=""),"undefined"===typeof b&&(b=""));return a>b?1:a<b?-1:0}},{}],3:[function(d,k,h){var g=Object.assign||function(a){for(var b=1;b<arguments.length;b++){var c=arguments[b],f;for(f in c)Object.prototype.hasOwnProperty.call(c,f)&&(a[f]=c[f])}return a},c=this,a={getTokens:function(){return c.tokens},addWarning:function(a){c.warnings.push(a)},warning:function(b){a.addWarning(b)},
    1616unrecognisedSymbol:function(b){a.addWarning("Unrecognised symbol '"+b+"'")},getWarnings:function(){return c.warnings},getIndex:function(){return c.index},next:function(a){c.index+=void 0===a?1:a},peek:function(){return c.tokens[c.index+1].token},more:function(){return c.index<c.tokens.length},getToken:function(){return c.index>=c.tokens.length?null:c.tokens[c.index]?c.tokens[c.index].token:null},nextToken:function(){a.next();return a.getToken()},tokenIs:function(a){return c.index>=c.tokens.length?
    1717!1:a===c.tokens[c.index].token},nextTokenIs:function(b){a.next();return a.tokenIs(b)},skip:function(b){if(c.index>=c.tokens.length)return null;a.next();a.tokenIs(b)&&a.next()},prev:function(){c.index--},getLino:function(){return c.index>=c.tokens.length?0:c.tokens[c.index].lino},getTarget:function(a){a=void 0===a?c.index:a;return c.tokens[a].token},getTargetPc:function(b){b=void 0===b?c.index:b;return c.symbols[a.getTarget(b)].pc},getCommandAt:function(a){return c.program[a]},isSymbol:function(b){b=
    1818void 0===b?!1:b;if(a.getTarget()in c.symbols)return!0;if(b)throw Error("Unknown symbol: '"+a.getTarget()+"'");return!1},nextIsSymbol:function(b){b=void 0===b?!1:b;a.next();return a.isSymbol(b)},getSymbol:function(){return c.symbols[a.getToken()]},getSymbolPc:function(){return a.getSymbol().pc},getSymbolRecord:function(){var b=c.program[a.getSymbolPc()];b.used=!0;return b},getSymbols:function(){return c.symbols},getProgram:function(){return c.program},getPc:function(){return c.program.length},getValue:function(){return a.value.compile(a)},
    19 getNextValue:function(){a.next();return a.getValue()},getCondition:function(){return a.condition.compile(a)},constant:function(b,e){return a.value.constant(b,void 0===e?!1:e)},addCommand:function(a){c.program.push(f({pc:c.program.length},a))},addSymbol:function(a,e){c.symbols[a]={pc:e}},mark:function(){c.savedMark=c.index},rewind:function(){c.index=c.savedMark},rewindTo:function(a){c.index=a},completeHandler:function(){var b=a.getLino(),e=a.getPc();a.addCommand({domain:"core",keyword:"goto",lino:b,
    20 goto:0});a.compileOne();a.addCommand({domain:"core",keyword:"stop",lino:b,next:0});a.getCommandAt(e).goto=a.getPc();return!0},compileVariable:function(b,e,q,d){q=void 0===q?!1:q;d=void 0===d?null:d;a.next();var l=a.getLino(),g=a.getTokens()[a.getIndex()];if(c.symbols[g.token])throw Error("Duplicate variable name '"+g.token+"'");var f=a.getPc();a.next();a.addSymbol(g.token,f);b={domain:b,keyword:e,lino:l,isSymbol:!0,used:!1,isValueHolder:q,name:g.token,elements:1,index:0,value:[{}],element:[],extra:d};
    21 "dom"===d&&(b.element=[]);a.addCommand(b);return b},compileToken:function(){var b=a.getToken();if(b){a.mark();for(var e=$jscomp.makeIterator(Object.keys(a.domain)),c=e.next();!c.done;c=e.next()){if((c=a.domain[c.value])&&(c=c.getHandler(b))&&c.compile(a))return;a.rewind()}console.log("No handler found");throw Error("I don't understand '"+b+"...'");}},compileOne:function(){var b=a.getToken();if(b){c.warnings=[];var e=c.program.length;if(b.endsWith(":")){b=b.substring(0,b.length-1);if(c.symbols[b])throw Error("Duplicate symbol: '"+
     19getNextValue:function(){a.next();return a.getValue()},getCondition:function(){return a.condition.compile(a)},constant:function(b,e){return a.value.constant(b,void 0===e?!1:e)},addCommand:function(a){c.program.push(g({pc:c.program.length},a))},addSymbol:function(a,e){c.symbols[a]={pc:e}},mark:function(){c.savedMark=c.index},rewind:function(){c.index=c.savedMark},rewindTo:function(a){c.index=a},completeHandler:function(){var b=a.getLino(),e=a.getPc();a.addCommand({domain:"core",keyword:"goto",lino:b,
     20goto:0});a.compileOne();a.addCommand({domain:"core",keyword:"stop",lino:b,next:0});a.getCommandAt(e).goto=a.getPc();return!0},compileVariable:function(b,e,p,f){p=void 0===p?!1:p;f=void 0===f?null:f;a.next();var l=a.getLino(),d=a.getTokens()[a.getIndex()];if(c.symbols[d.token])throw Error("Duplicate variable name '"+d.token+"'");var g=a.getPc();a.next();a.addSymbol(d.token,g);b={domain:b,keyword:e,lino:l,isSymbol:!0,used:!1,isValueHolder:p,name:d.token,elements:1,index:0,value:[{}],element:[],extra:f};
     21"dom"===f&&(b.element=[]);a.addCommand(b);return b},compileToken:function(){var b=a.getToken();if(b){a.mark();for(var e=$jscomp.makeIterator(Object.keys(a.domain)),c=e.next();!c.done;c=e.next()){if((c=a.domain[c.value])&&(c=c.getHandler(b))&&c.compile(a))return;a.rewind()}console.log("No handler found");throw Error("I don't understand '"+b+"...'");}},compileOne:function(){var b=a.getToken();if(b){c.warnings=[];var e=c.program.length;if(b.endsWith(":")){b=b.substring(0,b.length-1);if(c.symbols[b])throw Error("Duplicate symbol: '"+
    2222b+"'");c.symbols[b]={pc:e};c.index++}else a.compileToken()}},compileFromHere:function(b){for(;c.index<c.tokens.length;){var e=c.tokens[c.index].token;if("else"===e)return c.program;a.compileOne();if(-1<b.indexOf(e))break}},compile:function(b){c.tokens=b;c.index=0;c.program=[];c.symbols={};c.warnings=[];a.compileFromHere([]);a.addCommand({domain:"core",keyword:"exit",lino:a.getLino(),next:0});for(var e in c.symbols)b=c.program[c.symbols[e].pc],b.isSymbol&&!b.used&&console.log("Symbol '"+b.name+"' has not been used.");
    23 return c.program}};k.exports=a},{}],4:[function(d,k,h){var f=Object.assign||function(c){for(var a=1;a<arguments.length;a++){var b=arguments[a],e;for(e in b)Object.prototype.hasOwnProperty.call(b,e)&&(c[e]=b[e])}return c};k.exports={compile:function(c){c.mark();for(var a=$jscomp.makeIterator(Object.keys(c.domain)),b=a.next();!b.done;b=a.next()){if(b=c.domain[b.value].condition.compile(c))return f({domain:name},b);c.rewind()}},test:function(c,a){return c.domain[a.domain].condition.test(c,a)}}},{}],
    24 5:[function(d,k,h){var f=this,c={Add:{compile:function(a){var b=a.getLino();a.next();var e=a.getValue();if(a.tokenIs("to"))if(a.next(),a.isSymbol()){var c=a.getSymbol();if(a.getCommandAt(c.pc).isValueHolder){if("giving"===a.peek()){c=a.getValue();a.next();var d=a.getToken();a.next();a.addCommand({domain:"core",keyword:"add",lino:b,value1:e,value2:c,target:d})}else c=a.getToken(),a.next(),a.addCommand({domain:"core",keyword:"add",lino:b,value1:e,target:c});return!0}a.warning("core "+f.name+": Expected value holder")}else{c=
    25 a.getValue();if(a.tokenIs("giving"))return a.next(),d=a.getToken(),a.next(),a.addCommand({domain:"core",keyword:"add",lino:b,value1:e,value2:c,target:d}),!0;a.warning("core "+f.name+': Expected "giving"')}return!1},run:function(a){var b=a[a.pc],e=b.value1,c=b.value2,d=a.getSymbolRecord(b.target);if(d.isValueHolder){var l=d.value[d.index];c?(a=a.getValue(c)+a.getValue(e),d.value[d.index]={type:"constant",numeric:!0,content:a}):(!l.numeric&&isNaN(l.content)&&a.nonNumericValueError(b.lino),a=parseInt(l.content)+
     23return c.program}};k.exports=a},{}],4:[function(d,k,h){var g=Object.assign||function(c){for(var a=1;a<arguments.length;a++){var b=arguments[a],e;for(e in b)Object.prototype.hasOwnProperty.call(b,e)&&(c[e]=b[e])}return c};k.exports={compile:function(c){c.mark();for(var a=$jscomp.makeIterator(Object.keys(c.domain)),b=a.next();!b.done;b=a.next()){if(b=c.domain[b.value].condition.compile(c))return g({domain:name},b);c.rewind()}},test:function(c,a){return c.domain[a.domain].condition.test(c,a)}}},{}],
     245:[function(d,k,h){var g=this,c={Add:{compile:function(a){var b=a.getLino();a.next();var e=a.getValue();if(a.tokenIs("to"))if(a.next(),a.isSymbol()){var c=a.getSymbol();if(a.getCommandAt(c.pc).isValueHolder){if("giving"===a.peek()){c=a.getValue();a.next();var d=a.getToken();a.next();a.addCommand({domain:"core",keyword:"add",lino:b,value1:e,value2:c,target:d})}else c=a.getToken(),a.next(),a.addCommand({domain:"core",keyword:"add",lino:b,value1:e,target:c});return!0}a.warning("core "+g.name+": Expected value holder")}else{c=
     25a.getValue();if(a.tokenIs("giving"))return a.next(),d=a.getToken(),a.next(),a.addCommand({domain:"core",keyword:"add",lino:b,value1:e,value2:c,target:d}),!0;a.warning("core "+g.name+': Expected "giving"')}return!1},run:function(a){var b=a[a.pc],e=b.value1,c=b.value2,d=a.getSymbolRecord(b.target);if(d.isValueHolder){var l=d.value[d.index];c?(a=a.getValue(c)+a.getValue(e),d.value[d.index]={type:"constant",numeric:!0,content:a}):(!l.numeric&&isNaN(l.content)&&a.nonNumericValueError(b.lino),a=parseInt(l.content)+
    2626parseInt(a.getValue(e)),d.value[d.index]={type:"constant",numeric:!0,content:a})}else a.variableDoesNotHoldAValueError(b.lino,d.name);return b.pc+1}},Alias:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var e=a.getToken();a.next();if(a.tokenIs("to")&&(a.next(),a.isSymbol())){var c=a.getSymbolRecord();c.used=!0;a.next();a.addCommand({domain:"core",keyword:"alias",lino:b,alias:e,symbol:c.name});return!0}}return!1},run:function(a){var b=a[a.pc],e=a.symbols[b.alias].pc,c=a[e],d=a.getSymbolRecord(b.symbol);
    2727a[e]={pc:c.pc,domain:d.domain,keyword:d.keyword,lino:c.lino,name:c.name,alias:b.symbol};return b.pc+1}},Append:{compile:function(a){var b=a.getLino(),e=a.getNextValue();if(a.tokenIs("to")&&a.nextIsSymbol()){var c=a.getSymbolRecord();if(c.isValueHolder)return a.next(),a.addCommand({domain:"core",keyword:"append",lino:b,value:e,select:c.name}),!0}return!1},run:function(a){var b=a[a.pc],e=a.getSymbolRecord(b.select);try{var c=a.getValue(b.value),d=["{","["].includes(c[0])?JSON.parse(c):c,l=e.value[e.index],
    28 n=l.content;n=n?JSON.parse(n):[];n.push(d);l.content=JSON.stringify(n);return b.pc+1}catch(p){return a.runtimeError(b.lino,"JSON: Unable to parse value"),!1}}},Begin:{compile:function(a){a.next();a.compileFromHere(["end"]);return!0},run:function(a){return a[a.pc].pc+1}},Callback:{compile:function(a){a.compileVariable("core","callback");return!0},run:function(a){return a[a.pc].pc+1}},Clear:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var e=a.getSymbolRecord();if(e.isValueHolder)return e=
     28q=l.content;q=q?JSON.parse(q):[];q.push(d);l.content=JSON.stringify(q);return b.pc+1}catch(n){return a.runtimeError(b.lino,"JSON: Unable to parse value"),!1}}},Begin:{compile:function(a){a.next();a.compileFromHere(["end"]);return!0},run:function(a){return a[a.pc].pc+1}},Callback:{compile:function(a){a.compileVariable("core","callback");return!0},run:function(a){return a[a.pc].pc+1}},Clear:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var e=a.getSymbolRecord();if(e.isValueHolder)return e=
    2929a.getToken(),a.next(),a.addCommand({domain:"core",keyword:"clear",lino:b,symbol:e}),!0;a.warning("'Variable '"+e.name+"' does not hold a value")}return!1},run:function(a){var b=a[a.pc],e=a.getSymbolRecord(b.symbol);e.isValueHolder?(a.domain[e.domain].value.put(e,{type:"boolean",content:!1}),b.numeric=!1):a.variableDoesNotHoldAValueError(b.lino,e.name);return b.pc+1}},Close:{compile:function(a){var b=a.getLino();if(a.nextIsSymbol()){var e=a.getSymbolRecord();if("module"===e.keyword)return a.next(),
    3030a.addCommand({domain:"core",keyword:"close",lino:b,module:e.name}),!0}return!1},run:function(a){var b=a[a.pc];a=a.getSymbolRecord(b.module).program;a.run(a.onClose);return b.pc+1}},Debug:{compile:function(a){var b=a.getLino();if(a.nextTokenIs("program")){a.next();if(["item","pc"].includes(a.getToken())){var e=a.getNextValue();a.addCommand({domain:"core",keyword:"debug",lino:b,item:e});return!0}a.addCommand({domain:"core",keyword:"debug",lino:b,item:"program"});return!0}return a.tokenIs("symbols")?
     
    3232console.log("Symbol: "+JSON.stringify(a,null,2));a.exporter=e;break;case "step":a.debugStep=!0;break;case "program":console.log("Debug program: "+JSON.stringify(a,null,2));break;default:0<=e.content&&console.log("Debug item "+e.content+": "+JSON.stringify(a[e.content],null,2))}return b.pc+1}},Decode:{compile:function(a){var b=a.getLino();if(a.nextIsSymbol()){var e=a.getToken();a.next();a.addCommand({domain:"core",keyword:"decode",lino:b,symbol:e});return!0}return!1},run:function(a){var b=a[a.pc],
    3333e=a.getSymbolRecord(b.symbol);if(e.isValueHolder){var c=a.getValue(e.value[e.index]);e.value[e.index]={type:"constant",numeric:!1,content:a.decode(c)};b.numeric=!1}else a.variableDoesNotHoldAValueError(b.lino,e.name);return b.pc+1}},Divide:{compile:function(a){var b=a.getLino();if(a.nextIsSymbol()){var e=a.getSymbol();var c=a.getCommandAt(e.pc).name}e=a.getValue();a.tokenIs("by")&&a.next();var d=a.getValue();if(a.tokenIs("giving")){a.next();if(a.isSymbol())return c=a.getSymbol(),c=a.getCommandAt(c.pc).name,
    34 a.next(),a.addCommand({domain:"core",keyword:"divide",lino:b,value1:e,value2:d,target:c}),!0;a.warning("core "+f.name+": Expected value holder")}else return"undefined"===typeof c&&a.warning("core "+f.name+": No target variable given"),a.addCommand({domain:"core",keyword:"divide",lino:b,value2:d,target:c}),!0;return!1},run:function(a){var b=a[a.pc],e=b.value1,c=b.value2,d=a.getSymbolRecord(b.target);if(d.isValueHolder){var l=d.value[d.index];e?(a=a.getValue(e)/a.getValue(c),d.value[d.index]={type:"constant",
     34a.next(),a.addCommand({domain:"core",keyword:"divide",lino:b,value1:e,value2:d,target:c}),!0;a.warning("core "+g.name+": Expected value holder")}else return"undefined"===typeof c&&a.warning("core "+g.name+": No target variable given"),a.addCommand({domain:"core",keyword:"divide",lino:b,value2:d,target:c}),!0;return!1},run:function(a){var b=a[a.pc],e=b.value1,c=b.value2,d=a.getSymbolRecord(b.target);if(d.isValueHolder){var l=d.value[d.index];e?(a=a.getValue(e)/a.getValue(c),d.value[d.index]={type:"constant",
    3535numeric:!0,content:Math.trunc(a)}):(!l.numeric&&isNaN(l.content)&&a.nonNumericValueError(b,lino),a=parseInt(l.content)/parseInt(a.getValue(c)),d.value[d.index]={type:"constant",numeric:!0,content:Math.trunc(a)})}else a.variableDoesNotHoldAValueError(b.lino,d.name);return b.pc+1}},Dummy:{compile:function(a){var b=a.getLino();a.next();a.addCommand({domain:"core",keyword:"dummy",lino:b});return!0},run:function(a){return a[a.pc].pc+1}},Encode:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var e=
    3636a.getToken();a.next();a.addCommand({domain:"core",keyword:"encode",lino:b,symbol:e});return!0}return!1},run:function(a){var b=a[a.pc],e=a.getSymbolRecord(b.symbol);if(e.isValueHolder){var c=a.getValue(e.value[e.index]);e.value[e.index]={type:"constant",numeric:!1,content:a.encode(c)};b.numeric=!1}else a.variableDoesNotHoldAValueError(b.lino,e.name);return b.pc+1}},End:{compile:function(a){a.next();return!0},run:function(){return 0}},Exit:{compile:function(a){a.next();a.addCommand({domain:"core",keyword:"exit"});
    3737return!0},run:function(a){a.exit();return 0}},Filter:{compile:function(a){var b=a.getLino();if(a.nextIsSymbol()){var e=a.getSymbolRecord();if(a.nextTokenIs("with")){var c=a.nextToken();a.next();a.addCommand({domain:"core",keyword:"filter",lino:b,array:e.name,func:c});return!0}}return!1},run:function(a){var b=a[a.pc],e=a.getSymbolRecord(b.array),c=e.value[e.index].content,d=a.getSymbolRecord(b.func).pc;try{var l=JSON.parse(c).filter(function(b){e.a=b;a.run(d);return e.v});e.value[e.index].content=
    38 JSON.stringify(l)}catch(n){a.runtimeError(b.lino,"Can't parse this array")}return b.pc+1}},Fork:{compile:function(a){var b=a.getLino();a.next();a.nextTokenIs("to")&&a.next();var e=a.getToken();a.next();a.addCommand({domain:"core",keyword:"fork",lino:b,label:e});return!0},run:function(a){var b=a[a.pc];try{a.run(a.symbols[b.label].pc)}catch(e){console.log(e.message),alert(e.message)}return b.pc+1}},Go:{compile:function(a){var b=a.getLino();a.nextTokenIs("to")&&a.next();var e=a.getToken();a.next();a.addCommand({domain:"core",
     38JSON.stringify(l)}catch(q){a.runtimeError(b.lino,"Can't parse this array")}return b.pc+1}},Fork:{compile:function(a){var b=a.getLino();a.next();a.nextTokenIs("to")&&a.next();var e=a.getToken();a.next();a.addCommand({domain:"core",keyword:"fork",lino:b,label:e});return!0},run:function(a){var b=a[a.pc];try{a.run(a.symbols[b.label].pc)}catch(e){console.log(e.message),alert(e.message)}return b.pc+1}},Go:{compile:function(a){var b=a.getLino();a.nextTokenIs("to")&&a.next();var e=a.getToken();a.next();a.addCommand({domain:"core",
    3939keyword:"go",lino:b,label:e});return!0},run:function(a){var b=a[a.pc];if(b.label){if(a.verifySymbol(b.label)){var e=a.symbols[b.label];if(e)return e.pc}a.runtimeError(b.lino,"Unknown symbol '"+b.label+"'");return 0}return b.goto}},Gosub:{compile:function(a){var b=a.getLino();a.nextTokenIs("to")&&a.next();var e=a.getToken();a.next();a.addCommand({domain:"core",keyword:"gosub",lino:b,label:e});return!0},run:function(a){var b=a[a.pc];if(a.verifySymbol(b.label))return a.stack.push(a.pc+1),a.symbols[b.label].pc;
    4040a.runtimeError(b.lino,"Unknown symbol '"+b.label+"'");return 0}},If:{compile:function(a){var b=a.getLino();a.next();var e=a.condition.compile(a),c=a.getPc();a.addCommand({domain:"core",keyword:"if",lino:b,condition:e});a.compileOne();if(!a.getToken())return a.getCommandAt(c).else=a.getPc(),!0;a.tokenIs("else")?(b=a.getPc(),a.addCommand({domain:"core",keyword:"goto",goto:0}),a.getCommandAt(c).else=a.getPc(),a.next(),a.compileOne(!0),a.getCommandAt(b).goto=a.getPc()):a.getCommandAt(c).else=a.getPc();
     
    4545value2:d,target:c}),!0;a.warning("core multiply: Expected value holder")}else return"undefined"===typeof c&&a.warning("core multiply: No target variable given"),a.addCommand({domain:"core",keyword:"multiply",lino:b,value2:d,target:c}),!0;return!1},run:function(a){var b=a[a.pc],e=b.value1,c=b.value2,d=a.getSymbolRecord(b.target);if(d.isValueHolder){var l=d.value[d.index];e?(a=a.getValue(e)*a.getValue(c),d.value[d.index]={type:"constant",numeric:!0,content:a}):(!l.numeric&&isNaN(l.content)&&a.nonNumericValueError(b,
    4646lino),a=parseInt(l.content)*parseInt(a.getValue(c)),d.value[d.index]={type:"constant",numeric:!0,content:a})}else a.variableDoesNotHoldAValueError(b.lino,d.name);return b.pc+1}},Negate:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var e=a.getToken();a.next();a.addCommand({domain:"core",keyword:"negate",lino:b,symbol:e});return!0}return!1},run:function(a){var b=a[a.pc],e=a.getSymbolRecord(b.symbol);e.isValueHolder?e.value[e.index]={type:"constant",numeric:!0,content:-e.value[e.index].content}:
    47 a.variableDoesNotHoldAValueError(b.lino,e.name);return b.pc+1}},On:{compile:function(a){var b=a.getLino(),e=a.nextToken();switch(e){case "close":case "restore":case "message":case "error":return a.next(),a.addCommand({domain:"core",keyword:"on",lino:b,action:e}),a.completeHandler()}return a.isSymbol()&&(e=a.getSymbolRecord(),"callback"===e.keyword)?(a.next(),a.addCommand({domain:"core",keyword:"on",lino:b,action:e.name}),a.completeHandler()):!1},run:function(a){var b=a[a.pc],e=b.pc+2;switch(b.action){case "close":a.onClose=
    48 e;break;case "restore":a.onRestore=e;break;case "message":a.onMessage=e;break;case "error":a.onError=e;break;default:var c=a.getSymbolRecord(b.action);if(c)c.cb=e;else return a.runtimeError(b.lino,"Unknown action '"+b.action+"'"),0}return b.pc+1}},Print:{compile:function(a){var b=a.getLino();a.next();var e=a.getValue();a.addCommand({domain:"core",keyword:"print",lino:b,value:e});return!0},run:function(a){var b=a[a.pc];a=a.getFormattedValue(b.value);console.log("-> "+a);return b.pc+1}},Put:{compile:function(a){var b=
    49 a.getLino(),e=a.getNextValue();if(a.tokenIs("into")){if(a.nextIsSymbol()){var c=a.getToken();a.next();a.addCommand({domain:"core",keyword:"put",lino:b,value:e,target:c});return!0}a.warning("core:put: No such variable: '"+a.getToken()+"'")}return!1},run:function(a){var b=a[a.pc],e=a.getSymbolRecord(b.target);e.isValueHolder||a.variableDoesNotHoldAValueError(b.lino,e.name);a=a.evaluate(b.value);e.value[e.index]={type:a.type,numeric:a.numeric,content:a.content};e.imported&&(e=e.exporter.getSymbolRecord(e.exportedName),
    50 e.value[e.index]=a);return b.pc+1}},Replace:{compile:function(a){var b=a.getLino(),e=a.getNextValue();if(a.tokenIs("with")){var c=a.getNextValue();if(a.tokenIs("in")&&a.nextIsSymbol()){var d=a.getSymbolRecord();if(d.isValueHolder)return a.next(),a.addCommand({domain:"core",keyword:"replace",lino:b,original:e,replacement:c,target:d.name}),!0;throw Error("'"+d.name+"' does not hold a value");}}return!1},run:function(a){var b=a[a.pc],e=a.getValue(b.original),c=a.getValue(b.replacement),d=a.getSymbolRecord(b.target);
     47a.variableDoesNotHoldAValueError(b.lino,e.name);return b.pc+1}},On:{compile:function(a){var b=a.getLino(),e=a.nextToken();switch(e){case "close":case "message":case "error":return a.next(),a.addCommand({domain:"core",keyword:"on",lino:b,action:e}),a.completeHandler()}return a.isSymbol()&&(e=a.getSymbolRecord(),"callback"===e.keyword)?(a.next(),a.addCommand({domain:"core",keyword:"on",lino:b,action:e.name}),a.completeHandler()):!1},run:function(a){var b=a[a.pc],e=b.pc+2;switch(b.action){case "close":a.onClose=
     48e;break;case "message":a.onMessage=e;break;case "error":a.onError=e;break;default:var c=a.getSymbolRecord(b.action);if(c)c.cb=e;else return a.runtimeError(b.lino,"Unknown action '"+b.action+"'"),0}return b.pc+1}},Print:{compile:function(a){var b=a.getLino();a.next();var e=a.getValue();a.addCommand({domain:"core",keyword:"print",lino:b,value:e});return!0},run:function(a){var b=a[a.pc];a=a.getFormattedValue(b.value);console.log("-> "+a);return b.pc+1}},Put:{compile:function(a){var b=a.getLino(),e=a.getNextValue();
     49if(a.tokenIs("into")){if(a.nextIsSymbol()){var c=a.getToken();a.next();a.addCommand({domain:"core",keyword:"put",lino:b,value:e,target:c});return!0}a.warning("core:put: No such variable: '"+a.getToken()+"'")}return!1},run:function(a){var b=a[a.pc],e=a.getSymbolRecord(b.target);e.isValueHolder||a.variableDoesNotHoldAValueError(b.lino,e.name);a=a.evaluate(b.value);e.value[e.index]={type:a.type,numeric:a.numeric,content:a.content};e.imported&&(e=e.exporter.getSymbolRecord(e.exportedName),e.value[e.index]=
     50a);return b.pc+1}},Replace:{compile:function(a){var b=a.getLino(),e=a.getNextValue();if(a.tokenIs("with")){var c=a.getNextValue();if(a.tokenIs("in")&&a.nextIsSymbol()){var d=a.getSymbolRecord();if(d.isValueHolder)return a.next(),a.addCommand({domain:"core",keyword:"replace",lino:b,original:e,replacement:c,target:d.name}),!0;throw Error("'"+d.name+"' does not hold a value");}}return!1},run:function(a){var b=a[a.pc],e=a.getValue(b.original),c=a.getValue(b.replacement),d=a.getSymbolRecord(b.target);
    5151a=a.getValue(d.value[d.index]).split(e).join(c);d.value[d.index]={type:"constant",numeric:!1,content:a};return b.pc+1}},Require:{compile:function(a){var b=a.getLino(),e=a.nextToken();if(["css","js"].includes(e)){var c=a.getNextValue();a.addCommand({domain:"core",keyword:"require",lino:b,type:e,url:c});return!0}throw Error("File type must be 'css' or 'js'");},run:function(a){var b=a[a.pc];a.require(b.type,a.getValue(b.url),function(){a.run(b.pc+1)});return 0}},Return:{compile:function(a){var b=a.getLino();
    52 a.next();a.addCommand({domain:"core",keyword:"return",lino:b});return!0},run:function(a){return a.stack.pop()}},Run:{compile:function(a){var b=a.getLino(),e=a.getNextValue(),c=[];if(a.tokenIs("with"))for(;;)if(a.nextIsSymbol(!0)){var d=a.getSymbolRecord();d.exporter=a.getProgram();c.push(d);a.next();if(!a.tokenIs("and"))break}if(a.tokenIs("as")&&a.nextIsSymbol(!0)){var l=a.getSymbolRecord();a.next();if("module"!==l.keyword)throw Error("'"+l.name+"' is not a module");l=l.name}var n=!1;a.tokenIs("nowait")&&
    53 (a.next(),n=!0);d=a.getPc();a.addCommand({domain:"core",keyword:"run",lino:b,script:e,imports:c,module:l,nowait:n,then:0});a.tokenIs("then")&&(b=a.getPc(),a.addCommand({domain:"core",keyword:"goto",goto:0}),a.getCommandAt(d).then=a.getPc(),a.next(),a.compileOne(!0),a.addCommand({domain:"core",keyword:"stop"}),a.getCommandAt(b).goto=a.getPc());return!0},run:function(a){a.nextPc=a.pc+1;a.runScript(a);return 0}},Sanitize:{compile:function(a){var b=a.getLino();if(a.nextIsSymbol()){var e=a.getToken();
    54 a.next();a.addCommand({domain:"core",keyword:"sanitize",lino:b,name:e});return!0}return!1},run:function(a){var b=a[a.pc];a=a.getSymbolRecord(b.name);a=a.value[a.index];a.content=JSON.stringify(JSON.parse(a.content));return b.pc+1}},Script:{compile:function(a){a.getProgram().script=a.nextToken();a.next();return!0},run:function(a){return a[a.pc].pc+1}},Send:{compile:function(a){var b=a.getLino(),e="";a.nextTokenIs("to")||(e=a.getValue());if(a.tokenIs("to")){if(a.nextTokenIs("parent"))var c="parent";
    55 else if(a.isSymbol){c=a.getSymbolRecord();if("module"!==c.keyword)throw Error("'"+c.name+"' is not a module");c=c.name}a.next();a.addCommand({domain:"core",keyword:"send",lino:b,message:e,recipient:c})}return!0},run:function(a){var b=a[a.pc],c=a.getValue(b.message);if("parent"===b.recipient){var d=a.parent;d&&a.parent.onMessage&&(d.message=c,d.run(d.onMessage))}else a=a.getSymbolRecord(b.recipient),a.program&&(a.program.message=c,a.program.run(a.program.onMessage));return b.pc+1}},Set:{compile:function(a){var b=
     52a.next();a.addCommand({domain:"core",keyword:"return",lino:b});return!0},run:function(a){return a.stack.pop()}},Run:{compile:function(a){var b=a.getLino(),e=a.getNextValue(),c=[];if(a.tokenIs("with"))for(;;)if(a.nextIsSymbol(!0)){var d=a.getSymbolRecord();d.exporter=a.getProgram();c.push(d);a.next();if(!a.tokenIs("and"))break}if(a.tokenIs("as")&&a.nextIsSymbol(!0)){var l=a.getSymbolRecord();a.next();if("module"!==l.keyword)throw Error("'"+l.name+"' is not a module");l=l.name}var q=!1;a.tokenIs("nowait")&&
     53(a.next(),q=!0);d=a.getPc();a.addCommand({domain:"core",keyword:"run",lino:b,script:e,imports:c,module:l,nowait:q,then:0});a.tokenIs("then")&&(b=a.getPc(),a.addCommand({domain:"core",keyword:"goto",goto:0}),a.getCommandAt(d).then=a.getPc(),a.next(),a.compileOne(!0),a.addCommand({domain:"core",keyword:"stop"}),a.getCommandAt(b).goto=a.getPc());return!0},run:function(a){a.nextPc=a.pc+1;a.runScript(a);return 0}},Sanitize:{compile:function(a){var b=a.getLino();if(a.nextIsSymbol()){var e=a.getToken();
     54a.next();a.addCommand({domain:"core",keyword:"sanitize",lino:b,name:e});return!0}return!1},run:function(a){var b=a[a.pc];a=a.getSymbolRecord(b.name);a=a.value[a.index];a.content=JSON.stringify(JSON.parse(a.content));return b.pc+1}},Script:{compile:function(a){var b=a.getProgram();b.script=a.nextToken();EasyCoder.scripts[b.script]=b;a.next();return!0},run:function(a){return a[a.pc].pc+1}},Send:{compile:function(a){var b=a.getLino(),e="";a.nextTokenIs("to")||(e=a.getValue());if(a.tokenIs("to")){if(a.nextTokenIs("parent"))var c=
     55"parent";else if(a.isSymbol){c=a.getSymbolRecord();if("module"!==c.keyword)throw Error("'"+c.name+"' is not a module");c=c.name}a.next();a.addCommand({domain:"core",keyword:"send",lino:b,message:e,recipient:c})}return!0},run:function(a){var b=a[a.pc],c=a.getValue(b.message);if("parent"===b.recipient){var d=a.parent;d&&a.parent.onMessage&&(d.message=c,d.run(d.onMessage))}else a=a.getSymbolRecord(b.recipient),a.program&&(a.program.message=c,a.program.run(a.program.onMessage));return b.pc+1}},Set:{compile:function(a){var b=
    5656a.getLino();if(a.nextIsSymbol()){var c=a.getSymbolRecord();if(!c.isValueHolder)return!1;if(a.nextTokenIs("to")){a.next();for(var d=[];;){a.mark();try{d.push(a.getValue())}catch(l){a.rewind();break}}a.addCommand({domain:"core",keyword:"set",lino:b,request:"setArray",target:c.name,value:d});return!0}a.addCommand({domain:"core",keyword:"set",lino:b,request:"setBoolean",target:c.name});return!0}switch(a.getToken()){case "ready":return a.next(),a.addCommand({domain:"core",keyword:"set",lino:b,request:"setReady"}),
    57 !0;case "element":c=a.getNextValue();if(a.tokenIs("of")&&a.nextIsSymbol()&&(d=a.getSymbolRecord(),"variable"===d.keyword&&a.nextTokenIs("to"))){var g=a.getNextValue();a.addCommand({domain:"core",keyword:"set",lino:b,request:"setElement",target:d.name,index:c,value:g});return!0}break;case "property":c=a.getNextValue();if(a.tokenIs("of")&&a.nextIsSymbol()&&(d=a.getSymbolRecord(),"variable"===d.keyword&&a.nextTokenIs("to")))return g=a.getNextValue(),a.addCommand({domain:"core",keyword:"set",lino:b,request:"setProperty",
    58 target:d.name,name:c,value:g}),!0;break;case "arg":if(c=a.getNextValue(),a.tokenIs("of")&&a.nextIsSymbol()&&(d=a.getSymbolRecord(),a.nextTokenIs("to")))return g=a.getNextValue(),a.addCommand({domain:"core",keyword:"set",lino:b,request:"setArg",target:d.name,name:c,value:g}),!0}a.tokenIs("the")&&a.next();switch(a.getToken()){case "elements":a.next();if(a.tokenIs("of")){a.next();if(!a.isSymbol())throw Error("Unknown variable '"+a.getToken()+"'");c=a.getToken();a.next();if(a.tokenIs("to"))return a.next(),
     57!0;case "element":c=a.getNextValue();if(a.tokenIs("of")&&a.nextIsSymbol()&&(d=a.getSymbolRecord(),"variable"===d.keyword&&a.nextTokenIs("to"))){var f=a.getNextValue();a.addCommand({domain:"core",keyword:"set",lino:b,request:"setElement",target:d.name,index:c,value:f});return!0}break;case "property":c=a.getNextValue();if(a.tokenIs("of")&&a.nextIsSymbol()&&(d=a.getSymbolRecord(),"variable"===d.keyword&&a.nextTokenIs("to")))return f=a.getNextValue(),a.addCommand({domain:"core",keyword:"set",lino:b,request:"setProperty",
     58target:d.name,name:c,value:f}),!0;break;case "arg":if(c=a.getNextValue(),a.tokenIs("of")&&a.nextIsSymbol()&&(d=a.getSymbolRecord(),a.nextTokenIs("to")))return f=a.getNextValue(),a.addCommand({domain:"core",keyword:"set",lino:b,request:"setArg",target:d.name,name:c,value:f}),!0}a.tokenIs("the")&&a.next();switch(a.getToken()){case "elements":a.next();if(a.tokenIs("of")){a.next();if(!a.isSymbol())throw Error("Unknown variable '"+a.getToken()+"'");c=a.getToken();a.next();if(a.tokenIs("to"))return a.next(),
    5959d=a.getValue(),a.addCommand({domain:"core",keyword:"set",lino:b,request:"setElements",symbol:c,value:d}),!0}break;case "encoding":if(a.nextTokenIs("to"))return c=a.getNextValue(),a.addCommand({domain:"core",keyword:"set",request:"encoding",lino:b,encoding:c}),!0;a.addWarning("Unknown encoding option");break;case "payload":if(a.nextTokenIs("of")&&a.nextIsSymbol()&&(c=a.getSymbolRecord(),"callback"===c.keyword&&a.nextTokenIs("to")))return d=a.getNextValue(),a.addCommand({domain:"core",keyword:"set",
    6060request:"setPayload",lino:b,callback:c.name,payload:d}),!0}return!1},run:function(a){var b=a[a.pc];switch(b.request){case "setBoolean":var c=a.getSymbolRecord(b.target);c.isValueHolder?(c.value[c.index]={type:"boolean",content:!0},b.numeric=!1):a.variableDoesNotHoldAValueError(b.lino,c.name);break;case "setReady":a.parent.run(a.parent.nextPc);a.parent.nextPc=0;break;case "setArray":c=a.getSymbolRecord(b.target);c.elements=b.value.length;c.value=b.value;break;case "encoding":a.encoding=a.getValue(b.encoding);
    61 break;case "setElements":c=a.getSymbolRecord(b.symbol);var d=c.elements;c.elements=a.getValue(b.value);c.index=0;if(c.elements>d)for(a=d;a<c.elements;a++)c.value.push({}),c.element.push({});else c.value=c.value.slice(0,c.elements),c.element=c.element.slice(0,c.elements);break;case "setElement":c=a.getSymbolRecord(b.target);d=a.getValue(b.index);var g=JSON.parse(a.getValue(c.value[c.index]));a=a.getValue(b.value);g[d]=JSON.parse(a);c.value[c.index].content=JSON.stringify(g);break;case "setProperty":c=
    62 a.getSymbolRecord(b.target);(g=a.getValue(c.value[c.index]))||(g="{}");d="";try{d=JSON.parse(g)}catch(l){return a.runtimeError(b.lino,"Can't parse "+c.name),0}g=a.getValue(b.name);if(a=a.evaluate(b.value))a.content instanceof Array?d[g]=a.content:"boolean"===a.type?d[g]=a.content:a.numeric?d[g]=a.content:'{"'===a.content.substr(0,2)?d[g]=JSON.parse(a.content):d[g]=a.content.split('"').join('\\"'),c.value[c.index]={type:"constant",numeric:!1,content:JSON.stringify(d)};break;case "setPayload":a.getSymbolRecord(b.callback).payload=
    63 a.getValue(b.payload);break;case "setArg":d=a.getValue(b.name),c=a.getSymbolRecord(b.target),c[d]=a.getValue(b.value)}return b.pc+1}},Sort:{compile:function(a){var b=a.getLino();if(a.nextIsSymbol()){var c=a.getSymbolRecord();if(a.nextTokenIs("with")){var d=a.nextToken();a.next();a.addCommand({domain:"core",keyword:"sort",lino:b,array:c.name,func:d});return!0}}return!1},run:function(a){var b=a[a.pc],c=a.getSymbolRecord(b.array),d=c.value[c.index].content,g=a.getSymbolRecord(b.func).pc;try{var l=JSON.parse(d);
    64 l.sort(function(b,e){c.a=b;c.b=e;a.run(g);return c.v});c.value[c.index].content=JSON.stringify(l)}catch(n){a.runtimeError(b.lino,"Can't parse this array")}return b.pc+1}},Stop:{compile:function(a){var b=a.getLino();a.next();if(a.more()&&a.isSymbol()&&!a.getToken().endsWith(":")){var c=a.getSymbolRecord();return"module"===c.keyword?(a.next(),a.addCommand({domain:"core",keyword:"stop",lino:b,name:c.name}),!0):!1}a.addCommand({domain:"core",keyword:"stop",lino:b,next:0});return!0},run:function(a){var b=
    65 a[a.pc];if(b.name)a.getSymbolRecord(b.name).program.exit();else return 0;return b.pc+1}},Take:{compile:function(a){var b=a.getLino();a.next();var c=a.getValue();if(a.tokenIs("from"))if(a.next(),a.isSymbol()){var d=a.getSymbol();if(a.getCommandAt(d.pc).isValueHolder){if("giving"===a.peek()){d=a.getValue();a.next();var g=a.getToken();a.next();a.addCommand({domain:"core",keyword:"take",lino:b,value1:c,value2:d,target:g})}else d=a.getToken(),a.next(),a.addCommand({domain:"core",keyword:"take",lino:b,
    66 value1:c,target:d});return!0}a.warning("core "+f.name+": Expected value holder")}else{d=a.getValue();if(a.tokenIs("giving"))return a.next(),g=a.getToken(),a.next(),a.addCommand({domain:"core",keyword:"take",lino:b,value1:c,value2:d,target:g}),!0;a.warning("core "+f.name+': Expected "giving"')}return!1},run:function(a){var b=a[a.pc],c=b.value1,d=b.value2,g=a.getSymbolRecord(b.target);if(g.isValueHolder){var l=g.value[g.index];d?(a=a.getValue(d)-a.getValue(c),g.value[g.index]={type:"constant",numeric:!0,
    67 content:a}):(!l.numeric&&isNaN(l.content)&&a.nonNumericValueError(b.lino),a=parseInt(a.getValue(l))-parseInt(a.getValue(c)),g.value[g.index]={type:"constant",numeric:!0,content:a})}else a.variableDoesNotHoldAValueError(b.lino,g.name);return b.pc+1}},Toggle:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var c=a.getSymbolPc();a.next();a.addCommand({domain:"core",keyword:"toggle",lino:b,symbol:c});return!0}return!1},run:function(a){var b=a[a.pc],c=a[b.symbol];if(c.isValueHolder){var d=
     61break;case "setElements":c=a.getSymbolRecord(b.symbol);var d=c.elements;c.elements=a.getValue(b.value);c.index=0;if(c.elements>d)for(a=d;a<c.elements;a++)c.value.push({}),c.element.push({});else c.value=c.value.slice(0,c.elements),c.element=c.element.slice(0,c.elements);break;case "setElement":c=a.getSymbolRecord(b.target);d=a.getValue(b.index);var f=JSON.parse(a.getValue(c.value[c.index]));a=a.getValue(b.value);f[d]=JSON.parse(a);c.value[c.index].content=JSON.stringify(f);break;case "setProperty":c=
     62a.getSymbolRecord(b.target);(f=a.getValue(c.value[c.index]))||(f="{}");d="";try{d=JSON.parse(f)}catch(l){return a.runtimeError(b.lino,"Can't parse "+c.name),0}f=a.getValue(b.name);if(a=a.evaluate(b.value))a.content instanceof Array?d[f]=a.content:"boolean"===a.type?d[f]=a.content:a.numeric?d[f]=a.content:'{"'===a.content.substr(0,2)?d[f]=JSON.parse(a.content):d[f]=a.content.split('"').join('\\"'),c.value[c.index]={type:"constant",numeric:!1,content:JSON.stringify(d)};break;case "setPayload":a.getSymbolRecord(b.callback).payload=
     63a.getValue(b.payload);break;case "setArg":d=a.getValue(b.name),c=a.getSymbolRecord(b.target),c[d]=a.getValue(b.value)}return b.pc+1}},Sort:{compile:function(a){var b=a.getLino();if(a.nextIsSymbol()){var c=a.getSymbolRecord();if(a.nextTokenIs("with")){var d=a.nextToken();a.next();a.addCommand({domain:"core",keyword:"sort",lino:b,array:c.name,func:d});return!0}}return!1},run:function(a){var b=a[a.pc],c=a.getSymbolRecord(b.array),d=c.value[c.index].content,f=a.getSymbolRecord(b.func).pc;try{var l=JSON.parse(d);
     64l.sort(function(b,e){c.a=b;c.b=e;a.run(f);return c.v});c.value[c.index].content=JSON.stringify(l)}catch(q){a.runtimeError(b.lino,"Can't parse this array")}return b.pc+1}},Stop:{compile:function(a){var b=a.getLino();a.next();if(a.more()&&a.isSymbol()&&!a.getToken().endsWith(":")){var c=a.getSymbolRecord();return"module"===c.keyword?(a.next(),a.addCommand({domain:"core",keyword:"stop",lino:b,name:c.name}),!0):!1}a.addCommand({domain:"core",keyword:"stop",lino:b,next:0});return!0},run:function(a){var b=
     65a[a.pc];if(b.name)a.getSymbolRecord(b.name).program.exit();else return 0;return b.pc+1}},Take:{compile:function(a){var b=a.getLino();a.next();var c=a.getValue();if(a.tokenIs("from"))if(a.next(),a.isSymbol()){var d=a.getSymbol();if(a.getCommandAt(d.pc).isValueHolder){if("giving"===a.peek()){d=a.getValue();a.next();var f=a.getToken();a.next();a.addCommand({domain:"core",keyword:"take",lino:b,value1:c,value2:d,target:f})}else d=a.getToken(),a.next(),a.addCommand({domain:"core",keyword:"take",lino:b,
     66value1:c,target:d});return!0}a.warning("core "+g.name+": Expected value holder")}else{d=a.getValue();if(a.tokenIs("giving"))return a.next(),f=a.getToken(),a.next(),a.addCommand({domain:"core",keyword:"take",lino:b,value1:c,value2:d,target:f}),!0;a.warning("core "+g.name+': Expected "giving"')}return!1},run:function(a){var b=a[a.pc],c=b.value1,d=b.value2,f=a.getSymbolRecord(b.target);if(f.isValueHolder){var l=f.value[f.index];d?(a=a.getValue(d)-a.getValue(c),f.value[f.index]={type:"constant",numeric:!0,
     67content:a}):(!l.numeric&&isNaN(l.content)&&a.nonNumericValueError(b.lino),a=parseInt(a.getValue(l))-parseInt(a.getValue(c)),f.value[f.index]={type:"constant",numeric:!0,content:a})}else a.variableDoesNotHoldAValueError(b.lino,f.name);return b.pc+1}},Toggle:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var c=a.getSymbolPc();a.next();a.addCommand({domain:"core",keyword:"toggle",lino:b,symbol:c});return!0}return!1},run:function(a){var b=a[a.pc],c=a[b.symbol];if(c.isValueHolder){var d=
    6868a.domain[c.domain];a=d.value.get(a,c.value[c.index]).content;d.value.put(c,{type:"boolean",content:!a})}else a.variableDoesNotHoldAValueError(b.lino,c.name);return b.pc+1}},Variable:{compile:function(a){a.compileVariable("core","variable",!0);return!0},run:function(a){return a[a.pc].pc+1}},Wait:{compile:function(a){var b=a.getLino();a.next();var c=a.getValue(a),d=1E3;switch(a.getToken()){case "milli":case "millis":a.next();d=1;break;case "tick":case "ticks":a.next();d=10;break;case "second":case "seconds":a.next();
    6969d=1E3;break;case "minute":case "minutes":a.next(),d=6E4}a.addCommand({domain:"core",keyword:"wait",lino:b,value:c,multiplier:d});return!0},run:function(a){var b=a[a.pc],c=a.getValue(b.value);setTimeout(function(){a.run(b.pc+1)},c*b.multiplier);return 0}},While:{compile:function(a){var b=a.getLino();a.next();var c=a.getCondition(),d=a.getPc();a.addCommand({domain:"core",keyword:"while",lino:b,condition:c});b=a.getPc();a.addCommand({domain:"core",keyword:"goto",goto:0});a.compileOne();a.addCommand({domain:"core",
     
    7676null;if("property"===b)return b=a.getNextValue(),a.tokenIs("of")&&a.nextIsSymbol()&&(c=a.getSymbolRecord(),a.next(),"variable"===c.keyword)?{domain:"core",type:"property",property:b,symbol:c.name}:null;if("arg"===b&&(b=a.getNextValue(),a.tokenIs("of")&&a.nextIsSymbol()))return c=a.getSymbolRecord(),a.next(),{domain:"core",type:"arg",value:b,target:c.name};a.tokenIs("the")&&a.next();b=a.getToken();switch(b){case "elements":if(a.nextTokenIs("of")&&a.nextIsSymbol())return c=a.getToken(),a.next(),{domain:"core",
    7777type:b,name:c};break;case "index":if(a.nextTokenIs("of")){if(a.nextIsSymbol()){if("in"===a.peek())return b=a.getValue(),a=a.getNextValue(),{domain:"core",type:"indexOf",value1:b,value2:a};c=a.getToken();a.next();return{domain:"core",type:b,name:c}}b=a.getValue();if(a.tokenIs("in"))return a=a.getNextValue(),{domain:"core",type:"indexOf",value1:b,value2:a}}break;case "value":if(a.nextTokenIs("of"))return a.next(),{domain:"core",type:"valueOf",value:a.getValue()};break;case "length":if(a.nextTokenIs("of"))return a.next(),
    78 {domain:"core",type:"lengthOf",value:a.getValue()};break;case "left":case "right":try{if(c=a.getNextValue(),a.tokenIs("of")){var d=a.getNextValue();return{domain:"core",type:b,count:c,value:d}}}catch(g){}break;case "from":c=a.getNextValue();d=a.tokenIs("to")?a.getNextValue():null;if(a.tokenIs("of"))return a=a.getNextValue(),{domain:"core",type:b,from:c,to:d,value:a};break;case "position":if(a.nextTokenIs("of")&&(b=!1,a.nextTokenIs("the")&&a.nextTokenIs("last")&&(a.next(),b=!0),c=a.getValue(),a.tokenIs("in")))return a=
     78{domain:"core",type:"lengthOf",value:a.getValue()};break;case "left":case "right":try{if(c=a.getNextValue(),a.tokenIs("of")){var d=a.getNextValue();return{domain:"core",type:b,count:c,value:d}}}catch(f){}break;case "from":c=a.getNextValue();d=a.tokenIs("to")?a.getNextValue():null;if(a.tokenIs("of"))return a=a.getNextValue(),{domain:"core",type:b,from:c,to:d,value:a};break;case "position":if(a.nextTokenIs("of")&&(b=!1,a.nextTokenIs("the")&&a.nextTokenIs("last")&&(a.next(),b=!0),c=a.getValue(),a.tokenIs("in")))return a=
    7979a.getNextValue(),{domain:"core",type:"position",needle:c,haystack:a,last:b};break;case "payload":if(a.nextTokenIs("of")&&a.nextIsSymbol()&&(b=a.getSymbolRecord(),"callback"===b.keyword))return a.next(),{domain:"core",type:"payload",callback:b.name};break;case "message":case "error":return a.next(),{domain:"core",type:b}}return null},get:function(a,b){switch(b.type){case "boolean":return{type:"boolean",numeric:!1,content:b.content};case "elements":return{type:"constant",numeric:!0,content:a.getSymbolRecord(b.name).elements};
    8080case "index":return{type:"constant",numeric:!0,content:a.getSymbolRecord(b.name).index};case "random":return a=a.evaluate(b.range),{type:"constant",numeric:!0,content:Math.floor(Math.random()*a.content)};case "cos":var c=a.getValue(b.angle_c);a=a.getValue(b.radius_c);return{type:"constant",numeric:!0,content:parseInt(Math.cos(.01745329*parseFloat(c))*a,10)};case "sin":return c=a.getValue(b.angle_s),a=a.getValue(b.radius_s),{type:"constant",numeric:!0,content:parseInt(Math.sin(.01745329*parseFloat(c))*
    8181a,10)};case "tan":return c=a.getValue(b.angle_t),a=a.getValue(b.radius_t),{type:"constant",numeric:!0,content:parseInt(Math.tan(.01745329*parseFloat(c))*a,10)};case "valueOf":return a=parseInt(a.getValue(b.value)),{type:"constant",numeric:!0,content:a?a:0};case "lengthOf":return{type:"constant",numeric:!0,content:a.getValue(b.value).length};case "left":return{type:"constant",numeric:!1,content:a.getValue(b.value).substr(0,a.getValue(b.count))};case "right":return c=a.getValue(b.value),{type:"constant",
    8282numeric:!1,content:c.substr(c.length-a.getValue(b.count))};case "from":c=a.getValue(b.from);var d=b.to?a.getValue(b.to):null;a=a.getValue(b.value);return{type:"constant",numeric:!1,content:d?a.substr(c,d):a.substr(c)};case "position":return c=a.getValue(b.needle),a=a.getValue(b.haystack),{type:"constant",numeric:!0,content:b.last?a.lastIndexOf(c):a.indexOf(c)};case "payload":return{type:"constant",numeric:!1,content:a.getSymbolRecord(b.callback).payload};case "modulo":return c=a.getSymbolRecord(b.name),
    83 a=a.evaluate(b.value),{type:"constant",numeric:!0,content:c.value[c.index].content%a.content};case "format":c=a.getSymbolRecord(b.name);c=1E3*a.getValue(c.value[c.index]);try{switch(d=JSON.parse(a.getValue(b.value)),d.mode){case "time":return{type:"constant",numeric:!0,content:(new Date(c)).toLocaleTimeString(d.locale,d.options)};default:return{type:"constant",numeric:!0,content:(new Date(c)).toLocaleDateString(d.locale,d.options)}}}catch(g){a.runtimeError(a[a.pc].lino,"Can't parse "+b.value);break}case "empty":return{type:"constant",
     83a=a.evaluate(b.value),{type:"constant",numeric:!0,content:c.value[c.index].content%a.content};case "format":c=a.getSymbolRecord(b.name);c=1E3*a.getValue(c.value[c.index]);try{switch(d=JSON.parse(a.getValue(b.value)),d.mode){case "time":return{type:"constant",numeric:!0,content:(new Date(c)).toLocaleTimeString(d.locale,d.options)};default:return{type:"constant",numeric:!0,content:(new Date(c)).toLocaleDateString(d.locale,d.options)}}}catch(f){a.runtimeError(a[a.pc].lino,"Can't parse "+b.value);break}case "empty":return{type:"constant",
    8484numeric:!1,content:""};case "now":return{type:"constant",numeric:!0,content:Math.floor(Date.now()/1E3)};case "today":return a=new Date,a.setHours(0,0,0,0),{type:"constant",numeric:!0,content:Math.floor(a.getTime()/1E3)};case "date":return{type:"constant",numeric:!0,content:Date.parse(a.getValue(b.value))/1E3};case "newline":return{type:"constant",numeric:!1,content:"\n"};case "break":return{type:"constant",numeric:!1,content:"<br />"};case "encode":return{type:"constant",numeric:!1,content:a.encode(a.getValue(b.value))};
    85 case "decode":return{type:"constant",numeric:!1,content:a.decode(a.getValue(b.value))};case "lowercase":return{type:"constant",numeric:!1,content:a.getValue(b.value).toLowerCase()};case "hash":a=a.getValue(b.value);b=0;if(0===a.length)return b;for(c=0;c<a.length;c++)d=a.charCodeAt(c),b=(b<<5)-b+d;return{type:"constant",numeric:!0,content:b};case "element":c=a.getValue(b.element);b=a.getSymbolRecord(b.symbol);d="";try{d=JSON.parse(a.getValue(b.value[b.index]))[c]}catch(g){a.runtimeError(a[a.pc].lino,
    86 "Can't parse JSON");break}return{type:"constant",numeric:!1,content:"object"===typeof d?JSON.stringify(d):d};case "property":d=a.getValue(b.property);b=a.getSymbolRecord(b.symbol);a=a.getValue(b.value[b.index]);c="";if(d&&a)if("object"===typeof a)c=a[d];else if("{"===a.charAt(0))try{c=JSON.parse(a)[d]}catch(g){console.log("Can't parse '"+a+"': "+g.message)}return{type:"constant",numeric:!isNaN(c),content:"object"===typeof c?JSON.stringify(c):c};case "module":return{type:"boolean",numeric:!1,content:a.getSymbolRecord(b.name).program};
    87 case "message":return c=a.message,{type:"constant",numeric:!1,content:c};case "error":return c=a.errorMessage,{type:"constant",numeric:!1,content:c};case "indexOf":d=a.getValue(b.value1);b=a.getValue(b.value2);try{return c=JSON.parse(b).indexOf(d),{type:"constant",numeric:!0,content:c}}catch(g){a.runtimeError(a[a.pc].lino,"Can't parse "+b)}break;case "arg":return c=a.getValue(b.value),c=a.getSymbolRecord(b.target)[c],{type:"constant",numeric:!isNaN(c),content:c}}return null},put:function(a,b){a.value[a.index]=
    88 b}},condition:{compile:function(a){if(a.isSymbol()){var b=a.getSymbolRecord();if("module"===b.keyword){if(a.nextTokenIs("is")){var d=!0;a.nextTokenIs("not")&&(a.next(),d=!1);if(a.tokenIs("running"))return a.next(),{domain:"core",type:"moduleRunning",name:b.name,sense:d}}return null}}if(a.tokenIs("not"))return{domain:"core",type:"not",value:a.getNextValue()};try{if(d=a.getValue(),"is"===a.getToken()){a.next();var f=c.isNegate(a);switch(a.getToken()){case "numeric":return a.next(),{domain:"core",type:"numeric",
    89 value1:d};case "even":return a.next(),{domain:"core",type:"even",value1:d};case "odd":return a.next(),{domain:"core",type:"odd",value1:d};case "greater":a.next();if(a.tokenIs("than")){a.next();var g=a.getValue();return{domain:"core",type:"greater",value1:d,value2:g,negate:f}}break;case "less":a.next();if(a.tokenIs("than")){a.next();var l=a.getValue();return{domain:"core",type:"less",value1:d,value2:l,negate:f}}break;default:var n=a.getValue();return{domain:"core",type:"is",value1:d,value2:n,negate:f}}}else if(d)return{domain:"core",
    90 type:"boolean",value:d}}catch(p){return a.warning("Can't get a value"),0}return null},test:function(a,b){switch(b.type){case "boolean":return a.getValue(b.value);case "numeric":return!isNaN(a.getValue(b.value1));case "even":return 0===a.getValue(b.value1)%2;case "odd":return 1===a.getValue(b.value1)%2;case "is":return a=a.compare(a,b.value1,b.value2),b.negate?0!==a:0===a;case "greater":return a=a.compare(a,b.value1,b.value2),b.negate?0>=a:0<a;case "less":return a=a.compare(a,b.value1,b.value2),b.negate?
    91 0<=a:0>a;case "not":return!a.getValue(b.value);case "moduleRunning":return a=a.getSymbolRecord(b.name).program,b.sense?a:!a}return!1}}};k.exports=c},{}],6:[function(d,k,h){var f=this,c=d("./Compile"),a=d("./Run"),b=d("./Value"),e=d("./Condition"),q=d("./Compare"),g={domain:{core:d("./Core")},runtimeError:function(a,b){this.lino=a;this.reportError({message:"Line "+(0<=a?a:"")+": "+b},g.program);g.program.aborted=!0},nonNumericValueError:function(a){this.runtimeError(a,"Non-numeric value")},variableDoesNotHoldAValueError:function(a,
    92 b){this.runtimeError(a,"Variable '"+b+"' does not hold a value")},reportError:function(a,b,d){if(a.message)if(this.compiling||b){d=d?d:b.source;var e=d.tokens;d=d.scriptLines;e=this.compiling?e[c.getIndex()].lino:b[b.pc].lino;b=this.compiling?"Compile error":"Runtime error in '"+b.script+"'";b+=":\n";var l=e-5;for(l=0>l?0:l;l<e;l++){var n=(""+(l+1)).padStart(4," ");b+=n+" "+d[l].line.split("\\s").join(" ")+"\n"}b+=a.message+"\n";a=c.getWarnings();if(a.length)for(b+="Warnings:\n",a=$jscomp.makeIterator(a),
     85case "decode":return{type:"constant",numeric:!1,content:a.decode(a.getValue(b.value))};case "lowercase":return{type:"constant",numeric:!1,content:a.getValue(b.value).toLowerCase()};case "hash":a=a.getValue(b.value);b=0;if(0===a.length)return b;for(c=0;c<a.length;c++)d=a.charCodeAt(c),b=(b<<5)-b+d;return{type:"constant",numeric:!0,content:b};case "element":c=a.getValue(b.element);b=a.getSymbolRecord(b.symbol);d="";try{d=JSON.parse(a.getValue(b.value[b.index]))[c]}catch(f){a.runtimeError(a[a.pc].lino,
     86"Can't parse JSON");break}return{type:"constant",numeric:!1,content:"object"===typeof d?JSON.stringify(d):d};case "property":d=a.getValue(b.property);b=a.getSymbolRecord(b.symbol);a=a.getValue(b.value[b.index]);c="";if(d&&a)if("object"===typeof a)c=a[d];else if("{"===a.charAt(0))try{c=JSON.parse(a)[d]}catch(f){console.log("Can't parse '"+a+"': "+f.message)}return{type:"constant",numeric:!isNaN(c),content:"object"===typeof c?JSON.stringify(c):c};case "module":return{type:"boolean",numeric:!1,content:a.getSymbolRecord(b.name).program};
     87case "message":return c=a.message,{type:"constant",numeric:!1,content:c};case "error":return c=a.errorMessage,{type:"constant",numeric:!1,content:c};case "indexOf":d=a.getValue(b.value1);b=a.getValue(b.value2);try{return c=JSON.parse(b).indexOf(d),{type:"constant",numeric:!0,content:c}}catch(f){a.runtimeError(a[a.pc].lino,"Can't parse "+b)}break;case "arg":return c=a.getValue(b.value),c=a.getSymbolRecord(b.target)[c],{type:"constant",numeric:!isNaN(c),content:c}}return null},put:function(a,b){a.value[a.index]=
     88b}},condition:{compile:function(a){if(a.isSymbol()){var b=a.getSymbolRecord();if("module"===b.keyword){if(a.nextTokenIs("is")){var d=!0;a.nextTokenIs("not")&&(a.next(),d=!1);if(a.tokenIs("running"))return a.next(),{domain:"core",type:"moduleRunning",name:b.name,sense:d}}return null}}if(a.tokenIs("not"))return{domain:"core",type:"not",value:a.getNextValue()};try{if(d=a.getValue(),"is"===a.getToken()){a.next();var g=c.isNegate(a);switch(a.getToken()){case "numeric":return a.next(),{domain:"core",type:"numeric",
     89value1:d};case "even":return a.next(),{domain:"core",type:"even",value1:d};case "odd":return a.next(),{domain:"core",type:"odd",value1:d};case "greater":a.next();if(a.tokenIs("than")){a.next();var f=a.getValue();return{domain:"core",type:"greater",value1:d,value2:f,negate:g}}break;case "less":a.next();if(a.tokenIs("than")){a.next();var l=a.getValue();return{domain:"core",type:"less",value1:d,value2:l,negate:g}}break;default:var q=a.getValue();return{domain:"core",type:"is",value1:d,value2:q,negate:g}}}else if(d)return{domain:"core",
     90type:"boolean",value:d}}catch(n){return a.warning("Can't get a value"),0}return null},test:function(a,b){switch(b.type){case "boolean":return a.getValue(b.value);case "numeric":return!isNaN(a.getValue(b.value1));case "even":return 0===a.getValue(b.value1)%2;case "odd":return 1===a.getValue(b.value1)%2;case "is":return a=a.compare(a,b.value1,b.value2),b.negate?0!==a:0===a;case "greater":return a=a.compare(a,b.value1,b.value2),b.negate?0>=a:0<a;case "less":return a=a.compare(a,b.value1,b.value2),b.negate?
     910<=a:0>a;case "not":return!a.getValue(b.value);case "moduleRunning":return a=a.getSymbolRecord(b.name).program,b.sense?a:!a}return!1}}};k.exports=c},{}],6:[function(d,k,h){var g=this,c=d("./Compile"),a=d("./Run"),b=d("./Value"),e=d("./Condition"),p=d("./Compare"),f={domain:{core:d("./Core")},runtimeError:function(a,b){this.lino=a;this.reportError({message:"Line "+(0<=a?a:"")+": "+b},f.program);f.program.aborted=!0},nonNumericValueError:function(a){this.runtimeError(a,"Non-numeric value")},variableDoesNotHoldAValueError:function(a,
     92b){this.runtimeError(a,"Variable '"+b+"' does not hold a value")},reportError:function(a,b,d){if(a.message)if(this.compiling||b){d=d?d:b.source;var e=d.tokens;d=d.scriptLines;e=this.compiling?e[c.getIndex()].lino:b[b.pc].lino;b=this.compiling?"Compile error":"Runtime error in '"+b.script+"'";b+=":\n";var l=e-5;for(l=0>l?0:l;l<e;l++){var f=(""+(l+1)).padStart(4," ");b+=f+" "+d[l].line.split("\\s").join(" ")+"\n"}b+=a.message+"\n";a=c.getWarnings();if(a.length)for(b+="Warnings:\n",a=$jscomp.makeIterator(a),
    9393d=a.next();!d.done;d=a.next())b+=d.value+"\n";console.log(b);alert(b)}else a="Error: "+a.message,alert(a),console.log(a);else console.log("An error occurred - origin was "+a.path[0])},getSymbolRecord:function(a){a=this[this.symbols[a].pc];return a.alias?this.getSymbolRecord(a.alias):a.exporter&&a.exporter!=this?a.exporter.getSymbolRecord(a.exportedName):a},verifySymbol:function(a){return this.symbols.hasOwnProperty(a)},encode:function(a){return b.encode(a,this.encoding)},decode:function(a){return b.decode(a,
    94 this.encoding)},evaluate:function(a){return b.evaluate(this,a)},getValue:function(a){return b.getValue(this,a)},getFormattedValue:function(a){a=b.evaluate(this,a);if(a.numeric)return a.content;if("boolean"===a.type)return a.content?"true":"false";if('{"'===a.content.substr(0,2)||"["===a.content[0])try{var c=JSON.parse(a.content);return JSON.stringify(c,null,2)}catch(p){return this.reportError(p),"{}"}return a.content},getSimpleValue:function(a){return!0===a||!1===a?{type:"boolean",content:a}:{type:"constant",
    95 numeric:Number.isInteger(a),content:a}},run:function(b){b&&(g.program=this,a.run(this,b))},exit:function(){a.exit(this)},register:function(a){g.program=a},require:function(a,b,c){var d=document.createElement("css"===a?"link":"script");switch(a){case "css":d.type="text/css";d.href=b;d.rel="stylesheet";break;case "js":d.type="text/javascript";d.src=b;break;default:return}d.onload=function(){console.log(Date.now()-g.timestamp+" ms: Library "+b+" loaded");c()};document.head.appendChild(d)},isUndefined:function(a){return"undefined"===
    96 typeof a},runScript:function(a){var b=a[a.pc],c=a.getValue(b.script),d=b.imports,e=b.module?a.getSymbolRecord(b.module):null;try{g.tokeniseAndCompile(c.split("\n"),d,e,this,b.then)}catch(u){this.reportError(u,g.program,a.source);a.onError?a.run(a.onError):a.parent&&a.parent.onError&&a.parent.run(a.parent.onError);return}b.nowait&&this.run(a.nextPc)},close:function(){},compileScript:function(a,d,f,h){var l=a.tokens;this.compiling=!0;c.value=b;c.condition=e;c.domain=g.domain;c.imports=d;d=c.compile(l);
    97 this.compiling=!1;d.EasyCoder=g;d.value=b;d.condition=e;d.compare=q;d.source=a;d.run=this.run;d.exit=this.exit;d.runScript=this.runScript;d.evaluate=this.evaluate;d.getValue=this.getValue;d.getFormattedValue=this.getFormattedValue;d.getSimpleValue=this.getSimpleValue;d.encode=this.encode;d.decode=this.decode;d.domain=this.domain;d.require=this.require;d.isUndefined=this.isUndefined;d.checkPlugin=this.checkPlugin;d.getPlugin=this.getPlugin;d.addLocalPlugin=this.addLocalPlugin;d.getPluginsPath=this.getPluginsPath;
    98 d.getSymbolRecord=this.getSymbolRecord;d.verifySymbol=this.verifySymbol;d.runtimeError=this.runtimeError;d.nonNumericValueError=this.nonNumericValueError;d.variableDoesNotHoldAValueError=this.variableDoesNotHoldAValueError;d.reportError=this.reportError;d.register=this.register;d.symbols=c.getSymbols();d.encoding="ec";d.popups=[];d.stack=[];d.queue=[0];d.module=f;d.parent=h;f&&(f.program=d);return d},tokeniseFile:function(a){var b=[],c=[],d=0;a.forEach(function(a,e){b.push({lino:e+1,line:a});for(var l=
    99 a.length,f="",g=!0,h=0;h<l;h++){var k=a[h];if(0==k.trim().length)g||(c.push({index:d,lino:e+1,token:f}),d++,f="",g=!0);else if(g=!1,"`"===k){for(m=h;++h<a.length&&"`"!==a[h];);f=a.substr(m,h-m+1)}else if("!"==k)break;else f+=k}0<f.length&&c.push({index:d,lino:e+1,token:f})});return{scriptLines:b,tokens:c}},tokeniseAndCompile:function(b,c,d,e,f){var l=null,h=Date.now();b=g.tokeniseFile(b);try{l=g.compileScript(b,c,d,e);var k=l.script?l.script:"<anon>",n=Date.now();console.log(n-g.timestamp+" ms: "+
    100 ("Compiled "+k+": "+b.scriptLines.length+" lines ("+b.tokens.length+" tokens) in ")+(n-h+" ms"))}catch(w){"stop"!==w.message&&(c=g.program,this.reportError(w,c,b),c.onError&&c.run(c.onError))}l&&(l.onExit=f,a.run(l,0))},tokenise:function(a){var b=a.split("\n");if(!f.tokenising){try{g.tokeniseAndCompile(b)}catch(p){g.reportError(p,null,a)}f.tokenising=!0}},setPluginCount:function(a){f.plugins=[];f.pluginCount=a},checkPlugin:function(a){return g.domain[a]},getPlugin:function(a,b,c){g.domain[a]?c():
    101 (a=document.createElement("script"),a.type="text/javascript",a.src=b+"?ver="+g.version,a.onload=function(){console.log(Date.now()-g.timestamp+" ms: Plugin "+b+" loaded");c()},document.head.appendChild(a))},addGlobalPlugin:function(a,b){f.plugins.push({name:a,handler:b});f.plugins.length===f.pluginCount&&(f.plugins.forEach(function(a){g.domain[a.name]=a.handler}),g.tokenise(f.source))},addLocalPlugin:function(a,b,c){g.domain[a]=b;c()},getPluginsPath:function(){return g.pluginsPath},loadPluginJs:function(a){console.log(Date.now()-
    102 g.timestamp+" ms: Load "+a+"/easycoder/plugins.js");var b=document.createElement("script");b.src=""+window.location.origin+a+"/easycoder/plugins.js?ver="+g.version;b.type="text/javascript";b.onload=function(){EasyCoder_Plugins.getGlobalPlugins(g.timestamp,a,g.setPluginCount,g.getPlugin,g.addGlobalPlugin)};b.onerror=function(){a?g.loadPluginJs(a.slice(0,a.lastIndexOf("/"))):g.reportError({message:"Can't load plugins.js"},g.program,f.source)};document.head.appendChild(b);g.pluginsPath=a},start:function(a){f.source=
    103 a;a=window.location.pathname;a=a.endsWith("/")?a.slice(0,-1):"";g.loadPluginJs(a)}};k.exports=g},{"./Compare":2,"./Compile":3,"./Condition":4,"./Core":5,"./Run":7,"./Value":8}],7:[function(d,k,h){var f={run:function(c,a){var b=[],d=function(a){var b=9999;a.forEach(function(a){a=a.line;for(var c=0;c<a.length&&" "===a[c];)c++;0<c&&c<b&&(b=c)});return 0};if(b.length)b.push(a);else for(c.register(c),b.push(a);0<b.length;)for(c.pc=b.shift(),c.watchdog=0,a={};;){if(1E6<c.watchdog){c.lino=c[c.pc].lino;c.reportError(Error("Program runaway intercepted.\nHave you forgotten to increment a loop counter?",
    104 c),c);break}c.watchdog++;var h=c[c.pc].domain;c.debugStep&&console.log(c.script+": Line "+c[c.pc].lino+": PC: "+c.pc+" "+h+":"+c[c.pc].keyword);var g=c.domain[h];if(!g){c.runtimeError(c[c.pc].lino,"Unknown domain '"+h+"'");break}c.pc=g.run(c);if(!c.pc)break;if(c.stop){c.tracing=!1;break}if(c.tracing){h=c[c.pc];g=c.source.scriptLines;var k=d(g),n=document.getElementById("easycoder-tracer");if(!n){c.runtimeError(h.lino,"Element 'easycoder-tracer' was not found");return}n.style.display="block";n.style.visibility=
    105 "visible";var p="";if(c.tracer){if(n=document.getElementById("easycoder-tracer-content")){c.tracer.variables.forEach(function(a,b,d){var e=c.getSymbolRecord(a);if(1<e.elements)for(p+=a+": "+e.index+"/"+e.elements+": ",a=0;a<e.elements;a++){var f=e.value[a];p=f?p+(f.content+" "):p+"undefined "}else p=(e=e.value[e.index])?p+(a+": "+e.content):p+(a+": undefined");switch(c.tracer.alignment){case "horizontal":b<d.length-1&&(p+=", ");break;case "vertical":p+="<br>"}});p+="<hr>";for(var t="",r=5;0<r;r--){if(h.lino){var u=
    106 g[h.lino-r].line.substr(k);t+='<input type="text" name="'+r+'"'+('value="'+(h.lino-r+1)+": "+u.split("\\s").join(" ")+'"')+'style="width:100%;border:none;enabled:false">'}t+="<br>"}n.innerHTML=p+" "+t;n.style.display="block";a.run=document.getElementById("easycoder-run-button");a.step=document.getElementById("easycoder-step-button");a.run.onclick=function(a){return function(){a.run.blur();c.tracing=!1;document.getElementById("easycoder-tracer-content").style.display="none";try{f.run(c,c.resume)}catch(v){var b=
    107 "Error in run handler: "+v.message;console.log(b);alert(b)}}}(a);a.step.onclick=function(a){return function(){console.log("step");a.step.blur();c.tracing=!0;document.getElementById("easycoder-tracer-content").style.display="block";try{c.run(c.resume)}catch(v){var b="Error in step handler: "+v.message;console.log(b);alert(b)}}}(a)}c.resume=c.pc;c.pc=0}break}a={run:a.run,step:a.step}}},exit:function(c){c.onExit&&(c.parent.run(c.onExit),c.module.program=null)}};k.exports=f},{}],8:[function(d,k,h){var f=
    108 {getItem:function(c){var a=c.getToken();if(!a)return null;if("true"===a)return c.next(),{type:"boolean",content:!0};if("false"===a)return c.next(),{type:"boolean",content:!1};if("`"===a.charAt(0))return c.next(),{type:"constant",numeric:!1,content:a.substring(1,a.length-1)};if(a.charAt(0).match(/[0-9-]/)){var b=eval(a);if(Number.isInteger(b))return c.next(),{type:"constant",numeric:!0,content:b};throw Error("'"+a+"' is not an integer");}a=c.getIndex();b=$jscomp.makeIterator(Object.keys(c.domain));
    109 for(var d=b.next();!d.done;d=b.next())if(d=d.value,c.rewindTo(a),d=c.domain[d].value.compile(c))return d;return null},compile:function(c){var a=c.getToken(),b=f.getItem(c);if(!b)throw Error("Undefined value: '"+a+"'");if("cat"===c.getToken()){for(a={type:"cat",numeric:!1,parts:[b]};c.tokenIs("cat");)c.next(),a.parts.push(c.value.getItem(c));return a}return b},doValue:function(c,a){if("undefined"===typeof a.type)return c.runtimeError(c[c.pc].lino,"Undefined value (variable not initialized?)"),null;
    110 switch(a.type){case "cat":return{type:"constant",numeric:!1,content:a.parts.reduce(function(a,b){return a+f.doValue(c,b).content},"")};case "boolean":case "constant":return a;case "symbol":var b=c.getSymbolRecord(a.name);if(b.isValueHolder){if(a=b.value[b.index]){b=a.content;if(null===b||"undefined"===typeof b)a.content=a.numeric?0:"";return a}return null}return c.domain[b.domain].value.get(c,a)}return c.domain[a.domain].value.get(c,a)},constant:function(c,a){return{type:"constant",numeric:a,content:c}},
    111 evaluate:function(c,a){if(!a)return{type:"constant",numeric:!1,content:""};var b=f.doValue(c,a);if(b)return b;c.runtimeError(c[c.pc].lino,"Can't decode value: "+a)},getValue:function(c,a){return f.evaluate(c,a).content},encode:function(c,a){if(c)switch(a){case "ec":return c.replace(/'/g,"~sq~").replace(/"/g,"~dq~").replace(/\n/g,"%0a").replace(/\r/g,"%0d");case "url":return encodeURIComponent(c.replace(/\s/g,"+"));case "sanitize":return c.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}return c},
    112 decode:function(c,a){if(c)switch(a){case "ec":return c.replace(/~dq~/g,'"').replace(/~sq~/g,"'").replace(/%0a/g,"\n").replace(/%0d/g,"\r");case "url":return decodeURIComponent(c).replace(/\+/g," ")}return c}};k.exports=f},{}]},{},[1]);
     94this.encoding)},evaluate:function(a){return b.evaluate(this,a)},getValue:function(a){return b.getValue(this,a)},getFormattedValue:function(a){a=b.evaluate(this,a);if(a.numeric)return a.content;if("boolean"===a.type)return a.content?"true":"false";if('{"'===a.content.substr(0,2)||"["===a.content[0])try{var c=JSON.parse(a.content);return JSON.stringify(c,null,2)}catch(n){return this.reportError(n),"{}"}return a.content},getSimpleValue:function(a){return!0===a||!1===a?{type:"boolean",content:a}:{type:"constant",
     95numeric:Number.isInteger(a),content:a}},run:function(b){b&&(f.program=this,a.run(this,b))},exit:function(){a.exit(this)},register:function(a){f.program=a},require:function(a,b,c){var d=document.createElement("css"===a?"link":"script");switch(a){case "css":d.type="text/css";d.href=b;d.rel="stylesheet";break;case "js":d.type="text/javascript";d.src=b;break;default:return}d.onload=function(){console.log(Date.now()-f.timestamp+" ms: Library "+b+" loaded");c()};document.head.appendChild(d)},isUndefined:function(a){return"undefined"===
     96typeof a},runScript:function(a){var b=a[a.pc],c=a.getValue(b.script),d=b.imports,e=b.module?a.getSymbolRecord(b.module):null;try{f.tokeniseAndCompile(c.split("\n"),d,e,this,b.then)}catch(u){this.reportError(u,f.program,a.source);a.onError?a.run(a.onError):a.parent&&a.parent.onError&&a.parent.run(a.parent.onError);return}b.nowait&&this.run(a.nextPc)},close:function(){},compileScript:function(a,d,g,h){var l=a.tokens;this.compiling=!0;c.value=b;c.condition=e;c.domain=f.domain;c.imports=d;d=c.compile(l);
     97this.compiling=!1;d.EasyCoder=f;d.value=b;d.condition=e;d.compare=p;d.source=a;d.run=this.run;d.exit=this.exit;d.runScript=this.runScript;d.evaluate=this.evaluate;d.getValue=this.getValue;d.getFormattedValue=this.getFormattedValue;d.getSimpleValue=this.getSimpleValue;d.encode=this.encode;d.decode=this.decode;d.domain=this.domain;d.require=this.require;d.isUndefined=this.isUndefined;d.checkPlugin=this.checkPlugin;d.getPlugin=this.getPlugin;d.addLocalPlugin=this.addLocalPlugin;d.getPluginsPath=this.getPluginsPath;
     98d.getSymbolRecord=this.getSymbolRecord;d.verifySymbol=this.verifySymbol;d.runtimeError=this.runtimeError;d.nonNumericValueError=this.nonNumericValueError;d.variableDoesNotHoldAValueError=this.variableDoesNotHoldAValueError;d.reportError=this.reportError;d.register=this.register;d.symbols=c.getSymbols();d.encoding="ec";d.popups=[];d.stack=[];d.queue=[0];d.module=g;d.parent=h;g&&(g.program=d);return d},tokeniseFile:function(a){var b=[],c=[],d=0;a.forEach(function(a,e){b.push({lino:e+1,line:a});for(var f=
     99a.length,l="",g=!0,h=0;h<f;h++){var k=a[h];if(0==k.trim().length)g||(c.push({index:d,lino:e+1,token:l}),d++,l="",g=!0);else if(g=!1,"`"===k){for(m=h;++h<a.length&&"`"!==a[h];);l=a.substr(m,h-m+1)}else if("!"==k)break;else l+=k}0<l.length&&c.push({index:d,lino:e+1,token:l})});return{scriptLines:b,tokens:c}},tokeniseAndCompile:function(b,c,d,e,g){var l=null,h=Date.now();b=f.tokeniseFile(b);try{l=f.compileScript(b,c,d,e);var k=l.script?l.script:"<anon>",q=Date.now();console.log(q-f.timestamp+" ms: "+
     100("Compiled "+k+": "+b.scriptLines.length+" lines ("+b.tokens.length+" tokens) in ")+(q-h+" ms"))}catch(w){"stop"!==w.message&&(c=f.program,this.reportError(w,c,b),c.onError&&c.run(c.onError))}l&&(l.onExit=g,a.run(l,0))},tokenise:function(a){var b=a.split("\n");if(!g.tokenising){try{f.tokeniseAndCompile(b)}catch(n){f.reportError(n,null,a)}g.tokenising=!0}},setPluginCount:function(a){g.plugins=[];g.pluginCount=a},checkPlugin:function(a){return f.domain[a]},getPlugin:function(a,b,c){f.domain[a]?c():
     101(a=document.createElement("script"),a.type="text/javascript",a.src=b+"?ver="+f.version,a.onload=function(){console.log(Date.now()-f.timestamp+" ms: Plugin "+b+" loaded");c()},document.head.appendChild(a))},addGlobalPlugin:function(a,b){g.plugins.push({name:a,handler:b});g.plugins.length===g.pluginCount&&(g.plugins.forEach(function(a){f.domain[a.name]=a.handler}),f.tokenise(g.source))},addLocalPlugin:function(a,b,c){f.domain[a]=b;c()},getPluginsPath:function(){return f.pluginsPath},loadPluginJs:function(a){console.log(Date.now()-
     102f.timestamp+" ms: Load "+a+"/easycoder/plugins.js");var b=document.createElement("script");b.src=""+window.location.origin+a+"/easycoder/plugins.js?ver="+f.version;b.type="text/javascript";b.onload=function(){EasyCoder_Plugins.getGlobalPlugins(f.timestamp,a,f.setPluginCount,f.getPlugin,f.addGlobalPlugin)};b.onerror=function(){a?f.loadPluginJs(a.slice(0,a.lastIndexOf("/"))):f.reportError({message:"Can't load plugins.js"},f.program,g.source)};document.head.appendChild(b);f.pluginsPath=a},start:function(a){g.source=
     103a;a=window.location.pathname;a=a.endsWith("/")?a.slice(0,-1):"";"undefined"===typeof EasyCoder_Plugins?f.loadPluginJs(a):(f.pluginsPath=a,EasyCoder_Plugins.getGlobalPlugins(f.timestamp,a,f.setPluginCount,f.getPlugin,f.addGlobalPlugin))}};k.exports=f},{"./Compare":2,"./Compile":3,"./Condition":4,"./Core":5,"./Run":7,"./Value":8}],7:[function(d,k,h){var g={run:function(c,a){var b=[],d=function(a){var b=9999;a.forEach(function(a){a=a.line;for(var c=0;c<a.length&&" "===a[c];)c++;0<c&&c<b&&(b=c)});return 0};
     104if(b.length)b.push(a);else for(c.register(c),b.push(a);0<b.length;)for(c.pc=b.shift(),c.watchdog=0,a={};;){if(1E6<c.watchdog){c.lino=c[c.pc].lino;c.reportError(Error("Program runaway intercepted.\nHave you forgotten to increment a loop counter?",c),c);break}c.watchdog++;var h=c[c.pc].domain;c.debugStep&&console.log(c.script+": Line "+c[c.pc].lino+": PC: "+c.pc+" "+h+":"+c[c.pc].keyword);var f=c.domain[h];if(!f){c.runtimeError(c[c.pc].lino,"Unknown domain '"+h+"'");break}c.pc=f.run(c);if(!c.pc)break;
     105if(c.stop){c.tracing=!1;break}if(c.tracing){h=c[c.pc];f=c.source.scriptLines;var l=d(f),k=document.getElementById("easycoder-tracer");if(!k){c.runtimeError(h.lino,"Element 'easycoder-tracer' was not found");return}k.style.display="block";k.style.visibility="visible";var n="";if(c.tracer){if(k=document.getElementById("easycoder-tracer-content")){c.tracer.variables.forEach(function(a,b,d){var e=c.getSymbolRecord(a);if(1<e.elements)for(n+=a+": "+e.index+"/"+e.elements+": ",a=0;a<e.elements;a++){var f=
     106e.value[a];n=f?n+(f.content+" "):n+"undefined "}else n=(e=e.value[e.index])?n+(a+": "+e.content):n+(a+": undefined");switch(c.tracer.alignment){case "horizontal":b<d.length-1&&(n+=", ");break;case "vertical":n+="<br>"}});n+="<hr>";for(var t="",r=5;0<r;r--){if(h.lino){var u=f[h.lino-r].line.substr(l);t+='<input type="text" name="'+r+'"'+('value="'+(h.lino-r+1)+": "+u.split("\\s").join(" ")+'"')+'style="width:100%;border:none;enabled:false">'}t+="<br>"}k.innerHTML=n+" "+t;k.style.display="block";a.run=
     107document.getElementById("easycoder-run-button");a.step=document.getElementById("easycoder-step-button");a.run.onclick=function(a){return function(){a.run.blur();c.tracing=!1;document.getElementById("easycoder-tracer-content").style.display="none";try{g.run(c,c.resume)}catch(v){var b="Error in run handler: "+v.message;console.log(b);alert(b)}}}(a);a.step.onclick=function(a){return function(){console.log("step");a.step.blur();c.tracing=!0;document.getElementById("easycoder-tracer-content").style.display=
     108"block";try{c.run(c.resume)}catch(v){var b="Error in step handler: "+v.message;console.log(b);alert(b)}}}(a)}c.resume=c.pc;c.pc=0}break}a={run:a.run,step:a.step}}},exit:function(c){c.onExit&&(c.parent.run(c.onExit),c.module.program=null)}};k.exports=g},{}],8:[function(d,k,h){var g={getItem:function(c){var a=c.getToken();if(!a)return null;if("true"===a)return c.next(),{type:"boolean",content:!0};if("false"===a)return c.next(),{type:"boolean",content:!1};if("`"===a.charAt(0))return c.next(),{type:"constant",
     109numeric:!1,content:a.substring(1,a.length-1)};if(a.charAt(0).match(/[0-9-]/)){var b=eval(a);if(Number.isInteger(b))return c.next(),{type:"constant",numeric:!0,content:b};throw Error("'"+a+"' is not an integer");}a=c.getIndex();b=$jscomp.makeIterator(Object.keys(c.domain));for(var d=b.next();!d.done;d=b.next())if(d=d.value,c.rewindTo(a),d=c.domain[d].value.compile(c))return d;return null},compile:function(c){var a=c.getToken(),b=g.getItem(c);if(!b)throw Error("Undefined value: '"+a+"'");if("cat"===
     110c.getToken()){for(a={type:"cat",numeric:!1,parts:[b]};c.tokenIs("cat");)c.next(),a.parts.push(c.value.getItem(c));return a}return b},doValue:function(c,a){if("undefined"===typeof a.type)return c.runtimeError(c[c.pc].lino,"Undefined value (variable not initialized?)"),null;switch(a.type){case "cat":return{type:"constant",numeric:!1,content:a.parts.reduce(function(a,b){return a+g.doValue(c,b).content},"")};case "boolean":case "constant":return a;case "symbol":var b=c.getSymbolRecord(a.name);if(b.isValueHolder){if(a=
     111b.value[b.index]){b=a.content;if(null===b||"undefined"===typeof b)a.content=a.numeric?0:"";return a}return null}return c.domain[b.domain].value.get(c,a)}return c.domain[a.domain].value.get(c,a)},constant:function(c,a){return{type:"constant",numeric:a,content:c}},evaluate:function(c,a){if(!a)return{type:"constant",numeric:!1,content:""};var b=g.doValue(c,a);if(b)return b;c.runtimeError(c[c.pc].lino,"Can't decode value: "+a)},getValue:function(c,a){return g.evaluate(c,a).content},encode:function(c,
     112a){if(c)switch(a){case "ec":return c.replace(/'/g,"~sq~").replace(/"/g,"~dq~").replace(/\n/g,"%0a").replace(/\r/g,"%0d");case "url":return encodeURIComponent(c.replace(/\s/g,"+"));case "sanitize":return c.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}return c},decode:function(c,a){if(c)switch(a){case "ec":return c.replace(/~dq~/g,'"').replace(/~sq~/g,"'").replace(/%0a/g,"\n").replace(/%0d/g,"\r");case "url":return decodeURIComponent(c).replace(/\+/g," ")}return c}};k.exports=g},{}]},{},[1]);
  • easycoder/trunk/easycoder.js

    r2145506 r2148361  
    44const EasyCoder = require(`./easycoder/Main`);
    55
    6 EasyCoder.version = `2.5.0`;
     6EasyCoder.version = `2.5.1`;
    77EasyCoder.timestamp = Date.now();
    88console.log(`EasyCoder loaded; waiting for page`);
     
    14371437            switch (action) {
    14381438                case `close`:
    1439                 case `restore`:
    14401439                case `message`:
    14411440                case `error`:
     
    14711470                case `close`:
    14721471                    program.onClose = cb;
    1473                     break;
    1474                 case `restore`:
    1475                     program.onRestore = cb;
    14761472                    break;
    14771473                case `message`:
     
    17731769            // const lino = compiler.getLino();
    17741770            // const name = compiler.nextToken();
    1775             compiler.getProgram().script = compiler.nextToken();
     1771            const program = compiler.getProgram();
     1772            program.script = compiler.nextToken();
     1773            EasyCoder.scripts[program.script] = program;
    17761774            compiler.next();
    17771775            // compiler.addCommand({
     
    37533751            pathname = ``;
    37543752        }
    3755         EasyCoder.loadPluginJs(pathname);
     3753        if (typeof EasyCoder_Plugins === `undefined`) {
     3754            EasyCoder.loadPluginJs(pathname);
     3755        } else {
     3756            EasyCoder.pluginsPath = pathname;
     3757            EasyCoder_Plugins.getGlobalPlugins(EasyCoder.timestamp, pathname, EasyCoder.setPluginCount, EasyCoder.getPlugin, EasyCoder.addGlobalPlugin);
     3758        }
    37563759    }
    37573760};
  • easycoder/trunk/easycoder.php

    r2145506 r2148361  
    44  * Plugin URI: https://easycoder.software
    55  * Description: Control the appearance and behavior of your posts and pages by embedding simple English-like scripts, without the need to learn JavaScript.
    6   * Version: 2.5.0
     6  * Version: 2.5.1
    77  * Author: EasyCoder Software
    88  * Author URI: https://easycoder.software
     
    1717  function easycoder_enqueue_script() {   
    1818    wp_enqueue_script('easycoder_script', plugin_dir_url( __FILE__ )
    19             . 'easycoder-min.js', array(), '2.5.0');
     19            . 'easycoder-min.js', array(), '2.5.1');
    2020  }
    2121 
  • easycoder/trunk/plugins/browser.js

    r2145506 r2148361  
    10011001                return compiler.completeHandler();
    10021002            case `browser`:
    1003                 if (compiler.nextTokenIs(`back`)) {
    1004                     compiler.next();
    1005                     compiler.addCommand({
    1006                         domain: `browser`,
    1007                         keyword: `on`,
    1008                         lino,
    1009                         action: `browserBack`
    1010                     });
    1011                     return compiler.completeHandler();
    1012                 }
    1013                 return false;
     1003            case `restore`:
     1004                if (action === `browser` && !compiler.nextTokenIs(`back`)) {
     1005                    return false;
     1006                }
     1007                compiler.next();
     1008                compiler.addCommand({
     1009                    domain: `browser`,
     1010                    keyword: `on`,
     1011                    lino,
     1012                    action: `browserBack`
     1013                });
     1014                return compiler.completeHandler();
    10141015            case `swipe`:
    10151016                if ([`left`, `right`].includes(compiler.nextToken())) {
     
    29852986        const program = window.EasyCoder.scripts[state.script];
    29862987        if (program) {
    2987             if (program.onRestore) {
    2988                 program.run(program.onRestore);
     2988            if (program.onBrowserBack) {
     2989                program.run(program.onBrowserBack);
    29892990            }
    29902991        } else {
  • easycoder/trunk/plugins/rest.js

    r2107932 r2148361  
    8282        },
    8383
     84        createCORSRequest: (method, url) => {
     85            var xhr = new XMLHttpRequest();
     86            if (`withCredentials` in xhr) {
     87       
     88                // Check if the XMLHttpRequest object has a "withCredentials" property.
     89                // "withCredentials" only exists on XMLHTTPRequest2 objects.
     90                xhr.open(method, url, true);
     91       
     92            } else if (typeof XDomainRequest != `undefined`) {
     93       
     94                // Otherwise, check if XDomainRequest.
     95                // XDomainRequest only exists in IE, and is IE's way of making CORS requests.
     96                xhr = new XDomainRequest();
     97                xhr.open(method, url);
     98       
     99            } else {
     100       
     101                // Otherwise, CORS is not supported by the browser.
     102                xhr = null;
     103       
     104            }
     105            return xhr;
     106        },     
     107
    84108        run: (program) => {
    85109            const command = program[program.pc];
    86110            const url = program.getValue(command.url);
    87             const request = new XMLHttpRequest();
     111            const path = url.startsWith(`http`) ? url : `${window.location.origin}/${EasyCoder_Plugins.rest()}/${url}`;
     112
     113            const request = EasyCoder_Rest.Rest.createCORSRequest(command.request, url);
     114            if (!request) {
     115                program.runtimeError(command.lino, `CORS not supported`);
     116                return;
     117            }
    88118            request.command = command;
    89119
     
    114144            };
    115145
    116             const path = url.startsWith(`http`) ? url : `${window.location.origin}/${EasyCoder_Plugins.rest()}/${url}`;
    117146            switch (command.request) {
    118147            case `get`:
  • easycoder/trunk/readme.txt

    r2145506 r2148361  
    5353
    5454== Changelog ==
     55
     56= 2.5.1 30-aug-2019 =
     57* CORS, bug fixes
    5558
    5659= 2.5.0 26-aug-2019 =
Note: See TracChangeset for help on using the changeset viewer.