@tricoteuses/senat 1.3.1 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/config.d.ts +1 -0
- package/lib/config.js +14 -45
- package/lib/databases.js +86 -143
- package/lib/datasets.js +78 -83
- package/lib/index.d.ts +7 -4
- package/lib/index.js +42 -419
- package/lib/loaders.js +149 -654
- package/lib/model/ameli.js +83 -21
- package/lib/model/debats.js +0 -1
- package/lib/model/dosleg.d.ts +1 -1
- package/lib/model/dosleg.js +179 -73
- package/lib/model/index.d.ts +3 -3
- package/lib/model/index.js +12 -46
- package/lib/model/questions.js +68 -39
- package/lib/model/sens.js +383 -113
- package/lib/model/texte.js +220 -290
- package/lib/model/util.js +9 -26
- package/lib/raw_types/ameli.js +5 -6
- package/lib/raw_types/debats.js +5 -6
- package/lib/raw_types/dosleg.js +5 -6
- package/lib/raw_types/questions.js +5 -6
- package/lib/raw_types/sens.js +5 -6
- package/lib/raw_types_schemats/ameli.js +1 -43
- package/lib/raw_types_schemats/debats.js +1 -22
- package/lib/raw_types_schemats/dosleg.js +1 -96
- package/lib/raw_types_schemats/questions.js +1 -22
- package/lib/raw_types_schemats/sens.js +1 -112
- package/lib/scripts/convert_data.js +181 -631
- package/lib/scripts/datautil.js +17 -60
- package/lib/scripts/parse_textes.js +46 -129
- package/lib/scripts/retrieve_documents.js +247 -513
- package/lib/scripts/retrieve_open_data.js +211 -368
- package/lib/scripts/retrieve_senateurs_photos.js +144 -239
- package/lib/scripts/shared/cli_helpers.js +30 -30
- package/lib/scripts/shared/util.js +28 -94
- package/lib/strings.js +20 -45
- package/lib/types/ameli.d.ts +1 -1
- package/lib/types/ameli.js +14 -25
- package/lib/types/debats.d.ts +1 -1
- package/lib/types/debats.js +3 -21
- package/lib/types/dosleg.d.ts +1 -1
- package/lib/types/dosleg.js +152 -119
- package/lib/types/questions.d.ts +1 -1
- package/lib/types/questions.js +1 -13
- package/lib/types/sens.d.ts +1 -1
- package/lib/types/sens.js +1 -13
- package/lib/types/sessions.js +44 -49
- package/lib/types/texte.js +17 -22
- package/lib/validators/config.js +47 -111
- package/lib/validators/senat.js +1 -5
- package/package.json +16 -38
- package/lib/aggregates.d.ts +0 -52
- package/lib/aggregates.mjs +0 -930
- package/lib/aggregates.ts +0 -833
- package/lib/config.mjs +0 -16
- package/lib/config.ts +0 -26
- package/lib/data/legislatures.json +0 -38
- package/lib/databases.mjs +0 -57
- package/lib/databases.ts +0 -71
- package/lib/datasets.mjs +0 -78
- package/lib/datasets.ts +0 -118
- package/lib/fields.d.ts +0 -10
- package/lib/fields.mjs +0 -68
- package/lib/fields.ts +0 -29
- package/lib/index.mjs +0 -4
- package/lib/index.ts +0 -42
- package/lib/inserters.d.ts +0 -98
- package/lib/inserters.mjs +0 -500
- package/lib/inserters.ts +0 -521
- package/lib/loaders.mjs +0 -158
- package/lib/loaders.ts +0 -271
- package/lib/model/ameli.mjs +0 -84
- package/lib/model/ameli.ts +0 -100
- package/lib/model/debats.mjs +0 -1
- package/lib/model/debats.ts +0 -0
- package/lib/model/dosleg.mjs +0 -196
- package/lib/model/dosleg.ts +0 -240
- package/lib/model/index.mjs +0 -4
- package/lib/model/index.ts +0 -14
- package/lib/model/questions.mjs +0 -71
- package/lib/model/questions.ts +0 -93
- package/lib/model/sens.mjs +0 -415
- package/lib/model/sens.ts +0 -516
- package/lib/model/texte.mjs +0 -208
- package/lib/model/texte.ts +0 -229
- package/lib/model/util.mjs +0 -19
- package/lib/model/util.ts +0 -32
- package/lib/raw_types/ameli.mjs +0 -5
- package/lib/raw_types/ameli.ts +0 -951
- package/lib/raw_types/debats.mjs +0 -5
- package/lib/raw_types/debats.ts +0 -222
- package/lib/raw_types/dosleg.mjs +0 -5
- package/lib/raw_types/dosleg.ts +0 -3625
- package/lib/raw_types/questions.mjs +0 -5
- package/lib/raw_types/questions.ts +0 -427
- package/lib/raw_types/sens.mjs +0 -5
- package/lib/raw_types/sens.ts +0 -4499
- package/lib/raw_types_kysely/ameli.d.ts +0 -6
- package/lib/raw_types_kysely/ameli.mjs +0 -7
- package/lib/raw_types_kysely/ameli.ts +0 -6
- package/lib/raw_types_kysely/debats.d.ts +0 -6
- package/lib/raw_types_kysely/debats.mjs +0 -7
- package/lib/raw_types_kysely/debats.ts +0 -6
- package/lib/raw_types_kysely/dosleg.d.ts +0 -6
- package/lib/raw_types_kysely/dosleg.mjs +0 -7
- package/lib/raw_types_kysely/dosleg.ts +0 -6
- package/lib/raw_types_kysely/questions.d.ts +0 -6
- package/lib/raw_types_kysely/questions.mjs +0 -7
- package/lib/raw_types_kysely/questions.ts +0 -6
- package/lib/raw_types_kysely/sens.d.ts +0 -6
- package/lib/raw_types_kysely/sens.mjs +0 -7
- package/lib/raw_types_kysely/sens.ts +0 -6
- package/lib/raw_types_kysely/texte.d.ts +0 -45
- package/lib/raw_types_kysely/texte.mjs +0 -7
- package/lib/raw_types_kysely/texte.ts +0 -53
- package/lib/raw_types_schemats/ameli.mjs +0 -2
- package/lib/raw_types_schemats/ameli.ts +0 -601
- package/lib/raw_types_schemats/debats.mjs +0 -2
- package/lib/raw_types_schemats/debats.ts +0 -145
- package/lib/raw_types_schemats/dosleg.mjs +0 -2
- package/lib/raw_types_schemats/dosleg.ts +0 -2195
- package/lib/raw_types_schemats/questions.mjs +0 -2
- package/lib/raw_types_schemats/questions.ts +0 -251
- package/lib/raw_types_schemats/sens.mjs +0 -2
- package/lib/raw_types_schemats/sens.ts +0 -2907
- package/lib/scripts/convert_data.mjs +0 -181
- package/lib/scripts/convert_data.ts +0 -243
- package/lib/scripts/datautil.mjs +0 -16
- package/lib/scripts/datautil.ts +0 -19
- package/lib/scripts/images/transparent_150x192.jpg +0 -0
- package/lib/scripts/images/transparent_155x225.jpg +0 -0
- package/lib/scripts/parse_textes.mjs +0 -46
- package/lib/scripts/parse_textes.ts +0 -65
- package/lib/scripts/retrieve_documents.mjs +0 -249
- package/lib/scripts/retrieve_documents.ts +0 -298
- package/lib/scripts/retrieve_open_data.mjs +0 -217
- package/lib/scripts/retrieve_open_data.ts +0 -274
- package/lib/scripts/retrieve_senateurs_photos.mjs +0 -147
- package/lib/scripts/retrieve_senateurs_photos.ts +0 -177
- package/lib/scripts/retrieve_textes.d.ts +0 -1
- package/lib/scripts/retrieve_textes.mjs +0 -328
- package/lib/scripts/retrieve_textes.ts +0 -143
- package/lib/scripts/shared/cli_helpers.ts +0 -36
- package/lib/scripts/shared/util.ts +0 -33
- package/lib/src/aggregates.d.ts +0 -52
- package/lib/src/aggregates.mjs +0 -726
- package/lib/src/config.d.ts +0 -2
- package/lib/src/config.mjs +0 -16
- package/lib/src/databases.d.ts +0 -18
- package/lib/src/databases.mjs +0 -55
- package/lib/src/datasets.d.ts +0 -28
- package/lib/src/datasets.mjs +0 -78
- package/lib/src/fields.d.ts +0 -10
- package/lib/src/fields.mjs +0 -22
- package/lib/src/index.d.ts +0 -8
- package/lib/src/index.mjs +0 -7
- package/lib/src/inserters.d.ts +0 -98
- package/lib/src/inserters.mjs +0 -360
- package/lib/src/loaders.d.ts +0 -36
- package/lib/src/loaders.mjs +0 -107
- package/lib/src/model/ameli.d.ts +0 -4
- package/lib/src/model/ameli.js +0 -57
- package/lib/src/model/debats.d.ts +0 -4
- package/lib/src/model/debats.js +0 -43
- package/lib/src/model/dosleg.d.ts +0 -197
- package/lib/src/model/dosleg.js +0 -169
- package/lib/src/model/index.d.ts +0 -4
- package/lib/src/model/index.js +0 -4
- package/lib/src/model/questions.d.ts +0 -89
- package/lib/src/model/questions.js +0 -76
- package/lib/src/model/sens.d.ts +0 -390
- package/lib/src/model/sens.js +0 -339
- package/lib/src/model/texte.d.ts +0 -7
- package/lib/src/model/texte.js +0 -183
- package/lib/src/raw_types_kysely/ameli.d.ts +0 -915
- package/lib/src/raw_types_kysely/ameli.js +0 -5
- package/lib/src/raw_types_kysely/debats.d.ts +0 -207
- package/lib/src/raw_types_kysely/debats.js +0 -5
- package/lib/src/raw_types_kysely/dosleg.d.ts +0 -3532
- package/lib/src/raw_types_kysely/dosleg.js +0 -5
- package/lib/src/raw_types_kysely/questions.d.ts +0 -414
- package/lib/src/raw_types_kysely/questions.js +0 -5
- package/lib/src/raw_types_kysely/sens.d.ts +0 -4394
- package/lib/src/raw_types_kysely/sens.js +0 -5
- package/lib/src/raw_types_schemats/ameli.d.ts +0 -541
- package/lib/src/raw_types_schemats/ameli.js +0 -2
- package/lib/src/raw_types_schemats/debats.d.ts +0 -127
- package/lib/src/raw_types_schemats/debats.js +0 -2
- package/lib/src/raw_types_schemats/dosleg.d.ts +0 -2027
- package/lib/src/raw_types_schemats/dosleg.js +0 -2
- package/lib/src/raw_types_schemats/questions.d.ts +0 -231
- package/lib/src/raw_types_schemats/questions.js +0 -2
- package/lib/src/raw_types_schemats/sens.d.ts +0 -2709
- package/lib/src/raw_types_schemats/sens.js +0 -2
- package/lib/src/scripts/convert_data.d.ts +0 -1
- package/lib/src/scripts/convert_data.js +0 -95
- package/lib/src/scripts/datautil.d.ts +0 -5
- package/lib/src/scripts/datautil.js +0 -16
- package/lib/src/scripts/parse_textes.d.ts +0 -1
- package/lib/src/scripts/parse_textes.js +0 -47
- package/lib/src/scripts/retrieve_documents.d.ts +0 -1
- package/lib/src/scripts/retrieve_documents.js +0 -258
- package/lib/src/scripts/retrieve_open_data.d.ts +0 -1
- package/lib/src/scripts/retrieve_open_data.js +0 -214
- package/lib/src/scripts/retrieve_senateurs_photos.d.ts +0 -1
- package/lib/src/scripts/retrieve_senateurs_photos.js +0 -147
- package/lib/src/scripts/shared/cli_helpers.d.ts +0 -44
- package/lib/src/scripts/shared/cli_helpers.js +0 -32
- package/lib/src/scripts/shared/util.d.ts +0 -3
- package/lib/src/scripts/shared/util.js +0 -28
- package/lib/src/strings.d.ts +0 -1
- package/lib/src/strings.mjs +0 -18
- package/lib/src/types/ameli.d.ts +0 -10
- package/lib/src/types/ameli.js +0 -13
- package/lib/src/types/debats.d.ts +0 -4
- package/lib/src/types/debats.js +0 -2
- package/lib/src/types/dosleg.d.ts +0 -98
- package/lib/src/types/dosleg.js +0 -151
- package/lib/src/types/questions.d.ts +0 -2
- package/lib/src/types/questions.js +0 -1
- package/lib/src/types/sens.d.ts +0 -10
- package/lib/src/types/sens.js +0 -1
- package/lib/src/types/sessions.d.ts +0 -42
- package/lib/src/types/sessions.js +0 -43
- package/lib/src/types/texte.d.ts +0 -61
- package/lib/src/types/texte.js +0 -16
- package/lib/src/validators/config.d.ts +0 -1
- package/lib/src/validators/config.js +0 -54
- package/lib/src/validators/senat.d.ts +0 -0
- package/lib/src/validators/senat.js +0 -24
- package/lib/strings.mjs +0 -18
- package/lib/strings.ts +0 -26
- package/lib/types/ameli.mjs +0 -13
- package/lib/types/ameli.ts +0 -21
- package/lib/types/debats.mjs +0 -2
- package/lib/types/debats.ts +0 -6
- package/lib/types/dosleg.mjs +0 -151
- package/lib/types/dosleg.ts +0 -284
- package/lib/types/questions.mjs +0 -1
- package/lib/types/questions.ts +0 -3
- package/lib/types/sens.mjs +0 -1
- package/lib/types/sens.ts +0 -12
- package/lib/types/sessions.mjs +0 -43
- package/lib/types/sessions.ts +0 -42
- package/lib/types/texte.mjs +0 -16
- package/lib/types/texte.ts +0 -76
- package/lib/typings/windows-1252.d.js +0 -2
- package/lib/typings/windows-1252.d.mjs +0 -2
- package/lib/typings/windows-1252.d.ts +0 -11
- package/lib/validators/config.mjs +0 -54
- package/lib/validators/config.ts +0 -79
- package/lib/validators/senat.mjs +0 -24
- package/lib/validators/senat.ts +0 -26
package/lib/loaders.js
CHANGED
|
@@ -1,682 +1,177 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
require("core-js/modules/es.symbol.to-primitive.js");
|
|
8
|
-
require("core-js/modules/es.array.for-each.js");
|
|
9
|
-
require("core-js/modules/es.array.from.js");
|
|
10
|
-
require("core-js/modules/es.array.is-array.js");
|
|
11
|
-
require("core-js/modules/es.array.iterator.js");
|
|
12
|
-
require("core-js/modules/es.array.slice.js");
|
|
13
|
-
require("core-js/modules/es.date.to-primitive.js");
|
|
14
|
-
require("core-js/modules/es.number.constructor.js");
|
|
15
|
-
require("core-js/modules/es.object.create.js");
|
|
16
|
-
require("core-js/modules/es.object.define-properties.js");
|
|
17
|
-
require("core-js/modules/es.object.define-property.js");
|
|
18
|
-
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
|
19
|
-
require("core-js/modules/es.object.get-own-property-descriptors.js");
|
|
20
|
-
require("core-js/modules/es.object.get-prototype-of.js");
|
|
21
|
-
require("core-js/modules/es.object.set-prototype-of.js");
|
|
22
|
-
require("core-js/modules/es.promise.js");
|
|
23
|
-
require("core-js/modules/es.regexp.exec.js");
|
|
24
|
-
require("core-js/modules/es.string.iterator.js");
|
|
25
|
-
require("core-js/modules/web.dom-collections.for-each.js");
|
|
26
|
-
require("core-js/modules/web.dom-collections.iterator.js");
|
|
27
|
-
Object.defineProperty(exports, "__esModule", {
|
|
28
|
-
value: true
|
|
29
|
-
});
|
|
30
|
-
exports.DOSLEG_DOSSIERS_FOLDER = exports.DOCUMENT_METADATA_FILE = void 0;
|
|
31
|
-
Object.defineProperty(exports, "EnabledDatasets", {
|
|
32
|
-
enumerable: true,
|
|
33
|
-
get: function get() {
|
|
34
|
-
return _datasets.EnabledDatasets;
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
exports.TEXTE_TRANSFORMED_FOLDER = exports.TEXTE_ORIGINAL_FOLDER = exports.TEXTE_FOLDER = exports.SENS_SENATEURS_FOLDER = exports.SENS_ORGANISMES_FOLDER = exports.SENS_CIRCONSCRIPTIONS_FOLDER = exports.RAPPORT_FOLDER = void 0;
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.RAPPORT_FOLDER = exports.DOCUMENT_METADATA_FILE = exports.TEXTE_TRANSFORMED_FOLDER = exports.TEXTE_ORIGINAL_FOLDER = exports.TEXTE_FOLDER = exports.SENS_SENATEURS_FOLDER = exports.SENS_ORGANISMES_FOLDER = exports.SENS_CIRCONSCRIPTIONS_FOLDER = exports.DOSLEG_DOSSIERS_FOLDER = exports.EnabledDatasets = void 0;
|
|
38
7
|
exports.iterFilePaths = iterFilePaths;
|
|
39
8
|
exports.iterLoadSenatAmendements = iterLoadSenatAmendements;
|
|
40
|
-
exports.iterLoadSenatCirconscriptions = iterLoadSenatCirconscriptions;
|
|
41
9
|
exports.iterLoadSenatDossiersLegislatifs = iterLoadSenatDossiersLegislatifs;
|
|
42
|
-
exports.iterLoadSenatDossiersLegislatifsRapportUrls = iterLoadSenatDossiersLegislatifsRapportUrls;
|
|
43
10
|
exports.iterLoadSenatDossiersLegislatifsTexteUrls = iterLoadSenatDossiersLegislatifsTexteUrls;
|
|
11
|
+
exports.iterLoadSenatDossiersLegislatifsRapportUrls = iterLoadSenatDossiersLegislatifsRapportUrls;
|
|
44
12
|
exports.iterLoadSenatDossiersLegislatifsTextes = iterLoadSenatDossiersLegislatifsTextes;
|
|
13
|
+
exports.loadSenatTexteContent = loadSenatTexteContent;
|
|
45
14
|
exports.iterLoadSenatOrganismes = iterLoadSenatOrganismes;
|
|
46
|
-
exports.iterLoadSenatQuestions = iterLoadSenatQuestions;
|
|
47
15
|
exports.iterLoadSenatSenateurs = iterLoadSenatSenateurs;
|
|
48
|
-
exports.
|
|
49
|
-
|
|
50
|
-
require("
|
|
51
|
-
require("
|
|
52
|
-
require("
|
|
53
|
-
require("
|
|
54
|
-
require("
|
|
55
|
-
require("
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
function
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
_marked2 = /*#__PURE__*/_regeneratorRuntime().mark(iterLoadSenatDossiersLegislatifsTexteUrls),
|
|
72
|
-
_marked3 = /*#__PURE__*/_regeneratorRuntime().mark(iterLoadSenatDossiersLegislatifsRapportUrls);
|
|
73
|
-
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; } } }; }
|
|
74
|
-
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; } }
|
|
75
|
-
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; }
|
|
76
|
-
var DOSLEG_DOSSIERS_FOLDER = exports.DOSLEG_DOSSIERS_FOLDER = "dossiers";
|
|
77
|
-
var SENS_CIRCONSCRIPTIONS_FOLDER = exports.SENS_CIRCONSCRIPTIONS_FOLDER = "circonscriptions";
|
|
78
|
-
var SENS_ORGANISMES_FOLDER = exports.SENS_ORGANISMES_FOLDER = "organismes";
|
|
79
|
-
var SENS_SENATEURS_FOLDER = exports.SENS_SENATEURS_FOLDER = "senateurs";
|
|
80
|
-
var TEXTE_FOLDER = exports.TEXTE_FOLDER = "leg";
|
|
81
|
-
var TEXTE_ORIGINAL_FOLDER = exports.TEXTE_ORIGINAL_FOLDER = "original";
|
|
82
|
-
var TEXTE_TRANSFORMED_FOLDER = exports.TEXTE_TRANSFORMED_FOLDER = "transformed";
|
|
83
|
-
var DOCUMENT_METADATA_FILE = exports.DOCUMENT_METADATA_FILE = "metadata.json";
|
|
84
|
-
var RAPPORT_FOLDER = exports.RAPPORT_FOLDER = "rap";
|
|
85
|
-
function iterFilePaths(dirPath) {
|
|
86
|
-
var files, _iterator, _step, file;
|
|
87
|
-
return _regeneratorRuntime().wrap(function iterFilePaths$(_context) {
|
|
88
|
-
while (1) switch (_context.prev = _context.next) {
|
|
89
|
-
case 0:
|
|
90
|
-
if (!(dirPath && _fs["default"].existsSync(dirPath))) {
|
|
91
|
-
_context.next = 20;
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
files = _fs["default"].readdirSync(dirPath, {
|
|
95
|
-
withFileTypes: true,
|
|
96
|
-
recursive: true
|
|
16
|
+
exports.iterLoadSenatCirconscriptions = iterLoadSenatCirconscriptions;
|
|
17
|
+
exports.iterLoadSenatQuestions = iterLoadSenatQuestions;
|
|
18
|
+
const fs_1 = __importDefault(require("fs"));
|
|
19
|
+
const path_1 = __importDefault(require("path"));
|
|
20
|
+
const legislatures_json_1 = __importDefault(require("./legislatures.json"));
|
|
21
|
+
const datasets_1 = require("./datasets");
|
|
22
|
+
const datautil_1 = require("./scripts/datautil");
|
|
23
|
+
var datasets_2 = require("./datasets");
|
|
24
|
+
Object.defineProperty(exports, "EnabledDatasets", { enumerable: true, get: function () { return datasets_2.EnabledDatasets; } });
|
|
25
|
+
exports.DOSLEG_DOSSIERS_FOLDER = "dossiers";
|
|
26
|
+
exports.SENS_CIRCONSCRIPTIONS_FOLDER = "circonscriptions";
|
|
27
|
+
exports.SENS_ORGANISMES_FOLDER = "organismes";
|
|
28
|
+
exports.SENS_SENATEURS_FOLDER = "senateurs";
|
|
29
|
+
exports.TEXTE_FOLDER = "leg";
|
|
30
|
+
exports.TEXTE_ORIGINAL_FOLDER = "original";
|
|
31
|
+
exports.TEXTE_TRANSFORMED_FOLDER = "transformed";
|
|
32
|
+
exports.DOCUMENT_METADATA_FILE = "metadata.json";
|
|
33
|
+
exports.RAPPORT_FOLDER = "rap";
|
|
34
|
+
function* iterFilePaths(dirPath) {
|
|
35
|
+
if (dirPath && fs_1.default.existsSync(dirPath)) {
|
|
36
|
+
const files = fs_1.default.readdirSync(dirPath, {
|
|
37
|
+
withFileTypes: true,
|
|
38
|
+
recursive: true,
|
|
97
39
|
});
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
if ((_step = _iterator.n()).done) {
|
|
103
|
-
_context.next = 12;
|
|
104
|
-
break;
|
|
40
|
+
for (const file of files) {
|
|
41
|
+
if (file.isFile()) {
|
|
42
|
+
yield path_1.default.join(file.parentPath, file.name);
|
|
43
|
+
}
|
|
105
44
|
}
|
|
106
|
-
file = _step.value;
|
|
107
|
-
if (!file.isFile()) {
|
|
108
|
-
_context.next = 10;
|
|
109
|
-
break;
|
|
110
|
-
}
|
|
111
|
-
_context.next = 10;
|
|
112
|
-
return _path["default"].join(file.parentPath, file.name);
|
|
113
|
-
case 10:
|
|
114
|
-
_context.next = 5;
|
|
115
|
-
break;
|
|
116
|
-
case 12:
|
|
117
|
-
_context.next = 17;
|
|
118
|
-
break;
|
|
119
|
-
case 14:
|
|
120
|
-
_context.prev = 14;
|
|
121
|
-
_context.t0 = _context["catch"](3);
|
|
122
|
-
_iterator.e(_context.t0);
|
|
123
|
-
case 17:
|
|
124
|
-
_context.prev = 17;
|
|
125
|
-
_iterator.f();
|
|
126
|
-
return _context.finish(17);
|
|
127
|
-
case 20:
|
|
128
|
-
case "end":
|
|
129
|
-
return _context.stop();
|
|
130
45
|
}
|
|
131
|
-
}, _marked, null, [[3, 14, 17, 20]]);
|
|
132
46
|
}
|
|
133
|
-
function iterLoadSenatItems(dataDir, dataset, legislatureOrSession, subDir) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
_context2.next = 16;
|
|
155
|
-
break;
|
|
156
|
-
}
|
|
157
|
-
filePath = _step2.value;
|
|
158
|
-
if (log) {
|
|
159
|
-
console.log("Loading file: ".concat(filePath, "\u2026"));
|
|
160
|
-
}
|
|
161
|
-
itemJson = _fs["default"].readFileSync(filePath, {
|
|
162
|
-
encoding: "utf8"
|
|
163
|
-
});
|
|
164
|
-
item = JSON.parse(itemJson);
|
|
165
|
-
filePathFromDataset = filePath.substring(filePath.indexOf(dataset.database) + dataset.database.length);
|
|
166
|
-
_context2.next = 14;
|
|
167
|
-
return {
|
|
168
|
-
item: item,
|
|
169
|
-
filePathFromDataset: filePathFromDataset,
|
|
170
|
-
legislature: legislatureOrSession
|
|
171
|
-
};
|
|
172
|
-
case 14:
|
|
173
|
-
_context2.next = 6;
|
|
174
|
-
break;
|
|
175
|
-
case 16:
|
|
176
|
-
_context2.next = 21;
|
|
177
|
-
break;
|
|
178
|
-
case 18:
|
|
179
|
-
_context2.prev = 18;
|
|
180
|
-
_context2.t0 = _context2["catch"](4);
|
|
181
|
-
_iterator2.e(_context2.t0);
|
|
182
|
-
case 21:
|
|
183
|
-
_context2.prev = 21;
|
|
184
|
-
_iterator2.f();
|
|
185
|
-
return _context2.finish(21);
|
|
186
|
-
case 24:
|
|
187
|
-
case "end":
|
|
188
|
-
return _context2.stop();
|
|
189
|
-
}
|
|
190
|
-
}, _callee, null, [[4, 18, 21, 24]]);
|
|
191
|
-
})();
|
|
47
|
+
function* iterLoadSenatItems(dataDir, dataset, legislatureOrSession, subDir, { log = false } = {}) {
|
|
48
|
+
let itemsDir = path_1.default.join(dataDir, dataset.database);
|
|
49
|
+
if (subDir) {
|
|
50
|
+
itemsDir = path_1.default.join(itemsDir, subDir);
|
|
51
|
+
}
|
|
52
|
+
if (legislatureOrSession) {
|
|
53
|
+
itemsDir = path_1.default.join(itemsDir, String(legislatureOrSession));
|
|
54
|
+
}
|
|
55
|
+
for (const filePath of iterFilePaths(itemsDir)) {
|
|
56
|
+
if (log) {
|
|
57
|
+
console.log(`Loading file: ${filePath}…`);
|
|
58
|
+
}
|
|
59
|
+
const itemJson = fs_1.default.readFileSync(filePath, { encoding: "utf8" });
|
|
60
|
+
const item = JSON.parse(itemJson);
|
|
61
|
+
const filePathFromDataset = filePath.substring(filePath.indexOf(dataset.database) + dataset.database.length);
|
|
62
|
+
yield {
|
|
63
|
+
item,
|
|
64
|
+
filePathFromDataset,
|
|
65
|
+
legislature: legislatureOrSession,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
192
68
|
}
|
|
193
|
-
function iterLoadSenatAmendements(dataDir, session) {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
return _regeneratorRuntime().wrap(function _callee2$(_context3) {
|
|
198
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
199
|
-
case 0:
|
|
200
|
-
_iterator3 = _createForOfIteratorHelper(iterLoadSenatItems(dataDir, _datasets.datasets.ameli, session, undefined, options));
|
|
201
|
-
_context3.prev = 1;
|
|
202
|
-
_iterator3.s();
|
|
203
|
-
case 3:
|
|
204
|
-
if ((_step3 = _iterator3.n()).done) {
|
|
205
|
-
_context3.next = 9;
|
|
206
|
-
break;
|
|
207
|
-
}
|
|
208
|
-
amendementItem = _step3.value;
|
|
209
|
-
_context3.next = 7;
|
|
210
|
-
return amendementItem;
|
|
211
|
-
case 7:
|
|
212
|
-
_context3.next = 3;
|
|
213
|
-
break;
|
|
214
|
-
case 9:
|
|
215
|
-
_context3.next = 14;
|
|
216
|
-
break;
|
|
217
|
-
case 11:
|
|
218
|
-
_context3.prev = 11;
|
|
219
|
-
_context3.t0 = _context3["catch"](1);
|
|
220
|
-
_iterator3.e(_context3.t0);
|
|
221
|
-
case 14:
|
|
222
|
-
_context3.prev = 14;
|
|
223
|
-
_iterator3.f();
|
|
224
|
-
return _context3.finish(14);
|
|
225
|
-
case 17:
|
|
226
|
-
case "end":
|
|
227
|
-
return _context3.stop();
|
|
228
|
-
}
|
|
229
|
-
}, _callee2, null, [[1, 11, 14, 17]]);
|
|
230
|
-
})();
|
|
69
|
+
function* iterLoadSenatAmendements(dataDir, session, options = {}) {
|
|
70
|
+
for (const amendementItem of iterLoadSenatItems(dataDir, datasets_1.datasets.ameli, session, undefined, options)) {
|
|
71
|
+
yield amendementItem;
|
|
72
|
+
}
|
|
231
73
|
}
|
|
232
|
-
function iterLoadSenatDossiersLegislatifs(dataDir, session) {
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
return _regeneratorRuntime().wrap(function _callee3$(_context4) {
|
|
237
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
238
|
-
case 0:
|
|
239
|
-
_iterator4 = _createForOfIteratorHelper(iterLoadSenatItems(dataDir, _datasets.datasets.dosleg, session, DOSLEG_DOSSIERS_FOLDER, options));
|
|
240
|
-
_context4.prev = 1;
|
|
241
|
-
_iterator4.s();
|
|
242
|
-
case 3:
|
|
243
|
-
if ((_step4 = _iterator4.n()).done) {
|
|
244
|
-
_context4.next = 9;
|
|
245
|
-
break;
|
|
246
|
-
}
|
|
247
|
-
dossierLegislatifItem = _step4.value;
|
|
248
|
-
_context4.next = 7;
|
|
249
|
-
return dossierLegislatifItem;
|
|
250
|
-
case 7:
|
|
251
|
-
_context4.next = 3;
|
|
252
|
-
break;
|
|
253
|
-
case 9:
|
|
254
|
-
_context4.next = 14;
|
|
255
|
-
break;
|
|
256
|
-
case 11:
|
|
257
|
-
_context4.prev = 11;
|
|
258
|
-
_context4.t0 = _context4["catch"](1);
|
|
259
|
-
_iterator4.e(_context4.t0);
|
|
260
|
-
case 14:
|
|
261
|
-
_context4.prev = 14;
|
|
262
|
-
_iterator4.f();
|
|
263
|
-
return _context4.finish(14);
|
|
264
|
-
case 17:
|
|
265
|
-
case "end":
|
|
266
|
-
return _context4.stop();
|
|
267
|
-
}
|
|
268
|
-
}, _callee3, null, [[1, 11, 14, 17]]);
|
|
269
|
-
})();
|
|
74
|
+
function* iterLoadSenatDossiersLegislatifs(dataDir, session, options = {}) {
|
|
75
|
+
for (const dossierLegislatifItem of iterLoadSenatItems(dataDir, datasets_1.datasets.dosleg, session, exports.DOSLEG_DOSSIERS_FOLDER, options)) {
|
|
76
|
+
yield dossierLegislatifItem;
|
|
77
|
+
}
|
|
270
78
|
}
|
|
271
|
-
function iterLoadSenatDossiersLegislatifsTexteUrls(dataDir, session) {
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
if ((_step5 = _iterator5.n()).done) {
|
|
285
|
-
_context5.next = 15;
|
|
286
|
-
break;
|
|
287
|
-
}
|
|
288
|
-
filePath = _step5.value;
|
|
289
|
-
parsedFilePath = _path["default"].parse(filePath);
|
|
290
|
-
if (!(parsedFilePath.base === DOCUMENT_METADATA_FILE)) {
|
|
291
|
-
_context5.next = 13;
|
|
292
|
-
break;
|
|
79
|
+
function* iterLoadSenatDossiersLegislatifsTexteUrls(dataDir, session) {
|
|
80
|
+
let itemsDir = path_1.default.join(dataDir, exports.TEXTE_FOLDER, exports.TEXTE_ORIGINAL_FOLDER);
|
|
81
|
+
if (session) {
|
|
82
|
+
itemsDir = path_1.default.join(itemsDir, session.toString());
|
|
83
|
+
}
|
|
84
|
+
for (const filePath of iterFilePaths(itemsDir)) {
|
|
85
|
+
const parsedFilePath = path_1.default.parse(filePath);
|
|
86
|
+
if (parsedFilePath.base === exports.DOCUMENT_METADATA_FILE) {
|
|
87
|
+
const itemJson = fs_1.default.readFileSync(filePath, { encoding: "utf8" });
|
|
88
|
+
const item = JSON.parse(itemJson);
|
|
89
|
+
yield {
|
|
90
|
+
item,
|
|
91
|
+
};
|
|
293
92
|
}
|
|
294
|
-
itemJson = _fs["default"].readFileSync(filePath, {
|
|
295
|
-
encoding: "utf8"
|
|
296
|
-
});
|
|
297
|
-
item = JSON.parse(itemJson);
|
|
298
|
-
_context5.next = 13;
|
|
299
|
-
return {
|
|
300
|
-
item: item
|
|
301
|
-
};
|
|
302
|
-
case 13:
|
|
303
|
-
_context5.next = 5;
|
|
304
|
-
break;
|
|
305
|
-
case 15:
|
|
306
|
-
_context5.next = 20;
|
|
307
|
-
break;
|
|
308
|
-
case 17:
|
|
309
|
-
_context5.prev = 17;
|
|
310
|
-
_context5.t0 = _context5["catch"](3);
|
|
311
|
-
_iterator5.e(_context5.t0);
|
|
312
|
-
case 20:
|
|
313
|
-
_context5.prev = 20;
|
|
314
|
-
_iterator5.f();
|
|
315
|
-
return _context5.finish(20);
|
|
316
|
-
case 23:
|
|
317
|
-
case "end":
|
|
318
|
-
return _context5.stop();
|
|
319
93
|
}
|
|
320
|
-
}, _marked2, null, [[3, 17, 20, 23]]);
|
|
321
94
|
}
|
|
322
|
-
function iterLoadSenatDossiersLegislatifsRapportUrls(dataDir, session) {
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
if ((_step6 = _iterator6.n()).done) {
|
|
336
|
-
_context6.next = 15;
|
|
337
|
-
break;
|
|
338
|
-
}
|
|
339
|
-
filePath = _step6.value;
|
|
340
|
-
parsedFilePath = _path["default"].parse(filePath);
|
|
341
|
-
if (!(parsedFilePath.base === DOCUMENT_METADATA_FILE)) {
|
|
342
|
-
_context6.next = 13;
|
|
343
|
-
break;
|
|
95
|
+
function* iterLoadSenatDossiersLegislatifsRapportUrls(dataDir, session) {
|
|
96
|
+
let itemsDir = path_1.default.join(dataDir, exports.RAPPORT_FOLDER);
|
|
97
|
+
if (session) {
|
|
98
|
+
itemsDir = path_1.default.join(itemsDir, session.toString());
|
|
99
|
+
}
|
|
100
|
+
for (const filePath of iterFilePaths(itemsDir)) {
|
|
101
|
+
const parsedFilePath = path_1.default.parse(filePath);
|
|
102
|
+
if (parsedFilePath.base === exports.DOCUMENT_METADATA_FILE) {
|
|
103
|
+
const itemJson = fs_1.default.readFileSync(filePath, { encoding: "utf8" });
|
|
104
|
+
const item = JSON.parse(itemJson);
|
|
105
|
+
yield {
|
|
106
|
+
item,
|
|
107
|
+
};
|
|
344
108
|
}
|
|
345
|
-
itemJson = _fs["default"].readFileSync(filePath, {
|
|
346
|
-
encoding: "utf8"
|
|
347
|
-
});
|
|
348
|
-
item = JSON.parse(itemJson);
|
|
349
|
-
_context6.next = 13;
|
|
350
|
-
return {
|
|
351
|
-
item: item
|
|
352
|
-
};
|
|
353
|
-
case 13:
|
|
354
|
-
_context6.next = 5;
|
|
355
|
-
break;
|
|
356
|
-
case 15:
|
|
357
|
-
_context6.next = 20;
|
|
358
|
-
break;
|
|
359
|
-
case 17:
|
|
360
|
-
_context6.prev = 17;
|
|
361
|
-
_context6.t0 = _context6["catch"](3);
|
|
362
|
-
_iterator6.e(_context6.t0);
|
|
363
|
-
case 20:
|
|
364
|
-
_context6.prev = 20;
|
|
365
|
-
_iterator6.f();
|
|
366
|
-
return _context6.finish(20);
|
|
367
|
-
case 23:
|
|
368
|
-
case "end":
|
|
369
|
-
return _context6.stop();
|
|
370
109
|
}
|
|
371
|
-
}, _marked3, null, [[3, 17, 20, 23]]);
|
|
372
110
|
}
|
|
373
|
-
function iterLoadSenatDossiersLegislatifsTextes(dataDir, session) {
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
});
|
|
401
|
-
_iterator9 = _createForOfIteratorHelper(lecturesSenat);
|
|
402
|
-
_context7.prev = 12;
|
|
403
|
-
_iterator9.s();
|
|
404
|
-
case 14:
|
|
405
|
-
if ((_step9 = _iterator9.n()).done) {
|
|
406
|
-
_context7.next = 38;
|
|
407
|
-
break;
|
|
408
|
-
}
|
|
409
|
-
lectureSenat = _step9.value;
|
|
410
|
-
_iterator0 = _createForOfIteratorHelper(lectureSenat.textes);
|
|
411
|
-
_context7.prev = 17;
|
|
412
|
-
_iterator0.s();
|
|
413
|
-
case 19:
|
|
414
|
-
if ((_step0 = _iterator0.n()).done) {
|
|
415
|
-
_context7.next = 28;
|
|
416
|
-
break;
|
|
417
|
-
}
|
|
418
|
-
texte = _step0.value;
|
|
419
|
-
enrichedTexte = _objectSpread({
|
|
420
|
-
signet_dossier: dossierLegislatif.signet,
|
|
421
|
-
url_dossier_senat: dossierLegislatif.url,
|
|
422
|
-
url_dossier_assemblee_nationale: dossierLegislatif.url_dossier_assemblee_nationale,
|
|
423
|
-
type_lecture: lecture.type_lecture,
|
|
424
|
-
libelle_lecture: lecture.libelle,
|
|
425
|
-
libelle_organisme: lectureSenat.libelle_organisme
|
|
426
|
-
}, texte);
|
|
427
|
-
texteItem = {
|
|
428
|
-
item: enrichedTexte
|
|
429
|
-
};
|
|
430
|
-
if (texte.url) {
|
|
431
|
-
texteName = _path["default"].parse(texte.url).name;
|
|
432
|
-
texteItem.filePathFromDataset = _path["default"].join("".concat((_texte$session = texte.session) !== null && _texte$session !== void 0 ? _texte$session : _datautil.UNDEFINED_SESSION), texteName, "".concat(texteName, ".pdf"));
|
|
433
|
-
}
|
|
434
|
-
_context7.next = 26;
|
|
435
|
-
return texteItem;
|
|
436
|
-
case 26:
|
|
437
|
-
_context7.next = 19;
|
|
438
|
-
break;
|
|
439
|
-
case 28:
|
|
440
|
-
_context7.next = 33;
|
|
441
|
-
break;
|
|
442
|
-
case 30:
|
|
443
|
-
_context7.prev = 30;
|
|
444
|
-
_context7.t0 = _context7["catch"](17);
|
|
445
|
-
_iterator0.e(_context7.t0);
|
|
446
|
-
case 33:
|
|
447
|
-
_context7.prev = 33;
|
|
448
|
-
_iterator0.f();
|
|
449
|
-
return _context7.finish(33);
|
|
450
|
-
case 36:
|
|
451
|
-
_context7.next = 14;
|
|
452
|
-
break;
|
|
453
|
-
case 38:
|
|
454
|
-
_context7.next = 43;
|
|
455
|
-
break;
|
|
456
|
-
case 40:
|
|
457
|
-
_context7.prev = 40;
|
|
458
|
-
_context7.t1 = _context7["catch"](12);
|
|
459
|
-
_iterator9.e(_context7.t1);
|
|
460
|
-
case 43:
|
|
461
|
-
_context7.prev = 43;
|
|
462
|
-
_iterator9.f();
|
|
463
|
-
return _context7.finish(43);
|
|
464
|
-
case 46:
|
|
465
|
-
_context7.next = 8;
|
|
466
|
-
break;
|
|
467
|
-
case 48:
|
|
468
|
-
_context7.next = 53;
|
|
469
|
-
break;
|
|
470
|
-
case 50:
|
|
471
|
-
_context7.prev = 50;
|
|
472
|
-
_context7.t2 = _context7["catch"](6);
|
|
473
|
-
_iterator8.e(_context7.t2);
|
|
474
|
-
case 53:
|
|
475
|
-
_context7.prev = 53;
|
|
476
|
-
_iterator8.f();
|
|
477
|
-
return _context7.finish(53);
|
|
478
|
-
case 56:
|
|
479
|
-
_context7.next = 3;
|
|
480
|
-
break;
|
|
481
|
-
case 58:
|
|
482
|
-
_context7.next = 63;
|
|
483
|
-
break;
|
|
484
|
-
case 60:
|
|
485
|
-
_context7.prev = 60;
|
|
486
|
-
_context7.t3 = _context7["catch"](1);
|
|
487
|
-
_iterator7.e(_context7.t3);
|
|
488
|
-
case 63:
|
|
489
|
-
_context7.prev = 63;
|
|
490
|
-
_iterator7.f();
|
|
491
|
-
return _context7.finish(63);
|
|
492
|
-
case 66:
|
|
493
|
-
case "end":
|
|
494
|
-
return _context7.stop();
|
|
495
|
-
}
|
|
496
|
-
}, _callee4, null, [[1, 60, 63, 66], [6, 50, 53, 56], [12, 40, 43, 46], [17, 30, 33, 36]]);
|
|
497
|
-
})();
|
|
111
|
+
function* iterLoadSenatDossiersLegislatifsTextes(dataDir, session, options = {}) {
|
|
112
|
+
for (const { item: dossierLegislatif } of iterLoadSenatDossiersLegislatifs(dataDir, session, options)) {
|
|
113
|
+
for (const lecture of dossierLegislatif.lectures) {
|
|
114
|
+
const lecturesSenat = lecture.lectures_assemblee.filter((lectureAssemblee) => lectureAssemblee.assemblee === "Sénat");
|
|
115
|
+
for (const lectureSenat of lecturesSenat) {
|
|
116
|
+
for (const texte of lectureSenat.textes) {
|
|
117
|
+
const enrichedTexte = {
|
|
118
|
+
signet_dossier: dossierLegislatif.signet,
|
|
119
|
+
url_dossier_senat: dossierLegislatif.url,
|
|
120
|
+
url_dossier_assemblee_nationale: dossierLegislatif.url_dossier_assemblee_nationale,
|
|
121
|
+
type_lecture: lecture.type_lecture,
|
|
122
|
+
libelle_lecture: lecture.libelle,
|
|
123
|
+
libelle_organisme: lectureSenat.libelle_organisme,
|
|
124
|
+
...texte,
|
|
125
|
+
};
|
|
126
|
+
const texteItem = {
|
|
127
|
+
item: enrichedTexte,
|
|
128
|
+
};
|
|
129
|
+
if (texte.url) {
|
|
130
|
+
const texteName = path_1.default.parse(texte.url).name;
|
|
131
|
+
texteItem.filePathFromDataset = path_1.default.join(`${texte.session ?? datautil_1.UNDEFINED_SESSION}`, texteName, `${texteName}.pdf`);
|
|
132
|
+
}
|
|
133
|
+
yield texteItem;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
498
138
|
}
|
|
499
139
|
function loadSenatTexteContent(dataDir, textePathFromDataset) {
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
};
|
|
507
|
-
|
|
508
|
-
var texteJson = _fs["default"].readFileSync(fullTextePath, {
|
|
509
|
-
encoding: "utf8"
|
|
510
|
-
});
|
|
511
|
-
return {
|
|
512
|
-
item: JSON.parse(texteJson)
|
|
513
|
-
};
|
|
140
|
+
const parsedTextePath = path_1.default.parse(textePathFromDataset);
|
|
141
|
+
const jsonTexteName = `${parsedTextePath.name}.json`;
|
|
142
|
+
const fullTextePath = path_1.default.join(dataDir, exports.TEXTE_FOLDER, exports.TEXTE_TRANSFORMED_FOLDER, parsedTextePath.dir, jsonTexteName);
|
|
143
|
+
if (!fs_1.default.existsSync(fullTextePath)) {
|
|
144
|
+
return { item: null };
|
|
145
|
+
}
|
|
146
|
+
const texteJson = fs_1.default.readFileSync(fullTextePath, { encoding: "utf8" });
|
|
147
|
+
return { item: JSON.parse(texteJson) };
|
|
514
148
|
}
|
|
515
|
-
function iterLoadSenatOrganismes(dataDir) {
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
return _regeneratorRuntime().wrap(function _callee5$(_context8) {
|
|
520
|
-
while (1) switch (_context8.prev = _context8.next) {
|
|
521
|
-
case 0:
|
|
522
|
-
_iterator1 = _createForOfIteratorHelper(iterLoadSenatItems(dataDir, _datasets.datasets.sens, undefined, SENS_ORGANISMES_FOLDER, options));
|
|
523
|
-
_context8.prev = 1;
|
|
524
|
-
_iterator1.s();
|
|
525
|
-
case 3:
|
|
526
|
-
if ((_step1 = _iterator1.n()).done) {
|
|
527
|
-
_context8.next = 9;
|
|
528
|
-
break;
|
|
529
|
-
}
|
|
530
|
-
organismeItem = _step1.value;
|
|
531
|
-
_context8.next = 7;
|
|
532
|
-
return organismeItem;
|
|
533
|
-
case 7:
|
|
534
|
-
_context8.next = 3;
|
|
535
|
-
break;
|
|
536
|
-
case 9:
|
|
537
|
-
_context8.next = 14;
|
|
538
|
-
break;
|
|
539
|
-
case 11:
|
|
540
|
-
_context8.prev = 11;
|
|
541
|
-
_context8.t0 = _context8["catch"](1);
|
|
542
|
-
_iterator1.e(_context8.t0);
|
|
543
|
-
case 14:
|
|
544
|
-
_context8.prev = 14;
|
|
545
|
-
_iterator1.f();
|
|
546
|
-
return _context8.finish(14);
|
|
547
|
-
case 17:
|
|
548
|
-
case "end":
|
|
549
|
-
return _context8.stop();
|
|
550
|
-
}
|
|
551
|
-
}, _callee5, null, [[1, 11, 14, 17]]);
|
|
552
|
-
})();
|
|
149
|
+
function* iterLoadSenatOrganismes(dataDir, options = {}) {
|
|
150
|
+
for (const organismeItem of iterLoadSenatItems(dataDir, datasets_1.datasets.sens, undefined, exports.SENS_ORGANISMES_FOLDER, options)) {
|
|
151
|
+
yield organismeItem;
|
|
152
|
+
}
|
|
553
153
|
}
|
|
554
|
-
function iterLoadSenatSenateurs(dataDir, legislature) {
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
_iterator10.s();
|
|
568
|
-
case 5:
|
|
569
|
-
if ((_step10 = _iterator10.n()).done) {
|
|
570
|
-
_context9.next = 14;
|
|
571
|
-
break;
|
|
572
|
-
}
|
|
573
|
-
senateurItem = _step10.value;
|
|
574
|
-
dateFinMandatSenateur = (_senateurItem$item$ma = senateurItem.item.mandats_senateur[0]) !== null && _senateurItem$item$ma !== void 0 && _senateurItem$item$ma.date_fin ? new Date((_senateurItem$item$ma2 = senateurItem.item.mandats_senateur[0]) === null || _senateurItem$item$ma2 === void 0 ? void 0 : _senateurItem$item$ma2.date_fin) : null;
|
|
575
|
-
if (!(dateFinMandatSenateur && dateFinMandatSenateur < dateDebutLegislature)) {
|
|
576
|
-
_context9.next = 10;
|
|
577
|
-
break;
|
|
578
|
-
}
|
|
579
|
-
return _context9.abrupt("continue", 12);
|
|
580
|
-
case 10:
|
|
581
|
-
_context9.next = 12;
|
|
582
|
-
return senateurItem;
|
|
583
|
-
case 12:
|
|
584
|
-
_context9.next = 5;
|
|
585
|
-
break;
|
|
586
|
-
case 14:
|
|
587
|
-
_context9.next = 19;
|
|
588
|
-
break;
|
|
589
|
-
case 16:
|
|
590
|
-
_context9.prev = 16;
|
|
591
|
-
_context9.t0 = _context9["catch"](3);
|
|
592
|
-
_iterator10.e(_context9.t0);
|
|
593
|
-
case 19:
|
|
594
|
-
_context9.prev = 19;
|
|
595
|
-
_iterator10.f();
|
|
596
|
-
return _context9.finish(19);
|
|
597
|
-
case 22:
|
|
598
|
-
case "end":
|
|
599
|
-
return _context9.stop();
|
|
600
|
-
}
|
|
601
|
-
}, _callee6, null, [[3, 16, 19, 22]]);
|
|
602
|
-
})();
|
|
154
|
+
function* iterLoadSenatSenateurs(dataDir, legislature, options = {}) {
|
|
155
|
+
const dateDebutLegislatureStr = legislatures_json_1.default.find((legislatureInfo) => legislatureInfo.numero === legislature)?.date_debut;
|
|
156
|
+
const dateDebutLegislature = new Date(dateDebutLegislatureStr);
|
|
157
|
+
for (const senateurItem of iterLoadSenatItems(dataDir, datasets_1.datasets.sens, undefined, exports.SENS_SENATEURS_FOLDER, options)) {
|
|
158
|
+
const dateFinMandatSenateur = senateurItem.item.mandats_senateur[0]
|
|
159
|
+
?.date_fin
|
|
160
|
+
? new Date(senateurItem.item.mandats_senateur[0]?.date_fin)
|
|
161
|
+
: null;
|
|
162
|
+
if (dateFinMandatSenateur && dateFinMandatSenateur < dateDebutLegislature) {
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
yield senateurItem;
|
|
166
|
+
}
|
|
603
167
|
}
|
|
604
|
-
function iterLoadSenatCirconscriptions(dataDir) {
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
return _regeneratorRuntime().wrap(function _callee7$(_context0) {
|
|
609
|
-
while (1) switch (_context0.prev = _context0.next) {
|
|
610
|
-
case 0:
|
|
611
|
-
_iterator11 = _createForOfIteratorHelper(iterLoadSenatItems(dataDir, _datasets.datasets.sens, undefined, SENS_CIRCONSCRIPTIONS_FOLDER, options));
|
|
612
|
-
_context0.prev = 1;
|
|
613
|
-
_iterator11.s();
|
|
614
|
-
case 3:
|
|
615
|
-
if ((_step11 = _iterator11.n()).done) {
|
|
616
|
-
_context0.next = 9;
|
|
617
|
-
break;
|
|
618
|
-
}
|
|
619
|
-
circonscriptionItem = _step11.value;
|
|
620
|
-
_context0.next = 7;
|
|
621
|
-
return circonscriptionItem;
|
|
622
|
-
case 7:
|
|
623
|
-
_context0.next = 3;
|
|
624
|
-
break;
|
|
625
|
-
case 9:
|
|
626
|
-
_context0.next = 14;
|
|
627
|
-
break;
|
|
628
|
-
case 11:
|
|
629
|
-
_context0.prev = 11;
|
|
630
|
-
_context0.t0 = _context0["catch"](1);
|
|
631
|
-
_iterator11.e(_context0.t0);
|
|
632
|
-
case 14:
|
|
633
|
-
_context0.prev = 14;
|
|
634
|
-
_iterator11.f();
|
|
635
|
-
return _context0.finish(14);
|
|
636
|
-
case 17:
|
|
637
|
-
case "end":
|
|
638
|
-
return _context0.stop();
|
|
639
|
-
}
|
|
640
|
-
}, _callee7, null, [[1, 11, 14, 17]]);
|
|
641
|
-
})();
|
|
168
|
+
function* iterLoadSenatCirconscriptions(dataDir, options = {}) {
|
|
169
|
+
for (const circonscriptionItem of iterLoadSenatItems(dataDir, datasets_1.datasets.sens, undefined, exports.SENS_CIRCONSCRIPTIONS_FOLDER, options)) {
|
|
170
|
+
yield circonscriptionItem;
|
|
171
|
+
}
|
|
642
172
|
}
|
|
643
|
-
function iterLoadSenatQuestions(dataDir, legislature) {
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
return _regeneratorRuntime().wrap(function _callee8$(_context1) {
|
|
648
|
-
while (1) switch (_context1.prev = _context1.next) {
|
|
649
|
-
case 0:
|
|
650
|
-
_iterator12 = _createForOfIteratorHelper(iterLoadSenatItems(dataDir, _datasets.datasets.questions, legislature, undefined, options));
|
|
651
|
-
_context1.prev = 1;
|
|
652
|
-
_iterator12.s();
|
|
653
|
-
case 3:
|
|
654
|
-
if ((_step12 = _iterator12.n()).done) {
|
|
655
|
-
_context1.next = 9;
|
|
656
|
-
break;
|
|
657
|
-
}
|
|
658
|
-
questionItem = _step12.value;
|
|
659
|
-
_context1.next = 7;
|
|
660
|
-
return questionItem;
|
|
661
|
-
case 7:
|
|
662
|
-
_context1.next = 3;
|
|
663
|
-
break;
|
|
664
|
-
case 9:
|
|
665
|
-
_context1.next = 14;
|
|
666
|
-
break;
|
|
667
|
-
case 11:
|
|
668
|
-
_context1.prev = 11;
|
|
669
|
-
_context1.t0 = _context1["catch"](1);
|
|
670
|
-
_iterator12.e(_context1.t0);
|
|
671
|
-
case 14:
|
|
672
|
-
_context1.prev = 14;
|
|
673
|
-
_iterator12.f();
|
|
674
|
-
return _context1.finish(14);
|
|
675
|
-
case 17:
|
|
676
|
-
case "end":
|
|
677
|
-
return _context1.stop();
|
|
678
|
-
}
|
|
679
|
-
}, _callee8, null, [[1, 11, 14, 17]]);
|
|
680
|
-
})();
|
|
173
|
+
function* iterLoadSenatQuestions(dataDir, legislature, options = {}) {
|
|
174
|
+
for (const questionItem of iterLoadSenatItems(dataDir, datasets_1.datasets.questions, legislature, undefined, options)) {
|
|
175
|
+
yield questionItem;
|
|
176
|
+
}
|
|
681
177
|
}
|
|
682
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZnMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wYXRoIiwiX2xlZ2lzbGF0dXJlcyIsIl9kYXRhc2V0cyIsIl9kYXRhdXRpbCIsImUiLCJfX2VzTW9kdWxlIiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIl90eXBlb2YiLCJTeW1ib2wiLCJ0b1ByaW1pdGl2ZSIsImNhbGwiLCJUeXBlRXJyb3IiLCJTdHJpbmciLCJOdW1iZXIiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwiaXRlcmF0b3IiLCJhIiwiYXN5bmNJdGVyYXRvciIsInUiLCJ0b1N0cmluZ1RhZyIsImMiLCJoIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiYXJnIiwiZGVsZWdhdGUiLCJkIiwiZiIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwicyIsInR5cGUiLCJDb250ZXh0Iiwid3JhcCIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJsIiwicCIsImdldFByb3RvdHlwZU9mIiwieSIsIngiLCJ2IiwiZyIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwicmVzb2x2ZSIsIl9fYXdhaXQiLCJ0aGVuIiwibmV4dCIsInciLCJ0cnlFbnRyaWVzIiwibSIsInJlc2V0IiwiaXNOYU4iLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJtYXJrIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJhd3JhcCIsImFzeW5jIiwiUHJvbWlzZSIsInVuc2hpZnQiLCJwb3AiLCJ2YWx1ZXMiLCJwcmV2IiwiY2hhckF0Iiwic2xpY2UiLCJzdG9wIiwicnZhbCIsImNvbXBsZXRlIiwiZmluaXNoIiwiX2NhdGNoIiwiZGVsZWdhdGVZaWVsZCIsIl9tYXJrZWQiLCJpdGVyRmlsZVBhdGhzIiwiX21hcmtlZDIiLCJpdGVyTG9hZFNlbmF0RG9zc2llcnNMZWdpc2xhdGlmc1RleHRlVXJscyIsIl9tYXJrZWQzIiwiaXRlckxvYWRTZW5hdERvc3NpZXJzTGVnaXNsYXRpZnNSYXBwb3J0VXJscyIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX24iLCJGIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsImZyb20iLCJ0ZXN0IiwiRE9TTEVHX0RPU1NJRVJTX0ZPTERFUiIsImV4cG9ydHMiLCJTRU5TX0NJUkNPTlNDUklQVElPTlNfRk9MREVSIiwiU0VOU19PUkdBTklTTUVTX0ZPTERFUiIsIlNFTlNfU0VOQVRFVVJTX0ZPTERFUiIsIlRFWFRFX0ZPTERFUiIsIlRFWFRFX09SSUdJTkFMX0ZPTERFUiIsIlRFWFRFX1RSQU5TRk9STUVEX0ZPTERFUiIsIkRPQ1VNRU5UX01FVEFEQVRBX0ZJTEUiLCJSQVBQT1JUX0ZPTERFUiIsImRpclBhdGgiLCJmaWxlcyIsIl9pdGVyYXRvciIsIl9zdGVwIiwiZmlsZSIsIml0ZXJGaWxlUGF0aHMkIiwiX2NvbnRleHQiLCJmcyIsImV4aXN0c1N5bmMiLCJyZWFkZGlyU3luYyIsIndpdGhGaWxlVHlwZXMiLCJyZWN1cnNpdmUiLCJpc0ZpbGUiLCJwYXRoIiwiam9pbiIsInBhcmVudFBhdGgiLCJ0MCIsIml0ZXJMb2FkU2VuYXRJdGVtcyIsImRhdGFEaXIiLCJkYXRhc2V0IiwibGVnaXNsYXR1cmVPclNlc3Npb24iLCJzdWJEaXIiLCJfcmVmIiwidW5kZWZpbmVkIiwiX3JlZiRsb2ciLCJsb2ciLCJfY2FsbGVlIiwiaXRlbXNEaXIiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiZmlsZVBhdGgiLCJpdGVtSnNvbiIsIml0ZW0iLCJmaWxlUGF0aEZyb21EYXRhc2V0IiwiX2NhbGxlZSQiLCJfY29udGV4dDIiLCJkYXRhYmFzZSIsImNvbnNvbGUiLCJjb25jYXQiLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsIkpTT04iLCJwYXJzZSIsInN1YnN0cmluZyIsImluZGV4T2YiLCJsZWdpc2xhdHVyZSIsIml0ZXJMb2FkU2VuYXRBbWVuZGVtZW50cyIsInNlc3Npb24iLCJvcHRpb25zIiwiX2NhbGxlZTIiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwiYW1lbmRlbWVudEl0ZW0iLCJfY2FsbGVlMiQiLCJfY29udGV4dDMiLCJkYXRhc2V0cyIsImFtZWxpIiwiaXRlckxvYWRTZW5hdERvc3NpZXJzTGVnaXNsYXRpZnMiLCJfY2FsbGVlMyIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJkb3NzaWVyTGVnaXNsYXRpZkl0ZW0iLCJfY2FsbGVlMyQiLCJfY29udGV4dDQiLCJkb3NsZWciLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwicGFyc2VkRmlsZVBhdGgiLCJpdGVyTG9hZFNlbmF0RG9zc2llcnNMZWdpc2xhdGlmc1RleHRlVXJscyQiLCJfY29udGV4dDUiLCJiYXNlIiwiX2l0ZXJhdG9yNiIsIl9zdGVwNiIsIml0ZXJMb2FkU2VuYXREb3NzaWVyc0xlZ2lzbGF0aWZzUmFwcG9ydFVybHMkIiwiX2NvbnRleHQ2IiwiaXRlckxvYWRTZW5hdERvc3NpZXJzTGVnaXNsYXRpZnNUZXh0ZXMiLCJfY2FsbGVlNCIsIl9pdGVyYXRvcjciLCJfc3RlcDciLCJkb3NzaWVyTGVnaXNsYXRpZiIsIl9pdGVyYXRvcjgiLCJfc3RlcDgiLCJsZWN0dXJlIiwibGVjdHVyZXNTZW5hdCIsIl9pdGVyYXRvcjkiLCJfc3RlcDkiLCJsZWN0dXJlU2VuYXQiLCJfaXRlcmF0b3IwIiwiX3N0ZXAwIiwidGV4dGUiLCJlbnJpY2hlZFRleHRlIiwidGV4dGVJdGVtIiwiX3RleHRlJHNlc3Npb24iLCJ0ZXh0ZU5hbWUiLCJfY2FsbGVlNCQiLCJfY29udGV4dDciLCJsZWN0dXJlcyIsImxlY3R1cmVzX2Fzc2VtYmxlZSIsImxlY3R1cmVBc3NlbWJsZWUiLCJhc3NlbWJsZWUiLCJ0ZXh0ZXMiLCJzaWduZXRfZG9zc2llciIsInNpZ25ldCIsInVybF9kb3NzaWVyX3NlbmF0IiwidXJsIiwidXJsX2Rvc3NpZXJfYXNzZW1ibGVlX25hdGlvbmFsZSIsInR5cGVfbGVjdHVyZSIsImxpYmVsbGVfbGVjdHVyZSIsImxpYmVsbGUiLCJsaWJlbGxlX29yZ2FuaXNtZSIsIlVOREVGSU5FRF9TRVNTSU9OIiwidDEiLCJ0MiIsInQzIiwibG9hZFNlbmF0VGV4dGVDb250ZW50IiwidGV4dGVQYXRoRnJvbURhdGFzZXQiLCJwYXJzZWRUZXh0ZVBhdGgiLCJqc29uVGV4dGVOYW1lIiwiZnVsbFRleHRlUGF0aCIsImRpciIsInRleHRlSnNvbiIsIml0ZXJMb2FkU2VuYXRPcmdhbmlzbWVzIiwiX2NhbGxlZTUiLCJfaXRlcmF0b3IxIiwiX3N0ZXAxIiwib3JnYW5pc21lSXRlbSIsIl9jYWxsZWU1JCIsIl9jb250ZXh0OCIsInNlbnMiLCJpdGVyTG9hZFNlbmF0U2VuYXRldXJzIiwiX2NhbGxlZTYiLCJfbGVnaXNsYXR1cmVzJGZpbmQiLCJkYXRlRGVidXRMZWdpc2xhdHVyZVN0ciIsImRhdGVEZWJ1dExlZ2lzbGF0dXJlIiwiX2l0ZXJhdG9yMTAiLCJfc3RlcDEwIiwiX3NlbmF0ZXVySXRlbSRpdGVtJG1hIiwiX3NlbmF0ZXVySXRlbSRpdGVtJG1hMiIsInNlbmF0ZXVySXRlbSIsImRhdGVGaW5NYW5kYXRTZW5hdGV1ciIsIl9jYWxsZWU2JCIsIl9jb250ZXh0OSIsImxlZ2lzbGF0dXJlcyIsImZpbmQiLCJsZWdpc2xhdHVyZUluZm8iLCJudW1lcm8iLCJkYXRlX2RlYnV0IiwiRGF0ZSIsIm1hbmRhdHNfc2VuYXRldXIiLCJkYXRlX2ZpbiIsIml0ZXJMb2FkU2VuYXRDaXJjb25zY3JpcHRpb25zIiwiX2NhbGxlZTciLCJfaXRlcmF0b3IxMSIsIl9zdGVwMTEiLCJjaXJjb25zY3JpcHRpb25JdGVtIiwiX2NhbGxlZTckIiwiX2NvbnRleHQwIiwiaXRlckxvYWRTZW5hdFF1ZXN0aW9ucyIsIl9jYWxsZWU4IiwiX2l0ZXJhdG9yMTIiLCJfc3RlcDEyIiwicXVlc3Rpb25JdGVtIiwiX2NhbGxlZTgkIiwiX2NvbnRleHQxIiwicXVlc3Rpb25zIl0sInNvdXJjZXMiOlsiLi4vc3JjL2xvYWRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gXCJmc1wiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbmltcG9ydCBsZWdpc2xhdHVyZXMgZnJvbSBcIi4vbGVnaXNsYXR1cmVzLmpzb25cIlxuXG5pbXBvcnQgeyBEYXRhc2V0LCBkYXRhc2V0cyB9IGZyb20gXCIuL2RhdGFzZXRzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnRSZXN1bHQgfSBmcm9tIFwiLi9tb2RlbC9hbWVsaVwiXG5pbXBvcnQgeyBEb3NzaWVyTGVnaXNsYXRpZlJlc3VsdCB9IGZyb20gXCIuL21vZGVsL2Rvc2xlZ1wiXG5pbXBvcnQgeyBRdWVzdGlvblJlc3VsdCB9IGZyb20gXCIuL21vZGVsL3F1ZXN0aW9uc1wiXG5pbXBvcnQgeyBDaXJjb25zY3JpcHRpb25SZXN1bHQsIE9yZ2FuaXNtZVJlc3VsdCwgU2VuYXRldXJSZXN1bHQgfSBmcm9tIFwiLi9tb2RlbC9zZW5zXCJcbmltcG9ydCB7IFVOREVGSU5FRF9TRVNTSU9OIH0gZnJvbSBcIi4vc2NyaXB0cy9kYXRhdXRpbFwiXG5pbXBvcnQgeyBGbGF0VGV4dGUgfSBmcm9tIFwiLi90eXBlcy90ZXh0ZVwiXG5cbmV4cG9ydCB7IEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuL2RhdGFzZXRzXCJcblxuZXhwb3J0IGNvbnN0IERPU0xFR19ET1NTSUVSU19GT0xERVIgPSBcImRvc3NpZXJzXCJcbmV4cG9ydCBjb25zdCBTRU5TX0NJUkNPTlNDUklQVElPTlNfRk9MREVSID0gXCJjaXJjb25zY3JpcHRpb25zXCJcbmV4cG9ydCBjb25zdCBTRU5TX09SR0FOSVNNRVNfRk9MREVSID0gXCJvcmdhbmlzbWVzXCJcbmV4cG9ydCBjb25zdCBTRU5TX1NFTkFURVVSU19GT0xERVIgPSBcInNlbmF0ZXVyc1wiXG5leHBvcnQgY29uc3QgVEVYVEVfRk9MREVSID0gXCJsZWdcIlxuZXhwb3J0IGNvbnN0IFRFWFRFX09SSUdJTkFMX0ZPTERFUiA9IFwib3JpZ2luYWxcIlxuZXhwb3J0IGNvbnN0IFRFWFRFX1RSQU5TRk9STUVEX0ZPTERFUiA9IFwidHJhbnNmb3JtZWRcIlxuZXhwb3J0IGNvbnN0IERPQ1VNRU5UX01FVEFEQVRBX0ZJTEUgPSBcIm1ldGFkYXRhLmpzb25cIlxuZXhwb3J0IGNvbnN0IFJBUFBPUlRfRk9MREVSID0gXCJyYXBcIlxuXG50eXBlIEl0ZXJJdGVtPFQ+ID0ge1xuICBpdGVtOiBUXG4gIGZpbGVQYXRoRnJvbURhdGFzZXQ/OiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlPzogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dGVNZXRhZGF0YSB7XG4gIG5hbWU6IHN0cmluZyxcbiAgc2Vzc2lvbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgdXJsX2V4cG9zZV9kZXNfbW90aWZzPzogVVJMLFxuICB1cmxfeG1sOiBVUkwsXG4gIHVybF9odG1sOiBVUkwsXG4gIHVybF9wZGY6IFVSTCxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYXBwb3J0TWV0YWRhdGEge1xuICBuYW1lOiBzdHJpbmcsXG4gIHNlc3Npb246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHVybF9odG1sOiBVUkwsXG4gIHVybF9wZGY6IFVSTCxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb3NzaWVyTGVnaXNsYXRpZlRleHRlUmVzdWx0IHtcbiAgc2lnbmV0X2Rvc3NpZXI6IHN0cmluZyxcbiAgdXJsX2Rvc3NpZXJfc2VuYXQ6IHN0cmluZyxcbiAgdXJsX2Rvc3NpZXJfYXNzZW1ibGVlX25hdGlvbmFsZTogc3RyaW5nIHwgbnVsbCxcbiAgdHlwZV9sZWN0dXJlOiBzdHJpbmdcbiAgbGliZWxsZV9sZWN0dXJlOiBzdHJpbmdcbiAgbGliZWxsZV9vcmdhbmlzbWU6IHN0cmluZyB8IG51bGxcbiAgbnVtZXJvOiBzdHJpbmcgfCBudWxsXG4gIHVybDogc3RyaW5nXG4gIG9yaWdpbmVfdGV4dGU6IHN0cmluZ1xuICB0eXBlX3RleHRlOiBzdHJpbmdcbiAgZGF0ZTogc3RyaW5nXG4gIHNlc3Npb246IHN0cmluZyB8IG51bGxcbiAgYXV0ZXVyczoge1xuICAgIHByZW5vbTogc3RyaW5nIHwgbnVsbFxuICAgIG5vbV91c3VlbDogc3RyaW5nXG4gICAgbWF0cmljdWxlOiBzdHJpbmcgfCBudWxsXG4gIH1bXVxufVxuXG5leHBvcnQgZnVuY3Rpb24gKiBpdGVyRmlsZVBhdGhzIChkaXJQYXRoOiBzdHJpbmcpOiBHZW5lcmF0b3I8c3RyaW5nPiB7XG4gIGlmIChkaXJQYXRoICYmIGZzLmV4aXN0c1N5bmMoZGlyUGF0aCkpIHtcbiAgICBjb25zdCBmaWxlcyA9IGZzLnJlYWRkaXJTeW5jKGRpclBhdGgsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSwgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBpZiAoZmlsZS5pc0ZpbGUoKSkge1xuICAgICAgICB5aWVsZCBwYXRoLmpvaW4oZmlsZS5wYXJlbnRQYXRoLCBmaWxlLm5hbWUpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uICogaXRlckxvYWRTZW5hdEl0ZW1zPFQ+IChcbiAgZGF0YURpcjogc3RyaW5nLFxuICBkYXRhc2V0OiBEYXRhc2V0LFxuICBsZWdpc2xhdHVyZU9yU2Vzc2lvbj86IG51bWJlcixcbiAgc3ViRGlyPzogc3RyaW5nLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IEdlbmVyYXRvcjxJdGVySXRlbTxUPj4ge1xuICBsZXQgaXRlbXNEaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5kYXRhYmFzZSlcbiAgaWYgKHN1YkRpcikge1xuICAgIGl0ZW1zRGlyID0gcGF0aC5qb2luKGl0ZW1zRGlyLCBzdWJEaXIpXG4gIH1cbiAgaWYgKGxlZ2lzbGF0dXJlT3JTZXNzaW9uKSB7XG4gICAgaXRlbXNEaXIgPSBwYXRoLmpvaW4oaXRlbXNEaXIsIFN0cmluZyhsZWdpc2xhdHVyZU9yU2Vzc2lvbikpXG4gIH1cbiAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiBpdGVyRmlsZVBhdGhzKGl0ZW1zRGlyKSkge1xuICAgIGlmIChsb2cpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZmlsZVBhdGh94oCmYClcbiAgICB9XG5cbiAgICBjb25zdCBpdGVtSnNvbiA9IGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICBjb25zdCBpdGVtOiBUID0gSlNPTi5wYXJzZShpdGVtSnNvbilcblxuICAgIGNvbnN0IGZpbGVQYXRoRnJvbURhdGFzZXQgPSBmaWxlUGF0aC5zdWJzdHJpbmcoZmlsZVBhdGguaW5kZXhPZihkYXRhc2V0LmRhdGFiYXNlKSArIGRhdGFzZXQuZGF0YWJhc2UubGVuZ3RoKVxuXG4gICAgeWllbGQge1xuICAgICAgaXRlbSxcbiAgICAgIGZpbGVQYXRoRnJvbURhdGFzZXQsXG4gICAgICBsZWdpc2xhdHVyZTogbGVnaXNsYXR1cmVPclNlc3Npb24sXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiAqIGl0ZXJMb2FkU2VuYXRBbWVuZGVtZW50cyAoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgc2Vzc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBvcHRpb25zID0ge30sXG4pOiBHZW5lcmF0b3I8SXRlckl0ZW08QW1lbmRlbWVudFJlc3VsdD4+IHtcbiAgZm9yIChjb25zdCBhbWVuZGVtZW50SXRlbVxuICAgIG9mIGl0ZXJMb2FkU2VuYXRJdGVtczxBbWVuZGVtZW50UmVzdWx0PihkYXRhRGlyLCBkYXRhc2V0cy5hbWVsaSwgc2Vzc2lvbiwgdW5kZWZpbmVkLCBvcHRpb25zKVxuICAgICkge1xuICAgIHlpZWxkIGFtZW5kZW1lbnRJdGVtXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uICogaXRlckxvYWRTZW5hdERvc3NpZXJzTGVnaXNsYXRpZnMgKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIHNlc3Npb246IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucyA9IHt9LFxuKTogR2VuZXJhdG9yPEl0ZXJJdGVtPERvc3NpZXJMZWdpc2xhdGlmUmVzdWx0Pj4ge1xuICBmb3IgKGNvbnN0IGRvc3NpZXJMZWdpc2xhdGlmSXRlbVxuICAgIG9mIGl0ZXJMb2FkU2VuYXRJdGVtczxEb3NzaWVyTGVnaXNsYXRpZlJlc3VsdD4oZGF0YURpciwgZGF0YXNldHMuZG9zbGVnLCBzZXNzaW9uLCBET1NMRUdfRE9TU0lFUlNfRk9MREVSLCBvcHRpb25zKVxuICAgICkge1xuICAgIHlpZWxkIGRvc3NpZXJMZWdpc2xhdGlmSXRlbVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiAqIGl0ZXJMb2FkU2VuYXREb3NzaWVyc0xlZ2lzbGF0aWZzVGV4dGVVcmxzIChcbiAgZGF0YURpcjogc3RyaW5nLFxuICBzZXNzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQsXG4pOiBHZW5lcmF0b3I8SXRlckl0ZW08VGV4dGVNZXRhZGF0YT4+IHtcbiAgbGV0IGl0ZW1zRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIFRFWFRFX0ZPTERFUiwgVEVYVEVfT1JJR0lOQUxfRk9MREVSKVxuICBpZiAoc2Vzc2lvbikge1xuICAgIGl0ZW1zRGlyID0gcGF0aC5qb2luKGl0ZW1zRGlyLCBzZXNzaW9uLnRvU3RyaW5nKCkpXG4gIH1cbiAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiBpdGVyRmlsZVBhdGhzKGl0ZW1zRGlyKSkge1xuICAgIGNvbnN0IHBhcnNlZEZpbGVQYXRoID0gcGF0aC5wYXJzZShmaWxlUGF0aClcbiAgICBpZiAocGFyc2VkRmlsZVBhdGguYmFzZSA9PT0gRE9DVU1FTlRfTUVUQURBVEFfRklMRSkge1xuICAgICAgY29uc3QgaXRlbUpzb24gPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBpdGVtID0gSlNPTi5wYXJzZShpdGVtSnNvbilcbiAgICAgIHlpZWxkIHtcbiAgICAgICAgaXRlbSxcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uICogaXRlckxvYWRTZW5hdERvc3NpZXJzTGVnaXNsYXRpZnNSYXBwb3J0VXJscyAoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgc2Vzc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkLFxuKTogR2VuZXJhdG9yPEl0ZXJJdGVtPFJhcHBvcnRNZXRhZGF0YT4+IHtcbiAgbGV0IGl0ZW1zRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIFJBUFBPUlRfRk9MREVSKVxuICBpZiAoc2Vzc2lvbikge1xuICAgIGl0ZW1zRGlyID0gcGF0aC5qb2luKGl0ZW1zRGlyLCBzZXNzaW9uLnRvU3RyaW5nKCkpXG4gIH1cbiAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiBpdGVyRmlsZVBhdGhzKGl0ZW1zRGlyKSkge1xuICAgIGNvbnN0IHBhcnNlZEZpbGVQYXRoID0gcGF0aC5wYXJzZShmaWxlUGF0aClcbiAgICBpZiAocGFyc2VkRmlsZVBhdGguYmFzZSA9PT0gRE9DVU1FTlRfTUVUQURBVEFfRklMRSkge1xuICAgICAgY29uc3QgaXRlbUpzb24gPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBpdGVtID0gSlNPTi5wYXJzZShpdGVtSnNvbilcbiAgICAgIHlpZWxkIHtcbiAgICAgICAgaXRlbSxcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uICogaXRlckxvYWRTZW5hdERvc3NpZXJzTGVnaXNsYXRpZnNUZXh0ZXMgKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIHNlc3Npb246IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgb3B0aW9ucyA9IHt9LFxuKTogR2VuZXJhdG9yPEl0ZXJJdGVtPERvc3NpZXJMZWdpc2xhdGlmVGV4dGVSZXN1bHQ+PiB7XG4gIGZvciAoY29uc3QgeyBpdGVtOiBkb3NzaWVyTGVnaXNsYXRpZiB9IG9mIGl0ZXJMb2FkU2VuYXREb3NzaWVyc0xlZ2lzbGF0aWZzKGRhdGFEaXIsIHNlc3Npb24sIG9wdGlvbnMpKSB7XG4gICAgZm9yIChjb25zdCBsZWN0dXJlIG9mIGRvc3NpZXJMZWdpc2xhdGlmLmxlY3R1cmVzKSB7XG4gICAgICBjb25zdCBsZWN0dXJlc1NlbmF0ID0gbGVjdHVyZS5sZWN0dXJlc19hc3NlbWJsZWVcbiAgICAgICAgLmZpbHRlcihsZWN0dXJlQXNzZW1ibGVlID0+IGxlY3R1cmVBc3NlbWJsZWUuYXNzZW1ibGVlID09PSBcIlPDqW5hdFwiKVxuICAgICAgZm9yIChjb25zdCBsZWN0dXJlU2VuYXQgb2YgbGVjdHVyZXNTZW5hdCkge1xuICAgICAgICBmb3IgKGNvbnN0IHRleHRlIG9mIGxlY3R1cmVTZW5hdC50ZXh0ZXMpIHtcbiAgICAgICAgICBjb25zdCBlbnJpY2hlZFRleHRlID0ge1xuICAgICAgICAgICAgc2lnbmV0X2Rvc3NpZXI6IGRvc3NpZXJMZWdpc2xhdGlmLnNpZ25ldCxcbiAgICAgICAgICAgIHVybF9kb3NzaWVyX3NlbmF0OiBkb3NzaWVyTGVnaXNsYXRpZi51cmwsXG4gICAgICAgICAgICB1cmxfZG9zc2llcl9hc3NlbWJsZWVfbmF0aW9uYWxlOiBkb3NzaWVyTGVnaXNsYXRpZi51cmxfZG9zc2llcl9hc3NlbWJsZWVfbmF0aW9uYWxlLFxuICAgICAgICAgICAgdHlwZV9sZWN0dXJlOiBsZWN0dXJlLnR5cGVfbGVjdHVyZSxcbiAgICAgICAgICAgIGxpYmVsbGVfbGVjdHVyZTogbGVjdHVyZS5saWJlbGxlLFxuICAgICAgICAgICAgbGliZWxsZV9vcmdhbmlzbWU6IGxlY3R1cmVTZW5hdC5saWJlbGxlX29yZ2FuaXNtZSxcbiAgICAgICAgICAgIC4uLnRleHRlLFxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB0ZXh0ZUl0ZW06IEl0ZXJJdGVtPERvc3NpZXJMZWdpc2xhdGlmVGV4dGVSZXN1bHQ+ID0ge1xuICAgICAgICAgICAgaXRlbTogZW5yaWNoZWRUZXh0ZSxcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHRleHRlLnVybCkge1xuICAgICAgICAgICAgY29uc3QgdGV4dGVOYW1lID0gcGF0aC5wYXJzZSh0ZXh0ZS51cmwpLm5hbWVcbiAgICAgICAgICAgIHRleHRlSXRlbS5maWxlUGF0aEZyb21EYXRhc2V0XG4gICAgICAgICAgICAgID0gcGF0aC5qb2luKGAke3RleHRlLnNlc3Npb24gPz8gVU5ERUZJTkVEX1NFU1NJT059YCwgdGV4dGVOYW1lLCBgJHt0ZXh0ZU5hbWV9LnBkZmApXG4gICAgICAgICAgfVxuICAgICAgICAgIHlpZWxkIHRleHRlSXRlbVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkU2VuYXRUZXh0ZUNvbnRlbnQgKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIHRleHRlUGF0aEZyb21EYXRhc2V0OiBzdHJpbmcsXG4pOiBJdGVySXRlbTxGbGF0VGV4dGUgfCBudWxsPiB7XG4gIGNvbnN0IHBhcnNlZFRleHRlUGF0aCA9IHBhdGgucGFyc2UodGV4dGVQYXRoRnJvbURhdGFzZXQpXG4gIGNvbnN0IGpzb25UZXh0ZU5hbWUgPSBgJHtwYXJzZWRUZXh0ZVBhdGgubmFtZX0uanNvbmBcbiAgY29uc3QgZnVsbFRleHRlUGF0aCA9IHBhdGguam9pbihkYXRhRGlyLCBURVhURV9GT0xERVIsIFRFWFRFX1RSQU5TRk9STUVEX0ZPTERFUiwgcGFyc2VkVGV4dGVQYXRoLmRpciwganNvblRleHRlTmFtZSlcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGZ1bGxUZXh0ZVBhdGgpKSB7XG4gICAgcmV0dXJuIHsgaXRlbTogbnVsbCB9XG4gIH1cbiAgY29uc3QgdGV4dGVKc29uID0gZnMucmVhZEZpbGVTeW5jKGZ1bGxUZXh0ZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gIHJldHVybiB7IGl0ZW06IEpTT04ucGFyc2UodGV4dGVKc29uKSB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiAqIGl0ZXJMb2FkU2VuYXRPcmdhbmlzbWVzIChcbiAgZGF0YURpcjogc3RyaW5nLFxuICBvcHRpb25zID0ge30sXG4pOiBHZW5lcmF0b3I8SXRlckl0ZW08T3JnYW5pc21lUmVzdWx0Pj4ge1xuICBmb3IgKGNvbnN0IG9yZ2FuaXNtZUl0ZW0gb2YgaXRlckxvYWRTZW5hdEl0ZW1zPE9yZ2FuaXNtZVJlc3VsdD4oZGF0YURpciwgZGF0YXNldHMuc2VucywgdW5kZWZpbmVkLCBTRU5TX09SR0FOSVNNRVNfRk9MREVSLCBvcHRpb25zKSkge1xuICAgIHlpZWxkIG9yZ2FuaXNtZUl0ZW1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gKiBpdGVyTG9hZFNlbmF0U2VuYXRldXJzIChcbiAgZGF0YURpcjogc3RyaW5nLFxuICBsZWdpc2xhdHVyZTogbnVtYmVyLFxuICBvcHRpb25zID0ge30sXG4pOiBHZW5lcmF0b3I8SXRlckl0ZW08U2VuYXRldXJSZXN1bHQ+PiB7XG4gIGNvbnN0IGRhdGVEZWJ1dExlZ2lzbGF0dXJlU3RyID0gbGVnaXNsYXR1cmVzXG4gICAgLmZpbmQobGVnaXNsYXR1cmVJbmZvID0+IGxlZ2lzbGF0dXJlSW5mby5udW1lcm8gPT09IGxlZ2lzbGF0dXJlKVxuICAgID8uZGF0ZV9kZWJ1dFxuICBjb25zdCBkYXRlRGVidXRMZWdpc2xhdHVyZSA9IG5ldyBEYXRlKGRhdGVEZWJ1dExlZ2lzbGF0dXJlU3RyISlcbiAgZm9yIChjb25zdCBzZW5hdGV1ckl0ZW0gb2YgaXRlckxvYWRTZW5hdEl0ZW1zPFNlbmF0ZXVyUmVzdWx0PihkYXRhRGlyLCBkYXRhc2V0cy5zZW5zLCB1bmRlZmluZWQsIFNFTlNfU0VOQVRFVVJTX0ZPTERFUiwgb3B0aW9ucykpIHtcbiAgICBjb25zdCBkYXRlRmluTWFuZGF0U2VuYXRldXIgPSBzZW5hdGV1ckl0ZW0uaXRlbS5tYW5kYXRzX3NlbmF0ZXVyWzBdPy5kYXRlX2ZpbiA/XG4gICAgICBuZXcgRGF0ZShzZW5hdGV1ckl0ZW0uaXRlbS5tYW5kYXRzX3NlbmF0ZXVyWzBdPy5kYXRlX2ZpbikgOiBudWxsXG4gICAgaWYgKGRhdGVGaW5NYW5kYXRTZW5hdGV1ciAmJiBkYXRlRmluTWFuZGF0U2VuYXRldXIgPCBkYXRlRGVidXRMZWdpc2xhdHVyZSkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgeWllbGQgc2VuYXRldXJJdGVtXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uICogaXRlckxvYWRTZW5hdENpcmNvbnNjcmlwdGlvbnMgKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIG9wdGlvbnMgPSB7fSxcbik6IEdlbmVyYXRvcjxJdGVySXRlbTxDaXJjb25zY3JpcHRpb25SZXN1bHQ+PiB7XG4gIGZvciAoY29uc3QgY2lyY29uc2NyaXB0aW9uSXRlbSBvZiBpdGVyTG9hZFNlbmF0SXRlbXM8Q2lyY29uc2NyaXB0aW9uUmVzdWx0PihkYXRhRGlyLCBkYXRhc2V0cy5zZW5zLCB1bmRlZmluZWQsIFNFTlNfQ0lSQ09OU0NSSVBUSU9OU19GT0xERVIsIG9wdGlvbnMpKSB7XG4gICAgeWllbGQgY2lyY29uc2NyaXB0aW9uSXRlbVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiAqIGl0ZXJMb2FkU2VuYXRRdWVzdGlvbnMgKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGxlZ2lzbGF0dXJlOiBudW1iZXIsXG4gIG9wdGlvbnMgPSB7fSxcbik6IEdlbmVyYXRvcjxJdGVySXRlbTxRdWVzdGlvblJlc3VsdD4+IHtcbiAgZm9yIChjb25zdCBxdWVzdGlvbkl0ZW1cbiAgICBvZiBpdGVyTG9hZFNlbmF0SXRlbXM8UXVlc3Rpb25SZXN1bHQ+KGRhdGFEaXIsIGRhdGFzZXRzLnF1ZXN0aW9ucywgbGVnaXNsYXR1cmUsIHVuZGVmaW5lZCwgb3B0aW9ucylcbiAgICApIHtcbiAgICB5aWVsZCBxdWVzdGlvbkl0ZW1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxHQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxhQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRyxTQUFBLEdBQUFILE9BQUE7QUFLQSxJQUFBSSxTQUFBLEdBQUFKLE9BQUE7QUFBc0QsU0FBQUQsdUJBQUFNLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxnQkFBQUEsQ0FBQTtBQUFBLFNBQUFFLFFBQUFGLENBQUEsRUFBQUcsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBTixDQUFBLE9BQUFLLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFQLENBQUEsR0FBQUcsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVYsQ0FBQSxFQUFBRyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBZCxDQUFBLGFBQUFHLENBQUEsTUFBQUEsQ0FBQSxHQUFBWSxTQUFBLENBQUFDLE1BQUEsRUFBQWIsQ0FBQSxVQUFBQyxDQUFBLFdBQUFXLFNBQUEsQ0FBQVosQ0FBQSxJQUFBWSxTQUFBLENBQUFaLENBQUEsUUFBQUEsQ0FBQSxPQUFBRCxPQUFBLENBQUFHLE1BQUEsQ0FBQUQsQ0FBQSxPQUFBYSxPQUFBLFdBQUFkLENBQUEsSUFBQWUsZUFBQSxDQUFBbEIsQ0FBQSxFQUFBRyxDQUFBLEVBQUFDLENBQUEsQ0FBQUQsQ0FBQSxTQUFBRSxNQUFBLENBQUFjLHlCQUFBLEdBQUFkLE1BQUEsQ0FBQWUsZ0JBQUEsQ0FBQXBCLENBQUEsRUFBQUssTUFBQSxDQUFBYyx5QkFBQSxDQUFBZixDQUFBLEtBQUFGLE9BQUEsQ0FBQUcsTUFBQSxDQUFBRCxDQUFBLEdBQUFhLE9BQUEsV0FBQWQsQ0FBQSxJQUFBRSxNQUFBLENBQUFnQixjQUFBLENBQUFyQixDQUFBLEVBQUFHLENBQUEsRUFBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBTixDQUFBLEVBQUFELENBQUEsaUJBQUFILENBQUE7QUFBQSxTQUFBa0IsZ0JBQUFsQixDQUFBLEVBQUFHLENBQUEsRUFBQUMsQ0FBQSxZQUFBRCxDQUFBLEdBQUFtQixjQUFBLENBQUFuQixDQUFBLE1BQUFILENBQUEsR0FBQUssTUFBQSxDQUFBZ0IsY0FBQSxDQUFBckIsQ0FBQSxFQUFBRyxDQUFBLElBQUFvQixLQUFBLEVBQUFuQixDQUFBLEVBQUFPLFVBQUEsTUFBQWEsWUFBQSxNQUFBQyxRQUFBLFVBQUF6QixDQUFBLENBQUFHLENBQUEsSUFBQUMsQ0FBQSxFQUFBSixDQUFBO0FBQUEsU0FBQXNCLGVBQUFsQixDQUFBLFFBQUFzQixDQUFBLEdBQUFDLFlBQUEsQ0FBQXZCLENBQUEsZ0NBQUF3QixPQUFBLENBQUFGLENBQUEsSUFBQUEsQ0FBQSxHQUFBQSxDQUFBO0FBQUEsU0FBQUMsYUFBQXZCLENBQUEsRUFBQUQsQ0FBQSxvQkFBQXlCLE9BQUEsQ0FBQXhCLENBQUEsTUFBQUEsQ0FBQSxTQUFBQSxDQUFBLE1BQUFKLENBQUEsR0FBQUksQ0FBQSxDQUFBeUIsTUFBQSxDQUFBQyxXQUFBLGtCQUFBOUIsQ0FBQSxRQUFBMEIsQ0FBQSxHQUFBMUIsQ0FBQSxDQUFBK0IsSUFBQSxDQUFBM0IsQ0FBQSxFQUFBRCxDQUFBLGdDQUFBeUIsT0FBQSxDQUFBRixDQUFBLFVBQUFBLENBQUEsWUFBQU0sU0FBQSx5RUFBQTdCLENBQUEsR0FBQThCLE1BQUEsR0FBQUMsTUFBQSxFQUFBOUIsQ0FBQTtBQUFBLFNBQUErQixvQkFBQSxrQkFUdEQsbUtBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFoQyxDQUFBLFNBQUFDLENBQUEsRUFBQUQsQ0FBQSxPQUFBSCxDQUFBLEdBQUFLLE1BQUEsQ0FBQStCLFNBQUEsRUFBQUMsQ0FBQSxHQUFBckMsQ0FBQSxDQUFBc0MsY0FBQSxFQUFBOUIsQ0FBQSx3QkFBQXFCLE1BQUEsR0FBQUEsTUFBQSxPQUFBSCxDQUFBLEdBQUFsQixDQUFBLENBQUErQixRQUFBLGtCQUFBQyxDQUFBLEdBQUFoQyxDQUFBLENBQUFpQyxhQUFBLHVCQUFBQyxDQUFBLEdBQUFsQyxDQUFBLENBQUFtQyxXQUFBLDhCQUFBQyxFQUFBeEMsQ0FBQSxFQUFBRCxDQUFBLEVBQUFILENBQUEsRUFBQXFDLENBQUEsSUFBQWhDLE1BQUEsQ0FBQWdCLGNBQUEsQ0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxJQUFBb0IsS0FBQSxFQUFBdkIsQ0FBQSxFQUFBVyxVQUFBLEdBQUEwQixDQUFBLEVBQUFiLFlBQUEsR0FBQWEsQ0FBQSxFQUFBWixRQUFBLEdBQUFZLENBQUEsYUFBQU8sQ0FBQSxtQkFBQXhDLENBQUEsSUFBQXdDLENBQUEsWUFBQUEsRUFBQXhDLENBQUEsRUFBQUQsQ0FBQSxFQUFBSCxDQUFBLFdBQUFJLENBQUEsQ0FBQUQsQ0FBQSxJQUFBSCxDQUFBLGdCQUFBNkMsRUFBQTFDLENBQUEsRUFBQUgsQ0FBQSxFQUFBcUMsQ0FBQSxFQUFBN0IsQ0FBQSxRQUFBa0IsQ0FBQSxHQUFBMUIsQ0FBQSxJQUFBQSxDQUFBLENBQUFvQyxTQUFBLFlBQUFVLFNBQUEsR0FBQTlDLENBQUEsR0FBQThDLFNBQUEsRUFBQU4sQ0FBQSxHQUFBbkMsTUFBQSxDQUFBMEMsTUFBQSxDQUFBckIsQ0FBQSxDQUFBVSxTQUFBLFVBQUFRLENBQUEsQ0FBQUosQ0FBQSx1QkFBQXJDLENBQUEsRUFBQUgsQ0FBQSxFQUFBcUMsQ0FBQSxRQUFBN0IsQ0FBQSx1QkFBQWtCLENBQUEsRUFBQWMsQ0FBQSxjQUFBaEMsQ0FBQSxRQUFBd0MsS0FBQSw0Q0FBQXhDLENBQUEsb0JBQUFrQixDQUFBLFFBQUFjLENBQUEsV0FBQWpCLEtBQUEsRUFBQW5CLENBQUEsRUFBQTZDLElBQUEsZUFBQVosQ0FBQSxDQUFBYSxNQUFBLEdBQUF4QixDQUFBLEVBQUFXLENBQUEsQ0FBQWMsR0FBQSxHQUFBWCxDQUFBLFVBQUFFLENBQUEsR0FBQUwsQ0FBQSxDQUFBZSxRQUFBLE1BQUFWLENBQUEsUUFBQUUsQ0FBQSxHQUFBUyxDQUFBLENBQUFYLENBQUEsRUFBQUwsQ0FBQSxPQUFBTyxDQUFBLFFBQUFBLENBQUEsS0FBQVUsQ0FBQSxtQkFBQVYsQ0FBQSxxQkFBQVAsQ0FBQSxDQUFBYSxNQUFBLEVBQUFiLENBQUEsQ0FBQWtCLElBQUEsR0FBQWxCLENBQUEsQ0FBQW1CLEtBQUEsR0FBQW5CLENBQUEsQ0FBQWMsR0FBQSxzQkFBQWQsQ0FBQSxDQUFBYSxNQUFBLGNBQUExQyxDQUFBLFFBQUFBLENBQUEsTUFBQTZCLENBQUEsQ0FBQWMsR0FBQSxFQUFBZCxDQUFBLENBQUFvQixpQkFBQSxDQUFBcEIsQ0FBQSxDQUFBYyxHQUFBLHVCQUFBZCxDQUFBLENBQUFhLE1BQUEsSUFBQWIsQ0FBQSxDQUFBcUIsTUFBQSxXQUFBckIsQ0FBQSxDQUFBYyxHQUFBLEdBQUEzQyxDQUFBLFVBQUFxQyxDQUFBLEdBQUFjLENBQUEsQ0FBQXhELENBQUEsRUFBQUgsQ0FBQSxFQUFBcUMsQ0FBQSxvQkFBQVEsQ0FBQSxDQUFBZSxJQUFBLFFBQUFwRCxDQUFBLEdBQUE2QixDQUFBLENBQUFZLElBQUEsVUFBQUosQ0FBQSxDQUFBTSxHQUFBLEtBQUFHLENBQUEscUJBQUEvQixLQUFBLEVBQUFzQixDQUFBLENBQUFNLEdBQUEsRUFBQUYsSUFBQSxFQUFBWixDQUFBLENBQUFZLElBQUEsa0JBQUFKLENBQUEsQ0FBQWUsSUFBQSxLQUFBcEQsQ0FBQSxNQUFBNkIsQ0FBQSxDQUFBYSxNQUFBLFlBQUFiLENBQUEsQ0FBQWMsR0FBQSxHQUFBTixDQUFBLENBQUFNLEdBQUEsVUFBQWhELENBQUEsRUFBQWtDLENBQUEsTUFBQXdCLE9BQUEsQ0FBQXJELENBQUEsZUFBQWdDLENBQUEsYUFBQW1CLEVBQUF2RCxDQUFBLEVBQUFELENBQUEsRUFBQUgsQ0FBQSxtQkFBQTRELElBQUEsWUFBQVQsR0FBQSxFQUFBL0MsQ0FBQSxDQUFBMkIsSUFBQSxDQUFBNUIsQ0FBQSxFQUFBSCxDQUFBLGNBQUFJLENBQUEsYUFBQXdELElBQUEsV0FBQVQsR0FBQSxFQUFBL0MsQ0FBQSxRQUFBRCxDQUFBLENBQUEyRCxJQUFBLEdBQUFqQixDQUFBLE1BQUFTLENBQUEsZ0JBQUFSLFVBQUEsY0FBQWlCLGtCQUFBLGNBQUFDLDJCQUFBLFNBQUFDLENBQUEsT0FBQXJCLENBQUEsQ0FBQXFCLENBQUEsRUFBQXZDLENBQUEscUNBQUF3QyxDQUFBLEdBQUE3RCxNQUFBLENBQUE4RCxjQUFBLEVBQUFDLENBQUEsR0FBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFBLENBQUEsQ0FBQUcsQ0FBQSxRQUFBRCxDQUFBLElBQUFBLENBQUEsS0FBQXBFLENBQUEsSUFBQXFDLENBQUEsQ0FBQU4sSUFBQSxDQUFBcUMsQ0FBQSxFQUFBMUMsQ0FBQSxNQUFBdUMsQ0FBQSxHQUFBRyxDQUFBLE9BQUFFLENBQUEsR0FBQU4sMEJBQUEsQ0FBQTVCLFNBQUEsR0FBQVUsU0FBQSxDQUFBVixTQUFBLEdBQUEvQixNQUFBLENBQUEwQyxNQUFBLENBQUFrQixDQUFBLFlBQUFNLEVBQUFuRSxDQUFBLGdDQUFBYSxPQUFBLFdBQUFkLENBQUEsSUFBQXlDLENBQUEsQ0FBQXhDLENBQUEsRUFBQUQsQ0FBQSxZQUFBQyxDQUFBLGdCQUFBb0UsT0FBQSxDQUFBckUsQ0FBQSxFQUFBQyxDQUFBLHNCQUFBcUUsY0FBQXJFLENBQUEsRUFBQUQsQ0FBQSxhQUFBSCxFQUFBUSxDQUFBLEVBQUFrQixDQUFBLEVBQUFjLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEdBQUFlLENBQUEsQ0FBQXZELENBQUEsQ0FBQUksQ0FBQSxHQUFBSixDQUFBLEVBQUFzQixDQUFBLG1CQUFBa0IsQ0FBQSxDQUFBZ0IsSUFBQSxRQUFBZixDQUFBLEdBQUFELENBQUEsQ0FBQU8sR0FBQSxFQUFBRyxDQUFBLEdBQUFULENBQUEsQ0FBQXRCLEtBQUEsU0FBQStCLENBQUEsZ0JBQUExQixPQUFBLENBQUEwQixDQUFBLEtBQUFqQixDQUFBLENBQUFOLElBQUEsQ0FBQXVCLENBQUEsZUFBQW5ELENBQUEsQ0FBQXVFLE9BQUEsQ0FBQXBCLENBQUEsQ0FBQXFCLE9BQUEsRUFBQUMsSUFBQSxXQUFBeEUsQ0FBQSxJQUFBSixDQUFBLFNBQUFJLENBQUEsRUFBQW9DLENBQUEsRUFBQUUsQ0FBQSxnQkFBQXRDLENBQUEsSUFBQUosQ0FBQSxVQUFBSSxDQUFBLEVBQUFvQyxDQUFBLEVBQUFFLENBQUEsUUFBQXZDLENBQUEsQ0FBQXVFLE9BQUEsQ0FBQXBCLENBQUEsRUFBQXNCLElBQUEsV0FBQXhFLENBQUEsSUFBQXlDLENBQUEsQ0FBQXRCLEtBQUEsR0FBQW5CLENBQUEsRUFBQW9DLENBQUEsQ0FBQUssQ0FBQSxnQkFBQXpDLENBQUEsV0FBQUosQ0FBQSxVQUFBSSxDQUFBLEVBQUFvQyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxDQUFBRSxDQUFBLENBQUFPLEdBQUEsU0FBQTNDLENBQUEsRUFBQW9DLENBQUEsNEJBQUF4QyxDQUFBLEVBQUFpQyxDQUFBLGFBQUFYLEVBQUEsZUFBQXZCLENBQUEsV0FBQUEsQ0FBQSxFQUFBSyxDQUFBLElBQUFSLENBQUEsQ0FBQUksQ0FBQSxFQUFBaUMsQ0FBQSxFQUFBbEMsQ0FBQSxFQUFBSyxDQUFBLGdCQUFBQSxDQUFBLEdBQUFBLENBQUEsR0FBQUEsQ0FBQSxDQUFBb0UsSUFBQSxDQUFBbEQsQ0FBQSxFQUFBQSxDQUFBLElBQUFBLENBQUEsdUJBQUEyQixFQUFBbEQsQ0FBQSxFQUFBSCxDQUFBLFFBQUFxQyxDQUFBLEdBQUFyQyxDQUFBLENBQUFrRCxNQUFBLEVBQUExQyxDQUFBLEdBQUFMLENBQUEsQ0FBQXVCLENBQUEsQ0FBQVcsQ0FBQSxPQUFBN0IsQ0FBQSxLQUFBSixDQUFBLFNBQUFKLENBQUEsQ0FBQW9ELFFBQUEscUJBQUFmLENBQUEsSUFBQWxDLENBQUEsQ0FBQXVCLENBQUEsZUFBQTFCLENBQUEsQ0FBQWtELE1BQUEsYUFBQWxELENBQUEsQ0FBQW1ELEdBQUEsR0FBQS9DLENBQUEsRUFBQWlELENBQUEsQ0FBQWxELENBQUEsRUFBQUgsQ0FBQSxlQUFBQSxDQUFBLENBQUFrRCxNQUFBLGtCQUFBYixDQUFBLEtBQUFyQyxDQUFBLENBQUFrRCxNQUFBLFlBQUFsRCxDQUFBLENBQUFtRCxHQUFBLE9BQUFuQixTQUFBLHVDQUFBSyxDQUFBLGlCQUFBaUIsQ0FBQSxNQUFBNUIsQ0FBQSxHQUFBaUMsQ0FBQSxDQUFBbkQsQ0FBQSxFQUFBTCxDQUFBLENBQUF1QixDQUFBLEVBQUExQixDQUFBLENBQUFtRCxHQUFBLG1CQUFBekIsQ0FBQSxDQUFBa0MsSUFBQSxTQUFBNUQsQ0FBQSxDQUFBa0QsTUFBQSxZQUFBbEQsQ0FBQSxDQUFBbUQsR0FBQSxHQUFBekIsQ0FBQSxDQUFBeUIsR0FBQSxFQUFBbkQsQ0FBQSxDQUFBb0QsUUFBQSxTQUFBRSxDQUFBLE1BQUFkLENBQUEsR0FBQWQsQ0FBQSxDQUFBeUIsR0FBQSxTQUFBWCxDQUFBLEdBQUFBLENBQUEsQ0FBQVMsSUFBQSxJQUFBakQsQ0FBQSxDQUFBRyxDQUFBLENBQUFBLENBQUEsSUFBQXFDLENBQUEsQ0FBQWpCLEtBQUEsRUFBQXZCLENBQUEsQ0FBQTZFLElBQUEsR0FBQTFFLENBQUEsQ0FBQWtDLENBQUEsZUFBQXJDLENBQUEsQ0FBQWtELE1BQUEsS0FBQWxELENBQUEsQ0FBQWtELE1BQUEsV0FBQWxELENBQUEsQ0FBQW1ELEdBQUEsR0FBQS9DLENBQUEsR0FBQUosQ0FBQSxDQUFBb0QsUUFBQSxTQUFBRSxDQUFBLElBQUFkLENBQUEsSUFBQXhDLENBQUEsQ0FBQWtELE1BQUEsWUFBQWxELENBQUEsQ0FBQW1ELEdBQUEsT0FBQW5CLFNBQUEsc0NBQUFoQyxDQUFBLENBQUFvRCxRQUFBLFNBQUFFLENBQUEsY0FBQXdCLEVBQUExRSxDQUFBLFNBQUEyRSxVQUFBLENBQUFuRSxJQUFBLENBQUFSLENBQUEsY0FBQTRFLEVBQUE3RSxDQUFBLFFBQUFILENBQUEsR0FBQUcsQ0FBQSxXQUFBSCxDQUFBLENBQUE0RCxJQUFBLGFBQUE1RCxDQUFBLENBQUFtRCxHQUFBLEdBQUEvQyxDQUFBLEVBQUFELENBQUEsTUFBQUgsQ0FBQSxhQUFBNkQsUUFBQXpELENBQUEsU0FBQTJFLFVBQUEsV0FBQTNFLENBQUEsQ0FBQWEsT0FBQSxDQUFBNkQsQ0FBQSxjQUFBRyxLQUFBLGlCQUFBWixFQUFBbEUsQ0FBQSxnQkFBQUEsQ0FBQSxRQUFBSCxDQUFBLEdBQUFHLENBQUEsQ0FBQXVCLENBQUEsT0FBQTFCLENBQUEsU0FBQUEsQ0FBQSxDQUFBK0IsSUFBQSxDQUFBNUIsQ0FBQSw0QkFBQUEsQ0FBQSxDQUFBMEUsSUFBQSxTQUFBMUUsQ0FBQSxPQUFBK0UsS0FBQSxDQUFBL0UsQ0FBQSxDQUFBYSxNQUFBLFNBQUFSLENBQUEsT0FBQWdDLENBQUEsWUFBQXhDLEVBQUEsYUFBQVEsQ0FBQSxHQUFBTCxDQUFBLENBQUFhLE1BQUEsT0FBQXFCLENBQUEsQ0FBQU4sSUFBQSxDQUFBNUIsQ0FBQSxFQUFBSyxDQUFBLFVBQUFSLENBQUEsQ0FBQXVCLEtBQUEsR0FBQXBCLENBQUEsQ0FBQUssQ0FBQSxHQUFBUixDQUFBLENBQUFpRCxJQUFBLE9BQUFqRCxDQUFBLFNBQUFBLENBQUEsQ0FBQXVCLEtBQUEsR0FBQW5CLENBQUEsRUFBQUosQ0FBQSxDQUFBaUQsSUFBQSxPQUFBakQsQ0FBQSxZQUFBd0MsQ0FBQSxDQUFBcUMsSUFBQSxHQUFBckMsQ0FBQSxnQkFBQVIsU0FBQSxDQUFBSixPQUFBLENBQUF6QixDQUFBLGtDQUFBNEQsaUJBQUEsQ0FBQTNCLFNBQUEsR0FBQTRCLDBCQUFBLEVBQUFwQixDQUFBLENBQUEwQixDQUFBLGlCQUFBTiwwQkFBQSxHQUFBcEIsQ0FBQSxDQUFBb0IsMEJBQUEsaUJBQUFELGlCQUFBLEdBQUFuQixDQUFBLENBQUFvQiwwQkFBQSxFQUFBdEIsQ0FBQSxFQUFBcUIsaUJBQUEsQ0FBQW9CLFdBQUEseUJBQUFoRixDQUFBLENBQUFpRixtQkFBQSxhQUFBaEYsQ0FBQSxRQUFBRCxDQUFBLHdCQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQWlGLFdBQUEsV0FBQWxGLENBQUEsS0FBQUEsQ0FBQSxLQUFBNEQsaUJBQUEsNkJBQUE1RCxDQUFBLENBQUFnRixXQUFBLElBQUFoRixDQUFBLENBQUFtRixJQUFBLE9BQUFuRixDQUFBLENBQUFvRixJQUFBLGFBQUFuRixDQUFBLFdBQUFDLE1BQUEsQ0FBQW1GLGNBQUEsR0FBQW5GLE1BQUEsQ0FBQW1GLGNBQUEsQ0FBQXBGLENBQUEsRUFBQTRELDBCQUFBLEtBQUE1RCxDQUFBLENBQUFxRixTQUFBLEdBQUF6QiwwQkFBQSxFQUFBcEIsQ0FBQSxDQUFBeEMsQ0FBQSxFQUFBc0MsQ0FBQSx5QkFBQXRDLENBQUEsQ0FBQWdDLFNBQUEsR0FBQS9CLE1BQUEsQ0FBQTBDLE1BQUEsQ0FBQXVCLENBQUEsR0FBQWxFLENBQUEsS0FBQUQsQ0FBQSxDQUFBdUYsS0FBQSxhQUFBdEYsQ0FBQSxhQUFBdUUsT0FBQSxFQUFBdkUsQ0FBQSxPQUFBbUUsQ0FBQSxDQUFBRSxhQUFBLENBQUFyQyxTQUFBLEdBQUFRLENBQUEsQ0FBQTZCLGFBQUEsQ0FBQXJDLFNBQUEsRUFBQUksQ0FBQSxpQ0FBQXJDLENBQUEsQ0FBQXNFLGFBQUEsR0FBQUEsYUFBQSxFQUFBdEUsQ0FBQSxDQUFBd0YsS0FBQSxhQUFBdkYsQ0FBQSxFQUFBSixDQUFBLEVBQUFxQyxDQUFBLEVBQUE3QixDQUFBLEVBQUFrQixDQUFBLGVBQUFBLENBQUEsS0FBQUEsQ0FBQSxHQUFBa0UsT0FBQSxPQUFBcEQsQ0FBQSxPQUFBaUMsYUFBQSxDQUFBNUIsQ0FBQSxDQUFBekMsQ0FBQSxFQUFBSixDQUFBLEVBQUFxQyxDQUFBLEVBQUE3QixDQUFBLEdBQUFrQixDQUFBLFVBQUF2QixDQUFBLENBQUFpRixtQkFBQSxDQUFBcEYsQ0FBQSxJQUFBd0MsQ0FBQSxHQUFBQSxDQUFBLENBQUFxQyxJQUFBLEdBQUFELElBQUEsV0FBQXhFLENBQUEsV0FBQUEsQ0FBQSxDQUFBNkMsSUFBQSxHQUFBN0MsQ0FBQSxDQUFBbUIsS0FBQSxHQUFBaUIsQ0FBQSxDQUFBcUMsSUFBQSxXQUFBTixDQUFBLENBQUFELENBQUEsR0FBQTFCLENBQUEsQ0FBQTBCLENBQUEsRUFBQTVCLENBQUEsZ0JBQUFFLENBQUEsQ0FBQTBCLENBQUEsRUFBQTVDLENBQUEsaUNBQUFrQixDQUFBLENBQUEwQixDQUFBLDZEQUFBbkUsQ0FBQSxDQUFBRyxJQUFBLGFBQUFGLENBQUEsUUFBQUQsQ0FBQSxHQUFBRSxNQUFBLENBQUFELENBQUEsR0FBQUosQ0FBQSxnQkFBQXFDLENBQUEsSUFBQWxDLENBQUEsRUFBQUgsQ0FBQSxDQUFBNkYsT0FBQSxDQUFBeEQsQ0FBQSxtQkFBQWpDLEVBQUEsV0FBQUosQ0FBQSxDQUFBZ0IsTUFBQSxRQUFBcUIsQ0FBQSxHQUFBckMsQ0FBQSxDQUFBOEYsR0FBQSxPQUFBM0YsQ0FBQSxTQUFBQyxDQUFBLENBQUFtQixLQUFBLEdBQUFjLENBQUEsRUFBQWpDLENBQUEsQ0FBQTZDLElBQUEsT0FBQTdDLENBQUEsU0FBQUEsQ0FBQSxDQUFBNkMsSUFBQSxPQUFBN0MsQ0FBQSxRQUFBRCxDQUFBLENBQUE0RixNQUFBLEdBQUExQixDQUFBLEVBQUFSLE9BQUEsQ0FBQXpCLFNBQUEsS0FBQWlELFdBQUEsRUFBQXhCLE9BQUEsRUFBQW9CLEtBQUEsV0FBQUEsTUFBQTlFLENBQUEsYUFBQTZGLElBQUEsUUFBQW5CLElBQUEsV0FBQXRCLElBQUEsUUFBQUMsS0FBQSxHQUFBcEQsQ0FBQSxPQUFBNkMsSUFBQSxZQUFBRyxRQUFBLGNBQUFGLE1BQUEsZ0JBQUFDLEdBQUEsR0FBQS9DLENBQUEsT0FBQTJFLFVBQUEsQ0FBQTlELE9BQUEsQ0FBQStELENBQUEsSUFBQTdFLENBQUEsV0FBQUgsQ0FBQSxrQkFBQUEsQ0FBQSxDQUFBaUcsTUFBQSxPQUFBNUQsQ0FBQSxDQUFBTixJQUFBLE9BQUEvQixDQUFBLE1BQUFrRixLQUFBLEVBQUFsRixDQUFBLENBQUFrRyxLQUFBLGNBQUFsRyxDQUFBLElBQUFJLENBQUEsTUFBQStGLElBQUEsV0FBQUEsS0FBQSxTQUFBbEQsSUFBQSxXQUFBN0MsQ0FBQSxRQUFBMkUsVUFBQSx3QkFBQTNFLENBQUEsQ0FBQXdELElBQUEsUUFBQXhELENBQUEsQ0FBQStDLEdBQUEsY0FBQWlELElBQUEsS0FBQTNDLGlCQUFBLFdBQUFBLGtCQUFBdEQsQ0FBQSxhQUFBOEMsSUFBQSxRQUFBOUMsQ0FBQSxNQUFBSCxDQUFBLGtCQUFBcUMsRUFBQWpDLENBQUEsSUFBQW9DLENBQUEsQ0FBQW9CLElBQUEsWUFBQXBCLENBQUEsQ0FBQVcsR0FBQSxHQUFBaEQsQ0FBQSxFQUFBSCxDQUFBLENBQUE2RSxJQUFBLEdBQUF6RSxDQUFBLGFBQUFJLENBQUEsR0FBQVIsQ0FBQSxDQUFBK0UsVUFBQSxDQUFBL0QsTUFBQSxNQUFBUixDQUFBLFNBQUFBLENBQUEsUUFBQWtCLENBQUEsUUFBQXFELFVBQUEsQ0FBQXZFLENBQUEsR0FBQWdDLENBQUEsR0FBQWQsQ0FBQSxLQUFBZ0IsQ0FBQSxRQUFBc0QsSUFBQSxFQUFBcEQsQ0FBQSxHQUFBbEIsQ0FBQSxLQUFBbUIsQ0FBQSxHQUFBbkIsQ0FBQSxnQkFBQUEsQ0FBQSxZQUFBVyxDQUFBLGtCQUFBTyxDQUFBLEtBQUFDLENBQUEsUUFBQUcsS0FBQSx3REFBQXRCLENBQUEsT0FBQUEsQ0FBQSxPQUFBZ0IsQ0FBQSxRQUFBQSxDQUFBLEdBQUFFLENBQUEsY0FBQU0sTUFBQSxnQkFBQUMsR0FBQSxHQUFBL0MsQ0FBQSxFQUFBaUMsQ0FBQSxDQUFBTyxDQUFBLFdBQUFGLENBQUEsR0FBQUcsQ0FBQSxTQUFBUixDQUFBLENBQUFRLENBQUEsY0FBQWEsTUFBQSxXQUFBQSxPQUFBdEQsQ0FBQSxFQUFBRCxDQUFBLGFBQUFILENBQUEsUUFBQStFLFVBQUEsQ0FBQS9ELE1BQUEsTUFBQWhCLENBQUEsU0FBQUEsQ0FBQSxRQUFBcUMsQ0FBQSxRQUFBMEMsVUFBQSxDQUFBL0UsQ0FBQSxPQUFBcUMsQ0FBQSxZQUFBQSxDQUFBLFlBQUEyRCxJQUFBLFNBQUFBLElBQUEsR0FBQTNELENBQUEsV0FBQTdCLENBQUEsR0FBQTZCLENBQUEsYUFBQTdCLENBQUEsaUJBQUFKLENBQUEsbUJBQUFBLENBQUEsS0FBQUksQ0FBQSxPQUFBTCxDQUFBLElBQUFBLENBQUEsSUFBQUssQ0FBQSxRQUFBQSxDQUFBLGNBQUFrQixDQUFBLEdBQUFsQixDQUFBLEdBQUFBLENBQUEsaUJBQUFrQixDQUFBLENBQUFrQyxJQUFBLEdBQUF4RCxDQUFBLEVBQUFzQixDQUFBLENBQUF5QixHQUFBLEdBQUFoRCxDQUFBLEVBQUFLLENBQUEsU0FBQTBDLE1BQUEsZ0JBQUEyQixJQUFBLEdBQUFyRSxDQUFBLEtBQUE4QyxDQUFBLFNBQUErQyxRQUFBLENBQUEzRSxDQUFBLE1BQUEyRSxRQUFBLFdBQUFBLFNBQUFqRyxDQUFBLEVBQUFELENBQUEsb0JBQUFDLENBQUEsQ0FBQXdELElBQUEsUUFBQXhELENBQUEsQ0FBQStDLEdBQUEscUJBQUEvQyxDQUFBLENBQUF3RCxJQUFBLG1CQUFBeEQsQ0FBQSxDQUFBd0QsSUFBQSxRQUFBaUIsSUFBQSxHQUFBekUsQ0FBQSxDQUFBK0MsR0FBQSxnQkFBQS9DLENBQUEsQ0FBQXdELElBQUEsU0FBQXdDLElBQUEsUUFBQWpELEdBQUEsR0FBQS9DLENBQUEsQ0FBQStDLEdBQUEsT0FBQUQsTUFBQSxrQkFBQTJCLElBQUEseUJBQUF6RSxDQUFBLENBQUF3RCxJQUFBLElBQUF6RCxDQUFBLFVBQUEwRSxJQUFBLEdBQUExRSxDQUFBLEdBQUFtRCxDQUFBLEtBQUFnRCxNQUFBLFdBQUFBLE9BQUFsRyxDQUFBLGFBQUFELENBQUEsUUFBQTRFLFVBQUEsQ0FBQS9ELE1BQUEsTUFBQWIsQ0FBQSxTQUFBQSxDQUFBLFFBQUFILENBQUEsUUFBQStFLFVBQUEsQ0FBQTVFLENBQUEsT0FBQUgsQ0FBQSxRQUFBSSxDQUFBLGNBQUFpRyxRQUFBLENBQUFyRyxDQUFBLEtBQUFBLENBQUEsTUFBQWdGLENBQUEsQ0FBQWhGLENBQUEsR0FBQXNELENBQUEseUJBQUFpRCxPQUFBbkcsQ0FBQSxhQUFBRCxDQUFBLFFBQUE0RSxVQUFBLENBQUEvRCxNQUFBLE1BQUFiLENBQUEsU0FBQUEsQ0FBQSxRQUFBSCxDQUFBLFFBQUErRSxVQUFBLENBQUE1RSxDQUFBLE9BQUFILENBQUEsUUFBQUksQ0FBQSxRQUFBaUMsQ0FBQSxHQUFBckMsQ0FBQSxxQkFBQXFDLENBQUEsQ0FBQXVCLElBQUEsUUFBQXBELENBQUEsR0FBQTZCLENBQUEsQ0FBQWMsR0FBQSxFQUFBNkIsQ0FBQSxDQUFBaEYsQ0FBQSxZQUFBUSxDQUFBLFlBQUF3QyxLQUFBLDhCQUFBd0QsYUFBQSxXQUFBQSxjQUFBckcsQ0FBQSxFQUFBSCxDQUFBLEVBQUFxQyxDQUFBLGdCQUFBZSxRQUFBLEtBQUExQixDQUFBLEVBQUEyQyxDQUFBLENBQUFsRSxDQUFBLEdBQUFBLENBQUEsRUFBQUgsQ0FBQSxFQUFBcUMsQ0FBQSxFQUFBQSxDQUFBLG9CQUFBYSxNQUFBLFVBQUFDLEdBQUEsR0FBQS9DLENBQUEsR0FBQWtELENBQUEsT0FBQW5ELENBQUE7QUFBQSxJQUFBc0csT0FBQSxnQkFBQXRFLG1CQUFBLEdBQUFvRCxJQUFBLENBa0VrQm1CLGFBQWE7RUFBQUMsUUFBQSxnQkFBQXhFLG1CQUFBLEdBQUFvRCxJQUFBLENBbUVicUIseUNBQXlDO0VBQUFDLFFBQUEsZ0JBQUExRSxtQkFBQSxHQUFBb0QsSUFBQSxDQW9CekN1QiwyQ0FBMkM7QUFBQSxTQUFBQywyQkFBQTVHLENBQUEsRUFBQUgsQ0FBQSxRQUFBSSxDQUFBLHlCQUFBeUIsTUFBQSxJQUFBMUIsQ0FBQSxDQUFBMEIsTUFBQSxDQUFBVSxRQUFBLEtBQUFwQyxDQUFBLHFCQUFBQyxDQUFBLFFBQUE0RyxLQUFBLENBQUFDLE9BQUEsQ0FBQTlHLENBQUEsTUFBQUMsQ0FBQSxHQUFBOEcsMkJBQUEsQ0FBQS9HLENBQUEsTUFBQUgsQ0FBQSxJQUFBRyxDQUFBLHVCQUFBQSxDQUFBLENBQUFhLE1BQUEsSUFBQVosQ0FBQSxLQUFBRCxDQUFBLEdBQUFDLENBQUEsT0FBQStHLEVBQUEsTUFBQUMsQ0FBQSxZQUFBQSxFQUFBLGVBQUF6RCxDQUFBLEVBQUF5RCxDQUFBLEVBQUEvRSxDQUFBLFdBQUFBLEVBQUEsV0FBQThFLEVBQUEsSUFBQWhILENBQUEsQ0FBQWEsTUFBQSxLQUFBaUMsSUFBQSxXQUFBQSxJQUFBLE1BQUExQixLQUFBLEVBQUFwQixDQUFBLENBQUFnSCxFQUFBLFVBQUFuSCxDQUFBLFdBQUFBLEVBQUFHLENBQUEsVUFBQUEsQ0FBQSxLQUFBbUQsQ0FBQSxFQUFBOEQsQ0FBQSxnQkFBQXBGLFNBQUEsaUpBQUF4QixDQUFBLEVBQUFnQyxDQUFBLE9BQUFFLENBQUEsZ0JBQUFpQixDQUFBLFdBQUFBLEVBQUEsSUFBQXZELENBQUEsR0FBQUEsQ0FBQSxDQUFBMkIsSUFBQSxDQUFBNUIsQ0FBQSxNQUFBa0MsQ0FBQSxXQUFBQSxFQUFBLFFBQUFsQyxDQUFBLEdBQUFDLENBQUEsQ0FBQXlFLElBQUEsV0FBQXJDLENBQUEsR0FBQXJDLENBQUEsQ0FBQThDLElBQUEsRUFBQTlDLENBQUEsS0FBQUgsQ0FBQSxXQUFBQSxFQUFBRyxDQUFBLElBQUF1QyxDQUFBLE9BQUFsQyxDQUFBLEdBQUFMLENBQUEsS0FBQW1ELENBQUEsV0FBQUEsRUFBQSxVQUFBZCxDQUFBLFlBQUFwQyxDQUFBLGNBQUFBLENBQUEsOEJBQUFzQyxDQUFBLFFBQUFsQyxDQUFBO0FBQUEsU0FBQTBHLDRCQUFBL0csQ0FBQSxFQUFBcUMsQ0FBQSxRQUFBckMsQ0FBQSwyQkFBQUEsQ0FBQSxTQUFBa0gsaUJBQUEsQ0FBQWxILENBQUEsRUFBQXFDLENBQUEsT0FBQXBDLENBQUEsTUFBQWtILFFBQUEsQ0FBQXZGLElBQUEsQ0FBQTVCLENBQUEsRUFBQStGLEtBQUEsNkJBQUE5RixDQUFBLElBQUFELENBQUEsQ0FBQWtGLFdBQUEsS0FBQWpGLENBQUEsR0FBQUQsQ0FBQSxDQUFBa0YsV0FBQSxDQUFBQyxJQUFBLGFBQUFsRixDQUFBLGNBQUFBLENBQUEsR0FBQTRHLEtBQUEsQ0FBQU8sSUFBQSxDQUFBcEgsQ0FBQSxvQkFBQUMsQ0FBQSwrQ0FBQW9ILElBQUEsQ0FBQXBILENBQUEsSUFBQWlILGlCQUFBLENBQUFsSCxDQUFBLEVBQUFxQyxDQUFBO0FBQUEsU0FBQTZFLGtCQUFBbEgsQ0FBQSxFQUFBcUMsQ0FBQSxhQUFBQSxDQUFBLElBQUFBLENBQUEsR0FBQXJDLENBQUEsQ0FBQWEsTUFBQSxNQUFBd0IsQ0FBQSxHQUFBckMsQ0FBQSxDQUFBYSxNQUFBLFlBQUFoQixDQUFBLE1BQUFxQyxDQUFBLEdBQUEyRSxLQUFBLENBQUF4RSxDQUFBLEdBQUF4QyxDQUFBLEdBQUF3QyxDQUFBLEVBQUF4QyxDQUFBLElBQUFxQyxDQUFBLENBQUFyQyxDQUFBLElBQUFHLENBQUEsQ0FBQUgsQ0FBQSxVQUFBcUMsQ0FBQTtBQTNJdEQsSUFBTW9GLHNCQUFzQixHQUFBQyxPQUFBLENBQUFELHNCQUFBLEdBQUcsVUFBVTtBQUN6QyxJQUFNRSw0QkFBNEIsR0FBQUQsT0FBQSxDQUFBQyw0QkFBQSxHQUFHLGtCQUFrQjtBQUN2RCxJQUFNQyxzQkFBc0IsR0FBQUYsT0FBQSxDQUFBRSxzQkFBQSxHQUFHLFlBQVk7QUFDM0MsSUFBTUMscUJBQXFCLEdBQUFILE9BQUEsQ0FBQUcscUJBQUEsR0FBRyxXQUFXO0FBQ3pDLElBQU1DLFlBQVksR0FBQUosT0FBQSxDQUFBSSxZQUFBLEdBQUcsS0FBSztBQUMxQixJQUFNQyxxQkFBcUIsR0FBQUwsT0FBQSxDQUFBSyxxQkFBQSxHQUFHLFVBQVU7QUFDeEMsSUFBTUMsd0JBQXdCLEdBQUFOLE9BQUEsQ0FBQU0sd0JBQUEsR0FBRyxhQUFhO0FBQzlDLElBQU1DLHNCQUFzQixHQUFBUCxPQUFBLENBQUFPLHNCQUFBLEdBQUcsZUFBZTtBQUM5QyxJQUFNQyxjQUFjLEdBQUFSLE9BQUEsQ0FBQVEsY0FBQSxHQUFHLEtBQUs7QUE0QzVCLFNBQVd4QixhQUFhQSxDQUFFeUIsT0FBZTtFQUFBLElBQUFDLEtBQUEsRUFBQUMsU0FBQSxFQUFBQyxLQUFBLEVBQUFDLElBQUE7RUFBQSxPQUFBcEcsbUJBQUEsR0FBQTJCLElBQUEsVUFBQTBFLGVBQUFDLFFBQUE7SUFBQSxrQkFBQUEsUUFBQSxDQUFBekMsSUFBQSxHQUFBeUMsUUFBQSxDQUFBNUQsSUFBQTtNQUFBO1FBQUEsTUFDMUNzRCxPQUFPLElBQUlPLGNBQUUsQ0FBQ0MsVUFBVSxDQUFDUixPQUFPLENBQUM7VUFBQU0sUUFBQSxDQUFBNUQsSUFBQTtVQUFBO1FBQUE7UUFDN0J1RCxLQUFLLEdBQUdNLGNBQUUsQ0FBQ0UsV0FBVyxDQUFDVCxPQUFPLEVBQUU7VUFBRVUsYUFBYSxFQUFFLElBQUk7VUFBRUMsU0FBUyxFQUFFO1FBQUssQ0FBQyxDQUFDO1FBQUFULFNBQUEsR0FBQXRCLDBCQUFBLENBQzVEcUIsS0FBSztRQUFBSyxRQUFBLENBQUF6QyxJQUFBO1FBQUFxQyxTQUFBLENBQUExRSxDQUFBO01BQUE7UUFBQSxLQUFBMkUsS0FBQSxHQUFBRCxTQUFBLENBQUFoRyxDQUFBLElBQUFZLElBQUE7VUFBQXdGLFFBQUEsQ0FBQTVELElBQUE7VUFBQTtRQUFBO1FBQWIwRCxJQUFJLEdBQUFELEtBQUEsQ0FBQS9HLEtBQUE7UUFBQSxLQUNUZ0gsSUFBSSxDQUFDUSxNQUFNLENBQUMsQ0FBQztVQUFBTixRQUFBLENBQUE1RCxJQUFBO1VBQUE7UUFBQTtRQUFBNEQsUUFBQSxDQUFBNUQsSUFBQTtRQUNmLE9BQU1tRSxnQkFBSSxDQUFDQyxJQUFJLENBQUNWLElBQUksQ0FBQ1csVUFBVSxFQUFFWCxJQUFJLENBQUNqRCxJQUFJLENBQUM7TUFBQTtRQUFBbUQsUUFBQSxDQUFBNUQsSUFBQTtRQUFBO01BQUE7UUFBQTRELFFBQUEsQ0FBQTVELElBQUE7UUFBQTtNQUFBO1FBQUE0RCxRQUFBLENBQUF6QyxJQUFBO1FBQUF5QyxRQUFBLENBQUFVLEVBQUEsR0FBQVYsUUFBQTtRQUFBSixTQUFBLENBQUFySSxDQUFBLENBQUF5SSxRQUFBLENBQUFVLEVBQUE7TUFBQTtRQUFBVixRQUFBLENBQUF6QyxJQUFBO1FBQUFxQyxTQUFBLENBQUEvRSxDQUFBO1FBQUEsT0FBQW1GLFFBQUEsQ0FBQW5DLE1BQUE7TUFBQTtNQUFBO1FBQUEsT0FBQW1DLFFBQUEsQ0FBQXRDLElBQUE7SUFBQTtFQUFBLEdBQUFNLE9BQUE7QUFBQTtBQU1uRCxTQUFXMkMsa0JBQWtCQSxDQUMzQkMsT0FBZSxFQUNmQyxPQUFnQixFQUNoQkMsb0JBQTZCLEVBQzdCQyxNQUFlO0VBQUEsSUFBQUMsSUFBQSxHQUFBMUksU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQTJJLFNBQUEsR0FBQTNJLFNBQUEsTUFDRyxDQUFDLENBQUM7SUFBQTRJLFFBQUEsR0FBQUYsSUFBQSxDQUFsQkcsR0FBRztJQUFIQSxHQUFHLEdBQUFELFFBQUEsY0FBRyxLQUFLLEdBQUFBLFFBQUE7RUFBQSxvQkFBQXhILG1CQUFBLEdBQUFvRCxJQUFBLFVBQUFzRSxRQUFBO0lBQUEsSUFBQUMsUUFBQSxFQUFBQyxVQUFBLEVBQUFDLE1BQUEsRUFBQUMsUUFBQSxFQUFBQyxRQUFBLEVBQUFDLElBQUEsRUFBQUMsbUJBQUE7SUFBQSxPQUFBakksbUJBQUEsR0FBQTJCLElBQUEsVUFBQXVHLFNBQUFDLFNBQUE7TUFBQSxrQkFBQUEsU0FBQSxDQUFBdEUsSUFBQSxHQUFBc0UsU0FBQSxDQUFBekYsSUFBQTtRQUFBO1VBRVRpRixRQUFRLEdBQUdkLGdCQUFJLENBQUNDLElBQUksQ0FBQ0ksT0FBTyxFQUFFQyxPQUFPLENBQUNpQixRQUFRLENBQUM7VUFDbkQsSUFBSWYsTUFBTSxFQUFFO1lBQ1ZNLFFBQVEsR0FBR2QsZ0JBQUksQ0FBQ0MsSUFBSSxDQUFDYSxRQUFRLEVBQUVOLE1BQU0sQ0FBQztVQUN4QztVQUNBLElBQUlELG9CQUFvQixFQUFFO1lBQ3hCTyxRQUFRLEdBQUdkLGdCQUFJLENBQUNDLElBQUksQ0FBQ2EsUUFBUSxFQUFFN0gsTUFBTSxDQUFDc0gsb0JBQW9CLENBQUMsQ0FBQztVQUM5RDtVQUFDUSxVQUFBLEdBQUFoRCwwQkFBQSxDQUNzQkwsYUFBYSxDQUFDb0QsUUFBUSxDQUFDO1VBQUFRLFNBQUEsQ0FBQXRFLElBQUE7VUFBQStELFVBQUEsQ0FBQXBHLENBQUE7UUFBQTtVQUFBLEtBQUFxRyxNQUFBLEdBQUFELFVBQUEsQ0FBQTFILENBQUEsSUFBQVksSUFBQTtZQUFBcUgsU0FBQSxDQUFBekYsSUFBQTtZQUFBO1VBQUE7VUFBbkNvRixRQUFRLEdBQUFELE1BQUEsQ0FBQXpJLEtBQUE7VUFDakIsSUFBSXFJLEdBQUcsRUFBRTtZQUNQWSxPQUFPLENBQUNaLEdBQUcsa0JBQUFhLE1BQUEsQ0FBa0JSLFFBQVEsV0FBRyxDQUFDO1VBQzNDO1VBRU1DLFFBQVEsR0FBR3hCLGNBQUUsQ0FBQ2dDLFlBQVksQ0FBQ1QsUUFBUSxFQUFFO1lBQUVVLFFBQVEsRUFBRTtVQUFPLENBQUMsQ0FBQztVQUMxRFIsSUFBTyxHQUFHUyxJQUFJLENBQUNDLEtBQUssQ0FBQ1gsUUFBUSxDQUFDO1VBRTlCRSxtQkFBbUIsR0FBR0gsUUFBUSxDQUFDYSxTQUFTLENBQUNiLFFBQVEsQ0FBQ2MsT0FBTyxDQUFDekIsT0FBTyxDQUFDaUIsUUFBUSxDQUFDLEdBQUdqQixPQUFPLENBQUNpQixRQUFRLENBQUN2SixNQUFNLENBQUM7VUFBQXNKLFNBQUEsQ0FBQXpGLElBQUE7VUFFNUcsT0FBTTtZQUNKc0YsSUFBSSxFQUFKQSxJQUFJO1lBQ0pDLG1CQUFtQixFQUFuQkEsbUJBQW1CO1lBQ25CWSxXQUFXLEVBQUV6QjtVQUNmLENBQUM7UUFBQTtVQUFBZSxTQUFBLENBQUF6RixJQUFBO1VBQUE7UUFBQTtVQUFBeUYsU0FBQSxDQUFBekYsSUFBQTtVQUFBO1FBQUE7VUFBQXlGLFNBQUEsQ0FBQXRFLElBQUE7VUFBQXNFLFNBQUEsQ0FBQW5CLEVBQUEsR0FBQW1CLFNBQUE7VUFBQVAsVUFBQSxDQUFBL0osQ0FBQSxDQUFBc0ssU0FBQSxDQUFBbkIsRUFBQTtRQUFBO1VBQUFtQixTQUFBLENBQUF0RSxJQUFBO1VBQUErRCxVQUFBLENBQUF6RyxDQUFBO1VBQUEsT0FBQWdILFNBQUEsQ0FBQWhFLE1BQUE7UUFBQTtRQUFBO1VBQUEsT0FBQWdFLFNBQUEsQ0FBQW5FLElBQUE7TUFBQTtJQUFBLEdBQUEwRCxPQUFBO0VBQUE7QUFBQTtBQUlFLFNBQVdvQix3QkFBd0JBLENBQ3hDNUIsT0FBZSxFQUNmNkIsT0FBMkI7RUFBQSxJQUMzQkMsT0FBTyxHQUFBcEssU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQTJJLFNBQUEsR0FBQTNJLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFBQSxvQkFBQW9CLG1CQUFBLEdBQUFvRCxJQUFBLFVBQUE2RixTQUFBO0lBQUEsSUFBQUMsVUFBQSxFQUFBQyxNQUFBLEVBQUFDLGNBQUE7SUFBQSxPQUFBcEosbUJBQUEsR0FBQTJCLElBQUEsVUFBQTBILFVBQUFDLFNBQUE7TUFBQSxrQkFBQUEsU0FBQSxDQUFBekYsSUFBQSxHQUFBeUYsU0FBQSxDQUFBNUcsSUFBQTtRQUFBO1VBQUF3RyxVQUFBLEdBQUF0RSwwQkFBQSxDQUdQcUMsa0JBQWtCLENBQW1CQyxPQUFPLEVBQUVxQyxrQkFBUSxDQUFDQyxLQUFLLEVBQUVULE9BQU8sRUFBRXhCLFNBQVMsRUFBRXlCLE9BQU8sQ0FBQztVQUFBTSxTQUFBLENBQUF6RixJQUFBO1VBQUFxRixVQUFBLENBQUExSCxDQUFBO1FBQUE7VUFBQSxLQUFBMkgsTUFBQSxHQUFBRCxVQUFBLENBQUFoSixDQUFBLElBQUFZLElBQUE7WUFBQXdJLFNBQUEsQ0FBQTVHLElBQUE7WUFBQTtVQUFBO1VBRHBGMEcsY0FBYyxHQUFBRCxNQUFBLENBQUEvSixLQUFBO1VBQUFrSyxTQUFBLENBQUE1RyxJQUFBO1VBR3ZCLE9BQU0wRyxjQUFjO1FBQUE7VUFBQUUsU0FBQSxDQUFBNUcsSUFBQTtVQUFBO1FBQUE7VUFBQTRHLFNBQUEsQ0FBQTVHLElBQUE7VUFBQTtRQUFBO1VBQUE0RyxTQUFBLENBQUF6RixJQUFBO1VBQUF5RixTQUFBLENBQUF0QyxFQUFBLEdBQUFzQyxTQUFBO1VBQUFKLFVBQUEsQ0FBQXJMLENBQUEsQ0FBQXlMLFNBQUEsQ0FBQXRDLEVBQUE7UUFBQTtVQUFBc0MsU0FBQSxDQUFBekYsSUFBQTtVQUFBcUYsVUFBQSxDQUFBL0gsQ0FBQTtVQUFBLE9BQUFtSSxTQUFBLENBQUFuRixNQUFBO1FBQUE7UUFBQTtVQUFBLE9BQUFtRixTQUFBLENBQUF0RixJQUFBO01BQUE7SUFBQSxHQUFBaUYsUUFBQTtFQUFBO0FBQUE7QUFJakIsU0FBV1EsZ0NBQWdDQSxDQUNoRHZDLE9BQWUsRUFDZjZCLE9BQTJCO0VBQUEsSUFDM0JDLE9BQU8sR0FBQXBLLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUEySSxTQUFBLEdBQUEzSSxTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBQUEsb0JBQUFvQixtQkFBQSxHQUFBb0QsSUFBQSxVQUFBc0csU0FBQTtJQUFBLElBQUFDLFVBQUEsRUFBQUMsTUFBQSxFQUFBQyxxQkFBQTtJQUFBLE9BQUE3SixtQkFBQSxHQUFBMkIsSUFBQSxVQUFBbUksVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUFsRyxJQUFBLEdBQUFrRyxTQUFBLENBQUFySCxJQUFBO1FBQUE7VUFBQWlILFVBQUEsR0FBQS9FLDBCQUFBLENBR1BxQyxrQkFBa0IsQ0FBMEJDLE9BQU8sRUFBRXFDLGtCQUFRLENBQUNTLE1BQU0sRUFBRWpCLE9BQU8sRUFBRXpELHNCQUFzQixFQUFFMEQsT0FBTyxDQUFDO1VBQUFlLFNBQUEsQ0FBQWxHLElBQUE7VUFBQThGLFVBQUEsQ0FBQW5JLENBQUE7UUFBQTtVQUFBLEtBQUFvSSxNQUFBLEdBQUFELFVBQUEsQ0FBQXpKLENBQUEsSUFBQVksSUFBQTtZQUFBaUosU0FBQSxDQUFBckgsSUFBQTtZQUFBO1VBQUE7VUFEekdtSCxxQkFBcUIsR0FBQUQsTUFBQSxDQUFBeEssS0FBQTtVQUFBMkssU0FBQSxDQUFBckgsSUFBQTtVQUc5QixPQUFNbUgscUJBQXFCO1FBQUE7VUFBQUUsU0FBQSxDQUFBckgsSUFBQTtVQUFBO1FBQUE7VUFBQXFILFNBQUEsQ0FBQXJILElBQUE7VUFBQTtRQUFBO1VBQUFxSCxTQUFBLENBQUFsRyxJQUFBO1VBQUFrRyxTQUFBLENBQUEvQyxFQUFBLEdBQUErQyxTQUFBO1VBQUFKLFVBQUEsQ0FBQTlMLENBQUEsQ0FBQWtNLFNBQUEsQ0FBQS9DLEVBQUE7UUFBQTtVQUFBK0MsU0FBQSxDQUFBbEcsSUFBQTtVQUFBOEYsVUFBQSxDQUFBeEksQ0FBQTtVQUFBLE9BQUE0SSxTQUFBLENBQUE1RixNQUFBO1FBQUE7UUFBQTtVQUFBLE9BQUE0RixTQUFBLENBQUEvRixJQUFBO01BQUE7SUFBQSxHQUFBMEYsUUFBQTtFQUFBO0FBQUE7QUFJeEIsU0FBV2pGLHlDQUF5Q0EsQ0FDekR5QyxPQUFlLEVBQ2Y2QixPQUEyQjtFQUFBLElBQUFwQixRQUFBLEVBQUFzQyxVQUFBLEVBQUFDLE1BQUEsRUFBQXBDLFFBQUEsRUFBQXFDLGNBQUEsRUFBQXBDLFFBQUEsRUFBQUMsSUFBQTtFQUFBLE9BQUFoSSxtQkFBQSxHQUFBMkIsSUFBQSxVQUFBeUksMkNBQUFDLFNBQUE7SUFBQSxrQkFBQUEsU0FBQSxDQUFBeEcsSUFBQSxHQUFBd0csU0FBQSxDQUFBM0gsSUFBQTtNQUFBO1FBRXZCaUYsUUFBUSxHQUFHZCxnQkFBSSxDQUFDQyxJQUFJLENBQUNJLE9BQU8sRUFBRXZCLFlBQVksRUFBRUMscUJBQXFCLENBQUM7UUFDdEUsSUFBSW1ELE9BQU8sRUFBRTtVQUNYcEIsUUFBUSxHQUFHZCxnQkFBSSxDQUFDQyxJQUFJLENBQUNhLFFBQVEsRUFBRW9CLE9BQU8sQ0FBQzVELFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDcEQ7UUFBQzhFLFVBQUEsR0FBQXJGLDBCQUFBLENBQ3NCTCxhQUFhLENBQUNvRCxRQUFRLENBQUM7UUFBQTBDLFNBQUEsQ0FBQXhHLElBQUE7UUFBQW9HLFVBQUEsQ0FBQXpJLENBQUE7TUFBQTtRQUFBLEtBQUEwSSxNQUFBLEdBQUFELFVBQUEsQ0FBQS9KLENBQUEsSUFBQVksSUFBQTtVQUFBdUosU0FBQSxDQUFBM0gsSUFBQTtVQUFBO1FBQUE7UUFBbkNvRixRQUFRLEdBQUFvQyxNQUFBLENBQUE5SyxLQUFBO1FBQ1grSyxjQUFjLEdBQUd0RCxnQkFBSSxDQUFDNkIsS0FBSyxDQUFDWixRQUFRLENBQUM7UUFBQSxNQUN2Q3FDLGNBQWMsQ0FBQ0csSUFBSSxLQUFLeEUsc0JBQXNCO1VBQUF1RSxTQUFBLENBQUEzSCxJQUFBO1VBQUE7UUFBQTtRQUMxQ3FGLFFBQVEsR0FBR3hCLGNBQUUsQ0FBQ2dDLFlBQVksQ0FBQ1QsUUFBUSxFQUFFO1VBQUVVLFFBQVEsRUFBRTtRQUFPLENBQUMsQ0FBQztRQUMxRFIsSUFBSSxHQUFHUyxJQUFJLENBQUNDLEtBQUssQ0FBQ1gsUUFBUSxDQUFDO1FBQUFzQyxTQUFBLENBQUEzSCxJQUFBO1FBQ2pDLE9BQU07VUFDSnNGLElBQUksRUFBSkE7UUFDRixDQUFDO01BQUE7UUFBQXFDLFNBQUEsQ0FBQTNILElBQUE7UUFBQTtNQUFBO1FBQUEySCxTQUFBLENBQUEzSCxJQUFBO1FBQUE7TUFBQTtRQUFBMkgsU0FBQSxDQUFBeEcsSUFBQTtRQUFBd0csU0FBQSxDQUFBckQsRUFBQSxHQUFBcUQsU0FBQTtRQUFBSixVQUFBLENBQUFwTSxDQUFBLENBQUF3TSxTQUFBLENBQUFyRCxFQUFBO01BQUE7UUFBQXFELFNBQUEsQ0FBQXhHLElBQUE7UUFBQW9HLFVBQUEsQ0FBQTlJLENBQUE7UUFBQSxPQUFBa0osU0FBQSxDQUFBbEcsTUFBQTtNQUFBO01BQUE7UUFBQSxPQUFBa0csU0FBQSxDQUFBckcsSUFBQTtJQUFBO0VBQUEsR0FBQVEsUUFBQTtBQUFBO0FBS0EsU0FBV0csMkNBQTJDQSxDQUMzRHVDLE9BQWUsRUFDZjZCLE9BQTJCO0VBQUEsSUFBQXBCLFFBQUEsRUFBQTRDLFVBQUEsRUFBQUMsTUFBQSxFQUFBMUMsUUFBQSxFQUFBcUMsY0FBQSxFQUFBcEMsUUFBQSxFQUFBQyxJQUFBO0VBQUEsT0FBQWhJLG1CQUFBLEdBQUEyQixJQUFBLFVBQUE4SSw2Q0FBQUMsU0FBQTtJQUFBLGtCQUFBQSxTQUFBLENBQUE3RyxJQUFBLEdBQUE2RyxTQUFBLENBQUFoSSxJQUFBO01BQUE7UUFFdkJpRixRQUFRLEdBQUdkLGdCQUFJLENBQUNDLElBQUksQ0FBQ0ksT0FBTyxFQUFFbkIsY0FBYyxDQUFDO1FBQ2pELElBQUlnRCxPQUFPLEVBQUU7VUFDWHBCLFFBQVEsR0FBR2QsZ0JBQUksQ0FBQ0MsSUFBSSxDQUFDYSxRQUFRLEVBQUVvQixPQUFPLENBQUM1RCxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3BEO1FBQUNvRixVQUFBLEdBQUEzRiwwQkFBQSxDQUNzQkwsYUFBYSxDQUFDb0QsUUFBUSxDQUFDO1FBQUErQyxTQUFBLENBQUE3RyxJQUFBO1FBQUEwRyxVQUFBLENBQUEvSSxDQUFBO01BQUE7UUFBQSxLQUFBZ0osTUFBQSxHQUFBRCxVQUFBLENBQUFySyxDQUFBLElBQUFZLElBQUE7VUFBQTRKLFNBQUEsQ0FBQWhJLElBQUE7VUFBQTtRQUFBO1FBQW5Db0YsUUFBUSxHQUFBMEMsTUFBQSxDQUFBcEwsS0FBQTtRQUNYK0ssY0FBYyxHQUFHdEQsZ0JBQUksQ0FBQzZCLEtBQUssQ0FBQ1osUUFBUSxDQUFDO1FBQUEsTUFDdkNxQyxjQUFjLENBQUNHLElBQUksS0FBS3hFLHNCQUFzQjtVQUFBNEUsU0FBQSxDQUFBaEksSUFBQTtVQUFBO1FBQUE7UUFDMUNxRixRQUFRLEdBQUd4QixjQUFFLENBQUNnQyxZQUFZLENBQUNULFFBQVEsRUFBRTtVQUFFVSxRQUFRLEVBQUU7UUFBTyxDQUFDLENBQUM7UUFDMURSLElBQUksR0FBR1MsSUFBSSxDQUFDQyxLQUFLLENBQUNYLFFBQVEsQ0FBQztRQUFBMkMsU0FBQSxDQUFBaEksSUFBQTtRQUNqQyxPQUFNO1VBQ0pzRixJQUFJLEVBQUpBO1FBQ0YsQ0FBQztNQUFBO1FBQUEwQyxTQUFBLENBQUFoSSxJQUFBO1FBQUE7TUFBQTtRQUFBZ0ksU0FBQSxDQUFBaEksSUFBQTtRQUFBO01BQUE7UUFBQWdJLFNBQUEsQ0FBQTdHLElBQUE7UUFBQTZHLFNBQUEsQ0FBQTFELEVBQUEsR0FBQTBELFNBQUE7UUFBQUgsVUFBQSxDQUFBMU0sQ0FBQSxDQUFBNk0sU0FBQSxDQUFBMUQsRUFBQTtNQUFBO1FBQUEwRCxTQUFBLENBQUE3RyxJQUFBO1FBQUEwRyxVQUFBLENBQUFwSixDQUFBO1FBQUEsT0FBQXVKLFNBQUEsQ0FBQXZHLE1BQUE7TUFBQTtNQUFBO1FBQUEsT0FBQXVHLFNBQUEsQ0FBQTFHLElBQUE7SUFBQTtFQUFBLEdBQUFVLFFBQUE7QUFBQTtBQUtBLFNBQVdpRyxzQ0FBc0NBLENBQ3REekQsT0FBZSxFQUNmNkIsT0FBMkI7RUFBQSxJQUMzQkMsT0FBTyxHQUFBcEssU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQTJJLFNBQUEsR0FBQTNJLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFBQSxvQkFBQW9CLG1CQUFBLEdBQUFvRCxJQUFBLFVBQUF3SCxTQUFBO0lBQUEsSUFBQUMsVUFBQSxFQUFBQyxNQUFBLEVBQUFDLGlCQUFBLEVBQUFDLFVBQUEsRUFBQUMsTUFBQSxFQUFBQyxPQUFBLEVBQUFDLGFBQUEsRUFBQUMsVUFBQSxFQUFBQyxNQUFBLEVBQUFDLFlBQUEsRUFBQUMsVUFBQSxFQUFBQyxNQUFBLEVBQUFDLEtBQUEsRUFBQUMsYUFBQSxFQUFBQyxTQUFBLEVBQUFDLGNBQUEsRUFBQUMsU0FBQTtJQUFBLE9BQUE3TCxtQkFBQSxHQUFBMkIsSUFBQSxVQUFBbUssVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUFsSSxJQUFBLEdBQUFrSSxTQUFBLENBQUFySixJQUFBO1FBQUE7VUFBQW1JLFVBQUEsR0FBQWpHLDBCQUFBLENBRThCNkUsZ0NBQWdDLENBQUN2QyxPQUFPLEVBQUU2QixPQUFPLEVBQUVDLE9BQU8sQ0FBQztVQUFBK0MsU0FBQSxDQUFBbEksSUFBQTtVQUFBZ0gsVUFBQSxDQUFBckosQ0FBQTtRQUFBO1VBQUEsS0FBQXNKLE1BQUEsR0FBQUQsVUFBQSxDQUFBM0ssQ0FBQSxJQUFBWSxJQUFBO1lBQUFpTCxTQUFBLENBQUFySixJQUFBO1lBQUE7VUFBQTtVQUFsRnFJLGlCQUFpQixHQUFBRCxNQUFBLENBQUExTCxLQUFBLENBQXZCNEksSUFBSTtVQUFBZ0QsVUFBQSxHQUFBcEcsMEJBQUEsQ0FDT21HLGlCQUFpQixDQUFDaUIsUUFBUTtVQUFBRCxTQUFBLENBQUFsSSxJQUFBO1VBQUFtSCxVQUFBLENBQUF4SixDQUFBO1FBQUE7VUFBQSxLQUFBeUosTUFBQSxHQUFBRCxVQUFBLENBQUE5SyxDQUFBLElBQUFZLElBQUE7WUFBQWlMLFNBQUEsQ0FBQXJKLElBQUE7WUFBQTtVQUFBO1VBQXJDd0ksT0FBTyxHQUFBRCxNQUFBLENBQUE3TCxLQUFBO1VBQ1YrTCxhQUFhLEdBQUdELE9BQU8sQ0FBQ2Usa0JBQWtCLENBQzdDM04sTUFBTSxDQUFDLFVBQUE0TixnQkFBZ0I7WUFBQSxPQUFJQSxnQkFBZ0IsQ0FBQ0MsU0FBUyxLQUFLLE9BQU87VUFBQSxFQUFDO1VBQUFmLFVBQUEsR0FBQXhHLDBCQUFBLENBQzFDdUcsYUFBYTtVQUFBWSxTQUFBLENBQUFsSSxJQUFBO1VBQUF1SCxVQUFBLENBQUE1SixDQUFBO1FBQUE7VUFBQSxLQUFBNkosTUFBQSxHQUFBRCxVQUFBLENBQUFsTCxDQUFBLElBQUFZLElBQUE7WUFBQWlMLFNBQUEsQ0FBQXJKLElBQUE7WUFBQTtVQUFBO1VBQTdCNEksWUFBWSxHQUFBRCxNQUFBLENBQUFqTSxLQUFBO1VBQUFtTSxVQUFBLEdBQUEzRywwQkFBQSxDQUNEMEcsWUFBWSxDQUFDYyxNQUFNO1VBQUFMLFNBQUEsQ0FBQWxJLElBQUE7VUFBQTBILFVBQUEsQ0FBQS9KLENBQUE7UUFBQTtVQUFBLEtBQUFnSyxNQUFBLEdBQUFELFVBQUEsQ0FBQXJMLENBQUEsSUFBQVksSUFBQTtZQUFBaUwsU0FBQSxDQUFBckosSUFBQTtZQUFBO1VBQUE7VUFBNUIrSSxLQUFLLEdBQUFELE1BQUEsQ0FBQXBNLEtBQUE7VUFDUnNNLGFBQWEsR0FBQS9NLGFBQUE7WUFDakIwTixjQUFjLEVBQUV0QixpQkFBaUIsQ0FBQ3VCLE1BQU07WUFDeENDLGlCQUFpQixFQUFFeEIsaUJBQWlCLENBQUN5QixHQUFHO1lBQ3hDQywrQkFBK0IsRUFBRTFCLGlCQUFpQixDQUFDMEIsK0JBQStCO1lBQ2xGQyxZQUFZLEVBQUV4QixPQUFPLENBQUN3QixZQUFZO1lBQ2xDQyxlQUFlLEVBQUV6QixPQUFPLENBQUMwQixPQUFPO1lBQ2hDQyxpQkFBaUIsRUFBRXZCLFlBQVksQ0FBQ3VCO1VBQWlCLEdBQzlDcEIsS0FBSztVQUVKRSxTQUFpRCxHQUFHO1lBQ3hEM0QsSUFBSSxFQUFFMEQ7VUFDUixDQUFDO1VBQ0QsSUFBSUQsS0FBSyxDQUFDZSxHQUFHLEVBQUU7WUFDUFgsU0FBUyxHQUFHaEYsZ0JBQUksQ0FBQzZCLEtBQUssQ0FBQytDLEtBQUssQ0FBQ2UsR0FBRyxDQUFDLENBQUNySixJQUFJO1lBQzVDd0ksU0FBUyxDQUFDMUQsbUJBQW1CLEdBQ3pCcEIsZ0JBQUksQ0FBQ0MsSUFBSSxJQUFBd0IsTUFBQSxFQUFBc0QsY0FBQSxHQUFJSCxLQUFLLENBQUMxQyxPQUFPLGNBQUE2QyxjQUFBLGNBQUFBLGNBQUEsR0FBSWtCLDJCQUFpQixHQUFJakIsU0FBUyxLQUFBdkQsTUFBQSxDQUFLdUQsU0FBUyxTQUFNLENBQUM7VUFDdkY7VUFBQ0UsU0FBQSxDQUFBckosSUFBQTtVQUNELE9BQU1pSixTQUFTO1FBQUE7VUFBQUksU0FBQSxDQUFBckosSUFBQTtVQUFBO1FBQUE7VUFBQXFKLFNBQUEsQ0FBQXJKLElBQUE7VUFBQTtRQUFBO1VBQUFxSixTQUFBLENBQUFsSSxJQUFBO1VBQUFrSSxTQUFBLENBQUEvRSxFQUFBLEdBQUErRSxTQUFBO1VBQUFSLFVBQUEsQ0FBQTFOLENBQUEsQ0FBQWtPLFNBQUEsQ0FBQS9FLEVBQUE7UUFBQTtVQUFBK0UsU0FBQSxDQUFBbEksSUFBQTtVQUFBMEgsVUFBQSxDQUFBcEssQ0FBQTtVQUFBLE9BQUE0SyxTQUFBLENBQUE1SCxNQUFBO1FBQUE7VUFBQTRILFNBQUEsQ0FBQXJKLElBQUE7VUFBQTtRQUFBO1VBQUFxSixTQUFBLENBQUFySixJQUFBO1VBQUE7UUFBQTtVQUFBcUosU0FBQSxDQUFBbEksSUFBQTtVQUFBa0ksU0FBQSxDQUFBZ0IsRUFBQSxHQUFBaEIsU0FBQTtVQUFBWCxVQUFBLENBQUF2TixDQUFBLENBQUFrTyxTQUFBLENBQUFnQixFQUFBO1FBQUE7VUFBQWhCLFNBQUEsQ0FBQWxJLElBQUE7VUFBQXVILFVBQUEsQ0FBQWpLLENBQUE7VUFBQSxPQUFBNEssU0FBQSxDQUFBNUgsTUFBQTtRQUFBO1VBQUE0SCxTQUFBLENBQUFySixJQUFBO1VBQUE7UUFBQTtVQUFBcUosU0FBQSxDQUFBckosSUFBQTtVQUFBO1FBQUE7VUFBQXFKLFNBQUEsQ0FBQWxJLElBQUE7VUFBQWtJLFNBQUEsQ0FBQWlCLEVBQUEsR0FBQWpCLFNBQUE7VUFBQWYsVUFBQSxDQUFBbk4sQ0FBQSxDQUFBa08sU0FBQSxDQUFBaUIsRUFBQTtRQUFBO1VBQUFqQixTQUFBLENBQUFsSSxJQUFBO1VBQUFtSCxVQUFBLENBQUE3SixDQUFBO1VBQUEsT0FBQTRLLFNBQUEsQ0FBQTVILE1BQUE7UUFBQTtVQUFBNEgsU0FBQSxDQUFBckosSUFBQTtVQUFBO1FBQUE7VUFBQXFKLFNBQUEsQ0FBQXJKLElBQUE7VUFBQTtRQUFBO1VBQUFxSixTQUFBLENBQUFsSSxJQUFBO1VBQUFrSSxTQUFBLENBQUFrQixFQUFBLEdBQUFsQixTQUFBO1VBQUFsQixVQUFBLENBQUFoTixDQUFBLENBQUFrTyxTQUFBLENBQUFrQixFQUFBO1FBQUE7VUFBQWxCLFNBQUEsQ0FBQWxJLElBQUE7VUFBQWdILFVBQUEsQ0FBQTFKLENBQUE7VUFBQSxPQUFBNEssU0FBQSxDQUFBNUgsTUFBQTtRQUFBO1FBQUE7VUFBQSxPQUFBNEgsU0FBQSxDQUFBL0gsSUFBQTtNQUFBO0lBQUEsR0FBQTRHLFFBQUE7RUFBQTtBQUFBO0FBT2xCLFNBQVNzQyxxQkFBcUJBLENBQ25DaEcsT0FBZSxFQUNmaUcsb0JBQTRCLEVBQ0E7RUFDNUIsSUFBTUMsZUFBZSxHQUFHdkcsZ0JBQUksQ0FBQzZCLEtBQUssQ0FBQ3lFLG9CQUFvQixDQUFDO0VBQ3hELElBQU1FLGFBQWEsTUFBQS9FLE1BQUEsQ0FBTThFLGVBQWUsQ0FBQ2pLLElBQUksVUFBTztFQUNwRCxJQUFNbUssYUFBYSxHQUFHekcsZ0JBQUksQ0FBQ0MsSUFBSSxDQUFDSSxPQUFPLEVBQUV2QixZQUFZLEVBQUVFLHdCQUF3QixFQUFFdUgsZUFBZSxDQUFDRyxHQUFHLEVBQUVGLGFBQWEsQ0FBQztFQUNwSCxJQUFJLENBQUM5RyxjQUFFLENBQUNDLFVBQVUsQ0FBQzhHLGFBQWEsQ0FBQyxFQUFFO0lBQ2pDLE9BQU87TUFBRXRGLElBQUksRUFBRTtJQUFLLENBQUM7RUFDdkI7RUFDQSxJQUFNd0YsU0FBUyxHQUFHakgsY0FBRSxDQUFDZ0MsWUFBWSxDQUFDK0UsYUFBYSxFQUFFO0lBQUU5RSxRQUFRLEVBQUU7RUFBTyxDQUFDLENBQUM7RUFDdEUsT0FBTztJQUFFUixJQUFJLEVBQUVTLElBQUksQ0FBQ0MsS0FBSyxDQUFDOEUsU0FBUztFQUFFLENBQUM7QUFDeEM7QUFFTyxTQUFXQyx1QkFBdUJBLENBQ3ZDdkcsT0FBZTtFQUFBLElBQ2Y4QixPQUFPLEdBQUFwSyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBMkksU0FBQSxHQUFBM0ksU0FBQSxNQUFHLENBQUMsQ0FBQztFQUFBLG9CQUFBb0IsbUJBQUEsR0FBQW9ELElBQUEsVUFBQXNLLFNBQUE7SUFBQSxJQUFBQyxVQUFBLEVBQUFDLE1BQUEsRUFBQUMsYUFBQTtJQUFBLE9BQUE3TixtQkFBQSxHQUFBMkIsSUFBQSxVQUFBbU0sVUFBQUMsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUFsSyxJQUFBLEdBQUFrSyxTQUFBLENBQUFyTCxJQUFBO1FBQUE7VUFBQWlMLFVBQUEsR0FBQS9JLDBCQUFBLENBRWdCcUMsa0JBQWtCLENBQWtCQyxPQUFPLEVBQUVxQyxrQkFBUSxDQUFDeUUsSUFBSSxFQUFFekcsU0FBUyxFQUFFOUIsc0JBQXNCLEVBQUV1RCxPQUFPLENBQUM7VUFBQStFLFNBQUEsQ0FBQWxLLElBQUE7VUFBQThKLFVBQUEsQ0FBQW5NLENBQUE7UUFBQTtVQUFBLEtBQUFvTSxNQUFBLEdBQUFELFVBQUEsQ0FBQXpOLENBQUEsSUFBQVksSUFBQTtZQUFBaU4sU0FBQSxDQUFBckwsSUFBQTtZQUFBO1VBQUE7VUFBeEhtTCxhQUFhLEdBQUFELE1BQUEsQ0FBQXhPLEtBQUE7VUFBQTJPLFNBQUEsQ0FBQXJMLElBQUE7VUFDdEIsT0FBTW1MLGFBQWE7UUFBQTtVQUFBRSxTQUFBLENBQUFyTCxJQUFBO1VBQUE7UUFBQTtVQUFBcUwsU0FBQSxDQUFBckwsSUFBQTtVQUFBO1FBQUE7VUFBQXFMLFNBQUEsQ0FBQWxLLElBQUE7VUFBQWtLLFNBQUEsQ0FBQS9HLEVBQUEsR0FBQStHLFNBQUE7VUFBQUosVUFBQSxDQUFBOVAsQ0FBQSxDQUFBa1EsU0FBQSxDQUFBL0csRUFBQTtRQUFBO1VBQUErRyxTQUFBLENBQUFsSyxJQUFBO1VBQUE4SixVQUFBLENBQUF4TSxDQUFBO1VBQUEsT0FBQTRNLFNBQUEsQ0FBQTVKLE1BQUE7UUFBQTtRQUFBO1VBQUEsT0FBQTRKLFNBQUEsQ0FBQS9KLElBQUE7TUFBQTtJQUFBLEdBQUEwSixRQUFBO0VBQUE7QUFBQTtBQUloQixTQUFXTyxzQkFBc0JBLENBQ3RDL0csT0FBZSxFQUNmMkIsV0FBbUI7RUFBQSxJQUNuQkcsT0FBTyxHQUFBcEssU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQTJJLFNBQUEsR0FBQTNJLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFBQSxvQkFBQW9CLG1CQUFBLEdBQUFvRCxJQUFBLFVBQUE4SyxTQUFBQyxrQkFBQTtJQUFBLElBQUFDLHVCQUFBLEVBQUFDLG9CQUFBLEVBQUFDLFdBQUEsRUFBQUMsT0FBQSxFQUFBQyxxQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxZQUFBLEVBQUFDLHFCQUFBO0lBQUEsT0FBQTNPLG1CQUFBLEdBQUEyQixJQUFBLFVBQUFpTixVQUFBQyxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQWhMLElBQUEsR0FBQWdMLFNBQUEsQ0FBQW5NLElBQUE7UUFBQTtVQUVOMEwsdUJBQXVCLElBQUFELGtCQUFBLEdBQUdXLHdCQUFZLENBQ3pDQyxJQUFJLENBQUMsVUFBQUMsZUFBZTtZQUFBLE9BQUlBLGVBQWUsQ0FBQ0MsTUFBTSxLQUFLcEcsV0FBVztVQUFBLEVBQUMsY0FBQXNGLGtCQUFBLHVCQURsQ0Esa0JBQUEsQ0FFNUJlLFVBQVU7VUFDUmIsb0JBQW9CLEdBQUcsSUFBSWMsSUFBSSxDQUFDZix1QkFBd0IsQ0FBQztVQUFBRSxXQUFBLEdBQUExSiwwQkFBQSxDQUNwQ3FDLGtCQUFrQixDQUFpQkMsT0FBTyxFQUFFcUMsa0JBQVEsQ0FBQ3lFLElBQUksRUFBRXpHLFNBQVMsRUFBRTdCLHFCQUFxQixFQUFFc0QsT0FBTyxDQUFDO1VBQUE2RixTQUFBLENBQUFoTCxJQUFBO1VBQUF5SyxXQUFBLENBQUE5TSxDQUFBO1FBQUE7VUFBQSxLQUFBK00sT0FBQSxHQUFBRCxXQUFBLENBQUFwTyxDQUFBLElBQUFZLElBQUE7WUFBQStOLFNBQUEsQ0FBQW5NLElBQUE7WUFBQTtVQUFBO1VBQXJIZ00sWUFBWSxHQUFBSCxPQUFBLENBQUFuUCxLQUFBO1VBQ2Z1UCxxQkFBcUIsR0FBRyxDQUFBSCxxQkFBQSxHQUFBRSxZQUFZLENBQUMxRyxJQUFJLENBQUNvSCxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsY0FBQVoscUJBQUEsZUFBckNBLHFCQUFBLENBQXVDYSxRQUFRLEdBQzNFLElBQUlGLElBQUksRUFBQVYsc0JBQUEsR0FBQ0MsWUFBWSxDQUFDMUcsSUFBSSxDQUFDb0gsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLGNBQUFYLHNCQUFBLHVCQUFyQ0Esc0JBQUEsQ0FBdUNZLFFBQVEsQ0FBQyxHQUFHLElBQUk7VUFBQSxNQUM5RFYscUJBQXFCLElBQUlBLHFCQUFxQixHQUFHTixvQkFBb0I7WUFBQVEsU0FBQSxDQUFBbk0sSUFBQTtZQUFBO1VBQUE7VUFBQSxPQUFBbU0sU0FBQSxDQUFBdE4sTUFBQTtRQUFBO1VBQUFzTixTQUFBLENBQUFuTSxJQUFBO1VBR3pFLE9BQU1nTSxZQUFZO1FBQUE7VUFBQUcsU0FBQSxDQUFBbk0sSUFBQTtVQUFBO1FBQUE7VUFBQW1NLFNBQUEsQ0FBQW5NLElBQUE7VUFBQTtRQUFBO1VBQUFtTSxTQUFBLENBQUFoTCxJQUFBO1VBQUFnTCxTQUFBLENBQUE3SCxFQUFBLEdBQUE2SCxTQUFBO1VBQUFQLFdBQUEsQ0FBQXpRLENBQUEsQ0FBQWdSLFNBQUEsQ0FBQTdILEVBQUE7UUFBQTtVQUFBNkgsU0FBQSxDQUFBaEwsSUFBQTtVQUFBeUssV0FBQSxDQUFBbk4sQ0FBQTtVQUFBLE9BQUEwTixTQUFBLENBQUExSyxNQUFBO1FBQUE7UUFBQTtVQUFBLE9BQUEwSyxTQUFBLENBQUE3SyxJQUFBO01BQUE7SUFBQSxHQUFBa0ssUUFBQTtFQUFBO0FBQUE7QUFJZixTQUFXb0IsNkJBQTZCQSxDQUM3Q3BJLE9BQWU7RUFBQSxJQUNmOEIsT0FBTyxHQUFBcEssU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQTJJLFNBQUEsR0FBQTNJLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFBQSxvQkFBQW9CLG1CQUFBLEdBQUFvRCxJQUFBLFVBQUFtTSxTQUFBO0lBQUEsSUFBQUMsV0FBQSxFQUFBQyxPQUFBLEVBQUFDLG1CQUFBO0lBQUEsT0FBQTFQLG1CQUFBLEdBQUEyQixJQUFBLFVBQUFnTyxVQUFBQyxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQS9MLElBQUEsR0FBQStMLFNBQUEsQ0FBQWxOLElBQUE7UUFBQTtVQUFBOE0sV0FBQSxHQUFBNUssMEJBQUEsQ0FFc0JxQyxrQkFBa0IsQ0FBd0JDLE9BQU8sRUFBRXFDLGtCQUFRLENBQUN5RSxJQUFJLEVBQUV6RyxTQUFTLEVBQUUvQiw0QkFBNEIsRUFBRXdELE9BQU8sQ0FBQztVQUFBNEcsU0FBQSxDQUFBL0wsSUFBQTtVQUFBMkwsV0FBQSxDQUFBaE8sQ0FBQTtRQUFBO1VBQUEsS0FBQWlPLE9BQUEsR0FBQUQsV0FBQSxDQUFBdFAsQ0FBQSxJQUFBWSxJQUFBO1lBQUE4TyxTQUFBLENBQUFsTixJQUFBO1lBQUE7VUFBQTtVQUExSWdOLG1CQUFtQixHQUFBRCxPQUFBLENBQUFyUSxLQUFBO1VBQUF3USxTQUFBLENBQUFsTixJQUFBO1VBQzVCLE9BQU1nTixtQkFBbUI7UUFBQTtVQUFBRSxTQUFBLENBQUFsTixJQUFBO1VBQUE7UUFBQTtVQUFBa04sU0FBQSxDQUFBbE4sSUFBQTtVQUFBO1FBQUE7VUFBQWtOLFNBQUEsQ0FBQS9MLElBQUE7VUFBQStMLFNBQUEsQ0FBQTVJLEVBQUEsR0FBQTRJLFNBQUE7VUFBQUosV0FBQSxDQUFBM1IsQ0FBQSxDQUFBK1IsU0FBQSxDQUFBNUksRUFBQTtRQUFBO1VBQUE0SSxTQUFBLENBQUEvTCxJQUFBO1VBQUEyTCxXQUFBLENBQUFyTyxDQUFBO1VBQUEsT0FBQXlPLFNBQUEsQ0FBQXpMLE1BQUE7UUFBQTtRQUFBO1VBQUEsT0FBQXlMLFNBQUEsQ0FBQTVMLElBQUE7TUFBQTtJQUFBLEdBQUF1TCxRQUFBO0VBQUE7QUFBQTtBQUl0QixTQUFXTSxzQkFBc0JBLENBQ3RDM0ksT0FBZSxFQUNmMkIsV0FBbUI7RUFBQSxJQUNuQkcsT0FBTyxHQUFBcEssU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQTJJLFNBQUEsR0FBQTNJLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFBQSxvQkFBQW9CLG1CQUFBLEdBQUFvRCxJQUFBLFVBQUEwTSxTQUFBO0lBQUEsSUFBQUMsV0FBQSxFQUFBQyxPQUFBLEVBQUFDLFlBQUE7SUFBQSxPQUFBalEsbUJBQUEsR0FBQTJCLElBQUEsVUFBQXVPLFVBQUFDLFNBQUE7TUFBQSxrQkFBQUEsU0FBQSxDQUFBdE0sSUFBQSxHQUFBc00sU0FBQSxDQUFBek4sSUFBQTtRQUFBO1VBQUFxTixXQUFBLEdBQUFuTCwwQkFBQSxDQUdQcUMsa0JBQWtCLENBQWlCQyxPQUFPLEVBQUVxQyxrQkFBUSxDQUFDNkcsU0FBUyxFQUFFdkgsV0FBVyxFQUFFdEIsU0FBUyxFQUFFeUIsT0FBTyxDQUFDO1VBQUFtSCxTQUFBLENBQUF0TSxJQUFBO1VBQUFrTSxXQUFBLENBQUF2TyxDQUFBO1FBQUE7VUFBQSxLQUFBd08sT0FBQSxHQUFBRCxXQUFBLENBQUE3UCxDQUFBLElBQUFZLElBQUE7WUFBQXFQLFNBQUEsQ0FBQXpOLElBQUE7WUFBQTtVQUFBO1VBRDFGdU4sWUFBWSxHQUFBRCxPQUFBLENBQUE1USxLQUFBO1VBQUErUSxTQUFBLENBQUF6TixJQUFBO1VBR3JCLE9BQU11TixZQUFZO1FBQUE7VUFBQUUsU0FBQSxDQUFBek4sSUFBQTtVQUFBO1FBQUE7VUFBQXlOLFNBQUEsQ0FBQXpOLElBQUE7VUFBQTtRQUFBO1VBQUF5TixTQUFBLENBQUF0TSxJQUFBO1VBQUFzTSxTQUFBLENBQUFuSixFQUFBLEdBQUFtSixTQUFBO1VBQUFKLFdBQUEsQ0FBQWxTLENBQUEsQ0FBQXNTLFNBQUEsQ0FBQW5KLEVBQUE7UUFBQTtVQUFBbUosU0FBQSxDQUFBdE0sSUFBQTtVQUFBa00sV0FBQSxDQUFBNU8sQ0FBQTtVQUFBLE9BQUFnUCxTQUFBLENBQUFoTSxNQUFBO1FBQUE7UUFBQTtVQUFBLE9BQUFnTSxTQUFBLENBQUFuTSxJQUFBO01BQUE7SUFBQSxHQUFBOEwsUUFBQTtFQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|