itwillsync 1.7.1 → 1.8.1

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.
@@ -2235,7 +2235,7 @@ var require_websocket = __commonJS({
2235
2235
  var http = __require("http");
2236
2236
  var net = __require("net");
2237
2237
  var tls = __require("tls");
2238
- var { randomBytes: randomBytes3, createHash } = __require("crypto");
2238
+ var { randomBytes: randomBytes3, createHash: createHash2 } = __require("crypto");
2239
2239
  var { Duplex, Readable } = __require("stream");
2240
2240
  var { URL: URL2 } = __require("url");
2241
2241
  var PerMessageDeflate = require_permessage_deflate();
@@ -2895,7 +2895,7 @@ var require_websocket = __commonJS({
2895
2895
  abortHandshake(websocket, socket, "Invalid Upgrade header");
2896
2896
  return;
2897
2897
  }
2898
- const digest = createHash("sha1").update(key + GUID).digest("base64");
2898
+ const digest = createHash2("sha1").update(key + GUID).digest("base64");
2899
2899
  if (res.headers["sec-websocket-accept"] !== digest) {
2900
2900
  abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header");
2901
2901
  return;
@@ -3262,7 +3262,7 @@ var require_websocket_server = __commonJS({
3262
3262
  var EventEmitter3 = __require("events");
3263
3263
  var http = __require("http");
3264
3264
  var { Duplex } = __require("stream");
3265
- var { createHash } = __require("crypto");
3265
+ var { createHash: createHash2 } = __require("crypto");
3266
3266
  var extension = require_extension();
3267
3267
  var PerMessageDeflate = require_permessage_deflate();
3268
3268
  var subprotocol = require_subprotocol();
@@ -3563,7 +3563,7 @@ var require_websocket_server = __commonJS({
3563
3563
  );
3564
3564
  }
3565
3565
  if (this._state > RUNNING) return abortHandshake(socket, 503);
3566
- const digest = createHash("sha1").update(key + GUID).digest("base64");
3566
+ const digest = createHash2("sha1").update(key + GUID).digest("base64");
3567
3567
  const headers = [
3568
3568
  "HTTP/1.1 101 Switching Protocols",
3569
3569
  "Upgrade: websocket",
@@ -3648,6 +3648,2231 @@ var require_websocket_server = __commonJS({
3648
3648
  }
3649
3649
  });
3650
3650
 
3651
+ // ../../node_modules/.pnpm/tweetnacl@1.0.3/node_modules/tweetnacl/nacl-fast.js
3652
+ var require_nacl_fast = __commonJS({
3653
+ "../../node_modules/.pnpm/tweetnacl@1.0.3/node_modules/tweetnacl/nacl-fast.js"(exports, module) {
3654
+ "use strict";
3655
+ (function(nacl2) {
3656
+ "use strict";
3657
+ var gf = function(init) {
3658
+ var i, r = new Float64Array(16);
3659
+ if (init) for (i = 0; i < init.length; i++) r[i] = init[i];
3660
+ return r;
3661
+ };
3662
+ var randombytes = function() {
3663
+ throw new Error("no PRNG");
3664
+ };
3665
+ var _0 = new Uint8Array(16);
3666
+ var _9 = new Uint8Array(32);
3667
+ _9[0] = 9;
3668
+ var gf0 = gf(), gf1 = gf([1]), _121665 = gf([56129, 1]), D = gf([30883, 4953, 19914, 30187, 55467, 16705, 2637, 112, 59544, 30585, 16505, 36039, 65139, 11119, 27886, 20995]), D2 = gf([61785, 9906, 39828, 60374, 45398, 33411, 5274, 224, 53552, 61171, 33010, 6542, 64743, 22239, 55772, 9222]), X = gf([54554, 36645, 11616, 51542, 42930, 38181, 51040, 26924, 56412, 64982, 57905, 49316, 21502, 52590, 14035, 8553]), Y = gf([26200, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214]), I = gf([41136, 18958, 6951, 50414, 58488, 44335, 6150, 12099, 55207, 15867, 153, 11085, 57099, 20417, 9344, 11139]);
3669
+ function ts64(x, i, h, l) {
3670
+ x[i] = h >> 24 & 255;
3671
+ x[i + 1] = h >> 16 & 255;
3672
+ x[i + 2] = h >> 8 & 255;
3673
+ x[i + 3] = h & 255;
3674
+ x[i + 4] = l >> 24 & 255;
3675
+ x[i + 5] = l >> 16 & 255;
3676
+ x[i + 6] = l >> 8 & 255;
3677
+ x[i + 7] = l & 255;
3678
+ }
3679
+ function vn(x, xi, y, yi, n) {
3680
+ var i, d = 0;
3681
+ for (i = 0; i < n; i++) d |= x[xi + i] ^ y[yi + i];
3682
+ return (1 & d - 1 >>> 8) - 1;
3683
+ }
3684
+ function crypto_verify_16(x, xi, y, yi) {
3685
+ return vn(x, xi, y, yi, 16);
3686
+ }
3687
+ function crypto_verify_32(x, xi, y, yi) {
3688
+ return vn(x, xi, y, yi, 32);
3689
+ }
3690
+ function core_salsa20(o, p, k, c) {
3691
+ var j0 = c[0] & 255 | (c[1] & 255) << 8 | (c[2] & 255) << 16 | (c[3] & 255) << 24, j1 = k[0] & 255 | (k[1] & 255) << 8 | (k[2] & 255) << 16 | (k[3] & 255) << 24, j2 = k[4] & 255 | (k[5] & 255) << 8 | (k[6] & 255) << 16 | (k[7] & 255) << 24, j3 = k[8] & 255 | (k[9] & 255) << 8 | (k[10] & 255) << 16 | (k[11] & 255) << 24, j4 = k[12] & 255 | (k[13] & 255) << 8 | (k[14] & 255) << 16 | (k[15] & 255) << 24, j5 = c[4] & 255 | (c[5] & 255) << 8 | (c[6] & 255) << 16 | (c[7] & 255) << 24, j6 = p[0] & 255 | (p[1] & 255) << 8 | (p[2] & 255) << 16 | (p[3] & 255) << 24, j7 = p[4] & 255 | (p[5] & 255) << 8 | (p[6] & 255) << 16 | (p[7] & 255) << 24, j8 = p[8] & 255 | (p[9] & 255) << 8 | (p[10] & 255) << 16 | (p[11] & 255) << 24, j9 = p[12] & 255 | (p[13] & 255) << 8 | (p[14] & 255) << 16 | (p[15] & 255) << 24, j10 = c[8] & 255 | (c[9] & 255) << 8 | (c[10] & 255) << 16 | (c[11] & 255) << 24, j11 = k[16] & 255 | (k[17] & 255) << 8 | (k[18] & 255) << 16 | (k[19] & 255) << 24, j12 = k[20] & 255 | (k[21] & 255) << 8 | (k[22] & 255) << 16 | (k[23] & 255) << 24, j13 = k[24] & 255 | (k[25] & 255) << 8 | (k[26] & 255) << 16 | (k[27] & 255) << 24, j14 = k[28] & 255 | (k[29] & 255) << 8 | (k[30] & 255) << 16 | (k[31] & 255) << 24, j15 = c[12] & 255 | (c[13] & 255) << 8 | (c[14] & 255) << 16 | (c[15] & 255) << 24;
3692
+ var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, x15 = j15, u;
3693
+ for (var i = 0; i < 20; i += 2) {
3694
+ u = x0 + x12 | 0;
3695
+ x4 ^= u << 7 | u >>> 32 - 7;
3696
+ u = x4 + x0 | 0;
3697
+ x8 ^= u << 9 | u >>> 32 - 9;
3698
+ u = x8 + x4 | 0;
3699
+ x12 ^= u << 13 | u >>> 32 - 13;
3700
+ u = x12 + x8 | 0;
3701
+ x0 ^= u << 18 | u >>> 32 - 18;
3702
+ u = x5 + x1 | 0;
3703
+ x9 ^= u << 7 | u >>> 32 - 7;
3704
+ u = x9 + x5 | 0;
3705
+ x13 ^= u << 9 | u >>> 32 - 9;
3706
+ u = x13 + x9 | 0;
3707
+ x1 ^= u << 13 | u >>> 32 - 13;
3708
+ u = x1 + x13 | 0;
3709
+ x5 ^= u << 18 | u >>> 32 - 18;
3710
+ u = x10 + x6 | 0;
3711
+ x14 ^= u << 7 | u >>> 32 - 7;
3712
+ u = x14 + x10 | 0;
3713
+ x2 ^= u << 9 | u >>> 32 - 9;
3714
+ u = x2 + x14 | 0;
3715
+ x6 ^= u << 13 | u >>> 32 - 13;
3716
+ u = x6 + x2 | 0;
3717
+ x10 ^= u << 18 | u >>> 32 - 18;
3718
+ u = x15 + x11 | 0;
3719
+ x3 ^= u << 7 | u >>> 32 - 7;
3720
+ u = x3 + x15 | 0;
3721
+ x7 ^= u << 9 | u >>> 32 - 9;
3722
+ u = x7 + x3 | 0;
3723
+ x11 ^= u << 13 | u >>> 32 - 13;
3724
+ u = x11 + x7 | 0;
3725
+ x15 ^= u << 18 | u >>> 32 - 18;
3726
+ u = x0 + x3 | 0;
3727
+ x1 ^= u << 7 | u >>> 32 - 7;
3728
+ u = x1 + x0 | 0;
3729
+ x2 ^= u << 9 | u >>> 32 - 9;
3730
+ u = x2 + x1 | 0;
3731
+ x3 ^= u << 13 | u >>> 32 - 13;
3732
+ u = x3 + x2 | 0;
3733
+ x0 ^= u << 18 | u >>> 32 - 18;
3734
+ u = x5 + x4 | 0;
3735
+ x6 ^= u << 7 | u >>> 32 - 7;
3736
+ u = x6 + x5 | 0;
3737
+ x7 ^= u << 9 | u >>> 32 - 9;
3738
+ u = x7 + x6 | 0;
3739
+ x4 ^= u << 13 | u >>> 32 - 13;
3740
+ u = x4 + x7 | 0;
3741
+ x5 ^= u << 18 | u >>> 32 - 18;
3742
+ u = x10 + x9 | 0;
3743
+ x11 ^= u << 7 | u >>> 32 - 7;
3744
+ u = x11 + x10 | 0;
3745
+ x8 ^= u << 9 | u >>> 32 - 9;
3746
+ u = x8 + x11 | 0;
3747
+ x9 ^= u << 13 | u >>> 32 - 13;
3748
+ u = x9 + x8 | 0;
3749
+ x10 ^= u << 18 | u >>> 32 - 18;
3750
+ u = x15 + x14 | 0;
3751
+ x12 ^= u << 7 | u >>> 32 - 7;
3752
+ u = x12 + x15 | 0;
3753
+ x13 ^= u << 9 | u >>> 32 - 9;
3754
+ u = x13 + x12 | 0;
3755
+ x14 ^= u << 13 | u >>> 32 - 13;
3756
+ u = x14 + x13 | 0;
3757
+ x15 ^= u << 18 | u >>> 32 - 18;
3758
+ }
3759
+ x0 = x0 + j0 | 0;
3760
+ x1 = x1 + j1 | 0;
3761
+ x2 = x2 + j2 | 0;
3762
+ x3 = x3 + j3 | 0;
3763
+ x4 = x4 + j4 | 0;
3764
+ x5 = x5 + j5 | 0;
3765
+ x6 = x6 + j6 | 0;
3766
+ x7 = x7 + j7 | 0;
3767
+ x8 = x8 + j8 | 0;
3768
+ x9 = x9 + j9 | 0;
3769
+ x10 = x10 + j10 | 0;
3770
+ x11 = x11 + j11 | 0;
3771
+ x12 = x12 + j12 | 0;
3772
+ x13 = x13 + j13 | 0;
3773
+ x14 = x14 + j14 | 0;
3774
+ x15 = x15 + j15 | 0;
3775
+ o[0] = x0 >>> 0 & 255;
3776
+ o[1] = x0 >>> 8 & 255;
3777
+ o[2] = x0 >>> 16 & 255;
3778
+ o[3] = x0 >>> 24 & 255;
3779
+ o[4] = x1 >>> 0 & 255;
3780
+ o[5] = x1 >>> 8 & 255;
3781
+ o[6] = x1 >>> 16 & 255;
3782
+ o[7] = x1 >>> 24 & 255;
3783
+ o[8] = x2 >>> 0 & 255;
3784
+ o[9] = x2 >>> 8 & 255;
3785
+ o[10] = x2 >>> 16 & 255;
3786
+ o[11] = x2 >>> 24 & 255;
3787
+ o[12] = x3 >>> 0 & 255;
3788
+ o[13] = x3 >>> 8 & 255;
3789
+ o[14] = x3 >>> 16 & 255;
3790
+ o[15] = x3 >>> 24 & 255;
3791
+ o[16] = x4 >>> 0 & 255;
3792
+ o[17] = x4 >>> 8 & 255;
3793
+ o[18] = x4 >>> 16 & 255;
3794
+ o[19] = x4 >>> 24 & 255;
3795
+ o[20] = x5 >>> 0 & 255;
3796
+ o[21] = x5 >>> 8 & 255;
3797
+ o[22] = x5 >>> 16 & 255;
3798
+ o[23] = x5 >>> 24 & 255;
3799
+ o[24] = x6 >>> 0 & 255;
3800
+ o[25] = x6 >>> 8 & 255;
3801
+ o[26] = x6 >>> 16 & 255;
3802
+ o[27] = x6 >>> 24 & 255;
3803
+ o[28] = x7 >>> 0 & 255;
3804
+ o[29] = x7 >>> 8 & 255;
3805
+ o[30] = x7 >>> 16 & 255;
3806
+ o[31] = x7 >>> 24 & 255;
3807
+ o[32] = x8 >>> 0 & 255;
3808
+ o[33] = x8 >>> 8 & 255;
3809
+ o[34] = x8 >>> 16 & 255;
3810
+ o[35] = x8 >>> 24 & 255;
3811
+ o[36] = x9 >>> 0 & 255;
3812
+ o[37] = x9 >>> 8 & 255;
3813
+ o[38] = x9 >>> 16 & 255;
3814
+ o[39] = x9 >>> 24 & 255;
3815
+ o[40] = x10 >>> 0 & 255;
3816
+ o[41] = x10 >>> 8 & 255;
3817
+ o[42] = x10 >>> 16 & 255;
3818
+ o[43] = x10 >>> 24 & 255;
3819
+ o[44] = x11 >>> 0 & 255;
3820
+ o[45] = x11 >>> 8 & 255;
3821
+ o[46] = x11 >>> 16 & 255;
3822
+ o[47] = x11 >>> 24 & 255;
3823
+ o[48] = x12 >>> 0 & 255;
3824
+ o[49] = x12 >>> 8 & 255;
3825
+ o[50] = x12 >>> 16 & 255;
3826
+ o[51] = x12 >>> 24 & 255;
3827
+ o[52] = x13 >>> 0 & 255;
3828
+ o[53] = x13 >>> 8 & 255;
3829
+ o[54] = x13 >>> 16 & 255;
3830
+ o[55] = x13 >>> 24 & 255;
3831
+ o[56] = x14 >>> 0 & 255;
3832
+ o[57] = x14 >>> 8 & 255;
3833
+ o[58] = x14 >>> 16 & 255;
3834
+ o[59] = x14 >>> 24 & 255;
3835
+ o[60] = x15 >>> 0 & 255;
3836
+ o[61] = x15 >>> 8 & 255;
3837
+ o[62] = x15 >>> 16 & 255;
3838
+ o[63] = x15 >>> 24 & 255;
3839
+ }
3840
+ function core_hsalsa20(o, p, k, c) {
3841
+ var j0 = c[0] & 255 | (c[1] & 255) << 8 | (c[2] & 255) << 16 | (c[3] & 255) << 24, j1 = k[0] & 255 | (k[1] & 255) << 8 | (k[2] & 255) << 16 | (k[3] & 255) << 24, j2 = k[4] & 255 | (k[5] & 255) << 8 | (k[6] & 255) << 16 | (k[7] & 255) << 24, j3 = k[8] & 255 | (k[9] & 255) << 8 | (k[10] & 255) << 16 | (k[11] & 255) << 24, j4 = k[12] & 255 | (k[13] & 255) << 8 | (k[14] & 255) << 16 | (k[15] & 255) << 24, j5 = c[4] & 255 | (c[5] & 255) << 8 | (c[6] & 255) << 16 | (c[7] & 255) << 24, j6 = p[0] & 255 | (p[1] & 255) << 8 | (p[2] & 255) << 16 | (p[3] & 255) << 24, j7 = p[4] & 255 | (p[5] & 255) << 8 | (p[6] & 255) << 16 | (p[7] & 255) << 24, j8 = p[8] & 255 | (p[9] & 255) << 8 | (p[10] & 255) << 16 | (p[11] & 255) << 24, j9 = p[12] & 255 | (p[13] & 255) << 8 | (p[14] & 255) << 16 | (p[15] & 255) << 24, j10 = c[8] & 255 | (c[9] & 255) << 8 | (c[10] & 255) << 16 | (c[11] & 255) << 24, j11 = k[16] & 255 | (k[17] & 255) << 8 | (k[18] & 255) << 16 | (k[19] & 255) << 24, j12 = k[20] & 255 | (k[21] & 255) << 8 | (k[22] & 255) << 16 | (k[23] & 255) << 24, j13 = k[24] & 255 | (k[25] & 255) << 8 | (k[26] & 255) << 16 | (k[27] & 255) << 24, j14 = k[28] & 255 | (k[29] & 255) << 8 | (k[30] & 255) << 16 | (k[31] & 255) << 24, j15 = c[12] & 255 | (c[13] & 255) << 8 | (c[14] & 255) << 16 | (c[15] & 255) << 24;
3842
+ var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7, x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14, x15 = j15, u;
3843
+ for (var i = 0; i < 20; i += 2) {
3844
+ u = x0 + x12 | 0;
3845
+ x4 ^= u << 7 | u >>> 32 - 7;
3846
+ u = x4 + x0 | 0;
3847
+ x8 ^= u << 9 | u >>> 32 - 9;
3848
+ u = x8 + x4 | 0;
3849
+ x12 ^= u << 13 | u >>> 32 - 13;
3850
+ u = x12 + x8 | 0;
3851
+ x0 ^= u << 18 | u >>> 32 - 18;
3852
+ u = x5 + x1 | 0;
3853
+ x9 ^= u << 7 | u >>> 32 - 7;
3854
+ u = x9 + x5 | 0;
3855
+ x13 ^= u << 9 | u >>> 32 - 9;
3856
+ u = x13 + x9 | 0;
3857
+ x1 ^= u << 13 | u >>> 32 - 13;
3858
+ u = x1 + x13 | 0;
3859
+ x5 ^= u << 18 | u >>> 32 - 18;
3860
+ u = x10 + x6 | 0;
3861
+ x14 ^= u << 7 | u >>> 32 - 7;
3862
+ u = x14 + x10 | 0;
3863
+ x2 ^= u << 9 | u >>> 32 - 9;
3864
+ u = x2 + x14 | 0;
3865
+ x6 ^= u << 13 | u >>> 32 - 13;
3866
+ u = x6 + x2 | 0;
3867
+ x10 ^= u << 18 | u >>> 32 - 18;
3868
+ u = x15 + x11 | 0;
3869
+ x3 ^= u << 7 | u >>> 32 - 7;
3870
+ u = x3 + x15 | 0;
3871
+ x7 ^= u << 9 | u >>> 32 - 9;
3872
+ u = x7 + x3 | 0;
3873
+ x11 ^= u << 13 | u >>> 32 - 13;
3874
+ u = x11 + x7 | 0;
3875
+ x15 ^= u << 18 | u >>> 32 - 18;
3876
+ u = x0 + x3 | 0;
3877
+ x1 ^= u << 7 | u >>> 32 - 7;
3878
+ u = x1 + x0 | 0;
3879
+ x2 ^= u << 9 | u >>> 32 - 9;
3880
+ u = x2 + x1 | 0;
3881
+ x3 ^= u << 13 | u >>> 32 - 13;
3882
+ u = x3 + x2 | 0;
3883
+ x0 ^= u << 18 | u >>> 32 - 18;
3884
+ u = x5 + x4 | 0;
3885
+ x6 ^= u << 7 | u >>> 32 - 7;
3886
+ u = x6 + x5 | 0;
3887
+ x7 ^= u << 9 | u >>> 32 - 9;
3888
+ u = x7 + x6 | 0;
3889
+ x4 ^= u << 13 | u >>> 32 - 13;
3890
+ u = x4 + x7 | 0;
3891
+ x5 ^= u << 18 | u >>> 32 - 18;
3892
+ u = x10 + x9 | 0;
3893
+ x11 ^= u << 7 | u >>> 32 - 7;
3894
+ u = x11 + x10 | 0;
3895
+ x8 ^= u << 9 | u >>> 32 - 9;
3896
+ u = x8 + x11 | 0;
3897
+ x9 ^= u << 13 | u >>> 32 - 13;
3898
+ u = x9 + x8 | 0;
3899
+ x10 ^= u << 18 | u >>> 32 - 18;
3900
+ u = x15 + x14 | 0;
3901
+ x12 ^= u << 7 | u >>> 32 - 7;
3902
+ u = x12 + x15 | 0;
3903
+ x13 ^= u << 9 | u >>> 32 - 9;
3904
+ u = x13 + x12 | 0;
3905
+ x14 ^= u << 13 | u >>> 32 - 13;
3906
+ u = x14 + x13 | 0;
3907
+ x15 ^= u << 18 | u >>> 32 - 18;
3908
+ }
3909
+ o[0] = x0 >>> 0 & 255;
3910
+ o[1] = x0 >>> 8 & 255;
3911
+ o[2] = x0 >>> 16 & 255;
3912
+ o[3] = x0 >>> 24 & 255;
3913
+ o[4] = x5 >>> 0 & 255;
3914
+ o[5] = x5 >>> 8 & 255;
3915
+ o[6] = x5 >>> 16 & 255;
3916
+ o[7] = x5 >>> 24 & 255;
3917
+ o[8] = x10 >>> 0 & 255;
3918
+ o[9] = x10 >>> 8 & 255;
3919
+ o[10] = x10 >>> 16 & 255;
3920
+ o[11] = x10 >>> 24 & 255;
3921
+ o[12] = x15 >>> 0 & 255;
3922
+ o[13] = x15 >>> 8 & 255;
3923
+ o[14] = x15 >>> 16 & 255;
3924
+ o[15] = x15 >>> 24 & 255;
3925
+ o[16] = x6 >>> 0 & 255;
3926
+ o[17] = x6 >>> 8 & 255;
3927
+ o[18] = x6 >>> 16 & 255;
3928
+ o[19] = x6 >>> 24 & 255;
3929
+ o[20] = x7 >>> 0 & 255;
3930
+ o[21] = x7 >>> 8 & 255;
3931
+ o[22] = x7 >>> 16 & 255;
3932
+ o[23] = x7 >>> 24 & 255;
3933
+ o[24] = x8 >>> 0 & 255;
3934
+ o[25] = x8 >>> 8 & 255;
3935
+ o[26] = x8 >>> 16 & 255;
3936
+ o[27] = x8 >>> 24 & 255;
3937
+ o[28] = x9 >>> 0 & 255;
3938
+ o[29] = x9 >>> 8 & 255;
3939
+ o[30] = x9 >>> 16 & 255;
3940
+ o[31] = x9 >>> 24 & 255;
3941
+ }
3942
+ function crypto_core_salsa20(out, inp, k, c) {
3943
+ core_salsa20(out, inp, k, c);
3944
+ }
3945
+ function crypto_core_hsalsa20(out, inp, k, c) {
3946
+ core_hsalsa20(out, inp, k, c);
3947
+ }
3948
+ var sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);
3949
+ function crypto_stream_salsa20_xor(c, cpos, m, mpos, b, n, k) {
3950
+ var z = new Uint8Array(16), x = new Uint8Array(64);
3951
+ var u, i;
3952
+ for (i = 0; i < 16; i++) z[i] = 0;
3953
+ for (i = 0; i < 8; i++) z[i] = n[i];
3954
+ while (b >= 64) {
3955
+ crypto_core_salsa20(x, z, k, sigma);
3956
+ for (i = 0; i < 64; i++) c[cpos + i] = m[mpos + i] ^ x[i];
3957
+ u = 1;
3958
+ for (i = 8; i < 16; i++) {
3959
+ u = u + (z[i] & 255) | 0;
3960
+ z[i] = u & 255;
3961
+ u >>>= 8;
3962
+ }
3963
+ b -= 64;
3964
+ cpos += 64;
3965
+ mpos += 64;
3966
+ }
3967
+ if (b > 0) {
3968
+ crypto_core_salsa20(x, z, k, sigma);
3969
+ for (i = 0; i < b; i++) c[cpos + i] = m[mpos + i] ^ x[i];
3970
+ }
3971
+ return 0;
3972
+ }
3973
+ function crypto_stream_salsa20(c, cpos, b, n, k) {
3974
+ var z = new Uint8Array(16), x = new Uint8Array(64);
3975
+ var u, i;
3976
+ for (i = 0; i < 16; i++) z[i] = 0;
3977
+ for (i = 0; i < 8; i++) z[i] = n[i];
3978
+ while (b >= 64) {
3979
+ crypto_core_salsa20(x, z, k, sigma);
3980
+ for (i = 0; i < 64; i++) c[cpos + i] = x[i];
3981
+ u = 1;
3982
+ for (i = 8; i < 16; i++) {
3983
+ u = u + (z[i] & 255) | 0;
3984
+ z[i] = u & 255;
3985
+ u >>>= 8;
3986
+ }
3987
+ b -= 64;
3988
+ cpos += 64;
3989
+ }
3990
+ if (b > 0) {
3991
+ crypto_core_salsa20(x, z, k, sigma);
3992
+ for (i = 0; i < b; i++) c[cpos + i] = x[i];
3993
+ }
3994
+ return 0;
3995
+ }
3996
+ function crypto_stream(c, cpos, d, n, k) {
3997
+ var s = new Uint8Array(32);
3998
+ crypto_core_hsalsa20(s, n, k, sigma);
3999
+ var sn = new Uint8Array(8);
4000
+ for (var i = 0; i < 8; i++) sn[i] = n[i + 16];
4001
+ return crypto_stream_salsa20(c, cpos, d, sn, s);
4002
+ }
4003
+ function crypto_stream_xor(c, cpos, m, mpos, d, n, k) {
4004
+ var s = new Uint8Array(32);
4005
+ crypto_core_hsalsa20(s, n, k, sigma);
4006
+ var sn = new Uint8Array(8);
4007
+ for (var i = 0; i < 8; i++) sn[i] = n[i + 16];
4008
+ return crypto_stream_salsa20_xor(c, cpos, m, mpos, d, sn, s);
4009
+ }
4010
+ var poly1305 = function(key) {
4011
+ this.buffer = new Uint8Array(16);
4012
+ this.r = new Uint16Array(10);
4013
+ this.h = new Uint16Array(10);
4014
+ this.pad = new Uint16Array(8);
4015
+ this.leftover = 0;
4016
+ this.fin = 0;
4017
+ var t0, t1, t2, t3, t4, t5, t6, t7;
4018
+ t0 = key[0] & 255 | (key[1] & 255) << 8;
4019
+ this.r[0] = t0 & 8191;
4020
+ t1 = key[2] & 255 | (key[3] & 255) << 8;
4021
+ this.r[1] = (t0 >>> 13 | t1 << 3) & 8191;
4022
+ t2 = key[4] & 255 | (key[5] & 255) << 8;
4023
+ this.r[2] = (t1 >>> 10 | t2 << 6) & 7939;
4024
+ t3 = key[6] & 255 | (key[7] & 255) << 8;
4025
+ this.r[3] = (t2 >>> 7 | t3 << 9) & 8191;
4026
+ t4 = key[8] & 255 | (key[9] & 255) << 8;
4027
+ this.r[4] = (t3 >>> 4 | t4 << 12) & 255;
4028
+ this.r[5] = t4 >>> 1 & 8190;
4029
+ t5 = key[10] & 255 | (key[11] & 255) << 8;
4030
+ this.r[6] = (t4 >>> 14 | t5 << 2) & 8191;
4031
+ t6 = key[12] & 255 | (key[13] & 255) << 8;
4032
+ this.r[7] = (t5 >>> 11 | t6 << 5) & 8065;
4033
+ t7 = key[14] & 255 | (key[15] & 255) << 8;
4034
+ this.r[8] = (t6 >>> 8 | t7 << 8) & 8191;
4035
+ this.r[9] = t7 >>> 5 & 127;
4036
+ this.pad[0] = key[16] & 255 | (key[17] & 255) << 8;
4037
+ this.pad[1] = key[18] & 255 | (key[19] & 255) << 8;
4038
+ this.pad[2] = key[20] & 255 | (key[21] & 255) << 8;
4039
+ this.pad[3] = key[22] & 255 | (key[23] & 255) << 8;
4040
+ this.pad[4] = key[24] & 255 | (key[25] & 255) << 8;
4041
+ this.pad[5] = key[26] & 255 | (key[27] & 255) << 8;
4042
+ this.pad[6] = key[28] & 255 | (key[29] & 255) << 8;
4043
+ this.pad[7] = key[30] & 255 | (key[31] & 255) << 8;
4044
+ };
4045
+ poly1305.prototype.blocks = function(m, mpos, bytes) {
4046
+ var hibit = this.fin ? 0 : 1 << 11;
4047
+ var t0, t1, t2, t3, t4, t5, t6, t7, c;
4048
+ var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;
4049
+ var h0 = this.h[0], h1 = this.h[1], h2 = this.h[2], h3 = this.h[3], h4 = this.h[4], h5 = this.h[5], h6 = this.h[6], h7 = this.h[7], h8 = this.h[8], h9 = this.h[9];
4050
+ var r0 = this.r[0], r1 = this.r[1], r2 = this.r[2], r3 = this.r[3], r4 = this.r[4], r5 = this.r[5], r6 = this.r[6], r7 = this.r[7], r8 = this.r[8], r9 = this.r[9];
4051
+ while (bytes >= 16) {
4052
+ t0 = m[mpos + 0] & 255 | (m[mpos + 1] & 255) << 8;
4053
+ h0 += t0 & 8191;
4054
+ t1 = m[mpos + 2] & 255 | (m[mpos + 3] & 255) << 8;
4055
+ h1 += (t0 >>> 13 | t1 << 3) & 8191;
4056
+ t2 = m[mpos + 4] & 255 | (m[mpos + 5] & 255) << 8;
4057
+ h2 += (t1 >>> 10 | t2 << 6) & 8191;
4058
+ t3 = m[mpos + 6] & 255 | (m[mpos + 7] & 255) << 8;
4059
+ h3 += (t2 >>> 7 | t3 << 9) & 8191;
4060
+ t4 = m[mpos + 8] & 255 | (m[mpos + 9] & 255) << 8;
4061
+ h4 += (t3 >>> 4 | t4 << 12) & 8191;
4062
+ h5 += t4 >>> 1 & 8191;
4063
+ t5 = m[mpos + 10] & 255 | (m[mpos + 11] & 255) << 8;
4064
+ h6 += (t4 >>> 14 | t5 << 2) & 8191;
4065
+ t6 = m[mpos + 12] & 255 | (m[mpos + 13] & 255) << 8;
4066
+ h7 += (t5 >>> 11 | t6 << 5) & 8191;
4067
+ t7 = m[mpos + 14] & 255 | (m[mpos + 15] & 255) << 8;
4068
+ h8 += (t6 >>> 8 | t7 << 8) & 8191;
4069
+ h9 += t7 >>> 5 | hibit;
4070
+ c = 0;
4071
+ d0 = c;
4072
+ d0 += h0 * r0;
4073
+ d0 += h1 * (5 * r9);
4074
+ d0 += h2 * (5 * r8);
4075
+ d0 += h3 * (5 * r7);
4076
+ d0 += h4 * (5 * r6);
4077
+ c = d0 >>> 13;
4078
+ d0 &= 8191;
4079
+ d0 += h5 * (5 * r5);
4080
+ d0 += h6 * (5 * r4);
4081
+ d0 += h7 * (5 * r3);
4082
+ d0 += h8 * (5 * r2);
4083
+ d0 += h9 * (5 * r1);
4084
+ c += d0 >>> 13;
4085
+ d0 &= 8191;
4086
+ d1 = c;
4087
+ d1 += h0 * r1;
4088
+ d1 += h1 * r0;
4089
+ d1 += h2 * (5 * r9);
4090
+ d1 += h3 * (5 * r8);
4091
+ d1 += h4 * (5 * r7);
4092
+ c = d1 >>> 13;
4093
+ d1 &= 8191;
4094
+ d1 += h5 * (5 * r6);
4095
+ d1 += h6 * (5 * r5);
4096
+ d1 += h7 * (5 * r4);
4097
+ d1 += h8 * (5 * r3);
4098
+ d1 += h9 * (5 * r2);
4099
+ c += d1 >>> 13;
4100
+ d1 &= 8191;
4101
+ d2 = c;
4102
+ d2 += h0 * r2;
4103
+ d2 += h1 * r1;
4104
+ d2 += h2 * r0;
4105
+ d2 += h3 * (5 * r9);
4106
+ d2 += h4 * (5 * r8);
4107
+ c = d2 >>> 13;
4108
+ d2 &= 8191;
4109
+ d2 += h5 * (5 * r7);
4110
+ d2 += h6 * (5 * r6);
4111
+ d2 += h7 * (5 * r5);
4112
+ d2 += h8 * (5 * r4);
4113
+ d2 += h9 * (5 * r3);
4114
+ c += d2 >>> 13;
4115
+ d2 &= 8191;
4116
+ d3 = c;
4117
+ d3 += h0 * r3;
4118
+ d3 += h1 * r2;
4119
+ d3 += h2 * r1;
4120
+ d3 += h3 * r0;
4121
+ d3 += h4 * (5 * r9);
4122
+ c = d3 >>> 13;
4123
+ d3 &= 8191;
4124
+ d3 += h5 * (5 * r8);
4125
+ d3 += h6 * (5 * r7);
4126
+ d3 += h7 * (5 * r6);
4127
+ d3 += h8 * (5 * r5);
4128
+ d3 += h9 * (5 * r4);
4129
+ c += d3 >>> 13;
4130
+ d3 &= 8191;
4131
+ d4 = c;
4132
+ d4 += h0 * r4;
4133
+ d4 += h1 * r3;
4134
+ d4 += h2 * r2;
4135
+ d4 += h3 * r1;
4136
+ d4 += h4 * r0;
4137
+ c = d4 >>> 13;
4138
+ d4 &= 8191;
4139
+ d4 += h5 * (5 * r9);
4140
+ d4 += h6 * (5 * r8);
4141
+ d4 += h7 * (5 * r7);
4142
+ d4 += h8 * (5 * r6);
4143
+ d4 += h9 * (5 * r5);
4144
+ c += d4 >>> 13;
4145
+ d4 &= 8191;
4146
+ d5 = c;
4147
+ d5 += h0 * r5;
4148
+ d5 += h1 * r4;
4149
+ d5 += h2 * r3;
4150
+ d5 += h3 * r2;
4151
+ d5 += h4 * r1;
4152
+ c = d5 >>> 13;
4153
+ d5 &= 8191;
4154
+ d5 += h5 * r0;
4155
+ d5 += h6 * (5 * r9);
4156
+ d5 += h7 * (5 * r8);
4157
+ d5 += h8 * (5 * r7);
4158
+ d5 += h9 * (5 * r6);
4159
+ c += d5 >>> 13;
4160
+ d5 &= 8191;
4161
+ d6 = c;
4162
+ d6 += h0 * r6;
4163
+ d6 += h1 * r5;
4164
+ d6 += h2 * r4;
4165
+ d6 += h3 * r3;
4166
+ d6 += h4 * r2;
4167
+ c = d6 >>> 13;
4168
+ d6 &= 8191;
4169
+ d6 += h5 * r1;
4170
+ d6 += h6 * r0;
4171
+ d6 += h7 * (5 * r9);
4172
+ d6 += h8 * (5 * r8);
4173
+ d6 += h9 * (5 * r7);
4174
+ c += d6 >>> 13;
4175
+ d6 &= 8191;
4176
+ d7 = c;
4177
+ d7 += h0 * r7;
4178
+ d7 += h1 * r6;
4179
+ d7 += h2 * r5;
4180
+ d7 += h3 * r4;
4181
+ d7 += h4 * r3;
4182
+ c = d7 >>> 13;
4183
+ d7 &= 8191;
4184
+ d7 += h5 * r2;
4185
+ d7 += h6 * r1;
4186
+ d7 += h7 * r0;
4187
+ d7 += h8 * (5 * r9);
4188
+ d7 += h9 * (5 * r8);
4189
+ c += d7 >>> 13;
4190
+ d7 &= 8191;
4191
+ d8 = c;
4192
+ d8 += h0 * r8;
4193
+ d8 += h1 * r7;
4194
+ d8 += h2 * r6;
4195
+ d8 += h3 * r5;
4196
+ d8 += h4 * r4;
4197
+ c = d8 >>> 13;
4198
+ d8 &= 8191;
4199
+ d8 += h5 * r3;
4200
+ d8 += h6 * r2;
4201
+ d8 += h7 * r1;
4202
+ d8 += h8 * r0;
4203
+ d8 += h9 * (5 * r9);
4204
+ c += d8 >>> 13;
4205
+ d8 &= 8191;
4206
+ d9 = c;
4207
+ d9 += h0 * r9;
4208
+ d9 += h1 * r8;
4209
+ d9 += h2 * r7;
4210
+ d9 += h3 * r6;
4211
+ d9 += h4 * r5;
4212
+ c = d9 >>> 13;
4213
+ d9 &= 8191;
4214
+ d9 += h5 * r4;
4215
+ d9 += h6 * r3;
4216
+ d9 += h7 * r2;
4217
+ d9 += h8 * r1;
4218
+ d9 += h9 * r0;
4219
+ c += d9 >>> 13;
4220
+ d9 &= 8191;
4221
+ c = (c << 2) + c | 0;
4222
+ c = c + d0 | 0;
4223
+ d0 = c & 8191;
4224
+ c = c >>> 13;
4225
+ d1 += c;
4226
+ h0 = d0;
4227
+ h1 = d1;
4228
+ h2 = d2;
4229
+ h3 = d3;
4230
+ h4 = d4;
4231
+ h5 = d5;
4232
+ h6 = d6;
4233
+ h7 = d7;
4234
+ h8 = d8;
4235
+ h9 = d9;
4236
+ mpos += 16;
4237
+ bytes -= 16;
4238
+ }
4239
+ this.h[0] = h0;
4240
+ this.h[1] = h1;
4241
+ this.h[2] = h2;
4242
+ this.h[3] = h3;
4243
+ this.h[4] = h4;
4244
+ this.h[5] = h5;
4245
+ this.h[6] = h6;
4246
+ this.h[7] = h7;
4247
+ this.h[8] = h8;
4248
+ this.h[9] = h9;
4249
+ };
4250
+ poly1305.prototype.finish = function(mac, macpos) {
4251
+ var g = new Uint16Array(10);
4252
+ var c, mask, f, i;
4253
+ if (this.leftover) {
4254
+ i = this.leftover;
4255
+ this.buffer[i++] = 1;
4256
+ for (; i < 16; i++) this.buffer[i] = 0;
4257
+ this.fin = 1;
4258
+ this.blocks(this.buffer, 0, 16);
4259
+ }
4260
+ c = this.h[1] >>> 13;
4261
+ this.h[1] &= 8191;
4262
+ for (i = 2; i < 10; i++) {
4263
+ this.h[i] += c;
4264
+ c = this.h[i] >>> 13;
4265
+ this.h[i] &= 8191;
4266
+ }
4267
+ this.h[0] += c * 5;
4268
+ c = this.h[0] >>> 13;
4269
+ this.h[0] &= 8191;
4270
+ this.h[1] += c;
4271
+ c = this.h[1] >>> 13;
4272
+ this.h[1] &= 8191;
4273
+ this.h[2] += c;
4274
+ g[0] = this.h[0] + 5;
4275
+ c = g[0] >>> 13;
4276
+ g[0] &= 8191;
4277
+ for (i = 1; i < 10; i++) {
4278
+ g[i] = this.h[i] + c;
4279
+ c = g[i] >>> 13;
4280
+ g[i] &= 8191;
4281
+ }
4282
+ g[9] -= 1 << 13;
4283
+ mask = (c ^ 1) - 1;
4284
+ for (i = 0; i < 10; i++) g[i] &= mask;
4285
+ mask = ~mask;
4286
+ for (i = 0; i < 10; i++) this.h[i] = this.h[i] & mask | g[i];
4287
+ this.h[0] = (this.h[0] | this.h[1] << 13) & 65535;
4288
+ this.h[1] = (this.h[1] >>> 3 | this.h[2] << 10) & 65535;
4289
+ this.h[2] = (this.h[2] >>> 6 | this.h[3] << 7) & 65535;
4290
+ this.h[3] = (this.h[3] >>> 9 | this.h[4] << 4) & 65535;
4291
+ this.h[4] = (this.h[4] >>> 12 | this.h[5] << 1 | this.h[6] << 14) & 65535;
4292
+ this.h[5] = (this.h[6] >>> 2 | this.h[7] << 11) & 65535;
4293
+ this.h[6] = (this.h[7] >>> 5 | this.h[8] << 8) & 65535;
4294
+ this.h[7] = (this.h[8] >>> 8 | this.h[9] << 5) & 65535;
4295
+ f = this.h[0] + this.pad[0];
4296
+ this.h[0] = f & 65535;
4297
+ for (i = 1; i < 8; i++) {
4298
+ f = (this.h[i] + this.pad[i] | 0) + (f >>> 16) | 0;
4299
+ this.h[i] = f & 65535;
4300
+ }
4301
+ mac[macpos + 0] = this.h[0] >>> 0 & 255;
4302
+ mac[macpos + 1] = this.h[0] >>> 8 & 255;
4303
+ mac[macpos + 2] = this.h[1] >>> 0 & 255;
4304
+ mac[macpos + 3] = this.h[1] >>> 8 & 255;
4305
+ mac[macpos + 4] = this.h[2] >>> 0 & 255;
4306
+ mac[macpos + 5] = this.h[2] >>> 8 & 255;
4307
+ mac[macpos + 6] = this.h[3] >>> 0 & 255;
4308
+ mac[macpos + 7] = this.h[3] >>> 8 & 255;
4309
+ mac[macpos + 8] = this.h[4] >>> 0 & 255;
4310
+ mac[macpos + 9] = this.h[4] >>> 8 & 255;
4311
+ mac[macpos + 10] = this.h[5] >>> 0 & 255;
4312
+ mac[macpos + 11] = this.h[5] >>> 8 & 255;
4313
+ mac[macpos + 12] = this.h[6] >>> 0 & 255;
4314
+ mac[macpos + 13] = this.h[6] >>> 8 & 255;
4315
+ mac[macpos + 14] = this.h[7] >>> 0 & 255;
4316
+ mac[macpos + 15] = this.h[7] >>> 8 & 255;
4317
+ };
4318
+ poly1305.prototype.update = function(m, mpos, bytes) {
4319
+ var i, want;
4320
+ if (this.leftover) {
4321
+ want = 16 - this.leftover;
4322
+ if (want > bytes)
4323
+ want = bytes;
4324
+ for (i = 0; i < want; i++)
4325
+ this.buffer[this.leftover + i] = m[mpos + i];
4326
+ bytes -= want;
4327
+ mpos += want;
4328
+ this.leftover += want;
4329
+ if (this.leftover < 16)
4330
+ return;
4331
+ this.blocks(this.buffer, 0, 16);
4332
+ this.leftover = 0;
4333
+ }
4334
+ if (bytes >= 16) {
4335
+ want = bytes - bytes % 16;
4336
+ this.blocks(m, mpos, want);
4337
+ mpos += want;
4338
+ bytes -= want;
4339
+ }
4340
+ if (bytes) {
4341
+ for (i = 0; i < bytes; i++)
4342
+ this.buffer[this.leftover + i] = m[mpos + i];
4343
+ this.leftover += bytes;
4344
+ }
4345
+ };
4346
+ function crypto_onetimeauth(out, outpos, m, mpos, n, k) {
4347
+ var s = new poly1305(k);
4348
+ s.update(m, mpos, n);
4349
+ s.finish(out, outpos);
4350
+ return 0;
4351
+ }
4352
+ function crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {
4353
+ var x = new Uint8Array(16);
4354
+ crypto_onetimeauth(x, 0, m, mpos, n, k);
4355
+ return crypto_verify_16(h, hpos, x, 0);
4356
+ }
4357
+ function crypto_secretbox(c, m, d, n, k) {
4358
+ var i;
4359
+ if (d < 32) return -1;
4360
+ crypto_stream_xor(c, 0, m, 0, d, n, k);
4361
+ crypto_onetimeauth(c, 16, c, 32, d - 32, c);
4362
+ for (i = 0; i < 16; i++) c[i] = 0;
4363
+ return 0;
4364
+ }
4365
+ function crypto_secretbox_open(m, c, d, n, k) {
4366
+ var i;
4367
+ var x = new Uint8Array(32);
4368
+ if (d < 32) return -1;
4369
+ crypto_stream(x, 0, 32, n, k);
4370
+ if (crypto_onetimeauth_verify(c, 16, c, 32, d - 32, x) !== 0) return -1;
4371
+ crypto_stream_xor(m, 0, c, 0, d, n, k);
4372
+ for (i = 0; i < 32; i++) m[i] = 0;
4373
+ return 0;
4374
+ }
4375
+ function set25519(r, a) {
4376
+ var i;
4377
+ for (i = 0; i < 16; i++) r[i] = a[i] | 0;
4378
+ }
4379
+ function car25519(o) {
4380
+ var i, v, c = 1;
4381
+ for (i = 0; i < 16; i++) {
4382
+ v = o[i] + c + 65535;
4383
+ c = Math.floor(v / 65536);
4384
+ o[i] = v - c * 65536;
4385
+ }
4386
+ o[0] += c - 1 + 37 * (c - 1);
4387
+ }
4388
+ function sel25519(p, q, b) {
4389
+ var t, c = ~(b - 1);
4390
+ for (var i = 0; i < 16; i++) {
4391
+ t = c & (p[i] ^ q[i]);
4392
+ p[i] ^= t;
4393
+ q[i] ^= t;
4394
+ }
4395
+ }
4396
+ function pack25519(o, n) {
4397
+ var i, j, b;
4398
+ var m = gf(), t = gf();
4399
+ for (i = 0; i < 16; i++) t[i] = n[i];
4400
+ car25519(t);
4401
+ car25519(t);
4402
+ car25519(t);
4403
+ for (j = 0; j < 2; j++) {
4404
+ m[0] = t[0] - 65517;
4405
+ for (i = 1; i < 15; i++) {
4406
+ m[i] = t[i] - 65535 - (m[i - 1] >> 16 & 1);
4407
+ m[i - 1] &= 65535;
4408
+ }
4409
+ m[15] = t[15] - 32767 - (m[14] >> 16 & 1);
4410
+ b = m[15] >> 16 & 1;
4411
+ m[14] &= 65535;
4412
+ sel25519(t, m, 1 - b);
4413
+ }
4414
+ for (i = 0; i < 16; i++) {
4415
+ o[2 * i] = t[i] & 255;
4416
+ o[2 * i + 1] = t[i] >> 8;
4417
+ }
4418
+ }
4419
+ function neq25519(a, b) {
4420
+ var c = new Uint8Array(32), d = new Uint8Array(32);
4421
+ pack25519(c, a);
4422
+ pack25519(d, b);
4423
+ return crypto_verify_32(c, 0, d, 0);
4424
+ }
4425
+ function par25519(a) {
4426
+ var d = new Uint8Array(32);
4427
+ pack25519(d, a);
4428
+ return d[0] & 1;
4429
+ }
4430
+ function unpack25519(o, n) {
4431
+ var i;
4432
+ for (i = 0; i < 16; i++) o[i] = n[2 * i] + (n[2 * i + 1] << 8);
4433
+ o[15] &= 32767;
4434
+ }
4435
+ function A(o, a, b) {
4436
+ for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];
4437
+ }
4438
+ function Z(o, a, b) {
4439
+ for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];
4440
+ }
4441
+ function M(o, a, b) {
4442
+ var v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];
4443
+ v = a[0];
4444
+ t0 += v * b0;
4445
+ t1 += v * b1;
4446
+ t2 += v * b2;
4447
+ t3 += v * b3;
4448
+ t4 += v * b4;
4449
+ t5 += v * b5;
4450
+ t6 += v * b6;
4451
+ t7 += v * b7;
4452
+ t8 += v * b8;
4453
+ t9 += v * b9;
4454
+ t10 += v * b10;
4455
+ t11 += v * b11;
4456
+ t12 += v * b12;
4457
+ t13 += v * b13;
4458
+ t14 += v * b14;
4459
+ t15 += v * b15;
4460
+ v = a[1];
4461
+ t1 += v * b0;
4462
+ t2 += v * b1;
4463
+ t3 += v * b2;
4464
+ t4 += v * b3;
4465
+ t5 += v * b4;
4466
+ t6 += v * b5;
4467
+ t7 += v * b6;
4468
+ t8 += v * b7;
4469
+ t9 += v * b8;
4470
+ t10 += v * b9;
4471
+ t11 += v * b10;
4472
+ t12 += v * b11;
4473
+ t13 += v * b12;
4474
+ t14 += v * b13;
4475
+ t15 += v * b14;
4476
+ t16 += v * b15;
4477
+ v = a[2];
4478
+ t2 += v * b0;
4479
+ t3 += v * b1;
4480
+ t4 += v * b2;
4481
+ t5 += v * b3;
4482
+ t6 += v * b4;
4483
+ t7 += v * b5;
4484
+ t8 += v * b6;
4485
+ t9 += v * b7;
4486
+ t10 += v * b8;
4487
+ t11 += v * b9;
4488
+ t12 += v * b10;
4489
+ t13 += v * b11;
4490
+ t14 += v * b12;
4491
+ t15 += v * b13;
4492
+ t16 += v * b14;
4493
+ t17 += v * b15;
4494
+ v = a[3];
4495
+ t3 += v * b0;
4496
+ t4 += v * b1;
4497
+ t5 += v * b2;
4498
+ t6 += v * b3;
4499
+ t7 += v * b4;
4500
+ t8 += v * b5;
4501
+ t9 += v * b6;
4502
+ t10 += v * b7;
4503
+ t11 += v * b8;
4504
+ t12 += v * b9;
4505
+ t13 += v * b10;
4506
+ t14 += v * b11;
4507
+ t15 += v * b12;
4508
+ t16 += v * b13;
4509
+ t17 += v * b14;
4510
+ t18 += v * b15;
4511
+ v = a[4];
4512
+ t4 += v * b0;
4513
+ t5 += v * b1;
4514
+ t6 += v * b2;
4515
+ t7 += v * b3;
4516
+ t8 += v * b4;
4517
+ t9 += v * b5;
4518
+ t10 += v * b6;
4519
+ t11 += v * b7;
4520
+ t12 += v * b8;
4521
+ t13 += v * b9;
4522
+ t14 += v * b10;
4523
+ t15 += v * b11;
4524
+ t16 += v * b12;
4525
+ t17 += v * b13;
4526
+ t18 += v * b14;
4527
+ t19 += v * b15;
4528
+ v = a[5];
4529
+ t5 += v * b0;
4530
+ t6 += v * b1;
4531
+ t7 += v * b2;
4532
+ t8 += v * b3;
4533
+ t9 += v * b4;
4534
+ t10 += v * b5;
4535
+ t11 += v * b6;
4536
+ t12 += v * b7;
4537
+ t13 += v * b8;
4538
+ t14 += v * b9;
4539
+ t15 += v * b10;
4540
+ t16 += v * b11;
4541
+ t17 += v * b12;
4542
+ t18 += v * b13;
4543
+ t19 += v * b14;
4544
+ t20 += v * b15;
4545
+ v = a[6];
4546
+ t6 += v * b0;
4547
+ t7 += v * b1;
4548
+ t8 += v * b2;
4549
+ t9 += v * b3;
4550
+ t10 += v * b4;
4551
+ t11 += v * b5;
4552
+ t12 += v * b6;
4553
+ t13 += v * b7;
4554
+ t14 += v * b8;
4555
+ t15 += v * b9;
4556
+ t16 += v * b10;
4557
+ t17 += v * b11;
4558
+ t18 += v * b12;
4559
+ t19 += v * b13;
4560
+ t20 += v * b14;
4561
+ t21 += v * b15;
4562
+ v = a[7];
4563
+ t7 += v * b0;
4564
+ t8 += v * b1;
4565
+ t9 += v * b2;
4566
+ t10 += v * b3;
4567
+ t11 += v * b4;
4568
+ t12 += v * b5;
4569
+ t13 += v * b6;
4570
+ t14 += v * b7;
4571
+ t15 += v * b8;
4572
+ t16 += v * b9;
4573
+ t17 += v * b10;
4574
+ t18 += v * b11;
4575
+ t19 += v * b12;
4576
+ t20 += v * b13;
4577
+ t21 += v * b14;
4578
+ t22 += v * b15;
4579
+ v = a[8];
4580
+ t8 += v * b0;
4581
+ t9 += v * b1;
4582
+ t10 += v * b2;
4583
+ t11 += v * b3;
4584
+ t12 += v * b4;
4585
+ t13 += v * b5;
4586
+ t14 += v * b6;
4587
+ t15 += v * b7;
4588
+ t16 += v * b8;
4589
+ t17 += v * b9;
4590
+ t18 += v * b10;
4591
+ t19 += v * b11;
4592
+ t20 += v * b12;
4593
+ t21 += v * b13;
4594
+ t22 += v * b14;
4595
+ t23 += v * b15;
4596
+ v = a[9];
4597
+ t9 += v * b0;
4598
+ t10 += v * b1;
4599
+ t11 += v * b2;
4600
+ t12 += v * b3;
4601
+ t13 += v * b4;
4602
+ t14 += v * b5;
4603
+ t15 += v * b6;
4604
+ t16 += v * b7;
4605
+ t17 += v * b8;
4606
+ t18 += v * b9;
4607
+ t19 += v * b10;
4608
+ t20 += v * b11;
4609
+ t21 += v * b12;
4610
+ t22 += v * b13;
4611
+ t23 += v * b14;
4612
+ t24 += v * b15;
4613
+ v = a[10];
4614
+ t10 += v * b0;
4615
+ t11 += v * b1;
4616
+ t12 += v * b2;
4617
+ t13 += v * b3;
4618
+ t14 += v * b4;
4619
+ t15 += v * b5;
4620
+ t16 += v * b6;
4621
+ t17 += v * b7;
4622
+ t18 += v * b8;
4623
+ t19 += v * b9;
4624
+ t20 += v * b10;
4625
+ t21 += v * b11;
4626
+ t22 += v * b12;
4627
+ t23 += v * b13;
4628
+ t24 += v * b14;
4629
+ t25 += v * b15;
4630
+ v = a[11];
4631
+ t11 += v * b0;
4632
+ t12 += v * b1;
4633
+ t13 += v * b2;
4634
+ t14 += v * b3;
4635
+ t15 += v * b4;
4636
+ t16 += v * b5;
4637
+ t17 += v * b6;
4638
+ t18 += v * b7;
4639
+ t19 += v * b8;
4640
+ t20 += v * b9;
4641
+ t21 += v * b10;
4642
+ t22 += v * b11;
4643
+ t23 += v * b12;
4644
+ t24 += v * b13;
4645
+ t25 += v * b14;
4646
+ t26 += v * b15;
4647
+ v = a[12];
4648
+ t12 += v * b0;
4649
+ t13 += v * b1;
4650
+ t14 += v * b2;
4651
+ t15 += v * b3;
4652
+ t16 += v * b4;
4653
+ t17 += v * b5;
4654
+ t18 += v * b6;
4655
+ t19 += v * b7;
4656
+ t20 += v * b8;
4657
+ t21 += v * b9;
4658
+ t22 += v * b10;
4659
+ t23 += v * b11;
4660
+ t24 += v * b12;
4661
+ t25 += v * b13;
4662
+ t26 += v * b14;
4663
+ t27 += v * b15;
4664
+ v = a[13];
4665
+ t13 += v * b0;
4666
+ t14 += v * b1;
4667
+ t15 += v * b2;
4668
+ t16 += v * b3;
4669
+ t17 += v * b4;
4670
+ t18 += v * b5;
4671
+ t19 += v * b6;
4672
+ t20 += v * b7;
4673
+ t21 += v * b8;
4674
+ t22 += v * b9;
4675
+ t23 += v * b10;
4676
+ t24 += v * b11;
4677
+ t25 += v * b12;
4678
+ t26 += v * b13;
4679
+ t27 += v * b14;
4680
+ t28 += v * b15;
4681
+ v = a[14];
4682
+ t14 += v * b0;
4683
+ t15 += v * b1;
4684
+ t16 += v * b2;
4685
+ t17 += v * b3;
4686
+ t18 += v * b4;
4687
+ t19 += v * b5;
4688
+ t20 += v * b6;
4689
+ t21 += v * b7;
4690
+ t22 += v * b8;
4691
+ t23 += v * b9;
4692
+ t24 += v * b10;
4693
+ t25 += v * b11;
4694
+ t26 += v * b12;
4695
+ t27 += v * b13;
4696
+ t28 += v * b14;
4697
+ t29 += v * b15;
4698
+ v = a[15];
4699
+ t15 += v * b0;
4700
+ t16 += v * b1;
4701
+ t17 += v * b2;
4702
+ t18 += v * b3;
4703
+ t19 += v * b4;
4704
+ t20 += v * b5;
4705
+ t21 += v * b6;
4706
+ t22 += v * b7;
4707
+ t23 += v * b8;
4708
+ t24 += v * b9;
4709
+ t25 += v * b10;
4710
+ t26 += v * b11;
4711
+ t27 += v * b12;
4712
+ t28 += v * b13;
4713
+ t29 += v * b14;
4714
+ t30 += v * b15;
4715
+ t0 += 38 * t16;
4716
+ t1 += 38 * t17;
4717
+ t2 += 38 * t18;
4718
+ t3 += 38 * t19;
4719
+ t4 += 38 * t20;
4720
+ t5 += 38 * t21;
4721
+ t6 += 38 * t22;
4722
+ t7 += 38 * t23;
4723
+ t8 += 38 * t24;
4724
+ t9 += 38 * t25;
4725
+ t10 += 38 * t26;
4726
+ t11 += 38 * t27;
4727
+ t12 += 38 * t28;
4728
+ t13 += 38 * t29;
4729
+ t14 += 38 * t30;
4730
+ c = 1;
4731
+ v = t0 + c + 65535;
4732
+ c = Math.floor(v / 65536);
4733
+ t0 = v - c * 65536;
4734
+ v = t1 + c + 65535;
4735
+ c = Math.floor(v / 65536);
4736
+ t1 = v - c * 65536;
4737
+ v = t2 + c + 65535;
4738
+ c = Math.floor(v / 65536);
4739
+ t2 = v - c * 65536;
4740
+ v = t3 + c + 65535;
4741
+ c = Math.floor(v / 65536);
4742
+ t3 = v - c * 65536;
4743
+ v = t4 + c + 65535;
4744
+ c = Math.floor(v / 65536);
4745
+ t4 = v - c * 65536;
4746
+ v = t5 + c + 65535;
4747
+ c = Math.floor(v / 65536);
4748
+ t5 = v - c * 65536;
4749
+ v = t6 + c + 65535;
4750
+ c = Math.floor(v / 65536);
4751
+ t6 = v - c * 65536;
4752
+ v = t7 + c + 65535;
4753
+ c = Math.floor(v / 65536);
4754
+ t7 = v - c * 65536;
4755
+ v = t8 + c + 65535;
4756
+ c = Math.floor(v / 65536);
4757
+ t8 = v - c * 65536;
4758
+ v = t9 + c + 65535;
4759
+ c = Math.floor(v / 65536);
4760
+ t9 = v - c * 65536;
4761
+ v = t10 + c + 65535;
4762
+ c = Math.floor(v / 65536);
4763
+ t10 = v - c * 65536;
4764
+ v = t11 + c + 65535;
4765
+ c = Math.floor(v / 65536);
4766
+ t11 = v - c * 65536;
4767
+ v = t12 + c + 65535;
4768
+ c = Math.floor(v / 65536);
4769
+ t12 = v - c * 65536;
4770
+ v = t13 + c + 65535;
4771
+ c = Math.floor(v / 65536);
4772
+ t13 = v - c * 65536;
4773
+ v = t14 + c + 65535;
4774
+ c = Math.floor(v / 65536);
4775
+ t14 = v - c * 65536;
4776
+ v = t15 + c + 65535;
4777
+ c = Math.floor(v / 65536);
4778
+ t15 = v - c * 65536;
4779
+ t0 += c - 1 + 37 * (c - 1);
4780
+ c = 1;
4781
+ v = t0 + c + 65535;
4782
+ c = Math.floor(v / 65536);
4783
+ t0 = v - c * 65536;
4784
+ v = t1 + c + 65535;
4785
+ c = Math.floor(v / 65536);
4786
+ t1 = v - c * 65536;
4787
+ v = t2 + c + 65535;
4788
+ c = Math.floor(v / 65536);
4789
+ t2 = v - c * 65536;
4790
+ v = t3 + c + 65535;
4791
+ c = Math.floor(v / 65536);
4792
+ t3 = v - c * 65536;
4793
+ v = t4 + c + 65535;
4794
+ c = Math.floor(v / 65536);
4795
+ t4 = v - c * 65536;
4796
+ v = t5 + c + 65535;
4797
+ c = Math.floor(v / 65536);
4798
+ t5 = v - c * 65536;
4799
+ v = t6 + c + 65535;
4800
+ c = Math.floor(v / 65536);
4801
+ t6 = v - c * 65536;
4802
+ v = t7 + c + 65535;
4803
+ c = Math.floor(v / 65536);
4804
+ t7 = v - c * 65536;
4805
+ v = t8 + c + 65535;
4806
+ c = Math.floor(v / 65536);
4807
+ t8 = v - c * 65536;
4808
+ v = t9 + c + 65535;
4809
+ c = Math.floor(v / 65536);
4810
+ t9 = v - c * 65536;
4811
+ v = t10 + c + 65535;
4812
+ c = Math.floor(v / 65536);
4813
+ t10 = v - c * 65536;
4814
+ v = t11 + c + 65535;
4815
+ c = Math.floor(v / 65536);
4816
+ t11 = v - c * 65536;
4817
+ v = t12 + c + 65535;
4818
+ c = Math.floor(v / 65536);
4819
+ t12 = v - c * 65536;
4820
+ v = t13 + c + 65535;
4821
+ c = Math.floor(v / 65536);
4822
+ t13 = v - c * 65536;
4823
+ v = t14 + c + 65535;
4824
+ c = Math.floor(v / 65536);
4825
+ t14 = v - c * 65536;
4826
+ v = t15 + c + 65535;
4827
+ c = Math.floor(v / 65536);
4828
+ t15 = v - c * 65536;
4829
+ t0 += c - 1 + 37 * (c - 1);
4830
+ o[0] = t0;
4831
+ o[1] = t1;
4832
+ o[2] = t2;
4833
+ o[3] = t3;
4834
+ o[4] = t4;
4835
+ o[5] = t5;
4836
+ o[6] = t6;
4837
+ o[7] = t7;
4838
+ o[8] = t8;
4839
+ o[9] = t9;
4840
+ o[10] = t10;
4841
+ o[11] = t11;
4842
+ o[12] = t12;
4843
+ o[13] = t13;
4844
+ o[14] = t14;
4845
+ o[15] = t15;
4846
+ }
4847
+ function S(o, a) {
4848
+ M(o, a, a);
4849
+ }
4850
+ function inv25519(o, i) {
4851
+ var c = gf();
4852
+ var a;
4853
+ for (a = 0; a < 16; a++) c[a] = i[a];
4854
+ for (a = 253; a >= 0; a--) {
4855
+ S(c, c);
4856
+ if (a !== 2 && a !== 4) M(c, c, i);
4857
+ }
4858
+ for (a = 0; a < 16; a++) o[a] = c[a];
4859
+ }
4860
+ function pow2523(o, i) {
4861
+ var c = gf();
4862
+ var a;
4863
+ for (a = 0; a < 16; a++) c[a] = i[a];
4864
+ for (a = 250; a >= 0; a--) {
4865
+ S(c, c);
4866
+ if (a !== 1) M(c, c, i);
4867
+ }
4868
+ for (a = 0; a < 16; a++) o[a] = c[a];
4869
+ }
4870
+ function crypto_scalarmult(q, n, p) {
4871
+ var z = new Uint8Array(32);
4872
+ var x = new Float64Array(80), r, i;
4873
+ var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();
4874
+ for (i = 0; i < 31; i++) z[i] = n[i];
4875
+ z[31] = n[31] & 127 | 64;
4876
+ z[0] &= 248;
4877
+ unpack25519(x, p);
4878
+ for (i = 0; i < 16; i++) {
4879
+ b[i] = x[i];
4880
+ d[i] = a[i] = c[i] = 0;
4881
+ }
4882
+ a[0] = d[0] = 1;
4883
+ for (i = 254; i >= 0; --i) {
4884
+ r = z[i >>> 3] >>> (i & 7) & 1;
4885
+ sel25519(a, b, r);
4886
+ sel25519(c, d, r);
4887
+ A(e, a, c);
4888
+ Z(a, a, c);
4889
+ A(c, b, d);
4890
+ Z(b, b, d);
4891
+ S(d, e);
4892
+ S(f, a);
4893
+ M(a, c, a);
4894
+ M(c, b, e);
4895
+ A(e, a, c);
4896
+ Z(a, a, c);
4897
+ S(b, a);
4898
+ Z(c, d, f);
4899
+ M(a, c, _121665);
4900
+ A(a, a, d);
4901
+ M(c, c, a);
4902
+ M(a, d, f);
4903
+ M(d, b, x);
4904
+ S(b, e);
4905
+ sel25519(a, b, r);
4906
+ sel25519(c, d, r);
4907
+ }
4908
+ for (i = 0; i < 16; i++) {
4909
+ x[i + 16] = a[i];
4910
+ x[i + 32] = c[i];
4911
+ x[i + 48] = b[i];
4912
+ x[i + 64] = d[i];
4913
+ }
4914
+ var x32 = x.subarray(32);
4915
+ var x16 = x.subarray(16);
4916
+ inv25519(x32, x32);
4917
+ M(x16, x16, x32);
4918
+ pack25519(q, x16);
4919
+ return 0;
4920
+ }
4921
+ function crypto_scalarmult_base(q, n) {
4922
+ return crypto_scalarmult(q, n, _9);
4923
+ }
4924
+ function crypto_box_keypair(y, x) {
4925
+ randombytes(x, 32);
4926
+ return crypto_scalarmult_base(y, x);
4927
+ }
4928
+ function crypto_box_beforenm(k, y, x) {
4929
+ var s = new Uint8Array(32);
4930
+ crypto_scalarmult(s, x, y);
4931
+ return crypto_core_hsalsa20(k, _0, s, sigma);
4932
+ }
4933
+ var crypto_box_afternm = crypto_secretbox;
4934
+ var crypto_box_open_afternm = crypto_secretbox_open;
4935
+ function crypto_box(c, m, d, n, y, x) {
4936
+ var k = new Uint8Array(32);
4937
+ crypto_box_beforenm(k, y, x);
4938
+ return crypto_box_afternm(c, m, d, n, k);
4939
+ }
4940
+ function crypto_box_open(m, c, d, n, y, x) {
4941
+ var k = new Uint8Array(32);
4942
+ crypto_box_beforenm(k, y, x);
4943
+ return crypto_box_open_afternm(m, c, d, n, k);
4944
+ }
4945
+ var K = [
4946
+ 1116352408,
4947
+ 3609767458,
4948
+ 1899447441,
4949
+ 602891725,
4950
+ 3049323471,
4951
+ 3964484399,
4952
+ 3921009573,
4953
+ 2173295548,
4954
+ 961987163,
4955
+ 4081628472,
4956
+ 1508970993,
4957
+ 3053834265,
4958
+ 2453635748,
4959
+ 2937671579,
4960
+ 2870763221,
4961
+ 3664609560,
4962
+ 3624381080,
4963
+ 2734883394,
4964
+ 310598401,
4965
+ 1164996542,
4966
+ 607225278,
4967
+ 1323610764,
4968
+ 1426881987,
4969
+ 3590304994,
4970
+ 1925078388,
4971
+ 4068182383,
4972
+ 2162078206,
4973
+ 991336113,
4974
+ 2614888103,
4975
+ 633803317,
4976
+ 3248222580,
4977
+ 3479774868,
4978
+ 3835390401,
4979
+ 2666613458,
4980
+ 4022224774,
4981
+ 944711139,
4982
+ 264347078,
4983
+ 2341262773,
4984
+ 604807628,
4985
+ 2007800933,
4986
+ 770255983,
4987
+ 1495990901,
4988
+ 1249150122,
4989
+ 1856431235,
4990
+ 1555081692,
4991
+ 3175218132,
4992
+ 1996064986,
4993
+ 2198950837,
4994
+ 2554220882,
4995
+ 3999719339,
4996
+ 2821834349,
4997
+ 766784016,
4998
+ 2952996808,
4999
+ 2566594879,
5000
+ 3210313671,
5001
+ 3203337956,
5002
+ 3336571891,
5003
+ 1034457026,
5004
+ 3584528711,
5005
+ 2466948901,
5006
+ 113926993,
5007
+ 3758326383,
5008
+ 338241895,
5009
+ 168717936,
5010
+ 666307205,
5011
+ 1188179964,
5012
+ 773529912,
5013
+ 1546045734,
5014
+ 1294757372,
5015
+ 1522805485,
5016
+ 1396182291,
5017
+ 2643833823,
5018
+ 1695183700,
5019
+ 2343527390,
5020
+ 1986661051,
5021
+ 1014477480,
5022
+ 2177026350,
5023
+ 1206759142,
5024
+ 2456956037,
5025
+ 344077627,
5026
+ 2730485921,
5027
+ 1290863460,
5028
+ 2820302411,
5029
+ 3158454273,
5030
+ 3259730800,
5031
+ 3505952657,
5032
+ 3345764771,
5033
+ 106217008,
5034
+ 3516065817,
5035
+ 3606008344,
5036
+ 3600352804,
5037
+ 1432725776,
5038
+ 4094571909,
5039
+ 1467031594,
5040
+ 275423344,
5041
+ 851169720,
5042
+ 430227734,
5043
+ 3100823752,
5044
+ 506948616,
5045
+ 1363258195,
5046
+ 659060556,
5047
+ 3750685593,
5048
+ 883997877,
5049
+ 3785050280,
5050
+ 958139571,
5051
+ 3318307427,
5052
+ 1322822218,
5053
+ 3812723403,
5054
+ 1537002063,
5055
+ 2003034995,
5056
+ 1747873779,
5057
+ 3602036899,
5058
+ 1955562222,
5059
+ 1575990012,
5060
+ 2024104815,
5061
+ 1125592928,
5062
+ 2227730452,
5063
+ 2716904306,
5064
+ 2361852424,
5065
+ 442776044,
5066
+ 2428436474,
5067
+ 593698344,
5068
+ 2756734187,
5069
+ 3733110249,
5070
+ 3204031479,
5071
+ 2999351573,
5072
+ 3329325298,
5073
+ 3815920427,
5074
+ 3391569614,
5075
+ 3928383900,
5076
+ 3515267271,
5077
+ 566280711,
5078
+ 3940187606,
5079
+ 3454069534,
5080
+ 4118630271,
5081
+ 4000239992,
5082
+ 116418474,
5083
+ 1914138554,
5084
+ 174292421,
5085
+ 2731055270,
5086
+ 289380356,
5087
+ 3203993006,
5088
+ 460393269,
5089
+ 320620315,
5090
+ 685471733,
5091
+ 587496836,
5092
+ 852142971,
5093
+ 1086792851,
5094
+ 1017036298,
5095
+ 365543100,
5096
+ 1126000580,
5097
+ 2618297676,
5098
+ 1288033470,
5099
+ 3409855158,
5100
+ 1501505948,
5101
+ 4234509866,
5102
+ 1607167915,
5103
+ 987167468,
5104
+ 1816402316,
5105
+ 1246189591
5106
+ ];
5107
+ function crypto_hashblocks_hl(hh, hl, m, n) {
5108
+ var wh = new Int32Array(16), wl = new Int32Array(16), bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7, bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7, th, tl, i, j, h, l, a, b, c, d;
5109
+ var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];
5110
+ var pos = 0;
5111
+ while (n >= 128) {
5112
+ for (i = 0; i < 16; i++) {
5113
+ j = 8 * i + pos;
5114
+ wh[i] = m[j + 0] << 24 | m[j + 1] << 16 | m[j + 2] << 8 | m[j + 3];
5115
+ wl[i] = m[j + 4] << 24 | m[j + 5] << 16 | m[j + 6] << 8 | m[j + 7];
5116
+ }
5117
+ for (i = 0; i < 80; i++) {
5118
+ bh0 = ah0;
5119
+ bh1 = ah1;
5120
+ bh2 = ah2;
5121
+ bh3 = ah3;
5122
+ bh4 = ah4;
5123
+ bh5 = ah5;
5124
+ bh6 = ah6;
5125
+ bh7 = ah7;
5126
+ bl0 = al0;
5127
+ bl1 = al1;
5128
+ bl2 = al2;
5129
+ bl3 = al3;
5130
+ bl4 = al4;
5131
+ bl5 = al5;
5132
+ bl6 = al6;
5133
+ bl7 = al7;
5134
+ h = ah7;
5135
+ l = al7;
5136
+ a = l & 65535;
5137
+ b = l >>> 16;
5138
+ c = h & 65535;
5139
+ d = h >>> 16;
5140
+ h = (ah4 >>> 14 | al4 << 32 - 14) ^ (ah4 >>> 18 | al4 << 32 - 18) ^ (al4 >>> 41 - 32 | ah4 << 32 - (41 - 32));
5141
+ l = (al4 >>> 14 | ah4 << 32 - 14) ^ (al4 >>> 18 | ah4 << 32 - 18) ^ (ah4 >>> 41 - 32 | al4 << 32 - (41 - 32));
5142
+ a += l & 65535;
5143
+ b += l >>> 16;
5144
+ c += h & 65535;
5145
+ d += h >>> 16;
5146
+ h = ah4 & ah5 ^ ~ah4 & ah6;
5147
+ l = al4 & al5 ^ ~al4 & al6;
5148
+ a += l & 65535;
5149
+ b += l >>> 16;
5150
+ c += h & 65535;
5151
+ d += h >>> 16;
5152
+ h = K[i * 2];
5153
+ l = K[i * 2 + 1];
5154
+ a += l & 65535;
5155
+ b += l >>> 16;
5156
+ c += h & 65535;
5157
+ d += h >>> 16;
5158
+ h = wh[i % 16];
5159
+ l = wl[i % 16];
5160
+ a += l & 65535;
5161
+ b += l >>> 16;
5162
+ c += h & 65535;
5163
+ d += h >>> 16;
5164
+ b += a >>> 16;
5165
+ c += b >>> 16;
5166
+ d += c >>> 16;
5167
+ th = c & 65535 | d << 16;
5168
+ tl = a & 65535 | b << 16;
5169
+ h = th;
5170
+ l = tl;
5171
+ a = l & 65535;
5172
+ b = l >>> 16;
5173
+ c = h & 65535;
5174
+ d = h >>> 16;
5175
+ h = (ah0 >>> 28 | al0 << 32 - 28) ^ (al0 >>> 34 - 32 | ah0 << 32 - (34 - 32)) ^ (al0 >>> 39 - 32 | ah0 << 32 - (39 - 32));
5176
+ l = (al0 >>> 28 | ah0 << 32 - 28) ^ (ah0 >>> 34 - 32 | al0 << 32 - (34 - 32)) ^ (ah0 >>> 39 - 32 | al0 << 32 - (39 - 32));
5177
+ a += l & 65535;
5178
+ b += l >>> 16;
5179
+ c += h & 65535;
5180
+ d += h >>> 16;
5181
+ h = ah0 & ah1 ^ ah0 & ah2 ^ ah1 & ah2;
5182
+ l = al0 & al1 ^ al0 & al2 ^ al1 & al2;
5183
+ a += l & 65535;
5184
+ b += l >>> 16;
5185
+ c += h & 65535;
5186
+ d += h >>> 16;
5187
+ b += a >>> 16;
5188
+ c += b >>> 16;
5189
+ d += c >>> 16;
5190
+ bh7 = c & 65535 | d << 16;
5191
+ bl7 = a & 65535 | b << 16;
5192
+ h = bh3;
5193
+ l = bl3;
5194
+ a = l & 65535;
5195
+ b = l >>> 16;
5196
+ c = h & 65535;
5197
+ d = h >>> 16;
5198
+ h = th;
5199
+ l = tl;
5200
+ a += l & 65535;
5201
+ b += l >>> 16;
5202
+ c += h & 65535;
5203
+ d += h >>> 16;
5204
+ b += a >>> 16;
5205
+ c += b >>> 16;
5206
+ d += c >>> 16;
5207
+ bh3 = c & 65535 | d << 16;
5208
+ bl3 = a & 65535 | b << 16;
5209
+ ah1 = bh0;
5210
+ ah2 = bh1;
5211
+ ah3 = bh2;
5212
+ ah4 = bh3;
5213
+ ah5 = bh4;
5214
+ ah6 = bh5;
5215
+ ah7 = bh6;
5216
+ ah0 = bh7;
5217
+ al1 = bl0;
5218
+ al2 = bl1;
5219
+ al3 = bl2;
5220
+ al4 = bl3;
5221
+ al5 = bl4;
5222
+ al6 = bl5;
5223
+ al7 = bl6;
5224
+ al0 = bl7;
5225
+ if (i % 16 === 15) {
5226
+ for (j = 0; j < 16; j++) {
5227
+ h = wh[j];
5228
+ l = wl[j];
5229
+ a = l & 65535;
5230
+ b = l >>> 16;
5231
+ c = h & 65535;
5232
+ d = h >>> 16;
5233
+ h = wh[(j + 9) % 16];
5234
+ l = wl[(j + 9) % 16];
5235
+ a += l & 65535;
5236
+ b += l >>> 16;
5237
+ c += h & 65535;
5238
+ d += h >>> 16;
5239
+ th = wh[(j + 1) % 16];
5240
+ tl = wl[(j + 1) % 16];
5241
+ h = (th >>> 1 | tl << 32 - 1) ^ (th >>> 8 | tl << 32 - 8) ^ th >>> 7;
5242
+ l = (tl >>> 1 | th << 32 - 1) ^ (tl >>> 8 | th << 32 - 8) ^ (tl >>> 7 | th << 32 - 7);
5243
+ a += l & 65535;
5244
+ b += l >>> 16;
5245
+ c += h & 65535;
5246
+ d += h >>> 16;
5247
+ th = wh[(j + 14) % 16];
5248
+ tl = wl[(j + 14) % 16];
5249
+ h = (th >>> 19 | tl << 32 - 19) ^ (tl >>> 61 - 32 | th << 32 - (61 - 32)) ^ th >>> 6;
5250
+ l = (tl >>> 19 | th << 32 - 19) ^ (th >>> 61 - 32 | tl << 32 - (61 - 32)) ^ (tl >>> 6 | th << 32 - 6);
5251
+ a += l & 65535;
5252
+ b += l >>> 16;
5253
+ c += h & 65535;
5254
+ d += h >>> 16;
5255
+ b += a >>> 16;
5256
+ c += b >>> 16;
5257
+ d += c >>> 16;
5258
+ wh[j] = c & 65535 | d << 16;
5259
+ wl[j] = a & 65535 | b << 16;
5260
+ }
5261
+ }
5262
+ }
5263
+ h = ah0;
5264
+ l = al0;
5265
+ a = l & 65535;
5266
+ b = l >>> 16;
5267
+ c = h & 65535;
5268
+ d = h >>> 16;
5269
+ h = hh[0];
5270
+ l = hl[0];
5271
+ a += l & 65535;
5272
+ b += l >>> 16;
5273
+ c += h & 65535;
5274
+ d += h >>> 16;
5275
+ b += a >>> 16;
5276
+ c += b >>> 16;
5277
+ d += c >>> 16;
5278
+ hh[0] = ah0 = c & 65535 | d << 16;
5279
+ hl[0] = al0 = a & 65535 | b << 16;
5280
+ h = ah1;
5281
+ l = al1;
5282
+ a = l & 65535;
5283
+ b = l >>> 16;
5284
+ c = h & 65535;
5285
+ d = h >>> 16;
5286
+ h = hh[1];
5287
+ l = hl[1];
5288
+ a += l & 65535;
5289
+ b += l >>> 16;
5290
+ c += h & 65535;
5291
+ d += h >>> 16;
5292
+ b += a >>> 16;
5293
+ c += b >>> 16;
5294
+ d += c >>> 16;
5295
+ hh[1] = ah1 = c & 65535 | d << 16;
5296
+ hl[1] = al1 = a & 65535 | b << 16;
5297
+ h = ah2;
5298
+ l = al2;
5299
+ a = l & 65535;
5300
+ b = l >>> 16;
5301
+ c = h & 65535;
5302
+ d = h >>> 16;
5303
+ h = hh[2];
5304
+ l = hl[2];
5305
+ a += l & 65535;
5306
+ b += l >>> 16;
5307
+ c += h & 65535;
5308
+ d += h >>> 16;
5309
+ b += a >>> 16;
5310
+ c += b >>> 16;
5311
+ d += c >>> 16;
5312
+ hh[2] = ah2 = c & 65535 | d << 16;
5313
+ hl[2] = al2 = a & 65535 | b << 16;
5314
+ h = ah3;
5315
+ l = al3;
5316
+ a = l & 65535;
5317
+ b = l >>> 16;
5318
+ c = h & 65535;
5319
+ d = h >>> 16;
5320
+ h = hh[3];
5321
+ l = hl[3];
5322
+ a += l & 65535;
5323
+ b += l >>> 16;
5324
+ c += h & 65535;
5325
+ d += h >>> 16;
5326
+ b += a >>> 16;
5327
+ c += b >>> 16;
5328
+ d += c >>> 16;
5329
+ hh[3] = ah3 = c & 65535 | d << 16;
5330
+ hl[3] = al3 = a & 65535 | b << 16;
5331
+ h = ah4;
5332
+ l = al4;
5333
+ a = l & 65535;
5334
+ b = l >>> 16;
5335
+ c = h & 65535;
5336
+ d = h >>> 16;
5337
+ h = hh[4];
5338
+ l = hl[4];
5339
+ a += l & 65535;
5340
+ b += l >>> 16;
5341
+ c += h & 65535;
5342
+ d += h >>> 16;
5343
+ b += a >>> 16;
5344
+ c += b >>> 16;
5345
+ d += c >>> 16;
5346
+ hh[4] = ah4 = c & 65535 | d << 16;
5347
+ hl[4] = al4 = a & 65535 | b << 16;
5348
+ h = ah5;
5349
+ l = al5;
5350
+ a = l & 65535;
5351
+ b = l >>> 16;
5352
+ c = h & 65535;
5353
+ d = h >>> 16;
5354
+ h = hh[5];
5355
+ l = hl[5];
5356
+ a += l & 65535;
5357
+ b += l >>> 16;
5358
+ c += h & 65535;
5359
+ d += h >>> 16;
5360
+ b += a >>> 16;
5361
+ c += b >>> 16;
5362
+ d += c >>> 16;
5363
+ hh[5] = ah5 = c & 65535 | d << 16;
5364
+ hl[5] = al5 = a & 65535 | b << 16;
5365
+ h = ah6;
5366
+ l = al6;
5367
+ a = l & 65535;
5368
+ b = l >>> 16;
5369
+ c = h & 65535;
5370
+ d = h >>> 16;
5371
+ h = hh[6];
5372
+ l = hl[6];
5373
+ a += l & 65535;
5374
+ b += l >>> 16;
5375
+ c += h & 65535;
5376
+ d += h >>> 16;
5377
+ b += a >>> 16;
5378
+ c += b >>> 16;
5379
+ d += c >>> 16;
5380
+ hh[6] = ah6 = c & 65535 | d << 16;
5381
+ hl[6] = al6 = a & 65535 | b << 16;
5382
+ h = ah7;
5383
+ l = al7;
5384
+ a = l & 65535;
5385
+ b = l >>> 16;
5386
+ c = h & 65535;
5387
+ d = h >>> 16;
5388
+ h = hh[7];
5389
+ l = hl[7];
5390
+ a += l & 65535;
5391
+ b += l >>> 16;
5392
+ c += h & 65535;
5393
+ d += h >>> 16;
5394
+ b += a >>> 16;
5395
+ c += b >>> 16;
5396
+ d += c >>> 16;
5397
+ hh[7] = ah7 = c & 65535 | d << 16;
5398
+ hl[7] = al7 = a & 65535 | b << 16;
5399
+ pos += 128;
5400
+ n -= 128;
5401
+ }
5402
+ return n;
5403
+ }
5404
+ function crypto_hash(out, m, n) {
5405
+ var hh = new Int32Array(8), hl = new Int32Array(8), x = new Uint8Array(256), i, b = n;
5406
+ hh[0] = 1779033703;
5407
+ hh[1] = 3144134277;
5408
+ hh[2] = 1013904242;
5409
+ hh[3] = 2773480762;
5410
+ hh[4] = 1359893119;
5411
+ hh[5] = 2600822924;
5412
+ hh[6] = 528734635;
5413
+ hh[7] = 1541459225;
5414
+ hl[0] = 4089235720;
5415
+ hl[1] = 2227873595;
5416
+ hl[2] = 4271175723;
5417
+ hl[3] = 1595750129;
5418
+ hl[4] = 2917565137;
5419
+ hl[5] = 725511199;
5420
+ hl[6] = 4215389547;
5421
+ hl[7] = 327033209;
5422
+ crypto_hashblocks_hl(hh, hl, m, n);
5423
+ n %= 128;
5424
+ for (i = 0; i < n; i++) x[i] = m[b - n + i];
5425
+ x[n] = 128;
5426
+ n = 256 - 128 * (n < 112 ? 1 : 0);
5427
+ x[n - 9] = 0;
5428
+ ts64(x, n - 8, b / 536870912 | 0, b << 3);
5429
+ crypto_hashblocks_hl(hh, hl, x, n);
5430
+ for (i = 0; i < 8; i++) ts64(out, 8 * i, hh[i], hl[i]);
5431
+ return 0;
5432
+ }
5433
+ function add(p, q) {
5434
+ var a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();
5435
+ Z(a, p[1], p[0]);
5436
+ Z(t, q[1], q[0]);
5437
+ M(a, a, t);
5438
+ A(b, p[0], p[1]);
5439
+ A(t, q[0], q[1]);
5440
+ M(b, b, t);
5441
+ M(c, p[3], q[3]);
5442
+ M(c, c, D2);
5443
+ M(d, p[2], q[2]);
5444
+ A(d, d, d);
5445
+ Z(e, b, a);
5446
+ Z(f, d, c);
5447
+ A(g, d, c);
5448
+ A(h, b, a);
5449
+ M(p[0], e, f);
5450
+ M(p[1], h, g);
5451
+ M(p[2], g, f);
5452
+ M(p[3], e, h);
5453
+ }
5454
+ function cswap(p, q, b) {
5455
+ var i;
5456
+ for (i = 0; i < 4; i++) {
5457
+ sel25519(p[i], q[i], b);
5458
+ }
5459
+ }
5460
+ function pack(r, p) {
5461
+ var tx = gf(), ty = gf(), zi = gf();
5462
+ inv25519(zi, p[2]);
5463
+ M(tx, p[0], zi);
5464
+ M(ty, p[1], zi);
5465
+ pack25519(r, ty);
5466
+ r[31] ^= par25519(tx) << 7;
5467
+ }
5468
+ function scalarmult(p, q, s) {
5469
+ var b, i;
5470
+ set25519(p[0], gf0);
5471
+ set25519(p[1], gf1);
5472
+ set25519(p[2], gf1);
5473
+ set25519(p[3], gf0);
5474
+ for (i = 255; i >= 0; --i) {
5475
+ b = s[i / 8 | 0] >> (i & 7) & 1;
5476
+ cswap(p, q, b);
5477
+ add(q, p);
5478
+ add(p, p);
5479
+ cswap(p, q, b);
5480
+ }
5481
+ }
5482
+ function scalarbase(p, s) {
5483
+ var q = [gf(), gf(), gf(), gf()];
5484
+ set25519(q[0], X);
5485
+ set25519(q[1], Y);
5486
+ set25519(q[2], gf1);
5487
+ M(q[3], X, Y);
5488
+ scalarmult(p, q, s);
5489
+ }
5490
+ function crypto_sign_keypair(pk, sk, seeded) {
5491
+ var d = new Uint8Array(64);
5492
+ var p = [gf(), gf(), gf(), gf()];
5493
+ var i;
5494
+ if (!seeded) randombytes(sk, 32);
5495
+ crypto_hash(d, sk, 32);
5496
+ d[0] &= 248;
5497
+ d[31] &= 127;
5498
+ d[31] |= 64;
5499
+ scalarbase(p, d);
5500
+ pack(pk, p);
5501
+ for (i = 0; i < 32; i++) sk[i + 32] = pk[i];
5502
+ return 0;
5503
+ }
5504
+ var L = new Float64Array([237, 211, 245, 92, 26, 99, 18, 88, 214, 156, 247, 162, 222, 249, 222, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16]);
5505
+ function modL(r, x) {
5506
+ var carry, i, j, k;
5507
+ for (i = 63; i >= 32; --i) {
5508
+ carry = 0;
5509
+ for (j = i - 32, k = i - 12; j < k; ++j) {
5510
+ x[j] += carry - 16 * x[i] * L[j - (i - 32)];
5511
+ carry = Math.floor((x[j] + 128) / 256);
5512
+ x[j] -= carry * 256;
5513
+ }
5514
+ x[j] += carry;
5515
+ x[i] = 0;
5516
+ }
5517
+ carry = 0;
5518
+ for (j = 0; j < 32; j++) {
5519
+ x[j] += carry - (x[31] >> 4) * L[j];
5520
+ carry = x[j] >> 8;
5521
+ x[j] &= 255;
5522
+ }
5523
+ for (j = 0; j < 32; j++) x[j] -= carry * L[j];
5524
+ for (i = 0; i < 32; i++) {
5525
+ x[i + 1] += x[i] >> 8;
5526
+ r[i] = x[i] & 255;
5527
+ }
5528
+ }
5529
+ function reduce(r) {
5530
+ var x = new Float64Array(64), i;
5531
+ for (i = 0; i < 64; i++) x[i] = r[i];
5532
+ for (i = 0; i < 64; i++) r[i] = 0;
5533
+ modL(r, x);
5534
+ }
5535
+ function crypto_sign(sm, m, n, sk) {
5536
+ var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);
5537
+ var i, j, x = new Float64Array(64);
5538
+ var p = [gf(), gf(), gf(), gf()];
5539
+ crypto_hash(d, sk, 32);
5540
+ d[0] &= 248;
5541
+ d[31] &= 127;
5542
+ d[31] |= 64;
5543
+ var smlen = n + 64;
5544
+ for (i = 0; i < n; i++) sm[64 + i] = m[i];
5545
+ for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];
5546
+ crypto_hash(r, sm.subarray(32), n + 32);
5547
+ reduce(r);
5548
+ scalarbase(p, r);
5549
+ pack(sm, p);
5550
+ for (i = 32; i < 64; i++) sm[i] = sk[i];
5551
+ crypto_hash(h, sm, n + 64);
5552
+ reduce(h);
5553
+ for (i = 0; i < 64; i++) x[i] = 0;
5554
+ for (i = 0; i < 32; i++) x[i] = r[i];
5555
+ for (i = 0; i < 32; i++) {
5556
+ for (j = 0; j < 32; j++) {
5557
+ x[i + j] += h[i] * d[j];
5558
+ }
5559
+ }
5560
+ modL(sm.subarray(32), x);
5561
+ return smlen;
5562
+ }
5563
+ function unpackneg(r, p) {
5564
+ var t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();
5565
+ set25519(r[2], gf1);
5566
+ unpack25519(r[1], p);
5567
+ S(num, r[1]);
5568
+ M(den, num, D);
5569
+ Z(num, num, r[2]);
5570
+ A(den, r[2], den);
5571
+ S(den2, den);
5572
+ S(den4, den2);
5573
+ M(den6, den4, den2);
5574
+ M(t, den6, num);
5575
+ M(t, t, den);
5576
+ pow2523(t, t);
5577
+ M(t, t, num);
5578
+ M(t, t, den);
5579
+ M(t, t, den);
5580
+ M(r[0], t, den);
5581
+ S(chk, r[0]);
5582
+ M(chk, chk, den);
5583
+ if (neq25519(chk, num)) M(r[0], r[0], I);
5584
+ S(chk, r[0]);
5585
+ M(chk, chk, den);
5586
+ if (neq25519(chk, num)) return -1;
5587
+ if (par25519(r[0]) === p[31] >> 7) Z(r[0], gf0, r[0]);
5588
+ M(r[3], r[0], r[1]);
5589
+ return 0;
5590
+ }
5591
+ function crypto_sign_open(m, sm, n, pk) {
5592
+ var i;
5593
+ var t = new Uint8Array(32), h = new Uint8Array(64);
5594
+ var p = [gf(), gf(), gf(), gf()], q = [gf(), gf(), gf(), gf()];
5595
+ if (n < 64) return -1;
5596
+ if (unpackneg(q, pk)) return -1;
5597
+ for (i = 0; i < n; i++) m[i] = sm[i];
5598
+ for (i = 0; i < 32; i++) m[i + 32] = pk[i];
5599
+ crypto_hash(h, m, n);
5600
+ reduce(h);
5601
+ scalarmult(p, q, h);
5602
+ scalarbase(q, sm.subarray(32));
5603
+ add(p, q);
5604
+ pack(t, p);
5605
+ n -= 64;
5606
+ if (crypto_verify_32(sm, 0, t, 0)) {
5607
+ for (i = 0; i < n; i++) m[i] = 0;
5608
+ return -1;
5609
+ }
5610
+ for (i = 0; i < n; i++) m[i] = sm[i + 64];
5611
+ return n;
5612
+ }
5613
+ var crypto_secretbox_KEYBYTES = 32, crypto_secretbox_NONCEBYTES = 24, crypto_secretbox_ZEROBYTES = 32, crypto_secretbox_BOXZEROBYTES = 16, crypto_scalarmult_BYTES = 32, crypto_scalarmult_SCALARBYTES = 32, crypto_box_PUBLICKEYBYTES = 32, crypto_box_SECRETKEYBYTES = 32, crypto_box_BEFORENMBYTES = 32, crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES, crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES, crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES, crypto_sign_BYTES = 64, crypto_sign_PUBLICKEYBYTES = 32, crypto_sign_SECRETKEYBYTES = 64, crypto_sign_SEEDBYTES = 32, crypto_hash_BYTES = 64;
5614
+ nacl2.lowlevel = {
5615
+ crypto_core_hsalsa20,
5616
+ crypto_stream_xor,
5617
+ crypto_stream,
5618
+ crypto_stream_salsa20_xor,
5619
+ crypto_stream_salsa20,
5620
+ crypto_onetimeauth,
5621
+ crypto_onetimeauth_verify,
5622
+ crypto_verify_16,
5623
+ crypto_verify_32,
5624
+ crypto_secretbox,
5625
+ crypto_secretbox_open,
5626
+ crypto_scalarmult,
5627
+ crypto_scalarmult_base,
5628
+ crypto_box_beforenm,
5629
+ crypto_box_afternm,
5630
+ crypto_box,
5631
+ crypto_box_open,
5632
+ crypto_box_keypair,
5633
+ crypto_hash,
5634
+ crypto_sign,
5635
+ crypto_sign_keypair,
5636
+ crypto_sign_open,
5637
+ crypto_secretbox_KEYBYTES,
5638
+ crypto_secretbox_NONCEBYTES,
5639
+ crypto_secretbox_ZEROBYTES,
5640
+ crypto_secretbox_BOXZEROBYTES,
5641
+ crypto_scalarmult_BYTES,
5642
+ crypto_scalarmult_SCALARBYTES,
5643
+ crypto_box_PUBLICKEYBYTES,
5644
+ crypto_box_SECRETKEYBYTES,
5645
+ crypto_box_BEFORENMBYTES,
5646
+ crypto_box_NONCEBYTES,
5647
+ crypto_box_ZEROBYTES,
5648
+ crypto_box_BOXZEROBYTES,
5649
+ crypto_sign_BYTES,
5650
+ crypto_sign_PUBLICKEYBYTES,
5651
+ crypto_sign_SECRETKEYBYTES,
5652
+ crypto_sign_SEEDBYTES,
5653
+ crypto_hash_BYTES,
5654
+ gf,
5655
+ D,
5656
+ L,
5657
+ pack25519,
5658
+ unpack25519,
5659
+ M,
5660
+ A,
5661
+ S,
5662
+ Z,
5663
+ pow2523,
5664
+ add,
5665
+ set25519,
5666
+ modL,
5667
+ scalarmult,
5668
+ scalarbase
5669
+ };
5670
+ function checkLengths(k, n) {
5671
+ if (k.length !== crypto_secretbox_KEYBYTES) throw new Error("bad key size");
5672
+ if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error("bad nonce size");
5673
+ }
5674
+ function checkBoxLengths(pk, sk) {
5675
+ if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error("bad public key size");
5676
+ if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error("bad secret key size");
5677
+ }
5678
+ function checkArrayTypes() {
5679
+ for (var i = 0; i < arguments.length; i++) {
5680
+ if (!(arguments[i] instanceof Uint8Array))
5681
+ throw new TypeError("unexpected type, use Uint8Array");
5682
+ }
5683
+ }
5684
+ function cleanup(arr) {
5685
+ for (var i = 0; i < arr.length; i++) arr[i] = 0;
5686
+ }
5687
+ nacl2.randomBytes = function(n) {
5688
+ var b = new Uint8Array(n);
5689
+ randombytes(b, n);
5690
+ return b;
5691
+ };
5692
+ nacl2.secretbox = function(msg, nonce, key) {
5693
+ checkArrayTypes(msg, nonce, key);
5694
+ checkLengths(key, nonce);
5695
+ var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);
5696
+ var c = new Uint8Array(m.length);
5697
+ for (var i = 0; i < msg.length; i++) m[i + crypto_secretbox_ZEROBYTES] = msg[i];
5698
+ crypto_secretbox(c, m, m.length, nonce, key);
5699
+ return c.subarray(crypto_secretbox_BOXZEROBYTES);
5700
+ };
5701
+ nacl2.secretbox.open = function(box, nonce, key) {
5702
+ checkArrayTypes(box, nonce, key);
5703
+ checkLengths(key, nonce);
5704
+ var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);
5705
+ var m = new Uint8Array(c.length);
5706
+ for (var i = 0; i < box.length; i++) c[i + crypto_secretbox_BOXZEROBYTES] = box[i];
5707
+ if (c.length < 32) return null;
5708
+ if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;
5709
+ return m.subarray(crypto_secretbox_ZEROBYTES);
5710
+ };
5711
+ nacl2.secretbox.keyLength = crypto_secretbox_KEYBYTES;
5712
+ nacl2.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;
5713
+ nacl2.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;
5714
+ nacl2.scalarMult = function(n, p) {
5715
+ checkArrayTypes(n, p);
5716
+ if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error("bad n size");
5717
+ if (p.length !== crypto_scalarmult_BYTES) throw new Error("bad p size");
5718
+ var q = new Uint8Array(crypto_scalarmult_BYTES);
5719
+ crypto_scalarmult(q, n, p);
5720
+ return q;
5721
+ };
5722
+ nacl2.scalarMult.base = function(n) {
5723
+ checkArrayTypes(n);
5724
+ if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error("bad n size");
5725
+ var q = new Uint8Array(crypto_scalarmult_BYTES);
5726
+ crypto_scalarmult_base(q, n);
5727
+ return q;
5728
+ };
5729
+ nacl2.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;
5730
+ nacl2.scalarMult.groupElementLength = crypto_scalarmult_BYTES;
5731
+ nacl2.box = function(msg, nonce, publicKey, secretKey) {
5732
+ var k = nacl2.box.before(publicKey, secretKey);
5733
+ return nacl2.secretbox(msg, nonce, k);
5734
+ };
5735
+ nacl2.box.before = function(publicKey, secretKey) {
5736
+ checkArrayTypes(publicKey, secretKey);
5737
+ checkBoxLengths(publicKey, secretKey);
5738
+ var k = new Uint8Array(crypto_box_BEFORENMBYTES);
5739
+ crypto_box_beforenm(k, publicKey, secretKey);
5740
+ return k;
5741
+ };
5742
+ nacl2.box.after = nacl2.secretbox;
5743
+ nacl2.box.open = function(msg, nonce, publicKey, secretKey) {
5744
+ var k = nacl2.box.before(publicKey, secretKey);
5745
+ return nacl2.secretbox.open(msg, nonce, k);
5746
+ };
5747
+ nacl2.box.open.after = nacl2.secretbox.open;
5748
+ nacl2.box.keyPair = function() {
5749
+ var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);
5750
+ var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);
5751
+ crypto_box_keypair(pk, sk);
5752
+ return { publicKey: pk, secretKey: sk };
5753
+ };
5754
+ nacl2.box.keyPair.fromSecretKey = function(secretKey) {
5755
+ checkArrayTypes(secretKey);
5756
+ if (secretKey.length !== crypto_box_SECRETKEYBYTES)
5757
+ throw new Error("bad secret key size");
5758
+ var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);
5759
+ crypto_scalarmult_base(pk, secretKey);
5760
+ return { publicKey: pk, secretKey: new Uint8Array(secretKey) };
5761
+ };
5762
+ nacl2.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;
5763
+ nacl2.box.secretKeyLength = crypto_box_SECRETKEYBYTES;
5764
+ nacl2.box.sharedKeyLength = crypto_box_BEFORENMBYTES;
5765
+ nacl2.box.nonceLength = crypto_box_NONCEBYTES;
5766
+ nacl2.box.overheadLength = nacl2.secretbox.overheadLength;
5767
+ nacl2.sign = function(msg, secretKey) {
5768
+ checkArrayTypes(msg, secretKey);
5769
+ if (secretKey.length !== crypto_sign_SECRETKEYBYTES)
5770
+ throw new Error("bad secret key size");
5771
+ var signedMsg = new Uint8Array(crypto_sign_BYTES + msg.length);
5772
+ crypto_sign(signedMsg, msg, msg.length, secretKey);
5773
+ return signedMsg;
5774
+ };
5775
+ nacl2.sign.open = function(signedMsg, publicKey) {
5776
+ checkArrayTypes(signedMsg, publicKey);
5777
+ if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)
5778
+ throw new Error("bad public key size");
5779
+ var tmp = new Uint8Array(signedMsg.length);
5780
+ var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);
5781
+ if (mlen < 0) return null;
5782
+ var m = new Uint8Array(mlen);
5783
+ for (var i = 0; i < m.length; i++) m[i] = tmp[i];
5784
+ return m;
5785
+ };
5786
+ nacl2.sign.detached = function(msg, secretKey) {
5787
+ var signedMsg = nacl2.sign(msg, secretKey);
5788
+ var sig = new Uint8Array(crypto_sign_BYTES);
5789
+ for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];
5790
+ return sig;
5791
+ };
5792
+ nacl2.sign.detached.verify = function(msg, sig, publicKey) {
5793
+ checkArrayTypes(msg, sig, publicKey);
5794
+ if (sig.length !== crypto_sign_BYTES)
5795
+ throw new Error("bad signature size");
5796
+ if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)
5797
+ throw new Error("bad public key size");
5798
+ var sm = new Uint8Array(crypto_sign_BYTES + msg.length);
5799
+ var m = new Uint8Array(crypto_sign_BYTES + msg.length);
5800
+ var i;
5801
+ for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];
5802
+ for (i = 0; i < msg.length; i++) sm[i + crypto_sign_BYTES] = msg[i];
5803
+ return crypto_sign_open(m, sm, sm.length, publicKey) >= 0;
5804
+ };
5805
+ nacl2.sign.keyPair = function() {
5806
+ var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
5807
+ var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);
5808
+ crypto_sign_keypair(pk, sk);
5809
+ return { publicKey: pk, secretKey: sk };
5810
+ };
5811
+ nacl2.sign.keyPair.fromSecretKey = function(secretKey) {
5812
+ checkArrayTypes(secretKey);
5813
+ if (secretKey.length !== crypto_sign_SECRETKEYBYTES)
5814
+ throw new Error("bad secret key size");
5815
+ var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
5816
+ for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32 + i];
5817
+ return { publicKey: pk, secretKey: new Uint8Array(secretKey) };
5818
+ };
5819
+ nacl2.sign.keyPair.fromSeed = function(seed) {
5820
+ checkArrayTypes(seed);
5821
+ if (seed.length !== crypto_sign_SEEDBYTES)
5822
+ throw new Error("bad seed size");
5823
+ var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);
5824
+ var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);
5825
+ for (var i = 0; i < 32; i++) sk[i] = seed[i];
5826
+ crypto_sign_keypair(pk, sk, true);
5827
+ return { publicKey: pk, secretKey: sk };
5828
+ };
5829
+ nacl2.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;
5830
+ nacl2.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;
5831
+ nacl2.sign.seedLength = crypto_sign_SEEDBYTES;
5832
+ nacl2.sign.signatureLength = crypto_sign_BYTES;
5833
+ nacl2.hash = function(msg) {
5834
+ checkArrayTypes(msg);
5835
+ var h = new Uint8Array(crypto_hash_BYTES);
5836
+ crypto_hash(h, msg, msg.length);
5837
+ return h;
5838
+ };
5839
+ nacl2.hash.hashLength = crypto_hash_BYTES;
5840
+ nacl2.verify = function(x, y) {
5841
+ checkArrayTypes(x, y);
5842
+ if (x.length === 0 || y.length === 0) return false;
5843
+ if (x.length !== y.length) return false;
5844
+ return vn(x, 0, y, 0, x.length) === 0 ? true : false;
5845
+ };
5846
+ nacl2.setPRNG = function(fn) {
5847
+ randombytes = fn;
5848
+ };
5849
+ (function() {
5850
+ var crypto = typeof self !== "undefined" ? self.crypto || self.msCrypto : null;
5851
+ if (crypto && crypto.getRandomValues) {
5852
+ var QUOTA = 65536;
5853
+ nacl2.setPRNG(function(x, n) {
5854
+ var i, v = new Uint8Array(n);
5855
+ for (i = 0; i < n; i += QUOTA) {
5856
+ crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));
5857
+ }
5858
+ for (i = 0; i < n; i++) x[i] = v[i];
5859
+ cleanup(v);
5860
+ });
5861
+ } else if (typeof __require !== "undefined") {
5862
+ crypto = __require("crypto");
5863
+ if (crypto && crypto.randomBytes) {
5864
+ nacl2.setPRNG(function(x, n) {
5865
+ var i, v = crypto.randomBytes(n);
5866
+ for (i = 0; i < n; i++) x[i] = v[i];
5867
+ cleanup(v);
5868
+ });
5869
+ }
5870
+ }
5871
+ })();
5872
+ })(typeof module !== "undefined" && module.exports ? module.exports : self.nacl = self.nacl || {});
5873
+ }
5874
+ });
5875
+
3651
5876
  // src/daemon.ts
3652
5877
  import { writeFileSync as writeFileSync4, mkdirSync as mkdirSync3, unlinkSync as unlinkSync2, existsSync as existsSync4, readdirSync, statSync } from "fs";
3653
5878
  import { homedir as homedir5 } from "os";
@@ -4188,6 +6413,33 @@ var import_sender = __toESM(require_sender(), 1);
4188
6413
  var import_websocket = __toESM(require_websocket(), 1);
4189
6414
  var import_websocket_server = __toESM(require_websocket_server(), 1);
4190
6415
 
6416
+ // ../shared/src/crypto.ts
6417
+ var import_tweetnacl = __toESM(require_nacl_fast(), 1);
6418
+ import { createHash } from "crypto";
6419
+ var encoder = new TextEncoder();
6420
+ var decoder = new TextDecoder();
6421
+ function deriveEncryptionKey(tokenHex) {
6422
+ const hash = createHash("sha512").update(tokenHex, "utf-8").digest();
6423
+ return new Uint8Array(hash).slice(0, 32);
6424
+ }
6425
+ function encrypt(plaintext, key) {
6426
+ const nonce = import_tweetnacl.default.randomBytes(import_tweetnacl.default.secretbox.nonceLength);
6427
+ const message = encoder.encode(plaintext);
6428
+ const box = import_tweetnacl.default.secretbox(message, nonce, key);
6429
+ const full = new Uint8Array(nonce.length + box.length);
6430
+ full.set(nonce);
6431
+ full.set(box, nonce.length);
6432
+ return Buffer.from(full).toString("base64");
6433
+ }
6434
+ function decrypt(ciphertext, key) {
6435
+ const full = new Uint8Array(Buffer.from(ciphertext, "base64"));
6436
+ const nonce = full.subarray(0, import_tweetnacl.default.secretbox.nonceLength);
6437
+ const box = full.subarray(import_tweetnacl.default.secretbox.nonceLength);
6438
+ const decrypted = import_tweetnacl.default.secretbox.open(box, nonce, key);
6439
+ if (!decrypted) throw new Error("Decryption failed");
6440
+ return decoder.decode(decrypted);
6441
+ }
6442
+
4191
6443
  // src/server.ts
4192
6444
  var MIME_TYPES = {
4193
6445
  ".html": "text/html; charset=utf-8",
@@ -4202,6 +6454,10 @@ var COMPRESSIBLE = /* @__PURE__ */ new Set([".html", ".js", ".css", ".json", ".s
4202
6454
  var PING_INTERVAL_MS = 3e4;
4203
6455
  function createDashboardServer(options) {
4204
6456
  const { registry, masterToken, dashboardPath, host, port, previewCollector, toolHistory, sleepPrevention, onCreateSession } = options;
6457
+ const encryptionKey = deriveEncryptionKey(masterToken);
6458
+ function sendMsg(ws, msg) {
6459
+ ws.send(encrypt(JSON.stringify(msg), encryptionKey));
6460
+ }
4205
6461
  const homeDir = homedir3();
4206
6462
  const clients = /* @__PURE__ */ new Set();
4207
6463
  const aliveMap = /* @__PURE__ */ new WeakMap();
@@ -4357,26 +6613,33 @@ function createDashboardServer(options) {
4357
6613
  clients.add(ws);
4358
6614
  aliveMap.set(ws, true);
4359
6615
  const sessions = registry.getAll();
4360
- ws.send(JSON.stringify({ type: "sessions", sessions }));
6616
+ sendMsg(ws, { type: "sessions", sessions });
4361
6617
  if (sleepPrevention) {
4362
- ws.send(JSON.stringify({ type: "sleep-state", state: sleepPrevention.getState() }));
6618
+ sendMsg(ws, { type: "sleep-state", state: sleepPrevention.getState() });
4363
6619
  }
4364
6620
  if (previewCollector) {
4365
6621
  const previews = previewCollector.getAllPreviews();
4366
6622
  for (const [sessionId, lines] of previews) {
4367
6623
  if (lines.length > 0) {
4368
- ws.send(JSON.stringify({ type: "preview", sessionId, lines }));
6624
+ sendMsg(ws, { type: "preview", sessionId, lines });
4369
6625
  }
4370
6626
  }
4371
6627
  }
4372
6628
  ws.on("message", async (raw) => {
6629
+ let plaintext;
4373
6630
  try {
4374
- const msg = JSON.parse(typeof raw === "string" ? raw : raw.toString("utf-8"));
6631
+ const rawStr = typeof raw === "string" ? raw : raw.toString("utf-8");
6632
+ plaintext = decrypt(rawStr, encryptionKey);
6633
+ } catch {
6634
+ return;
6635
+ }
6636
+ try {
6637
+ const msg = JSON.parse(plaintext);
4375
6638
  switch (msg.type) {
4376
6639
  case "stop-session": {
4377
6640
  const session = registry.getById(msg.sessionId);
4378
6641
  if (!session) {
4379
- ws.send(JSON.stringify({ type: "operation-error", operation: "stop", sessionId: msg.sessionId, error: "Session not found" }));
6642
+ sendMsg(ws, { type: "operation-error", operation: "stop", sessionId: msg.sessionId, error: "Session not found" });
4380
6643
  return;
4381
6644
  }
4382
6645
  try {
@@ -4389,7 +6652,7 @@ function createDashboardServer(options) {
4389
6652
  case "rename-session": {
4390
6653
  const renamed = registry.rename(msg.sessionId, msg.name?.trim());
4391
6654
  if (!renamed) {
4392
- ws.send(JSON.stringify({ type: "operation-error", operation: "rename", sessionId: msg.sessionId, error: "Session not found" }));
6655
+ sendMsg(ws, { type: "operation-error", operation: "rename", sessionId: msg.sessionId, error: "Session not found" });
4393
6656
  }
4394
6657
  break;
4395
6658
  }
@@ -4402,13 +6665,13 @@ function createDashboardServer(options) {
4402
6665
  }
4403
6666
  case "create-session": {
4404
6667
  if (!onCreateSession) {
4405
- ws.send(JSON.stringify({ type: "session-create-error", error: "Session creation not available" }));
6668
+ sendMsg(ws, { type: "session-create-error", error: "Session creation not available" });
4406
6669
  break;
4407
6670
  }
4408
6671
  const tool = (msg.tool || "").trim();
4409
6672
  const rawCwd = (msg.cwd || "").trim();
4410
6673
  if (!tool) {
4411
- ws.send(JSON.stringify({ type: "session-create-error", error: "Tool name is required" }));
6674
+ sendMsg(ws, { type: "session-create-error", error: "Tool name is required" });
4412
6675
  break;
4413
6676
  }
4414
6677
  const cwd = rawCwd ? rawCwd.replace(/^~/, homeDir) : homeDir;
@@ -4416,31 +6679,31 @@ function createDashboardServer(options) {
4416
6679
  const resolved = await realpath(cwd);
4417
6680
  const dirStat = await stat(resolved);
4418
6681
  if (!dirStat.isDirectory()) {
4419
- ws.send(JSON.stringify({ type: "session-create-error", error: "Not a directory" }));
6682
+ sendMsg(ws, { type: "session-create-error", error: "Not a directory" });
4420
6683
  break;
4421
6684
  }
4422
- ws.send(JSON.stringify({ type: "session-creating", tool, cwd: rawCwd || "~" }));
6685
+ sendMsg(ws, { type: "session-creating", tool, cwd: rawCwd || "~" });
4423
6686
  onCreateSession(tool, resolved);
4424
6687
  } catch (err) {
4425
- ws.send(JSON.stringify({ type: "session-create-error", error: err.message }));
6688
+ sendMsg(ws, { type: "session-create-error", error: err.message });
4426
6689
  }
4427
6690
  break;
4428
6691
  }
4429
6692
  case "enable-sleep-prevention": {
4430
6693
  if (!sleepPrevention) {
4431
- ws.send(JSON.stringify({ type: "sleep-error", error: "Sleep prevention not available" }));
6694
+ sendMsg(ws, { type: "sleep-error", error: "Sleep prevention not available" });
4432
6695
  break;
4433
6696
  }
4434
6697
  const password = typeof msg.password === "string" ? msg.password : "";
4435
6698
  if (!password) {
4436
- ws.send(JSON.stringify({ type: "sleep-error", error: "Password is required" }));
6699
+ sendMsg(ws, { type: "sleep-error", error: "Password is required" });
4437
6700
  break;
4438
6701
  }
4439
6702
  const enableResult = await sleepPrevention.enable(password);
4440
6703
  if (enableResult.success) {
4441
6704
  broadcast({ type: "sleep-state", state: sleepPrevention.getState() });
4442
6705
  } else {
4443
- ws.send(JSON.stringify({ type: "sleep-error", error: enableResult.error }));
6706
+ sendMsg(ws, { type: "sleep-error", error: enableResult.error });
4444
6707
  }
4445
6708
  break;
4446
6709
  }
@@ -4453,7 +6716,7 @@ function createDashboardServer(options) {
4453
6716
  case "get-metadata": {
4454
6717
  const session = registry.getById(msg.sessionId);
4455
6718
  if (!session) {
4456
- ws.send(JSON.stringify({ type: "operation-error", operation: "metadata", sessionId: msg.sessionId, error: "Session not found" }));
6719
+ sendMsg(ws, { type: "operation-error", operation: "metadata", sessionId: msg.sessionId, error: "Session not found" });
4457
6720
  return;
4458
6721
  }
4459
6722
  let memoryKB = 0;
@@ -4466,7 +6729,7 @@ function createDashboardServer(options) {
4466
6729
  memoryKB = parseInt(output.trim(), 10) || 0;
4467
6730
  } catch {
4468
6731
  }
4469
- ws.send(JSON.stringify({
6732
+ sendMsg(ws, {
4470
6733
  type: "metadata",
4471
6734
  sessionId: msg.sessionId,
4472
6735
  metadata: {
@@ -4478,7 +6741,7 @@ function createDashboardServer(options) {
4478
6741
  uptimeMs: Date.now() - session.connectedAt,
4479
6742
  connectedAt: session.connectedAt
4480
6743
  }
4481
- }));
6744
+ });
4482
6745
  break;
4483
6746
  }
4484
6747
  }
@@ -4496,7 +6759,7 @@ function createDashboardServer(options) {
4496
6759
  });
4497
6760
  });
4498
6761
  function broadcast(message) {
4499
- const msg = JSON.stringify(message);
6762
+ const msg = encrypt(JSON.stringify(message), encryptionKey);
4500
6763
  for (const client of clients) {
4501
6764
  if (client.readyState === client.OPEN) {
4502
6765
  client.send(msg);
@@ -4571,6 +6834,7 @@ var PreviewCollector = class extends EventEmitter2 {
4571
6834
  connectToSession(session) {
4572
6835
  const conn = {
4573
6836
  ws: null,
6837
+ encryptionKey: deriveEncryptionKey(session.token),
4574
6838
  lines: [],
4575
6839
  rawBuffer: "",
4576
6840
  throttleTimer: null,
@@ -4591,10 +6855,18 @@ var PreviewCollector = class extends EventEmitter2 {
4591
6855
  conn.ws = ws;
4592
6856
  ws.on("open", () => {
4593
6857
  conn.reconnectAttempt = 0;
6858
+ ws.send(encrypt(JSON.stringify({ type: "sync", lastSeq: -1 }), conn.encryptionKey));
4594
6859
  });
4595
6860
  ws.on("message", (raw) => {
6861
+ let plaintext;
6862
+ try {
6863
+ const rawStr = typeof raw === "string" ? raw : raw.toString("utf-8");
6864
+ plaintext = decrypt(rawStr, conn.encryptionKey);
6865
+ } catch {
6866
+ return;
6867
+ }
4596
6868
  try {
4597
- const msg = JSON.parse(typeof raw === "string" ? raw : raw.toString("utf-8"));
6869
+ const msg = JSON.parse(plaintext);
4598
6870
  if (msg.type === "data" && typeof msg.data === "string") {
4599
6871
  this.handleData(sessionId, msg.data);
4600
6872
  }