@tricoteuses/assemblee 1.7.0 → 1.7.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/README.md +9 -27
- package/lib/bugs/acteur-00010/plugin.test.js +4 -4
- package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
- package/lib/bugs/acteur-00010.js +15 -16
- package/lib/bugs/acteur-00010.mjs +1 -1
- package/lib/bugs/agenda-00002/plugin.test.js +4 -4
- package/lib/bugs/agenda-00002/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00002.js +27 -28
- package/lib/bugs/agenda-00002.mjs +3 -3
- package/lib/bugs/agenda-00008/plugin.test.js +4 -4
- package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00008.js +15 -16
- package/lib/bugs/agenda-00008.mjs +1 -1
- package/lib/bugs/agenda-00011/plugin.test.js +5 -5
- package/lib/bugs/agenda-00011/plugin.test.mjs +1 -1
- package/lib/bugs/agenda-00011.js +21 -22
- package/lib/bugs/agenda-00011.mjs +3 -3
- package/lib/bugs.js +17 -19
- package/lib/bugs.mjs +3 -3
- package/lib/cleaners/actes_legislatifs.js +5 -5
- package/lib/cleaners/acteurs.js +5 -5
- package/lib/cleaners/acteurs.mjs +1 -1
- package/lib/cleaners/amendements.js +5 -5
- package/lib/cleaners/documents.js +5 -5
- package/lib/cleaners/dossiers_legislatifs.js +5 -5
- package/lib/cleaners/organes.js +2 -2
- package/lib/cleaners/reunions.js +5 -5
- package/lib/cleaners/scrutins.js +8 -8
- package/lib/cleaners/xml.js +8 -8
- package/lib/cleaners/xml.mjs +1 -1
- package/lib/datasets.d.ts +2 -2
- package/lib/datasets.js +53 -132
- package/lib/datasets.mjs +40 -118
- package/lib/dates.js +1 -2
- package/lib/dossiers_legislatifs.js +8 -8
- package/lib/file_systems.js +18 -16
- package/lib/file_systems.mjs +6 -5
- package/lib/git.d.ts +1 -0
- package/lib/git.js +21 -5
- package/lib/git.mjs +16 -1
- package/lib/inserters.js +3 -3
- package/lib/loaders.d.ts +14 -40
- package/lib/loaders.js +580 -1086
- package/lib/loaders.mjs +110 -353
- package/lib/parsers/documents.js +10 -10
- package/lib/parsers/documents.mjs +1 -1
- package/lib/parsers/recherche_amendements.js +17 -15
- package/lib/parsers/recherche_amendements.mjs +1 -1
- package/lib/raw_types/acteurs_et_organes.js +9 -9
- package/lib/raw_types/acteurs_et_organes.mjs +1 -1
- package/lib/raw_types/agendas.js +9 -9
- package/lib/raw_types/agendas.mjs +1 -1
- package/lib/raw_types/amendements.js +9 -9
- package/lib/raw_types/amendements.mjs +1 -1
- package/lib/raw_types/debats.d.ts +26 -78
- package/lib/raw_types/debats.js +49 -242
- package/lib/raw_types/debats.mjs +41 -234
- package/lib/raw_types/dossiers_legislatifs.js +9 -9
- package/lib/raw_types/dossiers_legislatifs.mjs +1 -1
- package/lib/raw_types/questions.js +9 -9
- package/lib/raw_types/questions.mjs +1 -1
- package/lib/raw_types/scrutins.js +9 -9
- package/lib/raw_types/scrutins.mjs +1 -1
- package/lib/scripts/bugs_helper.js +17 -18
- package/lib/scripts/bugs_helper.mjs +3 -3
- package/lib/scripts/clean_reorganized_data.js +183 -561
- package/lib/scripts/clean_reorganized_data.mjs +111 -410
- package/lib/scripts/diff_amendements.js +11 -24
- package/lib/scripts/diff_amendements.mjs +3 -17
- package/lib/scripts/document_dossiers_legislatifs.js +24 -27
- package/lib/scripts/document_dossiers_legislatifs.mjs +3 -3
- package/lib/scripts/get_today_reunions.js +5 -8
- package/lib/scripts/get_today_reunions.mjs +3 -7
- package/lib/scripts/merge_scrutins.js +11 -24
- package/lib/scripts/merge_scrutins.mjs +3 -17
- package/lib/scripts/parse_textes_lois.js +8 -38
- package/lib/scripts/parse_textes_lois.mjs +3 -33
- package/lib/scripts/raw_types_from_amendements.js +14 -27
- package/lib/scripts/raw_types_from_amendements.mjs +3 -17
- package/lib/scripts/reorganize_data.js +204 -456
- package/lib/scripts/reorganize_data.mjs +68 -260
- package/lib/scripts/retrieve_deputes_photos.d.ts +3 -1
- package/lib/scripts/retrieve_deputes_photos.js +146 -172
- package/lib/scripts/retrieve_deputes_photos.mjs +74 -98
- package/lib/scripts/retrieve_documents.js +207 -156
- package/lib/scripts/retrieve_documents.mjs +116 -128
- package/lib/scripts/retrieve_open_data.js +272 -249
- package/lib/scripts/retrieve_open_data.mjs +109 -123
- package/lib/scripts/retrieve_pending_amendments.js +16 -67
- package/lib/scripts/retrieve_pending_amendments.mjs +4 -55
- package/lib/scripts/retrieve_senateurs_photos.js +20 -77
- package/lib/scripts/retrieve_senateurs_photos.mjs +5 -61
- package/lib/scripts/retrieve_textes_lois.js +18 -46
- package/lib/scripts/retrieve_textes_lois.mjs +3 -33
- package/lib/scripts/shared/cli_helpers.d.ts +66 -0
- package/lib/scripts/shared/cli_helpers.js +90 -0
- package/lib/scripts/shared/cli_helpers.mjs +72 -0
- package/lib/scripts/test_iter_load.d.ts +1 -0
- package/lib/scripts/test_iter_load.js +154 -0
- package/lib/scripts/test_iter_load.mjs +71 -0
- package/lib/scripts/test_load.js +4 -15
- package/lib/scripts/test_load.mjs +3 -14
- package/lib/scripts/test_load_big_files.js +4 -15
- package/lib/scripts/test_load_big_files.mjs +3 -14
- package/lib/scripts/validate_json.js +15 -16
- package/lib/scripts/validate_json.mjs +3 -3
- package/lib/types/acteurs_et_organes.js +9 -9
- package/lib/types/acteurs_et_organes.mjs +1 -1
- package/lib/types/agendas.js +9 -9
- package/lib/types/agendas.mjs +1 -1
- package/lib/types/amendements.js +9 -9
- package/lib/types/amendements.mjs +1 -1
- package/lib/types/debats.d.ts +27 -79
- package/lib/types/debats.js +48 -241
- package/lib/types/debats.mjs +40 -233
- package/lib/types/dossiers_legislatifs.js +9 -9
- package/lib/types/dossiers_legislatifs.mjs +1 -1
- package/lib/types/legislatures.d.ts +4 -4
- package/lib/types/legislatures.js +5 -5
- package/lib/types/legislatures.mjs +5 -5
- package/lib/types/questions.js +9 -9
- package/lib/types/questions.mjs +1 -1
- package/lib/types/scrutins.js +9 -9
- package/lib/types/scrutins.mjs +1 -1
- package/lib/urls.js +2 -2
- package/lib/urls.mjs +1 -1
- package/package.json +9 -7
|
@@ -42,31 +42,31 @@ var _commandLineUsage = _interopRequireDefault(require("command-line-usage"));
|
|
|
42
42
|
var _assert = _interopRequireDefault(require("assert"));
|
|
43
43
|
var _file_systems = require("../file_systems");
|
|
44
44
|
var _LectureMapping;
|
|
45
|
-
function _interopRequireDefault(
|
|
46
|
-
function _slicedToArray(
|
|
45
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
46
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
47
47
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
48
48
|
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
49
|
-
function _arrayWithHoles(
|
|
50
|
-
function _toConsumableArray(
|
|
49
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
50
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
51
51
|
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
|
-
function _iterableToArray(
|
|
53
|
-
function _arrayWithoutHoles(
|
|
52
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
53
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
54
54
|
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
55
|
-
function _possibleConstructorReturn(
|
|
56
|
-
function _assertThisInitialized(
|
|
55
|
+
function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return _assertThisInitialized(t); }
|
|
56
|
+
function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }
|
|
57
57
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
58
|
-
function _getPrototypeOf(
|
|
59
|
-
function _inherits(
|
|
60
|
-
function _setPrototypeOf(
|
|
61
|
-
function _defineProperties(
|
|
62
|
-
function _createClass(
|
|
63
|
-
function _classCallCheck(
|
|
64
|
-
function _defineProperty(
|
|
65
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i :
|
|
58
|
+
function _getPrototypeOf(t) { return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, _getPrototypeOf(t); }
|
|
59
|
+
function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e); }
|
|
60
|
+
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
|
61
|
+
function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
|
|
62
|
+
function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
63
|
+
function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
64
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
65
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
66
66
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
67
|
-
function _createForOfIteratorHelper(
|
|
68
|
-
function _unsupportedIterableToArray(
|
|
69
|
-
function _arrayLikeToArray(
|
|
67
|
+
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; } } }; }
|
|
68
|
+
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; } }
|
|
69
|
+
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; }
|
|
70
70
|
function parseArgs(argv) {
|
|
71
71
|
var optionsDefinitions = [{
|
|
72
72
|
description: "pathname to a JSON file or a glob pattern to JSON files",
|
|
@@ -132,11 +132,11 @@ var Code2Pattern = /*#__PURE__*/_createClass(function Code2Pattern(pattern, chil
|
|
|
132
132
|
Object.assign(this, children);
|
|
133
133
|
});
|
|
134
134
|
var Code2PatternComFond = /*#__PURE__*/function (_Code2Pattern2) {
|
|
135
|
-
_inherits(Code2PatternComFond, _Code2Pattern2);
|
|
136
135
|
function Code2PatternComFond() {
|
|
137
136
|
_classCallCheck(this, Code2PatternComFond);
|
|
138
137
|
return _callSuper(this, Code2PatternComFond, ["^/SAISIE/(/NOMIN/)*(/REUNION/)*(/RAPPORT/)*$", {}]);
|
|
139
138
|
}
|
|
139
|
+
_inherits(Code2PatternComFond, _Code2Pattern2);
|
|
140
140
|
return _createClass(Code2PatternComFond);
|
|
141
141
|
}(Code2Pattern);
|
|
142
142
|
var LectureMapping = /*#__PURE__*/function () {
|
|
@@ -145,7 +145,7 @@ var LectureMapping = /*#__PURE__*/function () {
|
|
|
145
145
|
_defineProperty(this, "libelle", {});
|
|
146
146
|
_defineProperty(this, "codes", new Set());
|
|
147
147
|
}
|
|
148
|
-
_createClass(LectureMapping, [{
|
|
148
|
+
return _createClass(LectureMapping, [{
|
|
149
149
|
key: "add",
|
|
150
150
|
value: function add(acte) {
|
|
151
151
|
this.codes.add(acte.codeActe);
|
|
@@ -205,7 +205,6 @@ var LectureMapping = /*#__PURE__*/function () {
|
|
|
205
205
|
return LectureMapping.map(acte.codeActe);
|
|
206
206
|
}
|
|
207
207
|
}]);
|
|
208
|
-
return LectureMapping;
|
|
209
208
|
}();
|
|
210
209
|
_LectureMapping = LectureMapping;
|
|
211
210
|
_defineProperty(LectureMapping, "codes_lecture", ["AN1", "SN1", "ANNLEC", "SNNLEC", "ANLDEF", "AN2", "SN2", "SN3"]);
|
|
@@ -215,7 +214,7 @@ var LectureMapper = /*#__PURE__*/function () {
|
|
|
215
214
|
_classCallCheck(this, LectureMapper);
|
|
216
215
|
_defineProperty(this, "mapping", {});
|
|
217
216
|
}
|
|
218
|
-
_createClass(LectureMapper, [{
|
|
217
|
+
return _createClass(LectureMapper, [{
|
|
219
218
|
key: "has",
|
|
220
219
|
value: function has(codeActe) {
|
|
221
220
|
return codeActe in this.mapping;
|
|
@@ -252,7 +251,6 @@ var LectureMapper = /*#__PURE__*/function () {
|
|
|
252
251
|
return this.mapping[codeActe].getCodes();
|
|
253
252
|
}
|
|
254
253
|
}]);
|
|
255
|
-
return LectureMapper;
|
|
256
254
|
}();
|
|
257
255
|
var ActesDocumentation = /*#__PURE__*/function () {
|
|
258
256
|
function ActesDocumentation(sanityChecks) {
|
|
@@ -349,7 +347,7 @@ var ActesDocumentation = /*#__PURE__*/function () {
|
|
|
349
347
|
this.procedures = {};
|
|
350
348
|
this.code2pattern._match_count_++;
|
|
351
349
|
}
|
|
352
|
-
_createClass(ActesDocumentation, [{
|
|
350
|
+
return _createClass(ActesDocumentation, [{
|
|
353
351
|
key: "walkFiles",
|
|
354
352
|
value: function walkFiles(data, action) {
|
|
355
353
|
var _iterator2 = _createForOfIteratorHelper((0, _file_systems.getFiles)(data)),
|
|
@@ -641,7 +639,6 @@ var ActesDocumentation = /*#__PURE__*/function () {
|
|
|
641
639
|
this.printAnchorsIndex();
|
|
642
640
|
}
|
|
643
641
|
}]);
|
|
644
|
-
return ActesDocumentation;
|
|
645
642
|
}();
|
|
646
643
|
function main(argv) {
|
|
647
644
|
var options = parseArgs(argv);
|
|
@@ -655,4 +652,4 @@ function main(argv) {
|
|
|
655
652
|
|
|
656
653
|
/* istanbul ignore if */
|
|
657
654
|
if (process.argv[1].endsWith("document_dossiers_legislatifs.ts")) process.exit(main(process.argv));
|
|
658
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVVc2FnZSIsIl9hc3NlcnQiLCJfZmlsZV9zeXN0ZW1zIiwiX0xlY3R1cmVNYXBwaW5nIiwib2JqIiwiX19lc01vZHVsZSIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiaSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJUeXBlRXJyb3IiLCJyIiwibCIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsImUiLCJuIiwidSIsImEiLCJmIiwibyIsImNhbGwiLCJuZXh0IiwiT2JqZWN0IiwiZG9uZSIsInB1c2giLCJ2YWx1ZSIsImxlbmd0aCIsIkFycmF5IiwiaXNBcnJheSIsIl90b0NvbnN1bWFibGVBcnJheSIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJpdGVyIiwiZnJvbSIsIl9hcnJheUxpa2VUb0FycmF5IiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvciIsImFwcGx5Iiwic2VsZiIsIl90eXBlb2YiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiUmVmZXJlbmNlRXJyb3IiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsInNldFByb3RvdHlwZU9mIiwiZ2V0UHJvdG90eXBlT2YiLCJiaW5kIiwiX19wcm90b19fIiwiX2luaGVyaXRzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiY3JlYXRlIiwid3JpdGFibGUiLCJjb25maWd1cmFibGUiLCJkZWZpbmVQcm9wZXJ0eSIsIl9zZXRQcm90b3R5cGVPZiIsInAiLCJfZGVmaW5lUHJvcGVydGllcyIsInRhcmdldCIsInByb3BzIiwiZGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJfdG9Qcm9wZXJ0eUtleSIsImtleSIsIl9jcmVhdGVDbGFzcyIsIkNvbnN0cnVjdG9yIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwiX2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJfZGVmaW5lUHJvcGVydHkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJ0b1ByaW1pdGl2ZSIsIk51bWJlciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkYiLCJzIiwiX2UiLCJub3JtYWxDb21wbGV0aW9uIiwiZGlkRXJyIiwiZXJyIiwic3RlcCIsIl9lMiIsIm1pbkxlbiIsInRvU3RyaW5nIiwic2xpY2UiLCJuYW1lIiwidGVzdCIsImxlbiIsImFycjIiLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0T3B0aW9uIiwibXVsdGlwbGUiLCJ0eXBlIiwic2VjdGlvbnMiLCJoZWFkZXIiLCJjb250ZW50Iiwib3B0aW9uTGlzdCIsIm9wdGlvbnMiLCJjb21tYW5kTGluZUFyZ3MiLCJjb25zb2xlIiwiZXJyb3IiLCJoZWxwIiwidXNhZ2UiLCJjb21tYW5kTGluZVVzYWdlIiwid2FybiIsImVxU2V0IiwiYXMiLCJicyIsInNpemUiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImhhcyIsIkNvZGUyUGF0dGVybiIsInBhdHRlcm4iLCJjaGlsZHJlbiIsIl9wYXR0ZXJuXyIsIl9tYXRjaF9jb3VudF8iLCJhc3NpZ24iLCJDb2RlMlBhdHRlcm5Db21Gb25kIiwiX0NvZGUyUGF0dGVybjIiLCJMZWN0dXJlTWFwcGluZyIsIlNldCIsImFkZCIsImFjdGUiLCJjb2RlcyIsImNvZGVBY3RlIiwiZ2V0VHlwZSIsImxpYmVsbGVBY3RlIiwibm9tQ2Fub25pcXVlIiwibGliZWxsZSIsInJlbWFwIiwidHlwZXMiLCJtZXJnZUNvZGVzIiwiX2kiLCJfQXJyYXkkZnJvbSIsImMiLCJwcmludEFuY2hvcnMiLCJfaTIiLCJfQXJyYXkkZnJvbTIiLCJjb2RlIiwibG9nIiwiY29uY2F0IiwiZ2V0Q29kZXMiLCJqb2luIiwiaXNMZWN0dXJlIiwibWF0Y2giLCJjb2Rlc19sZWN0dXJlX3JlZ2V4cCIsIkVycm9yIiwibWFwIiwicmVwbGFjZSIsImdldENvZGVBY3RlIiwiUmVnRXhwIiwiY29kZXNfbGVjdHVyZSIsIkxlY3R1cmVNYXBwZXIiLCJtYXBwaW5nIiwiY29sbGVjdCIsInVuZGVmaW5lZCIsImxlY3R1cmVzIiwiQWN0ZXNEb2N1bWVudGF0aW9uIiwic2FuaXR5Q2hlY2tzIiwidmVyYm9zZSIsImFyZ3VtZW50cyIsImxlY3R1cmUiLCJDTVAiLCJDQyIsIlBST00iLCJBTjIxIiwiQU5MVU5JIiwiUsOpc29sdXRpb24iLCJBTjIwIiwiRVUiLCJJbW11bml0w6kiLCJwcm9jZWR1cmVzIiwiY29kZTJwYXR0ZXJuIiwid2Fsa0ZpbGVzIiwiZGF0YSIsImFjdGlvbiIsIl9pdGVyYXRvcjIiLCJnZXRGaWxlcyIsIl9zdGVwMiIsImZpbGUiLCJkb3NzaWVyIiwibG9hZCIsInByb2NlZHVyZSIsInJlbWFwUHJvY2VkdXJlIiwicHJvY2VkdXJlUGFybGVtZW50YWlyZSIsImFjdGVzTGVnaXNsYXRpZnMiLCJjb2xsZWN0RmlsZXMiLCJfdGhpcyIsIl9hY3RlcyIsIl9jMnAiLCJfcGFyZW50IiwicHJvY2Vzc0ZpbGVzIiwiX3RoaXMyIiwiYWN0ZXMiLCJjMnAiLCJwYXJlbnQiLCJtZXJnZSIsInZhbGlkYXRlIiwicmVtYXBBY3RlcyIsInJlc3VsdHMiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwibGVjdHVyZU1hcHBlciIsImNvbGxlY3RBY3RlcyIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJtZXJnZV9wcm9jZWR1cmVzIiwiTWFwIiwicmVtYXBwZWRQcm9jZWR1cmVzIiwiZ2V0Iiwib3JkZXJlZENvZGVzIiwib3JkZXJlZCIsIngiLCJhc3NlcnQiLCJ2YWxpZGF0ZUNocm9ub2xvZ3kiLCJzZXF1ZW5jZSIsIm1lcmdlQWN0ZSIsInNob3J0Q29kZSIsInhzaVR5cGUiLCJfaXRlcmF0b3I1IiwiX3N0ZXA1IiwiX2l0ZXJhdG9yNiIsIl9zdGVwNiIsInZhbGlkYXRlTGV2ZWwiLCJwYXRoIiwiX2kzIiwiX2FyciIsImVudHJpZXMiLCJfYXJyJF9pIiwicHJpbnRFbnRyeSIsImVudHJ5IiwidGl0bGUiLCJ1bmRlcmxpbmUiLCJhZGRBbmNob3JzIiwiYW5jaG9yc1ByaW50ZWQiLCJhbmNob3JzIiwicmVuYW1lQ01QIiwic3RhcnRzV2l0aCIsImVuZHNXaXRoIiwicHJpbnRMZXZlbCIsImtleXMiLCJfaXRlcmF0b3I3IiwiX3N0ZXA3Iiwic3Vic3RyaW5nIiwicHJpbnRDb2RlcyIsIl9pNCIsIl9PYmplY3Qka2V5cyIsInByaW50QW5jaG9yc0luZGV4IiwiX2k1IiwiX0FycmF5JGZyb20zIiwiZ2V0QWdncmVnYXRlZCIsInJlbWFwcGVkIiwicHJpbnQiLCJfaTYiLCJfYXJyMiIsIl9hcnIyJF9pIiwiYWdncmVnYXRlZCIsIm1haW4iLCJkb2MiLCJwcm9jZXNzIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2RvY3VtZW50X2Rvc3NpZXJzX2xlZ2lzbGF0aWZzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBjb21tYW5kTGluZVVzYWdlIGZyb20gXCJjb21tYW5kLWxpbmUtdXNhZ2VcIlxuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IGxvYWQsIGdldEZpbGVzIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhhcmd2OiBzdHJpbmdbXSk6IGFueSB7XG4gIGNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAgICB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJwYXRobmFtZSB0byBhIEpTT04gZmlsZSBvciBhIGdsb2IgcGF0dGVybiB0byBKU09OIGZpbGVzXCIsXG4gICAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBuYW1lOiBcImRhdGFcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwibm8tc2FuaXR5LWNoZWNrc1wiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkRvIG5vdCBwZXJmb3JtIHNhbml0eSBjaGVja3MuXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiBcInZlcmJvc2VcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZXNjcmlwdGlvbjogXCJpbmNyZWFzZSB2ZXJib3NpdHlcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwiaGVscFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiUHJpbnQgdGhpcyB1c2FnZSBndWlkZS5cIixcbiAgICB9LFxuICBdXG4gIGNvbnN0IHNlY3Rpb25zID0gW1xuICAgIHtcbiAgICAgIGhlYWRlcjogXCJBaWRlIMOgIGxhIGRvY3VtZW50YXRpb24gZHUgZG9zc2llciBsw6lnaXNsYXRpZlwiLFxuICAgICAgY29udGVudDogXCJHw6luw6hyZSB1bmUgaGnDqXJhcmNoaWUgZGVzIGFjdGVzIGzDqWdpc2xhdGlmc1wiLFxuICAgIH0sXG4gICAge1xuICAgICAgaGVhZGVyOiBcIk9wdGlvbnNcIixcbiAgICAgIG9wdGlvbkxpc3Q6IG9wdGlvbnNEZWZpbml0aW9ucyxcbiAgICB9LFxuICBdXG4gIGNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zLCB7XG4gICAgYXJndjogYXJndixcbiAgfSlcbiAgaWYgKCEoXCJoZWxwXCIgaW4gb3B0aW9ucykgJiYgIShcImRhdGFcIiBpbiBvcHRpb25zKSkge1xuICAgIGNvbnNvbGUuZXJyb3IoXCItLWRhdGEgaXMgbWFuZGF0b3J5XCIpXG4gICAgb3B0aW9ucy5oZWxwID0gdHJ1ZVxuICB9XG4gIGlmIChcImhlbHBcIiBpbiBvcHRpb25zKSB7XG4gICAgY29uc3QgdXNhZ2UgPSBjb21tYW5kTGluZVVzYWdlKHNlY3Rpb25zKVxuICAgIGNvbnNvbGUud2Fybih1c2FnZSlcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIHJldHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIGVxU2V0KGFzOiBTZXQ8c3RyaW5nPiwgYnM6IFNldDxzdHJpbmc+KTogYm9vbGVhbiB7XG4gIGlmIChhcy5zaXplICE9PSBicy5zaXplKSByZXR1cm4gZmFsc2VcbiAgZm9yICh2YXIgYSBvZiBhcykgaWYgKCFicy5oYXMoYSkpIHJldHVybiBmYWxzZVxuICByZXR1cm4gdHJ1ZVxufVxuXG5jbGFzcyBDb2RlMlBhdHRlcm4ge1xuICBfcGF0dGVybl86IGFueVxuICBfbWF0Y2hfY291bnRfOiBudW1iZXJcbiAgY29uc3RydWN0b3IocGF0dGVybjogYW55LCBjaGlsZHJlbjogYW55KSB7XG4gICAgdGhpcy5fcGF0dGVybl8gPSBwYXR0ZXJuXG4gICAgdGhpcy5fbWF0Y2hfY291bnRfID0gMFxuICAgIE9iamVjdC5hc3NpZ24odGhpcywgY2hpbGRyZW4pXG4gIH1cbn1cblxuY2xhc3MgQ29kZTJQYXR0ZXJuQ29tRm9uZCBleHRlbmRzIENvZGUyUGF0dGVybiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiXi9TQUlTSUUvKC9OT01JTi8pKigvUkVVTklPTi8pKigvUkFQUE9SVC8pKiRcIiwge30pXG4gIH1cbn1cblxuY2xhc3MgTGVjdHVyZU1hcHBpbmcge1xuICBsaWJlbGxlOiBhbnkgPSB7fVxuICBjb2RlczogYW55ID0gbmV3IFNldCgpXG5cbiAgc3RhdGljIGNvZGVzX2xlY3R1cmU6IHN0cmluZ1tdID0gW1xuICAgIFwiQU4xXCIsXG4gICAgXCJTTjFcIixcbiAgICBcIkFOTkxFQ1wiLFxuICAgIFwiU05OTEVDXCIsXG4gICAgXCJBTkxERUZcIixcbiAgICBcIkFOMlwiLFxuICAgIFwiU04yXCIsXG4gICAgXCJTTjNcIixcbiAgXVxuICBzdGF0aWMgY29kZXNfbGVjdHVyZV9yZWdleHA6IGFueSA9IG5ldyBSZWdFeHAoXG4gICAgXCJeKD86XCIgKyBMZWN0dXJlTWFwcGluZy5jb2Rlc19sZWN0dXJlLmpvaW4oXCJ8XCIpICsgXCIpKC0uKik/JFwiLFxuICApXG5cbiAgc3RhdGljIGlzTGVjdHVyZShhY3RlOiBhbnkpIHtcbiAgICByZXR1cm4gYWN0ZS5jb2RlQWN0ZS5tYXRjaChMZWN0dXJlTWFwcGluZy5jb2Rlc19sZWN0dXJlX3JlZ2V4cClcbiAgfVxuXG4gIHN0YXRpYyBnZXRUeXBlKGFjdGU6IGFueSkge1xuICAgIGlmIChhY3RlLmNvZGVBY3RlLm1hdGNoKC9eQU4vKSkgcmV0dXJuIFwiQU5cIlxuICAgIGVsc2UgaWYgKGFjdGUuY29kZUFjdGUubWF0Y2goL15TTi8pKSByZXR1cm4gXCJTTlwiXG4gICAgZWxzZSB0aHJvdyBFcnJvcihgJHthY3RlLmNvZGVBY3RlfSBkb2VzIG5vdCBzdGFydCB3aXRoIEFOIG9yIFNOYClcbiAgfVxuXG4gIHN0YXRpYyBtYXAoY29kZUFjdGU6IGFueSkge1xuICAgIHJldHVybiBjb2RlQWN0ZS5yZXBsYWNlKExlY3R1cmVNYXBwaW5nLmNvZGVzX2xlY3R1cmVfcmVnZXhwLCBgbGVjdHVyZSQxYClcbiAgfVxuXG4gIHN0YXRpYyBnZXRDb2RlQWN0ZShhY3RlOiBhbnkpIHtcbiAgICBpZiAoIUxlY3R1cmVNYXBwaW5nLmlzTGVjdHVyZShhY3RlKSkgcmV0dXJuXG5cbiAgICByZXR1cm4gTGVjdHVyZU1hcHBpbmcubWFwKGFjdGUuY29kZUFjdGUpXG4gIH1cblxuICBhZGQoYWN0ZTogYW55KSB7XG4gICAgdGhpcy5jb2Rlcy5hZGQoYWN0ZS5jb2RlQWN0ZSlcblxuICAgIGNvbnN0IHR5cGUgPSBMZWN0dXJlTWFwcGluZy5nZXRUeXBlKGFjdGUpXG5cbiAgICBpZiAoIShhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZSBpbiB0aGlzLmxpYmVsbGUpKVxuICAgICAgdGhpcy5saWJlbGxlW2FjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXSA9IG5ldyBTZXQoKVxuICAgIHRoaXMubGliZWxsZVthY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZV0uYWRkKHR5cGUpXG4gIH1cblxuICByZW1hcChhY3RlOiBhbnksIGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICBhY3RlLmNvZGVBY3RlID0gY29kZUFjdGVcblxuICAgIGxldCB0eXBlcyA9IHRoaXMubGliZWxsZVthY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZV1cbiAgICBpZiAoISh0eXBlcy5oYXMoXCJTTlwiKSAmJiB0eXBlcy5oYXMoXCJBTlwiKSkpIHtcbiAgICAgIGlmICh0eXBlcy5oYXMoXCJTTlwiKSkgYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWUgKz0gXCIgKFPDqW5hdClcIlxuICAgICAgZWxzZSBpZiAodHlwZXMuaGFzKFwiQU5cIikpXG4gICAgICAgIGFjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlICs9IFwiIChBc3NlbWJsw6llIE5hdGlvbmFsZSlcIlxuICAgIH1cbiAgfVxuXG4gIG1lcmdlQ29kZXMoY29kZXM6IGFueSkge1xuICAgIGZvciAoY29uc3QgYyBvZiBBcnJheS5mcm9tKHRoaXMuY29kZXMpKSBjb2Rlcy5hZGQoYylcbiAgfVxuXG4gIHByaW50QW5jaG9ycygpIHtcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2YgQXJyYXkuZnJvbSh0aGlzLmNvZGVzKSkgY29uc29sZS5sb2coYC4uIF8ke2NvZGV9OmApXG4gIH1cblxuICBnZXRDb2RlcygpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmNvZGVzKS5qb2luKFwiLFwiKVxuICB9XG59XG5cbmNsYXNzIExlY3R1cmVNYXBwZXIge1xuICBtYXBwaW5nOiBhbnkgPSB7fVxuXG4gIGhhcyhjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGNvZGVBY3RlIGluIHRoaXMubWFwcGluZ1xuICB9XG5cbiAgY29sbGVjdChhY3RlOiBhbnkpIHtcbiAgICBjb25zdCBjb2RlQWN0ZSA9IExlY3R1cmVNYXBwaW5nLmdldENvZGVBY3RlKGFjdGUpXG4gICAgaWYgKGNvZGVBY3RlICE9IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IGxlY3R1cmVzID0gdGhpcy5tYXBwaW5nXG4gICAgICBpZiAoIShjb2RlQWN0ZSBpbiBsZWN0dXJlcykpIGxlY3R1cmVzW2NvZGVBY3RlXSA9IG5ldyBMZWN0dXJlTWFwcGluZygpXG4gICAgICBsZWN0dXJlc1tjb2RlQWN0ZV0uYWRkKGFjdGUpXG4gICAgfVxuICB9XG5cbiAgcmVtYXAoYWN0ZTogYW55KSB7XG4gICAgY29uc3QgY29kZUFjdGUgPSBMZWN0dXJlTWFwcGluZy5nZXRDb2RlQWN0ZShhY3RlKVxuICAgIGlmIChjb2RlQWN0ZSAhPSB1bmRlZmluZWQpIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0ucmVtYXAoYWN0ZSwgY29kZUFjdGUpXG4gIH1cblxuICBtZXJnZUNvZGVzKGNvZGVzOiBhbnksIGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm1hcHBpbmdbY29kZUFjdGVdLm1lcmdlQ29kZXMoY29kZXMpXG4gIH1cblxuICBwcmludEFuY2hvcnMoY29kZUFjdGU6IHN0cmluZykge1xuICAgIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0ucHJpbnRBbmNob3JzKClcbiAgfVxuXG4gIGdldENvZGVzKGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5nZXRDb2RlcygpXG4gIH1cbn1cblxuY2xhc3MgQWN0ZXNEb2N1bWVudGF0aW9uIHtcbiAgdmVyYm9zZTogYm9vbGVhblxuICBzYW5pdHlDaGVja3M6IGJvb2xlYW5cbiAgbGVjdHVyZU1hcHBlcjogYW55ID0gbmV3IExlY3R1cmVNYXBwZXIoKVxuICByZW1hcHBlZFByb2NlZHVyZXM6IGFueSA9IHt9XG4gIGFuY2hvcnNQcmludGVkOiBhbnkgPSB7fVxuICBhbmNob3JzOiBhbnkgPSBuZXcgU2V0KClcbiAgY29kZXM6IGFueSA9IHt9XG4gIHByb2NlZHVyZXM6IGFueSA9IG51bGxcbiAgY29kZTJwYXR0ZXJuOiBhbnkgPSBuZXcgQ29kZTJQYXR0ZXJuKG51bGwsIHtcbiAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4oKCgvbGVjdHVyZS8pKyl8KCgvbGVjdHVyZS8pKy9DTVAvKC9sZWN0dXJlLykqKSkoL0NDLyk/KC9QUk9NLyk/KC9BTi1BUFBMSS8pPyRcIixcbiAgICAgIHtcbiAgICAgICAgbGVjdHVyZTogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0RFUE9ULyk/KC9EUFRMRVRUUkVDVC8pPygvRVRJLyk/KC9BVkNFLyk/KC9ER1ZULyk/KC9BQ0lOLyk/KC9NT1RJT04vKSooL1BST0NBQ0MvKT8oL0NPTS8pPygoL0RFQkFUUy8pKyk/KC9SVFJJTkkvKT8kXCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJsZWN0dXJlLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvRk9ORC98L0FWSVMvKSskXCIsIHtcbiAgICAgICAgICAgICAgXCJsZWN0dXJlLUNPTS1GT05EXCI6IG5ldyBDb2RlMlBhdHRlcm5Db21Gb25kKCksXG4gICAgICAgICAgICAgIFwibGVjdHVyZS1DT00tQVZJU1wiOiBuZXcgQ29kZTJQYXR0ZXJuQ29tRm9uZCgpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBcImxlY3R1cmUtREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICAgIFwiXigvU0VBTkNFLykqKCgvTU9USU9OLyk/KC9NT1RJT04tVk9URS8pKyk/KC9ERUMvKT8kXCIsXG4gICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgICBDTVA6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgXCJeKC9ERVBPVC98L1NBSVNJRS8pezEsMn0oL0NPTS8pPygvREVDLyk/KC9ERUJBVFMtQU4vL0RFQkFUUy1TTi8pP1wiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwiQ01QLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgICBcIl4oL05PTUlOLyk/KC9SQVBQT1JULUFOL3wvUkFQUE9SVC1TTi8pezJ9JFwiLFxuICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBcIkNNUC1ERUJBVFMtQU5cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvREVDLyk/JFwiLCB7fSksXG4gICAgICAgICAgICBcIkNNUC1ERUJBVFMtU05cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvREVDLyk/JFwiLCB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICAgQ0M6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TQUlTSUUvKSsoL0NPTkNMVVNJT04vKT8kXCIsIHt9KSxcbiAgICAgICAgUFJPTTogbmV3IENvZGUyUGF0dGVybihcIl4oL1BVQi8pPyRcIiwge30pLFxuICAgICAgICBcIkFOLUFQUExJXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9SQVBQT1JULyk/JFwiLCB7fSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJBbGxvY3V0aW9uIGR1IFByw6lzaWRlbnQgZGUgbCdBc3NlbWJsw6llIG5hdGlvbmFsZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeL0FOMjEvJFwiLFxuICAgICAge1xuICAgICAgICBBTjIxOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQVBBTi8pPyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiUsOpc29sdXRpb24gQXJ0aWNsZSAzNC0xXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTkxVTkkvKT8kXCIsIHtcbiAgICAgIEFOTFVOSTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9ERUJBVFMvKT8oL1JUUklOSS8pPyRcIiwge1xuICAgICAgICBcIkFOTFVOSS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKygvREVDLyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBSw6lzb2x1dGlvbjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOTFVOSS8pPygvQ0MvKT8kXCIsIHtcbiAgICAgIEFOTFVOSTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9DT00vKT8oL0RFQkFUUy98L1JUUklOSS8pPyRcIiwge1xuICAgICAgICBcIkFOTFVOSS1DT01cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0NBRS8pPygvRk9ORC8pPyRcIiwge1xuICAgICAgICAgIFwiQU5MVU5JLUNPTS1GT05EXCI6IG5ldyBDb2RlMlBhdHRlcm5Db21Gb25kKCksXG4gICAgICAgICAgXCJBTkxVTkktQ09NLUNBRVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgXCJeKC9TQUlTSUUvKT8oL05PTUlOLyk/KC9SRVVOSU9OLyk/KC9SQVBQT1JULyk/KC9ERUMvKT8kXCIsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApLFxuICAgICAgICB9KSxcbiAgICAgICAgXCJBTkxVTkktREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSooL0RFQy8pPyRcIiwge30pLFxuICAgICAgfSksXG4gICAgICBDQzogbmV3IENvZGUyUGF0dGVybihcIl4oL1NBSVNJRS8pPygvQ09OQ0xVU0lPTi8pPyRcIiwge30pLFxuICAgIH0pLFxuICAgIFwiUmFwcG9ydCBkJ2luZm9ybWF0aW9uIHNhbnMgbWlzc2lvblwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeKC9BTjIwLyk/KC9FVS8pPyRcIixcbiAgICAgIHtcbiAgICAgICAgQU4yMDogbmV3IENvZGUyUGF0dGVybihcIl4oL1JBUFBPUlQvKT8kXCIsIHt9KSxcbiAgICAgICAgRVU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERUMvKSskXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIk1pc3Npb24gZCdpbmZvcm1hdGlvblwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU4yMC8pPyRcIiwge1xuICAgICAgQU4yMDogbmV3IENvZGUyUGF0dGVybihcIl4oL01JU0lORi8pPyRcIiwge1xuICAgICAgICBcIkFOMjAtTUlTSU5GXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgXCJeKC9DUkVBLyk/KC9OT01JTi8pPygvUkFQUE9SVC8pPyRcIixcbiAgICAgICAgICB7fSxcbiAgICAgICAgKSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFwiQ29tbWlzc2lvbiBkJ2VucXXDqnRlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTjIwLyk/JFwiLCB7XG4gICAgICBBTjIwOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQ09NRU5RLyk/JFwiLCB7XG4gICAgICAgIFwiQU4yMC1DT01FTlFcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0NSRUEvKT8oL05PTUlOLyk/KC9SQVBQT1JULyk/JFwiLFxuICAgICAgICAgIHt9LFxuICAgICAgICApLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgXCJFbmdhZ2VtZW50IGRlIGxhIHJlc3BvbnNhYmlsaXTDqSBnb3V2ZXJuZW1lbnRhbGVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXi9BTjIxLyRcIixcbiAgICAgIHtcbiAgICAgICAgQU4yMTogbmV3IENvZGUyUGF0dGVybihcIl4oKCgvTU9USU9OLykqL0RFQkFUUy8pfCgvREdWVC8pKXsxLDJ9JFwiLCB7XG4gICAgICAgICAgXCJBTjIxLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9NT1RJT04tVk9URS8pKiRcIiwge30pLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIk1vdGlvbiByw6lmw6lyZW5kYWlyZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvbGVjdHVyZS8pKyRcIiwge1xuICAgICAgbGVjdHVyZTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9DT00vKT8oL0RFQkFUUy8pPyRcIiwge1xuICAgICAgICBcImxlY3R1cmUtQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9GT05ELyk/JFwiLCB7XG4gICAgICAgICAgXCJsZWN0dXJlLUNPTS1GT05EXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICBcIl4oL1NBSVNJRS8pPygvTk9NSU4vKSooL1JBUFBPUlQvKSokXCIsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApLFxuICAgICAgICB9KSxcbiAgICAgICAgXCJsZWN0dXJlLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVDLyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBJbW11bml0w6k6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTkxVTkkvKSskXCIsIHtcbiAgICAgIEFOTFVOSTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9DT00vKT8oL0RFQkFUUy8pPygvUlRSSU5JLyk/JFwiLCB7XG4gICAgICAgIFwiQU5MVU5JLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvRk9ORC8pPyRcIiwge1xuICAgICAgICAgIFwiQU5MVU5JLUNPTS1GT05EXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICBcIl4oL1NBSVNJRS8pPygvTk9NSU4vKSooL1JBUFBPUlQvKSokXCIsXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApLFxuICAgICAgICB9KSxcbiAgICAgICAgXCJBTkxVTkktREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKT8oL0RFQy8pJFwiLCB7fSksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBcIlJlc3BvbnNhYmlsaXTDqSBww6luYWxlIGR1IHByw6lzaWRlbnQgZGUgbGEgcsOpcHVibGlxdWVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXi9sZWN0dXJlLyRcIixcbiAgICAgIHtcbiAgICAgICAgbGVjdHVyZTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/KC9SRUNCVVJFQVUvKT8kXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIlByb3Bvc2l0aW9uIGRlIGxvaSBwcsOpc2VudMOpZSBlbiBhcHBsaWNhdGlvbiBkZSBsJ2FydGljbGUgMTEgZGUgbGEgQ29uc3RpdHV0aW9uXCI6XG4gICAgICBuZXcgQ29kZTJQYXR0ZXJuKFwiXi9sZWN0dXJlLyRcIiwge1xuICAgICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICB9KVxuXG4gIGNvbnN0cnVjdG9yKHNhbml0eUNoZWNrczogYm9vbGVhbiwgdmVyYm9zZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgdGhpcy52ZXJib3NlID0gdmVyYm9zZVxuICAgIHRoaXMuc2FuaXR5Q2hlY2tzID0gc2FuaXR5Q2hlY2tzXG4gICAgdGhpcy5wcm9jZWR1cmVzID0ge31cbiAgICB0aGlzLmNvZGUycGF0dGVybi5fbWF0Y2hfY291bnRfKytcbiAgfVxuXG4gIHdhbGtGaWxlcyhkYXRhOiBzdHJpbmdbXSwgYWN0aW9uOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZ2V0RmlsZXMoZGF0YSkpIHtcbiAgICAgIGNvbnN0IGRvc3NpZXIgPSBsb2FkKGZpbGUpXG4gICAgICBsZXQgcHJvY2VkdXJlOiBzdHJpbmcgPSB0aGlzLnJlbWFwUHJvY2VkdXJlKFxuICAgICAgICBkb3NzaWVyLnByb2NlZHVyZVBhcmxlbWVudGFpcmUubGliZWxsZSxcbiAgICAgIClcbiAgICAgIGlmICghKHByb2NlZHVyZSBpbiB0aGlzLnByb2NlZHVyZXMpKSB0aGlzLnByb2NlZHVyZXNbcHJvY2VkdXJlXSA9IHt9XG4gICAgICBhY3Rpb24oXG4gICAgICAgIHRoaXMucHJvY2VkdXJlc1twcm9jZWR1cmVdLFxuICAgICAgICBkb3NzaWVyLmFjdGVzTGVnaXNsYXRpZnMsXG4gICAgICAgIHRoaXMuY29kZTJwYXR0ZXJuW3Byb2NlZHVyZV0sXG4gICAgICAgIG51bGwsXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgY29sbGVjdEZpbGVzKGRhdGE6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy53YWxrRmlsZXMoXG4gICAgICBkYXRhLFxuICAgICAgKF9hY3RlczogYW55LCBhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIF9jMnA6IGFueSwgX3BhcmVudDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMuY29sbGVjdChhY3Rlc0xlZ2lzbGF0aWZzKVxuICAgICAgfSxcbiAgICApXG4gIH1cblxuICBwcm9jZXNzRmlsZXMoZGF0YTogc3RyaW5nW10pIHtcbiAgICB0aGlzLndhbGtGaWxlcyhcbiAgICAgIGRhdGEsXG4gICAgICAoYWN0ZXM6IGFueSwgYWN0ZXNMZWdpc2xhdGlmczogYW55LCBjMnA6IGFueSwgcGFyZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5tZXJnZShhY3RlcywgYWN0ZXNMZWdpc2xhdGlmcywgYzJwLCBwYXJlbnQpXG4gICAgICB9LFxuICAgIClcbiAgICBpZiAodGhpcy5zYW5pdHlDaGVja3MpIHRoaXMudmFsaWRhdGUoKVxuICB9XG5cbiAgcmVtYXBBY3RlcyhhY3RlczogYW55KTogYW55IHtcbiAgICBsZXQgcmVzdWx0cyA9IFtdXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGFjdGVzKSB7XG4gICAgICB0aGlzLmxlY3R1cmVNYXBwZXIucmVtYXAoYWN0ZSlcblxuICAgICAgLy8gQ0MtU0FJU0lFLSBzdWZmaXggZG9lcyBub3QgaW1wbHkgYSBoaWVyYXJjaHlcbiAgICAgIGFjdGUuY29kZUFjdGUgPSBhY3RlLmNvZGVBY3RlLnJlcGxhY2UoL15DQy1TQUlTSUUuKi8sIFwiQ0MtU0FJU0lFXCIpXG5cbiAgICAgIHJlc3VsdHMucHVzaChhY3RlKVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0c1xuICB9XG5cbiAgY29sbGVjdEFjdGVzKGFjdGVzOiBhbnkpOiBhbnkge1xuICAgIGxldCByZXN1bHRzID0gW11cbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgYWN0ZXMpIHtcbiAgICAgIHRoaXMubGVjdHVyZU1hcHBlci5jb2xsZWN0KGFjdGUpXG5cbiAgICAgIHJlc3VsdHMucHVzaChhY3RlKVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0c1xuICB9XG5cbiAgcmVtYXBQcm9jZWR1cmUocHJvY2VkdXJlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1lcmdlX3Byb2NlZHVyZXM6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwKFtcbiAgICAgIFtcIlByb3Bvc2l0aW9uIGRlIGxvaSBvcmRpbmFpcmVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcIlByb2pldCBkZSBsb2kgb3JkaW5haXJlXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXG4gICAgICAgIFwiUHJvamV0IGRlIHJhdGlmaWNhdGlvbiBkZXMgdHJhaXTDqXMgZXQgY29udmVudGlvbnNcIixcbiAgICAgICAgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiLFxuICAgICAgXSxcbiAgICAgIFtcIlByb2pldCBvdSBwcm9wb3NpdGlvbiBkZSBsb2kgb3JnYW5pcXVlXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXG4gICAgICAgIFwiUHJvamV0IG91IHByb3Bvc2l0aW9uIGRlIGxvaSBjb25zdGl0dXRpb25uZWxsZVwiLFxuICAgICAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIsXG4gICAgICBdLFxuICAgICAgW1wiUHJvamV0IGRlIGxvaSBkZSBmaW5hbmNlcyBkZSBsJ2FubsOpZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1wiUHJvamV0IGRlIGxvaSBkZSBmaW5hbmNlcyByZWN0aWZpY2F0aXZlXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXG4gICAgICAgIFwiUHJvamV0IGRlIGxvaSBkZSBmaW5hbmNlbWVudCBkZSBsYSBzw6ljdXJpdMOpIHNvY2lhbGVcIixcbiAgICAgICAgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiLFxuICAgICAgXSxcbiAgICBdKVxuICAgIGlmIChtZXJnZV9wcm9jZWR1cmVzLmhhcyhwcm9jZWR1cmUpKSB7XG4gICAgICB0aGlzLnJlbWFwcGVkUHJvY2VkdXJlc1twcm9jZWR1cmVdID0gbnVsbFxuICAgICAgcmV0dXJuIG1lcmdlX3Byb2NlZHVyZXMuZ2V0KHByb2NlZHVyZSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHByb2NlZHVyZVxuICAgIH1cbiAgfVxuXG4gIC8vIHJldHVybiB0aGUgY29kZUFjdGVzIGluIHRoZSBzYW1lIG9yZGVyIHRoZXkgYXBwZWFyIGluIHRoZSByZWdleHBcbiAgb3JkZXJlZENvZGVzKGNvZGVzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZyk6IFNldDxzdHJpbmc+IHtcbiAgICBjb2RlcyA9IG5ldyBTZXQoY29kZXMpXG4gICAgaWYgKCF0aGlzLnNhbml0eUNoZWNrcykgcmV0dXJuIGNvZGVzXG4gICAgbGV0IG9yZGVyZWQgPSBjMnBbXCJfcGF0dGVybl9cIl0ubWF0Y2gobmV3IFJlZ0V4cChcIi8uKj8vXCIsIFwiZ1wiKSlcbiAgICBvcmRlcmVkID0gb3JkZXJlZC5tYXAoKHg6IHN0cmluZykgPT4geC5yZXBsYWNlKG5ldyBSZWdFeHAoXCIvKC4qKS9cIiksIFwiJDFcIikpXG4gICAgaWYgKHBhcmVudCAhPSBudWxsKSBvcmRlcmVkID0gb3JkZXJlZC5tYXAoKHg6IHN0cmluZykgPT4gYCR7cGFyZW50fS0ke3h9YClcbiAgICBvcmRlcmVkID0gbmV3IFNldChvcmRlcmVkKVxuICAgIGFzc2VydChlcVNldChvcmRlcmVkLCBjb2RlcyksIGAke1suLi5vcmRlcmVkXX0gIT0gJHtbLi4uY29kZXNdfWApXG4gICAgcmV0dXJuIG9yZGVyZWRcbiAgfVxuXG4gIHZhbGlkYXRlQ2hyb25vbG9neShhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHBhdHRlcm4gPSBjMnBbXCJfcGF0dGVybl9cIl1cbiAgICBjb25zdCBzZXF1ZW5jZSA9IGFjdGVzTGVnaXNsYXRpZnNcbiAgICAgIC5tYXAoKHg6IGFueSkgPT4gYC8ke3guY29kZUFjdGV9L2AucmVwbGFjZShgLyR7cGFyZW50fS1gLCBcIi9cIikpXG4gICAgICAuam9pbihcIlwiKVxuICAgIGFzc2VydChcbiAgICAgIHNlcXVlbmNlLm1hdGNoKG5ldyBSZWdFeHAocGF0dGVybikpLFxuICAgICAgYCR7cGF0dGVybn0gZG9lcyBub3QgbWF0Y2ggJHtzZXF1ZW5jZX1gLFxuICAgIClcbiAgICBjMnAuX21hdGNoX2NvdW50XysrXG4gIH1cblxuICBtZXJnZUFjdGUoYWN0ZXM6IGFueSwgYWN0ZTogYW55LCBjMnA6IGFueSwgcGFyZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgY29kZTogc3RyaW5nID0gYWN0ZS5jb2RlQWN0ZVxuICAgIGxldCBzaG9ydENvZGU6IHN0cmluZyA9IGNvZGUucmVwbGFjZShuZXcgUmVnRXhwKGBeJHtwYXJlbnR9LWApLCBcIlwiKVxuICAgIHNob3J0Q29kZSA9IHNob3J0Q29kZS5yZXBsYWNlKC8tKEFOfFNOKSQvLCBcIlwiKVxuICAgIHRoaXMuY29kZXNbc2hvcnRDb2RlXSA9IG51bGxcbiAgICBsZXQgbmFtZTogc3RyaW5nID0gYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWVcbiAgICBpZiAoIShjb2RlIGluIGFjdGVzKSkge1xuICAgICAgYWN0ZXNbY29kZV0gPSB7XG4gICAgICAgIHR5cGU6IGFjdGUueHNpVHlwZSxcbiAgICAgICAgbmFtZTogbmV3IFNldChbbmFtZV0pLFxuICAgICAgICBzaG9ydENvZGU6IHNob3J0Q29kZSxcbiAgICAgICAgYWN0ZXM6IHt9LFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhY3Rlc1tjb2RlXS5uYW1lLmFkZChuYW1lKVxuICAgIH1cbiAgICBpZiAoXCJhY3Rlc0xlZ2lzbGF0aWZzXCIgaW4gYWN0ZSlcbiAgICAgIHRoaXMubWVyZ2UoYWN0ZXNbY29kZV0uYWN0ZXMsIGFjdGUuYWN0ZXNMZWdpc2xhdGlmcywgYzJwW2NvZGVdLCBjb2RlKVxuICB9XG5cbiAgbWVyZ2UoYWN0ZXM6IGFueSwgYWN0ZXNMZWdpc2xhdGlmczogYW55LCBjMnA6IGFueSwgcGFyZW50OiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBsID0gdGhpcy5yZW1hcEFjdGVzKGFjdGVzTGVnaXNsYXRpZnMpXG4gICAgdGhpcy52YWxpZGF0ZUNocm9ub2xvZ3kobCwgYzJwLCBwYXJlbnQpXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGwpIHRoaXMubWVyZ2VBY3RlKGFjdGVzLCBhY3RlLCBjMnAsIHBhcmVudClcbiAgfVxuXG4gIGNvbGxlY3QoYWN0ZXNMZWdpc2xhdGlmczogYW55KTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBhY3RlIG9mIHRoaXMuY29sbGVjdEFjdGVzKGFjdGVzTGVnaXNsYXRpZnMpKVxuICAgICAgaWYgKFwiYWN0ZXNMZWdpc2xhdGlmc1wiIGluIGFjdGUpIHRoaXMuY29sbGVjdChhY3RlLmFjdGVzTGVnaXNsYXRpZnMpXG4gIH1cblxuICB2YWxpZGF0ZUxldmVsKGMycDogYW55LCBwYXRoOiBhbnkpIHtcbiAgICBhc3NlcnQoYzJwLl9tYXRjaF9jb3VudF8gPiAwLCBgJHtwYXRofSBpcyBuZXZlciB1c2VkYClcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjMnApIGFzIFtzdHJpbmcsIGFueV1bXSkge1xuICAgICAgaWYgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUuY29uc3RydWN0b3IubmFtZSA9PSBcIkNvZGUyUGF0dGVyblwiKVxuICAgICAgICB0aGlzLnZhbGlkYXRlTGV2ZWwodmFsdWUsIHBhdGguY29uY2F0KFtrZXldKSlcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZSgpIHtcbiAgICB0aGlzLnZhbGlkYXRlTGV2ZWwodGhpcy5jb2RlMnBhdHRlcm4sIFtdKVxuICB9XG5cbiAgcHJpbnRFbnRyeShzZWN0aW9uczogc3RyaW5nLCBlbnRyeTogc3RyaW5nLCBjb2Rlczogc3RyaW5nKSB7XG4gICAgY29uc3QgdGl0bGUgPSBgXFxgJHtlbnRyeX1cXGBfX2BcbiAgICBjb25zb2xlLmxvZyh0aXRsZSlcbiAgICBjb25zdCB1bmRlcmxpbmUgPSBuZXcgQXJyYXkodGl0bGUubGVuZ3RoICsgMSkuam9pbihzZWN0aW9uc1swXSlcbiAgICBjb25zb2xlLmxvZyh1bmRlcmxpbmUpXG4gICAgY29uc29sZS5sb2coY29kZXMpXG4gIH1cblxuICBhZGRBbmNob3JzKGtleTogc3RyaW5nKSB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmFuY2hvcnNQcmludGVkKSByZXR1cm5cbiAgICBpZiAodGhpcy5sZWN0dXJlTWFwcGVyLmhhcyhrZXkpKVxuICAgICAgdGhpcy5sZWN0dXJlTWFwcGVyLm1lcmdlQ29kZXModGhpcy5hbmNob3JzLCBrZXkpXG4gICAgZWxzZSB0aGlzLmFuY2hvcnMuYWRkKGtleSlcbiAgfVxuXG4gIHByaW50QW5jaG9ycyhrZXk6IHN0cmluZykge1xuICAgIGlmIChrZXkgaW4gdGhpcy5hbmNob3JzUHJpbnRlZCkgcmV0dXJuXG4gICAgdGhpcy5hbmNob3JzUHJpbnRlZFtrZXldID0gbnVsbFxuICAgIGlmICh0aGlzLmxlY3R1cmVNYXBwZXIuaGFzKGtleSkpIHRoaXMubGVjdHVyZU1hcHBlci5wcmludEFuY2hvcnMoa2V5KVxuICAgIGVsc2UgY29uc29sZS5sb2coYC4uIF8ke2tleX06YClcbiAgfVxuXG4gIGdldENvZGVzKGtleTogc3RyaW5nLCBzaG9ydENvZGU6IHN0cmluZykge1xuICAgIGlmIChrZXkgaW4gdGhpcy5hbmNob3JzUHJpbnRlZCkgcmV0dXJuIGBjZiBcXFxcKiR7c2hvcnRDb2RlfVxcXFwqYFxuICAgIGlmICh0aGlzLmxlY3R1cmVNYXBwZXIuaGFzKGtleSkpIHJldHVybiB0aGlzLmxlY3R1cmVNYXBwZXIuZ2V0Q29kZXMoa2V5KVxuICAgIGVsc2UgcmV0dXJuIGtleVxuICB9XG5cbiAgcmVuYW1lQ01QKGtleTogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoXCJDTVBcIikpIHtcbiAgICAgIGlmIChrZXkuZW5kc1dpdGgoXCItU05cIikpIHJldHVybiBgJHtuYW1lfSAoU8OpbmF0KWBcbiAgICAgIGVsc2UgaWYgKGtleS5lbmRzV2l0aChcIi1BTlwiKSkgcmV0dXJuIGAke25hbWV9IChBc3NlbWJsw6llIE5hdGlvbmFsZSlgXG4gICAgICBlbHNlIHJldHVybiBuYW1lXG4gICAgfSBlbHNlIHJldHVybiBuYW1lXG4gIH1cblxuICBwcmludExldmVsKGFjdGVzOiBhbnksIHNlY3Rpb25zOiBzdHJpbmcsIGMycDogYW55LCBwYXJlbnQ6IGFueSkge1xuICAgIGNvbnN0IGtleXM6IFNldDxzdHJpbmc+ID0gdGhpcy5vcmRlcmVkQ29kZXMoT2JqZWN0LmtleXMoYWN0ZXMpLCBjMnAsIHBhcmVudClcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGFjdGVzW2tleV1cbiAgICAgIGxldCBuYW1lID0gQXJyYXkuZnJvbSh2YWx1ZS5uYW1lKS5qb2luKFwiLCBcIilcbiAgICAgIG5hbWUgPSB0aGlzLnJlbmFtZUNNUChrZXksIG5hbWUpXG4gICAgICBjb25zdCBjb2RlcyA9IHRoaXMuZ2V0Q29kZXMoa2V5LCB2YWx1ZS5zaG9ydENvZGUpXG4gICAgICB0aGlzLmFkZEFuY2hvcnMoa2V5KVxuICAgICAgdGhpcy5wcmludEFuY2hvcnMoa2V5KVxuICAgICAgY29uc29sZS5sb2coXCJcIilcbiAgICAgIHRoaXMucHJpbnRFbnRyeShzZWN0aW9ucywgYCR7bmFtZX0gPCR7dmFsdWUuc2hvcnRDb2RlfVRPQ18+YCwgY29kZXMpXG4gICAgICBjb25zb2xlLmxvZyhcIlwiKVxuICAgICAgaWYgKE9iamVjdC5rZXlzKHZhbHVlLmFjdGVzKS5sZW5ndGggPiAwKVxuICAgICAgICB0aGlzLnByaW50TGV2ZWwodmFsdWUuYWN0ZXMsIHNlY3Rpb25zLnN1YnN0cmluZygxKSwgYzJwW2tleV0sIGtleSlcbiAgICB9XG4gIH1cblxuICBwcmludENvZGVzKCkge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuY29kZXMpKVxuICAgICAgY29uc29sZS5sb2coYC4uIF8ke2tleX1UT0M6IGh0dHA6Ly9gKVxuICB9XG5cbiAgcHJpbnRBbmNob3JzSW5kZXgoKSB7XG4gICAgZm9yIChjb25zdCBjb2RlIG9mIEFycmF5LmZyb20odGhpcy5hbmNob3JzKSlcbiAgICAgIGNvbnNvbGUubG9nKGAqIDpyZWY6XFxgJHtjb2RlfSA8JHtjb2RlfT5cXGBgKVxuICB9XG5cbiAgZ2V0QWdncmVnYXRlZChwcm9jZWR1cmU6IHN0cmluZykge1xuICAgIGlmIChwcm9jZWR1cmUgPT0gXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiKSB7XG4gICAgICBjb25zdCByZW1hcHBlZCA9IE9iamVjdC5rZXlzKHRoaXMucmVtYXBwZWRQcm9jZWR1cmVzKS5qb2luKFwiLCBcIilcbiAgICAgIHJldHVybiBgIChhZ3LDqWdhdGlvbiBkZSAke3JlbWFwcGVkfSlgXG4gICAgfSBlbHNlIHJldHVybiBcIlwiXG4gIH1cblxuICBwcmludCgpOiB2b2lkIHtcbiAgICB0aGlzLmFuY2hvcnNQcmludGVkID0ge31cbiAgICBmb3IgKGNvbnN0IFtrZXksIGFjdGVzXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnByb2NlZHVyZXMpIGFzIFtcbiAgICAgIHN0cmluZyxcbiAgICAgIGFueSxcbiAgICBdW10pIHtcbiAgICAgIGNvbnN0IGNvZGUgPSBrZXkucmVwbGFjZSgvICsvZywgXCJfXCIpXG4gICAgICB0aGlzLmNvZGVzW2NvZGVdID0gbnVsbFxuICAgICAgY29uc3QgYWdncmVnYXRlZCA9IHRoaXMuZ2V0QWdncmVnYXRlZChrZXkpXG4gICAgICBjb25zdCB0aXRsZSA9IGBcXGAke2tleX0gPCR7Y29kZX1UT0NfPlxcYF9fJHthZ2dyZWdhdGVkfWBcbiAgICAgIGNvbnNvbGUubG9nKHRpdGxlKVxuICAgICAgY29uc3QgdW5kZXJsaW5lID0gbmV3IEFycmF5KHRpdGxlLmxlbmd0aCArIDEpLmpvaW4oXCI9XCIpXG4gICAgICBjb25zb2xlLmxvZyh1bmRlcmxpbmUpXG4gICAgICB0aGlzLnByaW50TGV2ZWwoYWN0ZXMsIFwiLX4uJ1wiLCB0aGlzLmNvZGUycGF0dGVybltrZXldLCBudWxsKVxuICAgIH1cbiAgICB0aGlzLnByaW50Q29kZXMoKVxuICAgIHRoaXMucHJpbnRBbmNob3JzSW5kZXgoKVxuICB9XG59XG5cbmZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogbnVtYmVyIHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICBpZiAob3B0aW9ucyA9PT0gbnVsbCkgcmV0dXJuIDFcbiAgbGV0IGRvYyA9IG5ldyBBY3Rlc0RvY3VtZW50YXRpb24oXG4gICAgIW9wdGlvbnNbXCJuby1zYW5pdHktY2hlY2tzXCJdLFxuICAgIG9wdGlvbnMudmVyYm9zZSxcbiAgKVxuICBkb2MuY29sbGVjdEZpbGVzKG9wdGlvbnMuZGF0YSlcbiAgZG9jLnByb2Nlc3NGaWxlcyhvcHRpb25zLmRhdGEpXG4gIGRvYy5wcmludCgpXG4gIHJldHVybiAwXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcImRvY3VtZW50X2Rvc3NpZXJzX2xlZ2lzbGF0aWZzLnRzXCIpKVxuICBwcm9jZXNzLmV4aXQobWFpbihwcm9jZXNzLmFyZ3YpKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxnQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLGFBQUEsR0FBQUgsT0FBQTtBQUFnRCxJQUFBSSxlQUFBO0FBQUEsU0FBQUwsdUJBQUFNLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxnQkFBQUEsR0FBQTtBQUFBLFNBQUFFLGVBQUFDLEdBQUEsRUFBQUMsQ0FBQSxXQUFBQyxlQUFBLENBQUFGLEdBQUEsS0FBQUcscUJBQUEsQ0FBQUgsR0FBQSxFQUFBQyxDQUFBLEtBQUFHLDJCQUFBLENBQUFKLEdBQUEsRUFBQUMsQ0FBQSxLQUFBSSxnQkFBQTtBQUFBLFNBQUFBLGlCQUFBLGNBQUFDLFNBQUE7QUFBQSxTQUFBSCxzQkFBQUksQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsV0FBQUYsQ0FBQSxnQ0FBQUcsTUFBQSxJQUFBSCxDQUFBLENBQUFHLE1BQUEsQ0FBQUMsUUFBQSxLQUFBSixDQUFBLDRCQUFBRSxDQUFBLFFBQUFHLENBQUEsRUFBQUMsQ0FBQSxFQUFBWixDQUFBLEVBQUFhLENBQUEsRUFBQUMsQ0FBQSxPQUFBQyxDQUFBLE9BQUFDLENBQUEsaUJBQUFoQixDQUFBLElBQUFRLENBQUEsR0FBQUEsQ0FBQSxDQUFBUyxJQUFBLENBQUFYLENBQUEsR0FBQVksSUFBQSxRQUFBWCxDQUFBLFFBQUFZLE1BQUEsQ0FBQVgsQ0FBQSxNQUFBQSxDQUFBLFVBQUFPLENBQUEsdUJBQUFBLENBQUEsSUFBQUosQ0FBQSxHQUFBWCxDQUFBLENBQUFpQixJQUFBLENBQUFULENBQUEsR0FB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
|
|
655
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVVc2FnZSIsIl9hc3NlcnQiLCJfZmlsZV9zeXN0ZW1zIiwiX0xlY3R1cmVNYXBwaW5nIiwiZSIsIl9fZXNNb2R1bGUiLCJfc2xpY2VkVG9BcnJheSIsInIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwiVHlwZUVycm9yIiwibCIsInQiLCJTeW1ib2wiLCJpdGVyYXRvciIsIm4iLCJpIiwidSIsImEiLCJmIiwibyIsImNhbGwiLCJuZXh0IiwiT2JqZWN0IiwiZG9uZSIsInB1c2giLCJ2YWx1ZSIsImxlbmd0aCIsIkFycmF5IiwiaXNBcnJheSIsIl90b0NvbnN1bWFibGVBcnJheSIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJmcm9tIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJfY2FsbFN1cGVyIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJfdHlwZW9mIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIlJlZmVyZW5jZUVycm9yIiwiQm9vbGVhbiIsInByb3RvdHlwZSIsInZhbHVlT2YiLCJzZXRQcm90b3R5cGVPZiIsImdldFByb3RvdHlwZU9mIiwiYmluZCIsIl9fcHJvdG9fXyIsIl9pbmhlcml0cyIsImNyZWF0ZSIsIndyaXRhYmxlIiwiY29uZmlndXJhYmxlIiwiZGVmaW5lUHJvcGVydHkiLCJfc2V0UHJvdG90eXBlT2YiLCJfZGVmaW5lUHJvcGVydGllcyIsImVudW1lcmFibGUiLCJfdG9Qcm9wZXJ0eUtleSIsImtleSIsIl9jcmVhdGVDbGFzcyIsIl9jbGFzc0NhbGxDaGVjayIsIl9kZWZpbmVQcm9wZXJ0eSIsIl90b1ByaW1pdGl2ZSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfbiIsIkYiLCJzIiwidG9TdHJpbmciLCJzbGljZSIsIm5hbWUiLCJ0ZXN0IiwicGFyc2VBcmdzIiwiYXJndiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdE9wdGlvbiIsIm11bHRpcGxlIiwidHlwZSIsInNlY3Rpb25zIiwiaGVhZGVyIiwiY29udGVudCIsIm9wdGlvbkxpc3QiLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwiY29uc29sZSIsImVycm9yIiwiaGVscCIsInVzYWdlIiwiY29tbWFuZExpbmVVc2FnZSIsIndhcm4iLCJlcVNldCIsImFzIiwiYnMiLCJzaXplIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJoYXMiLCJlcnIiLCJDb2RlMlBhdHRlcm4iLCJwYXR0ZXJuIiwiY2hpbGRyZW4iLCJfcGF0dGVybl8iLCJfbWF0Y2hfY291bnRfIiwiYXNzaWduIiwiQ29kZTJQYXR0ZXJuQ29tRm9uZCIsIl9Db2RlMlBhdHRlcm4yIiwiTGVjdHVyZU1hcHBpbmciLCJTZXQiLCJhZGQiLCJhY3RlIiwiY29kZXMiLCJjb2RlQWN0ZSIsImdldFR5cGUiLCJsaWJlbGxlQWN0ZSIsIm5vbUNhbm9uaXF1ZSIsImxpYmVsbGUiLCJyZW1hcCIsInR5cGVzIiwibWVyZ2VDb2RlcyIsIl9pIiwiX0FycmF5JGZyb20iLCJjIiwicHJpbnRBbmNob3JzIiwiX2kyIiwiX0FycmF5JGZyb20yIiwiY29kZSIsImxvZyIsImNvbmNhdCIsImdldENvZGVzIiwiam9pbiIsImlzTGVjdHVyZSIsIm1hdGNoIiwiY29kZXNfbGVjdHVyZV9yZWdleHAiLCJFcnJvciIsIm1hcCIsInJlcGxhY2UiLCJnZXRDb2RlQWN0ZSIsIlJlZ0V4cCIsImNvZGVzX2xlY3R1cmUiLCJMZWN0dXJlTWFwcGVyIiwibWFwcGluZyIsImNvbGxlY3QiLCJ1bmRlZmluZWQiLCJsZWN0dXJlcyIsIkFjdGVzRG9jdW1lbnRhdGlvbiIsInNhbml0eUNoZWNrcyIsInZlcmJvc2UiLCJhcmd1bWVudHMiLCJsZWN0dXJlIiwiQ01QIiwiQ0MiLCJQUk9NIiwiQU4yMSIsIkFOTFVOSSIsIlLDqXNvbHV0aW9uIiwiQU4yMCIsIkVVIiwiSW1tdW5pdMOpIiwicHJvY2VkdXJlcyIsImNvZGUycGF0dGVybiIsIndhbGtGaWxlcyIsImRhdGEiLCJhY3Rpb24iLCJfaXRlcmF0b3IyIiwiZ2V0RmlsZXMiLCJfc3RlcDIiLCJmaWxlIiwiZG9zc2llciIsImxvYWQiLCJwcm9jZWR1cmUiLCJyZW1hcFByb2NlZHVyZSIsInByb2NlZHVyZVBhcmxlbWVudGFpcmUiLCJhY3Rlc0xlZ2lzbGF0aWZzIiwiY29sbGVjdEZpbGVzIiwiX3RoaXMiLCJfYWN0ZXMiLCJfYzJwIiwiX3BhcmVudCIsInByb2Nlc3NGaWxlcyIsIl90aGlzMiIsImFjdGVzIiwiYzJwIiwicGFyZW50IiwibWVyZ2UiLCJ2YWxpZGF0ZSIsInJlbWFwQWN0ZXMiLCJyZXN1bHRzIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsImxlY3R1cmVNYXBwZXIiLCJjb2xsZWN0QWN0ZXMiLCJfaXRlcmF0b3I0IiwiX3N0ZXA0IiwibWVyZ2VfcHJvY2VkdXJlcyIsIk1hcCIsInJlbWFwcGVkUHJvY2VkdXJlcyIsImdldCIsIm9yZGVyZWRDb2RlcyIsIm9yZGVyZWQiLCJ4IiwiYXNzZXJ0IiwidmFsaWRhdGVDaHJvbm9sb2d5Iiwic2VxdWVuY2UiLCJtZXJnZUFjdGUiLCJzaG9ydENvZGUiLCJ4c2lUeXBlIiwiX2l0ZXJhdG9yNSIsIl9zdGVwNSIsIl9pdGVyYXRvcjYiLCJfc3RlcDYiLCJ2YWxpZGF0ZUxldmVsIiwicGF0aCIsIl9pMyIsIl9hcnIiLCJlbnRyaWVzIiwiX2FyciRfaSIsInByaW50RW50cnkiLCJlbnRyeSIsInRpdGxlIiwidW5kZXJsaW5lIiwiYWRkQW5jaG9ycyIsImFuY2hvcnNQcmludGVkIiwiYW5jaG9ycyIsInJlbmFtZUNNUCIsInN0YXJ0c1dpdGgiLCJlbmRzV2l0aCIsInByaW50TGV2ZWwiLCJrZXlzIiwiX2l0ZXJhdG9yNyIsIl9zdGVwNyIsInN1YnN0cmluZyIsInByaW50Q29kZXMiLCJfaTQiLCJfT2JqZWN0JGtleXMiLCJwcmludEFuY2hvcnNJbmRleCIsIl9pNSIsIl9BcnJheSRmcm9tMyIsImdldEFnZ3JlZ2F0ZWQiLCJyZW1hcHBlZCIsInByaW50IiwiX2k2IiwiX2FycjIiLCJfYXJyMiRfaSIsImFnZ3JlZ2F0ZWQiLCJtYWluIiwiZG9jIiwicHJvY2VzcyIsImV4aXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9kb2N1bWVudF9kb3NzaWVyc19sZWdpc2xhdGlmcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgY29tbWFuZExpbmVVc2FnZSBmcm9tIFwiY29tbWFuZC1saW5lLXVzYWdlXCJcbmltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5pbXBvcnQgeyBsb2FkLCBnZXRGaWxlcyB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwicGF0aG5hbWUgdG8gYSBKU09OIGZpbGUgb3IgYSBnbG9iIHBhdHRlcm4gdG8gSlNPTiBmaWxlc1wiLFxuICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgbmFtZTogXCJkYXRhXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiBcIm5vLXNhbml0eS1jaGVja3NcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZXNjcmlwdGlvbjogXCJEbyBub3QgcGVyZm9ybSBzYW5pdHkgY2hlY2tzLlwiLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVzY3JpcHRpb246IFwiaW5jcmVhc2UgdmVyYm9zaXR5XCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiBcImhlbHBcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlByaW50IHRoaXMgdXNhZ2UgZ3VpZGUuXCIsXG4gICAgfSxcbiAgXVxuICBjb25zdCBzZWN0aW9ucyA9IFtcbiAgICB7XG4gICAgICBoZWFkZXI6IFwiQWlkZSDDoCBsYSBkb2N1bWVudGF0aW9uIGR1IGRvc3NpZXIgbMOpZ2lzbGF0aWZcIixcbiAgICAgIGNvbnRlbnQ6IFwiR8OpbsOocmUgdW5lIGhpw6lyYXJjaGllIGRlcyBhY3RlcyBsw6lnaXNsYXRpZnNcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlYWRlcjogXCJPcHRpb25zXCIsXG4gICAgICBvcHRpb25MaXN0OiBvcHRpb25zRGVmaW5pdGlvbnMsXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG4gIGlmICghKFwiaGVscFwiIGluIG9wdGlvbnMpICYmICEoXCJkYXRhXCIgaW4gb3B0aW9ucykpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiLS1kYXRhIGlzIG1hbmRhdG9yeVwiKVxuICAgIG9wdGlvbnMuaGVscCA9IHRydWVcbiAgfVxuICBpZiAoXCJoZWxwXCIgaW4gb3B0aW9ucykge1xuICAgIGNvbnN0IHVzYWdlID0gY29tbWFuZExpbmVVc2FnZShzZWN0aW9ucylcbiAgICBjb25zb2xlLndhcm4odXNhZ2UpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiBlcVNldChhczogU2V0PHN0cmluZz4sIGJzOiBTZXQ8c3RyaW5nPik6IGJvb2xlYW4ge1xuICBpZiAoYXMuc2l6ZSAhPT0gYnMuc2l6ZSkgcmV0dXJuIGZhbHNlXG4gIGZvciAodmFyIGEgb2YgYXMpIGlmICghYnMuaGFzKGEpKSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIHRydWVcbn1cblxuY2xhc3MgQ29kZTJQYXR0ZXJuIHtcbiAgX3BhdHRlcm5fOiBhbnlcbiAgX21hdGNoX2NvdW50XzogbnVtYmVyXG4gIGNvbnN0cnVjdG9yKHBhdHRlcm46IGFueSwgY2hpbGRyZW46IGFueSkge1xuICAgIHRoaXMuX3BhdHRlcm5fID0gcGF0dGVyblxuICAgIHRoaXMuX21hdGNoX2NvdW50XyA9IDBcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGNoaWxkcmVuKVxuICB9XG59XG5cbmNsYXNzIENvZGUyUGF0dGVybkNvbUZvbmQgZXh0ZW5kcyBDb2RlMlBhdHRlcm4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIl4vU0FJU0lFLygvTk9NSU4vKSooL1JFVU5JT04vKSooL1JBUFBPUlQvKSokXCIsIHt9KVxuICB9XG59XG5cbmNsYXNzIExlY3R1cmVNYXBwaW5nIHtcbiAgbGliZWxsZTogYW55ID0ge31cbiAgY29kZXM6IGFueSA9IG5ldyBTZXQoKVxuXG4gIHN0YXRpYyBjb2Rlc19sZWN0dXJlOiBzdHJpbmdbXSA9IFtcbiAgICBcIkFOMVwiLFxuICAgIFwiU04xXCIsXG4gICAgXCJBTk5MRUNcIixcbiAgICBcIlNOTkxFQ1wiLFxuICAgIFwiQU5MREVGXCIsXG4gICAgXCJBTjJcIixcbiAgICBcIlNOMlwiLFxuICAgIFwiU04zXCIsXG4gIF1cbiAgc3RhdGljIGNvZGVzX2xlY3R1cmVfcmVnZXhwOiBhbnkgPSBuZXcgUmVnRXhwKFxuICAgIFwiXig/OlwiICsgTGVjdHVyZU1hcHBpbmcuY29kZXNfbGVjdHVyZS5qb2luKFwifFwiKSArIFwiKSgtLiopPyRcIixcbiAgKVxuXG4gIHN0YXRpYyBpc0xlY3R1cmUoYWN0ZTogYW55KSB7XG4gICAgcmV0dXJuIGFjdGUuY29kZUFjdGUubWF0Y2goTGVjdHVyZU1hcHBpbmcuY29kZXNfbGVjdHVyZV9yZWdleHApXG4gIH1cblxuICBzdGF0aWMgZ2V0VHlwZShhY3RlOiBhbnkpIHtcbiAgICBpZiAoYWN0ZS5jb2RlQWN0ZS5tYXRjaCgvXkFOLykpIHJldHVybiBcIkFOXCJcbiAgICBlbHNlIGlmIChhY3RlLmNvZGVBY3RlLm1hdGNoKC9eU04vKSkgcmV0dXJuIFwiU05cIlxuICAgIGVsc2UgdGhyb3cgRXJyb3IoYCR7YWN0ZS5jb2RlQWN0ZX0gZG9lcyBub3Qgc3RhcnQgd2l0aCBBTiBvciBTTmApXG4gIH1cblxuICBzdGF0aWMgbWFwKGNvZGVBY3RlOiBhbnkpIHtcbiAgICByZXR1cm4gY29kZUFjdGUucmVwbGFjZShMZWN0dXJlTWFwcGluZy5jb2Rlc19sZWN0dXJlX3JlZ2V4cCwgYGxlY3R1cmUkMWApXG4gIH1cblxuICBzdGF0aWMgZ2V0Q29kZUFjdGUoYWN0ZTogYW55KSB7XG4gICAgaWYgKCFMZWN0dXJlTWFwcGluZy5pc0xlY3R1cmUoYWN0ZSkpIHJldHVyblxuXG4gICAgcmV0dXJuIExlY3R1cmVNYXBwaW5nLm1hcChhY3RlLmNvZGVBY3RlKVxuICB9XG5cbiAgYWRkKGFjdGU6IGFueSkge1xuICAgIHRoaXMuY29kZXMuYWRkKGFjdGUuY29kZUFjdGUpXG5cbiAgICBjb25zdCB0eXBlID0gTGVjdHVyZU1hcHBpbmcuZ2V0VHlwZShhY3RlKVxuXG4gICAgaWYgKCEoYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWUgaW4gdGhpcy5saWJlbGxlKSlcbiAgICAgIHRoaXMubGliZWxsZVthY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZV0gPSBuZXcgU2V0KClcbiAgICB0aGlzLmxpYmVsbGVbYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWVdLmFkZCh0eXBlKVxuICB9XG5cbiAgcmVtYXAoYWN0ZTogYW55LCBjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgYWN0ZS5jb2RlQWN0ZSA9IGNvZGVBY3RlXG5cbiAgICBsZXQgdHlwZXMgPSB0aGlzLmxpYmVsbGVbYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWVdXG4gICAgaWYgKCEodHlwZXMuaGFzKFwiU05cIikgJiYgdHlwZXMuaGFzKFwiQU5cIikpKSB7XG4gICAgICBpZiAodHlwZXMuaGFzKFwiU05cIikpIGFjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlICs9IFwiIChTw6luYXQpXCJcbiAgICAgIGVsc2UgaWYgKHR5cGVzLmhhcyhcIkFOXCIpKVxuICAgICAgICBhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZSArPSBcIiAoQXNzZW1ibMOpZSBOYXRpb25hbGUpXCJcbiAgICB9XG4gIH1cblxuICBtZXJnZUNvZGVzKGNvZGVzOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IGMgb2YgQXJyYXkuZnJvbSh0aGlzLmNvZGVzKSkgY29kZXMuYWRkKGMpXG4gIH1cblxuICBwcmludEFuY2hvcnMoKSB7XG4gICAgZm9yIChjb25zdCBjb2RlIG9mIEFycmF5LmZyb20odGhpcy5jb2RlcykpIGNvbnNvbGUubG9nKGAuLiBfJHtjb2RlfTpgKVxuICB9XG5cbiAgZ2V0Q29kZXMoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5jb2Rlcykuam9pbihcIixcIilcbiAgfVxufVxuXG5jbGFzcyBMZWN0dXJlTWFwcGVyIHtcbiAgbWFwcGluZzogYW55ID0ge31cblxuICBoYXMoY29kZUFjdGU6IHN0cmluZykge1xuICAgIHJldHVybiBjb2RlQWN0ZSBpbiB0aGlzLm1hcHBpbmdcbiAgfVxuXG4gIGNvbGxlY3QoYWN0ZTogYW55KSB7XG4gICAgY29uc3QgY29kZUFjdGUgPSBMZWN0dXJlTWFwcGluZy5nZXRDb2RlQWN0ZShhY3RlKVxuICAgIGlmIChjb2RlQWN0ZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBsZWN0dXJlcyA9IHRoaXMubWFwcGluZ1xuICAgICAgaWYgKCEoY29kZUFjdGUgaW4gbGVjdHVyZXMpKSBsZWN0dXJlc1tjb2RlQWN0ZV0gPSBuZXcgTGVjdHVyZU1hcHBpbmcoKVxuICAgICAgbGVjdHVyZXNbY29kZUFjdGVdLmFkZChhY3RlKVxuICAgIH1cbiAgfVxuXG4gIHJlbWFwKGFjdGU6IGFueSkge1xuICAgIGNvbnN0IGNvZGVBY3RlID0gTGVjdHVyZU1hcHBpbmcuZ2V0Q29kZUFjdGUoYWN0ZSlcbiAgICBpZiAoY29kZUFjdGUgIT0gdW5kZWZpbmVkKSB0aGlzLm1hcHBpbmdbY29kZUFjdGVdLnJlbWFwKGFjdGUsIGNvZGVBY3RlKVxuICB9XG5cbiAgbWVyZ2VDb2Rlcyhjb2RlczogYW55LCBjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5tZXJnZUNvZGVzKGNvZGVzKVxuICB9XG5cbiAgcHJpbnRBbmNob3JzKGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm1hcHBpbmdbY29kZUFjdGVdLnByaW50QW5jaG9ycygpXG4gIH1cblxuICBnZXRDb2Rlcyhjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0uZ2V0Q29kZXMoKVxuICB9XG59XG5cbmNsYXNzIEFjdGVzRG9jdW1lbnRhdGlvbiB7XG4gIHZlcmJvc2U6IGJvb2xlYW5cbiAgc2FuaXR5Q2hlY2tzOiBib29sZWFuXG4gIGxlY3R1cmVNYXBwZXI6IGFueSA9IG5ldyBMZWN0dXJlTWFwcGVyKClcbiAgcmVtYXBwZWRQcm9jZWR1cmVzOiBhbnkgPSB7fVxuICBhbmNob3JzUHJpbnRlZDogYW55ID0ge31cbiAgYW5jaG9yczogYW55ID0gbmV3IFNldCgpXG4gIGNvZGVzOiBhbnkgPSB7fVxuICBwcm9jZWR1cmVzOiBhbnkgPSBudWxsXG4gIGNvZGUycGF0dGVybjogYW55ID0gbmV3IENvZGUyUGF0dGVybihudWxsLCB7XG4gICAgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeKCgoL2xlY3R1cmUvKSspfCgoL2xlY3R1cmUvKSsvQ01QLygvbGVjdHVyZS8pKikpKC9DQy8pPygvUFJPTS8pPygvQU4tQVBQTEkvKT8kXCIsXG4gICAgICB7XG4gICAgICAgIGxlY3R1cmU6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgXCJeKC9ERVBPVC8pPygvRFBUTEVUVFJFQ1QvKT8oL0VUSS8pPygvQVZDRS8pPygvREdWVC8pPygvQUNJTi8pPygvTU9USU9OLykqKC9QUk9DQUNDLyk/KC9DT00vKT8oKC9ERUJBVFMvKSspPygvUlRSSU5JLyk/JFwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwibGVjdHVyZS1DT01cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0ZPTkQvfC9BVklTLykrJFwiLCB7XG4gICAgICAgICAgICAgIFwibGVjdHVyZS1DT00tRk9ORFwiOiBuZXcgQ29kZTJQYXR0ZXJuQ29tRm9uZCgpLFxuICAgICAgICAgICAgICBcImxlY3R1cmUtQ09NLUFWSVNcIjogbmV3IENvZGUyUGF0dGVybkNvbUZvbmQoKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXCJsZWN0dXJlLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgICBcIl4oL1NFQU5DRS8pKigoL01PVElPTi8pPygvTU9USU9OLVZPVEUvKSspPygvREVDLyk/JFwiLFxuICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICAgQ01QOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvREVQT1QvfC9TQUlTSUUvKXsxLDJ9KC9DT00vKT8oL0RFQy8pPygvREVCQVRTLUFOLy9ERUJBVFMtU04vKT9cIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIkNNUC1DT01cIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgICAgXCJeKC9OT01JTi8pPygvUkFQUE9SVC1BTi98L1JBUFBPUlQtU04vKXsyfSRcIixcbiAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgXCJDTVAtREVCQVRTLUFOXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSooL0RFQy8pPyRcIiwge30pLFxuICAgICAgICAgICAgXCJDTVAtREVCQVRTLVNOXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSooL0RFQy8pPyRcIiwge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICAgIENDOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0FJU0lFLykrKC9DT05DTFVTSU9OLyk/JFwiLCB7fSksXG4gICAgICAgIFBST006IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9QVUIvKT8kXCIsIHt9KSxcbiAgICAgICAgXCJBTi1BUFBMSVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvUkFQUE9SVC8pPyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiQWxsb2N1dGlvbiBkdSBQcsOpc2lkZW50IGRlIGwnQXNzZW1ibMOpZSBuYXRpb25hbGVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXi9BTjIxLyRcIixcbiAgICAgIHtcbiAgICAgICAgQU4yMTogbmV3IENvZGUyUGF0dGVybihcIl4oL0FQQU4vKT8kXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIlLDqXNvbHV0aW9uIEFydGljbGUgMzQtMVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU5MVU5JLyk/JFwiLCB7XG4gICAgICBBTkxVTkk6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPygvREVCQVRTLyk/KC9SVFJJTkkvKT8kXCIsIHtcbiAgICAgICAgXCJBTkxVTkktREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSsoL0RFQy8pPyRcIiwge30pLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgUsOpc29sdXRpb246IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTkxVTkkvKT8oL0NDLyk/JFwiLCB7XG4gICAgICBBTkxVTkk6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPygvQ09NLyk/KC9ERUJBVFMvfC9SVFJJTkkvKT8kXCIsIHtcbiAgICAgICAgXCJBTkxVTkktQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9DQUUvKT8oL0ZPTkQvKT8kXCIsIHtcbiAgICAgICAgICBcIkFOTFVOSS1DT00tRk9ORFwiOiBuZXcgQ29kZTJQYXR0ZXJuQ29tRm9uZCgpLFxuICAgICAgICAgIFwiQU5MVU5JLUNPTS1DQUVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgIFwiXigvU0FJU0lFLyk/KC9OT01JTi8pPygvUkVVTklPTi8pPygvUkFQUE9SVC8pPygvREVDLyk/JFwiLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSksXG4gICAgICAgIFwiQU5MVU5JLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgICAgQ0M6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TQUlTSUUvKT8oL0NPTkNMVVNJT04vKT8kXCIsIHt9KSxcbiAgICB9KSxcbiAgICBcIlJhcHBvcnQgZCdpbmZvcm1hdGlvbiBzYW5zIG1pc3Npb25cIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXigvQU4yMC8pPygvRVUvKT8kXCIsXG4gICAgICB7XG4gICAgICAgIEFOMjA6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9SQVBQT1JULyk/JFwiLCB7fSksXG4gICAgICAgIEVVOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVDLykrJFwiLCB7fSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJNaXNzaW9uIGQnaW5mb3JtYXRpb25cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOMjAvKT8kXCIsIHtcbiAgICAgIEFOMjA6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9NSVNJTkYvKT8kXCIsIHtcbiAgICAgICAgXCJBTjIwLU1JU0lORlwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvQ1JFQS8pPygvTk9NSU4vKT8oL1JBUFBPUlQvKT8kXCIsXG4gICAgICAgICAge30sXG4gICAgICAgICksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBcIkNvbW1pc3Npb24gZCdlbnF1w6p0ZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU4yMC8pPyRcIiwge1xuICAgICAgQU4yMDogbmV3IENvZGUyUGF0dGVybihcIl4oL0NPTUVOUS8pPyRcIiwge1xuICAgICAgICBcIkFOMjAtQ09NRU5RXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgXCJeKC9DUkVBLyk/KC9OT01JTi8pPygvUkFQUE9SVC8pPyRcIixcbiAgICAgICAgICB7fSxcbiAgICAgICAgKSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFwiRW5nYWdlbWVudCBkZSBsYSByZXNwb25zYWJpbGl0w6kgZ291dmVybmVtZW50YWxlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4vQU4yMS8kXCIsXG4gICAgICB7XG4gICAgICAgIEFOMjE6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKCgoL01PVElPTi8pKi9ERUJBVFMvKXwoL0RHVlQvKSl7MSwyfSRcIiwge1xuICAgICAgICAgIFwiQU4yMS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvTU9USU9OLVZPVEUvKSokXCIsIHt9KSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJNb3Rpb24gcsOpZsOpcmVuZGFpcmVcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL2xlY3R1cmUvKSskXCIsIHtcbiAgICAgIGxlY3R1cmU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPygvQ09NLyk/KC9ERUJBVFMvKT8kXCIsIHtcbiAgICAgICAgXCJsZWN0dXJlLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvRk9ORC8pPyRcIiwge1xuICAgICAgICAgIFwibGVjdHVyZS1DT00tRk9ORFwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgXCJeKC9TQUlTSUUvKT8oL05PTUlOLykqKC9SQVBQT1JULykqJFwiLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSksXG4gICAgICAgIFwibGVjdHVyZS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFQy8pPyRcIiwge30pLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgSW1tdW5pdMOpOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU5MVU5JLykrJFwiLCB7XG4gICAgICBBTkxVTkk6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPygvQ09NLyk/KC9ERUJBVFMvKT8oL1JUUklOSS8pPyRcIiwge1xuICAgICAgICBcIkFOTFVOSS1DT01cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0ZPTkQvKT8kXCIsIHtcbiAgICAgICAgICBcIkFOTFVOSS1DT00tRk9ORFwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgXCJeKC9TQUlTSUUvKT8oL05PTUlOLykqKC9SQVBQT1JULykqJFwiLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSksXG4gICAgICAgIFwiQU5MVU5JLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLyk/KC9ERUMvKSRcIiwge30pLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgXCJSZXNwb25zYWJpbGl0w6kgcMOpbmFsZSBkdSBwcsOpc2lkZW50IGRlIGxhIHLDqXB1YmxpcXVlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4vbGVjdHVyZS8kXCIsXG4gICAgICB7XG4gICAgICAgIGxlY3R1cmU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPygvUkVDQlVSRUFVLyk/JFwiLCB7fSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJQcm9wb3NpdGlvbiBkZSBsb2kgcHLDqXNlbnTDqWUgZW4gYXBwbGljYXRpb24gZGUgbCdhcnRpY2xlIDExIGRlIGxhIENvbnN0aXR1dGlvblwiOlxuICAgICAgbmV3IENvZGUyUGF0dGVybihcIl4vbGVjdHVyZS8kXCIsIHtcbiAgICAgICAgbGVjdHVyZTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgfSlcblxuICBjb25zdHJ1Y3RvcihzYW5pdHlDaGVja3M6IGJvb2xlYW4sIHZlcmJvc2U6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHRoaXMudmVyYm9zZSA9IHZlcmJvc2VcbiAgICB0aGlzLnNhbml0eUNoZWNrcyA9IHNhbml0eUNoZWNrc1xuICAgIHRoaXMucHJvY2VkdXJlcyA9IHt9XG4gICAgdGhpcy5jb2RlMnBhdHRlcm4uX21hdGNoX2NvdW50XysrXG4gIH1cblxuICB3YWxrRmlsZXMoZGF0YTogc3RyaW5nW10sIGFjdGlvbjogYW55KSB7XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGdldEZpbGVzKGRhdGEpKSB7XG4gICAgICBjb25zdCBkb3NzaWVyID0gbG9hZChmaWxlKVxuICAgICAgbGV0IHByb2NlZHVyZTogc3RyaW5nID0gdGhpcy5yZW1hcFByb2NlZHVyZShcbiAgICAgICAgZG9zc2llci5wcm9jZWR1cmVQYXJsZW1lbnRhaXJlLmxpYmVsbGUsXG4gICAgICApXG4gICAgICBpZiAoIShwcm9jZWR1cmUgaW4gdGhpcy5wcm9jZWR1cmVzKSkgdGhpcy5wcm9jZWR1cmVzW3Byb2NlZHVyZV0gPSB7fVxuICAgICAgYWN0aW9uKFxuICAgICAgICB0aGlzLnByb2NlZHVyZXNbcHJvY2VkdXJlXSxcbiAgICAgICAgZG9zc2llci5hY3Rlc0xlZ2lzbGF0aWZzLFxuICAgICAgICB0aGlzLmNvZGUycGF0dGVybltwcm9jZWR1cmVdLFxuICAgICAgICBudWxsLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGNvbGxlY3RGaWxlcyhkYXRhOiBzdHJpbmdbXSkge1xuICAgIHRoaXMud2Fsa0ZpbGVzKFxuICAgICAgZGF0YSxcbiAgICAgIChfYWN0ZXM6IGFueSwgYWN0ZXNMZWdpc2xhdGlmczogYW55LCBfYzJwOiBhbnksIF9wYXJlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmNvbGxlY3QoYWN0ZXNMZWdpc2xhdGlmcylcbiAgICAgIH0sXG4gICAgKVxuICB9XG5cbiAgcHJvY2Vzc0ZpbGVzKGRhdGE6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy53YWxrRmlsZXMoXG4gICAgICBkYXRhLFxuICAgICAgKGFjdGVzOiBhbnksIGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMubWVyZ2UoYWN0ZXMsIGFjdGVzTGVnaXNsYXRpZnMsIGMycCwgcGFyZW50KVxuICAgICAgfSxcbiAgICApXG4gICAgaWYgKHRoaXMuc2FuaXR5Q2hlY2tzKSB0aGlzLnZhbGlkYXRlKClcbiAgfVxuXG4gIHJlbWFwQWN0ZXMoYWN0ZXM6IGFueSk6IGFueSB7XG4gICAgbGV0IHJlc3VsdHMgPSBbXVxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBhY3Rlcykge1xuICAgICAgdGhpcy5sZWN0dXJlTWFwcGVyLnJlbWFwKGFjdGUpXG5cbiAgICAgIC8vIENDLVNBSVNJRS0gc3VmZml4IGRvZXMgbm90IGltcGx5IGEgaGllcmFyY2h5XG4gICAgICBhY3RlLmNvZGVBY3RlID0gYWN0ZS5jb2RlQWN0ZS5yZXBsYWNlKC9eQ0MtU0FJU0lFLiovLCBcIkNDLVNBSVNJRVwiKVxuXG4gICAgICByZXN1bHRzLnB1c2goYWN0ZSlcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHNcbiAgfVxuXG4gIGNvbGxlY3RBY3RlcyhhY3RlczogYW55KTogYW55IHtcbiAgICBsZXQgcmVzdWx0cyA9IFtdXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGFjdGVzKSB7XG4gICAgICB0aGlzLmxlY3R1cmVNYXBwZXIuY29sbGVjdChhY3RlKVxuXG4gICAgICByZXN1bHRzLnB1c2goYWN0ZSlcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHNcbiAgfVxuXG4gIHJlbWFwUHJvY2VkdXJlKHByb2NlZHVyZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtZXJnZV9wcm9jZWR1cmVzOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcChbXG4gICAgICBbXCJQcm9wb3NpdGlvbiBkZSBsb2kgb3JkaW5haXJlXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXCJQcm9qZXQgZGUgbG9pIG9yZGluYWlyZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1xuICAgICAgICBcIlByb2pldCBkZSByYXRpZmljYXRpb24gZGVzIHRyYWl0w6lzIGV0IGNvbnZlbnRpb25zXCIsXG4gICAgICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIixcbiAgICAgIF0sXG4gICAgICBbXCJQcm9qZXQgb3UgcHJvcG9zaXRpb24gZGUgbG9pIG9yZ2FuaXF1ZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1xuICAgICAgICBcIlByb2pldCBvdSBwcm9wb3NpdGlvbiBkZSBsb2kgY29uc3RpdHV0aW9ubmVsbGVcIixcbiAgICAgICAgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiLFxuICAgICAgXSxcbiAgICAgIFtcIlByb2pldCBkZSBsb2kgZGUgZmluYW5jZXMgZGUgbCdhbm7DqWVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcIlByb2pldCBkZSBsb2kgZGUgZmluYW5jZXMgcmVjdGlmaWNhdGl2ZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1xuICAgICAgICBcIlByb2pldCBkZSBsb2kgZGUgZmluYW5jZW1lbnQgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCIsXG4gICAgICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIixcbiAgICAgIF0sXG4gICAgXSlcbiAgICBpZiAobWVyZ2VfcHJvY2VkdXJlcy5oYXMocHJvY2VkdXJlKSkge1xuICAgICAgdGhpcy5yZW1hcHBlZFByb2NlZHVyZXNbcHJvY2VkdXJlXSA9IG51bGxcbiAgICAgIHJldHVybiBtZXJnZV9wcm9jZWR1cmVzLmdldChwcm9jZWR1cmUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwcm9jZWR1cmVcbiAgICB9XG4gIH1cblxuICAvLyByZXR1cm4gdGhlIGNvZGVBY3RlcyBpbiB0aGUgc2FtZSBvcmRlciB0aGV5IGFwcGVhciBpbiB0aGUgcmVnZXhwXG4gIG9yZGVyZWRDb2Rlcyhjb2RlczogYW55LCBjMnA6IGFueSwgcGFyZW50OiBzdHJpbmcpOiBTZXQ8c3RyaW5nPiB7XG4gICAgY29kZXMgPSBuZXcgU2V0KGNvZGVzKVxuICAgIGlmICghdGhpcy5zYW5pdHlDaGVja3MpIHJldHVybiBjb2Rlc1xuICAgIGxldCBvcmRlcmVkID0gYzJwW1wiX3BhdHRlcm5fXCJdLm1hdGNoKG5ldyBSZWdFeHAoXCIvLio/L1wiLCBcImdcIikpXG4gICAgb3JkZXJlZCA9IG9yZGVyZWQubWFwKCh4OiBzdHJpbmcpID0+IHgucmVwbGFjZShuZXcgUmVnRXhwKFwiLyguKikvXCIpLCBcIiQxXCIpKVxuICAgIGlmIChwYXJlbnQgIT0gbnVsbCkgb3JkZXJlZCA9IG9yZGVyZWQubWFwKCh4OiBzdHJpbmcpID0+IGAke3BhcmVudH0tJHt4fWApXG4gICAgb3JkZXJlZCA9IG5ldyBTZXQob3JkZXJlZClcbiAgICBhc3NlcnQoZXFTZXQob3JkZXJlZCwgY29kZXMpLCBgJHtbLi4ub3JkZXJlZF19ICE9ICR7Wy4uLmNvZGVzXX1gKVxuICAgIHJldHVybiBvcmRlcmVkXG4gIH1cblxuICB2YWxpZGF0ZUNocm9ub2xvZ3koYWN0ZXNMZWdpc2xhdGlmczogYW55LCBjMnA6IGFueSwgcGFyZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwYXR0ZXJuID0gYzJwW1wiX3BhdHRlcm5fXCJdXG4gICAgY29uc3Qgc2VxdWVuY2UgPSBhY3Rlc0xlZ2lzbGF0aWZzXG4gICAgICAubWFwKCh4OiBhbnkpID0+IGAvJHt4LmNvZGVBY3RlfS9gLnJlcGxhY2UoYC8ke3BhcmVudH0tYCwgXCIvXCIpKVxuICAgICAgLmpvaW4oXCJcIilcbiAgICBhc3NlcnQoXG4gICAgICBzZXF1ZW5jZS5tYXRjaChuZXcgUmVnRXhwKHBhdHRlcm4pKSxcbiAgICAgIGAke3BhdHRlcm59IGRvZXMgbm90IG1hdGNoICR7c2VxdWVuY2V9YCxcbiAgICApXG4gICAgYzJwLl9tYXRjaF9jb3VudF8rK1xuICB9XG5cbiAgbWVyZ2VBY3RlKGFjdGVzOiBhbnksIGFjdGU6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IGNvZGU6IHN0cmluZyA9IGFjdGUuY29kZUFjdGVcbiAgICBsZXQgc2hvcnRDb2RlOiBzdHJpbmcgPSBjb2RlLnJlcGxhY2UobmV3IFJlZ0V4cChgXiR7cGFyZW50fS1gKSwgXCJcIilcbiAgICBzaG9ydENvZGUgPSBzaG9ydENvZGUucmVwbGFjZSgvLShBTnxTTikkLywgXCJcIilcbiAgICB0aGlzLmNvZGVzW3Nob3J0Q29kZV0gPSBudWxsXG4gICAgbGV0IG5hbWU6IHN0cmluZyA9IGFjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXG4gICAgaWYgKCEoY29kZSBpbiBhY3RlcykpIHtcbiAgICAgIGFjdGVzW2NvZGVdID0ge1xuICAgICAgICB0eXBlOiBhY3RlLnhzaVR5cGUsXG4gICAgICAgIG5hbWU6IG5ldyBTZXQoW25hbWVdKSxcbiAgICAgICAgc2hvcnRDb2RlOiBzaG9ydENvZGUsXG4gICAgICAgIGFjdGVzOiB7fSxcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYWN0ZXNbY29kZV0ubmFtZS5hZGQobmFtZSlcbiAgICB9XG4gICAgaWYgKFwiYWN0ZXNMZWdpc2xhdGlmc1wiIGluIGFjdGUpXG4gICAgICB0aGlzLm1lcmdlKGFjdGVzW2NvZGVdLmFjdGVzLCBhY3RlLmFjdGVzTGVnaXNsYXRpZnMsIGMycFtjb2RlXSwgY29kZSlcbiAgfVxuXG4gIG1lcmdlKGFjdGVzOiBhbnksIGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgbCA9IHRoaXMucmVtYXBBY3RlcyhhY3Rlc0xlZ2lzbGF0aWZzKVxuICAgIHRoaXMudmFsaWRhdGVDaHJvbm9sb2d5KGwsIGMycCwgcGFyZW50KVxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBsKSB0aGlzLm1lcmdlQWN0ZShhY3RlcywgYWN0ZSwgYzJwLCBwYXJlbnQpXG4gIH1cblxuICBjb2xsZWN0KGFjdGVzTGVnaXNsYXRpZnM6IGFueSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgYWN0ZSBvZiB0aGlzLmNvbGxlY3RBY3RlcyhhY3Rlc0xlZ2lzbGF0aWZzKSlcbiAgICAgIGlmIChcImFjdGVzTGVnaXNsYXRpZnNcIiBpbiBhY3RlKSB0aGlzLmNvbGxlY3QoYWN0ZS5hY3Rlc0xlZ2lzbGF0aWZzKVxuICB9XG5cbiAgdmFsaWRhdGVMZXZlbChjMnA6IGFueSwgcGF0aDogYW55KSB7XG4gICAgYXNzZXJ0KGMycC5fbWF0Y2hfY291bnRfID4gMCwgYCR7cGF0aH0gaXMgbmV2ZXIgdXNlZGApXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYzJwKSBhcyBbc3RyaW5nLCBhbnldW10pIHtcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgPT0gXCJDb2RlMlBhdHRlcm5cIilcbiAgICAgICAgdGhpcy52YWxpZGF0ZUxldmVsKHZhbHVlLCBwYXRoLmNvbmNhdChba2V5XSkpXG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhpcy52YWxpZGF0ZUxldmVsKHRoaXMuY29kZTJwYXR0ZXJuLCBbXSlcbiAgfVxuXG4gIHByaW50RW50cnkoc2VjdGlvbnM6IHN0cmluZywgZW50cnk6IHN0cmluZywgY29kZXM6IHN0cmluZykge1xuICAgIGNvbnN0IHRpdGxlID0gYFxcYCR7ZW50cnl9XFxgX19gXG4gICAgY29uc29sZS5sb2codGl0bGUpXG4gICAgY29uc3QgdW5kZXJsaW5lID0gbmV3IEFycmF5KHRpdGxlLmxlbmd0aCArIDEpLmpvaW4oc2VjdGlvbnNbMF0pXG4gICAgY29uc29sZS5sb2codW5kZXJsaW5lKVxuICAgIGNvbnNvbGUubG9nKGNvZGVzKVxuICB9XG5cbiAgYWRkQW5jaG9ycyhrZXk6IHN0cmluZykge1xuICAgIGlmIChrZXkgaW4gdGhpcy5hbmNob3JzUHJpbnRlZCkgcmV0dXJuXG4gICAgaWYgKHRoaXMubGVjdHVyZU1hcHBlci5oYXMoa2V5KSlcbiAgICAgIHRoaXMubGVjdHVyZU1hcHBlci5tZXJnZUNvZGVzKHRoaXMuYW5jaG9ycywga2V5KVxuICAgIGVsc2UgdGhpcy5hbmNob3JzLmFkZChrZXkpXG4gIH1cblxuICBwcmludEFuY2hvcnMoa2V5OiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5IGluIHRoaXMuYW5jaG9yc1ByaW50ZWQpIHJldHVyblxuICAgIHRoaXMuYW5jaG9yc1ByaW50ZWRba2V5XSA9IG51bGxcbiAgICBpZiAodGhpcy5sZWN0dXJlTWFwcGVyLmhhcyhrZXkpKSB0aGlzLmxlY3R1cmVNYXBwZXIucHJpbnRBbmNob3JzKGtleSlcbiAgICBlbHNlIGNvbnNvbGUubG9nKGAuLiBfJHtrZXl9OmApXG4gIH1cblxuICBnZXRDb2RlcyhrZXk6IHN0cmluZywgc2hvcnRDb2RlOiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5IGluIHRoaXMuYW5jaG9yc1ByaW50ZWQpIHJldHVybiBgY2YgXFxcXCoke3Nob3J0Q29kZX1cXFxcKmBcbiAgICBpZiAodGhpcy5sZWN0dXJlTWFwcGVyLmhhcyhrZXkpKSByZXR1cm4gdGhpcy5sZWN0dXJlTWFwcGVyLmdldENvZGVzKGtleSlcbiAgICBlbHNlIHJldHVybiBrZXlcbiAgfVxuXG4gIHJlbmFtZUNNUChrZXk6IHN0cmluZywgbmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKGtleS5zdGFydHNXaXRoKFwiQ01QXCIpKSB7XG4gICAgICBpZiAoa2V5LmVuZHNXaXRoKFwiLVNOXCIpKSByZXR1cm4gYCR7bmFtZX0gKFPDqW5hdClgXG4gICAgICBlbHNlIGlmIChrZXkuZW5kc1dpdGgoXCItQU5cIikpIHJldHVybiBgJHtuYW1lfSAoQXNzZW1ibMOpZSBOYXRpb25hbGUpYFxuICAgICAgZWxzZSByZXR1cm4gbmFtZVxuICAgIH0gZWxzZSByZXR1cm4gbmFtZVxuICB9XG5cbiAgcHJpbnRMZXZlbChhY3RlczogYW55LCBzZWN0aW9uczogc3RyaW5nLCBjMnA6IGFueSwgcGFyZW50OiBhbnkpIHtcbiAgICBjb25zdCBrZXlzOiBTZXQ8c3RyaW5nPiA9IHRoaXMub3JkZXJlZENvZGVzKE9iamVjdC5rZXlzKGFjdGVzKSwgYzJwLCBwYXJlbnQpXG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgY29uc3QgdmFsdWUgPSBhY3Rlc1trZXldXG4gICAgICBsZXQgbmFtZSA9IEFycmF5LmZyb20odmFsdWUubmFtZSkuam9pbihcIiwgXCIpXG4gICAgICBuYW1lID0gdGhpcy5yZW5hbWVDTVAoa2V5LCBuYW1lKVxuICAgICAgY29uc3QgY29kZXMgPSB0aGlzLmdldENvZGVzKGtleSwgdmFsdWUuc2hvcnRDb2RlKVxuICAgICAgdGhpcy5hZGRBbmNob3JzKGtleSlcbiAgICAgIHRoaXMucHJpbnRBbmNob3JzKGtleSlcbiAgICAgIGNvbnNvbGUubG9nKFwiXCIpXG4gICAgICB0aGlzLnByaW50RW50cnkoc2VjdGlvbnMsIGAke25hbWV9IDwke3ZhbHVlLnNob3J0Q29kZX1UT0NfPmAsIGNvZGVzKVxuICAgICAgY29uc29sZS5sb2coXCJcIilcbiAgICAgIGlmIChPYmplY3Qua2V5cyh2YWx1ZS5hY3RlcykubGVuZ3RoID4gMClcbiAgICAgICAgdGhpcy5wcmludExldmVsKHZhbHVlLmFjdGVzLCBzZWN0aW9ucy5zdWJzdHJpbmcoMSksIGMycFtrZXldLCBrZXkpXG4gICAgfVxuICB9XG5cbiAgcHJpbnRDb2RlcygpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmNvZGVzKSlcbiAgICAgIGNvbnNvbGUubG9nKGAuLiBfJHtrZXl9VE9DOiBodHRwOi8vYClcbiAgfVxuXG4gIHByaW50QW5jaG9yc0luZGV4KCkge1xuICAgIGZvciAoY29uc3QgY29kZSBvZiBBcnJheS5mcm9tKHRoaXMuYW5jaG9ycykpXG4gICAgICBjb25zb2xlLmxvZyhgKiA6cmVmOlxcYCR7Y29kZX0gPCR7Y29kZX0+XFxgYClcbiAgfVxuXG4gIGdldEFnZ3JlZ2F0ZWQocHJvY2VkdXJlOiBzdHJpbmcpIHtcbiAgICBpZiAocHJvY2VkdXJlID09IFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIikge1xuICAgICAgY29uc3QgcmVtYXBwZWQgPSBPYmplY3Qua2V5cyh0aGlzLnJlbWFwcGVkUHJvY2VkdXJlcykuam9pbihcIiwgXCIpXG4gICAgICByZXR1cm4gYCAoYWdyw6lnYXRpb24gZGUgJHtyZW1hcHBlZH0pYFxuICAgIH0gZWxzZSByZXR1cm4gXCJcIlxuICB9XG5cbiAgcHJpbnQoKTogdm9pZCB7XG4gICAgdGhpcy5hbmNob3JzUHJpbnRlZCA9IHt9XG4gICAgZm9yIChjb25zdCBba2V5LCBhY3Rlc10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5wcm9jZWR1cmVzKSBhcyBbXG4gICAgICBzdHJpbmcsXG4gICAgICBhbnksXG4gICAgXVtdKSB7XG4gICAgICBjb25zdCBjb2RlID0ga2V5LnJlcGxhY2UoLyArL2csIFwiX1wiKVxuICAgICAgdGhpcy5jb2Rlc1tjb2RlXSA9IG51bGxcbiAgICAgIGNvbnN0IGFnZ3JlZ2F0ZWQgPSB0aGlzLmdldEFnZ3JlZ2F0ZWQoa2V5KVxuICAgICAgY29uc3QgdGl0bGUgPSBgXFxgJHtrZXl9IDwke2NvZGV9VE9DXz5cXGBfXyR7YWdncmVnYXRlZH1gXG4gICAgICBjb25zb2xlLmxvZyh0aXRsZSlcbiAgICAgIGNvbnN0IHVuZGVybGluZSA9IG5ldyBBcnJheSh0aXRsZS5sZW5ndGggKyAxKS5qb2luKFwiPVwiKVxuICAgICAgY29uc29sZS5sb2codW5kZXJsaW5lKVxuICAgICAgdGhpcy5wcmludExldmVsKGFjdGVzLCBcIi1+LidcIiwgdGhpcy5jb2RlMnBhdHRlcm5ba2V5XSwgbnVsbClcbiAgICB9XG4gICAgdGhpcy5wcmludENvZGVzKClcbiAgICB0aGlzLnByaW50QW5jaG9yc0luZGV4KClcbiAgfVxufVxuXG5mdW5jdGlvbiBtYWluKGFyZ3Y6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwYXJzZUFyZ3MoYXJndilcbiAgaWYgKG9wdGlvbnMgPT09IG51bGwpIHJldHVybiAxXG4gIGxldCBkb2MgPSBuZXcgQWN0ZXNEb2N1bWVudGF0aW9uKFxuICAgICFvcHRpb25zW1wibm8tc2FuaXR5LWNoZWNrc1wiXSxcbiAgICBvcHRpb25zLnZlcmJvc2UsXG4gIClcbiAgZG9jLmNvbGxlY3RGaWxlcyhvcHRpb25zLmRhdGEpXG4gIGRvYy5wcm9jZXNzRmlsZXMob3B0aW9ucy5kYXRhKVxuICBkb2MucHJpbnQoKVxuICByZXR1cm4gMFxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJkb2N1bWVudF9kb3NzaWVyc19sZWdpc2xhdGlmcy50c1wiKSlcbiAgcHJvY2Vzcy5leGl0KG1haW4ocHJvY2Vzcy5hcmd2KSlcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsZ0JBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFILHNCQUFBLENB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
|