"use strict";function characters(t){return t.split("")}function member(t,r){return r.indexOf(t)>=0}function find_if(t,r){for(var n=0,e=r.length;n<e;++n)if(t(r[n]))return r[n]}function repeat_string(t,r){if(r<=0)return"";if(1==r)return t;var n=repeat_string(t,r>>1);return n+=n,1&r&&(n+=t),n}function configure_error_stack(t){Object.defineProperty(t.prototype,"stack",{get:function(){var t=new Error(this.message);t.name=this.name;try{throw t}catch(t){return t.stack}}})}function DefaultsError(t,r){this.message=t,this.defs=r}function defaults(t,r,n){!0===t&&(t={});var e=t||{};if(n)for(var i in e)HOP(e,i)&&!HOP(r,i)&&DefaultsError.croak("`"+i+"` is not a supported option",r);for(var i in r)HOP(r,i)&&(e[i]=t&&HOP(t,i)?t[i]:r[i]);return e}function merge(t,r){var n=0;for(var e in r)HOP(r,e)&&(t[e]=r[e],n++);return n}function noop(){}function return_false(){return!1}function return_true(){return!0}function return_this(){return this}function return_null(){return null}DefaultsError.prototype=Object.create(Error.prototype),DefaultsError.prototype.constructor=DefaultsError,DefaultsError.prototype.name="DefaultsError",configure_error_stack(DefaultsError),DefaultsError.croak=function(t,r){throw new DefaultsError(t,r)};var MAP=function(){function t(t,s,u){var o,a=[],f=[];function c(){var c=s(t[o],o),l=c instanceof i;return l&&(c=c.v),c instanceof n?(c=c.v)instanceof e?f.push.apply(f,u?c.v.slice().reverse():c.v):f.push(c):c!==r&&(c instanceof e?a.push.apply(a,u?c.v.slice().reverse():c.v):a.push(c)),l}if(t instanceof Array)if(u){for(o=t.length;--o>=0&&!c(););a.reverse(),f.reverse()}else for(o=0;o<t.length&&!c();++o);else for(o in t)if(HOP(t,o)&&c())break;return f.concat(a)}t.at_top=function(t){return new n(t)},t.splice=function(t){return new e(t)},t.last=function(t){return new i(t)};var r=t.skip={};function n(t){this.v=t}function e(t){this.v=t}function i(t){this.v=t}return t}();function push_uniq(t,r){t.indexOf(r)<0&&t.push(r)}function string_template(t,r){return t.replace(/\{(.+?)\}/g,function(t,n){return r&&r[n]})}function remove(t,r){for(var n=t.length;--n>=0;)t[n]===r&&t.splice(n,1)}function mergeSort(t,r){if(t.length<2)return t.slice();return function t(n){if(n.length<=1)return n;var e=Math.floor(n.length/2),i=n.slice(0,e),s=n.slice(e);return function(t,n){for(var e=[],i=0,s=0,u=0;i<t.length&&s<n.length;)r(t[i],n[s])<=0?e[u++]=t[i++]:e[u++]=n[s++];return i<t.length&&e.push.apply(e,t.slice(i)),s<n.length&&e.push.apply(e,n.slice(s)),e}(i=t(i),s=t(s))}(t)}function makePredicate(t){t instanceof Array||(t=t.split(" "));var r="",n=[];t:for(var e=0;e<t.length;++e){for(var i=0;i<n.length;++i)if(n[i][0].length==t[e].length){n[i].push(t[e]);continue t}n.push([t[e]])}function s(t){return JSON.stringify(t).replace(/[\u2028\u2029]/g,function(t){switch(t){case"\u2028":return"\\u2028";case"\u2029":return"\\u2029"}return t})}function u(t){if(1==t.length)return r+="return str === "+s(t[0])+";";r+="switch(str){";for(var n=0;n<t.length;++n)r+="case "+s(t[n])+":";r+="return true}return false;"}if(n.length>3){n.sort(function(t,r){return r.length-t.length}),r+="switch(str.length){";for(e=0;e<n.length;++e){var o=n[e];r+="case "+o[0].length+":",u(o)}r+="}"}else u(t);return new Function("str",r)}function all(t,r){for(var n=t.length;--n>=0;)if(!r(t[n]))return!1;return!0}function Dictionary(){this._values=Object.create(null),this._size=0}function HOP(t,r){return Object.prototype.hasOwnProperty.call(t,r)}function first_in_statement(t){for(var r,n=t.parent(-1),e=0;r=t.parent(e);e++){if(r instanceof AST_Statement&&r.body===n)return!0;if(!(r instanceof AST_Sequence&&r.expressions[0]===n||"Call"==r.TYPE&&r.expression===n||r instanceof AST_Dot&&r.expression===n||r instanceof AST_Sub&&r.expression===n||r instanceof AST_Conditional&&r.condition===n||r instanceof AST_Binary&&r.left===n||r instanceof AST_UnaryPostfix&&r.expression===n))return!1;n=r}}Dictionary.prototype={set:function(t,r){return this.has(t)||++this._size,this._values["$"+t]=r,this},add:function(t,r){return this.has(t)?this.get(t).push(r):this.set(t,[r]),this},get:function(t){return this._values["$"+t]},del:function(t){return this.has(t)&&(--this._size,delete this._values["$"+t]),this},has:function(t){return"$"+t in this._values},each:function(t){for(var r in this._values)t(this._values[r],r.substr(1))},size:function(){return this._size},map:function(t){var r=[];for(var n in this._values)r.push(t(this._values[n],n.substr(1)));return r},clone:function(){var t=new Dictionary;for(var r in this._values)t._values[r]=this._values[r];return t._size=this._size,t},toObject:function(){return this._values}},Dictionary.fromObject=function(t){var r=new Dictionary;return r._size=merge(r._values,t),r};