zkjson 0.1.21 → 0.1.22
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.
- package/encoder.js +74 -74
- package/package.json +1 -1
- package/parse.js +130 -90
- package/uint.js +244 -203
package/uint.js
CHANGED
@@ -1,61 +1,67 @@
|
|
1
1
|
function digits(x) {
|
2
|
-
if (x == 0) return
|
3
|
-
var p =
|
2
|
+
if (x == 0) return 1n
|
3
|
+
var p = 0n
|
4
4
|
while (x > 0) {
|
5
|
-
x = (x /
|
5
|
+
x = (x / 10n) >> 0n
|
6
6
|
p++
|
7
7
|
}
|
8
8
|
return p
|
9
9
|
}
|
10
10
|
|
11
|
-
|
11
|
+
function arr(row) {
|
12
12
|
var _arr = []
|
13
13
|
for (var i = 0; i < row; i++) {
|
14
|
-
_arr.push(
|
14
|
+
_arr.push(0n)
|
15
15
|
}
|
16
16
|
return _arr
|
17
17
|
}
|
18
18
|
|
19
|
-
|
19
|
+
function toArray(json, size) {
|
20
|
+
json = bn(json)
|
20
21
|
var j = []
|
21
|
-
var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
|
22
|
+
var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
|
22
23
|
while (c[5] == 0) {
|
23
24
|
c = next(json, c)
|
24
25
|
j.push(c[0])
|
25
26
|
}
|
26
|
-
return j
|
27
|
+
return j.map(n => Number(n))
|
27
28
|
}
|
28
29
|
|
29
|
-
|
30
|
-
|
30
|
+
function arrPush(json, size, digit, index, val) {
|
31
|
+
json = bn(json)
|
32
|
+
index = bn(index)
|
31
33
|
var len = get(json, size, 0)
|
32
|
-
var _sum = sum(json, size, digit, 1, index +
|
33
|
-
var at = _sum +
|
34
|
+
var _sum = sum(json, size, digit, 1, index + 2n)
|
35
|
+
var at = _sum + 1n + len
|
34
36
|
json = insert(json, size, digit, at, val)
|
35
|
-
var alen = get(json, size, index +
|
36
|
-
json = replace(json, size, digit, index +
|
37
|
+
var alen = get(json, size, index + 1n)
|
38
|
+
json = replace(json, size, digit, index + 1n, alen + 1n)
|
37
39
|
return json
|
38
40
|
}
|
39
41
|
|
40
|
-
|
42
|
+
function arrGet(json, size, digit, index, index2) {
|
43
|
+
json = bn(json)
|
44
|
+
index = bn(index)
|
45
|
+
index2 = bn(index2)
|
41
46
|
var len = get(json, size, 0)
|
42
|
-
var _sum = sum(json, size, digit, 1, index +
|
43
|
-
var at = _sum +
|
47
|
+
var _sum = sum(json, size, digit, 1, index + 1n)
|
48
|
+
var at = _sum + 1n + len + index2
|
44
49
|
return get(json, size, at)
|
45
50
|
}
|
46
51
|
|
47
|
-
|
48
|
-
|
49
|
-
var
|
50
|
-
|
52
|
+
function pushArray(json, size, digit, _arr, asize) {
|
53
|
+
json = bn(json)
|
54
|
+
var jlen = length(json, size)
|
55
|
+
var alen = 0n
|
56
|
+
if (jlen == 0) {
|
51
57
|
json = push(json, size, digit, 1)
|
52
|
-
}else{
|
58
|
+
} else {
|
53
59
|
alen = get(json, size, 0)
|
54
|
-
json = replace(json, size, digit, 0, alen +
|
60
|
+
json = replace(json, size, digit, 0, alen + 1n)
|
55
61
|
}
|
56
|
-
var len = length(_arr,size)
|
57
|
-
json = insert(json, size, digit, alen +
|
58
|
-
var c = [0, asize, 0, 0, 0, 0, 0, 0, 0]
|
62
|
+
var len = length(_arr, size)
|
63
|
+
json = insert(json, size, digit, alen + 1n, len)
|
64
|
+
var c = bn([0, asize, 0, 0, 0, 0, 0, 0, 0])
|
59
65
|
while (c[5] == 0) {
|
60
66
|
c = next(_arr, c)
|
61
67
|
json = push(json, size, digit, c[0])
|
@@ -63,29 +69,30 @@ const pushArray = (json, size, digit, _arr, asize) => {
|
|
63
69
|
return json
|
64
70
|
}
|
65
71
|
|
66
|
-
|
67
|
-
|
68
|
-
var
|
69
|
-
|
72
|
+
function popArray(json, size, digit) {
|
73
|
+
json = bn(json)
|
74
|
+
var jlen = length(json, size)
|
75
|
+
var alen = 0n
|
76
|
+
if (jlen == 0) {
|
70
77
|
throw Error()
|
71
|
-
}else{
|
78
|
+
} else {
|
72
79
|
alen = get(json, size, 0)
|
73
80
|
}
|
74
|
-
if(alen == 1) return []
|
81
|
+
if (alen == 1) return []
|
75
82
|
var len = get(json, size, alen)
|
76
|
-
json = replace(json, size, digit, 0, alen -
|
83
|
+
json = replace(json, size, digit, 0, alen - 1n)
|
77
84
|
var _sum = sum(json, size, digit, 1, alen)
|
78
|
-
var start = alen +
|
79
|
-
var end = start + len +
|
80
|
-
json = remove(json, size, digit, start,
|
81
|
-
json = remove(json, size, digit, alen,
|
85
|
+
var start = alen + 1n + _sum
|
86
|
+
var end = start + len + 1n
|
87
|
+
json = remove(json, size, digit, start, end)
|
88
|
+
json = remove(json, size, digit, alen, alen + 1n)
|
82
89
|
return json
|
83
90
|
}
|
84
91
|
|
85
|
-
|
86
|
-
|
87
|
-
var _len =
|
88
|
-
var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
|
92
|
+
function length(json, size) {
|
93
|
+
json = bn(json)
|
94
|
+
var _len = 0n
|
95
|
+
var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
|
89
96
|
while (c[5] == 0) {
|
90
97
|
c = next(json, c)
|
91
98
|
_len++
|
@@ -97,9 +104,10 @@ const length = (json, size) => {
|
|
97
104
|
}
|
98
105
|
}
|
99
106
|
|
100
|
-
|
101
|
-
|
102
|
-
var
|
107
|
+
function sum(json, size, digit, start, end) {
|
108
|
+
json = bn(json)
|
109
|
+
var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
|
110
|
+
var _sum = 0n
|
103
111
|
var i = 0
|
104
112
|
while (c[5] == 0) {
|
105
113
|
c = next(json, c)
|
@@ -109,8 +117,9 @@ const sum = (json, size, digit, start, end) =>{
|
|
109
117
|
return _sum
|
110
118
|
}
|
111
119
|
|
112
|
-
|
113
|
-
|
120
|
+
function mul(json, size, digit, start, end) {
|
121
|
+
json = bn(json)
|
122
|
+
var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
|
114
123
|
var _mul = 0
|
115
124
|
var i = 0
|
116
125
|
while (c[5] == 0) {
|
@@ -121,83 +130,93 @@ const mul = (json, size, digit, start, end) =>{
|
|
121
130
|
return _mul
|
122
131
|
}
|
123
132
|
|
124
|
-
|
133
|
+
function remove(json, size, digit, start, end) {
|
134
|
+
json = bn(json)
|
125
135
|
var _arr = arr(size)
|
126
|
-
var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
|
136
|
+
var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
|
127
137
|
var i = 0
|
128
138
|
while (c[5] == 0) {
|
129
139
|
c = next(json, c)
|
130
|
-
if (i < start || i >= end)
|
140
|
+
if (i < start || i >= end) {
|
141
|
+
_arr = push(_arr, size, digit, c[0])
|
142
|
+
}
|
131
143
|
i++
|
132
144
|
}
|
133
145
|
return _arr
|
134
146
|
}
|
135
147
|
|
136
|
-
|
148
|
+
function slice(json, size, digit, start, end) {
|
149
|
+
json = bn(json)
|
137
150
|
var _arr = arr(size)
|
138
|
-
var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
|
151
|
+
var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
|
139
152
|
var i = 0
|
140
153
|
while (c[5] == 0) {
|
141
154
|
c = next(json, c)
|
142
|
-
if (i >= start && i < end) push(_arr, size, digit, c[0])
|
155
|
+
if (i >= start && i < end) _arr = push(_arr, size, digit, c[0])
|
143
156
|
i++
|
144
157
|
}
|
145
158
|
return _arr
|
146
159
|
}
|
147
160
|
|
148
|
-
|
149
|
-
|
161
|
+
function get(json, size, index) {
|
162
|
+
json = bn(json)
|
163
|
+
var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
|
150
164
|
var i = 0
|
151
165
|
while (c[5] == 0) {
|
152
166
|
c = next(json, c)
|
153
|
-
if(i == index) return c[0]
|
167
|
+
if (i == index) return c[0]
|
154
168
|
i++
|
155
169
|
}
|
156
170
|
throw Error()
|
157
171
|
}
|
158
172
|
|
159
|
-
|
173
|
+
function insert(json, size, digit, at, val) {
|
174
|
+
json = bn(json)
|
160
175
|
var _arr = arr(size)
|
161
|
-
var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
|
176
|
+
var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
|
162
177
|
var i = 0
|
163
|
-
if(at == 0) {
|
178
|
+
if (at == 0) {
|
164
179
|
_arr = push(_arr, size, digit, val)
|
165
180
|
}
|
166
181
|
while (c[5] == 0) {
|
167
182
|
c = next(json, c)
|
168
|
-
push(_arr, size, digit, c[0])
|
183
|
+
_arr = push(_arr, size, digit, c[0])
|
169
184
|
i++
|
170
|
-
if(at == i) push(_arr, size, digit, val)
|
185
|
+
if (at == i) _arr = push(_arr, size, digit, val)
|
171
186
|
}
|
172
187
|
return _arr
|
173
188
|
}
|
174
189
|
|
175
|
-
|
190
|
+
function replace(json, size, digit, at, val) {
|
191
|
+
json = bn(json)
|
176
192
|
var _arr = arr(size)
|
177
|
-
var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
|
193
|
+
var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
|
178
194
|
var i = 0
|
179
195
|
while (c[5] == 0) {
|
180
196
|
c = next(json, c)
|
181
|
-
if(at == i) {
|
197
|
+
if (at == i) {
|
182
198
|
_arr = push(_arr, size, digit, val)
|
183
|
-
}else{
|
184
|
-
push(_arr, size, digit, c[0])
|
199
|
+
} else {
|
200
|
+
_arr = push(_arr, size, digit, c[0])
|
185
201
|
}
|
186
202
|
i++
|
187
203
|
}
|
188
204
|
return _arr
|
189
205
|
}
|
190
206
|
|
191
|
-
|
207
|
+
function last(json, size) {
|
208
|
+
json = bn(json)
|
192
209
|
var val = 0
|
193
|
-
var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
|
210
|
+
var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
|
194
211
|
while (c[5] == 0) {
|
195
212
|
c = next(json, c)
|
196
213
|
val = c[0]
|
197
214
|
}
|
198
215
|
return val
|
199
216
|
}
|
200
|
-
|
217
|
+
|
218
|
+
function lastRow(json, size) {
|
219
|
+
json = bn(json)
|
201
220
|
var v = 0
|
202
221
|
for (var j = 0; j < size; j++) {
|
203
222
|
if (json[j] != 0) v = j
|
@@ -205,37 +224,41 @@ const lastRow = (json, size) => {
|
|
205
224
|
return v
|
206
225
|
}
|
207
226
|
|
208
|
-
|
227
|
+
function shift(json, size, digit) {
|
228
|
+
json = bn(json)
|
209
229
|
var _arr = arr(size)
|
210
|
-
var c = [0, size, 0, 0, 0, 0, 0, 0, 0]
|
230
|
+
var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
|
211
231
|
var i = 0
|
212
232
|
while (c[5] == 0) {
|
213
233
|
c = next(json, c)
|
214
|
-
if (i > 0) push(_arr, size, digit, c[0])
|
234
|
+
if (i > 0) _arr = push(_arr, size, digit, c[0])
|
215
235
|
i++
|
216
236
|
}
|
217
237
|
return _arr
|
218
238
|
}
|
219
239
|
|
220
|
-
|
240
|
+
function unshift(json, size, digit, num) {
|
241
|
+
json = bn(json)
|
221
242
|
var _arr = arr(size)
|
222
|
-
push(_arr, size, digit, num)
|
223
|
-
|
243
|
+
_arr = push(_arr, size, digit, num)
|
244
|
+
|
245
|
+
var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
|
224
246
|
var i = 0
|
225
|
-
if (json[0]
|
247
|
+
if (json[0] != 0) {
|
226
248
|
while (c[5] == 0) {
|
227
249
|
c = next(json, c)
|
228
|
-
push(_arr, size, digit, c[0])
|
250
|
+
_arr = push(_arr, size, digit, c[0])
|
229
251
|
i++
|
230
252
|
}
|
231
253
|
}
|
232
254
|
return _arr
|
233
255
|
}
|
234
256
|
|
235
|
-
|
236
|
-
|
257
|
+
function concat(json, json2, size, digit) {
|
258
|
+
json = bn(json)
|
259
|
+
var c = bn([0, size, 0, 0, 0, 0, 0, 0, 0])
|
237
260
|
var i = 0
|
238
|
-
if (json2[0]
|
261
|
+
if (json2[0] != 0) {
|
239
262
|
while (c[5] == 0) {
|
240
263
|
c = next(json2, c)
|
241
264
|
json = push(json, size, digit, c[0])
|
@@ -244,65 +267,68 @@ const concat = (json, json2, size, digit) => {
|
|
244
267
|
}
|
245
268
|
return json
|
246
269
|
}
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
var
|
252
|
-
var
|
253
|
-
var
|
254
|
-
var
|
255
|
-
var
|
256
|
-
|
270
|
+
|
271
|
+
function pop(json, size, overflow = 8) {
|
272
|
+
json = bn(json)
|
273
|
+
overflow = bn(overflow)
|
274
|
+
var l = 0n
|
275
|
+
var ll = 0n
|
276
|
+
var lnum = 0n
|
277
|
+
var series = 0n
|
278
|
+
var snum = 0n
|
279
|
+
var link = 0n
|
280
|
+
var _l = 0n
|
281
|
+
var _d = 0n
|
282
|
+
for (var l2 = 0n; l2 < size; l2++) {
|
257
283
|
if (json[l2] != 0) {
|
258
284
|
_l = l2
|
259
285
|
var x = json[l2]
|
260
286
|
var d = digits(x)
|
261
287
|
var p = d
|
262
|
-
var on =
|
263
|
-
var i =
|
288
|
+
var on = 0n
|
289
|
+
var i = 0n
|
264
290
|
while (x > 0) {
|
265
|
-
var n = (x /
|
266
|
-
x -=
|
291
|
+
var n = (x / 10n ** (p - 1n)) >> 0n
|
292
|
+
x -= 10n ** (p - 1n) * n
|
267
293
|
p--
|
268
294
|
i++
|
269
295
|
if (on == 0) {
|
270
|
-
on =
|
296
|
+
on = 1n
|
271
297
|
} else {
|
272
298
|
var len = n
|
273
299
|
if (link == 0) {
|
274
|
-
ll = i -
|
300
|
+
ll = i - 1n
|
275
301
|
l = l2
|
276
302
|
_d = d
|
277
303
|
}
|
278
304
|
lnum = len
|
279
|
-
snum =
|
305
|
+
snum = 0n
|
280
306
|
if (len == 0) {
|
281
|
-
var n = (x /
|
282
|
-
var len2 = (x /
|
307
|
+
var n = (x / 10n ** (p - 1n)) >> 0n
|
308
|
+
var len2 = (x / 10n ** (p - 1n)) >> 0n
|
283
309
|
series = len2
|
284
|
-
x -=
|
310
|
+
x -= 10n ** (p - 1n) * n
|
285
311
|
p--
|
286
312
|
i++
|
287
|
-
for (var i2 =
|
288
|
-
var n = (x /
|
289
|
-
snum = snum *
|
290
|
-
x -=
|
313
|
+
for (var i2 = 0n; i2 < len2; i2++) {
|
314
|
+
var n = (x / 10n ** (p - 1n)) >> 0n
|
315
|
+
snum = snum * 10n + n
|
316
|
+
x -= 10n ** (p - 1n) * n
|
291
317
|
p--
|
292
318
|
i++
|
293
319
|
}
|
294
320
|
} else {
|
295
321
|
var _len = len
|
296
|
-
if (len == overflow +
|
297
|
-
link =
|
322
|
+
if (len == overflow + 1n) {
|
323
|
+
link = 2n
|
298
324
|
_len = overflow
|
299
325
|
} else if (link > 0) {
|
300
326
|
link--
|
301
327
|
}
|
302
|
-
series =
|
303
|
-
for (var i2 =
|
304
|
-
var n = (x /
|
305
|
-
x -=
|
328
|
+
series = 0n
|
329
|
+
for (var i2 = 0n; i2 < _len; i2++) {
|
330
|
+
var n = (x / 10n ** (p - 1n)) >> 0n
|
331
|
+
x -= 10n ** (p - 1n) * n
|
306
332
|
p--
|
307
333
|
i++
|
308
334
|
}
|
@@ -313,40 +339,42 @@ const pop = (json, size, overflow = 3) => {
|
|
313
339
|
}
|
314
340
|
|
315
341
|
if (link == 1) {
|
316
|
-
for (var i = l +
|
317
|
-
json[i] =
|
342
|
+
for (var i = l + 1n; i <= _l; i++) {
|
343
|
+
json[i] = 0n
|
318
344
|
}
|
319
345
|
if (ll < 2) {
|
320
|
-
json[l] =
|
346
|
+
json[l] = 0n
|
321
347
|
} else {
|
322
|
-
json[l] = (json[l] /
|
348
|
+
json[l] = (json[l] / 10n ** (_d - ll)) >> 0n
|
323
349
|
}
|
324
350
|
} else if (series != 0) {
|
325
351
|
if (series == 3) {
|
326
|
-
json[l] = (json[l] /
|
327
|
-
json[l] = json[l] *
|
328
|
-
var n = (snum /
|
329
|
-
json[l] = json[l] *
|
330
|
-
json[l] = json[l] *
|
331
|
-
var n2 = ((snum /
|
332
|
-
json[l] = json[l] *
|
352
|
+
json[l] = (json[l] / 10n ** (_d - ll)) >> 0n
|
353
|
+
json[l] = json[l] * 10n + 1n
|
354
|
+
var n = (snum / 10n ** 2n) >> 0n
|
355
|
+
json[l] = json[l] * 10n + n
|
356
|
+
json[l] = json[l] * 10n + 1n
|
357
|
+
var n2 = ((snum / 10n) >> 0n) - n * 10n
|
358
|
+
json[l] = json[l] * 10n + n2
|
333
359
|
} else {
|
334
|
-
json[l] = (json[l] /
|
335
|
-
json[l] = json[l] *
|
336
|
-
snum = (snum /
|
337
|
-
json[l] = json[l] *
|
360
|
+
json[l] = (json[l] / 10n ** (_d - ll - 1n)) >> 0n
|
361
|
+
json[l] = json[l] * 10n + (series - 1n)
|
362
|
+
snum = (snum / 10n) >> 0n
|
363
|
+
json[l] = json[l] * 10n ** (series - 1n) + snum
|
338
364
|
}
|
339
365
|
} else if (ll < 2) {
|
340
|
-
json[l] =
|
366
|
+
json[l] = 0n
|
341
367
|
} else {
|
342
|
-
json[l] = (json[l] /
|
368
|
+
json[l] = (json[l] / 10n ** (d - ll)) >> 0n
|
343
369
|
}
|
344
370
|
return json
|
345
371
|
}
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
372
|
+
function push(json, size, digit, c, overflow = 8) {
|
373
|
+
overflow = bn(overflow)
|
374
|
+
json = bn(json)
|
375
|
+
c = bn(c)
|
376
|
+
var i4 = 0n
|
377
|
+
var init = 0n
|
350
378
|
while (c > 0 || init == 0) {
|
351
379
|
init = 1
|
352
380
|
var len = digits(c)
|
@@ -355,76 +383,78 @@ const push = (json, size, digit, c, overflow = 3) => {
|
|
355
383
|
var _c = c
|
356
384
|
if (overflow < len) {
|
357
385
|
_len = overflow
|
358
|
-
_len2 = overflow +
|
359
|
-
_c = (c /
|
360
|
-
c -= _c *
|
386
|
+
_len2 = overflow + 1n
|
387
|
+
_c = (c / 10n ** (len - overflow)) >> 0n
|
388
|
+
c -= _c * 10n ** (len - overflow)
|
361
389
|
} else {
|
362
|
-
c =
|
390
|
+
c = 0n
|
363
391
|
}
|
364
392
|
var appended = 0
|
365
393
|
for (var i = i4; i < size; i++) {
|
366
394
|
var d = digits(json[i])
|
367
|
-
|
368
|
-
var
|
369
|
-
var
|
395
|
+
if (d == 0) break
|
396
|
+
var one = 0n
|
397
|
+
var ones = 0n
|
398
|
+
var nums = 0n
|
370
399
|
if (_len == 1 && digit > d) {
|
371
|
-
var x = json[i] -
|
372
|
-
var i2 =
|
400
|
+
var x = json[i] - 10n ** (d - 1n)
|
401
|
+
var i2 = 1n
|
373
402
|
while (i2 < d) {
|
374
|
-
var len =
|
375
|
-
|
403
|
+
var len = 0n
|
404
|
+
len = (x / 10n ** (d - i2 - 1n)) >> 0n
|
405
|
+
x = x - len * 10n ** (d - i2 - 1n)
|
376
406
|
if (len == 1) {
|
377
407
|
if (ones == 0) one = i2
|
378
408
|
ones++
|
379
|
-
} else if (len
|
380
|
-
ones =
|
381
|
-
nums =
|
409
|
+
} else if (len != 0) {
|
410
|
+
ones = 0n
|
411
|
+
nums = 0n
|
382
412
|
} else {
|
383
413
|
one = i2
|
384
414
|
}
|
385
415
|
i2++
|
386
416
|
if (len == 0) {
|
387
|
-
var len3 = (x /
|
388
|
-
x = x - len3 *
|
417
|
+
var len3 = (x / 10n ** (d - i2 - 1n)) >> 0n
|
418
|
+
x = x - len3 * 10n ** (d - i2 - 1n)
|
389
419
|
i2++
|
390
420
|
ones = len3
|
391
|
-
for (var i3 =
|
392
|
-
var len2 = (x /
|
393
|
-
x = x - len2 *
|
394
|
-
nums = nums *
|
421
|
+
for (var i3 = 0n; i3 < len3; i3++) {
|
422
|
+
var len2 = (x / 10n ** (d - i2 - 1n)) >> 0n
|
423
|
+
x = x - len2 * 10n ** (d - i2 - 1n)
|
424
|
+
nums = nums * 10n + len2
|
395
425
|
i2++
|
396
426
|
}
|
397
427
|
} else {
|
398
|
-
for (var i3 =
|
399
|
-
var len2 = (x /
|
400
|
-
x = x - len2 *
|
401
|
-
if (len == 1) nums = nums *
|
428
|
+
for (var i3 = 0n; i3 < len; i3++) {
|
429
|
+
var len2 = (x / 10n ** (d - i2 - 1n)) >> 0n
|
430
|
+
x = x - len2 * 10n ** (d - i2 - 1n)
|
431
|
+
if (len == 1) nums = nums * 10n + len2
|
402
432
|
i2++
|
403
433
|
}
|
404
434
|
}
|
405
435
|
}
|
406
|
-
if (ones == 2) nums = nums *
|
436
|
+
if (ones == 2) nums = nums * 10n + _c
|
407
437
|
}
|
408
|
-
if (ones > 2) {
|
409
|
-
var x = (json[i] /
|
410
|
-
x = x *
|
411
|
-
x = x *
|
412
|
-
x = x *
|
438
|
+
if (ones > 2 && ones < 9) {
|
439
|
+
var x = (json[i] / 10n ** (d - one - 1n)) >> 0n
|
440
|
+
x = x * 10n + ones + 1n
|
441
|
+
x = x * 10n ** ones + nums
|
442
|
+
x = x * 10n + _c
|
413
443
|
json[i] = x
|
414
444
|
i4 = i
|
415
445
|
appended = 1
|
416
446
|
} else if (ones == 2) {
|
417
|
-
var x = (json[i] /
|
418
|
-
x = x *
|
419
|
-
x = x *
|
420
|
-
x = x *
|
447
|
+
var x = (json[i] / 10n ** (d - one)) >> 0n
|
448
|
+
x = x * 10n + 0n
|
449
|
+
x = x * 10n + ones + 1n
|
450
|
+
x = x * 10n ** (ones + 1n) + nums
|
421
451
|
json[i] = x
|
422
452
|
i4 = i
|
423
453
|
appended = 1
|
424
454
|
} else if (digit > d + _len && appended == 0) {
|
425
|
-
if (json[i] == 0) json[i] =
|
426
|
-
json[i] = json[i] *
|
427
|
-
json[i] = json[i] *
|
455
|
+
if (json[i] == 0) json[i] = 1n
|
456
|
+
json[i] = json[i] * 10n + _len2
|
457
|
+
json[i] = json[i] * 10n ** _len + _c
|
428
458
|
i4 = i
|
429
459
|
appended = 1
|
430
460
|
}
|
@@ -432,95 +462,104 @@ const push = (json, size, digit, c, overflow = 3) => {
|
|
432
462
|
}
|
433
463
|
return json
|
434
464
|
}
|
465
|
+
function bn(arr) {
|
466
|
+
if (typeof arr == "number") return BigInt(arr)
|
467
|
+
if (!Array.isArray(arr)) return arr
|
468
|
+
return arr.map(n => {
|
469
|
+
return typeof n != "number" ? n : BigInt(n)
|
470
|
+
})
|
471
|
+
}
|
435
472
|
|
436
|
-
|
473
|
+
function next(json, c) {
|
474
|
+
json = bn(json)
|
475
|
+
c = bn(c)
|
437
476
|
if (c[5] == 1) {
|
438
|
-
return [0, c[1], 0, 0, 0, 1, c[6], c[7], c[8]]
|
477
|
+
return bn([0, c[1], 0, 0, 0, 1, c[6], c[7], c[8]])
|
439
478
|
}
|
440
|
-
var prev =
|
479
|
+
var prev = 0n
|
441
480
|
for (var j = c[2]; j < c[1]; j++) {
|
442
481
|
var d = digits(json[j])
|
443
482
|
if (json[j] > 0) {
|
444
483
|
var p = c[4] == 0 ? digits(json[j]) : c[4]
|
445
484
|
var x = c[4] == 0 ? json[j] : c[3]
|
446
|
-
var cur =
|
447
|
-
var num =
|
448
|
-
var on = c[4] == 0 ?
|
449
|
-
var len = c[4] == 0 ?
|
485
|
+
var cur = 0n
|
486
|
+
var num = 0n
|
487
|
+
var on = c[4] == 0 ? 0n : c[7]
|
488
|
+
var len = c[4] == 0 ? 0n : c[8]
|
450
489
|
while (p > 0) {
|
451
|
-
var n = (x /
|
490
|
+
var n = (x / 10n ** (p - 1n)) >> 0n
|
452
491
|
if (on == 0) {
|
453
|
-
on =
|
492
|
+
on = 1n
|
454
493
|
} else if (on == 1) {
|
455
494
|
if (n == 0) {
|
456
|
-
on =
|
495
|
+
on = 4n
|
457
496
|
} else {
|
458
497
|
if (n == 9) {
|
459
|
-
len =
|
460
|
-
on =
|
498
|
+
len = 8n
|
499
|
+
on = 3n
|
461
500
|
} else {
|
462
|
-
on =
|
501
|
+
on = 2n
|
463
502
|
len = n
|
464
503
|
}
|
465
|
-
cur =
|
504
|
+
cur = 0n
|
466
505
|
}
|
467
506
|
} else if (on == 4) {
|
468
|
-
on =
|
507
|
+
on = 5n
|
469
508
|
len = n
|
470
509
|
} else {
|
471
|
-
num += n *
|
510
|
+
num += n * 10n ** (len - cur - 1n)
|
472
511
|
cur++
|
473
512
|
if (on == 5) {
|
474
513
|
num = n
|
475
514
|
len--
|
476
|
-
x -=
|
515
|
+
x -= 10n ** (p - 1n) * n
|
477
516
|
p--
|
478
|
-
var done =
|
517
|
+
var done = 0n
|
479
518
|
if (p == 0) {
|
480
519
|
j++
|
481
520
|
if (c[1] == j || json[j] == 0) {
|
482
|
-
x =
|
483
|
-
done =
|
521
|
+
x = 0n
|
522
|
+
done = 1n
|
484
523
|
} else {
|
485
524
|
x = json[j]
|
486
525
|
}
|
487
526
|
}
|
488
|
-
if (len == 0) on =
|
489
|
-
return [num, c[1], j, x, p, done, c[6], on, len]
|
527
|
+
if (len == 0) on = 1n
|
528
|
+
return bn([num, c[1], j, x, p, done, c[6], on, len])
|
490
529
|
} else if (cur == len) {
|
491
|
-
prev *=
|
530
|
+
prev *= 10n ** len
|
492
531
|
if (on == 3) {
|
493
532
|
prev += num
|
494
533
|
} else {
|
495
534
|
num += prev
|
496
|
-
x -=
|
535
|
+
x -= 10n ** (p - 1n) * n
|
497
536
|
p--
|
498
|
-
var done =
|
537
|
+
var done = 0n
|
499
538
|
if (p == 0) {
|
500
539
|
j++
|
501
540
|
if (c[1] == j || json[j] == 0) {
|
502
|
-
x =
|
503
|
-
done =
|
541
|
+
x = 0n
|
542
|
+
done = 1n
|
504
543
|
} else {
|
505
544
|
x = json[j]
|
506
545
|
}
|
507
546
|
}
|
508
|
-
return [num, c[1], j, x, p, done, c[6], 1, len]
|
547
|
+
return bn([num, c[1], j, x, p, done, c[6], 1, len])
|
509
548
|
}
|
510
|
-
cur =
|
511
|
-
on =
|
512
|
-
len =
|
513
|
-
num =
|
549
|
+
cur = 0n
|
550
|
+
on = 1n
|
551
|
+
len = 0n
|
552
|
+
num = 0n
|
514
553
|
}
|
515
554
|
}
|
516
|
-
x -=
|
555
|
+
x -= 10n ** (p - 1n) * n
|
517
556
|
p--
|
518
557
|
}
|
519
558
|
} else {
|
520
|
-
return [0, c[1], 0, 0, 0, 1, c[6], 0, 0]
|
559
|
+
return bn([0, c[1], 0, 0, 0, 1, c[6], 0, 0])
|
521
560
|
}
|
522
561
|
}
|
523
|
-
return [0, c[1], 0, 0, 0, 1, c[6], 0, 0]
|
562
|
+
return bn([0, c[1], 0, 0, 0, 1, c[6], 0, 0])
|
524
563
|
}
|
525
564
|
|
526
565
|
module.exports = {
|
@@ -544,5 +583,7 @@ module.exports = {
|
|
544
583
|
arrGet,
|
545
584
|
remove,
|
546
585
|
popArray,
|
547
|
-
concat
|
586
|
+
concat,
|
587
|
+
bn,
|
588
|
+
digits,
|
548
589
|
}
|