@tricoteuses/assemblee 1.9.7 → 1.9.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api.js +1 -1
- package/lib/api.mjs +1 -1
- package/lib/bugs/acteur-00010/plugin.test.js +5 -5
- package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
- package/lib/bugs/acteur-00010.js +18 -17
- package/lib/bugs/acteur-00010.mjs +1 -1
- package/lib/bugs/agenda-00002/plugin.test.js +6 -6
- package/lib/bugs/agenda-00002/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00002.js +32 -31
- package/lib/bugs/agenda-00002.mjs +3 -3
- package/lib/bugs/agenda-00008/plugin.test.js +5 -5
- package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00008.js +18 -17
- package/lib/bugs/agenda-00008.mjs +1 -1
- package/lib/bugs/agenda-00011/plugin.test.js +18 -22
- package/lib/bugs/agenda-00011/plugin.test.mjs +5 -9
- package/lib/bugs/agenda-00011.js +29 -28
- package/lib/bugs/agenda-00011.mjs +3 -3
- package/lib/bugs.js +29 -27
- package/lib/bugs.mjs +3 -3
- package/lib/cleaners/actes_legislatifs.js +5 -5
- package/lib/cleaners/actes_legislatifs.mjs +1 -1
- package/lib/cleaners/acteurs.js +5 -5
- package/lib/cleaners/acteurs.mjs +1 -1
- package/lib/cleaners/amendements.js +5 -5
- package/lib/cleaners/amendements.mjs +1 -1
- package/lib/cleaners/debats.js +1 -1
- package/lib/cleaners/debats.mjs +1 -1
- package/lib/cleaners/documents.js +5 -5
- package/lib/cleaners/documents.mjs +1 -1
- package/lib/cleaners/dossiers_legislatifs.js +5 -5
- package/lib/cleaners/dossiers_legislatifs.mjs +1 -1
- package/lib/cleaners/index.js +1 -1
- package/lib/cleaners/index.mjs +1 -1
- package/lib/cleaners/organes.js +2 -2
- package/lib/cleaners/organes.mjs +1 -1
- package/lib/cleaners/questions.js +1 -1
- package/lib/cleaners/questions.mjs +1 -1
- package/lib/cleaners/reunions.js +5 -5
- package/lib/cleaners/reunions.mjs +1 -1
- package/lib/cleaners/scrutins.js +8 -8
- package/lib/cleaners/scrutins.mjs +1 -1
- package/lib/cleaners/textes_loi.js +1 -1
- package/lib/cleaners/textes_loi.mjs +1 -1
- package/lib/cleaners/xml.js +8 -8
- package/lib/cleaners/xml.mjs +1 -1
- package/lib/datasets.d.ts +5 -0
- package/lib/datasets.js +13 -11
- package/lib/datasets.mjs +5 -3
- package/lib/dates.js +4 -3
- package/lib/dates.mjs +1 -1
- package/lib/dossiers_legislatifs.js +8 -8
- package/lib/dossiers_legislatifs.mjs +1 -1
- package/lib/examples/PIONANR5L15B0020/input.js +1 -1
- package/lib/examples/PIONANR5L15B0020/input.mjs +1 -1
- package/lib/examples/PRJLANR5L16B0914/input.js +1 -1
- package/lib/examples/PRJLANR5L16B0914/input.mjs +1 -1
- package/lib/examples/PRJLANR5L16B2014/input.js +1 -1
- package/lib/examples/PRJLANR5L16B2014/input.mjs +1 -1
- package/lib/examples/PRJLANR5L16B2424/input.js +1 -1
- package/lib/examples/PRJLANR5L16B2424/input.mjs +1 -1
- package/lib/examples/PRJLANR5L16B2462/input.js +1 -1
- package/lib/examples/PRJLANR5L16B2462/input.mjs +1 -1
- package/lib/file_systems.js +14 -15
- package/lib/file_systems.mjs +3 -3
- package/lib/git.js +5 -5
- package/lib/git.mjs +1 -1
- package/lib/index.js +1 -1
- package/lib/index.mjs +1 -1
- package/lib/inserters.js +4 -4
- package/lib/inserters.mjs +1 -1
- package/lib/loaders.js +19 -19
- package/lib/loaders.mjs +1 -1
- package/lib/logger.js +1 -1
- package/lib/logger.mjs +1 -1
- package/lib/organes.js +1 -1
- package/lib/organes.mjs +1 -1
- package/lib/parsers/documents.js +11 -11
- package/lib/parsers/documents.mjs +1 -1
- package/lib/parsers/index.js +1 -1
- package/lib/parsers/index.mjs +1 -1
- package/lib/parsers/recherche_amendements.js +15 -17
- package/lib/parsers/recherche_amendements.mjs +1 -1
- package/lib/parsers/textes_lois.js +18 -18
- package/lib/parsers/textes_lois.mjs +1 -1
- package/lib/raw_types/acteurs_et_organes.js +9 -9
- package/lib/raw_types/acteurs_et_organes.mjs +1 -1
- package/lib/raw_types/agendas.js +9 -9
- package/lib/raw_types/agendas.mjs +1 -1
- package/lib/raw_types/amendements.js +9 -9
- package/lib/raw_types/amendements.mjs +1 -1
- package/lib/raw_types/debats.js +9 -9
- package/lib/raw_types/debats.mjs +1 -1
- package/lib/raw_types/dossiers_legislatifs.d.ts +1 -0
- package/lib/raw_types/dossiers_legislatifs.js +11 -10
- package/lib/raw_types/dossiers_legislatifs.mjs +3 -2
- package/lib/raw_types/questions.js +9 -9
- package/lib/raw_types/questions.mjs +1 -1
- package/lib/raw_types/scrutins.d.ts +1 -10
- package/lib/raw_types/scrutins.js +10 -32
- package/lib/raw_types/scrutins.mjs +2 -24
- package/lib/raw_types/textes_loi.js +9 -9
- package/lib/raw_types/textes_loi.mjs +1 -1
- package/lib/scripts/bugs_helper.js +26 -25
- package/lib/scripts/bugs_helper.mjs +3 -3
- package/lib/scripts/clean_reorganized_data.js +429 -227
- package/lib/scripts/clean_reorganized_data.mjs +22 -5
- package/lib/scripts/diff_amendements.js +8 -9
- package/lib/scripts/diff_amendements.mjs +1 -1
- package/lib/scripts/document_dossiers_legislatifs.js +27 -24
- package/lib/scripts/document_dossiers_legislatifs.mjs +3 -3
- package/lib/scripts/get_today_reunions.js +2 -3
- package/lib/scripts/get_today_reunions.mjs +1 -1
- package/lib/scripts/merge_scrutins.js +8 -9
- package/lib/scripts/merge_scrutins.mjs +1 -1
- package/lib/scripts/parse_textes_lois.js +5 -6
- package/lib/scripts/parse_textes_lois.mjs +1 -1
- package/lib/scripts/process_open_dataset.js +14 -15
- package/lib/scripts/process_open_dataset.mjs +1 -1
- package/lib/scripts/process_textes_loi_dataset.js +18 -19
- package/lib/scripts/process_textes_loi_dataset.mjs +4 -2
- package/lib/scripts/raw_types_from_amendements.js +12 -13
- package/lib/scripts/raw_types_from_amendements.mjs +1 -1
- package/lib/scripts/reorganize_data.js +15 -14
- package/lib/scripts/reorganize_data.mjs +3 -3
- package/lib/scripts/retrieve_deputes_photos.js +11 -12
- package/lib/scripts/retrieve_deputes_photos.mjs +1 -1
- package/lib/scripts/retrieve_documents.js +12 -13
- package/lib/scripts/retrieve_documents.mjs +1 -1
- package/lib/scripts/retrieve_open_data.js +12 -12
- package/lib/scripts/retrieve_open_data.mjs +1 -1
- package/lib/scripts/retrieve_pending_amendments.js +14 -14
- package/lib/scripts/retrieve_pending_amendments.mjs +1 -1
- package/lib/scripts/retrieve_senateurs_photos.js +10 -10
- package/lib/scripts/retrieve_senateurs_photos.mjs +1 -1
- package/lib/scripts/retrieve_textes_lois.js +15 -17
- package/lib/scripts/retrieve_textes_lois.mjs +1 -1
- package/lib/scripts/shared/cli_helpers.js +1 -1
- package/lib/scripts/shared/cli_helpers.mjs +1 -1
- package/lib/scripts/test_iter_load.js +5 -5
- package/lib/scripts/test_iter_load.mjs +1 -1
- package/lib/scripts/test_load.js +2 -2
- package/lib/scripts/test_load.mjs +1 -1
- package/lib/scripts/test_load_big_files.js +2 -2
- package/lib/scripts/test_load_big_files.mjs +1 -1
- package/lib/scripts/validate_json.js +18 -17
- package/lib/scripts/validate_json.mjs +3 -3
- package/lib/shared_types/codes_actes.js +1 -1
- package/lib/shared_types/codes_actes.mjs +1 -1
- package/lib/strings.js +1 -1
- package/lib/strings.mjs +1 -1
- package/lib/types/acteurs_et_organes.js +9 -9
- package/lib/types/acteurs_et_organes.mjs +1 -1
- package/lib/types/agendas.js +9 -9
- package/lib/types/agendas.mjs +1 -1
- package/lib/types/amendements.js +9 -9
- package/lib/types/amendements.mjs +1 -1
- package/lib/types/debats.js +9 -9
- package/lib/types/debats.mjs +1 -1
- package/lib/types/dossiers_legislatifs.js +9 -9
- package/lib/types/dossiers_legislatifs.mjs +1 -1
- package/lib/types/legislatures.js +1 -1
- package/lib/types/legislatures.mjs +1 -1
- package/lib/types/questions.js +9 -9
- package/lib/types/questions.mjs +1 -1
- package/lib/types/scrutins.js +9 -9
- package/lib/types/scrutins.mjs +1 -1
- package/lib/types/textes_loi.js +9 -9
- package/lib/types/textes_loi.mjs +1 -1
- package/lib/urls.js +2 -2
- package/lib/urls.mjs +1 -1
- package/package.json +4 -4
|
@@ -3,18 +3,29 @@
|
|
|
3
3
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
4
|
require("core-js/modules/es.symbol.js");
|
|
5
5
|
require("core-js/modules/es.symbol.description.js");
|
|
6
|
+
require("core-js/modules/es.symbol.async-iterator.js");
|
|
6
7
|
require("core-js/modules/es.symbol.iterator.js");
|
|
8
|
+
require("core-js/modules/es.symbol.to-string-tag.js");
|
|
9
|
+
require("core-js/modules/es.array.for-each.js");
|
|
7
10
|
require("core-js/modules/es.array.from.js");
|
|
8
11
|
require("core-js/modules/es.array.is-array.js");
|
|
9
12
|
require("core-js/modules/es.array.iterator.js");
|
|
13
|
+
require("core-js/modules/es.array.reverse.js");
|
|
10
14
|
require("core-js/modules/es.array.slice.js");
|
|
11
15
|
require("core-js/modules/es.function.name.js");
|
|
16
|
+
require("core-js/modules/es.json.to-string-tag.js");
|
|
17
|
+
require("core-js/modules/es.math.to-string-tag.js");
|
|
18
|
+
require("core-js/modules/es.object.create.js");
|
|
12
19
|
require("core-js/modules/es.object.define-property.js");
|
|
13
20
|
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
|
21
|
+
require("core-js/modules/es.object.get-prototype-of.js");
|
|
22
|
+
require("core-js/modules/es.object.set-prototype-of.js");
|
|
14
23
|
require("core-js/modules/es.object.to-string.js");
|
|
24
|
+
require("core-js/modules/es.promise.js");
|
|
15
25
|
require("core-js/modules/es.regexp.to-string.js");
|
|
16
26
|
require("core-js/modules/es.string.iterator.js");
|
|
17
27
|
require("core-js/modules/es.weak-map.js");
|
|
28
|
+
require("core-js/modules/web.dom-collections.for-each.js");
|
|
18
29
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
19
30
|
require("core-js/modules/es.array.concat.js");
|
|
20
31
|
require("core-js/modules/es.array.join.js");
|
|
@@ -25,6 +36,7 @@ require("core-js/modules/es.regexp.exec.js");
|
|
|
25
36
|
require("core-js/modules/es.string.ends-with.js");
|
|
26
37
|
require("core-js/modules/es.string.replace.js");
|
|
27
38
|
require("core-js/modules/es.string.trim.js");
|
|
39
|
+
require("core-js/modules/web.url.to-json.js");
|
|
28
40
|
var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
|
|
29
41
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
30
42
|
var _path = _interopRequireDefault(require("path"));
|
|
@@ -42,17 +54,20 @@ var _questions = require("../types/questions");
|
|
|
42
54
|
var _debats = require("../types/debats");
|
|
43
55
|
var _cli_helpers = require("./shared/cli_helpers");
|
|
44
56
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
45
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u &&
|
|
46
|
-
function _interopRequireDefault(
|
|
47
|
-
function
|
|
57
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
58
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
59
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
60
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
61
|
+
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
62
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
48
63
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
49
|
-
function _iterableToArray(
|
|
50
|
-
function _arrayWithoutHoles(
|
|
51
|
-
function _createForOfIteratorHelper(
|
|
52
|
-
function _unsupportedIterableToArray(
|
|
53
|
-
function _arrayLikeToArray(
|
|
64
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
65
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
66
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
67
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
68
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
54
69
|
function parseArgs(argv) {
|
|
55
|
-
var optionsDefinitions = [_cli_helpers.cloneOption, _cli_helpers.commitOption, _cli_helpers.remoteOption, _cli_helpers.legislatureOption, _cli_helpers.categoriesOption, _cli_helpers.silentOption, _cli_helpers.verboseOption, _cli_helpers.dataDirDefaultOption, _cli_helpers.pullOption, {
|
|
70
|
+
var optionsDefinitions = [_cli_helpers.cloneOption, _cli_helpers.commitOption, _cli_helpers.remoteOption, _cli_helpers.legislatureOption, _cli_helpers.categoriesOption, _cli_helpers.silentOption, _cli_helpers.verboseOption, _cli_helpers.dataDirDefaultOption, _cli_helpers.pullOption, _cli_helpers.fetchDocumentsOption, {
|
|
56
71
|
alias: "d",
|
|
57
72
|
help: "single dataset to reorganize",
|
|
58
73
|
name: "dataset",
|
|
@@ -125,211 +140,396 @@ function processFiles(datasetRawDir, datasetCleanDir, walkDirParams, cleaner, da
|
|
|
125
140
|
_iterator.f();
|
|
126
141
|
}
|
|
127
142
|
}
|
|
128
|
-
function cleanReorganizedData(
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
143
|
+
function cleanReorganizedData(_x) {
|
|
144
|
+
return _cleanReorganizedData.apply(this, arguments);
|
|
145
|
+
}
|
|
146
|
+
function _cleanReorganizedData() {
|
|
147
|
+
_cleanReorganizedData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(options) {
|
|
148
|
+
var _options$clone;
|
|
149
|
+
var dataDir, exitCode, gitGroupUrl, enabledDatasets, chosenDatasets, _iterator4, _step4, dataset, datasetName, datasetRawDir, datasetCleanDir, _iterator5, _step5, _dataset, _datasetName, _datasetRawDir, _datasetCleanDir, _iterator6, _step6, _dataset2, _datasetName2, _datasetRawDir2, _datasetCleanDir2, _iterator7, _step7, _dataset3, _datasetName3, _datasetRawDir3, _datasetCleanDir3, _iterator8, _step8, _dataset4, _datasetName4, _datasetRawDir4, _datasetCleanDir4, _iterator9, _step9, _dataset5, _datasetName5, _datasetRawDir5, _datasetCleanDir5, _iterator10, _step10, _dataset6, _datasetName6, _datasetRawDir6, _datasetCleanDir6, _iterator11, _step11, _dataset7, _datasetName7;
|
|
150
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
151
|
+
while (1) switch (_context.prev = _context.next) {
|
|
152
|
+
case 0:
|
|
153
|
+
dataDir = options.dataDir;
|
|
154
|
+
Date.prototype.toJSON = _dates.patchedDateToJson;
|
|
155
|
+
exitCode = options.commit ? 10 : 0;
|
|
156
|
+
gitGroupUrl = (_options$clone = options.clone) === null || _options$clone === void 0 ? void 0 : _options$clone.trim().replace(/\/+$/, "");
|
|
157
|
+
enabledDatasets = (0, _datasets.getEnabledDatasets)(options.categories);
|
|
158
|
+
chosenDatasets = (0, _datasets.filterByLegislature)(_datasets.datasets, options.legislature);
|
|
159
|
+
if (!(enabledDatasets & _datasets.EnabledDatasets.ActeursEtOrganes)) {
|
|
160
|
+
_context.next = 33;
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
_iterator4 = _createForOfIteratorHelper(chosenDatasets.acteursEtOrganes);
|
|
164
|
+
_context.prev = 8;
|
|
165
|
+
_iterator4.s();
|
|
166
|
+
case 10:
|
|
167
|
+
if ((_step4 = _iterator4.n()).done) {
|
|
168
|
+
_context.next = 25;
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
dataset = _step4.value;
|
|
172
|
+
datasetName = _path["default"].basename(dataset.filename, ".json");
|
|
173
|
+
if (!(options.dataset && datasetName !== options.dataset)) {
|
|
174
|
+
_context.next = 15;
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
return _context.abrupt("continue", 23);
|
|
178
|
+
case 15:
|
|
179
|
+
cloneGit(gitGroupUrl, datasetName, dataDir);
|
|
180
|
+
datasetRawDir = _path["default"].join(dataDir, datasetName);
|
|
181
|
+
datasetCleanDir = datasetRawDir + "_nettoye";
|
|
182
|
+
if (options.pull) {
|
|
183
|
+
git.resetAndPull(datasetCleanDir);
|
|
184
|
+
}
|
|
185
|
+
analyzeAndRemove(datasetName, options);
|
|
186
|
+
processFiles(datasetRawDir, datasetCleanDir, ["acteurs"], _cleaners.cleanActeur, {
|
|
187
|
+
fromJson: _acteurs_et_organes.Convert.toActeur,
|
|
188
|
+
toJson: _acteurs_et_organes.Convert.acteurToJson
|
|
189
|
+
}, options);
|
|
190
|
+
processFiles(datasetRawDir, datasetCleanDir, ["organes"], _cleaners.cleanOrgane, {
|
|
191
|
+
fromJson: _acteurs_et_organes.Convert.toOrgane,
|
|
192
|
+
toJson: _acteurs_et_organes.Convert.organeToJson
|
|
193
|
+
}, options);
|
|
194
|
+
exitCode = commitGit(datasetCleanDir, options, exitCode, ["acteurs", "organes"]);
|
|
195
|
+
case 23:
|
|
196
|
+
_context.next = 10;
|
|
197
|
+
break;
|
|
198
|
+
case 25:
|
|
199
|
+
_context.next = 30;
|
|
200
|
+
break;
|
|
201
|
+
case 27:
|
|
202
|
+
_context.prev = 27;
|
|
203
|
+
_context.t0 = _context["catch"](8);
|
|
204
|
+
_iterator4.e(_context.t0);
|
|
205
|
+
case 30:
|
|
206
|
+
_context.prev = 30;
|
|
207
|
+
_iterator4.f();
|
|
208
|
+
return _context.finish(30);
|
|
209
|
+
case 33:
|
|
210
|
+
if (!(enabledDatasets & _datasets.EnabledDatasets.Agendas)) {
|
|
211
|
+
_context.next = 58;
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
214
|
+
_iterator5 = _createForOfIteratorHelper(chosenDatasets.agendas);
|
|
215
|
+
_context.prev = 35;
|
|
216
|
+
_iterator5.s();
|
|
217
|
+
case 37:
|
|
218
|
+
if ((_step5 = _iterator5.n()).done) {
|
|
219
|
+
_context.next = 50;
|
|
220
|
+
break;
|
|
221
|
+
}
|
|
222
|
+
_dataset = _step5.value;
|
|
223
|
+
_datasetName = _path["default"].basename(_dataset.filename, ".json");
|
|
224
|
+
if (!(options.dataset && _datasetName !== options.dataset)) {
|
|
225
|
+
_context.next = 42;
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
return _context.abrupt("continue", 48);
|
|
229
|
+
case 42:
|
|
230
|
+
cloneGit(gitGroupUrl, _datasetName, dataDir);
|
|
231
|
+
analyzeAndRemove(_datasetName, options);
|
|
232
|
+
_datasetRawDir = _path["default"].join(dataDir, _datasetName);
|
|
233
|
+
_datasetCleanDir = _datasetRawDir + "_nettoye";
|
|
234
|
+
processFiles(_datasetRawDir, _datasetCleanDir, [], _cleaners.cleanReunion, {
|
|
235
|
+
fromJson: _agendas.Convert.toReunion,
|
|
236
|
+
toJson: _agendas.Convert.reunionToJson
|
|
237
|
+
}, options);
|
|
238
|
+
exitCode = commitGit(_datasetCleanDir, options, exitCode, ["."]);
|
|
239
|
+
case 48:
|
|
240
|
+
_context.next = 37;
|
|
241
|
+
break;
|
|
242
|
+
case 50:
|
|
243
|
+
_context.next = 55;
|
|
244
|
+
break;
|
|
245
|
+
case 52:
|
|
246
|
+
_context.prev = 52;
|
|
247
|
+
_context.t1 = _context["catch"](35);
|
|
248
|
+
_iterator5.e(_context.t1);
|
|
249
|
+
case 55:
|
|
250
|
+
_context.prev = 55;
|
|
251
|
+
_iterator5.f();
|
|
252
|
+
return _context.finish(55);
|
|
253
|
+
case 58:
|
|
254
|
+
if (!(enabledDatasets & _datasets.EnabledDatasets.Amendements)) {
|
|
255
|
+
_context.next = 83;
|
|
256
|
+
break;
|
|
257
|
+
}
|
|
258
|
+
_iterator6 = _createForOfIteratorHelper(chosenDatasets.amendements);
|
|
259
|
+
_context.prev = 60;
|
|
260
|
+
_iterator6.s();
|
|
261
|
+
case 62:
|
|
262
|
+
if ((_step6 = _iterator6.n()).done) {
|
|
263
|
+
_context.next = 75;
|
|
264
|
+
break;
|
|
265
|
+
}
|
|
266
|
+
_dataset2 = _step6.value;
|
|
267
|
+
_datasetName2 = _path["default"].basename(_dataset2.filename, ".json");
|
|
268
|
+
if (!(options.dataset && _datasetName2 !== options.dataset)) {
|
|
269
|
+
_context.next = 67;
|
|
270
|
+
break;
|
|
271
|
+
}
|
|
272
|
+
return _context.abrupt("continue", 73);
|
|
273
|
+
case 67:
|
|
274
|
+
cloneGit(gitGroupUrl, _datasetName2, dataDir);
|
|
275
|
+
analyzeAndRemove(_datasetName2, options);
|
|
276
|
+
_datasetRawDir2 = _path["default"].join(dataDir, _datasetName2);
|
|
277
|
+
_datasetCleanDir2 = _datasetRawDir2 + "_nettoye";
|
|
278
|
+
processFiles(_datasetRawDir2, _datasetCleanDir2, [], _cleaners.cleanAmendement, {
|
|
279
|
+
fromJson: _amendements.Convert.toAmendement,
|
|
280
|
+
toJson: _amendements.Convert.amendementToJson
|
|
281
|
+
}, options);
|
|
282
|
+
exitCode = commitGit(_datasetCleanDir2, options, exitCode, ["."]);
|
|
283
|
+
case 73:
|
|
284
|
+
_context.next = 62;
|
|
285
|
+
break;
|
|
286
|
+
case 75:
|
|
287
|
+
_context.next = 80;
|
|
288
|
+
break;
|
|
289
|
+
case 77:
|
|
290
|
+
_context.prev = 77;
|
|
291
|
+
_context.t2 = _context["catch"](60);
|
|
292
|
+
_iterator6.e(_context.t2);
|
|
293
|
+
case 80:
|
|
294
|
+
_context.prev = 80;
|
|
295
|
+
_iterator6.f();
|
|
296
|
+
return _context.finish(80);
|
|
297
|
+
case 83:
|
|
298
|
+
if (!(enabledDatasets & _datasets.EnabledDatasets.DossiersLegislatifs)) {
|
|
299
|
+
_context.next = 109;
|
|
300
|
+
break;
|
|
301
|
+
}
|
|
302
|
+
_iterator7 = _createForOfIteratorHelper(chosenDatasets.dossiersLegislatifs);
|
|
303
|
+
_context.prev = 85;
|
|
304
|
+
_iterator7.s();
|
|
305
|
+
case 87:
|
|
306
|
+
if ((_step7 = _iterator7.n()).done) {
|
|
307
|
+
_context.next = 101;
|
|
308
|
+
break;
|
|
309
|
+
}
|
|
310
|
+
_dataset3 = _step7.value;
|
|
311
|
+
_datasetName3 = _path["default"].basename(_dataset3.filename, ".json");
|
|
312
|
+
if (!(options.dataset && _datasetName3 !== options.dataset)) {
|
|
313
|
+
_context.next = 92;
|
|
314
|
+
break;
|
|
315
|
+
}
|
|
316
|
+
return _context.abrupt("continue", 99);
|
|
317
|
+
case 92:
|
|
318
|
+
cloneGit(gitGroupUrl, _datasetName3, dataDir);
|
|
319
|
+
analyzeAndRemove(_datasetName3, options);
|
|
320
|
+
_datasetRawDir3 = _path["default"].join(dataDir, _datasetName3);
|
|
321
|
+
_datasetCleanDir3 = _datasetRawDir3 + "_nettoye";
|
|
322
|
+
processFiles(_datasetRawDir3, _datasetCleanDir3, ["documents"], _cleaners.cleanDocumentOrDivision, {
|
|
323
|
+
fromJson: _dossiers_legislatifs.Convert.toDocument,
|
|
324
|
+
toJson: _dossiers_legislatifs.Convert.documentToJson
|
|
325
|
+
}, options);
|
|
326
|
+
processFiles(_datasetRawDir3, _datasetCleanDir3, ["dossiers"], _cleaners.cleanDossierParlementaire, {
|
|
327
|
+
fromJson: _dossiers_legislatifs.Convert.toDossierParlementaire,
|
|
328
|
+
toJson: _dossiers_legislatifs.Convert.dossierParlementaireToJson
|
|
329
|
+
}, options);
|
|
330
|
+
exitCode = commitGit(_datasetCleanDir3, options, exitCode, ["documents", "dossiers"]);
|
|
331
|
+
case 99:
|
|
332
|
+
_context.next = 87;
|
|
333
|
+
break;
|
|
334
|
+
case 101:
|
|
335
|
+
_context.next = 106;
|
|
336
|
+
break;
|
|
337
|
+
case 103:
|
|
338
|
+
_context.prev = 103;
|
|
339
|
+
_context.t3 = _context["catch"](85);
|
|
340
|
+
_iterator7.e(_context.t3);
|
|
341
|
+
case 106:
|
|
342
|
+
_context.prev = 106;
|
|
343
|
+
_iterator7.f();
|
|
344
|
+
return _context.finish(106);
|
|
345
|
+
case 109:
|
|
346
|
+
if (!(enabledDatasets & _datasets.EnabledDatasets.Scrutins)) {
|
|
347
|
+
_context.next = 134;
|
|
348
|
+
break;
|
|
349
|
+
}
|
|
350
|
+
_iterator8 = _createForOfIteratorHelper(chosenDatasets.scrutins);
|
|
351
|
+
_context.prev = 111;
|
|
352
|
+
_iterator8.s();
|
|
353
|
+
case 113:
|
|
354
|
+
if ((_step8 = _iterator8.n()).done) {
|
|
355
|
+
_context.next = 126;
|
|
356
|
+
break;
|
|
357
|
+
}
|
|
358
|
+
_dataset4 = _step8.value;
|
|
359
|
+
_datasetName4 = _path["default"].basename(_dataset4.filename, ".json");
|
|
360
|
+
if (!(options.dataset && _datasetName4 !== options.dataset)) {
|
|
361
|
+
_context.next = 118;
|
|
362
|
+
break;
|
|
363
|
+
}
|
|
364
|
+
return _context.abrupt("continue", 124);
|
|
365
|
+
case 118:
|
|
366
|
+
cloneGit(gitGroupUrl, _datasetName4, dataDir);
|
|
367
|
+
analyzeAndRemove(_datasetName4, options);
|
|
368
|
+
_datasetRawDir4 = _path["default"].join(dataDir, _datasetName4);
|
|
369
|
+
_datasetCleanDir4 = _datasetRawDir4 + "_nettoye";
|
|
370
|
+
processFiles(_datasetRawDir4, _datasetCleanDir4, [], _cleaners.cleanScrutin, {
|
|
371
|
+
fromJson: _scrutins.Convert.toScrutin,
|
|
372
|
+
toJson: _scrutins.Convert.scrutinToJson
|
|
373
|
+
}, options);
|
|
374
|
+
exitCode = commitGit(_datasetCleanDir4, options, exitCode, ["."]);
|
|
375
|
+
case 124:
|
|
376
|
+
_context.next = 113;
|
|
377
|
+
break;
|
|
378
|
+
case 126:
|
|
379
|
+
_context.next = 131;
|
|
380
|
+
break;
|
|
381
|
+
case 128:
|
|
382
|
+
_context.prev = 128;
|
|
383
|
+
_context.t4 = _context["catch"](111);
|
|
384
|
+
_iterator8.e(_context.t4);
|
|
385
|
+
case 131:
|
|
386
|
+
_context.prev = 131;
|
|
387
|
+
_iterator8.f();
|
|
388
|
+
return _context.finish(131);
|
|
389
|
+
case 134:
|
|
390
|
+
if (!(enabledDatasets & _datasets.EnabledDatasets.Questions)) {
|
|
391
|
+
_context.next = 159;
|
|
392
|
+
break;
|
|
393
|
+
}
|
|
394
|
+
_iterator9 = _createForOfIteratorHelper(_datasets.datasets.questions);
|
|
395
|
+
_context.prev = 136;
|
|
396
|
+
_iterator9.s();
|
|
397
|
+
case 138:
|
|
398
|
+
if ((_step9 = _iterator9.n()).done) {
|
|
399
|
+
_context.next = 151;
|
|
400
|
+
break;
|
|
401
|
+
}
|
|
402
|
+
_dataset5 = _step9.value;
|
|
403
|
+
_datasetName5 = _path["default"].basename(_dataset5.filename, ".json");
|
|
404
|
+
if (!(options.dataset && _datasetName5 !== options.dataset)) {
|
|
405
|
+
_context.next = 143;
|
|
406
|
+
break;
|
|
407
|
+
}
|
|
408
|
+
return _context.abrupt("continue", 149);
|
|
409
|
+
case 143:
|
|
410
|
+
cloneGit(gitGroupUrl, _datasetName5, dataDir);
|
|
411
|
+
analyzeAndRemove(_datasetName5, options);
|
|
412
|
+
_datasetRawDir5 = _path["default"].join(dataDir, _datasetName5);
|
|
413
|
+
_datasetCleanDir5 = _datasetRawDir5 + "_nettoye";
|
|
414
|
+
processFiles(_datasetRawDir5, _datasetCleanDir5, [], _cleaners.cleanQuestion, {
|
|
415
|
+
fromJson: _questions.Convert.toQuestion,
|
|
416
|
+
toJson: _questions.Convert.questionToJson
|
|
417
|
+
}, options);
|
|
418
|
+
exitCode = commitGit(_datasetCleanDir5, options, exitCode, ["."]);
|
|
419
|
+
case 149:
|
|
420
|
+
_context.next = 138;
|
|
421
|
+
break;
|
|
422
|
+
case 151:
|
|
423
|
+
_context.next = 156;
|
|
424
|
+
break;
|
|
425
|
+
case 153:
|
|
426
|
+
_context.prev = 153;
|
|
427
|
+
_context.t5 = _context["catch"](136);
|
|
428
|
+
_iterator9.e(_context.t5);
|
|
429
|
+
case 156:
|
|
430
|
+
_context.prev = 156;
|
|
431
|
+
_iterator9.f();
|
|
432
|
+
return _context.finish(156);
|
|
433
|
+
case 159:
|
|
434
|
+
if (!(enabledDatasets & _datasets.EnabledDatasets.ComptesRendusSeances)) {
|
|
435
|
+
_context.next = 184;
|
|
436
|
+
break;
|
|
437
|
+
}
|
|
438
|
+
_iterator10 = _createForOfIteratorHelper(_datasets.datasets.comptesRendusSeances);
|
|
439
|
+
_context.prev = 161;
|
|
440
|
+
_iterator10.s();
|
|
441
|
+
case 163:
|
|
442
|
+
if ((_step10 = _iterator10.n()).done) {
|
|
443
|
+
_context.next = 176;
|
|
444
|
+
break;
|
|
445
|
+
}
|
|
446
|
+
_dataset6 = _step10.value;
|
|
447
|
+
_datasetName6 = _path["default"].basename(_dataset6.filename, ".xml");
|
|
448
|
+
if (!(options.dataset && _datasetName6 !== options.dataset)) {
|
|
449
|
+
_context.next = 168;
|
|
450
|
+
break;
|
|
451
|
+
}
|
|
452
|
+
return _context.abrupt("continue", 174);
|
|
453
|
+
case 168:
|
|
454
|
+
cloneGit(gitGroupUrl, _datasetName6, dataDir);
|
|
455
|
+
analyzeAndRemove(_datasetName6, options);
|
|
456
|
+
_datasetRawDir6 = _path["default"].join(dataDir, _datasetName6);
|
|
457
|
+
_datasetCleanDir6 = _datasetRawDir6 + "_nettoye";
|
|
458
|
+
processFiles(_datasetRawDir6, _datasetCleanDir6, [], _cleaners.cleanCompteRendu, {
|
|
459
|
+
fromJson: _debats.Convert.toCompteRendu,
|
|
460
|
+
toJson: _debats.Convert.compteRenduToJson
|
|
461
|
+
}, options);
|
|
462
|
+
exitCode = commitGit(_datasetCleanDir6, options, exitCode, ["."]);
|
|
463
|
+
case 174:
|
|
464
|
+
_context.next = 163;
|
|
465
|
+
break;
|
|
466
|
+
case 176:
|
|
467
|
+
_context.next = 181;
|
|
468
|
+
break;
|
|
469
|
+
case 178:
|
|
470
|
+
_context.prev = 178;
|
|
471
|
+
_context.t6 = _context["catch"](161);
|
|
472
|
+
_iterator10.e(_context.t6);
|
|
473
|
+
case 181:
|
|
474
|
+
_context.prev = 181;
|
|
475
|
+
_iterator10.f();
|
|
476
|
+
return _context.finish(181);
|
|
477
|
+
case 184:
|
|
478
|
+
if (!(enabledDatasets & _datasets.EnabledDatasets.TextesLoi)) {
|
|
479
|
+
_context.next = 206;
|
|
480
|
+
break;
|
|
481
|
+
}
|
|
482
|
+
_iterator11 = _createForOfIteratorHelper(chosenDatasets.textesLoi);
|
|
483
|
+
_context.prev = 186;
|
|
484
|
+
_iterator11.s();
|
|
485
|
+
case 188:
|
|
486
|
+
if ((_step11 = _iterator11.n()).done) {
|
|
487
|
+
_context.next = 198;
|
|
488
|
+
break;
|
|
489
|
+
}
|
|
490
|
+
_dataset7 = _step11.value;
|
|
491
|
+
_datasetName7 = _path["default"].basename(_dataset7.filename, ".json");
|
|
492
|
+
if (!(options.dataset && _datasetName7 !== options.dataset)) {
|
|
493
|
+
_context.next = 193;
|
|
494
|
+
break;
|
|
495
|
+
}
|
|
496
|
+
return _context.abrupt("continue", 196);
|
|
497
|
+
case 193:
|
|
498
|
+
if (!(typeof _dataset7.clean === "function")) {
|
|
499
|
+
_context.next = 196;
|
|
500
|
+
break;
|
|
501
|
+
}
|
|
502
|
+
_context.next = 196;
|
|
503
|
+
return _dataset7.clean({
|
|
504
|
+
dataDir: dataDir,
|
|
505
|
+
dataset: _dataset7,
|
|
506
|
+
options: options
|
|
507
|
+
});
|
|
508
|
+
case 196:
|
|
509
|
+
_context.next = 188;
|
|
510
|
+
break;
|
|
511
|
+
case 198:
|
|
512
|
+
_context.next = 203;
|
|
513
|
+
break;
|
|
514
|
+
case 200:
|
|
515
|
+
_context.prev = 200;
|
|
516
|
+
_context.t7 = _context["catch"](186);
|
|
517
|
+
_iterator11.e(_context.t7);
|
|
518
|
+
case 203:
|
|
519
|
+
_context.prev = 203;
|
|
520
|
+
_iterator11.f();
|
|
521
|
+
return _context.finish(203);
|
|
522
|
+
case 206:
|
|
523
|
+
// Restore standard conversion of dates to JSON.
|
|
524
|
+
Date.prototype.toJSON = _dates.existingDateToJson;
|
|
525
|
+
return _context.abrupt("return", exitCode);
|
|
526
|
+
case 208:
|
|
527
|
+
case "end":
|
|
528
|
+
return _context.stop();
|
|
322
529
|
}
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
_iterator8.f();
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
// Restore standard conversion of dates to JSON.
|
|
331
|
-
Date.prototype.toJSON = _dates.existingDateToJson;
|
|
332
|
-
return exitCode;
|
|
530
|
+
}, _callee, null, [[8, 27, 30, 33], [35, 52, 55, 58], [60, 77, 80, 83], [85, 103, 106, 109], [111, 128, 131, 134], [136, 153, 156, 159], [161, 178, 181, 184], [186, 200, 203, 206]]);
|
|
531
|
+
}));
|
|
532
|
+
return _cleanReorganizedData.apply(this, arguments);
|
|
333
533
|
}
|
|
334
534
|
function analyzeAndRemove(datasetName, options) {
|
|
335
535
|
var dataDir = options.dataDir;
|
|
@@ -339,11 +539,11 @@ function analyzeAndRemove(datasetName, options) {
|
|
|
339
539
|
console.log("Cleaning directory: ".concat(datasetCleanDir, "\u2026"));
|
|
340
540
|
}
|
|
341
541
|
_fsExtra["default"].ensureDirSync(datasetCleanDir);
|
|
342
|
-
var
|
|
343
|
-
|
|
542
|
+
var _iterator2 = _createForOfIteratorHelper(_fsExtra["default"].readdirSync(datasetCleanDir)),
|
|
543
|
+
_step2;
|
|
344
544
|
try {
|
|
345
|
-
for (
|
|
346
|
-
var filename =
|
|
545
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
546
|
+
var filename = _step2.value;
|
|
347
547
|
if (filename[0] === ".") {
|
|
348
548
|
continue;
|
|
349
549
|
}
|
|
@@ -351,20 +551,20 @@ function analyzeAndRemove(datasetName, options) {
|
|
|
351
551
|
_fsExtra["default"].removeSync(pathname);
|
|
352
552
|
}
|
|
353
553
|
} catch (err) {
|
|
354
|
-
|
|
554
|
+
_iterator2.e(err);
|
|
355
555
|
} finally {
|
|
356
|
-
|
|
556
|
+
_iterator2.f();
|
|
357
557
|
}
|
|
358
558
|
}
|
|
359
559
|
function commitAndPushUid(repositoryDir, options, subdirectories) {
|
|
360
560
|
var error = false;
|
|
361
561
|
if (options.commit) {
|
|
362
562
|
git.uidBranchUpdate(repositoryDir, subdirectories, options["no-reset-after-commit"]);
|
|
363
|
-
var
|
|
364
|
-
|
|
563
|
+
var _iterator3 = _createForOfIteratorHelper(options.remote || []),
|
|
564
|
+
_step3;
|
|
365
565
|
try {
|
|
366
|
-
for (
|
|
367
|
-
var remote =
|
|
566
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
567
|
+
var remote = _step3.value;
|
|
368
568
|
try {
|
|
369
569
|
git.run(repositoryDir, "push --quiet ".concat(remote, " uid:uid"));
|
|
370
570
|
} catch (childProcess) {
|
|
@@ -372,9 +572,9 @@ function commitAndPushUid(repositoryDir, options, subdirectories) {
|
|
|
372
572
|
}
|
|
373
573
|
}
|
|
374
574
|
} catch (err) {
|
|
375
|
-
|
|
575
|
+
_iterator3.e(err);
|
|
376
576
|
} finally {
|
|
377
|
-
|
|
577
|
+
_iterator3.f();
|
|
378
578
|
}
|
|
379
579
|
}
|
|
380
580
|
return error;
|
|
@@ -385,5 +585,7 @@ function main(argv) {
|
|
|
385
585
|
}
|
|
386
586
|
|
|
387
587
|
/* istanbul ignore if */
|
|
388
|
-
if (process.argv[1].endsWith("clean_reorganized_data.ts"))
|
|
389
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2NsZWFuZXJzIiwiX2RhdGFzZXRzIiwiX2RhdGVzIiwiX2ZpbGVfc3lzdGVtcyIsImdpdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2FjdGV1cnNfZXRfb3JnYW5lcyIsIl9hZ2VuZGFzIiwiX2FtZW5kZW1lbnRzIiwiX2Rvc3NpZXJzX2xlZ2lzbGF0aWZzIiwiX3NjcnV0aW5zIiwiX3F1ZXN0aW9ucyIsIl9kZWJhdHMiLCJfY2xpX2hlbHBlcnMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImZyb20iLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJkb25lIiwidmFsdWUiLCJmIiwibyIsIm5leHQiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwidGVzdCIsInBhcnNlQXJncyIsImFyZ3YiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJjbG9uZU9wdGlvbiIsImNvbW1pdE9wdGlvbiIsInJlbW90ZU9wdGlvbiIsImxlZ2lzbGF0dXJlT3B0aW9uIiwiY2F0ZWdvcmllc09wdGlvbiIsInNpbGVudE9wdGlvbiIsInZlcmJvc2VPcHRpb24iLCJkYXRhRGlyRGVmYXVsdE9wdGlvbiIsInB1bGxPcHRpb24iLCJhbGlhcyIsImhlbHAiLCJ0eXBlIiwiU3RyaW5nIiwiQm9vbGVhbiIsIm9wdGlvbnMiLCJjb21tYW5kTGluZUFyZ3MiLCJjbG9uZUdpdCIsImdpdEdyb3VwVXJsIiwiZGF0YXNldE5hbWUiLCJkYXRhRGlyIiwiY2xvbmUiLCJjb25jYXQiLCJjb21taXRHaXQiLCJkYXRhc2V0Q2xlYW5EaXIiLCJleGl0Q29kZSIsInN1YmRpcmVjdG9yaWVzIiwiY29tbWl0IiwiZXJyb3JDb2RlIiwiY29tbWl0QW5kUHVzaCIsInJlbW90ZSIsImNvbW1pdEFuZFB1c2hVaWQiLCJjbGVhbkFuZFZhbGlkYXRlRGF0YSIsImRhdGEiLCJjbGVhbmVyIiwiZnJvbUpzb24iLCJ0b0pzb24iLCJub1ZhbGlkYXRlIiwianNvbkRhdGEiLCJKU09OIiwic3RyaW5naWZ5IiwidmFsaWRhdGVkRGF0YSIsInByb2Nlc3NGaWxlcyIsImRhdGFzZXRSYXdEaXIiLCJ3YWxrRGlyUGFyYW1zIiwiZGF0YUNvbnZlcnRlciIsIl9pdGVyYXRvciIsIndhbGtEaXIiLCJfc3RlcCIsImZpbGVQYXRoQXJyYXkiLCJmaWxlbmFtZSIsImVuZHNXaXRoIiwicmF3RmlsZVBhdGgiLCJwYXRoIiwiam9pbiIsImFwcGx5IiwicmF3SnNvbiIsImZzIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJ2ZXJib3NlIiwiY29uc29sZSIsImxvZyIsInBhcnNlIiwidmFsaWRhdGVEYXRhIiwiY2xlYW5Kc29uIiwiY2xlYW5GaWxlUGF0aCIsImVuc3VyZURpclN5bmMiLCJkaXJuYW1lIiwid3JpdGVGaWxlU3luYyIsImVyciIsImNsZWFuUmVvcmdhbml6ZWREYXRhIiwiX29wdGlvbnMkY2xvbmUiLCJEYXRlIiwicHJvdG90eXBlIiwidG9KU09OIiwicGF0Y2hlZERhdGVUb0pzb24iLCJ0cmltIiwicmVwbGFjZSIsImVuYWJsZWREYXRhc2V0cyIsImdldEVuYWJsZWREYXRhc2V0cyIsImNhdGVnb3JpZXMiLCJjaG9zZW5EYXRhc2V0cyIsImZpbHRlckJ5TGVnaXNsYXR1cmUiLCJkYXRhc2V0cyIsImxlZ2lzbGF0dXJlIiwiRW5hYmxlZERhdGFzZXRzIiwiQWN0ZXVyc0V0T3JnYW5lcyIsIl9pdGVyYXRvcjIiLCJhY3RldXJzRXRPcmdhbmVzIiwiX3N0ZXAyIiwiZGF0YXNldCIsImJhc2VuYW1lIiwicHVsbCIsInJlc2V0QW5kUHVsbCIsImFuYWx5emVBbmRSZW1vdmUiLCJjbGVhbkFjdGV1ciIsIkFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0IiwidG9BY3RldXIiLCJhY3RldXJUb0pzb24iLCJjbGVhbk9yZ2FuZSIsInRvT3JnYW5lIiwib3JnYW5lVG9Kc29uIiwiQWdlbmRhcyIsIl9pdGVyYXRvcjMiLCJhZ2VuZGFzIiwiX3N0ZXAzIiwiY2xlYW5SZXVuaW9uIiwiQWdlbmRhc0NvbnZlcnQiLCJ0b1JldW5pb24iLCJyZXVuaW9uVG9Kc29uIiwiQW1lbmRlbWVudHMiLCJfaXRlcmF0b3I0IiwiYW1lbmRlbWVudHMiLCJfc3RlcDQiLCJjbGVhbkFtZW5kZW1lbnQiLCJBbWVuZGVtZW50c0NvbnZlcnQiLCJ0b0FtZW5kZW1lbnQiLCJhbWVuZGVtZW50VG9Kc29uIiwiRG9zc2llcnNMZWdpc2xhdGlmcyIsIl9pdGVyYXRvcjUiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX3N0ZXA1IiwiY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24iLCJEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCIsInRvRG9jdW1lbnQiLCJkb2N1bWVudFRvSnNvbiIsImNsZWFuRG9zc2llclBhcmxlbWVudGFpcmUiLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwiZG9zc2llclBhcmxlbWVudGFpcmVUb0pzb24iLCJTY3J1dGlucyIsIl9pdGVyYXRvcjYiLCJzY3J1dGlucyIsIl9zdGVwNiIsImNsZWFuU2NydXRpbiIsIlNjcnV0aW5zQ29udmVydCIsInRvU2NydXRpbiIsInNjcnV0aW5Ub0pzb24iLCJRdWVzdGlvbnMiLCJfaXRlcmF0b3I3IiwicXVlc3Rpb25zIiwiX3N0ZXA3IiwiY2xlYW5RdWVzdGlvbiIsIlF1ZXN0aW9uc0NvbnZlcnQiLCJ0b1F1ZXN0aW9uIiwicXVlc3Rpb25Ub0pzb24iLCJDb21wdGVzUmVuZHVzU2VhbmNlcyIsIl9pdGVyYXRvcjgiLCJjb21wdGVzUmVuZHVzU2VhbmNlcyIsIl9zdGVwOCIsImNsZWFuQ29tcHRlUmVuZHUiLCJDb21wdGVzUmVuZHVzQ29udmVydCIsInRvQ29tcHRlUmVuZHUiLCJjb21wdGVSZW5kdVRvSnNvbiIsImV4aXN0aW5nRGF0ZVRvSnNvbiIsInNpbGVudCIsIl9pdGVyYXRvcjkiLCJyZWFkZGlyU3luYyIsIl9zdGVwOSIsInBhdGhuYW1lIiwicmVtb3ZlU3luYyIsInJlcG9zaXRvcnlEaXIiLCJlcnJvciIsInVpZEJyYW5jaFVwZGF0ZSIsIl9pdGVyYXRvcjEwIiwiX3N0ZXAxMCIsInJ1biIsImNoaWxkUHJvY2VzcyIsIm1haW4iLCJwcm9jZXNzIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2NsZWFuX3Jlb3JnYW5pemVkX2RhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQge1xuICBjbGVhbkFjdGV1cixcbiAgY2xlYW5BbWVuZGVtZW50LFxuICBjbGVhbkRvY3VtZW50T3JEaXZpc2lvbixcbiAgY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgY2xlYW5PcmdhbmUsXG4gIGNsZWFuUmV1bmlvbixcbiAgY2xlYW5TY3J1dGluLFxuICBjbGVhblF1ZXN0aW9uLFxuICBjbGVhbkNvbXB0ZVJlbmR1LFxufSBmcm9tIFwiLi4vY2xlYW5lcnNcIlxuaW1wb3J0IHtcbiAgZGF0YXNldHMsXG4gIEVuYWJsZWREYXRhc2V0cyxcbiAgZ2V0RW5hYmxlZERhdGFzZXRzLFxuICBmaWx0ZXJCeUxlZ2lzbGF0dXJlLFxufSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgZXhpc3RpbmdEYXRlVG9Kc29uLCBwYXRjaGVkRGF0ZVRvSnNvbiB9IGZyb20gXCIuLi9kYXRlc1wiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQgKiBhcyBnaXQgZnJvbSBcIi4uL2dpdFwiXG5pbXBvcnQge1xuICBBY3RldXIsXG4gIENvbnZlcnQgYXMgQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQsXG4gIE9yZ2FuZSxcbn0gZnJvbSBcIi4uL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFnZW5kYXNDb252ZXJ0LCBSZXVuaW9uIH0gZnJvbSBcIi4uL3R5cGVzL2FnZW5kYXNcIlxuaW1wb3J0IHsgQW1lbmRlbWVudCwgQ29udmVydCBhcyBBbWVuZGVtZW50c0NvbnZlcnQgfSBmcm9tIFwiLi4vdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHtcbiAgQ29udmVydCBhcyBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCxcbiAgRG9jdW1lbnQsXG4gIERvc3NpZXJQYXJsZW1lbnRhaXJlLFxufSBmcm9tIFwiLi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBTY3J1dGluc0NvbnZlcnQsIFNjcnV0aW4gfSBmcm9tIFwiLi4vdHlwZXMvc2NydXRpbnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBRdWVzdGlvbnNDb252ZXJ0LCBRdWVzdGlvbiB9IGZyb20gXCIuLi90eXBlcy9xdWVzdGlvbnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBDb21wdGVzUmVuZHVzQ29udmVydCwgQ29tcHRlUmVuZHUgfSBmcm9tIFwiLi4vdHlwZXMvZGViYXRzXCJcbmltcG9ydCB7XG4gIGNsb25lT3B0aW9uLFxuICBjb21taXRPcHRpb24sXG4gIHJlbW90ZU9wdGlvbixcbiAgbGVnaXNsYXR1cmVPcHRpb24sXG4gIGNhdGVnb3JpZXNPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICBzaWxlbnRPcHRpb24sXG4gIHZlcmJvc2VPcHRpb24sXG4gIHB1bGxPcHRpb24sXG59IGZyb20gXCIuL3NoYXJlZC9jbGlfaGVscGVyc1wiXG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhhcmd2OiBzdHJpbmdbXSk6IGFueSB7XG4gIGNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAgICBjbG9uZU9wdGlvbixcbiAgICBjb21taXRPcHRpb24sXG4gICAgcmVtb3RlT3B0aW9uLFxuICAgIGxlZ2lzbGF0dXJlT3B0aW9uLFxuICAgIGNhdGVnb3JpZXNPcHRpb24sXG4gICAgc2lsZW50T3B0aW9uLFxuICAgIHZlcmJvc2VPcHRpb24sXG4gICAgZGF0YURpckRlZmF1bHRPcHRpb24sXG4gICAgcHVsbE9wdGlvbixcbiAgICB7XG4gICAgICBhbGlhczogXCJkXCIsXG4gICAgICBoZWxwOiBcInNpbmdsZSBkYXRhc2V0IHRvIHJlb3JnYW5pemVcIixcbiAgICAgIG5hbWU6IFwiZGF0YXNldFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgaGVscDogXCJkbyBub3QgcmVzZXQgLS1oYXJkIGFmdGVyIGNvbW1pdCB0byBzYXZlIEkvTyBpZiB0aGUgd29ya2luZyB0cmVlIGlzIHRvIGJlIGRpc2NhcmRlZFwiLFxuICAgICAgbmFtZTogXCJuby1yZXNldC1hZnRlci1jb21taXRcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJWXCIsXG4gICAgICBoZWxwOiBcImRvbid0IHZhbGlkYXRlIGRhdGFcIixcbiAgICAgIG5hbWU6IFwibm8tdmFsaWRhdGVcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG4gIHJldHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIGNsb25lR2l0KFxuICBnaXRHcm91cFVybDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBkYXRhc2V0TmFtZTogc3RyaW5nLFxuICBkYXRhRGlyOiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgZ2l0LmNsb25lKGdpdEdyb3VwVXJsLCBgJHtkYXRhc2V0TmFtZX1fbmV0dG95ZWAsIGRhdGFEaXIpXG59XG5cbmZ1bmN0aW9uIGNvbW1pdEdpdChcbiAgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcsXG4gIG9wdGlvbnM6IGFueSxcbiAgZXhpdENvZGU6IG51bWJlcixcbiAgc3ViZGlyZWN0b3JpZXM6IGFueSxcbik6IG51bWJlciB7XG4gIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICApXG4gICAgaWYgKFxuICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICkge1xuICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICB9XG4gIH1cbiAgaWYgKFxuICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBzdWJkaXJlY3RvcmllcykgJiZcbiAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICApIHtcbiAgICBleGl0Q29kZSA9IDFcbiAgfVxuICByZXR1cm4gZXhpdENvZGVcbn1cblxuZnVuY3Rpb24gY2xlYW5BbmRWYWxpZGF0ZURhdGE8VD4oXG4gIGRhdGE6IGFueSxcbiAgY2xlYW5lcjogKGRhdGE6IFQpID0+IHZvaWQsXG4gIGZyb21Kc29uOiAoanNvbjogc3RyaW5nKSA9PiBULFxuICB0b0pzb246IChkYXRhOiBUKSA9PiBzdHJpbmcsXG4gIG5vVmFsaWRhdGU6IEJvb2xlYW4sXG4pOiBzdHJpbmcge1xuICBjbGVhbmVyKGRhdGEpXG4gIGNvbnN0IGpzb25EYXRhID0gSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgMilcbiAgaWYgKCFub1ZhbGlkYXRlKSB7XG4gICAgcmV0dXJuIGpzb25EYXRhXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdmFsaWRhdGVkRGF0YTogVCA9IGZyb21Kc29uKGpzb25EYXRhKVxuICAgIHJldHVybiB0b0pzb24odmFsaWRhdGVkRGF0YSlcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzRmlsZXM8VD4oXG4gIGRhdGFzZXRSYXdEaXI6IHN0cmluZyxcbiAgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcsXG4gIHdhbGtEaXJQYXJhbXM6IGFueVtdLFxuICBjbGVhbmVyOiBhbnksXG4gIGRhdGFDb252ZXJ0ZXI6IHsgZnJvbUpzb246IGFueTsgdG9Kc29uOiBhbnkgfSxcbiAgb3B0aW9uczogYW55LFxuKTogdm9pZCB7XG4gIGZvciAoY29uc3QgZmlsZVBhdGhBcnJheSBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIsIHdhbGtEaXJQYXJhbXMpKSB7XG4gICAgY29uc3QgZmlsZW5hbWUgPSBmaWxlUGF0aEFycmF5W2ZpbGVQYXRoQXJyYXkubGVuZ3RoIC0gMV1cbiAgICBpZiAoIWZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIGNvbnRpbnVlXG4gICAgY29uc3QgcmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldFJhd0RpciwgLi4uZmlsZVBhdGhBcnJheSlcbiAgICBjb25zdCByYXdKc29uID0gZnMucmVhZEZpbGVTeW5jKHJhd0ZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIGNvbnNvbGUubG9nKGBDbGVhbmluZyBmaWxlOiAke3Jhd0ZpbGVQYXRofS4uLmApXG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UocmF3SnNvbilcbiAgICBjb25zdCB2YWxpZGF0ZURhdGEgPSAhb3B0aW9uc1tcIm5vLXZhbGlkYXRlXCJdXG4gICAgY29uc3QgY2xlYW5Kc29uID0gY2xlYW5BbmRWYWxpZGF0ZURhdGE8VD4oXG4gICAgICBkYXRhLFxuICAgICAgY2xlYW5lcixcbiAgICAgIGRhdGFDb252ZXJ0ZXIuZnJvbUpzb24sXG4gICAgICBkYXRhQ29udmVydGVyLnRvSnNvbixcbiAgICAgIHZhbGlkYXRlRGF0YSxcbiAgICApXG4gICAgY29uc3QgY2xlYW5GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0Q2xlYW5EaXIsIC4uLmZpbGVQYXRoQXJyYXkpXG4gICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoY2xlYW5GaWxlUGF0aCkpXG4gICAgZnMud3JpdGVGaWxlU3luYyhjbGVhbkZpbGVQYXRoLCBjbGVhbkpzb24sIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gY2xlYW5SZW9yZ2FuaXplZERhdGEob3B0aW9uczogYW55KTogbnVtYmVyIHtcbiAgY29uc3QgZGF0YURpcjogc3RyaW5nID0gb3B0aW9ucy5kYXRhRGlyXG4gIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IHBhdGNoZWREYXRlVG9Kc29uXG4gIGxldCBleGl0Q29kZSA9IG9wdGlvbnMuY29tbWl0ID8gMTAgOiAwXG4gIGNvbnN0IGdpdEdyb3VwVXJsID0gb3B0aW9ucy5jbG9uZT8udHJpbSgpLnJlcGxhY2UoL1xcLyskLywgXCJcIilcbiAgY29uc3QgZW5hYmxlZERhdGFzZXRzID0gZ2V0RW5hYmxlZERhdGFzZXRzKG9wdGlvbnMuY2F0ZWdvcmllcylcbiAgbGV0IGNob3NlbkRhdGFzZXRzID0gZmlsdGVyQnlMZWdpc2xhdHVyZShkYXRhc2V0cywgb3B0aW9ucy5sZWdpc2xhdHVyZSlcblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGlmIChvcHRpb25zLnB1bGwpIHtcbiAgICAgICAgZ2l0LnJlc2V0QW5kUHVsbChkYXRhc2V0Q2xlYW5EaXIpXG4gICAgICB9XG5cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBwcm9jZXNzRmlsZXM8QWN0ZXVyPihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXCJhY3RldXJzXCJdLFxuICAgICAgICBjbGVhbkFjdGV1cixcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b0FjdGV1cixcbiAgICAgICAgICB0b0pzb246IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LmFjdGV1clRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcbiAgICAgIHByb2Nlc3NGaWxlczxPcmdhbmU+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtcIm9yZ2FuZXNcIl0sXG4gICAgICAgIGNsZWFuT3JnYW5lLFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvT3JnYW5lLFxuICAgICAgICAgIHRvSnNvbjogQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQub3JnYW5lVG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXG4gICAgICAgIFwiYWN0ZXVyc1wiLFxuICAgICAgICBcIm9yZ2FuZXNcIixcbiAgICAgIF0pXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BZ2VuZGFzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFnZW5kYXMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuXG4gICAgICBwcm9jZXNzRmlsZXM8UmV1bmlvbj4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW10sXG4gICAgICAgIGNsZWFuUmV1bmlvbixcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBBZ2VuZGFzQ29udmVydC50b1JldW5pb24sXG4gICAgICAgICAgdG9Kc29uOiBBZ2VuZGFzQ29udmVydC5yZXVuaW9uVG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXCIuXCJdKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuXG4gICAgICBwcm9jZXNzRmlsZXM8QW1lbmRlbWVudD4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW10sXG4gICAgICAgIGNsZWFuQW1lbmRlbWVudCxcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50LFxuICAgICAgICAgIHRvSnNvbjogQW1lbmRlbWVudHNDb252ZXJ0LmFtZW5kZW1lbnRUb0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG5cbiAgICAgIGV4aXRDb2RlID0gY29tbWl0R2l0KGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgZXhpdENvZGUsIFtcIi5cIl0pXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuXG4gICAgICBwcm9jZXNzRmlsZXM8RG9jdW1lbnQ+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtcImRvY3VtZW50c1wiXSxcbiAgICAgICAgY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24sXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb2N1bWVudCxcbiAgICAgICAgICB0b0pzb246IERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LmRvY3VtZW50VG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuICAgICAgcHJvY2Vzc0ZpbGVzPERvc3NpZXJQYXJsZW1lbnRhaXJlPihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXCJkb3NzaWVyc1wiXSxcbiAgICAgICAgY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0Rvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICAgICAgICAgIHRvSnNvbjogRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQuZG9zc2llclBhcmxlbWVudGFpcmVUb0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG5cbiAgICAgIGV4aXRDb2RlID0gY29tbWl0R2l0KGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgZXhpdENvZGUsIFtcbiAgICAgICAgXCJkb2N1bWVudHNcIixcbiAgICAgICAgXCJkb3NzaWVyc1wiLFxuICAgICAgXSlcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcblxuICAgICAgcHJvY2Vzc0ZpbGVzPFNjcnV0aW4+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhblNjcnV0aW4sXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogU2NydXRpbnNDb252ZXJ0LnRvU2NydXRpbixcbiAgICAgICAgICB0b0pzb246IFNjcnV0aW5zQ29udmVydC5zY3J1dGluVG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXCIuXCJdKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUXVlc3Rpb25zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnF1ZXN0aW9ucykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG5cbiAgICAgIHByb2Nlc3NGaWxlczxRdWVzdGlvbj4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW10sXG4gICAgICAgIGNsZWFuUXVlc3Rpb24sXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogUXVlc3Rpb25zQ29udmVydC50b1F1ZXN0aW9uLFxuICAgICAgICAgIHRvSnNvbjogUXVlc3Rpb25zQ29udmVydC5xdWVzdGlvblRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcblxuICAgICAgZXhpdENvZGUgPSBjb21taXRHaXQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBleGl0Q29kZSwgW1wiLlwiXSlcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkNvbXB0ZXNSZW5kdXNTZWFuY2VzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmNvbXB0ZXNSZW5kdXNTZWFuY2VzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIueG1sXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuXG4gICAgICBwcm9jZXNzRmlsZXM8Q29tcHRlUmVuZHU+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhbkNvbXB0ZVJlbmR1LFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IENvbXB0ZXNSZW5kdXNDb252ZXJ0LnRvQ29tcHRlUmVuZHUsXG4gICAgICAgICAgdG9Kc29uOiBDb21wdGVzUmVuZHVzQ29udmVydC5jb21wdGVSZW5kdVRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcblxuICAgICAgZXhpdENvZGUgPSBjb21taXRHaXQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBleGl0Q29kZSwgW1wiLlwiXSlcbiAgICB9XG4gIH1cblxuICAvLyBSZXN0b3JlIHN0YW5kYXJkIGNvbnZlcnNpb24gb2YgZGF0ZXMgdG8gSlNPTi5cbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZXhpc3RpbmdEYXRlVG9Kc29uXG5cbiAgcmV0dXJuIGV4aXRDb2RlXG59XG5cbmZ1bmN0aW9uIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWU6IHN0cmluZywgb3B0aW9uczogYW55KTogYW55IHtcbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgY29uc29sZS5sb2coYENsZWFuaW5nIGRpcmVjdG9yeTogJHtkYXRhc2V0Q2xlYW5EaXJ94oCmYClcbiAgfVxuICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRDbGVhbkRpcilcbiAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0Q2xlYW5EaXIpKSB7XG4gICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgcGF0aG5hbWUgPSBwYXRoLmpvaW4oZGF0YXNldENsZWFuRGlyLCBmaWxlbmFtZSlcbiAgICBmcy5yZW1vdmVTeW5jKHBhdGhuYW1lKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNvbW1pdEFuZFB1c2hVaWQoXG4gIHJlcG9zaXRvcnlEaXI6IHN0cmluZyxcbiAgb3B0aW9uczogYW55LFxuICBzdWJkaXJlY3RvcmllczogYW55LFxuKTogYm9vbGVhbiB7XG4gIGxldCBlcnJvciA9IGZhbHNlXG4gIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgIGdpdC51aWRCcmFuY2hVcGRhdGUoXG4gICAgICByZXBvc2l0b3J5RGlyLFxuICAgICAgc3ViZGlyZWN0b3JpZXMsXG4gICAgICBvcHRpb25zW1wibm8tcmVzZXQtYWZ0ZXItY29tbWl0XCJdLFxuICAgIClcbiAgICBmb3IgKGNvbnN0IHJlbW90ZSBvZiBvcHRpb25zLnJlbW90ZSB8fCBbXSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZ2l0LnJ1bihyZXBvc2l0b3J5RGlyLCBgcHVzaCAtLXF1aWV0ICR7cmVtb3RlfSB1aWQ6dWlkYClcbiAgICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgICAgICBlcnJvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVycm9yXG59XG5cbmZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogbnVtYmVyIHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICByZXR1cm4gY2xlYW5SZW9yZ2FuaXplZERhdGEob3B0aW9ucylcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwiY2xlYW5fcmVvcmdhbml6ZWRfZGF0YS50c1wiKSlcbiAgcHJvY2Vzcy5leGl0KG1haW4ocHJvY2Vzcy5hcmd2KSlcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsZ0JBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLEtBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLFNBQUEsR0FBQUgsT0FBQTtBQVdBLElBQUFJLFNBQUEsR0FBQUosT0FBQTtBQU1BLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGFBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLEdBQUEsR0FBQUMsdUJBQUEsQ0FBQVIsT0FBQTtBQUNBLElBQUFTLG1CQUFBLEdBQUFULE9BQUE7QUFLQSxJQUFBVSxRQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxZQUFBLEdBQUFYLE9BQUE7QUFDQSxJQUFBWSxxQkFBQSxHQUFBWixPQUFBO0FBS0EsSUFBQWEsU0FBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMsVUFBQSxHQUFBZCxPQUFBO0FBQ0EsSUFBQWUsT0FBQSxHQUFB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
|
|
588
|
+
if (process.argv[1].endsWith("clean_reorganized_data.ts")) {
|
|
589
|
+
main(process.argv).then(process.exit);
|
|
590
|
+
}
|
|
591
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2NsZWFuZXJzIiwiX2RhdGFzZXRzIiwiX2RhdGVzIiwiX2ZpbGVfc3lzdGVtcyIsImdpdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2FjdGV1cnNfZXRfb3JnYW5lcyIsIl9hZ2VuZGFzIiwiX2FtZW5kZW1lbnRzIiwiX2Rvc3NpZXJzX2xlZ2lzbGF0aWZzIiwiX3NjcnV0aW5zIiwiX3F1ZXN0aW9ucyIsIl9kZWJhdHMiLCJfY2xpX2hlbHBlcnMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJvYmoiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibyIsInZhbHVlIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJjIiwiYXN5bmNJdGVyYXRvciIsInRvU3RyaW5nVGFnIiwiZGVmaW5lIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwid3JhcCIsIkdlbmVyYXRvciIsImNyZWF0ZSIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJ0eXBlIiwiYXJnIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJFcnJvciIsImRvbmUiLCJtZXRob2QiLCJkZWxlZ2F0ZSIsIm1heWJlSW52b2tlRGVsZWdhdGUiLCJzZW50IiwiX3NlbnQiLCJkaXNwYXRjaEV4Y2VwdGlvbiIsImFicnVwdCIsIlR5cGVFcnJvciIsInJlc3VsdE5hbWUiLCJuZXh0IiwibmV4dExvYyIsInB1c2hUcnlFbnRyeSIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsInB1c2giLCJyZXNldFRyeUVudHJ5IiwiY29tcGxldGlvbiIsInJlc2V0IiwiaXNOYU4iLCJsZW5ndGgiLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsImtleXMiLCJyZXZlcnNlIiwicG9wIiwicHJldiIsImNoYXJBdCIsInNsaWNlIiwic3RvcCIsInJ2YWwiLCJoYW5kbGUiLCJjb21wbGV0ZSIsImZpbmlzaCIsIl9jYXRjaCIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJyZWplY3QiLCJfbmV4dCIsIl90aHJvdyIsImtleSIsImluZm8iLCJlcnJvciIsIl9hc3luY1RvR2VuZXJhdG9yIiwiZm4iLCJzZWxmIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5IiwiZXJyIiwidW5kZWZpbmVkIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIml0ZXIiLCJBcnJheSIsImZyb20iLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsImFsbG93QXJyYXlMaWtlIiwiaXQiLCJGIiwiX2UiLCJub3JtYWxDb21wbGV0aW9uIiwiZGlkRXJyIiwic3RlcCIsIl9lMiIsIm1pbkxlbiIsInRvU3RyaW5nIiwidGVzdCIsImxlbiIsImFycjIiLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiY2xvbmVPcHRpb24iLCJjb21taXRPcHRpb24iLCJyZW1vdGVPcHRpb24iLCJsZWdpc2xhdHVyZU9wdGlvbiIsImNhdGVnb3JpZXNPcHRpb24iLCJzaWxlbnRPcHRpb24iLCJ2ZXJib3NlT3B0aW9uIiwiZGF0YURpckRlZmF1bHRPcHRpb24iLCJwdWxsT3B0aW9uIiwiZmV0Y2hEb2N1bWVudHNPcHRpb24iLCJhbGlhcyIsImhlbHAiLCJTdHJpbmciLCJCb29sZWFuIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImNsb25lR2l0IiwiZ2l0R3JvdXBVcmwiLCJkYXRhc2V0TmFtZSIsImRhdGFEaXIiLCJjbG9uZSIsImNvbmNhdCIsImNvbW1pdEdpdCIsImRhdGFzZXRDbGVhbkRpciIsImV4aXRDb2RlIiwic3ViZGlyZWN0b3JpZXMiLCJjb21taXQiLCJlcnJvckNvZGUiLCJjb21taXRBbmRQdXNoIiwicmVtb3RlIiwiY29tbWl0QW5kUHVzaFVpZCIsImNsZWFuQW5kVmFsaWRhdGVEYXRhIiwiZGF0YSIsImNsZWFuZXIiLCJmcm9tSnNvbiIsInRvSnNvbiIsIm5vVmFsaWRhdGUiLCJqc29uRGF0YSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ2YWxpZGF0ZWREYXRhIiwicHJvY2Vzc0ZpbGVzIiwiZGF0YXNldFJhd0RpciIsIndhbGtEaXJQYXJhbXMiLCJkYXRhQ29udmVydGVyIiwiX2l0ZXJhdG9yIiwid2Fsa0RpciIsIl9zdGVwIiwiZmlsZVBhdGhBcnJheSIsImZpbGVuYW1lIiwiZW5kc1dpdGgiLCJyYXdGaWxlUGF0aCIsInBhdGgiLCJqb2luIiwicmF3SnNvbiIsImZzIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJ2ZXJib3NlIiwiY29uc29sZSIsImxvZyIsInBhcnNlIiwidmFsaWRhdGVEYXRhIiwiY2xlYW5Kc29uIiwiY2xlYW5GaWxlUGF0aCIsImVuc3VyZURpclN5bmMiLCJkaXJuYW1lIiwid3JpdGVGaWxlU3luYyIsImNsZWFuUmVvcmdhbml6ZWREYXRhIiwiX3giLCJfY2xlYW5SZW9yZ2FuaXplZERhdGEiLCJfY2FsbGVlIiwiX29wdGlvbnMkY2xvbmUiLCJlbmFibGVkRGF0YXNldHMiLCJjaG9zZW5EYXRhc2V0cyIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJkYXRhc2V0IiwiX2l0ZXJhdG9yNSIsIl9zdGVwNSIsIl9kYXRhc2V0IiwiX2RhdGFzZXROYW1lIiwiX2RhdGFzZXRSYXdEaXIiLCJfZGF0YXNldENsZWFuRGlyIiwiX2l0ZXJhdG9yNiIsIl9zdGVwNiIsIl9kYXRhc2V0MiIsIl9kYXRhc2V0TmFtZTIiLCJfZGF0YXNldFJhd0RpcjIiLCJfZGF0YXNldENsZWFuRGlyMiIsIl9pdGVyYXRvcjciLCJfc3RlcDciLCJfZGF0YXNldDMiLCJfZGF0YXNldE5hbWUzIiwiX2RhdGFzZXRSYXdEaXIzIiwiX2RhdGFzZXRDbGVhbkRpcjMiLCJfaXRlcmF0b3I4IiwiX3N0ZXA4IiwiX2RhdGFzZXQ0IiwiX2RhdGFzZXROYW1lNCIsIl9kYXRhc2V0UmF3RGlyNCIsIl9kYXRhc2V0Q2xlYW5EaXI0IiwiX2l0ZXJhdG9yOSIsIl9zdGVwOSIsIl9kYXRhc2V0NSIsIl9kYXRhc2V0TmFtZTUiLCJfZGF0YXNldFJhd0RpcjUiLCJfZGF0YXNldENsZWFuRGlyNSIsIl9pdGVyYXRvcjEwIiwiX3N0ZXAxMCIsIl9kYXRhc2V0NiIsIl9kYXRhc2V0TmFtZTYiLCJfZGF0YXNldFJhd0RpcjYiLCJfZGF0YXNldENsZWFuRGlyNiIsIl9pdGVyYXRvcjExIiwiX3N0ZXAxMSIsIl9kYXRhc2V0NyIsIl9kYXRhc2V0TmFtZTciLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwiRGF0ZSIsInRvSlNPTiIsInBhdGNoZWREYXRlVG9Kc29uIiwidHJpbSIsInJlcGxhY2UiLCJnZXRFbmFibGVkRGF0YXNldHMiLCJjYXRlZ29yaWVzIiwiZmlsdGVyQnlMZWdpc2xhdHVyZSIsImRhdGFzZXRzIiwibGVnaXNsYXR1cmUiLCJFbmFibGVkRGF0YXNldHMiLCJBY3RldXJzRXRPcmdhbmVzIiwiYWN0ZXVyc0V0T3JnYW5lcyIsImJhc2VuYW1lIiwicHVsbCIsInJlc2V0QW5kUHVsbCIsImFuYWx5emVBbmRSZW1vdmUiLCJjbGVhbkFjdGV1ciIsIkFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0IiwidG9BY3RldXIiLCJhY3RldXJUb0pzb24iLCJjbGVhbk9yZ2FuZSIsInRvT3JnYW5lIiwib3JnYW5lVG9Kc29uIiwidDAiLCJBZ2VuZGFzIiwiYWdlbmRhcyIsImNsZWFuUmV1bmlvbiIsIkFnZW5kYXNDb252ZXJ0IiwidG9SZXVuaW9uIiwicmV1bmlvblRvSnNvbiIsInQxIiwiQW1lbmRlbWVudHMiLCJhbWVuZGVtZW50cyIsImNsZWFuQW1lbmRlbWVudCIsIkFtZW5kZW1lbnRzQ29udmVydCIsInRvQW1lbmRlbWVudCIsImFtZW5kZW1lbnRUb0pzb24iLCJ0MiIsIkRvc3NpZXJzTGVnaXNsYXRpZnMiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwiY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24iLCJEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCIsInRvRG9jdW1lbnQiLCJkb2N1bWVudFRvSnNvbiIsImNsZWFuRG9zc2llclBhcmxlbWVudGFpcmUiLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwiZG9zc2llclBhcmxlbWVudGFpcmVUb0pzb24iLCJ0MyIsIlNjcnV0aW5zIiwic2NydXRpbnMiLCJjbGVhblNjcnV0aW4iLCJTY3J1dGluc0NvbnZlcnQiLCJ0b1NjcnV0aW4iLCJzY3J1dGluVG9Kc29uIiwidDQiLCJRdWVzdGlvbnMiLCJxdWVzdGlvbnMiLCJjbGVhblF1ZXN0aW9uIiwiUXVlc3Rpb25zQ29udmVydCIsInRvUXVlc3Rpb24iLCJxdWVzdGlvblRvSnNvbiIsInQ1IiwiQ29tcHRlc1JlbmR1c1NlYW5jZXMiLCJjb21wdGVzUmVuZHVzU2VhbmNlcyIsImNsZWFuQ29tcHRlUmVuZHUiLCJDb21wdGVzUmVuZHVzQ29udmVydCIsInRvQ29tcHRlUmVuZHUiLCJjb21wdGVSZW5kdVRvSnNvbiIsInQ2IiwiVGV4dGVzTG9pIiwidGV4dGVzTG9pIiwiY2xlYW4iLCJ0NyIsImV4aXN0aW5nRGF0ZVRvSnNvbiIsInNpbGVudCIsIl9pdGVyYXRvcjIiLCJyZWFkZGlyU3luYyIsIl9zdGVwMiIsInBhdGhuYW1lIiwicmVtb3ZlU3luYyIsInJlcG9zaXRvcnlEaXIiLCJ1aWRCcmFuY2hVcGRhdGUiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwicnVuIiwiY2hpbGRQcm9jZXNzIiwibWFpbiIsInByb2Nlc3MiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvY2xlYW5fcmVvcmdhbml6ZWRfZGF0YS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7XG4gIGNsZWFuQWN0ZXVyLFxuICBjbGVhbkFtZW5kZW1lbnQsXG4gIGNsZWFuRG9jdW1lbnRPckRpdmlzaW9uLFxuICBjbGVhbkRvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICBjbGVhbk9yZ2FuZSxcbiAgY2xlYW5SZXVuaW9uLFxuICBjbGVhblNjcnV0aW4sXG4gIGNsZWFuUXVlc3Rpb24sXG4gIGNsZWFuQ29tcHRlUmVuZHUsXG59IGZyb20gXCIuLi9jbGVhbmVyc1wiXG5pbXBvcnQge1xuICBkYXRhc2V0cyxcbiAgRW5hYmxlZERhdGFzZXRzLFxuICBnZXRFbmFibGVkRGF0YXNldHMsXG4gIGZpbHRlckJ5TGVnaXNsYXR1cmUsXG59IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBleGlzdGluZ0RhdGVUb0pzb24sIHBhdGNoZWREYXRlVG9Kc29uIH0gZnJvbSBcIi4uL2RhdGVzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCAqIGFzIGdpdCBmcm9tIFwiLi4vZ2l0XCJcbmltcG9ydCB7XG4gIEFjdGV1cixcbiAgQ29udmVydCBhcyBBY3RldXJzRXRPcmdhbmVzQ29udmVydCxcbiAgT3JnYW5lLFxufSBmcm9tIFwiLi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQWdlbmRhc0NvbnZlcnQsIFJldW5pb24gfSBmcm9tIFwiLi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50LCBDb252ZXJ0IGFzIEFtZW5kZW1lbnRzQ29udmVydCB9IGZyb20gXCIuLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBDb252ZXJ0IGFzIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFNjcnV0aW5zQ29udmVydCwgU2NydXRpbiB9IGZyb20gXCIuLi90eXBlcy9zY3J1dGluc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFF1ZXN0aW9uc0NvbnZlcnQsIFF1ZXN0aW9uIH0gZnJvbSBcIi4uL3R5cGVzL3F1ZXN0aW9uc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIENvbXB0ZXNSZW5kdXNDb252ZXJ0LCBDb21wdGVSZW5kdSB9IGZyb20gXCIuLi90eXBlcy9kZWJhdHNcIlxuaW1wb3J0IHtcbiAgY2xvbmVPcHRpb24sXG4gIGNvbW1pdE9wdGlvbixcbiAgcmVtb3RlT3B0aW9uLFxuICBsZWdpc2xhdHVyZU9wdGlvbixcbiAgY2F0ZWdvcmllc09wdGlvbixcbiAgZGF0YURpckRlZmF1bHRPcHRpb24sXG4gIHNpbGVudE9wdGlvbixcbiAgdmVyYm9zZU9wdGlvbixcbiAgcHVsbE9wdGlvbixcbiAgZmV0Y2hEb2N1bWVudHNPcHRpb24sXG59IGZyb20gXCIuL3NoYXJlZC9jbGlfaGVscGVyc1wiXG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhhcmd2OiBzdHJpbmdbXSk6IGFueSB7XG4gIGNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAgICBjbG9uZU9wdGlvbixcbiAgICBjb21taXRPcHRpb24sXG4gICAgcmVtb3RlT3B0aW9uLFxuICAgIGxlZ2lzbGF0dXJlT3B0aW9uLFxuICAgIGNhdGVnb3JpZXNPcHRpb24sXG4gICAgc2lsZW50T3B0aW9uLFxuICAgIHZlcmJvc2VPcHRpb24sXG4gICAgZGF0YURpckRlZmF1bHRPcHRpb24sXG4gICAgcHVsbE9wdGlvbixcbiAgICBmZXRjaERvY3VtZW50c09wdGlvbixcbiAgICB7XG4gICAgICBhbGlhczogXCJkXCIsXG4gICAgICBoZWxwOiBcInNpbmdsZSBkYXRhc2V0IHRvIHJlb3JnYW5pemVcIixcbiAgICAgIG5hbWU6IFwiZGF0YXNldFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgaGVscDogXCJkbyBub3QgcmVzZXQgLS1oYXJkIGFmdGVyIGNvbW1pdCB0byBzYXZlIEkvTyBpZiB0aGUgd29ya2luZyB0cmVlIGlzIHRvIGJlIGRpc2NhcmRlZFwiLFxuICAgICAgbmFtZTogXCJuby1yZXNldC1hZnRlci1jb21taXRcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJWXCIsXG4gICAgICBoZWxwOiBcImRvbid0IHZhbGlkYXRlIGRhdGFcIixcbiAgICAgIG5hbWU6IFwibm8tdmFsaWRhdGVcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG4gIHJldHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIGNsb25lR2l0KFxuICBnaXRHcm91cFVybDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBkYXRhc2V0TmFtZTogc3RyaW5nLFxuICBkYXRhRGlyOiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgZ2l0LmNsb25lKGdpdEdyb3VwVXJsLCBgJHtkYXRhc2V0TmFtZX1fbmV0dG95ZWAsIGRhdGFEaXIpXG59XG5cbmZ1bmN0aW9uIGNvbW1pdEdpdChcbiAgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcsXG4gIG9wdGlvbnM6IGFueSxcbiAgZXhpdENvZGU6IG51bWJlcixcbiAgc3ViZGlyZWN0b3JpZXM6IGFueSxcbik6IG51bWJlciB7XG4gIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICApXG4gICAgaWYgKFxuICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICkge1xuICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICB9XG4gIH1cbiAgaWYgKFxuICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBzdWJkaXJlY3RvcmllcykgJiZcbiAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICApIHtcbiAgICBleGl0Q29kZSA9IDFcbiAgfVxuICByZXR1cm4gZXhpdENvZGVcbn1cblxuZnVuY3Rpb24gY2xlYW5BbmRWYWxpZGF0ZURhdGE8VD4oXG4gIGRhdGE6IGFueSxcbiAgY2xlYW5lcjogKGRhdGE6IFQpID0+IHZvaWQsXG4gIGZyb21Kc29uOiAoanNvbjogc3RyaW5nKSA9PiBULFxuICB0b0pzb246IChkYXRhOiBUKSA9PiBzdHJpbmcsXG4gIG5vVmFsaWRhdGU6IEJvb2xlYW4sXG4pOiBzdHJpbmcge1xuICBjbGVhbmVyKGRhdGEpXG4gIGNvbnN0IGpzb25EYXRhID0gSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgMilcbiAgaWYgKCFub1ZhbGlkYXRlKSB7XG4gICAgcmV0dXJuIGpzb25EYXRhXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdmFsaWRhdGVkRGF0YTogVCA9IGZyb21Kc29uKGpzb25EYXRhKVxuICAgIHJldHVybiB0b0pzb24odmFsaWRhdGVkRGF0YSlcbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9jZXNzRmlsZXM8VD4oXG4gIGRhdGFzZXRSYXdEaXI6IHN0cmluZyxcbiAgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcsXG4gIHdhbGtEaXJQYXJhbXM6IGFueVtdLFxuICBjbGVhbmVyOiBhbnksXG4gIGRhdGFDb252ZXJ0ZXI6IHsgZnJvbUpzb246IGFueTsgdG9Kc29uOiBhbnkgfSxcbiAgb3B0aW9uczogYW55LFxuKTogdm9pZCB7XG4gIGZvciAoY29uc3QgZmlsZVBhdGhBcnJheSBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIsIHdhbGtEaXJQYXJhbXMpKSB7XG4gICAgY29uc3QgZmlsZW5hbWUgPSBmaWxlUGF0aEFycmF5W2ZpbGVQYXRoQXJyYXkubGVuZ3RoIC0gMV1cbiAgICBpZiAoIWZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIGNvbnRpbnVlXG4gICAgY29uc3QgcmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldFJhd0RpciwgLi4uZmlsZVBhdGhBcnJheSlcbiAgICBjb25zdCByYXdKc29uID0gZnMucmVhZEZpbGVTeW5jKHJhd0ZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIGNvbnNvbGUubG9nKGBDbGVhbmluZyBmaWxlOiAke3Jhd0ZpbGVQYXRofS4uLmApXG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UocmF3SnNvbilcbiAgICBjb25zdCB2YWxpZGF0ZURhdGEgPSAhb3B0aW9uc1tcIm5vLXZhbGlkYXRlXCJdXG4gICAgY29uc3QgY2xlYW5Kc29uID0gY2xlYW5BbmRWYWxpZGF0ZURhdGE8VD4oXG4gICAgICBkYXRhLFxuICAgICAgY2xlYW5lcixcbiAgICAgIGRhdGFDb252ZXJ0ZXIuZnJvbUpzb24sXG4gICAgICBkYXRhQ29udmVydGVyLnRvSnNvbixcbiAgICAgIHZhbGlkYXRlRGF0YSxcbiAgICApXG4gICAgY29uc3QgY2xlYW5GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0Q2xlYW5EaXIsIC4uLmZpbGVQYXRoQXJyYXkpXG4gICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoY2xlYW5GaWxlUGF0aCkpXG4gICAgZnMud3JpdGVGaWxlU3luYyhjbGVhbkZpbGVQYXRoLCBjbGVhbkpzb24sIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY2xlYW5SZW9yZ2FuaXplZERhdGEob3B0aW9uczogYW55KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3QgZGF0YURpcjogc3RyaW5nID0gb3B0aW9ucy5kYXRhRGlyXG4gIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IHBhdGNoZWREYXRlVG9Kc29uXG4gIGxldCBleGl0Q29kZSA9IG9wdGlvbnMuY29tbWl0ID8gMTAgOiAwXG4gIGNvbnN0IGdpdEdyb3VwVXJsID0gb3B0aW9ucy5jbG9uZT8udHJpbSgpLnJlcGxhY2UoL1xcLyskLywgXCJcIilcbiAgY29uc3QgZW5hYmxlZERhdGFzZXRzID0gZ2V0RW5hYmxlZERhdGFzZXRzKG9wdGlvbnMuY2F0ZWdvcmllcylcbiAgbGV0IGNob3NlbkRhdGFzZXRzID0gZmlsdGVyQnlMZWdpc2xhdHVyZShkYXRhc2V0cywgb3B0aW9ucy5sZWdpc2xhdHVyZSlcblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGlmIChvcHRpb25zLnB1bGwpIHtcbiAgICAgICAgZ2l0LnJlc2V0QW5kUHVsbChkYXRhc2V0Q2xlYW5EaXIpXG4gICAgICB9XG5cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBwcm9jZXNzRmlsZXM8QWN0ZXVyPihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXCJhY3RldXJzXCJdLFxuICAgICAgICBjbGVhbkFjdGV1cixcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b0FjdGV1cixcbiAgICAgICAgICB0b0pzb246IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LmFjdGV1clRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcbiAgICAgIHByb2Nlc3NGaWxlczxPcmdhbmU+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtcIm9yZ2FuZXNcIl0sXG4gICAgICAgIGNsZWFuT3JnYW5lLFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvT3JnYW5lLFxuICAgICAgICAgIHRvSnNvbjogQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQub3JnYW5lVG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXG4gICAgICAgIFwiYWN0ZXVyc1wiLFxuICAgICAgICBcIm9yZ2FuZXNcIixcbiAgICAgIF0pXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BZ2VuZGFzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFnZW5kYXMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuXG4gICAgICBwcm9jZXNzRmlsZXM8UmV1bmlvbj4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW10sXG4gICAgICAgIGNsZWFuUmV1bmlvbixcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBBZ2VuZGFzQ29udmVydC50b1JldW5pb24sXG4gICAgICAgICAgdG9Kc29uOiBBZ2VuZGFzQ29udmVydC5yZXVuaW9uVG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXCIuXCJdKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuXG4gICAgICBwcm9jZXNzRmlsZXM8QW1lbmRlbWVudD4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW10sXG4gICAgICAgIGNsZWFuQW1lbmRlbWVudCxcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50LFxuICAgICAgICAgIHRvSnNvbjogQW1lbmRlbWVudHNDb252ZXJ0LmFtZW5kZW1lbnRUb0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG5cbiAgICAgIGV4aXRDb2RlID0gY29tbWl0R2l0KGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgZXhpdENvZGUsIFtcIi5cIl0pXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuXG4gICAgICBwcm9jZXNzRmlsZXM8RG9jdW1lbnQ+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtcImRvY3VtZW50c1wiXSxcbiAgICAgICAgY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24sXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb2N1bWVudCxcbiAgICAgICAgICB0b0pzb246IERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LmRvY3VtZW50VG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuICAgICAgcHJvY2Vzc0ZpbGVzPERvc3NpZXJQYXJsZW1lbnRhaXJlPihcbiAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICBbXCJkb3NzaWVyc1wiXSxcbiAgICAgICAgY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgICAgICAge1xuICAgICAgICAgIGZyb21Kc29uOiBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0Rvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICAgICAgICAgIHRvSnNvbjogRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQuZG9zc2llclBhcmxlbWVudGFpcmVUb0pzb24sXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApXG5cbiAgICAgIGV4aXRDb2RlID0gY29tbWl0R2l0KGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgZXhpdENvZGUsIFtcbiAgICAgICAgXCJkb2N1bWVudHNcIixcbiAgICAgICAgXCJkb3NzaWVyc1wiLFxuICAgICAgXSlcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcblxuICAgICAgcHJvY2Vzc0ZpbGVzPFNjcnV0aW4+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhblNjcnV0aW4sXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogU2NydXRpbnNDb252ZXJ0LnRvU2NydXRpbixcbiAgICAgICAgICB0b0pzb246IFNjcnV0aW5zQ29udmVydC5zY3J1dGluVG9Kc29uLFxuICAgICAgICB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuXG4gICAgICBleGl0Q29kZSA9IGNvbW1pdEdpdChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIGV4aXRDb2RlLCBbXCIuXCJdKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUXVlc3Rpb25zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnF1ZXN0aW9ucykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG5cbiAgICAgIHByb2Nlc3NGaWxlczxRdWVzdGlvbj4oXG4gICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgW10sXG4gICAgICAgIGNsZWFuUXVlc3Rpb24sXG4gICAgICAgIHtcbiAgICAgICAgICBmcm9tSnNvbjogUXVlc3Rpb25zQ29udmVydC50b1F1ZXN0aW9uLFxuICAgICAgICAgIHRvSnNvbjogUXVlc3Rpb25zQ29udmVydC5xdWVzdGlvblRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcblxuICAgICAgZXhpdENvZGUgPSBjb21taXRHaXQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBleGl0Q29kZSwgW1wiLlwiXSlcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkNvbXB0ZXNSZW5kdXNTZWFuY2VzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmNvbXB0ZXNSZW5kdXNTZWFuY2VzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIueG1sXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuXG4gICAgICBwcm9jZXNzRmlsZXM8Q29tcHRlUmVuZHU+KFxuICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgIFtdLFxuICAgICAgICBjbGVhbkNvbXB0ZVJlbmR1LFxuICAgICAgICB7XG4gICAgICAgICAgZnJvbUpzb246IENvbXB0ZXNSZW5kdXNDb252ZXJ0LnRvQ29tcHRlUmVuZHUsXG4gICAgICAgICAgdG9Kc29uOiBDb21wdGVzUmVuZHVzQ29udmVydC5jb21wdGVSZW5kdVRvSnNvbixcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIClcblxuICAgICAgZXhpdENvZGUgPSBjb21taXRHaXQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBleGl0Q29kZSwgW1wiLlwiXSlcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlRleHRlc0xvaSkge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy50ZXh0ZXNMb2kpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBkYXRhc2V0LmNsZWFuID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgYXdhaXQgZGF0YXNldC5jbGVhbih7IGRhdGFEaXIsIGRhdGFzZXQsIG9wdGlvbnMgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXN0b3JlIHN0YW5kYXJkIGNvbnZlcnNpb24gb2YgZGF0ZXMgdG8gSlNPTi5cbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZXhpc3RpbmdEYXRlVG9Kc29uXG5cbiAgcmV0dXJuIGV4aXRDb2RlXG59XG5cbmZ1bmN0aW9uIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWU6IHN0cmluZywgb3B0aW9uczogYW55KTogYW55IHtcbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgY29uc29sZS5sb2coYENsZWFuaW5nIGRpcmVjdG9yeTogJHtkYXRhc2V0Q2xlYW5EaXJ94oCmYClcbiAgfVxuICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRDbGVhbkRpcilcbiAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0Q2xlYW5EaXIpKSB7XG4gICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgcGF0aG5hbWUgPSBwYXRoLmpvaW4oZGF0YXNldENsZWFuRGlyLCBmaWxlbmFtZSlcbiAgICBmcy5yZW1vdmVTeW5jKHBhdGhuYW1lKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNvbW1pdEFuZFB1c2hVaWQoXG4gIHJlcG9zaXRvcnlEaXI6IHN0cmluZyxcbiAgb3B0aW9uczogYW55LFxuICBzdWJkaXJlY3RvcmllczogYW55LFxuKTogYm9vbGVhbiB7XG4gIGxldCBlcnJvciA9IGZhbHNlXG4gIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgIGdpdC51aWRCcmFuY2hVcGRhdGUoXG4gICAgICByZXBvc2l0b3J5RGlyLFxuICAgICAgc3ViZGlyZWN0b3JpZXMsXG4gICAgICBvcHRpb25zW1wibm8tcmVzZXQtYWZ0ZXItY29tbWl0XCJdLFxuICAgIClcbiAgICBmb3IgKGNvbnN0IHJlbW90ZSBvZiBvcHRpb25zLnJlbW90ZSB8fCBbXSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZ2l0LnJ1bihyZXBvc2l0b3J5RGlyLCBgcHVzaCAtLXF1aWV0ICR7cmVtb3RlfSB1aWQ6dWlkYClcbiAgICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgICAgICBlcnJvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVycm9yXG59XG5cbmZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICByZXR1cm4gY2xlYW5SZW9yZ2FuaXplZERhdGEob3B0aW9ucylcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwiY2xlYW5fcmVvcmdhbml6ZWRfZGF0YS50c1wiKSkge1xuICBtYWluKHByb2Nlc3MuYXJndikudGhlbihwcm9jZXNzLmV4aXQpXG59Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxnQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRixzQkFBQSxDQUFB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
|