@tricoteuses/assemblee 1.0.7 → 1.1.0
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 +3 -9
- package/lib/api.mjs +4 -5
- package/lib/bugs/acteur-00010/plugin.test.js +3 -50
- package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
- package/lib/bugs/acteur-00010.js +2 -57
- package/lib/bugs/acteur-00010.mjs +1 -6
- package/lib/bugs/agenda-00002/plugin.test.js +3 -53
- package/lib/bugs/agenda-00002/plugin.test.mjs +1 -3
- package/lib/bugs/agenda-00002.js +3 -148
- package/lib/bugs/agenda-00002.mjs +1 -28
- package/lib/bugs/agenda-00008/plugin.test.js +3 -52
- package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00008.js +2 -61
- package/lib/bugs/agenda-00008.mjs +1 -5
- package/lib/bugs/agenda-00011/plugin.test.js +5 -99
- package/lib/bugs/agenda-00011/plugin.test.mjs +3 -3
- package/lib/bugs/agenda-00011.js +4 -105
- package/lib/bugs/agenda-00011.mjs +3 -29
- package/lib/bugs.js +3 -164
- package/lib/bugs.mjs +1 -26
- package/lib/cleaners/actes_legislatifs.js +11 -115
- package/lib/cleaners/actes_legislatifs.mjs +7 -82
- package/lib/cleaners/acteurs.js +12 -92
- package/lib/cleaners/acteurs.mjs +7 -38
- package/lib/cleaners/amendements.js +10 -103
- package/lib/cleaners/amendements.mjs +4 -58
- package/lib/cleaners/documents.js +5 -67
- package/lib/cleaners/documents.mjs +1 -37
- package/lib/cleaners/dossiers_legislatifs.js +5 -61
- package/lib/cleaners/dossiers_legislatifs.mjs +1 -29
- package/lib/cleaners/index.js +1 -9
- package/lib/cleaners/index.mjs +1 -1
- package/lib/cleaners/organes.js +1 -33
- package/lib/cleaners/organes.mjs +1 -17
- package/lib/cleaners/reunions.js +4 -119
- package/lib/cleaners/reunions.mjs +1 -64
- package/lib/cleaners/scrutins.js +10 -102
- package/lib/cleaners/scrutins.mjs +1 -48
- package/lib/cleaners/xml.js +8 -42
- package/lib/cleaners/xml.mjs +6 -8
- package/lib/datasets.js +14 -113
- package/lib/datasets.mjs +6 -46
- package/lib/dates.js +7 -37
- package/lib/dates.mjs +9 -14
- package/lib/dossiers_legislatifs.js +6 -68
- package/lib/dossiers_legislatifs.mjs +5 -36
- package/lib/file_systems.js +56 -139
- package/lib/file_systems.mjs +1 -9
- package/lib/git.js +4 -53
- package/lib/git.mjs +1 -12
- package/lib/index.js +1 -15
- package/lib/index.mjs +1 -1
- package/lib/inserters.js +23 -146
- package/lib/inserters.mjs +6 -87
- package/lib/loaders.js +44 -316
- package/lib/loaders.mjs +12 -135
- package/lib/organes.js +1 -7
- package/lib/organes.mjs +1 -4
- package/lib/parsers/documents.js +22 -151
- package/lib/parsers/documents.mjs +19 -81
- package/lib/parsers/index.js +1 -4
- package/lib/parsers/index.mjs +1 -1
- package/lib/parsers/recherche_amendements.js +302 -527
- package/lib/parsers/recherche_amendements.mjs +8 -31
- package/lib/raw_types/acteurs_et_organes.d.ts +1 -30
- package/lib/raw_types/acteurs_et_organes.js +5 -124
- package/lib/raw_types/acteurs_et_organes.mjs +5 -105
- package/lib/raw_types/agendas.js +6 -89
- package/lib/raw_types/agendas.mjs +9 -65
- package/lib/raw_types/amendements.d.ts +2 -0
- package/lib/raw_types/amendements.js +10 -90
- package/lib/raw_types/amendements.mjs +11 -69
- package/lib/raw_types/dossiers_legislatifs.js +6 -96
- package/lib/raw_types/dossiers_legislatifs.mjs +6 -73
- package/lib/raw_types/scrutins.js +6 -81
- package/lib/raw_types/scrutins.mjs +9 -57
- package/lib/scripts/bugs_helper.js +2 -181
- package/lib/scripts/bugs_helper.mjs +2 -39
- package/lib/scripts/clean_data.js +27 -143
- package/lib/scripts/clean_data.mjs +15 -34
- package/lib/scripts/clean_reorganized_data.js +76 -240
- package/lib/scripts/clean_reorganized_data.mjs +36 -99
- package/lib/scripts/diff_amendements.js +19 -79
- package/lib/scripts/diff_amendements.mjs +17 -35
- package/lib/scripts/document_dossiers_legislatifs.js +17 -142
- package/lib/scripts/document_dossiers_legislatifs.mjs +6 -90
- package/lib/scripts/get_today_reunions.js +4 -22
- package/lib/scripts/get_today_reunions.mjs +1 -7
- package/lib/scripts/merge_scrutins.js +3 -47
- package/lib/scripts/merge_scrutins.mjs +1 -9
- package/lib/scripts/parse_textes_lois.js +15 -44
- package/lib/scripts/parse_textes_lois.mjs +18 -19
- package/lib/scripts/raw_types_from_amendements.js +3 -95
- package/lib/scripts/raw_types_from_amendements.mjs +1 -16
- package/lib/scripts/reorganize_data.js +74 -294
- package/lib/scripts/reorganize_data.mjs +22 -133
- package/lib/scripts/retrieve_deputes_photos.js +6 -119
- package/lib/scripts/retrieve_deputes_photos.mjs +7 -33
- package/lib/scripts/retrieve_documents.js +4 -192
- package/lib/scripts/retrieve_documents.mjs +2 -50
- package/lib/scripts/retrieve_open_data.js +44 -116
- package/lib/scripts/retrieve_open_data.mjs +14 -19
- package/lib/scripts/retrieve_pending_amendments.js +4 -98
- package/lib/scripts/retrieve_pending_amendments.mjs +1 -14
- package/lib/scripts/retrieve_senateurs_photos.js +18 -114
- package/lib/scripts/retrieve_senateurs_photos.mjs +20 -48
- package/lib/scripts/retrieve_textes_lois.js +3 -122
- package/lib/scripts/retrieve_textes_lois.mjs +3 -21
- package/lib/scripts/test_load.js +2 -10
- package/lib/scripts/test_load.mjs +2 -1
- package/lib/scripts/test_load_big_files.js +2 -10
- package/lib/scripts/test_load_big_files.mjs +2 -1
- package/lib/scripts/validate_json.js +4 -119
- package/lib/scripts/validate_json.mjs +2 -36
- package/lib/shared_types/codes_actes.js +1 -24
- package/lib/shared_types/codes_actes.mjs +3 -10
- package/lib/strings.js +1 -5
- package/lib/strings.mjs +1 -1
- package/lib/types/acteurs_et_organes.js +9 -84
- package/lib/types/acteurs_et_organes.mjs +10 -63
- package/lib/types/agendas.js +8 -90
- package/lib/types/agendas.mjs +11 -66
- package/lib/types/amendements.d.ts +2 -0
- package/lib/types/amendements.js +12 -92
- package/lib/types/amendements.mjs +15 -70
- package/lib/types/dossiers_legislatifs.js +8 -96
- package/lib/types/dossiers_legislatifs.mjs +10 -72
- package/lib/types/legislatures.js +1 -3
- package/lib/types/legislatures.mjs +1 -2
- package/lib/types/scrutins.js +8 -82
- package/lib/types/scrutins.mjs +11 -58
- package/lib/urls.js +3 -27
- package/lib/urls.mjs +3 -21
- package/package.json +1 -1
package/lib/bugs/agenda-00002.js
CHANGED
|
@@ -1,132 +1,70 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
-
|
|
5
4
|
require("core-js/modules/es.object.set-prototype-of.js");
|
|
6
|
-
|
|
7
5
|
require("core-js/modules/es.function.bind.js");
|
|
8
|
-
|
|
9
6
|
require("core-js/modules/es.object.get-prototype-of.js");
|
|
10
|
-
|
|
11
7
|
require("core-js/modules/es.object.to-string.js");
|
|
12
|
-
|
|
13
8
|
require("core-js/modules/es.reflect.construct.js");
|
|
14
|
-
|
|
15
9
|
require("core-js/modules/es.object.create.js");
|
|
16
|
-
|
|
17
10
|
require("core-js/modules/es.promise.js");
|
|
18
|
-
|
|
19
11
|
require("core-js/modules/es.array.slice.js");
|
|
20
|
-
|
|
21
12
|
require("core-js/modules/es.array.from.js");
|
|
22
|
-
|
|
23
13
|
require("core-js/modules/es.string.iterator.js");
|
|
24
|
-
|
|
25
14
|
require("core-js/modules/es.symbol.js");
|
|
26
|
-
|
|
27
15
|
require("core-js/modules/es.symbol.description.js");
|
|
28
|
-
|
|
29
16
|
require("core-js/modules/es.symbol.iterator.js");
|
|
30
|
-
|
|
31
17
|
require("core-js/modules/es.array.iterator.js");
|
|
32
|
-
|
|
33
18
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
34
|
-
|
|
35
19
|
require("core-js/modules/es.array.is-array.js");
|
|
36
|
-
|
|
37
20
|
require("core-js/modules/es.symbol.async-iterator.js");
|
|
38
|
-
|
|
39
21
|
require("core-js/modules/es.symbol.to-string-tag.js");
|
|
40
|
-
|
|
41
22
|
require("core-js/modules/es.json.to-string-tag.js");
|
|
42
|
-
|
|
43
23
|
require("core-js/modules/es.math.to-string-tag.js");
|
|
44
|
-
|
|
45
24
|
require("core-js/modules/es.array.for-each.js");
|
|
46
|
-
|
|
47
25
|
require("core-js/modules/web.dom-collections.for-each.js");
|
|
48
|
-
|
|
49
26
|
require("core-js/modules/es.array.reverse.js");
|
|
50
|
-
|
|
51
27
|
Object.defineProperty(exports, "__esModule", {
|
|
52
28
|
value: true
|
|
53
29
|
});
|
|
54
30
|
exports.remapJo = exports.Plugin = void 0;
|
|
55
|
-
|
|
56
31
|
require("core-js/modules/es.function.name.js");
|
|
57
|
-
|
|
58
32
|
require("core-js/modules/es.array.join.js");
|
|
59
|
-
|
|
60
33
|
require("core-js/modules/es.array.splice.js");
|
|
61
|
-
|
|
62
34
|
require("core-js/modules/es.date.to-string.js");
|
|
63
|
-
|
|
64
35
|
require("core-js/modules/es.array.concat.js");
|
|
65
|
-
|
|
66
36
|
require("core-js/modules/es.object.keys.js");
|
|
67
|
-
|
|
68
37
|
require("core-js/modules/es.array.includes.js");
|
|
69
|
-
|
|
70
38
|
require("core-js/modules/es.string.includes.js");
|
|
71
|
-
|
|
72
39
|
require("core-js/modules/es.number.constructor.js");
|
|
73
|
-
|
|
74
40
|
require("core-js/modules/es.regexp.exec.js");
|
|
75
|
-
|
|
76
41
|
require("core-js/modules/es.regexp.constructor.js");
|
|
77
|
-
|
|
78
42
|
require("core-js/modules/es.regexp.to-string.js");
|
|
79
|
-
|
|
80
43
|
require("core-js/modules/es.object.define-property.js");
|
|
81
|
-
|
|
82
44
|
var _glob = _interopRequireDefault(require("glob"));
|
|
83
|
-
|
|
84
45
|
var _nodeHtmlParser = require("node-html-parser");
|
|
85
|
-
|
|
86
46
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
87
|
-
|
|
88
47
|
var _file_systems = require("../file_systems");
|
|
89
|
-
|
|
90
48
|
var _bugs = require("../bugs");
|
|
91
|
-
|
|
92
49
|
var _datasets = require("../datasets");
|
|
93
|
-
|
|
94
50
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
95
|
-
|
|
96
|
-
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 exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return generator._invoke = function (innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; }(innerFn, self, context), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; this._invoke = function (method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (object) { var keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
97
|
-
|
|
51
|
+
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 exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var method = delegate.iterator[context.method]; if (undefined === method) { if (context.delegate = null, "throw" === context.method) { if (delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel; context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method"); } return ContinueSentinel; } var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
|
|
98
52
|
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; } } }; }
|
|
99
|
-
|
|
100
53
|
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); }
|
|
101
|
-
|
|
102
54
|
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; }
|
|
103
|
-
|
|
104
55
|
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); } }
|
|
105
|
-
|
|
106
56
|
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); }); }; }
|
|
107
|
-
|
|
108
57
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
109
|
-
|
|
110
58
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
111
|
-
|
|
112
59
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
113
|
-
|
|
114
60
|
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
115
|
-
|
|
116
61
|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
117
|
-
|
|
118
62
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
119
|
-
|
|
120
63
|
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
121
|
-
|
|
122
64
|
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
123
|
-
|
|
124
65
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
125
|
-
|
|
126
66
|
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
127
|
-
|
|
128
67
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
129
|
-
|
|
130
68
|
var remapJo = {
|
|
131
69
|
RUANR5L15S2017IDS20667: "20172002",
|
|
132
70
|
RUANR5L15S2018IDS20817: "20180086",
|
|
@@ -151,36 +89,24 @@ var remapJo = {
|
|
|
151
89
|
RUANR5L15S2020IDS22106: "20200125"
|
|
152
90
|
};
|
|
153
91
|
exports.remapJo = remapJo;
|
|
154
|
-
|
|
155
92
|
var Plugin = /*#__PURE__*/function (_BasePlugin) {
|
|
156
93
|
_inherits(Plugin, _BasePlugin);
|
|
157
|
-
|
|
158
94
|
var _super = _createSuper(Plugin);
|
|
159
|
-
|
|
160
95
|
function Plugin(options) {
|
|
161
96
|
var _this;
|
|
162
|
-
|
|
163
97
|
_classCallCheck(this, Plugin);
|
|
164
|
-
|
|
165
98
|
_this = _super.call(this, options, "agenda-00002");
|
|
166
|
-
|
|
167
99
|
_defineProperty(_assertThisInitialized(_this), "cr2filenames", void 0);
|
|
168
|
-
|
|
169
100
|
_defineProperty(_assertThisInitialized(_this), "date2crs", void 0);
|
|
170
|
-
|
|
171
101
|
_defineProperty(_assertThisInitialized(_this), "cr2date", void 0);
|
|
172
|
-
|
|
173
102
|
_defineProperty(_assertThisInitialized(_this), "filename2date", void 0);
|
|
174
|
-
|
|
175
103
|
return _this;
|
|
176
104
|
}
|
|
177
|
-
|
|
178
105
|
_createClass(Plugin, [{
|
|
179
106
|
key: "preCheck",
|
|
180
107
|
value: function () {
|
|
181
108
|
var _preCheck = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
182
109
|
var _iterator, _step, cr, content, doc, root, found, _iterator2, _step2, meta, date;
|
|
183
|
-
|
|
184
110
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
185
111
|
while (1) {
|
|
186
112
|
switch (_context.prev = _context.next) {
|
|
@@ -189,9 +115,7 @@ var Plugin = /*#__PURE__*/function (_BasePlugin) {
|
|
|
189
115
|
_context.next = 2;
|
|
190
116
|
break;
|
|
191
117
|
}
|
|
192
|
-
|
|
193
118
|
throw "--cr is required";
|
|
194
|
-
|
|
195
119
|
case 2:
|
|
196
120
|
this.filename2date = {};
|
|
197
121
|
this.cr2filenames = {};
|
|
@@ -199,15 +123,12 @@ var Plugin = /*#__PURE__*/function (_BasePlugin) {
|
|
|
199
123
|
this.cr2date = {};
|
|
200
124
|
_iterator = _createForOfIteratorHelper((0, _file_systems.getFiles)(["".concat(this.options.cr, "/*.asp")]));
|
|
201
125
|
_context.prev = 7;
|
|
202
|
-
|
|
203
126
|
_iterator.s();
|
|
204
|
-
|
|
205
127
|
case 9:
|
|
206
128
|
if ((_step = _iterator.n()).done) {
|
|
207
129
|
_context.next = 41;
|
|
208
130
|
break;
|
|
209
131
|
}
|
|
210
|
-
|
|
211
132
|
cr = _step.value;
|
|
212
133
|
this.cr2filenames[cr] = [];
|
|
213
134
|
content = _fsExtra["default"].readFileSync(cr, {
|
|
@@ -218,76 +139,55 @@ var Plugin = /*#__PURE__*/function (_BasePlugin) {
|
|
|
218
139
|
found = false;
|
|
219
140
|
_iterator2 = _createForOfIteratorHelper(root.querySelectorAll("meta"));
|
|
220
141
|
_context.prev = 17;
|
|
221
|
-
|
|
222
142
|
_iterator2.s();
|
|
223
|
-
|
|
224
143
|
case 19:
|
|
225
144
|
if ((_step2 = _iterator2.n()).done) {
|
|
226
145
|
_context.next = 30;
|
|
227
146
|
break;
|
|
228
147
|
}
|
|
229
|
-
|
|
230
148
|
meta = _step2.value;
|
|
231
|
-
|
|
232
149
|
if (!(meta.attributes["name"] == "QUANTIEME_SEANCE")) {
|
|
233
150
|
_context.next = 28;
|
|
234
151
|
break;
|
|
235
152
|
}
|
|
236
|
-
|
|
237
153
|
date = meta.attributes["content"].split(" ").splice(-3).join(" ");
|
|
238
154
|
if (!(date in this.date2crs)) this.date2crs[date] = [];
|
|
239
155
|
this.date2crs[date].push(cr);
|
|
240
156
|
this.cr2date[cr] = date;
|
|
241
157
|
found = true;
|
|
242
158
|
return _context.abrupt("break", 30);
|
|
243
|
-
|
|
244
159
|
case 28:
|
|
245
160
|
_context.next = 19;
|
|
246
161
|
break;
|
|
247
|
-
|
|
248
162
|
case 30:
|
|
249
163
|
_context.next = 35;
|
|
250
164
|
break;
|
|
251
|
-
|
|
252
165
|
case 32:
|
|
253
166
|
_context.prev = 32;
|
|
254
167
|
_context.t0 = _context["catch"](17);
|
|
255
|
-
|
|
256
168
|
_iterator2.e(_context.t0);
|
|
257
|
-
|
|
258
169
|
case 35:
|
|
259
170
|
_context.prev = 35;
|
|
260
|
-
|
|
261
171
|
_iterator2.f();
|
|
262
|
-
|
|
263
172
|
return _context.finish(35);
|
|
264
|
-
|
|
265
173
|
case 38:
|
|
266
174
|
if (!found) {
|
|
267
175
|
console.error("".concat(cr, " is missing the meta name=\"QUANTIEME_SEANCE\""));
|
|
268
176
|
}
|
|
269
|
-
|
|
270
177
|
case 39:
|
|
271
178
|
_context.next = 9;
|
|
272
179
|
break;
|
|
273
|
-
|
|
274
180
|
case 41:
|
|
275
181
|
_context.next = 46;
|
|
276
182
|
break;
|
|
277
|
-
|
|
278
183
|
case 43:
|
|
279
184
|
_context.prev = 43;
|
|
280
185
|
_context.t1 = _context["catch"](7);
|
|
281
|
-
|
|
282
186
|
_iterator.e(_context.t1);
|
|
283
|
-
|
|
284
187
|
case 46:
|
|
285
188
|
_context.prev = 46;
|
|
286
|
-
|
|
287
189
|
_iterator.f();
|
|
288
|
-
|
|
289
190
|
return _context.finish(46);
|
|
290
|
-
|
|
291
191
|
case 49:
|
|
292
192
|
case "end":
|
|
293
193
|
return _context.stop();
|
|
@@ -295,11 +195,9 @@ var Plugin = /*#__PURE__*/function (_BasePlugin) {
|
|
|
295
195
|
}
|
|
296
196
|
}, _callee, this, [[7, 43, 46, 49], [17, 32, 35, 38]]);
|
|
297
197
|
}));
|
|
298
|
-
|
|
299
198
|
function preCheck() {
|
|
300
199
|
return _preCheck.apply(this, arguments);
|
|
301
200
|
}
|
|
302
|
-
|
|
303
201
|
return preCheck;
|
|
304
202
|
}()
|
|
305
203
|
}, {
|
|
@@ -315,9 +213,7 @@ var Plugin = /*#__PURE__*/function (_BasePlugin) {
|
|
|
315
213
|
_context2.next = 2;
|
|
316
214
|
break;
|
|
317
215
|
}
|
|
318
|
-
|
|
319
216
|
return _context2.abrupt("return", null);
|
|
320
|
-
|
|
321
217
|
case 2:
|
|
322
218
|
if (this.options.verbose) console.log("agenda-00002: ".concat(filename));
|
|
323
219
|
status = "ok";
|
|
@@ -334,31 +230,23 @@ var Plugin = /*#__PURE__*/function (_BasePlugin) {
|
|
|
334
230
|
});
|
|
335
231
|
dateSeanceString = "".concat(day, " ").concat(month, " ").concat(year);
|
|
336
232
|
this.filename2date[filename] = dateSeanceString;
|
|
337
|
-
|
|
338
233
|
if (!(agenda.identifiants == undefined || agenda.identifiants.idJo == undefined)) {
|
|
339
234
|
_context2.next = 20;
|
|
340
235
|
break;
|
|
341
236
|
}
|
|
342
|
-
|
|
343
237
|
week = 7 * 24 * 60 * 60 * 1000;
|
|
344
|
-
|
|
345
238
|
if (!(dateSeance >= new Date(new Date().getTime() - week))) {
|
|
346
239
|
_context2.next = 17;
|
|
347
240
|
break;
|
|
348
241
|
}
|
|
349
|
-
|
|
350
242
|
return _context2.abrupt("return", null);
|
|
351
|
-
|
|
352
243
|
case 17:
|
|
353
244
|
idJo = undefined;
|
|
354
|
-
|
|
355
245
|
case 18:
|
|
356
246
|
_context2.next = 21;
|
|
357
247
|
break;
|
|
358
|
-
|
|
359
248
|
case 20:
|
|
360
249
|
idJo = agenda.identifiants.idJo;
|
|
361
|
-
|
|
362
250
|
case 21:
|
|
363
251
|
if (agenda.uid in remapJo) {
|
|
364
252
|
if (idJo == remapJo[agenda.uid]) {
|
|
@@ -369,25 +257,20 @@ var Plugin = /*#__PURE__*/function (_BasePlugin) {
|
|
|
369
257
|
status = "will-be-fixed";
|
|
370
258
|
}
|
|
371
259
|
}
|
|
372
|
-
|
|
373
260
|
if (!(idJo == undefined)) {
|
|
374
261
|
_context2.next = 24;
|
|
375
262
|
break;
|
|
376
263
|
}
|
|
377
|
-
|
|
378
264
|
return _context2.abrupt("return", {
|
|
379
265
|
status: "needs-fixing",
|
|
380
266
|
info: ["idJo field is missing"]
|
|
381
267
|
});
|
|
382
|
-
|
|
383
268
|
case 24:
|
|
384
269
|
pattern = "".concat(this.options.cr, "/*_").concat(idJo, ".asp");
|
|
385
270
|
expanded = _glob["default"].sync(pattern);
|
|
386
271
|
if (expanded.length > 0) cr = expanded[0];else cr = undefined;
|
|
387
|
-
|
|
388
272
|
if (cr != undefined) {
|
|
389
273
|
this.cr2filenames[cr].push(filename);
|
|
390
|
-
|
|
391
274
|
if (dateSeanceString != this.cr2date[cr]) {
|
|
392
275
|
info.push("".concat(Plugin.comptesRendusUrls(cr), " meta QUANTIEME_SEANCE contains ").concat(this.cr2date[cr], " instead of the expected ").concat(dateSeanceString));
|
|
393
276
|
status = "needs-fixing";
|
|
@@ -398,12 +281,10 @@ var Plugin = /*#__PURE__*/function (_BasePlugin) {
|
|
|
398
281
|
status = "needs-fixing";
|
|
399
282
|
}
|
|
400
283
|
}
|
|
401
|
-
|
|
402
284
|
return _context2.abrupt("return", {
|
|
403
285
|
status: status,
|
|
404
286
|
info: info
|
|
405
287
|
});
|
|
406
|
-
|
|
407
288
|
case 29:
|
|
408
289
|
case "end":
|
|
409
290
|
return _context2.stop();
|
|
@@ -411,11 +292,9 @@ var Plugin = /*#__PURE__*/function (_BasePlugin) {
|
|
|
411
292
|
}
|
|
412
293
|
}, _callee2, this);
|
|
413
294
|
}));
|
|
414
|
-
|
|
415
295
|
function check(_x, _x2) {
|
|
416
296
|
return _check.apply(this, arguments);
|
|
417
297
|
}
|
|
418
|
-
|
|
419
298
|
return check;
|
|
420
299
|
}()
|
|
421
300
|
}, {
|
|
@@ -424,10 +303,8 @@ var Plugin = /*#__PURE__*/function (_BasePlugin) {
|
|
|
424
303
|
var date = this.filename2date[filename];
|
|
425
304
|
if (!(date in this.date2crs)) return [];
|
|
426
305
|
var candidates = [];
|
|
427
|
-
|
|
428
306
|
var _iterator3 = _createForOfIteratorHelper(this.date2crs[date]),
|
|
429
|
-
|
|
430
|
-
|
|
307
|
+
_step3;
|
|
431
308
|
try {
|
|
432
309
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
433
310
|
var cr = _step3.value;
|
|
@@ -438,7 +315,6 @@ var Plugin = /*#__PURE__*/function (_BasePlugin) {
|
|
|
438
315
|
} finally {
|
|
439
316
|
_iterator3.f();
|
|
440
317
|
}
|
|
441
|
-
|
|
442
318
|
return candidates;
|
|
443
319
|
}
|
|
444
320
|
}, {
|
|
@@ -446,41 +322,32 @@ var Plugin = /*#__PURE__*/function (_BasePlugin) {
|
|
|
446
322
|
value: function () {
|
|
447
323
|
var _postCheck = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(analysis) {
|
|
448
324
|
var _i, _Object$keys, filename, result, info;
|
|
449
|
-
|
|
450
325
|
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
451
326
|
while (1) {
|
|
452
327
|
switch (_context3.prev = _context3.next) {
|
|
453
328
|
case 0:
|
|
454
329
|
_i = 0, _Object$keys = Object.keys(analysis);
|
|
455
|
-
|
|
456
330
|
case 1:
|
|
457
331
|
if (!(_i < _Object$keys.length)) {
|
|
458
332
|
_context3.next = 11;
|
|
459
333
|
break;
|
|
460
334
|
}
|
|
461
|
-
|
|
462
335
|
filename = _Object$keys[_i];
|
|
463
336
|
result = analysis[filename]["agenda-00002"];
|
|
464
|
-
|
|
465
337
|
if (!(result == null || result["status"] != "needs-fixing")) {
|
|
466
338
|
_context3.next = 6;
|
|
467
339
|
break;
|
|
468
340
|
}
|
|
469
|
-
|
|
470
341
|
return _context3.abrupt("continue", 8);
|
|
471
|
-
|
|
472
342
|
case 6:
|
|
473
343
|
info = result["info"].join("");
|
|
474
|
-
|
|
475
344
|
if (info.includes("meta QUANTIEME") || info.includes("idJo field is missing")) {
|
|
476
345
|
result["info"] = result["info"].concat(this.findCandidates(filename));
|
|
477
346
|
}
|
|
478
|
-
|
|
479
347
|
case 8:
|
|
480
348
|
_i++;
|
|
481
349
|
_context3.next = 1;
|
|
482
350
|
break;
|
|
483
|
-
|
|
484
351
|
case 11:
|
|
485
352
|
case "end":
|
|
486
353
|
return _context3.stop();
|
|
@@ -488,11 +355,9 @@ var Plugin = /*#__PURE__*/function (_BasePlugin) {
|
|
|
488
355
|
}
|
|
489
356
|
}, _callee3, this);
|
|
490
357
|
}));
|
|
491
|
-
|
|
492
358
|
function postCheck(_x3) {
|
|
493
359
|
return _postCheck.apply(this, arguments);
|
|
494
360
|
}
|
|
495
|
-
|
|
496
361
|
return postCheck;
|
|
497
362
|
}()
|
|
498
363
|
}, {
|
|
@@ -508,25 +373,19 @@ var Plugin = /*#__PURE__*/function (_BasePlugin) {
|
|
|
508
373
|
_context4.next = 2;
|
|
509
374
|
break;
|
|
510
375
|
}
|
|
511
|
-
|
|
512
376
|
return _context4.abrupt("return", null);
|
|
513
|
-
|
|
514
377
|
case 2:
|
|
515
378
|
idJo = remapJo[agenda.uid];
|
|
516
379
|
numSeanceJo = String(Number(idJo.substring(5)));
|
|
517
|
-
|
|
518
380
|
if (!(agenda.identifiants.idJo == idJo && agenda.identifiants.numSeanceJo == numSeanceJo)) {
|
|
519
381
|
_context4.next = 6;
|
|
520
382
|
break;
|
|
521
383
|
}
|
|
522
|
-
|
|
523
384
|
return _context4.abrupt("return", false);
|
|
524
|
-
|
|
525
385
|
case 6:
|
|
526
386
|
agenda.identifiants.idJo = idJo;
|
|
527
387
|
agenda.identifiants.numSeanceJo = numSeanceJo;
|
|
528
388
|
return _context4.abrupt("return", true);
|
|
529
|
-
|
|
530
389
|
case 9:
|
|
531
390
|
case "end":
|
|
532
391
|
return _context4.stop();
|
|
@@ -534,11 +393,9 @@ var Plugin = /*#__PURE__*/function (_BasePlugin) {
|
|
|
534
393
|
}
|
|
535
394
|
}, _callee4);
|
|
536
395
|
}));
|
|
537
|
-
|
|
538
396
|
function fix(_x4) {
|
|
539
397
|
return _fix.apply(this, arguments);
|
|
540
398
|
}
|
|
541
|
-
|
|
542
399
|
return fix;
|
|
543
400
|
}()
|
|
544
401
|
}], [{
|
|
@@ -551,9 +408,7 @@ var Plugin = /*#__PURE__*/function (_BasePlugin) {
|
|
|
551
408
|
return "[".concat(file, "](https://git.en-root.org/tricoteuses/html/comptes-rendus/-/tree/master/").concat(file, ")");
|
|
552
409
|
}
|
|
553
410
|
}]);
|
|
554
|
-
|
|
555
411
|
return Plugin;
|
|
556
412
|
}(_bugs.BasePlugin);
|
|
557
|
-
|
|
558
413
|
exports.Plugin = Plugin;
|
|
559
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZW1hcEpvIiwiUlVBTlI1TDE1UzIwMTdJRFMyMDY2NyIsIlJVQU5SNUwxNVMyMDE4SURTMjA4MTciLCJSVUFOUjVMMTVTMjAxOElEUzIwODY0IiwiUlVBTlI1TDE1UzIwMThJRFMyMDk4MSIsIlJVQU5SNUwxNVMyMDE5SURTMjE1MDciLCJSVUFOUjVMMTVTMjAxOUlEUzIxNjA4IiwiUlVBTlI1TDE1UzIwMjBJRFMyMTg0MCIsIlJVQU5SNUwxNVMyMDIwSURTMjE4NDEiLCJSVUFOUjVMMTVTMjAyMElEUzIxODU5IiwiUlVBTlI1TDE1UzIwMjBJRFMyMTk3MCIsIlJVQU5SNUwxNVMyMDIwSURTMjE5ODMiLCJSVUFOUjVMMTVTMjAyMElEUzIyMDE5IiwiUlVBTlI1TDE1UzIwMjBJRFMyMjAyMCIsIlJVQU5SNUwxNVMyMDIwSURTMjIwMjEiLCJSVUFOUjVMMTVTMjAyMElEUzIyMDU0IiwiUlVBTlI1TDE1UzIwMjBJRFMyMjA1NSIsIlJVQU5SNUwxNVMyMDIwSURTMjIwNTYiLCJSVUFOUjVMMTVTMjAyMElEUzIyMDU3IiwiUlVBTlI1TDE1UzIwMjBJRFMyMjA4NyIsIlJVQU5SNUwxNVMyMDIwSURTMjIwODkiLCJSVUFOUjVMMTVTMjAyMElEUzIyMTA2IiwiUGx1Z2luIiwib3B0aW9ucyIsImNyIiwidW5kZWZpbmVkIiwiZmlsZW5hbWUyZGF0ZSIsImNyMmZpbGVuYW1lcyIsImRhdGUyY3JzIiwiY3IyZGF0ZSIsImdldEZpbGVzIiwiY29udGVudCIsImZzIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJkb2MiLCJwYXJzZSIsInJvb3QiLCJmb3VuZCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJtZXRhIiwiYXR0cmlidXRlcyIsImRhdGUiLCJzcGxpdCIsInNwbGljZSIsImpvaW4iLCJwdXNoIiwiY29uc29sZSIsImVycm9yIiwiYWdlbmRhIiwiZmlsZW5hbWUiLCJ4c2lUeXBlIiwibGlldSIsImNvZGUiLCJjeWNsZURlVmllIiwiZXRhdCIsInZlcmJvc2UiLCJsb2ciLCJzdGF0dXMiLCJpbmZvIiwiZGF0ZVNlYW5jZSIsIkRhdGUiLCJpZGVudGlmaWFudHMiLCJzdWJzdHJpbmciLCJ5ZWFyIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwiZGF5IiwibW9udGgiLCJkYXRlU2VhbmNlU3RyaW5nIiwiaWRKbyIsIndlZWsiLCJnZXRUaW1lIiwidWlkIiwicGF0dGVybiIsImV4cGFuZGVkIiwiZ2xvYiIsInN5bmMiLCJsZW5ndGgiLCJjb21wdGVzUmVuZHVzVXJscyIsImNhbmRpZGF0ZXMiLCJtYXN0ZXJVcmwiLCJhbmFseXNpcyIsIk9iamVjdCIsImtleXMiLCJyZXN1bHQiLCJpbmNsdWRlcyIsImNvbmNhdCIsImZpbmRDYW5kaWRhdGVzIiwibnVtU2VhbmNlSm8iLCJTdHJpbmciLCJOdW1iZXIiLCJyZSIsIm1hdGNoIiwiUmVnRXhwIiwiZXhlYyIsImZpbGUiLCJCYXNlUGx1Z2luIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2J1Z3MvYWdlbmRhLTAwMDAyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnbG9iIGZyb20gXCJnbG9iXCJcbmltcG9ydCB7IEhUTUxFbGVtZW50LCBwYXJzZSwgVGV4dE5vZGUgfSBmcm9tIFwibm9kZS1odG1sLXBhcnNlclwiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCB7IGdldEZpbGVzIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQgeyBCYXNlUGx1Z2luIH0gZnJvbSBcIi4uL2J1Z3NcIlxuaW1wb3J0IHsgbWFzdGVyVXJsIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcblxuZXhwb3J0IGxldCByZW1hcEpvOiBhbnkgPSB7XG4gIFJVQU5SNUwxNVMyMDE3SURTMjA2Njc6IFwiMjAxNzIwMDJcIixcbiAgUlVBTlI1TDE1UzIwMThJRFMyMDgxNzogXCIyMDE4MDA4NlwiLFxuICBSVUFOUjVMMTVTMjAxOElEUzIwODY0OiBcIjIwMTgwMTIxXCIsXG4gIFJVQU5SNUwxNVMyMDE4SURTMjA5ODE6IFwiMjAxODAxNzRcIixcbiAgUlVBTlI1TDE1UzIwMTlJRFMyMTUwNzogXCIyMDE5MDE1M1wiLFxuICBSVUFOUjVMMTVTMjAxOUlEUzIxNjA4OiBcIjIwMTkwMjE4XCIsXG4gIFJVQU5SNUwxNVMyMDIwSURTMjE4NDA6IFwiMjAyMDAwMDJcIixcbiAgUlVBTlI1TDE1UzIwMjBJRFMyMTg0MTogXCIyMDIwMDAwM1wiLFxuICBSVUFOUjVMMTVTMjAyMElEUzIxODU5OiBcIjIwMjAwMDAxXCIsXG4gIFJVQU5SNUwxNVMyMDIwSURTMjE5NzA6IFwiMjAyMDAwOTBcIixcbiAgUlVBTlI1TDE1UzIwMjBJRFMyMTk4MzogXCIyMDIwMDA5MlwiLFxuICBSVUFOUjVMMTVTMjAyMElEUzIyMDE5OiBcIjIwMjAwMTE3XCIsXG4gIFJVQU5SNUwxNVMyMDIwSURTMjIwMjA6IFwiMjAyMDAxMThcIixcbiAgUlVBTlI1TDE1UzIwMjBJRFMyMjAyMTogXCIyMDIwMDExOVwiLFxuICBSVUFOUjVMMTVTMjAyMElEUzIyMDU0OiBcIjIwMjAwMTM0XCIsXG4gIFJVQU5SNUwxNVMyMDIwSURTMjIwNTU6IFwiMjAyMDAxMzVcIixcbiAgUlVBTlI1TDE1UzIwMjBJRFMyMjA1NjogXCIyMDIwMDEzNlwiLFxuICBSVUFOUjVMMTVTMjAyMElEUzIyMDU3OiBcIjIwMjAwMTM3XCIsXG4gIFJVQU5SNUwxNVMyMDIwSURTMjIwODc6IFwiMjAyMDAxMzlcIixcbiAgUlVBTlI1TDE1UzIwMjBJRFMyMjA4OTogXCIyMDIwMDE0MFwiLFxuICBSVUFOUjVMMTVTMjAyMElEUzIyMTA2OiBcIjIwMjAwMTI1XCIsXG59XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW4gZXh0ZW5kcyBCYXNlUGx1Z2luIHtcbiAgY3IyZmlsZW5hbWVzOiBhbnlcbiAgZGF0ZTJjcnM6IGFueVxuICBjcjJkYXRlOiBhbnlcbiAgZmlsZW5hbWUyZGF0ZTogYW55XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogYW55KSB7XG4gICAgc3VwZXIob3B0aW9ucywgXCJhZ2VuZGEtMDAwMDJcIilcbiAgfVxuXG4gIGFzeW5jIHByZUNoZWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuY3IgPT0gdW5kZWZpbmVkKSB0aHJvdyBcIi0tY3IgaXMgcmVxdWlyZWRcIlxuICAgIHRoaXMuZmlsZW5hbWUyZGF0ZSA9IHt9XG4gICAgdGhpcy5jcjJmaWxlbmFtZXMgPSB7fVxuICAgIHRoaXMuZGF0ZTJjcnMgPSB7fVxuICAgIHRoaXMuY3IyZGF0ZSA9IHt9XG4gICAgZm9yIChjb25zdCBjciBvZiBnZXRGaWxlcyhbYCR7dGhpcy5vcHRpb25zLmNyfS8qLmFzcGBdKSkge1xuICAgICAgdGhpcy5jcjJmaWxlbmFtZXNbY3JdID0gW11cblxuICAgICAgY29uc3QgY29udGVudDogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGNyLCB7IGVuY29kaW5nOiBcInV0Zi04XCIgfSlcblxuICAgICAgdHlwZSBQYXJzZVJlc3VsdCA9XG4gICAgICAgIHwgKFRleHROb2RlICYgeyB2YWxpZD86IGJvb2xlYW4gfSlcbiAgICAgICAgfCAoSFRNTEVsZW1lbnQgJiB7IHZhbGlkPzogYm9vbGVhbiB9KVxuICAgICAgY29uc3QgZG9jOiBQYXJzZVJlc3VsdCA9IHBhcnNlKGNvbnRlbnQpXG4gICAgICBjb25zdCByb290ID0gZG9jIGFzIHVua25vd24gYXMgSFRNTEVsZW1lbnRcbiAgICAgIGxldCBmb3VuZCA9IGZhbHNlXG4gICAgICBmb3IgKGNvbnN0IG1ldGEgb2Ygcm9vdC5xdWVyeVNlbGVjdG9yQWxsKFwibWV0YVwiKSkge1xuICAgICAgICBpZiAobWV0YS5hdHRyaWJ1dGVzW1wibmFtZVwiXSA9PSBcIlFVQU5USUVNRV9TRUFOQ0VcIikge1xuICAgICAgICAgIGNvbnN0IGRhdGUgPSBtZXRhLmF0dHJpYnV0ZXNbXCJjb250ZW50XCJdXG4gICAgICAgICAgICAuc3BsaXQoXCIgXCIpXG4gICAgICAgICAgICAuc3BsaWNlKC0zKVxuICAgICAgICAgICAgLmpvaW4oXCIgXCIpXG4gICAgICAgICAgaWYgKCEoZGF0ZSBpbiB0aGlzLmRhdGUyY3JzKSkgdGhpcy5kYXRlMmNyc1tkYXRlXSA9IFtdXG4gICAgICAgICAgdGhpcy5kYXRlMmNyc1tkYXRlXS5wdXNoKGNyKVxuICAgICAgICAgIHRoaXMuY3IyZGF0ZVtjcl0gPSBkYXRlXG4gICAgICAgICAgZm91bmQgPSB0cnVlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGAke2NyfSBpcyBtaXNzaW5nIHRoZSBtZXRhIG5hbWU9XCJRVUFOVElFTUVfU0VBTkNFXCJgKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjb21wdGVzUmVuZHVzVXJscyhmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCByZSA9IFwiXi4qL2NvbXB0ZXMtcmVuZHVzLyguKilcIlxuICAgIGNvbnN0IG1hdGNoID0gbmV3IFJlZ0V4cChyZSkuZXhlYyhmaWxlbmFtZSlcbiAgICBpZiAobWF0Y2ggPT0gbnVsbCkgcmV0dXJuIGZpbGVuYW1lXG4gICAgY29uc3QgZmlsZSA9IG1hdGNoWzFdXG4gICAgcmV0dXJuIGBbJHtmaWxlfV0oaHR0cHM6Ly9naXQuZW4tcm9vdC5vcmcvdHJpY290ZXVzZXMvaHRtbC9jb21wdGVzLXJlbmR1cy8tL3RyZWUvbWFzdGVyLyR7ZmlsZX0pYFxuICB9XG5cbiAgYXN5bmMgY2hlY2soYWdlbmRhOiBhbnksIGZpbGVuYW1lOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGlmIChcbiAgICAgIGFnZW5kYS54c2lUeXBlICE9IFwic2VhbmNlX3R5cGVcIiB8fFxuICAgICAgYWdlbmRhLmxpZXUuY29kZSAhPSBcIkFOXCIgfHxcbiAgICAgIGFnZW5kYS5jeWNsZURlVmllLmV0YXQgPT0gXCJTdXBwcmltw6lcIiB8fFxuICAgICAgYWdlbmRhLmN5Y2xlRGVWaWUuZXRhdCA9PSBcIkFubnVsw6lcIlxuICAgIClcbiAgICAgIHJldHVybiBudWxsXG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIGNvbnNvbGUubG9nKGBhZ2VuZGEtMDAwMDI6ICR7ZmlsZW5hbWV9YClcbiAgICBsZXQgc3RhdHVzID0gXCJva1wiXG4gICAgbGV0IGluZm86IGFueSA9IFtdXG5cbiAgICBjb25zdCBkYXRlU2VhbmNlID0gbmV3IERhdGUoYWdlbmRhLmlkZW50aWZpYW50cy5kYXRlU2VhbmNlLnN1YnN0cmluZygwLCAxMCkpXG4gICAgY29uc3QgeWVhciA9IGRhdGVTZWFuY2UudG9Mb2NhbGVEYXRlU3RyaW5nKFwiZnJcIiwgeyB5ZWFyOiBcIm51bWVyaWNcIiB9KVxuICAgIGNvbnN0IGRheSA9IGRhdGVTZWFuY2UudG9Mb2NhbGVEYXRlU3RyaW5nKFwiZnJcIiwgeyBkYXk6IFwiMi1kaWdpdFwiIH0pXG4gICAgY29uc3QgbW9udGggPSBkYXRlU2VhbmNlLnRvTG9jYWxlRGF0ZVN0cmluZyhcImZyXCIsIHsgbW9udGg6IFwibG9uZ1wiIH0pXG4gICAgY29uc3QgZGF0ZVNlYW5jZVN0cmluZyA9IGAke2RheX0gJHttb250aH0gJHt5ZWFyfWBcbiAgICB0aGlzLmZpbGVuYW1lMmRhdGVbZmlsZW5hbWVdID0gZGF0ZVNlYW5jZVN0cmluZ1xuXG4gICAgbGV0IGlkSm9cblxuICAgIGlmIChcbiAgICAgIGFnZW5kYS5pZGVudGlmaWFudHMgPT0gdW5kZWZpbmVkIHx8XG4gICAgICBhZ2VuZGEuaWRlbnRpZmlhbnRzLmlkSm8gPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCB3ZWVrID0gNyAqIDI0ICogNjAgKiA2MCAqIDEwMDBcbiAgICAgIGlmIChkYXRlU2VhbmNlID49IG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gd2VlaykpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlkSm8gPSB1bmRlZmluZWRcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWRKbyA9IGFnZW5kYS5pZGVudGlmaWFudHMuaWRKb1xuICAgIH1cblxuICAgIGlmIChhZ2VuZGEudWlkIGluIHJlbWFwSm8pIHtcbiAgICAgIGlmIChpZEpvID09IHJlbWFwSm9bYWdlbmRhLnVpZF0pIHtcbiAgICAgICAgaW5mby5wdXNoKGBpZEpvIGFscmVhZHkgaXMgJHtpZEpvfWApXG4gICAgICAgIHN0YXR1cyA9IFwiYWxyZWFkeS1maXhlZFwiXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZEpvID0gcmVtYXBKb1thZ2VuZGEudWlkXVxuICAgICAgICBzdGF0dXMgPSBcIndpbGwtYmUtZml4ZWRcIlxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpZEpvID09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiBcIm5lZWRzLWZpeGluZ1wiLFxuICAgICAgICBpbmZvOiBbXCJpZEpvIGZpZWxkIGlzIG1pc3NpbmdcIl0sXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcGF0dGVybiA9IGAke3RoaXMub3B0aW9ucy5jcn0vKl8ke2lkSm99LmFzcGBcbiAgICBjb25zdCBleHBhbmRlZCA9IGdsb2Iuc3luYyhwYXR0ZXJuKVxuICAgIGxldCBjclxuICAgIGlmIChleHBhbmRlZC5sZW5ndGggPiAwKSBjciA9IGV4cGFuZGVkWzBdXG4gICAgZWxzZSBjciA9IHVuZGVmaW5lZFxuICAgIGlmIChjciAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY3IyZmlsZW5hbWVzW2NyXS5wdXNoKGZpbGVuYW1lKVxuXG4gICAgICBpZiAoZGF0ZVNlYW5jZVN0cmluZyAhPSB0aGlzLmNyMmRhdGVbY3JdKSB7XG4gICAgICAgIGluZm8ucHVzaChcbiAgICAgICAgICBgJHtQbHVnaW4uY29tcHRlc1JlbmR1c1VybHMoY3IpfSBtZXRhIFFVQU5USUVNRV9TRUFOQ0UgY29udGFpbnMgJHtcbiAgICAgICAgICAgIHRoaXMuY3IyZGF0ZVtjcl1cbiAgICAgICAgICB9IGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICR7ZGF0ZVNlYW5jZVN0cmluZ31gLFxuICAgICAgICApXG4gICAgICAgIHN0YXR1cyA9IFwibmVlZHMtZml4aW5nXCJcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHN0YXR1cyAhPSBcIndpbGwtYmUtZml4ZWRcIikge1xuICAgICAgICBpbmZvLnB1c2goYCR7cGF0dGVybn0gZG9lcyBub3QgZXhpc3RgKVxuICAgICAgICBzdGF0dXMgPSBcIm5lZWRzLWZpeGluZ1wiXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHN0YXR1czogc3RhdHVzLCBpbmZvOiBpbmZvIH1cbiAgfVxuXG4gIGZpbmRDYW5kaWRhdGVzKGZpbGVuYW1lOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IGRhdGUgPSB0aGlzLmZpbGVuYW1lMmRhdGVbZmlsZW5hbWVdXG4gICAgaWYgKCEoZGF0ZSBpbiB0aGlzLmRhdGUyY3JzKSkgcmV0dXJuIFtdXG4gICAgbGV0IGNhbmRpZGF0ZXMgPSBbXVxuICAgIGZvciAoY29uc3QgY3Igb2YgdGhpcy5kYXRlMmNyc1tkYXRlXSkge1xuICAgICAgaWYgKHRoaXMuY3IyZmlsZW5hbWVzW2NyXS5sZW5ndGggPiAwKVxuICAgICAgICBjYW5kaWRhdGVzLnB1c2goXG4gICAgICAgICAgYCR7UGx1Z2luLmNvbXB0ZXNSZW5kdXNVcmxzKFxuICAgICAgICAgICAgY3IsXG4gICAgICAgICAgKX0gaXMgbm90IGEgY2FuZGlkYXRlIGJlY2F1c2UgaXQgaXMgcmVmZXJlbmNlZCBieSAke21hc3RlclVybChcbiAgICAgICAgICAgIHRoaXMuY3IyZmlsZW5hbWVzW2NyXSxcbiAgICAgICAgICApfWAsXG4gICAgICAgIClcbiAgICAgIGVsc2UgY2FuZGlkYXRlcy5wdXNoKGAke1BsdWdpbi5jb21wdGVzUmVuZHVzVXJscyhjcil9IGlzIGEgY2FuZGlkYXRlYClcbiAgICB9XG4gICAgcmV0dXJuIGNhbmRpZGF0ZXNcbiAgfVxuXG4gIGFzeW5jIHBvc3RDaGVjayhhbmFseXNpczogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIE9iamVjdC5rZXlzKGFuYWx5c2lzKSkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYW5hbHlzaXNbZmlsZW5hbWVdW1wiYWdlbmRhLTAwMDAyXCJdXG4gICAgICBpZiAocmVzdWx0ID09IG51bGwgfHwgcmVzdWx0W1wic3RhdHVzXCJdICE9IFwibmVlZHMtZml4aW5nXCIpIGNvbnRpbnVlXG4gICAgICBjb25zdCBpbmZvID0gcmVzdWx0W1wiaW5mb1wiXS5qb2luKFwiXCIpXG4gICAgICBpZiAoXG4gICAgICAgIGluZm8uaW5jbHVkZXMoXCJtZXRhIFFVQU5USUVNRVwiKSB8fFxuICAgICAgICBpbmZvLmluY2x1ZGVzKFwiaWRKbyBmaWVsZCBpcyBtaXNzaW5nXCIpXG4gICAgICApIHtcbiAgICAgICAgcmVzdWx0W1wiaW5mb1wiXSA9IHJlc3VsdFtcImluZm9cIl0uY29uY2F0KHRoaXMuZmluZENhbmRpZGF0ZXMoZmlsZW5hbWUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZpeChhZ2VuZGE6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKCEoYWdlbmRhLnVpZCBpbiByZW1hcEpvKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBpZEpvID0gcmVtYXBKb1thZ2VuZGEudWlkXVxuICAgIGNvbnN0IG51bVNlYW5jZUpvID0gU3RyaW5nKE51bWJlcihpZEpvLnN1YnN0cmluZyg1KSkpXG4gICAgaWYgKFxuICAgICAgYWdlbmRhLmlkZW50aWZpYW50cy5pZEpvID09IGlkSm8gJiZcbiAgICAgIGFnZW5kYS5pZGVudGlmaWFudHMubnVtU2VhbmNlSm8gPT0gbnVtU2VhbmNlSm9cbiAgICApXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICBhZ2VuZGEuaWRlbnRpZmlhbnRzLmlkSm8gPSBpZEpvXG4gICAgYWdlbmRhLmlkZW50aWZpYW50cy5udW1TZWFuY2VKbyA9IG51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
|
|
414
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZW1hcEpvIiwiUlVBTlI1TDE1UzIwMTdJRFMyMDY2NyIsIlJVQU5SNUwxNVMyMDE4SURTMjA4MTciLCJSVUFOUjVMMTVTMjAxOElEUzIwODY0IiwiUlVBTlI1TDE1UzIwMThJRFMyMDk4MSIsIlJVQU5SNUwxNVMyMDE5SURTMjE1MDciLCJSVUFOUjVMMTVTMjAxOUlEUzIxNjA4IiwiUlVBTlI1TDE1UzIwMjBJRFMyMTg0MCIsIlJVQU5SNUwxNVMyMDIwSURTMjE4NDEiLCJSVUFOUjVMMTVTMjAyMElEUzIxODU5IiwiUlVBTlI1TDE1UzIwMjBJRFMyMTk3MCIsIlJVQU5SNUwxNVMyMDIwSURTMjE5ODMiLCJSVUFOUjVMMTVTMjAyMElEUzIyMDE5IiwiUlVBTlI1TDE1UzIwMjBJRFMyMjAyMCIsIlJVQU5SNUwxNVMyMDIwSURTMjIwMjEiLCJSVUFOUjVMMTVTMjAyMElEUzIyMDU0IiwiUlVBTlI1TDE1UzIwMjBJRFMyMjA1NSIsIlJVQU5SNUwxNVMyMDIwSURTMjIwNTYiLCJSVUFOUjVMMTVTMjAyMElEUzIyMDU3IiwiUlVBTlI1TDE1UzIwMjBJRFMyMjA4NyIsIlJVQU5SNUwxNVMyMDIwSURTMjIwODkiLCJSVUFOUjVMMTVTMjAyMElEUzIyMTA2IiwiUGx1Z2luIiwib3B0aW9ucyIsImNyIiwidW5kZWZpbmVkIiwiZmlsZW5hbWUyZGF0ZSIsImNyMmZpbGVuYW1lcyIsImRhdGUyY3JzIiwiY3IyZGF0ZSIsImdldEZpbGVzIiwiY29udGVudCIsImZzIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJkb2MiLCJwYXJzZSIsInJvb3QiLCJmb3VuZCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJtZXRhIiwiYXR0cmlidXRlcyIsImRhdGUiLCJzcGxpdCIsInNwbGljZSIsImpvaW4iLCJwdXNoIiwiY29uc29sZSIsImVycm9yIiwiYWdlbmRhIiwiZmlsZW5hbWUiLCJ4c2lUeXBlIiwibGlldSIsImNvZGUiLCJjeWNsZURlVmllIiwiZXRhdCIsInZlcmJvc2UiLCJsb2ciLCJzdGF0dXMiLCJpbmZvIiwiZGF0ZVNlYW5jZSIsIkRhdGUiLCJpZGVudGlmaWFudHMiLCJzdWJzdHJpbmciLCJ5ZWFyIiwidG9Mb2NhbGVEYXRlU3RyaW5nIiwiZGF5IiwibW9udGgiLCJkYXRlU2VhbmNlU3RyaW5nIiwiaWRKbyIsIndlZWsiLCJnZXRUaW1lIiwidWlkIiwicGF0dGVybiIsImV4cGFuZGVkIiwiZ2xvYiIsInN5bmMiLCJsZW5ndGgiLCJjb21wdGVzUmVuZHVzVXJscyIsImNhbmRpZGF0ZXMiLCJtYXN0ZXJVcmwiLCJhbmFseXNpcyIsIk9iamVjdCIsImtleXMiLCJyZXN1bHQiLCJpbmNsdWRlcyIsImNvbmNhdCIsImZpbmRDYW5kaWRhdGVzIiwibnVtU2VhbmNlSm8iLCJTdHJpbmciLCJOdW1iZXIiLCJyZSIsIm1hdGNoIiwiUmVnRXhwIiwiZXhlYyIsImZpbGUiLCJCYXNlUGx1Z2luIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2J1Z3MvYWdlbmRhLTAwMDAyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnbG9iIGZyb20gXCJnbG9iXCJcbmltcG9ydCB7IEhUTUxFbGVtZW50LCBwYXJzZSwgVGV4dE5vZGUgfSBmcm9tIFwibm9kZS1odG1sLXBhcnNlclwiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCB7IGdldEZpbGVzIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQgeyBCYXNlUGx1Z2luIH0gZnJvbSBcIi4uL2J1Z3NcIlxuaW1wb3J0IHsgbWFzdGVyVXJsIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcblxuZXhwb3J0IGxldCByZW1hcEpvOiBhbnkgPSB7XG4gIFJVQU5SNUwxNVMyMDE3SURTMjA2Njc6IFwiMjAxNzIwMDJcIixcbiAgUlVBTlI1TDE1UzIwMThJRFMyMDgxNzogXCIyMDE4MDA4NlwiLFxuICBSVUFOUjVMMTVTMjAxOElEUzIwODY0OiBcIjIwMTgwMTIxXCIsXG4gIFJVQU5SNUwxNVMyMDE4SURTMjA5ODE6IFwiMjAxODAxNzRcIixcbiAgUlVBTlI1TDE1UzIwMTlJRFMyMTUwNzogXCIyMDE5MDE1M1wiLFxuICBSVUFOUjVMMTVTMjAxOUlEUzIxNjA4OiBcIjIwMTkwMjE4XCIsXG4gIFJVQU5SNUwxNVMyMDIwSURTMjE4NDA6IFwiMjAyMDAwMDJcIixcbiAgUlVBTlI1TDE1UzIwMjBJRFMyMTg0MTogXCIyMDIwMDAwM1wiLFxuICBSVUFOUjVMMTVTMjAyMElEUzIxODU5OiBcIjIwMjAwMDAxXCIsXG4gIFJVQU5SNUwxNVMyMDIwSURTMjE5NzA6IFwiMjAyMDAwOTBcIixcbiAgUlVBTlI1TDE1UzIwMjBJRFMyMTk4MzogXCIyMDIwMDA5MlwiLFxuICBSVUFOUjVMMTVTMjAyMElEUzIyMDE5OiBcIjIwMjAwMTE3XCIsXG4gIFJVQU5SNUwxNVMyMDIwSURTMjIwMjA6IFwiMjAyMDAxMThcIixcbiAgUlVBTlI1TDE1UzIwMjBJRFMyMjAyMTogXCIyMDIwMDExOVwiLFxuICBSVUFOUjVMMTVTMjAyMElEUzIyMDU0OiBcIjIwMjAwMTM0XCIsXG4gIFJVQU5SNUwxNVMyMDIwSURTMjIwNTU6IFwiMjAyMDAxMzVcIixcbiAgUlVBTlI1TDE1UzIwMjBJRFMyMjA1NjogXCIyMDIwMDEzNlwiLFxuICBSVUFOUjVMMTVTMjAyMElEUzIyMDU3OiBcIjIwMjAwMTM3XCIsXG4gIFJVQU5SNUwxNVMyMDIwSURTMjIwODc6IFwiMjAyMDAxMzlcIixcbiAgUlVBTlI1TDE1UzIwMjBJRFMyMjA4OTogXCIyMDIwMDE0MFwiLFxuICBSVUFOUjVMMTVTMjAyMElEUzIyMTA2OiBcIjIwMjAwMTI1XCIsXG59XG5cbmV4cG9ydCBjbGFzcyBQbHVnaW4gZXh0ZW5kcyBCYXNlUGx1Z2luIHtcbiAgY3IyZmlsZW5hbWVzOiBhbnlcbiAgZGF0ZTJjcnM6IGFueVxuICBjcjJkYXRlOiBhbnlcbiAgZmlsZW5hbWUyZGF0ZTogYW55XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogYW55KSB7XG4gICAgc3VwZXIob3B0aW9ucywgXCJhZ2VuZGEtMDAwMDJcIilcbiAgfVxuXG4gIGFzeW5jIHByZUNoZWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuY3IgPT0gdW5kZWZpbmVkKSB0aHJvdyBcIi0tY3IgaXMgcmVxdWlyZWRcIlxuICAgIHRoaXMuZmlsZW5hbWUyZGF0ZSA9IHt9XG4gICAgdGhpcy5jcjJmaWxlbmFtZXMgPSB7fVxuICAgIHRoaXMuZGF0ZTJjcnMgPSB7fVxuICAgIHRoaXMuY3IyZGF0ZSA9IHt9XG4gICAgZm9yIChjb25zdCBjciBvZiBnZXRGaWxlcyhbYCR7dGhpcy5vcHRpb25zLmNyfS8qLmFzcGBdKSkge1xuICAgICAgdGhpcy5jcjJmaWxlbmFtZXNbY3JdID0gW11cblxuICAgICAgY29uc3QgY29udGVudDogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGNyLCB7IGVuY29kaW5nOiBcInV0Zi04XCIgfSlcblxuICAgICAgdHlwZSBQYXJzZVJlc3VsdCA9XG4gICAgICAgIHwgKFRleHROb2RlICYgeyB2YWxpZD86IGJvb2xlYW4gfSlcbiAgICAgICAgfCAoSFRNTEVsZW1lbnQgJiB7IHZhbGlkPzogYm9vbGVhbiB9KVxuICAgICAgY29uc3QgZG9jOiBQYXJzZVJlc3VsdCA9IHBhcnNlKGNvbnRlbnQpXG4gICAgICBjb25zdCByb290ID0gZG9jIGFzIHVua25vd24gYXMgSFRNTEVsZW1lbnRcbiAgICAgIGxldCBmb3VuZCA9IGZhbHNlXG4gICAgICBmb3IgKGNvbnN0IG1ldGEgb2Ygcm9vdC5xdWVyeVNlbGVjdG9yQWxsKFwibWV0YVwiKSkge1xuICAgICAgICBpZiAobWV0YS5hdHRyaWJ1dGVzW1wibmFtZVwiXSA9PSBcIlFVQU5USUVNRV9TRUFOQ0VcIikge1xuICAgICAgICAgIGNvbnN0IGRhdGUgPSBtZXRhLmF0dHJpYnV0ZXNbXCJjb250ZW50XCJdXG4gICAgICAgICAgICAuc3BsaXQoXCIgXCIpXG4gICAgICAgICAgICAuc3BsaWNlKC0zKVxuICAgICAgICAgICAgLmpvaW4oXCIgXCIpXG4gICAgICAgICAgaWYgKCEoZGF0ZSBpbiB0aGlzLmRhdGUyY3JzKSkgdGhpcy5kYXRlMmNyc1tkYXRlXSA9IFtdXG4gICAgICAgICAgdGhpcy5kYXRlMmNyc1tkYXRlXS5wdXNoKGNyKVxuICAgICAgICAgIHRoaXMuY3IyZGF0ZVtjcl0gPSBkYXRlXG4gICAgICAgICAgZm91bmQgPSB0cnVlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGAke2NyfSBpcyBtaXNzaW5nIHRoZSBtZXRhIG5hbWU9XCJRVUFOVElFTUVfU0VBTkNFXCJgKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjb21wdGVzUmVuZHVzVXJscyhmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCByZSA9IFwiXi4qL2NvbXB0ZXMtcmVuZHVzLyguKilcIlxuICAgIGNvbnN0IG1hdGNoID0gbmV3IFJlZ0V4cChyZSkuZXhlYyhmaWxlbmFtZSlcbiAgICBpZiAobWF0Y2ggPT0gbnVsbCkgcmV0dXJuIGZpbGVuYW1lXG4gICAgY29uc3QgZmlsZSA9IG1hdGNoWzFdXG4gICAgcmV0dXJuIGBbJHtmaWxlfV0oaHR0cHM6Ly9naXQuZW4tcm9vdC5vcmcvdHJpY290ZXVzZXMvaHRtbC9jb21wdGVzLXJlbmR1cy8tL3RyZWUvbWFzdGVyLyR7ZmlsZX0pYFxuICB9XG5cbiAgYXN5bmMgY2hlY2soYWdlbmRhOiBhbnksIGZpbGVuYW1lOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIGlmIChcbiAgICAgIGFnZW5kYS54c2lUeXBlICE9IFwic2VhbmNlX3R5cGVcIiB8fFxuICAgICAgYWdlbmRhLmxpZXUuY29kZSAhPSBcIkFOXCIgfHxcbiAgICAgIGFnZW5kYS5jeWNsZURlVmllLmV0YXQgPT0gXCJTdXBwcmltw6lcIiB8fFxuICAgICAgYWdlbmRhLmN5Y2xlRGVWaWUuZXRhdCA9PSBcIkFubnVsw6lcIlxuICAgIClcbiAgICAgIHJldHVybiBudWxsXG5cbiAgICBpZiAodGhpcy5vcHRpb25zLnZlcmJvc2UpIGNvbnNvbGUubG9nKGBhZ2VuZGEtMDAwMDI6ICR7ZmlsZW5hbWV9YClcbiAgICBsZXQgc3RhdHVzID0gXCJva1wiXG4gICAgbGV0IGluZm86IGFueSA9IFtdXG5cbiAgICBjb25zdCBkYXRlU2VhbmNlID0gbmV3IERhdGUoYWdlbmRhLmlkZW50aWZpYW50cy5kYXRlU2VhbmNlLnN1YnN0cmluZygwLCAxMCkpXG4gICAgY29uc3QgeWVhciA9IGRhdGVTZWFuY2UudG9Mb2NhbGVEYXRlU3RyaW5nKFwiZnJcIiwgeyB5ZWFyOiBcIm51bWVyaWNcIiB9KVxuICAgIGNvbnN0IGRheSA9IGRhdGVTZWFuY2UudG9Mb2NhbGVEYXRlU3RyaW5nKFwiZnJcIiwgeyBkYXk6IFwiMi1kaWdpdFwiIH0pXG4gICAgY29uc3QgbW9udGggPSBkYXRlU2VhbmNlLnRvTG9jYWxlRGF0ZVN0cmluZyhcImZyXCIsIHsgbW9udGg6IFwibG9uZ1wiIH0pXG4gICAgY29uc3QgZGF0ZVNlYW5jZVN0cmluZyA9IGAke2RheX0gJHttb250aH0gJHt5ZWFyfWBcbiAgICB0aGlzLmZpbGVuYW1lMmRhdGVbZmlsZW5hbWVdID0gZGF0ZVNlYW5jZVN0cmluZ1xuXG4gICAgbGV0IGlkSm9cblxuICAgIGlmIChcbiAgICAgIGFnZW5kYS5pZGVudGlmaWFudHMgPT0gdW5kZWZpbmVkIHx8XG4gICAgICBhZ2VuZGEuaWRlbnRpZmlhbnRzLmlkSm8gPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCB3ZWVrID0gNyAqIDI0ICogNjAgKiA2MCAqIDEwMDBcbiAgICAgIGlmIChkYXRlU2VhbmNlID49IG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gd2VlaykpIHtcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlkSm8gPSB1bmRlZmluZWRcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWRKbyA9IGFnZW5kYS5pZGVudGlmaWFudHMuaWRKb1xuICAgIH1cblxuICAgIGlmIChhZ2VuZGEudWlkIGluIHJlbWFwSm8pIHtcbiAgICAgIGlmIChpZEpvID09IHJlbWFwSm9bYWdlbmRhLnVpZF0pIHtcbiAgICAgICAgaW5mby5wdXNoKGBpZEpvIGFscmVhZHkgaXMgJHtpZEpvfWApXG4gICAgICAgIHN0YXR1cyA9IFwiYWxyZWFkeS1maXhlZFwiXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZEpvID0gcmVtYXBKb1thZ2VuZGEudWlkXVxuICAgICAgICBzdGF0dXMgPSBcIndpbGwtYmUtZml4ZWRcIlxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpZEpvID09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiBcIm5lZWRzLWZpeGluZ1wiLFxuICAgICAgICBpbmZvOiBbXCJpZEpvIGZpZWxkIGlzIG1pc3NpbmdcIl0sXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcGF0dGVybiA9IGAke3RoaXMub3B0aW9ucy5jcn0vKl8ke2lkSm99LmFzcGBcbiAgICBjb25zdCBleHBhbmRlZCA9IGdsb2Iuc3luYyhwYXR0ZXJuKVxuICAgIGxldCBjclxuICAgIGlmIChleHBhbmRlZC5sZW5ndGggPiAwKSBjciA9IGV4cGFuZGVkWzBdXG4gICAgZWxzZSBjciA9IHVuZGVmaW5lZFxuICAgIGlmIChjciAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY3IyZmlsZW5hbWVzW2NyXS5wdXNoKGZpbGVuYW1lKVxuXG4gICAgICBpZiAoZGF0ZVNlYW5jZVN0cmluZyAhPSB0aGlzLmNyMmRhdGVbY3JdKSB7XG4gICAgICAgIGluZm8ucHVzaChcbiAgICAgICAgICBgJHtQbHVnaW4uY29tcHRlc1JlbmR1c1VybHMoY3IpfSBtZXRhIFFVQU5USUVNRV9TRUFOQ0UgY29udGFpbnMgJHtcbiAgICAgICAgICAgIHRoaXMuY3IyZGF0ZVtjcl1cbiAgICAgICAgICB9IGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkICR7ZGF0ZVNlYW5jZVN0cmluZ31gLFxuICAgICAgICApXG4gICAgICAgIHN0YXR1cyA9IFwibmVlZHMtZml4aW5nXCJcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHN0YXR1cyAhPSBcIndpbGwtYmUtZml4ZWRcIikge1xuICAgICAgICBpbmZvLnB1c2goYCR7cGF0dGVybn0gZG9lcyBub3QgZXhpc3RgKVxuICAgICAgICBzdGF0dXMgPSBcIm5lZWRzLWZpeGluZ1wiXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHN0YXR1czogc3RhdHVzLCBpbmZvOiBpbmZvIH1cbiAgfVxuXG4gIGZpbmRDYW5kaWRhdGVzKGZpbGVuYW1lOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IGRhdGUgPSB0aGlzLmZpbGVuYW1lMmRhdGVbZmlsZW5hbWVdXG4gICAgaWYgKCEoZGF0ZSBpbiB0aGlzLmRhdGUyY3JzKSkgcmV0dXJuIFtdXG4gICAgbGV0IGNhbmRpZGF0ZXMgPSBbXVxuICAgIGZvciAoY29uc3QgY3Igb2YgdGhpcy5kYXRlMmNyc1tkYXRlXSkge1xuICAgICAgaWYgKHRoaXMuY3IyZmlsZW5hbWVzW2NyXS5sZW5ndGggPiAwKVxuICAgICAgICBjYW5kaWRhdGVzLnB1c2goXG4gICAgICAgICAgYCR7UGx1Z2luLmNvbXB0ZXNSZW5kdXNVcmxzKFxuICAgICAgICAgICAgY3IsXG4gICAgICAgICAgKX0gaXMgbm90IGEgY2FuZGlkYXRlIGJlY2F1c2UgaXQgaXMgcmVmZXJlbmNlZCBieSAke21hc3RlclVybChcbiAgICAgICAgICAgIHRoaXMuY3IyZmlsZW5hbWVzW2NyXSxcbiAgICAgICAgICApfWAsXG4gICAgICAgIClcbiAgICAgIGVsc2UgY2FuZGlkYXRlcy5wdXNoKGAke1BsdWdpbi5jb21wdGVzUmVuZHVzVXJscyhjcil9IGlzIGEgY2FuZGlkYXRlYClcbiAgICB9XG4gICAgcmV0dXJuIGNhbmRpZGF0ZXNcbiAgfVxuXG4gIGFzeW5jIHBvc3RDaGVjayhhbmFseXNpczogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIE9iamVjdC5rZXlzKGFuYWx5c2lzKSkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYW5hbHlzaXNbZmlsZW5hbWVdW1wiYWdlbmRhLTAwMDAyXCJdXG4gICAgICBpZiAocmVzdWx0ID09IG51bGwgfHwgcmVzdWx0W1wic3RhdHVzXCJdICE9IFwibmVlZHMtZml4aW5nXCIpIGNvbnRpbnVlXG4gICAgICBjb25zdCBpbmZvID0gcmVzdWx0W1wiaW5mb1wiXS5qb2luKFwiXCIpXG4gICAgICBpZiAoXG4gICAgICAgIGluZm8uaW5jbHVkZXMoXCJtZXRhIFFVQU5USUVNRVwiKSB8fFxuICAgICAgICBpbmZvLmluY2x1ZGVzKFwiaWRKbyBmaWVsZCBpcyBtaXNzaW5nXCIpXG4gICAgICApIHtcbiAgICAgICAgcmVzdWx0W1wiaW5mb1wiXSA9IHJlc3VsdFtcImluZm9cIl0uY29uY2F0KHRoaXMuZmluZENhbmRpZGF0ZXMoZmlsZW5hbWUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZpeChhZ2VuZGE6IGFueSk6IFByb21pc2U8YW55PiB7XG4gICAgaWYgKCEoYWdlbmRhLnVpZCBpbiByZW1hcEpvKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBpZEpvID0gcmVtYXBKb1thZ2VuZGEudWlkXVxuICAgIGNvbnN0IG51bVNlYW5jZUpvID0gU3RyaW5nKE51bWJlcihpZEpvLnN1YnN0cmluZyg1KSkpXG4gICAgaWYgKFxuICAgICAgYWdlbmRhLmlkZW50aWZpYW50cy5pZEpvID09IGlkSm8gJiZcbiAgICAgIGFnZW5kYS5pZGVudGlmaWFudHMubnVtU2VhbmNlSm8gPT0gbnVtU2VhbmNlSm9cbiAgICApXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICBhZ2VuZGEuaWRlbnRpZmlhbnRzLmlkSm8gPSBpZEpvXG4gICAgYWdlbmRhLmlkZW50aWZpYW50cy5udW1TZWFuY2VKbyA9IG51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
|