@jsprismarine/nbt 0.13.1 → 0.13.5
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 +10 -0
- package/package.json +10 -7
- package/dist/Allocation.cjs.cjs +0 -14
- package/dist/Allocation.d.ts +0 -7
- package/dist/Allocation.d.ts.map +0 -1
- package/dist/Allocation.es.js +0 -10
- package/dist/ByteOrder.cjs.cjs +0 -12
- package/dist/ByteOrder.d.ts +0 -5
- package/dist/ByteOrder.d.ts.map +0 -1
- package/dist/ByteOrder.es.js +0 -8
- package/dist/NBTDefinitions.cjs.cjs +0 -22
- package/dist/NBTDefinitions.d.ts +0 -15
- package/dist/NBTDefinitions.d.ts.map +0 -1
- package/dist/NBTDefinitions.es.js +0 -18
- package/dist/NBTReader.cjs.cjs +0 -163
- package/dist/NBTReader.d.ts +0 -12
- package/dist/NBTReader.d.ts.map +0 -1
- package/dist/NBTReader.es.js +0 -159
- package/dist/NBTStreamReader.cjs.cjs +0 -119
- package/dist/NBTStreamReader.d.ts +0 -31
- package/dist/NBTStreamReader.d.ts.map +0 -1
- package/dist/NBTStreamReader.es.js +0 -115
- package/dist/NBTTagCompound.cjs.cjs +0 -151
- package/dist/NBTTagCompound.d.ts +0 -29
- package/dist/NBTTagCompound.d.ts.map +0 -1
- package/dist/NBTTagCompound.es.js +0 -142
- package/dist/NBTWriter.cjs.cjs +0 -238
- package/dist/NBTWriter.d.ts +0 -26
- package/dist/NBTWriter.d.ts.map +0 -1
- package/dist/NBTWriter.es.js +0 -234
- package/dist/index.cjs.cjs +0 -22
- package/dist/index.d.ts +0 -9
- package/dist/index.d.ts.map +0 -1
- package/dist/index.es.js +0 -10
- package/dist/types/ByteVal.cjs.cjs +0 -16
- package/dist/types/ByteVal.d.ts +0 -6
- package/dist/types/ByteVal.d.ts.map +0 -1
- package/dist/types/ByteVal.es.js +0 -12
- package/dist/types/DoubleVal.cjs.cjs +0 -16
- package/dist/types/DoubleVal.d.ts +0 -6
- package/dist/types/DoubleVal.d.ts.map +0 -1
- package/dist/types/DoubleVal.es.js +0 -12
- package/dist/types/FloatVal.cjs.cjs +0 -16
- package/dist/types/FloatVal.d.ts +0 -6
- package/dist/types/FloatVal.d.ts.map +0 -1
- package/dist/types/FloatVal.es.js +0 -12
- package/dist/types/LongVal.cjs.cjs +0 -16
- package/dist/types/LongVal.d.ts +0 -6
- package/dist/types/LongVal.d.ts.map +0 -1
- package/dist/types/LongVal.es.js +0 -12
- package/dist/types/NumberVal.cjs.cjs +0 -16
- package/dist/types/NumberVal.d.ts +0 -6
- package/dist/types/NumberVal.d.ts.map +0 -1
- package/dist/types/NumberVal.es.js +0 -12
- package/dist/types/ShortVal.cjs.cjs +0 -16
- package/dist/types/ShortVal.d.ts +0 -6
- package/dist/types/ShortVal.d.ts.map +0 -1
- package/dist/types/ShortVal.es.js +0 -12
- package/dist/types/StringVal.cjs.cjs +0 -16
- package/dist/types/StringVal.d.ts +0 -6
- package/dist/types/StringVal.d.ts.map +0 -1
- package/dist/types/StringVal.es.js +0 -12
- package/dist/types/Types.cjs.cjs +0 -22
- package/dist/types/Types.d.ts +0 -9
- package/dist/types/Types.d.ts.map +0 -1
- package/dist/types/Types.es.js +0 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @jsprismarine/nbt
|
|
2
2
|
|
|
3
|
+
## 0.13.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`5a9f6d3`](https://github.com/JSPrismarine/JSPrismarine/commit/5a9f6d3459722aa9fe2d18b225eb939a6ddbca51) Thanks [@filiphsps](https://github.com/filiphsps)! - Force-republish all packages at 0.13.4 to recover from a broken release pipeline.
|
|
8
|
+
|
|
9
|
+
Previous attempts to publish 0.13.3 left the npm registry in an inconsistent state: a handful of packages (`brigadier`, `client`, `color-parser`, `errors`, `prismarine`, `raknet`) were pushed under the `unstable` dist-tag at the non-snapshot version `0.13.3`, while the rest failed mid-publish. Rather than try to repair 0.13.3 in place, we're skipping it entirely and resyncing every package on `latest` at 0.13.4.
|
|
10
|
+
|
|
11
|
+
## 0.13.2
|
|
12
|
+
|
|
3
13
|
## 0.13.1
|
|
4
14
|
|
|
5
15
|
## 0.13.0
|
package/package.json
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsprismarine/nbt",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.5",
|
|
4
4
|
"description": "Minecraft: Bedrock Edition NBT parser/writer",
|
|
5
5
|
"sideEffects": false,
|
|
6
|
+
"publishConfig": {
|
|
7
|
+
"access": "public"
|
|
8
|
+
},
|
|
6
9
|
"type": "module",
|
|
7
10
|
"files": [
|
|
8
11
|
"dist",
|
|
@@ -40,12 +43,12 @@
|
|
|
40
43
|
"license": "MIT",
|
|
41
44
|
"homepage": "https://github.com/JSPrismarine/JSPrismarine/tree/master/packages/nbt",
|
|
42
45
|
"devDependencies": {
|
|
43
|
-
"@types/node": "
|
|
44
|
-
"glob": "
|
|
45
|
-
"rimraf": "6.
|
|
46
|
-
"typescript": "5.
|
|
47
|
-
"vite": "
|
|
48
|
-
"vitest": "
|
|
46
|
+
"@types/node": "24.12.4",
|
|
47
|
+
"glob": "13.0.6",
|
|
48
|
+
"rimraf": "6.1.3",
|
|
49
|
+
"typescript": "5.9.3",
|
|
50
|
+
"vite": "7.3.3",
|
|
51
|
+
"vitest": "4.1.6"
|
|
49
52
|
},
|
|
50
53
|
"dependencies": {
|
|
51
54
|
"@jsprismarine/jsbinaryutils": "5.5.3"
|
package/dist/Allocation.cjs.cjs
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
-
|
|
5
|
-
var Allocation = /* @__PURE__ */ ((Allocation2) => {
|
|
6
|
-
Allocation2[Allocation2["ARRAY_LIST"] = 40] = "ARRAY_LIST";
|
|
7
|
-
Allocation2[Allocation2["REFERENCE"] = 4] = "REFERENCE";
|
|
8
|
-
Allocation2[Allocation2["STRING"] = 48] = "STRING";
|
|
9
|
-
Allocation2[Allocation2["COMPOUND"] = 72] = "COMPOUND";
|
|
10
|
-
return Allocation2;
|
|
11
|
-
})(Allocation || {});
|
|
12
|
-
|
|
13
|
-
exports.Allocation = Allocation;
|
|
14
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWxsb2NhdGlvbi5janMuY2pzIiwic291cmNlcyI6WyIuLi9zcmMvQWxsb2NhdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBBbGxvY2F0aW9uIHtcbiAgICBBUlJBWV9MSVNUID0gNDAsXG4gICAgUkVGRVJFTkNFID0gNCxcbiAgICBTVFJJTkcgPSA0OCxcbiAgICBDT01QT1VORCA9IDcyXG59XG4iXSwibmFtZXMiOlsiQWxsb2NhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFZLElBQUEsVUFBQSxxQkFBQUEsV0FBTCxLQUFBO0FBQ0gsRUFBQUEsV0FBQUEsQ0FBQUEsV0FBQUEsQ0FBQSxnQkFBYSxFQUFiLENBQUEsR0FBQSxZQUFBO0FBQ0EsRUFBQUEsV0FBQUEsQ0FBQUEsV0FBQUEsQ0FBQSxlQUFZLENBQVosQ0FBQSxHQUFBLFdBQUE7QUFDQSxFQUFBQSxXQUFBQSxDQUFBQSxXQUFBQSxDQUFBLFlBQVMsRUFBVCxDQUFBLEdBQUEsUUFBQTtBQUNBLEVBQUFBLFdBQUFBLENBQUFBLFdBQUFBLENBQUEsY0FBVyxFQUFYLENBQUEsR0FBQSxVQUFBO0FBSlEsRUFBQUEsT0FBQUEsV0FBQUE7QUFBQSxDQUFBLEVBQUEsVUFBQSxJQUFBLEVBQUE7Ozs7In0=
|
package/dist/Allocation.d.ts
DELETED
package/dist/Allocation.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Allocation.d.ts","sourceRoot":"","sources":["../src/Allocation.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU;IAClB,UAAU,KAAK;IACf,SAAS,IAAI;IACb,MAAM,KAAK;IACX,QAAQ,KAAK;CAChB"}
|
package/dist/Allocation.es.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
var Allocation = /* @__PURE__ */ ((Allocation2) => {
|
|
2
|
-
Allocation2[Allocation2["ARRAY_LIST"] = 40] = "ARRAY_LIST";
|
|
3
|
-
Allocation2[Allocation2["REFERENCE"] = 4] = "REFERENCE";
|
|
4
|
-
Allocation2[Allocation2["STRING"] = 48] = "STRING";
|
|
5
|
-
Allocation2[Allocation2["COMPOUND"] = 72] = "COMPOUND";
|
|
6
|
-
return Allocation2;
|
|
7
|
-
})(Allocation || {});
|
|
8
|
-
|
|
9
|
-
export { Allocation };
|
|
10
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWxsb2NhdGlvbi5lcy5qcyIsInNvdXJjZXMiOlsiLi4vc3JjL0FsbG9jYXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gQWxsb2NhdGlvbiB7XG4gICAgQVJSQVlfTElTVCA9IDQwLFxuICAgIFJFRkVSRU5DRSA9IDQsXG4gICAgU1RSSU5HID0gNDgsXG4gICAgQ09NUE9VTkQgPSA3MlxufVxuIl0sIm5hbWVzIjpbIkFsbG9jYXRpb24iXSwibWFwcGluZ3MiOiJBQUFZLElBQUEsVUFBQSxxQkFBQUEsV0FBTCxLQUFBO0FBQ0gsRUFBQUEsV0FBQUEsQ0FBQUEsV0FBQUEsQ0FBQSxnQkFBYSxFQUFiLENBQUEsR0FBQSxZQUFBO0FBQ0EsRUFBQUEsV0FBQUEsQ0FBQUEsV0FBQUEsQ0FBQSxlQUFZLENBQVosQ0FBQSxHQUFBLFdBQUE7QUFDQSxFQUFBQSxXQUFBQSxDQUFBQSxXQUFBQSxDQUFBLFlBQVMsRUFBVCxDQUFBLEdBQUEsUUFBQTtBQUNBLEVBQUFBLFdBQUFBLENBQUFBLFdBQUFBLENBQUEsY0FBVyxFQUFYLENBQUEsR0FBQSxVQUFBO0FBSlEsRUFBQUEsT0FBQUEsV0FBQUE7QUFBQSxDQUFBLEVBQUEsVUFBQSxJQUFBLEVBQUE7Ozs7In0=
|
package/dist/ByteOrder.cjs.cjs
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
-
|
|
5
|
-
var ByteOrder = /* @__PURE__ */ ((ByteOrder2) => {
|
|
6
|
-
ByteOrder2[ByteOrder2["BIG_ENDIAN"] = 0] = "BIG_ENDIAN";
|
|
7
|
-
ByteOrder2[ByteOrder2["LITTLE_ENDIAN"] = 1] = "LITTLE_ENDIAN";
|
|
8
|
-
return ByteOrder2;
|
|
9
|
-
})(ByteOrder || {});
|
|
10
|
-
|
|
11
|
-
exports.ByteOrder = ByteOrder;
|
|
12
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnl0ZU9yZGVyLmNqcy5janMiLCJzb3VyY2VzIjpbIi4uL3NyYy9CeXRlT3JkZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gQnl0ZU9yZGVyIHtcbiAgICBCSUdfRU5ESUFOLFxuICAgIExJVFRMRV9FTkRJQU5cbn1cbiJdLCJuYW1lcyI6WyJCeXRlT3JkZXIiXSwibWFwcGluZ3MiOiI7Ozs7QUFBWSxJQUFBLFNBQUEscUJBQUFBLFVBQUwsS0FBQTtBQUNILEVBQUFBLFVBQUEsQ0FBQSxVQUFBLENBQUEsWUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsWUFBQTtBQUNBLEVBQUFBLFVBQUEsQ0FBQSxVQUFBLENBQUEsZUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsZUFBQTtBQUZRLEVBQUFBLE9BQUFBLFVBQUFBO0FBQUEsQ0FBQSxFQUFBLFNBQUEsSUFBQSxFQUFBOzs7OyJ9
|
package/dist/ByteOrder.d.ts
DELETED
package/dist/ByteOrder.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ByteOrder.d.ts","sourceRoot":"","sources":["../src/ByteOrder.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IACjB,UAAU,IAAA;IACV,aAAa,IAAA;CAChB"}
|
package/dist/ByteOrder.es.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
var ByteOrder = /* @__PURE__ */ ((ByteOrder2) => {
|
|
2
|
-
ByteOrder2[ByteOrder2["BIG_ENDIAN"] = 0] = "BIG_ENDIAN";
|
|
3
|
-
ByteOrder2[ByteOrder2["LITTLE_ENDIAN"] = 1] = "LITTLE_ENDIAN";
|
|
4
|
-
return ByteOrder2;
|
|
5
|
-
})(ByteOrder || {});
|
|
6
|
-
|
|
7
|
-
export { ByteOrder };
|
|
8
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnl0ZU9yZGVyLmVzLmpzIiwic291cmNlcyI6WyIuLi9zcmMvQnl0ZU9yZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEJ5dGVPcmRlciB7XG4gICAgQklHX0VORElBTixcbiAgICBMSVRUTEVfRU5ESUFOXG59XG4iXSwibmFtZXMiOlsiQnl0ZU9yZGVyIl0sIm1hcHBpbmdzIjoiQUFBWSxJQUFBLFNBQUEscUJBQUFBLFVBQUwsS0FBQTtBQUNILEVBQUFBLFVBQUEsQ0FBQSxVQUFBLENBQUEsWUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsWUFBQTtBQUNBLEVBQUFBLFVBQUEsQ0FBQSxVQUFBLENBQUEsZUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsZUFBQTtBQUZRLEVBQUFBLE9BQUFBLFVBQUFBO0FBQUEsQ0FBQSxFQUFBLFNBQUEsSUFBQSxFQUFBOzs7OyJ9
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
-
|
|
5
|
-
var NBTDefinitions = /* @__PURE__ */ ((NBTDefinitions2) => {
|
|
6
|
-
NBTDefinitions2[NBTDefinitions2["TAG_END"] = 0] = "TAG_END";
|
|
7
|
-
NBTDefinitions2[NBTDefinitions2["TAG_BYTE"] = 1] = "TAG_BYTE";
|
|
8
|
-
NBTDefinitions2[NBTDefinitions2["TAG_SHORT"] = 2] = "TAG_SHORT";
|
|
9
|
-
NBTDefinitions2[NBTDefinitions2["TAG_INT"] = 3] = "TAG_INT";
|
|
10
|
-
NBTDefinitions2[NBTDefinitions2["TAG_LONG"] = 4] = "TAG_LONG";
|
|
11
|
-
NBTDefinitions2[NBTDefinitions2["TAG_FLOAT"] = 5] = "TAG_FLOAT";
|
|
12
|
-
NBTDefinitions2[NBTDefinitions2["TAG_DOUBLE"] = 6] = "TAG_DOUBLE";
|
|
13
|
-
NBTDefinitions2[NBTDefinitions2["TAG_BYTE_ARRAY"] = 7] = "TAG_BYTE_ARRAY";
|
|
14
|
-
NBTDefinitions2[NBTDefinitions2["TAG_STRING"] = 8] = "TAG_STRING";
|
|
15
|
-
NBTDefinitions2[NBTDefinitions2["TAG_LIST"] = 9] = "TAG_LIST";
|
|
16
|
-
NBTDefinitions2[NBTDefinitions2["TAG_COMPOUND"] = 10] = "TAG_COMPOUND";
|
|
17
|
-
NBTDefinitions2[NBTDefinitions2["TAG_INT_ARRAY"] = 11] = "TAG_INT_ARRAY";
|
|
18
|
-
return NBTDefinitions2;
|
|
19
|
-
})(NBTDefinitions || {});
|
|
20
|
-
|
|
21
|
-
exports.NBTDefinitions = NBTDefinitions;
|
|
22
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTkJURGVmaW5pdGlvbnMuY2pzLmNqcyIsInNvdXJjZXMiOlsiLi4vc3JjL05CVERlZmluaXRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIE5CVERlZmluaXRpb25zIHtcbiAgICBUQUdfRU5ELFxuICAgIFRBR19CWVRFLFxuICAgIFRBR19TSE9SVCxcbiAgICBUQUdfSU5ULFxuICAgIFRBR19MT05HLFxuICAgIFRBR19GTE9BVCxcbiAgICBUQUdfRE9VQkxFLFxuICAgIFRBR19CWVRFX0FSUkFZLFxuICAgIFRBR19TVFJJTkcsXG4gICAgVEFHX0xJU1QsXG4gICAgVEFHX0NPTVBPVU5ELFxuICAgIFRBR19JTlRfQVJSQVlcbn1cbiJdLCJuYW1lcyI6WyJOQlREZWZpbml0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7OztBQUFZLElBQUEsY0FBQSxxQkFBQUEsZUFBTCxLQUFBO0FBQ0gsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxTQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxTQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxVQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxVQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxXQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxXQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxTQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxTQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxVQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxVQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxXQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxXQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxZQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxZQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxnQkFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsZ0JBQUE7QUFDQSxFQUFBQSxlQUFBLENBQUEsZUFBQSxDQUFBLFlBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLFlBQUE7QUFDQSxFQUFBQSxlQUFBLENBQUEsZUFBQSxDQUFBLFVBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLFVBQUE7QUFDQSxFQUFBQSxlQUFBLENBQUEsZUFBQSxDQUFBLGNBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxHQUFBLGNBQUE7QUFDQSxFQUFBQSxlQUFBLENBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxHQUFBLGVBQUE7QUFaUSxFQUFBQSxPQUFBQSxlQUFBQTtBQUFBLENBQUEsRUFBQSxjQUFBLElBQUEsRUFBQTs7OzsifQ==
|
package/dist/NBTDefinitions.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export declare enum NBTDefinitions {
|
|
2
|
-
TAG_END = 0,
|
|
3
|
-
TAG_BYTE = 1,
|
|
4
|
-
TAG_SHORT = 2,
|
|
5
|
-
TAG_INT = 3,
|
|
6
|
-
TAG_LONG = 4,
|
|
7
|
-
TAG_FLOAT = 5,
|
|
8
|
-
TAG_DOUBLE = 6,
|
|
9
|
-
TAG_BYTE_ARRAY = 7,
|
|
10
|
-
TAG_STRING = 8,
|
|
11
|
-
TAG_LIST = 9,
|
|
12
|
-
TAG_COMPOUND = 10,
|
|
13
|
-
TAG_INT_ARRAY = 11
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=NBTDefinitions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NBTDefinitions.d.ts","sourceRoot":"","sources":["../src/NBTDefinitions.ts"],"names":[],"mappings":"AAAA,oBAAY,cAAc;IACtB,OAAO,IAAA;IACP,QAAQ,IAAA;IACR,SAAS,IAAA;IACT,OAAO,IAAA;IACP,QAAQ,IAAA;IACR,SAAS,IAAA;IACT,UAAU,IAAA;IACV,cAAc,IAAA;IACd,UAAU,IAAA;IACV,QAAQ,IAAA;IACR,YAAY,KAAA;IACZ,aAAa,KAAA;CAChB"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
var NBTDefinitions = /* @__PURE__ */ ((NBTDefinitions2) => {
|
|
2
|
-
NBTDefinitions2[NBTDefinitions2["TAG_END"] = 0] = "TAG_END";
|
|
3
|
-
NBTDefinitions2[NBTDefinitions2["TAG_BYTE"] = 1] = "TAG_BYTE";
|
|
4
|
-
NBTDefinitions2[NBTDefinitions2["TAG_SHORT"] = 2] = "TAG_SHORT";
|
|
5
|
-
NBTDefinitions2[NBTDefinitions2["TAG_INT"] = 3] = "TAG_INT";
|
|
6
|
-
NBTDefinitions2[NBTDefinitions2["TAG_LONG"] = 4] = "TAG_LONG";
|
|
7
|
-
NBTDefinitions2[NBTDefinitions2["TAG_FLOAT"] = 5] = "TAG_FLOAT";
|
|
8
|
-
NBTDefinitions2[NBTDefinitions2["TAG_DOUBLE"] = 6] = "TAG_DOUBLE";
|
|
9
|
-
NBTDefinitions2[NBTDefinitions2["TAG_BYTE_ARRAY"] = 7] = "TAG_BYTE_ARRAY";
|
|
10
|
-
NBTDefinitions2[NBTDefinitions2["TAG_STRING"] = 8] = "TAG_STRING";
|
|
11
|
-
NBTDefinitions2[NBTDefinitions2["TAG_LIST"] = 9] = "TAG_LIST";
|
|
12
|
-
NBTDefinitions2[NBTDefinitions2["TAG_COMPOUND"] = 10] = "TAG_COMPOUND";
|
|
13
|
-
NBTDefinitions2[NBTDefinitions2["TAG_INT_ARRAY"] = 11] = "TAG_INT_ARRAY";
|
|
14
|
-
return NBTDefinitions2;
|
|
15
|
-
})(NBTDefinitions || {});
|
|
16
|
-
|
|
17
|
-
export { NBTDefinitions };
|
|
18
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTkJURGVmaW5pdGlvbnMuZXMuanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9OQlREZWZpbml0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBOQlREZWZpbml0aW9ucyB7XG4gICAgVEFHX0VORCxcbiAgICBUQUdfQllURSxcbiAgICBUQUdfU0hPUlQsXG4gICAgVEFHX0lOVCxcbiAgICBUQUdfTE9ORyxcbiAgICBUQUdfRkxPQVQsXG4gICAgVEFHX0RPVUJMRSxcbiAgICBUQUdfQllURV9BUlJBWSxcbiAgICBUQUdfU1RSSU5HLFxuICAgIFRBR19MSVNULFxuICAgIFRBR19DT01QT1VORCxcbiAgICBUQUdfSU5UX0FSUkFZXG59XG4iXSwibmFtZXMiOlsiTkJURGVmaW5pdGlvbnMiXSwibWFwcGluZ3MiOiJBQUFZLElBQUEsY0FBQSxxQkFBQUEsZUFBTCxLQUFBO0FBQ0gsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxTQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxTQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxVQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxVQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxXQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxXQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxTQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxTQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxVQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxVQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxXQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxXQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxZQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxZQUFBO0FBQ0EsRUFBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxnQkFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsZ0JBQUE7QUFDQSxFQUFBQSxlQUFBLENBQUEsZUFBQSxDQUFBLFlBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLFlBQUE7QUFDQSxFQUFBQSxlQUFBLENBQUEsZUFBQSxDQUFBLFVBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLFVBQUE7QUFDQSxFQUFBQSxlQUFBLENBQUEsZUFBQSxDQUFBLGNBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxHQUFBLGNBQUE7QUFDQSxFQUFBQSxlQUFBLENBQUEsZUFBQSxDQUFBLGVBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxHQUFBLGVBQUE7QUFaUSxFQUFBQSxPQUFBQSxlQUFBQTtBQUFBLENBQUEsRUFBQSxjQUFBLElBQUEsRUFBQTs7OzsifQ==
|
package/dist/NBTReader.cjs.cjs
DELETED
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
|
|
4
|
-
|
|
5
|
-
const Allocation = require('./Allocation.cjs.cjs');
|
|
6
|
-
const NBTDefinitions = require('./NBTDefinitions.cjs.cjs');
|
|
7
|
-
const NBTStreamReader = require('./NBTStreamReader.cjs.cjs');
|
|
8
|
-
const NBTTagCompound = require('./NBTTagCompound.cjs.cjs');
|
|
9
|
-
|
|
10
|
-
class NBTReader extends NBTStreamReader.default {
|
|
11
|
-
constructor(input, byteOrder) {
|
|
12
|
-
super(input, byteOrder);
|
|
13
|
-
}
|
|
14
|
-
parseList() {
|
|
15
|
-
this.expectInput(this.isUsingVarint() ? 2 : 3, "Invalid NBT Data: Not enough data to read new tag", false);
|
|
16
|
-
if (this.readByteValue().getValue() !== NBTDefinitions.NBTDefinitions.TAG_LIST) {
|
|
17
|
-
throw new Error("Invalid NBT Data: Not list tag found");
|
|
18
|
-
}
|
|
19
|
-
this.readStringValue();
|
|
20
|
-
return this.readTagListValue();
|
|
21
|
-
}
|
|
22
|
-
parse() {
|
|
23
|
-
this.expectInput(this.isUsingVarint() ? 2 : 3, "Invalid NBT Data: Not enough data to read new tag", false);
|
|
24
|
-
if (this.readByteValue().getValue() !== NBTDefinitions.NBTDefinitions.TAG_COMPOUND) {
|
|
25
|
-
throw new Error("Invalid NBT Data: No root tag found");
|
|
26
|
-
}
|
|
27
|
-
const name = this.readStringValue().getValue();
|
|
28
|
-
const root = this.readTagCompoundValue();
|
|
29
|
-
root.setName(name);
|
|
30
|
-
return root;
|
|
31
|
-
}
|
|
32
|
-
readTagCompoundValue() {
|
|
33
|
-
this.alterAllocationLimit(Allocation.Allocation.COMPOUND);
|
|
34
|
-
const compound = new NBTTagCompound.default();
|
|
35
|
-
this.expectInput(1, "Invalid NBT Data: Expected Tag ID in compound tag", false);
|
|
36
|
-
let tagID = this.readByteValue().getValue();
|
|
37
|
-
while (tagID !== NBTDefinitions.NBTDefinitions.TAG_END) {
|
|
38
|
-
switch (tagID) {
|
|
39
|
-
case NBTDefinitions.NBTDefinitions.TAG_BYTE:
|
|
40
|
-
compound.addValue(this.readStringValue().getValue(), this.readByteValue());
|
|
41
|
-
break;
|
|
42
|
-
case NBTDefinitions.NBTDefinitions.TAG_SHORT:
|
|
43
|
-
compound.addValue(this.readStringValue().getValue(), this.readShortValue());
|
|
44
|
-
break;
|
|
45
|
-
case NBTDefinitions.NBTDefinitions.TAG_INT:
|
|
46
|
-
compound.addValue(this.readStringValue().getValue(), this.readIntValue());
|
|
47
|
-
break;
|
|
48
|
-
case NBTDefinitions.NBTDefinitions.TAG_LONG:
|
|
49
|
-
compound.addValue(this.readStringValue().getValue(), this.readLongValue());
|
|
50
|
-
break;
|
|
51
|
-
case NBTDefinitions.NBTDefinitions.TAG_FLOAT:
|
|
52
|
-
compound.addValue(this.readStringValue().getValue(), this.readFloatValue());
|
|
53
|
-
break;
|
|
54
|
-
case NBTDefinitions.NBTDefinitions.TAG_DOUBLE:
|
|
55
|
-
compound.addValue(this.readStringValue().getValue(), this.readDoubleValue());
|
|
56
|
-
break;
|
|
57
|
-
case NBTDefinitions.NBTDefinitions.TAG_BYTE_ARRAY:
|
|
58
|
-
compound.addValue(this.readStringValue().getValue(), this.readByteArrayValue());
|
|
59
|
-
break;
|
|
60
|
-
case NBTDefinitions.NBTDefinitions.TAG_STRING:
|
|
61
|
-
compound.addValue(this.readStringValue().getValue(), this.readStringValue());
|
|
62
|
-
break;
|
|
63
|
-
case NBTDefinitions.NBTDefinitions.TAG_LIST:
|
|
64
|
-
compound.addValue(this.readStringValue().getValue(), this.readTagListValue());
|
|
65
|
-
break;
|
|
66
|
-
case NBTDefinitions.NBTDefinitions.TAG_COMPOUND:
|
|
67
|
-
const name = this.readStringValue().getValue();
|
|
68
|
-
const child = this.readTagCompoundValue();
|
|
69
|
-
child.setName(name);
|
|
70
|
-
compound.addChild(child);
|
|
71
|
-
break;
|
|
72
|
-
case NBTDefinitions.NBTDefinitions.TAG_INT_ARRAY:
|
|
73
|
-
compound.addValue(this.readStringValue().getValue(), this.readIntArrayValue());
|
|
74
|
-
break;
|
|
75
|
-
default:
|
|
76
|
-
throw new Error(`Invalid NBT Data: Unknown tag <${tagID}>`);
|
|
77
|
-
}
|
|
78
|
-
this.expectInput(1, "Invalid NBT Data: Expected tag ID in tag compound", false);
|
|
79
|
-
tagID = this.readByteValue().getValue();
|
|
80
|
-
}
|
|
81
|
-
return compound;
|
|
82
|
-
}
|
|
83
|
-
readTagListValue() {
|
|
84
|
-
this.expectInput(this.isUsingVarint() ? 2 : 5, "Invalid NBT Data: Expected TAGList header", false);
|
|
85
|
-
const listType = this.readByteValue().getValue();
|
|
86
|
-
let listLength = this.readIntValue().getValue();
|
|
87
|
-
this.alterAllocationLimit(Allocation.Allocation.ARRAY_LIST);
|
|
88
|
-
this.alterAllocationLimit(Allocation.Allocation.REFERENCE);
|
|
89
|
-
const backingList = /* @__PURE__ */ new Set();
|
|
90
|
-
switch (listType) {
|
|
91
|
-
case NBTDefinitions.NBTDefinitions.TAG_END:
|
|
92
|
-
listLength = 0;
|
|
93
|
-
break;
|
|
94
|
-
case NBTDefinitions.NBTDefinitions.TAG_BYTE:
|
|
95
|
-
this.expectInput(listLength, "Invalid NBT Data: Expected bytes for list");
|
|
96
|
-
for (let i = 0; i < listLength; i++) {
|
|
97
|
-
backingList.add(this.readShortValue());
|
|
98
|
-
}
|
|
99
|
-
break;
|
|
100
|
-
case NBTDefinitions.NBTDefinitions.TAG_SHORT:
|
|
101
|
-
this.expectInput(2 * listLength, "Invalid NBT Data: Expected shorts for list");
|
|
102
|
-
for (let i = 0; i < listLength; i++) {
|
|
103
|
-
backingList.add(this.readShortValue());
|
|
104
|
-
}
|
|
105
|
-
break;
|
|
106
|
-
case NBTDefinitions.NBTDefinitions.TAG_INT:
|
|
107
|
-
this.expectInput(4 * listLength, "Invalid NBT Data: Expected ints for list");
|
|
108
|
-
for (let i = 0; i < listLength; i++) {
|
|
109
|
-
backingList.add(this.readIntValue());
|
|
110
|
-
}
|
|
111
|
-
break;
|
|
112
|
-
case NBTDefinitions.NBTDefinitions.TAG_LONG:
|
|
113
|
-
this.expectInput(8 * listLength, "Invalid NBT Data: Expected longs for list");
|
|
114
|
-
for (let i = 0; i < listLength; i++) {
|
|
115
|
-
backingList.add(this.readLongValue());
|
|
116
|
-
}
|
|
117
|
-
break;
|
|
118
|
-
case NBTDefinitions.NBTDefinitions.TAG_FLOAT:
|
|
119
|
-
this.expectInput(4 * listLength, "Invalid NBT Data: Expected floats for list");
|
|
120
|
-
for (let i = 0; i < listLength; i++) {
|
|
121
|
-
backingList.add(this.readFloatValue());
|
|
122
|
-
}
|
|
123
|
-
break;
|
|
124
|
-
case NBTDefinitions.NBTDefinitions.TAG_DOUBLE:
|
|
125
|
-
this.expectInput(8 * listLength, "Invalid NBT Data: Expected doubles for list");
|
|
126
|
-
for (let i = 0; i < listLength; i++) {
|
|
127
|
-
backingList.add(this.readDoubleValue());
|
|
128
|
-
}
|
|
129
|
-
break;
|
|
130
|
-
case NBTDefinitions.NBTDefinitions.TAG_BYTE_ARRAY:
|
|
131
|
-
for (let i = 0; i < listLength; i++) {
|
|
132
|
-
backingList.add(this.readByteArrayValue());
|
|
133
|
-
}
|
|
134
|
-
break;
|
|
135
|
-
case NBTDefinitions.NBTDefinitions.TAG_STRING:
|
|
136
|
-
for (let i = 0; i < listLength; i++) {
|
|
137
|
-
backingList.add(this.readStringValue());
|
|
138
|
-
}
|
|
139
|
-
break;
|
|
140
|
-
case NBTDefinitions.NBTDefinitions.TAG_LIST:
|
|
141
|
-
for (let i = 0; i < listLength; i++) {
|
|
142
|
-
backingList.add(this.readTagListValue());
|
|
143
|
-
}
|
|
144
|
-
break;
|
|
145
|
-
case NBTDefinitions.NBTDefinitions.TAG_COMPOUND:
|
|
146
|
-
for (let i = 0; i < listLength; i++) {
|
|
147
|
-
backingList.add(this.readTagCompoundValue());
|
|
148
|
-
}
|
|
149
|
-
break;
|
|
150
|
-
case NBTDefinitions.NBTDefinitions.TAG_INT_ARRAY:
|
|
151
|
-
for (let i = 0; i < listLength; i++) {
|
|
152
|
-
backingList.add(this.readIntArrayValue());
|
|
153
|
-
}
|
|
154
|
-
break;
|
|
155
|
-
default:
|
|
156
|
-
throw new Error(`Invalid NBT Data: Unknown tag <${listType}>`);
|
|
157
|
-
}
|
|
158
|
-
return backingList;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
exports.default = NBTReader;
|
|
163
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTkJUUmVhZGVyLmNqcy5janMiLCJzb3VyY2VzIjpbIi4uL3NyYy9OQlRSZWFkZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuaW1wb3J0IHsgQWxsb2NhdGlvbiB9IGZyb20gJy4vQWxsb2NhdGlvbic7XG5pbXBvcnQgdHlwZSBCaW5hcnlTdHJlYW0gZnJvbSAnQGpzcHJpc21hcmluZS9qc2JpbmFyeXV0aWxzJztcbmltcG9ydCB0eXBlIHsgQnl0ZU9yZGVyIH0gZnJvbSAnLi9CeXRlT3JkZXInO1xuaW1wb3J0IHsgTkJURGVmaW5pdGlvbnMgfSBmcm9tICcuL05CVERlZmluaXRpb25zJztcbmltcG9ydCBOQlRTdHJlYW1SZWFkZXIgZnJvbSAnLi9OQlRTdHJlYW1SZWFkZXInO1xuaW1wb3J0IE5CVFRhZ0NvbXBvdW5kIGZyb20gJy4vTkJUVGFnQ29tcG91bmQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOQlRSZWFkZXIgZXh0ZW5kcyBOQlRTdHJlYW1SZWFkZXIge1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihpbnB1dDogQmluYXJ5U3RyZWFtLCBieXRlT3JkZXI6IEJ5dGVPcmRlcikge1xuICAgICAgICBzdXBlcihpbnB1dCwgYnl0ZU9yZGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGFyc2VMaXN0PFRhZ1R5cGU+KCk6IFNldDxUYWdUeXBlPiB7XG4gICAgICAgIHRoaXMuZXhwZWN0SW5wdXQodGhpcy5pc1VzaW5nVmFyaW50KCkgPyAyIDogMywgJ0ludmFsaWQgTkJUIERhdGE6IE5vdCBlbm91Z2ggZGF0YSB0byByZWFkIG5ldyB0YWcnLCBmYWxzZSk7XG4gICAgICAgIGlmICh0aGlzLnJlYWRCeXRlVmFsdWUoKS5nZXRWYWx1ZSgpICE9PSBOQlREZWZpbml0aW9ucy5UQUdfTElTVCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIE5CVCBEYXRhOiBOb3QgbGlzdCB0YWcgZm91bmQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmVhZFN0cmluZ1ZhbHVlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLnJlYWRUYWdMaXN0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGFyc2UoKTogTkJUVGFnQ29tcG91bmQge1xuICAgICAgICB0aGlzLmV4cGVjdElucHV0KHRoaXMuaXNVc2luZ1ZhcmludCgpID8gMiA6IDMsICdJbnZhbGlkIE5CVCBEYXRhOiBOb3QgZW5vdWdoIGRhdGEgdG8gcmVhZCBuZXcgdGFnJywgZmFsc2UpO1xuICAgICAgICBpZiAodGhpcy5yZWFkQnl0ZVZhbHVlKCkuZ2V0VmFsdWUoKSAhPT0gTkJURGVmaW5pdGlvbnMuVEFHX0NPTVBPVU5EKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgTkJUIERhdGE6IE5vIHJvb3QgdGFnIGZvdW5kJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuYW1lOiBzdHJpbmcgPSB0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCk7XG4gICAgICAgIGNvbnN0IHJvb3Q6IE5CVFRhZ0NvbXBvdW5kID0gdGhpcy5yZWFkVGFnQ29tcG91bmRWYWx1ZSgpO1xuICAgICAgICByb290LnNldE5hbWUobmFtZSk7XG4gICAgICAgIHJldHVybiByb290O1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZFRhZ0NvbXBvdW5kVmFsdWUoKTogTkJUVGFnQ29tcG91bmQge1xuICAgICAgICB0aGlzLmFsdGVyQWxsb2NhdGlvbkxpbWl0KEFsbG9jYXRpb24uQ09NUE9VTkQpO1xuICAgICAgICBjb25zdCBjb21wb3VuZDogTkJUVGFnQ29tcG91bmQgPSBuZXcgTkJUVGFnQ29tcG91bmQoKTtcbiAgICAgICAgdGhpcy5leHBlY3RJbnB1dCgxLCAnSW52YWxpZCBOQlQgRGF0YTogRXhwZWN0ZWQgVGFnIElEIGluIGNvbXBvdW5kIHRhZycsIGZhbHNlKTtcblxuICAgICAgICBsZXQgdGFnSUQgPSB0aGlzLnJlYWRCeXRlVmFsdWUoKS5nZXRWYWx1ZSgpO1xuICAgICAgICB3aGlsZSAodGFnSUQgIT09IE5CVERlZmluaXRpb25zLlRBR19FTkQpIHtcbiAgICAgICAgICAgIHN3aXRjaCAodGFnSUQpIHtcbiAgICAgICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19CWVRFOlxuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRWYWx1ZSh0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCksIHRoaXMucmVhZEJ5dGVWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfU0hPUlQ6XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kLmFkZFZhbHVlKHRoaXMucmVhZFN0cmluZ1ZhbHVlKCkuZ2V0VmFsdWUoKSwgdGhpcy5yZWFkU2hvcnRWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfSU5UOlxuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRWYWx1ZSh0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCksIHRoaXMucmVhZEludFZhbHVlKCkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19MT05HOlxuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRWYWx1ZSh0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCksIHRoaXMucmVhZExvbmdWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfRkxPQVQ6XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kLmFkZFZhbHVlKHRoaXMucmVhZFN0cmluZ1ZhbHVlKCkuZ2V0VmFsdWUoKSwgdGhpcy5yZWFkRmxvYXRWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfRE9VQkxFOlxuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRWYWx1ZSh0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCksIHRoaXMucmVhZERvdWJsZVZhbHVlKCkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19CWVRFX0FSUkFZOlxuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRWYWx1ZSh0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCksIHRoaXMucmVhZEJ5dGVBcnJheVZhbHVlKCkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19TVFJJTkc6XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kLmFkZFZhbHVlKHRoaXMucmVhZFN0cmluZ1ZhbHVlKCkuZ2V0VmFsdWUoKSwgdGhpcy5yZWFkU3RyaW5nVmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTkJURGVmaW5pdGlvbnMuVEFHX0xJU1Q6XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kLmFkZFZhbHVlKHRoaXMucmVhZFN0cmluZ1ZhbHVlKCkuZ2V0VmFsdWUoKSwgdGhpcy5yZWFkVGFnTGlzdFZhbHVlKCkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19DT01QT1VORDpcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmFtZTogc3RyaW5nID0gdGhpcy5yZWFkU3RyaW5nVmFsdWUoKS5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZDogTkJUVGFnQ29tcG91bmQgPSB0aGlzLnJlYWRUYWdDb21wb3VuZFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLnNldE5hbWUobmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kLmFkZENoaWxkKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfSU5UX0FSUkFZOlxuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRWYWx1ZSh0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCksIHRoaXMucmVhZEludEFycmF5VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBOQlQgRGF0YTogVW5rbm93biB0YWcgPCR7dGFnSUR9PmApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmV4cGVjdElucHV0KDEsICdJbnZhbGlkIE5CVCBEYXRhOiBFeHBlY3RlZCB0YWcgSUQgaW4gdGFnIGNvbXBvdW5kJywgZmFsc2UpO1xuICAgICAgICAgICAgdGFnSUQgPSB0aGlzLnJlYWRCeXRlVmFsdWUoKS5nZXRWYWx1ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbXBvdW5kO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZFRhZ0xpc3RWYWx1ZSgpOiBTZXQ8YW55PiB7XG4gICAgICAgIHRoaXMuZXhwZWN0SW5wdXQodGhpcy5pc1VzaW5nVmFyaW50KCkgPyAyIDogNSwgJ0ludmFsaWQgTkJUIERhdGE6IEV4cGVjdGVkIFRBR0xpc3QgaGVhZGVyJywgZmFsc2UpO1xuICAgICAgICBjb25zdCBsaXN0VHlwZTogbnVtYmVyID0gdGhpcy5yZWFkQnl0ZVZhbHVlKCkuZ2V0VmFsdWUoKTtcbiAgICAgICAgbGV0IGxpc3RMZW5ndGg6IG51bWJlciA9IHRoaXMucmVhZEludFZhbHVlKCkuZ2V0VmFsdWUoKTtcblxuICAgICAgICB0aGlzLmFsdGVyQWxsb2NhdGlvbkxpbWl0KEFsbG9jYXRpb24uQVJSQVlfTElTVCk7XG4gICAgICAgIHRoaXMuYWx0ZXJBbGxvY2F0aW9uTGltaXQoQWxsb2NhdGlvbi5SRUZFUkVOQ0UpO1xuXG4gICAgICAgIGNvbnN0IGJhY2tpbmdMaXN0OiBTZXQ8YW55PiA9IG5ldyBTZXQoKTtcblxuICAgICAgICBzd2l0Y2ggKGxpc3RUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19FTkQ6XG4gICAgICAgICAgICAgICAgbGlzdExlbmd0aCA9IDA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19CWVRFOlxuICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0SW5wdXQobGlzdExlbmd0aCwgJ0ludmFsaWQgTkJUIERhdGE6IEV4cGVjdGVkIGJ5dGVzIGZvciBsaXN0Jyk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2luZ0xpc3QuYWRkKHRoaXMucmVhZFNob3J0VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19TSE9SVDpcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdElucHV0KDIgKiBsaXN0TGVuZ3RoLCAnSW52YWxpZCBOQlQgRGF0YTogRXhwZWN0ZWQgc2hvcnRzIGZvciBsaXN0Jyk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2luZ0xpc3QuYWRkKHRoaXMucmVhZFNob3J0VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19JTlQ6XG4gICAgICAgICAgICAgICAgdGhpcy5leHBlY3RJbnB1dCg0ICogbGlzdExlbmd0aCwgJ0ludmFsaWQgTkJUIERhdGE6IEV4cGVjdGVkIGludHMgZm9yIGxpc3QnKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3RMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBiYWNraW5nTGlzdC5hZGQodGhpcy5yZWFkSW50VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19MT05HOlxuICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0SW5wdXQoOCAqIGxpc3RMZW5ndGgsICdJbnZhbGlkIE5CVCBEYXRhOiBFeHBlY3RlZCBsb25ncyBmb3IgbGlzdCcpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tpbmdMaXN0LmFkZCh0aGlzLnJlYWRMb25nVmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19GTE9BVDpcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdElucHV0KDQgKiBsaXN0TGVuZ3RoLCAnSW52YWxpZCBOQlQgRGF0YTogRXhwZWN0ZWQgZmxvYXRzIGZvciBsaXN0Jyk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2luZ0xpc3QuYWRkKHRoaXMucmVhZEZsb2F0VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19ET1VCTEU6XG4gICAgICAgICAgICAgICAgdGhpcy5leHBlY3RJbnB1dCg4ICogbGlzdExlbmd0aCwgJ0ludmFsaWQgTkJUIERhdGE6IEV4cGVjdGVkIGRvdWJsZXMgZm9yIGxpc3QnKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3RMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBiYWNraW5nTGlzdC5hZGQodGhpcy5yZWFkRG91YmxlVmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19CWVRFX0FSUkFZOlxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tpbmdMaXN0LmFkZCh0aGlzLnJlYWRCeXRlQXJyYXlWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTkJURGVmaW5pdGlvbnMuVEFHX1NUUklORzpcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3RMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBiYWNraW5nTGlzdC5hZGQodGhpcy5yZWFkU3RyaW5nVmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19MSVNUOlxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tpbmdMaXN0LmFkZCh0aGlzLnJlYWRUYWdMaXN0VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19DT01QT1VORDpcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3RMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBiYWNraW5nTGlzdC5hZGQodGhpcy5yZWFkVGFnQ29tcG91bmRWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgTkJURGVmaW5pdGlvbnMuVEFHX0lOVF9BUlJBWTpcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3RMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBiYWNraW5nTGlzdC5hZGQodGhpcy5yZWFkSW50QXJyYXlWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIE5CVCBEYXRhOiBVbmtub3duIHRhZyA8JHtsaXN0VHlwZX0+YCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYmFja2luZ0xpc3Q7XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbIk5CVFN0cmVhbVJlYWRlciIsIk5CVERlZmluaXRpb25zIiwiQWxsb2NhdGlvbiIsIk5CVFRhZ0NvbXBvdW5kIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFRQSxNQUFxQixrQkFBa0JBLHVCQUFnQixDQUFBO0FBQUEsRUFDNUMsV0FBQSxDQUFZLE9BQXFCLFNBQXNCLEVBQUE7QUFDMUQs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
|
package/dist/NBTReader.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { default as BinaryStream } from '@jsprismarine/jsbinaryutils';
|
|
2
|
-
import { ByteOrder } from './ByteOrder';
|
|
3
|
-
import { default as NBTStreamReader } from './NBTStreamReader';
|
|
4
|
-
import { default as NBTTagCompound } from './NBTTagCompound';
|
|
5
|
-
export default class NBTReader extends NBTStreamReader {
|
|
6
|
-
constructor(input: BinaryStream, byteOrder: ByteOrder);
|
|
7
|
-
parseList<TagType>(): Set<TagType>;
|
|
8
|
-
parse(): NBTTagCompound;
|
|
9
|
-
private readTagCompoundValue;
|
|
10
|
-
private readTagListValue;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=NBTReader.d.ts.map
|
package/dist/NBTReader.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NBTReader.d.ts","sourceRoot":"","sources":["../src/NBTReader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,YAAY,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,eAAe;gBAC/B,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS;IAIrD,SAAS,CAAC,OAAO,KAAK,GAAG,CAAC,OAAO,CAAC;IAUlC,KAAK,IAAI,cAAc;IAY9B,OAAO,CAAC,oBAAoB;IAuD5B,OAAO,CAAC,gBAAgB;CA4F3B"}
|
package/dist/NBTReader.es.js
DELETED
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
import { Allocation } from './Allocation.es.js';
|
|
2
|
-
import { NBTDefinitions } from './NBTDefinitions.es.js';
|
|
3
|
-
import NBTStreamReader from './NBTStreamReader.es.js';
|
|
4
|
-
import NBTTagCompound from './NBTTagCompound.es.js';
|
|
5
|
-
|
|
6
|
-
class NBTReader extends NBTStreamReader {
|
|
7
|
-
constructor(input, byteOrder) {
|
|
8
|
-
super(input, byteOrder);
|
|
9
|
-
}
|
|
10
|
-
parseList() {
|
|
11
|
-
this.expectInput(this.isUsingVarint() ? 2 : 3, "Invalid NBT Data: Not enough data to read new tag", false);
|
|
12
|
-
if (this.readByteValue().getValue() !== NBTDefinitions.TAG_LIST) {
|
|
13
|
-
throw new Error("Invalid NBT Data: Not list tag found");
|
|
14
|
-
}
|
|
15
|
-
this.readStringValue();
|
|
16
|
-
return this.readTagListValue();
|
|
17
|
-
}
|
|
18
|
-
parse() {
|
|
19
|
-
this.expectInput(this.isUsingVarint() ? 2 : 3, "Invalid NBT Data: Not enough data to read new tag", false);
|
|
20
|
-
if (this.readByteValue().getValue() !== NBTDefinitions.TAG_COMPOUND) {
|
|
21
|
-
throw new Error("Invalid NBT Data: No root tag found");
|
|
22
|
-
}
|
|
23
|
-
const name = this.readStringValue().getValue();
|
|
24
|
-
const root = this.readTagCompoundValue();
|
|
25
|
-
root.setName(name);
|
|
26
|
-
return root;
|
|
27
|
-
}
|
|
28
|
-
readTagCompoundValue() {
|
|
29
|
-
this.alterAllocationLimit(Allocation.COMPOUND);
|
|
30
|
-
const compound = new NBTTagCompound();
|
|
31
|
-
this.expectInput(1, "Invalid NBT Data: Expected Tag ID in compound tag", false);
|
|
32
|
-
let tagID = this.readByteValue().getValue();
|
|
33
|
-
while (tagID !== NBTDefinitions.TAG_END) {
|
|
34
|
-
switch (tagID) {
|
|
35
|
-
case NBTDefinitions.TAG_BYTE:
|
|
36
|
-
compound.addValue(this.readStringValue().getValue(), this.readByteValue());
|
|
37
|
-
break;
|
|
38
|
-
case NBTDefinitions.TAG_SHORT:
|
|
39
|
-
compound.addValue(this.readStringValue().getValue(), this.readShortValue());
|
|
40
|
-
break;
|
|
41
|
-
case NBTDefinitions.TAG_INT:
|
|
42
|
-
compound.addValue(this.readStringValue().getValue(), this.readIntValue());
|
|
43
|
-
break;
|
|
44
|
-
case NBTDefinitions.TAG_LONG:
|
|
45
|
-
compound.addValue(this.readStringValue().getValue(), this.readLongValue());
|
|
46
|
-
break;
|
|
47
|
-
case NBTDefinitions.TAG_FLOAT:
|
|
48
|
-
compound.addValue(this.readStringValue().getValue(), this.readFloatValue());
|
|
49
|
-
break;
|
|
50
|
-
case NBTDefinitions.TAG_DOUBLE:
|
|
51
|
-
compound.addValue(this.readStringValue().getValue(), this.readDoubleValue());
|
|
52
|
-
break;
|
|
53
|
-
case NBTDefinitions.TAG_BYTE_ARRAY:
|
|
54
|
-
compound.addValue(this.readStringValue().getValue(), this.readByteArrayValue());
|
|
55
|
-
break;
|
|
56
|
-
case NBTDefinitions.TAG_STRING:
|
|
57
|
-
compound.addValue(this.readStringValue().getValue(), this.readStringValue());
|
|
58
|
-
break;
|
|
59
|
-
case NBTDefinitions.TAG_LIST:
|
|
60
|
-
compound.addValue(this.readStringValue().getValue(), this.readTagListValue());
|
|
61
|
-
break;
|
|
62
|
-
case NBTDefinitions.TAG_COMPOUND:
|
|
63
|
-
const name = this.readStringValue().getValue();
|
|
64
|
-
const child = this.readTagCompoundValue();
|
|
65
|
-
child.setName(name);
|
|
66
|
-
compound.addChild(child);
|
|
67
|
-
break;
|
|
68
|
-
case NBTDefinitions.TAG_INT_ARRAY:
|
|
69
|
-
compound.addValue(this.readStringValue().getValue(), this.readIntArrayValue());
|
|
70
|
-
break;
|
|
71
|
-
default:
|
|
72
|
-
throw new Error(`Invalid NBT Data: Unknown tag <${tagID}>`);
|
|
73
|
-
}
|
|
74
|
-
this.expectInput(1, "Invalid NBT Data: Expected tag ID in tag compound", false);
|
|
75
|
-
tagID = this.readByteValue().getValue();
|
|
76
|
-
}
|
|
77
|
-
return compound;
|
|
78
|
-
}
|
|
79
|
-
readTagListValue() {
|
|
80
|
-
this.expectInput(this.isUsingVarint() ? 2 : 5, "Invalid NBT Data: Expected TAGList header", false);
|
|
81
|
-
const listType = this.readByteValue().getValue();
|
|
82
|
-
let listLength = this.readIntValue().getValue();
|
|
83
|
-
this.alterAllocationLimit(Allocation.ARRAY_LIST);
|
|
84
|
-
this.alterAllocationLimit(Allocation.REFERENCE);
|
|
85
|
-
const backingList = /* @__PURE__ */ new Set();
|
|
86
|
-
switch (listType) {
|
|
87
|
-
case NBTDefinitions.TAG_END:
|
|
88
|
-
listLength = 0;
|
|
89
|
-
break;
|
|
90
|
-
case NBTDefinitions.TAG_BYTE:
|
|
91
|
-
this.expectInput(listLength, "Invalid NBT Data: Expected bytes for list");
|
|
92
|
-
for (let i = 0; i < listLength; i++) {
|
|
93
|
-
backingList.add(this.readShortValue());
|
|
94
|
-
}
|
|
95
|
-
break;
|
|
96
|
-
case NBTDefinitions.TAG_SHORT:
|
|
97
|
-
this.expectInput(2 * listLength, "Invalid NBT Data: Expected shorts for list");
|
|
98
|
-
for (let i = 0; i < listLength; i++) {
|
|
99
|
-
backingList.add(this.readShortValue());
|
|
100
|
-
}
|
|
101
|
-
break;
|
|
102
|
-
case NBTDefinitions.TAG_INT:
|
|
103
|
-
this.expectInput(4 * listLength, "Invalid NBT Data: Expected ints for list");
|
|
104
|
-
for (let i = 0; i < listLength; i++) {
|
|
105
|
-
backingList.add(this.readIntValue());
|
|
106
|
-
}
|
|
107
|
-
break;
|
|
108
|
-
case NBTDefinitions.TAG_LONG:
|
|
109
|
-
this.expectInput(8 * listLength, "Invalid NBT Data: Expected longs for list");
|
|
110
|
-
for (let i = 0; i < listLength; i++) {
|
|
111
|
-
backingList.add(this.readLongValue());
|
|
112
|
-
}
|
|
113
|
-
break;
|
|
114
|
-
case NBTDefinitions.TAG_FLOAT:
|
|
115
|
-
this.expectInput(4 * listLength, "Invalid NBT Data: Expected floats for list");
|
|
116
|
-
for (let i = 0; i < listLength; i++) {
|
|
117
|
-
backingList.add(this.readFloatValue());
|
|
118
|
-
}
|
|
119
|
-
break;
|
|
120
|
-
case NBTDefinitions.TAG_DOUBLE:
|
|
121
|
-
this.expectInput(8 * listLength, "Invalid NBT Data: Expected doubles for list");
|
|
122
|
-
for (let i = 0; i < listLength; i++) {
|
|
123
|
-
backingList.add(this.readDoubleValue());
|
|
124
|
-
}
|
|
125
|
-
break;
|
|
126
|
-
case NBTDefinitions.TAG_BYTE_ARRAY:
|
|
127
|
-
for (let i = 0; i < listLength; i++) {
|
|
128
|
-
backingList.add(this.readByteArrayValue());
|
|
129
|
-
}
|
|
130
|
-
break;
|
|
131
|
-
case NBTDefinitions.TAG_STRING:
|
|
132
|
-
for (let i = 0; i < listLength; i++) {
|
|
133
|
-
backingList.add(this.readStringValue());
|
|
134
|
-
}
|
|
135
|
-
break;
|
|
136
|
-
case NBTDefinitions.TAG_LIST:
|
|
137
|
-
for (let i = 0; i < listLength; i++) {
|
|
138
|
-
backingList.add(this.readTagListValue());
|
|
139
|
-
}
|
|
140
|
-
break;
|
|
141
|
-
case NBTDefinitions.TAG_COMPOUND:
|
|
142
|
-
for (let i = 0; i < listLength; i++) {
|
|
143
|
-
backingList.add(this.readTagCompoundValue());
|
|
144
|
-
}
|
|
145
|
-
break;
|
|
146
|
-
case NBTDefinitions.TAG_INT_ARRAY:
|
|
147
|
-
for (let i = 0; i < listLength; i++) {
|
|
148
|
-
backingList.add(this.readIntArrayValue());
|
|
149
|
-
}
|
|
150
|
-
break;
|
|
151
|
-
default:
|
|
152
|
-
throw new Error(`Invalid NBT Data: Unknown tag <${listType}>`);
|
|
153
|
-
}
|
|
154
|
-
return backingList;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
export { NBTReader as default };
|
|
159
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTkJUUmVhZGVyLmVzLmpzIiwic291cmNlcyI6WyIuLi9zcmMvTkJUUmVhZGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbmltcG9ydCB7IEFsbG9jYXRpb24gfSBmcm9tICcuL0FsbG9jYXRpb24nO1xuaW1wb3J0IHR5cGUgQmluYXJ5U3RyZWFtIGZyb20gJ0Bqc3ByaXNtYXJpbmUvanNiaW5hcnl1dGlscyc7XG5pbXBvcnQgdHlwZSB7IEJ5dGVPcmRlciB9IGZyb20gJy4vQnl0ZU9yZGVyJztcbmltcG9ydCB7IE5CVERlZmluaXRpb25zIH0gZnJvbSAnLi9OQlREZWZpbml0aW9ucyc7XG5pbXBvcnQgTkJUU3RyZWFtUmVhZGVyIGZyb20gJy4vTkJUU3RyZWFtUmVhZGVyJztcbmltcG9ydCBOQlRUYWdDb21wb3VuZCBmcm9tICcuL05CVFRhZ0NvbXBvdW5kJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTkJUUmVhZGVyIGV4dGVuZHMgTkJUU3RyZWFtUmVhZGVyIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaW5wdXQ6IEJpbmFyeVN0cmVhbSwgYnl0ZU9yZGVyOiBCeXRlT3JkZXIpIHtcbiAgICAgICAgc3VwZXIoaW5wdXQsIGJ5dGVPcmRlcik7XG4gICAgfVxuXG4gICAgcHVibGljIHBhcnNlTGlzdDxUYWdUeXBlPigpOiBTZXQ8VGFnVHlwZT4ge1xuICAgICAgICB0aGlzLmV4cGVjdElucHV0KHRoaXMuaXNVc2luZ1ZhcmludCgpID8gMiA6IDMsICdJbnZhbGlkIE5CVCBEYXRhOiBOb3QgZW5vdWdoIGRhdGEgdG8gcmVhZCBuZXcgdGFnJywgZmFsc2UpO1xuICAgICAgICBpZiAodGhpcy5yZWFkQnl0ZVZhbHVlKCkuZ2V0VmFsdWUoKSAhPT0gTkJURGVmaW5pdGlvbnMuVEFHX0xJU1QpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBOQlQgRGF0YTogTm90IGxpc3QgdGFnIGZvdW5kJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5yZWFkVGFnTGlzdFZhbHVlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHBhcnNlKCk6IE5CVFRhZ0NvbXBvdW5kIHtcbiAgICAgICAgdGhpcy5leHBlY3RJbnB1dCh0aGlzLmlzVXNpbmdWYXJpbnQoKSA/IDIgOiAzLCAnSW52YWxpZCBOQlQgRGF0YTogTm90IGVub3VnaCBkYXRhIHRvIHJlYWQgbmV3IHRhZycsIGZhbHNlKTtcbiAgICAgICAgaWYgKHRoaXMucmVhZEJ5dGVWYWx1ZSgpLmdldFZhbHVlKCkgIT09IE5CVERlZmluaXRpb25zLlRBR19DT01QT1VORCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIE5CVCBEYXRhOiBObyByb290IHRhZyBmb3VuZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmFtZTogc3RyaW5nID0gdGhpcy5yZWFkU3RyaW5nVmFsdWUoKS5nZXRWYWx1ZSgpO1xuICAgICAgICBjb25zdCByb290OiBOQlRUYWdDb21wb3VuZCA9IHRoaXMucmVhZFRhZ0NvbXBvdW5kVmFsdWUoKTtcbiAgICAgICAgcm9vdC5zZXROYW1lKG5hbWUpO1xuICAgICAgICByZXR1cm4gcm9vdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRUYWdDb21wb3VuZFZhbHVlKCk6IE5CVFRhZ0NvbXBvdW5kIHtcbiAgICAgICAgdGhpcy5hbHRlckFsbG9jYXRpb25MaW1pdChBbGxvY2F0aW9uLkNPTVBPVU5EKTtcbiAgICAgICAgY29uc3QgY29tcG91bmQ6IE5CVFRhZ0NvbXBvdW5kID0gbmV3IE5CVFRhZ0NvbXBvdW5kKCk7XG4gICAgICAgIHRoaXMuZXhwZWN0SW5wdXQoMSwgJ0ludmFsaWQgTkJUIERhdGE6IEV4cGVjdGVkIFRhZyBJRCBpbiBjb21wb3VuZCB0YWcnLCBmYWxzZSk7XG5cbiAgICAgICAgbGV0IHRhZ0lEID0gdGhpcy5yZWFkQnl0ZVZhbHVlKCkuZ2V0VmFsdWUoKTtcbiAgICAgICAgd2hpbGUgKHRhZ0lEICE9PSBOQlREZWZpbml0aW9ucy5UQUdfRU5EKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRhZ0lEKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfQllURTpcbiAgICAgICAgICAgICAgICAgICAgY29tcG91bmQuYWRkVmFsdWUodGhpcy5yZWFkU3RyaW5nVmFsdWUoKS5nZXRWYWx1ZSgpLCB0aGlzLnJlYWRCeXRlVmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTkJURGVmaW5pdGlvbnMuVEFHX1NIT1JUOlxuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRWYWx1ZSh0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCksIHRoaXMucmVhZFNob3J0VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTkJURGVmaW5pdGlvbnMuVEFHX0lOVDpcbiAgICAgICAgICAgICAgICAgICAgY29tcG91bmQuYWRkVmFsdWUodGhpcy5yZWFkU3RyaW5nVmFsdWUoKS5nZXRWYWx1ZSgpLCB0aGlzLnJlYWRJbnRWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfTE9ORzpcbiAgICAgICAgICAgICAgICAgICAgY29tcG91bmQuYWRkVmFsdWUodGhpcy5yZWFkU3RyaW5nVmFsdWUoKS5nZXRWYWx1ZSgpLCB0aGlzLnJlYWRMb25nVmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTkJURGVmaW5pdGlvbnMuVEFHX0ZMT0FUOlxuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRWYWx1ZSh0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCksIHRoaXMucmVhZEZsb2F0VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTkJURGVmaW5pdGlvbnMuVEFHX0RPVUJMRTpcbiAgICAgICAgICAgICAgICAgICAgY29tcG91bmQuYWRkVmFsdWUodGhpcy5yZWFkU3RyaW5nVmFsdWUoKS5nZXRWYWx1ZSgpLCB0aGlzLnJlYWREb3VibGVWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfQllURV9BUlJBWTpcbiAgICAgICAgICAgICAgICAgICAgY29tcG91bmQuYWRkVmFsdWUodGhpcy5yZWFkU3RyaW5nVmFsdWUoKS5nZXRWYWx1ZSgpLCB0aGlzLnJlYWRCeXRlQXJyYXlWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfU1RSSU5HOlxuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRWYWx1ZSh0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCksIHRoaXMucmVhZFN0cmluZ1ZhbHVlKCkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19MSVNUOlxuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRWYWx1ZSh0aGlzLnJlYWRTdHJpbmdWYWx1ZSgpLmdldFZhbHVlKCksIHRoaXMucmVhZFRhZ0xpc3RWYWx1ZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfQ09NUE9VTkQ6XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hbWU6IHN0cmluZyA9IHRoaXMucmVhZFN0cmluZ1ZhbHVlKCkuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGQ6IE5CVFRhZ0NvbXBvdW5kID0gdGhpcy5yZWFkVGFnQ29tcG91bmRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICBjaGlsZC5zZXROYW1lKG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBjb21wb3VuZC5hZGRDaGlsZChjaGlsZCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTkJURGVmaW5pdGlvbnMuVEFHX0lOVF9BUlJBWTpcbiAgICAgICAgICAgICAgICAgICAgY29tcG91bmQuYWRkVmFsdWUodGhpcy5yZWFkU3RyaW5nVmFsdWUoKS5nZXRWYWx1ZSgpLCB0aGlzLnJlYWRJbnRBcnJheVZhbHVlKCkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgTkJUIERhdGE6IFVua25vd24gdGFnIDwke3RhZ0lEfT5gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5leHBlY3RJbnB1dCgxLCAnSW52YWxpZCBOQlQgRGF0YTogRXhwZWN0ZWQgdGFnIElEIGluIHRhZyBjb21wb3VuZCcsIGZhbHNlKTtcbiAgICAgICAgICAgIHRhZ0lEID0gdGhpcy5yZWFkQnl0ZVZhbHVlKCkuZ2V0VmFsdWUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb21wb3VuZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlYWRUYWdMaXN0VmFsdWUoKTogU2V0PGFueT4ge1xuICAgICAgICB0aGlzLmV4cGVjdElucHV0KHRoaXMuaXNVc2luZ1ZhcmludCgpID8gMiA6IDUsICdJbnZhbGlkIE5CVCBEYXRhOiBFeHBlY3RlZCBUQUdMaXN0IGhlYWRlcicsIGZhbHNlKTtcbiAgICAgICAgY29uc3QgbGlzdFR5cGU6IG51bWJlciA9IHRoaXMucmVhZEJ5dGVWYWx1ZSgpLmdldFZhbHVlKCk7XG4gICAgICAgIGxldCBsaXN0TGVuZ3RoOiBudW1iZXIgPSB0aGlzLnJlYWRJbnRWYWx1ZSgpLmdldFZhbHVlKCk7XG5cbiAgICAgICAgdGhpcy5hbHRlckFsbG9jYXRpb25MaW1pdChBbGxvY2F0aW9uLkFSUkFZX0xJU1QpO1xuICAgICAgICB0aGlzLmFsdGVyQWxsb2NhdGlvbkxpbWl0KEFsbG9jYXRpb24uUkVGRVJFTkNFKTtcblxuICAgICAgICBjb25zdCBiYWNraW5nTGlzdDogU2V0PGFueT4gPSBuZXcgU2V0KCk7XG5cbiAgICAgICAgc3dpdGNoIChsaXN0VHlwZSkge1xuICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfRU5EOlxuICAgICAgICAgICAgICAgIGxpc3RMZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfQllURTpcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdElucHV0KGxpc3RMZW5ndGgsICdJbnZhbGlkIE5CVCBEYXRhOiBFeHBlY3RlZCBieXRlcyBmb3IgbGlzdCcpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tpbmdMaXN0LmFkZCh0aGlzLnJlYWRTaG9ydFZhbHVlKCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfU0hPUlQ6XG4gICAgICAgICAgICAgICAgdGhpcy5leHBlY3RJbnB1dCgyICogbGlzdExlbmd0aCwgJ0ludmFsaWQgTkJUIERhdGE6IEV4cGVjdGVkIHNob3J0cyBmb3IgbGlzdCcpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tpbmdMaXN0LmFkZCh0aGlzLnJlYWRTaG9ydFZhbHVlKCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfSU5UOlxuICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0SW5wdXQoNCAqIGxpc3RMZW5ndGgsICdJbnZhbGlkIE5CVCBEYXRhOiBFeHBlY3RlZCBpbnRzIGZvciBsaXN0Jyk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2luZ0xpc3QuYWRkKHRoaXMucmVhZEludFZhbHVlKCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfTE9ORzpcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGVjdElucHV0KDggKiBsaXN0TGVuZ3RoLCAnSW52YWxpZCBOQlQgRGF0YTogRXhwZWN0ZWQgbG9uZ3MgZm9yIGxpc3QnKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3RMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBiYWNraW5nTGlzdC5hZGQodGhpcy5yZWFkTG9uZ1ZhbHVlKCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfRkxPQVQ6XG4gICAgICAgICAgICAgICAgdGhpcy5leHBlY3RJbnB1dCg0ICogbGlzdExlbmd0aCwgJ0ludmFsaWQgTkJUIERhdGE6IEV4cGVjdGVkIGZsb2F0cyBmb3IgbGlzdCcpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdExlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tpbmdMaXN0LmFkZCh0aGlzLnJlYWRGbG9hdFZhbHVlKCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfRE9VQkxFOlxuICAgICAgICAgICAgICAgIHRoaXMuZXhwZWN0SW5wdXQoOCAqIGxpc3RMZW5ndGgsICdJbnZhbGlkIE5CVCBEYXRhOiBFeHBlY3RlZCBkb3VibGVzIGZvciBsaXN0Jyk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2luZ0xpc3QuYWRkKHRoaXMucmVhZERvdWJsZVZhbHVlKCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfQllURV9BUlJBWTpcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3RMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBiYWNraW5nTGlzdC5hZGQodGhpcy5yZWFkQnl0ZUFycmF5VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19TVFJJTkc6XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2luZ0xpc3QuYWRkKHRoaXMucmVhZFN0cmluZ1ZhbHVlKCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfTElTVDpcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3RMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBiYWNraW5nTGlzdC5hZGQodGhpcy5yZWFkVGFnTGlzdFZhbHVlKCkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBOQlREZWZpbml0aW9ucy5UQUdfQ09NUE9VTkQ6XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2luZ0xpc3QuYWRkKHRoaXMucmVhZFRhZ0NvbXBvdW5kVmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIE5CVERlZmluaXRpb25zLlRBR19JTlRfQVJSQVk6XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0TGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2luZ0xpc3QuYWRkKHRoaXMucmVhZEludEFycmF5VmFsdWUoKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBOQlQgRGF0YTogVW5rbm93biB0YWcgPCR7bGlzdFR5cGV9PmApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJhY2tpbmdMaXN0O1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVFBLE1BQXFCLGtCQUFrQixlQUFnQixDQUFBO0FBQUEsRUFDNUMsV0FBQSxDQUFZLE9BQXFCLFNBQXNCLEVBQUE7QUFDMUQsSUFBQSxLQUFBLENBQU0sT0FBTyxTQUFTLENBQUE7QUFBQTtBQUMxQixFQUVPLFNBQW1DLEdBQUE7QUFDdEMsSUFBQSxJQUFB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
|