@tricoteuses/assemblee 1.10.5 → 2.0.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/README.md +8 -1
- package/lib/amendements-79bwpkvR.js +154 -0
- package/lib/amendements-CV3s5a0M.js +667 -0
- package/lib/cleaners/index.d.ts +9 -9
- package/lib/cleaners.js +564 -0
- package/lib/datasets.d.ts +3 -3
- package/lib/dossiers_legislatifs.d.ts +2 -2
- package/lib/index.d.ts +17 -22
- package/lib/index.js +1542 -314
- package/lib/inserters.d.ts +5 -5
- package/lib/loaders-9mHdTl9L.js +4158 -0
- package/lib/loaders.d.ts +12 -12
- package/lib/loaders.js +29 -1689
- package/lib/organes.d.ts +1 -1
- package/lib/parse-Ccs6wcUg.js +2512 -0
- package/lib/parsers/index.d.ts +2 -3
- package/lib/parsers/plf.d.ts +1 -0
- package/lib/parsers/recherche_amendements.d.ts +2 -2
- package/lib/parsers/textes_lois.d.ts +1 -23
- package/lib/parsers.js +398 -0
- package/lib/raw_types/debats.d.ts +2 -2
- package/lib/raw_types/dossiers_legislatifs.d.ts +1 -1
- package/lib/schemas/acteurs_et_organes.json +1166 -0
- package/lib/schemas/agendas.json +1745 -0
- package/lib/schemas/amendements.json +2085 -0
- package/lib/schemas/debats.json +842 -0
- package/lib/schemas/dossiers_legislatifs.json +3874 -0
- package/lib/schemas/legislatures.json +17 -0
- package/lib/schemas/questions.json +704 -0
- package/lib/schemas/scrutins.json +701 -0
- package/lib/scripts/retrieve_deputes_photos.d.ts +1 -1
- package/lib/types/acteurs_et_organes.d.ts +340 -0
- package/lib/types/agendas.d.ts +236 -10
- package/lib/types/amendements.d.ts +276 -1
- package/lib/types/debats.d.ts +52 -2
- package/lib/types/dossiers_legislatifs.d.ts +403 -9
- package/lib/types/questions.d.ts +99 -2
- package/lib/types/scrutins.d.ts +101 -0
- package/lib/urls.d.ts +2 -2
- package/package.json +32 -94
- package/lib/api.js +0 -52
- package/lib/api.mjs +0 -45
- package/lib/bugs/acteur-00010/plugin.test.js +0 -90
- package/lib/bugs/acteur-00010/plugin.test.mjs +0 -33
- package/lib/bugs/acteur-00010.d.ts +0 -7
- package/lib/bugs/acteur-00010.js +0 -116
- package/lib/bugs/acteur-00010.mjs +0 -26
- package/lib/bugs/agenda-00002/plugin.test.js +0 -124
- package/lib/bugs/agenda-00002/plugin.test.mjs +0 -50
- package/lib/bugs/agenda-00002.d.ts +0 -15
- package/lib/bugs/agenda-00002.js +0 -406
- package/lib/bugs/agenda-00002.mjs +0 -172
- package/lib/bugs/agenda-00008/plugin.test.js +0 -92
- package/lib/bugs/agenda-00008/plugin.test.mjs +0 -31
- package/lib/bugs/agenda-00008.d.ts +0 -7
- package/lib/bugs/agenda-00008.js +0 -123
- package/lib/bugs/agenda-00008.mjs +0 -26
- package/lib/bugs/agenda-00011/plugin.test.d.ts +0 -1
- package/lib/bugs/agenda-00011/plugin.test.js +0 -263
- package/lib/bugs/agenda-00011/plugin.test.mjs +0 -152
- package/lib/bugs/agenda-00011.d.ts +0 -16
- package/lib/bugs/agenda-00011.js +0 -333
- package/lib/bugs/agenda-00011.mjs +0 -125
- package/lib/bugs.d.ts +0 -21
- package/lib/bugs.js +0 -452
- package/lib/bugs.mjs +0 -70
- package/lib/cleaners/actes_legislatifs.js +0 -315
- package/lib/cleaners/actes_legislatifs.mjs +0 -253
- package/lib/cleaners/acteurs.js +0 -265
- package/lib/cleaners/acteurs.mjs +0 -180
- package/lib/cleaners/amendements.js +0 -294
- package/lib/cleaners/amendements.mjs +0 -227
- package/lib/cleaners/debats.js +0 -12
- package/lib/cleaners/debats.mjs +0 -5
- package/lib/cleaners/documents.js +0 -205
- package/lib/cleaners/documents.mjs +0 -133
- package/lib/cleaners/dossiers_legislatifs.js +0 -131
- package/lib/cleaners/dossiers_legislatifs.mjs +0 -70
- package/lib/cleaners/index.js +0 -70
- package/lib/cleaners/index.mjs +0 -10
- package/lib/cleaners/organes.js +0 -65
- package/lib/cleaners/organes.mjs +0 -48
- package/lib/cleaners/questions.js +0 -12
- package/lib/cleaners/questions.mjs +0 -5
- package/lib/cleaners/reunions.js +0 -312
- package/lib/cleaners/reunions.mjs +0 -255
- package/lib/cleaners/scrutins.js +0 -340
- package/lib/cleaners/scrutins.mjs +0 -221
- package/lib/cleaners/xml.js +0 -74
- package/lib/cleaners/xml.mjs +0 -59
- package/lib/datasets.js +0 -837
- package/lib/datasets.mjs +0 -755
- package/lib/dates.js +0 -124
- package/lib/dates.mjs +0 -100
- package/lib/dossiers_legislatifs.js +0 -346
- package/lib/dossiers_legislatifs.mjs +0 -208
- package/lib/file_systems.js +0 -162
- package/lib/file_systems.mjs +0 -62
- package/lib/git.js +0 -223
- package/lib/git.mjs +0 -151
- package/lib/index.mjs +0 -17
- package/lib/inserters.js +0 -521
- package/lib/inserters.mjs +0 -337
- package/lib/loaders.mjs +0 -886
- package/lib/logger.js +0 -35
- package/lib/logger.mjs +0 -26
- package/lib/organes.js +0 -22
- package/lib/organes.mjs +0 -15
- package/lib/parsers/documents.d.ts +0 -62
- package/lib/parsers/documents.js +0 -453
- package/lib/parsers/documents.mjs +0 -370
- package/lib/parsers/index.js +0 -40
- package/lib/parsers/index.mjs +0 -4
- package/lib/parsers/recherche_amendements.js +0 -403
- package/lib/parsers/recherche_amendements.mjs +0 -167
- package/lib/parsers/textes_lois.js +0 -307
- package/lib/parsers/textes_lois.mjs +0 -264
- package/lib/raw_types/acteurs_et_organes.js +0 -1215
- package/lib/raw_types/acteurs_et_organes.mjs +0 -1148
- package/lib/raw_types/agendas.js +0 -777
- package/lib/raw_types/agendas.mjs +0 -724
- package/lib/raw_types/amendements.js +0 -1052
- package/lib/raw_types/amendements.mjs +0 -993
- package/lib/raw_types/debats.js +0 -630
- package/lib/raw_types/debats.mjs +0 -573
- package/lib/raw_types/dossiers_legislatifs.js +0 -1529
- package/lib/raw_types/dossiers_legislatifs.mjs +0 -1471
- package/lib/raw_types/questions.js +0 -469
- package/lib/raw_types/questions.mjs +0 -416
- package/lib/raw_types/scrutins.js +0 -651
- package/lib/raw_types/scrutins.mjs +0 -598
- package/lib/schemas/acteur/Acteur.json +0 -56
- package/lib/schemas/acteur/AdresseElectronique.json +0 -52
- package/lib/schemas/acteur/AdressePostale.json +0 -75
- package/lib/schemas/acteur/Civ.json +0 -14
- package/lib/schemas/acteur/Collaborateur.json +0 -29
- package/lib/schemas/acteur/EtatCivil.json +0 -51
- package/lib/schemas/acteur/Ident.json +0 -40
- package/lib/schemas/acteur/Lieu.json +0 -66
- package/lib/schemas/acteur/Mandat.json +0 -192
- package/lib/schemas/acteur/Profession.json +0 -46
- package/lib/schemas/agenda/Agenda.json +0 -318
- package/lib/schemas/agenda/CycleDeVie.json +0 -45
- package/lib/schemas/agenda/PointOdj.json +0 -82
- package/lib/schemas/amendement/Amendement.json +0 -246
- package/lib/schemas/amendement/Diff.json +0 -25
- package/lib/schemas/amendement/DispositifAmdtCredit.json +0 -85
- package/lib/schemas/amendement/Identifiant.json +0 -62
- package/lib/schemas/amendement/PointeurFragmentTexte.json +0 -127
- package/lib/schemas/amendement/Representation.json +0 -67
- package/lib/schemas/amendement/Total.json +0 -26
- package/lib/schemas/converted_from_type/acteurs_et_organes.json +0 -666
- package/lib/schemas/converted_from_type/agendas.json +0 -1100
- package/lib/schemas/converted_from_type/amendements.json +0 -3191
- package/lib/schemas/converted_from_type/debats.json +0 -682
- package/lib/schemas/converted_from_type/deputes.json +0 -26
- package/lib/schemas/converted_from_type/dossiers_legislatifs.json +0 -2918
- package/lib/schemas/converted_from_type/legislatures.json +0 -16
- package/lib/schemas/converted_from_type/questions.json +0 -328
- package/lib/schemas/converted_from_type/scrutins.json +0 -393
- package/lib/schemas/debat/Contenu.json +0 -75
- package/lib/schemas/debat/Debat.json +0 -40
- package/lib/schemas/debat/Metadonnees.json +0 -75
- package/lib/schemas/debat/Orateur.json +0 -60
- package/lib/schemas/debat/Point.json +0 -169
- package/lib/schemas/debat/Sommaire.json +0 -71
- package/lib/schemas/debat/SommaireElement.json +0 -108
- package/lib/schemas/debat/Texte.json +0 -34
- package/lib/schemas/document/CodeLibelle.json +0 -25
- package/lib/schemas/document/Document.json +0 -385
- package/lib/schemas/document/Indexation.json +0 -38
- package/lib/schemas/dossier/ActeLegislatif.json +0 -211
- package/lib/schemas/dossier/ActeLegislatifBase.json +0 -62
- package/lib/schemas/dossier/Agenda.json +0 -23
- package/lib/schemas/dossier/ConseilConstitutionnel.json +0 -35
- package/lib/schemas/dossier/Decision.json +0 -25
- package/lib/schemas/dossier/Dossier.json +0 -124
- package/lib/schemas/dossier/EtudeImpact.json +0 -29
- package/lib/schemas/dossier/EtudePlf.json +0 -105
- package/lib/schemas/dossier/Europe.json +0 -42
- package/lib/schemas/dossier/FamCodeLibelle.json +0 -25
- package/lib/schemas/dossier/InfoJO.json +0 -23
- package/lib/schemas/dossier/Initiateur.json +0 -36
- package/lib/schemas/dossier/Motion.json +0 -27
- package/lib/schemas/dossier/Promulgation.json +0 -62
- package/lib/schemas/dossier/Rapporteur.json +0 -36
- package/lib/schemas/dossier/Texte.json +0 -47
- package/lib/schemas/organe/CodeTypeOrgane.json +0 -43
- package/lib/schemas/organe/Organe.json +0 -136
- package/lib/schemas/organe/ViMoDe.json +0 -28
- package/lib/schemas/question/Auteur.json +0 -58
- package/lib/schemas/question/Cloture.json +0 -28
- package/lib/schemas/question/InfoJO.json +0 -40
- package/lib/schemas/question/MinAttribElement.json +0 -30
- package/lib/schemas/question/Question.json +0 -172
- package/lib/schemas/question/Renouvellement.json +0 -17
- package/lib/schemas/question/Signalement.json +0 -21
- package/lib/schemas/question/Texte.json +0 -24
- package/lib/schemas/scrutin/DecompteVoix.json +0 -35
- package/lib/schemas/scrutin/Dysfonctionnement.json +0 -50
- package/lib/schemas/scrutin/MiseAuPoint.json +0 -53
- package/lib/schemas/scrutin/OrganeVotant.json +0 -88
- package/lib/schemas/scrutin/Scrutin.json +0 -187
- package/lib/schemas/scrutin/Votant.json +0 -37
- package/lib/scripts/bugs_helper.d.ts +0 -13
- package/lib/scripts/bugs_helper.js +0 -595
- package/lib/scripts/bugs_helper.mjs +0 -251
- package/lib/scripts/clean_reorganized_data.js +0 -613
- package/lib/scripts/clean_reorganized_data.mjs +0 -276
- package/lib/scripts/diff_amendements.js +0 -249
- package/lib/scripts/diff_amendements.mjs +0 -202
- package/lib/scripts/document_dossiers_legislatifs.js +0 -655
- package/lib/scripts/document_dossiers_legislatifs.mjs +0 -414
- package/lib/scripts/get_today_reunions.js +0 -37
- package/lib/scripts/get_today_reunions.mjs +0 -31
- package/lib/scripts/merge_scrutins.js +0 -97
- package/lib/scripts/merge_scrutins.mjs +0 -47
- package/lib/scripts/parse_textes_lois.d.ts +0 -1
- package/lib/scripts/parse_textes_lois.js +0 -171
- package/lib/scripts/parse_textes_lois.mjs +0 -140
- package/lib/scripts/process_open_dataset.js +0 -301
- package/lib/scripts/process_open_dataset.mjs +0 -134
- package/lib/scripts/raw_types_from_amendements.js +0 -135
- package/lib/scripts/raw_types_from_amendements.mjs +0 -134
- package/lib/scripts/reorganize_data.js +0 -805
- package/lib/scripts/reorganize_data.mjs +0 -517
- package/lib/scripts/retrieve_deputes_photos.js +0 -310
- package/lib/scripts/retrieve_deputes_photos.mjs +0 -158
- package/lib/scripts/retrieve_documents.js +0 -547
- package/lib/scripts/retrieve_documents.mjs +0 -242
- package/lib/scripts/retrieve_open_data.js +0 -107
- package/lib/scripts/retrieve_open_data.mjs +0 -26
- package/lib/scripts/retrieve_pending_amendments.js +0 -206
- package/lib/scripts/retrieve_pending_amendments.mjs +0 -57
- package/lib/scripts/retrieve_senateurs_photos.js +0 -234
- package/lib/scripts/retrieve_senateurs_photos.mjs +0 -116
- package/lib/scripts/retrieve_textes_lois.d.ts +0 -1
- package/lib/scripts/retrieve_textes_lois.js +0 -240
- package/lib/scripts/retrieve_textes_lois.mjs +0 -85
- package/lib/scripts/shared/cli_helpers.js +0 -89
- package/lib/scripts/shared/cli_helpers.mjs +0 -81
- package/lib/scripts/test_iter_load.js +0 -155
- package/lib/scripts/test_iter_load.mjs +0 -72
- package/lib/scripts/test_load.js +0 -26
- package/lib/scripts/test_load.mjs +0 -16
- package/lib/scripts/test_load_big_files.js +0 -26
- package/lib/scripts/test_load_big_files.mjs +0 -16
- package/lib/scripts/validate_json.js +0 -353
- package/lib/scripts/validate_json.mjs +0 -184
- package/lib/shared_types/codes_actes.js +0 -231
- package/lib/shared_types/codes_actes.mjs +0 -224
- package/lib/strings.js +0 -16
- package/lib/strings.mjs +0 -7
- package/lib/types/acteurs_et_organes.js +0 -965
- package/lib/types/acteurs_et_organes.mjs +0 -906
- package/lib/types/agendas.js +0 -628
- package/lib/types/agendas.mjs +0 -575
- package/lib/types/amendements.js +0 -899
- package/lib/types/amendements.mjs +0 -842
- package/lib/types/debats.js +0 -619
- package/lib/types/debats.mjs +0 -562
- package/lib/types/dossiers_legislatifs.js +0 -1188
- package/lib/types/dossiers_legislatifs.mjs +0 -1130
- package/lib/types/legislatures.js +0 -17
- package/lib/types/legislatures.mjs +0 -10
- package/lib/types/questions.js +0 -454
- package/lib/types/questions.mjs +0 -401
- package/lib/types/scrutins.js +0 -556
- package/lib/types/scrutins.mjs +0 -503
- package/lib/urls.js +0 -325
- package/lib/urls.mjs +0 -258
- /package/lib/{bugs/acteur-00010/plugin.test.d.ts → scripts/add_links_to_documents.d.ts} +0 -0
- /package/lib/{bugs/agenda-00002/plugin.test.d.ts → scripts/copy-schemas.d.ts} +0 -0
- /package/lib/{bugs/agenda-00008/plugin.test.d.ts → scripts/generate-json-schemas.d.ts} +0 -0
package/lib/loaders.js
CHANGED
|
@@ -1,1689 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
enumerable: true,
|
|
31
|
-
get: function get() {
|
|
32
|
-
return _datasets.EnabledDatasets;
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
exports.iterLoadAssembleeActeurs = iterLoadAssembleeActeurs;
|
|
36
|
-
exports.iterLoadAssembleeAmendements = iterLoadAssembleeAmendements;
|
|
37
|
-
exports.iterLoadAssembleeComptesRendus = iterLoadAssembleeComptesRendus;
|
|
38
|
-
exports.iterLoadAssembleeDocuments = iterLoadAssembleeDocuments;
|
|
39
|
-
exports.iterLoadAssembleeDossiersParlementaires = iterLoadAssembleeDossiersParlementaires;
|
|
40
|
-
exports.iterLoadAssembleeOrganes = iterLoadAssembleeOrganes;
|
|
41
|
-
exports.iterLoadAssembleeQuestions = iterLoadAssembleeQuestions;
|
|
42
|
-
exports.iterLoadAssembleeReunions = iterLoadAssembleeReunions;
|
|
43
|
-
exports.iterLoadAssembleeScrutins = iterLoadAssembleeScrutins;
|
|
44
|
-
exports.loadAssembleeData = loadAssembleeData;
|
|
45
|
-
exports.loadAssembleeDataFromBigFiles = loadAssembleeDataFromBigFiles;
|
|
46
|
-
exports.loadAssembleeDocumentFile = loadAssembleeDocumentFile;
|
|
47
|
-
exports.loadAssembleePhotosDeputes = loadAssembleePhotosDeputes;
|
|
48
|
-
exports.loadAssembleePhotosSenateurs = loadAssembleePhotosSenateurs;
|
|
49
|
-
exports.pathFromCompteRenduUid = pathFromCompteRenduUid;
|
|
50
|
-
exports.pathFromDocumentUid = pathFromDocumentUid;
|
|
51
|
-
exports.pathFromDossierParlementaireUid = pathFromDossierParlementaireUid;
|
|
52
|
-
exports.pathFromQuestionUid = pathFromQuestionUid;
|
|
53
|
-
exports.pathFromReunionUid = pathFromReunionUid;
|
|
54
|
-
exports.pathFromScrutinUid = pathFromScrutinUid;
|
|
55
|
-
Object.defineProperty(exports, "walkDir", {
|
|
56
|
-
enumerable: true,
|
|
57
|
-
get: function get() {
|
|
58
|
-
return _file_systems.walkDir;
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
require("core-js/modules/es.array.concat.js");
|
|
62
|
-
require("core-js/modules/es.array.iterator.js");
|
|
63
|
-
require("core-js/modules/es.array.join.js");
|
|
64
|
-
require("core-js/modules/es.date.to-iso-string.js");
|
|
65
|
-
require("core-js/modules/es.function.bind.js");
|
|
66
|
-
require("core-js/modules/es.object.assign.js");
|
|
67
|
-
require("core-js/modules/es.object.keys.js");
|
|
68
|
-
require("core-js/modules/es.object.set-prototype-of.js");
|
|
69
|
-
require("core-js/modules/es.object.to-string.js");
|
|
70
|
-
require("core-js/modules/es.regexp.constructor.js");
|
|
71
|
-
require("core-js/modules/es.regexp.exec.js");
|
|
72
|
-
require("core-js/modules/es.regexp.to-string.js");
|
|
73
|
-
require("core-js/modules/es.set.js");
|
|
74
|
-
require("core-js/modules/es.string.ends-with.js");
|
|
75
|
-
require("core-js/modules/es.string.iterator.js");
|
|
76
|
-
require("core-js/modules/es.string.match.js");
|
|
77
|
-
require("core-js/modules/es.string.replace.js");
|
|
78
|
-
require("core-js/modules/web.dom-collections.iterator.js");
|
|
79
|
-
var _assert = _interopRequireDefault(require("assert"));
|
|
80
|
-
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
81
|
-
var _path = _interopRequireDefault(require("path"));
|
|
82
|
-
var _datasets = require("./datasets");
|
|
83
|
-
var _file_systems = require("./file_systems");
|
|
84
|
-
var _acteurs_et_organes = require("./types/acteurs_et_organes");
|
|
85
|
-
var _agendas = require("./types/agendas");
|
|
86
|
-
var _amendements = require("./types/amendements");
|
|
87
|
-
var _dossiers_legislatifs = require("./types/dossiers_legislatifs");
|
|
88
|
-
var _legislatures = require("./types/legislatures");
|
|
89
|
-
var _scrutins = require("./types/scrutins");
|
|
90
|
-
var _questions = require("./types/questions");
|
|
91
|
-
var _debats = require("./types/debats");
|
|
92
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
93
|
-
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 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 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 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; }
|
|
94
|
-
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
95
|
-
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."); }
|
|
96
|
-
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
97
|
-
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
98
|
-
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, 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 o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
99
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
100
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
101
|
-
function _wrapRegExp() { _wrapRegExp = function _wrapRegExp(e, r) { return new BabelRegExp(e, void 0, r); }; var e = RegExp.prototype, r = new WeakMap(); function BabelRegExp(e, t, p) { var o = RegExp(e, t); return r.set(o, p || r.get(e)), _setPrototypeOf(o, BabelRegExp.prototype); } function buildGroups(e, t) { var p = r.get(t); return Object.keys(p).reduce(function (r, t) { var o = p[t]; if ("number" == typeof o) r[t] = e[o];else { for (var i = 0; void 0 === e[o[i]] && i + 1 < o.length;) i++; r[t] = e[o[i]]; } return r; }, Object.create(null)); } return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (r) { var t = e.exec.call(this, r); if (t) { t.groups = buildGroups(t, this); var p = t.indices; p && (p.groups = buildGroups(p, this)); } return t; }, BabelRegExp.prototype[Symbol.replace] = function (t, p) { if ("string" == typeof p) { var o = r.get(this); return e[Symbol.replace].call(this, t, p.replace(/\$<([^>]+)>/g, function (e, r) { var t = o[r]; return "$" + (Array.isArray(t) ? t.join("$") : t); })); } if ("function" == typeof p) { var i = this; return e[Symbol.replace].call(this, t, function () { var e = arguments; return "object" != _typeof(e[e.length - 1]) && (e = [].slice.call(e)).push(buildGroups(e, i)), p.apply(this, e); }); } return e[Symbol.replace].call(this, t, p); }, _wrapRegExp.apply(this, arguments); }
|
|
102
|
-
function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
|
|
103
|
-
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } /// Load data from files
|
|
104
|
-
var documentUidRegex = /*#__PURE__*/_wrapRegExp(/^((ACIN|ALCN|AVCE|AVIS|DECL|ETDI|LETT|MESS|MION|PION|PNRE|PRJL|RAPP|RINF|RION)(AN|CG|SN)(R\d+)[LS](\d+)(B|BTA|BTC|TAP)(\d+)(-.*)?)|((MION)(AN|SN)(R\d+)[LS](\d+)-N(\d+))$/, {
|
|
105
|
-
documentType: 2,
|
|
106
|
-
chambre: 3,
|
|
107
|
-
republique: 4,
|
|
108
|
-
legislature: 5,
|
|
109
|
-
etat: 6,
|
|
110
|
-
numero: 7,
|
|
111
|
-
documentType2: 10,
|
|
112
|
-
chambre2: 11,
|
|
113
|
-
republique2: 12,
|
|
114
|
-
legislature2: 13,
|
|
115
|
-
numero2: 14
|
|
116
|
-
});
|
|
117
|
-
var dossierUidRegex = /^DL(R\d+)(L\d+)N(\d+)$/;
|
|
118
|
-
var reunionUidRegex = /^RU(AN|CG|SN)(R\d+)(L\d+)([AS]\d{4})(IDC|IDFL?|IDS)(\d+)$/;
|
|
119
|
-
var scrutinUidRegex = /^VT(AN|CG)(R\d+)(L\d+)V(\d+)$/;
|
|
120
|
-
var compteRenduUidRegex = /^CRS(AN|CG)(R\d+)(L\d+)(S\d+)(O|E|D)(\d+)(N\d+)$/;
|
|
121
|
-
var questionUidRegex = /^QAN(R\d+)(L\d+)Q(E|G|OSD)(\d+)$/;
|
|
122
|
-
function iterLoadAssembleeItems(dataDir, legislature, datasets, convertToItem, subfolderName) {
|
|
123
|
-
var fileExtension = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : "json";
|
|
124
|
-
var _ref = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {},
|
|
125
|
-
_ref$noValidation = _ref.noValidation,
|
|
126
|
-
noValidation = _ref$noValidation === void 0 ? false : _ref$noValidation,
|
|
127
|
-
_ref$log = _ref.log,
|
|
128
|
-
log = _ref$log === void 0 ? false : _ref$log;
|
|
129
|
-
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
130
|
-
var itemUid, _iterator, _step, dataset, fileExtensionRegex, datasetDir, _iterator2, _step2, itemSplitPath, itemFilename, itemFilePath, itemJson, item;
|
|
131
|
-
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
132
|
-
while (1) switch (_context.prev = _context.next) {
|
|
133
|
-
case 0:
|
|
134
|
-
itemUid = new Set();
|
|
135
|
-
_iterator = _createForOfIteratorHelper(datasets);
|
|
136
|
-
_context.prev = 2;
|
|
137
|
-
_iterator.s();
|
|
138
|
-
case 4:
|
|
139
|
-
if ((_step = _iterator.n()).done) {
|
|
140
|
-
_context.next = 42;
|
|
141
|
-
break;
|
|
142
|
-
}
|
|
143
|
-
dataset = _step.value;
|
|
144
|
-
if (!dataset.ignoreForWeb) {
|
|
145
|
-
_context.next = 8;
|
|
146
|
-
break;
|
|
147
|
-
}
|
|
148
|
-
return _context.abrupt("continue", 40);
|
|
149
|
-
case 8:
|
|
150
|
-
if (!(legislature !== undefined && legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature)) {
|
|
151
|
-
_context.next = 10;
|
|
152
|
-
break;
|
|
153
|
-
}
|
|
154
|
-
return _context.abrupt("continue", 40);
|
|
155
|
-
case 10:
|
|
156
|
-
fileExtensionRegex = new RegExp("\\.".concat(fileExtension, "$"));
|
|
157
|
-
datasetDir = _path["default"].join(dataDir, dataset.filename.replace(fileExtensionRegex, "_nettoye"));
|
|
158
|
-
_iterator2 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir, subfolderName));
|
|
159
|
-
_context.prev = 13;
|
|
160
|
-
_iterator2.s();
|
|
161
|
-
case 15:
|
|
162
|
-
if ((_step2 = _iterator2.n()).done) {
|
|
163
|
-
_context.next = 32;
|
|
164
|
-
break;
|
|
165
|
-
}
|
|
166
|
-
itemSplitPath = _step2.value;
|
|
167
|
-
itemFilename = itemSplitPath[itemSplitPath.length - 1];
|
|
168
|
-
if (itemFilename.endsWith(".json")) {
|
|
169
|
-
_context.next = 20;
|
|
170
|
-
break;
|
|
171
|
-
}
|
|
172
|
-
return _context.abrupt("continue", 30);
|
|
173
|
-
case 20:
|
|
174
|
-
itemFilePath = _path["default"].join.apply(_path["default"], [datasetDir].concat(_toConsumableArray(itemSplitPath)));
|
|
175
|
-
if (log) {
|
|
176
|
-
console.log("Loading file: ".concat(itemFilePath, "\u2026"));
|
|
177
|
-
}
|
|
178
|
-
itemJson = _fsExtra["default"].readFileSync(itemFilePath, {
|
|
179
|
-
encoding: "utf8"
|
|
180
|
-
});
|
|
181
|
-
item = noValidation ? JSON.parse(itemJson) : convertToItem(itemJson);
|
|
182
|
-
if (!itemUid.has(item.uid)) {
|
|
183
|
-
_context.next = 26;
|
|
184
|
-
break;
|
|
185
|
-
}
|
|
186
|
-
return _context.abrupt("continue", 30);
|
|
187
|
-
case 26:
|
|
188
|
-
itemUid.add(item.uid);
|
|
189
|
-
_context.next = 29;
|
|
190
|
-
return {
|
|
191
|
-
item: item,
|
|
192
|
-
datasetLegislature: dataset.legislature
|
|
193
|
-
};
|
|
194
|
-
case 29:
|
|
195
|
-
itemJson = null;
|
|
196
|
-
case 30:
|
|
197
|
-
_context.next = 15;
|
|
198
|
-
break;
|
|
199
|
-
case 32:
|
|
200
|
-
_context.next = 37;
|
|
201
|
-
break;
|
|
202
|
-
case 34:
|
|
203
|
-
_context.prev = 34;
|
|
204
|
-
_context.t0 = _context["catch"](13);
|
|
205
|
-
_iterator2.e(_context.t0);
|
|
206
|
-
case 37:
|
|
207
|
-
_context.prev = 37;
|
|
208
|
-
_iterator2.f();
|
|
209
|
-
return _context.finish(37);
|
|
210
|
-
case 40:
|
|
211
|
-
_context.next = 4;
|
|
212
|
-
break;
|
|
213
|
-
case 42:
|
|
214
|
-
_context.next = 47;
|
|
215
|
-
break;
|
|
216
|
-
case 44:
|
|
217
|
-
_context.prev = 44;
|
|
218
|
-
_context.t1 = _context["catch"](2);
|
|
219
|
-
_iterator.e(_context.t1);
|
|
220
|
-
case 47:
|
|
221
|
-
_context.prev = 47;
|
|
222
|
-
_iterator.f();
|
|
223
|
-
return _context.finish(47);
|
|
224
|
-
case 50:
|
|
225
|
-
case "end":
|
|
226
|
-
return _context.stop();
|
|
227
|
-
}
|
|
228
|
-
}, _callee, null, [[2, 44, 47, 50], [13, 34, 37, 40]]);
|
|
229
|
-
})();
|
|
230
|
-
}
|
|
231
|
-
function iterLoadAssembleeActeurs(dataDir, legislature) {
|
|
232
|
-
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
233
|
-
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
234
|
-
var _iterator3, _step3, _step3$value, acteur, datasetLegislature;
|
|
235
|
-
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
236
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
237
|
-
case 0:
|
|
238
|
-
_iterator3 = _createForOfIteratorHelper(iterLoadAssembleeItems(dataDir, legislature, _datasets.datasets.acteursEtOrganes, _acteurs_et_organes.Convert.toActeur, ["acteurs"], "json", options));
|
|
239
|
-
_context2.prev = 1;
|
|
240
|
-
_iterator3.s();
|
|
241
|
-
case 3:
|
|
242
|
-
if ((_step3 = _iterator3.n()).done) {
|
|
243
|
-
_context2.next = 9;
|
|
244
|
-
break;
|
|
245
|
-
}
|
|
246
|
-
_step3$value = _step3.value, acteur = _step3$value.item, datasetLegislature = _step3$value.datasetLegislature;
|
|
247
|
-
_context2.next = 7;
|
|
248
|
-
return {
|
|
249
|
-
acteur: acteur,
|
|
250
|
-
datasetLegislature: datasetLegislature
|
|
251
|
-
};
|
|
252
|
-
case 7:
|
|
253
|
-
_context2.next = 3;
|
|
254
|
-
break;
|
|
255
|
-
case 9:
|
|
256
|
-
_context2.next = 14;
|
|
257
|
-
break;
|
|
258
|
-
case 11:
|
|
259
|
-
_context2.prev = 11;
|
|
260
|
-
_context2.t0 = _context2["catch"](1);
|
|
261
|
-
_iterator3.e(_context2.t0);
|
|
262
|
-
case 14:
|
|
263
|
-
_context2.prev = 14;
|
|
264
|
-
_iterator3.f();
|
|
265
|
-
return _context2.finish(14);
|
|
266
|
-
case 17:
|
|
267
|
-
case "end":
|
|
268
|
-
return _context2.stop();
|
|
269
|
-
}
|
|
270
|
-
}, _callee2, null, [[1, 11, 14, 17]]);
|
|
271
|
-
})();
|
|
272
|
-
}
|
|
273
|
-
function iterLoadAssembleeOrganes(dataDir, legislature) {
|
|
274
|
-
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
275
|
-
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
276
|
-
var _iterator4, _step4, _step4$value, organe, datasetLegislature;
|
|
277
|
-
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
278
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
279
|
-
case 0:
|
|
280
|
-
_iterator4 = _createForOfIteratorHelper(iterLoadAssembleeItems(dataDir, legislature, _datasets.datasets.acteursEtOrganes, _acteurs_et_organes.Convert.toOrgane, ["organes"], "json", options));
|
|
281
|
-
_context3.prev = 1;
|
|
282
|
-
_iterator4.s();
|
|
283
|
-
case 3:
|
|
284
|
-
if ((_step4 = _iterator4.n()).done) {
|
|
285
|
-
_context3.next = 9;
|
|
286
|
-
break;
|
|
287
|
-
}
|
|
288
|
-
_step4$value = _step4.value, organe = _step4$value.item, datasetLegislature = _step4$value.datasetLegislature;
|
|
289
|
-
_context3.next = 7;
|
|
290
|
-
return {
|
|
291
|
-
organe: organe,
|
|
292
|
-
datasetLegislature: datasetLegislature
|
|
293
|
-
};
|
|
294
|
-
case 7:
|
|
295
|
-
_context3.next = 3;
|
|
296
|
-
break;
|
|
297
|
-
case 9:
|
|
298
|
-
_context3.next = 14;
|
|
299
|
-
break;
|
|
300
|
-
case 11:
|
|
301
|
-
_context3.prev = 11;
|
|
302
|
-
_context3.t0 = _context3["catch"](1);
|
|
303
|
-
_iterator4.e(_context3.t0);
|
|
304
|
-
case 14:
|
|
305
|
-
_context3.prev = 14;
|
|
306
|
-
_iterator4.f();
|
|
307
|
-
return _context3.finish(14);
|
|
308
|
-
case 17:
|
|
309
|
-
case "end":
|
|
310
|
-
return _context3.stop();
|
|
311
|
-
}
|
|
312
|
-
}, _callee3, null, [[1, 11, 14, 17]]);
|
|
313
|
-
})();
|
|
314
|
-
}
|
|
315
|
-
function iterLoadAssembleeAmendements(dataDir, legislature) {
|
|
316
|
-
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
317
|
-
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
318
|
-
var _iterator5, _step5, _step5$value, amendement, datasetLegislature;
|
|
319
|
-
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
320
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
321
|
-
case 0:
|
|
322
|
-
_iterator5 = _createForOfIteratorHelper(iterLoadAssembleeItems(dataDir, legislature, _datasets.datasets.amendements, _amendements.Convert.toAmendement, [], "json", options));
|
|
323
|
-
_context4.prev = 1;
|
|
324
|
-
_iterator5.s();
|
|
325
|
-
case 3:
|
|
326
|
-
if ((_step5 = _iterator5.n()).done) {
|
|
327
|
-
_context4.next = 9;
|
|
328
|
-
break;
|
|
329
|
-
}
|
|
330
|
-
_step5$value = _step5.value, amendement = _step5$value.item, datasetLegislature = _step5$value.datasetLegislature;
|
|
331
|
-
_context4.next = 7;
|
|
332
|
-
return {
|
|
333
|
-
amendement: amendement,
|
|
334
|
-
datasetLegislature: datasetLegislature
|
|
335
|
-
};
|
|
336
|
-
case 7:
|
|
337
|
-
_context4.next = 3;
|
|
338
|
-
break;
|
|
339
|
-
case 9:
|
|
340
|
-
_context4.next = 14;
|
|
341
|
-
break;
|
|
342
|
-
case 11:
|
|
343
|
-
_context4.prev = 11;
|
|
344
|
-
_context4.t0 = _context4["catch"](1);
|
|
345
|
-
_iterator5.e(_context4.t0);
|
|
346
|
-
case 14:
|
|
347
|
-
_context4.prev = 14;
|
|
348
|
-
_iterator5.f();
|
|
349
|
-
return _context4.finish(14);
|
|
350
|
-
case 17:
|
|
351
|
-
case "end":
|
|
352
|
-
return _context4.stop();
|
|
353
|
-
}
|
|
354
|
-
}, _callee4, null, [[1, 11, 14, 17]]);
|
|
355
|
-
})();
|
|
356
|
-
}
|
|
357
|
-
function iterLoadAssembleeDocuments(dataDir, legislature) {
|
|
358
|
-
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
359
|
-
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
|
|
360
|
-
var _iterator6, _step6, _step6$value, document, datasetLegislature;
|
|
361
|
-
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
362
|
-
while (1) switch (_context5.prev = _context5.next) {
|
|
363
|
-
case 0:
|
|
364
|
-
_iterator6 = _createForOfIteratorHelper(iterLoadAssembleeItems(dataDir, legislature, _datasets.datasets.dossiersLegislatifs, _dossiers_legislatifs.Convert.toDocument, ["documents"], "json", options));
|
|
365
|
-
_context5.prev = 1;
|
|
366
|
-
_iterator6.s();
|
|
367
|
-
case 3:
|
|
368
|
-
if ((_step6 = _iterator6.n()).done) {
|
|
369
|
-
_context5.next = 9;
|
|
370
|
-
break;
|
|
371
|
-
}
|
|
372
|
-
_step6$value = _step6.value, document = _step6$value.item, datasetLegislature = _step6$value.datasetLegislature;
|
|
373
|
-
_context5.next = 7;
|
|
374
|
-
return {
|
|
375
|
-
document: document,
|
|
376
|
-
datasetLegislature: datasetLegislature
|
|
377
|
-
};
|
|
378
|
-
case 7:
|
|
379
|
-
_context5.next = 3;
|
|
380
|
-
break;
|
|
381
|
-
case 9:
|
|
382
|
-
_context5.next = 14;
|
|
383
|
-
break;
|
|
384
|
-
case 11:
|
|
385
|
-
_context5.prev = 11;
|
|
386
|
-
_context5.t0 = _context5["catch"](1);
|
|
387
|
-
_iterator6.e(_context5.t0);
|
|
388
|
-
case 14:
|
|
389
|
-
_context5.prev = 14;
|
|
390
|
-
_iterator6.f();
|
|
391
|
-
return _context5.finish(14);
|
|
392
|
-
case 17:
|
|
393
|
-
case "end":
|
|
394
|
-
return _context5.stop();
|
|
395
|
-
}
|
|
396
|
-
}, _callee5, null, [[1, 11, 14, 17]]);
|
|
397
|
-
})();
|
|
398
|
-
}
|
|
399
|
-
function iterLoadAssembleeDossiersParlementaires(dataDir, legislature) {
|
|
400
|
-
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
401
|
-
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {
|
|
402
|
-
var _iterator7, _step7, _step7$value, dossierParlementaire, datasetLegislature;
|
|
403
|
-
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
404
|
-
while (1) switch (_context6.prev = _context6.next) {
|
|
405
|
-
case 0:
|
|
406
|
-
_iterator7 = _createForOfIteratorHelper(iterLoadAssembleeItems(dataDir, legislature, _datasets.datasets.dossiersLegislatifs, _dossiers_legislatifs.Convert.toDossierParlementaire, ["dossiers"], "json", options));
|
|
407
|
-
_context6.prev = 1;
|
|
408
|
-
_iterator7.s();
|
|
409
|
-
case 3:
|
|
410
|
-
if ((_step7 = _iterator7.n()).done) {
|
|
411
|
-
_context6.next = 9;
|
|
412
|
-
break;
|
|
413
|
-
}
|
|
414
|
-
_step7$value = _step7.value, dossierParlementaire = _step7$value.item, datasetLegislature = _step7$value.datasetLegislature;
|
|
415
|
-
_context6.next = 7;
|
|
416
|
-
return {
|
|
417
|
-
dossierParlementaire: dossierParlementaire,
|
|
418
|
-
datasetLegislature: datasetLegislature
|
|
419
|
-
};
|
|
420
|
-
case 7:
|
|
421
|
-
_context6.next = 3;
|
|
422
|
-
break;
|
|
423
|
-
case 9:
|
|
424
|
-
_context6.next = 14;
|
|
425
|
-
break;
|
|
426
|
-
case 11:
|
|
427
|
-
_context6.prev = 11;
|
|
428
|
-
_context6.t0 = _context6["catch"](1);
|
|
429
|
-
_iterator7.e(_context6.t0);
|
|
430
|
-
case 14:
|
|
431
|
-
_context6.prev = 14;
|
|
432
|
-
_iterator7.f();
|
|
433
|
-
return _context6.finish(14);
|
|
434
|
-
case 17:
|
|
435
|
-
case "end":
|
|
436
|
-
return _context6.stop();
|
|
437
|
-
}
|
|
438
|
-
}, _callee6, null, [[1, 11, 14, 17]]);
|
|
439
|
-
})();
|
|
440
|
-
}
|
|
441
|
-
function iterLoadAssembleeReunions(dataDir, legislature) {
|
|
442
|
-
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
443
|
-
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {
|
|
444
|
-
var _iterator8, _step8, _step8$value, reunion, datasetLegislature;
|
|
445
|
-
return _regeneratorRuntime().wrap(function _callee7$(_context7) {
|
|
446
|
-
while (1) switch (_context7.prev = _context7.next) {
|
|
447
|
-
case 0:
|
|
448
|
-
_iterator8 = _createForOfIteratorHelper(iterLoadAssembleeItems(dataDir, legislature, _datasets.datasets.agendas, _agendas.Convert.toReunion, [], "json", options));
|
|
449
|
-
_context7.prev = 1;
|
|
450
|
-
_iterator8.s();
|
|
451
|
-
case 3:
|
|
452
|
-
if ((_step8 = _iterator8.n()).done) {
|
|
453
|
-
_context7.next = 9;
|
|
454
|
-
break;
|
|
455
|
-
}
|
|
456
|
-
_step8$value = _step8.value, reunion = _step8$value.item, datasetLegislature = _step8$value.datasetLegislature;
|
|
457
|
-
_context7.next = 7;
|
|
458
|
-
return {
|
|
459
|
-
reunion: reunion,
|
|
460
|
-
datasetLegislature: datasetLegislature
|
|
461
|
-
};
|
|
462
|
-
case 7:
|
|
463
|
-
_context7.next = 3;
|
|
464
|
-
break;
|
|
465
|
-
case 9:
|
|
466
|
-
_context7.next = 14;
|
|
467
|
-
break;
|
|
468
|
-
case 11:
|
|
469
|
-
_context7.prev = 11;
|
|
470
|
-
_context7.t0 = _context7["catch"](1);
|
|
471
|
-
_iterator8.e(_context7.t0);
|
|
472
|
-
case 14:
|
|
473
|
-
_context7.prev = 14;
|
|
474
|
-
_iterator8.f();
|
|
475
|
-
return _context7.finish(14);
|
|
476
|
-
case 17:
|
|
477
|
-
case "end":
|
|
478
|
-
return _context7.stop();
|
|
479
|
-
}
|
|
480
|
-
}, _callee7, null, [[1, 11, 14, 17]]);
|
|
481
|
-
})();
|
|
482
|
-
}
|
|
483
|
-
function iterLoadAssembleeScrutins(dataDir, legislature) {
|
|
484
|
-
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
485
|
-
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {
|
|
486
|
-
var _iterator9, _step9, _step9$value, scrutin, datasetLegislature;
|
|
487
|
-
return _regeneratorRuntime().wrap(function _callee8$(_context8) {
|
|
488
|
-
while (1) switch (_context8.prev = _context8.next) {
|
|
489
|
-
case 0:
|
|
490
|
-
_iterator9 = _createForOfIteratorHelper(iterLoadAssembleeItems(dataDir, legislature, _datasets.datasets.scrutins, _scrutins.Convert.toScrutin, [], "json", options));
|
|
491
|
-
_context8.prev = 1;
|
|
492
|
-
_iterator9.s();
|
|
493
|
-
case 3:
|
|
494
|
-
if ((_step9 = _iterator9.n()).done) {
|
|
495
|
-
_context8.next = 9;
|
|
496
|
-
break;
|
|
497
|
-
}
|
|
498
|
-
_step9$value = _step9.value, scrutin = _step9$value.item, datasetLegislature = _step9$value.datasetLegislature;
|
|
499
|
-
_context8.next = 7;
|
|
500
|
-
return {
|
|
501
|
-
scrutin: scrutin,
|
|
502
|
-
datasetLegislature: datasetLegislature
|
|
503
|
-
};
|
|
504
|
-
case 7:
|
|
505
|
-
_context8.next = 3;
|
|
506
|
-
break;
|
|
507
|
-
case 9:
|
|
508
|
-
_context8.next = 14;
|
|
509
|
-
break;
|
|
510
|
-
case 11:
|
|
511
|
-
_context8.prev = 11;
|
|
512
|
-
_context8.t0 = _context8["catch"](1);
|
|
513
|
-
_iterator9.e(_context8.t0);
|
|
514
|
-
case 14:
|
|
515
|
-
_context8.prev = 14;
|
|
516
|
-
_iterator9.f();
|
|
517
|
-
return _context8.finish(14);
|
|
518
|
-
case 17:
|
|
519
|
-
case "end":
|
|
520
|
-
return _context8.stop();
|
|
521
|
-
}
|
|
522
|
-
}, _callee8, null, [[1, 11, 14, 17]]);
|
|
523
|
-
})();
|
|
524
|
-
}
|
|
525
|
-
function iterLoadAssembleeQuestions(dataDir, legislature) {
|
|
526
|
-
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
527
|
-
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
|
|
528
|
-
var _iterator10, _step10, _step10$value, question, datasetLegislature;
|
|
529
|
-
return _regeneratorRuntime().wrap(function _callee9$(_context9) {
|
|
530
|
-
while (1) switch (_context9.prev = _context9.next) {
|
|
531
|
-
case 0:
|
|
532
|
-
_iterator10 = _createForOfIteratorHelper(iterLoadAssembleeItems(dataDir, legislature, _datasets.datasets.questions, _questions.Convert.toQuestion, [], "json", options));
|
|
533
|
-
_context9.prev = 1;
|
|
534
|
-
_iterator10.s();
|
|
535
|
-
case 3:
|
|
536
|
-
if ((_step10 = _iterator10.n()).done) {
|
|
537
|
-
_context9.next = 9;
|
|
538
|
-
break;
|
|
539
|
-
}
|
|
540
|
-
_step10$value = _step10.value, question = _step10$value.item, datasetLegislature = _step10$value.datasetLegislature;
|
|
541
|
-
_context9.next = 7;
|
|
542
|
-
return {
|
|
543
|
-
question: question,
|
|
544
|
-
datasetLegislature: datasetLegislature
|
|
545
|
-
};
|
|
546
|
-
case 7:
|
|
547
|
-
_context9.next = 3;
|
|
548
|
-
break;
|
|
549
|
-
case 9:
|
|
550
|
-
_context9.next = 14;
|
|
551
|
-
break;
|
|
552
|
-
case 11:
|
|
553
|
-
_context9.prev = 11;
|
|
554
|
-
_context9.t0 = _context9["catch"](1);
|
|
555
|
-
_iterator10.e(_context9.t0);
|
|
556
|
-
case 14:
|
|
557
|
-
_context9.prev = 14;
|
|
558
|
-
_iterator10.f();
|
|
559
|
-
return _context9.finish(14);
|
|
560
|
-
case 17:
|
|
561
|
-
case "end":
|
|
562
|
-
return _context9.stop();
|
|
563
|
-
}
|
|
564
|
-
}, _callee9, null, [[1, 11, 14, 17]]);
|
|
565
|
-
})();
|
|
566
|
-
}
|
|
567
|
-
function iterLoadAssembleeComptesRendus(dataDir, legislature) {
|
|
568
|
-
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
569
|
-
return /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {
|
|
570
|
-
var _iterator11, _step11, _step11$value, compteRendu, datasetLegislature;
|
|
571
|
-
return _regeneratorRuntime().wrap(function _callee10$(_context10) {
|
|
572
|
-
while (1) switch (_context10.prev = _context10.next) {
|
|
573
|
-
case 0:
|
|
574
|
-
_iterator11 = _createForOfIteratorHelper(iterLoadAssembleeItems(dataDir, legislature, _datasets.datasets.comptesRendusSeances, _debats.Convert.toCompteRendu, [], "xml", options));
|
|
575
|
-
_context10.prev = 1;
|
|
576
|
-
_iterator11.s();
|
|
577
|
-
case 3:
|
|
578
|
-
if ((_step11 = _iterator11.n()).done) {
|
|
579
|
-
_context10.next = 9;
|
|
580
|
-
break;
|
|
581
|
-
}
|
|
582
|
-
_step11$value = _step11.value, compteRendu = _step11$value.item, datasetLegislature = _step11$value.datasetLegislature;
|
|
583
|
-
_context10.next = 7;
|
|
584
|
-
return {
|
|
585
|
-
compteRendu: compteRendu,
|
|
586
|
-
datasetLegislature: datasetLegislature
|
|
587
|
-
};
|
|
588
|
-
case 7:
|
|
589
|
-
_context10.next = 3;
|
|
590
|
-
break;
|
|
591
|
-
case 9:
|
|
592
|
-
_context10.next = 14;
|
|
593
|
-
break;
|
|
594
|
-
case 11:
|
|
595
|
-
_context10.prev = 11;
|
|
596
|
-
_context10.t0 = _context10["catch"](1);
|
|
597
|
-
_iterator11.e(_context10.t0);
|
|
598
|
-
case 14:
|
|
599
|
-
_context10.prev = 14;
|
|
600
|
-
_iterator11.f();
|
|
601
|
-
return _context10.finish(14);
|
|
602
|
-
case 17:
|
|
603
|
-
case "end":
|
|
604
|
-
return _context10.stop();
|
|
605
|
-
}
|
|
606
|
-
}, _callee10, null, [[1, 11, 14, 17]]);
|
|
607
|
-
})();
|
|
608
|
-
}
|
|
609
|
-
|
|
610
|
-
/// Load data from split files.
|
|
611
|
-
/// Deprecated: Use iterLoad... iterators instead.
|
|
612
|
-
function loadAssembleeData(dataDir, enabledDatasets, legislature) {
|
|
613
|
-
var _ref2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
|
|
614
|
-
_ref2$log = _ref2.log,
|
|
615
|
-
log = _ref2$log === void 0 ? false : _ref2$log;
|
|
616
|
-
var acteurByUid = {};
|
|
617
|
-
var organeByUid = {};
|
|
618
|
-
if (enabledDatasets & _datasets.EnabledDatasets.ActeursEtOrganes) {
|
|
619
|
-
var _iterator12 = _createForOfIteratorHelper(_datasets.datasets.acteursEtOrganes),
|
|
620
|
-
_step12;
|
|
621
|
-
try {
|
|
622
|
-
for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
|
|
623
|
-
var dataset = _step12.value;
|
|
624
|
-
if (dataset.ignoreForWeb) {
|
|
625
|
-
continue;
|
|
626
|
-
}
|
|
627
|
-
if (legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature) {
|
|
628
|
-
continue;
|
|
629
|
-
}
|
|
630
|
-
var datasetDir = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
631
|
-
var _iterator13 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir, ["acteurs"])),
|
|
632
|
-
_step13;
|
|
633
|
-
try {
|
|
634
|
-
for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
|
|
635
|
-
var acteurSplitPath = _step13.value;
|
|
636
|
-
var acteurFilename = acteurSplitPath[acteurSplitPath.length - 1];
|
|
637
|
-
if (!acteurFilename.endsWith(".json")) {
|
|
638
|
-
continue;
|
|
639
|
-
}
|
|
640
|
-
var acteurFilePath = _path["default"].join.apply(_path["default"], [datasetDir].concat(_toConsumableArray(acteurSplitPath)));
|
|
641
|
-
if (log) {
|
|
642
|
-
console.log("Loading file: ".concat(acteurFilePath, "\u2026"));
|
|
643
|
-
}
|
|
644
|
-
var acteurJson = _fsExtra["default"].readFileSync(acteurFilePath, {
|
|
645
|
-
encoding: "utf8"
|
|
646
|
-
});
|
|
647
|
-
var acteur = _acteurs_et_organes.Convert.toActeur(acteurJson);
|
|
648
|
-
// Keep the first existing "acteur", because the first wrapper is the most complete.
|
|
649
|
-
if (acteurByUid[acteur.uid] === undefined) {
|
|
650
|
-
acteurByUid[acteur.uid] = acteur;
|
|
651
|
-
}
|
|
652
|
-
}
|
|
653
|
-
} catch (err) {
|
|
654
|
-
_iterator13.e(err);
|
|
655
|
-
} finally {
|
|
656
|
-
_iterator13.f();
|
|
657
|
-
}
|
|
658
|
-
var _iterator14 = _createForOfIteratorHelper((0, _file_systems.walkDir)(datasetDir, ["organes"])),
|
|
659
|
-
_step14;
|
|
660
|
-
try {
|
|
661
|
-
for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
|
|
662
|
-
var organeSplitPath = _step14.value;
|
|
663
|
-
var organeFilename = organeSplitPath[organeSplitPath.length - 1];
|
|
664
|
-
if (!organeFilename.endsWith(".json")) {
|
|
665
|
-
continue;
|
|
666
|
-
}
|
|
667
|
-
var organeFilePath = _path["default"].join.apply(_path["default"], [datasetDir].concat(_toConsumableArray(organeSplitPath)));
|
|
668
|
-
if (log) {
|
|
669
|
-
console.log("Loading file: ".concat(organeFilePath, "\u2026"));
|
|
670
|
-
}
|
|
671
|
-
var organeJson = _fsExtra["default"].readFileSync(organeFilePath, {
|
|
672
|
-
encoding: "utf8"
|
|
673
|
-
});
|
|
674
|
-
var organe = _acteurs_et_organes.Convert.toOrgane(organeJson);
|
|
675
|
-
// Keep the first existing "organe", because the first wrapper is the most complete.
|
|
676
|
-
if (organeByUid[organe.uid] === undefined) {
|
|
677
|
-
organeByUid[organe.uid] = organe;
|
|
678
|
-
}
|
|
679
|
-
}
|
|
680
|
-
} catch (err) {
|
|
681
|
-
_iterator14.e(err);
|
|
682
|
-
} finally {
|
|
683
|
-
_iterator14.f();
|
|
684
|
-
}
|
|
685
|
-
}
|
|
686
|
-
} catch (err) {
|
|
687
|
-
_iterator12.e(err);
|
|
688
|
-
} finally {
|
|
689
|
-
_iterator12.f();
|
|
690
|
-
}
|
|
691
|
-
}
|
|
692
|
-
var reunionByUid = {};
|
|
693
|
-
var reunionsByDay = {};
|
|
694
|
-
var reunionsByDossierUid = {};
|
|
695
|
-
if (enabledDatasets & _datasets.EnabledDatasets.Agendas) {
|
|
696
|
-
var _iterator15 = _createForOfIteratorHelper(_datasets.datasets.agendas),
|
|
697
|
-
_step15;
|
|
698
|
-
try {
|
|
699
|
-
for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
|
|
700
|
-
var _dataset = _step15.value;
|
|
701
|
-
if (_dataset.ignoreForWeb) {
|
|
702
|
-
continue;
|
|
703
|
-
}
|
|
704
|
-
if (legislature !== _legislatures.Legislature.All && _dataset.legislature !== _legislatures.Legislature.All && legislature !== _dataset.legislature) {
|
|
705
|
-
continue;
|
|
706
|
-
}
|
|
707
|
-
var _datasetDir = _path["default"].join(dataDir, _dataset.filename.replace(/\.json$/, "_nettoye"));
|
|
708
|
-
var _iterator16 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir)),
|
|
709
|
-
_step16;
|
|
710
|
-
try {
|
|
711
|
-
for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
|
|
712
|
-
var reunionSplitPath = _step16.value;
|
|
713
|
-
var reunionFilename = reunionSplitPath[reunionSplitPath.length - 1];
|
|
714
|
-
if (!reunionFilename.endsWith(".json")) {
|
|
715
|
-
continue;
|
|
716
|
-
}
|
|
717
|
-
var reunionFilePath = _path["default"].join.apply(_path["default"], [_datasetDir].concat(_toConsumableArray(reunionSplitPath)));
|
|
718
|
-
if (log) {
|
|
719
|
-
console.log("Loading file: ".concat(reunionFilePath, "\u2026"));
|
|
720
|
-
}
|
|
721
|
-
var reunionJson = _fsExtra["default"].readFileSync(reunionFilePath, {
|
|
722
|
-
encoding: "utf8"
|
|
723
|
-
});
|
|
724
|
-
var reunion = _agendas.Convert.toReunion(reunionJson);
|
|
725
|
-
if (reunionByUid[reunion.uid] === undefined) {
|
|
726
|
-
reunionByUid[reunion.uid] = reunion;
|
|
727
|
-
}
|
|
728
|
-
var day = reunion.timestampDebut.toISOString().split("T")[0];
|
|
729
|
-
var reunionsAtDay = reunionsByDay[day];
|
|
730
|
-
if (reunionsAtDay === undefined) {
|
|
731
|
-
reunionsAtDay = reunionsByDay[day] = [];
|
|
732
|
-
}
|
|
733
|
-
reunionsAtDay.push(reunion);
|
|
734
|
-
var odj = reunion.odj;
|
|
735
|
-
if (odj !== undefined) {
|
|
736
|
-
var _iterator17 = _createForOfIteratorHelper(odj.pointsOdj || []),
|
|
737
|
-
_step17;
|
|
738
|
-
try {
|
|
739
|
-
for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
|
|
740
|
-
var pointOdj = _step17.value;
|
|
741
|
-
var _iterator18 = _createForOfIteratorHelper(pointOdj.dossiersLegislatifsRefs || []),
|
|
742
|
-
_step18;
|
|
743
|
-
try {
|
|
744
|
-
for (_iterator18.s(); !(_step18 = _iterator18.n()).done;) {
|
|
745
|
-
var dossierLegislatifRef = _step18.value;
|
|
746
|
-
var reunionsAtDossierUid = reunionsByDossierUid[dossierLegislatifRef];
|
|
747
|
-
if (reunionsAtDossierUid === undefined) {
|
|
748
|
-
reunionsAtDossierUid = reunionsByDossierUid[dossierLegislatifRef] = [];
|
|
749
|
-
}
|
|
750
|
-
reunionsAtDossierUid.push(reunion);
|
|
751
|
-
}
|
|
752
|
-
} catch (err) {
|
|
753
|
-
_iterator18.e(err);
|
|
754
|
-
} finally {
|
|
755
|
-
_iterator18.f();
|
|
756
|
-
}
|
|
757
|
-
}
|
|
758
|
-
} catch (err) {
|
|
759
|
-
_iterator17.e(err);
|
|
760
|
-
} finally {
|
|
761
|
-
_iterator17.f();
|
|
762
|
-
}
|
|
763
|
-
}
|
|
764
|
-
}
|
|
765
|
-
} catch (err) {
|
|
766
|
-
_iterator16.e(err);
|
|
767
|
-
} finally {
|
|
768
|
-
_iterator16.f();
|
|
769
|
-
}
|
|
770
|
-
}
|
|
771
|
-
} catch (err) {
|
|
772
|
-
_iterator15.e(err);
|
|
773
|
-
} finally {
|
|
774
|
-
_iterator15.f();
|
|
775
|
-
}
|
|
776
|
-
}
|
|
777
|
-
var amendementByUid = {};
|
|
778
|
-
if (enabledDatasets & _datasets.EnabledDatasets.Amendements) {
|
|
779
|
-
var _iterator19 = _createForOfIteratorHelper(_datasets.datasets.amendements),
|
|
780
|
-
_step19;
|
|
781
|
-
try {
|
|
782
|
-
for (_iterator19.s(); !(_step19 = _iterator19.n()).done;) {
|
|
783
|
-
var _dataset2 = _step19.value;
|
|
784
|
-
if (_dataset2.ignoreForWeb) {
|
|
785
|
-
continue;
|
|
786
|
-
}
|
|
787
|
-
if (legislature !== _legislatures.Legislature.All && _dataset2.legislature !== _legislatures.Legislature.All && legislature !== _dataset2.legislature) {
|
|
788
|
-
continue;
|
|
789
|
-
}
|
|
790
|
-
var _datasetDir2 = _path["default"].join(dataDir, _dataset2.filename.replace(/\.json$/, "_nettoye"));
|
|
791
|
-
var _iterator20 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir2)),
|
|
792
|
-
_step20;
|
|
793
|
-
try {
|
|
794
|
-
for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {
|
|
795
|
-
var amendementSplitPath = _step20.value;
|
|
796
|
-
var amendementFilename = amendementSplitPath[amendementSplitPath.length - 1];
|
|
797
|
-
if (!amendementFilename.endsWith(".json")) {
|
|
798
|
-
continue;
|
|
799
|
-
}
|
|
800
|
-
var amendementFilePath = _path["default"].join.apply(_path["default"], [_datasetDir2].concat(_toConsumableArray(amendementSplitPath)));
|
|
801
|
-
if (log) {
|
|
802
|
-
console.log("Loading file: ".concat(amendementFilePath, "\u2026"));
|
|
803
|
-
}
|
|
804
|
-
var amendementJson = _fsExtra["default"].readFileSync(amendementFilePath, {
|
|
805
|
-
encoding: "utf8"
|
|
806
|
-
});
|
|
807
|
-
var amendement = _amendements.Convert.toAmendement(amendementJson);
|
|
808
|
-
if (amendementByUid[amendement.uid] === undefined) {
|
|
809
|
-
amendementByUid[amendement.uid] = amendement;
|
|
810
|
-
}
|
|
811
|
-
}
|
|
812
|
-
} catch (err) {
|
|
813
|
-
_iterator20.e(err);
|
|
814
|
-
} finally {
|
|
815
|
-
_iterator20.f();
|
|
816
|
-
}
|
|
817
|
-
}
|
|
818
|
-
} catch (err) {
|
|
819
|
-
_iterator19.e(err);
|
|
820
|
-
} finally {
|
|
821
|
-
_iterator19.f();
|
|
822
|
-
}
|
|
823
|
-
}
|
|
824
|
-
var documentByUid = {};
|
|
825
|
-
var dossierParlementaireBySenatChemin = {};
|
|
826
|
-
var dossierParlementaireByTitreChemin = {};
|
|
827
|
-
var dossierParlementaireByUid = {};
|
|
828
|
-
if (enabledDatasets & _datasets.EnabledDatasets.DossiersLegislatifs) {
|
|
829
|
-
var _iterator21 = _createForOfIteratorHelper(_datasets.datasets.dossiersLegislatifs),
|
|
830
|
-
_step21;
|
|
831
|
-
try {
|
|
832
|
-
for (_iterator21.s(); !(_step21 = _iterator21.n()).done;) {
|
|
833
|
-
var _dataset3 = _step21.value;
|
|
834
|
-
if (_dataset3.ignoreForWeb) {
|
|
835
|
-
continue;
|
|
836
|
-
}
|
|
837
|
-
if (legislature !== _legislatures.Legislature.All && _dataset3.legislature !== _legislatures.Legislature.All && legislature !== _dataset3.legislature) {
|
|
838
|
-
continue;
|
|
839
|
-
}
|
|
840
|
-
var _datasetDir3 = _path["default"].join(dataDir, _dataset3.filename.replace(/\.json$/, "_nettoye"));
|
|
841
|
-
var _iterator22 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir3, ["documents"])),
|
|
842
|
-
_step22;
|
|
843
|
-
try {
|
|
844
|
-
for (_iterator22.s(); !(_step22 = _iterator22.n()).done;) {
|
|
845
|
-
var documentSplitPath = _step22.value;
|
|
846
|
-
var documentFilename = documentSplitPath[documentSplitPath.length - 1];
|
|
847
|
-
if (!documentFilename.endsWith(".json")) {
|
|
848
|
-
continue;
|
|
849
|
-
}
|
|
850
|
-
var documentFilePath = _path["default"].join.apply(_path["default"], [_datasetDir3].concat(_toConsumableArray(documentSplitPath)));
|
|
851
|
-
if (log) {
|
|
852
|
-
console.log("Loading file: ".concat(documentFilePath, "\u2026"));
|
|
853
|
-
}
|
|
854
|
-
var documentJson = _fsExtra["default"].readFileSync(documentFilePath, {
|
|
855
|
-
encoding: "utf8"
|
|
856
|
-
});
|
|
857
|
-
var document = _dossiers_legislatifs.Convert.toDocument(documentJson);
|
|
858
|
-
if (documentByUid[document.uid] === undefined) {
|
|
859
|
-
documentByUid[document.uid] = document;
|
|
860
|
-
}
|
|
861
|
-
}
|
|
862
|
-
} catch (err) {
|
|
863
|
-
_iterator22.e(err);
|
|
864
|
-
} finally {
|
|
865
|
-
_iterator22.f();
|
|
866
|
-
}
|
|
867
|
-
var _iterator23 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir3, ["dossiers"])),
|
|
868
|
-
_step23;
|
|
869
|
-
try {
|
|
870
|
-
for (_iterator23.s(); !(_step23 = _iterator23.n()).done;) {
|
|
871
|
-
var dossierSplitPath = _step23.value;
|
|
872
|
-
var dossierFilename = dossierSplitPath[dossierSplitPath.length - 1];
|
|
873
|
-
if (!dossierFilename.endsWith(".json")) {
|
|
874
|
-
continue;
|
|
875
|
-
}
|
|
876
|
-
var dossierFilePath = _path["default"].join.apply(_path["default"], [_datasetDir3].concat(_toConsumableArray(dossierSplitPath)));
|
|
877
|
-
if (log) {
|
|
878
|
-
console.log("Loading file: ".concat(dossierFilePath, "\u2026"));
|
|
879
|
-
}
|
|
880
|
-
var dossierJson = _fsExtra["default"].readFileSync(dossierFilePath, {
|
|
881
|
-
encoding: "utf8"
|
|
882
|
-
});
|
|
883
|
-
var dossier = _dossiers_legislatifs.Convert.toDossierParlementaire(dossierJson);
|
|
884
|
-
var titreDossier = dossier.titreDossier;
|
|
885
|
-
if (titreDossier.senatChemin && dossierParlementaireBySenatChemin[titreDossier.senatChemin] === undefined) {
|
|
886
|
-
dossierParlementaireBySenatChemin[titreDossier.senatChemin] = dossier;
|
|
887
|
-
}
|
|
888
|
-
if (titreDossier.titreChemin && dossierParlementaireByTitreChemin[titreDossier.titreChemin] === undefined) {
|
|
889
|
-
dossierParlementaireByTitreChemin[titreDossier.titreChemin] = dossier;
|
|
890
|
-
}
|
|
891
|
-
if (dossierParlementaireByUid[dossier.uid] === undefined) {
|
|
892
|
-
dossierParlementaireByUid[dossier.uid] = dossier;
|
|
893
|
-
}
|
|
894
|
-
}
|
|
895
|
-
} catch (err) {
|
|
896
|
-
_iterator23.e(err);
|
|
897
|
-
} finally {
|
|
898
|
-
_iterator23.f();
|
|
899
|
-
}
|
|
900
|
-
}
|
|
901
|
-
} catch (err) {
|
|
902
|
-
_iterator21.e(err);
|
|
903
|
-
} finally {
|
|
904
|
-
_iterator21.f();
|
|
905
|
-
}
|
|
906
|
-
}
|
|
907
|
-
var photoByUid = {};
|
|
908
|
-
if (enabledDatasets & _datasets.EnabledDatasets.Photos) {
|
|
909
|
-
{
|
|
910
|
-
var jsonFilePath = _path["default"].join(dataDir, "photos_deputes_".concat(
|
|
911
|
-
// TODO: Handle Legislature.All.
|
|
912
|
-
legislature === _legislatures.Legislature.All ? _legislatures.Legislature.DixSept : legislature), "deputes.json");
|
|
913
|
-
if (_fsExtra["default"].existsSync(jsonFilePath)) {
|
|
914
|
-
if (log) {
|
|
915
|
-
console.log("Loading file: ".concat(jsonFilePath));
|
|
916
|
-
}
|
|
917
|
-
var _json = _fsExtra["default"].readFileSync(jsonFilePath, {
|
|
918
|
-
encoding: "utf8"
|
|
919
|
-
});
|
|
920
|
-
Object.assign(photoByUid, JSON.parse(_json));
|
|
921
|
-
} else if (log) {
|
|
922
|
-
console.log("Ignoring missing file: ".concat(jsonFilePath));
|
|
923
|
-
}
|
|
924
|
-
}
|
|
925
|
-
{
|
|
926
|
-
var _jsonFilePath = _path["default"].join(dataDir, "photos_senateurs", "senateurs.json");
|
|
927
|
-
if (_fsExtra["default"].existsSync(_jsonFilePath)) {
|
|
928
|
-
if (log) {
|
|
929
|
-
console.log("Loading file: ".concat(_jsonFilePath));
|
|
930
|
-
}
|
|
931
|
-
var _json2 = _fsExtra["default"].readFileSync(_jsonFilePath, {
|
|
932
|
-
encoding: "utf8"
|
|
933
|
-
});
|
|
934
|
-
Object.assign(photoByUid, JSON.parse(_json2));
|
|
935
|
-
} else if (log) {
|
|
936
|
-
console.log("Ignoring missing file: ".concat(_jsonFilePath));
|
|
937
|
-
}
|
|
938
|
-
}
|
|
939
|
-
}
|
|
940
|
-
var scrutinByUid = {};
|
|
941
|
-
if (enabledDatasets & _datasets.EnabledDatasets.Scrutins) {
|
|
942
|
-
var _iterator24 = _createForOfIteratorHelper(_datasets.datasets.scrutins),
|
|
943
|
-
_step24;
|
|
944
|
-
try {
|
|
945
|
-
for (_iterator24.s(); !(_step24 = _iterator24.n()).done;) {
|
|
946
|
-
var _dataset4 = _step24.value;
|
|
947
|
-
if (_dataset4.ignoreForWeb) {
|
|
948
|
-
continue;
|
|
949
|
-
}
|
|
950
|
-
if (legislature !== _legislatures.Legislature.All && _dataset4.legislature !== _legislatures.Legislature.All && legislature !== _dataset4.legislature) {
|
|
951
|
-
continue;
|
|
952
|
-
}
|
|
953
|
-
var _datasetDir4 = _path["default"].join(dataDir, _dataset4.filename.replace(/\.json$/, "_nettoye"));
|
|
954
|
-
var _iterator25 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir4)),
|
|
955
|
-
_step25;
|
|
956
|
-
try {
|
|
957
|
-
for (_iterator25.s(); !(_step25 = _iterator25.n()).done;) {
|
|
958
|
-
var scrutinSplitPath = _step25.value;
|
|
959
|
-
var scrutinFilename = scrutinSplitPath[scrutinSplitPath.length - 1];
|
|
960
|
-
if (!scrutinFilename.endsWith(".json")) {
|
|
961
|
-
continue;
|
|
962
|
-
}
|
|
963
|
-
var scrutinFilePath = _path["default"].join.apply(_path["default"], [_datasetDir4].concat(_toConsumableArray(scrutinSplitPath)));
|
|
964
|
-
if (log) {
|
|
965
|
-
console.log("Loading file: ".concat(scrutinFilePath, "\u2026"));
|
|
966
|
-
}
|
|
967
|
-
var scrutinJson = _fsExtra["default"].readFileSync(scrutinFilePath, {
|
|
968
|
-
encoding: "utf8"
|
|
969
|
-
});
|
|
970
|
-
var scrutin = _scrutins.Convert.toScrutin(scrutinJson);
|
|
971
|
-
if (scrutinByUid[scrutin.uid] === undefined) {
|
|
972
|
-
scrutinByUid[scrutin.uid] = scrutin;
|
|
973
|
-
}
|
|
974
|
-
}
|
|
975
|
-
} catch (err) {
|
|
976
|
-
_iterator25.e(err);
|
|
977
|
-
} finally {
|
|
978
|
-
_iterator25.f();
|
|
979
|
-
}
|
|
980
|
-
}
|
|
981
|
-
} catch (err) {
|
|
982
|
-
_iterator24.e(err);
|
|
983
|
-
} finally {
|
|
984
|
-
_iterator24.f();
|
|
985
|
-
}
|
|
986
|
-
}
|
|
987
|
-
var questionByUid = {};
|
|
988
|
-
if (enabledDatasets & _datasets.EnabledDatasets.Questions) {
|
|
989
|
-
var _iterator26 = _createForOfIteratorHelper(_datasets.datasets.questions),
|
|
990
|
-
_step26;
|
|
991
|
-
try {
|
|
992
|
-
for (_iterator26.s(); !(_step26 = _iterator26.n()).done;) {
|
|
993
|
-
var _dataset5 = _step26.value;
|
|
994
|
-
if (_dataset5.ignoreForWeb) {
|
|
995
|
-
continue;
|
|
996
|
-
}
|
|
997
|
-
if (legislature !== _legislatures.Legislature.All && _dataset5.legislature !== _legislatures.Legislature.All && legislature !== _dataset5.legislature) {
|
|
998
|
-
continue;
|
|
999
|
-
}
|
|
1000
|
-
var _datasetDir5 = _path["default"].join(dataDir, _dataset5.filename.replace(/\.json$/, "_nettoye"));
|
|
1001
|
-
var _iterator27 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir5)),
|
|
1002
|
-
_step27;
|
|
1003
|
-
try {
|
|
1004
|
-
for (_iterator27.s(); !(_step27 = _iterator27.n()).done;) {
|
|
1005
|
-
var questionSplitPath = _step27.value;
|
|
1006
|
-
var questionFilename = questionSplitPath[questionSplitPath.length - 1];
|
|
1007
|
-
if (!questionFilename.endsWith(".json")) {
|
|
1008
|
-
continue;
|
|
1009
|
-
}
|
|
1010
|
-
var questionFilePath = _path["default"].join.apply(_path["default"], [_datasetDir5].concat(_toConsumableArray(questionSplitPath)));
|
|
1011
|
-
if (log) {
|
|
1012
|
-
console.log("Loading file: ".concat(questionFilePath, "\u2026"));
|
|
1013
|
-
}
|
|
1014
|
-
var questionJson = _fsExtra["default"].readFileSync(questionFilePath, {
|
|
1015
|
-
encoding: "utf8"
|
|
1016
|
-
});
|
|
1017
|
-
var question = _questions.Convert.toQuestion(questionJson);
|
|
1018
|
-
if (questionByUid[question.uid] === undefined) {
|
|
1019
|
-
questionByUid[question.uid] = question;
|
|
1020
|
-
}
|
|
1021
|
-
}
|
|
1022
|
-
} catch (err) {
|
|
1023
|
-
_iterator27.e(err);
|
|
1024
|
-
} finally {
|
|
1025
|
-
_iterator27.f();
|
|
1026
|
-
}
|
|
1027
|
-
}
|
|
1028
|
-
} catch (err) {
|
|
1029
|
-
_iterator26.e(err);
|
|
1030
|
-
} finally {
|
|
1031
|
-
_iterator26.f();
|
|
1032
|
-
}
|
|
1033
|
-
}
|
|
1034
|
-
var compteRenduByUid = {};
|
|
1035
|
-
if (enabledDatasets & _datasets.EnabledDatasets.ComptesRendusSeances) {
|
|
1036
|
-
var _iterator28 = _createForOfIteratorHelper(_datasets.datasets.comptesRendusSeances),
|
|
1037
|
-
_step28;
|
|
1038
|
-
try {
|
|
1039
|
-
for (_iterator28.s(); !(_step28 = _iterator28.n()).done;) {
|
|
1040
|
-
var _dataset6 = _step28.value;
|
|
1041
|
-
if (_dataset6.ignoreForWeb) {
|
|
1042
|
-
continue;
|
|
1043
|
-
}
|
|
1044
|
-
if (legislature !== _legislatures.Legislature.All && _dataset6.legislature !== _legislatures.Legislature.All && legislature !== _dataset6.legislature) {
|
|
1045
|
-
continue;
|
|
1046
|
-
}
|
|
1047
|
-
var _datasetDir6 = _path["default"].join(dataDir, _dataset6.filename.replace(/\.json$/, "_nettoye"));
|
|
1048
|
-
var _iterator29 = _createForOfIteratorHelper((0, _file_systems.walkDir)(_datasetDir6)),
|
|
1049
|
-
_step29;
|
|
1050
|
-
try {
|
|
1051
|
-
for (_iterator29.s(); !(_step29 = _iterator29.n()).done;) {
|
|
1052
|
-
var compteRenduPath = _step29.value;
|
|
1053
|
-
var compteRenduFilename = compteRenduPath[compteRenduPath.length - 1];
|
|
1054
|
-
if (!compteRenduFilename.endsWith(".json")) {
|
|
1055
|
-
continue;
|
|
1056
|
-
}
|
|
1057
|
-
var compteRenduFilePath = _path["default"].join.apply(_path["default"], [_datasetDir6].concat(_toConsumableArray(compteRenduPath)));
|
|
1058
|
-
if (log) {
|
|
1059
|
-
console.log("Loading file: ".concat(compteRenduFilePath, "\u2026"));
|
|
1060
|
-
}
|
|
1061
|
-
var compteRenduJson = _fsExtra["default"].readFileSync(compteRenduFilePath, {
|
|
1062
|
-
encoding: "utf8"
|
|
1063
|
-
});
|
|
1064
|
-
var compteRendu = _debats.Convert.toCompteRendu(compteRenduJson);
|
|
1065
|
-
if (compteRenduByUid[compteRendu.uid] === undefined) {
|
|
1066
|
-
compteRenduByUid[compteRendu.uid] = compteRendu;
|
|
1067
|
-
}
|
|
1068
|
-
}
|
|
1069
|
-
} catch (err) {
|
|
1070
|
-
_iterator29.e(err);
|
|
1071
|
-
} finally {
|
|
1072
|
-
_iterator29.f();
|
|
1073
|
-
}
|
|
1074
|
-
}
|
|
1075
|
-
} catch (err) {
|
|
1076
|
-
_iterator28.e(err);
|
|
1077
|
-
} finally {
|
|
1078
|
-
_iterator28.f();
|
|
1079
|
-
}
|
|
1080
|
-
}
|
|
1081
|
-
return {
|
|
1082
|
-
acteurByUid: acteurByUid,
|
|
1083
|
-
amendementByUid: amendementByUid,
|
|
1084
|
-
documentByUid: documentByUid,
|
|
1085
|
-
dossierParlementaireBySenatChemin: dossierParlementaireBySenatChemin,
|
|
1086
|
-
dossierParlementaireByTitreChemin: dossierParlementaireByTitreChemin,
|
|
1087
|
-
dossierParlementaireByUid: dossierParlementaireByUid,
|
|
1088
|
-
organeByUid: organeByUid,
|
|
1089
|
-
photoByUid: photoByUid,
|
|
1090
|
-
reunionByUid: reunionByUid,
|
|
1091
|
-
reunionsByDay: reunionsByDay,
|
|
1092
|
-
reunionsByDossierUid: reunionsByDossierUid,
|
|
1093
|
-
scrutinByUid: scrutinByUid,
|
|
1094
|
-
questionByUid: questionByUid,
|
|
1095
|
-
compteRenduByUid: compteRenduByUid
|
|
1096
|
-
};
|
|
1097
|
-
}
|
|
1098
|
-
|
|
1099
|
-
/// Load data from big monolytic files.
|
|
1100
|
-
/// Deprecated: Assemblée nationale open data no more uses monolytic files.
|
|
1101
|
-
function loadAssembleeDataFromBigFiles(dataDir, enabledDatasets, legislature) {
|
|
1102
|
-
var _ref3 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
|
|
1103
|
-
_ref3$log = _ref3.log,
|
|
1104
|
-
log = _ref3$log === void 0 ? false : _ref3$log;
|
|
1105
|
-
var acteurByUid = {};
|
|
1106
|
-
var organeByUid = {};
|
|
1107
|
-
if (enabledDatasets & _datasets.EnabledDatasets.ActeursEtOrganes) {
|
|
1108
|
-
var _iterator30 = _createForOfIteratorHelper(_datasets.datasets.acteursEtOrganes),
|
|
1109
|
-
_step30;
|
|
1110
|
-
try {
|
|
1111
|
-
for (_iterator30.s(); !(_step30 = _iterator30.n()).done;) {
|
|
1112
|
-
var dataset = _step30.value;
|
|
1113
|
-
if (dataset.ignoreForWeb) {
|
|
1114
|
-
continue;
|
|
1115
|
-
}
|
|
1116
|
-
if (legislature !== _legislatures.Legislature.All && dataset.legislature !== _legislatures.Legislature.All && legislature !== dataset.legislature) {
|
|
1117
|
-
continue;
|
|
1118
|
-
}
|
|
1119
|
-
var jsonFilePath = _path["default"].join(dataDir, dataset.filename.replace(/\.json$/, "_nettoye.json"));
|
|
1120
|
-
if (log) {
|
|
1121
|
-
console.log("Loading file: ".concat(jsonFilePath));
|
|
1122
|
-
}
|
|
1123
|
-
var _json3 = _fsExtra["default"].readFileSync(jsonFilePath, {
|
|
1124
|
-
encoding: "utf8"
|
|
1125
|
-
});
|
|
1126
|
-
var acteursEtOrganes = _acteurs_et_organes.Convert.toActeursEtOrganes(_json3);
|
|
1127
|
-
var _iterator31 = _createForOfIteratorHelper(acteursEtOrganes.acteurs),
|
|
1128
|
-
_step31;
|
|
1129
|
-
try {
|
|
1130
|
-
for (_iterator31.s(); !(_step31 = _iterator31.n()).done;) {
|
|
1131
|
-
var acteur = _step31.value;
|
|
1132
|
-
// Keep the first existing "acteur", because the first wrapper is the most complete.
|
|
1133
|
-
if (acteurByUid[acteur.uid] === undefined) {
|
|
1134
|
-
acteurByUid[acteur.uid] = acteur;
|
|
1135
|
-
}
|
|
1136
|
-
}
|
|
1137
|
-
} catch (err) {
|
|
1138
|
-
_iterator31.e(err);
|
|
1139
|
-
} finally {
|
|
1140
|
-
_iterator31.f();
|
|
1141
|
-
}
|
|
1142
|
-
var _iterator32 = _createForOfIteratorHelper(acteursEtOrganes.organes),
|
|
1143
|
-
_step32;
|
|
1144
|
-
try {
|
|
1145
|
-
for (_iterator32.s(); !(_step32 = _iterator32.n()).done;) {
|
|
1146
|
-
var organe = _step32.value;
|
|
1147
|
-
// Keep the first existing "organe", because the first wrapper is the most complete.
|
|
1148
|
-
if (organeByUid[organe.uid] === undefined) {
|
|
1149
|
-
organeByUid[organe.uid] = organe;
|
|
1150
|
-
}
|
|
1151
|
-
}
|
|
1152
|
-
} catch (err) {
|
|
1153
|
-
_iterator32.e(err);
|
|
1154
|
-
} finally {
|
|
1155
|
-
_iterator32.f();
|
|
1156
|
-
}
|
|
1157
|
-
}
|
|
1158
|
-
} catch (err) {
|
|
1159
|
-
_iterator30.e(err);
|
|
1160
|
-
} finally {
|
|
1161
|
-
_iterator30.f();
|
|
1162
|
-
}
|
|
1163
|
-
}
|
|
1164
|
-
var reunionByUid = {};
|
|
1165
|
-
var reunionsByDay = {};
|
|
1166
|
-
var reunionsByDossierUid = {};
|
|
1167
|
-
if (enabledDatasets & _datasets.EnabledDatasets.Agendas) {
|
|
1168
|
-
var _iterator33 = _createForOfIteratorHelper(_datasets.datasets.agendas),
|
|
1169
|
-
_step33;
|
|
1170
|
-
try {
|
|
1171
|
-
for (_iterator33.s(); !(_step33 = _iterator33.n()).done;) {
|
|
1172
|
-
var _dataset7 = _step33.value;
|
|
1173
|
-
if (_dataset7.ignoreForWeb) {
|
|
1174
|
-
continue;
|
|
1175
|
-
}
|
|
1176
|
-
if (legislature !== _legislatures.Legislature.All && _dataset7.legislature !== _legislatures.Legislature.All && legislature !== _dataset7.legislature) {
|
|
1177
|
-
continue;
|
|
1178
|
-
}
|
|
1179
|
-
var _jsonFilePath2 = _path["default"].join(dataDir, _dataset7.filename.replace(/\.json$/, "_nettoye.json"));
|
|
1180
|
-
if (log) {
|
|
1181
|
-
console.log("Loading file: ".concat(_jsonFilePath2));
|
|
1182
|
-
}
|
|
1183
|
-
var _json4 = _fsExtra["default"].readFileSync(_jsonFilePath2, {
|
|
1184
|
-
encoding: "utf8"
|
|
1185
|
-
});
|
|
1186
|
-
var agendas = _agendas.Convert.toAgendas(_json4);
|
|
1187
|
-
var _iterator34 = _createForOfIteratorHelper(agendas.reunions),
|
|
1188
|
-
_step34;
|
|
1189
|
-
try {
|
|
1190
|
-
for (_iterator34.s(); !(_step34 = _iterator34.n()).done;) {
|
|
1191
|
-
var reunion = _step34.value;
|
|
1192
|
-
if (reunionByUid[reunion.uid] === undefined) {
|
|
1193
|
-
reunionByUid[reunion.uid] = reunion;
|
|
1194
|
-
}
|
|
1195
|
-
var day = reunion.timestampDebut.toISOString().split("T")[0];
|
|
1196
|
-
var reunionsAtDay = reunionsByDay[day];
|
|
1197
|
-
if (reunionsAtDay === undefined) {
|
|
1198
|
-
reunionsAtDay = reunionsByDay[day] = [];
|
|
1199
|
-
}
|
|
1200
|
-
reunionsAtDay.push(reunion);
|
|
1201
|
-
var odj = reunion.odj;
|
|
1202
|
-
if (odj !== undefined) {
|
|
1203
|
-
var _iterator35 = _createForOfIteratorHelper(odj.pointsOdj || []),
|
|
1204
|
-
_step35;
|
|
1205
|
-
try {
|
|
1206
|
-
for (_iterator35.s(); !(_step35 = _iterator35.n()).done;) {
|
|
1207
|
-
var pointOdj = _step35.value;
|
|
1208
|
-
var _iterator36 = _createForOfIteratorHelper(pointOdj.dossiersLegislatifsRefs || []),
|
|
1209
|
-
_step36;
|
|
1210
|
-
try {
|
|
1211
|
-
for (_iterator36.s(); !(_step36 = _iterator36.n()).done;) {
|
|
1212
|
-
var dossierLegislatifRef = _step36.value;
|
|
1213
|
-
var reunionsAtDossierUid = reunionsByDossierUid[dossierLegislatifRef];
|
|
1214
|
-
if (reunionsAtDossierUid === undefined) {
|
|
1215
|
-
reunionsAtDossierUid = reunionsByDossierUid[dossierLegislatifRef] = [];
|
|
1216
|
-
}
|
|
1217
|
-
reunionsAtDossierUid.push(reunion);
|
|
1218
|
-
}
|
|
1219
|
-
} catch (err) {
|
|
1220
|
-
_iterator36.e(err);
|
|
1221
|
-
} finally {
|
|
1222
|
-
_iterator36.f();
|
|
1223
|
-
}
|
|
1224
|
-
}
|
|
1225
|
-
} catch (err) {
|
|
1226
|
-
_iterator35.e(err);
|
|
1227
|
-
} finally {
|
|
1228
|
-
_iterator35.f();
|
|
1229
|
-
}
|
|
1230
|
-
}
|
|
1231
|
-
}
|
|
1232
|
-
} catch (err) {
|
|
1233
|
-
_iterator34.e(err);
|
|
1234
|
-
} finally {
|
|
1235
|
-
_iterator34.f();
|
|
1236
|
-
}
|
|
1237
|
-
}
|
|
1238
|
-
} catch (err) {
|
|
1239
|
-
_iterator33.e(err);
|
|
1240
|
-
} finally {
|
|
1241
|
-
_iterator33.f();
|
|
1242
|
-
}
|
|
1243
|
-
}
|
|
1244
|
-
var amendementByUid = {};
|
|
1245
|
-
if (enabledDatasets & _datasets.EnabledDatasets.Amendements) {
|
|
1246
|
-
var _iterator37 = _createForOfIteratorHelper(_datasets.datasets.amendements),
|
|
1247
|
-
_step37;
|
|
1248
|
-
try {
|
|
1249
|
-
for (_iterator37.s(); !(_step37 = _iterator37.n()).done;) {
|
|
1250
|
-
var _dataset8 = _step37.value;
|
|
1251
|
-
if (_dataset8.ignoreForWeb) {
|
|
1252
|
-
continue;
|
|
1253
|
-
}
|
|
1254
|
-
if (legislature !== _legislatures.Legislature.All && _dataset8.legislature !== _legislatures.Legislature.All && legislature !== _dataset8.legislature) {
|
|
1255
|
-
continue;
|
|
1256
|
-
}
|
|
1257
|
-
var _jsonFilePath3 = _path["default"].join(dataDir, _dataset8.filename.replace(/\.json$/, "_nettoye.json"));
|
|
1258
|
-
if (log) {
|
|
1259
|
-
console.log("Loading file: ".concat(_jsonFilePath3));
|
|
1260
|
-
}
|
|
1261
|
-
var _json5 = _fsExtra["default"].readFileSync(_jsonFilePath3, {
|
|
1262
|
-
encoding: "utf8"
|
|
1263
|
-
});
|
|
1264
|
-
var amendements = _amendements.Convert.toAmendements(_json5);
|
|
1265
|
-
var _iterator38 = _createForOfIteratorHelper(amendements.textesLegislatifs),
|
|
1266
|
-
_step38;
|
|
1267
|
-
try {
|
|
1268
|
-
for (_iterator38.s(); !(_step38 = _iterator38.n()).done;) {
|
|
1269
|
-
var texteLegislatif = _step38.value;
|
|
1270
|
-
var _iterator39 = _createForOfIteratorHelper(texteLegislatif.amendements),
|
|
1271
|
-
_step39;
|
|
1272
|
-
try {
|
|
1273
|
-
for (_iterator39.s(); !(_step39 = _iterator39.n()).done;) {
|
|
1274
|
-
var amendement = _step39.value;
|
|
1275
|
-
if (amendementByUid[amendement.uid] === undefined) {
|
|
1276
|
-
amendementByUid[amendement.uid] = amendement;
|
|
1277
|
-
}
|
|
1278
|
-
}
|
|
1279
|
-
} catch (err) {
|
|
1280
|
-
_iterator39.e(err);
|
|
1281
|
-
} finally {
|
|
1282
|
-
_iterator39.f();
|
|
1283
|
-
}
|
|
1284
|
-
}
|
|
1285
|
-
} catch (err) {
|
|
1286
|
-
_iterator38.e(err);
|
|
1287
|
-
} finally {
|
|
1288
|
-
_iterator38.f();
|
|
1289
|
-
}
|
|
1290
|
-
}
|
|
1291
|
-
} catch (err) {
|
|
1292
|
-
_iterator37.e(err);
|
|
1293
|
-
} finally {
|
|
1294
|
-
_iterator37.f();
|
|
1295
|
-
}
|
|
1296
|
-
}
|
|
1297
|
-
var documentByUid = {};
|
|
1298
|
-
var dossierParlementaireBySenatChemin = {};
|
|
1299
|
-
var dossierParlementaireByTitreChemin = {};
|
|
1300
|
-
var dossierParlementaireByUid = {};
|
|
1301
|
-
if (enabledDatasets & _datasets.EnabledDatasets.DossiersLegislatifs) {
|
|
1302
|
-
var _iterator40 = _createForOfIteratorHelper(_datasets.datasets.dossiersLegislatifs),
|
|
1303
|
-
_step40;
|
|
1304
|
-
try {
|
|
1305
|
-
for (_iterator40.s(); !(_step40 = _iterator40.n()).done;) {
|
|
1306
|
-
var _dataset9 = _step40.value;
|
|
1307
|
-
if (_dataset9.ignoreForWeb) {
|
|
1308
|
-
continue;
|
|
1309
|
-
}
|
|
1310
|
-
if (legislature !== _legislatures.Legislature.All && _dataset9.legislature !== _legislatures.Legislature.All && legislature !== _dataset9.legislature) {
|
|
1311
|
-
continue;
|
|
1312
|
-
}
|
|
1313
|
-
var _jsonFilePath4 = _path["default"].join(dataDir, _dataset9.filename.replace(/\.json$/, "_nettoye.json"));
|
|
1314
|
-
if (log) {
|
|
1315
|
-
console.log("Loading file: ".concat(_jsonFilePath4));
|
|
1316
|
-
}
|
|
1317
|
-
var _json6 = _fsExtra["default"].readFileSync(_jsonFilePath4, {
|
|
1318
|
-
encoding: "utf8"
|
|
1319
|
-
});
|
|
1320
|
-
var dossiersLegislatifs = _dossiers_legislatifs.Convert.toDossiersLegislatifs(_json6);
|
|
1321
|
-
var _iterator41 = _createForOfIteratorHelper(dossiersLegislatifs.textesLegislatifs),
|
|
1322
|
-
_step41;
|
|
1323
|
-
try {
|
|
1324
|
-
for (_iterator41.s(); !(_step41 = _iterator41.n()).done;) {
|
|
1325
|
-
var document = _step41.value;
|
|
1326
|
-
if (documentByUid[document.uid] === undefined) {
|
|
1327
|
-
documentByUid[document.uid] = document;
|
|
1328
|
-
}
|
|
1329
|
-
}
|
|
1330
|
-
} catch (err) {
|
|
1331
|
-
_iterator41.e(err);
|
|
1332
|
-
} finally {
|
|
1333
|
-
_iterator41.f();
|
|
1334
|
-
}
|
|
1335
|
-
var _iterator42 = _createForOfIteratorHelper(dossiersLegislatifs.dossiersParlementaires),
|
|
1336
|
-
_step42;
|
|
1337
|
-
try {
|
|
1338
|
-
for (_iterator42.s(); !(_step42 = _iterator42.n()).done;) {
|
|
1339
|
-
var dossier = _step42.value;
|
|
1340
|
-
var titreDossier = dossier.titreDossier;
|
|
1341
|
-
if (titreDossier.senatChemin && dossierParlementaireBySenatChemin[titreDossier.senatChemin] === undefined) {
|
|
1342
|
-
dossierParlementaireBySenatChemin[titreDossier.senatChemin] = dossier;
|
|
1343
|
-
}
|
|
1344
|
-
if (titreDossier.titreChemin && dossierParlementaireByTitreChemin[titreDossier.titreChemin] === undefined) {
|
|
1345
|
-
dossierParlementaireByTitreChemin[titreDossier.titreChemin] = dossier;
|
|
1346
|
-
}
|
|
1347
|
-
if (dossierParlementaireByUid[dossier.uid] === undefined) {
|
|
1348
|
-
dossierParlementaireByUid[dossier.uid] = dossier;
|
|
1349
|
-
}
|
|
1350
|
-
}
|
|
1351
|
-
} catch (err) {
|
|
1352
|
-
_iterator42.e(err);
|
|
1353
|
-
} finally {
|
|
1354
|
-
_iterator42.f();
|
|
1355
|
-
}
|
|
1356
|
-
}
|
|
1357
|
-
} catch (err) {
|
|
1358
|
-
_iterator40.e(err);
|
|
1359
|
-
} finally {
|
|
1360
|
-
_iterator40.f();
|
|
1361
|
-
}
|
|
1362
|
-
}
|
|
1363
|
-
var photoByUid = {};
|
|
1364
|
-
if (enabledDatasets & _datasets.EnabledDatasets.Photos) {
|
|
1365
|
-
var _photoByUid = {};
|
|
1366
|
-
{
|
|
1367
|
-
var _jsonFilePath5 = _path["default"].join(dataDir, "photos_deputes_".concat(
|
|
1368
|
-
// TODO: Handle Legislature.All.
|
|
1369
|
-
legislature === _legislatures.Legislature.All ? _legislatures.Legislature.DixSept : legislature), "deputes.json");
|
|
1370
|
-
if (_fsExtra["default"].existsSync(_jsonFilePath5)) {
|
|
1371
|
-
if (log) {
|
|
1372
|
-
console.log("Loading file: ".concat(_jsonFilePath5));
|
|
1373
|
-
}
|
|
1374
|
-
var _json7 = _fsExtra["default"].readFileSync(_jsonFilePath5, {
|
|
1375
|
-
encoding: "utf8"
|
|
1376
|
-
});
|
|
1377
|
-
Object.assign(_photoByUid, JSON.parse(_json7));
|
|
1378
|
-
} else if (log) {
|
|
1379
|
-
console.log("Ignoring missing file: ".concat(_jsonFilePath5));
|
|
1380
|
-
}
|
|
1381
|
-
}
|
|
1382
|
-
{
|
|
1383
|
-
var _jsonFilePath6 = _path["default"].join(dataDir, "photos_senateurs", "senateurs.json");
|
|
1384
|
-
if (_fsExtra["default"].existsSync(_jsonFilePath6)) {
|
|
1385
|
-
if (log) {
|
|
1386
|
-
console.log("Loading file: ".concat(_jsonFilePath6));
|
|
1387
|
-
}
|
|
1388
|
-
var _json8 = _fsExtra["default"].readFileSync(_jsonFilePath6, {
|
|
1389
|
-
encoding: "utf8"
|
|
1390
|
-
});
|
|
1391
|
-
Object.assign(_photoByUid, JSON.parse(_json8));
|
|
1392
|
-
} else if (log) {
|
|
1393
|
-
console.log("Ignoring missing file: ".concat(_jsonFilePath6));
|
|
1394
|
-
}
|
|
1395
|
-
}
|
|
1396
|
-
}
|
|
1397
|
-
var scrutinByUid = {};
|
|
1398
|
-
if (enabledDatasets & _datasets.EnabledDatasets.Scrutins) {
|
|
1399
|
-
var _iterator43 = _createForOfIteratorHelper(_datasets.datasets.scrutins),
|
|
1400
|
-
_step43;
|
|
1401
|
-
try {
|
|
1402
|
-
for (_iterator43.s(); !(_step43 = _iterator43.n()).done;) {
|
|
1403
|
-
var _dataset10 = _step43.value;
|
|
1404
|
-
if (_dataset10.ignoreForWeb) {
|
|
1405
|
-
continue;
|
|
1406
|
-
}
|
|
1407
|
-
if (legislature !== _legislatures.Legislature.All && _dataset10.legislature !== _legislatures.Legislature.All && legislature !== _dataset10.legislature) {
|
|
1408
|
-
continue;
|
|
1409
|
-
}
|
|
1410
|
-
var _jsonFilePath7 = _path["default"].join(dataDir, _dataset10.filename.replace(/\.json$/, "_nettoye.json"));
|
|
1411
|
-
if (log) {
|
|
1412
|
-
console.log("Loading file: ".concat(_jsonFilePath7));
|
|
1413
|
-
}
|
|
1414
|
-
var _json9 = _fsExtra["default"].readFileSync(_jsonFilePath7, {
|
|
1415
|
-
encoding: "utf8"
|
|
1416
|
-
});
|
|
1417
|
-
var scrutins = _scrutins.Convert.toScrutins(_json9);
|
|
1418
|
-
var _iterator44 = _createForOfIteratorHelper(scrutins.scrutins),
|
|
1419
|
-
_step44;
|
|
1420
|
-
try {
|
|
1421
|
-
for (_iterator44.s(); !(_step44 = _iterator44.n()).done;) {
|
|
1422
|
-
var scrutin = _step44.value;
|
|
1423
|
-
if (scrutinByUid[scrutin.uid] === undefined) {
|
|
1424
|
-
scrutinByUid[scrutin.uid] = scrutin;
|
|
1425
|
-
}
|
|
1426
|
-
}
|
|
1427
|
-
} catch (err) {
|
|
1428
|
-
_iterator44.e(err);
|
|
1429
|
-
} finally {
|
|
1430
|
-
_iterator44.f();
|
|
1431
|
-
}
|
|
1432
|
-
}
|
|
1433
|
-
} catch (err) {
|
|
1434
|
-
_iterator43.e(err);
|
|
1435
|
-
} finally {
|
|
1436
|
-
_iterator43.f();
|
|
1437
|
-
}
|
|
1438
|
-
}
|
|
1439
|
-
var questionByUid = {};
|
|
1440
|
-
if (enabledDatasets & _datasets.EnabledDatasets.Questions) {
|
|
1441
|
-
var _iterator45 = _createForOfIteratorHelper(_datasets.datasets.questions),
|
|
1442
|
-
_step45;
|
|
1443
|
-
try {
|
|
1444
|
-
for (_iterator45.s(); !(_step45 = _iterator45.n()).done;) {
|
|
1445
|
-
var _dataset11 = _step45.value;
|
|
1446
|
-
if (_dataset11.ignoreForWeb) {
|
|
1447
|
-
continue;
|
|
1448
|
-
}
|
|
1449
|
-
if (legislature !== _legislatures.Legislature.All && _dataset11.legislature !== _legislatures.Legislature.All && legislature !== _dataset11.legislature) {
|
|
1450
|
-
continue;
|
|
1451
|
-
}
|
|
1452
|
-
var _jsonFilePath8 = _path["default"].join(dataDir, _dataset11.filename.replace(/\.json$/, "_nettoye.json"));
|
|
1453
|
-
if (log) {
|
|
1454
|
-
console.log("Loading file: ".concat(_jsonFilePath8));
|
|
1455
|
-
}
|
|
1456
|
-
var _json10 = _fsExtra["default"].readFileSync(_jsonFilePath8, {
|
|
1457
|
-
encoding: "utf8"
|
|
1458
|
-
});
|
|
1459
|
-
var questions = _questions.Convert.toQuestions(_json10);
|
|
1460
|
-
var _iterator46 = _createForOfIteratorHelper(questions.questions),
|
|
1461
|
-
_step46;
|
|
1462
|
-
try {
|
|
1463
|
-
for (_iterator46.s(); !(_step46 = _iterator46.n()).done;) {
|
|
1464
|
-
var question = _step46.value;
|
|
1465
|
-
if (questionByUid[question.uid] === undefined) {
|
|
1466
|
-
questionByUid[question.uid] = question;
|
|
1467
|
-
}
|
|
1468
|
-
}
|
|
1469
|
-
} catch (err) {
|
|
1470
|
-
_iterator46.e(err);
|
|
1471
|
-
} finally {
|
|
1472
|
-
_iterator46.f();
|
|
1473
|
-
}
|
|
1474
|
-
}
|
|
1475
|
-
} catch (err) {
|
|
1476
|
-
_iterator45.e(err);
|
|
1477
|
-
} finally {
|
|
1478
|
-
_iterator45.f();
|
|
1479
|
-
}
|
|
1480
|
-
}
|
|
1481
|
-
var compteRenduByUid = {};
|
|
1482
|
-
if (enabledDatasets & _datasets.EnabledDatasets.ComptesRendusSeances) {
|
|
1483
|
-
var _iterator47 = _createForOfIteratorHelper(_datasets.datasets.comptesRendusSeances),
|
|
1484
|
-
_step47;
|
|
1485
|
-
try {
|
|
1486
|
-
for (_iterator47.s(); !(_step47 = _iterator47.n()).done;) {
|
|
1487
|
-
var _dataset12 = _step47.value;
|
|
1488
|
-
if (_dataset12.ignoreForWeb) {
|
|
1489
|
-
continue;
|
|
1490
|
-
}
|
|
1491
|
-
if (legislature !== _legislatures.Legislature.All && _dataset12.legislature !== _legislatures.Legislature.All && legislature !== _dataset12.legislature) {
|
|
1492
|
-
continue;
|
|
1493
|
-
}
|
|
1494
|
-
var _jsonFilePath9 = _path["default"].join(dataDir, _dataset12.filename.replace(/\.json$/, "_nettoye.json"));
|
|
1495
|
-
if (log) {
|
|
1496
|
-
console.log("Loading file: ".concat(_jsonFilePath9));
|
|
1497
|
-
}
|
|
1498
|
-
var _json11 = _fsExtra["default"].readFileSync(_jsonFilePath9, {
|
|
1499
|
-
encoding: "utf8"
|
|
1500
|
-
});
|
|
1501
|
-
var comptesRendus = _debats.Convert.toComptesRendus(_json11);
|
|
1502
|
-
var _iterator48 = _createForOfIteratorHelper(comptesRendus.comptesRendus),
|
|
1503
|
-
_step48;
|
|
1504
|
-
try {
|
|
1505
|
-
for (_iterator48.s(); !(_step48 = _iterator48.n()).done;) {
|
|
1506
|
-
var compteRendu = _step48.value;
|
|
1507
|
-
if (compteRenduByUid[compteRendu.uid] === undefined) {
|
|
1508
|
-
compteRenduByUid[compteRendu.uid] = compteRendu;
|
|
1509
|
-
}
|
|
1510
|
-
}
|
|
1511
|
-
} catch (err) {
|
|
1512
|
-
_iterator48.e(err);
|
|
1513
|
-
} finally {
|
|
1514
|
-
_iterator48.f();
|
|
1515
|
-
}
|
|
1516
|
-
}
|
|
1517
|
-
} catch (err) {
|
|
1518
|
-
_iterator47.e(err);
|
|
1519
|
-
} finally {
|
|
1520
|
-
_iterator47.f();
|
|
1521
|
-
}
|
|
1522
|
-
}
|
|
1523
|
-
return {
|
|
1524
|
-
acteurByUid: acteurByUid,
|
|
1525
|
-
amendementByUid: amendementByUid,
|
|
1526
|
-
documentByUid: documentByUid,
|
|
1527
|
-
dossierParlementaireBySenatChemin: dossierParlementaireBySenatChemin,
|
|
1528
|
-
dossierParlementaireByTitreChemin: dossierParlementaireByTitreChemin,
|
|
1529
|
-
dossierParlementaireByUid: dossierParlementaireByUid,
|
|
1530
|
-
organeByUid: organeByUid,
|
|
1531
|
-
photoByUid: photoByUid,
|
|
1532
|
-
reunionByUid: reunionByUid,
|
|
1533
|
-
reunionsByDay: reunionsByDay,
|
|
1534
|
-
reunionsByDossierUid: reunionsByDossierUid,
|
|
1535
|
-
scrutinByUid: scrutinByUid,
|
|
1536
|
-
questionByUid: questionByUid,
|
|
1537
|
-
compteRenduByUid: compteRenduByUid
|
|
1538
|
-
};
|
|
1539
|
-
}
|
|
1540
|
-
|
|
1541
|
-
/**
|
|
1542
|
-
* Read infos of a document or a division of a document from file system
|
|
1543
|
-
*
|
|
1544
|
-
* @param dataDir
|
|
1545
|
-
* @param uid UID of a document or a division
|
|
1546
|
-
* @param formats requested formats of the document in decreasing preference order
|
|
1547
|
-
*/
|
|
1548
|
-
function loadAssembleeDocumentFile(dataDir, uid, formats) {
|
|
1549
|
-
var documentsDir = _path["default"].join(dataDir, "Documents");
|
|
1550
|
-
var documentDir = pathFromDocumentUid(documentsDir, uid);
|
|
1551
|
-
var indexPath = _path["default"].join(documentDir, "index.json");
|
|
1552
|
-
if (!_fsExtra["default"].pathExistsSync(indexPath)) {
|
|
1553
|
-
return undefined;
|
|
1554
|
-
}
|
|
1555
|
-
var index = _fsExtra["default"].readJsonSync(indexPath);
|
|
1556
|
-
var _iterator49 = _createForOfIteratorHelper(formats),
|
|
1557
|
-
_step49;
|
|
1558
|
-
try {
|
|
1559
|
-
for (_iterator49.s(); !(_step49 = _iterator49.n()).done;) {
|
|
1560
|
-
var _index$format;
|
|
1561
|
-
var format = _step49.value;
|
|
1562
|
-
var _iterator50 = _createForOfIteratorHelper((_index$format = index[format]) !== null && _index$format !== void 0 ? _index$format : []),
|
|
1563
|
-
_step50;
|
|
1564
|
-
try {
|
|
1565
|
-
for (_iterator50.s(); !(_step50 = _iterator50.n()).done;) {
|
|
1566
|
-
var _step50$value = _step50.value,
|
|
1567
|
-
filename = _step50$value.filename,
|
|
1568
|
-
url = _step50$value.url;
|
|
1569
|
-
if (filename === undefined) {
|
|
1570
|
-
continue;
|
|
1571
|
-
}
|
|
1572
|
-
return {
|
|
1573
|
-
format: format,
|
|
1574
|
-
path: _path["default"].join(documentDir, filename),
|
|
1575
|
-
url: url
|
|
1576
|
-
};
|
|
1577
|
-
}
|
|
1578
|
-
} catch (err) {
|
|
1579
|
-
_iterator50.e(err);
|
|
1580
|
-
} finally {
|
|
1581
|
-
_iterator50.f();
|
|
1582
|
-
}
|
|
1583
|
-
}
|
|
1584
|
-
} catch (err) {
|
|
1585
|
-
_iterator49.e(err);
|
|
1586
|
-
} finally {
|
|
1587
|
-
_iterator49.f();
|
|
1588
|
-
}
|
|
1589
|
-
return undefined;
|
|
1590
|
-
}
|
|
1591
|
-
function loadAssembleePhotosDeputes(dataDir, legislature) {
|
|
1592
|
-
var _ref4 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
|
1593
|
-
_ref4$log = _ref4.log,
|
|
1594
|
-
log = _ref4$log === void 0 ? false : _ref4$log;
|
|
1595
|
-
var jsonFilePath = _path["default"].join(dataDir, "photos_deputes_".concat(
|
|
1596
|
-
// TODO: Handle Legislature.All.
|
|
1597
|
-
legislature === _legislatures.Legislature.All ? _legislatures.Legislature.DixSept : legislature), "deputes.json");
|
|
1598
|
-
if (log) {
|
|
1599
|
-
console.log("Loading file: ".concat(jsonFilePath));
|
|
1600
|
-
}
|
|
1601
|
-
var json = _fsExtra["default"].readFileSync(jsonFilePath, {
|
|
1602
|
-
encoding: "utf8"
|
|
1603
|
-
});
|
|
1604
|
-
return JSON.parse(json);
|
|
1605
|
-
}
|
|
1606
|
-
function loadAssembleePhotosSenateurs(dataDir) {
|
|
1607
|
-
var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
1608
|
-
_ref5$log = _ref5.log,
|
|
1609
|
-
log = _ref5$log === void 0 ? false : _ref5$log;
|
|
1610
|
-
var jsonFilePath = _path["default"].join(dataDir, "photos_senateurs", "senateurs.json");
|
|
1611
|
-
if (log) {
|
|
1612
|
-
console.log("Loading file: ".concat(jsonFilePath));
|
|
1613
|
-
}
|
|
1614
|
-
var json = _fsExtra["default"].readFileSync(jsonFilePath, {
|
|
1615
|
-
encoding: "utf8"
|
|
1616
|
-
});
|
|
1617
|
-
return JSON.parse(json);
|
|
1618
|
-
}
|
|
1619
|
-
function pathFromDocumentUid(documentsDir, uid) {
|
|
1620
|
-
var _groups$documentType, _groups$chambre, _groups$republique, _groups$legislature, _groups$numero;
|
|
1621
|
-
var match = uid.match(documentUidRegex);
|
|
1622
|
-
_assert["default"].notStrictEqual(match, null, "Unexpected structure for document UID: ".concat(uid));
|
|
1623
|
-
var groups = match.groups;
|
|
1624
|
-
var documentType = _path["default"].join(documentsDir, (_groups$documentType = groups.documentType) !== null && _groups$documentType !== void 0 ? _groups$documentType : groups.documentType2);
|
|
1625
|
-
var chambreDir = _path["default"].join(documentType, (_groups$chambre = groups.chambre) !== null && _groups$chambre !== void 0 ? _groups$chambre : groups.chambre2);
|
|
1626
|
-
var republiqueDir = _path["default"].join(chambreDir, (_groups$republique = groups.republique) !== null && _groups$republique !== void 0 ? _groups$republique : groups.republique2);
|
|
1627
|
-
var legislatureDir = _path["default"].join(republiqueDir, (_groups$legislature = groups.legislature) !== null && _groups$legislature !== void 0 ? _groups$legislature : groups.legislature2);
|
|
1628
|
-
var etat = groups.etat;
|
|
1629
|
-
if (etat === undefined) {
|
|
1630
|
-
_fsExtra["default"].ensureDirSync(legislatureDir);
|
|
1631
|
-
return _path["default"].join(legislatureDir, uid);
|
|
1632
|
-
}
|
|
1633
|
-
var etatDir = _path["default"].join(legislatureDir, etat);
|
|
1634
|
-
var numero = "000000" + ((_groups$numero = groups.numero) !== null && _groups$numero !== void 0 ? _groups$numero : groups.numero2);
|
|
1635
|
-
numero = numero.substring(numero.length - 6);
|
|
1636
|
-
var numeroMilliersDir = _path["default"].join(etatDir, numero.substring(0, 3));
|
|
1637
|
-
_fsExtra["default"].ensureDirSync(numeroMilliersDir);
|
|
1638
|
-
return _path["default"].join(numeroMilliersDir, uid);
|
|
1639
|
-
}
|
|
1640
|
-
function pathFromDossierParlementaireUid(dossiersDir, uid) {
|
|
1641
|
-
return pathFromUid(dossiersDir, uid, dossierUidRegex);
|
|
1642
|
-
}
|
|
1643
|
-
function pathFromReunionUid(reunionsDir, uid) {
|
|
1644
|
-
var match = reunionUidRegex.exec(uid);
|
|
1645
|
-
_assert["default"].notStrictEqual(match, null, "Unexpected structure for reunion UID: ".concat(uid));
|
|
1646
|
-
var chambreDir = _path["default"].join(reunionsDir, match[1]);
|
|
1647
|
-
var republiqueDir = _path["default"].join(chambreDir, match[2]);
|
|
1648
|
-
var legislatureDir = _path["default"].join(republiqueDir, match[3]);
|
|
1649
|
-
var sessionDir = _path["default"].join(legislatureDir, match[4]);
|
|
1650
|
-
var idDir = _path["default"].join(sessionDir, match[5]);
|
|
1651
|
-
var numero = "000000000" + match[6];
|
|
1652
|
-
numero = numero.substring(numero.length - 9);
|
|
1653
|
-
var numeroMillionsDir = _path["default"].join(idDir, numero.substring(0, 3));
|
|
1654
|
-
var numeroMilliersDir = _path["default"].join(numeroMillionsDir, numero.substring(3, 3));
|
|
1655
|
-
_fsExtra["default"].ensureDirSync(numeroMilliersDir);
|
|
1656
|
-
return _path["default"].join(numeroMilliersDir, uid);
|
|
1657
|
-
}
|
|
1658
|
-
function pathFromScrutinUid(scrutinsDir, uid) {
|
|
1659
|
-
var match = scrutinUidRegex.exec(uid);
|
|
1660
|
-
_assert["default"].notStrictEqual(match, null, "Unexpected structure for scrutin UID: ".concat(uid));
|
|
1661
|
-
var chambreDir = _path["default"].join(scrutinsDir, match[1]);
|
|
1662
|
-
var republiqueDir = _path["default"].join(chambreDir, match[2]);
|
|
1663
|
-
var legislatureDir = _path["default"].join(republiqueDir, match[3]);
|
|
1664
|
-
var numero = "000000" + match[4];
|
|
1665
|
-
numero = numero.substring(numero.length - 6);
|
|
1666
|
-
var numeroMilliersDir = _path["default"].join(legislatureDir, numero.substring(0, 3));
|
|
1667
|
-
_fsExtra["default"].ensureDirSync(numeroMilliersDir);
|
|
1668
|
-
return _path["default"].join(numeroMilliersDir, uid);
|
|
1669
|
-
}
|
|
1670
|
-
function pathFromQuestionUid(dataDir, uid) {
|
|
1671
|
-
return pathFromUid(dataDir, uid, questionUidRegex);
|
|
1672
|
-
}
|
|
1673
|
-
function pathFromCompteRenduUid(dataDir, uid) {
|
|
1674
|
-
return pathFromUid(dataDir, uid, compteRenduUidRegex);
|
|
1675
|
-
}
|
|
1676
|
-
|
|
1677
|
-
// Get standard path for object with uid : republique > legislature > group objects by thousands
|
|
1678
|
-
function pathFromUid(dataDir, uid, dataRegexp) {
|
|
1679
|
-
var match = dataRegexp.exec(uid);
|
|
1680
|
-
_assert["default"].notStrictEqual(match, null, "Unexpected structure for object with UID: ".concat(uid));
|
|
1681
|
-
var republiqueDir = _path["default"].join(dataDir, match[1]);
|
|
1682
|
-
var legislatureDir = _path["default"].join(republiqueDir, match[2]);
|
|
1683
|
-
var numero = "000000" + match[3];
|
|
1684
|
-
numero = numero.substring(numero.length - 6);
|
|
1685
|
-
var numeroMilliersDir = _path["default"].join(legislatureDir, numero.substring(0, 3));
|
|
1686
|
-
_fsExtra["default"].ensureDirSync(numeroMilliersDir);
|
|
1687
|
-
return _path["default"].join(numeroMilliersDir, uid);
|
|
1688
|
-
}
|
|
1689
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2RhdGFzZXRzIiwiX2ZpbGVfc3lzdGVtcyIsIl9hY3RldXJzX2V0X29yZ2FuZXMiLCJfYWdlbmRhcyIsIl9hbWVuZGVtZW50cyIsIl9kb3NzaWVyc19sZWdpc2xhdGlmcyIsIl9sZWdpc2xhdHVyZXMiLCJfc2NydXRpbnMiLCJfcXVlc3Rpb25zIiwiX2RlYmF0cyIsImUiLCJfX2VzTW9kdWxlIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIkFycmF5IiwiZnJvbSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX24iLCJGIiwidG9TdHJpbmciLCJ0ZXN0IiwiX3dyYXBSZWdFeHAiLCJCYWJlbFJlZ0V4cCIsIlJlZ0V4cCIsIldlYWtNYXAiLCJzZXQiLCJnZXQiLCJfc2V0UHJvdG90eXBlT2YiLCJidWlsZEdyb3VwcyIsInJlZHVjZSIsIl9pbmhlcml0cyIsImV4ZWMiLCJncm91cHMiLCJpbmRpY2VzIiwicmVwbGFjZSIsImpvaW4iLCJhcmd1bWVudHMiLCJhcHBseSIsImJpbmQiLCJkb2N1bWVudFVpZFJlZ2V4IiwiZG9jdW1lbnRUeXBlIiwiY2hhbWJyZSIsInJlcHVibGlxdWUiLCJsZWdpc2xhdHVyZSIsImV0YXQiLCJudW1lcm8iLCJkb2N1bWVudFR5cGUyIiwiY2hhbWJyZTIiLCJyZXB1YmxpcXVlMiIsImxlZ2lzbGF0dXJlMiIsIm51bWVybzIiLCJkb3NzaWVyVWlkUmVnZXgiLCJyZXVuaW9uVWlkUmVnZXgiLCJzY3J1dGluVWlkUmVnZXgiLCJjb21wdGVSZW5kdVVpZFJlZ2V4IiwicXVlc3Rpb25VaWRSZWdleCIsIml0ZXJMb2FkQXNzZW1ibGVlSXRlbXMiLCJkYXRhRGlyIiwiZGF0YXNldHMiLCJjb252ZXJ0VG9JdGVtIiwic3ViZm9sZGVyTmFtZSIsImZpbGVFeHRlbnNpb24iLCJ1bmRlZmluZWQiLCJfcmVmIiwiX3JlZiRub1ZhbGlkYXRpb24iLCJub1ZhbGlkYXRpb24iLCJfcmVmJGxvZyIsImxvZyIsIl9jYWxsZWUiLCJpdGVtVWlkIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJkYXRhc2V0IiwiZmlsZUV4dGVuc2lvblJlZ2V4IiwiZGF0YXNldERpciIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJpdGVtU3BsaXRQYXRoIiwiaXRlbUZpbGVuYW1lIiwiaXRlbUZpbGVQYXRoIiwiaXRlbUpzb24iLCJpdGVtIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsIlNldCIsImlnbm9yZUZvcldlYiIsIkxlZ2lzbGF0dXJlIiwiQWxsIiwiY29uY2F0IiwicGF0aCIsImZpbGVuYW1lIiwid2Fsa0RpciIsImVuZHNXaXRoIiwiY29uc29sZSIsImZzIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJKU09OIiwicGFyc2UiLCJoYXMiLCJ1aWQiLCJhZGQiLCJkYXRhc2V0TGVnaXNsYXR1cmUiLCJ0MCIsInQxIiwiaXRlckxvYWRBc3NlbWJsZWVBY3RldXJzIiwib3B0aW9ucyIsIl9jYWxsZWUyIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIl9zdGVwMyR2YWx1ZSIsImFjdGV1ciIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsImFjdGV1cnNFdE9yZ2FuZXMiLCJBY3RldXJzRXRPcmdhbmVzQ29udmVydCIsInRvQWN0ZXVyIiwiaXRlckxvYWRBc3NlbWJsZWVPcmdhbmVzIiwiX2NhbGxlZTMiLCJfaXRlcmF0b3I0IiwiX3N0ZXA0IiwiX3N0ZXA0JHZhbHVlIiwib3JnYW5lIiwiX2NhbGxlZTMkIiwiX2NvbnRleHQzIiwidG9PcmdhbmUiLCJpdGVyTG9hZEFzc2VtYmxlZUFtZW5kZW1lbnRzIiwiX2NhbGxlZTQiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwiX3N0ZXA1JHZhbHVlIiwiYW1lbmRlbWVudCIsIl9jYWxsZWU0JCIsIl9jb250ZXh0NCIsImFtZW5kZW1lbnRzIiwiQW1lbmRlbWVudHNDb252ZXJ0IiwidG9BbWVuZGVtZW50IiwiaXRlckxvYWRBc3NlbWJsZWVEb2N1bWVudHMiLCJfY2FsbGVlNSIsIl9pdGVyYXRvcjYiLCJfc3RlcDYiLCJfc3RlcDYkdmFsdWUiLCJkb2N1bWVudCIsIl9jYWxsZWU1JCIsIl9jb250ZXh0NSIsImRvc3NpZXJzTGVnaXNsYXRpZnMiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCIsInRvRG9jdW1lbnQiLCJpdGVyTG9hZEFzc2VtYmxlZURvc3NpZXJzUGFybGVtZW50YWlyZXMiLCJfY2FsbGVlNiIsIl9pdGVyYXRvcjciLCJfc3RlcDciLCJfc3RlcDckdmFsdWUiLCJkb3NzaWVyUGFybGVtZW50YWlyZSIsIl9jYWxsZWU2JCIsIl9jb250ZXh0NiIsInRvRG9zc2llclBhcmxlbWVudGFpcmUiLCJpdGVyTG9hZEFzc2VtYmxlZVJldW5pb25zIiwiX2NhbGxlZTciLCJfaXRlcmF0b3I4IiwiX3N0ZXA4IiwiX3N0ZXA4JHZhbHVlIiwicmV1bmlvbiIsIl9jYWxsZWU3JCIsIl9jb250ZXh0NyIsImFnZW5kYXMiLCJBZ2VuZGFzQ29udmVydCIsInRvUmV1bmlvbiIsIml0ZXJMb2FkQXNzZW1ibGVlU2NydXRpbnMiLCJfY2FsbGVlOCIsIl9pdGVyYXRvcjkiLCJfc3RlcDkiLCJfc3RlcDkkdmFsdWUiLCJzY3J1dGluIiwiX2NhbGxlZTgkIiwiX2NvbnRleHQ4Iiwic2NydXRpbnMiLCJTY3J1dGluc0NvbnZlcnQiLCJ0b1NjcnV0aW4iLCJpdGVyTG9hZEFzc2VtYmxlZVF1ZXN0aW9ucyIsIl9jYWxsZWU5IiwiX2l0ZXJhdG9yMTAiLCJfc3RlcDEwIiwiX3N0ZXAxMCR2YWx1ZSIsInF1ZXN0aW9uIiwiX2NhbGxlZTkkIiwiX2NvbnRleHQ5IiwicXVlc3Rpb25zIiwiUXVlc3Rpb25zQ29udmVydCIsInRvUXVlc3Rpb24iLCJpdGVyTG9hZEFzc2VtYmxlZUNvbXB0ZXNSZW5kdXMiLCJfY2FsbGVlMTAiLCJfaXRlcmF0b3IxMSIsIl9zdGVwMTEiLCJfc3RlcDExJHZhbHVlIiwiY29tcHRlUmVuZHUiLCJfY2FsbGVlMTAkIiwiX2NvbnRleHQxMCIsImNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiQ29tcHRlc1JlbmR1c0NvbnZlcnQiLCJ0b0NvbXB0ZVJlbmR1IiwibG9hZEFzc2VtYmxlZURhdGEiLCJlbmFibGVkRGF0YXNldHMiLCJfcmVmMiIsIl9yZWYyJGxvZyIsImFjdGV1ckJ5VWlkIiwib3JnYW5lQnlVaWQiLCJFbmFibGVkRGF0YXNldHMiLCJBY3RldXJzRXRPcmdhbmVzIiwiX2l0ZXJhdG9yMTIiLCJfc3RlcDEyIiwiX2l0ZXJhdG9yMTMiLCJfc3RlcDEzIiwiYWN0ZXVyU3BsaXRQYXRoIiwiYWN0ZXVyRmlsZW5hbWUiLCJhY3RldXJGaWxlUGF0aCIsImFjdGV1ckpzb24iLCJlcnIiLCJfaXRlcmF0b3IxNCIsIl9zdGVwMTQiLCJvcmdhbmVTcGxpdFBhdGgiLCJvcmdhbmVGaWxlbmFtZSIsIm9yZ2FuZUZpbGVQYXRoIiwib3JnYW5lSnNvbiIsInJldW5pb25CeVVpZCIsInJldW5pb25zQnlEYXkiLCJyZXVuaW9uc0J5RG9zc2llclVpZCIsIkFnZW5kYXMiLCJfaXRlcmF0b3IxNSIsIl9zdGVwMTUiLCJfaXRlcmF0b3IxNiIsIl9zdGVwMTYiLCJyZXVuaW9uU3BsaXRQYXRoIiwicmV1bmlvbkZpbGVuYW1lIiwicmV1bmlvbkZpbGVQYXRoIiwicmV1bmlvbkpzb24iLCJkYXkiLCJ0aW1lc3RhbXBEZWJ1dCIsInRvSVNPU3RyaW5nIiwic3BsaXQiLCJyZXVuaW9uc0F0RGF5Iiwib2RqIiwiX2l0ZXJhdG9yMTciLCJwb2ludHNPZGoiLCJfc3RlcDE3IiwicG9pbnRPZGoiLCJfaXRlcmF0b3IxOCIsImRvc3NpZXJzTGVnaXNsYXRpZnNSZWZzIiwiX3N0ZXAxOCIsImRvc3NpZXJMZWdpc2xhdGlmUmVmIiwicmV1bmlvbnNBdERvc3NpZXJVaWQiLCJhbWVuZGVtZW50QnlVaWQiLCJBbWVuZGVtZW50cyIsIl9pdGVyYXRvcjE5IiwiX3N0ZXAxOSIsIl9pdGVyYXRvcjIwIiwiX3N0ZXAyMCIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJhbWVuZGVtZW50RmlsZW5hbWUiLCJhbWVuZGVtZW50RmlsZVBhdGgiLCJhbWVuZGVtZW50SnNvbiIsImRvY3VtZW50QnlVaWQiLCJkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW4iLCJkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4iLCJkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkIiwiRG9zc2llcnNMZWdpc2xhdGlmcyIsIl9pdGVyYXRvcjIxIiwiX3N0ZXAyMSIsIl9pdGVyYXRvcjIyIiwiX3N0ZXAyMiIsImRvY3VtZW50U3BsaXRQYXRoIiwiZG9jdW1lbnRGaWxlbmFtZSIsImRvY3VtZW50RmlsZVBhdGgiLCJkb2N1bWVudEpzb24iLCJfaXRlcmF0b3IyMyIsIl9zdGVwMjMiLCJkb3NzaWVyU3BsaXRQYXRoIiwiZG9zc2llckZpbGVuYW1lIiwiZG9zc2llckZpbGVQYXRoIiwiZG9zc2llckpzb24iLCJkb3NzaWVyIiwidGl0cmVEb3NzaWVyIiwic2VuYXRDaGVtaW4iLCJ0aXRyZUNoZW1pbiIsInBob3RvQnlVaWQiLCJQaG90b3MiLCJqc29uRmlsZVBhdGgiLCJEaXhTZXB0IiwiZXhpc3RzU3luYyIsImpzb24iLCJhc3NpZ24iLCJzY3J1dGluQnlVaWQiLCJTY3J1dGlucyIsIl9pdGVyYXRvcjI0IiwiX3N0ZXAyNCIsIl9pdGVyYXRvcjI1IiwiX3N0ZXAyNSIsInNjcnV0aW5TcGxpdFBhdGgiLCJzY3J1dGluRmlsZW5hbWUiLCJzY3J1dGluRmlsZVBhdGgiLCJzY3J1dGluSnNvbiIsInF1ZXN0aW9uQnlVaWQiLCJRdWVzdGlvbnMiLCJfaXRlcmF0b3IyNiIsIl9zdGVwMjYiLCJfaXRlcmF0b3IyNyIsIl9zdGVwMjciLCJxdWVzdGlvblNwbGl0UGF0aCIsInF1ZXN0aW9uRmlsZW5hbWUiLCJxdWVzdGlvbkZpbGVQYXRoIiwicXVlc3Rpb25Kc29uIiwiY29tcHRlUmVuZHVCeVVpZCIsIkNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiX2l0ZXJhdG9yMjgiLCJfc3RlcDI4IiwiX2l0ZXJhdG9yMjkiLCJfc3RlcDI5IiwiY29tcHRlUmVuZHVQYXRoIiwiY29tcHRlUmVuZHVGaWxlbmFtZSIsImNvbXB0ZVJlbmR1RmlsZVBhdGgiLCJjb21wdGVSZW5kdUpzb24iLCJsb2FkQXNzZW1ibGVlRGF0YUZyb21CaWdGaWxlcyIsIl9yZWYzIiwiX3JlZjMkbG9nIiwiX2l0ZXJhdG9yMzAiLCJfc3RlcDMwIiwidG9BY3RldXJzRXRPcmdhbmVzIiwiX2l0ZXJhdG9yMzEiLCJhY3RldXJzIiwiX3N0ZXAzMSIsIl9pdGVyYXRvcjMyIiwib3JnYW5lcyIsIl9zdGVwMzIiLCJfaXRlcmF0b3IzMyIsIl9zdGVwMzMiLCJ0b0FnZW5kYXMiLCJfaXRlcmF0b3IzNCIsInJldW5pb25zIiwiX3N0ZXAzNCIsIl9pdGVyYXRvcjM1IiwiX3N0ZXAzNSIsIl9pdGVyYXRvcjM2IiwiX3N0ZXAzNiIsIl9pdGVyYXRvcjM3IiwiX3N0ZXAzNyIsInRvQW1lbmRlbWVudHMiLCJfaXRlcmF0b3IzOCIsInRleHRlc0xlZ2lzbGF0aWZzIiwiX3N0ZXAzOCIsInRleHRlTGVnaXNsYXRpZiIsIl9pdGVyYXRvcjM5IiwiX3N0ZXAzOSIsIl9pdGVyYXRvcjQwIiwiX3N0ZXA0MCIsInRvRG9zc2llcnNMZWdpc2xhdGlmcyIsIl9pdGVyYXRvcjQxIiwiX3N0ZXA0MSIsIl9pdGVyYXRvcjQyIiwiZG9zc2llcnNQYXJsZW1lbnRhaXJlcyIsIl9zdGVwNDIiLCJfaXRlcmF0b3I0MyIsIl9zdGVwNDMiLCJ0b1NjcnV0aW5zIiwiX2l0ZXJhdG9yNDQiLCJfc3RlcDQ0IiwiX2l0ZXJhdG9yNDUiLCJfc3RlcDQ1IiwidG9RdWVzdGlvbnMiLCJfaXRlcmF0b3I0NiIsIl9zdGVwNDYiLCJfaXRlcmF0b3I0NyIsIl9zdGVwNDciLCJjb21wdGVzUmVuZHVzIiwidG9Db21wdGVzUmVuZHVzIiwiX2l0ZXJhdG9yNDgiLCJfc3RlcDQ4IiwibG9hZEFzc2VtYmxlZURvY3VtZW50RmlsZSIsImZvcm1hdHMiLCJkb2N1bWVudHNEaXIiLCJkb2N1bWVudERpciIsInBhdGhGcm9tRG9jdW1lbnRVaWQiLCJpbmRleFBhdGgiLCJwYXRoRXhpc3RzU3luYyIsImluZGV4IiwicmVhZEpzb25TeW5jIiwiX2l0ZXJhdG9yNDkiLCJfc3RlcDQ5IiwiX2luZGV4JGZvcm1hdCIsImZvcm1hdCIsIl9pdGVyYXRvcjUwIiwiX3N0ZXA1MCIsIl9zdGVwNTAkdmFsdWUiLCJ1cmwiLCJsb2FkQXNzZW1ibGVlUGhvdG9zRGVwdXRlcyIsIl9yZWY0IiwiX3JlZjQkbG9nIiwibG9hZEFzc2VtYmxlZVBob3Rvc1NlbmF0ZXVycyIsIl9yZWY1IiwiX3JlZjUkbG9nIiwiX2dyb3VwcyRkb2N1bWVudFR5cGUiLCJfZ3JvdXBzJGNoYW1icmUiLCJfZ3JvdXBzJHJlcHVibGlxdWUiLCJfZ3JvdXBzJGxlZ2lzbGF0dXJlIiwiX2dyb3VwcyRudW1lcm8iLCJtYXRjaCIsImFzc2VydCIsIm5vdFN0cmljdEVxdWFsIiwiY2hhbWJyZURpciIsInJlcHVibGlxdWVEaXIiLCJsZWdpc2xhdHVyZURpciIsImVuc3VyZURpclN5bmMiLCJldGF0RGlyIiwic3Vic3RyaW5nIiwibnVtZXJvTWlsbGllcnNEaXIiLCJwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkIiwiZG9zc2llcnNEaXIiLCJwYXRoRnJvbVVpZCIsInBhdGhGcm9tUmV1bmlvblVpZCIsInJldW5pb25zRGlyIiwic2Vzc2lvbkRpciIsImlkRGlyIiwibnVtZXJvTWlsbGlvbnNEaXIiLCJwYXRoRnJvbVNjcnV0aW5VaWQiLCJzY3J1dGluc0RpciIsInBhdGhGcm9tUXVlc3Rpb25VaWQiLCJwYXRoRnJvbUNvbXB0ZVJlbmR1VWlkIiwiZGF0YVJlZ2V4cCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9sb2FkZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vLyBMb2FkIGRhdGEgZnJvbSBmaWxlc1xuXG5pbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmV4cG9ydCB7IEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuL2RhdGFzZXRzXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBFbmFibGVkRGF0YXNldHMsIERhdGFzZXQgfSBmcm9tIFwiLi9kYXRhc2V0c1wiXG5pbXBvcnQgdHlwZSB7IERvY3VtZW50RmlsZXNJbmRleCB9IGZyb20gXCIuL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmV4cG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQge1xuICBBY3RldXIsXG4gIENvbnZlcnQgYXMgQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQsXG4gIE9yZ2FuZSxcbiAgUGhvdG8sXG59IGZyb20gXCIuL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFnZW5kYXNDb252ZXJ0LCBSZXVuaW9uIH0gZnJvbSBcIi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50LCBDb252ZXJ0IGFzIEFtZW5kZW1lbnRzQ29udmVydCB9IGZyb20gXCIuL3R5cGVzL2FtZW5kZW1lbnRzXCJcbmltcG9ydCB7XG4gIENvbnZlcnQgYXMgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQsXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgTGVnaXNsYXR1cmUgfSBmcm9tIFwiLi90eXBlcy9sZWdpc2xhdHVyZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBTY3J1dGluc0NvbnZlcnQsIFNjcnV0aW4gfSBmcm9tIFwiLi90eXBlcy9zY3J1dGluc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFF1ZXN0aW9uc0NvbnZlcnQsIFF1ZXN0aW9uIH0gZnJvbSBcIi4vdHlwZXMvcXVlc3Rpb25zXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQ29tcHRlc1JlbmR1c0NvbnZlcnQsIENvbXB0ZVJlbmR1IH0gZnJvbSBcIi4vdHlwZXMvZGViYXRzXCJcbmltcG9ydCB7IERvY3VtZW50VXJsRm9ybWF0IH0gZnJvbSBcIi4vdXJsc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YSB7XG4gIHJlYWRvbmx5IGFjdGV1ckJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9XG4gIHJlYWRvbmx5IGFtZW5kZW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBbWVuZGVtZW50IH1cbiAgcmVhZG9ubHkgZG9jdW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9XG4gIHJlYWRvbmx5IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH1cbiAgcmVhZG9ubHkgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfVxuICByZWFkb25seSBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlIH1cbiAgcmVhZG9ubHkgb3JnYW5lQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH1cbiAgcmVhZG9ubHkgcGhvdG9CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBQaG90byB9XG4gIHJlYWRvbmx5IHJldW5pb25CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBSZXVuaW9uIH1cbiAgcmVhZG9ubHkgcmV1bmlvbnNCeURheTogeyBbZGF5OiBzdHJpbmddOiBSZXVuaW9uW10gfVxuICByZWFkb25seSByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH1cbiAgcmVhZG9ubHkgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfVxuICByZWFkb25seSBxdWVzdGlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFF1ZXN0aW9uIH1cbiAgcmVhZG9ubHkgY29tcHRlUmVuZHVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBDb21wdGVSZW5kdSB9XG59XG5cbmNvbnN0IGRvY3VtZW50VWlkUmVnZXggPVxuICAvXigoPzxkb2N1bWVudFR5cGU+QUNJTnxBTENOfEFWQ0V8QVZJU3xERUNMfEVUREl8TEVUVHxNRVNTfE1JT058UElPTnxQTlJFfFBSSkx8UkFQUHxSSU5GfFJJT04pKD88Y2hhbWJyZT5BTnxDR3xTTikoPzxyZXB1YmxpcXVlPlJcXGQrKVtMU10oPzxsZWdpc2xhdHVyZT5cXGQrKSg/PGV0YXQ+QnxCVEF8QlRDfFRBUCkoPzxudW1lcm8+XFxkKykoLS4qKT8pfCgoPzxkb2N1bWVudFR5cGUyPk1JT04pKD88Y2hhbWJyZTI+QU58U04pKD88cmVwdWJsaXF1ZTI+UlxcZCspW0xTXSg/PGxlZ2lzbGF0dXJlMj5cXGQrKS1OKD88bnVtZXJvMj5cXGQrKSkkL1xuY29uc3QgZG9zc2llclVpZFJlZ2V4ID0gL15ETChSXFxkKykoTFxcZCspTihcXGQrKSQvXG5jb25zdCByZXVuaW9uVWlkUmVnZXggPVxuICAvXlJVKEFOfENHfFNOKShSXFxkKykoTFxcZCspKFtBU11cXGR7NH0pKElEQ3xJREZMP3xJRFMpKFxcZCspJC9cbmNvbnN0IHNjcnV0aW5VaWRSZWdleCA9IC9eVlQoQU58Q0cpKFJcXGQrKShMXFxkKylWKFxcZCspJC9cbmNvbnN0IGNvbXB0ZVJlbmR1VWlkUmVnZXg6IFJlZ0V4cCA9XG4gIC9eQ1JTKEFOfENHKShSXFxkKykoTFxcZCspKFNcXGQrKShPfEV8RCkoXFxkKykoTlxcZCspJC9cbmNvbnN0IHF1ZXN0aW9uVWlkUmVnZXg6IFJlZ0V4cCA9IC9eUUFOKFJcXGQrKShMXFxkKylRKEV8R3xPU0QpKFxcZCspJC9cblxudHlwZSBJdGVtQ29udmVydGVyPFQ+ID0gKGpzb246IHN0cmluZykgPT4gVFxuXG5mdW5jdGlvbiogaXRlckxvYWRBc3NlbWJsZWVJdGVtczxUIGV4dGVuZHMgeyB1aWQ6IHN0cmluZyB9PihcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIGRhdGFzZXRzOiBEYXRhc2V0W10sXG4gIGNvbnZlcnRUb0l0ZW06IEl0ZW1Db252ZXJ0ZXI8VD4sXG4gIHN1YmZvbGRlck5hbWU6IHN0cmluZ1tdLFxuICBmaWxlRXh0ZW5zaW9uOiBzdHJpbmcgPSBcImpzb25cIixcbiAgeyBub1ZhbGlkYXRpb24gPSBmYWxzZSwgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogR2VuZXJhdG9yPHsgaXRlbTogVDsgZGF0YXNldExlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSB9LCB2b2lkLCB1bmtub3duPiB7XG4gIGNvbnN0IGl0ZW1VaWQgPSBuZXcgU2V0PHN0cmluZz4oKVxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMpIHtcbiAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGxldCBmaWxlRXh0ZW5zaW9uUmVnZXggPSBuZXcgUmVnRXhwKGBcXFxcLiR7ZmlsZUV4dGVuc2lvbn0kYClcbiAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgZGF0YURpcixcbiAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZShmaWxlRXh0ZW5zaW9uUmVnZXgsIFwiX25ldHRveWVcIiksXG4gICAgKVxuXG4gICAgZm9yIChjb25zdCBpdGVtU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgc3ViZm9sZGVyTmFtZSkpIHtcbiAgICAgIGNvbnN0IGl0ZW1GaWxlbmFtZSA9IGl0ZW1TcGxpdFBhdGhbaXRlbVNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgaWYgKCFpdGVtRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgaXRlbUZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLml0ZW1TcGxpdFBhdGgpXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7aXRlbUZpbGVQYXRofeKApmApXG4gICAgICB9XG5cbiAgICAgIGxldCBpdGVtSnNvbjogYW55ID0gZnMucmVhZEZpbGVTeW5jKGl0ZW1GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGxldCBpdGVtOiBUID0gbm9WYWxpZGF0aW9uXG4gICAgICAgID8gSlNPTi5wYXJzZShpdGVtSnNvbilcbiAgICAgICAgOiBjb252ZXJ0VG9JdGVtKGl0ZW1Kc29uKVxuXG4gICAgICBpZiAoaXRlbVVpZC5oYXMoaXRlbS51aWQpKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpdGVtVWlkLmFkZChpdGVtLnVpZClcbiAgICAgIHlpZWxkIHsgaXRlbTogaXRlbSwgZGF0YXNldExlZ2lzbGF0dXJlOiBkYXRhc2V0LmxlZ2lzbGF0dXJlIH1cblxuICAgICAgaXRlbUpzb24gPSBudWxsXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiogaXRlckxvYWRBc3NlbWJsZWVBY3RldXJzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgb3B0aW9ucyA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IGFjdGV1cjogQWN0ZXVyOyBkYXRhc2V0TGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlIH0sXG4gIHZvaWQsXG4gIHVua25vd25cbj4ge1xuICBmb3IgKGNvbnN0IHtcbiAgICBpdGVtOiBhY3RldXIsXG4gICAgZGF0YXNldExlZ2lzbGF0dXJlLFxuICB9IG9mIGl0ZXJMb2FkQXNzZW1ibGVlSXRlbXM8QWN0ZXVyPihcbiAgICBkYXRhRGlyLFxuICAgIGxlZ2lzbGF0dXJlLFxuICAgIGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMsXG4gICAgQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIsXG4gICAgW1wiYWN0ZXVyc1wiXSxcbiAgICBcImpzb25cIixcbiAgICBvcHRpb25zLFxuICApKSB7XG4gICAgeWllbGQgeyBhY3RldXIsIGRhdGFzZXRMZWdpc2xhdHVyZSB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyTG9hZEFzc2VtYmxlZU9yZ2FuZXMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICBvcHRpb25zID0ge30sXG4pOiBHZW5lcmF0b3I8XG4gIHsgb3JnYW5lOiBPcmdhbmU7IGRhdGFzZXRMZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUgfSxcbiAgdm9pZCxcbiAgdW5rbm93blxuPiB7XG4gIGZvciAoY29uc3Qge1xuICAgIGl0ZW06IG9yZ2FuZSxcbiAgICBkYXRhc2V0TGVnaXNsYXR1cmUsXG4gIH0gb2YgaXRlckxvYWRBc3NlbWJsZWVJdGVtczxPcmdhbmU+KFxuICAgIGRhdGFEaXIsXG4gICAgbGVnaXNsYXR1cmUsXG4gICAgZGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcyxcbiAgICBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b09yZ2FuZSxcbiAgICBbXCJvcmdhbmVzXCJdLFxuICAgIFwianNvblwiLFxuICAgIG9wdGlvbnMsXG4gICkpIHtcbiAgICB5aWVsZCB7IG9yZ2FuZSwgZGF0YXNldExlZ2lzbGF0dXJlIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGl0ZXJMb2FkQXNzZW1ibGVlQW1lbmRlbWVudHMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICBvcHRpb25zID0ge30sXG4pOiBHZW5lcmF0b3I8XG4gIHsgYW1lbmRlbWVudDogQW1lbmRlbWVudDsgZGF0YXNldExlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSB9LFxuICB2b2lkLFxuICB1bmtub3duXG4+IHtcbiAgZm9yIChjb25zdCB7XG4gICAgaXRlbTogYW1lbmRlbWVudCxcbiAgICBkYXRhc2V0TGVnaXNsYXR1cmUsXG4gIH0gb2YgaXRlckxvYWRBc3NlbWJsZWVJdGVtczxBbWVuZGVtZW50PihcbiAgICBkYXRhRGlyLFxuICAgIGxlZ2lzbGF0dXJlLFxuICAgIGRhdGFzZXRzLmFtZW5kZW1lbnRzLFxuICAgIEFtZW5kZW1lbnRzQ29udmVydC50b0FtZW5kZW1lbnQsXG4gICAgW10sXG4gICAgXCJqc29uXCIsXG4gICAgb3B0aW9ucyxcbiAgKSkge1xuICAgIHlpZWxkIHsgYW1lbmRlbWVudCwgZGF0YXNldExlZ2lzbGF0dXJlIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGl0ZXJMb2FkQXNzZW1ibGVlRG9jdW1lbnRzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgb3B0aW9ucyA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IGRvY3VtZW50OiBEb2N1bWVudDsgZGF0YXNldExlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSB9LFxuICB2b2lkLFxuICB1bmtub3duXG4+IHtcbiAgZm9yIChjb25zdCB7XG4gICAgaXRlbTogZG9jdW1lbnQsXG4gICAgZGF0YXNldExlZ2lzbGF0dXJlLFxuICB9IG9mIGl0ZXJMb2FkQXNzZW1ibGVlSXRlbXM8RG9jdW1lbnQ+KFxuICAgIGRhdGFEaXIsXG4gICAgbGVnaXNsYXR1cmUsXG4gICAgZGF0YXNldHMuZG9zc2llcnNMZWdpc2xhdGlmcyxcbiAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0RvY3VtZW50LFxuICAgIFtcImRvY3VtZW50c1wiXSxcbiAgICBcImpzb25cIixcbiAgICBvcHRpb25zLFxuICApKSB7XG4gICAgeWllbGQgeyBkb2N1bWVudCwgZGF0YXNldExlZ2lzbGF0dXJlIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGl0ZXJMb2FkQXNzZW1ibGVlRG9zc2llcnNQYXJsZW1lbnRhaXJlcyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIG9wdGlvbnMgPSB7fSxcbik6IEdlbmVyYXRvcjxcbiAge1xuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICAgIGRhdGFzZXRMZWdpc2xhdHVyZTogTGVnaXNsYXR1cmVcbiAgfSxcbiAgdm9pZCxcbiAgdW5rbm93blxuPiB7XG4gIGZvciAoY29uc3Qge1xuICAgIGl0ZW06IGRvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICAgIGRhdGFzZXRMZWdpc2xhdHVyZSxcbiAgfSBvZiBpdGVyTG9hZEFzc2VtYmxlZUl0ZW1zPERvc3NpZXJQYXJsZW1lbnRhaXJlPihcbiAgICBkYXRhRGlyLFxuICAgIGxlZ2lzbGF0dXJlLFxuICAgIGRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMsXG4gICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgICBbXCJkb3NzaWVyc1wiXSxcbiAgICBcImpzb25cIixcbiAgICBvcHRpb25zLFxuICApKSB7XG4gICAgeWllbGQgeyBkb3NzaWVyUGFybGVtZW50YWlyZSwgZGF0YXNldExlZ2lzbGF0dXJlIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24qIGl0ZXJMb2FkQXNzZW1ibGVlUmV1bmlvbnMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICBvcHRpb25zID0ge30sXG4pOiBHZW5lcmF0b3I8XG4gIHsgcmV1bmlvbjogUmV1bmlvbjsgZGF0YXNldExlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSB9LFxuICB2b2lkLFxuICB1bmtub3duXG4+IHtcbiAgZm9yIChjb25zdCB7XG4gICAgaXRlbTogcmV1bmlvbixcbiAgICBkYXRhc2V0TGVnaXNsYXR1cmUsXG4gIH0gb2YgaXRlckxvYWRBc3NlbWJsZWVJdGVtczxSZXVuaW9uPihcbiAgICBkYXRhRGlyLFxuICAgIGxlZ2lzbGF0dXJlLFxuICAgIGRhdGFzZXRzLmFnZW5kYXMsXG4gICAgQWdlbmRhc0NvbnZlcnQudG9SZXVuaW9uLFxuICAgIFtdLFxuICAgIFwianNvblwiLFxuICAgIG9wdGlvbnMsXG4gICkpIHtcbiAgICB5aWVsZCB7IHJldW5pb24sIGRhdGFzZXRMZWdpc2xhdHVyZSB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyTG9hZEFzc2VtYmxlZVNjcnV0aW5zKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgb3B0aW9ucyA9IHt9LFxuKTogR2VuZXJhdG9yPFxuICB7IHNjcnV0aW46IFNjcnV0aW47IGRhdGFzZXRMZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUgfSxcbiAgdm9pZCxcbiAgdW5rbm93blxuPiB7XG4gIGZvciAoY29uc3Qge1xuICAgIGl0ZW06IHNjcnV0aW4sXG4gICAgZGF0YXNldExlZ2lzbGF0dXJlLFxuICB9IG9mIGl0ZXJMb2FkQXNzZW1ibGVlSXRlbXM8U2NydXRpbj4oXG4gICAgZGF0YURpcixcbiAgICBsZWdpc2xhdHVyZSxcbiAgICBkYXRhc2V0cy5zY3J1dGlucyxcbiAgICBTY3J1dGluc0NvbnZlcnQudG9TY3J1dGluLFxuICAgIFtdLFxuICAgIFwianNvblwiLFxuICAgIG9wdGlvbnMsXG4gICkpIHtcbiAgICB5aWVsZCB7IHNjcnV0aW4sIGRhdGFzZXRMZWdpc2xhdHVyZSB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyTG9hZEFzc2VtYmxlZVF1ZXN0aW9ucyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIG9wdGlvbnMgPSB7fSxcbik6IEdlbmVyYXRvcjxcbiAgeyBxdWVzdGlvbjogUXVlc3Rpb247IGRhdGFzZXRMZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUgfSxcbiAgdm9pZCxcbiAgdW5rbm93blxuPiB7XG4gIGZvciAoY29uc3Qge1xuICAgIGl0ZW06IHF1ZXN0aW9uLFxuICAgIGRhdGFzZXRMZWdpc2xhdHVyZSxcbiAgfSBvZiBpdGVyTG9hZEFzc2VtYmxlZUl0ZW1zPFF1ZXN0aW9uPihcbiAgICBkYXRhRGlyLFxuICAgIGxlZ2lzbGF0dXJlLFxuICAgIGRhdGFzZXRzLnF1ZXN0aW9ucyxcbiAgICBRdWVzdGlvbnNDb252ZXJ0LnRvUXVlc3Rpb24sXG4gICAgW10sXG4gICAgXCJqc29uXCIsXG4gICAgb3B0aW9ucyxcbiAgKSkge1xuICAgIHlpZWxkIHsgcXVlc3Rpb24sIGRhdGFzZXRMZWdpc2xhdHVyZSB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uKiBpdGVyTG9hZEFzc2VtYmxlZUNvbXB0ZXNSZW5kdXMoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICBvcHRpb25zID0ge30sXG4pOiBHZW5lcmF0b3I8XG4gIHsgY29tcHRlUmVuZHU6IENvbXB0ZVJlbmR1OyBkYXRhc2V0TGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlIH0sXG4gIHZvaWQsXG4gIHVua25vd25cbj4ge1xuICBmb3IgKGNvbnN0IHtcbiAgICBpdGVtOiBjb21wdGVSZW5kdSxcbiAgICBkYXRhc2V0TGVnaXNsYXR1cmUsXG4gIH0gb2YgaXRlckxvYWRBc3NlbWJsZWVJdGVtczxDb21wdGVSZW5kdT4oXG4gICAgZGF0YURpcixcbiAgICBsZWdpc2xhdHVyZSxcbiAgICBkYXRhc2V0cy5jb21wdGVzUmVuZHVzU2VhbmNlcyxcbiAgICBDb21wdGVzUmVuZHVzQ29udmVydC50b0NvbXB0ZVJlbmR1LFxuICAgIFtdLFxuICAgIFwieG1sXCIsXG4gICAgb3B0aW9ucyxcbiAgKSkge1xuICAgIHlpZWxkIHsgY29tcHRlUmVuZHUsIGRhdGFzZXRMZWdpc2xhdHVyZSB9XG4gIH1cbn1cblxuLy8vIExvYWQgZGF0YSBmcm9tIHNwbGl0IGZpbGVzLlxuLy8vIERlcHJlY2F0ZWQ6IFVzZSBpdGVyTG9hZC4uLiBpdGVyYXRvcnMgaW5zdGVhZC5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQXNzZW1ibGVlRGF0YShcbiAgZGF0YURpcjogc3RyaW5nLFxuICBlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IERhdGEge1xuICBjb25zdCBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfSA9IHt9XG4gIGNvbnN0IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBhY3RldXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJhY3RldXJzXCJdKSkge1xuICAgICAgICBjb25zdCBhY3RldXJGaWxlbmFtZSA9IGFjdGV1clNwbGl0UGF0aFthY3RldXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhY3RldXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY3RldXJGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5hY3RldXJTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FjdGV1ckZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVySnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGFjdGV1ckZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBhY3RldXIgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b0FjdGV1cihhY3RldXJKc29uKVxuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcImFjdGV1clwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAoYWN0ZXVyQnlVaWRbYWN0ZXVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID0gYWN0ZXVyXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBvcmdhbmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJvcmdhbmVzXCJdKSkge1xuICAgICAgICBjb25zdCBvcmdhbmVGaWxlbmFtZSA9IG9yZ2FuZVNwbGl0UGF0aFtvcmdhbmVTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFvcmdhbmVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcmdhbmVGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5vcmdhbmVTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke29yZ2FuZUZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKG9yZ2FuZUZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBvcmdhbmUgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b09yZ2FuZShvcmdhbmVKc29uKVxuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcIm9yZ2FuZVwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAob3JnYW5lQnlVaWRbb3JnYW5lLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID0gb3JnYW5lXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9ID0ge31cbiAgY29uc3QgcmV1bmlvbnNCeURheTogeyBbZGF5OiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEb3NzaWVyVWlkOiB7IFtkb3NzaWVyVWlkOiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG4gICAgICBmb3IgKGNvbnN0IHJldW5pb25TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCByZXVuaW9uRmlsZW5hbWUgPSByZXVuaW9uU3BsaXRQYXRoW3JldW5pb25TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFyZXVuaW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLnJldW5pb25TcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke3JldW5pb25GaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25Kc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMocmV1bmlvbkZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCByZXVuaW9uID0gQWdlbmRhc0NvbnZlcnQudG9SZXVuaW9uKHJldW5pb25Kc29uKVxuICAgICAgICBpZiAocmV1bmlvbkJ5VWlkW3JldW5pb24udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV1bmlvbkJ5VWlkW3JldW5pb24udWlkXSA9IHJldW5pb25cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRheSA9IHJldW5pb24udGltZXN0YW1wRGVidXQudG9JU09TdHJpbmcoKS5zcGxpdChcIlRcIilbMF1cbiAgICAgICAgbGV0IHJldW5pb25zQXREYXkgPSByZXVuaW9uc0J5RGF5W2RheV1cbiAgICAgICAgaWYgKHJldW5pb25zQXREYXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25zQXREYXkgPSByZXVuaW9uc0J5RGF5W2RheV0gPSBbXVxuICAgICAgICB9XG4gICAgICAgIHJldW5pb25zQXREYXkucHVzaChyZXVuaW9uKVxuXG4gICAgICAgIGNvbnN0IG9kaiA9IHJldW5pb24ub2RqXG4gICAgICAgIGlmIChvZGogIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGZvciAoY29uc3QgcG9pbnRPZGogb2Ygb2RqLnBvaW50c09kaiB8fCBbXSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBkb3NzaWVyTGVnaXNsYXRpZlJlZiBvZiBwb2ludE9kai5kb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyB8fFxuICAgICAgICAgICAgICBbXSkge1xuICAgICAgICAgICAgICBsZXQgcmV1bmlvbnNBdERvc3NpZXJVaWQgPVxuICAgICAgICAgICAgICAgIHJldW5pb25zQnlEb3NzaWVyVWlkW2Rvc3NpZXJMZWdpc2xhdGlmUmVmXVxuICAgICAgICAgICAgICBpZiAocmV1bmlvbnNBdERvc3NpZXJVaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldW5pb25zQXREb3NzaWVyVWlkID0gcmV1bmlvbnNCeURvc3NpZXJVaWRbXG4gICAgICAgICAgICAgICAgICBkb3NzaWVyTGVnaXNsYXRpZlJlZlxuICAgICAgICAgICAgICAgIF0gPSBbXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldW5pb25zQXREb3NzaWVyVWlkLnB1c2gocmV1bmlvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBhbWVuZGVtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVuZGVtZW50cykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hbWVuZGVtZW50cykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCBhbWVuZGVtZW50RmlsZW5hbWUgPVxuICAgICAgICAgIGFtZW5kZW1lbnRTcGxpdFBhdGhbYW1lbmRlbWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWFtZW5kZW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uYW1lbmRlbWVudFNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7YW1lbmRlbWVudEZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhbWVuZGVtZW50RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50KGFtZW5kZW1lbnRKc29uKVxuICAgICAgICBpZiAoYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9IGFtZW5kZW1lbnRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRvY3VtZW50QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9jdW1lbnQgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBkb2N1bWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIsIFtcImRvY3VtZW50c1wiXSkpIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlbmFtZSA9IGRvY3VtZW50U3BsaXRQYXRoW2RvY3VtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghZG9jdW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb2N1bWVudEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmRvY3VtZW50U3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtkb2N1bWVudEZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoZG9jdW1lbnRGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0RvY3VtZW50KGRvY3VtZW50SnNvbilcbiAgICAgICAgaWYgKGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZG9jdW1lbnRCeVVpZFtkb2N1bWVudC51aWRdID0gZG9jdW1lbnRcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGRvc3NpZXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJkb3NzaWVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgZG9zc2llckZpbGVuYW1lID0gZG9zc2llclNwbGl0UGF0aFtkb3NzaWVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghZG9zc2llckZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvc3NpZXJGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5kb3NzaWVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtkb3NzaWVyRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVySnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvc3NpZXJGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZG9zc2llciA9XG4gICAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb3NzaWVyUGFybGVtZW50YWlyZShkb3NzaWVySnNvbilcbiAgICAgICAgY29uc3QgdGl0cmVEb3NzaWVyID0gZG9zc2llci50aXRyZURvc3NpZXJcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRpdHJlRG9zc2llci5zZW5hdENoZW1pbiAmJlxuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID09PVxuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIudGl0cmVDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZFtkb3NzaWVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUGhvdG9zKSB7XG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGBwaG90b3NfZGVwdXRlc18ke1xuICAgICAgICAgIC8vIFRPRE86IEhhbmRsZSBMZWdpc2xhdHVyZS5BbGwuXG4gICAgICAgICAgbGVnaXNsYXR1cmUgPT09IExlZ2lzbGF0dXJlLkFsbCA/IExlZ2lzbGF0dXJlLkRpeFNlcHQgOiBsZWdpc2xhdHVyZVxuICAgICAgICB9YCxcbiAgICAgICAgXCJkZXB1dGVzLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGpzb25GaWxlUGF0aCkpIHtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwaG90b0J5VWlkLCBKU09OLnBhcnNlKGpzb24pKVxuICAgICAgfSBlbHNlIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIG1pc3NpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgXCJwaG90b3Nfc2VuYXRldXJzXCIsXG4gICAgICAgIFwic2VuYXRldXJzLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGpzb25GaWxlUGF0aCkpIHtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwaG90b0J5VWlkLCBKU09OLnBhcnNlKGpzb24pKVxuICAgICAgfSBlbHNlIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIG1pc3NpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzY3J1dGluQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogU2NydXRpbiB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCBzY3J1dGluRmlsZW5hbWUgPSBzY3J1dGluU3BsaXRQYXRoW3NjcnV0aW5TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFzY3J1dGluRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpbkZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLnNjcnV0aW5TcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke3NjcnV0aW5GaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNjcnV0aW5Kc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoc2NydXRpbkZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBzY3J1dGluID0gU2NydXRpbnNDb252ZXJ0LnRvU2NydXRpbihzY3J1dGluSnNvbilcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBxdWVzdGlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFF1ZXN0aW9uIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlF1ZXN0aW9ucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5xdWVzdGlvbnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBxdWVzdGlvblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uRmlsZW5hbWUgPSBxdWVzdGlvblNwbGl0UGF0aFtxdWVzdGlvblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXF1ZXN0aW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcXVlc3Rpb25GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5xdWVzdGlvblNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7cXVlc3Rpb25GaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHF1ZXN0aW9uRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uID0gUXVlc3Rpb25zQ29udmVydC50b1F1ZXN0aW9uKHF1ZXN0aW9uSnNvbilcbiAgICAgICAgaWYgKHF1ZXN0aW9uQnlVaWRbcXVlc3Rpb24udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcXVlc3Rpb25CeVVpZFtxdWVzdGlvbi51aWRdID0gcXVlc3Rpb25cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNvbXB0ZVJlbmR1QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQ29tcHRlUmVuZHUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQ29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuY29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBjb21wdGVSZW5kdVBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUZpbGVuYW1lID0gY29tcHRlUmVuZHVQYXRoW2NvbXB0ZVJlbmR1UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWNvbXB0ZVJlbmR1RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5jb21wdGVSZW5kdVBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2NvbXB0ZVJlbmR1RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhjb21wdGVSZW5kdUZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdSA9IENvbXB0ZXNSZW5kdXNDb252ZXJ0LnRvQ29tcHRlUmVuZHUoY29tcHRlUmVuZHVKc29uKVxuICAgICAgICBpZiAoY29tcHRlUmVuZHVCeVVpZFtjb21wdGVSZW5kdS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb21wdGVSZW5kdUJ5VWlkW2NvbXB0ZVJlbmR1LnVpZF0gPSBjb21wdGVSZW5kdVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhY3RldXJCeVVpZCxcbiAgICBhbWVuZGVtZW50QnlVaWQsXG4gICAgZG9jdW1lbnRCeVVpZCxcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQsXG4gICAgb3JnYW5lQnlVaWQsXG4gICAgcGhvdG9CeVVpZCxcbiAgICByZXVuaW9uQnlVaWQsXG4gICAgcmV1bmlvbnNCeURheSxcbiAgICByZXVuaW9uc0J5RG9zc2llclVpZCxcbiAgICBzY3J1dGluQnlVaWQsXG4gICAgcXVlc3Rpb25CeVVpZCxcbiAgICBjb21wdGVSZW5kdUJ5VWlkLFxuICB9XG59XG5cbi8vLyBMb2FkIGRhdGEgZnJvbSBiaWcgbW9ub2x5dGljIGZpbGVzLlxuLy8vIERlcHJlY2F0ZWQ6IEFzc2VtYmzDqWUgbmF0aW9uYWxlIG9wZW4gZGF0YSBubyBtb3JlIHVzZXMgbW9ub2x5dGljIGZpbGVzLlxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBc3NlbWJsZWVEYXRhRnJvbUJpZ0ZpbGVzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGVuYWJsZWREYXRhc2V0czogRW5hYmxlZERhdGFzZXRzLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogRGF0YSB7XG4gIGNvbnN0IGFjdGV1ckJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9ID0ge31cbiAgY29uc3Qgb3JnYW5lQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGFjdGV1cnNFdE9yZ2FuZXMgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b0FjdGV1cnNFdE9yZ2FuZXMoanNvbilcbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyIG9mIGFjdGV1cnNFdE9yZ2FuZXMuYWN0ZXVycykge1xuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcImFjdGV1clwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAoYWN0ZXVyQnlVaWRbYWN0ZXVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID0gYWN0ZXVyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lIG9mIGFjdGV1cnNFdE9yZ2FuZXMub3JnYW5lcykge1xuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcIm9yZ2FuZVwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAob3JnYW5lQnlVaWRbb3JnYW5lLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID0gb3JnYW5lXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9ID0ge31cbiAgY29uc3QgcmV1bmlvbnNCeURheTogeyBbZGF5OiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEb3NzaWVyVWlkOiB7IFtkb3NzaWVyVWlkOiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgYWdlbmRhcyA9IEFnZW5kYXNDb252ZXJ0LnRvQWdlbmRhcyhqc29uKVxuICAgICAgZm9yIChjb25zdCByZXVuaW9uIG9mIGFnZW5kYXMucmV1bmlvbnMpIHtcbiAgICAgICAgaWYgKHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPSByZXVuaW9uXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXkgPSByZXVuaW9uLnRpbWVzdGFtcERlYnV0LnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgIGxldCByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldXG4gICAgICAgIGlmIChyZXVuaW9uc0F0RGF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldID0gW11cbiAgICAgICAgfVxuICAgICAgICByZXVuaW9uc0F0RGF5LnB1c2gocmV1bmlvbilcblxuICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGogfHwgW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llckxlZ2lzbGF0aWZSZWYgb2YgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfHxcbiAgICAgICAgICAgICAgW10pIHtcbiAgICAgICAgICAgICAgbGV0IHJldW5pb25zQXREb3NzaWVyVWlkID1cbiAgICAgICAgICAgICAgICByZXVuaW9uc0J5RG9zc2llclVpZFtkb3NzaWVyTGVnaXNsYXRpZlJlZl1cbiAgICAgICAgICAgICAgaWYgKHJldW5pb25zQXREb3NzaWVyVWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZCA9IHJldW5pb25zQnlEb3NzaWVyVWlkW1xuICAgICAgICAgICAgICAgICAgZG9zc2llckxlZ2lzbGF0aWZSZWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZC5wdXNoKHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBhbWVuZGVtZW50cyA9IEFtZW5kZW1lbnRzQ29udmVydC50b0FtZW5kZW1lbnRzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHRleHRlTGVnaXNsYXRpZiBvZiBhbWVuZGVtZW50cy50ZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnQgb2YgdGV4dGVMZWdpc2xhdGlmLmFtZW5kZW1lbnRzKSB7XG4gICAgICAgICAgaWYgKGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9IGFtZW5kZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgZG9zc2llcnNMZWdpc2xhdGlmcyA9XG4gICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llcnNMZWdpc2xhdGlmcyhqc29uKVxuICAgICAgZm9yIChjb25zdCBkb2N1bWVudCBvZiBkb3NzaWVyc0xlZ2lzbGF0aWZzLnRleHRlc0xlZ2lzbGF0aWZzKSB7XG4gICAgICAgIGlmIChkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgZG9zc2llciBvZiBkb3NzaWVyc0xlZ2lzbGF0aWZzLmRvc3NpZXJzUGFybGVtZW50YWlyZXMpIHtcbiAgICAgICAgY29uc3QgdGl0cmVEb3NzaWVyID0gZG9zc2llci50aXRyZURvc3NpZXJcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRpdHJlRG9zc2llci5zZW5hdENoZW1pbiAmJlxuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID09PVxuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIudGl0cmVDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZFtkb3NzaWVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcGhvdG9CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBQaG90byB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5QaG90b3MpIHtcbiAgICBjb25zdCBwaG90b0J5VWlkID0ge31cblxuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBgcGhvdG9zX2RlcHV0ZXNfJHtcbiAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgTGVnaXNsYXR1cmUuQWxsLlxuICAgICAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5EaXhTZXB0IDogbGVnaXNsYXR1cmVcbiAgICAgICAgfWAsXG4gICAgICAgIFwiZGVwdXRlcy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuXG4gICAge1xuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIFwicGhvdG9zX3NlbmF0ZXVyc1wiLFxuICAgICAgICBcInNlbmF0ZXVycy5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhqc29uRmlsZVBhdGgpKSB7XG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGhvdG9CeVVpZCwgSlNPTi5wYXJzZShqc29uKSlcbiAgICAgIH0gZWxzZSBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBJZ25vcmluZyBtaXNzaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBzY3J1dGlucyA9IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW5zKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW4gb2Ygc2NydXRpbnMuc2NydXRpbnMpIHtcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBxdWVzdGlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFF1ZXN0aW9uIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlF1ZXN0aW9ucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5xdWVzdGlvbnMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBxdWVzdGlvbnMgPSBRdWVzdGlvbnNDb252ZXJ0LnRvUXVlc3Rpb25zKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uIG9mIHF1ZXN0aW9ucy5xdWVzdGlvbnMpIHtcbiAgICAgICAgaWYgKHF1ZXN0aW9uQnlVaWRbcXVlc3Rpb24udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcXVlc3Rpb25CeVVpZFtxdWVzdGlvbi51aWRdID0gcXVlc3Rpb25cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNvbXB0ZVJlbmR1QnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQ29tcHRlUmVuZHUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQ29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuY29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBjb21wdGVzUmVuZHVzID0gQ29tcHRlc1JlbmR1c0NvbnZlcnQudG9Db21wdGVzUmVuZHVzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IGNvbXB0ZVJlbmR1IG9mIGNvbXB0ZXNSZW5kdXMuY29tcHRlc1JlbmR1cykge1xuICAgICAgICBpZiAoY29tcHRlUmVuZHVCeVVpZFtjb21wdGVSZW5kdS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb21wdGVSZW5kdUJ5VWlkW2NvbXB0ZVJlbmR1LnVpZF0gPSBjb21wdGVSZW5kdVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhY3RldXJCeVVpZCxcbiAgICBhbWVuZGVtZW50QnlVaWQsXG4gICAgZG9jdW1lbnRCeVVpZCxcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQsXG4gICAgb3JnYW5lQnlVaWQsXG4gICAgcGhvdG9CeVVpZCxcbiAgICByZXVuaW9uQnlVaWQsXG4gICAgcmV1bmlvbnNCeURheSxcbiAgICByZXVuaW9uc0J5RG9zc2llclVpZCxcbiAgICBzY3J1dGluQnlVaWQsXG4gICAgcXVlc3Rpb25CeVVpZCxcbiAgICBjb21wdGVSZW5kdUJ5VWlkLFxuICB9XG59XG5cbi8qKlxuICogUmVhZCBpbmZvcyBvZiBhIGRvY3VtZW50IG9yIGEgZGl2aXNpb24gb2YgYSBkb2N1bWVudCBmcm9tIGZpbGUgc3lzdGVtXG4gKlxuICogQHBhcmFtIGRhdGFEaXJcbiAqIEBwYXJhbSB1aWQgVUlEIG9mIGEgZG9jdW1lbnQgb3IgYSBkaXZpc2lvblxuICogQHBhcmFtIGZvcm1hdHMgcmVxdWVzdGVkIGZvcm1hdHMgb2YgdGhlIGRvY3VtZW50IGluIGRlY3JlYXNpbmcgcHJlZmVyZW5jZSBvcmRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZURvY3VtZW50RmlsZShcbiAgZGF0YURpcjogc3RyaW5nLFxuICB1aWQ6IHN0cmluZyxcbiAgZm9ybWF0czogRG9jdW1lbnRVcmxGb3JtYXRbXSxcbik6XG4gIHwge1xuICAgICAgZm9ybWF0OiBEb2N1bWVudFVybEZvcm1hdFxuICAgICAgcGF0aDogc3RyaW5nXG4gICAgICB1cmw6IHN0cmluZ1xuICAgIH1cbiAgfCB1bmRlZmluZWQge1xuICBjb25zdCBkb2N1bWVudHNEaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgXCJEb2N1bWVudHNcIilcbiAgY29uc3QgZG9jdW1lbnREaXIgPSBwYXRoRnJvbURvY3VtZW50VWlkKGRvY3VtZW50c0RpciwgdWlkKVxuICBjb25zdCBpbmRleFBhdGggPSBwYXRoLmpvaW4oZG9jdW1lbnREaXIsIFwiaW5kZXguanNvblwiKVxuICBpZiAoIWZzLnBhdGhFeGlzdHNTeW5jKGluZGV4UGF0aCkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cbiAgY29uc3QgaW5kZXggPSBmcy5yZWFkSnNvblN5bmMoaW5kZXhQYXRoKSBhcyBEb2N1bWVudEZpbGVzSW5kZXhcbiAgZm9yIChjb25zdCBmb3JtYXQgb2YgZm9ybWF0cykge1xuICAgIGZvciAoY29uc3QgeyBmaWxlbmFtZSwgdXJsIH0gb2YgaW5kZXhbZm9ybWF0XSA/PyBbXSkge1xuICAgICAgaWYgKGZpbGVuYW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGZvcm1hdCwgcGF0aDogcGF0aC5qb2luKGRvY3VtZW50RGlyLCBmaWxlbmFtZSksIHVybCB9XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBc3NlbWJsZWVQaG90b3NEZXB1dGVzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0ge1xuICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICBkYXRhRGlyLFxuICAgIGBwaG90b3NfZGVwdXRlc18ke1xuICAgICAgLy8gVE9ETzogSGFuZGxlIExlZ2lzbGF0dXJlLkFsbC5cbiAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5EaXhTZXB0IDogbGVnaXNsYXR1cmVcbiAgICB9YCxcbiAgICBcImRlcHV0ZXMuanNvblwiLFxuICApXG4gIGlmIChsb2cpIHtcbiAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICB9XG4gIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gIHJldHVybiBKU09OLnBhcnNlKGpzb24pIGFzIHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZVBob3Rvc1NlbmF0ZXVycyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSB7XG4gIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgIGRhdGFEaXIsXG4gICAgXCJwaG90b3Nfc2VuYXRldXJzXCIsXG4gICAgXCJzZW5hdGV1cnMuanNvblwiLFxuICApXG4gIGlmIChsb2cpIHtcbiAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICB9XG4gIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gIHJldHVybiBKU09OLnBhcnNlKGpzb24pIGFzIHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21Eb2N1bWVudFVpZChkb2N1bWVudHNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IHVpZC5tYXRjaChkb2N1bWVudFVpZFJlZ2V4KVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIGRvY3VtZW50IFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCBncm91cHMgPSBtYXRjaCEuZ3JvdXBzIGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1cbiAgY29uc3QgZG9jdW1lbnRUeXBlID0gcGF0aC5qb2luKFxuICAgIGRvY3VtZW50c0RpcixcbiAgICBncm91cHMuZG9jdW1lbnRUeXBlID8/IGdyb3Vwcy5kb2N1bWVudFR5cGUyLFxuICApXG4gIGNvbnN0IGNoYW1icmVEaXIgPSBwYXRoLmpvaW4oZG9jdW1lbnRUeXBlLCBncm91cHMuY2hhbWJyZSA/PyBncm91cHMuY2hhbWJyZTIpXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oXG4gICAgY2hhbWJyZURpcixcbiAgICBncm91cHMucmVwdWJsaXF1ZSA/PyBncm91cHMucmVwdWJsaXF1ZTIsXG4gIClcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4oXG4gICAgcmVwdWJsaXF1ZURpcixcbiAgICBncm91cHMubGVnaXNsYXR1cmUgPz8gZ3JvdXBzLmxlZ2lzbGF0dXJlMixcbiAgKVxuICBjb25zdCBldGF0ID0gZ3JvdXBzLmV0YXRcbiAgaWYgKGV0YXQgPT09IHVuZGVmaW5lZCkge1xuICAgIGZzLmVuc3VyZURpclN5bmMobGVnaXNsYXR1cmVEaXIpXG4gICAgcmV0dXJuIHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgdWlkKVxuICB9XG4gIGNvbnN0IGV0YXREaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIGV0YXQpXG4gIGxldCBudW1lcm8gPSBcIjAwMDAwMFwiICsgKGdyb3Vwcy5udW1lcm8gPz8gZ3JvdXBzLm51bWVybzIpXG4gIG51bWVybyA9IG51bWVyby5zdWJzdHJpbmcobnVtZXJvLmxlbmd0aCAtIDYpXG4gIGNvbnN0IG51bWVyb01pbGxpZXJzRGlyID0gcGF0aC5qb2luKGV0YXREaXIsIG51bWVyby5zdWJzdHJpbmcoMCwgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQoXG4gIGRvc3NpZXJzRGlyOiBzdHJpbmcsXG4gIHVpZDogc3RyaW5nLFxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhdGhGcm9tVWlkKGRvc3NpZXJzRGlyLCB1aWQsIGRvc3NpZXJVaWRSZWdleClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tUmV1bmlvblVpZChyZXVuaW9uc0Rpcjogc3RyaW5nLCB1aWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gcmV1bmlvblVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIHJldW5pb24gVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IGNoYW1icmVEaXIgPSBwYXRoLmpvaW4ocmV1bmlvbnNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihjaGFtYnJlRGlyLCBtYXRjaCFbMl0pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVszXSlcbiAgY29uc3Qgc2Vzc2lvbkRpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbWF0Y2ghWzRdKVxuICBjb25zdCBpZERpciA9IHBhdGguam9pbihzZXNzaW9uRGlyLCBtYXRjaCFbNV0pXG4gIGxldCBudW1lcm8gPSBcIjAwMDAwMDAwMFwiICsgbWF0Y2ghWzZdXG4gIG51bWVybyA9IG51bWVyby5zdWJzdHJpbmcobnVtZXJvLmxlbmd0aCAtIDkpXG4gIGNvbnN0IG51bWVyb01pbGxpb25zRGlyID0gcGF0aC5qb2luKGlkRGlyLCBudW1lcm8uc3Vic3RyaW5nKDAsIDMpKVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihudW1lcm9NaWxsaW9uc0RpciwgbnVtZXJvLnN1YnN0cmluZygzLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21TY3J1dGluVWlkKHNjcnV0aW5zRGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWF0Y2ggPSBzY3J1dGluVWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3Igc2NydXRpbiBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgY2hhbWJyZURpciA9IHBhdGguam9pbihzY3J1dGluc0RpciwgbWF0Y2ghWzFdKVxuICBjb25zdCByZXB1YmxpcXVlRGlyID0gcGF0aC5qb2luKGNoYW1icmVEaXIsIG1hdGNoIVsyXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzNdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVs0XVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyaW5nKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbnVtZXJvLnN1YnN0cmluZygwLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21RdWVzdGlvblVpZChkYXRhRGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhdGhGcm9tVWlkKGRhdGFEaXIsIHVpZCwgcXVlc3Rpb25VaWRSZWdleClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tQ29tcHRlUmVuZHVVaWQoZGF0YURpcjogc3RyaW5nLCB1aWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBwYXRoRnJvbVVpZChkYXRhRGlyLCB1aWQsIGNvbXB0ZVJlbmR1VWlkUmVnZXgpXG59XG5cbi8vIEdldCBzdGFuZGFyZCBwYXRoIGZvciBvYmplY3Qgd2l0aCB1aWQgOiByZXB1YmxpcXVlID4gbGVnaXNsYXR1cmUgPiBncm91cCBvYmplY3RzIGJ5IHRob3VzYW5kc1xuZnVuY3Rpb24gcGF0aEZyb21VaWQoZGF0YURpcjogc3RyaW5nLCB1aWQ6IHN0cmluZywgZGF0YVJlZ2V4cDogUmVnRXhwKTogc3RyaW5nIHtcbiAgY29uc3QgbWF0Y2ggPSBkYXRhUmVnZXhwLmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIG9iamVjdCB3aXRoIFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCByZXB1YmxpcXVlRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzJdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVszXVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyaW5nKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbnVtZXJvLnN1YnN0cmluZygwLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdB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Q0FBQzRULGFBQWEsQ0FBQ0csaUJBQWlCLENBQUM7RUFDbkMsT0FBT3BVLGdCQUFJLENBQUN0RCxJQUFJLENBQUMwWCxpQkFBaUIsRUFBRXpULEdBQUcsQ0FBQztBQUMxQztBQUVPLFNBQVNvVSxtQkFBbUJBLENBQUMvVyxPQUFlLEVBQUUyQyxHQUFXLEVBQVU7RUFDeEUsT0FBTzRULFdBQVcsQ0FBQ3ZXLE9BQU8sRUFBRTJDLEdBQUcsRUFBRTdDLGdCQUFnQixDQUFDO0FBQ3BEO0FBRU8sU0FBU2tYLHNCQUFzQkEsQ0FBQ2hYLE9BQWUsRUFBRTJDLEdBQVcsRUFBVTtFQUMzRSxPQUFPNFQsV0FBVyxDQUFDdlcsT0FBTyxFQUFFMkMsR0FBRyxFQUFFOUMsbUJBQW1CLENBQUM7QUFDdkQ7O0FBRUE7QUFDQSxTQUFTMFcsV0FBV0EsQ0FBQ3ZXLE9BQWUsRUFBRTJDLEdBQVcsRUFBRXNVLFVBQWtCLEVBQVU7RUFDN0UsSUFBTXRCLEtBQUssR0FBR3NCLFVBQVUsQ0FBQzNZLElBQUksQ0FBQ3FFLEdBQUcsQ0FBQztFQUNsQ2lULGtCQUFNLENBQUNDLGNBQWMsQ0FDbkJGLEtBQUssRUFDTCxJQUFJLCtDQUFBNVQsTUFBQSxDQUN5Q1ksR0FBRyxDQUNsRCxDQUFDO0VBQ0QsSUFBTW9ULGFBQWEsR0FBRy9ULGdCQUFJLENBQUN0RCxJQUFJLENBQUNzQixPQUFPLEVBQUUyVixLQUFLLENBQUUsQ0FBQyxDQUFDLENBQUM7RUFDbkQsSUFBTUssY0FBYyxHQUFHaFUsZ0JBQUksQ0FBQ3RELElBQUksQ0FBQ3FYLGFBQWEsRUFBRUosS0FBSyxDQUFFLENBQUMsQ0FBQyxDQUFDO0VBQzFELElBQUl2VyxNQUFNLEdBQUcsUUFBUSxHQUFHdVcsS0FBSyxDQUFFLENBQUMsQ0FBQztFQUNqQ3ZXLE1BQU0sR0FBR0EsTUFBTSxDQUFDK1csU0FBUyxDQUFDL1csTUFBTSxDQUFDOUQsTUFBTSxHQUFHLENBQUMsQ0FBQztFQUM1QyxJQUFNOGEsaUJBQWlCLEdBQUdwVSxnQkFBSSxDQUFDdEQsSUFBSSxDQUFDc1gsY0FBYyxFQUFFNVcsTUFBTSxDQUFDK1csU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztFQUMzRTlULG1CQUFFLENBQUM0VCxhQUFhLENBQUNHLGlCQUFpQixDQUFDO0VBQ25DLE9BQU9wVSxnQkFBSSxDQUFDdEQsSUFBSSxDQUFDMFgsaUJBQWlCLEVBQUV6VCxHQUFHLENBQUM7QUFDMUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
1
|
+
import "node:assert";
|
|
2
|
+
import "fs-extra";
|
|
3
|
+
import "node:path";
|
|
4
|
+
import { z as r, i, g as l, n as d, h as n, j as A, f as b, m as p, k as u, l as D, o as h, q as F, r as L, s as c, t as U, y as P, p as R, u as g, x as S, v as f, w as k, A as w } from "./loaders-9mHdTl9L.js";
|
|
5
|
+
import "./amendements-CV3s5a0M.js";
|
|
6
|
+
export {
|
|
7
|
+
r as EnabledDatasets,
|
|
8
|
+
i as iterLoadAssembleeActeurs,
|
|
9
|
+
l as iterLoadAssembleeAmendements,
|
|
10
|
+
d as iterLoadAssembleeComptesRendus,
|
|
11
|
+
n as iterLoadAssembleeDocuments,
|
|
12
|
+
A as iterLoadAssembleeDossiersParlementaires,
|
|
13
|
+
b as iterLoadAssembleeOrganes,
|
|
14
|
+
p as iterLoadAssembleeQuestions,
|
|
15
|
+
u as iterLoadAssembleeReunions,
|
|
16
|
+
D as iterLoadAssembleeScrutins,
|
|
17
|
+
h as loadAssembleeData,
|
|
18
|
+
F as loadAssembleeDataFromBigFiles,
|
|
19
|
+
L as loadAssembleeDocumentFile,
|
|
20
|
+
c as loadAssembleePhotosDeputes,
|
|
21
|
+
U as loadAssembleePhotosSenateurs,
|
|
22
|
+
P as pathFromCompteRenduUid,
|
|
23
|
+
R as pathFromDocumentUid,
|
|
24
|
+
g as pathFromDossierParlementaireUid,
|
|
25
|
+
S as pathFromQuestionUid,
|
|
26
|
+
f as pathFromReunionUid,
|
|
27
|
+
k as pathFromScrutinUid,
|
|
28
|
+
w as walkDir
|
|
29
|
+
};
|