@tricoteuses/assemblee 1.1.5 → 1.1.7

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.
Files changed (120) hide show
  1. package/lib/api.js +1 -1
  2. package/lib/bugs/acteur-00010/plugin.test.js +1 -1
  3. package/lib/bugs/acteur-00010.js +1 -1
  4. package/lib/bugs/acteur-00010.mjs +1 -1
  5. package/lib/bugs/agenda-00002/plugin.test.js +1 -1
  6. package/lib/bugs/agenda-00002.js +2 -2
  7. package/lib/bugs/agenda-00002.mjs +2 -2
  8. package/lib/bugs/agenda-00008/plugin.test.js +1 -1
  9. package/lib/bugs/agenda-00008.js +1 -1
  10. package/lib/bugs/agenda-00008.mjs +1 -1
  11. package/lib/bugs/agenda-00011/plugin.test.js +1 -1
  12. package/lib/bugs/agenda-00011.js +1 -1
  13. package/lib/bugs/agenda-00011.mjs +1 -1
  14. package/lib/bugs.js +1 -1
  15. package/lib/bugs.mjs +1 -1
  16. package/lib/cleaners/actes_legislatifs.js +1 -1
  17. package/lib/cleaners/actes_legislatifs.mjs +1 -1
  18. package/lib/cleaners/acteurs.js +1 -1
  19. package/lib/cleaners/acteurs.mjs +1 -1
  20. package/lib/cleaners/amendements.js +1 -1
  21. package/lib/cleaners/amendements.mjs +1 -1
  22. package/lib/cleaners/documents.js +1 -1
  23. package/lib/cleaners/documents.mjs +1 -1
  24. package/lib/cleaners/dossiers_legislatifs.js +1 -1
  25. package/lib/cleaners/dossiers_legislatifs.mjs +1 -1
  26. package/lib/cleaners/index.js +1 -1
  27. package/lib/cleaners/organes.js +1 -1
  28. package/lib/cleaners/organes.mjs +1 -1
  29. package/lib/cleaners/reunions.js +1 -1
  30. package/lib/cleaners/reunions.mjs +1 -1
  31. package/lib/cleaners/scrutins.js +1 -1
  32. package/lib/cleaners/scrutins.mjs +1 -1
  33. package/lib/cleaners/xml.js +1 -1
  34. package/lib/cleaners/xml.mjs +1 -1
  35. package/lib/datasets.js +1 -1
  36. package/lib/datasets.mjs +1 -1
  37. package/lib/dates.js +16 -7
  38. package/lib/dates.mjs +15 -6
  39. package/lib/dossiers_legislatifs.js +1 -1
  40. package/lib/dossiers_legislatifs.mjs +1 -1
  41. package/lib/file_systems.js +2 -2
  42. package/lib/file_systems.mjs +2 -2
  43. package/lib/git.d.ts +2 -1
  44. package/lib/git.js +77 -44
  45. package/lib/git.mjs +48 -25
  46. package/lib/index.js +1 -1
  47. package/lib/inserters.js +1 -1
  48. package/lib/inserters.mjs +1 -1
  49. package/lib/loaders.d.ts +52 -2
  50. package/lib/loaders.js +961 -187
  51. package/lib/loaders.mjs +285 -3
  52. package/lib/organes.js +1 -1
  53. package/lib/organes.mjs +1 -1
  54. package/lib/parsers/documents.js +1 -1
  55. package/lib/parsers/documents.mjs +1 -1
  56. package/lib/parsers/index.js +1 -1
  57. package/lib/parsers/recherche_amendements.js +39 -32
  58. package/lib/parsers/recherche_amendements.mjs +5 -1
  59. package/lib/raw_types/acteurs_et_organes.js +1 -1
  60. package/lib/raw_types/acteurs_et_organes.mjs +1 -1
  61. package/lib/raw_types/agendas.js +1 -1
  62. package/lib/raw_types/agendas.mjs +1 -1
  63. package/lib/raw_types/amendements.js +1 -1
  64. package/lib/raw_types/amendements.mjs +1 -1
  65. package/lib/raw_types/dossiers_legislatifs.js +1 -1
  66. package/lib/raw_types/dossiers_legislatifs.mjs +1 -1
  67. package/lib/raw_types/scrutins.js +1 -1
  68. package/lib/raw_types/scrutins.mjs +1 -1
  69. package/lib/scripts/bugs_helper.js +3 -3
  70. package/lib/scripts/bugs_helper.mjs +3 -3
  71. package/lib/scripts/clean_data.js +1 -1
  72. package/lib/scripts/clean_data.mjs +1 -1
  73. package/lib/scripts/clean_reorganized_data.js +63 -61
  74. package/lib/scripts/clean_reorganized_data.mjs +55 -48
  75. package/lib/scripts/diff_amendements.js +1 -1
  76. package/lib/scripts/diff_amendements.mjs +1 -1
  77. package/lib/scripts/document_dossiers_legislatifs.js +1 -1
  78. package/lib/scripts/document_dossiers_legislatifs.mjs +1 -1
  79. package/lib/scripts/get_today_reunions.js +1 -1
  80. package/lib/scripts/merge_scrutins.js +1 -1
  81. package/lib/scripts/merge_scrutins.mjs +1 -1
  82. package/lib/scripts/parse_textes_lois.js +5 -48
  83. package/lib/scripts/parse_textes_lois.mjs +5 -49
  84. package/lib/scripts/raw_types_from_amendements.js +1 -1
  85. package/lib/scripts/raw_types_from_amendements.mjs +1 -1
  86. package/lib/scripts/reorganize_data.js +231 -239
  87. package/lib/scripts/reorganize_data.mjs +50 -59
  88. package/lib/scripts/retrieve_deputes_photos.js +86 -107
  89. package/lib/scripts/retrieve_deputes_photos.mjs +21 -42
  90. package/lib/scripts/retrieve_documents.js +3 -3
  91. package/lib/scripts/retrieve_documents.mjs +3 -3
  92. package/lib/scripts/retrieve_open_data.js +29 -22
  93. package/lib/scripts/retrieve_open_data.mjs +9 -4
  94. package/lib/scripts/retrieve_pending_amendments.js +73 -81
  95. package/lib/scripts/retrieve_pending_amendments.mjs +19 -26
  96. package/lib/scripts/retrieve_senateurs_photos.js +65 -87
  97. package/lib/scripts/retrieve_senateurs_photos.mjs +21 -42
  98. package/lib/scripts/retrieve_textes_lois.js +32 -71
  99. package/lib/scripts/retrieve_textes_lois.mjs +6 -44
  100. package/lib/scripts/test_load.js +1 -1
  101. package/lib/scripts/test_load_big_files.js +1 -1
  102. package/lib/scripts/validate_json.js +3 -3
  103. package/lib/scripts/validate_json.mjs +3 -3
  104. package/lib/shared_types/codes_actes.js +1 -1
  105. package/lib/strings.js +1 -1
  106. package/lib/strings.mjs +1 -1
  107. package/lib/types/acteurs_et_organes.js +1 -1
  108. package/lib/types/acteurs_et_organes.mjs +1 -1
  109. package/lib/types/agendas.js +1 -1
  110. package/lib/types/agendas.mjs +1 -1
  111. package/lib/types/amendements.js +1 -1
  112. package/lib/types/amendements.mjs +1 -1
  113. package/lib/types/dossiers_legislatifs.js +1 -1
  114. package/lib/types/dossiers_legislatifs.mjs +1 -1
  115. package/lib/types/legislatures.js +1 -1
  116. package/lib/types/scrutins.js +1 -1
  117. package/lib/types/scrutins.mjs +1 -1
  118. package/lib/urls.js +1 -1
  119. package/lib/urls.mjs +1 -1
  120. package/package.json +6 -5
@@ -8,7 +8,6 @@ require("core-js/modules/es.symbol.js");
8
8
  require("core-js/modules/es.symbol.description.js");
9
9
  require("core-js/modules/es.symbol.iterator.js");
10
10
  require("core-js/modules/es.array.is-array.js");
11
- require("core-js/modules/es.promise.js");
12
11
  require("core-js/modules/es.object.define-property.js");
13
12
  require("core-js/modules/es.symbol.async-iterator.js");
14
13
  require("core-js/modules/es.symbol.to-string-tag.js");
@@ -20,11 +19,14 @@ require("core-js/modules/es.array.for-each.js");
20
19
  require("core-js/modules/web.dom-collections.for-each.js");
21
20
  require("core-js/modules/es.object.set-prototype-of.js");
22
21
  require("core-js/modules/es.array.reverse.js");
22
+ require("core-js/modules/es.weak-map.js");
23
+ require("core-js/modules/es.object.get-own-property-descriptor.js");
23
24
  require("core-js/modules/es.regexp.exec.js");
24
25
  require("core-js/modules/es.string.match.js");
26
+ require("core-js/modules/es.object.to-string.js");
27
+ require("core-js/modules/es.promise.js");
25
28
  require("core-js/modules/es.array.sort.js");
26
29
  require("core-js/modules/es.array.filter.js");
27
- require("core-js/modules/es.object.to-string.js");
28
30
  require("core-js/modules/es.object.values.js");
29
31
  require("core-js/modules/es.string.replace.js");
30
32
  require("core-js/modules/es.string.trim.js");
@@ -38,19 +40,22 @@ var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
38
40
  var _fsExtra = _interopRequireDefault(require("fs-extra"));
39
41
  var _path = _interopRequireDefault(require("path"));
40
42
  var _datasets = require("../datasets");
43
+ var git = _interopRequireWildcard(require("../git"));
41
44
  var _loaders = require("../loaders");
42
45
  var _acteurs_et_organes = require("../types/acteurs_et_organes");
46
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
47
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
43
48
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
44
49
  function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
45
50
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
46
51
  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."); }
47
52
  function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
48
53
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
49
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
50
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
51
54
  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(_e2) { throw _e2; }, 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(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
52
55
  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); }
53
56
  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; }
57
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
58
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
54
59
  var optionsDefinitions = [{
55
60
  alias: "C",
56
61
  help: "clone repositories from given group (or organization) git URL",
@@ -66,6 +71,11 @@ var optionsDefinitions = [{
66
71
  help: "fetch sénateurs' pictures instead of retrieving them from files",
67
72
  name: "fetch",
68
73
  type: Boolean
74
+ }, {
75
+ alias: "p",
76
+ help: "pull repositories before proceeding",
77
+ name: "pull",
78
+ type: Boolean
69
79
  }, {
70
80
  alias: "r",
71
81
  help: "push commit to given remote",
@@ -85,60 +95,12 @@ var optionsDefinitions = [{
85
95
  }];
86
96
  var options = (0, _commandLineArgs["default"])(optionsDefinitions);
87
97
  // const pipeline = util.promisify(stream.pipeline)
88
-
89
- function commitAndPush(repositoryDir, commit, remotes) {
90
- var error = false;
91
- if (commit) {
92
- (0, _child_process.execSync)("git add .", {
93
- cwd: repositoryDir,
94
- env: process.env,
95
- encoding: "utf-8",
96
- stdio: ["ignore", "ignore", "pipe"]
97
- });
98
- try {
99
- (0, _child_process.execSync)('git commit -m "Nouvelle moisson" --quiet', {
100
- cwd: repositoryDir,
101
- env: process.env,
102
- encoding: "utf-8"
103
- });
104
- } catch (childProcess) {
105
- if (childProcess.stderr === null || !/nothing to commit/.test(childProcess.stdout)) {
106
- console.error(childProcess.output);
107
- throw childProcess;
108
- }
109
- }
110
- var _iterator = _createForOfIteratorHelper(remotes || []),
111
- _step;
112
- try {
113
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
114
- var remote = _step.value;
115
- try {
116
- (0, _child_process.execSync)("git push ".concat(remote, " master"), {
117
- cwd: repositoryDir,
118
- env: process.env,
119
- encoding: "utf-8",
120
- stdio: ["ignore", "ignore", "pipe"]
121
- });
122
- } catch (childProcess) {
123
- // Don't stop when push fails.
124
- console.error(childProcess.output);
125
- error = true;
126
- }
127
- }
128
- } catch (err) {
129
- _iterator.e(err);
130
- } finally {
131
- _iterator.f();
132
- }
133
- }
134
- return error;
135
- }
136
98
  function retrievePhotosSenateurs() {
137
99
  return _retrievePhotosSenateurs.apply(this, arguments);
138
100
  }
139
101
  function _retrievePhotosSenateurs() {
140
102
  _retrievePhotosSenateurs = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
141
- var dataDir, _loadAssembleeData, acteurByUid, senateurs, gitGroupUrl, photosDirName, photosDir, missingPhotoFilePath, _iterator4, _step4, senateur, ident, senateurStem, photoFilename, photoFilePath, photoTempFilename, photoTempFilePath, urlPhoto, _iterator5, _step5, _senateur2, _ident, _senateurStem2, photoByIdSenateur, rowsFilenames, senateurIndex, rowIndex, row, photosFilenames, _iterator6, _step6, _step6$value, columnIndex, _senateur, _senateurStem, _photoFilename, rowFilename, _i2, _rowsFilenames, _rowFilename, jsonFilePath;
103
+ var dataDir, _loadAssembleeData, acteurByUid, senateurs, gitGroupUrl, photosDirName, photosDir, missingPhotoFilePath, _iterator3, _step3, senateur, ident, senateurStem, photoFilename, photoFilePath, photoTempFilename, photoTempFilePath, urlPhoto, _iterator4, _step4, _senateur2, _ident, _senateurStem2, photoByIdSenateur, rowsFilenames, senateurIndex, rowIndex, row, photosFilenames, _iterator5, _step5, _step5$value, columnIndex, _senateur, _senateurStem, _photoFilename, rowFilename, _i2, _rowsFilenames, _rowFilename, jsonFilePath;
142
104
  return _regeneratorRuntime().wrap(function _callee$(_context) {
143
105
  while (1) switch (_context.prev = _context.next) {
144
106
  case 0:
@@ -162,19 +124,19 @@ function _retrievePhotosSenateurs() {
162
124
  return false;
163
125
  }
164
126
  var url = null;
165
- var _iterator3 = _createForOfIteratorHelper(adresses),
166
- _step3;
127
+ var _iterator2 = _createForOfIteratorHelper(adresses),
128
+ _step2;
167
129
  try {
168
- for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
169
- var adresse = _step3.value;
130
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
131
+ var adresse = _step2.value;
170
132
  if (adresse.xsiType === "AdresseSiteWeb_Type" && adresse.typeLibelle === "Url sénateur") {
171
133
  url = adresse.valElec;
172
134
  }
173
135
  }
174
136
  } catch (err) {
175
- _iterator3.e(err);
137
+ _iterator2.e(err);
176
138
  } finally {
177
- _iterator3.f();
139
+ _iterator2.f();
178
140
  }
179
141
  return Boolean(url);
180
142
  }).sort(function (a, b) {
@@ -190,14 +152,24 @@ function _retrievePhotosSenateurs() {
190
152
  stdio: ["ignore", "ignore", "pipe"]
191
153
  });
192
154
  }
193
- photosDir = _path["default"].join(dataDir, photosDirName); // Download photos.
155
+ photosDir = _path["default"].join(dataDir, photosDirName);
156
+ if (options.pull) {
157
+ (0, _child_process.execSync)("git pull --rebase", {
158
+ cwd: photosDir,
159
+ env: process.env,
160
+ encoding: "utf-8",
161
+ stdio: ["ignore", "ignore", "pipe"]
162
+ });
163
+ }
164
+
165
+ // Download photos.
194
166
  _fsExtra["default"].ensureDirSync(photosDir);
195
167
  if (options.fetch) {
196
168
  missingPhotoFilePath = "images/transparent_155x225.jpg";
197
- _iterator4 = _createForOfIteratorHelper(senateurs);
169
+ _iterator3 = _createForOfIteratorHelper(senateurs);
198
170
  try {
199
- for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
200
- senateur = _step4.value;
171
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
172
+ senateur = _step3.value;
201
173
  ident = senateur.etatCivil.ident;
202
174
  senateurStem = stemFromSenateur(senateur);
203
175
  photoFilename = "".concat(senateurStem, ".jpg");
@@ -248,17 +220,17 @@ function _retrievePhotosSenateurs() {
248
220
  }
249
221
  }
250
222
  } catch (err) {
251
- _iterator4.e(err);
223
+ _iterator3.e(err);
252
224
  } finally {
253
- _iterator4.f();
225
+ _iterator3.f();
254
226
  }
255
227
  }
256
228
 
257
229
  // Resize photos to 155x225, because some haven't exactly this size.
258
- _iterator5 = _createForOfIteratorHelper(senateurs);
230
+ _iterator4 = _createForOfIteratorHelper(senateurs);
259
231
  try {
260
- for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
261
- _senateur2 = _step5.value;
232
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
233
+ _senateur2 = _step4.value;
262
234
  _ident = _senateur2.etatCivil.ident;
263
235
  _senateurStem2 = stemFromSenateur(_senateur2);
264
236
  if (!options.silent) {
@@ -271,19 +243,19 @@ function _retrievePhotosSenateurs() {
271
243
 
272
244
  // Create a mosaic of photos.
273
245
  } catch (err) {
274
- _iterator5.e(err);
246
+ _iterator4.e(err);
275
247
  } finally {
276
- _iterator5.f();
248
+ _iterator4.f();
277
249
  }
278
250
  photoByIdSenateur = {};
279
251
  rowsFilenames = [];
280
252
  for (senateurIndex = 0, rowIndex = 0; senateurIndex < senateurs.length; senateurIndex += 25, rowIndex++) {
281
253
  row = senateurs.slice(senateurIndex, senateurIndex + 25);
282
254
  photosFilenames = [];
283
- _iterator6 = _createForOfIteratorHelper(row.entries());
255
+ _iterator5 = _createForOfIteratorHelper(row.entries());
284
256
  try {
285
- for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
286
- _step6$value = _slicedToArray(_step6.value, 2), columnIndex = _step6$value[0], _senateur = _step6$value[1];
257
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
258
+ _step5$value = _slicedToArray(_step5.value, 2), columnIndex = _step5$value[0], _senateur = _step5$value[1];
287
259
  _senateurStem = stemFromSenateur(_senateur);
288
260
  _photoFilename = "".concat(_senateurStem, "_155x225.jpg");
289
261
  photosFilenames.push(_photoFilename);
@@ -297,9 +269,9 @@ function _retrievePhotosSenateurs() {
297
269
  };
298
270
  }
299
271
  } catch (err) {
300
- _iterator6.e(err);
272
+ _iterator5.e(err);
301
273
  } finally {
302
- _iterator6.f();
274
+ _iterator5.f();
303
275
  }
304
276
  rowFilename = "row-".concat(rowIndex, ".jpg");
305
277
  (0, _child_process.execSync)("gm convert ".concat(photosFilenames.join(" "), " +append ").concat(rowFilename), {
@@ -316,8 +288,14 @@ function _retrievePhotosSenateurs() {
316
288
  }
317
289
  jsonFilePath = _path["default"].join(photosDir, "senateurs.json");
318
290
  _fsExtra["default"].writeFileSync(jsonFilePath, JSON.stringify(photoByIdSenateur, null, 2));
319
- return _context.abrupt("return", commitAndPush(photosDir, options.commit, options.remote));
320
- case 19:
291
+ if (!options.commit) {
292
+ _context.next = 21;
293
+ break;
294
+ }
295
+ return _context.abrupt("return", git.commitAndPush(photosDir, "Nouvelle moisson", options.remote));
296
+ case 21:
297
+ return _context.abrupt("return", 0);
298
+ case 22:
321
299
  case "end":
322
300
  return _context.stop();
323
301
  }
@@ -328,28 +306,28 @@ function _retrievePhotosSenateurs() {
328
306
  function stemFromSenateur(senateur) {
329
307
  var adresses = senateur.adresses;
330
308
  var url = null;
331
- var _iterator2 = _createForOfIteratorHelper(adresses),
332
- _step2;
309
+ var _iterator = _createForOfIteratorHelper(adresses),
310
+ _step;
333
311
  try {
334
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
335
- var adresse = _step2.value;
312
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
313
+ var adresse = _step.value;
336
314
  if (adresse.xsiType === "AdresseSiteWeb_Type" && adresse.typeLibelle === "Url sénateur") {
337
315
  url = adresse.valElec;
338
316
  }
339
317
  }
340
318
  } catch (err) {
341
- _iterator2.e(err);
319
+ _iterator.e(err);
342
320
  } finally {
343
- _iterator2.f();
321
+ _iterator.f();
344
322
  }
345
323
  var match = url.match(/^https:\/\/www\.senat\.fr\/senateur\/(.*)\.html$/);
346
324
  var senateurStem = match[1];
347
325
  return senateurStem;
348
326
  }
349
- retrievePhotosSenateurs().then(function (error) {
350
- return process.exit(error ? 1 : 0);
327
+ retrievePhotosSenateurs().then(function (exitCode) {
328
+ return process.exit(exitCode);
351
329
  })["catch"](function (error) {
352
330
  console.log(error);
353
- process.exit(2);
331
+ process.exit(1);
354
332
  });
355
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwidHlwZSIsIlN0cmluZyIsIkJvb2xlYW4iLCJtdWx0aXBsZSIsImRlZmF1bHRPcHRpb24iLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwiY29tbWl0QW5kUHVzaCIsInJlcG9zaXRvcnlEaXIiLCJjb21taXQiLCJyZW1vdGVzIiwiZXJyb3IiLCJleGVjU3luYyIsImN3ZCIsImVudiIsInByb2Nlc3MiLCJlbmNvZGluZyIsInN0ZGlvIiwiY2hpbGRQcm9jZXNzIiwic3RkZXJyIiwidGVzdCIsInN0ZG91dCIsImNvbnNvbGUiLCJvdXRwdXQiLCJyZW1vdGUiLCJyZXRyaWV2ZVBob3Rvc1NlbmF0ZXVycyIsImRhdGFEaXIiLCJsb2FkQXNzZW1ibGVlRGF0YSIsIkVuYWJsZWREYXRhc2V0cyIsIkFjdGV1cnNFdE9yZ2FuZXMiLCJsZWdpc2xhdHVyZSIsImFjdGV1ckJ5VWlkIiwic2VuYXRldXJzIiwiT2JqZWN0IiwidmFsdWVzIiwiZmlsdGVyIiwiYWN0ZXVyIiwibWFuZGF0cyIsIm1hbmRhdFNlbmF0ZXVyIiwibWFuZGF0IiwieHNpVHlwZSIsIlR5cGVNYW5kYXQiLCJNYW5kYXRQYXJsZW1lbnRhaXJlVHlwZSIsInR5cGVPcmdhbmUiLCJDb2RlVHlwZU9yZ2FuZSIsIlNlbmF0IiwidW5kZWZpbmVkIiwiYWRyZXNzZXMiLCJ1cmwiLCJhZHJlc3NlIiwidHlwZUxpYmVsbGUiLCJ2YWxFbGVjIiwic29ydCIsImEiLCJiIiwidWlkIiwibGVuZ3RoIiwibG9jYWxlQ29tcGFyZSIsImdpdEdyb3VwVXJsIiwiY2xvbmUiLCJ0cmltIiwicmVwbGFjZSIsInBob3Rvc0Rpck5hbWUiLCJwaG90b3NEaXIiLCJwYXRoIiwiam9pbiIsImZzIiwiZW5zdXJlRGlyU3luYyIsImZldGNoIiwibWlzc2luZ1Bob3RvRmlsZVBhdGgiLCJzZW5hdGV1ciIsImlkZW50IiwiZXRhdENpdmlsIiwic2VuYXRldXJTdGVtIiwic3RlbUZyb21TZW5hdGV1ciIsInBob3RvRmlsZW5hbWUiLCJwaG90b0ZpbGVQYXRoIiwicGhvdG9UZW1wRmlsZW5hbWUiLCJwaG90b1RlbXBGaWxlUGF0aCIsInVybFBob3RvIiwic2lsZW50IiwibG9nIiwicHJlbm9tIiwibm9tIiwicmVuYW1lU3luYyIsImV4aXN0c1N5bmMiLCJ3YXJuIiwiY29weUZpbGVTeW5jIiwicGhvdG9CeUlkU2VuYXRldXIiLCJyb3dzRmlsZW5hbWVzIiwic2VuYXRldXJJbmRleCIsInJvd0luZGV4Iiwicm93Iiwic2xpY2UiLCJwaG90b3NGaWxlbmFtZXMiLCJlbnRyaWVzIiwiY29sdW1uSW5kZXgiLCJwdXNoIiwiY2hlbWluIiwiY2hlbWluTW9zYWlxdWUiLCJoYXV0ZXVyIiwibGFyZ2V1ciIsInhNb3NhaXF1ZSIsInlNb3NhaXF1ZSIsInJvd0ZpbGVuYW1lIiwidW5saW5rU3luYyIsImpzb25GaWxlUGF0aCIsIndyaXRlRmlsZVN5bmMiLCJKU09OIiwic3RyaW5naWZ5IiwibWF0Y2giLCJ0aGVuIiwiZXhpdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3JldHJpZXZlX3NlbmF0ZXVyc19waG90b3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hpbGRQcm9jZXNzLCBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCJcbmltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuLy8gaW1wb3J0IGZldGNoIGZyb20gXCJub2RlLWZldGNoXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbi8vIGltcG9ydCBzdHJlYW0gZnJvbSBcInN0cmVhbVwiXG4vLyBpbXBvcnQgdXRpbCBmcm9tIFwidXRpbFwiXG5cbmltcG9ydCB7IEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBsb2FkQXNzZW1ibGVlRGF0YSB9IGZyb20gXCIuLi9sb2FkZXJzXCJcbmltcG9ydCB7XG4gIEFjdGV1cixcbiAgQ29kZVR5cGVPcmdhbmUsXG4gIE1hbmRhdCxcbiAgUGhvdG8sXG4gIFR5cGVNYW5kYXQsXG59IGZyb20gXCIuLi90eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIHtcbiAgICBhbGlhczogXCJDXCIsXG4gICAgaGVscDogXCJjbG9uZSByZXBvc2l0b3JpZXMgZnJvbSBnaXZlbiBncm91cCAob3Igb3JnYW5pemF0aW9uKSBnaXQgVVJMXCIsXG4gICAgbmFtZTogXCJjbG9uZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcImNcIixcbiAgICBoZWxwOiBcImNvbW1pdCBwaG90b3NcIixcbiAgICBuYW1lOiBcImNvbW1pdFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJmXCIsXG4gICAgaGVscDogXCJmZXRjaCBzw6luYXRldXJzJyBwaWN0dXJlcyBpbnN0ZWFkIG9mIHJldHJpZXZpbmcgdGhlbSBmcm9tIGZpbGVzXCIsXG4gICAgbmFtZTogXCJmZXRjaFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJyXCIsXG4gICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgaGVscDogXCJkaXJlY3RvcnkgY29udGFpbmluZyBBc3NlbWJsw6llIG9wZW4gZGF0YSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbl1cbmNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zKVxuLy8gY29uc3QgcGlwZWxpbmUgPSB1dGlsLnByb21pc2lmeShzdHJlYW0ucGlwZWxpbmUpXG5cbmZ1bmN0aW9uIGNvbW1pdEFuZFB1c2goXG4gIHJlcG9zaXRvcnlEaXI6IHN0cmluZyxcbiAgY29tbWl0OiBib29sZWFuLFxuICByZW1vdGVzPzogc3RyaW5nW10sXG4pOiBib29sZWFuIHtcbiAgbGV0IGVycm9yID0gZmFsc2VcbiAgaWYgKGNvbW1pdCkge1xuICAgIGV4ZWNTeW5jKFwiZ2l0IGFkZCAuXCIsIHtcbiAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgfSlcbiAgICB0cnkge1xuICAgICAgZXhlY1N5bmMoJ2dpdCBjb21taXQgLW0gXCJOb3V2ZWxsZSBtb2lzc29uXCIgLS1xdWlldCcsIHtcbiAgICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgfSlcbiAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICAgIGlmIChcbiAgICAgICAgKGNoaWxkUHJvY2VzcyBhcyBDaGlsZFByb2Nlc3MpLnN0ZGVyciA9PT0gbnVsbCB8fFxuICAgICAgICAhL25vdGhpbmcgdG8gY29tbWl0Ly50ZXN0KChjaGlsZFByb2Nlc3MgYXMgYW55KS5zdGRvdXQpXG4gICAgICApIHtcbiAgICAgICAgY29uc29sZS5lcnJvcigoY2hpbGRQcm9jZXNzIGFzIGFueSkub3V0cHV0KVxuICAgICAgICB0aHJvdyBjaGlsZFByb2Nlc3NcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCByZW1vdGUgb2YgcmVtb3RlcyB8fCBbXSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBwdXNoICR7cmVtb3RlfSBtYXN0ZXJgLCB7XG4gICAgICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgICAgICAvLyBEb24ndCBzdG9wIHdoZW4gcHVzaCBmYWlscy5cbiAgICAgICAgY29uc29sZS5lcnJvcigoY2hpbGRQcm9jZXNzIGFzIGFueSkub3V0cHV0KVxuICAgICAgICBlcnJvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVycm9yXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJldHJpZXZlUGhvdG9zU2VuYXRldXJzKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCBkYXRhRGlyID0gb3B0aW9ucy5kYXRhRGlyXG4gIGNvbnN0IHsgYWN0ZXVyQnlVaWQgfSA9IGxvYWRBc3NlbWJsZWVEYXRhKFxuICAgIGRhdGFEaXIsXG4gICAgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMsXG4gICAgb3B0aW9ucy5sZWdpc2xhdHVyZSxcbiAgKVxuICBjb25zdCBzZW5hdGV1cnMgPSBPYmplY3QudmFsdWVzKGFjdGV1ckJ5VWlkKVxuICAgIC5maWx0ZXIoKGFjdGV1cikgPT4ge1xuICAgICAgY29uc3QgeyBtYW5kYXRzIH0gPSBhY3RldXJcbiAgICAgIGlmICghbWFuZGF0cykge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1hbmRhdFNlbmF0ZXVyID0gbWFuZGF0cy5maWx0ZXIoXG4gICAgICAgIChtYW5kYXQ6IE1hbmRhdCkgPT5cbiAgICAgICAgICBtYW5kYXQueHNpVHlwZSA9PT0gVHlwZU1hbmRhdC5NYW5kYXRQYXJsZW1lbnRhaXJlVHlwZSAmJlxuICAgICAgICAgIC8vIG1hbmRhdC5sZWdpc2xhdHVyZSA9PT0gb3B0aW9ucy5sZWdpc2xhdHVyZSAmJlxuICAgICAgICAgIG1hbmRhdC50eXBlT3JnYW5lID09PSBDb2RlVHlwZU9yZ2FuZS5TZW5hdCxcbiAgICAgIClbMF1cbiAgICAgIGlmIChtYW5kYXRTZW5hdGV1ciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgICAgY29uc3QgeyBhZHJlc3NlcyB9ID0gYWN0ZXVyXG4gICAgICBpZiAoYWRyZXNzZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGxldCB1cmwgPSBudWxsXG4gICAgICBmb3IgKGNvbnN0IGFkcmVzc2Ugb2YgYWRyZXNzZXMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFkcmVzc2UueHNpVHlwZSA9PT0gXCJBZHJlc3NlU2l0ZVdlYl9UeXBlXCIgJiZcbiAgICAgICAgICBhZHJlc3NlLnR5cGVMaWJlbGxlID09PSBcIlVybCBzw6luYXRldXJcIlxuICAgICAgICApIHtcbiAgICAgICAgICB1cmwgPSBhZHJlc3NlLnZhbEVsZWNcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIEJvb2xlYW4odXJsKVxuICAgIH0pXG4gICAgLnNvcnQoKGEsIGIpID0+XG4gICAgICBhLnVpZC5sZW5ndGggPT09IGIudWlkLmxlbmd0aFxuICAgICAgICA/IGEudWlkLmxvY2FsZUNvbXBhcmUoYi51aWQpXG4gICAgICAgIDogYS51aWQubGVuZ3RoIC0gYi51aWQubGVuZ3RoLFxuICAgIClcblxuICBjb25zdCBnaXRHcm91cFVybCA9IG9wdGlvbnMuY2xvbmVcbiAgICA/IG9wdGlvbnMuY2xvbmUudHJpbSgpLnJlcGxhY2UoL1xcLyskLywgXCJcIilcbiAgICA6IHVuZGVmaW5lZFxuICBjb25zdCBwaG90b3NEaXJOYW1lID0gXCJwaG90b3Nfc2VuYXRldXJzXCJcbiAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7cGhvdG9zRGlyTmFtZX0uZ2l0YCwge1xuICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICB9KVxuICB9XG4gIGNvbnN0IHBob3Rvc0RpciA9IHBhdGguam9pbihkYXRhRGlyLCBwaG90b3NEaXJOYW1lKVxuXG4gIC8vIERvd25sb2FkIHBob3Rvcy5cbiAgZnMuZW5zdXJlRGlyU3luYyhwaG90b3NEaXIpXG4gIGlmIChvcHRpb25zLmZldGNoKSB7XG4gICAgY29uc3QgbWlzc2luZ1Bob3RvRmlsZVBhdGggPSBcImltYWdlcy90cmFuc3BhcmVudF8xNTV4MjI1LmpwZ1wiXG4gICAgZm9yIChjb25zdCBzZW5hdGV1ciBvZiBzZW5hdGV1cnMpIHtcbiAgICAgIGNvbnN0IGlkZW50ID0gc2VuYXRldXIuZXRhdENpdmlsLmlkZW50XG4gICAgICBjb25zdCBzZW5hdGV1clN0ZW0gPSBzdGVtRnJvbVNlbmF0ZXVyKHNlbmF0ZXVyKVxuICAgICAgY29uc3QgcGhvdG9GaWxlbmFtZSA9IGAke3NlbmF0ZXVyU3RlbX0uanBnYFxuICAgICAgY29uc3QgcGhvdG9GaWxlUGF0aCA9IHBhdGguam9pbihwaG90b3NEaXIsIHBob3RvRmlsZW5hbWUpXG4gICAgICBjb25zdCBwaG90b1RlbXBGaWxlbmFtZSA9IGAke3NlbmF0ZXVyU3RlbX1fdGVtcC5qcGdgXG4gICAgICBjb25zdCBwaG90b1RlbXBGaWxlUGF0aCA9IHBhdGguam9pbihwaG90b3NEaXIsIHBob3RvVGVtcEZpbGVuYW1lKVxuICAgICAgY29uc3QgdXJsUGhvdG8gPSBgaHR0cHM6Ly93d3cuc2VuYXQuZnIvc2VuaW1nLyR7cGhvdG9GaWxlbmFtZX1gXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGBMb2FkaW5nIHBob3RvICR7dXJsUGhvdG99IGZvciAke2lkZW50LnByZW5vbX0gJHtpZGVudC5ub2194oCmYCxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgLy8gZm9yIChsZXQgcmV0cmllcyA9IDA7IHJldHJpZXMgPCAzOyByZXRyaWVzKyspIHtcbiAgICAgIC8vICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmxQaG90bylcbiAgICAgIC8vICAgaWYgKHJlc3BvbnNlLm9rKSB7XG4gICAgICAvLyAgICAgYXdhaXQgcGlwZWxpbmUocmVzcG9uc2UuYm9keSwgZnMuY3JlYXRlV3JpdGVTdHJlYW0ocGhvdG9UZW1wRmlsZVBhdGgpKVxuICAgICAgLy8gICAgIGZzLnJlbmFtZVN5bmMocGhvdG9UZW1wRmlsZVBhdGgsIHBob3RvRmlsZVBhdGgpXG4gICAgICAvLyAgICAgYnJlYWtcbiAgICAgIC8vICAgfVxuICAgICAgLy8gICBpZiAocmV0cmllcyA+PSAyKSB7XG4gICAgICAvLyAgICAgY29uc29sZS53YXJuKGBGZXRjaCBmYWlsZWQ6ICR7dXJsUGhvdG99ICgke2lkZW50LnByZW5vbX0gJHtpZGVudC5ub219KWApXG4gICAgICAvLyAgICAgY29uc29sZS53YXJuKHJlc3BvbnNlLnN0YXR1cywgcmVzcG9uc2Uuc3RhdHVzVGV4dClcbiAgICAgIC8vICAgICBjb25zb2xlLndhcm4oYXdhaXQgcmVzcG9uc2UudGV4dCgpKVxuICAgICAgLy8gICAgIGlmIChmcy5leGlzdHNTeW5jKHBob3RvRmlsZVBhdGgpKSB7XG4gICAgICAvLyAgICAgICBjb25zb2xlLndhcm4oXCIgID0+IFJldXNpbmcgZXhpc3RpbmcgaW1hZ2VcIilcbiAgICAgIC8vICAgICB9IGVsc2Uge1xuICAgICAgLy8gICAgICAgY29uc29sZS53YXJuKFwiICA9PiBVc2luZyBibGFuayBpbWFnZVwiKVxuICAgICAgLy8gICAgICAgZnMuY29weUZpbGVTeW5jKG1pc3NpbmdQaG90b0ZpbGVQYXRoLCBwaG90b0ZpbGVQYXRoKVxuICAgICAgLy8gICAgIH1cbiAgICAgIC8vICAgICBicmVha1xuICAgICAgLy8gICB9XG4gICAgICAvLyB9XG4gICAgICB0cnkge1xuICAgICAgICBleGVjU3luYyhgd2dldCAtLXF1aWV0IC1PICR7cGhvdG9UZW1wRmlsZW5hbWV9ICR7dXJsUGhvdG99YCwge1xuICAgICAgICAgIGN3ZDogcGhvdG9zRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICAvLyBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgICAgZnMucmVuYW1lU3luYyhwaG90b1RlbXBGaWxlUGF0aCwgcGhvdG9GaWxlUGF0aClcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICAgIGlmIChmcy5leGlzdHNTeW5jKHBob3RvRmlsZVBhdGgpKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiICA9PiBSZXVzaW5nIGV4aXN0aW5nIGltYWdlXCIpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiICA9PiBVc2luZyBibGFuayBpbWFnZVwiKVxuICAgICAgICAgIGZzLmNvcHlGaWxlU3luYyhtaXNzaW5nUGhvdG9GaWxlUGF0aCwgcGhvdG9GaWxlUGF0aClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlc2l6ZSBwaG90b3MgdG8gMTU1eDIyNSwgYmVjYXVzZSBzb21lIGhhdmVuJ3QgZXhhY3RseSB0aGlzIHNpemUuXG4gIGZvciAoY29uc3Qgc2VuYXRldXIgb2Ygc2VuYXRldXJzKSB7XG4gICAgY29uc3QgaWRlbnQgPSBzZW5hdGV1ci5ldGF0Q2l2aWwuaWRlbnRcbiAgICBjb25zdCBzZW5hdGV1clN0ZW0gPSBzdGVtRnJvbVNlbmF0ZXVyKHNlbmF0ZXVyKVxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgUmVzaXppbmcgcGhvdG8gJHtzZW5hdGV1clN0ZW19IGZvciAke2lkZW50LnByZW5vbX0gJHtpZGVudC5ub2194oCmYCxcbiAgICAgIClcbiAgICB9XG4gICAgZXhlY1N5bmMoXG4gICAgICBgZ20gY29udmVydCAtcmVzaXplIDE1NXgyMjUhICR7c2VuYXRldXJTdGVtfS5qcGcgJHtzZW5hdGV1clN0ZW19XzE1NXgyMjUuanBnYCxcbiAgICAgIHtcbiAgICAgICAgY3dkOiBwaG90b3NEaXIsXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIC8vIENyZWF0ZSBhIG1vc2FpYyBvZiBwaG90b3MuXG4gIGNvbnN0IHBob3RvQnlJZFNlbmF0ZXVyOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0gPSB7fVxuICBjb25zdCByb3dzRmlsZW5hbWVzOiBzdHJpbmdbXSA9IFtdXG4gIGZvciAoXG4gICAgbGV0IHNlbmF0ZXVySW5kZXggPSAwLCByb3dJbmRleCA9IDA7XG4gICAgc2VuYXRldXJJbmRleCA8IHNlbmF0ZXVycy5sZW5ndGg7XG4gICAgc2VuYXRldXJJbmRleCArPSAyNSwgcm93SW5kZXgrK1xuICApIHtcbiAgICBjb25zdCByb3cgPSBzZW5hdGV1cnMuc2xpY2Uoc2VuYXRldXJJbmRleCwgc2VuYXRldXJJbmRleCArIDI1KVxuICAgIGNvbnN0IHBob3Rvc0ZpbGVuYW1lczogc3RyaW5nW10gPSBbXVxuICAgIGZvciAoY29uc3QgW2NvbHVtbkluZGV4LCBzZW5hdGV1cl0gb2Ygcm93LmVudHJpZXMoKSkge1xuICAgICAgY29uc3Qgc2VuYXRldXJTdGVtID0gc3RlbUZyb21TZW5hdGV1cihzZW5hdGV1cilcbiAgICAgIGNvbnN0IHBob3RvRmlsZW5hbWUgPSBgJHtzZW5hdGV1clN0ZW19XzE1NXgyMjUuanBnYFxuICAgICAgcGhvdG9zRmlsZW5hbWVzLnB1c2gocGhvdG9GaWxlbmFtZSlcbiAgICAgIHBob3RvQnlJZFNlbmF0ZXVyW3NlbmF0ZXVyLnVpZF0gPSB7XG4gICAgICAgIGNoZW1pbjogYHBob3Rvc19zZW5hdGV1cnMvJHtwaG90b0ZpbGVuYW1lfWAsXG4gICAgICAgIGNoZW1pbk1vc2FpcXVlOiBgcGhvdG9zX3NlbmF0ZXVycy9zZW5hdGV1cnMuanBnYCxcbiAgICAgICAgaGF1dGV1cjogMjI1LFxuICAgICAgICBsYXJnZXVyOiAxNTUsXG4gICAgICAgIHhNb3NhaXF1ZTogY29sdW1uSW5kZXggKiAxNTUsXG4gICAgICAgIHlNb3NhaXF1ZTogcm93SW5kZXggKiAyMjUsXG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHJvd0ZpbGVuYW1lID0gYHJvdy0ke3Jvd0luZGV4fS5qcGdgXG4gICAgZXhlY1N5bmMoYGdtIGNvbnZlcnQgJHtwaG90b3NGaWxlbmFtZXMuam9pbihcIiBcIil9ICthcHBlbmQgJHtyb3dGaWxlbmFtZX1gLCB7XG4gICAgICBjd2Q6IHBob3Rvc0RpcixcbiAgICB9KVxuICAgIHJvd3NGaWxlbmFtZXMucHVzaChyb3dGaWxlbmFtZSlcbiAgfVxuICBleGVjU3luYyhgZ20gY29udmVydCAke3Jvd3NGaWxlbmFtZXMuam9pbihcIiBcIil9IC1hcHBlbmQgc2VuYXRldXJzLmpwZ2AsIHtcbiAgICBjd2Q6IHBob3Rvc0RpcixcbiAgfSlcbiAgZm9yIChjb25zdCByb3dGaWxlbmFtZSBvZiByb3dzRmlsZW5hbWVzKSB7XG4gICAgZnMudW5saW5rU3luYyhwYXRoLmpvaW4ocGhvdG9zRGlyLCByb3dGaWxlbmFtZSkpXG4gIH1cblxuICBjb25zdCBqc29uRmlsZVBhdGggPSBwYXRoLmpvaW4ocGhvdG9zRGlyLCBcInNlbmF0ZXVycy5qc29uXCIpXG4gIGZzLndyaXRlRmlsZVN5bmMoanNvbkZpbGVQYXRoLCBKU09OLnN0cmluZ2lmeShwaG90b0J5SWRTZW5hdGV1ciwgbnVsbCwgMikpXG5cbiAgcmV0dXJuIGNvbW1pdEFuZFB1c2gocGhvdG9zRGlyLCBvcHRpb25zLmNvbW1pdCwgb3B0aW9ucy5yZW1vdGUpXG59XG5cbmZ1bmN0aW9uIHN0ZW1Gcm9tU2VuYXRldXIoc2VuYXRldXI6IEFjdGV1cikge1xuICBjb25zdCB7IGFkcmVzc2VzIH0gPSBzZW5hdGV1clxuICBsZXQgdXJsID0gbnVsbFxuICBmb3IgKGNvbnN0IGFkcmVzc2Ugb2YgYWRyZXNzZXMhKSB7XG4gICAgaWYgKFxuICAgICAgYWRyZXNzZS54c2lUeXBlID09PSBcIkFkcmVzc2VTaXRlV2ViX1R5cGVcIiAmJlxuICAgICAgYWRyZXNzZS50eXBlTGliZWxsZSA9PT0gXCJVcmwgc8OpbmF0ZXVyXCJcbiAgICApIHtcbiAgICAgIHVybCA9IGFkcmVzc2UudmFsRWxlY1xuICAgIH1cbiAgfVxuICBjb25zdCBtYXRjaCA9IHVybCEubWF0Y2goL15odHRwczpcXC9cXC93d3dcXC5zZW5hdFxcLmZyXFwvc2VuYXRldXJcXC8oLiopXFwuaHRtbCQvKVxuICBjb25zdCBzZW5hdGV1clN0ZW0gPSBtYXRjaCFbMV1cbiAgcmV0dXJuIHNlbmF0ZXVyU3RlbVxufVxuXG5yZXRyaWV2ZVBob3Rvc1NlbmF0ZXVycygpXG4gIC50aGVuKChlcnJvcikgPT4gcHJvY2Vzcy5leGl0KGVycm9yID8gMSA6IDApKVxuICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgY29uc29sZS5sb2coZXJyb3IpXG4gICAgcHJvY2Vzcy5leGl0KDIpXG4gIH0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFJQTtBQUNBO0FBQ0E7QUFNb0M7QUFBQSwrQ0FmcEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFpQkEsSUFBTUEsa0JBQWtCLEdBQUcsQ0FDekI7RUFDRUMsS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFBSSxFQUFFLCtEQUErRDtFQUNyRUMsSUFBSSxFQUFFLE9BQU87RUFDYkMsSUFBSSxFQUFFQztBQUNSLENBQUMsRUFDRDtFQUNFSixLQUFLLEVBQUUsR0FBRztFQUNWQyxJQUFJLEVBQUUsZUFBZTtFQUNyQkMsSUFBSSxFQUFFLFFBQVE7RUFDZEMsSUFBSSxFQUFFRTtBQUNSLENBQUMsRUFDRDtFQUNFTCxLQUFLLEVBQUUsR0FBRztFQUNWQyxJQUFJLEVBQUUsaUVBQWlFO0VBQ3ZFQyxJQUFJLEVBQUUsT0FBTztFQUNiQyxJQUFJLEVBQUVFO0FBQ1IsQ0FBQyxFQUNEO0VBQ0VMLEtBQUssRUFBRSxHQUFHO0VBQ1ZDLElBQUksRUFBRSw2QkFBNkI7RUFDbkNLLFFBQVEsRUFBRSxJQUFJO0VBQ2RKLElBQUksRUFBRSxRQUFRO0VBQ2RDLElBQUksRUFBRUM7QUFDUixDQUFDLEVBQ0Q7RUFDRUosS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFBSSxFQUFFLG9CQUFvQjtFQUMxQkMsSUFBSSxFQUFFLFFBQVE7RUFDZEMsSUFBSSxFQUFFRTtBQUNSLENBQUMsRUFDRDtFQUNFRSxhQUFhLEVBQUUsSUFBSTtFQUNuQk4sSUFBSSxFQUFFLGdEQUFnRDtFQUN0REMsSUFBSSxFQUFFLFNBQVM7RUFDZkMsSUFBSSxFQUFFQztBQUNSLENBQUMsQ0FDRjtBQUNELElBQU1JLE9BQU8sR0FBRyxJQUFBQywyQkFBZSxFQUFDVixrQkFBa0IsQ0FBQztBQUNuRDs7QUFFQSxTQUFTVyxhQUFhLENBQ3BCQyxhQUFxQixFQUNyQkMsTUFBZSxFQUNmQyxPQUFrQixFQUNUO0VBQ1QsSUFBSUMsS0FBSyxHQUFHLEtBQUs7RUFDakIsSUFBSUYsTUFBTSxFQUFFO0lBQ1YsSUFBQUcsdUJBQVEsRUFBQyxXQUFXLEVBQUU7TUFDcEJDLEdBQUcsRUFBRUwsYUFBYTtNQUNsQk0sR0FBRyxFQUFFQyxPQUFPLENBQUNELEdBQUc7TUFDaEJFLFFBQVEsRUFBRSxPQUFPO01BQ2pCQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU07SUFDcEMsQ0FBQyxDQUFDO0lBQ0YsSUFBSTtNQUNGLElBQUFMLHVCQUFRLEVBQUMsMENBQTBDLEVBQUU7UUFDbkRDLEdBQUcsRUFBRUwsYUFBYTtRQUNsQk0sR0FBRyxFQUFFQyxPQUFPLENBQUNELEdBQUc7UUFDaEJFLFFBQVEsRUFBRTtNQUNaLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQyxPQUFPRSxZQUFZLEVBQUU7TUFDckIsSUFDR0EsWUFBWSxDQUFrQkMsTUFBTSxLQUFLLElBQUksSUFDOUMsQ0FBQyxtQkFBbUIsQ0FBQ0MsSUFBSSxDQUFFRixZQUFZLENBQVNHLE1BQU0sQ0FBQyxFQUN2RDtRQUNBQyxPQUFPLENBQUNYLEtBQUssQ0FBRU8sWUFBWSxDQUFTSyxNQUFNLENBQUM7UUFDM0MsTUFBTUwsWUFBWTtNQUNwQjtJQUNGO0lBQUMsMkNBQ29CUixPQUFPLElBQUksRUFBRTtNQUFBO0lBQUE7TUFBbEMsb0RBQW9DO1FBQUEsSUFBekJjLE1BQU07UUFDZixJQUFJO1VBQ0YsSUFBQVosdUJBQVEscUJBQWFZLE1BQU0sY0FBVztZQUNwQ1gsR0FBRyxFQUFFTCxhQUFhO1lBQ2xCTSxHQUFHLEVBQUVDLE9BQU8sQ0FBQ0QsR0FBRztZQUNoQkUsUUFBUSxFQUFFLE9BQU87WUFDakJDLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTTtVQUNwQyxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsT0FBT0MsWUFBWSxFQUFFO1VBQ3JCO1VBQ0FJLE9BQU8sQ0FBQ1gsS0FBSyxDQUFFTyxZQUFZLENBQVNLLE1BQU0sQ0FBQztVQUMzQ1osS0FBSyxHQUFHLElBQUk7UUFDZDtNQUNGO0lBQUM7TUFBQTtJQUFBO01BQUE7SUFBQTtFQUNIO0VBQ0EsT0FBT0EsS0FBSztBQUNkO0FBQUMsU0FFY2MsdUJBQXVCO0VBQUE7QUFBQTtBQUFBO0VBQUEsc0ZBQXRDO0lBQUE7SUFBQTtNQUFBO1FBQUE7VUFDUUMsT0FBTyxHQUFHckIsT0FBTyxDQUFDcUIsT0FBTztVQUFBLHFCQUNQLElBQUFDLDBCQUFpQixFQUN2Q0QsT0FBTyxFQUNQRSx5QkFBZSxDQUFDQyxnQkFBZ0IsRUFDaEN4QixPQUFPLENBQUN5QixXQUFXLENBQ3BCLEVBSk9DLFdBQVcsc0JBQVhBLFdBQVc7VUFLYkMsU0FBUyxHQUFHQyxNQUFNLENBQUNDLE1BQU0sQ0FBQ0gsV0FBVyxDQUFDLENBQ3pDSSxNQUFNLENBQUMsVUFBQ0MsTUFBTSxFQUFLO1lBQ2xCLElBQVFDLE9BQU8sR0FBS0QsTUFBTSxDQUFsQkMsT0FBTztZQUNmLElBQUksQ0FBQ0EsT0FBTyxFQUFFO2NBQ1osT0FBTyxLQUFLO1lBQ2Q7WUFDQSxJQUFNQyxjQUFjLEdBQUdELE9BQU8sQ0FBQ0YsTUFBTSxDQUNuQyxVQUFDSSxNQUFjO2NBQUEsT0FDYkEsTUFBTSxDQUFDQyxPQUFPLEtBQUtDLDhCQUFVLENBQUNDLHVCQUF1QjtjQUNyRDtjQUNBSCxNQUFNLENBQUNJLFVBQVUsS0FBS0Msa0NBQWMsQ0FBQ0MsS0FBSztZQUFBLEVBQzdDLENBQUMsQ0FBQyxDQUFDO1lBQ0osSUFBSVAsY0FBYyxLQUFLUSxTQUFTLEVBQUU7Y0FDaEMsT0FBTyxLQUFLO1lBQ2Q7WUFDQSxJQUFRQyxRQUFRLEdBQUtYLE1BQU0sQ0FBbkJXLFFBQVE7WUFDaEIsSUFBSUEsUUFBUSxLQUFLRCxTQUFTLEVBQUU7Y0FDMUIsT0FBTyxLQUFLO1lBQ2Q7WUFDQSxJQUFJRSxHQUFHLEdBQUcsSUFBSTtZQUFBLDRDQUNRRCxRQUFRO2NBQUE7WUFBQTtjQUE5Qix1REFBZ0M7Z0JBQUEsSUFBckJFLE9BQU87Z0JBQ2hCLElBQ0VBLE9BQU8sQ0FBQ1QsT0FBTyxLQUFLLHFCQUFxQixJQUN6Q1MsT0FBTyxDQUFDQyxXQUFXLEtBQUssY0FBYyxFQUN0QztrQkFDQUYsR0FBRyxHQUFHQyxPQUFPLENBQUNFLE9BQU87Z0JBQ3ZCO2NBQ0Y7WUFBQztjQUFBO1lBQUE7Y0FBQTtZQUFBO1lBQ0QsT0FBT2pELE9BQU8sQ0FBQzhDLEdBQUcsQ0FBQztVQUNyQixDQUFDLENBQUMsQ0FDREksSUFBSSxDQUFDLFVBQUNDLENBQUMsRUFBRUMsQ0FBQztZQUFBLE9BQ1RELENBQUMsQ0FBQ0UsR0FBRyxDQUFDQyxNQUFNLEtBQUtGLENBQUMsQ0FBQ0MsR0FBRyxDQUFDQyxNQUFNLEdBQ3pCSCxDQUFDLENBQUNFLEdBQUcsQ0FBQ0UsYUFBYSxDQUFDSCxDQUFDLENBQUNDLEdBQUcsQ0FBQyxHQUMxQkYsQ0FBQyxDQUFDRSxHQUFHLENBQUNDLE1BQU0sR0FBR0YsQ0FBQyxDQUFDQyxHQUFHLENBQUNDLE1BQU07VUFBQSxFQUNoQztVQUVHRSxXQUFXLEdBQUdyRCxPQUFPLENBQUNzRCxLQUFLLEdBQzdCdEQsT0FBTyxDQUFDc0QsS0FBSyxDQUFDQyxJQUFJLEVBQUUsQ0FBQ0MsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FDeENmLFNBQVM7VUFDUGdCLGFBQWEsR0FBRyxrQkFBa0I7VUFDeEMsSUFBSUosV0FBVyxLQUFLWixTQUFTLEVBQUU7WUFDN0IsSUFBQWxDLHVCQUFRLHNCQUFjOEMsV0FBVyxjQUFJSSxhQUFhLFdBQVE7Y0FDeERqRCxHQUFHLEVBQUVhLE9BQU87Y0FDWlosR0FBRyxFQUFFQyxPQUFPLENBQUNELEdBQUc7Y0FDaEJFLFFBQVEsRUFBRSxPQUFPO2NBQ2pCQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU07WUFDcEMsQ0FBQyxDQUFDO1VBQ0o7VUFDTThDLFNBQVMsR0FBR0MsZ0JBQUksQ0FBQ0MsSUFBSSxDQUFDdkMsT0FBTyxFQUFFb0MsYUFBYSxDQUFDLEVBRW5EO1VBQ0FJLG1CQUFFLENBQUNDLGFBQWEsQ0FBQ0osU0FBUyxDQUFDO1VBQzNCLElBQUkxRCxPQUFPLENBQUMrRCxLQUFLLEVBQUU7WUFDWEMsb0JBQW9CLEdBQUcsZ0NBQWdDO1lBQUEsd0NBQ3RDckMsU0FBUztZQUFBO2NBQWhDLHVEQUFrQztnQkFBdkJzQyxRQUFRO2dCQUNYQyxLQUFLLEdBQUdELFFBQVEsQ0FBQ0UsU0FBUyxDQUFDRCxLQUFLO2dCQUNoQ0UsWUFBWSxHQUFHQyxnQkFBZ0IsQ0FBQ0osUUFBUSxDQUFDO2dCQUN6Q0ssYUFBYSxhQUFNRixZQUFZO2dCQUMvQkcsYUFBYSxHQUFHWixnQkFBSSxDQUFDQyxJQUFJLENBQUNGLFNBQVMsRUFBRVksYUFBYSxDQUFDO2dCQUNuREUsaUJBQWlCLGFBQU1KLFlBQVk7Z0JBQ25DSyxpQkFBaUIsR0FBR2QsZ0JBQUksQ0FBQ0MsSUFBSSxDQUFDRixTQUFTLEVBQUVjLGlCQUFpQixDQUFDO2dCQUMzREUsUUFBUSx5Q0FBa0NKLGFBQWE7Z0JBQzdELElBQUksQ0FBQ3RFLE9BQU8sQ0FBQzJFLE1BQU0sRUFBRTtrQkFDbkIxRCxPQUFPLENBQUMyRCxHQUFHLHlCQUNRRixRQUFRLGtCQUFRUixLQUFLLENBQUNXLE1BQU0sY0FBSVgsS0FBSyxDQUFDWSxHQUFHLFlBQzNEO2dCQUNIO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBLElBQUk7a0JBQ0YsSUFBQXZFLHVCQUFRLDRCQUFvQmlFLGlCQUFpQixjQUFJRSxRQUFRLEdBQUk7b0JBQzNEbEUsR0FBRyxFQUFFa0QsU0FBUztvQkFDZGpELEdBQUcsRUFBRUMsT0FBTyxDQUFDRCxHQUFHO29CQUNoQkUsUUFBUSxFQUFFO29CQUNWO2tCQUNGLENBQUMsQ0FBQzs7a0JBQ0ZrRCxtQkFBRSxDQUFDa0IsVUFBVSxDQUFDTixpQkFBaUIsRUFBRUYsYUFBYSxDQUFDO2dCQUNqRCxDQUFDLENBQUMsT0FBT2pFLEtBQUssRUFBRTtrQkFDZFcsT0FBTyxDQUFDWCxLQUFLLENBQUNBLEtBQUssQ0FBQztrQkFDcEIsSUFBSXVELG1CQUFFLENBQUNtQixVQUFVLENBQUNULGFBQWEsQ0FBQyxFQUFFO29CQUNoQ3RELE9BQU8sQ0FBQ2dFLElBQUksQ0FBQyw2QkFBNkIsQ0FBQztrQkFDN0MsQ0FBQyxNQUFNO29CQUNMaEUsT0FBTyxDQUFDZ0UsSUFBSSxDQUFDLHdCQUF3QixDQUFDO29CQUN0Q3BCLG1CQUFFLENBQUNxQixZQUFZLENBQUNsQixvQkFBb0IsRUFBRU8sYUFBYSxDQUFDO2tCQUN0RDtnQkFDRjtjQUNGO1lBQUM7Y0FBQTtZQUFBO2NBQUE7WUFBQTtVQUNIOztVQUVBO1VBQUEsd0NBQ3VCNUMsU0FBUztVQUFBO1lBQWhDLHVEQUFrQztjQUF2QnNDLFVBQVE7Y0FDWEMsTUFBSyxHQUFHRCxVQUFRLENBQUNFLFNBQVMsQ0FBQ0QsS0FBSztjQUNoQ0UsY0FBWSxHQUFHQyxnQkFBZ0IsQ0FBQ0osVUFBUSxDQUFDO2NBQy9DLElBQUksQ0FBQ2pFLE9BQU8sQ0FBQzJFLE1BQU0sRUFBRTtnQkFDbkIxRCxPQUFPLENBQUMyRCxHQUFHLDBCQUNTUixjQUFZLGtCQUFRRixNQUFLLENBQUNXLE1BQU0sY0FBSVgsTUFBSyxDQUFDWSxHQUFHLFlBQ2hFO2NBQ0g7Y0FDQSxJQUFBdkUsdUJBQVEsd0NBQ3lCNkQsY0FBWSxrQkFBUUEsY0FBWSxtQkFDL0Q7Z0JBQ0U1RCxHQUFHLEVBQUVrRDtjQUNQLENBQUMsQ0FDRjtZQUNIOztZQUVBO1VBQUE7WUFBQTtVQUFBO1lBQUE7VUFBQTtVQUNNeUIsaUJBQTJDLEdBQUcsQ0FBQyxDQUFDO1VBQ2hEQyxhQUF1QixHQUFHLEVBQUU7VUFDbEMsS0FDTUMsYUFBYSxHQUFHLENBQUMsRUFBRUMsUUFBUSxHQUFHLENBQUMsRUFDbkNELGFBQWEsR0FBRzFELFNBQVMsQ0FBQ3dCLE1BQU0sRUFDaENrQyxhQUFhLElBQUksRUFBRSxFQUFFQyxRQUFRLEVBQUUsRUFDL0I7WUFDTUMsR0FBRyxHQUFHNUQsU0FBUyxDQUFDNkQsS0FBSyxDQUFDSCxhQUFhLEVBQUVBLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDeERJLGVBQXlCLEdBQUcsRUFBRTtZQUFBLHdDQUNFRixHQUFHLENBQUNHLE9BQU8sRUFBRTtZQUFBO2NBQW5ELHVEQUFxRDtnQkFBQSxnREFBekNDLFdBQVcsb0JBQUUxQixTQUFRO2dCQUN6QkcsYUFBWSxHQUFHQyxnQkFBZ0IsQ0FBQ0osU0FBUSxDQUFDO2dCQUN6Q0ssY0FBYSxhQUFNRixhQUFZO2dCQUNyQ3FCLGVBQWUsQ0FBQ0csSUFBSSxDQUFDdEIsY0FBYSxDQUFDO2dCQUNuQ2EsaUJBQWlCLENBQUNsQixTQUFRLENBQUNmLEdBQUcsQ0FBQyxHQUFHO2tCQUNoQzJDLE1BQU0sNkJBQXNCdkIsY0FBYSxDQUFFO2tCQUMzQ3dCLGNBQWMsa0NBQWtDO2tCQUNoREMsT0FBTyxFQUFFLEdBQUc7a0JBQ1pDLE9BQU8sRUFBRSxHQUFHO2tCQUNaQyxTQUFTLEVBQUVOLFdBQVcsR0FBRyxHQUFHO2tCQUM1Qk8sU0FBUyxFQUFFWixRQUFRLEdBQUc7Z0JBQ3hCLENBQUM7Y0FDSDtZQUFDO2NBQUE7WUFBQTtjQUFBO1lBQUE7WUFDS2EsV0FBVyxpQkFBVWIsUUFBUTtZQUNuQyxJQUFBL0UsdUJBQVEsdUJBQWVrRixlQUFlLENBQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLHNCQUFZdUMsV0FBVyxHQUFJO2NBQ3pFM0YsR0FBRyxFQUFFa0Q7WUFDUCxDQUFDLENBQUM7WUFDRjBCLGFBQWEsQ0FBQ1EsSUFBSSxDQUFDTyxXQUFXLENBQUM7VUFDakM7VUFDQSxJQUFBNUYsdUJBQVEsdUJBQWU2RSxhQUFhLENBQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLDZCQUEwQjtZQUN0RXBELEdBQUcsRUFBRWtEO1VBQ1AsQ0FBQyxDQUFDO1VBQ0YsK0JBQTBCMEIsYUFBYSxzQ0FBRTtZQUE5QmUsWUFBVztZQUNwQnRDLG1CQUFFLENBQUN1QyxVQUFVLENBQUN6QyxnQkFBSSxDQUFDQyxJQUFJLENBQUNGLFNBQVMsRUFBRXlDLFlBQVcsQ0FBQyxDQUFDO1VBQ2xEO1VBRU1FLFlBQVksR0FBRzFDLGdCQUFJLENBQUNDLElBQUksQ0FBQ0YsU0FBUyxFQUFFLGdCQUFnQixDQUFDO1VBQzNERyxtQkFBRSxDQUFDeUMsYUFBYSxDQUFDRCxZQUFZLEVBQUVFLElBQUksQ0FBQ0MsU0FBUyxDQUFDckIsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1VBQUEsaUNBRW5FakYsYUFBYSxDQUFDd0QsU0FBUyxFQUFFMUQsT0FBTyxDQUFDSSxNQUFNLEVBQUVKLE9BQU8sQ0FBQ21CLE1BQU0sQ0FBQztRQUFBO1FBQUE7VUFBQTtNQUFBO0lBQUE7RUFBQSxDQUNoRTtFQUFBO0FBQUE7QUFFRCxTQUFTa0QsZ0JBQWdCLENBQUNKLFFBQWdCLEVBQUU7RUFDMUMsSUFBUXZCLFFBQVEsR0FBS3VCLFFBQVEsQ0FBckJ2QixRQUFRO0VBQ2hCLElBQUlDLEdBQUcsR0FBRyxJQUFJO0VBQUEsNENBQ1FELFFBQVE7SUFBQTtFQUFBO0lBQTlCLHVEQUFpQztNQUFBLElBQXRCRSxPQUFPO01BQ2hCLElBQ0VBLE9BQU8sQ0FBQ1QsT0FBTyxLQUFLLHFCQUFxQixJQUN6Q1MsT0FBTyxDQUFDQyxXQUFXLEtBQUssY0FBYyxFQUN0QztRQUNBRixHQUFHLEdBQUdDLE9BQU8sQ0FBQ0UsT0FBTztNQUN2QjtJQUNGO0VBQUM7SUFBQTtFQUFBO0lBQUE7RUFBQTtFQUNELElBQU0yRCxLQUFLLEdBQUc5RCxHQUFHLENBQUU4RCxLQUFLLENBQUMsa0RBQWtELENBQUM7RUFDNUUsSUFBTXJDLFlBQVksR0FBR3FDLEtBQUssQ0FBRSxDQUFDLENBQUM7RUFDOUIsT0FBT3JDLFlBQVk7QUFDckI7QUFFQWhELHVCQUF1QixFQUFFLENBQ3RCc0YsSUFBSSxDQUFDLFVBQUNwRyxLQUFLO0VBQUEsT0FBS0ksT0FBTyxDQUFDaUcsSUFBSSxDQUFDckcsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFBQSxFQUFDLFNBQ3ZDLENBQUMsVUFBQ0EsS0FBSyxFQUFLO0VBQ2hCVyxPQUFPLENBQUMyRCxHQUFHLENBQUN0RSxLQUFLLENBQUM7RUFDbEJJLE9BQU8sQ0FBQ2lHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDakIsQ0FBQyxDQUFDIn0=
333
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2hpbGRfcHJvY2VzcyIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9mc0V4dHJhIiwiX3BhdGgiLCJfZGF0YXNldHMiLCJnaXQiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9sb2FkZXJzIiwiX2FjdGV1cnNfZXRfb3JnYW5lcyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZXhwb3J0cyIsIk9wIiwiaGFzT3duIiwidmFsdWUiLCIkU3ltYm9sIiwiU3ltYm9sIiwiaXRlcmF0b3JTeW1ib2wiLCJpdGVyYXRvciIsImFzeW5jSXRlcmF0b3JTeW1ib2wiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWdTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImVyciIsIndyYXAiLCJpbm5lckZuIiwib3V0ZXJGbiIsInNlbGYiLCJ0cnlMb2NzTGlzdCIsInByb3RvR2VuZXJhdG9yIiwiR2VuZXJhdG9yIiwiZ2VuZXJhdG9yIiwiY3JlYXRlIiwiY29udGV4dCIsIkNvbnRleHQiLCJtYWtlSW52b2tlTWV0aG9kIiwidHJ5Q2F0Y2giLCJmbiIsImFyZyIsInR5cGUiLCJDb250aW51ZVNlbnRpbmVsIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsIkl0ZXJhdG9yUHJvdG90eXBlIiwiZ2V0UHJvdG8iLCJnZXRQcm90b3R5cGVPZiIsIk5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlIiwidmFsdWVzIiwiR3AiLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJmb3JFYWNoIiwibWV0aG9kIiwiX2ludm9rZSIsIkFzeW5jSXRlcmF0b3IiLCJQcm9taXNlSW1wbCIsImludm9rZSIsInJlc29sdmUiLCJyZWplY3QiLCJyZWNvcmQiLCJyZXN1bHQiLCJfX2F3YWl0IiwidGhlbiIsInVud3JhcHBlZCIsImVycm9yIiwicHJldmlvdXNQcm9taXNlIiwiY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmciLCJzdGF0ZSIsIkVycm9yIiwiZG9uZVJlc3VsdCIsImRlbGVnYXRlIiwiZGVsZWdhdGVSZXN1bHQiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJkb25lIiwibWV0aG9kTmFtZSIsInVuZGVmaW5lZCIsIlR5cGVFcnJvciIsImluZm8iLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJsb2NzIiwiZW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsIml0ZXJhYmxlIiwiaXRlcmF0b3JNZXRob2QiLCJpc05hTiIsImxlbmd0aCIsImkiLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJnZW5GdW4iLCJjdG9yIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJpdGVyIiwia2V5cyIsInZhbCIsIm9iamVjdCIsInJldmVyc2UiLCJwb3AiLCJza2lwVGVtcFJlc2V0IiwicHJldiIsImNoYXJBdCIsInNsaWNlIiwic3RvcCIsInJvb3RSZWNvcmQiLCJydmFsIiwiZXhjZXB0aW9uIiwiaGFuZGxlIiwibG9jIiwiY2F1Z2h0IiwiaGFzQ2F0Y2giLCJoYXNGaW5hbGx5IiwiZmluYWxseUVudHJ5IiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJ0aHJvd24iLCJkZWxlZ2F0ZVlpZWxkIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwiX2kiLCJfcyIsIl9lIiwiX3giLCJfciIsIl9hcnIiLCJfbiIsIl9kIiwiQXJyYXkiLCJpc0FycmF5IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJvIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkYiLCJzIiwibiIsImUiLCJfZTIiLCJmIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsInN0ZXAiLCJfZTMiLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwiZnJvbSIsInRlc3QiLCJsZW4iLCJhcnIyIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwiX25leHQiLCJfdGhyb3ciLCJfYXN5bmNUb0dlbmVyYXRvciIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImFsaWFzIiwiaGVscCIsIlN0cmluZyIsIkJvb2xlYW4iLCJtdWx0aXBsZSIsImRlZmF1bHRPcHRpb24iLCJvcHRpb25zIiwiY29tbWFuZExpbmVBcmdzIiwicmV0cmlldmVQaG90b3NTZW5hdGV1cnMiLCJfcmV0cmlldmVQaG90b3NTZW5hdGV1cnMiLCJfY2FsbGVlIiwiZGF0YURpciIsIl9sb2FkQXNzZW1ibGVlRGF0YSIsImFjdGV1ckJ5VWlkIiwic2VuYXRldXJzIiwiZ2l0R3JvdXBVcmwiLCJwaG90b3NEaXJOYW1lIiwicGhvdG9zRGlyIiwibWlzc2luZ1Bob3RvRmlsZVBhdGgiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwic2VuYXRldXIiLCJpZGVudCIsInNlbmF0ZXVyU3RlbSIsInBob3RvRmlsZW5hbWUiLCJwaG90b0ZpbGVQYXRoIiwicGhvdG9UZW1wRmlsZW5hbWUiLCJwaG90b1RlbXBGaWxlUGF0aCIsInVybFBob3RvIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsIl9zZW5hdGV1cjIiLCJfaWRlbnQiLCJfc2VuYXRldXJTdGVtMiIsInBob3RvQnlJZFNlbmF0ZXVyIiwicm93c0ZpbGVuYW1lcyIsInNlbmF0ZXVySW5kZXgiLCJyb3dJbmRleCIsInJvdyIsInBob3Rvc0ZpbGVuYW1lcyIsIl9pdGVyYXRvcjUiLCJfc3RlcDUiLCJfc3RlcDUkdmFsdWUiLCJjb2x1bW5JbmRleCIsIl9zZW5hdGV1ciIsIl9zZW5hdGV1clN0ZW0iLCJfcGhvdG9GaWxlbmFtZSIsInJvd0ZpbGVuYW1lIiwiX2kyIiwiX3Jvd3NGaWxlbmFtZXMiLCJfcm93RmlsZW5hbWUiLCJqc29uRmlsZVBhdGgiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwibG9hZEFzc2VtYmxlZURhdGEiLCJFbmFibGVkRGF0YXNldHMiLCJBY3RldXJzRXRPcmdhbmVzIiwibGVnaXNsYXR1cmUiLCJmaWx0ZXIiLCJhY3RldXIiLCJtYW5kYXRzIiwibWFuZGF0U2VuYXRldXIiLCJtYW5kYXQiLCJ4c2lUeXBlIiwiVHlwZU1hbmRhdCIsIk1hbmRhdFBhcmxlbWVudGFpcmVUeXBlIiwidHlwZU9yZ2FuZSIsIkNvZGVUeXBlT3JnYW5lIiwiU2VuYXQiLCJhZHJlc3NlcyIsInVybCIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJhZHJlc3NlIiwidHlwZUxpYmVsbGUiLCJ2YWxFbGVjIiwic29ydCIsImEiLCJiIiwidWlkIiwibG9jYWxlQ29tcGFyZSIsImNsb25lIiwidHJpbSIsInJlcGxhY2UiLCJleGVjU3luYyIsImNvbmNhdCIsImN3ZCIsImVudiIsInByb2Nlc3MiLCJlbmNvZGluZyIsInN0ZGlvIiwicGF0aCIsImpvaW4iLCJwdWxsIiwiZnMiLCJlbnN1cmVEaXJTeW5jIiwiZmV0Y2giLCJldGF0Q2l2aWwiLCJzdGVtRnJvbVNlbmF0ZXVyIiwic2lsZW50IiwiY29uc29sZSIsImxvZyIsInByZW5vbSIsIm5vbSIsInJlbmFtZVN5bmMiLCJleGlzdHNTeW5jIiwid2FybiIsImNvcHlGaWxlU3luYyIsImVudHJpZXMiLCJjaGVtaW4iLCJjaGVtaW5Nb3NhaXF1ZSIsImhhdXRldXIiLCJsYXJnZXVyIiwieE1vc2FpcXVlIiwieU1vc2FpcXVlIiwidW5saW5rU3luYyIsIndyaXRlRmlsZVN5bmMiLCJKU09OIiwic3RyaW5naWZ5IiwiY29tbWl0IiwiY29tbWl0QW5kUHVzaCIsInJlbW90ZSIsIl9pdGVyYXRvciIsIl9zdGVwIiwibWF0Y2giLCJleGl0Q29kZSIsImV4aXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9yZXRyaWV2ZV9zZW5hdGV1cnNfcGhvdG9zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG4vLyBpbXBvcnQgZmV0Y2ggZnJvbSBcIm5vZGUtZmV0Y2hcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuLy8gaW1wb3J0IHN0cmVhbSBmcm9tIFwic3RyZWFtXCJcbi8vIGltcG9ydCB1dGlsIGZyb20gXCJ1dGlsXCJcblxuaW1wb3J0IHsgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCAqIGFzIGdpdCBmcm9tIFwiLi4vZ2l0XCJcbmltcG9ydCB7IGxvYWRBc3NlbWJsZWVEYXRhIH0gZnJvbSBcIi4uL2xvYWRlcnNcIlxuaW1wb3J0IHtcbiAgQWN0ZXVyLFxuICBDb2RlVHlwZU9yZ2FuZSxcbiAgTWFuZGF0LFxuICBQaG90byxcbiAgVHlwZU1hbmRhdCxcbn0gZnJvbSBcIi4uL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcIkNcIixcbiAgICBoZWxwOiBcImNsb25lIHJlcG9zaXRvcmllcyBmcm9tIGdpdmVuIGdyb3VwIChvciBvcmdhbml6YXRpb24pIGdpdCBVUkxcIixcbiAgICBuYW1lOiBcImNsb25lXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwiY1wiLFxuICAgIGhlbHA6IFwiY29tbWl0IHBob3Rvc1wiLFxuICAgIG5hbWU6IFwiY29tbWl0XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcImZcIixcbiAgICBoZWxwOiBcImZldGNoIHPDqW5hdGV1cnMnIHBpY3R1cmVzIGluc3RlYWQgb2YgcmV0cmlldmluZyB0aGVtIGZyb20gZmlsZXNcIixcbiAgICBuYW1lOiBcImZldGNoXCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInBcIixcbiAgICBoZWxwOiBcInB1bGwgcmVwb3NpdG9yaWVzIGJlZm9yZSBwcm9jZWVkaW5nXCIsXG4gICAgbmFtZTogXCJwdWxsXCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInJcIixcbiAgICBoZWxwOiBcInB1c2ggY29tbWl0IHRvIGdpdmVuIHJlbW90ZVwiLFxuICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIG5hbWU6IFwicmVtb3RlXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwic1wiLFxuICAgIGhlbHA6IFwiZG9uJ3QgbG9nIGFueXRoaW5nXCIsXG4gICAgbmFtZTogXCJzaWxlbnRcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICBoZWxwOiBcImRpcmVjdG9yeSBjb250YWluaW5nIEFzc2VtYmzDqWUgb3BlbiBkYXRhIGZpbGVzXCIsXG4gICAgbmFtZTogXCJkYXRhRGlyXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuXVxuY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG4vLyBjb25zdCBwaXBlbGluZSA9IHV0aWwucHJvbWlzaWZ5KHN0cmVhbS5waXBlbGluZSlcblxuYXN5bmMgZnVuY3Rpb24gcmV0cmlldmVQaG90b3NTZW5hdGV1cnMoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBjb25zdCB7IGFjdGV1ckJ5VWlkIH0gPSBsb2FkQXNzZW1ibGVlRGF0YShcbiAgICBkYXRhRGlyLFxuICAgIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzLFxuICAgIG9wdGlvbnMubGVnaXNsYXR1cmUsXG4gIClcbiAgY29uc3Qgc2VuYXRldXJzID0gT2JqZWN0LnZhbHVlcyhhY3RldXJCeVVpZClcbiAgICAuZmlsdGVyKChhY3RldXIpID0+IHtcbiAgICAgIGNvbnN0IHsgbWFuZGF0cyB9ID0gYWN0ZXVyXG4gICAgICBpZiAoIW1hbmRhdHMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBjb25zdCBtYW5kYXRTZW5hdGV1ciA9IG1hbmRhdHMuZmlsdGVyKFxuICAgICAgICAobWFuZGF0OiBNYW5kYXQpID0+XG4gICAgICAgICAgbWFuZGF0LnhzaVR5cGUgPT09IFR5cGVNYW5kYXQuTWFuZGF0UGFybGVtZW50YWlyZVR5cGUgJiZcbiAgICAgICAgICAvLyBtYW5kYXQubGVnaXNsYXR1cmUgPT09IG9wdGlvbnMubGVnaXNsYXR1cmUgJiZcbiAgICAgICAgICBtYW5kYXQudHlwZU9yZ2FuZSA9PT0gQ29kZVR5cGVPcmdhbmUuU2VuYXQsXG4gICAgICApWzBdXG4gICAgICBpZiAobWFuZGF0U2VuYXRldXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGNvbnN0IHsgYWRyZXNzZXMgfSA9IGFjdGV1clxuICAgICAgaWYgKGFkcmVzc2VzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgICBsZXQgdXJsID0gbnVsbFxuICAgICAgZm9yIChjb25zdCBhZHJlc3NlIG9mIGFkcmVzc2VzKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBhZHJlc3NlLnhzaVR5cGUgPT09IFwiQWRyZXNzZVNpdGVXZWJfVHlwZVwiICYmXG4gICAgICAgICAgYWRyZXNzZS50eXBlTGliZWxsZSA9PT0gXCJVcmwgc8OpbmF0ZXVyXCJcbiAgICAgICAgKSB7XG4gICAgICAgICAgdXJsID0gYWRyZXNzZS52YWxFbGVjXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBCb29sZWFuKHVybClcbiAgICB9KVxuICAgIC5zb3J0KChhLCBiKSA9PlxuICAgICAgYS51aWQubGVuZ3RoID09PSBiLnVpZC5sZW5ndGhcbiAgICAgICAgPyBhLnVpZC5sb2NhbGVDb21wYXJlKGIudWlkKVxuICAgICAgICA6IGEudWlkLmxlbmd0aCAtIGIudWlkLmxlbmd0aCxcbiAgICApXG5cbiAgY29uc3QgZ2l0R3JvdXBVcmwgPSBvcHRpb25zLmNsb25lXG4gICAgPyBvcHRpb25zLmNsb25lLnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpXG4gICAgOiB1bmRlZmluZWRcbiAgY29uc3QgcGhvdG9zRGlyTmFtZSA9IFwicGhvdG9zX3NlbmF0ZXVyc1wiXG4gIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke3Bob3Rvc0Rpck5hbWV9LmdpdGAsIHtcbiAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgfSlcbiAgfVxuICBjb25zdCBwaG90b3NEaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgcGhvdG9zRGlyTmFtZSlcbiAgaWYgKG9wdGlvbnMucHVsbCkge1xuICAgIGV4ZWNTeW5jKGBnaXQgcHVsbCAtLXJlYmFzZWAsIHtcbiAgICAgIGN3ZDogcGhvdG9zRGlyLFxuICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICB9KVxuICB9XG5cbiAgLy8gRG93bmxvYWQgcGhvdG9zLlxuICBmcy5lbnN1cmVEaXJTeW5jKHBob3Rvc0RpcilcbiAgaWYgKG9wdGlvbnMuZmV0Y2gpIHtcbiAgICBjb25zdCBtaXNzaW5nUGhvdG9GaWxlUGF0aCA9IFwiaW1hZ2VzL3RyYW5zcGFyZW50XzE1NXgyMjUuanBnXCJcbiAgICBmb3IgKGNvbnN0IHNlbmF0ZXVyIG9mIHNlbmF0ZXVycykge1xuICAgICAgY29uc3QgaWRlbnQgPSBzZW5hdGV1ci5ldGF0Q2l2aWwuaWRlbnRcbiAgICAgIGNvbnN0IHNlbmF0ZXVyU3RlbSA9IHN0ZW1Gcm9tU2VuYXRldXIoc2VuYXRldXIpXG4gICAgICBjb25zdCBwaG90b0ZpbGVuYW1lID0gYCR7c2VuYXRldXJTdGVtfS5qcGdgXG4gICAgICBjb25zdCBwaG90b0ZpbGVQYXRoID0gcGF0aC5qb2luKHBob3Rvc0RpciwgcGhvdG9GaWxlbmFtZSlcbiAgICAgIGNvbnN0IHBob3RvVGVtcEZpbGVuYW1lID0gYCR7c2VuYXRldXJTdGVtfV90ZW1wLmpwZ2BcbiAgICAgIGNvbnN0IHBob3RvVGVtcEZpbGVQYXRoID0gcGF0aC5qb2luKHBob3Rvc0RpciwgcGhvdG9UZW1wRmlsZW5hbWUpXG4gICAgICBjb25zdCB1cmxQaG90byA9IGBodHRwczovL3d3dy5zZW5hdC5mci9zZW5pbWcvJHtwaG90b0ZpbGVuYW1lfWBcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgYExvYWRpbmcgcGhvdG8gJHt1cmxQaG90b30gZm9yICR7aWRlbnQucHJlbm9tfSAke2lkZW50Lm5vbX3igKZgLFxuICAgICAgICApXG4gICAgICB9XG4gICAgICAvLyBmb3IgKGxldCByZXRyaWVzID0gMDsgcmV0cmllcyA8IDM7IHJldHJpZXMrKykge1xuICAgICAgLy8gICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybFBob3RvKVxuICAgICAgLy8gICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgIC8vICAgICBhd2FpdCBwaXBlbGluZShyZXNwb25zZS5ib2R5LCBmcy5jcmVhdGVXcml0ZVN0cmVhbShwaG90b1RlbXBGaWxlUGF0aCkpXG4gICAgICAvLyAgICAgZnMucmVuYW1lU3luYyhwaG90b1RlbXBGaWxlUGF0aCwgcGhvdG9GaWxlUGF0aClcbiAgICAgIC8vICAgICBicmVha1xuICAgICAgLy8gICB9XG4gICAgICAvLyAgIGlmIChyZXRyaWVzID49IDIpIHtcbiAgICAgIC8vICAgICBjb25zb2xlLndhcm4oYEZldGNoIGZhaWxlZDogJHt1cmxQaG90b30gKCR7aWRlbnQucHJlbm9tfSAke2lkZW50Lm5vbX0pYClcbiAgICAgIC8vICAgICBjb25zb2xlLndhcm4ocmVzcG9uc2Uuc3RhdHVzLCByZXNwb25zZS5zdGF0dXNUZXh0KVxuICAgICAgLy8gICAgIGNvbnNvbGUud2Fybihhd2FpdCByZXNwb25zZS50ZXh0KCkpXG4gICAgICAvLyAgICAgaWYgKGZzLmV4aXN0c1N5bmMocGhvdG9GaWxlUGF0aCkpIHtcbiAgICAgIC8vICAgICAgIGNvbnNvbGUud2FybihcIiAgPT4gUmV1c2luZyBleGlzdGluZyBpbWFnZVwiKVxuICAgICAgLy8gICAgIH0gZWxzZSB7XG4gICAgICAvLyAgICAgICBjb25zb2xlLndhcm4oXCIgID0+IFVzaW5nIGJsYW5rIGltYWdlXCIpXG4gICAgICAvLyAgICAgICBmcy5jb3B5RmlsZVN5bmMobWlzc2luZ1Bob3RvRmlsZVBhdGgsIHBob3RvRmlsZVBhdGgpXG4gICAgICAvLyAgICAgfVxuICAgICAgLy8gICAgIGJyZWFrXG4gICAgICAvLyAgIH1cbiAgICAgIC8vIH1cbiAgICAgIHRyeSB7XG4gICAgICAgIGV4ZWNTeW5jKGB3Z2V0IC0tcXVpZXQgLU8gJHtwaG90b1RlbXBGaWxlbmFtZX0gJHt1cmxQaG90b31gLCB7XG4gICAgICAgICAgY3dkOiBwaG90b3NEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIC8vIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgICBmcy5yZW5hbWVTeW5jKHBob3RvVGVtcEZpbGVQYXRoLCBwaG90b0ZpbGVQYXRoKVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcbiAgICAgICAgaWYgKGZzLmV4aXN0c1N5bmMocGhvdG9GaWxlUGF0aCkpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCIgID0+IFJldXNpbmcgZXhpc3RpbmcgaW1hZ2VcIilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCIgID0+IFVzaW5nIGJsYW5rIGltYWdlXCIpXG4gICAgICAgICAgZnMuY29weUZpbGVTeW5jKG1pc3NpbmdQaG90b0ZpbGVQYXRoLCBwaG90b0ZpbGVQYXRoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzaXplIHBob3RvcyB0byAxNTV4MjI1LCBiZWNhdXNlIHNvbWUgaGF2ZW4ndCBleGFjdGx5IHRoaXMgc2l6ZS5cbiAgZm9yIChjb25zdCBzZW5hdGV1ciBvZiBzZW5hdGV1cnMpIHtcbiAgICBjb25zdCBpZGVudCA9IHNlbmF0ZXVyLmV0YXRDaXZpbC5pZGVudFxuICAgIGNvbnN0IHNlbmF0ZXVyU3RlbSA9IHN0ZW1Gcm9tU2VuYXRldXIoc2VuYXRldXIpXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBSZXNpemluZyBwaG90byAke3NlbmF0ZXVyU3RlbX0gZm9yICR7aWRlbnQucHJlbm9tfSAke2lkZW50Lm5vbX3igKZgLFxuICAgICAgKVxuICAgIH1cbiAgICBleGVjU3luYyhcbiAgICAgIGBnbSBjb252ZXJ0IC1yZXNpemUgMTU1eDIyNSEgJHtzZW5hdGV1clN0ZW19LmpwZyAke3NlbmF0ZXVyU3RlbX1fMTU1eDIyNS5qcGdgLFxuICAgICAge1xuICAgICAgICBjd2Q6IHBob3Rvc0RpcixcbiAgICAgIH0sXG4gICAgKVxuICB9XG5cbiAgLy8gQ3JlYXRlIGEgbW9zYWljIG9mIHBob3Rvcy5cbiAgY29uc3QgcGhvdG9CeUlkU2VuYXRldXI6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSA9IHt9XG4gIGNvbnN0IHJvd3NGaWxlbmFtZXM6IHN0cmluZ1tdID0gW11cbiAgZm9yIChcbiAgICBsZXQgc2VuYXRldXJJbmRleCA9IDAsIHJvd0luZGV4ID0gMDtcbiAgICBzZW5hdGV1ckluZGV4IDwgc2VuYXRldXJzLmxlbmd0aDtcbiAgICBzZW5hdGV1ckluZGV4ICs9IDI1LCByb3dJbmRleCsrXG4gICkge1xuICAgIGNvbnN0IHJvdyA9IHNlbmF0ZXVycy5zbGljZShzZW5hdGV1ckluZGV4LCBzZW5hdGV1ckluZGV4ICsgMjUpXG4gICAgY29uc3QgcGhvdG9zRmlsZW5hbWVzOiBzdHJpbmdbXSA9IFtdXG4gICAgZm9yIChjb25zdCBbY29sdW1uSW5kZXgsIHNlbmF0ZXVyXSBvZiByb3cuZW50cmllcygpKSB7XG4gICAgICBjb25zdCBzZW5hdGV1clN0ZW0gPSBzdGVtRnJvbVNlbmF0ZXVyKHNlbmF0ZXVyKVxuICAgICAgY29uc3QgcGhvdG9GaWxlbmFtZSA9IGAke3NlbmF0ZXVyU3RlbX1fMTU1eDIyNS5qcGdgXG4gICAgICBwaG90b3NGaWxlbmFtZXMucHVzaChwaG90b0ZpbGVuYW1lKVxuICAgICAgcGhvdG9CeUlkU2VuYXRldXJbc2VuYXRldXIudWlkXSA9IHtcbiAgICAgICAgY2hlbWluOiBgcGhvdG9zX3NlbmF0ZXVycy8ke3Bob3RvRmlsZW5hbWV9YCxcbiAgICAgICAgY2hlbWluTW9zYWlxdWU6IGBwaG90b3Nfc2VuYXRldXJzL3NlbmF0ZXVycy5qcGdgLFxuICAgICAgICBoYXV0ZXVyOiAyMjUsXG4gICAgICAgIGxhcmdldXI6IDE1NSxcbiAgICAgICAgeE1vc2FpcXVlOiBjb2x1bW5JbmRleCAqIDE1NSxcbiAgICAgICAgeU1vc2FpcXVlOiByb3dJbmRleCAqIDIyNSxcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgcm93RmlsZW5hbWUgPSBgcm93LSR7cm93SW5kZXh9LmpwZ2BcbiAgICBleGVjU3luYyhgZ20gY29udmVydCAke3Bob3Rvc0ZpbGVuYW1lcy5qb2luKFwiIFwiKX0gK2FwcGVuZCAke3Jvd0ZpbGVuYW1lfWAsIHtcbiAgICAgIGN3ZDogcGhvdG9zRGlyLFxuICAgIH0pXG4gICAgcm93c0ZpbGVuYW1lcy5wdXNoKHJvd0ZpbGVuYW1lKVxuICB9XG4gIGV4ZWNTeW5jKGBnbSBjb252ZXJ0ICR7cm93c0ZpbGVuYW1lcy5qb2luKFwiIFwiKX0gLWFwcGVuZCBzZW5hdGV1cnMuanBnYCwge1xuICAgIGN3ZDogcGhvdG9zRGlyLFxuICB9KVxuICBmb3IgKGNvbnN0IHJvd0ZpbGVuYW1lIG9mIHJvd3NGaWxlbmFtZXMpIHtcbiAgICBmcy51bmxpbmtTeW5jKHBhdGguam9pbihwaG90b3NEaXIsIHJvd0ZpbGVuYW1lKSlcbiAgfVxuXG4gIGNvbnN0IGpzb25GaWxlUGF0aCA9IHBhdGguam9pbihwaG90b3NEaXIsIFwic2VuYXRldXJzLmpzb25cIilcbiAgZnMud3JpdGVGaWxlU3luYyhqc29uRmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHBob3RvQnlJZFNlbmF0ZXVyLCBudWxsLCAyKSlcblxuICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICByZXR1cm4gZ2l0LmNvbW1pdEFuZFB1c2gocGhvdG9zRGlyLCBcIk5vdXZlbGxlIG1vaXNzb25cIiwgb3B0aW9ucy5yZW1vdGUpXG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuZnVuY3Rpb24gc3RlbUZyb21TZW5hdGV1cihzZW5hdGV1cjogQWN0ZXVyKSB7XG4gIGNvbnN0IHsgYWRyZXNzZXMgfSA9IHNlbmF0ZXVyXG4gIGxldCB1cmwgPSBudWxsXG4gIGZvciAoY29uc3QgYWRyZXNzZSBvZiBhZHJlc3NlcyEpIHtcbiAgICBpZiAoXG4gICAgICBhZHJlc3NlLnhzaVR5cGUgPT09IFwiQWRyZXNzZVNpdGVXZWJfVHlwZVwiICYmXG4gICAgICBhZHJlc3NlLnR5cGVMaWJlbGxlID09PSBcIlVybCBzw6luYXRldXJcIlxuICAgICkge1xuICAgICAgdXJsID0gYWRyZXNzZS52YWxFbGVjXG4gICAgfVxuICB9XG4gIGNvbnN0IG1hdGNoID0gdXJsIS5tYXRjaCgvXmh0dHBzOlxcL1xcL3d3d1xcLnNlbmF0XFwuZnJcXC9zZW5hdGV1clxcLyguKilcXC5odG1sJC8pXG4gIGNvbnN0IHNlbmF0ZXVyU3RlbSA9IG1hdGNoIVsxXVxuICByZXR1cm4gc2VuYXRldXJTdGVtXG59XG5cbnJldHJpZXZlUGhvdG9zU2VuYXRldXJzKClcbiAgLnRoZW4oKGV4aXRDb2RlKSA9PiBwcm9jZXNzLmV4aXQoZXhpdENvZGUpKVxuICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgY29uc29sZS5sb2coZXJyb3IpXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH0pXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxjQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxnQkFBQSxHQUFBQyxzQkFBQSxD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