text-to-map 1.1.45 → 1.1.47
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/LICENSE +21 -21
- package/README.md +69 -69
- package/dist/bin/address-points.d.ts +1 -1
- package/dist/bin/address-points.js +16 -16
- package/dist/bin/cities.d.ts +1 -1
- package/dist/bin/cities.js +10 -10
- package/dist/bin/clear-all.d.ts +1 -1
- package/dist/bin/clear-all.js +13 -13
- package/dist/bin/constants.d.ts +2 -2
- package/dist/bin/constants.js +4 -4
- package/dist/bin/generate-syntax-diagrams.d.ts +1 -1
- package/dist/bin/generate-syntax-diagrams.js +20 -20
- package/dist/bin/init-db.d.ts +1 -1
- package/dist/bin/init-db.js +8 -8
- package/dist/bin/knex.d.ts +1 -1
- package/dist/bin/knex.js +10 -10
- package/dist/bin/parse-ordinance.d.ts +1 -1
- package/dist/bin/parse-ordinance.js +74 -74
- package/dist/bin/polygons.d.ts +1 -1
- package/dist/bin/polygons.js +27 -27
- package/dist/bin/regions.d.ts +1 -1
- package/dist/bin/regions.js +10 -10
- package/dist/bin/schools.d.ts +1 -1
- package/dist/bin/schools.js +10 -10
- package/dist/bin/streets.d.ts +1 -1
- package/dist/bin/streets.js +19 -19
- package/dist/bin/sync-all.d.ts +1 -1
- package/dist/bin/sync-all.js +4 -4
- package/dist/db/address-points.d.ts +59 -59
- package/dist/db/address-points.js +401 -399
- package/dist/db/cities.d.ts +7 -7
- package/dist/db/cities.js +95 -95
- package/dist/db/db.d.ts +37 -37
- package/dist/db/db.js +191 -191
- package/dist/db/founders.d.ts +14 -14
- package/dist/db/founders.js +461 -461
- package/dist/db/meta.d.ts +4 -4
- package/dist/db/meta.js +26 -26
- package/dist/db/migrations/20230704125715_initial.js +304 -304
- package/dist/db/migrations/20230731232915_city_positions.js +13 -13
- package/dist/db/migrations/20240106224603_city_polygon.js +11 -11
- package/dist/db/migrations/20240320200534_district_polygon.js +11 -11
- package/dist/db/migrations/20250316162700_kindergartens.js +12 -12
- package/dist/db/regions.d.ts +31 -31
- package/dist/db/regions.js +81 -81
- package/dist/db/schools.d.ts +7 -7
- package/dist/db/schools.js +95 -95
- package/dist/db/street-sync.d.ts +6 -6
- package/dist/db/street-sync.js +22 -22
- package/dist/db/sync-log.d.ts +9 -9
- package/dist/db/sync-log.js +66 -66
- package/dist/db/types.d.ts +59 -59
- package/dist/db/types.js +26 -26
- package/dist/index.d.ts +23 -23
- package/dist/index.js +32 -32
- package/dist/open-data-sync/address-points.d.ts +2 -2
- package/dist/open-data-sync/address-points.js +68 -68
- package/dist/open-data-sync/cities.d.ts +2 -2
- package/dist/open-data-sync/cities.js +32 -32
- package/dist/open-data-sync/common.d.ts +2 -2
- package/dist/open-data-sync/common.js +22 -22
- package/dist/open-data-sync/regions.d.ts +2 -2
- package/dist/open-data-sync/regions.js +37 -37
- package/dist/open-data-sync/schools.d.ts +3 -3
- package/dist/open-data-sync/schools.js +207 -207
- package/dist/open-data-sync/streets.d.ts +2 -2
- package/dist/open-data-sync/streets.js +132 -132
- package/dist/smd-to-csv/json-to-csv.d.ts +1 -1
- package/dist/smd-to-csv/json-to-csv.js +154 -154
- package/dist/smd-to-csv/ordinance-to-csv-rules.d.ts +1 -1
- package/dist/smd-to-csv/ordinance-to-csv-rules.js +23 -23
- package/dist/smd-to-csv/txt-to-json.d.ts +1 -1
- package/dist/smd-to-csv/txt-to-json.js +92 -92
- package/dist/souradnice.csv +6260 -6260
- package/dist/street-markdown/municipality.d.ts +11 -11
- package/dist/street-markdown/municipality.js +116 -116
- package/dist/street-markdown/polygons.d.ts +7 -7
- package/dist/street-markdown/polygons.js +261 -261
- package/dist/street-markdown/roman-numerals.d.ts +1 -1
- package/dist/street-markdown/roman-numerals.js +68 -68
- package/dist/street-markdown/smd-line-parser.d.ts +4 -4
- package/dist/street-markdown/smd-line-parser.js +40 -40
- package/dist/street-markdown/smd-parser.d.ts +23 -23
- package/dist/street-markdown/smd-parser.js +393 -393
- package/dist/street-markdown/smd.d.ts +24 -24
- package/dist/street-markdown/smd.js +440 -440
- package/dist/street-markdown/token-definition.d.ts +25 -25
- package/dist/street-markdown/token-definition.js +168 -168
- package/dist/street-markdown/types.d.ts +148 -148
- package/dist/street-markdown/types.js +13 -13
- package/dist/utils/atom.d.ts +2 -2
- package/dist/utils/atom.js +57 -57
- package/dist/utils/helpers.d.ts +28 -28
- package/dist/utils/helpers.js +176 -176
- package/dist/utils/jtsk2wgs84.d.ts +17 -17
- package/dist/utils/jtsk2wgs84.js +82 -82
- package/package.json +109 -109
|
@@ -1,92 +1,92 @@
|
|
|
1
|
-
import { createReadStream } from "fs";
|
|
2
|
-
import { once } from "events";
|
|
3
|
-
import { createInterface } from "readline";
|
|
4
|
-
const pattern = /^([^ –,-]+([ –-][^ ,–-]+)*)( [–-] (lichá č.|sudá č.|č.|č. p.)( (\d+[a-zA-Z]? ?[–-] ?\d+[a-zA-Z]?|(od )?\d+[a-zA-Z]?( a)? výše|\d+[a-zA-Z]?)((, ?| ?a ?)(\d+[a-zA-Z]? ?[–-] ?\d+[a-zA-Z]?|(od )?\d+[a-zA-Z]?( a)? výše|\d+[a-zA-Z]?))*)?((, ?| ?a ?)(lichá č.|sudá č.|č.|č. p.)( (\d+[a-zA-Z]? ?[–-] ?\d+[a-zA-Z]?|(od )?\d+[a-zA-Z]?( a)? výše|\d+[a-zA-Z]?)((, ?| ?a ?)(\d+[a-zA-Z]? ?[–-] ?\d+[a-zA-Z]?|(od )?\d+[a-zA-Z]?( a)? výše|\d+[a-zA-Z]?))*)?)*)?$/;
|
|
5
|
-
function getNewDistrict(name) {
|
|
6
|
-
return {
|
|
7
|
-
name: name,
|
|
8
|
-
schools: [],
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
function getNewSchool(name) {
|
|
12
|
-
return {
|
|
13
|
-
name: name,
|
|
14
|
-
lines: [],
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
export async function getParsedDistricts(filePath) {
|
|
18
|
-
const rl = createInterface({
|
|
19
|
-
input: createReadStream(filePath),
|
|
20
|
-
});
|
|
21
|
-
let lineNumber = 1;
|
|
22
|
-
let districts = [];
|
|
23
|
-
let currentDistrict = null;
|
|
24
|
-
let currentSchool = null;
|
|
25
|
-
rl.on("line", function (line) {
|
|
26
|
-
let s = line
|
|
27
|
-
.trim()
|
|
28
|
-
.replace(/ +(?= )/g, "")
|
|
29
|
-
.replace(/–/g, "-")
|
|
30
|
-
.replace(/nábř\./g, "nábřeží")
|
|
31
|
-
.replace(/Nábř\./g, "Nábřeží")
|
|
32
|
-
.replace(/nám\./g, "náměstí")
|
|
33
|
-
.replace(/Nám\./g, "Náměstí");
|
|
34
|
-
if (s[0] == "#") {
|
|
35
|
-
if (currentSchool != null) {
|
|
36
|
-
if (currentDistrict == null) {
|
|
37
|
-
currentDistrict = getNewDistrict("");
|
|
38
|
-
}
|
|
39
|
-
currentDistrict.schools.push(currentSchool);
|
|
40
|
-
currentSchool = null;
|
|
41
|
-
}
|
|
42
|
-
if (currentDistrict != null) {
|
|
43
|
-
districts.push(currentDistrict);
|
|
44
|
-
}
|
|
45
|
-
currentDistrict = getNewDistrict(s.substring(1).trim());
|
|
46
|
-
currentSchool = null;
|
|
47
|
-
}
|
|
48
|
-
else if (s == "") {
|
|
49
|
-
if (currentSchool != null) {
|
|
50
|
-
if (currentDistrict == null) {
|
|
51
|
-
currentDistrict = getNewDistrict("");
|
|
52
|
-
}
|
|
53
|
-
currentDistrict.schools.push(currentSchool);
|
|
54
|
-
currentSchool = null;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
if (currentSchool == null) {
|
|
59
|
-
currentSchool = getNewSchool(s);
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
if (s[0] == "!") {
|
|
63
|
-
currentSchool.lines.push(s);
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
if (pattern.test(s)) {
|
|
67
|
-
currentSchool.lines.push(s);
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
console.error("Invalid street line on line " + lineNumber + ": " + s);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
lineNumber++;
|
|
76
|
-
});
|
|
77
|
-
rl.on("close", function () {
|
|
78
|
-
if (currentSchool != null) {
|
|
79
|
-
if (currentDistrict == null) {
|
|
80
|
-
currentDistrict = getNewDistrict("");
|
|
81
|
-
}
|
|
82
|
-
currentDistrict.schools.push(currentSchool);
|
|
83
|
-
}
|
|
84
|
-
if (currentDistrict != null) {
|
|
85
|
-
districts.push(currentDistrict);
|
|
86
|
-
}
|
|
87
|
-
// console.log(JSON.stringify(districts));
|
|
88
|
-
});
|
|
89
|
-
await once(rl, "close");
|
|
90
|
-
return districts;
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { createReadStream } from "fs";
|
|
2
|
+
import { once } from "events";
|
|
3
|
+
import { createInterface } from "readline";
|
|
4
|
+
const pattern = /^([^ –,-]+([ –-][^ ,–-]+)*)( [–-] (lichá č.|sudá č.|č.|č. p.)( (\d+[a-zA-Z]? ?[–-] ?\d+[a-zA-Z]?|(od )?\d+[a-zA-Z]?( a)? výše|\d+[a-zA-Z]?)((, ?| ?a ?)(\d+[a-zA-Z]? ?[–-] ?\d+[a-zA-Z]?|(od )?\d+[a-zA-Z]?( a)? výše|\d+[a-zA-Z]?))*)?((, ?| ?a ?)(lichá č.|sudá č.|č.|č. p.)( (\d+[a-zA-Z]? ?[–-] ?\d+[a-zA-Z]?|(od )?\d+[a-zA-Z]?( a)? výše|\d+[a-zA-Z]?)((, ?| ?a ?)(\d+[a-zA-Z]? ?[–-] ?\d+[a-zA-Z]?|(od )?\d+[a-zA-Z]?( a)? výše|\d+[a-zA-Z]?))*)?)*)?$/;
|
|
5
|
+
function getNewDistrict(name) {
|
|
6
|
+
return {
|
|
7
|
+
name: name,
|
|
8
|
+
schools: [],
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
function getNewSchool(name) {
|
|
12
|
+
return {
|
|
13
|
+
name: name,
|
|
14
|
+
lines: [],
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export async function getParsedDistricts(filePath) {
|
|
18
|
+
const rl = createInterface({
|
|
19
|
+
input: createReadStream(filePath),
|
|
20
|
+
});
|
|
21
|
+
let lineNumber = 1;
|
|
22
|
+
let districts = [];
|
|
23
|
+
let currentDistrict = null;
|
|
24
|
+
let currentSchool = null;
|
|
25
|
+
rl.on("line", function (line) {
|
|
26
|
+
let s = line
|
|
27
|
+
.trim()
|
|
28
|
+
.replace(/ +(?= )/g, "")
|
|
29
|
+
.replace(/–/g, "-")
|
|
30
|
+
.replace(/nábř\./g, "nábřeží")
|
|
31
|
+
.replace(/Nábř\./g, "Nábřeží")
|
|
32
|
+
.replace(/nám\./g, "náměstí")
|
|
33
|
+
.replace(/Nám\./g, "Náměstí");
|
|
34
|
+
if (s[0] == "#") {
|
|
35
|
+
if (currentSchool != null) {
|
|
36
|
+
if (currentDistrict == null) {
|
|
37
|
+
currentDistrict = getNewDistrict("");
|
|
38
|
+
}
|
|
39
|
+
currentDistrict.schools.push(currentSchool);
|
|
40
|
+
currentSchool = null;
|
|
41
|
+
}
|
|
42
|
+
if (currentDistrict != null) {
|
|
43
|
+
districts.push(currentDistrict);
|
|
44
|
+
}
|
|
45
|
+
currentDistrict = getNewDistrict(s.substring(1).trim());
|
|
46
|
+
currentSchool = null;
|
|
47
|
+
}
|
|
48
|
+
else if (s == "") {
|
|
49
|
+
if (currentSchool != null) {
|
|
50
|
+
if (currentDistrict == null) {
|
|
51
|
+
currentDistrict = getNewDistrict("");
|
|
52
|
+
}
|
|
53
|
+
currentDistrict.schools.push(currentSchool);
|
|
54
|
+
currentSchool = null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
if (currentSchool == null) {
|
|
59
|
+
currentSchool = getNewSchool(s);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
if (s[0] == "!") {
|
|
63
|
+
currentSchool.lines.push(s);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
if (pattern.test(s)) {
|
|
67
|
+
currentSchool.lines.push(s);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
console.error("Invalid street line on line " + lineNumber + ": " + s);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
lineNumber++;
|
|
76
|
+
});
|
|
77
|
+
rl.on("close", function () {
|
|
78
|
+
if (currentSchool != null) {
|
|
79
|
+
if (currentDistrict == null) {
|
|
80
|
+
currentDistrict = getNewDistrict("");
|
|
81
|
+
}
|
|
82
|
+
currentDistrict.schools.push(currentSchool);
|
|
83
|
+
}
|
|
84
|
+
if (currentDistrict != null) {
|
|
85
|
+
districts.push(currentDistrict);
|
|
86
|
+
}
|
|
87
|
+
// console.log(JSON.stringify(districts));
|
|
88
|
+
});
|
|
89
|
+
await once(rl, "close");
|
|
90
|
+
return districts;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHh0LXRvLWpzb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc21kLXRvLWNzdi90eHQtdG8tanNvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDdEMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTNDLE1BQU0sT0FBTyxHQUNYLCtiQUErYixDQUFDO0FBRWxjLFNBQVMsY0FBYyxDQUFDLElBQUk7SUFDMUIsT0FBTztRQUNMLElBQUksRUFBRSxJQUFJO1FBQ1YsT0FBTyxFQUFFLEVBQUU7S0FDWixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLElBQUk7SUFDeEIsT0FBTztRQUNMLElBQUksRUFBRSxJQUFJO1FBQ1YsS0FBSyxFQUFFLEVBQUU7S0FDVixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsa0JBQWtCLENBQUMsUUFBUTtJQUMvQyxNQUFNLEVBQUUsR0FBRyxlQUFlLENBQUM7UUFDekIsS0FBSyxFQUFFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQztLQUNsQyxDQUFDLENBQUM7SUFFSCxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDbkIsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ25CLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQztJQUMzQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFFekIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxJQUFJO1FBQzFCLElBQUksQ0FBQyxHQUFHLElBQUk7YUFDVCxJQUFJLEVBQUU7YUFDTixPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQzthQUN2QixPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQzthQUNsQixPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQzthQUM3QixPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQzthQUM3QixPQUFPLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQzthQUM1QixPQUFPLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRWhDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRTtZQUNmLElBQUksYUFBYSxJQUFJLElBQUksRUFBRTtnQkFDekIsSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFO29CQUMzQixlQUFlLEdBQUcsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUN0QztnQkFDRCxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDNUMsYUFBYSxHQUFHLElBQUksQ0FBQzthQUN0QjtZQUVELElBQUksZUFBZSxJQUFJLElBQUksRUFBRTtnQkFDM0IsU0FBUyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUNqQztZQUVELGVBQWUsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBRXhELGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDdEI7YUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxhQUFhLElBQUksSUFBSSxFQUFFO2dCQUN6QixJQUFJLGVBQWUsSUFBSSxJQUFJLEVBQUU7b0JBQzNCLGVBQWUsR0FBRyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ3RDO2dCQUNELGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUM1QyxhQUFhLEdBQUcsSUFBSSxDQUFDO2FBQ3RCO1NBQ0Y7YUFBTTtZQUNMLElBQUksYUFBYSxJQUFJLElBQUksRUFBRTtnQkFDekIsYUFBYSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNqQztpQkFBTTtnQkFDTCxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUU7b0JBQ2YsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQzdCO3FCQUFNO29CQUNMLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDbkIsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQzdCO3lCQUFNO3dCQUNMLE9BQU8sQ0FBQyxLQUFLLENBQ1gsOEJBQThCLEdBQUcsVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLENBQ3ZELENBQUM7cUJBQ0g7aUJBQ0Y7YUFDRjtTQUNGO1FBRUQsVUFBVSxFQUFFLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFO1FBQ2IsSUFBSSxhQUFhLElBQUksSUFBSSxFQUFFO1lBQ3pCLElBQUksZUFBZSxJQUFJLElBQUksRUFBRTtnQkFDM0IsZUFBZSxHQUFHLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN0QztZQUNELGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzdDO1FBRUQsSUFBSSxlQUFlLElBQUksSUFBSSxFQUFFO1lBQzNCLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDakM7UUFFRCwwQ0FBMEM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEIsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlYWRTdHJlYW0gfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IG9uY2UgfSBmcm9tIFwiZXZlbnRzXCI7XG5pbXBvcnQgeyBjcmVhdGVJbnRlcmZhY2UgfSBmcm9tIFwicmVhZGxpbmVcIjtcblxuY29uc3QgcGF0dGVybiA9XG4gIC9eKFteIOKAkywtXSsoWyDigJMtXVteICzigJMtXSspKikoIFvigJMtXSAobGljaMOhIMSNLnxzdWTDoSDEjS58xI0ufMSNLiBwLikoIChcXGQrW2EtekEtWl0/ID9b4oCTLV0gP1xcZCtbYS16QS1aXT98KG9kICk/XFxkK1thLXpBLVpdPyggYSk/IHbDvcWhZXxcXGQrW2EtekEtWl0/KSgoLCA/fCA/YSA/KShcXGQrW2EtekEtWl0/ID9b4oCTLV0gP1xcZCtbYS16QS1aXT98KG9kICk/XFxkK1thLXpBLVpdPyggYSk/IHbDvcWhZXxcXGQrW2EtekEtWl0/KSkqKT8oKCwgP3wgP2EgPykobGljaMOhIMSNLnxzdWTDoSDEjS58xI0ufMSNLiBwLikoIChcXGQrW2EtekEtWl0/ID9b4oCTLV0gP1xcZCtbYS16QS1aXT98KG9kICk/XFxkK1thLXpBLVpdPyggYSk/IHbDvcWhZXxcXGQrW2EtekEtWl0/KSgoLCA/fCA/YSA/KShcXGQrW2EtekEtWl0/ID9b4oCTLV0gP1xcZCtbYS16QS1aXT98KG9kICk/XFxkK1thLXpBLVpdPyggYSk/IHbDvcWhZXxcXGQrW2EtekEtWl0/KSkqKT8pKik/JC87XG5cbmZ1bmN0aW9uIGdldE5ld0Rpc3RyaWN0KG5hbWUpIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBuYW1lLFxuICAgIHNjaG9vbHM6IFtdLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXROZXdTY2hvb2wobmFtZSkge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IG5hbWUsXG4gICAgbGluZXM6IFtdLFxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UGFyc2VkRGlzdHJpY3RzKGZpbGVQYXRoKSB7XG4gIGNvbnN0IHJsID0gY3JlYXRlSW50ZXJmYWNlKHtcbiAgICBpbnB1dDogY3JlYXRlUmVhZFN0cmVhbShmaWxlUGF0aCksXG4gIH0pO1xuXG4gIGxldCBsaW5lTnVtYmVyID0gMTtcbiAgbGV0IGRpc3RyaWN0cyA9IFtdO1xuICBsZXQgY3VycmVudERpc3RyaWN0ID0gbnVsbDtcbiAgbGV0IGN1cnJlbnRTY2hvb2wgPSBudWxsO1xuXG4gIHJsLm9uKFwibGluZVwiLCBmdW5jdGlvbiAobGluZSkge1xuICAgIGxldCBzID0gbGluZVxuICAgICAgLnRyaW0oKVxuICAgICAgLnJlcGxhY2UoLyArKD89ICkvZywgXCJcIilcbiAgICAgIC5yZXBsYWNlKC/igJMvZywgXCItXCIpXG4gICAgICAucmVwbGFjZSgvbsOhYsWZXFwuL2csIFwibsOhYsWZZcW+w61cIilcbiAgICAgIC5yZXBsYWNlKC9Ow6FixZlcXC4vZywgXCJOw6FixZllxb7DrVwiKVxuICAgICAgLnJlcGxhY2UoL27DoW1cXC4vZywgXCJuw6FtxJtzdMOtXCIpXG4gICAgICAucmVwbGFjZSgvTsOhbVxcLi9nLCBcIk7DoW3Em3N0w61cIik7XG5cbiAgICBpZiAoc1swXSA9PSBcIiNcIikge1xuICAgICAgaWYgKGN1cnJlbnRTY2hvb2wgIT0gbnVsbCkge1xuICAgICAgICBpZiAoY3VycmVudERpc3RyaWN0ID09IG51bGwpIHtcbiAgICAgICAgICBjdXJyZW50RGlzdHJpY3QgPSBnZXROZXdEaXN0cmljdChcIlwiKTtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50RGlzdHJpY3Quc2Nob29scy5wdXNoKGN1cnJlbnRTY2hvb2wpO1xuICAgICAgICBjdXJyZW50U2Nob29sID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKGN1cnJlbnREaXN0cmljdCAhPSBudWxsKSB7XG4gICAgICAgIGRpc3RyaWN0cy5wdXNoKGN1cnJlbnREaXN0cmljdCk7XG4gICAgICB9XG5cbiAgICAgIGN1cnJlbnREaXN0cmljdCA9IGdldE5ld0Rpc3RyaWN0KHMuc3Vic3RyaW5nKDEpLnRyaW0oKSk7XG5cbiAgICAgIGN1cnJlbnRTY2hvb2wgPSBudWxsO1xuICAgIH0gZWxzZSBpZiAocyA9PSBcIlwiKSB7XG4gICAgICBpZiAoY3VycmVudFNjaG9vbCAhPSBudWxsKSB7XG4gICAgICAgIGlmIChjdXJyZW50RGlzdHJpY3QgPT0gbnVsbCkge1xuICAgICAgICAgIGN1cnJlbnREaXN0cmljdCA9IGdldE5ld0Rpc3RyaWN0KFwiXCIpO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnREaXN0cmljdC5zY2hvb2xzLnB1c2goY3VycmVudFNjaG9vbCk7XG4gICAgICAgIGN1cnJlbnRTY2hvb2wgPSBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoY3VycmVudFNjaG9vbCA9PSBudWxsKSB7XG4gICAgICAgIGN1cnJlbnRTY2hvb2wgPSBnZXROZXdTY2hvb2wocyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc1swXSA9PSBcIiFcIikge1xuICAgICAgICAgIGN1cnJlbnRTY2hvb2wubGluZXMucHVzaChzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAocGF0dGVybi50ZXN0KHMpKSB7XG4gICAgICAgICAgICBjdXJyZW50U2Nob29sLmxpbmVzLnB1c2gocyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiSW52YWxpZCBzdHJlZXQgbGluZSBvbiBsaW5lIFwiICsgbGluZU51bWJlciArIFwiOiBcIiArIHNcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGluZU51bWJlcisrO1xuICB9KTtcblxuICBybC5vbihcImNsb3NlXCIsIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoY3VycmVudFNjaG9vbCAhPSBudWxsKSB7XG4gICAgICBpZiAoY3VycmVudERpc3RyaWN0ID09IG51bGwpIHtcbiAgICAgICAgY3VycmVudERpc3RyaWN0ID0gZ2V0TmV3RGlzdHJpY3QoXCJcIik7XG4gICAgICB9XG4gICAgICBjdXJyZW50RGlzdHJpY3Quc2Nob29scy5wdXNoKGN1cnJlbnRTY2hvb2wpO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50RGlzdHJpY3QgIT0gbnVsbCkge1xuICAgICAgZGlzdHJpY3RzLnB1c2goY3VycmVudERpc3RyaWN0KTtcbiAgICB9XG5cbiAgICAvLyBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShkaXN0cmljdHMpKTtcbiAgfSk7XG5cbiAgYXdhaXQgb25jZShybCwgXCJjbG9zZVwiKTtcbiAgcmV0dXJuIGRpc3RyaWN0cztcbn1cbiJdfQ==
|