js-confuser 1.7.2 → 2.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +6 -4
  2. package/.github/workflows/node.js.yml +1 -1
  3. package/CHANGELOG.md +105 -0
  4. package/Migration.md +57 -0
  5. package/README.md +23 -913
  6. package/dist/constants.js +69 -13
  7. package/dist/index.js +108 -152
  8. package/dist/obfuscator.js +316 -118
  9. package/dist/options.js +1 -109
  10. package/dist/order.js +30 -30
  11. package/dist/presets.js +47 -45
  12. package/dist/probability.js +25 -32
  13. package/dist/templates/bufferToStringTemplate.js +9 -0
  14. package/dist/templates/deadCodeTemplates.js +9 -0
  15. package/dist/templates/getGlobalTemplate.js +19 -0
  16. package/dist/templates/integrityTemplate.js +30 -0
  17. package/dist/templates/setFunctionLengthTemplate.js +9 -0
  18. package/dist/templates/stringCompressionTemplate.js +10 -0
  19. package/dist/templates/tamperProtectionTemplates.js +21 -0
  20. package/dist/templates/template.js +213 -93
  21. package/dist/transforms/astScrambler.js +100 -0
  22. package/dist/transforms/calculator.js +70 -127
  23. package/dist/transforms/controlFlowFlattening.js +1182 -0
  24. package/dist/transforms/deadCode.js +62 -577
  25. package/dist/transforms/dispatcher.js +300 -309
  26. package/dist/transforms/extraction/duplicateLiteralsRemoval.js +88 -189
  27. package/dist/transforms/extraction/objectExtraction.js +131 -215
  28. package/dist/transforms/finalizer.js +56 -59
  29. package/dist/transforms/flatten.js +275 -276
  30. package/dist/transforms/functionOutlining.js +230 -0
  31. package/dist/transforms/identifier/globalConcealing.js +217 -103
  32. package/dist/transforms/identifier/movedDeclarations.js +167 -91
  33. package/dist/transforms/identifier/renameVariables.js +240 -187
  34. package/dist/transforms/lock/integrity.js +61 -184
  35. package/dist/transforms/lock/lock.js +263 -303
  36. package/dist/transforms/minify.js +431 -436
  37. package/dist/transforms/opaquePredicates.js +65 -118
  38. package/dist/transforms/pack.js +160 -0
  39. package/dist/transforms/plugin.js +179 -0
  40. package/dist/transforms/preparation.js +263 -163
  41. package/dist/transforms/renameLabels.js +132 -56
  42. package/dist/transforms/rgf.js +142 -240
  43. package/dist/transforms/shuffle.js +52 -145
  44. package/dist/transforms/string/encoding.js +45 -173
  45. package/dist/transforms/string/stringCompression.js +81 -126
  46. package/dist/transforms/string/stringConcealing.js +189 -224
  47. package/dist/transforms/string/stringEncoding.js +32 -40
  48. package/dist/transforms/string/stringSplitting.js +54 -55
  49. package/dist/transforms/variableMasking.js +232 -0
  50. package/dist/utils/ControlObject.js +125 -0
  51. package/dist/utils/IntGen.js +46 -0
  52. package/dist/utils/NameGen.js +106 -0
  53. package/dist/utils/ast-utils.js +560 -0
  54. package/dist/utils/function-utils.js +56 -0
  55. package/dist/utils/gen-utils.js +48 -0
  56. package/dist/utils/node.js +77 -0
  57. package/dist/utils/object-utils.js +21 -0
  58. package/dist/utils/random-utils.js +91 -0
  59. package/dist/utils/static-utils.js +64 -0
  60. package/dist/validateOptions.js +122 -0
  61. package/index.d.ts +1 -17
  62. package/package.json +27 -22
  63. package/src/constants.ts +139 -77
  64. package/src/index.ts +70 -163
  65. package/src/obfuscationResult.ts +43 -0
  66. package/src/obfuscator.ts +328 -135
  67. package/src/options.ts +154 -623
  68. package/src/order.ts +14 -14
  69. package/src/presets.ts +39 -34
  70. package/src/probability.ts +21 -36
  71. package/src/templates/{bufferToString.ts → bufferToStringTemplate.ts} +5 -54
  72. package/src/templates/deadCodeTemplates.ts +1185 -0
  73. package/src/templates/getGlobalTemplate.ts +72 -0
  74. package/src/templates/integrityTemplate.ts +69 -0
  75. package/src/templates/setFunctionLengthTemplate.ts +11 -0
  76. package/src/templates/stringCompressionTemplate.ts +42 -0
  77. package/src/templates/tamperProtectionTemplates.ts +116 -0
  78. package/src/templates/template.ts +183 -92
  79. package/src/transforms/astScrambler.ts +99 -0
  80. package/src/transforms/calculator.ts +96 -224
  81. package/src/transforms/controlFlowFlattening.ts +1594 -0
  82. package/src/transforms/deadCode.ts +85 -628
  83. package/src/transforms/dispatcher.ts +431 -636
  84. package/src/transforms/extraction/duplicateLiteralsRemoval.ts +147 -299
  85. package/src/transforms/extraction/objectExtraction.ts +160 -333
  86. package/src/transforms/finalizer.ts +63 -64
  87. package/src/transforms/flatten.ts +439 -557
  88. package/src/transforms/functionOutlining.ts +225 -0
  89. package/src/transforms/identifier/globalConcealing.ts +261 -189
  90. package/src/transforms/identifier/movedDeclarations.ts +228 -142
  91. package/src/transforms/identifier/renameVariables.ts +252 -258
  92. package/src/transforms/lock/integrity.ts +84 -260
  93. package/src/transforms/lock/lock.ts +342 -491
  94. package/src/transforms/minify.ts +523 -663
  95. package/src/transforms/opaquePredicates.ts +90 -229
  96. package/src/transforms/pack.ts +195 -0
  97. package/src/transforms/plugin.ts +185 -0
  98. package/src/transforms/preparation.ts +337 -215
  99. package/src/transforms/renameLabels.ts +176 -77
  100. package/src/transforms/rgf.ts +293 -386
  101. package/src/transforms/shuffle.ts +80 -254
  102. package/src/transforms/string/encoding.ts +26 -129
  103. package/src/transforms/string/stringCompression.ts +118 -236
  104. package/src/transforms/string/stringConcealing.ts +255 -339
  105. package/src/transforms/string/stringEncoding.ts +28 -47
  106. package/src/transforms/string/stringSplitting.ts +61 -75
  107. package/src/transforms/variableMasking.ts +257 -0
  108. package/src/utils/ControlObject.ts +141 -0
  109. package/src/utils/IntGen.ts +33 -0
  110. package/src/utils/NameGen.ts +106 -0
  111. package/src/utils/ast-utils.ts +667 -0
  112. package/src/utils/function-utils.ts +50 -0
  113. package/src/utils/gen-utils.ts +48 -0
  114. package/src/utils/node.ts +78 -0
  115. package/src/utils/object-utils.ts +21 -0
  116. package/src/utils/random-utils.ts +79 -0
  117. package/src/utils/static-utils.ts +66 -0
  118. package/src/validateOptions.ts +256 -0
  119. package/tsconfig.json +13 -8
  120. package/babel.config.js +0 -12
  121. package/dev.js +0 -8
  122. package/dist/compiler.js +0 -34
  123. package/dist/parser.js +0 -59
  124. package/dist/precedence.js +0 -66
  125. package/dist/templates/bufferToString.js +0 -108
  126. package/dist/templates/crash.js +0 -59
  127. package/dist/templates/es5.js +0 -137
  128. package/dist/templates/functionLength.js +0 -34
  129. package/dist/templates/globals.js +0 -9
  130. package/dist/transforms/antiTooling.js +0 -88
  131. package/dist/transforms/controlFlowFlattening/controlFlowFlattening.js +0 -1281
  132. package/dist/transforms/controlFlowFlattening/expressionObfuscation.js +0 -131
  133. package/dist/transforms/es5/antiClass.js +0 -164
  134. package/dist/transforms/es5/antiDestructuring.js +0 -193
  135. package/dist/transforms/es5/antiES6Object.js +0 -185
  136. package/dist/transforms/es5/antiSpreadOperator.js +0 -35
  137. package/dist/transforms/es5/antiTemplate.js +0 -66
  138. package/dist/transforms/es5/es5.js +0 -123
  139. package/dist/transforms/extraction/classExtraction.js +0 -83
  140. package/dist/transforms/identifier/globalAnalysis.js +0 -70
  141. package/dist/transforms/identifier/variableAnalysis.js +0 -104
  142. package/dist/transforms/lock/antiDebug.js +0 -76
  143. package/dist/transforms/stack.js +0 -343
  144. package/dist/transforms/transform.js +0 -350
  145. package/dist/traverse.js +0 -110
  146. package/dist/util/compare.js +0 -145
  147. package/dist/util/gen.js +0 -564
  148. package/dist/util/guard.js +0 -9
  149. package/dist/util/identifiers.js +0 -355
  150. package/dist/util/insert.js +0 -362
  151. package/dist/util/math.js +0 -19
  152. package/dist/util/object.js +0 -40
  153. package/dist/util/random.js +0 -130
  154. package/dist/util/scope.js +0 -20
  155. package/docs/ControlFlowFlattening.md +0 -595
  156. package/docs/Countermeasures.md +0 -63
  157. package/docs/ES5.md +0 -197
  158. package/docs/Integrity.md +0 -75
  159. package/docs/RGF.md +0 -419
  160. package/samples/example.js +0 -15
  161. package/samples/high.js +0 -1
  162. package/samples/input.js +0 -3
  163. package/samples/javascriptobfuscator.com.js +0 -8
  164. package/samples/jscrambler_advanced.js +0 -1894
  165. package/samples/jscrambler_light.js +0 -1134
  166. package/samples/low.js +0 -1
  167. package/samples/medium.js +0 -1
  168. package/samples/obfuscator.io.js +0 -1686
  169. package/samples/preemptive.com.js +0 -16
  170. package/src/compiler.ts +0 -35
  171. package/src/parser.ts +0 -49
  172. package/src/precedence.ts +0 -61
  173. package/src/templates/crash.ts +0 -55
  174. package/src/templates/es5.ts +0 -131
  175. package/src/templates/functionLength.ts +0 -32
  176. package/src/templates/globals.ts +0 -3
  177. package/src/transforms/antiTooling.ts +0 -102
  178. package/src/transforms/controlFlowFlattening/controlFlowFlattening.ts +0 -2146
  179. package/src/transforms/controlFlowFlattening/expressionObfuscation.ts +0 -179
  180. package/src/transforms/es5/antiClass.ts +0 -272
  181. package/src/transforms/es5/antiDestructuring.ts +0 -294
  182. package/src/transforms/es5/antiES6Object.ts +0 -267
  183. package/src/transforms/es5/antiSpreadOperator.ts +0 -56
  184. package/src/transforms/es5/antiTemplate.ts +0 -98
  185. package/src/transforms/es5/es5.ts +0 -149
  186. package/src/transforms/extraction/classExtraction.ts +0 -168
  187. package/src/transforms/identifier/globalAnalysis.ts +0 -85
  188. package/src/transforms/identifier/variableAnalysis.ts +0 -118
  189. package/src/transforms/lock/antiDebug.ts +0 -112
  190. package/src/transforms/stack.ts +0 -551
  191. package/src/transforms/transform.ts +0 -453
  192. package/src/traverse.ts +0 -120
  193. package/src/types.ts +0 -131
  194. package/src/util/compare.ts +0 -181
  195. package/src/util/gen.ts +0 -651
  196. package/src/util/guard.ts +0 -7
  197. package/src/util/identifiers.ts +0 -494
  198. package/src/util/insert.ts +0 -419
  199. package/src/util/math.ts +0 -15
  200. package/src/util/object.ts +0 -39
  201. package/src/util/random.ts +0 -141
  202. package/src/util/scope.ts +0 -21
  203. package/test/code/Cash.src.js +0 -1011
  204. package/test/code/Cash.test.ts +0 -49
  205. package/test/code/Dynamic.src.js +0 -118
  206. package/test/code/Dynamic.test.ts +0 -49
  207. package/test/code/ES6.src.js +0 -235
  208. package/test/code/ES6.test.ts +0 -42
  209. package/test/code/NewFeatures.test.ts +0 -19
  210. package/test/code/StrictMode.src.js +0 -65
  211. package/test/code/StrictMode.test.js +0 -37
  212. package/test/compare.test.ts +0 -104
  213. package/test/index.test.ts +0 -249
  214. package/test/options.test.ts +0 -132
  215. package/test/presets.test.ts +0 -22
  216. package/test/probability.test.ts +0 -44
  217. package/test/templates/template.test.ts +0 -14
  218. package/test/transforms/antiTooling.test.ts +0 -52
  219. package/test/transforms/calculator.test.ts +0 -78
  220. package/test/transforms/controlFlowFlattening/controlFlowFlattening.test.ts +0 -1274
  221. package/test/transforms/controlFlowFlattening/expressionObfuscation.test.ts +0 -192
  222. package/test/transforms/deadCode.test.ts +0 -85
  223. package/test/transforms/dispatcher.test.ts +0 -457
  224. package/test/transforms/es5/antiClass.test.ts +0 -427
  225. package/test/transforms/es5/antiDestructuring.test.ts +0 -157
  226. package/test/transforms/es5/antiES6Object.test.ts +0 -245
  227. package/test/transforms/es5/antiTemplate.test.ts +0 -116
  228. package/test/transforms/es5/es5.test.ts +0 -110
  229. package/test/transforms/extraction/classExtraction.test.ts +0 -86
  230. package/test/transforms/extraction/duplicateLiteralsRemoval.test.ts +0 -200
  231. package/test/transforms/extraction/objectExtraction.test.ts +0 -491
  232. package/test/transforms/flatten.test.ts +0 -721
  233. package/test/transforms/hexadecimalNumbers.test.ts +0 -62
  234. package/test/transforms/identifier/globalConcealing.test.ts +0 -72
  235. package/test/transforms/identifier/movedDeclarations.test.ts +0 -275
  236. package/test/transforms/identifier/renameVariables.test.ts +0 -621
  237. package/test/transforms/lock/antiDebug.test.ts +0 -66
  238. package/test/transforms/lock/browserLock.test.ts +0 -129
  239. package/test/transforms/lock/countermeasures.test.ts +0 -100
  240. package/test/transforms/lock/integrity.test.ts +0 -161
  241. package/test/transforms/lock/lock.test.ts +0 -204
  242. package/test/transforms/lock/osLock.test.ts +0 -312
  243. package/test/transforms/lock/selfDefending.test.ts +0 -68
  244. package/test/transforms/minify.test.ts +0 -575
  245. package/test/transforms/opaquePredicates.test.ts +0 -43
  246. package/test/transforms/preparation.test.ts +0 -157
  247. package/test/transforms/renameLabels.test.ts +0 -95
  248. package/test/transforms/rgf.test.ts +0 -378
  249. package/test/transforms/shuffle.test.ts +0 -135
  250. package/test/transforms/stack.test.ts +0 -573
  251. package/test/transforms/string/stringCompression.test.ts +0 -120
  252. package/test/transforms/string/stringConcealing.test.ts +0 -299
  253. package/test/transforms/string/stringEncoding.test.ts +0 -95
  254. package/test/transforms/string/stringSplitting.test.ts +0 -135
  255. package/test/transforms/transform.test.ts +0 -66
  256. package/test/traverse.test.ts +0 -139
  257. package/test/util/compare.test.ts +0 -34
  258. package/test/util/gen.test.ts +0 -121
  259. package/test/util/identifiers.test.ts +0 -253
  260. package/test/util/insert.test.ts +0 -142
  261. package/test/util/math.test.ts +0 -5
  262. package/test/util/random.test.ts +0 -71
  263. /package/dist/{types.js → obfuscationResult.js} +0 -0
@@ -1,1011 +0,0 @@
1
- /* MIT https://github.com/fabiospampinato/cash */
2
- (function () {
3
- "use strict";
4
- var e = {
5
- class: "className",
6
- contenteditable: "contentEditable",
7
- for: "htmlFor",
8
- readonly: "readOnly",
9
- maxlength: "maxLength",
10
- tabindex: "tabIndex",
11
- colspan: "colSpan",
12
- rowspan: "rowSpan",
13
- usemap: "useMap",
14
- };
15
- function aa(a, b) {
16
- try {
17
- return a(b);
18
- } catch (c) {
19
- return b;
20
- }
21
- }
22
- var k = document,
23
- m = window,
24
- ba = k.documentElement,
25
- n = k.createElement.bind(k),
26
- ca = n("div"),
27
- p = n("table"),
28
- da = n("tbody"),
29
- ea = n("tr"),
30
- q = Array.isArray,
31
- r = Array.prototype,
32
- fa = r.concat,
33
- t = r.filter,
34
- ha = r.indexOf,
35
- ia = r.map,
36
- ja = r.push,
37
- ka = r.slice,
38
- u = r.some,
39
- la = r.splice,
40
- ma = /^#(?:[\w-]|\\.|[^\x00-\xa0])*$/,
41
- na = /^\.(?:[\w-]|\\.|[^\x00-\xa0])*$/,
42
- oa = /<.+>/,
43
- pa = /^\w+$/;
44
- function v(a, b) {
45
- return a && (w(b) || x(b))
46
- ? na.test(a)
47
- ? b.getElementsByClassName(a.slice(1))
48
- : pa.test(a)
49
- ? b.getElementsByTagName(a)
50
- : b.querySelectorAll(a)
51
- : [];
52
- }
53
- var B = (function () {
54
- function a(a, c) {
55
- if (a) {
56
- if (a instanceof B) return a;
57
- var b = a;
58
- if (C(a)) {
59
- if (
60
- ((b = (c instanceof B ? c[0] : c) || k),
61
- (b = ma.test(a)
62
- ? b.getElementById(a.slice(1))
63
- : oa.test(a)
64
- ? qa(a)
65
- : v(a, b)),
66
- !b)
67
- )
68
- return;
69
- } else if (D(a)) return this.ready(a);
70
- if (b.nodeType || b === m) b = [b];
71
- this.length = b.length;
72
- a = 0;
73
- for (c = this.length; a < c; a++) this[a] = b[a];
74
- }
75
- }
76
- a.prototype.init = function (b, c) {
77
- return new a(b, c);
78
- };
79
- return a;
80
- })(),
81
- E = B.prototype,
82
- F = E.init;
83
- F.fn = F.prototype = E;
84
- E.length = 0;
85
- E.splice = la;
86
- "function" === typeof Symbol && (E[Symbol.iterator] = r[Symbol.iterator]);
87
- E.map = function (a) {
88
- return F(
89
- fa.apply(
90
- [],
91
- ia.call(this, function (b, c) {
92
- return a.call(b, c, b);
93
- })
94
- )
95
- );
96
- };
97
- E.slice = function (a, b) {
98
- return F(ka.call(this, a, b));
99
- };
100
- var ra = /-([a-z])/g;
101
- function G(a) {
102
- return a.replace(ra, function (a, c) {
103
- return c.toUpperCase();
104
- });
105
- }
106
- F.guid = 1;
107
- function sa(a, b) {
108
- var c = a && (a.matches || a.webkitMatchesSelector || a.msMatchesSelector);
109
- return !!c && !!b && c.call(a, b);
110
- }
111
- function H(a) {
112
- return !!a && a === a.window;
113
- }
114
- function w(a) {
115
- return !!a && 9 === a.nodeType;
116
- }
117
- function x(a) {
118
- return !!a && 1 === a.nodeType;
119
- }
120
- function D(a) {
121
- return "function" === typeof a;
122
- }
123
- function C(a) {
124
- return "string" === typeof a;
125
- }
126
- function ta(a) {
127
- return !isNaN(parseFloat(a)) && isFinite(a);
128
- }
129
- function I(a) {
130
- if ("object" !== typeof a || null === a) return !1;
131
- a = Object.getPrototypeOf(a);
132
- return null === a || a === Object.prototype;
133
- }
134
- F.isWindow = H;
135
- F.isFunction = D;
136
- F.isArray = q;
137
- F.isNumeric = ta;
138
- F.isPlainObject = I;
139
- E.get = function (a) {
140
- if (void 0 === a) return ka.call(this);
141
- a = Number(a);
142
- return this[0 > a ? a + this.length : a];
143
- };
144
- E.eq = function (a) {
145
- return F(this.get(a));
146
- };
147
- E.first = function () {
148
- return this.eq(0);
149
- };
150
- E.last = function () {
151
- return this.eq(-1);
152
- };
153
- function J(a, b, c) {
154
- if (c) for (c = a.length; c-- && !1 !== b.call(a[c], c, a[c]); );
155
- else if (I(a)) {
156
- var d = Object.keys(a);
157
- c = 0;
158
- for (var h = d.length; c < h; c++) {
159
- var f = d[c];
160
- if (!1 === b.call(a[f], f, a[f])) break;
161
- }
162
- } else
163
- for (c = 0, h = a.length; c < h && !1 !== b.call(a[c], c, a[c]); c++);
164
- return a;
165
- }
166
- F.each = J;
167
- E.each = function (a) {
168
- return J(this, a);
169
- };
170
- E.prop = function (a, b) {
171
- if (a) {
172
- if (C(a))
173
- return (
174
- (a = e[a] || a),
175
- 2 > arguments.length
176
- ? this[0] && this[0][a]
177
- : this.each(function (c, h) {
178
- h[a] = b;
179
- })
180
- );
181
- for (var c in a) this.prop(c, a[c]);
182
- return this;
183
- }
184
- };
185
- E.removeProp = function (a) {
186
- return this.each(function (b, c) {
187
- delete c[e[a] || a];
188
- });
189
- };
190
- function K() {
191
- for (var a = [], b = 0; b < arguments.length; b++) a[b] = arguments[b];
192
- b = "boolean" === typeof a[0] ? a.shift() : !1;
193
- var c = a.shift(),
194
- d = a.length;
195
- if (!c) return {};
196
- if (!d) return K(b, F, c);
197
- for (var h = 0; h < d; h++) {
198
- var f = a[h],
199
- g;
200
- for (g in f)
201
- b && (q(f[g]) || I(f[g]))
202
- ? ((c[g] && c[g].constructor === f[g].constructor) ||
203
- (c[g] = new f[g].constructor()),
204
- K(b, c[g], f[g]))
205
- : (c[g] = f[g]);
206
- }
207
- return c;
208
- }
209
- F.extend = K;
210
- E.extend = function (a) {
211
- return K(E, a);
212
- };
213
- function L(a) {
214
- return C(a)
215
- ? function (b, c) {
216
- return sa(c, a);
217
- }
218
- : D(a)
219
- ? a
220
- : a instanceof B
221
- ? function (b, c) {
222
- return a.is(c);
223
- }
224
- : a
225
- ? function (b, c) {
226
- return c === a;
227
- }
228
- : function () {
229
- return !1;
230
- };
231
- }
232
- E.filter = function (a) {
233
- var b = L(a);
234
- return F(
235
- t.call(this, function (a, d) {
236
- return b.call(a, d, a);
237
- })
238
- );
239
- };
240
- function M(a, b) {
241
- return b ? a.filter(b) : a;
242
- }
243
- var ua = /\S+/g;
244
- function N(a) {
245
- return C(a) ? a.match(ua) || [] : [];
246
- }
247
- E.hasClass = function (a) {
248
- return (
249
- !!a &&
250
- u.call(this, function (b) {
251
- return x(b) && b.classList.contains(a);
252
- })
253
- );
254
- };
255
- E.removeAttr = function (a) {
256
- var b = N(a);
257
- return this.each(function (a, d) {
258
- x(d) &&
259
- J(b, function (a, b) {
260
- d.removeAttribute(b);
261
- });
262
- });
263
- };
264
- E.attr = function (a, b) {
265
- if (a) {
266
- if (C(a)) {
267
- if (2 > arguments.length) {
268
- if (!this[0] || !x(this[0])) return;
269
- var c = this[0].getAttribute(a);
270
- return null === c ? void 0 : c;
271
- }
272
- return void 0 === b
273
- ? this
274
- : null === b
275
- ? this.removeAttr(a)
276
- : this.each(function (c, h) {
277
- x(h) && h.setAttribute(a, b);
278
- });
279
- }
280
- for (c in a) this.attr(c, a[c]);
281
- return this;
282
- }
283
- };
284
- E.toggleClass = function (a, b) {
285
- var c = N(a),
286
- d = void 0 !== b;
287
- return this.each(function (a, f) {
288
- x(f) &&
289
- J(c, function (a, c) {
290
- d
291
- ? b
292
- ? f.classList.add(c)
293
- : f.classList.remove(c)
294
- : f.classList.toggle(c);
295
- });
296
- });
297
- };
298
- E.addClass = function (a) {
299
- return this.toggleClass(a, !0);
300
- };
301
- E.removeClass = function (a) {
302
- return arguments.length ? this.toggleClass(a, !1) : this.attr("class", "");
303
- };
304
- function O(a, b, c, d) {
305
- for (var h = [], f = D(b), g = d && L(d), y = 0, z = a.length; y < z; y++)
306
- if (f) {
307
- var l = b(a[y]);
308
- l.length && ja.apply(h, l);
309
- } else
310
- for (l = a[y][b]; !(null == l || (d && g(-1, l))); )
311
- h.push(l), (l = c ? l[b] : null);
312
- return h;
313
- }
314
- function P(a) {
315
- return 1 < a.length
316
- ? t.call(a, function (a, c, d) {
317
- return ha.call(d, a) === c;
318
- })
319
- : a;
320
- }
321
- F.unique = P;
322
- E.add = function (a, b) {
323
- return F(P(this.get().concat(F(a, b).get())));
324
- };
325
- function Q(a, b, c) {
326
- if (x(a)) {
327
- var d = m.getComputedStyle(a, null);
328
- return c ? d.getPropertyValue(b) || void 0 : d[b] || a.style[b];
329
- }
330
- }
331
- function R(a, b) {
332
- return parseInt(Q(a, b), 10) || 0;
333
- }
334
- var S = /^--/,
335
- T = {},
336
- va = ca.style,
337
- wa = ["webkit", "moz", "ms"];
338
- function xa(a, b) {
339
- void 0 === b && (b = S.test(a));
340
- if (b) return a;
341
- if (!T[a]) {
342
- b = G(a);
343
- var c = "" + b[0].toUpperCase() + b.slice(1);
344
- b = (b + " " + wa.join(c + " ") + c).split(" ");
345
- J(b, function (b, c) {
346
- if (c in va) return (T[a] = c), !1;
347
- });
348
- }
349
- return T[a];
350
- }
351
- var ya = {
352
- animationIterationCount: !0,
353
- columnCount: !0,
354
- flexGrow: !0,
355
- flexShrink: !0,
356
- fontWeight: !0,
357
- gridArea: !0,
358
- gridColumn: !0,
359
- gridColumnEnd: !0,
360
- gridColumnStart: !0,
361
- gridRow: !0,
362
- gridRowEnd: !0,
363
- gridRowStart: !0,
364
- lineHeight: !0,
365
- opacity: !0,
366
- order: !0,
367
- orphans: !0,
368
- widows: !0,
369
- zIndex: !0,
370
- };
371
- function za(a, b, c) {
372
- void 0 === c && (c = S.test(a));
373
- return c || ya[a] || !ta(b) ? b : b + "px";
374
- }
375
- E.css = function (a, b) {
376
- if (C(a)) {
377
- var c = S.test(a);
378
- a = xa(a, c);
379
- if (2 > arguments.length) return this[0] && Q(this[0], a, c);
380
- if (!a) return this;
381
- b = za(a, b, c);
382
- return this.each(function (d, f) {
383
- x(f) && (c ? f.style.setProperty(a, b) : (f.style[a] = b));
384
- });
385
- }
386
- for (var d in a) this.css(d, a[d]);
387
- return this;
388
- };
389
- var Aa = /^\s+|\s+$/;
390
- function Ba(a, b) {
391
- a = a.dataset[b] || a.dataset[G(b)];
392
- return Aa.test(a) ? a : aa(JSON.parse, a);
393
- }
394
- E.data = function (a, b) {
395
- if (!a) {
396
- if (!this[0]) return;
397
- var c = {},
398
- d;
399
- for (d in this[0].dataset) c[d] = Ba(this[0], d);
400
- return c;
401
- }
402
- if (C(a))
403
- return 2 > arguments.length
404
- ? this[0] && Ba(this[0], a)
405
- : void 0 === b
406
- ? this
407
- : this.each(function (c, d) {
408
- c = b;
409
- c = aa(JSON.stringify, c);
410
- d.dataset[G(a)] = c;
411
- });
412
- for (d in a) this.data(d, a[d]);
413
- return this;
414
- };
415
- function Ca(a, b) {
416
- var c = a.documentElement;
417
- return Math.max(
418
- a.body["scroll" + b],
419
- c["scroll" + b],
420
- a.body["offset" + b],
421
- c["offset" + b],
422
- c["client" + b]
423
- );
424
- }
425
- function Da(a, b) {
426
- return (
427
- R(a, "border" + (b ? "Left" : "Top") + "Width") +
428
- R(a, "padding" + (b ? "Left" : "Top")) +
429
- R(a, "padding" + (b ? "Right" : "Bottom")) +
430
- R(a, "border" + (b ? "Right" : "Bottom") + "Width")
431
- );
432
- }
433
- J([!0, !1], function (a, b) {
434
- J(["Width", "Height"], function (a, d) {
435
- E[(b ? "outer" : "inner") + d] = function (c) {
436
- if (this[0])
437
- return H(this[0])
438
- ? b
439
- ? this[0]["inner" + d]
440
- : this[0].document.documentElement["client" + d]
441
- : w(this[0])
442
- ? Ca(this[0], d)
443
- : this[0][(b ? "offset" : "client") + d] +
444
- (c && b
445
- ? R(this[0], "margin" + (a ? "Top" : "Left")) +
446
- R(this[0], "margin" + (a ? "Bottom" : "Right"))
447
- : 0);
448
- };
449
- });
450
- });
451
- J(["Width", "Height"], function (a, b) {
452
- var c = b.toLowerCase();
453
- E[c] = function (d) {
454
- if (!this[0]) return void 0 === d ? void 0 : this;
455
- if (!arguments.length)
456
- return H(this[0])
457
- ? this[0].document.documentElement["client" + b]
458
- : w(this[0])
459
- ? Ca(this[0], b)
460
- : this[0].getBoundingClientRect()[c] - Da(this[0], !a);
461
- var h = parseInt(d, 10);
462
- return this.each(function (b, d) {
463
- x(d) &&
464
- ((b = Q(d, "boxSizing")),
465
- (d.style[c] = za(c, h + ("border-box" === b ? Da(d, !a) : 0))));
466
- });
467
- };
468
- });
469
- var U = {};
470
- E.toggle = function (a) {
471
- return this.each(function (b, c) {
472
- if (x(c))
473
- if (void 0 === a ? "none" === Q(c, "display") : a) {
474
- if (((c.style.display = c.___cd || ""), "none" === Q(c, "display"))) {
475
- b = c.style;
476
- c = c.tagName;
477
- if (U[c]) c = U[c];
478
- else {
479
- var d = n(c);
480
- k.body.insertBefore(d, null);
481
- var h = Q(d, "display");
482
- k.body.removeChild(d);
483
- c = U[c] = "none" !== h ? h : "block";
484
- }
485
- b.display = c;
486
- }
487
- } else (c.___cd = Q(c, "display")), (c.style.display = "none");
488
- });
489
- };
490
- E.hide = function () {
491
- return this.toggle(!1);
492
- };
493
- E.show = function () {
494
- return this.toggle(!0);
495
- };
496
- function Ea(a, b) {
497
- return (
498
- !b ||
499
- !u.call(b, function (b) {
500
- return 0 > a.indexOf(b);
501
- })
502
- );
503
- }
504
- var V = { focus: "focusin", blur: "focusout" },
505
- W = { mouseenter: "mouseover", mouseleave: "mouseout" },
506
- Fa = /^(mouse|pointer|contextmenu|drag|drop|click|dblclick)/i;
507
- function Ga(a, b, c, d, h) {
508
- var f = (a.___ce = a.___ce || {});
509
- f[b] = f[b] || [];
510
- f[b].push([c, d, h]);
511
- a.addEventListener(b, h);
512
- }
513
- function X(a) {
514
- a = a.split(".");
515
- return [a[0], a.slice(1).sort()];
516
- }
517
- function Y(a, b, c, d, h) {
518
- var f = (a.___ce = a.___ce || {});
519
- if (b)
520
- f[b] &&
521
- (f[b] = f[b].filter(function (f) {
522
- var g = f[0],
523
- z = f[1];
524
- f = f[2];
525
- if ((h && f.guid !== h.guid) || !Ea(g, c) || (d && d !== z))
526
- return !0;
527
- a.removeEventListener(b, f);
528
- }));
529
- else for (b in f) Y(a, b, c, d, h);
530
- }
531
- E.off = function (a, b, c) {
532
- var d = this;
533
- if (void 0 === a)
534
- this.each(function (a, b) {
535
- (x(b) || w(b) || H(b)) && Y(b);
536
- });
537
- else if (C(a))
538
- D(b) && ((c = b), (b = "")),
539
- J(N(a), function (a, h) {
540
- a = X(h);
541
- h = a[0];
542
- var f = a[1],
543
- g = W[h] || V[h] || h;
544
- d.each(function (a, d) {
545
- (x(d) || w(d) || H(d)) && Y(d, g, f, b, c);
546
- });
547
- });
548
- else for (var h in a) this.off(h, a[h]);
549
- return this;
550
- };
551
- E.on = function (a, b, c, d, h) {
552
- var f = this;
553
- if (!C(a)) {
554
- for (var g in a) this.on(g, b, c, a[g], h);
555
- return this;
556
- }
557
- C(b) ||
558
- (void 0 !== b && null !== b && (void 0 !== c && (d = c), (c = b)),
559
- (b = ""));
560
- D(d) || ((d = c), (c = void 0));
561
- if (!d) return this;
562
- J(N(a), function (a, g) {
563
- a = X(g);
564
- g = a[0];
565
- var l = a[1],
566
- z = W[g] || V[g] || g,
567
- y = g in W,
568
- Ka = g in V;
569
- z &&
570
- f.each(function (a, f) {
571
- if (x(f) || w(f) || H(f))
572
- (a = function La(a) {
573
- if (a.target["___i" + a.type])
574
- return a.stopImmediatePropagation();
575
- if (!a.namespace || Ea(l, a.namespace.split(".")))
576
- if (
577
- b ||
578
- !(
579
- (Ka && (a.target !== f || a.___ot === z)) ||
580
- (y && a.relatedTarget && f.contains(a.relatedTarget))
581
- )
582
- ) {
583
- var g = f;
584
- if (b) {
585
- for (var A = a.target; !sa(A, b); ) {
586
- if (A === f) return;
587
- A = A.parentNode;
588
- if (!A) return;
589
- }
590
- g = A;
591
- a.___cd = !0;
592
- }
593
- a.___cd &&
594
- Object.defineProperty(a, "currentTarget", {
595
- configurable: !0,
596
- get: function () {
597
- return g;
598
- },
599
- });
600
- Object.defineProperty(a, "data", {
601
- configurable: !0,
602
- get: function () {
603
- return c;
604
- },
605
- });
606
- A = d.call(g, a, a.___td);
607
- h && Y(f, z, l, b, La);
608
- !1 === A && (a.preventDefault(), a.stopPropagation());
609
- }
610
- }),
611
- (a.guid = d.guid = d.guid || F.guid++),
612
- Ga(f, z, l, b, a);
613
- });
614
- });
615
- return this;
616
- };
617
- E.one = function (a, b, c, d) {
618
- return this.on(a, b, c, d, !0);
619
- };
620
- E.ready = function (a) {
621
- function b() {
622
- return setTimeout(a, 0, F);
623
- }
624
- "loading" !== k.readyState
625
- ? b()
626
- : k.addEventListener("DOMContentLoaded", b);
627
- return this;
628
- };
629
- E.trigger = function (a, b) {
630
- if (C(a)) {
631
- var c = X(a),
632
- d = c[0];
633
- c = c[1];
634
- var h = W[d] || V[d] || d;
635
- if (!h) return this;
636
- var f = Fa.test(h) ? "MouseEvents" : "HTMLEvents";
637
- a = k.createEvent(f);
638
- a.initEvent(h, !0, !0);
639
- a.namespace = c.join(".");
640
- a.___ot = d;
641
- }
642
- a.___td = b;
643
- var g = a.___ot in V;
644
- return this.each(function (b, c) {
645
- g &&
646
- D(c[a.___ot]) &&
647
- ((c["___i" + a.type] = !0), c[a.___ot](), (c["___i" + a.type] = !1));
648
- c.dispatchEvent(a);
649
- });
650
- };
651
- function Ha(a) {
652
- return a.multiple && a.options
653
- ? O(
654
- t.call(a.options, function (a) {
655
- return a.selected && !a.disabled && !a.parentNode.disabled;
656
- }),
657
- "value"
658
- )
659
- : a.value || "";
660
- }
661
- var Ia = /%20/g,
662
- Ja = /\r?\n/g,
663
- Ma = /file|reset|submit|button|image/i,
664
- Na = /radio|checkbox/i;
665
- E.serialize = function () {
666
- var a = "";
667
- this.each(function (b, c) {
668
- J(c.elements || [c], function (b, c) {
669
- c.disabled ||
670
- !c.name ||
671
- "FIELDSET" === c.tagName ||
672
- Ma.test(c.type) ||
673
- (Na.test(c.type) && !c.checked) ||
674
- ((b = Ha(c)),
675
- void 0 !== b &&
676
- ((b = q(b) ? b : [b]),
677
- J(b, function (b, d) {
678
- b = a;
679
- d =
680
- "&" +
681
- encodeURIComponent(c.name) +
682
- "=" +
683
- encodeURIComponent(d.replace(Ja, "\r\n")).replace(Ia, "+");
684
- a = b + d;
685
- })));
686
- });
687
- });
688
- return a.slice(1);
689
- };
690
- E.val = function (a) {
691
- return arguments.length
692
- ? this.each(function (b, c) {
693
- if ((b = c.multiple && c.options) || Na.test(c.type)) {
694
- var d = q(a) ? ia.call(a, String) : null === a ? [] : [String(a)];
695
- b
696
- ? J(
697
- c.options,
698
- function (a, b) {
699
- b.selected = 0 <= d.indexOf(b.value);
700
- },
701
- !0
702
- )
703
- : (c.checked = 0 <= d.indexOf(c.value));
704
- } else c.value = void 0 === a || null === a ? "" : a;
705
- })
706
- : this[0] && Ha(this[0]);
707
- };
708
- E.clone = function () {
709
- return this.map(function (a, b) {
710
- return b.cloneNode(!0);
711
- });
712
- };
713
- E.detach = function (a) {
714
- M(this, a).each(function (a, c) {
715
- c.parentNode && c.parentNode.removeChild(c);
716
- });
717
- return this;
718
- };
719
- var Oa = /^\s*<(\w+)[^>]*>/,
720
- Pa = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
721
- Qa = { "*": ca, tr: da, td: ea, th: ea, thead: p, tbody: p, tfoot: p };
722
- function qa(a) {
723
- if (!C(a)) return [];
724
- if (Pa.test(a)) return [n(RegExp.$1)];
725
- var b = Oa.test(a) && RegExp.$1;
726
- b = Qa[b] || Qa["*"];
727
- b.innerHTML = a;
728
- return F(b.childNodes).detach().get();
729
- }
730
- F.parseHTML = qa;
731
- E.empty = function () {
732
- return this.each(function (a, b) {
733
- for (; b.firstChild; ) b.removeChild(b.firstChild);
734
- });
735
- };
736
- E.html = function (a) {
737
- return arguments.length
738
- ? void 0 === a
739
- ? this
740
- : this.each(function (b, c) {
741
- x(c) && (c.innerHTML = a);
742
- })
743
- : this[0] && this[0].innerHTML;
744
- };
745
- E.remove = function (a) {
746
- M(this, a).detach().off();
747
- return this;
748
- };
749
- E.text = function (a) {
750
- return void 0 === a
751
- ? this[0]
752
- ? this[0].textContent
753
- : ""
754
- : this.each(function (b, c) {
755
- x(c) && (c.textContent = a);
756
- });
757
- };
758
- E.unwrap = function () {
759
- this.parent().each(function (a, b) {
760
- "BODY" !== b.tagName && ((a = F(b)), a.replaceWith(a.children()));
761
- });
762
- return this;
763
- };
764
- E.offset = function () {
765
- var a = this[0];
766
- if (a)
767
- return (
768
- (a = a.getBoundingClientRect()),
769
- { top: a.top + m.pageYOffset, left: a.left + m.pageXOffset }
770
- );
771
- };
772
- E.offsetParent = function () {
773
- return this.map(function (a, b) {
774
- for (a = b.offsetParent; a && "static" === Q(a, "position"); )
775
- a = a.offsetParent;
776
- return a || ba;
777
- });
778
- };
779
- E.position = function () {
780
- var a = this[0];
781
- if (a) {
782
- var b = "fixed" === Q(a, "position"),
783
- c = b ? a.getBoundingClientRect() : this.offset();
784
- if (!b) {
785
- var d = a.ownerDocument;
786
- for (
787
- b = a.offsetParent || d.documentElement;
788
- (b === d.body || b === d.documentElement) &&
789
- "static" === Q(b, "position");
790
-
791
- )
792
- b = b.parentNode;
793
- b !== a &&
794
- x(b) &&
795
- ((d = F(b).offset()),
796
- (c.top -= d.top + R(b, "borderTopWidth")),
797
- (c.left -= d.left + R(b, "borderLeftWidth")));
798
- }
799
- return {
800
- top: c.top - R(a, "marginTop"),
801
- left: c.left - R(a, "marginLeft"),
802
- };
803
- }
804
- };
805
- E.children = function (a) {
806
- return M(
807
- F(
808
- P(
809
- O(this, function (a) {
810
- return a.children;
811
- })
812
- )
813
- ),
814
- a
815
- );
816
- };
817
- E.contents = function () {
818
- return F(
819
- P(
820
- O(this, function (a) {
821
- return "IFRAME" === a.tagName
822
- ? [a.contentDocument]
823
- : "TEMPLATE" === a.tagName
824
- ? a.content.childNodes
825
- : a.childNodes;
826
- })
827
- )
828
- );
829
- };
830
- E.find = function (a) {
831
- return F(
832
- P(
833
- O(this, function (b) {
834
- return v(a, b);
835
- })
836
- )
837
- );
838
- };
839
- var Ra = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
840
- Sa = /^$|^module$|\/(java|ecma)script/i,
841
- Ta = ["type", "src", "nonce", "noModule"];
842
- function Ua(a, b) {
843
- a = F(a);
844
- a.filter("script")
845
- .add(a.find("script"))
846
- .each(function (a, d) {
847
- if (Sa.test(d.type) && ba.contains(d)) {
848
- var c = n("script");
849
- c.text = d.textContent.replace(Ra, "");
850
- J(Ta, function (a, b) {
851
- d[b] && (c[b] = d[b]);
852
- });
853
- b.head.insertBefore(c, null);
854
- b.head.removeChild(c);
855
- }
856
- });
857
- }
858
- function Z(a, b, c, d, h, f, g, y) {
859
- J(
860
- a,
861
- function (a, f) {
862
- J(
863
- F(f),
864
- function (a, f) {
865
- J(
866
- F(b),
867
- function (b, g) {
868
- var l = c ? g : f;
869
- b = c ? a : b;
870
- g = c ? f : g;
871
- l = b ? l.cloneNode(!0) : l;
872
- b = !b;
873
- h
874
- ? g.insertBefore(l, d ? g.firstChild : null)
875
- : g.parentNode.insertBefore(l, d ? g : g.nextSibling);
876
- b && Ua(l, g.ownerDocument);
877
- },
878
- y
879
- );
880
- },
881
- g
882
- );
883
- },
884
- f
885
- );
886
- return b;
887
- }
888
- E.after = function () {
889
- return Z(arguments, this, !1, !1, !1, !0, !0);
890
- };
891
- E.append = function () {
892
- return Z(arguments, this, !1, !1, !0);
893
- };
894
- E.appendTo = function (a) {
895
- return Z(arguments, this, !0, !1, !0);
896
- };
897
- E.before = function () {
898
- return Z(arguments, this, !1, !0);
899
- };
900
- E.insertAfter = function (a) {
901
- return Z(arguments, this, !0, !1, !1, !1, !1, !0);
902
- };
903
- E.insertBefore = function (a) {
904
- return Z(arguments, this, !0, !0);
905
- };
906
- E.prepend = function () {
907
- return Z(arguments, this, !1, !0, !0, !0, !0);
908
- };
909
- E.prependTo = function (a) {
910
- return Z(arguments, this, !0, !0, !0, !1, !1, !0);
911
- };
912
- E.replaceWith = function (a) {
913
- return this.before(a).remove();
914
- };
915
- E.replaceAll = function (a) {
916
- F(a).replaceWith(this);
917
- return this;
918
- };
919
- E.wrapAll = function (a) {
920
- a = F(a);
921
- for (var b = a[0]; b.children.length; ) b = b.firstElementChild;
922
- this.first().before(a);
923
- return this.appendTo(b);
924
- };
925
- E.wrap = function (a) {
926
- return this.each(function (b, c) {
927
- var d = F(a)[0];
928
- F(c).wrapAll(b ? d.cloneNode(!0) : d);
929
- });
930
- };
931
- E.wrapInner = function (a) {
932
- return this.each(function (b, c) {
933
- b = F(c);
934
- c = b.contents();
935
- c.length ? c.wrapAll(a) : b.append(a);
936
- });
937
- };
938
- E.has = function (a) {
939
- var b = C(a)
940
- ? function (b, d) {
941
- return v(a, d).length;
942
- }
943
- : function (b, d) {
944
- return d.contains(a);
945
- };
946
- return this.filter(b);
947
- };
948
- E.is = function (a) {
949
- var b = L(a);
950
- return u.call(this, function (a, d) {
951
- return b.call(a, d, a);
952
- });
953
- };
954
- E.next = function (a, b, c) {
955
- return M(F(P(O(this, "nextElementSibling", b, c))), a);
956
- };
957
- E.nextAll = function (a) {
958
- return this.next(a, !0);
959
- };
960
- E.nextUntil = function (a, b) {
961
- return this.next(b, !0, a);
962
- };
963
- E.not = function (a) {
964
- var b = L(a);
965
- return this.filter(function (c, d) {
966
- return (!C(a) || x(d)) && !b.call(d, c, d);
967
- });
968
- };
969
- E.parent = function (a) {
970
- return M(F(P(O(this, "parentNode"))), a);
971
- };
972
- E.index = function (a) {
973
- var b = a ? F(a)[0] : this[0];
974
- a = a ? this : F(b).parent().children();
975
- return ha.call(a, b);
976
- };
977
- E.closest = function (a) {
978
- var b = this.filter(a);
979
- if (b.length) return b;
980
- var c = this.parent();
981
- return c.length ? c.closest(a) : b;
982
- };
983
- E.parents = function (a, b) {
984
- return M(F(P(O(this, "parentElement", !0, b))), a);
985
- };
986
- E.parentsUntil = function (a, b) {
987
- return this.parents(b, a);
988
- };
989
- E.prev = function (a, b, c) {
990
- return M(F(P(O(this, "previousElementSibling", b, c))), a);
991
- };
992
- E.prevAll = function (a) {
993
- return this.prev(a, !0);
994
- };
995
- E.prevUntil = function (a, b) {
996
- return this.prev(b, !0, a);
997
- };
998
- E.siblings = function (a) {
999
- return M(
1000
- F(
1001
- P(
1002
- O(this, function (a) {
1003
- return F(a).parent().children().not(a);
1004
- })
1005
- )
1006
- ),
1007
- a
1008
- );
1009
- };
1010
- m.cash = m.$ = F;
1011
- })();