@tricoteuses/assemblee
Version:
Retrieve, clean up & handle French Assemblée nationale's open data
315 lines (309 loc) • 38.2 kB
JavaScript
;
require("core-js/modules/es.symbol.js");
require("core-js/modules/es.symbol.description.js");
require("core-js/modules/es.symbol.iterator.js");
require("core-js/modules/es.array.from.js");
require("core-js/modules/es.array.iterator.js");
require("core-js/modules/es.array.slice.js");
require("core-js/modules/es.date.to-string.js");
require("core-js/modules/es.function.name.js");
require("core-js/modules/es.object.define-property.js");
require("core-js/modules/es.object.to-string.js");
require("core-js/modules/es.regexp.exec.js");
require("core-js/modules/es.regexp.to-string.js");
require("core-js/modules/es.string.iterator.js");
require("core-js/modules/web.dom-collections.iterator.js");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.cleanActeLegislatif = cleanActeLegislatif;
exports.cleanActeOuDossierInitiateur = cleanActeOuDossierInitiateur;
require("core-js/modules/es.array.is-array.js");
var _assert = _interopRequireDefault(require("assert"));
var _acteurs = require("./acteurs");
var _xml = require("./xml");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
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; } } }; }
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; } }
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; }
function cleanActeLegislatif(acteLegislatif) {
(0, _xml.cleanXmlArtefacts)(acteLegislatif);
var xsiType = acteLegislatif["@xsi:type"];
if (xsiType !== undefined) {
acteLegislatif.xsiType = xsiType;
delete acteLegislatif["@xsi:type"];
}
//
var auteursRefs = acteLegislatif.auteurs;
if (auteursRefs !== undefined) {
auteursRefs = auteursRefs.acteurRef;
if (!Array.isArray(auteursRefs)) {
(0, _assert["default"])(auteursRefs);
auteursRefs = [auteursRefs];
}
acteLegislatif.auteursRefs = auteursRefs;
delete acteLegislatif.auteurs;
}
var casSaisine = acteLegislatif.casSaisine;
if (casSaisine !== undefined) {
cleanTypeDeclaration(casSaisine);
}
var contributionInternaute = acteLegislatif.contributionInternaute;
if (contributionInternaute !== undefined) {
(0, _xml.cleanXmlArtefacts)(contributionInternaute);
}
_assert["default"].strictEqual(acteLegislatif.dateRetrait, undefined);
var decision = acteLegislatif.decision;
if (decision !== undefined) {
cleanTypeDeclaration(decision);
}
var infoJo = acteLegislatif.infoJO;
if (infoJo !== undefined) {
cleanInfoJo(infoJo);
acteLegislatif.infoJo = infoJo;
delete acteLegislatif.infoJO;
}
var infoJoce = acteLegislatif.infoJOCE;
if (infoJoce !== undefined) {
acteLegislatif.infoJoce = infoJoce;
delete acteLegislatif.infoJOCE;
var refJoce = infoJoce.refJOCE;
if (refJoce !== undefined) {
infoJoce.refJoce = refJoce;
delete infoJoce.refJOCE;
}
var dateJoce = infoJoce.dateJOCE;
if (dateJoce !== undefined) {
infoJoce.dateJoce = dateJoce;
delete infoJoce.dateJOCE;
}
}
var infoJoRect = acteLegislatif.infoJORect;
if (infoJoRect !== undefined) {
if (!Array.isArray(infoJoRect)) {
infoJoRect = [infoJoRect];
}
acteLegislatif.infoJoRect = infoJoRect;
delete acteLegislatif.infoJORect;
var _iterator = _createForOfIteratorHelper(infoJoRect),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var infoJoRectItem = _step.value;
cleanInfoJo(infoJoRectItem);
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
}
// Convert acteLegislatif.initiateur and acteLegislatif.initiateurs to an Initiateur.
cleanActeOuDossierInitiateur(acteLegislatif);
var initiateur = acteLegislatif.initiateurs;
if (initiateur !== undefined) {
_assert["default"].strictEqual(acteLegislatif.initiateur, undefined);
if (initiateur.acteurRef === undefined) {
_assert["default"].notStrictEqual(initiateur.organeRef, undefined);
} else {
if (!Array.isArray(initiateur)) {
(0, _assert["default"])(initiateur);
initiateur = [initiateur];
}
initiateur = {
acteurs: initiateur
};
}
acteLegislatif.initiateur = initiateur;
delete acteLegislatif.initiateurs;
}
_assert["default"].strictEqual(acteLegislatif.odSeancejRef, undefined);
var provenanceRef = acteLegislatif.provenance;
if (provenanceRef !== undefined) {
delete acteLegislatif.provenance;
acteLegislatif.provenanceRef = provenanceRef;
}
var rapporteurs = acteLegislatif.rapporteurs;
if (rapporteurs !== undefined) {
rapporteurs = rapporteurs.rapporteur;
if (!Array.isArray(rapporteurs)) {
(0, _assert["default"])(rapporteurs);
rapporteurs = [rapporteurs];
}
acteLegislatif.rapporteurs = rapporteurs;
var _iterator2 = _createForOfIteratorHelper(rapporteurs),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
var rapporteur = _step2.value;
(0, _acteurs.cleanRapporteur)(rapporteur);
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
}
var referenceNor = acteLegislatif.referenceNOR;
if (referenceNor !== undefined) {
acteLegislatif.referenceNor = referenceNor;
delete acteLegislatif.referenceNOR;
}
_assert["default"].strictEqual(acteLegislatif.reunion, undefined);
var statutAdoption = acteLegislatif.statutAdoption;
if (statutAdoption !== undefined) {
cleanTypeDeclaration(statutAdoption);
}
var statutConclusion = acteLegislatif.statutConclusion;
if (statutConclusion !== undefined) {
cleanTypeDeclaration(statutConclusion);
if (statutConclusion.famCode === "TSORTFnull") {
// Occured once in https://git.en-root.org/tricoteuses/data/assemblee-brut/Dossiers_Legislatifs_XV/commit/8383800fe7d993da7b596c5b20fadc31c4df3835
delete acteLegislatif.statutConclusion;
}
}
var texteAdopteRef = acteLegislatif.texteAdopte;
if (texteAdopteRef !== undefined) {
delete acteLegislatif.texteAdopte;
acteLegislatif.texteAdopteRef = texteAdopteRef;
}
var texteAssocieRef = acteLegislatif.texteAssocie;
if (texteAssocieRef !== undefined) {
delete acteLegislatif.texteAssocie;
acteLegislatif.texteAssocieRef = texteAssocieRef;
}
var textesAssocies = acteLegislatif.textesAssocies;
if (textesAssocies !== undefined) {
textesAssocies = textesAssocies.texteAssocie;
if (!Array.isArray(textesAssocies)) {
(0, _assert["default"])(textesAssocies);
textesAssocies = [textesAssocies];
}
acteLegislatif.textesAssocies = textesAssocies;
var _iterator3 = _createForOfIteratorHelper(textesAssocies),
_step3;
try {
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
var texteAssocie = _step3.value;
var _texteAssocieRef = texteAssocie.refTexteAssocie;
if (_texteAssocieRef !== undefined) {
delete texteAssocie.refTexteAssocie;
texteAssocie.texteAssocieRef = _texteAssocieRef;
}
}
} catch (err) {
_iterator3.e(err);
} finally {
_iterator3.f();
}
}
var typeDeclaration = acteLegislatif.typeDeclaration;
if (typeDeclaration !== undefined) {
cleanTypeDeclaration(typeDeclaration);
}
var typeMotion = acteLegislatif.typeMotion;
if (typeMotion !== undefined) {
cleanTypeDeclaration(typeMotion);
}
var typeMotionCensure = acteLegislatif.typeMotionCensure;
if (typeMotionCensure !== undefined) {
cleanTypeDeclaration(typeMotionCensure);
}
var voteRefs = acteLegislatif.voteRefs;
if (voteRefs !== undefined) {
voteRefs = voteRefs.voteRef;
if (!Array.isArray(voteRefs)) {
(0, _assert["default"])(voteRefs);
voteRefs = [voteRefs];
}
acteLegislatif.voteRefs = voteRefs;
}
//
var actesLegislatifs = acteLegislatif.actesLegislatifs;
if (actesLegislatifs !== undefined) {
actesLegislatifs = actesLegislatifs.acteLegislatif;
if (!Array.isArray(actesLegislatifs)) {
(0, _assert["default"])(actesLegislatifs);
actesLegislatifs = [actesLegislatifs];
}
acteLegislatif.actesLegislatifs = actesLegislatifs;
var _iterator4 = _createForOfIteratorHelper(actesLegislatifs),
_step4;
try {
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
var _acteLegislatif = _step4.value;
cleanActeLegislatif(_acteLegislatif);
}
} catch (err) {
_iterator4.e(err);
} finally {
_iterator4.f();
}
}
}
function cleanActeOuDossierInitiateur(acteOuDossier) {
var initiateur = acteOuDossier.initiateur;
if (initiateur !== undefined) {
var acteurs = initiateur.acteurs;
if (acteurs !== undefined) {
acteurs = acteurs.acteur;
if (!Array.isArray(acteurs)) {
(0, _assert["default"])(acteurs);
acteurs = [acteurs];
}
if (acteurs.length > 0) {
initiateur.acteurs = acteurs;
} else {
delete initiateur.acteurs;
}
}
var organeRef = initiateur.organes;
if (organeRef !== undefined) {
organeRef = organeRef.organe.organeRef.uid;
_assert["default"].notStrictEqual(organeRef, undefined);
initiateur.organeRef = organeRef;
delete initiateur.organes;
}
if (initiateur.acteurs === undefined && initiateur.organeRef === undefined) {
delete acteOuDossier.initiateur;
}
}
}
function cleanInfoJo(infoJo) {
(0, _xml.cleanXmlArtefacts)(infoJo);
var typeJo = infoJo.typeJO;
if (typeJo !== undefined) {
infoJo.typeJo = typeJo;
delete infoJo.typeJO;
}
var dateJo = infoJo.dateJO;
if (dateJo !== undefined) {
infoJo.dateJo = dateJo;
delete infoJo.dateJO;
}
_assert["default"].strictEqual(infoJo.pageJO, undefined);
var numJo = infoJo.numJO;
if (numJo !== undefined) {
infoJo.numJo = numJo;
delete infoJo.numJO;
}
var referenceNor = infoJo.referenceNOR;
if (referenceNor !== undefined) {
infoJo.referenceNor = referenceNor;
delete infoJo.referenceNOR;
}
}
function cleanTypeDeclaration(typeDeclaration) {
typeDeclaration.famCode = typeDeclaration.fam_code;
delete typeDeclaration.fam_code;
(0, _assert["default"])(typeDeclaration.famCode);
if (!typeDeclaration.libelle) {
// Occured once in https://git.en-root.org/tricoteuses/data/assemblee-brut/Dossiers_Legislatifs_XV/commit/8383800fe7d993da7b596c5b20fadc31c4df3835:
// "statutConclusion": {
// "fam_code": "TSORTFnull"
// },
// This famCode is an error.
typeDeclaration.libelle = typeDeclaration.famCode;
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfYWN0ZXVycyIsIl94bWwiLCJlIiwiX19lc01vZHVsZSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiciIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJhIiwidSIsImNhbGwiLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJjbGVhbkFjdGVMZWdpc2xhdGlmIiwiYWN0ZUxlZ2lzbGF0aWYiLCJjbGVhblhtbEFydGVmYWN0cyIsInhzaVR5cGUiLCJ1bmRlZmluZWQiLCJhdXRldXJzUmVmcyIsImF1dGV1cnMiLCJhY3RldXJSZWYiLCJhc3NlcnQiLCJjYXNTYWlzaW5lIiwiY2xlYW5UeXBlRGVjbGFyYXRpb24iLCJjb250cmlidXRpb25JbnRlcm5hdXRlIiwic3RyaWN0RXF1YWwiLCJkYXRlUmV0cmFpdCIsImRlY2lzaW9uIiwiaW5mb0pvIiwiaW5mb0pPIiwiY2xlYW5JbmZvSm8iLCJpbmZvSm9jZSIsImluZm9KT0NFIiwicmVmSm9jZSIsInJlZkpPQ0UiLCJkYXRlSm9jZSIsImRhdGVKT0NFIiwiaW5mb0pvUmVjdCIsImluZm9KT1JlY3QiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImluZm9Kb1JlY3RJdGVtIiwiZXJyIiwiY2xlYW5BY3RlT3VEb3NzaWVySW5pdGlhdGV1ciIsImluaXRpYXRldXIiLCJpbml0aWF0ZXVycyIsIm5vdFN0cmljdEVxdWFsIiwib3JnYW5lUmVmIiwiYWN0ZXVycyIsIm9kU2VhbmNlalJlZiIsInByb3ZlbmFuY2VSZWYiLCJwcm92ZW5hbmNlIiwicmFwcG9ydGV1cnMiLCJyYXBwb3J0ZXVyIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsImNsZWFuUmFwcG9ydGV1ciIsInJlZmVyZW5jZU5vciIsInJlZmVyZW5jZU5PUiIsInJldW5pb24iLCJzdGF0dXRBZG9wdGlvbiIsInN0YXR1dENvbmNsdXNpb24iLCJmYW1Db2RlIiwidGV4dGVBZG9wdGVSZWYiLCJ0ZXh0ZUFkb3B0ZSIsInRleHRlQXNzb2NpZVJlZiIsInRleHRlQXNzb2NpZSIsInRleHRlc0Fzc29jaWVzIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsInJlZlRleHRlQXNzb2NpZSIsInR5cGVEZWNsYXJhdGlvbiIsInR5cGVNb3Rpb24iLCJ0eXBlTW90aW9uQ2Vuc3VyZSIsInZvdGVSZWZzIiwidm90ZVJlZiIsImFjdGVzTGVnaXNsYXRpZnMiLCJfaXRlcmF0b3I0IiwiX3N0ZXA0IiwiYWN0ZU91RG9zc2llciIsImFjdGV1ciIsIm9yZ2FuZXMiLCJvcmdhbmUiLCJ1aWQiLCJ0eXBlSm8iLCJ0eXBlSk8iLCJkYXRlSm8iLCJkYXRlSk8iLCJwYWdlSk8iLCJudW1KbyIsIm51bUpPIiwiZmFtX2NvZGUiLCJsaWJlbGxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsZWFuZXJzL2FjdGVzX2xlZ2lzbGF0aWZzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5cbmltcG9ydCB7IGNsZWFuUmFwcG9ydGV1ciB9IGZyb20gXCIuL2FjdGV1cnNcIlxuaW1wb3J0IHsgY2xlYW5YbWxBcnRlZmFjdHMgfSBmcm9tIFwiLi94bWxcIlxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYW5BY3RlTGVnaXNsYXRpZihhY3RlTGVnaXNsYXRpZjogYW55KTogdm9pZCB7XG4gIGNsZWFuWG1sQXJ0ZWZhY3RzKGFjdGVMZWdpc2xhdGlmKVxuXG4gIGNvbnN0IHhzaVR5cGUgPSBhY3RlTGVnaXNsYXRpZltcIkB4c2k6dHlwZVwiXVxuICBpZiAoeHNpVHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgYWN0ZUxlZ2lzbGF0aWYueHNpVHlwZSA9IHhzaVR5cGVcbiAgICBkZWxldGUgYWN0ZUxlZ2lzbGF0aWZbXCJAeHNpOnR5cGVcIl1cbiAgfVxuXG4gIC8vXG5cbiAgbGV0IGF1dGV1cnNSZWZzID0gYWN0ZUxlZ2lzbGF0aWYuYXV0ZXVyc1xuICBpZiAoYXV0ZXVyc1JlZnMgIT09IHVuZGVmaW5lZCkge1xuICAgIGF1dGV1cnNSZWZzID0gYXV0ZXVyc1JlZnMuYWN0ZXVyUmVmXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGF1dGV1cnNSZWZzKSkge1xuICAgICAgYXNzZXJ0KGF1dGV1cnNSZWZzKVxuICAgICAgYXV0ZXVyc1JlZnMgPSBbYXV0ZXVyc1JlZnNdXG4gICAgfVxuICAgIGFjdGVMZWdpc2xhdGlmLmF1dGV1cnNSZWZzID0gYXV0ZXVyc1JlZnNcbiAgICBkZWxldGUgYWN0ZUxlZ2lzbGF0aWYuYXV0ZXVyc1xuICB9XG5cbiAgY29uc3QgY2FzU2Fpc2luZSA9IGFjdGVMZWdpc2xhdGlmLmNhc1NhaXNpbmVcbiAgaWYgKGNhc1NhaXNpbmUgIT09IHVuZGVmaW5lZCkge1xuICAgIGNsZWFuVHlwZURlY2xhcmF0aW9uKGNhc1NhaXNpbmUpXG4gIH1cblxuICBjb25zdCBjb250cmlidXRpb25JbnRlcm5hdXRlID0gYWN0ZUxlZ2lzbGF0aWYuY29udHJpYnV0aW9uSW50ZXJuYXV0ZVxuICBpZiAoY29udHJpYnV0aW9uSW50ZXJuYXV0ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2xlYW5YbWxBcnRlZmFjdHMoY29udHJpYnV0aW9uSW50ZXJuYXV0ZSlcbiAgfVxuXG4gIGFzc2VydC5zdHJpY3RFcXVhbChhY3RlTGVnaXNsYXRpZi5kYXRlUmV0cmFpdCwgdW5kZWZpbmVkKVxuXG4gIGNvbnN0IGRlY2lzaW9uID0gYWN0ZUxlZ2lzbGF0aWYuZGVjaXNpb25cbiAgaWYgKGRlY2lzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbGVhblR5cGVEZWNsYXJhdGlvbihkZWNpc2lvbilcbiAgfVxuXG4gIGNvbnN0IGluZm9KbyA9IGFjdGVMZWdpc2xhdGlmLmluZm9KT1xuICBpZiAoaW5mb0pvICE9PSB1bmRlZmluZWQpIHtcbiAgICBjbGVhbkluZm9KbyhpbmZvSm8pXG4gICAgYWN0ZUxlZ2lzbGF0aWYuaW5mb0pvID0gaW5mb0pvXG4gICAgZGVsZXRlIGFjdGVMZWdpc2xhdGlmLmluZm9KT1xuICB9XG5cbiAgY29uc3QgaW5mb0pvY2UgPSBhY3RlTGVnaXNsYXRpZi5pbmZvSk9DRVxuICBpZiAoaW5mb0pvY2UgIT09IHVuZGVmaW5lZCkge1xuICAgIGFjdGVMZWdpc2xhdGlmLmluZm9Kb2NlID0gaW5mb0pvY2VcbiAgICBkZWxldGUgYWN0ZUxlZ2lzbGF0aWYuaW5mb0pPQ0VcblxuICAgIGNvbnN0IHJlZkpvY2UgPSBpbmZvSm9jZS5yZWZKT0NFXG4gICAgaWYgKHJlZkpvY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaW5mb0pvY2UucmVmSm9jZSA9IHJlZkpvY2VcbiAgICAgIGRlbGV0ZSBpbmZvSm9jZS5yZWZKT0NFXG4gICAgfVxuXG4gICAgY29uc3QgZGF0ZUpvY2UgPSBpbmZvSm9jZS5kYXRlSk9DRVxuICAgIGlmIChkYXRlSm9jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpbmZvSm9jZS5kYXRlSm9jZSA9IGRhdGVKb2NlXG4gICAgICBkZWxldGUgaW5mb0pvY2UuZGF0ZUpPQ0VcbiAgICB9XG4gIH1cblxuICBsZXQgaW5mb0pvUmVjdCA9IGFjdGVMZWdpc2xhdGlmLmluZm9KT1JlY3RcbiAgaWYgKGluZm9Kb1JlY3QgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShpbmZvSm9SZWN0KSkge1xuICAgICAgaW5mb0pvUmVjdCA9IFtpbmZvSm9SZWN0XVxuICAgIH1cbiAgICBhY3RlTGVnaXNsYXRpZi5pbmZvSm9SZWN0ID0gaW5mb0pvUmVjdFxuICAgIGRlbGV0ZSBhY3RlTGVnaXNsYXRpZi5pbmZvSk9SZWN0XG5cbiAgICBmb3IgKGNvbnN0IGluZm9Kb1JlY3RJdGVtIG9mIGluZm9Kb1JlY3QpIHtcbiAgICAgIGNsZWFuSW5mb0pvKGluZm9Kb1JlY3RJdGVtKVxuICAgIH1cbiAgfVxuXG4gIC8vIENvbnZlcnQgYWN0ZUxlZ2lzbGF0aWYuaW5pdGlhdGV1ciBhbmQgYWN0ZUxlZ2lzbGF0aWYuaW5pdGlhdGV1cnMgdG8gYW4gSW5pdGlhdGV1ci5cbiAgY2xlYW5BY3RlT3VEb3NzaWVySW5pdGlhdGV1cihhY3RlTGVnaXNsYXRpZilcbiAgbGV0IGluaXRpYXRldXIgPSBhY3RlTGVnaXNsYXRpZi5pbml0aWF0ZXVyc1xuICBpZiAoaW5pdGlhdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFjdGVMZWdpc2xhdGlmLmluaXRpYXRldXIsIHVuZGVmaW5lZClcbiAgICBpZiAoaW5pdGlhdGV1ci5hY3RldXJSZWYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKGluaXRpYXRldXIub3JnYW5lUmVmLCB1bmRlZmluZWQpXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShpbml0aWF0ZXVyKSkge1xuICAgICAgICBhc3NlcnQoaW5pdGlhdGV1cilcbiAgICAgICAgaW5pdGlhdGV1ciA9IFtpbml0aWF0ZXVyXVxuICAgICAgfVxuICAgICAgaW5pdGlhdGV1ciA9IHtcbiAgICAgICAgYWN0ZXVyczogaW5pdGlhdGV1cixcbiAgICAgIH1cbiAgICB9XG4gICAgYWN0ZUxlZ2lzbGF0aWYuaW5pdGlhdGV1ciA9IGluaXRpYXRldXJcbiAgICBkZWxldGUgYWN0ZUxlZ2lzbGF0aWYuaW5pdGlhdGV1cnNcbiAgfVxuXG4gIGFzc2VydC5zdHJpY3RFcXVhbChhY3RlTGVnaXNsYXRpZi5vZFNlYW5jZWpSZWYsIHVuZGVmaW5lZClcblxuICBjb25zdCBwcm92ZW5hbmNlUmVmID0gYWN0ZUxlZ2lzbGF0aWYucHJvdmVuYW5jZVxuICBpZiAocHJvdmVuYW5jZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZGVsZXRlIGFjdGVMZWdpc2xhdGlmLnByb3ZlbmFuY2VcbiAgICBhY3RlTGVnaXNsYXRpZi5wcm92ZW5hbmNlUmVmID0gcHJvdmVuYW5jZVJlZlxuICB9XG5cbiAgbGV0IHJhcHBvcnRldXJzID0gYWN0ZUxlZ2lzbGF0aWYucmFwcG9ydGV1cnNcbiAgaWYgKHJhcHBvcnRldXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICByYXBwb3J0ZXVycyA9IHJhcHBvcnRldXJzLnJhcHBvcnRldXJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkocmFwcG9ydGV1cnMpKSB7XG4gICAgICBhc3NlcnQocmFwcG9ydGV1cnMpXG4gICAgICByYXBwb3J0ZXVycyA9IFtyYXBwb3J0ZXVyc11cbiAgICB9XG4gICAgYWN0ZUxlZ2lzbGF0aWYucmFwcG9ydGV1cnMgPSByYXBwb3J0ZXVyc1xuICAgIGZvciAoY29uc3QgcmFwcG9ydGV1ciBvZiByYXBwb3J0ZXVycykge1xuICAgICAgY2xlYW5SYXBwb3J0ZXVyKHJhcHBvcnRldXIpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVmZXJlbmNlTm9yID0gYWN0ZUxlZ2lzbGF0aWYucmVmZXJlbmNlTk9SXG4gIGlmIChyZWZlcmVuY2VOb3IgIT09IHVuZGVmaW5lZCkge1xuICAgIGFjdGVMZWdpc2xhdGlmLnJlZmVyZW5jZU5vciA9IHJlZmVyZW5jZU5vclxuICAgIGRlbGV0ZSBhY3RlTGVnaXNsYXRpZi5yZWZlcmVuY2VOT1JcbiAgfVxuXG4gIGFzc2VydC5zdHJpY3RFcXVhbChhY3RlTGVnaXNsYXRpZi5yZXVuaW9uLCB1bmRlZmluZWQpXG5cbiAgY29uc3Qgc3RhdHV0QWRvcHRpb24gPSBhY3RlTGVnaXNsYXRpZi5zdGF0dXRBZG9wdGlvblxuICBpZiAoc3RhdHV0QWRvcHRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgIGNsZWFuVHlwZURlY2xhcmF0aW9uKHN0YXR1dEFkb3B0aW9uKVxuICB9XG5cbiAgY29uc3Qgc3RhdHV0Q29uY2x1c2lvbiA9IGFjdGVMZWdpc2xhdGlmLnN0YXR1dENvbmNsdXNpb25cbiAgaWYgKHN0YXR1dENvbmNsdXNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgIGNsZWFuVHlwZURlY2xhcmF0aW9uKHN0YXR1dENvbmNsdXNpb24pXG4gICAgaWYgKHN0YXR1dENvbmNsdXNpb24uZmFtQ29kZSA9PT0gXCJUU09SVEZudWxsXCIpIHtcbiAgICAgIC8vIE9jY3VyZWQgb25jZSBpbiBodHRwczovL2dpdC5lbi1yb290Lm9yZy90cmljb3RldXNlcy9kYXRhL2Fzc2VtYmxlZS1icnV0L0Rvc3NpZXJzX0xlZ2lzbGF0aWZzX1hWL2NvbW1pdC84MzgzODAwZmU3ZDk5M2RhN2I1OTZjNWIyMGZhZGMzMWM0ZGYzODM1XG4gICAgICBkZWxldGUgYWN0ZUxlZ2lzbGF0aWYuc3RhdHV0Q29uY2x1c2lvblxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHRleHRlQWRvcHRlUmVmID0gYWN0ZUxlZ2lzbGF0aWYudGV4dGVBZG9wdGVcbiAgaWYgKHRleHRlQWRvcHRlUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICBkZWxldGUgYWN0ZUxlZ2lzbGF0aWYudGV4dGVBZG9wdGVcbiAgICBhY3RlTGVnaXNsYXRpZi50ZXh0ZUFkb3B0ZVJlZiA9IHRleHRlQWRvcHRlUmVmXG4gIH1cblxuICBjb25zdCB0ZXh0ZUFzc29jaWVSZWYgPSBhY3RlTGVnaXNsYXRpZi50ZXh0ZUFzc29jaWVcbiAgaWYgKHRleHRlQXNzb2NpZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZGVsZXRlIGFjdGVMZWdpc2xhdGlmLnRleHRlQXNzb2NpZVxuICAgIGFjdGVMZWdpc2xhdGlmLnRleHRlQXNzb2NpZVJlZiA9IHRleHRlQXNzb2NpZVJlZlxuICB9XG5cbiAgbGV0IHRleHRlc0Fzc29jaWVzID0gYWN0ZUxlZ2lzbGF0aWYudGV4dGVzQXNzb2NpZXNcbiAgaWYgKHRleHRlc0Fzc29jaWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICB0ZXh0ZXNBc3NvY2llcyA9IHRleHRlc0Fzc29jaWVzLnRleHRlQXNzb2NpZVxuICAgIGlmICghQXJyYXkuaXNBcnJheSh0ZXh0ZXNBc3NvY2llcykpIHtcbiAgICAgIGFzc2VydCh0ZXh0ZXNBc3NvY2llcylcbiAgICAgIHRleHRlc0Fzc29jaWVzID0gW3RleHRlc0Fzc29jaWVzXVxuICAgIH1cbiAgICBhY3RlTGVnaXNsYXRpZi50ZXh0ZXNBc3NvY2llcyA9IHRleHRlc0Fzc29jaWVzXG5cbiAgICBmb3IgKGNvbnN0IHRleHRlQXNzb2NpZSBvZiB0ZXh0ZXNBc3NvY2llcykge1xuICAgICAgY29uc3QgdGV4dGVBc3NvY2llUmVmID0gdGV4dGVBc3NvY2llLnJlZlRleHRlQXNzb2NpZVxuICAgICAgaWYgKHRleHRlQXNzb2NpZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRlbGV0ZSB0ZXh0ZUFzc29jaWUucmVmVGV4dGVBc3NvY2llXG4gICAgICAgIHRleHRlQXNzb2NpZS50ZXh0ZUFzc29jaWVSZWYgPSB0ZXh0ZUFzc29jaWVSZWZcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCB0eXBlRGVjbGFyYXRpb24gPSBhY3RlTGVnaXNsYXRpZi50eXBlRGVjbGFyYXRpb25cbiAgaWYgKHR5cGVEZWNsYXJhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2xlYW5UeXBlRGVjbGFyYXRpb24odHlwZURlY2xhcmF0aW9uKVxuICB9XG5cbiAgY29uc3QgdHlwZU1vdGlvbiA9IGFjdGVMZWdpc2xhdGlmLnR5cGVNb3Rpb25cbiAgaWYgKHR5cGVNb3Rpb24gIT09IHVuZGVmaW5lZCkge1xuICAgIGNsZWFuVHlwZURlY2xhcmF0aW9uKHR5cGVNb3Rpb24pXG4gIH1cblxuICBjb25zdCB0eXBlTW90aW9uQ2Vuc3VyZSA9IGFjdGVMZWdpc2xhdGlmLnR5cGVNb3Rpb25DZW5zdXJlXG4gIGlmICh0eXBlTW90aW9uQ2Vuc3VyZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY2xlYW5UeXBlRGVjbGFyYXRpb24odHlwZU1vdGlvbkNlbnN1cmUpXG4gIH1cblxuICBsZXQgdm90ZVJlZnMgPSBhY3RlTGVnaXNsYXRpZi52b3RlUmVmc1xuICBpZiAodm90ZVJlZnMgIT09IHVuZGVmaW5lZCkge1xuICAgIHZvdGVSZWZzID0gdm90ZVJlZnMudm90ZVJlZlxuICAgIGlmICghQXJyYXkuaXNBcnJheSh2b3RlUmVmcykpIHtcbiAgICAgIGFzc2VydCh2b3RlUmVmcylcbiAgICAgIHZvdGVSZWZzID0gW3ZvdGVSZWZzXVxuICAgIH1cbiAgICBhY3RlTGVnaXNsYXRpZi52b3RlUmVmcyA9IHZvdGVSZWZzXG4gIH1cblxuICAvL1xuXG4gIGxldCBhY3Rlc0xlZ2lzbGF0aWZzID0gYWN0ZUxlZ2lzbGF0aWYuYWN0ZXNMZWdpc2xhdGlmc1xuICBpZiAoYWN0ZXNMZWdpc2xhdGlmcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgYWN0ZXNMZWdpc2xhdGlmcyA9IGFjdGVzTGVnaXNsYXRpZnMuYWN0ZUxlZ2lzbGF0aWZcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYWN0ZXNMZWdpc2xhdGlmcykpIHtcbiAgICAgIGFzc2VydChhY3Rlc0xlZ2lzbGF0aWZzKVxuICAgICAgYWN0ZXNMZWdpc2xhdGlmcyA9IFthY3Rlc0xlZ2lzbGF0aWZzXVxuICAgIH1cbiAgICBhY3RlTGVnaXNsYXRpZi5hY3Rlc0xlZ2lzbGF0aWZzID0gYWN0ZXNMZWdpc2xhdGlmc1xuICAgIGZvciAoY29uc3QgYWN0ZUxlZ2lzbGF0aWYgb2YgYWN0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgY2xlYW5BY3RlTGVnaXNsYXRpZihhY3RlTGVnaXNsYXRpZilcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFuQWN0ZU91RG9zc2llckluaXRpYXRldXIoYWN0ZU91RG9zc2llcjogYW55KTogdm9pZCB7XG4gIGNvbnN0IGluaXRpYXRldXIgPSBhY3RlT3VEb3NzaWVyLmluaXRpYXRldXJcbiAgaWYgKGluaXRpYXRldXIgIT09IHVuZGVmaW5lZCkge1xuICAgIGxldCBhY3RldXJzID0gaW5pdGlhdGV1ci5hY3RldXJzXG4gICAgaWYgKGFjdGV1cnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYWN0ZXVycyA9IGFjdGV1cnMuYWN0ZXVyXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYWN0ZXVycykpIHtcbiAgICAgICAgYXNzZXJ0KGFjdGV1cnMpXG4gICAgICAgIGFjdGV1cnMgPSBbYWN0ZXVyc11cbiAgICAgIH1cbiAgICAgIGlmIChhY3RldXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaW5pdGlhdGV1ci5hY3RldXJzID0gYWN0ZXVyc1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVsZXRlIGluaXRpYXRldXIuYWN0ZXVyc1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBvcmdhbmVSZWYgPSBpbml0aWF0ZXVyLm9yZ2FuZXNcbiAgICBpZiAob3JnYW5lUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9yZ2FuZVJlZiA9IG9yZ2FuZVJlZi5vcmdhbmUub3JnYW5lUmVmLnVpZFxuICAgICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKG9yZ2FuZVJlZiwgdW5kZWZpbmVkKVxuICAgICAgaW5pdGlhdGV1ci5vcmdhbmVSZWYgPSBvcmdhbmVSZWZcbiAgICAgIGRlbGV0ZSBpbml0aWF0ZXVyLm9yZ2FuZXNcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBpbml0aWF0ZXVyLmFjdGV1cnMgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgaW5pdGlhdGV1ci5vcmdhbmVSZWYgPT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgZGVsZXRlIGFjdGVPdURvc3NpZXIuaW5pdGlhdGV1clxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjbGVhbkluZm9KbyhpbmZvSm86IGFueSk6IHZvaWQge1xuICBjbGVhblhtbEFydGVmYWN0cyhpbmZvSm8pXG5cbiAgY29uc3QgdHlwZUpvID0gaW5mb0pvLnR5cGVKT1xuICBpZiAodHlwZUpvICE9PSB1bmRlZmluZWQpIHtcbiAgICBpbmZvSm8udHlwZUpvID0gdHlwZUpvXG4gICAgZGVsZXRlIGluZm9Kby50eXBlSk9cbiAgfVxuXG4gIGNvbnN0IGRhdGVKbyA9IGluZm9Kby5kYXRlSk9cbiAgaWYgKGRhdGVKbyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaW5mb0pvLmRhdGVKbyA9IGRhdGVKb1xuICAgIGRlbGV0ZSBpbmZvSm8uZGF0ZUpPXG4gIH1cblxuICBhc3NlcnQuc3RyaWN0RXF1YWwoaW5mb0pvLnBhZ2VKTywgdW5kZWZpbmVkKVxuXG4gIGNvbnN0IG51bUpvID0gaW5mb0pvLm51bUpPXG4gIGlmIChudW1KbyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaW5mb0pvLm51bUpvID0gbnVtSm9cbiAgICBkZWxldGUgaW5mb0pvLm51bUpPXG4gIH1cblxuICBjb25zdCByZWZlcmVuY2VOb3IgPSBpbmZvSm8ucmVmZXJlbmNlTk9SXG4gIGlmIChyZWZlcmVuY2VOb3IgIT09IHVuZGVmaW5lZCkge1xuICAgIGluZm9Kby5yZWZlcmVuY2VOb3IgPSByZWZlcmVuY2VOb3JcbiAgICBkZWxldGUgaW5mb0pvLnJlZmVyZW5jZU5PUlxuICB9XG59XG5cbmZ1bmN0aW9uIGNsZWFuVHlwZURlY2xhcmF0aW9uKHR5cGVEZWNsYXJhdGlvbjogYW55KSB7XG4gIHR5cGVEZWNsYXJhdGlvbi5mYW1Db2RlID0gdHlwZURlY2xhcmF0aW9uLmZhbV9jb2RlXG4gIGRlbGV0ZSB0eXBlRGVjbGFyYXRpb24uZmFtX2NvZGVcbiAgYXNzZXJ0KHR5cGVEZWNsYXJhdGlvbi5mYW1Db2RlKVxuXG4gIGlmICghdHlwZURlY2xhcmF0aW9uLmxpYmVsbGUpIHtcbiAgICAvLyBPY2N1cmVkIG9uY2UgaW4gaHR0cHM6Ly9naXQuZW4tcm9vdC5vcmcvdHJpY290ZXVzZXMvZGF0YS9hc3NlbWJsZWUtYnJ1dC9Eb3NzaWVyc19MZWdpc2xhdGlmc19YVi9jb21taXQvODM4MzgwMGZlN2Q5OTNkYTdiNTk2YzViMjBmYWRjMzFjNGRmMzgzNTpcbiAgICAvLyBcInN0YXR1dENvbmNsdXNpb25cIjoge1xuICAgIC8vICAgXCJmYW1fY29kZVwiOiBcIlRTT1JURm51bGxcIlxuICAgIC8vIH0sXG4gICAgLy8gVGhpcyBmYW1Db2RlIGlzIGFuIGVycm9yLlxuICAgIHR5cGVEZWNsYXJhdGlvbi5saWJlbGxlID0gdHlwZURlY2xhcmF0aW9uLmZhbUNvZGVcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsUUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsSUFBQSxHQUFBRixPQUFBO0FBQXlDLFNBQUFELHVCQUFBSSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsZ0JBQUFBLENBQUE7QUFBQSxTQUFBRSwyQkFBQUMsQ0FBQSxFQUFBSCxDQUFBLFFBQUFJLENBQUEseUJBQUFDLE1BQUEsSUFBQUYsQ0FBQSxDQUFBRSxNQUFBLENBQUFDLFFBQUEsS0FBQUgsQ0FBQSxxQkFBQUMsQ0FBQSxRQUFBRyxLQUFBLENBQUFDLE9BQUEsQ0FBQUwsQ0FBQSxNQUFBQyxDQUFBLEdBQUFLLDJCQUFBLENBQUFOLENBQUEsTUFBQUgsQ0FBQSxJQUFBRyxDQUFBLHVCQUFBQSxDQUFBLENBQUFPLE1BQUEsSUFBQU4sQ0FBQSxLQUFBRCxDQUFBLEdBQUFDLENBQUEsT0FBQU8sRUFBQSxNQUFBQyxDQUFBLFlBQUFBLEVBQUEsZUFBQUMsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUEsRUFBQSxXQUFBSCxFQUFBLElBQUFSLENBQUEsQ0FBQU8sTUFBQSxLQUFBSyxJQUFBLFdBQUFBLElBQUEsTUFBQUMsS0FBQSxFQUFBYixDQUFBLENBQUFRLEVBQUEsVUFBQVgsQ0FBQSxXQUFBQSxFQUFBRyxDQUFBLFVBQUFBLENBQUEsS0FBQWMsQ0FBQSxFQUFBTCxDQUFBLGdCQUFBTSxTQUFBLGlKQUFBQyxDQUFBLEVBQUFDLENBQUEsT0FBQUMsQ0FBQSxnQkFBQVIsQ0FBQSxXQUFBQSxFQUFBLElBQUFULENBQUEsR0FBQUEs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