json-as 1.1.23 → 1.1.25
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/CHANGELOG.md +8 -0
- package/README.md +6 -0
- package/assembly/index.ts +8 -6
- package/assembly/serialize/simd/string.ts +2 -3
- package/assembly/serialize/simple/arbitrary.ts +2 -1
- package/assembly/serialize/simple/object.ts +3 -3
- package/assembly/serialize/swar/string.ts +109 -0
- package/assembly/test.tmp.ts +11 -288
- package/assembly/test.ts +6 -24
- package/lib/as-bs.ts +32 -28
- package/package.json +7 -7
- package/run-bench.as.sh +1 -1
- package/transform/lib/visitor.js.map +1 -1
- package/transform/src/visitor.ts +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 2025-12-21 - 1.1.25
|
|
4
|
+
|
|
5
|
+
- feat: Implement SWAR-based string serialization
|
|
6
|
+
|
|
7
|
+
## 2025-11-28 - 1.1.24
|
|
8
|
+
|
|
9
|
+
- feat: Implement a moving average window to determine buffer size (essentially, allow the buffer size to shrink) [#163](https://github.com/JairusSW/json-as/pull/163)
|
|
10
|
+
|
|
3
11
|
## 2025-11-06 - 1.1.23
|
|
4
12
|
|
|
5
13
|
- fix: Map keys should follow proper typing and quote rules [#161](https://github.com/JairusSW/json-as/issues/161)
|
package/README.md
CHANGED
|
@@ -14,6 +14,12 @@ Add the `--transform` to your `asc` command (e.g. in package.json)
|
|
|
14
14
|
--transform json-as/transform
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
+
Optionally, for additional performance, also add:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
--enable simd
|
|
21
|
+
```
|
|
22
|
+
|
|
17
23
|
Alternatively, add it to your `asconfig.json`
|
|
18
24
|
|
|
19
25
|
```typescript
|
package/assembly/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference path="./index.d.ts" />
|
|
2
2
|
|
|
3
3
|
import { bs } from "../lib/as-bs";
|
|
4
|
-
import { serializeString } from "./serialize/simple/string";
|
|
4
|
+
// import { serializeString } from "./serialize/simple/string";
|
|
5
5
|
import { serializeArray } from "./serialize/simple/array";
|
|
6
6
|
import { serializeMap } from "./serialize/simple/map";
|
|
7
7
|
import { serializeDate } from "./serialize/simple/date";
|
|
@@ -28,6 +28,7 @@ import { deserializeObject } from "./deserialize/simple/object";
|
|
|
28
28
|
import { serializeRaw } from "./serialize/simple/raw";
|
|
29
29
|
import { deserializeRaw } from "./deserialize/simple/raw";
|
|
30
30
|
import { serializeString_SIMD } from "./serialize/simd/string";
|
|
31
|
+
import { serializeString_SWAR } from "./serialize/swar/string";
|
|
31
32
|
// import { deserializeString_SIMD } from "./deserialize/simd/string";
|
|
32
33
|
|
|
33
34
|
/**
|
|
@@ -110,14 +111,14 @@ export namespace JSON {
|
|
|
110
111
|
// const newSize = bytes(data) + 4;
|
|
111
112
|
// const newBuf = __new(newSize, idof<string>());
|
|
112
113
|
// bs.setBuffer(newBuf);
|
|
113
|
-
//
|
|
114
|
+
// serializeString_SWAR(changetype<string>(data));
|
|
114
115
|
// bs.setBuffer(oldBuf);
|
|
115
116
|
// return changetype<string>(newBuf);
|
|
116
117
|
// }
|
|
117
118
|
if (ASC_FEATURE_SIMD) {
|
|
118
119
|
serializeString_SIMD(data as string);
|
|
119
120
|
} else {
|
|
120
|
-
|
|
121
|
+
serializeString_SWAR(data as string);
|
|
121
122
|
}
|
|
122
123
|
return bs.out<string>();
|
|
123
124
|
// @ts-ignore: Supplied by transform
|
|
@@ -261,6 +262,7 @@ export namespace JSON {
|
|
|
261
262
|
}
|
|
262
263
|
|
|
263
264
|
|
|
265
|
+
// @ts-ignore: decorators allowed here
|
|
264
266
|
@final
|
|
265
267
|
export class Value {
|
|
266
268
|
static METHODS: Map<u32, u32> = new Map<u32, u32>();
|
|
@@ -553,7 +555,7 @@ export namespace JSON {
|
|
|
553
555
|
if (ASC_FEATURE_SIMD) {
|
|
554
556
|
serializeString_SIMD(src as string);
|
|
555
557
|
} else {
|
|
556
|
-
|
|
558
|
+
serializeString_SWAR(src as string);
|
|
557
559
|
}
|
|
558
560
|
// @ts-ignore: Supplied by transform
|
|
559
561
|
} else if (isDefined(src.__SERIALIZE_CUSTOM)) {
|
|
@@ -722,7 +724,7 @@ export namespace JSON {
|
|
|
722
724
|
// const newSize = bytes(data) + 4;
|
|
723
725
|
// const newBuf = __new(newSize, idof<string>());
|
|
724
726
|
// bs.setBuffer(newBuf);
|
|
725
|
-
//
|
|
727
|
+
// serializeString_SWAR(changetype<string>(data));
|
|
726
728
|
// bs.setBuffer(oldBuf);
|
|
727
729
|
// return changetype<string>(newBuf);
|
|
728
730
|
// }
|
|
@@ -730,7 +732,7 @@ export namespace JSON {
|
|
|
730
732
|
serializeString_SIMD(data as string);
|
|
731
733
|
} else {
|
|
732
734
|
bs.saveState();
|
|
733
|
-
|
|
735
|
+
serializeString_SWAR(data as string);
|
|
734
736
|
}
|
|
735
737
|
return bs.cpyOut<string>();
|
|
736
738
|
// @ts-ignore: Supplied by transform
|
|
@@ -5,8 +5,6 @@ import { bytes } from "../../util";
|
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Serializes strings into their JSON counterparts using SIMD operations
|
|
8
|
-
* @param srcStart pointer to begin serializing at
|
|
9
|
-
* @param srcEnd pointer to end serialization at
|
|
10
8
|
*/
|
|
11
9
|
export function serializeString_SIMD(src: string): void {
|
|
12
10
|
const U00_MARKER = 13511005048209500;
|
|
@@ -22,7 +20,7 @@ export function serializeString_SIMD(src: string): void {
|
|
|
22
20
|
|
|
23
21
|
bs.proposeSize(srcSize + 4);
|
|
24
22
|
|
|
25
|
-
store<u8>(
|
|
23
|
+
store<u8>(bs.offset, 34); // "
|
|
26
24
|
bs.offset += 2;
|
|
27
25
|
|
|
28
26
|
while (srcStart <= srcEnd16) {
|
|
@@ -39,6 +37,7 @@ export function serializeString_SIMD(src: string): void {
|
|
|
39
37
|
|
|
40
38
|
while (mask != 0) {
|
|
41
39
|
const lane_index = ctz(mask) << 1;
|
|
40
|
+
// console.log("lane index " + lane_index.toString());
|
|
42
41
|
const src_offset = srcStart + lane_index;
|
|
43
42
|
const code = load<u16>(src_offset) << 2;
|
|
44
43
|
const escaped = load<u32>(SERIALIZE_ESCAPE_TABLE + code);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { JSON } from "../..";
|
|
2
|
+
import { serializeString_SWAR } from "../swar/string";
|
|
2
3
|
import { serializeArray } from "./array";
|
|
3
4
|
import { serializeBool } from "./bool";
|
|
4
5
|
import { serializeFloat } from "./float";
|
|
@@ -27,7 +28,7 @@ export function serializeArbitrary(src: JSON.Value): void {
|
|
|
27
28
|
serializeFloat<f64>(src.get<f64>());
|
|
28
29
|
break;
|
|
29
30
|
case JSON.Types.String:
|
|
30
|
-
|
|
31
|
+
serializeString_SWAR(src.get<string>());
|
|
31
32
|
break;
|
|
32
33
|
case JSON.Types.Bool:
|
|
33
34
|
serializeBool(src.get<bool>());
|
|
@@ -2,7 +2,7 @@ import { bs } from "../../../lib/as-bs";
|
|
|
2
2
|
import { JSON } from "../..";
|
|
3
3
|
import { BRACE_LEFT, BRACE_RIGHT, COLON, COMMA } from "../../custom/chars";
|
|
4
4
|
import { serializeArbitrary } from "./arbitrary";
|
|
5
|
-
import {
|
|
5
|
+
import { serializeString_SWAR } from "../swar/string";
|
|
6
6
|
|
|
7
7
|
export function serializeObject(src: JSON.Obj): void {
|
|
8
8
|
const srcSize = src.size;
|
|
@@ -23,7 +23,7 @@ export function serializeObject(src: JSON.Obj): void {
|
|
|
23
23
|
bs.offset += 2;
|
|
24
24
|
|
|
25
25
|
for (let i = 0; i < srcEnd; i++) {
|
|
26
|
-
|
|
26
|
+
serializeString_SWAR(unchecked(keys[i]));
|
|
27
27
|
bs.growSize(2);
|
|
28
28
|
store<u16>(bs.offset, COLON);
|
|
29
29
|
bs.offset += 2;
|
|
@@ -34,7 +34,7 @@ export function serializeObject(src: JSON.Obj): void {
|
|
|
34
34
|
bs.offset += 2;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
serializeString_SWAR(unchecked(keys[srcEnd]));
|
|
38
38
|
bs.growSize(2);
|
|
39
39
|
store<u16>(bs.offset, COLON);
|
|
40
40
|
bs.offset += 2;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { bs } from "../../../lib/as-bs";
|
|
2
|
+
import { BACK_SLASH } from "../../custom/chars";
|
|
3
|
+
import { SERIALIZE_ESCAPE_TABLE } from "../../globals/tables";
|
|
4
|
+
import { bytes } from "../../util/bytes";
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
// @ts-ignore: decorator allowed
|
|
8
|
+
@lazy const LANE_MASK_HIGH = 0xFF00_FF00_FF00_FF00;
|
|
9
|
+
// @ts-ignore: decorator allowed
|
|
10
|
+
@lazy const LANE_MASK_LOW = 0x00FF_00FF_00FF_00FF;
|
|
11
|
+
// @ts-ignore: decorator allowed
|
|
12
|
+
@lazy const UINT64_H8 = 0x8080808080808080;
|
|
13
|
+
// @ts-ignore: decorator allowed
|
|
14
|
+
@lazy const QUOTE_MASK = 0x0022_0022_0022_0022;
|
|
15
|
+
// @ts-ignore: decorator allowed
|
|
16
|
+
@lazy const BACKSLASH_MASK = 0x005C_005C_005C_005C;
|
|
17
|
+
// @ts-ignore: decorator allowed
|
|
18
|
+
@lazy const CONTROL_MASK = 0x0020_0020_0020_0020;
|
|
19
|
+
// @ts-ignore: decorator allowed
|
|
20
|
+
@lazy const U00_MARKER = 13511005048209500;
|
|
21
|
+
|
|
22
|
+
export function serializeString_SWAR(src: string): void {
|
|
23
|
+
const srcSize = bytes(src);
|
|
24
|
+
let srcStart = changetype<usize>(src);
|
|
25
|
+
const srcEnd = srcStart + srcSize;
|
|
26
|
+
const srcEnd8 = srcEnd - 8;
|
|
27
|
+
|
|
28
|
+
bs.proposeSize(srcSize + 4);
|
|
29
|
+
store<u16>(bs.offset, 34); // "
|
|
30
|
+
bs.offset += 2;
|
|
31
|
+
|
|
32
|
+
while (srcStart <= srcEnd8) {
|
|
33
|
+
const block = load<u64>(srcStart);
|
|
34
|
+
store<u64>(bs.offset, block);
|
|
35
|
+
|
|
36
|
+
let mask = (
|
|
37
|
+
v64x4_eq(block, QUOTE_MASK) |
|
|
38
|
+
v64x4_eq(block, BACKSLASH_MASK) |
|
|
39
|
+
v64x4_ltu(block & LANE_MASK_LOW, CONTROL_MASK)
|
|
40
|
+
) & UINT64_H8
|
|
41
|
+
|
|
42
|
+
while (mask != 0) {
|
|
43
|
+
const lane_index = usize(ctz(mask) >> 3);
|
|
44
|
+
console.log("lane index " + lane_index.toString());
|
|
45
|
+
const src_offset = srcStart + lane_index;
|
|
46
|
+
const code = load<u16>(src_offset) << 2;
|
|
47
|
+
const escaped = load<u32>(SERIALIZE_ESCAPE_TABLE + code);
|
|
48
|
+
|
|
49
|
+
if ((escaped & 0xffff) != BACK_SLASH) {
|
|
50
|
+
bs.growSize(10);
|
|
51
|
+
const dst_offset = bs.offset + lane_index;
|
|
52
|
+
store<u64>(dst_offset, U00_MARKER);
|
|
53
|
+
store<u32>(dst_offset, escaped, 8);
|
|
54
|
+
// store<u64>(dst_offset, load<u64>(src_offset, 2), 12); // unsafe. can overflow here
|
|
55
|
+
memory.copy(dst_offset + 12, src_offset + 2, (4 - lane_index) << 1);
|
|
56
|
+
bs.offset += 10;
|
|
57
|
+
} else {
|
|
58
|
+
bs.growSize(2);
|
|
59
|
+
const dst_offset = bs.offset + lane_index;
|
|
60
|
+
store<u32>(dst_offset, escaped);
|
|
61
|
+
// store<u64>(dst_offset, load<u64>(src_offset, 2), 4);
|
|
62
|
+
memory.copy(dst_offset + 4, src_offset + 2, (4 - lane_index) << 1);
|
|
63
|
+
bs.offset += 2;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
mask &= mask - 1;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
srcStart += 8;
|
|
70
|
+
bs.offset += 8;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
while (srcStart <= srcEnd - 2) {
|
|
74
|
+
const code = load<u16>(srcStart);
|
|
75
|
+
if (code == 92 || code == 34 || code < 32) {
|
|
76
|
+
const escaped = load<u32>(SERIALIZE_ESCAPE_TABLE + (code << 2));
|
|
77
|
+
if ((escaped & 0xffff) != BACK_SLASH) {
|
|
78
|
+
bs.growSize(10);
|
|
79
|
+
store<u64>(bs.offset, U00_MARKER);
|
|
80
|
+
store<u32>(bs.offset, escaped, 8);
|
|
81
|
+
bs.offset += 12;
|
|
82
|
+
} else {
|
|
83
|
+
bs.growSize(2);
|
|
84
|
+
store<u32>(bs.offset, escaped);
|
|
85
|
+
bs.offset += 4;
|
|
86
|
+
}
|
|
87
|
+
} else {
|
|
88
|
+
store<u16>(bs.offset, code);
|
|
89
|
+
bs.offset += 2;
|
|
90
|
+
}
|
|
91
|
+
srcStart += 2;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
store<u16>(bs.offset, 34); // "
|
|
95
|
+
bs.offset += 2;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// @ts-ignore: decorators allowed
|
|
99
|
+
@inline function v64x4_eq(x: u64, y: u64): u64 {
|
|
100
|
+
const xored = (x ^ LANE_MASK_HIGH) ^ y;
|
|
101
|
+
const mask = (((xored >> 1) | UINT64_H8) - xored) & UINT64_H8;
|
|
102
|
+
return (mask << 1) - (mask >> 7);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// @ts-ignore: decorators allowed
|
|
106
|
+
@inline function v64x4_ltu(a: u64, b: u64): u64 {
|
|
107
|
+
// Vigna's algorithm - fastest SWAR unsigned less-than
|
|
108
|
+
return (((a | UINT64_H8) - (b & ~UINT64_H8)) | (a ^ b)) ^ (a | ~b);
|
|
109
|
+
}
|
package/assembly/test.tmp.ts
CHANGED
|
@@ -1,288 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
) {}
|
|
13
|
-
__SERIALIZE(ptr: usize): void {
|
|
14
|
-
bs.proposeSize(62);
|
|
15
|
-
store<u64>(bs.offset, 9570565822218363, 0);
|
|
16
|
-
store<u16>(bs.offset, 58, 8);
|
|
17
|
-
bs.offset += 10;
|
|
18
|
-
JSON.__serialize<string>(load<string>(ptr, offsetof<this>("a")));
|
|
19
|
-
store<u64>(bs.offset, 9570570117185580, 0);
|
|
20
|
-
store<u16>(bs.offset, 58, 8);
|
|
21
|
-
bs.offset += 10;
|
|
22
|
-
JSON.__serialize<string>(load<string>(ptr, offsetof<this>("b")));
|
|
23
|
-
store<u64>(bs.offset, 9570574412152876, 0);
|
|
24
|
-
store<u16>(bs.offset, 58, 8);
|
|
25
|
-
bs.offset += 10;
|
|
26
|
-
JSON.__serialize<string>(load<string>(ptr, offsetof<this>("c")));
|
|
27
|
-
store<u64>(bs.offset, 9570578707120172, 0);
|
|
28
|
-
store<u16>(bs.offset, 58, 8);
|
|
29
|
-
bs.offset += 10;
|
|
30
|
-
JSON.__serialize<string>(load<string>(ptr, offsetof<this>("d")));
|
|
31
|
-
store<u64>(bs.offset, 9570583002087468, 0);
|
|
32
|
-
store<u16>(bs.offset, 58, 8);
|
|
33
|
-
bs.offset += 10;
|
|
34
|
-
JSON.__serialize<boolean>(load<boolean>(ptr, offsetof<this>("e")));
|
|
35
|
-
store<u16>(bs.offset, 125, 0);
|
|
36
|
-
bs.offset += 2;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
@inline
|
|
40
|
-
__INITIALIZE(): this {
|
|
41
|
-
store<string>(changetype<usize>(this), "", offsetof<this>("a"));
|
|
42
|
-
store<string>(changetype<usize>(this), "", offsetof<this>("b"));
|
|
43
|
-
store<string>(changetype<usize>(this), "", offsetof<this>("c"));
|
|
44
|
-
store<string>(changetype<usize>(this), "", offsetof<this>("d"));
|
|
45
|
-
return this;
|
|
46
|
-
}
|
|
47
|
-
__DESERIALIZE<__JSON_T>(srcStart: usize, srcEnd: usize, out: __JSON_T): __JSON_T {
|
|
48
|
-
let keyStart: usize = 0;
|
|
49
|
-
let keyEnd: usize = 0;
|
|
50
|
-
let isKey = false;
|
|
51
|
-
let depth: i32 = 0;
|
|
52
|
-
let lastIndex: usize = 0;
|
|
53
|
-
while (srcStart < srcEnd && JSON.Util.isSpace(load<u16>(srcStart))) srcStart += 2;
|
|
54
|
-
while (srcEnd > srcStart && JSON.Util.isSpace(load<u16>(srcEnd - 2))) srcEnd -= 2;
|
|
55
|
-
if (srcStart - srcEnd == 0) throw new Error("Input string had zero length or was all whitespace");
|
|
56
|
-
if (load<u16>(srcStart) != 123) throw new Error("Expected '{' at start of object at position " + (srcEnd - srcStart).toString());
|
|
57
|
-
if (load<u16>(srcEnd - 2) != 125) throw new Error("Expected '}' at end of object at position " + (srcEnd - srcStart).toString());
|
|
58
|
-
srcStart += 2;
|
|
59
|
-
while (srcStart < srcEnd) {
|
|
60
|
-
let code = load<u16>(srcStart);
|
|
61
|
-
while (JSON.Util.isSpace(code)) code = load<u16>((srcStart += 2));
|
|
62
|
-
if (keyStart == 0) {
|
|
63
|
-
if (code == 34 && load<u16>(srcStart - 2) !== 92) {
|
|
64
|
-
if (isKey) {
|
|
65
|
-
keyStart = lastIndex;
|
|
66
|
-
keyEnd = srcStart;
|
|
67
|
-
console.log("Key: " + JSON.Util.ptrToStr(keyStart, keyEnd));
|
|
68
|
-
while (JSON.Util.isSpace((code = load<u16>((srcStart += 2))))) {}
|
|
69
|
-
if (code !== 58) throw new Error("Expected ':' after key at position " + (srcEnd - srcStart).toString());
|
|
70
|
-
isKey = false;
|
|
71
|
-
} else {
|
|
72
|
-
isKey = true;
|
|
73
|
-
lastIndex = srcStart + 2;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
srcStart += 2;
|
|
77
|
-
} else {
|
|
78
|
-
if (code == 34) {
|
|
79
|
-
lastIndex = srcStart;
|
|
80
|
-
srcStart += 2;
|
|
81
|
-
while (srcStart < srcEnd) {
|
|
82
|
-
const code = load<u16>(srcStart);
|
|
83
|
-
if (code == 34 && load<u16>(srcStart - 2) !== 92) {
|
|
84
|
-
console.log("Value (string, 1): " + JSON.Util.ptrToStr(lastIndex, srcStart + 2));
|
|
85
|
-
switch (<u32>keyEnd - <u32>keyStart) {
|
|
86
|
-
case 2: {
|
|
87
|
-
const code16 = load<u16>(keyStart);
|
|
88
|
-
if (code16 == 97) {
|
|
89
|
-
store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("a"));
|
|
90
|
-
srcStart += 4;
|
|
91
|
-
keyStart = 0;
|
|
92
|
-
break;
|
|
93
|
-
} else if (code16 == 98) {
|
|
94
|
-
store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("b"));
|
|
95
|
-
srcStart += 4;
|
|
96
|
-
keyStart = 0;
|
|
97
|
-
break;
|
|
98
|
-
} else if (code16 == 99) {
|
|
99
|
-
store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("c"));
|
|
100
|
-
srcStart += 4;
|
|
101
|
-
keyStart = 0;
|
|
102
|
-
break;
|
|
103
|
-
} else if (code16 == 100) {
|
|
104
|
-
store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart + 2), offsetof<this>("d"));
|
|
105
|
-
srcStart += 4;
|
|
106
|
-
keyStart = 0;
|
|
107
|
-
break;
|
|
108
|
-
} else {
|
|
109
|
-
srcStart += 4;
|
|
110
|
-
keyStart = 0;
|
|
111
|
-
break;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
default: {
|
|
116
|
-
srcStart += 4;
|
|
117
|
-
keyStart = 0;
|
|
118
|
-
break;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
break;
|
|
122
|
-
}
|
|
123
|
-
srcStart += 2;
|
|
124
|
-
}
|
|
125
|
-
} else if (code - 48 <= 9 || code == 45) {
|
|
126
|
-
lastIndex = srcStart;
|
|
127
|
-
srcStart += 2;
|
|
128
|
-
while (srcStart < srcEnd) {
|
|
129
|
-
const code = load<u16>(srcStart);
|
|
130
|
-
if (code == 44 || code == 125 || JSON.Util.isSpace(code)) {
|
|
131
|
-
console.log("Value (number, 2): " + JSON.Util.ptrToStr(lastIndex, srcStart));
|
|
132
|
-
srcStart += 2;
|
|
133
|
-
keyStart = 0;
|
|
134
|
-
break;
|
|
135
|
-
}
|
|
136
|
-
srcStart += 2;
|
|
137
|
-
}
|
|
138
|
-
} else if (code == 123) {
|
|
139
|
-
lastIndex = srcStart;
|
|
140
|
-
depth++;
|
|
141
|
-
srcStart += 2;
|
|
142
|
-
while (srcStart < srcEnd) {
|
|
143
|
-
const code = load<u16>(srcStart);
|
|
144
|
-
if (code == 34) {
|
|
145
|
-
srcStart += 2;
|
|
146
|
-
while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
|
|
147
|
-
} else if (code == 125) {
|
|
148
|
-
if (--depth == 0) {
|
|
149
|
-
srcStart += 2;
|
|
150
|
-
console.log("Value (object, 3): " + JSON.Util.ptrToStr(lastIndex, srcStart));
|
|
151
|
-
switch (<u32>keyEnd - <u32>keyStart) {
|
|
152
|
-
case 2: {
|
|
153
|
-
const code16 = load<u16>(keyStart);
|
|
154
|
-
if (code16 == 97) {
|
|
155
|
-
store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart), offsetof<this>("a"));
|
|
156
|
-
keyStart = 0;
|
|
157
|
-
break;
|
|
158
|
-
} else if (code16 == 98) {
|
|
159
|
-
store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart), offsetof<this>("b"));
|
|
160
|
-
keyStart = 0;
|
|
161
|
-
break;
|
|
162
|
-
} else if (code16 == 99) {
|
|
163
|
-
store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart), offsetof<this>("c"));
|
|
164
|
-
keyStart = 0;
|
|
165
|
-
break;
|
|
166
|
-
} else if (code16 == 100) {
|
|
167
|
-
store<string>(changetype<usize>(out), JSON.__deserialize<string>(lastIndex, srcStart), offsetof<this>("d"));
|
|
168
|
-
keyStart = 0;
|
|
169
|
-
break;
|
|
170
|
-
} else if (code16 == 101) {
|
|
171
|
-
store<boolean>(changetype<usize>(out), JSON.__deserialize<boolean>(lastIndex, srcStart), offsetof<this>("e"));
|
|
172
|
-
keyStart = 0;
|
|
173
|
-
break;
|
|
174
|
-
} else {
|
|
175
|
-
keyStart = 0;
|
|
176
|
-
break;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
default: {
|
|
181
|
-
keyStart = 0;
|
|
182
|
-
break;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
break;
|
|
186
|
-
}
|
|
187
|
-
} else if (code == 123) depth++;
|
|
188
|
-
srcStart += 2;
|
|
189
|
-
}
|
|
190
|
-
} else if (code == 91) {
|
|
191
|
-
lastIndex = srcStart;
|
|
192
|
-
depth++;
|
|
193
|
-
srcStart += 2;
|
|
194
|
-
while (srcStart < srcEnd) {
|
|
195
|
-
const code = load<u16>(srcStart);
|
|
196
|
-
if (code == 34) {
|
|
197
|
-
srcStart += 2;
|
|
198
|
-
while (!(load<u16>(srcStart) == 34 && load<u16>(srcStart - 2) != 92)) srcStart += 2;
|
|
199
|
-
} else if (code == 93) {
|
|
200
|
-
if (--depth == 0) {
|
|
201
|
-
srcStart += 2;
|
|
202
|
-
console.log("Value (object, 4): " + JSON.Util.ptrToStr(lastIndex, srcStart));
|
|
203
|
-
keyStart = 0;
|
|
204
|
-
break;
|
|
205
|
-
}
|
|
206
|
-
} else if (code == 91) depth++;
|
|
207
|
-
srcStart += 2;
|
|
208
|
-
}
|
|
209
|
-
} else if (code == 116) {
|
|
210
|
-
if (load<u64>(srcStart) == 28429475166421108) {
|
|
211
|
-
srcStart += 8;
|
|
212
|
-
console.log("Value (bool, 5): " + JSON.Util.ptrToStr(lastIndex, srcStart - 8));
|
|
213
|
-
switch (<u32>keyEnd - <u32>keyStart) {
|
|
214
|
-
case 2: {
|
|
215
|
-
const code16 = load<u16>(keyStart);
|
|
216
|
-
if (code16 == 101) {
|
|
217
|
-
store<boolean>(changetype<usize>(out), true, offsetof<this>("e"));
|
|
218
|
-
srcStart += 2;
|
|
219
|
-
keyStart = 0;
|
|
220
|
-
break;
|
|
221
|
-
} else {
|
|
222
|
-
srcStart += 2;
|
|
223
|
-
keyStart = 0;
|
|
224
|
-
break;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
default: {
|
|
229
|
-
srcStart += 2;
|
|
230
|
-
keyStart = 0;
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
} else {
|
|
234
|
-
throw new Error("Expected to find 'true' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
|
|
235
|
-
}
|
|
236
|
-
} else if (code == 102) {
|
|
237
|
-
if (load<u64>(srcStart, 2) == 28429466576093281) {
|
|
238
|
-
srcStart += 10;
|
|
239
|
-
console.log("Value (bool, 6): " + JSON.Util.ptrToStr(lastIndex, srcStart - 10));
|
|
240
|
-
switch (<u32>keyEnd - <u32>keyStart) {
|
|
241
|
-
case 2: {
|
|
242
|
-
const code16 = load<u16>(keyStart);
|
|
243
|
-
if (code16 == 101) {
|
|
244
|
-
store<boolean>(changetype<usize>(out), false, offsetof<this>("e"));
|
|
245
|
-
srcStart += 2;
|
|
246
|
-
keyStart = 0;
|
|
247
|
-
break;
|
|
248
|
-
} else {
|
|
249
|
-
srcStart += 2;
|
|
250
|
-
keyStart = 0;
|
|
251
|
-
break;
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
default: {
|
|
256
|
-
srcStart += 2;
|
|
257
|
-
keyStart = 0;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
} else {
|
|
261
|
-
throw new Error("Expected to find 'false' but found '" + JSON.Util.ptrToStr(lastIndex, srcStart) + "' instead at position " + (srcEnd - srcStart).toString());
|
|
262
|
-
}
|
|
263
|
-
} else if (code == 110) {
|
|
264
|
-
if (load<u64>(srcStart) == 30399761348886638) {
|
|
265
|
-
srcStart += 8;
|
|
266
|
-
console.log("Value (null, 7): " + JSON.Util.ptrToStr(lastIndex, srcStart - 8));
|
|
267
|
-
srcStart += 2;
|
|
268
|
-
keyStart = 0;
|
|
269
|
-
}
|
|
270
|
-
} else {
|
|
271
|
-
srcStart += 2;
|
|
272
|
-
keyStart = 0;
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
return out;
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
const good = `{"a":"a","b":"b","e":true,"c":"c","d":"d"}`;
|
|
280
|
-
const good2 = `{"a":"a","b":"b","c":"c","d":"d","e":false}`;
|
|
281
|
-
const bad = `{"a":"a","b":"b","e":false,"c":"c","d":"d"}`;
|
|
282
|
-
const parsedGood = JSON.parse<Example>(good);
|
|
283
|
-
console.log("a: " + JSON.stringify(parsedGood));
|
|
284
|
-
const parsedGood2 = JSON.parse<Example>(good2);
|
|
285
|
-
console.log("b: " + JSON.stringify(parsedGood2));
|
|
286
|
-
const parsedBad = JSON.parse<Example>(bad);
|
|
287
|
-
console.log("c: " + JSON.stringify(parsedBad));
|
|
288
|
-
console.log(load<u64>(changetype<usize>("alse")).toString());
|
|
1
|
+
import {
|
|
2
|
+
bs
|
|
3
|
+
} from "../lib/as-bs";
|
|
4
|
+
import {
|
|
5
|
+
serializeString_SIMD
|
|
6
|
+
} from "./serialize/simd/string";
|
|
7
|
+
import {
|
|
8
|
+
serializeString_SWAR
|
|
9
|
+
} from "./serialize/swar/string";
|
|
10
|
+
serializeString_SWAR("a\"cd");
|
|
11
|
+
console.log(bs.out<string>());
|
package/assembly/test.ts
CHANGED
|
@@ -1,25 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { bs } from "../lib/as-bs";
|
|
2
|
+
import { serializeString_SIMD } from "./serialize/simd/string";
|
|
3
|
+
import { serializeString_SWAR } from "./serialize/swar/string";
|
|
2
4
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
constructor(
|
|
7
|
-
public a: string,
|
|
8
|
-
public b: string,
|
|
9
|
-
public c: string,
|
|
10
|
-
public d: string,
|
|
11
|
-
public e: boolean,
|
|
12
|
-
) {}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
const good = `{"a":"a","b":"b","e":true,"c":"c","d":"d"}`;
|
|
16
|
-
const good2 = `{"a":"a","b":"b","c":"c","d":"d","e":false}`;
|
|
17
|
-
const bad = `{"a":"a","b":"b","e":false,"c":"c","d":"d"}`;
|
|
18
|
-
const parsedGood = JSON.parse<Example>(good);
|
|
19
|
-
console.log("a: " + JSON.stringify(parsedGood));
|
|
20
|
-
const parsedGood2 = JSON.parse<Example>(good2);
|
|
21
|
-
console.log("b: " + JSON.stringify(parsedGood2));
|
|
22
|
-
const parsedBad = JSON.parse<Example>(bad);
|
|
23
|
-
console.log("c: " + JSON.stringify(parsedBad));
|
|
24
|
-
|
|
25
|
-
console.log(load<u64>(changetype<usize>("alse")).toString());
|
|
5
|
+
serializeString_SWAR("a\"cd");
|
|
6
|
+
// serializeString_SIMD("a\0b\"\nd");
|
|
7
|
+
console.log(bs.out<string>());
|
package/lib/as-bs.ts
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { OBJECT, TOTAL_OVERHEAD } from "rt/common";
|
|
2
|
+
const SHRINK_EVERY_N: u32 = 200;
|
|
3
|
+
const MIN_BUFFER_SIZE: u32 = 128;
|
|
2
4
|
|
|
3
5
|
/**
|
|
4
6
|
* Central buffer namespace for managing memory operations.
|
|
5
7
|
*/
|
|
6
8
|
export namespace bs {
|
|
7
|
-
/** Current buffer pointer. */
|
|
8
|
-
export let buffer: ArrayBuffer = new ArrayBuffer(
|
|
9
|
+
/** Current buffer pointer. */
|
|
10
|
+
export let buffer: ArrayBuffer = new ArrayBuffer(MIN_BUFFER_SIZE);
|
|
9
11
|
|
|
10
12
|
/** Current offset within the buffer. */
|
|
11
13
|
export let offset: usize = changetype<usize>(buffer);
|
|
12
14
|
|
|
13
15
|
/** Byte length of the buffer. */
|
|
14
|
-
let bufferSize: usize =
|
|
16
|
+
let bufferSize: usize = MIN_BUFFER_SIZE;
|
|
15
17
|
|
|
16
18
|
/** Proposed size of output */
|
|
17
19
|
export let stackSize: usize = 0;
|
|
@@ -19,6 +21,9 @@ export namespace bs {
|
|
|
19
21
|
let pauseOffset: usize = 0;
|
|
20
22
|
let pauseStackSize: usize = 0;
|
|
21
23
|
|
|
24
|
+
let typicalSize: u32 = MIN_BUFFER_SIZE;
|
|
25
|
+
let counter: u32 = 0;
|
|
26
|
+
|
|
22
27
|
/**
|
|
23
28
|
* Stores the state of the buffer, allowing further changes to be reset
|
|
24
29
|
*/
|
|
@@ -56,9 +61,8 @@ export namespace bs {
|
|
|
56
61
|
*/
|
|
57
62
|
// @ts-ignore: decorator
|
|
58
63
|
@inline export function ensureSize(size: u32): void {
|
|
59
|
-
// console.log("Ensure " + (size).toString() + " -> " + (offset + size).toString() + " (" + (offset - changetype<usize>(buffer)).toString() + ")");
|
|
60
64
|
if (offset + size > bufferSize + changetype<usize>(buffer)) {
|
|
61
|
-
const deltaBytes = size +
|
|
65
|
+
const deltaBytes = size + MIN_BUFFER_SIZE;
|
|
62
66
|
bufferSize += deltaBytes;
|
|
63
67
|
// @ts-ignore: exists
|
|
64
68
|
const newPtr = changetype<ArrayBuffer>(__renew(changetype<usize>(buffer), bufferSize));
|
|
@@ -74,7 +78,6 @@ export namespace bs {
|
|
|
74
78
|
*/
|
|
75
79
|
// @ts-ignore: decorator
|
|
76
80
|
@inline export function proposeSize(size: u32): void {
|
|
77
|
-
// console.log("Propose " + (size).toString() + " -> " + (stackSize + size).toString() + " (" + (offset - changetype<usize>(buffer)).toString() + ")");
|
|
78
81
|
if ((stackSize += size) > bufferSize) {
|
|
79
82
|
const deltaBytes = size;
|
|
80
83
|
bufferSize += deltaBytes;
|
|
@@ -86,19 +89,17 @@ export namespace bs {
|
|
|
86
89
|
}
|
|
87
90
|
|
|
88
91
|
/**
|
|
89
|
-
* Increases the proposed size by n +
|
|
92
|
+
* Increases the proposed size by n + MIN_BUFFER_SIZE if necessary.
|
|
90
93
|
* If necessary, reallocates the buffer to the exact new size.
|
|
91
94
|
* @param size - The size to grow by.
|
|
92
95
|
*/
|
|
93
96
|
// @ts-ignore: decorator
|
|
94
97
|
@inline export function growSize(size: u32): void {
|
|
95
|
-
// console.log("Grow " + (size).toString() + " -> " + (stackSize + size).toString() + " (" + (offset - changetype<usize>(buffer)).toString() + ")");
|
|
96
98
|
if ((stackSize += size) > bufferSize) {
|
|
97
|
-
const deltaBytes = size +
|
|
99
|
+
const deltaBytes = size + MIN_BUFFER_SIZE;
|
|
98
100
|
bufferSize += deltaBytes;
|
|
99
101
|
// @ts-ignore
|
|
100
102
|
const newPtr = changetype<ArrayBuffer>(__renew(changetype<usize>(buffer), bufferSize));
|
|
101
|
-
// if (buffer != newPtr) console.log(" Old: " + changetype<usize>(buffer).toString() + "\n New: " + changetype<usize>(newPtr).toString());
|
|
102
103
|
offset = offset + changetype<usize>(newPtr) - changetype<usize>(buffer);
|
|
103
104
|
buffer = newPtr;
|
|
104
105
|
}
|
|
@@ -147,11 +148,20 @@ export namespace bs {
|
|
|
147
148
|
// @ts-ignore: Decorator valid here
|
|
148
149
|
@inline export function out<T>(): T {
|
|
149
150
|
const len = offset - changetype<usize>(buffer);
|
|
150
|
-
// console.log("Out " + (len).toString() + " -> " + (stackSize).toString() + " (" + (offset - changetype<usize>(buffer)).toString() + ")");
|
|
151
151
|
// @ts-ignore: exists
|
|
152
152
|
const _out = __new(len, idof<T>());
|
|
153
153
|
memory.copy(_out, changetype<usize>(buffer), len);
|
|
154
154
|
|
|
155
|
+
counter++;
|
|
156
|
+
typicalSize = (typicalSize + <u32>len) >> 1;
|
|
157
|
+
|
|
158
|
+
if (counter >= SHRINK_EVERY_N) {
|
|
159
|
+
if (bufferSize > (typicalSize << 2)) {
|
|
160
|
+
resize(typicalSize << 1);
|
|
161
|
+
}
|
|
162
|
+
counter = 0;
|
|
163
|
+
}
|
|
164
|
+
|
|
155
165
|
offset = changetype<usize>(buffer);
|
|
156
166
|
stackSize = 0;
|
|
157
167
|
return changetype<T>(_out);
|
|
@@ -171,24 +181,18 @@ export namespace bs {
|
|
|
171
181
|
if (len != changetype<OBJECT>(dst - TOTAL_OVERHEAD).rtSize) __renew(len, idof<T>());
|
|
172
182
|
memory.copy(dst, changetype<usize>(buffer), len);
|
|
173
183
|
|
|
184
|
+
counter++;
|
|
185
|
+
typicalSize = (typicalSize + len) >> 1;
|
|
186
|
+
|
|
187
|
+
if (counter >= SHRINK_EVERY_N) {
|
|
188
|
+
if (bufferSize > (typicalSize << 2)) {
|
|
189
|
+
resize(typicalSize << 1);
|
|
190
|
+
}
|
|
191
|
+
counter = 0;
|
|
192
|
+
}
|
|
193
|
+
|
|
174
194
|
offset = changetype<usize>(buffer);
|
|
175
195
|
stackSize = 0;
|
|
176
196
|
return changetype<T>(dst);
|
|
177
197
|
}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
// @ts-ignore: Decorator valid here
|
|
181
|
-
// @inline function nextPowerOf2(n: u32): u32 {
|
|
182
|
-
// return 1 << (32 - clz(n - 1));
|
|
183
|
-
// }
|
|
184
|
-
|
|
185
|
-
// @ts-ignore: Decorator valid here
|
|
186
|
-
@inline function bytes<T>(o: T): i32 {
|
|
187
|
-
if (isInteger<T>() || isFloat<T>()) {
|
|
188
|
-
return sizeof<T>();
|
|
189
|
-
} else if (isManaged<T>() || isReference<T>()) {
|
|
190
|
-
return changetype<OBJECT>(changetype<usize>(o) - TOTAL_OVERHEAD).rtSize;
|
|
191
|
-
} else {
|
|
192
|
-
throw new Error("Cannot convert type " + nameof<T>() + " to bytes!");
|
|
193
|
-
}
|
|
194
|
-
}
|
|
198
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "json-as",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.25",
|
|
4
4
|
"author": "Jairus Tanaka",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
"main": "transform/lib/index.js",
|
|
10
10
|
"devDependencies": {
|
|
11
11
|
"@assemblyscript/wasi-shim": "^0.1.0",
|
|
12
|
-
"@types/node": "^
|
|
13
|
-
"assemblyscript": "^0.28.
|
|
12
|
+
"@types/node": "^25.0.3",
|
|
13
|
+
"assemblyscript": "^0.28.9",
|
|
14
14
|
"assemblyscript-prettier": "^3.0.1",
|
|
15
|
-
"prettier": "^3.
|
|
16
|
-
"tinybench": "^
|
|
17
|
-
"typescript": "^5.9.
|
|
15
|
+
"prettier": "^3.7.4",
|
|
16
|
+
"tinybench": "^6.0.0",
|
|
17
|
+
"typescript": "^5.9.3"
|
|
18
18
|
},
|
|
19
19
|
"bugs": {
|
|
20
20
|
"url": "https://github.com/JairusSW/json-as/issues"
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"Loredana Cirstea",
|
|
32
32
|
"Accipiter Nisus"
|
|
33
33
|
],
|
|
34
|
-
"description": "The only JSON library you'll need for AssemblyScript
|
|
34
|
+
"description": "The only JSON library you'll need for AssemblyScript with SIMD and SWAR",
|
|
35
35
|
"homepage": "https://github.com/JairusSW/json-as#readme",
|
|
36
36
|
"keywords": [
|
|
37
37
|
"assemblyscript",
|
package/run-bench.as.sh
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
RUNTIMES=${RUNTIMES:-"minimal stub"}
|
|
3
3
|
ENGINES=${ENGINES:-"liftoff ignition sparkplug turbofan llvm"}
|
|
4
|
-
for file in ./assembly/__benches__/
|
|
4
|
+
for file in ./assembly/__benches__/abc.bench.ts; do
|
|
5
5
|
filename=$(basename -- "$file")
|
|
6
6
|
for runtime in $RUNTIMES; do
|
|
7
7
|
output="./build/${filename%.ts}.${runtime}"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visitor.js","sourceRoot":"","sources":["../src/visitor.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,OAAO;IACX,aAAa,GAAkB,IAAI,CAAC;IAC3C,KAAK,CAAC,IAAmB,EAAE,MAAmB,IAAI;QAChD,IAAI,IAAI,IAAI,IAAI;YAAE,OAAO;QACzB,IAAI,IAAI,YAAY,KAAK,EAAE,CAAC;YAC1B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;aAAM,CAAC;YAEN,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,MAAM,CAAC,IAAU,EAAE,GAAgB;QACjC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB;gBACE,IAAI,CAAC,WAAW,CAAC,IAAc,EAAE,GAAG,CAAC,CAAC;gBACtC,MAAM;YACR;gBACE,IAAI,CAAC,kBAAkB,CAAC,IAAqB,EAAE,GAAG,CAAC,CAAC;gBACpD,MAAM;YACR;gBACE,IAAI,CAAC,qBAAqB,CAAC,IAAwB,EAAE,GAAG,CAAC,CAAC;gBAC1D,MAAM;YACR;gBACE,IAAI,CAAC,aAAa,CAAC,IAAgB,EAAE,GAAG,CAAC,CAAC;gBAC1C,MAAM;YACR;gBACE,IAAI,CAAC,kBAAkB,CAAC,IAAyB,EAAE,GAAG,CAAC,CAAC;gBACxD,MAAM;YACR;gBACE,IAAI,CAAC,yBAAyB,CAAC,IAA4B,EAAE,GAAG,CAAC,CAAC;gBAClE,MAAM;YACR;gBACE,IAAI,CAAC,wBAAwB,CAAC,IAA2B,EAAE,GAAG,CAAC,CAAC;gBAChE,MAAM;YACR;gBACE,IAAI,CAAC,qBAAqB,CAAC,IAAwB,EAAE,GAAG,CAAC,CAAC;gBAC1D,MAAM;YACR;gBACE,IAAI,CAAC,mBAAmB,CAAC,IAAsB,EAAE,GAAG,CAAC,CAAC;gBACtD,MAAM;YACR;gBACE,IAAI,CAAC,oBAAoB,CAAC,IAAuB,EAAE,GAAG,CAAC,CAAC;gBACxD,MAAM;YACR;gBACE,IAAI,CAAC,oBAAoB,CAAC,IAAuB,EAAE,GAAG,CAAC,CAAC;gBACxD,MAAM;YACR;gBACE,IAAI,CAAC,4BAA4B,CAAC,IAA+B,EAAE,GAAG,CAAC,CAAC;gBACxE,MAAM;YACR;gBACE,IAAI,CAAC,uBAAuB,CAAC,IAA0B,EAAE,GAAG,CAAC,CAAC;gBAC9D,MAAM;YACR;gBACE,IAAI,CAAC,yBAAyB,CAAC,IAA4B,EAAE,GAAG,CAAC,CAAC;gBAClE,MAAM;YACR;gBACE,IAAI,CAAC,sBAAsB,CAAC,IAAyB,EAAE,GAAG,CAAC,CAAC;gBAC5D,MAAM;YACR;gBACE,IAAI,CAAC,kBAAkB,CAAC,IAAqB,EAAE,GAAG,CAAC,CAAC;gBACpD,MAAM;YACR;gBACE,IAAI,CAAC,4BAA4B,CAAC,IAA+B,EAAE,GAAG,CAAC,CAAC;gBACxE,MAAM;YACR;gBACE,IAAI,CAAC,6BAA6B,CAAC,IAAgC,EAAE,GAAG,CAAC,CAAC;gBAC1E,MAAM;YACR;gBACE,IAAI,CAAC,sBAAsB,CAAC,IAAyB,EAAE,GAAG,CAAC,CAAC;gBAC5D,MAAM;YACR;gBACE,IAAI,CAAC,2BAA2B,CAAC,IAA8B,EAAE,GAAG,CAAC,CAAC;gBACtE,MAAM;YACR;gBACE,IAAI,CAAC,0BAA0B,CAAC,IAA6B,EAAE,GAAG,CAAC,CAAC;gBACpE,MAAM;YACR;gBACE,IAAI,CAAC,mBAAmB,CAAC,IAAsB,EAAE,GAAG,CAAC,CAAC;gBACtD,MAAM;YACR;gBACE,IAAI,CAAC,mBAAmB,CAAC,IAAsB,EAAE,GAAG,CAAC,CAAC;gBACtD,MAAM;YACR;gBACE,IAAI,CAAC,sBAAsB,CAAC,IAAyB,EAAE,GAAG,CAAC,CAAC;gBAC5D,MAAM;YACR;gBACE,IAAI,CAAC,gBAAgB,CAAC,IAAmB,EAAE,GAAG,CAAC,CAAC;gBAChD,MAAM;YACR;gBACE,IAAI,CAAC,mBAAmB,CAAC,IAAsB,EAAE,GAAG,CAAC,CAAC;gBACtD,MAAM;YACR;gBACE,IAAI,CAAC,oBAAoB,CAAC,IAAuB,EAAE,GAAG,CAAC,CAAC;gBACxD,MAAM;YACR;gBACE,IAAI,CAAC,2BAA2B,CAAC,IAA8B,EAAE,GAAG,CAAC,CAAC;gBACtE,MAAM;YACR;gBACE,IAAI,CAAC,0BAA0B,CAAC,IAA6B,EAAE,GAAG,CAAC,CAAC;gBACpE,MAAM;YACR;gBACE,IAAI,CAAC,wBAAwB,CAAC,IAA2B,EAAE,GAAG,CAAC,CAAC;gBAChE,MAAM;YACR;gBACE,IAAI,CAAC,iBAAiB,CAAC,IAAoB,EAAE,GAAG,CAAC,CAAC;gBAClD,MAAM;YACR;gBACE,IAAI,CAAC,gBAAgB,CAAC,IAAmB,EAAE,GAAG,CAAC,CAAC;gBAChD,MAAM;YACR;gBACE,IAAI,CAAC,oBAAoB,CAAC,IAAuB,EAAE,GAAG,CAAC,CAAC;gBACxD,MAAM;YACR;gBACE,IAAI,CAAC,oBAAoB,CAAC,IAAuB,EAAE,GAAG,CAAC,CAAC;gBACxD,MAAM;YACR;gBACE,IAAI,CAAC,oBAAoB,CAAC,IAAuB,EAAE,GAAG,CAAC,CAAC;gBACxD,MAAM;YACR;gBACE,IAAI,CAAC,mBAAmB,CAAC,IAAsB,EAAE,GAAG,CAAC,CAAC;gBACtD,MAAM;YACR;gBACE,IAAI,CAAC,iBAAiB,CAAC,IAAoB,EAAE,GAAG,CAAC,CAAC;gBAClD,MAAM;YACR;gBACE,IAAI,CAAC,sBAAsB,CAAC,IAAyB,EAAE,GAAG,CAAC,CAAC;gBAC5D,MAAM;YACR;gBACE,IAAI,CAAC,mBAAmB,CAAC,IAAsB,EAAE,GAAG,CAAC,CAAC;gBACtD,MAAM;YACR;gBACE,IAAI,CAAC,qBAAqB,CAAC,IAAwB,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;gBACjE,MAAM;YACR;gBACE,IAAI,CAAC,oBAAoB,CAAC,IAAuB,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC/D,MAAM;YACR;gBACE,IAAI,CAAC,yBAAyB,CAAC,IAA4B,EAAE,GAAG,CAAC,CAAC;gBAClE,MAAM;YACR;gBACE,IAAI,CAAC,qBAAqB,CAAC,IAAwB,EAAE,GAAG,CAAC,CAAC;gBAC1D,MAAM;YACR;gBACE,IAAI,CAAC,wBAAwB,CAAC,IAA2B,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;gBACvE,MAAM;YACR;gBACE,IAAI,CAAC,sBAAsB,CAAC,IAAyB,EAAE,GAAG,CAAC,CAAC;gBAC5D,MAAM;YACR;gBACE,IAAI,CAAC,yBAAyB,CAAC,IAA4B,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;gBACzE,MAAM;YACR;gBACE,IAAI,CAAC,sBAAsB,CAAC,IAAyB,EAAE,GAAG,CAAC,CAAC;gBAC5D,MAAM;YACR;gBACE,IAAI,CAAC,yBAAyB,CAAC,IAA4B,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;gBACzE,MAAM;YACR;gBACE,IAAI,CAAC,oBAAoB,CAAC,IAAuB,EAAE,GAAG,CAAC,CAAC;gBACxD,MAAM;YACR;gBACE,IAAI,CAAC,wBAAwB,CAAC,IAA2B,EAAE,GAAG,CAAC,CAAC;gBAChE,MAAM;YACR;gBACE,IAAI,CAAC,kBAAkB,CAAC,IAAqB,EAAE,GAAG,CAAC,CAAC;gBACpD,MAAM;YACR;gBACE,IAAI,CAAC,iBAAiB,CAAC,IAAoB,EAAE,GAAG,CAAC,CAAC;gBAClD,MAAM;YACR;gBACE,IAAI,CAAC,eAAe,CAAC,IAAkB,EAAE,GAAG,CAAC,CAAC;gBAC9C,MAAM;YACR;gBACE,IAAI,CAAC,mBAAmB,CAAC,IAA0B,EAAE,GAAG,CAAC,CAAC;gBAC1D,MAAM;YACR;gBACE,IAAI,CAAC,mBAAmB,CAAC,IAAsB,EAAE,GAAG,CAAC,CAAC;gBACtD,MAAM;YACR,OAAkB,CAAC,CAAC,CAAC;gBACnB,IAAI,CAAC,mBAAmB,CAAC,IAAsB,EAAE,GAAG,CAAC,CAAC;gBACtD,MAAM;YACR,CAAC;YACD,OAAmB,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,oBAAoB,CAAC,IAAuB,EAAE,GAAG,CAAC,CAAC;gBACxD,MAAM;YACR,CAAC;YACD,OAAsB,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAC,uBAAuB,CAAC,IAA0B,EAAE,GAAG,CAAC,CAAC;gBAC9D,MAAM;YACR,CAAC;YACD,OAAyB,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,0BAA0B,CAAC,IAA6B,EAAE,GAAG,CAAC,CAAC;gBACpE,MAAM;YACR,CAAC;YACD,OAAqB,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,YAAY,CAAC,IAAmB,EAAE,GAAG,CAAC,CAAC;gBAC5C,MAAM;YACR,CAAC;YACD,OAAmB,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,mBAAmB,CAAC,IAAsB,EAAE,GAAG,CAAC,CAAC;gBACtD,MAAM;YACR,CAAC;YACD,OAAoB,CAAC,CAAC,CAAC;gBACrB,IAAI,CAAC,sBAAsB,CAAC,IAAyB,EAAE,GAAG,CAAC,CAAC;gBAC5D,MAAM;YACR,CAAC;YACD,OAAqB,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,sBAAsB,CAAC,IAAyB,EAAE,GAAG,CAAC,CAAC;gBAC5D,MAAM;YACR,CAAC;YACD,MAAuB,CAAC,CAAC,CAAC;gBACxB,IAAI,CAAC,cAAc,CAAC,IAAqB,EAAE,GAAG,CAAC,CAAC;gBAChD,MAAM;YACR,CAAC;YACD,OAAmB,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,oBAAoB,CAAC,IAAuB,EAAE,GAAG,CAAC,CAAC;gBACxD,MAAM;YACR,CAAC;YACD,OAAkB,CAAC,CAAC,CAAC;gBACnB,IAAI,CAAC,mBAAmB,CAAC,IAAsB,EAAE,GAAG,CAAC,CAAC;gBACtD,MAAM;YACR,CAAC;YACD,OAAkB,CAAC,CAAC,CAAC;gBACnB,IAAI,CAAC,kBAAkB,CAAC,IAAqB,EAAE,GAAG,CAAC,CAAC;gBACpD,MAAM;YACR,CAAC;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IACD,WAAW,CAAC,IAAY,EAAE,MAAmB,IAAI;QAC/C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAC5B,CAAC;IACD,aAAa,CAAC,IAAc,EAAE,MAAmB,IAAI,IAAS,CAAC;IAC/D,aAAa,CAAC,IAAc,EAAE,MAAmB,IAAI;QACnD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,kBAAkB,CAAC,IAAmB,EAAE,MAAmB,IAAI;QAC7D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IACD,qBAAqB,CAAC,IAAsB,EAAE,MAAmB,IAAI;QACnE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,kBAAkB,CAAC,IAAuB,EAAE,MAAmB,IAAI;QACjE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,yBAAyB,CAAC,IAA0B,EAAE,MAAmB,IAAI,IAAS,CAAC;IACvF,2BAA2B,CAAC,IAA4B,EAAE,MAAmB,IAAI;QAC/E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IACD,4BAA4B,CAAC,IAA6B,EAAE,MAAmB,IAAI;QACjF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,wBAAwB,CAAC,IAAyB,EAAE,MAAmB,IAAI;QACzE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,qBAAqB,CAAC,IAAsB,EAAE,MAAmB,IAAI;QACnE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,mBAAmB,CAAC,IAAoB,EAAE,MAAmB,IAAI;QAC/D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,oBAAoB,CAAC,IAAqB,EAAE,MAAmB,IAAI;QACjE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,oBAAoB,CAAC,IAAqB,EAAE,MAAmB,IAAI;QACjE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,4BAA4B,CAAC,IAA6B,EAAE,MAAmB,IAAI;QACjF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,uBAAuB,CAAC,IAAwB,EAAE,MAAmB,IAAI;QACvE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,sBAAsB,CAAC,IAAuB,EAAE,MAAmB,IAAI;QACrE,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;YACzB;gBACE,IAAI,CAAC,2BAA2B,CAAC,IAA8B,CAAC,CAAC;gBACjE,MAAM;YACR;gBACE,IAAI,CAAC,6BAA6B,CAAC,IAAgC,CAAC,CAAC;gBACrE,MAAM;YACR;gBACE,IAAI,CAAC,4BAA4B,CAAC,IAA+B,CAAC,CAAC;gBACnE,MAAM;YACR;gBACE,IAAI,CAAC,8BAA8B,CAAC,IAAiC,CAAC,CAAC;gBACvE,MAAM;YACR;gBACE,IAAI,CAAC,4BAA4B,CAAC,IAA+B,CAAC,CAAC;gBACnE,MAAM;YACR;gBACE,IAAI,CAAC,2BAA2B,CAAC,IAA8B,CAAC,CAAC;gBACjE,MAAM;YACR;gBACE,IAAI,CAAC,4BAA4B,CAAC,IAA+B,CAAC,CAAC;gBACnE,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,mDAAmD,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IACD,2BAA2B,CAAC,IAA4B,EAAE,MAAmB,IAAI,IAAS,CAAC;IAC3F,yBAAyB,CAAC,IAA0B,EAAE,MAAmB,IAAI;QAC3E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,6BAA6B,CAAC,IAA8B,EAAE,MAAmB,IAAI,IAAS,CAAC;IAC/F,4BAA4B,CAAC,IAA6B,EAAE,MAAmB,IAAI,IAAS,CAAC;IAC7F,8BAA8B,CAAC,IAA+B,EAAE,MAAmB,IAAI,IAAS,CAAC;IACjG,4BAA4B,CAAC,IAA6B,EAAE,MAAmB,IAAI,IAAS,CAAC;IAC7F,kBAAkB,CAAC,IAAmB,EAAE,MAAmB,IAAI;QAC7D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,4BAA4B,CAAC,IAA6B,EAAE,MAAmB,IAAI;QACjF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,6BAA6B,CAAC,IAA8B,EAAE,MAAmB,IAAI;QACnF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,sBAAsB,CAAC,IAAuB,EAAE,MAAmB,IAAI;QACrE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,oBAAoB,CAAC,IAAqB,EAAE,MAAmB,IAAI;QACjE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,2BAA2B,CAAC,IAA4B,EAAE,MAAmB,IAAI;QAC/E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,0BAA0B,CAAC,IAA2B,EAAE,MAAmB,IAAI;QAC7E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,oBAAoB,CAAC,IAAqB,EAAE,MAAmB,IAAI,IAAS,CAAC;IAC7E,oBAAoB,CAAC,IAAqB,EAAE,MAAmB,IAAI,IAAS,CAAC;IAC7E,mBAAmB,CAAC,IAAoB,EAAE,MAAmB,IAAI,IAAS,CAAC;IAC3E,mBAAmB,CAAC,IAAoB,EAAE,MAAmB,IAAI,IAAS,CAAC;IAC3E,mBAAmB,CAAC,IAAoB,EAAE,MAAmB,IAAI,IAAS,CAAC;IAC3E,0BAA0B,CAAC,IAA2B,EAAE,MAAmB,IAAI,IAAS,CAAC;IACzF,qBAAqB,CAAC,SAAoB,EAAE,MAAmB,IAAI,IAAS,CAAC;IAC7E,mBAAmB,CAAC,IAAoB,EAAE,MAAmB,IAAI;QAC/D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,mBAAmB,CAAC,IAAoB,EAAE,MAAmB,IAAI;QAC/D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,sBAAsB,CAAC,IAAuB,EAAE,MAAmB,IAAI;QACrE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,qBAAqB,CAAC,IAAsB,EAAE,YAAqB,KAAK,EAAE,MAAmB,IAAI;QAC/F,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE,CAAC;YAC/E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;QAC9G,CAAC;IACH,CAAC;IACD,gBAAgB,CAAC,IAAiB,EAAE,MAAmB,IAAI;QACzD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,mBAAmB,CAAC,IAAoB,EAAE,MAAmB,IAAI,IAAS,CAAC;IAC3E,oBAAoB,CAAC,IAAqB,EAAE,YAAqB,KAAK,EAAE,MAAmB,IAAI;QAC7F,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,yBAAyB,CAAC,IAA0B,EAAE,MAAmB,IAAI;QAC3E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,0BAA0B,CAAC,IAA2B,EAAE,MAAmB,IAAI;QAC7E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,iBAAiB,CAAC,IAAkB,EAAE,MAAmB,IAAI;QAC3D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,oBAAoB,CAAC,IAAqB,EAAE,MAAmB,IAAI;QACjE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,2BAA2B,CAAC,IAA4B,EAAE,MAAmB,IAAI;QAC/E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,wBAAwB,CAAC,IAAyB,EAAE,MAAmB,IAAI;QACzE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IACD,qBAAqB,CAAC,IAAsB,EAAE,MAAmB,IAAI;QACnE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,iBAAiB,CAAC,IAAkB,EAAE,MAAmB,IAAI;QAC3D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,wBAAwB,CAAC,IAAyB,EAAE,YAAqB,KAAK,EAAE,MAAmB,IAAI;QACrG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,gBAAgB,CAAC,IAAiB,EAAE,MAAmB,IAAI;QACzD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,sBAAsB,CAAC,IAAuB,EAAE,MAAmB,IAAI;QACrE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,oBAAoB,CAAC,IAAqB,EAAE,MAAmB,IAAI;QACjE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,mBAAmB,CAAC,IAAwB,EAAE,MAAmB,IAAI;QACnE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,yBAAyB,CAAC,IAA0B,EAAE,YAAqB,KAAK,EAAE,MAAmB,IAAI;QACvG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,sBAAsB,CAAC,IAAuB,EAAE,MAAmB,IAAI;QACrE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,yBAAyB,CAAC,IAA0B,EAAE,YAAqB,KAAK,EAAE,MAAmB,IAAI;QACvG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,oBAAoB,CAAC,IAAqB,EAAE,MAAmB,IAAI;QACjE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,eAAe,CAAC,IAAgB,EAAE,MAAmB,IAAI;QACvD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,oBAAoB,CAAC,IAAqB,EAAE,MAAmB,IAAI;QACjE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,mBAAmB,CAAC,IAAoB,EAAE,MAAmB,IAAI;QAC/D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,iBAAiB,CAAC,IAAkB,EAAE,MAAmB,IAAI;QAC3D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IACD,oBAAoB,CAAC,IAAqB,EAAE,MAAmB,IAAI;QACjE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,wBAAwB,CAAC,IAAyB,EAAE,MAAmB,IAAI;QACzE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,sBAAsB,CAAC,IAAuB,EAAE,MAAmB,IAAI;QACrE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,mBAAmB,CAAC,IAAoB,EAAE,MAAmB,IAAI;QAC/D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,kBAAkB,CAAC,IAAmB,EAAE,MAAmB,IAAI,IAAS,CAAC;IACzE,YAAY,CAAC,IAAiB,EAAE,MAAmB,IAAI,IAAS,CAAC;IACjE,kBAAkB,CAAC,IAAmB,EAAE,MAAmB,IAAI;QAC7D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,cAAc,CAAC,IAAmB,EAAE,MAAmB,IAAI;QACzD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,uBAAuB,CAAC,IAAwB,EAAE,MAAmB,IAAI,IAAS,CAAC;IACnF,mBAAmB,CAAC,IAAoB,EAAE,MAAmB,IAAI;QAC/D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IACD,sBAAsB,CAAC,IAAuB,EAAE,MAAmB,IAAI,IAAS,CAAC;IACjF,sBAAsB,CAAC,IAAuB,EAAE,MAAmB,IAAI,IAAS,CAAC;CAClF"}
|
|
1
|
+
{"version":3,"file":"visitor.js","sourceRoot":"","sources":["../src/visitor.ts"],"names":[],"mappings":"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"}
|
package/transform/src/visitor.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ArrayLiteralExpression, AssertionExpression, BinaryExpression, CallExpression, ElementAccessExpression, FloatLiteralExpression, FunctionTypeNode, IdentifierExpression, NamedTypeNode, Node, ObjectLiteralExpression, Source, TypeParameterNode, BlockStatement, BreakStatement, ClassDeclaration, ClassExpression, CommaExpression, ContinueStatement, DecoratorNode, DoStatement, EmptyStatement, EnumDeclaration, EnumValueDeclaration, ExportDefaultStatement, ExportImportStatement, ExportMember, ExportStatement, ExpressionStatement, FieldDeclaration, ForStatement, FunctionDeclaration, FunctionExpression, IfStatement, ImportDeclaration, ImportStatement, IndexSignatureNode, InstanceOfExpression, IntegerLiteralExpression, InterfaceDeclaration, LiteralExpression, MethodDeclaration, NamespaceDeclaration, NewExpression, ParameterNode, ParenthesizedExpression, PropertyAccessExpression, RegexpLiteralExpression, ReturnStatement, StringLiteralExpression, SwitchCase, SwitchStatement, TemplateLiteralExpression, TernaryExpression, ThrowStatement, TryStatement, TypeDeclaration, TypeName, UnaryPostfixExpression, UnaryPrefixExpression, VariableDeclaration, VariableStatement, WhileStatement, NodeKind, TypeNode, Expression, LiteralKind, UnaryExpression, SuperExpression, FalseExpression, TrueExpression, ThisExpression, NullExpression, ConstructorExpression, Statement, VoidStatement, CompiledExpression, CommentNode, Module, OmittedExpression, ForOfStatement, ModuleDeclaration } from "assemblyscript/dist/assemblyscript.js";
|
|
2
|
-
import { toString } from "./util.js";
|
|
3
2
|
|
|
4
3
|
export class Visitor {
|
|
5
4
|
public currentSource: Source | null = null;
|