@tricoteuses/assemblee 1.0.7 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api.js +3 -9
- package/lib/api.mjs +4 -5
- package/lib/bugs/acteur-00010/plugin.test.js +3 -50
- package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
- package/lib/bugs/acteur-00010.js +2 -57
- package/lib/bugs/acteur-00010.mjs +1 -6
- package/lib/bugs/agenda-00002/plugin.test.js +3 -53
- package/lib/bugs/agenda-00002/plugin.test.mjs +1 -3
- package/lib/bugs/agenda-00002.js +3 -148
- package/lib/bugs/agenda-00002.mjs +1 -28
- package/lib/bugs/agenda-00008/plugin.test.js +3 -52
- package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00008.js +2 -61
- package/lib/bugs/agenda-00008.mjs +1 -5
- package/lib/bugs/agenda-00011/plugin.test.js +5 -99
- package/lib/bugs/agenda-00011/plugin.test.mjs +3 -3
- package/lib/bugs/agenda-00011.js +4 -105
- package/lib/bugs/agenda-00011.mjs +3 -29
- package/lib/bugs.js +3 -164
- package/lib/bugs.mjs +1 -26
- package/lib/cleaners/actes_legislatifs.js +11 -115
- package/lib/cleaners/actes_legislatifs.mjs +7 -82
- package/lib/cleaners/acteurs.js +12 -92
- package/lib/cleaners/acteurs.mjs +7 -38
- package/lib/cleaners/amendements.js +10 -103
- package/lib/cleaners/amendements.mjs +4 -58
- package/lib/cleaners/documents.js +5 -67
- package/lib/cleaners/documents.mjs +1 -37
- package/lib/cleaners/dossiers_legislatifs.js +5 -61
- package/lib/cleaners/dossiers_legislatifs.mjs +1 -29
- package/lib/cleaners/index.js +1 -9
- package/lib/cleaners/index.mjs +1 -1
- package/lib/cleaners/organes.js +1 -33
- package/lib/cleaners/organes.mjs +1 -17
- package/lib/cleaners/reunions.js +4 -119
- package/lib/cleaners/reunions.mjs +1 -64
- package/lib/cleaners/scrutins.js +10 -102
- package/lib/cleaners/scrutins.mjs +1 -48
- package/lib/cleaners/xml.js +8 -42
- package/lib/cleaners/xml.mjs +6 -8
- package/lib/datasets.js +14 -113
- package/lib/datasets.mjs +6 -46
- package/lib/dates.js +7 -37
- package/lib/dates.mjs +9 -14
- package/lib/dossiers_legislatifs.js +6 -68
- package/lib/dossiers_legislatifs.mjs +5 -36
- package/lib/file_systems.js +56 -139
- package/lib/file_systems.mjs +1 -9
- package/lib/git.js +4 -53
- package/lib/git.mjs +1 -12
- package/lib/index.js +1 -15
- package/lib/index.mjs +1 -1
- package/lib/inserters.js +23 -146
- package/lib/inserters.mjs +6 -87
- package/lib/loaders.js +44 -316
- package/lib/loaders.mjs +12 -135
- package/lib/organes.js +1 -7
- package/lib/organes.mjs +1 -4
- package/lib/parsers/documents.js +22 -151
- package/lib/parsers/documents.mjs +19 -81
- package/lib/parsers/index.js +1 -4
- package/lib/parsers/index.mjs +1 -1
- package/lib/parsers/recherche_amendements.js +302 -527
- package/lib/parsers/recherche_amendements.mjs +8 -31
- package/lib/raw_types/acteurs_et_organes.d.ts +1 -30
- package/lib/raw_types/acteurs_et_organes.js +5 -124
- package/lib/raw_types/acteurs_et_organes.mjs +5 -105
- package/lib/raw_types/agendas.js +6 -89
- package/lib/raw_types/agendas.mjs +9 -65
- package/lib/raw_types/amendements.d.ts +2 -0
- package/lib/raw_types/amendements.js +10 -90
- package/lib/raw_types/amendements.mjs +11 -69
- package/lib/raw_types/dossiers_legislatifs.js +6 -96
- package/lib/raw_types/dossiers_legislatifs.mjs +6 -73
- package/lib/raw_types/scrutins.js +6 -81
- package/lib/raw_types/scrutins.mjs +9 -57
- package/lib/scripts/bugs_helper.js +2 -181
- package/lib/scripts/bugs_helper.mjs +2 -39
- package/lib/scripts/clean_data.js +27 -143
- package/lib/scripts/clean_data.mjs +15 -34
- package/lib/scripts/clean_reorganized_data.js +76 -240
- package/lib/scripts/clean_reorganized_data.mjs +36 -99
- package/lib/scripts/diff_amendements.js +19 -79
- package/lib/scripts/diff_amendements.mjs +17 -35
- package/lib/scripts/document_dossiers_legislatifs.js +17 -142
- package/lib/scripts/document_dossiers_legislatifs.mjs +6 -90
- package/lib/scripts/get_today_reunions.js +4 -22
- package/lib/scripts/get_today_reunions.mjs +1 -7
- package/lib/scripts/merge_scrutins.js +3 -47
- package/lib/scripts/merge_scrutins.mjs +1 -9
- package/lib/scripts/parse_textes_lois.js +15 -44
- package/lib/scripts/parse_textes_lois.mjs +18 -19
- package/lib/scripts/raw_types_from_amendements.js +3 -95
- package/lib/scripts/raw_types_from_amendements.mjs +1 -16
- package/lib/scripts/reorganize_data.js +74 -294
- package/lib/scripts/reorganize_data.mjs +22 -133
- package/lib/scripts/retrieve_deputes_photos.js +6 -119
- package/lib/scripts/retrieve_deputes_photos.mjs +7 -33
- package/lib/scripts/retrieve_documents.js +4 -192
- package/lib/scripts/retrieve_documents.mjs +2 -50
- package/lib/scripts/retrieve_open_data.js +44 -116
- package/lib/scripts/retrieve_open_data.mjs +14 -19
- package/lib/scripts/retrieve_pending_amendments.js +4 -98
- package/lib/scripts/retrieve_pending_amendments.mjs +1 -14
- package/lib/scripts/retrieve_senateurs_photos.js +18 -114
- package/lib/scripts/retrieve_senateurs_photos.mjs +20 -48
- package/lib/scripts/retrieve_textes_lois.js +3 -122
- package/lib/scripts/retrieve_textes_lois.mjs +3 -21
- package/lib/scripts/test_load.js +2 -10
- package/lib/scripts/test_load.mjs +2 -1
- package/lib/scripts/test_load_big_files.js +2 -10
- package/lib/scripts/test_load_big_files.mjs +2 -1
- package/lib/scripts/validate_json.js +4 -119
- package/lib/scripts/validate_json.mjs +2 -36
- package/lib/shared_types/codes_actes.js +1 -24
- package/lib/shared_types/codes_actes.mjs +3 -10
- package/lib/strings.js +1 -5
- package/lib/strings.mjs +1 -1
- package/lib/types/acteurs_et_organes.js +9 -84
- package/lib/types/acteurs_et_organes.mjs +10 -63
- package/lib/types/agendas.js +8 -90
- package/lib/types/agendas.mjs +11 -66
- package/lib/types/amendements.d.ts +2 -0
- package/lib/types/amendements.js +12 -92
- package/lib/types/amendements.mjs +15 -70
- package/lib/types/dossiers_legislatifs.js +8 -96
- package/lib/types/dossiers_legislatifs.mjs +10 -72
- package/lib/types/legislatures.js +1 -3
- package/lib/types/legislatures.mjs +1 -2
- package/lib/types/scrutins.js +8 -82
- package/lib/types/scrutins.mjs +11 -58
- package/lib/urls.js +3 -27
- package/lib/urls.mjs +3 -21
- package/package.json +1 -1
|
@@ -1,65 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
require("core-js/modules/es.array.slice.js");
|
|
4
|
-
|
|
5
4
|
require("core-js/modules/es.function.name.js");
|
|
6
|
-
|
|
7
5
|
require("core-js/modules/es.array.from.js");
|
|
8
|
-
|
|
9
6
|
require("core-js/modules/es.string.iterator.js");
|
|
10
|
-
|
|
11
7
|
require("core-js/modules/es.symbol.js");
|
|
12
|
-
|
|
13
8
|
require("core-js/modules/es.symbol.description.js");
|
|
14
|
-
|
|
15
9
|
require("core-js/modules/es.symbol.iterator.js");
|
|
16
|
-
|
|
17
10
|
require("core-js/modules/es.array.iterator.js");
|
|
18
|
-
|
|
19
11
|
require("core-js/modules/web.dom-collections.iterator.js");
|
|
20
|
-
|
|
21
12
|
require("core-js/modules/es.array.is-array.js");
|
|
22
|
-
|
|
23
13
|
require("core-js/modules/es.array.join.js");
|
|
24
|
-
|
|
25
14
|
require("core-js/modules/es.object.keys.js");
|
|
26
|
-
|
|
27
15
|
require("core-js/modules/es.array.for-each.js");
|
|
28
|
-
|
|
29
16
|
require("core-js/modules/es.object.to-string.js");
|
|
30
|
-
|
|
31
17
|
require("core-js/modules/es.regexp.exec.js");
|
|
32
|
-
|
|
33
18
|
require("core-js/modules/es.string.replace.js");
|
|
34
|
-
|
|
35
19
|
var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
|
|
36
|
-
|
|
37
20
|
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
38
|
-
|
|
39
21
|
var _path = _interopRequireDefault(require("path"));
|
|
40
|
-
|
|
41
22
|
var _deepObjectDiff = require("deep-object-diff");
|
|
42
|
-
|
|
43
23
|
var _datasets = require("../datasets");
|
|
44
|
-
|
|
45
24
|
var _file_systems = require("../file_systems");
|
|
46
|
-
|
|
47
25
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
48
|
-
|
|
49
26
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
50
|
-
|
|
51
27
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
52
|
-
|
|
53
28
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
54
|
-
|
|
55
29
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
56
|
-
|
|
57
30
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
58
|
-
|
|
59
31
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
60
|
-
|
|
61
32
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
62
|
-
|
|
63
33
|
var diffedAmendments = [];
|
|
64
34
|
var newAmendments = [];
|
|
65
35
|
var optionsDefinitions = [{
|
|
@@ -96,70 +66,59 @@ var optionsDefinitions = [{
|
|
|
96
66
|
type: String
|
|
97
67
|
}];
|
|
98
68
|
var options = (0, _commandLineArgs["default"])(optionsDefinitions);
|
|
99
|
-
|
|
100
69
|
function diffAmendements(dataDir) {
|
|
101
70
|
if (!options.previous) {
|
|
102
71
|
console.error("No previous data folder specified. You must provide one with the -p or --previous option. Exiting...");
|
|
103
72
|
process.exit();
|
|
104
73
|
}
|
|
105
|
-
|
|
106
74
|
if (!_fsExtra["default"].existsSync(options.output)) {
|
|
107
75
|
console.error("The output dir does not exists. You must provide an existing directory. Default directory is ./diff_outputs/");
|
|
108
76
|
process.exit();
|
|
109
77
|
}
|
|
110
|
-
|
|
111
78
|
var _iterator = _createForOfIteratorHelper(_datasets.datasets.amendements),
|
|
112
|
-
|
|
113
|
-
|
|
79
|
+
_step;
|
|
114
80
|
try {
|
|
115
81
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
116
82
|
var dataset = _step.value;
|
|
117
|
-
|
|
118
83
|
switch (dataset.structure) {
|
|
119
84
|
case _datasets.DatasetStructure.SegmentedFiles:
|
|
120
85
|
{
|
|
121
86
|
var originalJsonDir = _path["default"].join(dataDir, dataset.filename);
|
|
122
|
-
|
|
123
87
|
if (!options.silent) {
|
|
124
88
|
console.log("Diffing ".concat(originalJsonDir, " folder..."));
|
|
125
89
|
}
|
|
126
|
-
|
|
127
90
|
var _iterator2 = _createForOfIteratorHelper((0, _file_systems.walkDir)(originalJsonDir)),
|
|
128
|
-
|
|
129
|
-
|
|
91
|
+
_step2;
|
|
130
92
|
try {
|
|
131
93
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
132
94
|
var amendementSplitPath = _step2.value;
|
|
133
95
|
var newFilePath = originalJsonDir + "/" + amendementSplitPath.join("/");
|
|
134
96
|
var newFile = JSON.parse(_fsExtra["default"].readFileSync(newFilePath).toLocaleString());
|
|
135
97
|
var oldFilePath = options.previous + dataset.filename + "/" + amendementSplitPath.join("/");
|
|
136
|
-
|
|
137
98
|
var oldFileExists = _fsExtra["default"].existsSync(oldFilePath);
|
|
138
|
-
|
|
139
99
|
if (!oldFileExists) {
|
|
140
100
|
// If file found does not exist in the previous dump
|
|
141
101
|
if (!options.silent) {
|
|
142
102
|
console.log("File did not exists previously. Guessing it's a new amendment. Adding to the diff list for new objects");
|
|
143
103
|
}
|
|
144
|
-
|
|
145
104
|
addToQueueForNewAmendments(newFile, amendementSplitPath);
|
|
146
105
|
continue;
|
|
147
|
-
}
|
|
148
|
-
|
|
106
|
+
}
|
|
149
107
|
|
|
108
|
+
// File already existed in previous dump
|
|
150
109
|
var oldFile = JSON.parse("{}");
|
|
151
|
-
|
|
152
110
|
try {
|
|
153
111
|
// Gather data of the file and retranscript as a Json object
|
|
154
112
|
oldFile = JSON.parse(_fsExtra["default"].readFileSync(oldFilePath).toLocaleString());
|
|
155
113
|
} catch (e) {
|
|
156
114
|
// Skip the process to the next iteration in case of corrupt JSON data
|
|
157
115
|
continue;
|
|
158
|
-
}
|
|
159
|
-
|
|
116
|
+
}
|
|
160
117
|
|
|
161
|
-
|
|
118
|
+
// Generate the diff beetween the two JSON objects (old & new dump)
|
|
119
|
+
var diff = (0, _deepObjectDiff.detailedDiff)(oldFile, newFile);
|
|
162
120
|
|
|
121
|
+
// If no changes beetween the two dumps
|
|
163
122
|
if (Object.keys(diff.added).length === 0 && Object.keys(diff.updated).length === 0 && Object.keys(diff.deleted).length === 0) {
|
|
164
123
|
// Skip to next iteration as there is no need to generate a file
|
|
165
124
|
continue;
|
|
@@ -167,10 +126,8 @@ function diffAmendements(dataDir) {
|
|
|
167
126
|
if (!options.silent) {
|
|
168
127
|
console.log("Changes found !");
|
|
169
128
|
}
|
|
170
|
-
|
|
171
129
|
addToQueueForDiffedAmendments(diff, amendementSplitPath);
|
|
172
130
|
}
|
|
173
|
-
|
|
174
131
|
break;
|
|
175
132
|
}
|
|
176
133
|
} catch (err) {
|
|
@@ -180,11 +137,9 @@ function diffAmendements(dataDir) {
|
|
|
180
137
|
}
|
|
181
138
|
}
|
|
182
139
|
}
|
|
183
|
-
|
|
184
140
|
if (!options.silent) {
|
|
185
141
|
console.log("Generating output(s)");
|
|
186
142
|
}
|
|
187
|
-
|
|
188
143
|
generateDiffFiles();
|
|
189
144
|
}
|
|
190
145
|
} catch (err) {
|
|
@@ -193,6 +148,7 @@ function diffAmendements(dataDir) {
|
|
|
193
148
|
_iterator.f();
|
|
194
149
|
}
|
|
195
150
|
}
|
|
151
|
+
|
|
196
152
|
/**
|
|
197
153
|
* General process for output of diffs.
|
|
198
154
|
* The script handles two different modes :
|
|
@@ -201,20 +157,16 @@ function diffAmendements(dataDir) {
|
|
|
201
157
|
* - splitted : Will output a single file for each amendments, either its new or updated.
|
|
202
158
|
*
|
|
203
159
|
*/
|
|
204
|
-
|
|
205
|
-
|
|
206
160
|
function generateDiffFiles() {
|
|
207
161
|
// Handles merged mode
|
|
208
162
|
if (options.mode === "merged") {
|
|
209
163
|
if (!options.silent) {
|
|
210
164
|
console.log("Generating merged files");
|
|
211
165
|
}
|
|
212
|
-
|
|
213
166
|
if (diffedAmendments.length > 0) {
|
|
214
167
|
if (!options.silent) {
|
|
215
168
|
console.log("Generating diffed amendments files");
|
|
216
169
|
}
|
|
217
|
-
|
|
218
170
|
_fsExtra["default"].writeFileSync(options.output + "amendements_XV_diffed.json", JSON.stringify(diffedAmendments), {
|
|
219
171
|
encoding: "utf8",
|
|
220
172
|
flag: "w"
|
|
@@ -224,12 +176,10 @@ function generateDiffFiles() {
|
|
|
224
176
|
console.log("No diff in the already existing amendments");
|
|
225
177
|
}
|
|
226
178
|
}
|
|
227
|
-
|
|
228
179
|
if (newAmendments.length > 0) {
|
|
229
180
|
if (!options.silent) {
|
|
230
181
|
console.log("Generating new amendments file");
|
|
231
182
|
}
|
|
232
|
-
|
|
233
183
|
_fsExtra["default"].writeFileSync(options.output + "amendements_XV_new.json", JSON.stringify(newAmendments), {
|
|
234
184
|
encoding: "utf8",
|
|
235
185
|
flag: "w"
|
|
@@ -244,11 +194,11 @@ function generateDiffFiles() {
|
|
|
244
194
|
if (!options.silent) {
|
|
245
195
|
console.log("Generating separated files");
|
|
246
196
|
}
|
|
197
|
+
|
|
247
198
|
/**
|
|
248
199
|
* Process the copy action of the new and diffed amendments
|
|
249
200
|
*/
|
|
250
201
|
|
|
251
|
-
|
|
252
202
|
diffedAmendments.forEach(function (diffedAmendment) {
|
|
253
203
|
generateSingleDiffedAmendment(diffedAmendment);
|
|
254
204
|
});
|
|
@@ -259,62 +209,52 @@ function generateDiffFiles() {
|
|
|
259
209
|
console.error("Unknown output mode. Aborting...");
|
|
260
210
|
process.exit();
|
|
261
211
|
}
|
|
262
|
-
}
|
|
263
|
-
|
|
212
|
+
}
|
|
264
213
|
|
|
214
|
+
// Pushes an amendment to the queue that will be processed to copy new amendments files
|
|
265
215
|
function addToQueueForNewAmendments(file, path) {
|
|
266
216
|
var amendment = {
|
|
267
217
|
path: path,
|
|
268
218
|
data: file
|
|
269
219
|
};
|
|
270
220
|
newAmendments.push(amendment);
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
|
|
221
|
+
}
|
|
222
|
+
// Pushes an amendment to the queue that will be processed to copy updated amendments files
|
|
274
223
|
function addToQueueForDiffedAmendments(diffedData, path) {
|
|
275
224
|
var amendment = {
|
|
276
225
|
path: path,
|
|
277
226
|
data: diffedData
|
|
278
227
|
};
|
|
279
228
|
diffedAmendments.push(amendment);
|
|
280
|
-
}
|
|
281
|
-
|
|
229
|
+
}
|
|
282
230
|
|
|
231
|
+
// generates a file with a copy of the new amendement
|
|
283
232
|
function generateSingleNewAmendment(newAmendment) {
|
|
284
233
|
newAmendment.path.shift();
|
|
285
|
-
|
|
286
234
|
var shortDir = _toConsumableArray(newAmendment.path);
|
|
287
|
-
|
|
288
235
|
shortDir.pop();
|
|
289
236
|
console.log(options.output + shortDir.join("/"));
|
|
290
|
-
|
|
291
237
|
_fsExtra["default"].mkdirSync(options.output + shortDir.join("/"), {
|
|
292
238
|
recursive: true
|
|
293
239
|
});
|
|
294
|
-
|
|
295
240
|
_fsExtra["default"].writeFileSync(options.output + newAmendment.path.join("/").replace(/(\.json)/, ".new$1"), JSON.stringify(newAmendment.data), {
|
|
296
241
|
encoding: "utf8",
|
|
297
242
|
flag: "w"
|
|
298
243
|
});
|
|
299
|
-
}
|
|
300
|
-
|
|
244
|
+
}
|
|
301
245
|
|
|
246
|
+
// generates a file with a copy of the modified data of the previously existing amendment;
|
|
302
247
|
function generateSingleDiffedAmendment(diffedAmendment) {
|
|
303
248
|
diffedAmendment.path.shift();
|
|
304
|
-
|
|
305
249
|
var shortDir = _toConsumableArray(diffedAmendment.path);
|
|
306
|
-
|
|
307
250
|
shortDir.pop();
|
|
308
|
-
|
|
309
251
|
_fsExtra["default"].mkdirSync(options.output + shortDir.join("/"), {
|
|
310
252
|
recursive: true
|
|
311
253
|
});
|
|
312
|
-
|
|
313
254
|
_fsExtra["default"].writeFileSync(options.output + diffedAmendment.path.join("/").replace(/(\.json)/, ".diff$1"), JSON.stringify(diffedAmendment.data), {
|
|
314
255
|
encoding: "utf8",
|
|
315
256
|
flag: "w"
|
|
316
257
|
});
|
|
317
258
|
}
|
|
318
|
-
|
|
319
259
|
diffAmendements(options.dataDir);
|
|
320
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkaWZmZWRBbWVuZG1lbnRzIiwibmV3QW1lbmRtZW50cyIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsIm5hbWUiLCJ0eXBlIiwiQm9vbGVhbiIsImRlZmF1bHRWYWx1ZSIsIlN0cmluZyIsImRlZmF1bHRPcHRpb24iLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwiZGlmZkFtZW5kZW1lbnRzIiwiZGF0YURpciIsInByZXZpb3VzIiwiY29uc29sZSIsImVycm9yIiwicHJvY2VzcyIsImV4aXQiLCJmcyIsImV4aXN0c1N5bmMiLCJvdXRwdXQiLCJkYXRhc2V0cyIsImFtZW5kZW1lbnRzIiwiZGF0YXNldCIsInN0cnVjdHVyZSIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJTZWdtZW50ZWRGaWxlcyIsIm9yaWdpbmFsSnNvbkRpciIsInBhdGgiLCJqb2luIiwiZmlsZW5hbWUiLCJzaWxlbnQiLCJsb2ciLCJ3YWxrRGlyIiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsIm5ld0ZpbGVQYXRoIiwibmV3RmlsZSIsIkpTT04iLCJwYXJzZSIsInJlYWRGaWxlU3luYyIsInRvTG9jYWxlU3RyaW5nIiwib2xkRmlsZVBhdGgiLCJvbGRGaWxlRXhpc3RzIiwiYWRkVG9RdWV1ZUZvck5ld0FtZW5kbWVudHMiLCJvbGRGaWxlIiwiZSIsImRpZmYiLCJkZXRhaWxlZERpZmYiLCJPYmplY3QiLCJrZXlzIiwiYWRkZWQiLCJsZW5ndGgiLCJ1cGRhdGVkIiwiZGVsZXRlZCIsImFkZFRvUXVldWVGb3JEaWZmZWRBbWVuZG1lbnRzIiwiZ2VuZXJhdGVEaWZmRmlsZXMiLCJtb2RlIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsImVuY29kaW5nIiwiZmxhZyIsImZvckVhY2giLCJkaWZmZWRBbWVuZG1lbnQiLCJnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudCIsIm5ld0FtZW5kbWVudCIsImdlbmVyYXRlU2luZ2xlTmV3QW1lbmRtZW50IiwiZmlsZSIsImFtZW5kbWVudCIsImRhdGEiLCJwdXNoIiwiZGlmZmVkRGF0YSIsInNoaWZ0Iiwic2hvcnREaXIiLCJwb3AiLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJyZXBsYWNlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZGlmZl9hbWVuZGVtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7IGRldGFpbGVkRGlmZiB9IGZyb20gXCJkZWVwLW9iamVjdC1kaWZmXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmNvbnN0IGRpZmZlZEFtZW5kbWVudHM6IEFycmF5PGFueT4gPSBbXVxuY29uc3QgbmV3QW1lbmRtZW50czogQXJyYXk8YW55PiA9IFtdXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJtXCIsXG4gICAgaGVscDogXCJEaWZmIG1vZGVzLlwiLFxuICAgIG5hbWU6IFwibW9kZVwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCJtZXJnZWRcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJwXCIsXG4gICAgaGVscDogXCJEaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcHJldmlvdXMgZHVtcCBvZiBhbWVuZG1lbnRzXCIsXG4gICAgbmFtZTogXCJwcmV2aW91c1wiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcIm9cIixcbiAgICBoZWxwOiBcIk91dHB1dCBkaXJlY3RvcnkgZm9yIGRpZmYgZmlsZXNcIixcbiAgICBuYW1lOiBcIm91dHB1dFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIuL2RpZmZfb3V0cHV0cy9cIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuZnVuY3Rpb24gZGlmZkFtZW5kZW1lbnRzKGRhdGFEaXI6IHN0cmluZykge1xuICBpZiAoIW9wdGlvbnMucHJldmlvdXMpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJObyBwcmV2aW91cyBkYXRhIGZvbGRlciBzcGVjaWZpZWQuIFlvdSBtdXN0IHByb3ZpZGUgb25lIHdpdGggdGhlIC1wIG9yIC0tcHJldmlvdXMgb3B0aW9uLiBFeGl0aW5nLi4uXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBpZiAoIWZzLmV4aXN0c1N5bmMob3B0aW9ucy5vdXRwdXQpKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiVGhlIG91dHB1dCBkaXIgZG9lcyBub3QgZXhpc3RzLiBZb3UgbXVzdCBwcm92aWRlIGFuIGV4aXN0aW5nIGRpcmVjdG9yeS4gRGVmYXVsdCBkaXJlY3RvcnkgaXMgLi9kaWZmX291dHB1dHMvXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBEaWZmaW5nICR7b3JpZ2luYWxKc29uRGlyfSBmb2xkZXIuLi5gKVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIob3JpZ2luYWxKc29uRGlyKSkge1xuICAgICAgICAgIGNvbnN0IG5ld0ZpbGVQYXRoID1cbiAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpciArIFwiL1wiICsgYW1lbmRlbWVudFNwbGl0UGF0aC5qb2luKFwiL1wiKVxuICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgZnMucmVhZEZpbGVTeW5jKG5ld0ZpbGVQYXRoKS50b0xvY2FsZVN0cmluZygpLFxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IG9sZEZpbGVQYXRoID1cbiAgICAgICAgICAgIG9wdGlvbnMucHJldmlvdXMgK1xuICAgICAgICAgICAgZGF0YXNldC5maWxlbmFtZSArXG4gICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoLmpvaW4oXCIvXCIpXG4gICAgICAgICAgY29uc3Qgb2xkRmlsZUV4aXN0cyA9IGZzLmV4aXN0c1N5bmMob2xkRmlsZVBhdGgpXG4gICAgICAgICAgaWYgKCFvbGRGaWxlRXhpc3RzKSB7XG4gICAgICAgICAgICAvLyBJZiBmaWxlIGZvdW5kIGRvZXMgbm90IGV4aXN0IGluIHRoZSBwcmV2aW91cyBkdW1wXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIFwiRmlsZSBkaWQgbm90IGV4aXN0cyBwcmV2aW91c2x5LiBHdWVzc2luZyBpdCdzIGEgbmV3IGFtZW5kbWVudC4gQWRkaW5nIHRvIHRoZSBkaWZmIGxpc3QgZm9yIG5ldyBvYmplY3RzXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKG5ld0ZpbGUsIGFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEZpbGUgYWxyZWFkeSBleGlzdGVkIGluIHByZXZpb3VzIGR1bXBcbiAgICAgICAgICBsZXQgb2xkRmlsZTogSlNPTiA9IEpTT04ucGFyc2UoXCJ7fVwiKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBHYXRoZXIgZGF0YSBvZiB0aGUgZmlsZSBhbmQgcmV0cmFuc2NyaXB0IGFzIGEgSnNvbiBvYmplY3RcbiAgICAgICAgICAgIG9sZEZpbGUgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhvbGRGaWxlUGF0aCkudG9Mb2NhbGVTdHJpbmcoKSlcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRoZSBwcm9jZXNzIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbiBpbiBjYXNlIG9mIGNvcnJ1cHQgSlNPTiBkYXRhXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEdlbmVyYXRlIHRoZSBkaWZmIGJlZXR3ZWVuIHRoZSB0d28gSlNPTiBvYmplY3RzIChvbGQgJiBuZXcgZHVtcClcbiAgICAgICAgICBjb25zdCBkaWZmOiBhbnkgPSBkZXRhaWxlZERpZmYob2xkRmlsZSwgbmV3RmlsZSlcblxuICAgICAgICAgIC8vIElmIG5vIGNoYW5nZXMgYmVldHdlZW4gdGhlIHR3byBkdW1wc1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuYWRkZWQpLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGlmZi51cGRhdGVkKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuZGVsZXRlZCkubGVuZ3RoID09PSAwXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRvIG5leHQgaXRlcmF0aW9uIGFzIHRoZXJlIGlzIG5vIG5lZWQgdG8gZ2VuZXJhdGUgYSBmaWxlXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2hhbmdlcyBmb3VuZCAhXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyhkaWZmLCBhbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG91dHB1dChzKVwiKVxuICAgIH1cblxuICAgIGdlbmVyYXRlRGlmZkZpbGVzKClcbiAgfVxufVxuXG4vKipcbiAqIEdlbmVyYWwgcHJvY2VzcyBmb3Igb3V0cHV0IG9mIGRpZmZzLlxuICogVGhlIHNjcmlwdCBoYW5kbGVzIHR3byBkaWZmZXJlbnQgbW9kZXMgOlxuICogLSBtZXJnZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBuZXcgYW1lbmRlbWVudHMgYW5kIGEgc2luZ2xlIGZpbGVcbiAqICAgICAgICAgICAgZm9yIHVwZGF0ZWQgYW1lbmRlbWVudHNcbiAqIC0gc3BsaXR0ZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBlYWNoIGFtZW5kbWVudHMsIGVpdGhlciBpdHMgbmV3IG9yIHVwZGF0ZWQuXG4gKlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZURpZmZGaWxlcygpIHtcbiAgLy8gSGFuZGxlcyBtZXJnZWQgbW9kZVxuICBpZiAob3B0aW9ucy5tb2RlID09PSBcIm1lcmdlZFwiKSB7XG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG1lcmdlZCBmaWxlc1wiKVxuICAgIH1cblxuICAgIGlmIChkaWZmZWRBbWVuZG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIGRpZmZlZCBhbWVuZG1lbnRzIGZpbGVzXCIpXG4gICAgICB9XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICBvcHRpb25zLm91dHB1dCArIFwiYW1lbmRlbWVudHNfWFZfZGlmZmVkLmpzb25cIixcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGlmZmVkQW1lbmRtZW50cyksXG4gICAgICAgIHsgZW5jb2Rpbmc6IFwidXRmOFwiLCBmbGFnOiBcIndcIiB9LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTm8gZGlmZiBpbiB0aGUgYWxyZWFkeSBleGlzdGluZyBhbWVuZG1lbnRzXCIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5ld0FtZW5kbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgbmV3IGFtZW5kbWVudHMgZmlsZVwiKVxuICAgICAgfVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgb3B0aW9ucy5vdXRwdXQgKyBcImFtZW5kZW1lbnRzX1hWX25ldy5qc29uXCIsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudHMpLFxuICAgICAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk5vIG5ldyBhbWVuZGVtZW50LiBTa2lwcGluZyBmaWxlIGdlbmVyYXRpb25cIilcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5tb2RlID09PSBcInNwbGl0dGVkXCIpIHtcbiAgICAvLyBIYW5kbGVzIHNwbGl0dGVkIG1vZGVcbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgc2VwYXJhdGVkIGZpbGVzXCIpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2VzcyB0aGUgY29weSBhY3Rpb24gb2YgdGhlIG5ldyBhbmQgZGlmZmVkIGFtZW5kbWVudHNcbiAgICAgKi9cblxuICAgIGRpZmZlZEFtZW5kbWVudHMuZm9yRWFjaCgoZGlmZmVkQW1lbmRtZW50OiBhbnkpID0+IHtcbiAgICAgIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudClcbiAgICB9KVxuXG4gICAgbmV3QW1lbmRtZW50cy5mb3JFYWNoKChuZXdBbWVuZG1lbnQ6IGFueSkgPT4ge1xuICAgICAgZ2VuZXJhdGVTaW5nbGVOZXdBbWVuZG1lbnQobmV3QW1lbmRtZW50KVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcIlVua25vd24gb3V0cHV0IG1vZGUuIEFib3J0aW5nLi4uXCIpXG4gICAgcHJvY2Vzcy5leGl0KClcbiAgfVxufVxuXG4vLyBQdXNoZXMgYW4gYW1lbmRtZW50IHRvIHRoZSBxdWV1ZSB0aGF0IHdpbGwgYmUgcHJvY2Vzc2VkIHRvIGNvcHkgbmV3IGFtZW5kbWVudHMgZmlsZXNcbmZ1bmN0aW9uIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKGZpbGU6IGFueSwgcGF0aDogYW55KTogdm9pZCB7XG4gIGNvbnN0IGFtZW5kbWVudDogYW55ID0ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgZGF0YTogZmlsZSxcbiAgfVxuICBuZXdBbWVuZG1lbnRzLnB1c2goYW1lbmRtZW50KVxufVxuLy8gUHVzaGVzIGFuIGFtZW5kbWVudCB0byB0aGUgcXVldWUgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCB0byBjb3B5IHVwZGF0ZWQgYW1lbmRtZW50cyBmaWxlc1xuZnVuY3Rpb24gYWRkVG9RdWV1ZUZvckRpZmZlZEFtZW5kbWVudHMoZGlmZmVkRGF0YTogYW55LCBwYXRoOiBhbnkpOiB2b2lkIHtcbiAgY29uc3QgYW1lbmRtZW50OiBhbnkgPSB7XG4gICAgcGF0aDogcGF0aCxcbiAgICBkYXRhOiBkaWZmZWREYXRhLFxuICB9XG4gIGRpZmZlZEFtZW5kbWVudHMucHVzaChhbWVuZG1lbnQpXG59XG5cbi8vIGdlbmVyYXRlcyBhIGZpbGUgd2l0aCBhIGNvcHkgb2YgdGhlIG5ldyBhbWVuZGVtZW50XG5mdW5jdGlvbiBnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudChuZXdBbWVuZG1lbnQ6IHtcbiAgcGF0aDogQXJyYXk8c3RyaW5nPlxuICBkYXRhOiBhbnlcbn0pIHtcbiAgbmV3QW1lbmRtZW50LnBhdGguc2hpZnQoKVxuXG4gIGNvbnN0IHNob3J0RGlyOiBBcnJheTxhbnk+ID0gWy4uLm5ld0FtZW5kbWVudC5wYXRoXVxuICBzaG9ydERpci5wb3AoKVxuICBjb25zb2xlLmxvZyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpKVxuICBmcy5ta2RpclN5bmMob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSwge1xuICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgfSlcbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBvcHRpb25zLm91dHB1dCArIG5ld0FtZW5kbWVudC5wYXRoLmpvaW4oXCIvXCIpLnJlcGxhY2UoLyhcXC5qc29uKS8sIFwiLm5ldyQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG4vLyBnZW5lcmF0ZXMgYSBmaWxlIHdpdGggYSBjb3B5IG9mIHRoZSBtb2RpZmllZCBkYXRhIG9mIHRoZSBwcmV2aW91c2x5IGV4aXN0aW5nIGFtZW5kbWVudDtcbmZ1bmN0aW9uIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudDoge1xuICBwYXRoOiBBcnJheTxzdHJpbmc+XG4gIGRhdGE6IGFueVxufSkge1xuICBkaWZmZWRBbWVuZG1lbnQucGF0aC5zaGlmdCgpXG5cbiAgY29uc3Qgc2hvcnREaXI6IEFycmF5PGFueT4gPSBbLi4uZGlmZmVkQW1lbmRtZW50LnBhdGhdXG4gIHNob3J0RGlyLnBvcCgpXG4gIGZzLm1rZGlyU3luYyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpLCB7XG4gICAgcmVjdXJzaXZlOiB0cnVlLFxuICB9KVxuXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgb3B0aW9ucy5vdXRwdXQgK1xuICAgICAgZGlmZmVkQW1lbmRtZW50LnBhdGguam9pbihcIi9cIikucmVwbGFjZSgvKFxcLmpzb24pLywgXCIuZGlmZiQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KGRpZmZlZEFtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG5kaWZmQW1lbmRlbWVudHMob3B0aW9ucy5kYXRhRGlyKVxuIl0sIm1hcHBpbmdz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
|
|
260
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkaWZmZWRBbWVuZG1lbnRzIiwibmV3QW1lbmRtZW50cyIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsIm5hbWUiLCJ0eXBlIiwiQm9vbGVhbiIsImRlZmF1bHRWYWx1ZSIsIlN0cmluZyIsImRlZmF1bHRPcHRpb24iLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwiZGlmZkFtZW5kZW1lbnRzIiwiZGF0YURpciIsInByZXZpb3VzIiwiY29uc29sZSIsImVycm9yIiwicHJvY2VzcyIsImV4aXQiLCJmcyIsImV4aXN0c1N5bmMiLCJvdXRwdXQiLCJkYXRhc2V0cyIsImFtZW5kZW1lbnRzIiwiZGF0YXNldCIsInN0cnVjdHVyZSIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJTZWdtZW50ZWRGaWxlcyIsIm9yaWdpbmFsSnNvbkRpciIsInBhdGgiLCJqb2luIiwiZmlsZW5hbWUiLCJzaWxlbnQiLCJsb2ciLCJ3YWxrRGlyIiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsIm5ld0ZpbGVQYXRoIiwibmV3RmlsZSIsIkpTT04iLCJwYXJzZSIsInJlYWRGaWxlU3luYyIsInRvTG9jYWxlU3RyaW5nIiwib2xkRmlsZVBhdGgiLCJvbGRGaWxlRXhpc3RzIiwiYWRkVG9RdWV1ZUZvck5ld0FtZW5kbWVudHMiLCJvbGRGaWxlIiwiZSIsImRpZmYiLCJkZXRhaWxlZERpZmYiLCJPYmplY3QiLCJrZXlzIiwiYWRkZWQiLCJsZW5ndGgiLCJ1cGRhdGVkIiwiZGVsZXRlZCIsImFkZFRvUXVldWVGb3JEaWZmZWRBbWVuZG1lbnRzIiwiZ2VuZXJhdGVEaWZmRmlsZXMiLCJtb2RlIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsImVuY29kaW5nIiwiZmxhZyIsImZvckVhY2giLCJkaWZmZWRBbWVuZG1lbnQiLCJnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudCIsIm5ld0FtZW5kbWVudCIsImdlbmVyYXRlU2luZ2xlTmV3QW1lbmRtZW50IiwiZmlsZSIsImFtZW5kbWVudCIsImRhdGEiLCJwdXNoIiwiZGlmZmVkRGF0YSIsInNoaWZ0Iiwic2hvcnREaXIiLCJwb3AiLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJyZXBsYWNlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZGlmZl9hbWVuZGVtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7IGRldGFpbGVkRGlmZiB9IGZyb20gXCJkZWVwLW9iamVjdC1kaWZmXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmNvbnN0IGRpZmZlZEFtZW5kbWVudHM6IEFycmF5PGFueT4gPSBbXVxuY29uc3QgbmV3QW1lbmRtZW50czogQXJyYXk8YW55PiA9IFtdXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJtXCIsXG4gICAgaGVscDogXCJEaWZmIG1vZGVzLlwiLFxuICAgIG5hbWU6IFwibW9kZVwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCJtZXJnZWRcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJwXCIsXG4gICAgaGVscDogXCJEaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcHJldmlvdXMgZHVtcCBvZiBhbWVuZG1lbnRzXCIsXG4gICAgbmFtZTogXCJwcmV2aW91c1wiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcIm9cIixcbiAgICBoZWxwOiBcIk91dHB1dCBkaXJlY3RvcnkgZm9yIGRpZmYgZmlsZXNcIixcbiAgICBuYW1lOiBcIm91dHB1dFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIuL2RpZmZfb3V0cHV0cy9cIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuZnVuY3Rpb24gZGlmZkFtZW5kZW1lbnRzKGRhdGFEaXI6IHN0cmluZykge1xuICBpZiAoIW9wdGlvbnMucHJldmlvdXMpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJObyBwcmV2aW91cyBkYXRhIGZvbGRlciBzcGVjaWZpZWQuIFlvdSBtdXN0IHByb3ZpZGUgb25lIHdpdGggdGhlIC1wIG9yIC0tcHJldmlvdXMgb3B0aW9uLiBFeGl0aW5nLi4uXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBpZiAoIWZzLmV4aXN0c1N5bmMob3B0aW9ucy5vdXRwdXQpKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiVGhlIG91dHB1dCBkaXIgZG9lcyBub3QgZXhpc3RzLiBZb3UgbXVzdCBwcm92aWRlIGFuIGV4aXN0aW5nIGRpcmVjdG9yeS4gRGVmYXVsdCBkaXJlY3RvcnkgaXMgLi9kaWZmX291dHB1dHMvXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBEaWZmaW5nICR7b3JpZ2luYWxKc29uRGlyfSBmb2xkZXIuLi5gKVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIob3JpZ2luYWxKc29uRGlyKSkge1xuICAgICAgICAgIGNvbnN0IG5ld0ZpbGVQYXRoID1cbiAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpciArIFwiL1wiICsgYW1lbmRlbWVudFNwbGl0UGF0aC5qb2luKFwiL1wiKVxuICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgZnMucmVhZEZpbGVTeW5jKG5ld0ZpbGVQYXRoKS50b0xvY2FsZVN0cmluZygpLFxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IG9sZEZpbGVQYXRoID1cbiAgICAgICAgICAgIG9wdGlvbnMucHJldmlvdXMgK1xuICAgICAgICAgICAgZGF0YXNldC5maWxlbmFtZSArXG4gICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoLmpvaW4oXCIvXCIpXG4gICAgICAgICAgY29uc3Qgb2xkRmlsZUV4aXN0cyA9IGZzLmV4aXN0c1N5bmMob2xkRmlsZVBhdGgpXG4gICAgICAgICAgaWYgKCFvbGRGaWxlRXhpc3RzKSB7XG4gICAgICAgICAgICAvLyBJZiBmaWxlIGZvdW5kIGRvZXMgbm90IGV4aXN0IGluIHRoZSBwcmV2aW91cyBkdW1wXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIFwiRmlsZSBkaWQgbm90IGV4aXN0cyBwcmV2aW91c2x5LiBHdWVzc2luZyBpdCdzIGEgbmV3IGFtZW5kbWVudC4gQWRkaW5nIHRvIHRoZSBkaWZmIGxpc3QgZm9yIG5ldyBvYmplY3RzXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKG5ld0ZpbGUsIGFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEZpbGUgYWxyZWFkeSBleGlzdGVkIGluIHByZXZpb3VzIGR1bXBcbiAgICAgICAgICBsZXQgb2xkRmlsZTogSlNPTiA9IEpTT04ucGFyc2UoXCJ7fVwiKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBHYXRoZXIgZGF0YSBvZiB0aGUgZmlsZSBhbmQgcmV0cmFuc2NyaXB0IGFzIGEgSnNvbiBvYmplY3RcbiAgICAgICAgICAgIG9sZEZpbGUgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhvbGRGaWxlUGF0aCkudG9Mb2NhbGVTdHJpbmcoKSlcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRoZSBwcm9jZXNzIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbiBpbiBjYXNlIG9mIGNvcnJ1cHQgSlNPTiBkYXRhXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEdlbmVyYXRlIHRoZSBkaWZmIGJlZXR3ZWVuIHRoZSB0d28gSlNPTiBvYmplY3RzIChvbGQgJiBuZXcgZHVtcClcbiAgICAgICAgICBjb25zdCBkaWZmOiBhbnkgPSBkZXRhaWxlZERpZmYob2xkRmlsZSwgbmV3RmlsZSlcblxuICAgICAgICAgIC8vIElmIG5vIGNoYW5nZXMgYmVldHdlZW4gdGhlIHR3byBkdW1wc1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuYWRkZWQpLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGlmZi51cGRhdGVkKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuZGVsZXRlZCkubGVuZ3RoID09PSAwXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRvIG5leHQgaXRlcmF0aW9uIGFzIHRoZXJlIGlzIG5vIG5lZWQgdG8gZ2VuZXJhdGUgYSBmaWxlXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2hhbmdlcyBmb3VuZCAhXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyhkaWZmLCBhbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG91dHB1dChzKVwiKVxuICAgIH1cblxuICAgIGdlbmVyYXRlRGlmZkZpbGVzKClcbiAgfVxufVxuXG4vKipcbiAqIEdlbmVyYWwgcHJvY2VzcyBmb3Igb3V0cHV0IG9mIGRpZmZzLlxuICogVGhlIHNjcmlwdCBoYW5kbGVzIHR3byBkaWZmZXJlbnQgbW9kZXMgOlxuICogLSBtZXJnZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBuZXcgYW1lbmRlbWVudHMgYW5kIGEgc2luZ2xlIGZpbGVcbiAqICAgICAgICAgICAgZm9yIHVwZGF0ZWQgYW1lbmRlbWVudHNcbiAqIC0gc3BsaXR0ZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBlYWNoIGFtZW5kbWVudHMsIGVpdGhlciBpdHMgbmV3IG9yIHVwZGF0ZWQuXG4gKlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZURpZmZGaWxlcygpIHtcbiAgLy8gSGFuZGxlcyBtZXJnZWQgbW9kZVxuICBpZiAob3B0aW9ucy5tb2RlID09PSBcIm1lcmdlZFwiKSB7XG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG1lcmdlZCBmaWxlc1wiKVxuICAgIH1cblxuICAgIGlmIChkaWZmZWRBbWVuZG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIGRpZmZlZCBhbWVuZG1lbnRzIGZpbGVzXCIpXG4gICAgICB9XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICBvcHRpb25zLm91dHB1dCArIFwiYW1lbmRlbWVudHNfWFZfZGlmZmVkLmpzb25cIixcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGlmZmVkQW1lbmRtZW50cyksXG4gICAgICAgIHsgZW5jb2Rpbmc6IFwidXRmOFwiLCBmbGFnOiBcIndcIiB9LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTm8gZGlmZiBpbiB0aGUgYWxyZWFkeSBleGlzdGluZyBhbWVuZG1lbnRzXCIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5ld0FtZW5kbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgbmV3IGFtZW5kbWVudHMgZmlsZVwiKVxuICAgICAgfVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgb3B0aW9ucy5vdXRwdXQgKyBcImFtZW5kZW1lbnRzX1hWX25ldy5qc29uXCIsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudHMpLFxuICAgICAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk5vIG5ldyBhbWVuZGVtZW50LiBTa2lwcGluZyBmaWxlIGdlbmVyYXRpb25cIilcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5tb2RlID09PSBcInNwbGl0dGVkXCIpIHtcbiAgICAvLyBIYW5kbGVzIHNwbGl0dGVkIG1vZGVcbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgc2VwYXJhdGVkIGZpbGVzXCIpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2VzcyB0aGUgY29weSBhY3Rpb24gb2YgdGhlIG5ldyBhbmQgZGlmZmVkIGFtZW5kbWVudHNcbiAgICAgKi9cblxuICAgIGRpZmZlZEFtZW5kbWVudHMuZm9yRWFjaCgoZGlmZmVkQW1lbmRtZW50OiBhbnkpID0+IHtcbiAgICAgIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudClcbiAgICB9KVxuXG4gICAgbmV3QW1lbmRtZW50cy5mb3JFYWNoKChuZXdBbWVuZG1lbnQ6IGFueSkgPT4ge1xuICAgICAgZ2VuZXJhdGVTaW5nbGVOZXdBbWVuZG1lbnQobmV3QW1lbmRtZW50KVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcIlVua25vd24gb3V0cHV0IG1vZGUuIEFib3J0aW5nLi4uXCIpXG4gICAgcHJvY2Vzcy5leGl0KClcbiAgfVxufVxuXG4vLyBQdXNoZXMgYW4gYW1lbmRtZW50IHRvIHRoZSBxdWV1ZSB0aGF0IHdpbGwgYmUgcHJvY2Vzc2VkIHRvIGNvcHkgbmV3IGFtZW5kbWVudHMgZmlsZXNcbmZ1bmN0aW9uIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKGZpbGU6IGFueSwgcGF0aDogYW55KTogdm9pZCB7XG4gIGNvbnN0IGFtZW5kbWVudDogYW55ID0ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgZGF0YTogZmlsZSxcbiAgfVxuICBuZXdBbWVuZG1lbnRzLnB1c2goYW1lbmRtZW50KVxufVxuLy8gUHVzaGVzIGFuIGFtZW5kbWVudCB0byB0aGUgcXVldWUgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCB0byBjb3B5IHVwZGF0ZWQgYW1lbmRtZW50cyBmaWxlc1xuZnVuY3Rpb24gYWRkVG9RdWV1ZUZvckRpZmZlZEFtZW5kbWVudHMoZGlmZmVkRGF0YTogYW55LCBwYXRoOiBhbnkpOiB2b2lkIHtcbiAgY29uc3QgYW1lbmRtZW50OiBhbnkgPSB7XG4gICAgcGF0aDogcGF0aCxcbiAgICBkYXRhOiBkaWZmZWREYXRhLFxuICB9XG4gIGRpZmZlZEFtZW5kbWVudHMucHVzaChhbWVuZG1lbnQpXG59XG5cbi8vIGdlbmVyYXRlcyBhIGZpbGUgd2l0aCBhIGNvcHkgb2YgdGhlIG5ldyBhbWVuZGVtZW50XG5mdW5jdGlvbiBnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudChuZXdBbWVuZG1lbnQ6IHtcbiAgcGF0aDogQXJyYXk8c3RyaW5nPlxuICBkYXRhOiBhbnlcbn0pIHtcbiAgbmV3QW1lbmRtZW50LnBhdGguc2hpZnQoKVxuXG4gIGNvbnN0IHNob3J0RGlyOiBBcnJheTxhbnk+ID0gWy4uLm5ld0FtZW5kbWVudC5wYXRoXVxuICBzaG9ydERpci5wb3AoKVxuICBjb25zb2xlLmxvZyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpKVxuICBmcy5ta2RpclN5bmMob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSwge1xuICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgfSlcbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBvcHRpb25zLm91dHB1dCArIG5ld0FtZW5kbWVudC5wYXRoLmpvaW4oXCIvXCIpLnJlcGxhY2UoLyhcXC5qc29uKS8sIFwiLm5ldyQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG4vLyBnZW5lcmF0ZXMgYSBmaWxlIHdpdGggYSBjb3B5IG9mIHRoZSBtb2RpZmllZCBkYXRhIG9mIHRoZSBwcmV2aW91c2x5IGV4aXN0aW5nIGFtZW5kbWVudDtcbmZ1bmN0aW9uIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudDoge1xuICBwYXRoOiBBcnJheTxzdHJpbmc+XG4gIGRhdGE6IGFueVxufSkge1xuICBkaWZmZWRBbWVuZG1lbnQucGF0aC5zaGlmdCgpXG5cbiAgY29uc3Qgc2hvcnREaXI6IEFycmF5PGFueT4gPSBbLi4uZGlmZmVkQW1lbmRtZW50LnBhdGhdXG4gIHNob3J0RGlyLnBvcCgpXG4gIGZzLm1rZGlyU3luYyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpLCB7XG4gICAgcmVjdXJzaXZlOiB0cnVlLFxuICB9KVxuXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgb3B0aW9ucy5vdXRwdXQgK1xuICAgICAgZGlmZmVkQW1lbmRtZW50LnBhdGguam9pbihcIi9cIikucmVwbGFjZSgvKFxcLmpzb24pLywgXCIuZGlmZiQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KGRpZmZlZEFtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG5kaWZmQW1lbmRlbWVudHMob3B0aW9ucy5kYXRhRGlyKVxuIl0sIm1hcHBpbmdz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
|
|
@@ -40,58 +40,51 @@ const optionsDefinitions = [{
|
|
|
40
40
|
type: String
|
|
41
41
|
}];
|
|
42
42
|
const options = commandLineArgs(optionsDefinitions);
|
|
43
|
-
|
|
44
43
|
function diffAmendements(dataDir) {
|
|
45
44
|
if (!options.previous) {
|
|
46
45
|
console.error("No previous data folder specified. You must provide one with the -p or --previous option. Exiting...");
|
|
47
46
|
process.exit();
|
|
48
47
|
}
|
|
49
|
-
|
|
50
48
|
if (!fs.existsSync(options.output)) {
|
|
51
49
|
console.error("The output dir does not exists. You must provide an existing directory. Default directory is ./diff_outputs/");
|
|
52
50
|
process.exit();
|
|
53
51
|
}
|
|
54
|
-
|
|
55
52
|
for (const dataset of datasets.amendements) {
|
|
56
53
|
switch (dataset.structure) {
|
|
57
54
|
case DatasetStructure.SegmentedFiles:
|
|
58
55
|
{
|
|
59
56
|
const originalJsonDir = path.join(dataDir, dataset.filename);
|
|
60
|
-
|
|
61
57
|
if (!options.silent) {
|
|
62
58
|
console.log(`Diffing ${originalJsonDir} folder...`);
|
|
63
59
|
}
|
|
64
|
-
|
|
65
60
|
for (const amendementSplitPath of walkDir(originalJsonDir)) {
|
|
66
61
|
const newFilePath = originalJsonDir + "/" + amendementSplitPath.join("/");
|
|
67
62
|
const newFile = JSON.parse(fs.readFileSync(newFilePath).toLocaleString());
|
|
68
63
|
const oldFilePath = options.previous + dataset.filename + "/" + amendementSplitPath.join("/");
|
|
69
64
|
const oldFileExists = fs.existsSync(oldFilePath);
|
|
70
|
-
|
|
71
65
|
if (!oldFileExists) {
|
|
72
66
|
// If file found does not exist in the previous dump
|
|
73
67
|
if (!options.silent) {
|
|
74
68
|
console.log("File did not exists previously. Guessing it's a new amendment. Adding to the diff list for new objects");
|
|
75
69
|
}
|
|
76
|
-
|
|
77
70
|
addToQueueForNewAmendments(newFile, amendementSplitPath);
|
|
78
71
|
continue;
|
|
79
|
-
}
|
|
80
|
-
|
|
72
|
+
}
|
|
81
73
|
|
|
74
|
+
// File already existed in previous dump
|
|
82
75
|
let oldFile = JSON.parse("{}");
|
|
83
|
-
|
|
84
76
|
try {
|
|
85
77
|
// Gather data of the file and retranscript as a Json object
|
|
86
78
|
oldFile = JSON.parse(fs.readFileSync(oldFilePath).toLocaleString());
|
|
87
79
|
} catch (e) {
|
|
88
80
|
// Skip the process to the next iteration in case of corrupt JSON data
|
|
89
81
|
continue;
|
|
90
|
-
}
|
|
91
|
-
|
|
82
|
+
}
|
|
92
83
|
|
|
93
|
-
|
|
84
|
+
// Generate the diff beetween the two JSON objects (old & new dump)
|
|
85
|
+
const diff = detailedDiff(oldFile, newFile);
|
|
94
86
|
|
|
87
|
+
// If no changes beetween the two dumps
|
|
95
88
|
if (Object.keys(diff.added).length === 0 && Object.keys(diff.updated).length === 0 && Object.keys(diff.deleted).length === 0) {
|
|
96
89
|
// Skip to next iteration as there is no need to generate a file
|
|
97
90
|
continue;
|
|
@@ -99,22 +92,19 @@ function diffAmendements(dataDir) {
|
|
|
99
92
|
if (!options.silent) {
|
|
100
93
|
console.log("Changes found !");
|
|
101
94
|
}
|
|
102
|
-
|
|
103
95
|
addToQueueForDiffedAmendments(diff, amendementSplitPath);
|
|
104
96
|
}
|
|
105
|
-
|
|
106
97
|
break;
|
|
107
98
|
}
|
|
108
99
|
}
|
|
109
100
|
}
|
|
110
|
-
|
|
111
101
|
if (!options.silent) {
|
|
112
102
|
console.log("Generating output(s)");
|
|
113
103
|
}
|
|
114
|
-
|
|
115
104
|
generateDiffFiles();
|
|
116
105
|
}
|
|
117
106
|
}
|
|
107
|
+
|
|
118
108
|
/**
|
|
119
109
|
* General process for output of diffs.
|
|
120
110
|
* The script handles two different modes :
|
|
@@ -123,20 +113,16 @@ function diffAmendements(dataDir) {
|
|
|
123
113
|
* - splitted : Will output a single file for each amendments, either its new or updated.
|
|
124
114
|
*
|
|
125
115
|
*/
|
|
126
|
-
|
|
127
|
-
|
|
128
116
|
function generateDiffFiles() {
|
|
129
117
|
// Handles merged mode
|
|
130
118
|
if (options.mode === "merged") {
|
|
131
119
|
if (!options.silent) {
|
|
132
120
|
console.log("Generating merged files");
|
|
133
121
|
}
|
|
134
|
-
|
|
135
122
|
if (diffedAmendments.length > 0) {
|
|
136
123
|
if (!options.silent) {
|
|
137
124
|
console.log("Generating diffed amendments files");
|
|
138
125
|
}
|
|
139
|
-
|
|
140
126
|
fs.writeFileSync(options.output + "amendements_XV_diffed.json", JSON.stringify(diffedAmendments), {
|
|
141
127
|
encoding: "utf8",
|
|
142
128
|
flag: "w"
|
|
@@ -146,12 +132,10 @@ function generateDiffFiles() {
|
|
|
146
132
|
console.log("No diff in the already existing amendments");
|
|
147
133
|
}
|
|
148
134
|
}
|
|
149
|
-
|
|
150
135
|
if (newAmendments.length > 0) {
|
|
151
136
|
if (!options.silent) {
|
|
152
137
|
console.log("Generating new amendments file");
|
|
153
138
|
}
|
|
154
|
-
|
|
155
139
|
fs.writeFileSync(options.output + "amendements_XV_new.json", JSON.stringify(newAmendments), {
|
|
156
140
|
encoding: "utf8",
|
|
157
141
|
flag: "w"
|
|
@@ -166,11 +150,11 @@ function generateDiffFiles() {
|
|
|
166
150
|
if (!options.silent) {
|
|
167
151
|
console.log("Generating separated files");
|
|
168
152
|
}
|
|
153
|
+
|
|
169
154
|
/**
|
|
170
155
|
* Process the copy action of the new and diffed amendments
|
|
171
156
|
*/
|
|
172
157
|
|
|
173
|
-
|
|
174
158
|
diffedAmendments.forEach(diffedAmendment => {
|
|
175
159
|
generateSingleDiffedAmendment(diffedAmendment);
|
|
176
160
|
});
|
|
@@ -181,27 +165,26 @@ function generateDiffFiles() {
|
|
|
181
165
|
console.error("Unknown output mode. Aborting...");
|
|
182
166
|
process.exit();
|
|
183
167
|
}
|
|
184
|
-
}
|
|
185
|
-
|
|
168
|
+
}
|
|
186
169
|
|
|
170
|
+
// Pushes an amendment to the queue that will be processed to copy new amendments files
|
|
187
171
|
function addToQueueForNewAmendments(file, path) {
|
|
188
172
|
const amendment = {
|
|
189
173
|
path: path,
|
|
190
174
|
data: file
|
|
191
175
|
};
|
|
192
176
|
newAmendments.push(amendment);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
|
|
177
|
+
}
|
|
178
|
+
// Pushes an amendment to the queue that will be processed to copy updated amendments files
|
|
196
179
|
function addToQueueForDiffedAmendments(diffedData, path) {
|
|
197
180
|
const amendment = {
|
|
198
181
|
path: path,
|
|
199
182
|
data: diffedData
|
|
200
183
|
};
|
|
201
184
|
diffedAmendments.push(amendment);
|
|
202
|
-
}
|
|
203
|
-
|
|
185
|
+
}
|
|
204
186
|
|
|
187
|
+
// generates a file with a copy of the new amendement
|
|
205
188
|
function generateSingleNewAmendment(newAmendment) {
|
|
206
189
|
newAmendment.path.shift();
|
|
207
190
|
const shortDir = [...newAmendment.path];
|
|
@@ -214,9 +197,9 @@ function generateSingleNewAmendment(newAmendment) {
|
|
|
214
197
|
encoding: "utf8",
|
|
215
198
|
flag: "w"
|
|
216
199
|
});
|
|
217
|
-
}
|
|
218
|
-
|
|
200
|
+
}
|
|
219
201
|
|
|
202
|
+
// generates a file with a copy of the modified data of the previously existing amendment;
|
|
220
203
|
function generateSingleDiffedAmendment(diffedAmendment) {
|
|
221
204
|
diffedAmendment.path.shift();
|
|
222
205
|
const shortDir = [...diffedAmendment.path];
|
|
@@ -229,6 +212,5 @@ function generateSingleDiffedAmendment(diffedAmendment) {
|
|
|
229
212
|
flag: "w"
|
|
230
213
|
});
|
|
231
214
|
}
|
|
232
|
-
|
|
233
215
|
diffAmendements(options.dataDir);
|
|
234
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJmcyIsInBhdGgiLCJkZXRhaWxlZERpZmYiLCJkYXRhc2V0cyIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJ3YWxrRGlyIiwiZGlmZmVkQW1lbmRtZW50cyIsIm5ld0FtZW5kbWVudHMiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwidHlwZSIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJTdHJpbmciLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsImRpZmZBbWVuZGVtZW50cyIsImRhdGFEaXIiLCJwcmV2aW91cyIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3MiLCJleGl0IiwiZXhpc3RzU3luYyIsIm91dHB1dCIsImRhdGFzZXQiLCJhbWVuZGVtZW50cyIsInN0cnVjdHVyZSIsIlNlZ21lbnRlZEZpbGVzIiwib3JpZ2luYWxKc29uRGlyIiwiam9pbiIsImZpbGVuYW1lIiwic2lsZW50IiwibG9nIiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsIm5ld0ZpbGVQYXRoIiwibmV3RmlsZSIsIkpTT04iLCJwYXJzZSIsInJlYWRGaWxlU3luYyIsInRvTG9jYWxlU3RyaW5nIiwib2xkRmlsZVBhdGgiLCJvbGRGaWxlRXhpc3RzIiwiYWRkVG9RdWV1ZUZvck5ld0FtZW5kbWVudHMiLCJvbGRGaWxlIiwiZSIsImRpZmYiLCJPYmplY3QiLCJrZXlzIiwiYWRkZWQiLCJsZW5ndGgiLCJ1cGRhdGVkIiwiZGVsZXRlZCIsImFkZFRvUXVldWVGb3JEaWZmZWRBbWVuZG1lbnRzIiwiZ2VuZXJhdGVEaWZmRmlsZXMiLCJtb2RlIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsImVuY29kaW5nIiwiZmxhZyIsImZvckVhY2giLCJkaWZmZWRBbWVuZG1lbnQiLCJnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudCIsIm5ld0FtZW5kbWVudCIsImdlbmVyYXRlU2luZ2xlTmV3QW1lbmRtZW50IiwiZmlsZSIsImFtZW5kbWVudCIsImRhdGEiLCJwdXNoIiwiZGlmZmVkRGF0YSIsInNoaWZ0Iiwic2hvcnREaXIiLCJwb3AiLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJyZXBsYWNlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZGlmZl9hbWVuZGVtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7IGRldGFpbGVkRGlmZiB9IGZyb20gXCJkZWVwLW9iamVjdC1kaWZmXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmNvbnN0IGRpZmZlZEFtZW5kbWVudHM6IEFycmF5PGFueT4gPSBbXVxuY29uc3QgbmV3QW1lbmRtZW50czogQXJyYXk8YW55PiA9IFtdXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJtXCIsXG4gICAgaGVscDogXCJEaWZmIG1vZGVzLlwiLFxuICAgIG5hbWU6IFwibW9kZVwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCJtZXJnZWRcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJwXCIsXG4gICAgaGVscDogXCJEaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcHJldmlvdXMgZHVtcCBvZiBhbWVuZG1lbnRzXCIsXG4gICAgbmFtZTogXCJwcmV2aW91c1wiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcIm9cIixcbiAgICBoZWxwOiBcIk91dHB1dCBkaXJlY3RvcnkgZm9yIGRpZmYgZmlsZXNcIixcbiAgICBuYW1lOiBcIm91dHB1dFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIuL2RpZmZfb3V0cHV0cy9cIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuZnVuY3Rpb24gZGlmZkFtZW5kZW1lbnRzKGRhdGFEaXI6IHN0cmluZykge1xuICBpZiAoIW9wdGlvbnMucHJldmlvdXMpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJObyBwcmV2aW91cyBkYXRhIGZvbGRlciBzcGVjaWZpZWQuIFlvdSBtdXN0IHByb3ZpZGUgb25lIHdpdGggdGhlIC1wIG9yIC0tcHJldmlvdXMgb3B0aW9uLiBFeGl0aW5nLi4uXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBpZiAoIWZzLmV4aXN0c1N5bmMob3B0aW9ucy5vdXRwdXQpKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiVGhlIG91dHB1dCBkaXIgZG9lcyBub3QgZXhpc3RzLiBZb3UgbXVzdCBwcm92aWRlIGFuIGV4aXN0aW5nIGRpcmVjdG9yeS4gRGVmYXVsdCBkaXJlY3RvcnkgaXMgLi9kaWZmX291dHB1dHMvXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBEaWZmaW5nICR7b3JpZ2luYWxKc29uRGlyfSBmb2xkZXIuLi5gKVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIob3JpZ2luYWxKc29uRGlyKSkge1xuICAgICAgICAgIGNvbnN0IG5ld0ZpbGVQYXRoID1cbiAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpciArIFwiL1wiICsgYW1lbmRlbWVudFNwbGl0UGF0aC5qb2luKFwiL1wiKVxuICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgZnMucmVhZEZpbGVTeW5jKG5ld0ZpbGVQYXRoKS50b0xvY2FsZVN0cmluZygpLFxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IG9sZEZpbGVQYXRoID1cbiAgICAgICAgICAgIG9wdGlvbnMucHJldmlvdXMgK1xuICAgICAgICAgICAgZGF0YXNldC5maWxlbmFtZSArXG4gICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoLmpvaW4oXCIvXCIpXG4gICAgICAgICAgY29uc3Qgb2xkRmlsZUV4aXN0cyA9IGZzLmV4aXN0c1N5bmMob2xkRmlsZVBhdGgpXG4gICAgICAgICAgaWYgKCFvbGRGaWxlRXhpc3RzKSB7XG4gICAgICAgICAgICAvLyBJZiBmaWxlIGZvdW5kIGRvZXMgbm90IGV4aXN0IGluIHRoZSBwcmV2aW91cyBkdW1wXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIFwiRmlsZSBkaWQgbm90IGV4aXN0cyBwcmV2aW91c2x5LiBHdWVzc2luZyBpdCdzIGEgbmV3IGFtZW5kbWVudC4gQWRkaW5nIHRvIHRoZSBkaWZmIGxpc3QgZm9yIG5ldyBvYmplY3RzXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKG5ld0ZpbGUsIGFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEZpbGUgYWxyZWFkeSBleGlzdGVkIGluIHByZXZpb3VzIGR1bXBcbiAgICAgICAgICBsZXQgb2xkRmlsZTogSlNPTiA9IEpTT04ucGFyc2UoXCJ7fVwiKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBHYXRoZXIgZGF0YSBvZiB0aGUgZmlsZSBhbmQgcmV0cmFuc2NyaXB0IGFzIGEgSnNvbiBvYmplY3RcbiAgICAgICAgICAgIG9sZEZpbGUgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhvbGRGaWxlUGF0aCkudG9Mb2NhbGVTdHJpbmcoKSlcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRoZSBwcm9jZXNzIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbiBpbiBjYXNlIG9mIGNvcnJ1cHQgSlNPTiBkYXRhXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEdlbmVyYXRlIHRoZSBkaWZmIGJlZXR3ZWVuIHRoZSB0d28gSlNPTiBvYmplY3RzIChvbGQgJiBuZXcgZHVtcClcbiAgICAgICAgICBjb25zdCBkaWZmOiBhbnkgPSBkZXRhaWxlZERpZmYob2xkRmlsZSwgbmV3RmlsZSlcblxuICAgICAgICAgIC8vIElmIG5vIGNoYW5nZXMgYmVldHdlZW4gdGhlIHR3byBkdW1wc1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuYWRkZWQpLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGlmZi51cGRhdGVkKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuZGVsZXRlZCkubGVuZ3RoID09PSAwXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRvIG5leHQgaXRlcmF0aW9uIGFzIHRoZXJlIGlzIG5vIG5lZWQgdG8gZ2VuZXJhdGUgYSBmaWxlXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2hhbmdlcyBmb3VuZCAhXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyhkaWZmLCBhbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG91dHB1dChzKVwiKVxuICAgIH1cblxuICAgIGdlbmVyYXRlRGlmZkZpbGVzKClcbiAgfVxufVxuXG4vKipcbiAqIEdlbmVyYWwgcHJvY2VzcyBmb3Igb3V0cHV0IG9mIGRpZmZzLlxuICogVGhlIHNjcmlwdCBoYW5kbGVzIHR3byBkaWZmZXJlbnQgbW9kZXMgOlxuICogLSBtZXJnZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBuZXcgYW1lbmRlbWVudHMgYW5kIGEgc2luZ2xlIGZpbGVcbiAqICAgICAgICAgICAgZm9yIHVwZGF0ZWQgYW1lbmRlbWVudHNcbiAqIC0gc3BsaXR0ZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBlYWNoIGFtZW5kbWVudHMsIGVpdGhlciBpdHMgbmV3IG9yIHVwZGF0ZWQuXG4gKlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZURpZmZGaWxlcygpIHtcbiAgLy8gSGFuZGxlcyBtZXJnZWQgbW9kZVxuICBpZiAob3B0aW9ucy5tb2RlID09PSBcIm1lcmdlZFwiKSB7XG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG1lcmdlZCBmaWxlc1wiKVxuICAgIH1cblxuICAgIGlmIChkaWZmZWRBbWVuZG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIGRpZmZlZCBhbWVuZG1lbnRzIGZpbGVzXCIpXG4gICAgICB9XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICBvcHRpb25zLm91dHB1dCArIFwiYW1lbmRlbWVudHNfWFZfZGlmZmVkLmpzb25cIixcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGlmZmVkQW1lbmRtZW50cyksXG4gICAgICAgIHsgZW5jb2Rpbmc6IFwidXRmOFwiLCBmbGFnOiBcIndcIiB9LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTm8gZGlmZiBpbiB0aGUgYWxyZWFkeSBleGlzdGluZyBhbWVuZG1lbnRzXCIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5ld0FtZW5kbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgbmV3IGFtZW5kbWVudHMgZmlsZVwiKVxuICAgICAgfVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgb3B0aW9ucy5vdXRwdXQgKyBcImFtZW5kZW1lbnRzX1hWX25ldy5qc29uXCIsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudHMpLFxuICAgICAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk5vIG5ldyBhbWVuZGVtZW50LiBTa2lwcGluZyBmaWxlIGdlbmVyYXRpb25cIilcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5tb2RlID09PSBcInNwbGl0dGVkXCIpIHtcbiAgICAvLyBIYW5kbGVzIHNwbGl0dGVkIG1vZGVcbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgc2VwYXJhdGVkIGZpbGVzXCIpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2VzcyB0aGUgY29weSBhY3Rpb24gb2YgdGhlIG5ldyBhbmQgZGlmZmVkIGFtZW5kbWVudHNcbiAgICAgKi9cblxuICAgIGRpZmZlZEFtZW5kbWVudHMuZm9yRWFjaCgoZGlmZmVkQW1lbmRtZW50OiBhbnkpID0+IHtcbiAgICAgIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudClcbiAgICB9KVxuXG4gICAgbmV3QW1lbmRtZW50cy5mb3JFYWNoKChuZXdBbWVuZG1lbnQ6IGFueSkgPT4ge1xuICAgICAgZ2VuZXJhdGVTaW5nbGVOZXdBbWVuZG1lbnQobmV3QW1lbmRtZW50KVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcIlVua25vd24gb3V0cHV0IG1vZGUuIEFib3J0aW5nLi4uXCIpXG4gICAgcHJvY2Vzcy5leGl0KClcbiAgfVxufVxuXG4vLyBQdXNoZXMgYW4gYW1lbmRtZW50IHRvIHRoZSBxdWV1ZSB0aGF0IHdpbGwgYmUgcHJvY2Vzc2VkIHRvIGNvcHkgbmV3IGFtZW5kbWVudHMgZmlsZXNcbmZ1bmN0aW9uIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKGZpbGU6IGFueSwgcGF0aDogYW55KTogdm9pZCB7XG4gIGNvbnN0IGFtZW5kbWVudDogYW55ID0ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgZGF0YTogZmlsZSxcbiAgfVxuICBuZXdBbWVuZG1lbnRzLnB1c2goYW1lbmRtZW50KVxufVxuLy8gUHVzaGVzIGFuIGFtZW5kbWVudCB0byB0aGUgcXVldWUgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCB0byBjb3B5IHVwZGF0ZWQgYW1lbmRtZW50cyBmaWxlc1xuZnVuY3Rpb24gYWRkVG9RdWV1ZUZvckRpZmZlZEFtZW5kbWVudHMoZGlmZmVkRGF0YTogYW55LCBwYXRoOiBhbnkpOiB2b2lkIHtcbiAgY29uc3QgYW1lbmRtZW50OiBhbnkgPSB7XG4gICAgcGF0aDogcGF0aCxcbiAgICBkYXRhOiBkaWZmZWREYXRhLFxuICB9XG4gIGRpZmZlZEFtZW5kbWVudHMucHVzaChhbWVuZG1lbnQpXG59XG5cbi8vIGdlbmVyYXRlcyBhIGZpbGUgd2l0aCBhIGNvcHkgb2YgdGhlIG5ldyBhbWVuZGVtZW50XG5mdW5jdGlvbiBnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudChuZXdBbWVuZG1lbnQ6IHtcbiAgcGF0aDogQXJyYXk8c3RyaW5nPlxuICBkYXRhOiBhbnlcbn0pIHtcbiAgbmV3QW1lbmRtZW50LnBhdGguc2hpZnQoKVxuXG4gIGNvbnN0IHNob3J0RGlyOiBBcnJheTxhbnk+ID0gWy4uLm5ld0FtZW5kbWVudC5wYXRoXVxuICBzaG9ydERpci5wb3AoKVxuICBjb25zb2xlLmxvZyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpKVxuICBmcy5ta2RpclN5bmMob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSwge1xuICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgfSlcbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBvcHRpb25zLm91dHB1dCArIG5ld0FtZW5kbWVudC5wYXRoLmpvaW4oXCIvXCIpLnJlcGxhY2UoLyhcXC5qc29uKS8sIFwiLm5ldyQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG4vLyBnZW5lcmF0ZXMgYSBmaWxlIHdpdGggYSBjb3B5IG9mIHRoZSBtb2RpZmllZCBkYXRhIG9mIHRoZSBwcmV2aW91c2x5IGV4aXN0aW5nIGFtZW5kbWVudDtcbmZ1bmN0aW9uIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudDoge1xuICBwYXRoOiBBcnJheTxzdHJpbmc+XG4gIGRhdGE6IGFueVxufSkge1xuICBkaWZmZWRBbWVuZG1lbnQucGF0aC5zaGlmdCgpXG5cbiAgY29uc3Qgc2hvcnREaXI6IEFycmF5PGFueT4gPSBbLi4uZGlmZmVkQW1lbmRtZW50LnBhdGhdXG4gIHNob3J0RGlyLnBvcCgpXG4gIGZzLm1rZGlyU3luYyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpLCB7XG4gICAgcmVjdXJzaXZlOiB0cnVlLFxuICB9KVxuXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgb3B0aW9ucy5vdXRwdXQgK1xuICAgICAgZGlmZmVkQW1lbmRtZW50LnBhdGguam9pbihcIi9cIikucmVwbGFjZSgvKFxcLmpzb24pLywgXCIuZGlmZiQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KGRpZmZlZEFtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG5kaWZmQW1lbmRlbWVudHMob3B0aW9ucy5kYXRhRGlyKVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxlQUFQLE1BQTRCLG1CQUE1QjtBQUNBLE9BQU9DLEVBQVAsTUFBZSxVQUFmO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixNQUFqQjtBQUNBLFNBQVNDLFlBQVQsUUFBNkIsa0JBQTdCO1NBQ1NDLFEsRUFBVUMsZ0I7U0FDVkMsTztBQUNULE1BQU1DLGdCQUE0QixHQUFHLEVBQXJDO0FBQ0EsTUFBTUMsYUFBeUIsR0FBRyxFQUFsQztBQUVBLE1BQU1DLGtCQUFrQixHQUFHLENBQ3pCO0VBQ0VDLEtBQUssRUFBRSxHQURUO0VBRUVDLElBQUksRUFBRSxvQkFGUjtFQUdFQyxJQUFJLEVBQUUsUUFIUjtFQUlFQyxJQUFJLEVBQUVDO0FBSlIsQ0FEeUIsRUFPekI7RUFDRUosS0FBSyxFQUFFLEdBRFQ7RUFFRUMsSUFBSSxFQUFFLGNBRlI7RUFHRUMsSUFBSSxFQUFFLFNBSFI7RUFJRUMsSUFBSSxFQUFFQztBQUpSLENBUHlCLEVBYXpCO0VBQ0VKLEtBQUssRUFBRSxHQURUO0VBRUVDLElBQUksRUFBRSxhQUZSO0VBR0VDLElBQUksRUFBRSxNQUhSO0VBSUVHLFlBQVksRUFBRSxRQUpoQjtFQUtFRixJQUFJLEVBQUVHO0FBTFIsQ0FieUIsRUFvQnpCO0VBQ0VDLGFBQWEsRUFBRSxJQURqQjtFQUVFTixJQUFJLEVBQUUsZ0RBRlI7RUFHRUMsSUFBSSxFQUFFLFNBSFI7RUFJRUMsSUFBSSxFQUFFRztBQUpSLENBcEJ5QixFQTBCekI7RUFDRU4sS0FBSyxFQUFFLEdBRFQ7RUFFRUMsSUFBSSxFQUFFLHNEQUZSO0VBR0VDLElBQUksRUFBRSxVQUhSO0VBSUVDLElBQUksRUFBRUc7QUFKUixDQTFCeUIsRUFnQ3pCO0VBQ0VOLEtBQUssRUFBRSxHQURUO0VBRUVDLElBQUksRUFBRSxpQ0FGUjtFQUdFQyxJQUFJLEVBQUUsUUFIUjtFQUlFRyxZQUFZLEVBQUUsaUJBSmhCO0VBS0VGLElBQUksRUFBRUc7QUFMUixDQWhDeUIsQ0FBM0I7QUF3Q0EsTUFBTUUsT0FBTyxHQUFHbEIsZUFBZSxDQUFDUyxrQkFBRCxDQUEvQjs7QUFFQSxTQUFTVSxlQUFULENBQXlCQyxPQUF6QixFQUEwQztFQUN4QyxJQUFJLENBQUNGLE9BQU8sQ0FBQ0csUUFBYixFQUF1QjtJQUNyQkMsT0FBTyxDQUFDQyxLQUFSLENBQ0Usc0dBREY7SUFHQUMsT0FBTyxDQUFDQyxJQUFSO0VBQ0Q7O0VBRUQsSUFBSSxDQUFDeEIsRUFBRSxDQUFDeUIsVUFBSCxDQUFjUixPQUFPLENBQUNTLE1BQXRCLENBQUwsRUFBb0M7SUFDbENMLE9BQU8sQ0FBQ0MsS0FBUixDQUNFLDhHQURGO0lBR0FDLE9BQU8sQ0FBQ0MsSUFBUjtFQUNEOztFQUVELEtBQUssTUFBTUcsT0FBWCxJQUFzQnhCLFFBQVEsQ0FBQ3lCLFdBQS9CLEVBQTRDO0lBQzFDLFFBQVFELE9BQU8sQ0FBQ0UsU0FBaEI7TUFDRSxLQUFLekIsZ0JBQWdCLENBQUMwQixjQUF0QjtRQUFzQztVQUNwQyxNQUFNQyxlQUF1QixHQUFHOUIsSUFBSSxDQUFDK0IsSUFBTCxDQUFVYixPQUFWLEVBQW1CUSxPQUFPLENBQUNNLFFBQTNCLENBQWhDOztVQUNBLElBQUksQ0FBQ2hCLE9BQU8sQ0FBQ2lCLE1BQWIsRUFBcUI7WUFDbkJiLE9BQU8sQ0FBQ2MsR0FBUixDQUFhLFdBQVVKLGVBQWdCLFlBQXZDO1VBQ0Q7O1VBRUQsS0FBSyxNQUFNSyxtQkFBWCxJQUFrQy9CLE9BQU8sQ0FBQzBCLGVBQUQsQ0FBekMsRUFBNEQ7WUFDMUQsTUFBTU0sV0FBVyxHQUNmTixlQUFlLEdBQUcsR0FBbEIsR0FBd0JLLG1CQUFtQixDQUFDSixJQUFwQixDQUF5QixHQUF6QixDQUQxQjtZQUVBLE1BQU1NLE9BQU8sR0FBR0MsSUFBSSxDQUFDQyxLQUFMLENBQ2R4QyxFQUFFLENBQUN5QyxZQUFILENBQWdCSixXQUFoQixFQUE2QkssY0FBN0IsRUFEYyxDQUFoQjtZQUlBLE1BQU1DLFdBQVcsR0FDZjFCLE9BQU8sQ0FBQ0csUUFBUixHQUNBTyxPQUFPLENBQUNNLFFBRFIsR0FFQSxHQUZBLEdBR0FHLG1CQUFtQixDQUFDSixJQUFwQixDQUF5QixHQUF6QixDQUpGO1lBS0EsTUFBTVksYUFBYSxHQUFHNUMsRUFBRSxDQUFDeUIsVUFBSCxDQUFja0IsV0FBZCxDQUF0Qjs7WUFDQSxJQUFJLENBQUNDLGFBQUwsRUFBb0I7Y0FDbEI7Y0FDQSxJQUFJLENBQUMzQixPQUFPLENBQUNpQixNQUFiLEVBQXFCO2dCQUNuQmIsT0FBTyxDQUFDYyxHQUFSLENBQ0Usd0dBREY7Y0FHRDs7Y0FDRFUsMEJBQTBCLENBQUNQLE9BQUQsRUFBVUYsbUJBQVYsQ0FBMUI7Y0FDQTtZQUNELENBdEJ5RCxDQXdCMUQ7OztZQUNBLElBQUlVLE9BQWEsR0FBR1AsSUFBSSxDQUFDQyxLQUFMLENBQVcsSUFBWCxDQUFwQjs7WUFDQSxJQUFJO2NBQ0Y7Y0FDQU0sT0FBTyxHQUFHUCxJQUFJLENBQUNDLEtBQUwsQ0FBV3hDLEVBQUUsQ0FBQ3lDLFlBQUgsQ0FBZ0JFLFdBQWhCLEVBQTZCRCxjQUE3QixFQUFYLENBQVY7WUFDRCxDQUhELENBR0UsT0FBT0ssQ0FBUCxFQUFVO2NBQ1Y7Y0FDQTtZQUNELENBaEN5RCxDQWtDMUQ7OztZQUNBLE1BQU1DLElBQVMsR0FBRzlDLFlBQVksQ0FBQzRDLE9BQUQsRUFBVVIsT0FBVixDQUE5QixDQW5DMEQsQ0FxQzFEOztZQUNBLElBQ0VXLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZRixJQUFJLENBQUNHLEtBQWpCLEVBQXdCQyxNQUF4QixLQUFtQyxDQUFuQyxJQUNBSCxNQUFNLENBQUNDLElBQVAsQ0FBWUYsSUFBSSxDQUFDSyxPQUFqQixFQUEwQkQsTUFBMUIsS0FBcUMsQ0FEckMsSUFFQUgsTUFBTSxDQUFDQyxJQUFQLENBQVlGLElBQUksQ0FBQ00sT0FBakIsRUFBMEJGLE1BQTFCLEtBQXFDLENBSHZDLEVBSUU7Y0FDQTtjQUNBO1lBQ0QsQ0FQRCxNQU9PO2NBQ0wsSUFBSSxDQUFDbkMsT0FBTyxDQUFDaUIsTUFBYixFQUFxQjtnQkFDbkJiLE9BQU8sQ0FBQ2MsR0FBUixDQUFZLGlCQUFaO2NBQ0Q7O2NBQ0RvQiw2QkFBNkIsQ0FBQ1AsSUFBRCxFQUFPWixtQkFBUCxDQUE3QjtZQUNEOztZQUNEO1VBQ0Q7UUFDRjtJQTVESDs7SUErREEsSUFBSSxDQUFDbkIsT0FBTyxDQUFDaUIsTUFBYixFQUFxQjtNQUNuQmIsT0FBTyxDQUFDYyxHQUFSLENBQVksc0JBQVo7SUFDRDs7SUFFRHFCLGlCQUFpQjtFQUNsQjtBQUNGO0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsU0FBU0EsaUJBQVQsR0FBNkI7RUFDM0I7RUFDQSxJQUFJdkMsT0FBTyxDQUFDd0MsSUFBUixLQUFpQixRQUFyQixFQUErQjtJQUM3QixJQUFJLENBQUN4QyxPQUFPLENBQUNpQixNQUFiLEVBQXFCO01BQ25CYixPQUFPLENBQUNjLEdBQVIsQ0FBWSx5QkFBWjtJQUNEOztJQUVELElBQUk3QixnQkFBZ0IsQ0FBQzhDLE1BQWpCLEdBQTBCLENBQTlCLEVBQWlDO01BQy9CLElBQUksQ0FBQ25DLE9BQU8sQ0FBQ2lCLE1BQWIsRUFBcUI7UUFDbkJiLE9BQU8sQ0FBQ2MsR0FBUixDQUFZLG9DQUFaO01BQ0Q7O01BQ0RuQyxFQUFFLENBQUMwRCxhQUFILENBQ0V6QyxPQUFPLENBQUNTLE1BQVIsR0FBaUIsNEJBRG5CLEVBRUVhLElBQUksQ0FBQ29CLFNBQUwsQ0FBZXJELGdCQUFmLENBRkYsRUFHRTtRQUFFc0QsUUFBUSxFQUFFLE1BQVo7UUFBb0JDLElBQUksRUFBRTtNQUExQixDQUhGO0lBS0QsQ0FURCxNQVNPO01BQ0wsSUFBSSxDQUFDNUMsT0FBTyxDQUFDaUIsTUFBYixFQUFxQjtRQUNuQmIsT0FBTyxDQUFDYyxHQUFSLENBQVksNENBQVo7TUFDRDtJQUNGOztJQUVELElBQUk1QixhQUFhLENBQUM2QyxNQUFkLEdBQXVCLENBQTNCLEVBQThCO01BQzVCLElBQUksQ0FBQ25DLE9BQU8sQ0FBQ2lCLE1BQWIsRUFBcUI7UUFDbkJiLE9BQU8sQ0FBQ2MsR0FBUixDQUFZLGdDQUFaO01BQ0Q7O01BQ0RuQyxFQUFFLENBQUMwRCxhQUFILENBQ0V6QyxPQUFPLENBQUNTLE1BQVIsR0FBaUIseUJBRG5CLEVBRUVhLElBQUksQ0FBQ29CLFNBQUwsQ0FBZXBELGFBQWYsQ0FGRixFQUdFO1FBQUVxRCxRQUFRLEVBQUUsTUFBWjtRQUFvQkMsSUFBSSxFQUFFO01BQTFCLENBSEY7SUFLRCxDQVRELE1BU087TUFDTCxJQUFJLENBQUM1QyxPQUFPLENBQUNpQixNQUFiLEVBQXFCO1FBQ25CYixPQUFPLENBQUNjLEdBQVIsQ0FBWSw2Q0FBWjtNQUNEO0lBQ0Y7RUFDRixDQWxDRCxNQWtDTyxJQUFJbEIsT0FBTyxDQUFDd0MsSUFBUixLQUFpQixVQUFyQixFQUFpQztJQUN0QztJQUNBLElBQUksQ0FBQ3hDLE9BQU8sQ0FBQ2lCLE1BQWIsRUFBcUI7TUFDbkJiLE9BQU8sQ0FBQ2MsR0FBUixDQUFZLDRCQUFaO0lBQ0Q7SUFFRDtBQUNKO0FBQ0E7OztJQUVJN0IsZ0JBQWdCLENBQUN3RCxPQUFqQixDQUEwQkMsZUFBRCxJQUEwQjtNQUNqREMsNkJBQTZCLENBQUNELGVBQUQsQ0FBN0I7SUFDRCxDQUZEO0lBSUF4RCxhQUFhLENBQUN1RCxPQUFkLENBQXVCRyxZQUFELElBQXVCO01BQzNDQywwQkFBMEIsQ0FBQ0QsWUFBRCxDQUExQjtJQUNELENBRkQ7RUFHRCxDQWpCTSxNQWlCQTtJQUNMNUMsT0FBTyxDQUFDQyxLQUFSLENBQWMsa0NBQWQ7SUFDQUMsT0FBTyxDQUFDQyxJQUFSO0VBQ0Q7QUFDRixDLENBRUQ7OztBQUNBLFNBQVNxQiwwQkFBVCxDQUFvQ3NCLElBQXBDLEVBQStDbEUsSUFBL0MsRUFBZ0U7RUFDOUQsTUFBTW1FLFNBQWMsR0FBRztJQUNyQm5FLElBQUksRUFBRUEsSUFEZTtJQUVyQm9FLElBQUksRUFBRUY7RUFGZSxDQUF2QjtFQUlBNUQsYUFBYSxDQUFDK0QsSUFBZCxDQUFtQkYsU0FBbkI7QUFDRCxDLENBQ0Q7OztBQUNBLFNBQVNiLDZCQUFULENBQXVDZ0IsVUFBdkMsRUFBd0R0RSxJQUF4RCxFQUF5RTtFQUN2RSxNQUFNbUUsU0FBYyxHQUFHO0lBQ3JCbkUsSUFBSSxFQUFFQSxJQURlO0lBRXJCb0UsSUFBSSxFQUFFRTtFQUZlLENBQXZCO0VBSUFqRSxnQkFBZ0IsQ0FBQ2dFLElBQWpCLENBQXNCRixTQUF0QjtBQUNELEMsQ0FFRDs7O0FBQ0EsU0FBU0YsMEJBQVQsQ0FBb0NELFlBQXBDLEVBR0c7RUFDREEsWUFBWSxDQUFDaEUsSUFBYixDQUFrQnVFLEtBQWxCO0VBRUEsTUFBTUMsUUFBb0IsR0FBRyxDQUFDLEdBQUdSLFlBQVksQ0FBQ2hFLElBQWpCLENBQTdCO0VBQ0F3RSxRQUFRLENBQUNDLEdBQVQ7RUFDQXJELE9BQU8sQ0FBQ2MsR0FBUixDQUFZbEIsT0FBTyxDQUFDUyxNQUFSLEdBQWlCK0MsUUFBUSxDQUFDekMsSUFBVCxDQUFjLEdBQWQsQ0FBN0I7RUFDQWhDLEVBQUUsQ0FBQzJFLFNBQUgsQ0FBYTFELE9BQU8sQ0FBQ1MsTUFBUixHQUFpQitDLFFBQVEsQ0FBQ3pDLElBQVQsQ0FBYyxHQUFkLENBQTlCLEVBQWtEO0lBQ2hENEMsU0FBUyxFQUFFO0VBRHFDLENBQWxEO0VBR0E1RSxFQUFFLENBQUMwRCxhQUFILENBQ0V6QyxPQUFPLENBQUNTLE1BQVIsR0FBaUJ1QyxZQUFZLENBQUNoRSxJQUFiLENBQWtCK0IsSUFBbEIsQ0FBdUIsR0FBdkIsRUFBNEI2QyxPQUE1QixDQUFvQyxVQUFwQyxFQUFnRCxRQUFoRCxDQURuQixFQUVFdEMsSUFBSSxDQUFDb0IsU0FBTCxDQUFlTSxZQUFZLENBQUNJLElBQTVCLENBRkYsRUFHRTtJQUFFVCxRQUFRLEVBQUUsTUFBWjtJQUFvQkMsSUFBSSxFQUFFO0VBQTFCLENBSEY7QUFLRCxDLENBRUQ7OztBQUNBLFNBQVNHLDZCQUFULENBQXVDRCxlQUF2QyxFQUdHO0VBQ0RBLGVBQWUsQ0FBQzlELElBQWhCLENBQXFCdUUsS0FBckI7RUFFQSxNQUFNQyxRQUFvQixHQUFHLENBQUMsR0FBR1YsZUFBZSxDQUFDOUQsSUFBcEIsQ0FBN0I7RUFDQXdFLFFBQVEsQ0FBQ0MsR0FBVDtFQUNBMUUsRUFBRSxDQUFDMkUsU0FBSCxDQUFhMUQsT0FBTyxDQUFDUyxNQUFSLEdBQWlCK0MsUUFBUSxDQUFDekMsSUFBVCxDQUFjLEdBQWQsQ0FBOUIsRUFBa0Q7SUFDaEQ0QyxTQUFTLEVBQUU7RUFEcUMsQ0FBbEQ7RUFJQTVFLEVBQUUsQ0FBQzBELGFBQUgsQ0FDRXpDLE9BQU8sQ0FBQ1MsTUFBUixHQUNFcUMsZUFBZSxDQUFDOUQsSUFBaEIsQ0FBcUIrQixJQUFyQixDQUEwQixHQUExQixFQUErQjZDLE9BQS9CLENBQXVDLFVBQXZDLEVBQW1ELFNBQW5ELENBRkosRUFHRXRDLElBQUksQ0FBQ29CLFNBQUwsQ0FBZUksZUFBZSxDQUFDTSxJQUEvQixDQUhGLEVBSUU7SUFBRVQsUUFBUSxFQUFFLE1BQVo7SUFBb0JDLElBQUksRUFBRTtFQUExQixDQUpGO0FBTUQ7O0FBRUQzQyxlQUFlLENBQUNELE9BQU8sQ0FBQ0UsT0FBVCxDQUFmIn0=
|
|
216
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJmcyIsInBhdGgiLCJkZXRhaWxlZERpZmYiLCJkYXRhc2V0cyIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJ3YWxrRGlyIiwiZGlmZmVkQW1lbmRtZW50cyIsIm5ld0FtZW5kbWVudHMiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwidHlwZSIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJTdHJpbmciLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsImRpZmZBbWVuZGVtZW50cyIsImRhdGFEaXIiLCJwcmV2aW91cyIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3MiLCJleGl0IiwiZXhpc3RzU3luYyIsIm91dHB1dCIsImRhdGFzZXQiLCJhbWVuZGVtZW50cyIsInN0cnVjdHVyZSIsIlNlZ21lbnRlZEZpbGVzIiwib3JpZ2luYWxKc29uRGlyIiwiam9pbiIsImZpbGVuYW1lIiwic2lsZW50IiwibG9nIiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsIm5ld0ZpbGVQYXRoIiwibmV3RmlsZSIsIkpTT04iLCJwYXJzZSIsInJlYWRGaWxlU3luYyIsInRvTG9jYWxlU3RyaW5nIiwib2xkRmlsZVBhdGgiLCJvbGRGaWxlRXhpc3RzIiwiYWRkVG9RdWV1ZUZvck5ld0FtZW5kbWVudHMiLCJvbGRGaWxlIiwiZSIsImRpZmYiLCJPYmplY3QiLCJrZXlzIiwiYWRkZWQiLCJsZW5ndGgiLCJ1cGRhdGVkIiwiZGVsZXRlZCIsImFkZFRvUXVldWVGb3JEaWZmZWRBbWVuZG1lbnRzIiwiZ2VuZXJhdGVEaWZmRmlsZXMiLCJtb2RlIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsImVuY29kaW5nIiwiZmxhZyIsImZvckVhY2giLCJkaWZmZWRBbWVuZG1lbnQiLCJnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudCIsIm5ld0FtZW5kbWVudCIsImdlbmVyYXRlU2luZ2xlTmV3QW1lbmRtZW50IiwiZmlsZSIsImFtZW5kbWVudCIsImRhdGEiLCJwdXNoIiwiZGlmZmVkRGF0YSIsInNoaWZ0Iiwic2hvcnREaXIiLCJwb3AiLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJyZXBsYWNlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZGlmZl9hbWVuZGVtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7IGRldGFpbGVkRGlmZiB9IGZyb20gXCJkZWVwLW9iamVjdC1kaWZmXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmNvbnN0IGRpZmZlZEFtZW5kbWVudHM6IEFycmF5PGFueT4gPSBbXVxuY29uc3QgbmV3QW1lbmRtZW50czogQXJyYXk8YW55PiA9IFtdXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJtXCIsXG4gICAgaGVscDogXCJEaWZmIG1vZGVzLlwiLFxuICAgIG5hbWU6IFwibW9kZVwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCJtZXJnZWRcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJwXCIsXG4gICAgaGVscDogXCJEaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcHJldmlvdXMgZHVtcCBvZiBhbWVuZG1lbnRzXCIsXG4gICAgbmFtZTogXCJwcmV2aW91c1wiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcIm9cIixcbiAgICBoZWxwOiBcIk91dHB1dCBkaXJlY3RvcnkgZm9yIGRpZmYgZmlsZXNcIixcbiAgICBuYW1lOiBcIm91dHB1dFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIuL2RpZmZfb3V0cHV0cy9cIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuZnVuY3Rpb24gZGlmZkFtZW5kZW1lbnRzKGRhdGFEaXI6IHN0cmluZykge1xuICBpZiAoIW9wdGlvbnMucHJldmlvdXMpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJObyBwcmV2aW91cyBkYXRhIGZvbGRlciBzcGVjaWZpZWQuIFlvdSBtdXN0IHByb3ZpZGUgb25lIHdpdGggdGhlIC1wIG9yIC0tcHJldmlvdXMgb3B0aW9uLiBFeGl0aW5nLi4uXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBpZiAoIWZzLmV4aXN0c1N5bmMob3B0aW9ucy5vdXRwdXQpKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiVGhlIG91dHB1dCBkaXIgZG9lcyBub3QgZXhpc3RzLiBZb3UgbXVzdCBwcm92aWRlIGFuIGV4aXN0aW5nIGRpcmVjdG9yeS4gRGVmYXVsdCBkaXJlY3RvcnkgaXMgLi9kaWZmX291dHB1dHMvXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBEaWZmaW5nICR7b3JpZ2luYWxKc29uRGlyfSBmb2xkZXIuLi5gKVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIob3JpZ2luYWxKc29uRGlyKSkge1xuICAgICAgICAgIGNvbnN0IG5ld0ZpbGVQYXRoID1cbiAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpciArIFwiL1wiICsgYW1lbmRlbWVudFNwbGl0UGF0aC5qb2luKFwiL1wiKVxuICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgZnMucmVhZEZpbGVTeW5jKG5ld0ZpbGVQYXRoKS50b0xvY2FsZVN0cmluZygpLFxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IG9sZEZpbGVQYXRoID1cbiAgICAgICAgICAgIG9wdGlvbnMucHJldmlvdXMgK1xuICAgICAgICAgICAgZGF0YXNldC5maWxlbmFtZSArXG4gICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoLmpvaW4oXCIvXCIpXG4gICAgICAgICAgY29uc3Qgb2xkRmlsZUV4aXN0cyA9IGZzLmV4aXN0c1N5bmMob2xkRmlsZVBhdGgpXG4gICAgICAgICAgaWYgKCFvbGRGaWxlRXhpc3RzKSB7XG4gICAgICAgICAgICAvLyBJZiBmaWxlIGZvdW5kIGRvZXMgbm90IGV4aXN0IGluIHRoZSBwcmV2aW91cyBkdW1wXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIFwiRmlsZSBkaWQgbm90IGV4aXN0cyBwcmV2aW91c2x5LiBHdWVzc2luZyBpdCdzIGEgbmV3IGFtZW5kbWVudC4gQWRkaW5nIHRvIHRoZSBkaWZmIGxpc3QgZm9yIG5ldyBvYmplY3RzXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKG5ld0ZpbGUsIGFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEZpbGUgYWxyZWFkeSBleGlzdGVkIGluIHByZXZpb3VzIGR1bXBcbiAgICAgICAgICBsZXQgb2xkRmlsZTogSlNPTiA9IEpTT04ucGFyc2UoXCJ7fVwiKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBHYXRoZXIgZGF0YSBvZiB0aGUgZmlsZSBhbmQgcmV0cmFuc2NyaXB0IGFzIGEgSnNvbiBvYmplY3RcbiAgICAgICAgICAgIG9sZEZpbGUgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhvbGRGaWxlUGF0aCkudG9Mb2NhbGVTdHJpbmcoKSlcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRoZSBwcm9jZXNzIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbiBpbiBjYXNlIG9mIGNvcnJ1cHQgSlNPTiBkYXRhXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEdlbmVyYXRlIHRoZSBkaWZmIGJlZXR3ZWVuIHRoZSB0d28gSlNPTiBvYmplY3RzIChvbGQgJiBuZXcgZHVtcClcbiAgICAgICAgICBjb25zdCBkaWZmOiBhbnkgPSBkZXRhaWxlZERpZmYob2xkRmlsZSwgbmV3RmlsZSlcblxuICAgICAgICAgIC8vIElmIG5vIGNoYW5nZXMgYmVldHdlZW4gdGhlIHR3byBkdW1wc1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuYWRkZWQpLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGlmZi51cGRhdGVkKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuZGVsZXRlZCkubGVuZ3RoID09PSAwXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRvIG5leHQgaXRlcmF0aW9uIGFzIHRoZXJlIGlzIG5vIG5lZWQgdG8gZ2VuZXJhdGUgYSBmaWxlXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2hhbmdlcyBmb3VuZCAhXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyhkaWZmLCBhbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG91dHB1dChzKVwiKVxuICAgIH1cblxuICAgIGdlbmVyYXRlRGlmZkZpbGVzKClcbiAgfVxufVxuXG4vKipcbiAqIEdlbmVyYWwgcHJvY2VzcyBmb3Igb3V0cHV0IG9mIGRpZmZzLlxuICogVGhlIHNjcmlwdCBoYW5kbGVzIHR3byBkaWZmZXJlbnQgbW9kZXMgOlxuICogLSBtZXJnZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBuZXcgYW1lbmRlbWVudHMgYW5kIGEgc2luZ2xlIGZpbGVcbiAqICAgICAgICAgICAgZm9yIHVwZGF0ZWQgYW1lbmRlbWVudHNcbiAqIC0gc3BsaXR0ZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBlYWNoIGFtZW5kbWVudHMsIGVpdGhlciBpdHMgbmV3IG9yIHVwZGF0ZWQuXG4gKlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZURpZmZGaWxlcygpIHtcbiAgLy8gSGFuZGxlcyBtZXJnZWQgbW9kZVxuICBpZiAob3B0aW9ucy5tb2RlID09PSBcIm1lcmdlZFwiKSB7XG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG1lcmdlZCBmaWxlc1wiKVxuICAgIH1cblxuICAgIGlmIChkaWZmZWRBbWVuZG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIGRpZmZlZCBhbWVuZG1lbnRzIGZpbGVzXCIpXG4gICAgICB9XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICBvcHRpb25zLm91dHB1dCArIFwiYW1lbmRlbWVudHNfWFZfZGlmZmVkLmpzb25cIixcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGlmZmVkQW1lbmRtZW50cyksXG4gICAgICAgIHsgZW5jb2Rpbmc6IFwidXRmOFwiLCBmbGFnOiBcIndcIiB9LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTm8gZGlmZiBpbiB0aGUgYWxyZWFkeSBleGlzdGluZyBhbWVuZG1lbnRzXCIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5ld0FtZW5kbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgbmV3IGFtZW5kbWVudHMgZmlsZVwiKVxuICAgICAgfVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgb3B0aW9ucy5vdXRwdXQgKyBcImFtZW5kZW1lbnRzX1hWX25ldy5qc29uXCIsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudHMpLFxuICAgICAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk5vIG5ldyBhbWVuZGVtZW50LiBTa2lwcGluZyBmaWxlIGdlbmVyYXRpb25cIilcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5tb2RlID09PSBcInNwbGl0dGVkXCIpIHtcbiAgICAvLyBIYW5kbGVzIHNwbGl0dGVkIG1vZGVcbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgc2VwYXJhdGVkIGZpbGVzXCIpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2VzcyB0aGUgY29weSBhY3Rpb24gb2YgdGhlIG5ldyBhbmQgZGlmZmVkIGFtZW5kbWVudHNcbiAgICAgKi9cblxuICAgIGRpZmZlZEFtZW5kbWVudHMuZm9yRWFjaCgoZGlmZmVkQW1lbmRtZW50OiBhbnkpID0+IHtcbiAgICAgIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudClcbiAgICB9KVxuXG4gICAgbmV3QW1lbmRtZW50cy5mb3JFYWNoKChuZXdBbWVuZG1lbnQ6IGFueSkgPT4ge1xuICAgICAgZ2VuZXJhdGVTaW5nbGVOZXdBbWVuZG1lbnQobmV3QW1lbmRtZW50KVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcIlVua25vd24gb3V0cHV0IG1vZGUuIEFib3J0aW5nLi4uXCIpXG4gICAgcHJvY2Vzcy5leGl0KClcbiAgfVxufVxuXG4vLyBQdXNoZXMgYW4gYW1lbmRtZW50IHRvIHRoZSBxdWV1ZSB0aGF0IHdpbGwgYmUgcHJvY2Vzc2VkIHRvIGNvcHkgbmV3IGFtZW5kbWVudHMgZmlsZXNcbmZ1bmN0aW9uIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKGZpbGU6IGFueSwgcGF0aDogYW55KTogdm9pZCB7XG4gIGNvbnN0IGFtZW5kbWVudDogYW55ID0ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgZGF0YTogZmlsZSxcbiAgfVxuICBuZXdBbWVuZG1lbnRzLnB1c2goYW1lbmRtZW50KVxufVxuLy8gUHVzaGVzIGFuIGFtZW5kbWVudCB0byB0aGUgcXVldWUgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCB0byBjb3B5IHVwZGF0ZWQgYW1lbmRtZW50cyBmaWxlc1xuZnVuY3Rpb24gYWRkVG9RdWV1ZUZvckRpZmZlZEFtZW5kbWVudHMoZGlmZmVkRGF0YTogYW55LCBwYXRoOiBhbnkpOiB2b2lkIHtcbiAgY29uc3QgYW1lbmRtZW50OiBhbnkgPSB7XG4gICAgcGF0aDogcGF0aCxcbiAgICBkYXRhOiBkaWZmZWREYXRhLFxuICB9XG4gIGRpZmZlZEFtZW5kbWVudHMucHVzaChhbWVuZG1lbnQpXG59XG5cbi8vIGdlbmVyYXRlcyBhIGZpbGUgd2l0aCBhIGNvcHkgb2YgdGhlIG5ldyBhbWVuZGVtZW50XG5mdW5jdGlvbiBnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudChuZXdBbWVuZG1lbnQ6IHtcbiAgcGF0aDogQXJyYXk8c3RyaW5nPlxuICBkYXRhOiBhbnlcbn0pIHtcbiAgbmV3QW1lbmRtZW50LnBhdGguc2hpZnQoKVxuXG4gIGNvbnN0IHNob3J0RGlyOiBBcnJheTxhbnk+ID0gWy4uLm5ld0FtZW5kbWVudC5wYXRoXVxuICBzaG9ydERpci5wb3AoKVxuICBjb25zb2xlLmxvZyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpKVxuICBmcy5ta2RpclN5bmMob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSwge1xuICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgfSlcbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBvcHRpb25zLm91dHB1dCArIG5ld0FtZW5kbWVudC5wYXRoLmpvaW4oXCIvXCIpLnJlcGxhY2UoLyhcXC5qc29uKS8sIFwiLm5ldyQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG4vLyBnZW5lcmF0ZXMgYSBmaWxlIHdpdGggYSBjb3B5IG9mIHRoZSBtb2RpZmllZCBkYXRhIG9mIHRoZSBwcmV2aW91c2x5IGV4aXN0aW5nIGFtZW5kbWVudDtcbmZ1bmN0aW9uIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudDoge1xuICBwYXRoOiBBcnJheTxzdHJpbmc+XG4gIGRhdGE6IGFueVxufSkge1xuICBkaWZmZWRBbWVuZG1lbnQucGF0aC5zaGlmdCgpXG5cbiAgY29uc3Qgc2hvcnREaXI6IEFycmF5PGFueT4gPSBbLi4uZGlmZmVkQW1lbmRtZW50LnBhdGhdXG4gIHNob3J0RGlyLnBvcCgpXG4gIGZzLm1rZGlyU3luYyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpLCB7XG4gICAgcmVjdXJzaXZlOiB0cnVlLFxuICB9KVxuXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgb3B0aW9ucy5vdXRwdXQgK1xuICAgICAgZGlmZmVkQW1lbmRtZW50LnBhdGguam9pbihcIi9cIikucmVwbGFjZSgvKFxcLmpzb24pLywgXCIuZGlmZiQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KGRpZmZlZEFtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG5kaWZmQW1lbmRlbWVudHMob3B0aW9ucy5kYXRhRGlyKVxuIl0sIm1hcHBpbmdz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
|