text-to-map 1.1.34 → 1.1.36

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.
@@ -0,0 +1,12 @@
1
+ import { SchoolType } from "../types";
2
+ export async function up(knex) {
3
+ await knex.schema.alterTable("school", (t) => {
4
+ t.tinyint("type", 2).defaultTo(SchoolType.Elementary);
5
+ });
6
+ }
7
+ export async function down(knex) {
8
+ await knex.schema.alterTable("city", (t) => {
9
+ t.dropColumn("type");
10
+ });
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjAyNTAzMTYxNjI3MDBfa2luZGVyZ2FydGVucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kYi9taWdyYXRpb25zLzIwMjUwMzE2MTYyNzAwX2tpbmRlcmdhcnRlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV0QyxNQUFNLENBQUMsS0FBSyxVQUFVLEVBQUUsQ0FBQyxJQUFVO0lBQ2pDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDM0MsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4RCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLElBQUksQ0FBQyxJQUFVO0lBQ25DLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDekMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2QixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLbmV4IH0gZnJvbSBcImtuZXhcIjtcclxuaW1wb3J0IHsgU2Nob29sVHlwZSB9IGZyb20gXCIuLi90eXBlc1wiO1xyXG5cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHVwKGtuZXg6IEtuZXgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICBhd2FpdCBrbmV4LnNjaGVtYS5hbHRlclRhYmxlKFwic2Nob29sXCIsICh0KSA9PiB7XHJcbiAgICB0LnRpbnlpbnQoXCJ0eXBlXCIsIDIpLmRlZmF1bHRUbyhTY2hvb2xUeXBlLkVsZW1lbnRhcnkpO1xyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZG93bihrbmV4OiBLbmV4KSB7XHJcbiAgYXdhaXQga25leC5zY2hlbWEuYWx0ZXJUYWJsZShcImNpdHlcIiwgKHQpID0+IHtcclxuICAgIHQuZHJvcENvbHVtbihcInR5cGVcIik7XHJcbiAgfSk7XHJcbn1cclxuIl19
@@ -18,7 +18,8 @@ export const insertSchools = async (schools) => {
18
18
  school.redizo,
19
19
  school.name,
20
20
  school.capacity.toString(),
21
- ]), "school", ["izo", "redizo", "name", "capacity"]);
21
+ school.type.toString(),
22
+ ]), "school", ["izo", "redizo", "name", "capacity", "type"]);
22
23
  const locations = toInsert
23
24
  .filter((school) => school.locations.length > 0)
24
25
  .map((school) => [
@@ -67,4 +68,4 @@ const filterOutDuplicates = (schools) => {
67
68
  return !duplicate;
68
69
  });
69
70
  };
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nob29scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYi9zY2hvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3JELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQUUsT0FBaUIsRUFBbUIsRUFBRTtJQUN4RSxNQUFNLElBQUksR0FBRyxTQUFTLEVBQUUsQ0FBQztJQUV6QixNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRCxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQy9ELENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUNqQixDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FDbkMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQzlDLENBQUM7SUFDRixNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDL0MsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQ2pDLENBQUM7SUFFRixLQUFLLE1BQU0sTUFBTSxJQUFJLFFBQVEsRUFBRTtRQUM3QixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMs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QUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxTQUFTLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTFFLE1BQU0sQ0FBQyxJQUFJLENBQ1QsY0FBYyxDQUNaLG1CQUFtQixJQUFJLCtCQUErQixTQUFTLElBQUksRUFDbkUsSUFBSSxDQUNMLENBQ0YsQ0FBQztJQUVGLE9BQU8sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQzNDLENBQUMsQ0FBQztBQUVGLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxPQUFpQixFQUFZLEVBQUU7SUFDMUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN6QixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUMvQixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QixPQUFPLENBQUMsU0FBUyxDQUFDO0lBQ3BCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgd2hvbGVMaW5lRXJyb3IgfSBmcm9tIFwiLi4vc3RyZWV0LW1hcmtkb3duL3NtZFwiO1xyXG5pbXBvcnQgeyBTbWRFcnJvciB9IGZyb20gXCIuLi9zdHJlZXQtbWFya2Rvd24vdHlwZXNcIjtcclxuaW1wb3J0IHsgZmluZENsb3Nlc3RTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMvaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBnZXRLbmV4RGIsIGluc2VydE11bHRpcGxlUm93cyB9IGZyb20gXCIuL2RiXCI7XHJcbmltcG9ydCB7IFNjaG9vbCB9IGZyb20gXCIuL3R5cGVzXCI7XHJcblxyXG5leHBvcnQgY29uc3QgaW5zZXJ0U2Nob29scyA9IGFzeW5jIChzY2hvb2xzOiBTY2hvb2xbXSk6IFByb21pc2U8bnVtYmVyPiA9PiB7XHJcbiAgY29uc3Qga25leCA9IGdldEtuZXhEYigpO1xyXG5cclxuICBjb25zdCB1bmlxdWVTY2hvb2xzID0gZmlsdGVyT3V0RHVwbGljYXRlcyhzY2hvb2xzKTtcclxuICBjb25zdCBleGlzdGluZ0l6byA9IChhd2FpdCBrbmV4LnNlbGVjdChcIml6b1wiKS5mcm9tKFwic2Nob29sXCIpKS5tYXAoXHJcbiAgICAocm93KSA9PiByb3cuaXpvXHJcbiAgKTtcclxuXHJcbiAgY29uc3QgdG9JbnNlcnQgPSB1bmlxdWVTY2hvb2xzLmZpbHRlcihcclxuICAgIChzY2hvb2wpID0+ICFleGlzdGluZ0l6by5pbmNsdWRlcyhzY2hvb2wuaXpvKVxyXG4gICk7XHJcbiAgY29uc3QgdG9VcGRhdGUgPSB1bmlxdWVTY2hvb2xzLmZpbHRlcigoc2Nob29sKSA9PlxyXG4gICAgZXhpc3RpbmdJem8uaW5jbHVkZXMoc2Nob29sLml6bylcclxuICApO1xyXG5cclxuICBmb3IgKGNvbnN0IHNjaG9vbCBvZiB0b1VwZGF0ZSkge1xyXG4gICAgYXdhaXQga25leC5mcm9tKFwic2Nob29sXCIpLndoZXJlKFwiaXpvXCIsIHNjaG9vbC5pem8pLnVwZGF0ZSh7XHJcbiAgICAgIG5hbWU6IHNjaG9vbC5uYW1lLFxyXG4gICAgICBjYXBhY2l0eTogc2Nob29sLmNhcGFjaXR5LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBpbnNlcnRlZFNjaG9vbHMgPSBhd2FpdCBpbnNlcnRNdWx0aXBsZVJvd3MoXHJcbiAgICB0b0luc2VydC5tYXAoKHNjaG9vbCkgPT4gW1xyXG4gICAgICBzY2hvb2wuaXpvLFxyXG4gICAgICBzY2hvb2wucmVkaXpvLFxyXG4gICAgICBzY2hvb2wubmFtZSxcclxuICAgICAgc2Nob29sLmNhcGFjaXR5LnRvU3RyaW5nKCksXHJcbiAgICBdKSxcclxuICAgIFwic2Nob29sXCIsXHJcbiAgICBbXCJpem9cIiwgXCJyZWRpem9cIiwgXCJuYW1lXCIsIFwiY2FwYWNpdHlcIl1cclxuICApO1xyXG5cclxuICBjb25zdCBsb2NhdGlvbnMgPSB0b0luc2VydFxyXG4gICAgLmZpbHRlcigoc2Nob29sKSA9PiBzY2hvb2wubG9jYXRpb25zLmxlbmd0aCA+IDApXHJcbiAgICAubWFwKChzY2hvb2wpID0+IFtcclxuICAgICAgc2Nob29sLml6byxcclxuICAgICAgc2Nob29sLmxvY2F0aW9uc1swXS5hZGRyZXNzUG9pbnRJZC50b1N0cmluZygpLCAvLyBhZGQgb25seSBmaXJzdCBsb2NhdGlvblxyXG4gICAgXSk7XHJcblxyXG4gIGxldCBpbnNlcnRlZExvY2F0aW9ucyA9IDA7XHJcblxyXG4gIC8vIHBsdXMgZmlsdGVyIG91dCBkdXBsaWNhdGUgbG9jYXRpb25zIChzYW1lIGFkZHJlc3MgaWQgKyBpem8pXHJcbiAgZm9yIChjb25zdCBsb2NhdGlvbiBvZiBsb2NhdGlvbnMpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGluc2VydGVkTG9jYXRpb25zICs9IGF3YWl0IGluc2VydE11bHRpcGxlUm93cyhcclxuICAgICAgICBbbG9jYXRpb25dLFxyXG4gICAgICAgIFwic2Nob29sX2xvY2F0aW9uXCIsXHJcbiAgICAgICAgW1wic2Nob29sX2l6b1wiLCBcImFkZHJlc3NfcG9pbnRfaWRcIl0sXHJcbiAgICAgICAgdHJ1ZVxyXG4gICAgICApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5sb2coXHJcbiAgICAgICAgYENhbm5vdCBhZGQgbG9jYXRpb24gd2l0aCBSVUlBTiBjb2RlICR7bG9jYXRpb25bMV19IChzY2hvb2wgSVpPID0gJHtsb2NhdGlvblswXX0pOiBjb2RlIGRvZXMgbm90IGV4aXN0LmBcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiBpbnNlcnRlZFNjaG9vbHMgKyBpbnNlcnRlZExvY2F0aW9ucztcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBmaW5kU2Nob29sID0gKFxyXG4gIG5hbWU6IHN0cmluZyxcclxuICBzY2hvb2xzOiBTY2hvb2xbXSxcclxuICBtYXhEaXN0YW5jZT86IG51bWJlclxyXG4pOiB7IHNjaG9vbDogU2Nob29sIHwgbnVsbDsgZXJyb3JzOiBTbWRFcnJvcltdIH0gPT4ge1xyXG4gIGlmIChzY2hvb2xzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc2Nob29sOiBudWxsLFxyXG4gICAgICBlcnJvcnM6IFt3aG9sZUxpbmVFcnJvcihcIkFrdHXDoWxuw60gesWZaXpvdmF0ZWwgbmVtw6Egxb7DoWRuw6kgxaFrb2x5LlwiLCBuYW1lKV0sXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgY29uc3QgZXJyb3JzOiBTbWRFcnJvcltdID0gW107XHJcblxyXG4gIGNvbnN0IGV4YWN0U2Nob29sID0gc2Nob29scy5maW5kKChzY2hvb2wpID0+IHNjaG9vbC5uYW1lID09PSBuYW1lKTtcclxuICBpZiAoZXhhY3RTY2hvb2wpIHtcclxuICAgIHJldHVybiB7IHNjaG9vbDogZXhhY3RTY2hvb2wsIGVycm9ycyB9O1xyXG4gIH1cclxuXHJcbiAgY29uc3QgbmFtZXNMaXN0ID0gc2Nob29scy5tYXAoKHNjaG9vbCkgPT4gc2Nob29sLm5hbWUpO1xyXG4gIGNvbnN0IGJlc3RNYXRjaCA9IGZpbmRDbG9zZXN0U3RyaW5nKG5hbWUsIG5hbWVzTGlzdCwgbWF4RGlzdGFuY2UpO1xyXG4gIGlmIChiZXN0TWF0Y2ggPT09IG51bGwpIHtcclxuICAgIGVycm9ycy5wdXNoKHdob2xlTGluZUVycm9yKGDFoGtvbGEgcyBuw6F6dmVtICcke25hbWV9JyBuZWV4aXN0dWplLmAsIG5hbWUpKTtcclxuICAgIHJldHVybiB7IHNjaG9vbDogbnVsbCwgZXJyb3JzIH07XHJcbiAgfVxyXG4gIGNvbnN0IGNsb3Nlc3RTY2hvb2wgPSBzY2hvb2xzLmZpbmQoKHNjaG9vbCkgPT4gYmVzdE1hdGNoID09PSBzY2hvb2wubmFtZSk7XHJcblxyXG4gIGVycm9ycy5wdXNoKFxyXG4gICAgd2hvbGVMaW5lRXJyb3IoXHJcbiAgICAgIGDFoGtvbGEgcyBuw6F6dmVtICcke25hbWV9JyBuZWV4aXN0dWplLCBteXNsZWxpIGpzdGUgJyR7YmVzdE1hdGNofSc/YCxcclxuICAgICAgbmFtZVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIHJldHVybiB7IHNjaG9vbDogY2xvc2VzdFNjaG9vbCwgZXJyb3JzIH07XHJcbn07XHJcblxyXG5jb25zdCBmaWx0ZXJPdXREdXBsaWNhdGVzID0gKHNjaG9vbHM6IFNjaG9vbFtdKTogU2Nob29sW10gPT4ge1xyXG4gIGNvbnN0IGl6b1NldCA9IG5ldyBTZXQoKTtcclxuICByZXR1cm4gc2Nob29scy5maWx0ZXIoKHNjaG9vbCkgPT4ge1xyXG4gICAgY29uc3QgZHVwbGljYXRlID0gaXpvU2V0LmhhcyhzY2hvb2wuaXpvKTtcclxuICAgIGl6b1NldC5hZGQoc2Nob29sLml6byk7XHJcbiAgICByZXR1cm4gIWR1cGxpY2F0ZTtcclxuICB9KTtcclxufTtcclxuIl19
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nob29scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYi9zY2hvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3JELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQUUsT0FBaUIsRUFBbUIsRUFBRTtJQUN4RSxNQUFNLElBQUksR0FBRyxTQUFTLEVBQUUsQ0FBQztJQUV6QixNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRCxNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQy9ELENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUNqQixDQUFDO0lBRUYsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FDbkMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQzlDLENBQUM7SUFDRixNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDL0MsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQ2pDLENBQUM7SUFFRixLQUFLLE1BQU0sTUFBTSxJQUFJLFFBQVEsRUFBRTtRQUM3QixNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3hELElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7U0FDMUIsQ0FBQyxDQUFDO0tBQ0o7SUFFRCxNQUFNLGVBQWUsR0FBRyxNQUFNLGtCQUFrQixDQUM5QyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztRQUN2QixNQUFNLENBQUMsR0FBRztRQUNWLE1BQU0sQ0FBQyxNQUFNO1FBQ2IsTUFBTSxDQUFDLElBQUk7UUFDWCxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtRQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtLQUN2QixDQUFDLEVBQ0YsUUFBUSxFQUNSLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUM5QyxDQUFDO0lBRUYsTUFBTSxTQUFTLEdBQUcsUUFBUTtTQUN2QixNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztTQUMvQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQ2YsTUFBTSxDQUFDLEdBQUc7UUFDVixNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsRUFBRSwwQkFBMEI7S0FDMUUsQ0FBQyxDQUFDO0lBRUwsSUFBSSxpQkFBaUIsR0FBRyxDQUFDLENBQUM7SUFFMUIsOERBQThEO0lBQzlELEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxFQUFFO1FBQ2hDLElBQUk7WUFDRixpQkFBaUIsSUFBSSxNQUFNLGtCQUFrQixDQUMzQyxDQUFDLFFBQVEsQ0FBQyxFQUNWLGlCQUFpQixFQUNqQixDQUFDLFlBQVksRUFBRSxrQkFBa0IsQ0FBQyxFQUNsQyxJQUFJLENBQ0wsQ0FBQztTQUNIO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLENBQUMsR0FBRyxDQUNULHVDQUF1QyxRQUFRLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixRQUFRLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUN6RyxDQUFDO1NBQ0g7S0FDRjtJQUVELE9BQU8sZUFBZSxHQUFHLGlCQUFpQixDQUFDO0FBQzdDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUN4QixJQUFZLEVBQ1osT0FBaUIsRUFDakIsV0FBb0IsRUFDMkIsRUFBRTtJQUNqRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3hCLE9BQU87WUFDTCxNQUFNLEVBQUUsSUFBSTtZQUNaLE1BQU0sRUFBRSxDQUFDLGNBQWMsQ0FBQyx1Q0FBdUMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN4RSxDQUFDO0tBQ0g7SUFFRCxNQUFNLE1BQU0sR0FBZSxFQUFFLENBQUM7SUFFOUIsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztJQUNuRSxJQUFJLFdBQVcsRUFBRTtRQUNmLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDO0tBQ3hDO0lBRUQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sU0FBUyxHQUFHLGlCQUFpQixDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbEUsSUFBSSxTQUFTLEtBQUssSUFBSSxFQUFFO1FBQ3RCLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixJQUFJLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0tBQ2pDO0lBQ0QsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUUxRSxNQUFNLENBQUMsSUFBSSxDQUNULGNBQWMsQ0FDWixtQkFBbUIsSUFBSSwrQkFBK0IsU0FBUyxJQUFJLEVBQ25FLElBQUksQ0FDTCxDQUNGLENBQUM7SUFFRixPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLENBQUMsT0FBaUIsRUFBWSxFQUFFO0lBQzFELE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDekIsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDL0IsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkIsT0FBTyxDQUFDLFNBQVMsQ0FBQztJQUNwQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHdob2xlTGluZUVycm9yIH0gZnJvbSBcIi4uL3N0cmVldC1tYXJrZG93bi9zbWRcIjtcclxuaW1wb3J0IHsgU21kRXJyb3IgfSBmcm9tIFwiLi4vc3RyZWV0LW1hcmtkb3duL3R5cGVzXCI7XHJcbmltcG9ydCB7IGZpbmRDbG9zZXN0U3RyaW5nIH0gZnJvbSBcIi4uL3V0aWxzL2hlbHBlcnNcIjtcclxuaW1wb3J0IHsgZ2V0S25leERiLCBpbnNlcnRNdWx0aXBsZVJvd3MgfSBmcm9tIFwiLi9kYlwiO1xyXG5pbXBvcnQgeyBTY2hvb2wgfSBmcm9tIFwiLi90eXBlc1wiO1xyXG5cclxuZXhwb3J0IGNvbnN0IGluc2VydFNjaG9vbHMgPSBhc3luYyAoc2Nob29sczogU2Nob29sW10pOiBQcm9taXNlPG51bWJlcj4gPT4ge1xyXG4gIGNvbnN0IGtuZXggPSBnZXRLbmV4RGIoKTtcclxuXHJcbiAgY29uc3QgdW5pcXVlU2Nob29scyA9IGZpbHRlck91dER1cGxpY2F0ZXMoc2Nob29scyk7XHJcbiAgY29uc3QgZXhpc3RpbmdJem8gPSAoYXdhaXQga25leC5zZWxlY3QoXCJpem9cIikuZnJvbShcInNjaG9vbFwiKSkubWFwKFxyXG4gICAgKHJvdykgPT4gcm93Lml6b1xyXG4gICk7XHJcblxyXG4gIGNvbnN0IHRvSW5zZXJ0ID0gdW5pcXVlU2Nob29scy5maWx0ZXIoXHJcbiAgICAoc2Nob29sKSA9PiAhZXhpc3RpbmdJem8uaW5jbHVkZXMoc2Nob29sLml6bylcclxuICApO1xyXG4gIGNvbnN0IHRvVXBkYXRlID0gdW5pcXVlU2Nob29scy5maWx0ZXIoKHNjaG9vbCkgPT5cclxuICAgIGV4aXN0aW5nSXpvLmluY2x1ZGVzKHNjaG9vbC5pem8pXHJcbiAgKTtcclxuXHJcbiAgZm9yIChjb25zdCBzY2hvb2wgb2YgdG9VcGRhdGUpIHtcclxuICAgIGF3YWl0IGtuZXguZnJvbShcInNjaG9vbFwiKS53aGVyZShcIml6b1wiLCBzY2hvb2wuaXpvKS51cGRhdGUoe1xyXG4gICAgICBuYW1lOiBzY2hvb2wubmFtZSxcclxuICAgICAgY2FwYWNpdHk6IHNjaG9vbC5jYXBhY2l0eSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgaW5zZXJ0ZWRTY2hvb2xzID0gYXdhaXQgaW5zZXJ0TXVsdGlwbGVSb3dzKFxyXG4gICAgdG9JbnNlcnQubWFwKChzY2hvb2wpID0+IFtcclxuICAgICAgc2Nob29sLml6byxcclxuICAgICAgc2Nob29sLnJlZGl6byxcclxuICAgICAgc2Nob29sLm5hbWUsXHJcbiAgICAgIHNjaG9vbC5jYXBhY2l0eS50b1N0cmluZygpLFxyXG4gICAgICBzY2hvb2wudHlwZS50b1N0cmluZygpLFxyXG4gICAgXSksXHJcbiAgICBcInNjaG9vbFwiLFxyXG4gICAgW1wiaXpvXCIsIFwicmVkaXpvXCIsIFwibmFtZVwiLCBcImNhcGFjaXR5XCIsIFwidHlwZVwiXVxyXG4gICk7XHJcblxyXG4gIGNvbnN0IGxvY2F0aW9ucyA9IHRvSW5zZXJ0XHJcbiAgICAuZmlsdGVyKChzY2hvb2wpID0+IHNjaG9vbC5sb2NhdGlvbnMubGVuZ3RoID4gMClcclxuICAgIC5tYXAoKHNjaG9vbCkgPT4gW1xyXG4gICAgICBzY2hvb2wuaXpvLFxyXG4gICAgICBzY2hvb2wubG9jYXRpb25zWzBdLmFkZHJlc3NQb2ludElkLnRvU3RyaW5nKCksIC8vIGFkZCBvbmx5IGZpcnN0IGxvY2F0aW9uXHJcbiAgICBdKTtcclxuXHJcbiAgbGV0IGluc2VydGVkTG9jYXRpb25zID0gMDtcclxuXHJcbiAgLy8gcGx1cyBmaWx0ZXIgb3V0IGR1cGxpY2F0ZSBsb2NhdGlvbnMgKHNhbWUgYWRkcmVzcyBpZCArIGl6bylcclxuICBmb3IgKGNvbnN0IGxvY2F0aW9uIG9mIGxvY2F0aW9ucykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgaW5zZXJ0ZWRMb2NhdGlvbnMgKz0gYXdhaXQgaW5zZXJ0TXVsdGlwbGVSb3dzKFxyXG4gICAgICAgIFtsb2NhdGlvbl0sXHJcbiAgICAgICAgXCJzY2hvb2xfbG9jYXRpb25cIixcclxuICAgICAgICBbXCJzY2hvb2xfaXpvXCIsIFwiYWRkcmVzc19wb2ludF9pZFwiXSxcclxuICAgICAgICB0cnVlXHJcbiAgICAgICk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICBgQ2Fubm90IGFkZCBsb2NhdGlvbiB3aXRoIFJVSUFOIGNvZGUgJHtsb2NhdGlvblsxXX0gKHNjaG9vbCBJWk8gPSAke2xvY2F0aW9uWzBdfSk6IGNvZGUgZG9lcyBub3QgZXhpc3QuYFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIGluc2VydGVkU2Nob29scyArIGluc2VydGVkTG9jYXRpb25zO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGZpbmRTY2hvb2wgPSAoXHJcbiAgbmFtZTogc3RyaW5nLFxyXG4gIHNjaG9vbHM6IFNjaG9vbFtdLFxyXG4gIG1heERpc3RhbmNlPzogbnVtYmVyXHJcbik6IHsgc2Nob29sOiBTY2hvb2wgfCBudWxsOyBlcnJvcnM6IFNtZEVycm9yW10gfSA9PiB7XHJcbiAgaWYgKHNjaG9vbHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzY2hvb2w6IG51bGwsXHJcbiAgICAgIGVycm9yczogW3dob2xlTGluZUVycm9yKFwiQWt0dcOhbG7DrSB6xZlpem92YXRlbCBuZW3DoSDFvsOhZG7DqSDFoWtvbHkuXCIsIG5hbWUpXSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBjb25zdCBlcnJvcnM6IFNtZEVycm9yW10gPSBbXTtcclxuXHJcbiAgY29uc3QgZXhhY3RTY2hvb2wgPSBzY2hvb2xzLmZpbmQoKHNjaG9vbCkgPT4gc2Nob29sLm5hbWUgPT09IG5hbWUpO1xyXG4gIGlmIChleGFjdFNjaG9vbCkge1xyXG4gICAgcmV0dXJuIHsgc2Nob29sOiBleGFjdFNjaG9vbCwgZXJyb3JzIH07XHJcbiAgfVxyXG5cclxuICBjb25zdCBuYW1lc0xpc3QgPSBzY2hvb2xzLm1hcCgoc2Nob29sKSA9PiBzY2hvb2wubmFtZSk7XHJcbiAgY29uc3QgYmVzdE1hdGNoID0gZmluZENsb3Nlc3RTdHJpbmcobmFtZSwgbmFtZXNMaXN0LCBtYXhEaXN0YW5jZSk7XHJcbiAgaWYgKGJlc3RNYXRjaCA9PT0gbnVsbCkge1xyXG4gICAgZXJyb3JzLnB1c2god2hvbGVMaW5lRXJyb3IoYMWga29sYSBzIG7DoXp2ZW0gJyR7bmFtZX0nIG5lZXhpc3R1amUuYCwgbmFtZSkpO1xyXG4gICAgcmV0dXJuIHsgc2Nob29sOiBudWxsLCBlcnJvcnMgfTtcclxuICB9XHJcbiAgY29uc3QgY2xvc2VzdFNjaG9vbCA9IHNjaG9vbHMuZmluZCgoc2Nob29sKSA9PiBiZXN0TWF0Y2ggPT09IHNjaG9vbC5uYW1lKTtcclxuXHJcbiAgZXJyb3JzLnB1c2goXHJcbiAgICB3aG9sZUxpbmVFcnJvcihcclxuICAgICAgYMWga29sYSBzIG7DoXp2ZW0gJyR7bmFtZX0nIG5lZXhpc3R1amUsIG15c2xlbGkganN0ZSAnJHtiZXN0TWF0Y2h9Jz9gLFxyXG4gICAgICBuYW1lXHJcbiAgICApXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIHsgc2Nob29sOiBjbG9zZXN0U2Nob29sLCBlcnJvcnMgfTtcclxufTtcclxuXHJcbmNvbnN0IGZpbHRlck91dER1cGxpY2F0ZXMgPSAoc2Nob29sczogU2Nob29sW10pOiBTY2hvb2xbXSA9PiB7XHJcbiAgY29uc3QgaXpvU2V0ID0gbmV3IFNldCgpO1xyXG4gIHJldHVybiBzY2hvb2xzLmZpbHRlcigoc2Nob29sKSA9PiB7XHJcbiAgICBjb25zdCBkdXBsaWNhdGUgPSBpem9TZXQuaGFzKHNjaG9vbC5pem8pO1xyXG4gICAgaXpvU2V0LmFkZChzY2hvb2wuaXpvKTtcclxuICAgIHJldHVybiAhZHVwbGljYXRlO1xyXG4gIH0pO1xyXG59O1xyXG4iXX0=
@@ -4,11 +4,16 @@ export interface SchoolLocation {
4
4
  schoolIzo?: number;
5
5
  addressPointId: number;
6
6
  }
7
+ export declare enum SchoolType {
8
+ Kindergarten = 0,
9
+ Elementary = 1
10
+ }
7
11
  export interface School {
8
12
  name: string;
9
13
  izo: string;
10
14
  redizo: string;
11
15
  capacity: number;
16
+ type?: SchoolType;
12
17
  locations: SchoolLocation[];
13
18
  }
14
19
  export interface Founder {
package/dist/db/types.js CHANGED
@@ -1,3 +1,8 @@
1
+ export var SchoolType;
2
+ (function (SchoolType) {
3
+ SchoolType[SchoolType["Kindergarten"] = 0] = "Kindergarten";
4
+ SchoolType[SchoolType["Elementary"] = 1] = "Elementary";
5
+ })(SchoolType || (SchoolType = {}));
1
6
  export var MunicipalityType;
2
7
  (function (MunicipalityType) {
3
8
  MunicipalityType[MunicipalityType["City"] = 0] = "City";
@@ -18,4 +23,4 @@ export var SyncPart;
18
23
  SyncPart["Streets"] = "streets";
19
24
  SyncPart["Cities"] = "cities";
20
25
  })(SyncPart || (SyncPart = {}));
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUJBLE1BQU0sQ0FBTixJQUFZLGdCQUlYO0FBSkQsV0FBWSxnQkFBZ0I7SUFDMUIsdURBQUksQ0FBQTtJQUNKLCtEQUFRLENBQUE7SUFDUix5REFBSyxDQUFBO0FBQ1AsQ0FBQyxFQUpXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFJM0I7QUFvQkQsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxPQUFnQixFQUFnQixFQUFFO0lBQ3RFLE9BQU87UUFDTCxJQUFJLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjtRQUM5QixJQUFJLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjtLQUMvQixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBUUYsTUFBTSxDQUFOLElBQVksUUFNWDtBQU5ELFdBQVksUUFBUTtJQUNsQiw0Q0FBZ0MsQ0FBQTtJQUNoQywrQkFBbUIsQ0FBQTtJQUNuQiwrQkFBbUIsQ0FBQTtJQUNuQiwrQkFBbUIsQ0FBQTtJQUNuQiw2QkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBTlcsUUFBUSxLQUFSLFFBQVEsUUFNbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZWF0dXJlQ29sbGVjdGlvbiwgUG9seWdvbiwgTXVsdGlQb2x5Z29uIH0gZnJvbSBcIkB0dXJmL2hlbHBlcnNcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2Nob29sTG9jYXRpb24ge1xyXG4gIGlkPzogbnVtYmVyO1xyXG4gIHNjaG9vbEl6bz86IG51bWJlcjtcclxuICBhZGRyZXNzUG9pbnRJZDogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNjaG9vbCB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGl6bzogc3RyaW5nO1xyXG4gIHJlZGl6bzogc3RyaW5nO1xyXG4gIGNhcGFjaXR5OiBudW1iZXI7XHJcbiAgbG9jYXRpb25zOiBTY2hvb2xMb2NhdGlvbltdO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEZvdW5kZXIge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBpY286IHN0cmluZztcclxuICBvcmlnaW5hbFR5cGU/OiBudW1iZXI7XHJcbiAgbXVuaWNpcGFsaXR5VHlwZTogTXVuaWNpcGFsaXR5VHlwZTtcclxuICBtdW5pY2lwYWxpdHlDb2RlPzogbnVtYmVyO1xyXG4gIHNjaG9vbHM6IFNjaG9vbFtdO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBNdW5pY2lwYWxpdHlUeXBlIHtcclxuICBDaXR5LFxyXG4gIERpc3RyaWN0LFxyXG4gIE90aGVyLFxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBvc2l0aW9uIHtcclxuICBsYXQ6IG51bWJlcjtcclxuICBsbmc6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNdW5pY2lwYWxpdHkge1xyXG4gIHR5cGU6IE11bmljaXBhbGl0eVR5cGU7XHJcbiAgY29kZTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBNdW5pY2lwYWxpdHlXaXRoUG9zaXRpb24gPSBNdW5pY2lwYWxpdHkgJiBQb3NpdGlvbjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGxhY2VXaXRoUG9zaXRpb24ge1xyXG4gIGNvZGU6IG51bWJlcjtcclxuICBsYXQ6IG51bWJlcjtcclxuICBsbmc6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGZvdW5kZXJUb011bmljaXBhbGl0eSA9IChmb3VuZGVyOiBGb3VuZGVyKTogTXVuaWNpcGFsaXR5ID0+IHtcclxuICByZXR1cm4ge1xyXG4gICAgdHlwZTogZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlLFxyXG4gICAgY29kZTogZm91bmRlci5tdW5pY2lwYWxpdHlDb2RlLFxyXG4gIH07XHJcbn07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERiZlN0cmVldCB7XHJcbiAgS09EOiBzdHJpbmc7XHJcbiAgTkFaRVY6IHN0cmluZztcclxuICBPQkVDX0tPRDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBTeW5jUGFydCB7XHJcbiAgQWRkcmVzc1BvaW50cyA9IFwiYWRkcmVzcy1wb2ludHNcIixcclxuICBTY2hvb2xzID0gXCJzY2hvb2xzXCIsXHJcbiAgUmVnaW9ucyA9IFwicmVnaW9uc1wiLFxyXG4gIFN0cmVldHMgPSBcInN0cmVldHNcIixcclxuICBDaXRpZXMgPSBcImNpdGllc1wiLFxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQb2x5Z29uc0J5Q29kZXMgPSBSZWNvcmQ8XHJcbiAgbnVtYmVyLFxyXG4gIEZlYXR1cmVDb2xsZWN0aW9uPFBvbHlnb24gfCBNdWx0aVBvbHlnb24+XHJcbj47XHJcbiJdfQ==
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsTUFBTSxDQUFOLElBQVksVUFHWDtBQUhELFdBQVksVUFBVTtJQUNwQiwyREFBZ0IsQ0FBQTtJQUNoQix1REFBYyxDQUFBO0FBQ2hCLENBQUMsRUFIVyxVQUFVLEtBQVYsVUFBVSxRQUdyQjtBQW9CRCxNQUFNLENBQU4sSUFBWSxnQkFJWDtBQUpELFdBQVksZ0JBQWdCO0lBQzFCLHVEQUFJLENBQUE7SUFDSiwrREFBUSxDQUFBO0lBQ1IseURBQUssQ0FBQTtBQUNQLENBQUMsRUFKVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBSTNCO0FBb0JELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsT0FBZ0IsRUFBZ0IsRUFBRTtJQUN0RSxPQUFPO1FBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7UUFDOUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0I7S0FDL0IsQ0FBQztBQUNKLENBQUMsQ0FBQztBQVFGLE1BQU0sQ0FBTixJQUFZLFFBTVg7QUFORCxXQUFZLFFBQVE7SUFDbEIsNENBQWdDLENBQUE7SUFDaEMsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsK0JBQW1CLENBQUE7SUFDbkIsNkJBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQU5XLFFBQVEsS0FBUixRQUFRLFFBTW5CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmVhdHVyZUNvbGxlY3Rpb24sIFBvbHlnb24sIE11bHRpUG9seWdvbiB9IGZyb20gXCJAdHVyZi9oZWxwZXJzXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNjaG9vbExvY2F0aW9uIHtcclxuICBpZD86IG51bWJlcjtcclxuICBzY2hvb2xJem8/OiBudW1iZXI7XHJcbiAgYWRkcmVzc1BvaW50SWQ6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGVudW0gU2Nob29sVHlwZSB7XHJcbiAgS2luZGVyZ2FydGVuID0gMCxcclxuICBFbGVtZW50YXJ5ID0gMSxcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTY2hvb2wge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBpem86IHN0cmluZztcclxuICByZWRpem86IHN0cmluZztcclxuICBjYXBhY2l0eTogbnVtYmVyO1xyXG4gIHR5cGU/OiBTY2hvb2xUeXBlO1xyXG4gIGxvY2F0aW9uczogU2Nob29sTG9jYXRpb25bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3VuZGVyIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgaWNvOiBzdHJpbmc7XHJcbiAgb3JpZ2luYWxUeXBlPzogbnVtYmVyO1xyXG4gIG11bmljaXBhbGl0eVR5cGU6IE11bmljaXBhbGl0eVR5cGU7XHJcbiAgbXVuaWNpcGFsaXR5Q29kZT86IG51bWJlcjtcclxuICBzY2hvb2xzOiBTY2hvb2xbXTtcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTXVuaWNpcGFsaXR5VHlwZSB7XHJcbiAgQ2l0eSxcclxuICBEaXN0cmljdCxcclxuICBPdGhlcixcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQb3NpdGlvbiB7XHJcbiAgbGF0OiBudW1iZXI7XHJcbiAgbG5nOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTXVuaWNpcGFsaXR5IHtcclxuICB0eXBlOiBNdW5pY2lwYWxpdHlUeXBlO1xyXG4gIGNvZGU6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgTXVuaWNpcGFsaXR5V2l0aFBvc2l0aW9uID0gTXVuaWNpcGFsaXR5ICYgUG9zaXRpb247XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBsYWNlV2l0aFBvc2l0aW9uIHtcclxuICBjb2RlOiBudW1iZXI7XHJcbiAgbGF0OiBudW1iZXI7XHJcbiAgbG5nOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBmb3VuZGVyVG9NdW5pY2lwYWxpdHkgPSAoZm91bmRlcjogRm91bmRlcik6IE11bmljaXBhbGl0eSA9PiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIHR5cGU6IGZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSxcclxuICAgIGNvZGU6IGZvdW5kZXIubXVuaWNpcGFsaXR5Q29kZSxcclxuICB9O1xyXG59O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEYmZTdHJlZXQge1xyXG4gIEtPRDogc3RyaW5nO1xyXG4gIE5BWkVWOiBzdHJpbmc7XHJcbiAgT0JFQ19LT0Q6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGVudW0gU3luY1BhcnQge1xyXG4gIEFkZHJlc3NQb2ludHMgPSBcImFkZHJlc3MtcG9pbnRzXCIsXHJcbiAgU2Nob29scyA9IFwic2Nob29sc1wiLFxyXG4gIFJlZ2lvbnMgPSBcInJlZ2lvbnNcIixcclxuICBTdHJlZXRzID0gXCJzdHJlZXRzXCIsXHJcbiAgQ2l0aWVzID0gXCJjaXRpZXNcIixcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUG9seWdvbnNCeUNvZGVzID0gUmVjb3JkPFxyXG4gIG51bWJlcixcclxuICBGZWF0dXJlQ29sbGVjdGlvbjxQb2x5Z29uIHwgTXVsdGlQb2x5Z29uPlxyXG4+O1xyXG4iXX0=
@@ -5,7 +5,7 @@ import sax from "sax";
5
5
  import { pipeline } from "stream/promises";
6
6
  import { insertFounders } from "../db/founders";
7
7
  import { insertSchools } from "../db/schools";
8
- import { MunicipalityType, SyncPart, } from "../db/types";
8
+ import { MunicipalityType, SchoolType, SyncPart, } from "../db/types";
9
9
  import { prepareOptions, } from "../utils/helpers";
10
10
  import { runSyncPart } from "./common";
11
11
  const downloadXml = async (options) => {
@@ -35,7 +35,8 @@ var XMLState;
35
35
  XMLState[XMLState["FounderType"] = 10] = "FounderType";
36
36
  XMLState[XMLState["FounderIco"] = 11] = "FounderIco";
37
37
  })(XMLState || (XMLState = {}));
38
- const SCHOOL_TYPE_PRIMARY = "B00";
38
+ const SCHOOL_TYPE_KINDERGARTEN = "A00";
39
+ const SCHOOL_TYPE_ELEMENTARY = "B00";
39
40
  const createNewSchool = () => {
40
41
  return {
41
42
  name: "",
@@ -56,11 +57,12 @@ const getMunicipalityType = (founderType) => {
56
57
  : MunicipalityType.Other;
57
58
  };
58
59
  const processSchoolRegisterXml = async (options) => {
59
- let currentSchool;
60
- let isCurrentSchoolPrimary;
60
+ let currentSchools;
61
+ let currentRedizo;
62
+ let currentName;
61
63
  let currentIzo;
62
64
  let currentIco;
63
- let currentType;
65
+ let currentType = null;
64
66
  let currentCapacity;
65
67
  let currentLocations = [];
66
68
  let state = XMLState.None;
@@ -80,8 +82,11 @@ const processSchoolRegisterXml = async (options) => {
80
82
  .on("opentag", (tag) => {
81
83
  switch (tag.name) {
82
84
  case "PravniSubjekt":
83
- currentSchool = createNewSchool();
84
- isCurrentSchoolPrimary = false;
85
+ currentSchools = [];
86
+ currentRedizo = "";
87
+ currentName = "";
88
+ currentIzo = "";
89
+ currentCapacity = 0;
85
90
  isRuianCodeMissing = false;
86
91
  break;
87
92
  case "RedIzo":
@@ -127,12 +132,12 @@ const processSchoolRegisterXml = async (options) => {
127
132
  .on("closetag", (tagName) => {
128
133
  switch (tagName) {
129
134
  case "PravniSubjekt":
130
- if (isCurrentSchoolPrimary) {
131
- schools.push(currentSchool);
135
+ if (currentSchools.length > 0) {
136
+ schools.push(...currentSchools);
132
137
  currentFounders.forEach((founder) => {
133
138
  const key = founder.name + founder.ico;
134
139
  if (founders.has(key)) {
135
- founders.get(key).schools.push(currentSchool);
140
+ founders.get(key).schools.push(...currentSchools);
136
141
  }
137
142
  else {
138
143
  founders.set(key, {
@@ -140,7 +145,7 @@ const processSchoolRegisterXml = async (options) => {
140
145
  ico: founder.ico,
141
146
  originalType: founder.type,
142
147
  municipalityType: getMunicipalityType(founder.type),
143
- schools: [currentSchool],
148
+ schools: [...currentSchools],
144
149
  });
145
150
  }
146
151
  });
@@ -152,7 +157,7 @@ const processSchoolRegisterXml = async (options) => {
152
157
  if (currentFounderIco === "" || currentFounderName === "") {
153
158
  currentFounders.push({
154
159
  ico: currentIco,
155
- name: currentSchool.name,
160
+ name: currentName,
156
161
  type: "224", // s.r.o (not all are those, but we don't need to differentiate here)
157
162
  });
158
163
  }
@@ -168,19 +173,25 @@ const processSchoolRegisterXml = async (options) => {
168
173
  currentFounderType = "";
169
174
  break;
170
175
  case "SkolaZarizeni":
171
- if (currentType === SCHOOL_TYPE_PRIMARY) {
172
- currentSchool.izo = currentIzo;
173
- currentSchool.locations = currentLocations;
174
- currentSchool.capacity = currentCapacity;
176
+ if (currentType !== null) {
177
+ currentSchools.push({
178
+ izo: currentIzo,
179
+ name: currentName,
180
+ redizo: currentRedizo,
181
+ capacity: currentCapacity,
182
+ type: currentType,
183
+ locations: currentLocations,
184
+ });
175
185
  }
176
186
  currentLocations = [];
187
+ currentType = null;
177
188
  break;
178
189
  case "SkolaMistoVykonuCinnosti":
179
190
  if (isRuianCodeMissing) {
180
191
  schoolsWithoutRuian.push({
181
192
  izo: currentIzo,
182
193
  address: currentAddress,
183
- isPrimary: currentType === SCHOOL_TYPE_PRIMARY,
194
+ type: currentType,
184
195
  });
185
196
  }
186
197
  break;
@@ -206,9 +217,9 @@ const processSchoolRegisterXml = async (options) => {
206
217
  .on("text", (text) => {
207
218
  switch (state) {
208
219
  case XMLState.RedIzo:
209
- currentSchool.redizo = text;
220
+ currentRedizo = text;
210
221
  case XMLState.SchoolName:
211
- currentSchool.name = text;
222
+ currentName = text;
212
223
  break;
213
224
  case XMLState.Izo:
214
225
  currentIzo = text;
@@ -217,9 +228,11 @@ const processSchoolRegisterXml = async (options) => {
217
228
  currentIco = text;
218
229
  break;
219
230
  case XMLState.SchoolType:
220
- currentType = text;
221
- if (text === SCHOOL_TYPE_PRIMARY) {
222
- isCurrentSchoolPrimary = true;
231
+ if (text === SCHOOL_TYPE_KINDERGARTEN) {
232
+ currentType = SchoolType.Kindergarten;
233
+ }
234
+ else if (text === SCHOOL_TYPE_ELEMENTARY) {
235
+ currentType = SchoolType.Elementary;
223
236
  }
224
237
  break;
225
238
  case XMLState.RuianCode:
@@ -278,9 +291,9 @@ const importDataToDb = async (options, saveFoundersToCsv = false, saveSchoolsWit
278
291
  var csv = createWriteStream(csvFile, {
279
292
  flags: "a",
280
293
  });
281
- csv.write("IZO;Je základní;adresa1;adresa2;adresa3\n");
294
+ csv.write("IZO;Je mateřská;Je základní;adresa1;adresa2;adresa3\n");
282
295
  schoolsWithoutRuian.forEach((schoolAddress) => {
283
- csv.write(`#${schoolAddress.izo};${schoolAddress.isPrimary ? "TRUE" : "FALSE"};${schoolAddress.address.join(";")}\n`);
296
+ csv.write(`#${schoolAddress.izo};${schoolAddress.type === SchoolType.Kindergarten ? "TRUE" : "FALSE"};${schoolAddress.type === SchoolType.Elementary ? "TRUE" : "FALSE"};${schoolAddress.address.join(";")}\n`);
284
297
  });
285
298
  csv.end();
286
299
  }
@@ -304,4 +317,4 @@ export const deleteSchoolsXmlFile = (options = {}) => {
304
317
  rmSync(getXmlFilePath(runOptions));
305
318
  }
306
319
  };
307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nob29scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVuLWRhdGEtc3luYy9zY2hvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQzdFLE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQztBQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVCLE9BQU8sR0FBWSxNQUFNLEtBQUssQ0FBQztBQUUvQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUVMLGdCQUFnQixFQUdoQixRQUFRLEdBQ1QsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUdMLGNBQWMsR0FDZixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFdkMsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLE9BQTRCLEVBQWlCLEVBQUU7SUFDeEUsSUFBSSxVQUFVLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUU7UUFDdkMsT0FBTztLQUNSO0lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNwRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO1FBQzNCLE1BQU0sSUFBSSxLQUFLLENBQ2Isb0RBQW9ELFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FDdEUsQ0FBQztLQUNIO0lBQ0QsTUFB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YXRlUmVhZFN0cmVhbSwgY3JlYXRlV3JpdGVTdHJlYW0sIGV4aXN0c1N5bmMsIHJtU3luYyB9IGZyb20gXCJmc1wiO1xyXG5pbXBvcnQgZmV0Y2ggZnJvbSBcIm5vZGUtZmV0Y2hcIjtcclxuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJwYXRoXCI7XHJcbmltcG9ydCBzYXgsIHsgVGFnIH0gZnJvbSBcInNheFwiO1xyXG5cclxuaW1wb3J0IHsgcGlwZWxpbmUgfSBmcm9tIFwic3RyZWFtL3Byb21pc2VzXCI7XHJcbmltcG9ydCB7IGluc2VydEZvdW5kZXJzIH0gZnJvbSBcIi4uL2RiL2ZvdW5kZXJzXCI7XHJcbmltcG9ydCB7IGluc2VydFNjaG9vbHMgfSBmcm9tIFwiLi4vZGIvc2Nob29sc1wiO1xyXG5pbXBvcnQge1xyXG4gIEZvdW5kZXIsXHJcbiAgTXVuaWNpcGFsaXR5VHlwZSxcclxuICBTY2hvb2wsXHJcbiAgU2Nob29sTG9jYXRpb24sXHJcbiAgU3luY1BhcnQsXHJcbn0gZnJvbSBcIi4uL2RiL3R5cGVzXCI7XHJcbmltcG9ydCB7XHJcbiAgT3BlbkRhdGFTeW5jT3B0aW9ucyxcclxuICBPcGVuRGF0YVN5bmNPcHRpb25zUGFydGlhbCxcclxuICBwcmVwYXJlT3B0aW9ucyxcclxufSBmcm9tIFwiLi4vdXRpbHMvaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBydW5TeW5jUGFydCB9IGZyb20gXCIuL2NvbW1vblwiO1xyXG5cclxuY29uc3QgZG93bmxvYWRYbWwgPSBhc3luYyAob3B0aW9uczogT3BlbkRhdGFTeW5jT3B0aW9ucyk6IFByb21pc2U8dm9pZD4gPT4ge1xyXG4gIGlmIChleGlzdHNTeW5jKGdldFhtbEZpbGVQYXRoKG9wdGlvbnMpKSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgY29uc29sZS5sb2coXCJEb3dubG9hZGluZyBhIGxhcmdlIFhNTCBmaWxlIHdpdGggc2Nob29sIGRhdGEuLi5cIik7XHJcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChvcHRpb25zLnNjaG9vbHNYbWxVcmwpO1xyXG4gIGlmIChyZXNwb25zZS5zdGF0dXMgIT09IDIwMCkge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICBgVGhlIFhNTCBmaWxlIGNvdWxkIG5vdCBiZSBkb3dubG9hZGVkLiBIVFRQIENvZGU6ICR7cmVzcG9uc2Uuc3RhdHVzfWBcclxuICAgICk7XHJcbiAgfVxyXG4gIGF3YWl0IHBpcGVsaW5lKHJlc3BvbnNlLmJvZHksIGNyZWF0ZVdyaXRlU3RyZWFtKGdldFhtbEZpbGVQYXRoKG9wdGlvbnMpKSk7XHJcbiAgY29uc29sZS5sb2coXCJGaW5pc2hlZCBkb3dubG9hZGluZy5cIik7XHJcbn07XHJcblxyXG5lbnVtIFhNTFN0YXRlIHtcclxuICBOb25lLFxyXG4gIFJlZEl6byxcclxuICBTY2hvb2xOYW1lLFxyXG4gIEl6byxcclxuICBJY28sXHJcbiAgU2Nob29sVHlwZSxcclxuICBDYXBhY2l0eSxcclxuICBSdWlhbkNvZGUsXHJcbiAgQWRkcmVzcyxcclxuICBGb3VuZGVyTmFtZSxcclxuICBGb3VuZGVyVHlwZSxcclxuICBGb3VuZGVySWNvLFxyXG59XHJcblxyXG5jb25zdCBTQ0hPT0xfVFlQRV9QUklNQVJZID0gXCJCMDBcIjtcclxuXHJcbmNvbnN0IGNyZWF0ZU5ld1NjaG9vbCA9ICgpOiBTY2hvb2wgPT4ge1xyXG4gIHJldHVybiB7XHJcbiAgICBuYW1lOiBcIlwiLFxyXG4gICAgcmVkaXpvOiBcIlwiLFxyXG4gICAgaXpvOiBcIlwiLFxyXG4gICAgY2FwYWNpdHk6IDAsXHJcbiAgICBsb2NhdGlvbnM6IFtdLFxyXG4gIH07XHJcbn07XHJcblxyXG5jb25zdCBnZXRDb3JyZWN0Rm91bmRlclR5cGUgPSAoZm91bmRlclR5cGU6IHN0cmluZyk6IHN0cmluZyA9PiB7XHJcbiAgcmV0dXJuIGZvdW5kZXJUeXBlID09PSBcIlwiID8gXCIxMDFcIiA6IGZvdW5kZXJUeXBlO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0TXVuaWNpcGFsaXR5VHlwZSA9IChmb3VuZGVyVHlwZTogc3RyaW5nKTogTXVuaWNpcGFsaXR5VHlwZSA9PiB7XHJcbiAgcmV0dXJuIGZvdW5kZXJUeXBlID09PSBcIjI2MVwiXHJcbiAgICA/IE11bmljaXBhbGl0eVR5cGUuQ2l0eVxyXG4gICAgOiBmb3VuZGVyVHlwZSA9PT0gXCIyNjNcIlxyXG4gICAgPyBNdW5pY2lwYWxpdHlUeXBlLkRpc3RyaWN0XHJcbiAgICA6IE11bmljaXBhbGl0eVR5cGUuT3RoZXI7XHJcbn07XHJcblxyXG50eXBlIFNjaG9vbEFkZHJlc3MgPSB7IGl6bzogc3RyaW5nOyBhZGRyZXNzOiBzdHJpbmdbXTsgaXNQcmltYXJ5OiBib29sZWFuIH07XHJcblxyXG5jb25zdCBwcm9jZXNzU2Nob29sUmVnaXN0ZXJYbWwgPSBhc3luYyAoXHJcbiAgb3B0aW9uczogT3BlbkRhdGFTeW5jT3B0aW9uc1xyXG4pOiBQcm9taXNlPHtcclxuICBzY2hvb2xzOiBTY2hvb2xbXTtcclxuICBmb3VuZGVyczogTWFwPHN0cmluZywgRm91bmRlcj47XHJcbiAgc2Nob29sc1dpdGhvdXRSdWlhbjogU2Nob29sQWRkcmVzc1tdO1xyXG59PiA9PiB7XHJcbiAgbGV0IGN1cnJlbnRTY2hvb2w6IFNjaG9vbDtcclxuICBsZXQgaXNDdXJyZW50U2Nob29sUHJpbWFyeTogYm9vbGVhbjtcclxuICBsZXQgY3VycmVudEl6bzogc3RyaW5nO1xyXG4gIGxldCBjdXJyZW50SWNvOiBzdHJpbmc7XHJcbiAgbGV0IGN1cnJlbnRUeXBlOiBzdHJpbmc7XHJcbiAgbGV0IGN1cnJlbnRDYXBhY2l0eTogbnVtYmVyO1xyXG4gIGxldCBjdXJyZW50TG9jYXRpb25zOiBTY2hvb2xMb2NhdGlvbltdID0gW107XHJcbiAgbGV0IHN0YXRlOiBYTUxTdGF0ZSA9IFhNTFN0YXRlLk5vbmU7XHJcbiAgbGV0IGN1cnJlbnRGb3VuZGVycyA9IFtdO1xyXG4gIGxldCBjdXJyZW50Rm91bmRlckljbzogc3RyaW5nO1xyXG4gIGxldCBjdXJyZW50Rm91bmRlck5hbWU6IHN0cmluZztcclxuICBsZXQgY3VycmVudEZvdW5kZXJUeXBlOiBzdHJpbmc7XHJcbiAgbGV0IGlzUnVpYW5Db2RlU2V0ID0gZmFsc2U7XHJcbiAgbGV0IGlzUnVpYW5Db2RlTWlzc2luZyA9IGZhbHNlO1xyXG4gIGxldCBjdXJyZW50QWRkcmVzcyA9IFtdO1xyXG4gIGNvbnN0IGZvdW5kZXJzID0gbmV3IE1hcDxzdHJpbmcsIEZvdW5kZXI+KCk7XHJcbiAgY29uc3Qgc2Nob29sczogU2Nob29sW10gPSBbXTtcclxuICBjb25zdCBzY2hvb2xzV2l0aG91dFJ1aWFuOiBTY2hvb2xBZGRyZXNzW10gPSBbXTtcclxuXHJcbiAgY29uc3Qgc3RyZWFtUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgIGNvbnN0IHNheFN0cmVhbSA9IHNheFxyXG4gICAgICAuY3JlYXRlU3RyZWFtKHRydWUpXHJcbiAgICAgIC5vbihcIm9wZW50YWdcIiwgKHRhZzogVGFnKSA9PiB7XHJcbiAgICAgICAgc3dpdGNoICh0YWcubmFtZSkge1xyXG4gICAgICAgICAgY2FzZSBcIlByYXZuaVN1Ympla3RcIjpcclxuICAgICAgICAgICAgY3VycmVudFNjaG9vbCA9IGNyZWF0ZU5ld1NjaG9vbCgpO1xyXG4gICAgICAgICAgICBpc0N1cnJlbnRTY2hvb2xQcmltYXJ5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlzUnVpYW5Db2RlTWlzc2luZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJSZWRJem9cIjpcclxuICAgICAgICAgICAgc3RhdGUgPSBYTUxTdGF0ZS5SZWRJem87XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIlJlZFBsbnlOYXpldlwiOlxyXG4gICAgICAgICAgICBzdGF0ZSA9IFhNTFN0YXRlLlNjaG9vbE5hbWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIklaT1wiOlxyXG4gICAgICAgICAgICBzdGF0ZSA9IFhNTFN0YXRlLkl6bztcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiSUNPXCI6XHJcbiAgICAgICAgICAgIHN0YXRlID0gWE1MU3RhdGUuSWNvO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJTa29sYURydWhUeXBcIjpcclxuICAgICAgICAgICAgc3RhdGUgPSBYTUxTdGF0ZS5TY2hvb2xUeXBlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJTa29sYUthcGFjaXRhXCI6XHJcbiAgICAgICAgICAgIHN0YXRlID0gWE1MU3RhdGUuQ2FwYWNpdHk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIk1pc3RvUlVBSU5Lb2RcIjpcclxuICAgICAgICAgICAgaXNSdWlhbkNvZGVTZXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgY3VycmVudEFkZHJlc3MgPSBbXTtcclxuICAgICAgICAgICAgc3RhdGUgPSBYTUxTdGF0ZS5SdWlhbkNvZGU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIlpyaXpOYXpldlwiOlxyXG4gICAgICAgICAgICBzdGF0ZSA9IFhNTFN0YXRlLkZvdW5kZXJOYW1lO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJacml6UHJhdm5pRm9ybWFcIjpcclxuICAgICAgICAgICAgc3RhdGUgPSBYTUxTdGF0ZS5Gb3VuZGVyVHlwZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiTWlzdG9BZHJlc2ExXCI6XHJcbiAgICAgICAgICBjYXNlIFwiTWlzdG9BZHJlc2EyXCI6XHJcbiAgICAgICAgICBjYXNlIFwiTWlzdG9BZHJlc2EzXCI6XHJcbiAgICAgICAgICAgIHN0YXRlID0gWE1MU3RhdGUuQWRkcmVzcztcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiWnJpekRhdHVtTmFyb3plbmlcIjpcclxuICAgICAgICAgIGNhc2UgXCJacml6SUNPXCI6XHJcbiAgICAgICAgICAgIHN0YXRlID0gWE1MU3RhdGUuRm91bmRlckljbztcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAub24oXCJjbG9zZXRhZ1wiLCAodGFnTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgc3dpdGNoICh0YWdOYW1lKSB7XHJcbiAgICAgICAgICBjYXNlIFwiUHJhdm5pU3ViamVrdFwiOlxyXG4gICAgICAgICAgICBpZiAoaXNDdXJyZW50U2Nob29sUHJpbWFyeSkge1xyXG4gICAgICAgICAgICAgIHNjaG9vbHMucHVzaChjdXJyZW50U2Nob29sKTtcclxuICAgICAgICAgICAgICBjdXJyZW50Rm91bmRlcnMuZm9yRWFjaCgoZm91bmRlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gZm91bmRlci5uYW1lICsgZm91bmRlci5pY287XHJcbiAgICAgICAgICAgICAgICBpZiAoZm91bmRlcnMuaGFzKGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgZm91bmRlcnMuZ2V0KGtleSkuc2Nob29scy5wdXNoKGN1cnJlbnRTY2hvb2wpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgZm91bmRlcnMuc2V0KGtleSwge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGZvdW5kZXIubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICBpY286IGZvdW5kZXIuaWNvLFxyXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsVHlwZTogZm91bmRlci50eXBlLFxyXG4gICAgICAgICAgICAgICAgICAgIG11bmljaXBhbGl0eVR5cGU6IGdldE11bmljaXBhbGl0eVR5cGUoZm91bmRlci50eXBlKSxcclxuICAgICAgICAgICAgICAgICAgICBzY2hvb2xzOiBbY3VycmVudFNjaG9vbF0sXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGN1cnJlbnRJY28gPSBcIlwiO1xyXG4gICAgICAgICAgICBjdXJyZW50Rm91bmRlcnMgPSBbXTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgY2FzZSBcIlpyaXpvdmF0ZWxcIjpcclxuICAgICAgICAgICAgaWYgKGN1cnJlbnRGb3VuZGVySWNvID09PSBcIlwiIHx8IGN1cnJlbnRGb3VuZGVyTmFtZSA9PT0gXCJcIikge1xyXG4gICAgICAgICAgICAgIGN1cnJlbnRGb3VuZGVycy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGljbzogY3VycmVudEljbyxcclxuICAgICAgICAgICAgICAgIG5hbWU6IGN1cnJlbnRTY2hvb2wubmFtZSxcclxuICAgICAgICAgICAgICAgIHR5cGU6IFwiMjI0XCIsIC8vIHMuci5vIChub3QgYWxsIGFyZSB0aG9zZSwgYnV0IHdlIGRvbid0IG5lZWQgdG8gZGlmZmVyZW50aWF0ZSBoZXJlKVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGN1cnJlbnRGb3VuZGVycy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGljbzogY3VycmVudEZvdW5kZXJJY28sXHJcbiAgICAgICAgICAgICAgICBuYW1lOiBjdXJyZW50Rm91bmRlck5hbWUsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBnZXRDb3JyZWN0Rm91bmRlclR5cGUoY3VycmVudEZvdW5kZXJUeXBlKSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjdXJyZW50Rm91bmRlckljbyA9IFwiXCI7XHJcbiAgICAgICAgICAgIGN1cnJlbnRGb3VuZGVyTmFtZSA9IFwiXCI7XHJcbiAgICAgICAgICAgIGN1cnJlbnRGb3VuZGVyVHlwZSA9IFwiXCI7XHJcblxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJTa29sYVphcml6ZW5pXCI6XHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50VHlwZSA9PT0gU0NIT09MX1RZUEVfUFJJTUFSWSkge1xyXG4gICAgICAgICAgICAgIGN1cnJlbnRTY2hvb2wuaXpvID0gY3VycmVudEl6bztcclxuICAgICAgICAgICAgICBjdXJyZW50U2Nob29sLmxvY2F0aW9ucyA9IGN1cnJlbnRMb2NhdGlvbnM7XHJcbiAgICAgICAgICAgICAgY3VycmVudFNjaG9vbC5jYXBhY2l0eSA9IGN1cnJlbnRDYXBhY2l0eTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjdXJyZW50TG9jYXRpb25zID0gW107XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIlNrb2xhTWlzdG9WeWtvbnVDaW5ub3N0aVwiOlxyXG4gICAgICAgICAgICBpZiAoaXNSdWlhbkNvZGVNaXNzaW5nKSB7XHJcbiAgICAgICAgICAgICAgc2Nob29sc1dpdGhvdXRSdWlhbi5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGl6bzogY3VycmVudEl6byxcclxuICAgICAgICAgICAgICAgIGFkZHJlc3M6IGN1cnJlbnRBZGRyZXNzLFxyXG4gICAgICAgICAgICAgICAgaXNQcmltYXJ5OiBjdXJyZW50VHlwZSA9PT0gU0NIT09MX1RZUEVfUFJJTUFSWSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJNaXN0b1JVQUlOS29kXCI6XHJcbiAgICAgICAgICAgIGlzUnVpYW5Db2RlTWlzc2luZyA9ICFpc1J1aWFuQ29kZVNldDtcclxuICAgICAgICAgIGNhc2UgXCJSZWRQbG55TmF6ZXZcIjpcclxuICAgICAgICAgIGNhc2UgXCJSZWRJem9cIjpcclxuICAgICAgICAgIGNhc2UgXCJJQ09cIjpcclxuICAgICAgICAgIGNhc2UgXCJJWk9cIjpcclxuICAgICAgICAgIGNhc2UgXCJTa29sYURydWhUeXBcIjpcclxuICAgICAgICAgIGNhc2UgXCJTa29sYUthcGFjaXRhXCI6XHJcbiAgICAgICAgICBjYXNlIFwiWnJpek5hemV2XCI6XHJcbiAgICAgICAgICBjYXNlIFwiWnJpeklDT1wiOlxyXG4gICAgICAgICAgY2FzZSBcIlpyaXpEYXR1bU5hcm96ZW5pXCI6XHJcbiAgICAgICAgICBjYXNlIFwiWnJpelByYXZuaUZvcm1hXCI6XHJcbiAgICAgICAgICBjYXNlIFwiTWlzdG9BZHJlc2ExXCI6XHJcbiAgICAgICAgICBjYXNlIFwiTWlzdG9BZHJlc2EyXCI6XHJcbiAgICAgICAgICBjYXNlIFwiTWlzdG9BZHJlc2EzXCI6XHJcbiAgICAgICAgICAgIHN0YXRlID0gWE1MU3RhdGUuTm9uZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAub24oXCJ0ZXh0XCIsICh0ZXh0OiBzdHJpbmcpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7XHJcbiAgICAgICAgICBjYXNlIFhNTFN0YXRlLlJlZEl6bzpcclxuICAgICAgICAgICAgY3VycmVudFNjaG9vbC5yZWRpem8gPSB0ZXh0O1xyXG4gICAgICAgICAgY2FzZSBYTUxTdGF0ZS5TY2hvb2xOYW1lOlxyXG4gICAgICAgICAgICBjdXJyZW50U2Nob29sLm5hbWUgPSB0ZXh0O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgWE1MU3RhdGUuSXpvOlxyXG4gICAgICAgICAgICBjdXJyZW50SXpvID0gdGV4dDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFhNTFN0YXRlLkljbzpcclxuICAgICAgICAgICAgY3VycmVudEljbyA9IHRleHQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBYTUxTdGF0ZS5TY2hvb2xUeXBlOlxyXG4gICAgICAgICAgICBjdXJyZW50VHlwZSA9IHRleHQ7XHJcbiAgICAgICAgICAgIGlmICh0ZXh0ID09PSBTQ0hPT0xfVFlQRV9QUklNQVJZKSB7XHJcbiAgICAgICAgICAgICAgaXNDdXJyZW50U2Nob29sUHJpbWFyeSA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFhNTFN0YXRlLlJ1aWFuQ29kZTpcclxuICAgICAgICAgICAgaXNSdWlhbkNvZGVTZXQgPSB0cnVlO1xyXG4gICAgICAgICAgICBjdXJyZW50TG9jYXRpb25zLnB1c2goe1xyXG4gICAgICAgICAgICAgIGFkZHJlc3NQb2ludElkOiBwYXJzZUludCh0ZXh0KSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBYTUxTdGF0ZS5BZGRyZXNzOlxyXG4gICAgICAgICAgICBjdXJyZW50QWRkcmVzcy5wdXNoKHRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgWE1MU3RhdGUuRm91bmRlck5hbWU6XHJcbiAgICAgICAgICAgIGN1cnJlbnRGb3VuZGVyTmFtZSA9IHRleHQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBYTUxTdGF0ZS5Gb3VuZGVySWNvOlxyXG4gICAgICAgICAgICBjdXJyZW50Rm91bmRlckljbyA9IHRleHQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBYTUxTdGF0ZS5Gb3VuZGVyVHlwZTpcclxuICAgICAgICAgICAgY3VycmVudEZvdW5kZXJUeXBlID0gdGV4dDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFhNTFN0YXRlLkNhcGFjaXR5OlxyXG4gICAgICAgICAgICBjdXJyZW50Q2FwYWNpdHkgPSBwYXJzZUludCh0ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAub24oXCJlcnJvclwiLCByZWplY3QpXHJcbiAgICAgIC5vbihcImVuZFwiLCByZXNvbHZlKTtcclxuXHJcbiAgICAvLyB3YW50ZWQgdG8gdXNlICdhd2FpdCBwaXBlbGluZShjcmVhdGVSZWFkU3RyZWFtKGdldFhtbEZpbGVQYXRoKG9wdGlvbnMpKSwgc2F4U3RyZWFtKSdcclxuICAgIC8vIGJ1dCB0aGUgcHJvZ3JhbSB3b3VsZCBxdWl0IHNwb250YW5lb3VzbHkgYWZ0ZXIgZmluaXNoaW5nIHN0cmVhbSAtIHVzaW5nIFByb21pc2UgaW5zdGVhZC5cclxuICAgIGNyZWF0ZVJlYWRTdHJlYW0oZ2V0WG1sRmlsZVBhdGgob3B0aW9ucykpLnBpcGUoc2F4U3RyZWFtKTtcclxuICB9KTtcclxuXHJcbiAgYXdhaXQgc3RyZWFtUHJvbWlzZTtcclxuXHJcbiAgcmV0dXJuIHsgc2Nob29scywgZm91bmRlcnMsIHNjaG9vbHNXaXRob3V0UnVpYW4gfTtcclxufTtcclxuXHJcbmNvbnN0IGltcG9ydERhdGFUb0RiID0gYXN5bmMgKFxyXG4gIG9wdGlvbnM6IE9wZW5EYXRhU3luY09wdGlvbnMsXHJcbiAgc2F2ZUZvdW5kZXJzVG9Dc3Y6IGJvb2xlYW4gPSBmYWxzZSxcclxuICBzYXZlU2Nob29sc1dpdGhvdXRSdWlhblRvQ3N2OiBib29sZWFuID0gZmFsc2VcclxuKSA9PiB7XHJcbiAgY29uc3QgeyBzY2hvb2xzLCBmb3VuZGVycywgc2Nob29sc1dpdGhvdXRSdWlhbiB9ID1cclxuICAgIGF3YWl0IHByb2Nlc3NTY2hvb2xSZWdpc3RlclhtbChvcHRpb25zKTtcclxuXHJcbiAgaWYgKHNhdmVGb3VuZGVyc1RvQ3N2KSB7XHJcbiAgICBjb25zdCBjc3ZGaWxlID0gXCJmb3VuZGVycy5jc3ZcIjtcclxuXHJcbiAgICBpZiAoZXhpc3RzU3luYyhjc3ZGaWxlKSkge1xyXG4gICAgICBybVN5bmMoY3N2RmlsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGNzdiA9IGNyZWF0ZVdyaXRlU3RyZWFtKGNzdkZpbGUsIHtcclxuICAgICAgZmxhZ3M6IFwiYVwiLFxyXG4gICAgfSk7XHJcbiAgICBjc3Yud3JpdGUoXCJJxIxPO1rFmWl6b3ZhdGVsO1Byw6F2bsOtIGZvcm1hO1BvxI1ldCDFoWtvbDvFoGtvbHlcXG5cIik7XHJcbiAgICBmb3VuZGVycy5mb3JFYWNoKChmb3VuZGVyKSA9PiB7XHJcbiAgICAgIGNzdi53cml0ZShcclxuICAgICAgICBgIyR7Zm91bmRlci5pY299OyR7Zm91bmRlci5uYW1lfTske2ZvdW5kZXIub3JpZ2luYWxUeXBlfTske1xyXG4gICAgICAgICAgZm91bmRlci5zY2hvb2xzLmxlbmd0aFxyXG4gICAgICAgIH07JHtmb3VuZGVyLnNjaG9vbHMubWFwKChzY2hvb2wpID0+IHNjaG9vbC5uYW1lKS5qb2luKFwiLS0tXCIpfVxcbmBcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gICAgY3N2LmVuZCgpO1xyXG4gIH1cclxuXHJcbiAgaWYgKHNhdmVTY2hvb2xzV2l0aG91dFJ1aWFuVG9Dc3YpIHtcclxuICAgIGNvbnN0IGNzdkZpbGUgPSBcInNjaG9vbHNXaXRob3V0UnVpYW4uY3N2XCI7XHJcblxyXG4gICAgaWYgKGV4aXN0c1N5bmMoY3N2RmlsZSkpIHtcclxuICAgICAgcm1TeW5jKGNzdkZpbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBjc3YgPSBjcmVhdGVXcml0ZVN0cmVhbShjc3ZGaWxlLCB7XHJcbiAgICAgIGZsYWdzOiBcImFcIixcclxuICAgIH0pO1xyXG4gICAgY3N2LndyaXRlKFwiSVpPO0plIHrDoWtsYWRuw607YWRyZXNhMTthZHJlc2EyO2FkcmVzYTNcXG5cIik7XHJcbiAgICBzY2hvb2xzV2l0aG91dFJ1aWFuLmZvckVhY2goKHNjaG9vbEFkZHJlc3MpID0+IHtcclxuICAgICAgY3N2LndyaXRlKFxyXG4gICAgICAgIGAjJHtzY2hvb2xBZGRyZXNzLml6b307JHtcclxuICAgICAgICAgIHNjaG9vbEFkZHJlc3MuaXNQcmltYXJ5ID8gXCJUUlVFXCIgOiBcIkZBTFNFXCJcclxuICAgICAgICB9OyR7c2Nob29sQWRkcmVzcy5hZGRyZXNzLmpvaW4oXCI7XCIpfVxcbmBcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gICAgY3N2LmVuZCgpO1xyXG4gIH1cclxuXHJcbiAgYXdhaXQgaW5zZXJ0U2Nob29scyhzY2hvb2xzKTtcclxuXHJcbiAgYXdhaXQgaW5zZXJ0Rm91bmRlcnMoQXJyYXkuZnJvbShmb3VuZGVycy52YWx1ZXMoKSkpO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0WG1sRmlsZVBhdGggPSAob3B0aW9uczogT3BlbkRhdGFTeW5jT3B0aW9uc1BhcnRpYWwpOiBzdHJpbmcgPT4ge1xyXG4gIHJldHVybiBqb2luKG9wdGlvbnMudG1wRGlyLCBvcHRpb25zLnNjaG9vbHNYbWxGaWxlTmFtZSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZG93bmxvYWRBbmRJbXBvcnRTY2hvb2xzID0gYXN5bmMgKFxyXG4gIG9wdGlvbnM6IE9wZW5EYXRhU3luY09wdGlvbnNQYXJ0aWFsID0ge30sXHJcbiAgc2F2ZUZvdW5kZXJzVG9Dc3Y6IGJvb2xlYW4gPSBmYWxzZSxcclxuICBzYXZlU2Nob29sc1dpdGhvdXRSdWlhblRvQ3N2OiBib29sZWFuID0gZmFsc2VcclxuKSA9PiB7XHJcbiAgYXdhaXQgcnVuU3luY1BhcnQoU3luY1BhcnQuU2Nob29scywgW1N5bmNQYXJ0LkFkZHJlc3NQb2ludHNdLCBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBydW5PcHRpb25zID0gcHJlcGFyZU9wdGlvbnMob3B0aW9ucyk7XHJcblxyXG4gICAgYXdhaXQgZG93bmxvYWRYbWwocnVuT3B0aW9ucyk7XHJcbiAgICBhd2FpdCBpbXBvcnREYXRhVG9EYihcclxuICAgICAgcnVuT3B0aW9ucyxcclxuICAgICAgc2F2ZUZvdW5kZXJzVG9Dc3YsXHJcbiAgICAgIHNhdmVTY2hvb2xzV2l0aG91dFJ1aWFuVG9Dc3ZcclxuICAgICk7XHJcbiAgICBkZWxldGVTY2hvb2xzWG1sRmlsZShydW5PcHRpb25zKTtcclxuICB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBkZWxldGVTY2hvb2xzWG1sRmlsZSA9IChcclxuICBvcHRpb25zOiBPcGVuRGF0YVN5bmNPcHRpb25zUGFydGlhbCA9IHt9XHJcbikgPT4ge1xyXG4gIGNvbnN0IHJ1bk9wdGlvbnMgPSBwcmVwYXJlT3B0aW9ucyhvcHRpb25zKTtcclxuXHJcbiAgaWYgKGV4aXN0c1N5bmMoZ2V0WG1sRmlsZVBhdGgocnVuT3B0aW9ucykpKSB7XHJcbiAgICBybVN5bmMoZ2V0WG1sRmlsZVBhdGgocnVuT3B0aW9ucykpO1xyXG4gIH1cclxufTtcclxuIl19
320
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nob29scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVuLWRhdGEtc3luYy9zY2hvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQzdFLE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQztBQUMvQixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzVCLE9BQU8sR0FBWSxNQUFNLEtBQUssQ0FBQztBQUUvQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUMsT0FBTyxFQUVMLGdCQUFnQixFQUdoQixVQUFVLEVBQ1YsUUFBUSxHQUNULE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFHTCxjQUFjLEdBQ2YsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXZDLE1BQU0sV0FBVyxHQUFHLEtBQUssRUFBRSxPQUE0QixFQUFpQixFQUFFO0lBQ3hFLElBQUksVUFBVSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFO1FBQ3ZDLE9BQU87S0FDUjtJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsa0RBQWtELENBQUMsQ0FBQztJQUNoRSxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEQsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTtRQUMzQixNQUFNLElBQUksS0FBSyxDQUNiLG9EQUFvRCxRQUFRLENBQUMsTUFBTSxFQUFFLENBQ3RFLENBQUM7S0FD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UUFDOUIsTUFBTSxjQUFjLENBQ2xCLFVBQVUsRUFDVixpQkFBaUIsRUFDakIsNEJBQTRCLENBQzdCLENBQUM7UUFDRixvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQ2xDLFVBQXNDLEVBQUUsRUFDeEMsRUFBRTtJQUNGLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUUzQyxJQUFJLFVBQVUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRTtRQUMxQyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7S0FDcEM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZWFkU3RyZWFtLCBjcmVhdGVXcml0ZVN0cmVhbSwgZXhpc3RzU3luYywgcm1TeW5jIH0gZnJvbSBcImZzXCI7XHJcbmltcG9ydCBmZXRjaCBmcm9tIFwibm9kZS1mZXRjaFwiO1xyXG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIjtcclxuaW1wb3J0IHNheCwgeyBUYWcgfSBmcm9tIFwic2F4XCI7XHJcblxyXG5pbXBvcnQgeyBwaXBlbGluZSB9IGZyb20gXCJzdHJlYW0vcHJvbWlzZXNcIjtcclxuaW1wb3J0IHsgaW5zZXJ0Rm91bmRlcnMgfSBmcm9tIFwiLi4vZGIvZm91bmRlcnNcIjtcclxuaW1wb3J0IHsgaW5zZXJ0U2Nob29scyB9IGZyb20gXCIuLi9kYi9zY2hvb2xzXCI7XHJcbmltcG9ydCB7XHJcbiAgRm91bmRlcixcclxuICBNdW5pY2lwYWxpdHlUeXBlLFxyXG4gIFNjaG9vbCxcclxuICBTY2hvb2xMb2NhdGlvbixcclxuICBTY2hvb2xUeXBlLFxyXG4gIFN5bmNQYXJ0LFxyXG59IGZyb20gXCIuLi9kYi90eXBlc1wiO1xyXG5pbXBvcnQge1xyXG4gIE9wZW5EYXRhU3luY09wdGlvbnMsXHJcbiAgT3BlbkRhdGFTeW5jT3B0aW9uc1BhcnRpYWwsXHJcbiAgcHJlcGFyZU9wdGlvbnMsXHJcbn0gZnJvbSBcIi4uL3V0aWxzL2hlbHBlcnNcIjtcclxuaW1wb3J0IHsgcnVuU3luY1BhcnQgfSBmcm9tIFwiLi9jb21tb25cIjtcclxuXHJcbmNvbnN0IGRvd25sb2FkWG1sID0gYXN5bmMgKG9wdGlvbnM6IE9wZW5EYXRhU3luY09wdGlvbnMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcclxuICBpZiAoZXhpc3RzU3luYyhnZXRYbWxGaWxlUGF0aChvcHRpb25zKSkpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGNvbnNvbGUubG9nKFwiRG93bmxvYWRpbmcgYSBsYXJnZSBYTUwgZmlsZSB3aXRoIHNjaG9vbCBkYXRhLi4uXCIpO1xyXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2gob3B0aW9ucy5zY2hvb2xzWG1sVXJsKTtcclxuICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDApIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgYFRoZSBYTUwgZmlsZSBjb3VsZCBub3QgYmUgZG93bmxvYWRlZC4gSFRUUCBDb2RlOiAke3Jlc3BvbnNlLnN0YXR1c31gXHJcbiAgICApO1xyXG4gIH1cclxuICBhd2FpdCBwaXBlbGluZShyZXNwb25zZS5ib2R5LCBjcmVhdGVXcml0ZVN0cmVhbShnZXRYbWxGaWxlUGF0aChvcHRpb25zKSkpO1xyXG4gIGNvbnNvbGUubG9nKFwiRmluaXNoZWQgZG93bmxvYWRpbmcuXCIpO1xyXG59O1xyXG5cclxuZW51bSBYTUxTdGF0ZSB7XHJcbiAgTm9uZSxcclxuICBSZWRJem8sXHJcbiAgU2Nob29sTmFtZSxcclxuICBJem8sXHJcbiAgSWNvLFxyXG4gIFNjaG9vbFR5cGUsXHJcbiAgQ2FwYWNpdHksXHJcbiAgUnVpYW5Db2RlLFxyXG4gIEFkZHJlc3MsXHJcbiAgRm91bmRlck5hbWUsXHJcbiAgRm91bmRlclR5cGUsXHJcbiAgRm91bmRlckljbyxcclxufVxyXG5cclxuY29uc3QgU0NIT09MX1RZUEVfS0lOREVSR0FSVEVOID0gXCJBMDBcIjtcclxuY29uc3QgU0NIT09MX1RZUEVfRUxFTUVOVEFSWSA9IFwiQjAwXCI7XHJcblxyXG5jb25zdCBjcmVhdGVOZXdTY2hvb2wgPSAoKTogU2Nob29sID0+IHtcclxuICByZXR1cm4ge1xyXG4gICAgbmFtZTogXCJcIixcclxuICAgIHJlZGl6bzogXCJcIixcclxuICAgIGl6bzogXCJcIixcclxuICAgIGNhcGFjaXR5OiAwLFxyXG4gICAgbG9jYXRpb25zOiBbXSxcclxuICB9O1xyXG59O1xyXG5cclxuY29uc3QgZ2V0Q29ycmVjdEZvdW5kZXJUeXBlID0gKGZvdW5kZXJUeXBlOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xyXG4gIHJldHVybiBmb3VuZGVyVHlwZSA9PT0gXCJcIiA/IFwiMTAxXCIgOiBmb3VuZGVyVHlwZTtcclxufTtcclxuXHJcbmNvbnN0IGdldE11bmljaXBhbGl0eVR5cGUgPSAoZm91bmRlclR5cGU6IHN0cmluZyk6IE11bmljaXBhbGl0eVR5cGUgPT4ge1xyXG4gIHJldHVybiBmb3VuZGVyVHlwZSA9PT0gXCIyNjFcIlxyXG4gICAgPyBNdW5pY2lwYWxpdHlUeXBlLkNpdHlcclxuICAgIDogZm91bmRlclR5cGUgPT09IFwiMjYzXCJcclxuICAgID8gTXVuaWNpcGFsaXR5VHlwZS5EaXN0cmljdFxyXG4gICAgOiBNdW5pY2lwYWxpdHlUeXBlLk90aGVyO1xyXG59O1xyXG5cclxudHlwZSBTY2hvb2xBZGRyZXNzID0ge1xyXG4gIGl6bzogc3RyaW5nO1xyXG4gIGFkZHJlc3M6IHN0cmluZ1tdO1xyXG4gIHR5cGU6IFNjaG9vbFR5cGU7XHJcbn07XHJcblxyXG5jb25zdCBwcm9jZXNzU2Nob29sUmVnaXN0ZXJYbWwgPSBhc3luYyAoXHJcbiAgb3B0aW9uczogT3BlbkRhdGFTeW5jT3B0aW9uc1xyXG4pOiBQcm9taXNlPHtcclxuICBzY2hvb2xzOiBTY2hvb2xbXTtcclxuICBmb3VuZGVyczogTWFwPHN0cmluZywgRm91bmRlcj47XHJcbiAgc2Nob29sc1dpdGhvdXRSdWlhbjogU2Nob29sQWRkcmVzc1tdO1xyXG59PiA9PiB7XHJcbiAgbGV0IGN1cnJlbnRTY2hvb2xzOiBTY2hvb2xbXTtcclxuICBsZXQgY3VycmVudFJlZGl6bzogc3RyaW5nO1xyXG4gIGxldCBjdXJyZW50TmFtZTogc3RyaW5nO1xyXG4gIGxldCBjdXJyZW50SXpvOiBzdHJpbmc7XHJcbiAgbGV0IGN1cnJlbnRJY286IHN0cmluZztcclxuICBsZXQgY3VycmVudFR5cGU6IFNjaG9vbFR5cGUgfCBudWxsID0gbnVsbDtcclxuICBsZXQgY3VycmVudENhcGFjaXR5OiBudW1iZXI7XHJcbiAgbGV0IGN1cnJlbnRMb2NhdGlvbnM6IFNjaG9vbExvY2F0aW9uW10gPSBbXTtcclxuICBsZXQgc3RhdGU6IFhNTFN0YXRlID0gWE1MU3RhdGUuTm9uZTtcclxuICBsZXQgY3VycmVudEZvdW5kZXJzID0gW107XHJcbiAgbGV0IGN1cnJlbnRGb3VuZGVySWNvOiBzdHJpbmc7XHJcbiAgbGV0IGN1cnJlbnRGb3VuZGVyTmFtZTogc3RyaW5nO1xyXG4gIGxldCBjdXJyZW50Rm91bmRlclR5cGU6IHN0cmluZztcclxuICBsZXQgaXNSdWlhbkNvZGVTZXQgPSBmYWxzZTtcclxuICBsZXQgaXNSdWlhbkNvZGVNaXNzaW5nID0gZmFsc2U7XHJcbiAgbGV0IGN1cnJlbnRBZGRyZXNzID0gW107XHJcbiAgY29uc3QgZm91bmRlcnMgPSBuZXcgTWFwPHN0cmluZywgRm91bmRlcj4oKTtcclxuICBjb25zdCBzY2hvb2xzOiBTY2hvb2xbXSA9IFtdO1xyXG4gIGNvbnN0IHNjaG9vbHNXaXRob3V0UnVpYW46IFNjaG9vbEFkZHJlc3NbXSA9IFtdO1xyXG5cclxuICBjb25zdCBzdHJlYW1Qcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgY29uc3Qgc2F4U3RyZWFtID0gc2F4XHJcbiAgICAgIC5jcmVhdGVTdHJlYW0odHJ1ZSlcclxuICAgICAgLm9uKFwib3BlbnRhZ1wiLCAodGFnOiBUYWcpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHRhZy5uYW1lKSB7XHJcbiAgICAgICAgICBjYXNlIFwiUHJhdm5pU3ViamVrdFwiOlxyXG4gICAgICAgICAgICBjdXJyZW50U2Nob29scyA9IFtdO1xyXG4gICAgICAgICAgICBjdXJyZW50UmVkaXpvID0gXCJcIjtcclxuICAgICAgICAgICAgY3VycmVudE5hbWUgPSBcIlwiO1xyXG4gICAgICAgICAgICBjdXJyZW50SXpvID0gXCJcIjtcclxuICAgICAgICAgICAgY3VycmVudENhcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgaXNSdWlhbkNvZGVNaXNzaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIlJlZEl6b1wiOlxyXG4gICAgICAgICAgICBzdGF0ZSA9IFhNTFN0YXRlLlJlZEl6bztcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiUmVkUGxueU5hemV2XCI6XHJcbiAgICAgICAgICAgIHN0YXRlID0gWE1MU3RhdGUuU2Nob29sTmFtZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiSVpPXCI6XHJcbiAgICAgICAgICAgIHN0YXRlID0gWE1MU3RhdGUuSXpvO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJJQ09cIjpcclxuICAgICAgICAgICAgc3RhdGUgPSBYTUxTdGF0ZS5JY287XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIlNrb2xhRHJ1aFR5cFwiOlxyXG4gICAgICAgICAgICBzdGF0ZSA9IFhNTFN0YXRlLlNjaG9vbFR5cGU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIlNrb2xhS2FwYWNpdGFcIjpcclxuICAgICAgICAgICAgc3RhdGUgPSBYTUxTdGF0ZS5DYXBhY2l0eTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiTWlzdG9SVUFJTktvZFwiOlxyXG4gICAgICAgICAgICBpc1J1aWFuQ29kZVNldCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjdXJyZW50QWRkcmVzcyA9IFtdO1xyXG4gICAgICAgICAgICBzdGF0ZSA9IFhNTFN0YXRlLlJ1aWFuQ29kZTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiWnJpek5hemV2XCI6XHJcbiAgICAgICAgICAgIHN0YXRlID0gWE1MU3RhdGUuRm91bmRlck5hbWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIlpyaXpQcmF2bmlGb3JtYVwiOlxyXG4gICAgICAgICAgICBzdGF0ZSA9IFhNTFN0YXRlLkZvdW5kZXJUeXBlO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJNaXN0b0FkcmVzYTFcIjpcclxuICAgICAgICAgIGNhc2UgXCJNaXN0b0FkcmVzYTJcIjpcclxuICAgICAgICAgIGNhc2UgXCJNaXN0b0FkcmVzYTNcIjpcclxuICAgICAgICAgICAgc3RhdGUgPSBYTUxTdGF0ZS5BZGRyZXNzO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJacml6RGF0dW1OYXJvemVuaVwiOlxyXG4gICAgICAgICAgY2FzZSBcIlpyaXpJQ09cIjpcclxuICAgICAgICAgICAgc3RhdGUgPSBYTUxTdGF0ZS5Gb3VuZGVySWNvO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5vbihcImNsb3NldGFnXCIsICh0YWdOYW1lOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHRhZ05hbWUpIHtcclxuICAgICAgICAgIGNhc2UgXCJQcmF2bmlTdWJqZWt0XCI6XHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50U2Nob29scy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgc2Nob29scy5wdXNoKC4uLmN1cnJlbnRTY2hvb2xzKTtcclxuICAgICAgICAgICAgICBjdXJyZW50Rm91bmRlcnMuZm9yRWFjaCgoZm91bmRlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gZm91bmRlci5uYW1lICsgZm91bmRlci5pY287XHJcbiAgICAgICAgICAgICAgICBpZiAoZm91bmRlcnMuaGFzKGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgZm91bmRlcnMuZ2V0KGtleSkuc2Nob29scy5wdXNoKC4uLmN1cnJlbnRTY2hvb2xzKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIGZvdW5kZXJzLnNldChrZXksIHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBmb3VuZGVyLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvOiBmb3VuZGVyLmljbyxcclxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFR5cGU6IGZvdW5kZXIudHlwZSxcclxuICAgICAgICAgICAgICAgICAgICBtdW5pY2lwYWxpdHlUeXBlOiBnZXRNdW5pY2lwYWxpdHlUeXBlKGZvdW5kZXIudHlwZSksXHJcbiAgICAgICAgICAgICAgICAgICAgc2Nob29sczogWy4uLmN1cnJlbnRTY2hvb2xzXSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY3VycmVudEljbyA9IFwiXCI7XHJcbiAgICAgICAgICAgIGN1cnJlbnRGb3VuZGVycyA9IFtdO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlIFwiWnJpem92YXRlbFwiOlxyXG4gICAgICAgICAgICBpZiAoY3VycmVudEZvdW5kZXJJY28gPT09IFwiXCIgfHwgY3VycmVudEZvdW5kZXJOYW1lID09PSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgY3VycmVudEZvdW5kZXJzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgaWNvOiBjdXJyZW50SWNvLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogY3VycmVudE5hbWUsXHJcbiAgICAgICAgICAgICAgICB0eXBlOiBcIjIyNFwiLCAvLyBzLnIubyAobm90IGFsbCBhcmUgdGhvc2UsIGJ1dCB3ZSBkb24ndCBuZWVkIHRvIGRpZmZlcmVudGlhdGUgaGVyZSlcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjdXJyZW50Rm91bmRlcnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBpY286IGN1cnJlbnRGb3VuZGVySWNvLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogY3VycmVudEZvdW5kZXJOYW1lLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogZ2V0Q29ycmVjdEZvdW5kZXJUeXBlKGN1cnJlbnRGb3VuZGVyVHlwZSksXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY3VycmVudEZvdW5kZXJJY28gPSBcIlwiO1xyXG4gICAgICAgICAgICBjdXJyZW50Rm91bmRlck5hbWUgPSBcIlwiO1xyXG4gICAgICAgICAgICBjdXJyZW50Rm91bmRlclR5cGUgPSBcIlwiO1xyXG5cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFwiU2tvbGFaYXJpemVuaVwiOlxyXG4gICAgICAgICAgICBpZiAoY3VycmVudFR5cGUgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICBjdXJyZW50U2Nob29scy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGl6bzogY3VycmVudEl6byxcclxuICAgICAgICAgICAgICAgIG5hbWU6IGN1cnJlbnROYW1lLFxyXG4gICAgICAgICAgICAgICAgcmVkaXpvOiBjdXJyZW50UmVkaXpvLFxyXG4gICAgICAgICAgICAgICAgY2FwYWNpdHk6IGN1cnJlbnRDYXBhY2l0eSxcclxuICAgICAgICAgICAgICAgIHR5cGU6IGN1cnJlbnRUeXBlLFxyXG4gICAgICAgICAgICAgICAgbG9jYXRpb25zOiBjdXJyZW50TG9jYXRpb25zLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGN1cnJlbnRMb2NhdGlvbnMgPSBbXTtcclxuICAgICAgICAgICAgY3VycmVudFR5cGUgPSBudWxsO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgXCJTa29sYU1pc3RvVnlrb251Q2lubm9zdGlcIjpcclxuICAgICAgICAgICAgaWYgKGlzUnVpYW5Db2RlTWlzc2luZykge1xyXG4gICAgICAgICAgICAgIHNjaG9vbHNXaXRob3V0UnVpYW4ucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBpem86IGN1cnJlbnRJem8sXHJcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBjdXJyZW50QWRkcmVzcyxcclxuICAgICAgICAgICAgICAgIHR5cGU6IGN1cnJlbnRUeXBlLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBcIk1pc3RvUlVBSU5Lb2RcIjpcclxuICAgICAgICAgICAgaXNSdWlhbkNvZGVNaXNzaW5nID0gIWlzUnVpYW5Db2RlU2V0O1xyXG4gICAgICAgICAgY2FzZSBcIlJlZFBsbnlOYXpldlwiOlxyXG4gICAgICAgICAgY2FzZSBcIlJlZEl6b1wiOlxyXG4gICAgICAgICAgY2FzZSBcIklDT1wiOlxyXG4gICAgICAgICAgY2FzZSBcIklaT1wiOlxyXG4gICAgICAgICAgY2FzZSBcIlNrb2xhRHJ1aFR5cFwiOlxyXG4gICAgICAgICAgY2FzZSBcIlNrb2xhS2FwYWNpdGFcIjpcclxuICAgICAgICAgIGNhc2UgXCJacml6TmF6ZXZcIjpcclxuICAgICAgICAgIGNhc2UgXCJacml6SUNPXCI6XHJcbiAgICAgICAgICBjYXNlIFwiWnJpekRhdHVtTmFyb3plbmlcIjpcclxuICAgICAgICAgIGNhc2UgXCJacml6UHJhdm5pRm9ybWFcIjpcclxuICAgICAgICAgIGNhc2UgXCJNaXN0b0FkcmVzYTFcIjpcclxuICAgICAgICAgIGNhc2UgXCJNaXN0b0FkcmVzYTJcIjpcclxuICAgICAgICAgIGNhc2UgXCJNaXN0b0FkcmVzYTNcIjpcclxuICAgICAgICAgICAgc3RhdGUgPSBYTUxTdGF0ZS5Ob25lO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5vbihcInRleHRcIiwgKHRleHQ6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIHN3aXRjaCAoc3RhdGUpIHtcclxuICAgICAgICAgIGNhc2UgWE1MU3RhdGUuUmVkSXpvOlxyXG4gICAgICAgICAgICBjdXJyZW50UmVkaXpvID0gdGV4dDtcclxuICAgICAgICAgIGNhc2UgWE1MU3RhdGUuU2Nob29sTmFtZTpcclxuICAgICAgICAgICAgY3VycmVudE5hbWUgPSB0ZXh0O1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgWE1MU3RhdGUuSXpvOlxyXG4gICAgICAgICAgICBjdXJyZW50SXpvID0gdGV4dDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFhNTFN0YXRlLkljbzpcclxuICAgICAgICAgICAgY3VycmVudEljbyA9IHRleHQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBYTUxTdGF0ZS5TY2hvb2xUeXBlOlxyXG4gICAgICAgICAgICBpZiAodGV4dCA9PT0gU0NIT09MX1RZUEVfS0lOREVSR0FSVEVOKSB7XHJcbiAgICAgICAgICAgICAgY3VycmVudFR5cGUgPSBTY2hvb2xUeXBlLktpbmRlcmdhcnRlbjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0ZXh0ID09PSBTQ0hPT0xfVFlQRV9FTEVNRU5UQVJZKSB7XHJcbiAgICAgICAgICAgICAgY3VycmVudFR5cGUgPSBTY2hvb2xUeXBlLkVsZW1lbnRhcnk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFhNTFN0YXRlLlJ1aWFuQ29kZTpcclxuICAgICAgICAgICAgaXNSdWlhbkNvZGVTZXQgPSB0cnVlO1xyXG4gICAgICAgICAgICBjdXJyZW50TG9jYXRpb25zLnB1c2goe1xyXG4gICAgICAgICAgICAgIGFkZHJlc3NQb2ludElkOiBwYXJzZUludCh0ZXh0KSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBYTUxTdGF0ZS5BZGRyZXNzOlxyXG4gICAgICAgICAgICBjdXJyZW50QWRkcmVzcy5wdXNoKHRleHQpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIGNhc2UgWE1MU3RhdGUuRm91bmRlck5hbWU6XHJcbiAgICAgICAgICAgIGN1cnJlbnRGb3VuZGVyTmFtZSA9IHRleHQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBYTUxTdGF0ZS5Gb3VuZGVySWNvOlxyXG4gICAgICAgICAgICBjdXJyZW50Rm91bmRlckljbyA9IHRleHQ7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSBYTUxTdGF0ZS5Gb3VuZGVyVHlwZTpcclxuICAgICAgICAgICAgY3VycmVudEZvdW5kZXJUeXBlID0gdGV4dDtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlIFhNTFN0YXRlLkNhcGFjaXR5OlxyXG4gICAgICAgICAgICBjdXJyZW50Q2FwYWNpdHkgPSBwYXJzZUludCh0ZXh0KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAub24oXCJlcnJvclwiLCByZWplY3QpXHJcbiAgICAgIC5vbihcImVuZFwiLCByZXNvbHZlKTtcclxuXHJcbiAgICAvLyB3YW50ZWQgdG8gdXNlICdhd2FpdCBwaXBlbGluZShjcmVhdGVSZWFkU3RyZWFtKGdldFhtbEZpbGVQYXRoKG9wdGlvbnMpKSwgc2F4U3RyZWFtKSdcclxuICAgIC8vIGJ1dCB0aGUgcHJvZ3JhbSB3b3VsZCBxdWl0IHNwb250YW5lb3VzbHkgYWZ0ZXIgZmluaXNoaW5nIHN0cmVhbSAtIHVzaW5nIFByb21pc2UgaW5zdGVhZC5cclxuICAgIGNyZWF0ZVJlYWRTdHJlYW0oZ2V0WG1sRmlsZVBhdGgob3B0aW9ucykpLnBpcGUoc2F4U3RyZWFtKTtcclxuICB9KTtcclxuXHJcbiAgYXdhaXQgc3RyZWFtUHJvbWlzZTtcclxuXHJcbiAgcmV0dXJuIHsgc2Nob29scywgZm91bmRlcnMsIHNjaG9vbHNXaXRob3V0UnVpYW4gfTtcclxufTtcclxuXHJcbmNvbnN0IGltcG9ydERhdGFUb0RiID0gYXN5bmMgKFxyXG4gIG9wdGlvbnM6IE9wZW5EYXRhU3luY09wdGlvbnMsXHJcbiAgc2F2ZUZvdW5kZXJzVG9Dc3Y6IGJvb2xlYW4gPSBmYWxzZSxcclxuICBzYXZlU2Nob29sc1dpdGhvdXRSdWlhblRvQ3N2OiBib29sZWFuID0gZmFsc2VcclxuKSA9PiB7XHJcbiAgY29uc3QgeyBzY2hvb2xzLCBmb3VuZGVycywgc2Nob29sc1dpdGhvdXRSdWlhbiB9ID1cclxuICAgIGF3YWl0IHByb2Nlc3NTY2hvb2xSZWdpc3RlclhtbChvcHRpb25zKTtcclxuXHJcbiAgaWYgKHNhdmVGb3VuZGVyc1RvQ3N2KSB7XHJcbiAgICBjb25zdCBjc3ZGaWxlID0gXCJmb3VuZGVycy5jc3ZcIjtcclxuXHJcbiAgICBpZiAoZXhpc3RzU3luYyhjc3ZGaWxlKSkge1xyXG4gICAgICBybVN5bmMoY3N2RmlsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGNzdiA9IGNyZWF0ZVdyaXRlU3RyZWFtKGNzdkZpbGUsIHtcclxuICAgICAgZmxhZ3M6IFwiYVwiLFxyXG4gICAgfSk7XHJcbiAgICBjc3Yud3JpdGUoXCJJxIxPO1rFmWl6b3ZhdGVsO1Byw6F2bsOtIGZvcm1hO1BvxI1ldCDFoWtvbDvFoGtvbHlcXG5cIik7XHJcbiAgICBmb3VuZGVycy5mb3JFYWNoKChmb3VuZGVyKSA9PiB7XHJcbiAgICAgIGNzdi53cml0ZShcclxuICAgICAgICBgIyR7Zm91bmRlci5pY299OyR7Zm91bmRlci5uYW1lfTske2ZvdW5kZXIub3JpZ2luYWxUeXBlfTske1xyXG4gICAgICAgICAgZm91bmRlci5zY2hvb2xzLmxlbmd0aFxyXG4gICAgICAgIH07JHtmb3VuZGVyLnNjaG9vbHMubWFwKChzY2hvb2wpID0+IHNjaG9vbC5uYW1lKS5qb2luKFwiLS0tXCIpfVxcbmBcclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gICAgY3N2LmVuZCgpO1xyXG4gIH1cclxuXHJcbiAgaWYgKHNhdmVTY2hvb2xzV2l0aG91dFJ1aWFuVG9Dc3YpIHtcclxuICAgIGNvbnN0IGNzdkZpbGUgPSBcInNjaG9vbHNXaXRob3V0UnVpYW4uY3N2XCI7XHJcblxyXG4gICAgaWYgKGV4aXN0c1N5bmMoY3N2RmlsZSkpIHtcclxuICAgICAgcm1TeW5jKGNzdkZpbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBjc3YgPSBjcmVhdGVXcml0ZVN0cmVhbShjc3ZGaWxlLCB7XHJcbiAgICAgIGZsYWdzOiBcImFcIixcclxuICAgIH0pO1xyXG4gICAgY3N2LndyaXRlKFwiSVpPO0plIG1hdGXFmXNrw6E7SmUgesOha2xhZG7DrTthZHJlc2ExO2FkcmVzYTI7YWRyZXNhM1xcblwiKTtcclxuICAgIHNjaG9vbHNXaXRob3V0UnVpYW4uZm9yRWFjaCgoc2Nob29sQWRkcmVzcykgPT4ge1xyXG4gICAgICBjc3Yud3JpdGUoXHJcbiAgICAgICAgYCMke3NjaG9vbEFkZHJlc3MuaXpvfTske1xyXG4gICAgICAgICAgc2Nob29sQWRkcmVzcy50eXBlID09PSBTY2hvb2xUeXBlLktpbmRlcmdhcnRlbiA/IFwiVFJVRVwiIDogXCJGQUxTRVwiXHJcbiAgICAgICAgfTske1xyXG4gICAgICAgICAgc2Nob29sQWRkcmVzcy50eXBlID09PSBTY2hvb2xUeXBlLkVsZW1lbnRhcnkgPyBcIlRSVUVcIiA6IFwiRkFMU0VcIlxyXG4gICAgICAgIH07JHtzY2hvb2xBZGRyZXNzLmFkZHJlc3Muam9pbihcIjtcIil9XFxuYFxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgICBjc3YuZW5kKCk7XHJcbiAgfVxyXG5cclxuICBhd2FpdCBpbnNlcnRTY2hvb2xzKHNjaG9vbHMpO1xyXG5cclxuICBhd2FpdCBpbnNlcnRGb3VuZGVycyhBcnJheS5mcm9tKGZvdW5kZXJzLnZhbHVlcygpKSk7XHJcbn07XHJcblxyXG5jb25zdCBnZXRYbWxGaWxlUGF0aCA9IChvcHRpb25zOiBPcGVuRGF0YVN5bmNPcHRpb25zUGFydGlhbCk6IHN0cmluZyA9PiB7XHJcbiAgcmV0dXJuIGpvaW4ob3B0aW9ucy50bXBEaXIsIG9wdGlvbnMuc2Nob29sc1htbEZpbGVOYW1lKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBkb3dubG9hZEFuZEltcG9ydFNjaG9vbHMgPSBhc3luYyAoXHJcbiAgb3B0aW9uczogT3BlbkRhdGFTeW5jT3B0aW9uc1BhcnRpYWwgPSB7fSxcclxuICBzYXZlRm91bmRlcnNUb0NzdjogYm9vbGVhbiA9IGZhbHNlLFxyXG4gIHNhdmVTY2hvb2xzV2l0aG91dFJ1aWFuVG9Dc3Y6IGJvb2xlYW4gPSBmYWxzZVxyXG4pID0+IHtcclxuICBhd2FpdCBydW5TeW5jUGFydChTeW5jUGFydC5TY2hvb2xzLCBbU3luY1BhcnQuQWRkcmVzc1BvaW50c10sIGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IHJ1bk9wdGlvbnMgPSBwcmVwYXJlT3B0aW9ucyhvcHRpb25zKTtcclxuXHJcbiAgICBhd2FpdCBkb3dubG9hZFhtbChydW5PcHRpb25zKTtcclxuICAgIGF3YWl0IGltcG9ydERhdGFUb0RiKFxyXG4gICAgICBydW5PcHRpb25zLFxyXG4gICAgICBzYXZlRm91bmRlcnNUb0NzdixcclxuICAgICAgc2F2ZVNjaG9vbHNXaXRob3V0UnVpYW5Ub0NzdlxyXG4gICAgKTtcclxuICAgIGRlbGV0ZVNjaG9vbHNYbWxGaWxlKHJ1bk9wdGlvbnMpO1xyXG4gIH0pO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGRlbGV0ZVNjaG9vbHNYbWxGaWxlID0gKFxyXG4gIG9wdGlvbnM6IE9wZW5EYXRhU3luY09wdGlvbnNQYXJ0aWFsID0ge31cclxuKSA9PiB7XHJcbiAgY29uc3QgcnVuT3B0aW9ucyA9IHByZXBhcmVPcHRpb25zKG9wdGlvbnMpO1xyXG5cclxuICBpZiAoZXhpc3RzU3luYyhnZXRYbWxGaWxlUGF0aChydW5PcHRpb25zKSkpIHtcclxuICAgIHJtU3luYyhnZXRYbWxGaWxlUGF0aChydW5PcHRpb25zKSk7XHJcbiAgfVxyXG59O1xyXG4iXX0=
@@ -377,7 +377,7 @@ export const getNewSchool = async ({ name, founder, lineNumber, required, onErro
377
377
  izo: "",
378
378
  };
379
379
  if (founder !== null) {
380
- const { school, errors } = findSchool(name, founder.schools, required ? undefined : 15);
380
+ const { school, errors } = findSchool(name, founder.schools, required ? undefined : 4);
381
381
  if (errors.length > 0) {
382
382
  onError({ lineNumber, line: name, errors });
383
383
  }
@@ -436,4 +436,4 @@ const roundToNDecimalPlaces = (toRound, decimalPlaces) => {
436
436
  return (Math.round(toRound * Math.pow(10, decimalPlaces)) /
437
437
  Math.pow(10, decimalPlaces));
438
438
  };
439
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVldC1tYXJrZG93bi9zbWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsbUJBQW1CLEdBQ3BCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFXLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9FLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4Qiw0QkFBNEIsRUFDNUIsMEJBQTBCLEVBQzFCLG1CQUFtQixHQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQTBCOUMsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsS0FBSyxFQUFFLEVBQ2xELEtBQUssRUFDTCxZQUFZLEdBQUcsRUFBRSxFQUNqQixPQUFPLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUNsQixTQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUNwQixlQUFlLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUMxQiw0QkFBNEIsR0FBRyxLQUFLLEdBQ2hCLEVBQTJCLEVBQUU7SUFDakQsSUFBSTtRQUNGLE1BQU0sS0FBSyxHQUFhO1lBQ3RCLG1CQUFtQixFQUFFLElBQUk7WUFDekIseUJBQXlCLEVBQUUsSUFBSTtZQUMvQixXQUFXLEVBQUUsSUFBSTtZQUNqQixnQkFB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LENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFlLEVBQUUsSUFBWSxFQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLE9BQU87SUFDUCxXQUFXLEVBQUUsQ0FBQztJQUNkLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7Q0FDM0IsQ0FBQyxDQUFDO0FBRUgsTUFBTSxxQkFBcUIsR0FBRyxDQUM1QixPQUFlLEVBQ2YsYUFBcUIsRUFDYixFQUFFO0lBQ1YsT0FBTyxDQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUM1QixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBjaGVja1N0cmVldEV4aXN0cyxcclxuICBmaW5kQWRkcmVzc1BvaW50cyxcclxuICBnZXRBZGRyZXNzUG9pbnRCeUlkLFxyXG59IGZyb20gXCIuLi9kYi9hZGRyZXNzLXBvaW50c1wiO1xyXG5pbXBvcnQgeyBkaXNjb25uZWN0S25leCB9IGZyb20gXCIuLi9kYi9kYlwiO1xyXG5pbXBvcnQgeyBmaW5kRm91bmRlciwgZ2V0Rm91bmRlckJ5SWQgfSBmcm9tIFwiLi4vZGIvZm91bmRlcnNcIjtcclxuaW1wb3J0IHsgZmluZFNjaG9vbCB9IGZyb20gXCIuLi9kYi9zY2hvb2xzXCI7XHJcbmltcG9ydCB7IEZvdW5kZXIsIE11bmljaXBhbGl0eVR5cGUsIGZvdW5kZXJUb011bmljaXBhbGl0eSB9IGZyb20gXCIuLi9kYi90eXBlc1wiO1xyXG5pbXBvcnQge1xyXG4gIGdldE11bmljaXBhbGl0eVBhcnRSZXN1bHQsXHJcbiAgZ2V0UmVzdE9mTXVuaWNpcGFsaXR5UGFydCxcclxuICBnZXRTd2l0Y2hNdW5pY2lwYWxpdHksXHJcbiAgZ2V0V2hvbGVNdW5pY2lwYWxpdHksXHJcbiAgaXNNdW5pY2lwYWxpdHlTd2l0Y2gsXHJcbiAgaXNSZXN0T2ZNdW5pY2lwYWxpdHlMaW5lLFxyXG4gIGlzUmVzdE9mTXVuaWNpcGFsaXR5UGFydExpbmUsXHJcbiAgaXNSZXN0V2l0aE5vU3RyZWV0TmFtZUxpbmUsXHJcbiAgaXNXaG9sZU11bmljaXBhbGl0eSxcclxufSBmcm9tIFwiLi9tdW5pY2lwYWxpdHlcIjtcclxuaW1wb3J0IHsgcGFyc2VMaW5lIH0gZnJvbSBcIi4vc21kLWxpbmUtcGFyc2VyXCI7XHJcbmltcG9ydCB7XHJcbiAgQWRkcmVzc1BvaW50LFxyXG4gIEVycm9yQ2FsbGJhY2tQYXJhbXMsXHJcbiAgRXhwb3J0QWRkcmVzc1BvaW50LFxyXG4gIEludGVybWVkaWF0ZUFyZWEsXHJcbiAgSW50ZXJtZWRpYXRlTXVuaWNpcGFsaXR5LFxyXG4gIEludGVybWVkaWF0ZU11bmljaXBhbGl0eVJlc3VsdCxcclxuICBJbnRlcm1lZGlhdGVTY2hvb2wsXHJcbiAgTXVuaWNpcGFsaXR5LFxyXG4gIFByb2Nlc3NMaW5lQ2FsbGJhY2tQYXJhbXMsXHJcbiAgUHJvY2Vzc0xpbmVQYXJhbXMsXHJcbiAgU2Nob29sLFxyXG4gIFNtZEVycm9yLFxyXG4gIFNtZFN0YXRlLFxyXG59IGZyb20gXCIuL3R5cGVzXCI7XHJcblxyXG5pbnRlcmZhY2UgUGFyc2VPcmRpbmFuY2VQcm9wcyB7XHJcbiAgbGluZXM6IHN0cmluZ1tdO1xyXG4gIGluaXRpYWxTdGF0ZT86IFBhcnRpYWw8U21kU3RhdGU+O1xyXG4gIG9uRXJyb3I/OiAocGFyYW1zOiBFcnJvckNhbGxiYWNrUGFyYW1zKSA9PiB2b2lkO1xyXG4gIG9uV2FybmluZz86IChwYXJhbXM6IEVycm9yQ2FsbGJhY2tQYXJhbXMpID0+IHZvaWQ7XHJcbiAgb25Qcm9jZXNzZWRMaW5lPzogKHBhcmFtczogUHJvY2Vzc0xpbmVDYWxsYmFja1BhcmFtcykgPT4gdm9pZDtcclxuICBpbmNsdWRlVW5tYXBwZWRBZGRyZXNzUG9pbnRzOiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgcGFyc2VPcmRpbmFuY2VUb0FkZHJlc3NQb2ludHMgPSBhc3luYyAoe1xyXG4gIGxpbmVzLFxyXG4gIGluaXRpYWxTdGF0ZSA9IHt9LFxyXG4gIG9uRXJyb3IgPSAoKSA9PiB7fSxcclxuICBvbldhcm5pbmcgPSAoKSA9PiB7fSxcclxuICBvblByb2Nlc3NlZExpbmUgPSAoKSA9PiB7fSxcclxuICBpbmNsdWRlVW5tYXBwZWRBZGRyZXNzUG9pbnRzID0gZmFsc2UsXHJcbn06IFBhcnNlT3JkaW5hbmNlUHJvcHMpOiBQcm9taXNlPE11bmljaXBhbGl0eVtdPiA9PiB7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHN0YXRlOiBTbWRTdGF0ZSA9IHtcclxuICAgICAgY3VycmVudE11bmljaXBhbGl0eTogbnVsbCxcclxuICAgICAgY3VycmVudEZpbHRlck11bmljaXBhbGl0eTogbnVsbCxcclxuICAgICAgY3VycmVudEFyZWE6IG51bGwsXHJcbiAgICAgIHNjaG9vbHNDb21wbGV0ZWQ6IGZhbHNlLFxyXG4gICAgICBhcmVhQ291bnQ6IDAsXHJcbiAgICAgIHJlc3RzOiB7XHJcbiAgICAgICAgbm9TdHJlZXROYW1lQXJlYToge1xyXG4gICAgICAgICAgYXJlYUluZGV4OiBudWxsLFxyXG4gICAgICAgICAgbGluZU51bWJlcjogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIG11bmljaXBhbGl0eVBhcnRzOiBbXSxcclxuICAgICAgICB3aG9sZU11bmljaXBhbGl0eUFyZWE6IHtcclxuICAgICAgICAgIGFyZWFJbmRleDogbnVsbCxcclxuICAgICAgICAgIGxpbmVOdW1iZXI6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBpbmNsdWRlVW5tYXBwZWRBZGRyZXNzUG9pbnRzLFxyXG4gICAgICB9LFxyXG4gICAgICBtdW5pY2lwYWxpdGllczogW10sXHJcbiAgICAgIC4uLmluaXRpYWxTdGF0ZSxcclxuICAgIH07XHJcblxyXG4gICAgbGV0IGxpbmVOdW1iZXIgPSAxO1xyXG5cclxuICAgIGZvciAoY29uc3QgcmF3TGluZSBvZiBsaW5lcykge1xyXG4gICAgICBjb25zdCBsaW5lID0gY2xlYW5MaW5lKHJhd0xpbmUpO1xyXG4gICAgICBhd2FpdCBwcm9jZXNzT25lTGluZSh7XHJcbiAgICAgICAgbGluZSxcclxuICAgICAgICByYXdMaW5lOiByYXdMaW5lLnRyaW0oKSxcclxuICAgICAgICBzdGF0ZSxcclxuICAgICAgICBsaW5lTnVtYmVyLFxyXG4gICAgICAgIG9uRXJyb3IsXHJcbiAgICAgICAgb25XYXJuaW5nLFxyXG4gICAgICB9KTtcclxuICAgICAgb25Qcm9jZXNzZWRMaW5lKHsgbGluZU51bWJlciwgbGluZSB9KTtcclxuICAgICAgbGluZU51bWJlcisrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdGF0ZS5jdXJyZW50QXJlYSAhPSBudWxsKSB7XHJcbiAgICAgIGlmIChzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5ID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH1cclxuICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5hcmVhcy5wdXNoKG1hcEFyZWFGb3JFeHBvcnQoc3RhdGUuY3VycmVudEFyZWEpKTtcclxuICAgIH1cclxuXHJcbiAgICBhd2FpdCBjb21wbGV0ZUN1cnJlbnRNdW5pY2lwYWxpdHkoc3RhdGUpO1xyXG5cclxuICAgIHJldHVybiBzdGF0ZS5tdW5pY2lwYWxpdGllcztcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgfSBmaW5hbGx5IHtcclxuICAgIGF3YWl0IGRpc2Nvbm5lY3RLbmV4KCk7XHJcbiAgfVxyXG4gIHJldHVybiBbXTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0TXVuaWNpcGFsaXR5ID0gKFxyXG4gIG11bmljaXBhbGl0eTogSW50ZXJtZWRpYXRlTXVuaWNpcGFsaXR5XHJcbik6IE11bmljaXBhbGl0eSA9PiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIG11bmljaXBhbGl0eU5hbWU6IG11bmljaXBhbGl0eS5tdW5pY2lwYWxpdHlOYW1lLFxyXG4gICAgYXJlYXM6IG11bmljaXBhbGl0eS5hcmVhcy5tYXAoKGFyZWEpID0+ICh7XHJcbiAgICAgIGluZGV4OiBhcmVhLmluZGV4LFxyXG4gICAgICBzY2hvb2xzOiBhcmVhLnNjaG9vbHMsXHJcbiAgICAgIGFkZHJlc3NlczogQXJyYXkuZnJvbShhcmVhLmFkZHJlc3NNYXAudmFsdWVzKCkpLmZpbHRlcihcclxuICAgICAgICAocG9pbnQpID0+IHBvaW50LmxhdCAhPT0gMCAmJiBwb2ludC5sbmcgIT09IDBcclxuICAgICAgKSxcclxuICAgIH0pKSxcclxuICAgIGNvZGU6IG11bmljaXBhbGl0eS5mb3VuZGVyLm11bmljaXBhbGl0eUNvZGUsXHJcbiAgICBtdW5pY2lwYWxpdHlUeXBlOlxyXG4gICAgICBtdW5pY2lwYWxpdHkuZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHlcclxuICAgICAgICA/IFwiY2l0eVwiXHJcbiAgICAgICAgOiBcImRpc3RyaWN0XCIsXHJcbiAgICBjaXR5Q29kZXM6IFsuLi5uZXcgU2V0KG11bmljaXBhbGl0eS5jaXR5Q29kZXMpXSxcclxuICAgIGRpc3RyaWN0Q29kZXM6IFsuLi5uZXcgU2V0KG11bmljaXBhbGl0eS5kaXN0cmljdENvZGVzKV0sXHJcbiAgICB1bm1hcHBlZFBvaW50czogbXVuaWNpcGFsaXR5LnVubWFwcGVkUG9pbnRzLmZpbHRlcihcclxuICAgICAgKHBvaW50KSA9PiBwb2ludC5sYXQgIT09IDAgJiYgcG9pbnQubG5nICE9PSAwXHJcbiAgICApLFxyXG4gIH07XHJcbn07XHJcblxyXG5jb25zdCBwcm9jZXNzT25lTGluZSA9IGFzeW5jIChwYXJhbXM6IFByb2Nlc3NMaW5lUGFyYW1zKSA9PiB7XHJcbiAgY29uc3QgeyBsaW5lLCBsaW5lTnVtYmVyLCBzdGF0ZSB9ID0gcGFyYW1zO1xyXG5cclxuICBpZiAobGluZVswXSA9PT0gXCIjXCIpIHtcclxuICAgIGF3YWl0IHByb2Nlc3NNdW5pY2lwYWxpdHlMaW5lKHBhcmFtcyk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpZiAobGluZSA9PT0gXCJcIikge1xyXG4gICAgLy8gZW5kIG9mIHNjaG9vbFxyXG4gICAgcHJvY2Vzc0VtcHR5TGluZShwYXJhbXMpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgaWYgKGxpbmVbMF0gPT09IFwiIVwiKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpZiAoc3RhdGUuY3VycmVudEFyZWEgPT09IG51bGwpIHtcclxuICAgIGF3YWl0IHByb2Nlc3NGaXJzdFNjaG9vbExpbmUocGFyYW1zKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGlmIChzdGF0ZS5zY2hvb2xzQ29tcGxldGVkID09PSBmYWxzZSkge1xyXG4gICAgY29uc3QgZm91bmROZXh0U2Nob29sID0gYXdhaXQgcHJvY2Vzc05leHRTY2hvb2xMaW5lKHBhcmFtcyk7XHJcbiAgICBpZiAoZm91bmROZXh0U2Nob29sKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN0YXRlLnNjaG9vbHNDb21wbGV0ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaWYgKGlzTXVuaWNpcGFsaXR5U3dpdGNoKGxpbmUpKSB7XHJcbiAgICBwcm9jZXNzTXVuaWNpcGFsaXR5U3dpdGNoTGluZShwYXJhbXMpO1xyXG4gIH0gZWxzZSBpZiAoaXNXaG9sZU11bmljaXBhbGl0eShsaW5lKSkge1xyXG4gICAgYXdhaXQgcHJvY2Vzc1dob2xlTXVuaWNpcGFsaXR5TGluZShwYXJhbXMpO1xyXG4gIH0gZWxzZSBpZiAoaXNSZXN0V2l0aE5vU3RyZWV0TmFtZUxpbmUobGluZSkpIHtcclxuICAgIHN0YXRlLnJlc3RzLm5vU3RyZWV0TmFtZUFyZWEgPSB7XHJcbiAgICAgIGFyZWFJbmRleDogc3RhdGUuY3VycmVudEFyZWEuaW5kZXgsXHJcbiAgICAgIGxpbmVOdW1iZXIsXHJcbiAgICB9O1xyXG4gIH0gZWxzZSBpZiAoaXNSZXN0T2ZNdW5pY2lwYWxpdHlMaW5lKGxpbmUpKSB7XHJcbiAgICBzdGF0ZS5yZXN0cy53aG9sZU11bmljaXBhbGl0eUFyZWEgPSB7XHJcbiAgICAgIGFyZWFJbmRleDogc3RhdGUuY3VycmVudEFyZWEuaW5kZXgsXHJcbiAgICAgIGxpbmVOdW1iZXIsXHJcbiAgICB9O1xyXG4gIH0gZWxzZSBpZiAoaXNSZXN0T2ZNdW5pY2lwYWxpdHlQYXJ0TGluZShsaW5lKSkge1xyXG4gICAgY29uc3QgeyBtdW5pY2lwYWxpdHlQYXJ0Q29kZSwgZXJyb3JzIH0gPSBhd2FpdCBnZXRSZXN0T2ZNdW5pY2lwYWxpdHlQYXJ0KFxyXG4gICAgICBsaW5lLFxyXG4gICAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXJcclxuICAgICk7XHJcbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgcGFyYW1zLm9uRXJyb3IoeyBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBsaW5lLCBlcnJvcnMgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdGF0ZS5yZXN0cy5tdW5pY2lwYWxpdHlQYXJ0cy5wdXNoKHtcclxuICAgICAgICBtdW5pY2lwYWxpdHlQYXJ0Q29kZSxcclxuICAgICAgICBhcmVhSW5kZXg6IHN0YXRlLmN1cnJlbnRBcmVhLmluZGV4LFxyXG4gICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBhd2FpdCBwcm9jZXNzQWRkcmVzc1BvaW50TGluZShwYXJhbXMpO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NNdW5pY2lwYWxpdHlMaW5lID0gYXN5bmMgKHtcclxuICBsaW5lLFxyXG4gIGxpbmVOdW1iZXIsXHJcbiAgc3RhdGUsXHJcbiAgb25FcnJvcixcclxufTogUHJvY2Vzc0xpbmVQYXJhbXMpID0+IHtcclxuICBpZiAoc3RhdGUuY3VycmVudEFyZWEgIT09IG51bGwpIHtcclxuICAgIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuYXJlYXMucHVzaChzdGF0ZS5jdXJyZW50QXJlYSk7XHJcbiAgfVxyXG5cclxuICBhd2FpdCBjb21wbGV0ZUN1cnJlbnRNdW5pY2lwYWxpdHkoc3RhdGUpO1xyXG5cclxuICBjb25zdCB7IG11bmljaXBhbGl0eSwgZXJyb3JzIH0gPSBhd2FpdCBnZXROZXdNdW5pY2lwYWxpdHlCeU5hbWUobGluZSk7XHJcbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICBvbkVycm9yKHsgbGluZU51bWJlciwgbGluZSwgZXJyb3JzIH0pO1xyXG4gIH1cclxuICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5ID0gbXVuaWNpcGFsaXR5O1xyXG4gIHN0YXRlLmN1cnJlbnRGaWx0ZXJNdW5pY2lwYWxpdHkgPSBmb3VuZGVyVG9NdW5pY2lwYWxpdHkoXHJcbiAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXJcclxuICApO1xyXG5cclxuICBzdGF0ZS5jdXJyZW50QXJlYSA9IG51bGw7XHJcbn07XHJcblxyXG5jb25zdCBjb21wbGV0ZUN1cnJlbnRNdW5pY2lwYWxpdHkgPSBhc3luYyAoc3RhdGU6IFNtZFN0YXRlKSA9PiB7XHJcbiAgaWYgKHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkgIT09IG51bGwpIHtcclxuICAgIGF3YWl0IGFkZFJlc3RzKHN0YXRlKTtcclxuICAgIHN0YXRlLm11bmljaXBhbGl0aWVzLnB1c2goY29udmVydE11bmljaXBhbGl0eShzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5KSk7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgcHJvY2Vzc0VtcHR5TGluZSA9ICh7IHN0YXRlIH06IFByb2Nlc3NMaW5lUGFyYW1zKSA9PiB7XHJcbiAgaWYgKHN0YXRlLmN1cnJlbnRBcmVhICE9PSBudWxsKSB7XHJcbiAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmFyZWFzLnB1c2goc3RhdGUuY3VycmVudEFyZWEpO1xyXG4gICAgc3RhdGUuY3VycmVudEFyZWEgPSBudWxsO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NGaXJzdFNjaG9vbExpbmUgPSBhc3luYyAoe1xyXG4gIHJhd0xpbmUsXHJcbiAgbGluZU51bWJlcixcclxuICBzdGF0ZSxcclxuICBvbkVycm9yLFxyXG59OiBQcm9jZXNzTGluZVBhcmFtcykgPT4ge1xyXG4gIGlmIChzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5ID09PSBudWxsKSB7XHJcbiAgICBvbkVycm9yKHtcclxuICAgICAgbGluZU51bWJlcixcclxuICAgICAgbGluZTogcmF3TGluZSxcclxuICAgICAgZXJyb3JzOiBbXHJcbiAgICAgICAgd2hvbGVMaW5lRXJyb3IoXHJcbiAgICAgICAgICBcIkRlZmluaWNpIMWha29seSBtdXPDrSBwxZllZGNow6F6ZXQgZGVmaW5pY2UgesWZaXpvdmF0ZWxlICh1dm96ZW7DoSAnIycsIG5hcMWZLiAnIyBTdHJha29uaWNlJykuXCIsXHJcbiAgICAgICAgICByYXdMaW5lXHJcbiAgICAgICAgKSxcclxuICAgICAgXSxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBzdGF0ZS5jdXJyZW50QXJlYSA9IHtcclxuICAgIGluZGV4OiBzdGF0ZS5hcmVhQ291bnQrKyxcclxuICAgIHNjaG9vbHM6IFtcclxuICAgICAgYXdhaXQgZ2V0TmV3U2Nob29sKHtcclxuICAgICAgICBuYW1lOiByYXdMaW5lLFxyXG4gICAgICAgIGZvdW5kZXI6IHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlcixcclxuICAgICAgICBsaW5lTnVtYmVyLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIG9uRXJyb3IsXHJcbiAgICAgIH0pLFxyXG4gICAgXSxcclxuICAgIGFkZHJlc3NlczogW10sXHJcbiAgICBhZGRyZXNzTWFwOiBuZXcgTWFwPG51bWJlciwgRXhwb3J0QWRkcmVzc1BvaW50PigpLFxyXG4gICAgYWxsU2Nob29sc0FkZGVkOiBmYWxzZSxcclxuICB9O1xyXG4gIHN0YXRlLnNjaG9vbHNDb21wbGV0ZWQgPSBmYWxzZTtcclxuICBzdGF0ZS5jdXJyZW50RmlsdGVyTXVuaWNpcGFsaXR5ID0gZm91bmRlclRvTXVuaWNpcGFsaXR5KFxyXG4gICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgKTtcclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NOZXh0U2Nob29sTGluZSA9IGFzeW5jICh7XHJcbiAgbGluZSxcclxuICBsaW5lTnVtYmVyLFxyXG4gIHN0YXRlLFxyXG59OiBQcm9jZXNzTGluZVBhcmFtcyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xyXG4gIGNvbnN0IHNjaG9vbCA9IGF3YWl0IGdldE5ld1NjaG9vbCh7XHJcbiAgICBuYW1lOiBsaW5lLFxyXG4gICAgZm91bmRlcjogc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyLFxyXG4gICAgbGluZU51bWJlcixcclxuICAgIHJlcXVpcmVkOiBmYWxzZSxcclxuICAgIG9uRXJyb3I6ICgpID0+IHt9LFxyXG4gIH0pO1xyXG5cclxuICBpZiAoc2Nob29sID09PSBudWxsKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzdGF0ZS5jdXJyZW50QXJlYS5zY2hvb2xzLnB1c2goc2Nob29sKTtcclxuICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NNdW5pY2lwYWxpdHlTd2l0Y2hMaW5lID0gYXN5bmMgKHtcclxuICBsaW5lLFxyXG4gIHN0YXRlLFxyXG4gIGxpbmVOdW1iZXIsXHJcbiAgb25FcnJvcixcclxufTogUHJvY2Vzc0xpbmVQYXJhbXMpID0+IHtcclxuICBjb25zdCB7IG11bmljaXBhbGl0eSwgZXJyb3JzIH0gPSBhd2FpdCBnZXRTd2l0Y2hNdW5pY2lwYWxpdHkoXHJcbiAgICBsaW5lLFxyXG4gICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgKTtcclxuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgIG9uRXJyb3IoeyBsaW5lTnVtYmVyLCBsaW5lLCBlcnJvcnMgfSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHN0YXRlLmN1cnJlbnRGaWx0ZXJNdW5pY2lwYWxpdHkgPSBtdW5pY2lwYWxpdHk7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgcHJvY2Vzc1dob2xlTXVuaWNpcGFsaXR5TGluZSA9IGFzeW5jICh7XHJcbiAgbGluZSxcclxuICBzdGF0ZSxcclxuICBsaW5lTnVtYmVyLFxyXG4gIG9uRXJyb3IsXHJcbn06IFByb2Nlc3NMaW5lUGFyYW1zKSA9PiB7XHJcbiAgY29uc3QgeyBtdW5pY2lwYWxpdHksIGVycm9ycyB9ID0gYXdhaXQgZ2V0V2hvbGVNdW5pY2lwYWxpdHkoXHJcbiAgICBsaW5lLFxyXG4gICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgKTtcclxuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgIG9uRXJyb3IoeyBsaW5lTnVtYmVyLCBsaW5lLCBlcnJvcnMgfSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGlmIChtdW5pY2lwYWxpdHkudHlwZSA9PT0gTXVuaWNpcGFsaXR5VHlwZS5DaXR5KSB7XHJcbiAgICAgIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuY2l0eUNvZGVzLnB1c2gobXVuaWNpcGFsaXR5LmNvZGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5kaXN0cmljdENvZGVzLnB1c2gobXVuaWNpcGFsaXR5LmNvZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFkZHJlc3NQb2ludHMgPSBhd2FpdCBmaW5kQWRkcmVzc1BvaW50cyh7XHJcbiAgICAgIHR5cGU6IFwid2hvbGVNdW5pY2lwYWxpdHlcIixcclxuICAgICAgbXVuaWNpcGFsaXR5LFxyXG4gICAgfSk7XHJcbiAgICBhZGRBZGRyZXNzUG9pbnRzVG9BcmVhKHN0YXRlLmN1cnJlbnRBcmVhLCBhZGRyZXNzUG9pbnRzLCBsaW5lTnVtYmVyKTtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBhZGRBZGRyZXNzUG9pbnRzVG9BcmVhID0gKFxyXG4gIGFyZWE6IEludGVybWVkaWF0ZUFyZWEsXHJcbiAgYWRkcmVzc1BvaW50czogQWRkcmVzc1BvaW50W10sXHJcbiAgbGluZU51bWJlcjogbnVtYmVyLFxyXG4gIG11bmljaXBhbGl0eUNvZGU/OiBudW1iZXJcclxuKSA9PiB7XHJcbiAgZm9yIChjb25zdCBwb2ludCBvZiBhZGRyZXNzUG9pbnRzKSB7XHJcbiAgICBpZiAoYXJlYS5hZGRyZXNzTWFwLmhhcyhwb2ludC5pZCkpIHtcclxuICAgICAgYXJlYS5hZGRyZXNzTWFwLmdldChwb2ludC5pZCkubGluZU51bWJlcnMucHVzaChsaW5lTnVtYmVyIC0gMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhcmVhLmFkZHJlc3NNYXAuc2V0KFxyXG4gICAgICAgIHBvaW50LmlkLFxyXG4gICAgICAgIG1hcEFkZHJlc3NQb2ludEZvckV4cG9ydChwb2ludCwgbGluZU51bWJlciwgbXVuaWNpcGFsaXR5Q29kZSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBwcm9jZXNzQWRkcmVzc1BvaW50TGluZSA9IGFzeW5jICh7XHJcbiAgbGluZSxcclxuICBzdGF0ZSxcclxuICBsaW5lTnVtYmVyLFxyXG4gIG9uRXJyb3IsXHJcbiAgb25XYXJuaW5nLFxyXG59OiBQcm9jZXNzTGluZVBhcmFtcykgPT4ge1xyXG4gIGNvbnN0IHsgc21kTGluZXMsIGVycm9ycyB9ID0gcGFyc2VMaW5lKGxpbmUpO1xyXG4gIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgb25FcnJvcih7IGxpbmVOdW1iZXIsIGxpbmUsIGVycm9ycyB9KTtcclxuICB9IGVsc2Uge1xyXG4gICAgZm9yIChjb25zdCBzbWRMaW5lIG9mIHNtZExpbmVzKSB7XHJcbiAgICAgIGlmIChzbWRMaW5lLnR5cGUgPT09IFwic3RyZWV0XCIpIHtcclxuICAgICAgICBjb25zdCB7IGV4aXN0cywgZXJyb3JzIH0gPSBhd2FpdCBjaGVja1N0cmVldEV4aXN0cyhcclxuICAgICAgICAgIHNtZExpbmUuc3RyZWV0LFxyXG4gICAgICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIG9uV2FybmluZyh7IGxpbmVOdW1iZXIsIGxpbmUsIGVycm9ycyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV4aXN0cykge1xyXG4gICAgICAgICAgY29uc3QgYWRkcmVzc1BvaW50cyA9IGF3YWl0IGZpbmRBZGRyZXNzUG9pbnRzKHtcclxuICAgICAgICAgICAgdHlwZTogXCJzbWRMaW5lXCIsXHJcbiAgICAgICAgICAgIHNtZExpbmUsXHJcbiAgICAgICAgICAgIG11bmljaXBhbGl0eTogc3RhdGUuY3VycmVudEZpbHRlck11bmljaXBhbGl0eSxcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGFkZEFkZHJlc3NQb2ludHNUb0FyZWEoXHJcbiAgICAgICAgICAgIHN0YXRlLmN1cnJlbnRBcmVhLFxyXG4gICAgICAgICAgICBhZGRyZXNzUG9pbnRzLFxyXG4gICAgICAgICAgICBsaW5lTnVtYmVyLFxyXG4gICAgICAgICAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmNvZGUgIT09XHJcbiAgICAgICAgICAgICAgc3RhdGUuY3VycmVudEZpbHRlck11bmljaXBhbGl0eS5jb2RlXHJcbiAgICAgICAgICAgICAgPyBzdGF0ZS5jdXJyZW50RmlsdGVyTXVuaWNpcGFsaXR5LmNvZGVcclxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoc21kTGluZS50eXBlID09PSBcIm11bmljaXBhbGl0eVBhcnRcIikge1xyXG4gICAgICAgIGNvbnN0IHsgbXVuaWNpcGFsaXR5UGFydENvZGUsIGVycm9ycyB9ID1cclxuICAgICAgICAgIGF3YWl0IGdldE11bmljaXBhbGl0eVBhcnRSZXN1bHQoXHJcbiAgICAgICAgICAgIHNtZExpbmUubXVuaWNpcGFsaXR5UGFydCxcclxuICAgICAgICAgICAgbGluZSxcclxuICAgICAgICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgb25XYXJuaW5nKHsgbGluZU51bWJlciwgbGluZSwgZXJyb3JzIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBhZGRyZXNzUG9pbnRzID0gYXdhaXQgZmluZEFkZHJlc3NQb2ludHMoe1xyXG4gICAgICAgICAgICB0eXBlOiBcInNtZExpbmVcIixcclxuICAgICAgICAgICAgc21kTGluZSxcclxuICAgICAgICAgICAgbXVuaWNpcGFsaXR5OiBzdGF0ZS5jdXJyZW50RmlsdGVyTXVuaWNpcGFsaXR5LFxyXG4gICAgICAgICAgICBtdW5pY2lwYWxpdHlQYXJ0Q29kZSxcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGFkZEFkZHJlc3NQb2ludHNUb0FyZWEoc3RhdGUuY3VycmVudEFyZWEsIGFkZHJlc3NQb2ludHMsIGxpbmVOdW1iZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RUb0FyZWEgPSAoXHJcbiAgcmVzdFBvaW50czogQWRkcmVzc1BvaW50W10sXHJcbiAgYXJlYUluZGV4OiBudW1iZXIsXHJcbiAgbGluZU51bWJlcjogbnVtYmVyLFxyXG4gIHN0YXRlOiBTbWRTdGF0ZVxyXG4pID0+IHtcclxuICBjb25zdCBhZGRyZXNzUG9pbnRzSWRzID0gZ2V0QWxsQWRkcmVzc1BvaW50c0lkcyhzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5KTtcclxuXHJcbiAgLy8gZmlsdGVyIG91dCBhZGRyZXNzIHBvaW50cyBhbHJlYWR5IHByZXNlbnRcclxuICBjb25zdCByZW1haW5pbmdQb2ludHMgPSByZXN0UG9pbnRzLmZpbHRlcihcclxuICAgIChwb2ludCkgPT4gIWFkZHJlc3NQb2ludHNJZHMuaGFzKHBvaW50LmlkKVxyXG4gICk7XHJcblxyXG4gIGFkZEFkZHJlc3NQb2ludHNUb0FyZWEoXHJcbiAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmFyZWFzLmZpbmQoKGFyZWEpID0+IGFyZWEuaW5kZXggPT09IGFyZWFJbmRleCksXHJcbiAgICByZW1haW5pbmdQb2ludHMsXHJcbiAgICBsaW5lTnVtYmVyXHJcbiAgKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RzID0gYXN5bmMgKHN0YXRlOiBTbWRTdGF0ZSkgPT4ge1xyXG4gIGlmIChzdGF0ZS5yZXN0cy5ub1N0cmVldE5hbWVBcmVhLmFyZWFJbmRleCAhPT0gbnVsbCkge1xyXG4gICAgYXdhaXQgYWRkUmVzdFdpdGhOb1N0cmVldE5hbWVUb1NjaG9vbChcclxuICAgICAgc3RhdGUucmVzdHMubm9TdHJlZXROYW1lQXJlYS5saW5lTnVtYmVyLFxyXG4gICAgICBzdGF0ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlmIChzdGF0ZS5yZXN0cy53aG9sZU11bmljaXBhbGl0eUFyZWEuYXJlYUluZGV4ICE9PSBudWxsKSB7XHJcbiAgICBhd2FpdCBhZGRSZXN0T2ZNdW5pY2lwYWxpdHkoXHJcbiAgICAgIHN0YXRlLnJlc3RzLndob2xlTXVuaWNpcGFsaXR5QXJlYS5saW5lTnVtYmVyLFxyXG4gICAgICBzdGF0ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGZvciAoY29uc3QgcmVzdCBvZiBzdGF0ZS5yZXN0cy5tdW5pY2lwYWxpdHlQYXJ0cykge1xyXG4gICAgYXdhaXQgYWRkUmVzdE9mTXVuaWNpcGFsaXR5UGFydChcclxuICAgICAgc3RhdGUsXHJcbiAgICAgIHJlc3QubXVuaWNpcGFsaXR5UGFydENvZGUsXHJcbiAgICAgIHJlc3QuYXJlYUluZGV4LFxyXG4gICAgICByZXN0LmxpbmVOdW1iZXJcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpZiAoc3RhdGUucmVzdHMuaW5jbHVkZVVubWFwcGVkQWRkcmVzc1BvaW50cykge1xyXG4gICAgYXdhaXQgYWRkUmVzdE9mTXVuaWNpcGFsaXR5VG9Vbm1hcHBlZFBvaW50cyhzdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBzdGF0ZS5yZXN0cy5ub1N0cmVldE5hbWVBcmVhLmFyZWFJbmRleCA9IG51bGw7XHJcbiAgc3RhdGUucmVzdHMud2hvbGVNdW5pY2lwYWxpdHlBcmVhLmFyZWFJbmRleCA9IG51bGw7XHJcbiAgc3RhdGUucmVzdHMubXVuaWNpcGFsaXR5UGFydHMgPSBbXTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RXaXRoTm9TdHJlZXROYW1lVG9TY2hvb2wgPSBhc3luYyAoXHJcbiAgbGluZU51bWJlcjogbnVtYmVyLFxyXG4gIHN0YXRlOiBTbWRTdGF0ZVxyXG4pID0+IHtcclxuICAvLyBnZXQgYWxsIGFkZHJlc3MgcG9pbnRzIHdpdGhvdXQgc3RyZWV0IG5hbWUgZm9yIGN1cnJlbnQgbXVuaWNpcGFsaXR5XHJcbiAgY29uc3QgcG9pbnRzTm9TdHJlZXROYW1lID0gYXdhaXQgZmluZEFkZHJlc3NQb2ludHMoe1xyXG4gICAgdHlwZTogXCJ3aG9sZU11bmljaXBhbGl0eU5vU3RyZWV0TmFtZVwiLFxyXG4gICAgbXVuaWNpcGFsaXR5OiB7XHJcbiAgICAgIGNvZGU6IHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlci5tdW5pY2lwYWxpdHlDb2RlLFxyXG4gICAgICB0eXBlOiBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSxcclxuICAgIH0sXHJcbiAgfSk7XHJcbiAgYWRkUmVzdFRvQXJlYShcclxuICAgIHBvaW50c05vU3RyZWV0TmFtZSxcclxuICAgIHN0YXRlLnJlc3RzLm5vU3RyZWV0TmFtZUFyZWEuYXJlYUluZGV4LFxyXG4gICAgbGluZU51bWJlcixcclxuICAgIHN0YXRlXHJcbiAgKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RPZk11bmljaXBhbGl0eSA9IGFzeW5jIChsaW5lTnVtYmVyOiBudW1iZXIsIHN0YXRlOiBTbWRTdGF0ZSkgPT4ge1xyXG4gIGFkZFJlc3RUb0FyZWEoXHJcbiAgICBhd2FpdCBnZXRSZXN0T2ZNdW5pY2lwYWxpdHkoc3RhdGUpLFxyXG4gICAgc3RhdGUucmVzdHMud2hvbGVNdW5pY2lwYWxpdHlBcmVhLmFyZWFJbmRleCxcclxuICAgIGxpbmVOdW1iZXIsXHJcbiAgICBzdGF0ZVxyXG4gICk7XHJcbn07XHJcblxyXG5jb25zdCBhZGRSZXN0T2ZNdW5pY2lwYWxpdHlUb1VubWFwcGVkUG9pbnRzID0gYXN5bmMgKHN0YXRlOiBTbWRTdGF0ZSkgPT4ge1xyXG4gIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkudW5tYXBwZWRQb2ludHMgPSAoXHJcbiAgICBhd2FpdCBnZXRSZXN0T2ZNdW5pY2lwYWxpdHkoc3RhdGUpXHJcbiAgKS5tYXAoKHBvaW50KSA9PiBtYXBBZGRyZXNzUG9pbnRGb3JFeHBvcnQocG9pbnQpKTtcclxufTtcclxuXHJcbmNvbnN0IGdldFJlc3RPZk11bmljaXBhbGl0eSA9IGFzeW5jIChcclxuICBzdGF0ZTogU21kU3RhdGVcclxuKTogUHJvbWlzZTxBZGRyZXNzUG9pbnRbXT4gPT4ge1xyXG4gIC8vIGdldCBhbGwgYWRkcmVzcyBwb2ludHMgZm9yIGN1cnJlbnQgbXVuaWNpcGFsaXR5XHJcbiAgY29uc3QgYWxsUG9pbnRzID0gYXdhaXQgZmluZEFkZHJlc3NQb2ludHMoe1xyXG4gICAgdHlwZTogXCJ3aG9sZU11bmljaXBhbGl0eVwiLFxyXG4gICAgbXVuaWNpcGFsaXR5OiB7XHJcbiAgICAgIGNvZGU6IHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlci5tdW5pY2lwYWxpdHlDb2RlLFxyXG4gICAgICB0eXBlOiBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSxcclxuICAgIH0sXHJcbiAgfSk7XHJcblxyXG4gIC8vIGZpbHRlciBvdXQgYWRkcmVzcyBwb2ludHMgYWxyZWFkeSBwcmVzZW50XHJcbiAgY29uc3QgYWRkcmVzc1BvaW50c0lkcyA9IGdldEFsbEFkZHJlc3NQb2ludHNJZHMoc3RhdGUuY3VycmVudE11bmljaXBhbGl0eSk7XHJcbiAgcmV0dXJuIGFsbFBvaW50cy5maWx0ZXIoKHBvaW50KSA9PiAhYWRkcmVzc1BvaW50c0lkcy5oYXMocG9pbnQuaWQpKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RPZk11bmljaXBhbGl0eVBhcnQgPSBhc3luYyAoXHJcbiAgc3RhdGU6IFNtZFN0YXRlLFxyXG4gIG11bmljaXBhbGl0eVBhcnRDb2RlOiBudW1iZXIsXHJcbiAgYXJlYUluZGV4OiBudW1iZXIsXHJcbiAgbGluZU51bWJlcjogbnVtYmVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IGFsbFBvaW50cyA9IGF3YWl0IGZpbmRBZGRyZXNzUG9pbnRzKHtcclxuICAgIHR5cGU6IFwid2hvbGVNdW5pY2lwYWxpdHlQYXJ0XCIsXHJcbiAgICBtdW5pY2lwYWxpdHlQYXJ0Q29kZSxcclxuICB9KTtcclxuICBhZGRSZXN0VG9BcmVhKGFsbFBvaW50cywgYXJlYUluZGV4LCBsaW5lTnVtYmVyLCBzdGF0ZSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TmV3TXVuaWNpcGFsaXR5QnlOYW1lID0gYXN5bmMgKFxyXG4gIG5hbWU6IHN0cmluZ1xyXG4pOiBQcm9taXNlPEludGVybWVkaWF0ZU11bmljaXBhbGl0eVJlc3VsdD4gPT4ge1xyXG4gIGNvbnN0IHsgZm91bmRlciwgZXJyb3JzIH0gPSBhd2FpdCBmaW5kRm91bmRlcihuYW1lKTtcclxuICByZXR1cm4gZ2V0TmV3TXVuaWNpcGFsaXR5KGZvdW5kZXIsIGVycm9ycyk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TmV3TXVuaWNpcGFsaXR5QnlGb3VuZGVySWQgPSBhc3luYyAoXHJcbiAgZm91bmRlcklkOiBudW1iZXJcclxuKTogUHJvbWlzZTxJbnRlcm1lZGlhdGVNdW5pY2lwYWxpdHlSZXN1bHQ+ID0+IHtcclxuICBjb25zdCB7IGZvdW5kZXIsIGVycm9ycyB9ID0gYXdhaXQgZ2V0Rm91bmRlckJ5SWQoZm91bmRlcklkKTtcclxuICByZXR1cm4gZ2V0TmV3TXVuaWNpcGFsaXR5KGZvdW5kZXIsIGVycm9ycyk7XHJcbn07XHJcblxyXG5jb25zdCBnZXROZXdNdW5pY2lwYWxpdHkgPSAoXHJcbiAgZm91bmRlcjogRm91bmRlcixcclxuICBlcnJvcnM6IFNtZEVycm9yW11cclxuKTogSW50ZXJtZWRpYXRlTXVuaWNpcGFsaXR5UmVzdWx0ID0+ICh7XHJcbiAgbXVuaWNpcGFsaXR5OiB7XHJcbiAgICBtdW5pY2lwYWxpdHlOYW1lOiBmb3VuZGVyID8gZm91bmRlci5uYW1lIDogXCJOZXpuw6Ftw6Egb2JlY1wiLFxyXG4gICAgZm91bmRlcixcclxuICAgIGFyZWFzOiBbXSxcclxuICAgIGNvZGU6IGZvdW5kZXIgPyBmb3VuZGVyLm11bmljaXBhbGl0eUNvZGUgOiAwLFxyXG4gICAgbXVuaWNpcGFsaXR5VHlwZTpcclxuICAgICAgZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHkgPyBcImNpdHlcIiA6IFwiZGlzdHJpY3RcIixcclxuICAgIGNpdHlDb2RlczpcclxuICAgICAgZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHlcclxuICAgICAgICA/IFtmb3VuZGVyLm11bmljaXBhbGl0eUNvZGVdXHJcbiAgICAgICAgOiBbXSxcclxuICAgIGRpc3RyaWN0Q29kZXM6XHJcbiAgICAgIGZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSA9PT0gTXVuaWNpcGFsaXR5VHlwZS5EaXN0cmljdFxyXG4gICAgICAgID8gW2ZvdW5kZXIubXVuaWNpcGFsaXR5Q29kZV1cclxuICAgICAgICA6IFtdLFxyXG4gICAgdW5tYXBwZWRQb2ludHM6IFtdLFxyXG4gIH0sXHJcbiAgZXJyb3JzLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXROZXdTY2hvb2wgPSBhc3luYyAoe1xyXG4gIG5hbWUsXHJcbiAgZm91bmRlcixcclxuICBsaW5lTnVtYmVyLFxyXG4gIHJlcXVpcmVkLFxyXG4gIG9uRXJyb3IsXHJcbn06IHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgZm91bmRlcjogRm91bmRlciB8IG51bGw7XHJcbiAgbGluZU51bWJlcjogbnVtYmVyO1xyXG4gIHJlcXVpcmVkOiBib29sZWFuO1xyXG4gIG9uRXJyb3I6IChwYXJhbXM6IEVycm9yQ2FsbGJhY2tQYXJhbXMpID0+IHZvaWQ7XHJcbn0pOiBQcm9taXNlPEludGVybWVkaWF0ZVNjaG9vbCB8IG51bGw+ID0+IHtcclxuICBsZXQgZXhwb3J0U2Nob29sOiBTY2hvb2wgPSB7XHJcbiAgICBuYW1lLFxyXG4gICAgaXpvOiBcIlwiLFxyXG4gIH07XHJcbiAgaWYgKGZvdW5kZXIgIT09IG51bGwpIHtcclxuICAgIGNvbnN0IHsgc2Nob29sLCBlcnJvcnMgfSA9IGZpbmRTY2hvb2woXHJcbiAgICAgIG5hbWUsXHJcbiAgICAgIGZvdW5kZXIuc2Nob29scyxcclxuICAgICAgcmVxdWlyZWQgPyB1bmRlZmluZWQgOiAxNVxyXG4gICAgKTtcclxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICBvbkVycm9yKHsgbGluZU51bWJlciwgbGluZTogbmFtZSwgZXJyb3JzIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHNjaG9vbCkge1xyXG4gICAgICBleHBvcnRTY2hvb2wubmFtZSA9IHNjaG9vbC5uYW1lO1xyXG4gICAgICBleHBvcnRTY2hvb2wuaXpvID0gc2Nob29sLml6byB8fCBcIlwiO1xyXG4gICAgICBpZiAoc2Nob29sLmxvY2F0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSBhd2FpdCBnZXRBZGRyZXNzUG9pbnRCeUlkKFxyXG4gICAgICAgICAgc2Nob29sLmxvY2F0aW9uc1swXS5hZGRyZXNzUG9pbnRJZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHBvc2l0aW9uICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBleHBvcnRTY2hvb2wucG9zaXRpb24gPSBtYXBBZGRyZXNzUG9pbnRGb3JFeHBvcnQocG9zaXRpb24pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiB7IC4uLmV4cG9ydFNjaG9vbCwgYWRkcmVzc01hcDogbmV3IE1hcDxudW1iZXIsIEV4cG9ydEFkZHJlc3NQb2ludD4oKSB9O1xyXG59O1xyXG5cclxuY29uc3QgZ2V0QWxsQWRkcmVzc1BvaW50c0lkcyA9IChcclxuICBtdW5pY2lwYWxpdHk6IEludGVybWVkaWF0ZU11bmljaXBhbGl0eVxyXG4pOiBTZXQ8bnVtYmVyPiA9PiB7XHJcbiAgY29uc3QgYWRkcmVzc1BvaW50c0lkcyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xyXG5cclxuICBmb3IgKGNvbnN0IGFyZWEgb2YgbXVuaWNpcGFsaXR5LmFyZWFzKSB7XHJcbiAgICBmb3IgKGNvbnN0IGlkIG9mIGFyZWEuYWRkcmVzc01hcC5rZXlzKCkpIHtcclxuICAgICAgYWRkcmVzc1BvaW50c0lkcy5hZGQoaWQpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gYWRkcmVzc1BvaW50c0lkcztcclxufTtcclxuXHJcbmNvbnN0IG1hcEFkZHJlc3NQb2ludEZvckV4cG9ydCA9IChcclxuICBhZGRyZXNzUG9pbnQ6IEFkZHJlc3NQb2ludCB8IEV4cG9ydEFkZHJlc3NQb2ludCxcclxuICBsaW5lTnVtYmVyPzogbnVtYmVyLFxyXG4gIG11bmljaXBhbGl0eUNvZGU/OiBudW1iZXJcclxuKTogRXhwb3J0QWRkcmVzc1BvaW50ID0+IHtcclxuICByZXR1cm4ge1xyXG4gICAgYWRkcmVzczogYWRkcmVzc1BvaW50LmFkZHJlc3MsXHJcbiAgICBsYXQ6IHJvdW5kVG9ORGVjaW1hbFBsYWNlcyhhZGRyZXNzUG9pbnQubGF0LCA2KSxcclxuICAgIGxuZzogcm91bmRUb05EZWNpbWFsUGxhY2VzKGFkZHJlc3NQb2ludC5sbmcsIDYpLFxyXG4gICAgLi4uKGxpbmVOdW1iZXIgIT09IHVuZGVmaW5lZCA/IHsgbGluZU51bWJlcnM6IFtsaW5lTnVtYmVyIC0gMV0gfSA6IHt9KSxcclxuICAgIC4uLihtdW5pY2lwYWxpdHlDb2RlICE9PSB1bmRlZmluZWQgPyB7IG11bmljaXBhbGl0eUNvZGUgfSA6IHt9KSxcclxuICB9O1xyXG59O1xyXG5cclxuY29uc3QgbWFwQXJlYUZvckV4cG9ydCA9IChhcmVhOiBJbnRlcm1lZGlhdGVBcmVhKTogSW50ZXJtZWRpYXRlQXJlYSA9PiAoe1xyXG4gIC4uLmFyZWEsXHJcbiAgc2Nob29sczogYXJlYS5zY2hvb2xzLm1hcCgoc2Nob29sKSA9PiAoe1xyXG4gICAgLi4uc2Nob29sLFxyXG4gICAgcG9zaXRpb246IHNjaG9vbC5wb3NpdGlvblxyXG4gICAgICA/IG1hcEFkZHJlc3NQb2ludEZvckV4cG9ydChzY2hvb2wucG9zaXRpb24pXHJcbiAgICAgIDogbnVsbCxcclxuICB9KSksXHJcbn0pO1xyXG5cclxuY29uc3QgY2xlYW5MaW5lID0gKGxpbmU6IHN0cmluZykgPT4ge1xyXG4gIHJldHVybiBsaW5lLnRyaW0oKS5yZXBsYWNlKC/igJMvZywgXCItXCIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHdob2xlTGluZUVycm9yID0gKG1lc3NhZ2U6IHN0cmluZywgbGluZTogc3RyaW5nKTogU21kRXJyb3IgPT4gKHtcclxuICBtZXNzYWdlLFxyXG4gIHN0YXJ0T2Zmc2V0OiAwLFxyXG4gIGVuZE9mZnNldDogbGluZS5sZW5ndGggKyAxLFxyXG59KTtcclxuXHJcbmNvbnN0IHJvdW5kVG9ORGVjaW1hbFBsYWNlcyA9IChcclxuICB0b1JvdW5kOiBudW1iZXIsXHJcbiAgZGVjaW1hbFBsYWNlczogbnVtYmVyXHJcbik6IG51bWJlciA9PiB7XHJcbiAgcmV0dXJuIChcclxuICAgIE1hdGgucm91bmQodG9Sb3VuZCAqIE1hdGgucG93KDEwLCBkZWNpbWFsUGxhY2VzKSkgL1xyXG4gICAgTWF0aC5wb3coMTAsIGRlY2ltYWxQbGFjZXMpXHJcbiAgKTtcclxufTtcclxuIl19
439
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVldC1tYXJrZG93bi9zbWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsbUJBQW1CLEdBQ3BCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFXLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9FLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLHdCQUF3QixFQUN4Qiw0QkFBNEIsRUFDNUIsMEJBQTBCLEVBQzFCLG1CQUFtQixHQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQTBCOUMsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsS0FBSyxFQUFFLEVBQ2xELEtBQUssRUFDTCxZQUFZLEdBQUcsRUFBRSxFQUNqQixPQUFPLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUNsQixTQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUNwQixlQUFlLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxFQUMxQiw0QkFBNEIsR0FBRyxLQUFLLEdBQ2hCLEVBQTJCLEVBQUU7SUFDakQsSUFBSTtRQUNGLE1BQU0sS0FBSyxHQUFhO1lBQ3RCLG1CQUFtQixFQUFFLElBQUk7WUFDekIseUJBQXlCLEVBQUUsSUFBSTtZQUMvQixXQUFXLEVBQUUsSUFBSTtZQUNqQixnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLFNBQVMsRUFBRSxDQUFDO1lBQ1osS0FBSyxFQUFFO2dCQUNMLGdCQUFnQixFQUFFO29CQUNoQixTQUFTLEVBQUUsSUFBSTtvQkFDZixVQUFVLEVBQUUsSUFBSTtpQkFDakI7Z0JBQ0QsaUJBQWlCLEVBQUUsRUFBRTtnQkFDckIscUJBQXFCLEVBQUU7b0JBQ3JCLFNBQVMsRUFBRSxJQUFJO29CQUNmLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjtnQkFDRCw0QkFBNEI7YUFDN0I7WUFDRCxjQUFjLEVBQUUsRUFBRTtZQUNsQixHQUFHLFlBQVk7U0FDaEIsQ0FBQztRQUVGLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztRQUVuQixLQUFLLE1BQU0sT0FBTyxJQUFJLEtBQUssRUFBRTtZQUMzQixNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDaEMsTUFBTSxjQUFjLENBQUM7Z0JBQ25CLElBQUk7Z0JBQ0osT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUU7Z0JBQ3ZCLEtBQUs7Z0JBQ0wsVUFBVTtnQkFDVixPQUFPO2dCQUNQLFNBQVM7YUFDVixDQUFDLENBQUM7WUFDSCxlQUFlLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN0QyxVQUFVLEVBQUUsQ0FBQztTQUNkO1FBRUQsSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLElBQUksRUFBRTtZQUM3QixJQUFJLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLEVBQUU7Z0JBQ3JDLE9BQU8sRUFBRSxDQUFDO2FBQ1g7WUFDRCxLQUFLLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztTQUMzRTtRQUVELE1BQU0sMkJBQTJCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFekMsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDO0tBQzdCO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3RCO1lBQVM7UUFDUixNQUFNLGNBQWMsRUFBRSxDQUFDO0tBQ3hCO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUNqQyxZQUFzQyxFQUN4QixFQUFFO0lBQ2hCLE9BQU87UUFDTCxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsZ0JBQWdCO1FBQy9DLEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2QyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFNBQVMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQ3BELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FDOUM7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0I7UUFDM0MsZ0JBQWdCLEVBQ2QsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJO1lBQzdELENBQUMsQ0FBQyxNQUFNO1lBQ1IsQ0FBQyxDQUFDLFVBQVU7UUFDaEIsU0FBUyxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0MsYUFBYSxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkQsY0FBYyxFQUFFLFlBQVksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUNoRCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQzlDO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFBRSxNQUF5QixFQUFFLEVBQUU7SUFDekQsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRTNDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtRQUNuQixNQUFNLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLE9BQU87S0FDUjtJQUVELElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRTtRQUNmLGdCQUFnQjtRQUNoQixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QixPQUFPO0tBQ1I7SUFFRCxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7UUFDbkIsT0FBTztLQUNSO0lBRUQsSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRTtRQUM5QixNQUFNLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLE9BQU87S0FDUjtJQUVELElBQUksS0FBSyxDQUFDLGdCQUFnQixLQUFLLEtBQUssRUFBRTtRQUNwQyxNQUFNLGVBQWUsR0FBRyxNQUFNLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVELElBQUksZUFBZSxFQUFFO1lBQ25CLE9BQU87U0FDUjthQUFNO1lBQ0wsS0FBSyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztTQUMvQjtLQUNGO0lBRUQsSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUM5Qiw2QkFBNkIsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUN2QztTQUFNLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDcEMsTUFBTSw0QkFBNEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUM1QztTQUFNLElBQUksMEJBQTBCLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDM0MsS0FBSyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRztZQUM3QixTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLO1lBQ2xDLFVBQVU7U0FDWCxDQUFDO0tBQ0g7U0FBTSxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3pDLEtBQUssQ0FBQyxLQUFLLENBQUMscUJBQXFCLEdBQUc7WUFDbEMsU0FBUyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSztZQUNsQyxVQUFVO1NBQ1gsQ0FBQztLQUNIO1NBQU0sSUFBSSw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUM3QyxNQUFNLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSx5QkFBeUIsQ0FDdEUsSUFBSSxFQUNKLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQ2xDLENBQUM7UUFDRixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3JCLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQzFEO2FBQU07WUFDTCxLQUFLLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQztnQkFDakMsb0JBQW9CO2dCQUNwQixTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLO2dCQUNsQyxVQUFVLEVBQUUsVUFBVTthQUN2QixDQUFDLENBQUM7U0FDSjtLQUNGO1NBQU07UUFDTCxNQUFNLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3ZDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLEVBQUUsRUFDckMsSUFBSSxFQUNKLFVBQVUsRUFDVixLQUFLLEVBQ0wsT0FBTyxHQUNXLEVBQUUsRUFBRTtJQUN0QixJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssSUFBSSxFQUFFO1FBQzlCLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUN6RDtJQUVELE1BQU0sMkJBQTJCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFekMsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RFLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDckIsT0FBTyxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZDO0lBQ0QsS0FBSyxDQUFDLG1CQUFtQixHQUFHLFlBQVksQ0FBQztJQUN6QyxLQUFLLENBQUMseUJBQXlCLEdBQUcscUJBQXFCLENBQ3JELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQ2xDLENBQUM7SUFFRixLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztBQUMzQixDQUFDLENBQUM7QUFFRixNQUFNLDJCQUEyQixHQUFHLEtBQUssRUFBRSxLQUFlLEVBQUUsRUFBRTtJQUM1RCxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsS0FBSyxJQUFJLEVBQUU7UUFDdEMsTUFBTSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztLQUMzRTtBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBcUIsRUFBRSxFQUFFO0lBQ3hELElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxJQUFJLEVBQUU7UUFDOUIsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3hELEtBQUssQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0tBQzFCO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxzQkFBc0IsR0FBRyxLQUFLLEVBQUUsRUFDcEMsT0FBTyxFQUNQLFVBQVUsRUFDVixLQUFLLEVBQ0wsT0FBTyxHQUNXLEVBQUUsRUFBRTtJQUN0QixJQUFJLEtBQUssQ0FBQyxtQkFBbUIsS0FBSyxJQUFJLEVBQUU7UUFDdEMsT0FBTyxDQUFDO1lBQ04sVUFBVTtZQUNWLElBQUksRUFBRSxPQUFPO1lBQ2IsTUFBTSxFQUFFO2dCQUNOLGNBQWMsQ0FDWiwwRkFBMEYsRUFDMUYsT0FBTyxDQUNSO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFDSCxPQUFPO0tBQ1I7SUFDRCxLQUFLLENBQUMsV0FBVyxHQUFHO1FBQ2xCLEtBQUssRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFO1FBQ3hCLE9BQU8sRUFBRTtZQUNQLE1BQU0sWUFBWSxDQUFDO2dCQUNqQixJQUFJLEVBQUUsT0FBTztnQkFDYixPQUFPLEVBQUUsS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BQU87Z0JBQzFDLFVBQVU7Z0JBQ1YsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsT0FBTzthQUNSLENBQUM7U0FDSDtRQUNELFNBQVMsRUFBRSxFQUFFO1FBQ2IsVUFBVSxFQUFFLElBQUksR0FBRyxFQUE4QjtRQUNqRCxlQUFlLEVBQUUsS0FBSztLQUN2QixDQUFDO0lBQ0YsS0FBSyxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUMvQixLQUFLLENBQUMseUJBQXlCLEdBQUcscUJBQXFCLENBQ3JELEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQ2xDLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLHFCQUFxQixHQUFHLEtBQUssRUFBRSxFQUNuQyxJQUFJLEVBQ0osVUFBVSxFQUNWLEtBQUssR0FDYSxFQUFvQixFQUFFO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sWUFBWSxDQUFDO1FBQ2hDLElBQUksRUFBRSxJQUFJO1FBQ1YsT0FBTyxFQUFFLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPO1FBQzFDLFVBQVU7UUFDVixRQUFRLEVBQUUsS0FBSztRQUNmLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRSxDQUFDO0tBQ2xCLENBQUMsQ0FBQztJQUVILElBQUksTUFBTSxLQUFLLElBQUksRUFBRTtRQUNuQixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxDQUFDO0FBRUYsTUFBTSw2QkFBNkIsR0FBRyxLQUFLLEVBQUUsRUFDM0MsSUFBSSxFQUNKLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxHQUNXLEVBQUUsRUFBRTtJQUN0QixNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0scUJBQXFCLENBQzFELElBQUksRUFDSixLQUFLLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUNsQyxDQUFDO0lBQ0YsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNyQixPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDdkM7U0FBTTtRQUNMLEtBQUssQ0FBQyx5QkFBeUIsR0FBRyxZQUFZLENBQUM7S0FDaEQ7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLDRCQUE0QixHQUFHLEtBQUssRUFBRSxFQUMxQyxJQUFJLEVBQ0osS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEdBQ1csRUFBRSxFQUFFO0lBQ3RCLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxvQkFBb0IsQ0FDekQsSUFBSSxFQUNKLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQ2xDLENBQUM7SUFDRixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ3JCLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztLQUN2QztTQUFNO1FBQ0wsSUFBSSxZQUFZLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFDLElBQUksRUFBRTtZQUMvQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDN0Q7YUFBTTtZQUNMLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNqRTtRQUVELE1BQU0sYUFBYSxHQUFHLE1BQU0saUJBQWlCLENBQUM7WUFDNUMsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixZQUFZO1NBQ2IsQ0FBQyxDQUFDO1FBQ0gsc0JBQXNCLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDdEU7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLHNCQUFzQixHQUFHLENBQzdCLElBQXNCLEVBQ3RCLGFBQTZCLEVBQzdCLFVBQWtCLEVBQ2xCLGdCQUF5QixFQUN6QixFQUFFO0lBQ0YsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLEVBQUU7UUFDakMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2hFO2FBQU07WUFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDakIsS0FBSyxDQUFDLEVBQUUsRUFDUix3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixDQUFDLENBQzlELENBQUM7U0FDSDtLQUNGO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLEVBQUUsRUFDckMsSUFBSSxFQUNKLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxFQUNQLFNBQVMsR0FDUyxFQUFFLEVBQUU7SUFDdEIsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0MsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNyQixPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDdkM7U0FBTTtRQUNMLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFO1lBQzlCLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQzdCLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxpQkFBaUIsQ0FDaEQsT0FBTyxDQUFDLE1BQU0sRUFDZCxLQUFLLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUNsQyxDQUFDO2dCQUNGLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ3JCLFNBQVMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztpQkFDekM7Z0JBQ0QsSUFBSSxNQUFNLEVBQUU7b0JBQ1YsTUFBTSxhQUFhLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQzt3QkFDNUMsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsT0FBTzt3QkFDUCxZQUFZLEVBQUUsS0FBSyxDQUFDLHlCQUF5QjtxQkFDOUMsQ0FBQyxDQUFDO29CQUVILHNCQUFzQixDQUNwQixLQUFLLENBQUMsV0FBVyxFQUNqQixhQUFhLEVBQ2IsVUFBVSxFQUNWLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJO3dCQUM1QixLQUFLLENBQUMseUJBQXlCLENBQUMsSUFBSTt3QkFDcEMsQ0FBQyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJO3dCQUN0QyxDQUFDLENBQUMsU0FBUyxDQUNkLENBQUM7aUJBQ0g7YUFDRjtpQkFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssa0JBQWtCLEVBQUU7Z0JBQzlDLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLEVBQUUsR0FDcEMsTUFBTSx5QkFBeUIsQ0FDN0IsT0FBTyxDQUFDLGdCQUFnQixFQUN4QixJQUFJLEVBQ0osS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FDbEMsQ0FBQztnQkFDSixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUNyQixTQUFTLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7aUJBQ3pDO3FCQUFNO29CQUNMLE1BQU0sYUFBYSxHQUFHLE1BQU0saUJBQWlCLENBQUM7d0JBQzVDLElBQUksRUFBRSxTQUFTO3dCQUNmLE9BQU87d0JBQ1AsWUFBWSxFQUFFLEtBQUssQ0FBQyx5QkFBeUI7d0JBQzdDLG9CQUFvQjtxQkFDckIsQ0FBQyxDQUFDO29CQUVILHNCQUFzQixDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2lCQUN0RTthQUNGO1NBQ0Y7S0FDRjtBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHLENBQ3BCLFVBQTBCLEVBQzFCLFNBQWlCLEVBQ2pCLFVBQWtCLEVBQ2xCLEtBQWUsRUFDZixFQUFFO0lBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUUzRSw0Q0FBNEM7SUFDNUMsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FDdkMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FDM0MsQ0FBQztJQUVGLHNCQUFzQixDQUNwQixLQUFLLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLENBQUMsRUFDeEUsZUFBZSxFQUNmLFVBQVUsQ0FDWCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQUcsS0FBSyxFQUFFLEtBQWUsRUFBRSxFQUFFO0lBQ3pDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO1FBQ25ELE1BQU0sK0JBQStCLENBQ25DLEtBQUssQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUN2QyxLQUFLLENBQ04sQ0FBQztLQUNIO0lBRUQsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsS0FBSyxJQUFJLEVBQUU7UUFDeEQsTUFBTSxxQkFBcUIsQ0FDekIsS0FBSyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLEVBQzVDLEtBQUssQ0FDTixDQUFDO0tBQ0g7SUFFRCxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUU7UUFDaEQsTUFBTSx5QkFBeUIsQ0FDN0IsS0FBSyxFQUNMLElBQUksQ0FBQyxvQkFBb0IsRUFDekIsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsVUFBVSxDQUNoQixDQUFDO0tBQ0g7SUFFRCxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEVBQUU7UUFDNUMsTUFBTSxxQ0FBcUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNwRDtJQUVELEtBQUssQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUM5QyxLQUFLLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDbkQsS0FBSyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7QUFDckMsQ0FBQyxDQUFDO0FBRUYsTUFBTSwrQkFBK0IsR0FBRyxLQUFLLEVBQzNDLFVBQWtCLEVBQ2xCLEtBQWUsRUFDZixFQUFFO0lBQ0Ysc0VBQXNFO0lBQ3RFLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztRQUNqRCxJQUFJLEVBQUUsK0JBQStCO1FBQ3JDLFlBQVksRUFBRTtZQUNaLElBQUksRUFBRSxLQUFLLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLGdCQUFnQjtZQUN4RCxJQUFJLEVBQUUsS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxnQkFBZ0I7U0FDekQ7S0FDRixDQUFDLENBQUM7SUFDSCxhQUFhLENBQ1gsa0JBQWtCLEVBQ2xCLEtBQUssQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUN0QyxVQUFVLEVBQ1YsS0FBSyxDQUNOLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLHFCQUFxQixHQUFHLEtBQUssRUFBRSxVQUFrQixFQUFFLEtBQWUsRUFBRSxFQUFFO0lBQzFFLGFBQWEsQ0FDWCxNQUFNLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxFQUNsQyxLQUFLLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLFNBQVMsRUFDM0MsVUFBVSxFQUNWLEtBQUssQ0FDTixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxxQ0FBcUMsR0FBRyxLQUFLLEVBQUUsS0FBZSxFQUFFLEVBQUU7SUFDdEUsS0FBSyxDQUFDLG1CQUFtQixDQUFDLGNBQWMsR0FBRyxDQUN6QyxNQUFNLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUNuQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNwRCxDQUFDLENBQUM7QUFFRixNQUFNLHFCQUFxQixHQUFHLEtBQUssRUFDakMsS0FBZSxFQUNVLEVBQUU7SUFDM0Isa0RBQWtEO0lBQ2xELE1BQU0sU0FBUyxHQUFHLE1BQU0saUJBQWlCLENBQUM7UUFDeEMsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixZQUFZLEVBQUU7WUFDWixJQUFJLEVBQUUsS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxnQkFBZ0I7WUFDeEQsSUFBSSxFQUFFLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCO1NBQ3pEO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsNENBQTRDO0lBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsc0JBQXNCLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDM0UsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUM7QUFFRixNQUFNLHlCQUF5QixHQUFHLEtBQUssRUFDckMsS0FBZSxFQUNmLG9CQUE0QixFQUM1QixTQUFpQixFQUNqQixVQUFrQixFQUNsQixFQUFFO0lBQ0YsTUFBTSxTQUFTLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQztRQUN4QyxJQUFJLEVBQUUsdUJBQXVCO1FBQzdCLG9CQUFvQjtLQUNyQixDQUFDLENBQUM7SUFDSCxhQUFhLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDekQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsS0FBSyxFQUMzQyxJQUFZLEVBQzZCLEVBQUU7SUFDM0MsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxPQUFPLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxLQUFLLEVBQ2hELFNBQWlCLEVBQ3dCLEVBQUU7SUFDM0MsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1RCxPQUFPLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQUM7QUFFRixNQUFNLGtCQUFrQixHQUFHLENBQ3pCLE9BQWdCLEVBQ2hCLE1BQWtCLEVBQ2MsRUFBRSxDQUFDLENBQUM7SUFDcEMsWUFBWSxFQUFFO1FBQ1osZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjO1FBQ3pELE9BQU87UUFDUCxLQUFLLEVBQUUsRUFBRTtRQUNULElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QyxnQkFBZ0IsRUFDZCxPQUFPLENBQUMsZ0JBQWdCLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVU7UUFDMUUsU0FBUyxFQUNQLE9BQU8sQ0FBQyxnQkFBZ0IsS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJO1lBQ2hELENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztZQUM1QixDQUFDLENBQUMsRUFBRTtRQUNSLGFBQWEsRUFDWCxPQUFPLENBQUMsZ0JBQWdCLEtBQUssZ0JBQWdCLENBQUMsUUFBUTtZQUNwRCxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7WUFDNUIsQ0FBQyxDQUFDLEVBQUU7UUFDUixjQUFjLEVBQUUsRUFBRTtLQUNuQjtJQUNELE1BQU07Q0FDUCxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsS0FBSyxFQUFFLEVBQ2pDLElBQUksRUFDSixPQUFPLEVBQ1AsVUFBVSxFQUNWLFFBQVEsRUFDUixPQUFPLEdBT1IsRUFBc0MsRUFBRTtJQUN2QyxJQUFJLFlBQVksR0FBVztRQUN6QixJQUFJO1FBQ0osR0FBRyxFQUFFLEVBQUU7S0FDUixDQUFDO0lBQ0YsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFO1FBQ3BCLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUNuQyxJQUFJLEVBQ0osT0FBTyxDQUFDLE9BQU8sRUFDZixRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUN6QixDQUFDO1FBQ0YsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNyQixPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQzdDO1FBQ0QsSUFBSSxNQUFNLEVBQUU7WUFDVixZQUFZLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDaEMsWUFBWSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUNwQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDL0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxtQkFBbUIsQ0FDeEMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQ25DLENBQUM7Z0JBQ0YsSUFBSSxRQUFRLEtBQUssSUFBSSxFQUFFO29CQUNyQixZQUFZLENBQUMsUUFBUSxHQUFHLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUM1RDthQUNGO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDO1NBQ2I7S0FDRjtJQUNELE9BQU8sRUFBRSxHQUFHLFlBQVksRUFBRSxVQUFVLEVBQUUsSUFBSSxHQUFHLEVBQThCLEVBQUUsQ0FBQztBQUNoRixDQUFDLENBQUM7QUFFRixNQUFNLHNCQUFzQixHQUFHLENBQzdCLFlBQXNDLEVBQ3pCLEVBQUU7SUFDZixNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFFM0MsS0FBSyxNQUFNLElBQUksSUFBSSxZQUFZLENBQUMsS0FBSyxFQUFFO1FBQ3JDLEtBQUssTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2QyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDMUI7S0FDRjtJQUNELE9BQU8sZ0JBQWdCLENBQUM7QUFDMUIsQ0FBQyxDQUFDO0FBRUYsTUFBTSx3QkFBd0IsR0FBRyxDQUMvQixZQUErQyxFQUMvQyxVQUFtQixFQUNuQixnQkFBeUIsRUFDTCxFQUFFO0lBQ3RCLE9BQU87UUFDTCxPQUFPLEVBQUUsWUFBWSxDQUFDLE9BQU87UUFDN0IsR0FBRyxFQUFFLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMvQyxHQUFHLENBQUMsVUFBVSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3RFLEdBQUcsQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ2hFLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHLENBQUMsSUFBc0IsRUFBb0IsRUFBRSxDQUFDLENBQUM7SUFDdEUsR0FBRyxJQUFJO0lBQ1AsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JDLEdBQUcsTUFBTTtRQUNULFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtZQUN2QixDQUFDLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUMzQyxDQUFDLENBQUMsSUFBSTtLQUNULENBQUMsQ0FBQztDQUNKLENBQUMsQ0FBQztBQUVILE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7SUFDakMsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN4QyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFlLEVBQUUsSUFBWSxFQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLE9BQU87SUFDUCxXQUFXLEVBQUUsQ0FBQztJQUNkLFNBQVMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7Q0FDM0IsQ0FBQyxDQUFDO0FBRUgsTUFBTSxxQkFBcUIsR0FBRyxDQUM1QixPQUFlLEVBQ2YsYUFBcUIsRUFDYixFQUFFO0lBQ1YsT0FBTyxDQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUM1QixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBjaGVja1N0cmVldEV4aXN0cyxcclxuICBmaW5kQWRkcmVzc1BvaW50cyxcclxuICBnZXRBZGRyZXNzUG9pbnRCeUlkLFxyXG59IGZyb20gXCIuLi9kYi9hZGRyZXNzLXBvaW50c1wiO1xyXG5pbXBvcnQgeyBkaXNjb25uZWN0S25leCB9IGZyb20gXCIuLi9kYi9kYlwiO1xyXG5pbXBvcnQgeyBmaW5kRm91bmRlciwgZ2V0Rm91bmRlckJ5SWQgfSBmcm9tIFwiLi4vZGIvZm91bmRlcnNcIjtcclxuaW1wb3J0IHsgZmluZFNjaG9vbCB9IGZyb20gXCIuLi9kYi9zY2hvb2xzXCI7XHJcbmltcG9ydCB7IEZvdW5kZXIsIE11bmljaXBhbGl0eVR5cGUsIGZvdW5kZXJUb011bmljaXBhbGl0eSB9IGZyb20gXCIuLi9kYi90eXBlc1wiO1xyXG5pbXBvcnQge1xyXG4gIGdldE11bmljaXBhbGl0eVBhcnRSZXN1bHQsXHJcbiAgZ2V0UmVzdE9mTXVuaWNpcGFsaXR5UGFydCxcclxuICBnZXRTd2l0Y2hNdW5pY2lwYWxpdHksXHJcbiAgZ2V0V2hvbGVNdW5pY2lwYWxpdHksXHJcbiAgaXNNdW5pY2lwYWxpdHlTd2l0Y2gsXHJcbiAgaXNSZXN0T2ZNdW5pY2lwYWxpdHlMaW5lLFxyXG4gIGlzUmVzdE9mTXVuaWNpcGFsaXR5UGFydExpbmUsXHJcbiAgaXNSZXN0V2l0aE5vU3RyZWV0TmFtZUxpbmUsXHJcbiAgaXNXaG9sZU11bmljaXBhbGl0eSxcclxufSBmcm9tIFwiLi9tdW5pY2lwYWxpdHlcIjtcclxuaW1wb3J0IHsgcGFyc2VMaW5lIH0gZnJvbSBcIi4vc21kLWxpbmUtcGFyc2VyXCI7XHJcbmltcG9ydCB7XHJcbiAgQWRkcmVzc1BvaW50LFxyXG4gIEVycm9yQ2FsbGJhY2tQYXJhbXMsXHJcbiAgRXhwb3J0QWRkcmVzc1BvaW50LFxyXG4gIEludGVybWVkaWF0ZUFyZWEsXHJcbiAgSW50ZXJtZWRpYXRlTXVuaWNpcGFsaXR5LFxyXG4gIEludGVybWVkaWF0ZU11bmljaXBhbGl0eVJlc3VsdCxcclxuICBJbnRlcm1lZGlhdGVTY2hvb2wsXHJcbiAgTXVuaWNpcGFsaXR5LFxyXG4gIFByb2Nlc3NMaW5lQ2FsbGJhY2tQYXJhbXMsXHJcbiAgUHJvY2Vzc0xpbmVQYXJhbXMsXHJcbiAgU2Nob29sLFxyXG4gIFNtZEVycm9yLFxyXG4gIFNtZFN0YXRlLFxyXG59IGZyb20gXCIuL3R5cGVzXCI7XHJcblxyXG5pbnRlcmZhY2UgUGFyc2VPcmRpbmFuY2VQcm9wcyB7XHJcbiAgbGluZXM6IHN0cmluZ1tdO1xyXG4gIGluaXRpYWxTdGF0ZT86IFBhcnRpYWw8U21kU3RhdGU+O1xyXG4gIG9uRXJyb3I/OiAocGFyYW1zOiBFcnJvckNhbGxiYWNrUGFyYW1zKSA9PiB2b2lkO1xyXG4gIG9uV2FybmluZz86IChwYXJhbXM6IEVycm9yQ2FsbGJhY2tQYXJhbXMpID0+IHZvaWQ7XHJcbiAgb25Qcm9jZXNzZWRMaW5lPzogKHBhcmFtczogUHJvY2Vzc0xpbmVDYWxsYmFja1BhcmFtcykgPT4gdm9pZDtcclxuICBpbmNsdWRlVW5tYXBwZWRBZGRyZXNzUG9pbnRzOiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgcGFyc2VPcmRpbmFuY2VUb0FkZHJlc3NQb2ludHMgPSBhc3luYyAoe1xyXG4gIGxpbmVzLFxyXG4gIGluaXRpYWxTdGF0ZSA9IHt9LFxyXG4gIG9uRXJyb3IgPSAoKSA9PiB7fSxcclxuICBvbldhcm5pbmcgPSAoKSA9PiB7fSxcclxuICBvblByb2Nlc3NlZExpbmUgPSAoKSA9PiB7fSxcclxuICBpbmNsdWRlVW5tYXBwZWRBZGRyZXNzUG9pbnRzID0gZmFsc2UsXHJcbn06IFBhcnNlT3JkaW5hbmNlUHJvcHMpOiBQcm9taXNlPE11bmljaXBhbGl0eVtdPiA9PiB7XHJcbiAgdHJ5IHtcclxuICAgIGNvbnN0IHN0YXRlOiBTbWRTdGF0ZSA9IHtcclxuICAgICAgY3VycmVudE11bmljaXBhbGl0eTogbnVsbCxcclxuICAgICAgY3VycmVudEZpbHRlck11bmljaXBhbGl0eTogbnVsbCxcclxuICAgICAgY3VycmVudEFyZWE6IG51bGwsXHJcbiAgICAgIHNjaG9vbHNDb21wbGV0ZWQ6IGZhbHNlLFxyXG4gICAgICBhcmVhQ291bnQ6IDAsXHJcbiAgICAgIHJlc3RzOiB7XHJcbiAgICAgICAgbm9TdHJlZXROYW1lQXJlYToge1xyXG4gICAgICAgICAgYXJlYUluZGV4OiBudWxsLFxyXG4gICAgICAgICAgbGluZU51bWJlcjogbnVsbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIG11bmljaXBhbGl0eVBhcnRzOiBbXSxcclxuICAgICAgICB3aG9sZU11bmljaXBhbGl0eUFyZWE6IHtcclxuICAgICAgICAgIGFyZWFJbmRleDogbnVsbCxcclxuICAgICAgICAgIGxpbmVOdW1iZXI6IG51bGwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBpbmNsdWRlVW5tYXBwZWRBZGRyZXNzUG9pbnRzLFxyXG4gICAgICB9LFxyXG4gICAgICBtdW5pY2lwYWxpdGllczogW10sXHJcbiAgICAgIC4uLmluaXRpYWxTdGF0ZSxcclxuICAgIH07XHJcblxyXG4gICAgbGV0IGxpbmVOdW1iZXIgPSAxO1xyXG5cclxuICAgIGZvciAoY29uc3QgcmF3TGluZSBvZiBsaW5lcykge1xyXG4gICAgICBjb25zdCBsaW5lID0gY2xlYW5MaW5lKHJhd0xpbmUpO1xyXG4gICAgICBhd2FpdCBwcm9jZXNzT25lTGluZSh7XHJcbiAgICAgICAgbGluZSxcclxuICAgICAgICByYXdMaW5lOiByYXdMaW5lLnRyaW0oKSxcclxuICAgICAgICBzdGF0ZSxcclxuICAgICAgICBsaW5lTnVtYmVyLFxyXG4gICAgICAgIG9uRXJyb3IsXHJcbiAgICAgICAgb25XYXJuaW5nLFxyXG4gICAgICB9KTtcclxuICAgICAgb25Qcm9jZXNzZWRMaW5lKHsgbGluZU51bWJlciwgbGluZSB9KTtcclxuICAgICAgbGluZU51bWJlcisrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzdGF0ZS5jdXJyZW50QXJlYSAhPSBudWxsKSB7XHJcbiAgICAgIGlmIChzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5ID09IG51bGwpIHtcclxuICAgICAgICByZXR1cm4gW107XHJcbiAgICAgIH1cclxuICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5hcmVhcy5wdXNoKG1hcEFyZWFGb3JFeHBvcnQoc3RhdGUuY3VycmVudEFyZWEpKTtcclxuICAgIH1cclxuXHJcbiAgICBhd2FpdCBjb21wbGV0ZUN1cnJlbnRNdW5pY2lwYWxpdHkoc3RhdGUpO1xyXG5cclxuICAgIHJldHVybiBzdGF0ZS5tdW5pY2lwYWxpdGllcztcclxuICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XHJcbiAgfSBmaW5hbGx5IHtcclxuICAgIGF3YWl0IGRpc2Nvbm5lY3RLbmV4KCk7XHJcbiAgfVxyXG4gIHJldHVybiBbXTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBjb252ZXJ0TXVuaWNpcGFsaXR5ID0gKFxyXG4gIG11bmljaXBhbGl0eTogSW50ZXJtZWRpYXRlTXVuaWNpcGFsaXR5XHJcbik6IE11bmljaXBhbGl0eSA9PiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIG11bmljaXBhbGl0eU5hbWU6IG11bmljaXBhbGl0eS5tdW5pY2lwYWxpdHlOYW1lLFxyXG4gICAgYXJlYXM6IG11bmljaXBhbGl0eS5hcmVhcy5tYXAoKGFyZWEpID0+ICh7XHJcbiAgICAgIGluZGV4OiBhcmVhLmluZGV4LFxyXG4gICAgICBzY2hvb2xzOiBhcmVhLnNjaG9vbHMsXHJcbiAgICAgIGFkZHJlc3NlczogQXJyYXkuZnJvbShhcmVhLmFkZHJlc3NNYXAudmFsdWVzKCkpLmZpbHRlcihcclxuICAgICAgICAocG9pbnQpID0+IHBvaW50LmxhdCAhPT0gMCAmJiBwb2ludC5sbmcgIT09IDBcclxuICAgICAgKSxcclxuICAgIH0pKSxcclxuICAgIGNvZGU6IG11bmljaXBhbGl0eS5mb3VuZGVyLm11bmljaXBhbGl0eUNvZGUsXHJcbiAgICBtdW5pY2lwYWxpdHlUeXBlOlxyXG4gICAgICBtdW5pY2lwYWxpdHkuZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHlcclxuICAgICAgICA/IFwiY2l0eVwiXHJcbiAgICAgICAgOiBcImRpc3RyaWN0XCIsXHJcbiAgICBjaXR5Q29kZXM6IFsuLi5uZXcgU2V0KG11bmljaXBhbGl0eS5jaXR5Q29kZXMpXSxcclxuICAgIGRpc3RyaWN0Q29kZXM6IFsuLi5uZXcgU2V0KG11bmljaXBhbGl0eS5kaXN0cmljdENvZGVzKV0sXHJcbiAgICB1bm1hcHBlZFBvaW50czogbXVuaWNpcGFsaXR5LnVubWFwcGVkUG9pbnRzLmZpbHRlcihcclxuICAgICAgKHBvaW50KSA9PiBwb2ludC5sYXQgIT09IDAgJiYgcG9pbnQubG5nICE9PSAwXHJcbiAgICApLFxyXG4gIH07XHJcbn07XHJcblxyXG5jb25zdCBwcm9jZXNzT25lTGluZSA9IGFzeW5jIChwYXJhbXM6IFByb2Nlc3NMaW5lUGFyYW1zKSA9PiB7XHJcbiAgY29uc3QgeyBsaW5lLCBsaW5lTnVtYmVyLCBzdGF0ZSB9ID0gcGFyYW1zO1xyXG5cclxuICBpZiAobGluZVswXSA9PT0gXCIjXCIpIHtcclxuICAgIGF3YWl0IHByb2Nlc3NNdW5pY2lwYWxpdHlMaW5lKHBhcmFtcyk7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpZiAobGluZSA9PT0gXCJcIikge1xyXG4gICAgLy8gZW5kIG9mIHNjaG9vbFxyXG4gICAgcHJvY2Vzc0VtcHR5TGluZShwYXJhbXMpO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgaWYgKGxpbmVbMF0gPT09IFwiIVwiKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBpZiAoc3RhdGUuY3VycmVudEFyZWEgPT09IG51bGwpIHtcclxuICAgIGF3YWl0IHByb2Nlc3NGaXJzdFNjaG9vbExpbmUocGFyYW1zKTtcclxuICAgIHJldHVybjtcclxuICB9XHJcblxyXG4gIGlmIChzdGF0ZS5zY2hvb2xzQ29tcGxldGVkID09PSBmYWxzZSkge1xyXG4gICAgY29uc3QgZm91bmROZXh0U2Nob29sID0gYXdhaXQgcHJvY2Vzc05leHRTY2hvb2xMaW5lKHBhcmFtcyk7XHJcbiAgICBpZiAoZm91bmROZXh0U2Nob29sKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN0YXRlLnNjaG9vbHNDb21wbGV0ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaWYgKGlzTXVuaWNpcGFsaXR5U3dpdGNoKGxpbmUpKSB7XHJcbiAgICBwcm9jZXNzTXVuaWNpcGFsaXR5U3dpdGNoTGluZShwYXJhbXMpO1xyXG4gIH0gZWxzZSBpZiAoaXNXaG9sZU11bmljaXBhbGl0eShsaW5lKSkge1xyXG4gICAgYXdhaXQgcHJvY2Vzc1dob2xlTXVuaWNpcGFsaXR5TGluZShwYXJhbXMpO1xyXG4gIH0gZWxzZSBpZiAoaXNSZXN0V2l0aE5vU3RyZWV0TmFtZUxpbmUobGluZSkpIHtcclxuICAgIHN0YXRlLnJlc3RzLm5vU3RyZWV0TmFtZUFyZWEgPSB7XHJcbiAgICAgIGFyZWFJbmRleDogc3RhdGUuY3VycmVudEFyZWEuaW5kZXgsXHJcbiAgICAgIGxpbmVOdW1iZXIsXHJcbiAgICB9O1xyXG4gIH0gZWxzZSBpZiAoaXNSZXN0T2ZNdW5pY2lwYWxpdHlMaW5lKGxpbmUpKSB7XHJcbiAgICBzdGF0ZS5yZXN0cy53aG9sZU11bmljaXBhbGl0eUFyZWEgPSB7XHJcbiAgICAgIGFyZWFJbmRleDogc3RhdGUuY3VycmVudEFyZWEuaW5kZXgsXHJcbiAgICAgIGxpbmVOdW1iZXIsXHJcbiAgICB9O1xyXG4gIH0gZWxzZSBpZiAoaXNSZXN0T2ZNdW5pY2lwYWxpdHlQYXJ0TGluZShsaW5lKSkge1xyXG4gICAgY29uc3QgeyBtdW5pY2lwYWxpdHlQYXJ0Q29kZSwgZXJyb3JzIH0gPSBhd2FpdCBnZXRSZXN0T2ZNdW5pY2lwYWxpdHlQYXJ0KFxyXG4gICAgICBsaW5lLFxyXG4gICAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXJcclxuICAgICk7XHJcbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgcGFyYW1zLm9uRXJyb3IoeyBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBsaW5lLCBlcnJvcnMgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzdGF0ZS5yZXN0cy5tdW5pY2lwYWxpdHlQYXJ0cy5wdXNoKHtcclxuICAgICAgICBtdW5pY2lwYWxpdHlQYXJ0Q29kZSxcclxuICAgICAgICBhcmVhSW5kZXg6IHN0YXRlLmN1cnJlbnRBcmVhLmluZGV4LFxyXG4gICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBhd2FpdCBwcm9jZXNzQWRkcmVzc1BvaW50TGluZShwYXJhbXMpO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NNdW5pY2lwYWxpdHlMaW5lID0gYXN5bmMgKHtcclxuICBsaW5lLFxyXG4gIGxpbmVOdW1iZXIsXHJcbiAgc3RhdGUsXHJcbiAgb25FcnJvcixcclxufTogUHJvY2Vzc0xpbmVQYXJhbXMpID0+IHtcclxuICBpZiAoc3RhdGUuY3VycmVudEFyZWEgIT09IG51bGwpIHtcclxuICAgIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuYXJlYXMucHVzaChzdGF0ZS5jdXJyZW50QXJlYSk7XHJcbiAgfVxyXG5cclxuICBhd2FpdCBjb21wbGV0ZUN1cnJlbnRNdW5pY2lwYWxpdHkoc3RhdGUpO1xyXG5cclxuICBjb25zdCB7IG11bmljaXBhbGl0eSwgZXJyb3JzIH0gPSBhd2FpdCBnZXROZXdNdW5pY2lwYWxpdHlCeU5hbWUobGluZSk7XHJcbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICBvbkVycm9yKHsgbGluZU51bWJlciwgbGluZSwgZXJyb3JzIH0pO1xyXG4gIH1cclxuICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5ID0gbXVuaWNpcGFsaXR5O1xyXG4gIHN0YXRlLmN1cnJlbnRGaWx0ZXJNdW5pY2lwYWxpdHkgPSBmb3VuZGVyVG9NdW5pY2lwYWxpdHkoXHJcbiAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXJcclxuICApO1xyXG5cclxuICBzdGF0ZS5jdXJyZW50QXJlYSA9IG51bGw7XHJcbn07XHJcblxyXG5jb25zdCBjb21wbGV0ZUN1cnJlbnRNdW5pY2lwYWxpdHkgPSBhc3luYyAoc3RhdGU6IFNtZFN0YXRlKSA9PiB7XHJcbiAgaWYgKHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkgIT09IG51bGwpIHtcclxuICAgIGF3YWl0IGFkZFJlc3RzKHN0YXRlKTtcclxuICAgIHN0YXRlLm11bmljaXBhbGl0aWVzLnB1c2goY29udmVydE11bmljaXBhbGl0eShzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5KSk7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgcHJvY2Vzc0VtcHR5TGluZSA9ICh7IHN0YXRlIH06IFByb2Nlc3NMaW5lUGFyYW1zKSA9PiB7XHJcbiAgaWYgKHN0YXRlLmN1cnJlbnRBcmVhICE9PSBudWxsKSB7XHJcbiAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmFyZWFzLnB1c2goc3RhdGUuY3VycmVudEFyZWEpO1xyXG4gICAgc3RhdGUuY3VycmVudEFyZWEgPSBudWxsO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NGaXJzdFNjaG9vbExpbmUgPSBhc3luYyAoe1xyXG4gIHJhd0xpbmUsXHJcbiAgbGluZU51bWJlcixcclxuICBzdGF0ZSxcclxuICBvbkVycm9yLFxyXG59OiBQcm9jZXNzTGluZVBhcmFtcykgPT4ge1xyXG4gIGlmIChzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5ID09PSBudWxsKSB7XHJcbiAgICBvbkVycm9yKHtcclxuICAgICAgbGluZU51bWJlcixcclxuICAgICAgbGluZTogcmF3TGluZSxcclxuICAgICAgZXJyb3JzOiBbXHJcbiAgICAgICAgd2hvbGVMaW5lRXJyb3IoXHJcbiAgICAgICAgICBcIkRlZmluaWNpIMWha29seSBtdXPDrSBwxZllZGNow6F6ZXQgZGVmaW5pY2UgesWZaXpvdmF0ZWxlICh1dm96ZW7DoSAnIycsIG5hcMWZLiAnIyBTdHJha29uaWNlJykuXCIsXHJcbiAgICAgICAgICByYXdMaW5lXHJcbiAgICAgICAgKSxcclxuICAgICAgXSxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBzdGF0ZS5jdXJyZW50QXJlYSA9IHtcclxuICAgIGluZGV4OiBzdGF0ZS5hcmVhQ291bnQrKyxcclxuICAgIHNjaG9vbHM6IFtcclxuICAgICAgYXdhaXQgZ2V0TmV3U2Nob29sKHtcclxuICAgICAgICBuYW1lOiByYXdMaW5lLFxyXG4gICAgICAgIGZvdW5kZXI6IHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlcixcclxuICAgICAgICBsaW5lTnVtYmVyLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIG9uRXJyb3IsXHJcbiAgICAgIH0pLFxyXG4gICAgXSxcclxuICAgIGFkZHJlc3NlczogW10sXHJcbiAgICBhZGRyZXNzTWFwOiBuZXcgTWFwPG51bWJlciwgRXhwb3J0QWRkcmVzc1BvaW50PigpLFxyXG4gICAgYWxsU2Nob29sc0FkZGVkOiBmYWxzZSxcclxuICB9O1xyXG4gIHN0YXRlLnNjaG9vbHNDb21wbGV0ZWQgPSBmYWxzZTtcclxuICBzdGF0ZS5jdXJyZW50RmlsdGVyTXVuaWNpcGFsaXR5ID0gZm91bmRlclRvTXVuaWNpcGFsaXR5KFxyXG4gICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgKTtcclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NOZXh0U2Nob29sTGluZSA9IGFzeW5jICh7XHJcbiAgbGluZSxcclxuICBsaW5lTnVtYmVyLFxyXG4gIHN0YXRlLFxyXG59OiBQcm9jZXNzTGluZVBhcmFtcyk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xyXG4gIGNvbnN0IHNjaG9vbCA9IGF3YWl0IGdldE5ld1NjaG9vbCh7XHJcbiAgICBuYW1lOiBsaW5lLFxyXG4gICAgZm91bmRlcjogc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyLFxyXG4gICAgbGluZU51bWJlcixcclxuICAgIHJlcXVpcmVkOiBmYWxzZSxcclxuICAgIG9uRXJyb3I6ICgpID0+IHt9LFxyXG4gIH0pO1xyXG5cclxuICBpZiAoc2Nob29sID09PSBudWxsKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBzdGF0ZS5jdXJyZW50QXJlYS5zY2hvb2xzLnB1c2goc2Nob29sKTtcclxuICByZXR1cm4gdHJ1ZTtcclxufTtcclxuXHJcbmNvbnN0IHByb2Nlc3NNdW5pY2lwYWxpdHlTd2l0Y2hMaW5lID0gYXN5bmMgKHtcclxuICBsaW5lLFxyXG4gIHN0YXRlLFxyXG4gIGxpbmVOdW1iZXIsXHJcbiAgb25FcnJvcixcclxufTogUHJvY2Vzc0xpbmVQYXJhbXMpID0+IHtcclxuICBjb25zdCB7IG11bmljaXBhbGl0eSwgZXJyb3JzIH0gPSBhd2FpdCBnZXRTd2l0Y2hNdW5pY2lwYWxpdHkoXHJcbiAgICBsaW5lLFxyXG4gICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgKTtcclxuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgIG9uRXJyb3IoeyBsaW5lTnVtYmVyLCBsaW5lLCBlcnJvcnMgfSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHN0YXRlLmN1cnJlbnRGaWx0ZXJNdW5pY2lwYWxpdHkgPSBtdW5pY2lwYWxpdHk7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgcHJvY2Vzc1dob2xlTXVuaWNpcGFsaXR5TGluZSA9IGFzeW5jICh7XHJcbiAgbGluZSxcclxuICBzdGF0ZSxcclxuICBsaW5lTnVtYmVyLFxyXG4gIG9uRXJyb3IsXHJcbn06IFByb2Nlc3NMaW5lUGFyYW1zKSA9PiB7XHJcbiAgY29uc3QgeyBtdW5pY2lwYWxpdHksIGVycm9ycyB9ID0gYXdhaXQgZ2V0V2hvbGVNdW5pY2lwYWxpdHkoXHJcbiAgICBsaW5lLFxyXG4gICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgKTtcclxuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgIG9uRXJyb3IoeyBsaW5lTnVtYmVyLCBsaW5lLCBlcnJvcnMgfSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGlmIChtdW5pY2lwYWxpdHkudHlwZSA9PT0gTXVuaWNpcGFsaXR5VHlwZS5DaXR5KSB7XHJcbiAgICAgIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuY2l0eUNvZGVzLnB1c2gobXVuaWNpcGFsaXR5LmNvZGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5kaXN0cmljdENvZGVzLnB1c2gobXVuaWNpcGFsaXR5LmNvZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFkZHJlc3NQb2ludHMgPSBhd2FpdCBmaW5kQWRkcmVzc1BvaW50cyh7XHJcbiAgICAgIHR5cGU6IFwid2hvbGVNdW5pY2lwYWxpdHlcIixcclxuICAgICAgbXVuaWNpcGFsaXR5LFxyXG4gICAgfSk7XHJcbiAgICBhZGRBZGRyZXNzUG9pbnRzVG9BcmVhKHN0YXRlLmN1cnJlbnRBcmVhLCBhZGRyZXNzUG9pbnRzLCBsaW5lTnVtYmVyKTtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBhZGRBZGRyZXNzUG9pbnRzVG9BcmVhID0gKFxyXG4gIGFyZWE6IEludGVybWVkaWF0ZUFyZWEsXHJcbiAgYWRkcmVzc1BvaW50czogQWRkcmVzc1BvaW50W10sXHJcbiAgbGluZU51bWJlcjogbnVtYmVyLFxyXG4gIG11bmljaXBhbGl0eUNvZGU/OiBudW1iZXJcclxuKSA9PiB7XHJcbiAgZm9yIChjb25zdCBwb2ludCBvZiBhZGRyZXNzUG9pbnRzKSB7XHJcbiAgICBpZiAoYXJlYS5hZGRyZXNzTWFwLmhhcyhwb2ludC5pZCkpIHtcclxuICAgICAgYXJlYS5hZGRyZXNzTWFwLmdldChwb2ludC5pZCkubGluZU51bWJlcnMucHVzaChsaW5lTnVtYmVyIC0gMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhcmVhLmFkZHJlc3NNYXAuc2V0KFxyXG4gICAgICAgIHBvaW50LmlkLFxyXG4gICAgICAgIG1hcEFkZHJlc3NQb2ludEZvckV4cG9ydChwb2ludCwgbGluZU51bWJlciwgbXVuaWNpcGFsaXR5Q29kZSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBwcm9jZXNzQWRkcmVzc1BvaW50TGluZSA9IGFzeW5jICh7XHJcbiAgbGluZSxcclxuICBzdGF0ZSxcclxuICBsaW5lTnVtYmVyLFxyXG4gIG9uRXJyb3IsXHJcbiAgb25XYXJuaW5nLFxyXG59OiBQcm9jZXNzTGluZVBhcmFtcykgPT4ge1xyXG4gIGNvbnN0IHsgc21kTGluZXMsIGVycm9ycyB9ID0gcGFyc2VMaW5lKGxpbmUpO1xyXG4gIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgb25FcnJvcih7IGxpbmVOdW1iZXIsIGxpbmUsIGVycm9ycyB9KTtcclxuICB9IGVsc2Uge1xyXG4gICAgZm9yIChjb25zdCBzbWRMaW5lIG9mIHNtZExpbmVzKSB7XHJcbiAgICAgIGlmIChzbWRMaW5lLnR5cGUgPT09IFwic3RyZWV0XCIpIHtcclxuICAgICAgICBjb25zdCB7IGV4aXN0cywgZXJyb3JzIH0gPSBhd2FpdCBjaGVja1N0cmVldEV4aXN0cyhcclxuICAgICAgICAgIHNtZExpbmUuc3RyZWV0LFxyXG4gICAgICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIG9uV2FybmluZyh7IGxpbmVOdW1iZXIsIGxpbmUsIGVycm9ycyB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGV4aXN0cykge1xyXG4gICAgICAgICAgY29uc3QgYWRkcmVzc1BvaW50cyA9IGF3YWl0IGZpbmRBZGRyZXNzUG9pbnRzKHtcclxuICAgICAgICAgICAgdHlwZTogXCJzbWRMaW5lXCIsXHJcbiAgICAgICAgICAgIHNtZExpbmUsXHJcbiAgICAgICAgICAgIG11bmljaXBhbGl0eTogc3RhdGUuY3VycmVudEZpbHRlck11bmljaXBhbGl0eSxcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGFkZEFkZHJlc3NQb2ludHNUb0FyZWEoXHJcbiAgICAgICAgICAgIHN0YXRlLmN1cnJlbnRBcmVhLFxyXG4gICAgICAgICAgICBhZGRyZXNzUG9pbnRzLFxyXG4gICAgICAgICAgICBsaW5lTnVtYmVyLFxyXG4gICAgICAgICAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmNvZGUgIT09XHJcbiAgICAgICAgICAgICAgc3RhdGUuY3VycmVudEZpbHRlck11bmljaXBhbGl0eS5jb2RlXHJcbiAgICAgICAgICAgICAgPyBzdGF0ZS5jdXJyZW50RmlsdGVyTXVuaWNpcGFsaXR5LmNvZGVcclxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoc21kTGluZS50eXBlID09PSBcIm11bmljaXBhbGl0eVBhcnRcIikge1xyXG4gICAgICAgIGNvbnN0IHsgbXVuaWNpcGFsaXR5UGFydENvZGUsIGVycm9ycyB9ID1cclxuICAgICAgICAgIGF3YWl0IGdldE11bmljaXBhbGl0eVBhcnRSZXN1bHQoXHJcbiAgICAgICAgICAgIHNtZExpbmUubXVuaWNpcGFsaXR5UGFydCxcclxuICAgICAgICAgICAgbGluZSxcclxuICAgICAgICAgICAgc3RhdGUuY3VycmVudE11bmljaXBhbGl0eS5mb3VuZGVyXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgb25XYXJuaW5nKHsgbGluZU51bWJlciwgbGluZSwgZXJyb3JzIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCBhZGRyZXNzUG9pbnRzID0gYXdhaXQgZmluZEFkZHJlc3NQb2ludHMoe1xyXG4gICAgICAgICAgICB0eXBlOiBcInNtZExpbmVcIixcclxuICAgICAgICAgICAgc21kTGluZSxcclxuICAgICAgICAgICAgbXVuaWNpcGFsaXR5OiBzdGF0ZS5jdXJyZW50RmlsdGVyTXVuaWNpcGFsaXR5LFxyXG4gICAgICAgICAgICBtdW5pY2lwYWxpdHlQYXJ0Q29kZSxcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIGFkZEFkZHJlc3NQb2ludHNUb0FyZWEoc3RhdGUuY3VycmVudEFyZWEsIGFkZHJlc3NQb2ludHMsIGxpbmVOdW1iZXIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RUb0FyZWEgPSAoXHJcbiAgcmVzdFBvaW50czogQWRkcmVzc1BvaW50W10sXHJcbiAgYXJlYUluZGV4OiBudW1iZXIsXHJcbiAgbGluZU51bWJlcjogbnVtYmVyLFxyXG4gIHN0YXRlOiBTbWRTdGF0ZVxyXG4pID0+IHtcclxuICBjb25zdCBhZGRyZXNzUG9pbnRzSWRzID0gZ2V0QWxsQWRkcmVzc1BvaW50c0lkcyhzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5KTtcclxuXHJcbiAgLy8gZmlsdGVyIG91dCBhZGRyZXNzIHBvaW50cyBhbHJlYWR5IHByZXNlbnRcclxuICBjb25zdCByZW1haW5pbmdQb2ludHMgPSByZXN0UG9pbnRzLmZpbHRlcihcclxuICAgIChwb2ludCkgPT4gIWFkZHJlc3NQb2ludHNJZHMuaGFzKHBvaW50LmlkKVxyXG4gICk7XHJcblxyXG4gIGFkZEFkZHJlc3NQb2ludHNUb0FyZWEoXHJcbiAgICBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmFyZWFzLmZpbmQoKGFyZWEpID0+IGFyZWEuaW5kZXggPT09IGFyZWFJbmRleCksXHJcbiAgICByZW1haW5pbmdQb2ludHMsXHJcbiAgICBsaW5lTnVtYmVyXHJcbiAgKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RzID0gYXN5bmMgKHN0YXRlOiBTbWRTdGF0ZSkgPT4ge1xyXG4gIGlmIChzdGF0ZS5yZXN0cy5ub1N0cmVldE5hbWVBcmVhLmFyZWFJbmRleCAhPT0gbnVsbCkge1xyXG4gICAgYXdhaXQgYWRkUmVzdFdpdGhOb1N0cmVldE5hbWVUb1NjaG9vbChcclxuICAgICAgc3RhdGUucmVzdHMubm9TdHJlZXROYW1lQXJlYS5saW5lTnVtYmVyLFxyXG4gICAgICBzdGF0ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlmIChzdGF0ZS5yZXN0cy53aG9sZU11bmljaXBhbGl0eUFyZWEuYXJlYUluZGV4ICE9PSBudWxsKSB7XHJcbiAgICBhd2FpdCBhZGRSZXN0T2ZNdW5pY2lwYWxpdHkoXHJcbiAgICAgIHN0YXRlLnJlc3RzLndob2xlTXVuaWNpcGFsaXR5QXJlYS5saW5lTnVtYmVyLFxyXG4gICAgICBzdGF0ZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGZvciAoY29uc3QgcmVzdCBvZiBzdGF0ZS5yZXN0cy5tdW5pY2lwYWxpdHlQYXJ0cykge1xyXG4gICAgYXdhaXQgYWRkUmVzdE9mTXVuaWNpcGFsaXR5UGFydChcclxuICAgICAgc3RhdGUsXHJcbiAgICAgIHJlc3QubXVuaWNpcGFsaXR5UGFydENvZGUsXHJcbiAgICAgIHJlc3QuYXJlYUluZGV4LFxyXG4gICAgICByZXN0LmxpbmVOdW1iZXJcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpZiAoc3RhdGUucmVzdHMuaW5jbHVkZVVubWFwcGVkQWRkcmVzc1BvaW50cykge1xyXG4gICAgYXdhaXQgYWRkUmVzdE9mTXVuaWNpcGFsaXR5VG9Vbm1hcHBlZFBvaW50cyhzdGF0ZSk7XHJcbiAgfVxyXG5cclxuICBzdGF0ZS5yZXN0cy5ub1N0cmVldE5hbWVBcmVhLmFyZWFJbmRleCA9IG51bGw7XHJcbiAgc3RhdGUucmVzdHMud2hvbGVNdW5pY2lwYWxpdHlBcmVhLmFyZWFJbmRleCA9IG51bGw7XHJcbiAgc3RhdGUucmVzdHMubXVuaWNpcGFsaXR5UGFydHMgPSBbXTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RXaXRoTm9TdHJlZXROYW1lVG9TY2hvb2wgPSBhc3luYyAoXHJcbiAgbGluZU51bWJlcjogbnVtYmVyLFxyXG4gIHN0YXRlOiBTbWRTdGF0ZVxyXG4pID0+IHtcclxuICAvLyBnZXQgYWxsIGFkZHJlc3MgcG9pbnRzIHdpdGhvdXQgc3RyZWV0IG5hbWUgZm9yIGN1cnJlbnQgbXVuaWNpcGFsaXR5XHJcbiAgY29uc3QgcG9pbnRzTm9TdHJlZXROYW1lID0gYXdhaXQgZmluZEFkZHJlc3NQb2ludHMoe1xyXG4gICAgdHlwZTogXCJ3aG9sZU11bmljaXBhbGl0eU5vU3RyZWV0TmFtZVwiLFxyXG4gICAgbXVuaWNpcGFsaXR5OiB7XHJcbiAgICAgIGNvZGU6IHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlci5tdW5pY2lwYWxpdHlDb2RlLFxyXG4gICAgICB0eXBlOiBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSxcclxuICAgIH0sXHJcbiAgfSk7XHJcbiAgYWRkUmVzdFRvQXJlYShcclxuICAgIHBvaW50c05vU3RyZWV0TmFtZSxcclxuICAgIHN0YXRlLnJlc3RzLm5vU3RyZWV0TmFtZUFyZWEuYXJlYUluZGV4LFxyXG4gICAgbGluZU51bWJlcixcclxuICAgIHN0YXRlXHJcbiAgKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RPZk11bmljaXBhbGl0eSA9IGFzeW5jIChsaW5lTnVtYmVyOiBudW1iZXIsIHN0YXRlOiBTbWRTdGF0ZSkgPT4ge1xyXG4gIGFkZFJlc3RUb0FyZWEoXHJcbiAgICBhd2FpdCBnZXRSZXN0T2ZNdW5pY2lwYWxpdHkoc3RhdGUpLFxyXG4gICAgc3RhdGUucmVzdHMud2hvbGVNdW5pY2lwYWxpdHlBcmVhLmFyZWFJbmRleCxcclxuICAgIGxpbmVOdW1iZXIsXHJcbiAgICBzdGF0ZVxyXG4gICk7XHJcbn07XHJcblxyXG5jb25zdCBhZGRSZXN0T2ZNdW5pY2lwYWxpdHlUb1VubWFwcGVkUG9pbnRzID0gYXN5bmMgKHN0YXRlOiBTbWRTdGF0ZSkgPT4ge1xyXG4gIHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkudW5tYXBwZWRQb2ludHMgPSAoXHJcbiAgICBhd2FpdCBnZXRSZXN0T2ZNdW5pY2lwYWxpdHkoc3RhdGUpXHJcbiAgKS5tYXAoKHBvaW50KSA9PiBtYXBBZGRyZXNzUG9pbnRGb3JFeHBvcnQocG9pbnQpKTtcclxufTtcclxuXHJcbmNvbnN0IGdldFJlc3RPZk11bmljaXBhbGl0eSA9IGFzeW5jIChcclxuICBzdGF0ZTogU21kU3RhdGVcclxuKTogUHJvbWlzZTxBZGRyZXNzUG9pbnRbXT4gPT4ge1xyXG4gIC8vIGdldCBhbGwgYWRkcmVzcyBwb2ludHMgZm9yIGN1cnJlbnQgbXVuaWNpcGFsaXR5XHJcbiAgY29uc3QgYWxsUG9pbnRzID0gYXdhaXQgZmluZEFkZHJlc3NQb2ludHMoe1xyXG4gICAgdHlwZTogXCJ3aG9sZU11bmljaXBhbGl0eVwiLFxyXG4gICAgbXVuaWNpcGFsaXR5OiB7XHJcbiAgICAgIGNvZGU6IHN0YXRlLmN1cnJlbnRNdW5pY2lwYWxpdHkuZm91bmRlci5tdW5pY2lwYWxpdHlDb2RlLFxyXG4gICAgICB0eXBlOiBzdGF0ZS5jdXJyZW50TXVuaWNpcGFsaXR5LmZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSxcclxuICAgIH0sXHJcbiAgfSk7XHJcblxyXG4gIC8vIGZpbHRlciBvdXQgYWRkcmVzcyBwb2ludHMgYWxyZWFkeSBwcmVzZW50XHJcbiAgY29uc3QgYWRkcmVzc1BvaW50c0lkcyA9IGdldEFsbEFkZHJlc3NQb2ludHNJZHMoc3RhdGUuY3VycmVudE11bmljaXBhbGl0eSk7XHJcbiAgcmV0dXJuIGFsbFBvaW50cy5maWx0ZXIoKHBvaW50KSA9PiAhYWRkcmVzc1BvaW50c0lkcy5oYXMocG9pbnQuaWQpKTtcclxufTtcclxuXHJcbmNvbnN0IGFkZFJlc3RPZk11bmljaXBhbGl0eVBhcnQgPSBhc3luYyAoXHJcbiAgc3RhdGU6IFNtZFN0YXRlLFxyXG4gIG11bmljaXBhbGl0eVBhcnRDb2RlOiBudW1iZXIsXHJcbiAgYXJlYUluZGV4OiBudW1iZXIsXHJcbiAgbGluZU51bWJlcjogbnVtYmVyXHJcbikgPT4ge1xyXG4gIGNvbnN0IGFsbFBvaW50cyA9IGF3YWl0IGZpbmRBZGRyZXNzUG9pbnRzKHtcclxuICAgIHR5cGU6IFwid2hvbGVNdW5pY2lwYWxpdHlQYXJ0XCIsXHJcbiAgICBtdW5pY2lwYWxpdHlQYXJ0Q29kZSxcclxuICB9KTtcclxuICBhZGRSZXN0VG9BcmVhKGFsbFBvaW50cywgYXJlYUluZGV4LCBsaW5lTnVtYmVyLCBzdGF0ZSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TmV3TXVuaWNpcGFsaXR5QnlOYW1lID0gYXN5bmMgKFxyXG4gIG5hbWU6IHN0cmluZ1xyXG4pOiBQcm9taXNlPEludGVybWVkaWF0ZU11bmljaXBhbGl0eVJlc3VsdD4gPT4ge1xyXG4gIGNvbnN0IHsgZm91bmRlciwgZXJyb3JzIH0gPSBhd2FpdCBmaW5kRm91bmRlcihuYW1lKTtcclxuICByZXR1cm4gZ2V0TmV3TXVuaWNpcGFsaXR5KGZvdW5kZXIsIGVycm9ycyk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0TmV3TXVuaWNpcGFsaXR5QnlGb3VuZGVySWQgPSBhc3luYyAoXHJcbiAgZm91bmRlcklkOiBudW1iZXJcclxuKTogUHJvbWlzZTxJbnRlcm1lZGlhdGVNdW5pY2lwYWxpdHlSZXN1bHQ+ID0+IHtcclxuICBjb25zdCB7IGZvdW5kZXIsIGVycm9ycyB9ID0gYXdhaXQgZ2V0Rm91bmRlckJ5SWQoZm91bmRlcklkKTtcclxuICByZXR1cm4gZ2V0TmV3TXVuaWNpcGFsaXR5KGZvdW5kZXIsIGVycm9ycyk7XHJcbn07XHJcblxyXG5jb25zdCBnZXROZXdNdW5pY2lwYWxpdHkgPSAoXHJcbiAgZm91bmRlcjogRm91bmRlcixcclxuICBlcnJvcnM6IFNtZEVycm9yW11cclxuKTogSW50ZXJtZWRpYXRlTXVuaWNpcGFsaXR5UmVzdWx0ID0+ICh7XHJcbiAgbXVuaWNpcGFsaXR5OiB7XHJcbiAgICBtdW5pY2lwYWxpdHlOYW1lOiBmb3VuZGVyID8gZm91bmRlci5uYW1lIDogXCJOZXpuw6Ftw6Egb2JlY1wiLFxyXG4gICAgZm91bmRlcixcclxuICAgIGFyZWFzOiBbXSxcclxuICAgIGNvZGU6IGZvdW5kZXIgPyBmb3VuZGVyLm11bmljaXBhbGl0eUNvZGUgOiAwLFxyXG4gICAgbXVuaWNpcGFsaXR5VHlwZTpcclxuICAgICAgZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHkgPyBcImNpdHlcIiA6IFwiZGlzdHJpY3RcIixcclxuICAgIGNpdHlDb2RlczpcclxuICAgICAgZm91bmRlci5tdW5pY2lwYWxpdHlUeXBlID09PSBNdW5pY2lwYWxpdHlUeXBlLkNpdHlcclxuICAgICAgICA/IFtmb3VuZGVyLm11bmljaXBhbGl0eUNvZGVdXHJcbiAgICAgICAgOiBbXSxcclxuICAgIGRpc3RyaWN0Q29kZXM6XHJcbiAgICAgIGZvdW5kZXIubXVuaWNpcGFsaXR5VHlwZSA9PT0gTXVuaWNpcGFsaXR5VHlwZS5EaXN0cmljdFxyXG4gICAgICAgID8gW2ZvdW5kZXIubXVuaWNpcGFsaXR5Q29kZV1cclxuICAgICAgICA6IFtdLFxyXG4gICAgdW5tYXBwZWRQb2ludHM6IFtdLFxyXG4gIH0sXHJcbiAgZXJyb3JzLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXROZXdTY2hvb2wgPSBhc3luYyAoe1xyXG4gIG5hbWUsXHJcbiAgZm91bmRlcixcclxuICBsaW5lTnVtYmVyLFxyXG4gIHJlcXVpcmVkLFxyXG4gIG9uRXJyb3IsXHJcbn06IHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgZm91bmRlcjogRm91bmRlciB8IG51bGw7XHJcbiAgbGluZU51bWJlcjogbnVtYmVyO1xyXG4gIHJlcXVpcmVkOiBib29sZWFuO1xyXG4gIG9uRXJyb3I6IChwYXJhbXM6IEVycm9yQ2FsbGJhY2tQYXJhbXMpID0+IHZvaWQ7XHJcbn0pOiBQcm9taXNlPEludGVybWVkaWF0ZVNjaG9vbCB8IG51bGw+ID0+IHtcclxuICBsZXQgZXhwb3J0U2Nob29sOiBTY2hvb2wgPSB7XHJcbiAgICBuYW1lLFxyXG4gICAgaXpvOiBcIlwiLFxyXG4gIH07XHJcbiAgaWYgKGZvdW5kZXIgIT09IG51bGwpIHtcclxuICAgIGNvbnN0IHsgc2Nob29sLCBlcnJvcnMgfSA9IGZpbmRTY2hvb2woXHJcbiAgICAgIG5hbWUsXHJcbiAgICAgIGZvdW5kZXIuc2Nob29scyxcclxuICAgICAgcmVxdWlyZWQgPyB1bmRlZmluZWQgOiA0XHJcbiAgICApO1xyXG4gICAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIG9uRXJyb3IoeyBsaW5lTnVtYmVyLCBsaW5lOiBuYW1lLCBlcnJvcnMgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoc2Nob29sKSB7XHJcbiAgICAgIGV4cG9ydFNjaG9vbC5uYW1lID0gc2Nob29sLm5hbWU7XHJcbiAgICAgIGV4cG9ydFNjaG9vbC5pem8gPSBzY2hvb2wuaXpvIHx8IFwiXCI7XHJcbiAgICAgIGlmIChzY2hvb2wubG9jYXRpb25zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IGF3YWl0IGdldEFkZHJlc3NQb2ludEJ5SWQoXHJcbiAgICAgICAgICBzY2hvb2wubG9jYXRpb25zWzBdLmFkZHJlc3NQb2ludElkXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAocG9zaXRpb24gIT09IG51bGwpIHtcclxuICAgICAgICAgIGV4cG9ydFNjaG9vbC5wb3NpdGlvbiA9IG1hcEFkZHJlc3NQb2ludEZvckV4cG9ydChwb3NpdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHsgLi4uZXhwb3J0U2Nob29sLCBhZGRyZXNzTWFwOiBuZXcgTWFwPG51bWJlciwgRXhwb3J0QWRkcmVzc1BvaW50PigpIH07XHJcbn07XHJcblxyXG5jb25zdCBnZXRBbGxBZGRyZXNzUG9pbnRzSWRzID0gKFxyXG4gIG11bmljaXBhbGl0eTogSW50ZXJtZWRpYXRlTXVuaWNpcGFsaXR5XHJcbik6IFNldDxudW1iZXI+ID0+IHtcclxuICBjb25zdCBhZGRyZXNzUG9pbnRzSWRzID0gbmV3IFNldDxudW1iZXI+KCk7XHJcblxyXG4gIGZvciAoY29uc3QgYXJlYSBvZiBtdW5pY2lwYWxpdHkuYXJlYXMpIHtcclxuICAgIGZvciAoY29uc3QgaWQgb2YgYXJlYS5hZGRyZXNzTWFwLmtleXMoKSkge1xyXG4gICAgICBhZGRyZXNzUG9pbnRzSWRzLmFkZChpZCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBhZGRyZXNzUG9pbnRzSWRzO1xyXG59O1xyXG5cclxuY29uc3QgbWFwQWRkcmVzc1BvaW50Rm9yRXhwb3J0ID0gKFxyXG4gIGFkZHJlc3NQb2ludDogQWRkcmVzc1BvaW50IHwgRXhwb3J0QWRkcmVzc1BvaW50LFxyXG4gIGxpbmVOdW1iZXI/OiBudW1iZXIsXHJcbiAgbXVuaWNpcGFsaXR5Q29kZT86IG51bWJlclxyXG4pOiBFeHBvcnRBZGRyZXNzUG9pbnQgPT4ge1xyXG4gIHJldHVybiB7XHJcbiAgICBhZGRyZXNzOiBhZGRyZXNzUG9pbnQuYWRkcmVzcyxcclxuICAgIGxhdDogcm91bmRUb05EZWNpbWFsUGxhY2VzKGFkZHJlc3NQb2ludC5sYXQsIDYpLFxyXG4gICAgbG5nOiByb3VuZFRvTkRlY2ltYWxQbGFjZXMoYWRkcmVzc1BvaW50LmxuZywgNiksXHJcbiAgICAuLi4obGluZU51bWJlciAhPT0gdW5kZWZpbmVkID8geyBsaW5lTnVtYmVyczogW2xpbmVOdW1iZXIgLSAxXSB9IDoge30pLFxyXG4gICAgLi4uKG11bmljaXBhbGl0eUNvZGUgIT09IHVuZGVmaW5lZCA/IHsgbXVuaWNpcGFsaXR5Q29kZSB9IDoge30pLFxyXG4gIH07XHJcbn07XHJcblxyXG5jb25zdCBtYXBBcmVhRm9yRXhwb3J0ID0gKGFyZWE6IEludGVybWVkaWF0ZUFyZWEpOiBJbnRlcm1lZGlhdGVBcmVhID0+ICh7XHJcbiAgLi4uYXJlYSxcclxuICBzY2hvb2xzOiBhcmVhLnNjaG9vbHMubWFwKChzY2hvb2wpID0+ICh7XHJcbiAgICAuLi5zY2hvb2wsXHJcbiAgICBwb3NpdGlvbjogc2Nob29sLnBvc2l0aW9uXHJcbiAgICAgID8gbWFwQWRkcmVzc1BvaW50Rm9yRXhwb3J0KHNjaG9vbC5wb3NpdGlvbilcclxuICAgICAgOiBudWxsLFxyXG4gIH0pKSxcclxufSk7XHJcblxyXG5jb25zdCBjbGVhbkxpbmUgPSAobGluZTogc3RyaW5nKSA9PiB7XHJcbiAgcmV0dXJuIGxpbmUudHJpbSgpLnJlcGxhY2UoL+KAky9nLCBcIi1cIik7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3Qgd2hvbGVMaW5lRXJyb3IgPSAobWVzc2FnZTogc3RyaW5nLCBsaW5lOiBzdHJpbmcpOiBTbWRFcnJvciA9PiAoe1xyXG4gIG1lc3NhZ2UsXHJcbiAgc3RhcnRPZmZzZXQ6IDAsXHJcbiAgZW5kT2Zmc2V0OiBsaW5lLmxlbmd0aCArIDEsXHJcbn0pO1xyXG5cclxuY29uc3Qgcm91bmRUb05EZWNpbWFsUGxhY2VzID0gKFxyXG4gIHRvUm91bmQ6IG51bWJlcixcclxuICBkZWNpbWFsUGxhY2VzOiBudW1iZXJcclxuKTogbnVtYmVyID0+IHtcclxuICByZXR1cm4gKFxyXG4gICAgTWF0aC5yb3VuZCh0b1JvdW5kICogTWF0aC5wb3coMTAsIGRlY2ltYWxQbGFjZXMpKSAvXHJcbiAgICBNYXRoLnBvdygxMCwgZGVjaW1hbFBsYWNlcylcclxuICApO1xyXG59O1xyXG4iXX0=
package/package.json CHANGED
@@ -73,7 +73,7 @@
73
73
  },
74
74
  "name": "text-to-map",
75
75
  "description": "Text To Map usiluje o lepší, strojově zpracovatelné využití částí vyhlášek s výčtem ulic a dalších lokací. Jde o rozšiřitelnou sadu konceptů a nástrojů, které zajistí hladký převod výčtu ulic a jejich rozsahů v lidsky srozumitelném jazyce do strojově zpracovatelného, uchopitelného formátu.",
76
- "version": "1.1.34",
76
+ "version": "1.1.36",
77
77
  "main": "dist/index.js",
78
78
  "types": "dist/index.d.ts",
79
79
  "files": [