@novnc/novnc 1.3.0 → 1.4.0-beta

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 (64) hide show
  1. package/AUTHORS +2 -2
  2. package/LICENSE.txt +1 -1
  3. package/README.md +23 -7
  4. package/core/decoders/jpeg.js +141 -0
  5. package/core/decoders/raw.js +1 -1
  6. package/core/decoders/zrle.js +185 -0
  7. package/core/des.js +1 -1
  8. package/core/display.js +12 -0
  9. package/core/encodings.js +4 -0
  10. package/core/input/keyboard.js +10 -0
  11. package/core/ra2.js +567 -0
  12. package/core/rfb.js +469 -84
  13. package/core/util/browser.js +56 -7
  14. package/core/util/cursor.js +4 -0
  15. package/core/util/md5.js +79 -0
  16. package/docs/API.md +318 -157
  17. package/lib/base64.js +20 -34
  18. package/lib/decoders/copyrect.js +5 -12
  19. package/lib/decoders/hextile.js +17 -47
  20. package/lib/decoders/jpeg.js +149 -0
  21. package/lib/decoders/raw.js +10 -23
  22. package/lib/decoders/rre.js +5 -16
  23. package/lib/decoders/tight.js +13 -79
  24. package/lib/decoders/tightpng.js +8 -28
  25. package/lib/decoders/zrle.js +188 -0
  26. package/lib/deflator.js +9 -23
  27. package/lib/des.js +24 -37
  28. package/lib/display.js +62 -108
  29. package/lib/encodings.js +7 -8
  30. package/lib/inflator.js +6 -19
  31. package/lib/input/domkeytable.js +77 -48
  32. package/lib/input/fixedkeys.js +8 -3
  33. package/lib/input/gesturehandler.js +86 -153
  34. package/lib/input/keyboard.js +62 -91
  35. package/lib/input/keysym.js +14 -270
  36. package/lib/input/keysymdef.js +5 -7
  37. package/lib/input/util.js +43 -85
  38. package/lib/input/vkeys.js +0 -3
  39. package/lib/input/xtscancodes.js +1 -168
  40. package/lib/ra2.js +1005 -0
  41. package/lib/rfb.js +795 -923
  42. package/lib/util/browser.js +66 -29
  43. package/lib/util/cursor.js +29 -66
  44. package/lib/util/element.js +3 -5
  45. package/lib/util/events.js +23 -30
  46. package/lib/util/eventtarget.js +5 -14
  47. package/lib/util/int.js +1 -2
  48. package/lib/util/logging.js +1 -19
  49. package/lib/util/md5.js +77 -0
  50. package/lib/util/strings.js +3 -5
  51. package/lib/vendor/pako/lib/utils/common.js +8 -17
  52. package/lib/vendor/pako/lib/zlib/adler32.js +3 -7
  53. package/lib/vendor/pako/lib/zlib/constants.js +2 -5
  54. package/lib/vendor/pako/lib/zlib/crc32.js +5 -12
  55. package/lib/vendor/pako/lib/zlib/deflate.js +213 -618
  56. package/lib/vendor/pako/lib/zlib/gzheader.js +1 -13
  57. package/lib/vendor/pako/lib/zlib/inffast.js +60 -176
  58. package/lib/vendor/pako/lib/zlib/inflate.js +398 -888
  59. package/lib/vendor/pako/lib/zlib/inftrees.js +63 -169
  60. package/lib/vendor/pako/lib/zlib/messages.js +1 -11
  61. package/lib/vendor/pako/lib/zlib/trees.js +246 -588
  62. package/lib/vendor/pako/lib/zlib/zstream.js +2 -18
  63. package/lib/websock.js +37 -88
  64. package/package.json +32 -35
@@ -4,13 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
-
7
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
8
8
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
9
-
10
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
11
-
12
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
13
-
9
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
10
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
11
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
12
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
14
13
  /*
15
14
  * noVNC: HTML5 VNC client
16
15
  * Copyright (C) 2019 The noVNC Authors
@@ -21,17 +20,14 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
21
20
  var EventTargetMixin = /*#__PURE__*/function () {
22
21
  function EventTargetMixin() {
23
22
  _classCallCheck(this, EventTargetMixin);
24
-
25
23
  this._listeners = new Map();
26
24
  }
27
-
28
25
  _createClass(EventTargetMixin, [{
29
26
  key: "addEventListener",
30
27
  value: function addEventListener(type, callback) {
31
28
  if (!this._listeners.has(type)) {
32
29
  this._listeners.set(type, new Set());
33
30
  }
34
-
35
31
  this._listeners.get(type).add(callback);
36
32
  }
37
33
  }, {
@@ -45,20 +41,15 @@ var EventTargetMixin = /*#__PURE__*/function () {
45
41
  key: "dispatchEvent",
46
42
  value: function dispatchEvent(event) {
47
43
  var _this = this;
48
-
49
44
  if (!this._listeners.has(event.type)) {
50
45
  return true;
51
46
  }
52
-
53
47
  this._listeners.get(event.type).forEach(function (callback) {
54
48
  return callback.call(_this, event);
55
49
  });
56
-
57
50
  return !event.defaultPrevented;
58
51
  }
59
52
  }]);
60
-
61
53
  return EventTargetMixin;
62
54
  }();
63
-
64
55
  exports["default"] = EventTargetMixin;
package/lib/util/int.js CHANGED
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.toSigned32bit = toSigned32bit;
7
7
  exports.toUnsigned32bit = toUnsigned32bit;
8
-
9
8
  /*
10
9
  * noVNC: HTML5 VNC client
11
10
  * Copyright (C) 2020 The noVNC Authors
@@ -13,10 +12,10 @@ exports.toUnsigned32bit = toUnsigned32bit;
13
12
  *
14
13
  * See README.md for usage and integration instructions.
15
14
  */
15
+
16
16
  function toUnsigned32bit(toConvert) {
17
17
  return toConvert >>> 0;
18
18
  }
19
-
20
19
  function toSigned32bit(toConvert) {
21
20
  return toConvert | 0;
22
21
  }
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.Warn = exports.Info = exports.Error = exports.Debug = void 0;
7
7
  exports.getLogging = getLogging;
8
8
  exports.initLogging = initLogging;
9
-
10
9
  /*
11
10
  * noVNC: HTML5 VNC client
12
11
  * Copyright (C) 2019 The noVNC Authors
@@ -18,62 +17,45 @@ exports.initLogging = initLogging;
18
17
  /*
19
18
  * Logging/debug routines
20
19
  */
21
- var _logLevel = 'warn';
22
20
 
21
+ var _logLevel = 'warn';
23
22
  var Debug = function Debug() {};
24
-
25
23
  exports.Debug = Debug;
26
-
27
24
  var Info = function Info() {};
28
-
29
25
  exports.Info = Info;
30
-
31
26
  var Warn = function Warn() {};
32
-
33
27
  exports.Warn = Warn;
34
-
35
28
  var Error = function Error() {};
36
-
37
29
  exports.Error = Error;
38
-
39
30
  function initLogging(level) {
40
31
  if (typeof level === 'undefined') {
41
32
  level = _logLevel;
42
33
  } else {
43
34
  _logLevel = level;
44
35
  }
45
-
46
36
  exports.Debug = Debug = exports.Info = Info = exports.Warn = Warn = exports.Error = Error = function Error() {};
47
-
48
37
  if (typeof window.console !== "undefined") {
49
38
  /* eslint-disable no-console, no-fallthrough */
50
39
  switch (level) {
51
40
  case 'debug':
52
41
  exports.Debug = Debug = console.debug.bind(window.console);
53
-
54
42
  case 'info':
55
43
  exports.Info = Info = console.info.bind(window.console);
56
-
57
44
  case 'warn':
58
45
  exports.Warn = Warn = console.warn.bind(window.console);
59
-
60
46
  case 'error':
61
47
  exports.Error = Error = console.error.bind(window.console);
62
-
63
48
  case 'none':
64
49
  break;
65
-
66
50
  default:
67
51
  throw new window.Error("invalid logging type '" + level + "'");
68
52
  }
69
53
  /* eslint-enable no-console, no-fallthrough */
70
-
71
54
  }
72
55
  }
73
56
 
74
57
  function getLogging() {
75
58
  return _logLevel;
76
59
  }
77
-
78
60
  // Initialize logging level
79
61
  initLogging();
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.MD5 = MD5;
7
+ /*
8
+ * noVNC: HTML5 VNC client
9
+ * Copyright (C) 2021 The noVNC Authors
10
+ * Licensed under MPL 2.0 (see LICENSE.txt)
11
+ *
12
+ * See README.md for usage and integration instructions.
13
+ */
14
+
15
+ /*
16
+ * Performs MD5 hashing on a string of binary characters, returns an array of bytes
17
+ */
18
+
19
+ function MD5(d) {
20
+ var r = M(V(Y(X(d), 8 * d.length)));
21
+ return r;
22
+ }
23
+ function M(d) {
24
+ var f = new Uint8Array(d.length);
25
+ for (var i = 0; i < d.length; i++) {
26
+ f[i] = d.charCodeAt(i);
27
+ }
28
+ return f;
29
+ }
30
+ function X(d) {
31
+ var r = Array(d.length >> 2);
32
+ for (var m = 0; m < r.length; m++) r[m] = 0;
33
+ for (var _m = 0; _m < 8 * d.length; _m += 8) r[_m >> 5] |= (255 & d.charCodeAt(_m / 8)) << _m % 32;
34
+ return r;
35
+ }
36
+ function V(d) {
37
+ var r = "";
38
+ for (var m = 0; m < 32 * d.length; m += 8) r += String.fromCharCode(d[m >> 5] >>> m % 32 & 255);
39
+ return r;
40
+ }
41
+ function Y(d, g) {
42
+ d[g >> 5] |= 128 << g % 32, d[14 + (g + 64 >>> 9 << 4)] = g;
43
+ var m = 1732584193,
44
+ f = -271733879,
45
+ r = -1732584194,
46
+ i = 271733878;
47
+ for (var n = 0; n < d.length; n += 16) {
48
+ var h = m,
49
+ t = f,
50
+ _g = r,
51
+ e = i;
52
+ f = ii(f = ii(f = ii(f = ii(f = hh(f = hh(f = hh(f = hh(f = gg(f = gg(f = gg(f = gg(f = ff(f = ff(f = ff(f = ff(f, r = ff(r, i = ff(i, m = ff(m, f, r, i, d[n + 0], 7, -680876936), f, r, d[n + 1], 12, -389564586), m, f, d[n + 2], 17, 606105819), i, m, d[n + 3], 22, -1044525330), r = ff(r, i = ff(i, m = ff(m, f, r, i, d[n + 4], 7, -176418897), f, r, d[n + 5], 12, 1200080426), m, f, d[n + 6], 17, -1473231341), i, m, d[n + 7], 22, -45705983), r = ff(r, i = ff(i, m = ff(m, f, r, i, d[n + 8], 7, 1770035416), f, r, d[n + 9], 12, -1958414417), m, f, d[n + 10], 17, -42063), i, m, d[n + 11], 22, -1990404162), r = ff(r, i = ff(i, m = ff(m, f, r, i, d[n + 12], 7, 1804603682), f, r, d[n + 13], 12, -40341101), m, f, d[n + 14], 17, -1502002290), i, m, d[n + 15], 22, 1236535329), r = gg(r, i = gg(i, m = gg(m, f, r, i, d[n + 1], 5, -165796510), f, r, d[n + 6], 9, -1069501632), m, f, d[n + 11], 14, 643717713), i, m, d[n + 0], 20, -373897302), r = gg(r, i = gg(i, m = gg(m, f, r, i, d[n + 5], 5, -701558691), f, r, d[n + 10], 9, 38016083), m, f, d[n + 15], 14, -660478335), i, m, d[n + 4], 20, -405537848), r = gg(r, i = gg(i, m = gg(m, f, r, i, d[n + 9], 5, 568446438), f, r, d[n + 14], 9, -1019803690), m, f, d[n + 3], 14, -187363961), i, m, d[n + 8], 20, 1163531501), r = gg(r, i = gg(i, m = gg(m, f, r, i, d[n + 13], 5, -1444681467), f, r, d[n + 2], 9, -51403784), m, f, d[n + 7], 14, 1735328473), i, m, d[n + 12], 20, -1926607734), r = hh(r, i = hh(i, m = hh(m, f, r, i, d[n + 5], 4, -378558), f, r, d[n + 8], 11, -2022574463), m, f, d[n + 11], 16, 1839030562), i, m, d[n + 14], 23, -35309556), r = hh(r, i = hh(i, m = hh(m, f, r, i, d[n + 1], 4, -1530992060), f, r, d[n + 4], 11, 1272893353), m, f, d[n + 7], 16, -155497632), i, m, d[n + 10], 23, -1094730640), r = hh(r, i = hh(i, m = hh(m, f, r, i, d[n + 13], 4, 681279174), f, r, d[n + 0], 11, -358537222), m, f, d[n + 3], 16, -722521979), i, m, d[n + 6], 23, 76029189), r = hh(r, i = hh(i, m = hh(m, f, r, i, d[n + 9], 4, -640364487), f, r, d[n + 12], 11, -421815835), m, f, d[n + 15], 16, 530742520), i, m, d[n + 2], 23, -995338651), r = ii(r, i = ii(i, m = ii(m, f, r, i, d[n + 0], 6, -198630844), f, r, d[n + 7], 10, 1126891415), m, f, d[n + 14], 15, -1416354905), i, m, d[n + 5], 21, -57434055), r = ii(r, i = ii(i, m = ii(m, f, r, i, d[n + 12], 6, 1700485571), f, r, d[n + 3], 10, -1894986606), m, f, d[n + 10], 15, -1051523), i, m, d[n + 1], 21, -2054922799), r = ii(r, i = ii(i, m = ii(m, f, r, i, d[n + 8], 6, 1873313359), f, r, d[n + 15], 10, -30611744), m, f, d[n + 6], 15, -1560198380), i, m, d[n + 13], 21, 1309151649), r = ii(r, i = ii(i, m = ii(m, f, r, i, d[n + 4], 6, -145523070), f, r, d[n + 11], 10, -1120210379), m, f, d[n + 2], 15, 718787259), i, m, d[n + 9], 21, -343485551), m = add(m, h), f = add(f, t), r = add(r, _g), i = add(i, e);
53
+ }
54
+ return Array(m, f, r, i);
55
+ }
56
+ function cmn(d, g, m, f, r, i) {
57
+ return add(rol(add(add(g, d), add(f, i)), r), m);
58
+ }
59
+ function ff(d, g, m, f, r, i, n) {
60
+ return cmn(g & m | ~g & f, d, g, r, i, n);
61
+ }
62
+ function gg(d, g, m, f, r, i, n) {
63
+ return cmn(g & f | m & ~f, d, g, r, i, n);
64
+ }
65
+ function hh(d, g, m, f, r, i, n) {
66
+ return cmn(g ^ m ^ f, d, g, r, i, n);
67
+ }
68
+ function ii(d, g, m, f, r, i, n) {
69
+ return cmn(m ^ (g | ~f), d, g, r, i, n);
70
+ }
71
+ function add(d, g) {
72
+ var m = (65535 & d) + (65535 & g);
73
+ return (d >> 16) + (g >> 16) + (m >> 16) << 16 | 65535 & m;
74
+ }
75
+ function rol(d, g) {
76
+ return d << g | d >>> 32 - g;
77
+ }
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.decodeUTF8 = decodeUTF8;
7
7
  exports.encodeUTF8 = encodeUTF8;
8
-
9
8
  /*
10
9
  * noVNC: HTML5 VNC client
11
10
  * Copyright (C) 2019 The noVNC Authors
@@ -13,10 +12,10 @@ exports.encodeUTF8 = encodeUTF8;
13
12
  *
14
13
  * See README.md for usage and integration instructions.
15
14
  */
15
+
16
16
  // Decode from UTF-8
17
17
  function decodeUTF8(utf8string) {
18
18
  var allowLatin1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
19
-
20
19
  try {
21
20
  return decodeURIComponent(escape(utf8string));
22
21
  } catch (e) {
@@ -27,12 +26,11 @@ function decodeUTF8(utf8string) {
27
26
  return utf8string;
28
27
  }
29
28
  }
30
-
31
29
  throw e;
32
30
  }
33
- } // Encode to UTF-8
34
-
31
+ }
35
32
 
33
+ // Encode to UTF-8
36
34
  function encodeUTF8(DOMString) {
37
35
  return unescape(encodeURIComponent(DOMString));
38
36
  }
@@ -7,58 +7,49 @@ exports.Buf8 = exports.Buf32 = exports.Buf16 = void 0;
7
7
  exports.arraySet = arraySet;
8
8
  exports.flattenChunks = flattenChunks;
9
9
  exports.shrinkBuf = shrinkBuf;
10
-
11
10
  // reduce buffer size, avoiding mem copy
12
11
  function shrinkBuf(buf, size) {
13
12
  if (buf.length === size) {
14
13
  return buf;
15
14
  }
16
-
17
15
  if (buf.subarray) {
18
16
  return buf.subarray(0, size);
19
17
  }
20
-
21
18
  buf.length = size;
22
19
  return buf;
23
20
  }
24
-
25
21
  ;
26
-
27
22
  function arraySet(dest, src, src_offs, len, dest_offs) {
28
23
  if (src.subarray && dest.subarray) {
29
24
  dest.set(src.subarray(src_offs, src_offs + len), dest_offs);
30
25
  return;
31
- } // Fallback to ordinary array
32
-
33
-
26
+ }
27
+ // Fallback to ordinary array
34
28
  for (var i = 0; i < len; i++) {
35
29
  dest[dest_offs + i] = src[src_offs + i];
36
30
  }
37
- } // Join array of chunks to single array.
38
-
31
+ }
39
32
 
33
+ // Join array of chunks to single array.
40
34
  function flattenChunks(chunks) {
41
- var i, l, len, pos, chunk, result; // calculate data length
35
+ var i, l, len, pos, chunk, result;
42
36
 
37
+ // calculate data length
43
38
  len = 0;
44
-
45
39
  for (i = 0, l = chunks.length; i < l; i++) {
46
40
  len += chunks[i].length;
47
- } // join chunks
48
-
41
+ }
49
42
 
43
+ // join chunks
50
44
  result = new Uint8Array(len);
51
45
  pos = 0;
52
-
53
46
  for (i = 0, l = chunks.length; i < l; i++) {
54
47
  chunk = chunks[i];
55
48
  result.set(chunk, pos);
56
49
  pos += chunk.length;
57
50
  }
58
-
59
51
  return result;
60
52
  }
61
-
62
53
  var Buf8 = Uint8Array;
63
54
  exports.Buf8 = Buf8;
64
55
  var Buf16 = Uint16Array;
@@ -4,30 +4,26 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = adler32;
7
-
8
7
  // Note: adler32 takes 12% for level 0 and 2% for level 6.
9
8
  // It doesn't worth to make additional optimizationa as in original.
10
9
  // Small size is preferable.
10
+
11
11
  function adler32(adler, buf, len, pos) {
12
12
  var s1 = adler & 0xffff | 0,
13
- s2 = adler >>> 16 & 0xffff | 0,
14
- n = 0;
15
-
13
+ s2 = adler >>> 16 & 0xffff | 0,
14
+ n = 0;
16
15
  while (len !== 0) {
17
16
  // Set limit ~ twice less than 5552, to keep
18
17
  // s2 in 31-bits, because we force signed ints.
19
18
  // in other case %= will fail.
20
19
  n = len > 2000 ? 2000 : len;
21
20
  len -= n;
22
-
23
21
  do {
24
22
  s1 = s1 + buf[pos++] | 0;
25
23
  s2 = s2 + s1 | 0;
26
24
  } while (--n);
27
-
28
25
  s1 %= 65521;
29
26
  s2 %= 65521;
30
27
  }
31
-
32
28
  return s1 | s2 << 16 | 0;
33
29
  }
@@ -13,7 +13,6 @@ var _default = {
13
13
  Z_FINISH: 4,
14
14
  Z_BLOCK: 5,
15
15
  Z_TREES: 6,
16
-
17
16
  /* Return codes for the compression/decompression functions. Negative values
18
17
  * are errors, positive values are used for special but normal events.
19
18
  */
@@ -37,15 +36,13 @@ var _default = {
37
36
  Z_RLE: 3,
38
37
  Z_FIXED: 4,
39
38
  Z_DEFAULT_STRATEGY: 0,
40
-
41
39
  /* Possible values of the data_type field (though see inflate()) */
42
40
  Z_BINARY: 0,
43
41
  Z_TEXT: 1,
44
42
  //Z_ASCII: 1, // = Z_TEXT (deprecated)
45
43
  Z_UNKNOWN: 2,
46
-
47
44
  /* The deflate compression method */
48
- Z_DEFLATED: 8 //Z_NULL: null // Use -1 or null inline, depending on var type
49
-
45
+ Z_DEFLATED: 8
46
+ //Z_NULL: null // Use -1 or null inline, depending on var type
50
47
  };
51
48
  exports["default"] = _default;
@@ -4,39 +4,32 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = makeTable;
7
-
8
7
  // Note: we can't get significant speed boost here.
9
8
  // So write code to minimize size - no pregenerated tables
10
9
  // and array tools dependencies.
10
+
11
11
  // Use ordinary array, since untyped makes no boost here
12
12
  function makeTable() {
13
13
  var c,
14
- table = [];
15
-
14
+ table = [];
16
15
  for (var n = 0; n < 256; n++) {
17
16
  c = n;
18
-
19
17
  for (var k = 0; k < 8; k++) {
20
18
  c = c & 1 ? 0xEDB88320 ^ c >>> 1 : c >>> 1;
21
19
  }
22
-
23
20
  table[n] = c;
24
21
  }
25
-
26
22
  return table;
27
- } // Create table on load. Just 255 signed longs. Not a problem.
28
-
23
+ }
29
24
 
25
+ // Create table on load. Just 255 signed longs. Not a problem.
30
26
  var crcTable = makeTable();
31
-
32
27
  function crc32(crc, buf, len, pos) {
33
28
  var t = crcTable,
34
- end = pos + len;
29
+ end = pos + len;
35
30
  crc ^= -1;
36
-
37
31
  for (var i = pos; i < end; i++) {
38
32
  crc = crc >>> 8 ^ t[(crc ^ buf[i]) & 0xFF];
39
33
  }
40
-
41
34
  return crc ^ -1; // >>> 0;
42
35
  }