1261 lines
39 KiB
JavaScript
1261 lines
39 KiB
JavaScript
var base2 = {
|
|
name: "base2",
|
|
version: "1.0",
|
|
exports: "Base,Package,Abstract,Module,Enumerable,Map,Collection,RegGrp,Undefined,Null,This,True,False,assignID,detect,global",
|
|
namespace: ""
|
|
};
|
|
new
|
|
function(_y) {
|
|
var Undefined = K(),
|
|
Null = K(null),
|
|
True = K(true),
|
|
False = K(false),
|
|
This = function() {
|
|
return this
|
|
};
|
|
var global = This();
|
|
var base2 = global.base2;
|
|
var _z = /%([1-9])/g;
|
|
var _g = /^\s\s*/;
|
|
var _h = /\s\s*$/;
|
|
var _i = /([\/()[\]{}|*+-.,^$?\\])/g;
|
|
var _9 = /try/.test(detect) ? /\bbase\b/: /.*/;
|
|
var _a = ["constructor", "toString", "valueOf"];
|
|
var _j = detect("(jscript)") ? new RegExp("^" + rescape(isNaN).replace(/isNaN/, "\\w+") + "$") : {
|
|
test: False
|
|
};
|
|
var _k = 1;
|
|
var _2 = Array.prototype.slice;
|
|
_5();
|
|
function assignID(a) {
|
|
if (!a.base2ID) a.base2ID = "b2_" + _k++;
|
|
return a.base2ID
|
|
};
|
|
var _b = function(a, b) {
|
|
base2.__prototyping = this.prototype;
|
|
var c = new this;
|
|
if (a) extend(c, a);
|
|
delete base2.__prototyping;
|
|
var e = c.constructor;
|
|
function d() {
|
|
if (!base2.__prototyping) {
|
|
if (this.constructor == arguments.callee || this.__constructing) {
|
|
this.__constructing = true;
|
|
e.apply(this, arguments);
|
|
delete this.__constructing
|
|
} else {
|
|
return extend(arguments[0], c)
|
|
}
|
|
}
|
|
return this
|
|
};
|
|
c.constructor = d;
|
|
for (var f in Base) d[f] = this[f];
|
|
d.ancestor = this;
|
|
d.base = Undefined;
|
|
if (b) extend(d, b);
|
|
d.prototype = c;
|
|
if (d.init) d.init();
|
|
return d
|
|
};
|
|
var Base = _b.call(Object, {
|
|
constructor: function() {
|
|
if (arguments.length > 0) {
|
|
this.extend(arguments[0])
|
|
}
|
|
},
|
|
base: function() {},
|
|
extend: delegate(extend)
|
|
},
|
|
Base = {
|
|
ancestorOf: function(a) {
|
|
return _7(this, a)
|
|
},
|
|
extend: _b,
|
|
forEach: function(a, b, c) {
|
|
_5(this, a, b, c)
|
|
},
|
|
implement: function(a) {
|
|
if (typeof a == "function") {
|
|
a = a.prototype
|
|
}
|
|
extend(this.prototype, a);
|
|
return this
|
|
}
|
|
});
|
|
var Package = Base.extend({
|
|
constructor: function(e, d) {
|
|
this.extend(d);
|
|
if (this.init) this.init();
|
|
if (this.name && this.name != "base2") {
|
|
if (!this.parent) this.parent = base2;
|
|
this.parent.addName(this.name, this);
|
|
this.namespace = format("var %1=%2;", this.name, String2.slice(this, 1, -1))
|
|
}
|
|
if (e) {
|
|
var f = base2.JavaScript ? base2.JavaScript.namespace: "";
|
|
e.imports = Array2.reduce(csv(this.imports),
|
|
function(a, b) {
|
|
var c = h(b) || h("JavaScript." + b);
|
|
return a += c.namespace
|
|
},
|
|
"var base2=(function(){return this.base2})();" + base2.namespace + f) + lang.namespace;
|
|
e.exports = Array2.reduce(csv(this.exports),
|
|
function(a, b) {
|
|
var c = this.name + "." + b;
|
|
this.namespace += "var " + b + "=" + c + ";";
|
|
return a += "if(!" + c + ")" + c + "=" + b + ";"
|
|
},
|
|
"", this) + "this._l" + this.name + "();";
|
|
var g = this;
|
|
var i = String2.slice(this, 1, -1);
|
|
e["_l" + this.name] = function() {
|
|
Package.forEach(g,
|
|
function(a, b) {
|
|
if (a && a.ancestorOf == Base.ancestorOf) {
|
|
a.toString = K(format("[%1.%2]", i, b));
|
|
if (a.prototype.toString == Base.prototype.toString) {
|
|
a.prototype.toString = K(format("[object %1.%2]", i, b))
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
function h(a) {
|
|
a = a.split(".");
|
|
var b = base2,
|
|
c = 0;
|
|
while (b && a[c] != null) {
|
|
b = b[a[c++]]
|
|
}
|
|
return b
|
|
}
|
|
},
|
|
exports: "",
|
|
imports: "",
|
|
name: "",
|
|
namespace: "",
|
|
parent: null,
|
|
addName: function(a, b) {
|
|
if (!this[a]) {
|
|
this[a] = b;
|
|
this.exports += "," + a;
|
|
this.namespace += format("var %1=%2.%1;", a, this.name)
|
|
}
|
|
},
|
|
addPackage: function(a) {
|
|
this.addName(a, new Package(null, {
|
|
name: a,
|
|
parent: this
|
|
}))
|
|
},
|
|
toString: function() {
|
|
return format("[%1]", this.parent ? String2.slice(this.parent, 1, -1) + "." + this.name: this.name)
|
|
}
|
|
});
|
|
var Abstract = Base.extend({
|
|
constructor: function() {
|
|
throw new TypeError("Abstract class cannot be instantiated.");
|
|
}
|
|
});
|
|
var _m = 0;
|
|
var Module = Abstract.extend(null, {
|
|
namespace: "",
|
|
extend: function(a, b) {
|
|
var c = this.base();
|
|
var e = _m++;
|
|
c.namespace = "";
|
|
c.partial = this.partial;
|
|
c.toString = K("[base2.Module[" + e + "]]");
|
|
Module[e] = c;
|
|
c.implement(this);
|
|
if (a) c.implement(a);
|
|
if (b) {
|
|
extend(c, b);
|
|
if (c.init) c.init()
|
|
}
|
|
return c
|
|
},
|
|
forEach: function(c, e) {
|
|
_5(Module, this.prototype,
|
|
function(a, b) {
|
|
if (typeOf(a) == "function") {
|
|
c.call(e, this[b], b, this)
|
|
}
|
|
},
|
|
this)
|
|
},
|
|
implement: function(a) {
|
|
var b = this;
|
|
var c = b.toString().slice(1, -1);
|
|
if (typeof a == "function") {
|
|
if (!_7(a, b)) {
|
|
this.base(a)
|
|
}
|
|
if (_7(Module, a)) {
|
|
for (var e in a) {
|
|
if (b[e] === undefined) {
|
|
var d = a[e];
|
|
if (typeof d == "function" && d.call && a.prototype[e]) {
|
|
d = _n(a, e)
|
|
}
|
|
b[e] = d
|
|
}
|
|
}
|
|
b.namespace += a.namespace.replace(/base2\.Module\[\d+\]/g, c)
|
|
}
|
|
} else {
|
|
extend(b, a);
|
|
_c(b, a)
|
|
}
|
|
return b
|
|
},
|
|
partial: function() {
|
|
var c = Module.extend();
|
|
var e = c.toString().slice(1, -1);
|
|
c.namespace = this.namespace.replace(/(\w+)=b[^\)]+\)/g, "$1=" + e + ".$1");
|
|
this.forEach(function(a, b) {
|
|
c[b] = partial(bind(a, c))
|
|
});
|
|
return c
|
|
}
|
|
});
|
|
function _c(a, b) {
|
|
var c = a.prototype;
|
|
var e = a.toString().slice(1, -1);
|
|
for (var d in b) {
|
|
var f = b[d],
|
|
g = "";
|
|
if (d.charAt(0) == "@") {
|
|
if (detect(d.slice(1))) _c(a, f)
|
|
} else if (!c[d]) {
|
|
if (d == d.toUpperCase()) {
|
|
g = "var " + d + "=" + e + "." + d + ";"
|
|
} else if (typeof f == "function" && f.call) {
|
|
g = "var " + d + "=base2.lang.bind('" + d + "'," + e + ");";
|
|
c[d] = _o(a, d)
|
|
}
|
|
if (a.namespace.indexOf(g) == -1) {
|
|
a.namespace += g
|
|
}
|
|
}
|
|
}
|
|
};
|
|
function _n(a, b) {
|
|
return function() {
|
|
return a[b].apply(a, arguments)
|
|
}
|
|
};
|
|
function _o(b, c) {
|
|
return function() {
|
|
var a = _2.call(arguments);
|
|
a.unshift(this);
|
|
return b[c].apply(b, a)
|
|
}
|
|
};
|
|
var Enumerable = Module.extend({
|
|
every: function(c, e, d) {
|
|
var f = true;
|
|
try {
|
|
forEach(c,
|
|
function(a, b) {
|
|
f = e.call(d, a, b, c);
|
|
if (!f) throw StopIteration;
|
|
})
|
|
} catch(error) {
|
|
if (error != StopIteration) throw error;
|
|
}
|
|
return !! f
|
|
},
|
|
filter: function(e, d, f) {
|
|
var g = 0;
|
|
return this.reduce(e,
|
|
function(a, b, c) {
|
|
if (d.call(f, b, c, e)) {
|
|
a[g++] = b
|
|
}
|
|
return a
|
|
},
|
|
[])
|
|
},
|
|
invoke: function(b, c) {
|
|
var e = _2.call(arguments, 2);
|
|
return this.map(b, (typeof c == "function") ?
|
|
function(a) {
|
|
return a == null ? undefined: c.apply(a, e)
|
|
}: function(a) {
|
|
return a == null ? undefined: a[c].apply(a, e)
|
|
})
|
|
},
|
|
map: function(c, e, d) {
|
|
var f = [],
|
|
g = 0;
|
|
forEach(c,
|
|
function(a, b) {
|
|
f[g++] = e.call(d, a, b, c)
|
|
});
|
|
return f
|
|
},
|
|
pluck: function(b, c) {
|
|
return this.map(b,
|
|
function(a) {
|
|
return a == null ? undefined: a[c]
|
|
})
|
|
},
|
|
reduce: function(c, e, d, f) {
|
|
var g = arguments.length > 2;
|
|
forEach(c,
|
|
function(a, b) {
|
|
if (g) {
|
|
d = e.call(f, d, a, b, c)
|
|
} else {
|
|
d = a;
|
|
g = true
|
|
}
|
|
});
|
|
return d
|
|
},
|
|
some: function(a, b, c) {
|
|
return ! this.every(a, not(b), c)
|
|
}
|
|
});
|
|
var _1 = "#";
|
|
var Map = Base.extend({
|
|
constructor: function(a) {
|
|
if (a) this.merge(a)
|
|
},
|
|
clear: function() {
|
|
for (var a in this) if (a.indexOf(_1) == 0) {
|
|
delete this[a]
|
|
}
|
|
},
|
|
copy: function() {
|
|
base2.__prototyping = true;
|
|
var a = new this.constructor;
|
|
delete base2.__prototyping;
|
|
for (var b in this) if (this[b] !== a[b]) {
|
|
a[b] = this[b]
|
|
}
|
|
return a
|
|
},
|
|
forEach: function(a, b) {
|
|
for (var c in this) if (c.indexOf(_1) == 0) {
|
|
a.call(b, this[c], c.slice(1), this)
|
|
}
|
|
},
|
|
get: function(a) {
|
|
return this[_1 + a]
|
|
},
|
|
getKeys: function() {
|
|
return this.map(II)
|
|
},
|
|
getValues: function() {
|
|
return this.map(I)
|
|
},
|
|
has: function(a) {
|
|
/*@cc_on @*/
|
|
/*@if(@_jscript_version<5.5)return $Legacy.has(this,_1+a);@else @*/
|
|
return _1 + a in this;
|
|
/*@end @*/
|
|
},
|
|
merge: function(b) {
|
|
var c = flip(this.put);
|
|
forEach(arguments,
|
|
function(a) {
|
|
forEach(a, c, this)
|
|
},
|
|
this);
|
|
return this
|
|
},
|
|
put: function(a, b) {
|
|
this[_1 + a] = b
|
|
},
|
|
remove: function(a) {
|
|
delete this[_1 + a]
|
|
},
|
|
size: function() {
|
|
var a = 0;
|
|
for (var b in this) if (b.indexOf(_1) == 0) a++;
|
|
return a
|
|
},
|
|
union: function(a) {
|
|
return this.merge.apply(this.copy(), arguments)
|
|
}
|
|
});
|
|
Map.implement(Enumerable);
|
|
Map.prototype.filter = function(e, d) {
|
|
return this.reduce(function(a, b, c) {
|
|
if (!e.call(d, b, c, this)) {
|
|
a.remove(c)
|
|
}
|
|
return a
|
|
},
|
|
this.copy(), this)
|
|
};
|
|
var _0 = "~";
|
|
var Collection = Map.extend({
|
|
constructor: function(a) {
|
|
this[_0] = new Array2;
|
|
this.base(a)
|
|
},
|
|
add: function(a, b) {
|
|
assert(!this.has(a), "Duplicate key '" + a + "'.");
|
|
this.put.apply(this, arguments)
|
|
},
|
|
clear: function() {
|
|
this.base();
|
|
this[_0].length = 0
|
|
},
|
|
copy: function() {
|
|
var a = this.base();
|
|
a[_0] = this[_0].copy();
|
|
return a
|
|
},
|
|
forEach: function(a, b) {
|
|
var c = this[_0];
|
|
var e = c.length;
|
|
for (var d = 0; d < e; d++) {
|
|
a.call(b, this[_1 + c[d]], c[d], this)
|
|
}
|
|
},
|
|
getAt: function(a) {
|
|
var b = this[_0].item(a);
|
|
return (b === undefined) ? undefined: this[_1 + b]
|
|
},
|
|
getKeys: function() {
|
|
return this[_0].copy()
|
|
},
|
|
indexOf: function(a) {
|
|
return this[_0].indexOf(String(a))
|
|
},
|
|
insertAt: function(a, b, c) {
|
|
assert(this[_0].item(a) !== undefined, "Index out of bounds.");
|
|
assert(!this.has(b), "Duplicate key '" + b + "'.");
|
|
this[_0].insertAt(a, String(b));
|
|
this[_1 + b] = null;
|
|
this.put.apply(this, _2.call(arguments, 1))
|
|
},
|
|
item: function(a) {
|
|
return this[typeof a == "number" ? "getAt": "get"](a)
|
|
},
|
|
put: function(a, b) {
|
|
if (!this.has(a)) {
|
|
this[_0].push(String(a))
|
|
}
|
|
var c = this.constructor;
|
|
if (c.Item && !instanceOf(b, c.Item)) {
|
|
b = c.create.apply(c, arguments)
|
|
}
|
|
this[_1 + a] = b
|
|
},
|
|
putAt: function(a, b) {
|
|
arguments[0] = this[_0].item(a);
|
|
assert(arguments[0] !== undefined, "Index out of bounds.");
|
|
this.put.apply(this, arguments)
|
|
},
|
|
remove: function(a) {
|
|
if (this.has(a)) {
|
|
this[_0].remove(String(a));
|
|
delete this[_1 + a]
|
|
}
|
|
},
|
|
removeAt: function(a) {
|
|
var b = this[_0].item(a);
|
|
if (b !== undefined) {
|
|
this[_0].removeAt(a);
|
|
delete this[_1 + b]
|
|
}
|
|
},
|
|
reverse: function() {
|
|
this[_0].reverse();
|
|
return this
|
|
},
|
|
size: function() {
|
|
return this[_0].length
|
|
},
|
|
slice: function(a, b) {
|
|
var c = this.copy();
|
|
if (arguments.length > 0) {
|
|
var e = this[_0],
|
|
d = e;
|
|
c[_0] = Array2(_2.apply(e, arguments));
|
|
if (c[_0].length) {
|
|
d = d.slice(0, a);
|
|
if (arguments.length > 1) {
|
|
d = d.concat(e.slice(b))
|
|
}
|
|
}
|
|
for (var f = 0; f < d.length; f++) {
|
|
delete c[_1 + d[f]]
|
|
}
|
|
}
|
|
return c
|
|
},
|
|
sort: function(c) {
|
|
if (c) {
|
|
this[_0].sort(bind(function(a, b) {
|
|
return c(this[_1 + a], this[_1 + b], a, b)
|
|
},
|
|
this))
|
|
} else this[_0].sort();
|
|
return this
|
|
},
|
|
toString: function() {
|
|
return "(" + (this[_0] || "") + ")"
|
|
}
|
|
},
|
|
{
|
|
Item: null,
|
|
create: function(a, b) {
|
|
return this.Item ? new this.Item(a, b) : b
|
|
},
|
|
extend: function(a, b) {
|
|
var c = this.base(a);
|
|
c.create = this.create;
|
|
if (b) extend(c, b);
|
|
if (!c.Item) {
|
|
c.Item = this.Item
|
|
} else if (typeof c.Item != "function") {
|
|
c.Item = (this.Item || Base).extend(c.Item)
|
|
}
|
|
if (c.init) c.init();
|
|
return c
|
|
}
|
|
});
|
|
var _p = /\\(\d+)/g,
|
|
_q = /\\./g,
|
|
_r = /\(\?[:=!]|\[[^\]]+\]/g,
|
|
_s = /\(/g,
|
|
_t = /\$(\d+)/,
|
|
_u = /^\$\d+$/;
|
|
var RegGrp = Collection.extend({
|
|
constructor: function(a, b) {
|
|
this.base(a);
|
|
this.ignoreCase = !!b
|
|
},
|
|
ignoreCase: false,
|
|
exec: function(g, i) {
|
|
g += "";
|
|
var h = this,
|
|
j = this[_0];
|
|
if (!j.length) return g;
|
|
if (i == RegGrp.IGNORE) i = 0;
|
|
return g.replace(new RegExp(this, this.ignoreCase ? "gi": "g"),
|
|
function(a) {
|
|
var b, c = 1,
|
|
e = 0;
|
|
while ((b = h[_1 + j[e++]])) {
|
|
var d = c + b.length + 1;
|
|
if (arguments[c]) {
|
|
var f = i == null ? b.replacement: i;
|
|
switch (typeof f) {
|
|
case "function":
|
|
return f.apply(h, _2.call(arguments, c, d));
|
|
case "number":
|
|
return arguments[c + f];
|
|
default:
|
|
return f
|
|
}
|
|
}
|
|
c = d
|
|
}
|
|
return a
|
|
})
|
|
},
|
|
insertAt: function(a, b, c) {
|
|
if (instanceOf(b, RegExp)) {
|
|
arguments[1] = b.source
|
|
}
|
|
return base(this, arguments)
|
|
},
|
|
test: function(a) {
|
|
return this.exec(a) != a
|
|
},
|
|
toString: function() {
|
|
var d = 1;
|
|
return "(" + this.map(function(c) {
|
|
var e = (c + "").replace(_p,
|
|
function(a, b) {
|
|
return "\\" + (d + Number(b))
|
|
});
|
|
d += c.length + 1;
|
|
return e
|
|
}).join(")|(") + ")"
|
|
}
|
|
},
|
|
{
|
|
IGNORE: "$0",
|
|
init: function() {
|
|
forEach("add,get,has,put,remove".split(","),
|
|
function(b) {
|
|
_8(this, b,
|
|
function(a) {
|
|
if (instanceOf(a, RegExp)) {
|
|
arguments[0] = a.source
|
|
}
|
|
return base(this, arguments)
|
|
})
|
|
},
|
|
this.prototype)
|
|
},
|
|
Item: {
|
|
constructor: function(a, b) {
|
|
if (b == null) b = RegGrp.IGNORE;
|
|
else if (b.replacement != null) b = b.replacement;
|
|
else if (typeof b != "function") b = String(b);
|
|
if (typeof b == "string" && _t.test(b)) {
|
|
if (_u.test(b)) {
|
|
b = parseInt(b.slice(1))
|
|
} else {
|
|
var c = '"';
|
|
b = b.replace(/\\/g, "\\\\").replace(/"/g, "\\x22").replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\$(\d+)/g, c + "+(arguments[$1]||" + c + c + ")+" + c).replace(/(['"])\1\+(.*)\+\1\1$/, "$1");
|
|
b = new Function("return " + c + b + c)
|
|
}
|
|
}
|
|
this.length = RegGrp.count(a);
|
|
this.replacement = b;
|
|
this.toString = K(a + "")
|
|
},
|
|
length: 0,
|
|
replacement: ""
|
|
},
|
|
count: function(a) {
|
|
a = (a + "").replace(_q, "").replace(_r, "");
|
|
return match(a, _s).length
|
|
}
|
|
});
|
|
var lang = {
|
|
name: "lang",
|
|
version: base2.version,
|
|
exports: "assert,assertArity,assertType,base,bind,copy,extend,forEach,format,instanceOf,match,pcopy,rescape,trim,typeOf",
|
|
namespace: ""
|
|
};
|
|
function assert(a, b, c) {
|
|
if (!a) {
|
|
throw new(c || Error)(b || "Assertion failed.");
|
|
}
|
|
};
|
|
function assertArity(a, b, c) {
|
|
if (b == null) b = a.callee.length;
|
|
if (a.length < b) {
|
|
throw new SyntaxError(c || "Not enough arguments.");
|
|
}
|
|
};
|
|
function assertType(a, b, c) {
|
|
if (b && (typeof b == "function" ? !instanceOf(a, b) : typeOf(a) != b)) {
|
|
throw new TypeError(c || "Invalid type.");
|
|
}
|
|
};
|
|
function copy(a) {
|
|
var b = {};
|
|
for (var c in a) {
|
|
b[c] = a[c]
|
|
}
|
|
return b
|
|
};
|
|
function pcopy(a) {
|
|
_d.prototype = a;
|
|
return new _d
|
|
};
|
|
function _d() {};
|
|
function base(a, b) {
|
|
return a.base.apply(a, b)
|
|
};
|
|
function extend(a, b) {
|
|
if (a && b) {
|
|
if (arguments.length > 2) {
|
|
var c = b;
|
|
b = {};
|
|
b[c] = arguments[2]
|
|
}
|
|
var e = global[(typeof b == "function" ? "Function": "Object")].prototype;
|
|
if (base2.__prototyping) {
|
|
var d = _a.length,
|
|
c;
|
|
while ((c = _a[--d])) {
|
|
var f = b[c];
|
|
if (f != e[c]) {
|
|
if (_9.test(f)) {
|
|
_8(a, c, f)
|
|
} else {
|
|
a[c] = f
|
|
}
|
|
}
|
|
}
|
|
}
|
|
for (c in b) {
|
|
if (e[c] === undefined) {
|
|
var f = b[c];
|
|
if (c.charAt(0) == "@") {
|
|
if (detect(c.slice(1))) extend(a, f)
|
|
} else {
|
|
var g = a[c];
|
|
if (g && typeof f == "function") {
|
|
if (f != g) {
|
|
if (_9.test(f)) {
|
|
_8(a, c, f)
|
|
} else {
|
|
f.ancestor = g;
|
|
a[c] = f
|
|
}
|
|
}
|
|
} else {
|
|
a[c] = f
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return a
|
|
};
|
|
function _7(a, b) {
|
|
while (b) {
|
|
if (!b.ancestor) return false;
|
|
b = b.ancestor;
|
|
if (b == a) return true
|
|
}
|
|
return false
|
|
};
|
|
function _8(c, e, d) {
|
|
var f = c[e];
|
|
var g = base2.__prototyping;
|
|
if (g && f != g[e]) g = null;
|
|
function i() {
|
|
var a = this.base;
|
|
this.base = g ? g[e] : f;
|
|
var b = d.apply(this, arguments);
|
|
this.base = a;
|
|
return b
|
|
};
|
|
i.method = d;
|
|
i.ancestor = f;
|
|
c[e] = i
|
|
};
|
|
if (typeof StopIteration == "undefined") {
|
|
StopIteration = new Error("StopIteration")
|
|
}
|
|
function forEach(a, b, c, e) {
|
|
if (a == null) return;
|
|
if (!e) {
|
|
if (typeof a == "function" && a.call) {
|
|
e = Function
|
|
} else if (typeof a.forEach == "function" && a.forEach != arguments.callee) {
|
|
a.forEach(b, c);
|
|
return
|
|
} else if (typeof a.length == "number") {
|
|
_e(a, b, c);
|
|
return
|
|
}
|
|
}
|
|
_5(e || Object, a, b, c)
|
|
};
|
|
forEach.csv = function(a, b, c) {
|
|
forEach(csv(a), b, c)
|
|
};
|
|
forEach.detect = function(c, e, d) {
|
|
forEach(c,
|
|
function(a, b) {
|
|
if (b.charAt(0) == "@") {
|
|
if (detect(b.slice(1))) forEach(a, arguments.callee)
|
|
} else e.call(d, a, b, c)
|
|
})
|
|
};
|
|
function _e(a, b, c) {
|
|
if (a == null) a = global;
|
|
var e = a.length || 0,
|
|
d;
|
|
if (typeof a == "string") {
|
|
for (d = 0; d < e; d++) {
|
|
b.call(c, a.charAt(d), d, a)
|
|
}
|
|
} else {
|
|
for (d = 0; d < e; d++) {
|
|
/*@cc_on @*/
|
|
/*@if(@_jscript_version<5.2)if($Legacy.has(a,d))@else @*/
|
|
if (d in a)
|
|
/*@end @*/
|
|
b.call(c, a[d], d, a)
|
|
}
|
|
}
|
|
};
|
|
function _5(g, i, h, j) {
|
|
var k = function() {
|
|
this.i = 1
|
|
};
|
|
k.prototype = {
|
|
i: 1
|
|
};
|
|
var l = 0;
|
|
for (var m in new k) l++;
|
|
_5 = (l > 1) ?
|
|
function(a, b, c, e) {
|
|
var d = {};
|
|
for (var f in b) {
|
|
if (!d[f] && a.prototype[f] === undefined) {
|
|
d[f] = true;
|
|
c.call(e, b[f], f, b)
|
|
}
|
|
}
|
|
}: function(a, b, c, e) {
|
|
for (var d in b) {
|
|
if (a.prototype[d] === undefined) {
|
|
c.call(e, b[d], d, b)
|
|
}
|
|
}
|
|
};
|
|
_5(g, i, h, j)
|
|
};
|
|
function instanceOf(a, b) {
|
|
if (typeof b != "function") {
|
|
throw new TypeError("Invalid 'instanceOf' operand.");
|
|
}
|
|
if (a == null) return false;
|
|
/*@cc_on if(typeof a.constructor!="function"){return typeOf(a)==typeof b.prototype.valueOf()}@*/
|
|
if (a.constructor == b) return true;
|
|
if (b.ancestorOf) return b.ancestorOf(a.constructor);
|
|
/*@if(@_jscript_version<5.1)@else @*/
|
|
if (a instanceof b) return true;
|
|
/*@end @*/
|
|
if (Base.ancestorOf == b.ancestorOf) return false;
|
|
if (Base.ancestorOf == a.constructor.ancestorOf) return b == Object;
|
|
switch (b) {
|
|
case Array:
|
|
return !! (typeof a == "object" && a.join && a.splice);
|
|
case Function:
|
|
return typeOf(a) == "function";
|
|
case RegExp:
|
|
return typeof a.constructor.$1 == "string";
|
|
case Date:
|
|
return !! a.getTimezoneOffset;
|
|
case String:
|
|
case Number:
|
|
case Boolean:
|
|
return typeOf(a) == typeof b.prototype.valueOf();
|
|
case Object:
|
|
return true
|
|
}
|
|
return false
|
|
};
|
|
function typeOf(a) {
|
|
var b = typeof a;
|
|
switch (b) {
|
|
case "object":
|
|
return a == null ? "null": typeof a.constructor == "undefined" ? _j.test(a) ? "function": b: typeof a.constructor.prototype.valueOf();
|
|
case "function":
|
|
return typeof a.call == "function" ? b: "object";
|
|
default:
|
|
return b
|
|
}
|
|
};
|
|
var JavaScript = {
|
|
name: "JavaScript",
|
|
version: base2.version,
|
|
exports: "Array2,Date2,Function2,String2",
|
|
namespace: "",
|
|
bind: function(c) {
|
|
var e = global;
|
|
global = c;
|
|
forEach.csv(this.exports,
|
|
function(a) {
|
|
var b = a.slice(0, -1);
|
|
extend(c[b], this[a]);
|
|
this[a](c[b].prototype)
|
|
},
|
|
this);
|
|
global = e;
|
|
return c
|
|
}
|
|
};
|
|
function _6(b, c, e, d) {
|
|
var f = Module.extend();
|
|
var g = f.toString().slice(1, -1);
|
|
forEach.csv(e,
|
|
function(a) {
|
|
f[a] = unbind(b.prototype[a]);
|
|
f.namespace += format("var %1=%2.%1;", a, g)
|
|
});
|
|
forEach(_2.call(arguments, 3), f.implement, f);
|
|
var i = function() {
|
|
return f(this.constructor == f ? c.apply(null, arguments) : arguments[0])
|
|
};
|
|
i.prototype = f.prototype;
|
|
for (var h in f) {
|
|
if (h != "prototype" && b[h]) {
|
|
f[h] = b[h];
|
|
delete f.prototype[h]
|
|
}
|
|
i[h] = f[h]
|
|
}
|
|
i.ancestor = Object;
|
|
delete i.extend;
|
|
i.namespace = i.namespace.replace(/(var (\w+)=)[^,;]+,([^\)]+)\)/g, "$1$3.$2");
|
|
return i
|
|
};
|
|
if ((new Date).getYear() > 1900) {
|
|
Date.prototype.getYear = function() {
|
|
return this.getFullYear() - 1900
|
|
};
|
|
Date.prototype.setYear = function(a) {
|
|
return this.setFullYear(a + 1900)
|
|
}
|
|
}
|
|
var _f = new Date(Date.UTC(2006, 1, 20));
|
|
_f.setUTCDate(15);
|
|
if (_f.getUTCHours() != 0) {
|
|
forEach.csv("FullYear,Month,Date,Hours,Minutes,Seconds,Milliseconds",
|
|
function(b) {
|
|
extend(Date.prototype, "setUTC" + b,
|
|
function() {
|
|
var a = base(this, arguments);
|
|
if (a >= 57722401000) {
|
|
a -= 3600000;
|
|
this.setTime(a)
|
|
}
|
|
return a
|
|
})
|
|
})
|
|
}
|
|
Function.prototype.prototype = {};
|
|
if ("".replace(/^/, K("$$")) == "$") {
|
|
extend(String.prototype, "replace",
|
|
function(a, b) {
|
|
if (typeof b == "function") {
|
|
var c = b;
|
|
b = function() {
|
|
return String(c.apply(null, arguments)).split("$").join("$$")
|
|
}
|
|
}
|
|
return this.base(a, b)
|
|
})
|
|
}
|
|
var Array2 = _6(Array, Array, "concat,join,pop,push,reverse,shift,slice,sort,splice,unshift", Enumerable, {
|
|
combine: function(e, d) {
|
|
if (!d) d = e;
|
|
return Array2.reduce(e,
|
|
function(a, b, c) {
|
|
a[b] = d[c];
|
|
return a
|
|
},
|
|
{})
|
|
},
|
|
contains: function(a, b) {
|
|
return Array2.indexOf(a, b) != -1
|
|
},
|
|
copy: function(a) {
|
|
var b = _2.call(a);
|
|
if (!b.swap) Array2(b);
|
|
return b
|
|
},
|
|
flatten: function(c) {
|
|
var e = 0;
|
|
return Array2.reduce(c,
|
|
function(a, b) {
|
|
if (Array2.like(b)) {
|
|
Array2.reduce(b, arguments.callee, a)
|
|
} else {
|
|
a[e++] = b
|
|
}
|
|
return a
|
|
},
|
|
[])
|
|
},
|
|
forEach: _e,
|
|
indexOf: function(a, b, c) {
|
|
var e = a.length;
|
|
if (c == null) {
|
|
c = 0
|
|
} else if (c < 0) {
|
|
c = Math.max(0, e + c)
|
|
}
|
|
for (var d = c; d < e; d++) {
|
|
if (a[d] === b) return d
|
|
}
|
|
return - 1
|
|
},
|
|
insertAt: function(a, b, c) {
|
|
Array2.splice(a, b, 0, c);
|
|
return c
|
|
},
|
|
item: function(a, b) {
|
|
if (b < 0) b += a.length;
|
|
return a[b]
|
|
},
|
|
lastIndexOf: function(a, b, c) {
|
|
var e = a.length;
|
|
if (c == null) {
|
|
c = e - 1
|
|
} else if (c < 0) {
|
|
c = Math.max(0, e + c)
|
|
}
|
|
for (var d = c; d >= 0; d--) {
|
|
if (a[d] === b) return d
|
|
}
|
|
return - 1
|
|
},
|
|
map: function(c, e, d) {
|
|
var f = [];
|
|
Array2.forEach(c,
|
|
function(a, b) {
|
|
f[b] = e.call(d, a, b, c)
|
|
});
|
|
return f
|
|
},
|
|
remove: function(a, b) {
|
|
var c = Array2.indexOf(a, b);
|
|
if (c != -1) Array2.removeAt(a, c)
|
|
},
|
|
removeAt: function(a, b) {
|
|
Array2.splice(a, b, 1)
|
|
},
|
|
swap: function(a, b, c) {
|
|
if (b < 0) b += a.length;
|
|
if (c < 0) c += a.length;
|
|
var e = a[b];
|
|
a[b] = a[c];
|
|
a[c] = e;
|
|
return a
|
|
}
|
|
});
|
|
Array2.reduce = Enumerable.reduce;
|
|
Array2.like = function(a) {
|
|
return typeOf(a) == "object" && typeof a.length == "number"
|
|
};
|
|
var _v = /^((-\d+|\d{4,})(-(\d{2})(-(\d{2}))?)?)?T((\d{2})(:(\d{2})(:(\d{2})(\.(\d{1,3})(\d)?\d*)?)?)?)?(([+-])(\d{2})(:(\d{2}))?|Z)?$/;
|
|
var _4 = {
|
|
FullYear: 2,
|
|
Month: 4,
|
|
Date: 6,
|
|
Hours: 8,
|
|
Minutes: 10,
|
|
Seconds: 12,
|
|
Milliseconds: 14
|
|
};
|
|
var _3 = {
|
|
Hectomicroseconds: 15,
|
|
UTC: 16,
|
|
Sign: 17,
|
|
Hours: 18,
|
|
Minutes: 20
|
|
};
|
|
var _w = /(((00)?:0+)?:0+)?\.0+$/;
|
|
var _x = /(T[0-9:.]+)$/;
|
|
var Date2 = _6(Date,
|
|
function(a, b, c, e, d, f, g) {
|
|
switch (arguments.length) {
|
|
case 0:
|
|
return new Date;
|
|
case 1:
|
|
return typeof a == "number" ? new Date(a) : Date2.parse(a);
|
|
default:
|
|
return new Date(a, b, arguments.length == 2 ? 1 : c, e || 0, d || 0, f || 0, g || 0)
|
|
}
|
|
},
|
|
"", {
|
|
toISOString: function(c) {
|
|
var e = "####-##-##T##:##:##.###";
|
|
for (var d in _4) {
|
|
e = e.replace(/#+/,
|
|
function(a) {
|
|
var b = c["getUTC" + d]();
|
|
if (d == "Month") b++;
|
|
return ("000" + b).slice( - a.length)
|
|
})
|
|
}
|
|
return e.replace(_w, "").replace(_x, "$1Z")
|
|
}
|
|
});
|
|
delete Date2.forEach;
|
|
Date2.now = function() {
|
|
return (new Date).valueOf()
|
|
};
|
|
Date2.parse = function(a, b) {
|
|
if (arguments.length > 1) {
|
|
assertType(b, "number", "default date should be of type 'number'.")
|
|
}
|
|
var c = match(a, _v);
|
|
if (c.length) {
|
|
if (c[_4.Month]) c[_4.Month]--;
|
|
if (c[_3.Hectomicroseconds] >= 5) c[_4.Milliseconds]++;
|
|
var e = new Date(b || 0);
|
|
var d = c[_3.UTC] || c[_3.Hours] ? "UTC": "";
|
|
for (var f in _4) {
|
|
var g = c[_4[f]];
|
|
if (!g) continue;
|
|
e["set" + d + f](g);
|
|
if (e["get" + d + f]() != c[_4[f]]) {
|
|
return NaN
|
|
}
|
|
}
|
|
if (c[_3.Hours]) {
|
|
var i = Number(c[_3.Sign] + c[_3.Hours]);
|
|
var h = Number(c[_3.Sign] + (c[_3.Minutes] || 0));
|
|
e.setUTCMinutes(e.getUTCMinutes() + (i * 60) + h)
|
|
}
|
|
return e.valueOf()
|
|
} else {
|
|
return Date.parse(a)
|
|
}
|
|
};
|
|
var String2 = _6(String,
|
|
function(a) {
|
|
return new String(arguments.length == 0 ? "": a)
|
|
},
|
|
"charAt,charCodeAt,concat,indexOf,lastIndexOf,match,replace,search,slice,split,substr,substring,toLowerCase,toUpperCase", {
|
|
csv: csv,
|
|
format: format,
|
|
rescape: rescape,
|
|
trim: trim
|
|
});
|
|
delete String2.forEach;
|
|
function trim(a) {
|
|
return String(a).replace(_g, "").replace(_h, "")
|
|
};
|
|
function csv(a) {
|
|
return a ? (a + "").split(/\s*,\s*/) : []
|
|
};
|
|
function format(c) {
|
|
var e = arguments;
|
|
var d = new RegExp("%([1-" + (arguments.length - 1) + "])", "g");
|
|
return (c + "").replace(d,
|
|
function(a, b) {
|
|
return e[b]
|
|
})
|
|
};
|
|
function match(a, b) {
|
|
return (a + "").match(b) || []
|
|
};
|
|
function rescape(a) {
|
|
return (a + "").replace(_i, "\\$1")
|
|
};
|
|
var Function2 = _6(Function, Function, "", {
|
|
I: I,
|
|
II: II,
|
|
K: K,
|
|
bind: bind,
|
|
compose: compose,
|
|
delegate: delegate,
|
|
flip: flip,
|
|
not: not,
|
|
partial: partial,
|
|
unbind: unbind
|
|
});
|
|
function I(a) {
|
|
return a
|
|
};
|
|
function II(a, b) {
|
|
return b
|
|
};
|
|
function K(a) {
|
|
return function() {
|
|
return a
|
|
}
|
|
};
|
|
function bind(a, b) {
|
|
var c = typeof a != "function";
|
|
if (arguments.length > 2) {
|
|
var e = _2.call(arguments, 2);
|
|
return function() {
|
|
return (c ? b[a] : a).apply(b, e.concat.apply(e, arguments))
|
|
}
|
|
} else {
|
|
return function() {
|
|
return (c ? b[a] : a).apply(b, arguments)
|
|
}
|
|
}
|
|
};
|
|
function compose() {
|
|
var c = _2.call(arguments);
|
|
return function() {
|
|
var a = c.length,
|
|
b = c[--a].apply(this, arguments);
|
|
while (a--) b = c[a].call(this, b);
|
|
return b
|
|
}
|
|
};
|
|
function delegate(b, c) {
|
|
return function() {
|
|
var a = _2.call(arguments);
|
|
a.unshift(this);
|
|
return b.apply(c, a)
|
|
}
|
|
};
|
|
function flip(a) {
|
|
return function() {
|
|
return a.apply(this, Array2.swap(arguments, 0, 1))
|
|
}
|
|
};
|
|
function not(a) {
|
|
return function() {
|
|
return ! a.apply(this, arguments)
|
|
}
|
|
};
|
|
function partial(e) {
|
|
var d = _2.call(arguments, 1);
|
|
return function() {
|
|
var a = d.concat(),
|
|
b = 0,
|
|
c = 0;
|
|
while (b < d.length && c < arguments.length) {
|
|
if (a[b] === undefined) a[b] = arguments[c++];
|
|
b++
|
|
}
|
|
while (c < arguments.length) {
|
|
a[b++] = arguments[c++]
|
|
}
|
|
if (Array2.contains(a, undefined)) {
|
|
a.unshift(e);
|
|
return partial.apply(null, a)
|
|
}
|
|
return e.apply(this, a)
|
|
}
|
|
};
|
|
function unbind(b) {
|
|
return function(a) {
|
|
return b.apply(a, _2.call(arguments, 1))
|
|
}
|
|
};
|
|
function detect() {
|
|
var d = NaN
|
|
/*@cc_on||@_jscript_version@*/
|
|
;
|
|
var f = global.java ? true: false;
|
|
if (global.navigator) {
|
|
var g = /MSIE[\d.]+/g;
|
|
var i = document.createElement("span");
|
|
var h = navigator.userAgent.replace(/([a-z])[\s\/](\d)/gi, "$1$2");
|
|
if (!d) h = h.replace(g, "");
|
|
if (g.test(h)) h = h.match(g)[0] + " " + h.replace(g, "");
|
|
base2.userAgent = navigator.platform + " " + h.replace(/like \w+/gi, "");
|
|
f &= navigator.javaEnabled()
|
|
}
|
|
var j = {};
|
|
detect = function(a) {
|
|
if (j[a] == null) {
|
|
var b = false,
|
|
c = a;
|
|
var e = c.charAt(0) == "!";
|
|
if (e) c = c.slice(1);
|
|
if (c.charAt(0) == "(") {
|
|
try {
|
|
b = new Function("element,jscript,java,global", "return !!" + c)(i, d, f, global)
|
|
} catch(ex) {}
|
|
} else {
|
|
b = new RegExp("(" + c + ")", "i").test(base2.userAgent)
|
|
}
|
|
j[a] = !!(e ^ b)
|
|
}
|
|
return j[a]
|
|
};
|
|
return detect(arguments[0])
|
|
};
|
|
base2 = global.base2 = new Package(this, base2);
|
|
var exports = this.exports;
|
|
lang = new Package(this, lang);
|
|
exports += this.exports;
|
|
JavaScript = new Package(this, JavaScript);
|
|
eval(exports + this.exports);
|
|
lang.base = base;
|
|
lang.extend = extend
|
|
};
|
|
|
|
new function(){new base2.Package(this,{imports:"Function2,Enumerable"});eval(this.imports);var i=RegGrp.IGNORE;var S="~";var A="";var F=" ";var p=RegGrp.extend({put:function(a,c){if(typeOf(a)=="string"){a=p.dictionary.exec(a)}this.base(a,c)}},{dictionary:new RegGrp({OPERATOR:/return|typeof|[\[(\^=,{}:;&|!*?]/.source,CONDITIONAL:/\/\*@\w*|\w*@\*\/|\/\/@\w*|@\w+/.source,COMMENT1:/\/\/[^\n]*/.source,COMMENT2:/\/\*[^*]*\*+([^\/][^*]*\*+)*\//.source,REGEXP:/\/(\\[\/\\]|[^*\/])(\\.|[^\/\n\\])*\/[gim]*/.source,STRING1:/'(\\.|[^'\\])*'/.source,STRING2:/"(\\.|[^"\\])*"/.source})});var B=Collection.extend({add:function(a){if(!this.has(a))this.base(a);a=this.get(a);if(!a.index){a.index=this.size()}a.count++;return a},sort:function(d){return this.base(d||function(a,c){return(c.count-a.count)||(a.index-c.index)})}},{Item:{constructor:function(a){this.toString=K(a)},index:0,count:0,encoded:""}});var v=Base.extend({constructor:function(a,c,d){this.parser=new p(d);if(a)this.parser.put(a,"");this.encoder=c},parser:null,encoder:Undefined,search:function(c){var d=new B;this.parser.putAt(-1,function(a){d.add(a)});this.parser.exec(c);return d},encode:function(c){var d=this.search(c);d.sort();var b=0;forEach(d,function(a){a.encoded=this.encoder(b++)},this);this.parser.putAt(-1,function(a){return d.get(a).encoded});return this.parser.exec(c)}});var w=v.extend({constructor:function(){return this.base(w.PATTERN,function(a){return"_"+Packer.encode62(a)},w.IGNORE)}},{IGNORE:{CONDITIONAL:i,"(OPERATOR)(REGEXP)":i},PATTERN:/\b_[\da-zA-Z$][\w$]*\b/g});var q=v.extend({encode:function(d){var b=this.search(d);b.sort();var f=new Collection;var e=b.size();for(var h=0;h<e;h++){f.put(Packer.encode62(h),h)}function C(a){return b["#"+a].replacement};var k=K("");var l=0;forEach(b,function(a){if(f.has(a)){a.index=f.get(a);a.toString=k}else{while(b.has(Packer.encode62(l)))l++;a.index=l++;if(a.count==1){a.toString=k}}a.replacement=Packer.encode62(a.index);if(a.replacement.length==a.toString().length){a.toString=k}});b.sort(function(a,c){return a.index-c.index});b=b.slice(0,this.getKeyWords(b).split("|").length);d=d.replace(this.getPattern(b),C);var r=this.escape(d);var m="[]";var t=this.getCount(b);var g=this.getKeyWords(b);var n=this.getEncoder(b);var u=this.getDecoder(b);return format(q.UNPACK,r,m,t,g,n,u)},search:function(a){var c=new B;forEach(a.match(q.WORDS),c.add,c);return c},escape:function(a){return a.replace(/([\\'])/g,"\\$1").replace(/[\r\n]+/g,"\\n")},getCount:function(a){return a.size()||1},getDecoder:function(c){var d=new RegGrp({"(\\d)(\\|\\d)+\\|(\\d)":"$1-$3","([a-z])(\\|[a-z])+\\|([a-z])":"$1-$3","([A-Z])(\\|[A-Z])+\\|([A-Z])":"$1-$3","\\|":""});var b=d.exec(c.map(function(a){if(a.toString())return a.replacement;return""}).slice(0,62).join("|"));if(!b)return"^$";b="["+b+"]";var f=c.size();if(f>62){b="("+b+"|";var e=Packer.encode62(f).charAt(0);if(e>"9"){b+="[\\\\d";if(e>="a"){b+="a";if(e>="z"){b+="-z";if(e>="A"){b+="A";if(e>"A")b+="-"+e}}else if(e=="b"){b+="-"+e}}b+="]"}else if(e==9){b+="\\\\d"}else if(e==2){b+="[12]"}else if(e==1){b+="1"}else{b+="[1-"+e+"]"}b+="\\\\w)"}return b},getEncoder:function(a){var c=a.size();return q["ENCODE"+(c>10?c>36?62:36:10)]},getKeyWords:function(a){return a.map(String).join("|").replace(/\|+$/,"")},getPattern:function(a){var a=a.map(String).join("|").replace(/\|{2,}/g,"|").replace(/^\|+|\|+$/g,"")||"\\x0";return new RegExp("\\b("+a+")\\b","g")}},{WORDS:/\b[\da-zA-Z]\b|\w{2,}/g,ENCODE10:"String",ENCODE36:"function(c){return c.toString(36)}",ENCODE62:"function(c){return(c<62?'':e(parseInt(c/62)))+((c=c%62)>35?String.fromCharCode(c+29):c.toString(36))}",UNPACK:"eval(function(p,a,c,k,e,r){e=%5;if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'%6'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c]);return p}('%1',%2,%3,'%4'.split('|'),0,{}))"});global.Packer=Base.extend({constructor:function(){this.minifier=new j;this.shrinker=new o;this.privates=new w;this.base62=new q},minifier:null,shrinker:null,privates:null,base62:null,pack:function(a,c,d,b){a=this.minifier.minify(a);if(d)a=this.shrinker.shrink(a);if(b)a=this.privates.encode(a);if(c)a=this.base62.encode(a);return a}},{version:"3.1",init:function(){eval("var e=this.encode62="+q.ENCODE62)},data:new p({"STRING1":i,'STRING2':i,"CONDITIONAL":i,"(OPERATOR)\\s*(REGEXP)":"$1$2"}),encode52:function(c){function d(a){return(a<52?'':d(parseInt(a/52)))+((a=a%52)>25?String.fromCharCode(a+39):String.fromCharCode(a+97))};var b=d(c);if(/^(do|if|in)$/.test(b))b=b.slice(1)+0;return b}});var j=Base.extend({minify:function(a){a+="\n";a=a.replace(j.CONTINUE,"");a=j.comments.exec(a);a=j.clean.exec(a);a=j.whitespace.exec(a);a=j.concat.exec(a);return a}},{CONTINUE:/\\\r?\n/g,init:function(){this.concat=new p(this.concat).merge(Packer.data);extend(this.concat,"exec",function(a){var c=this.base(a);while(c!=a){a=c;c=this.base(a)}return c});forEach.csv("comments,clean,whitespace",function(a){this[a]=Packer.data.union(new p(this[a]))},this);this.conditionalComments=this.comments.copy();this.conditionalComments.putAt(-1," $3");this.whitespace.removeAt(2);this.comments.removeAt(2)},clean:{"\\(\\s*([^;)]*)\\s*;\\s*([^;)]*)\\s*;\\s*([^;)]*)\\)":"($1;$2;$3)","throw[^};]+[};]":i,";+\\s*([};])":"$1"},comments:{";;;[^\\n]*\\n":A,"(COMMENT1)\\n\\s*(REGEXP)?":"\n$3","(COMMENT2)\\s*(REGEXP)?":function(a,c,d,b){if(/^\/\*@/.test(c)&&/@\*\/$/.test(c)){c=j.conditionalComments.exec(c)}else{c=""}return c+" "+(b||"")}},concat:{"(STRING1)\\+(STRING1)":function(a,c,d,b){return c.slice(0,-1)+b.slice(1)},"(STRING2)\\+(STRING2)":function(a,c,d,b){return c.slice(0,-1)+b.slice(1)}},whitespace:{"\\/\\/@[^\\n]*\\n":i,"@\\s+\\b":"@ ","\\b\\s+@":" @","(\\d)\\s+(\\.\\s*[a-z\\$_\\[(])":"$1 $2","([+-])\\s+([+-])":"$1 $2","\\b\\s+\\$\\s+\\b":" $ ","\\$\\s+\\b":"$ ","\\b\\s+\\$":" $","\\b\\s+\\b":F,"\\s+":A}});var o=Base.extend({decodeData:function(d){var b=this._data;delete this._data;return d.replace(o.ENCODED_DATA,function(a,c){return b[c]})},encodeData:function(f){var e=this._data=[];return Packer.data.exec(f,function(a,c,d){var b="\x01"+e.length+"\x01";if(d){b=c+b;a=d}e.push(a);return b})},shrink:function(g){g=this.encodeData(g);function n(a){return new RegExp(a.source,"g")};var u=/((catch|do|if|while|with|function)\b[^~{};]*(\(\s*[^{};]*\s*\))\s*)?(\{[^{}]*\})/;var G=n(u);var x=/\{[^{}]*\}|\[[^\[\]]*\]|\([^\(\)]*\)|~[^~]+~/;var H=n(x);var D=/~#?(\d+)~/;var I=/[a-zA-Z_$][\w\$]*/g;var J=/~#(\d+)~/;var L=/\bvar\b/g;var M=/\bvar\s+[\w$]+[^;#]*|\bfunction\s+[\w$]+/g;var N=/\b(var|function)\b|\sin\s+[^;]+/g;var O=/\s*=[^,;]*/g;var s=[];var E=0;function P(a,c,d,b,f){if(!c)c="";if(d=="function"){f=b+y(f,J);c=c.replace(x,"");b=b.slice(1,-1);if(b!="_no_shrink_"){var e=match(f,M).join(";").replace(L,";var");while(x.test(e)){e=e.replace(H,"")}e=e.replace(N,"").replace(O,"")}f=y(f,D);if(b!="_no_shrink_"){var h=0,C;var k=match([b,e],I);var l={};for(var r=0;r<k.length;r++){id=k[r];if(!l["#"+id]){l["#"+id]=true;id=rescape(id);while(new RegExp(o.PREFIX+h+"\\b").test(f))h++;var m=new RegExp("([^\\w$.])"+id+"([^\\w$:])");while(m.test(f)){f=f.replace(n(m),"$1"+o.PREFIX+h+"$2")}var m=new RegExp("([^{,\\w$.])"+id+":","g");f=f.replace(m,"$1"+o.PREFIX+h+":");h++}}E=Math.max(E,h)}var t=c+"~"+s.length+"~";s.push(f)}else{var t="~#"+s.length+"~";s.push(c+f)}return t};function y(d,b){while(b.test(d)){d=d.replace(n(b),function(a,c){return s[c]})}return d};while(u.test(g)){g=g.replace(G,P)}g=y(g,D);var z,Q=0;var R=new v(o.SHRUNK,function(){do z=Packer.encode52(Q++);while(new RegExp("[^\\w$.]"+z+"[^\\w$:]").test(g));return z});g=R.encode(g);return this.decodeData(g)}},{ENCODED_DATA:/\x01(\d+)\x01/g,PREFIX:"\x02",SHRUNK:/\x02\d+\b/g})}; |