@wavemaker/app-ng-runtime 11.11.0-rc.6106 → 11.11.0-rc.6109

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 (57) hide show
  1. package/build-task/bundles/index.umd.js +1 -1
  2. package/build-task/esm2022/advanced/carousel/carousel-template/carousel-template.build.mjs +2 -2
  3. package/build-task/fesm2022/index.mjs +1 -1
  4. package/build-task/fesm2022/index.mjs.map +1 -1
  5. package/components/base/bundles/index.umd.js +11 -7
  6. package/components/base/esm2022/pipes/custom-pipes.mjs +3 -2
  7. package/components/base/esm2022/utils/form-utils.mjs +3 -2
  8. package/components/base/fesm2022/index.mjs +7 -4
  9. package/components/base/fesm2022/index.mjs.map +1 -1
  10. package/components/base/pipes/custom-pipes.d.ts +1 -1
  11. package/components/chart/bundles/index.umd.js +4 -2
  12. package/components/chart/esm2022/chart.utils.mjs +3 -2
  13. package/components/chart/fesm2022/index.mjs +2 -1
  14. package/components/chart/fesm2022/index.mjs.map +1 -1
  15. package/components/containers/wizard/bundles/index.umd.js +1 -1
  16. package/components/containers/wizard/esm2022/wizard.component.mjs +2 -2
  17. package/components/containers/wizard/fesm2022/index.mjs +1 -1
  18. package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  19. package/components/data/table/bundles/index.umd.js +4 -2
  20. package/components/data/table/esm2022/table-filter.directive.mjs +3 -2
  21. package/components/data/table/fesm2022/index.mjs +2 -1
  22. package/components/data/table/fesm2022/index.mjs.map +1 -1
  23. package/components/input/calendar/bundles/index.umd.js +5 -3
  24. package/components/input/calendar/esm2022/calendar.component.mjs +4 -3
  25. package/components/input/calendar/fesm2022/index.mjs +3 -2
  26. package/components/input/calendar/fesm2022/index.mjs.map +1 -1
  27. package/components/input/epoch/bundles/index.umd.js +45 -39
  28. package/components/input/epoch/esm2022/base-date-time.component.mjs +3 -2
  29. package/components/input/epoch/esm2022/date/imaskUtil.mjs +3 -2
  30. package/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +5 -4
  31. package/components/input/epoch/esm2022/date-time/date-time.component.mjs +4 -3
  32. package/components/input/epoch/esm2022/time/time.component.mjs +4 -3
  33. package/components/input/epoch/fesm2022/index.mjs +43 -38
  34. package/components/input/epoch/fesm2022/index.mjs.map +1 -1
  35. package/core/bundles/index.umd.js +6 -4
  36. package/core/esm2022/types/types.mjs +1 -1
  37. package/core/esm2022/utils/utils.mjs +3 -2
  38. package/core/fesm2022/index.mjs +2 -1
  39. package/core/fesm2022/index.mjs.map +1 -1
  40. package/core/types/types.d.ts +1 -0
  41. package/npm-shrinkwrap.json +2 -2
  42. package/oAuth/bundles/index.umd.js +4 -2
  43. package/oAuth/esm2022/oAuth.utils.mjs +3 -2
  44. package/oAuth/fesm2022/index.mjs +2 -1
  45. package/oAuth/fesm2022/index.mjs.map +1 -1
  46. package/package-lock.json +2 -2
  47. package/package.json +1 -1
  48. package/runtime/base/bundles/index.umd.js +12 -4
  49. package/runtime/base/esm2022/services/app.service.mjs +8 -1
  50. package/runtime/base/esm2022/services/i18n.service.mjs +3 -2
  51. package/runtime/base/fesm2022/index.mjs +8 -1
  52. package/runtime/base/fesm2022/index.mjs.map +1 -1
  53. package/runtime/base/services/app.service.d.ts +1 -0
  54. package/variables/bundles/index.umd.js +5 -2
  55. package/variables/esm2022/util/variable/variables.utils.mjs +3 -2
  56. package/variables/fesm2022/index.mjs +2 -1
  57. package/variables/fesm2022/index.mjs.map +1 -1
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@wm/core'), require('@wm/security'), require('@wavemaker/focus-trap'), require('lodash-es'), require('@angular/platform-browser'), require('rxjs'), require('rxjs/operators'), require('moment'), require('tslib'), require('@angular/forms'), require('@swipey')) :
3
- typeof define === 'function' && define.amd ? define(['exports', '@angular/core', '@angular/common', '@wm/core', '@wm/security', '@wavemaker/focus-trap', 'lodash-es', '@angular/platform-browser', 'rxjs', 'rxjs/operators', 'moment', 'tslib', '@angular/forms', '@swipey'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.wm = global.wm || {}, global.wm.components = global.wm.components || {}, global.wm.components.base = {}), global.ng.core, global.ng.common, global.wm.core, global.wm.security, global.focusTrap, global._, global.ng.platformBrowser, global.rxjs, global.rxjs.operators, global.moment, global.tslib, global.ng.forms, global.swipey));
5
- })(this, (function (exports, i0, i1$1, i1, security, focusTrap, lodashEs, i1$2, rxjs, operators, moment, tslib, forms, _swipey) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@wm/core'), require('@wm/security'), require('@wavemaker/focus-trap'), require('lodash-es'), require('@angular/platform-browser'), require('rxjs'), require('rxjs/operators'), require('moment-timezone/moment-timezone'), require('moment'), require('tslib'), require('@angular/forms'), require('@swipey')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', '@angular/core', '@angular/common', '@wm/core', '@wm/security', '@wavemaker/focus-trap', 'lodash-es', '@angular/platform-browser', 'rxjs', 'rxjs/operators', 'moment-timezone/moment-timezone', 'moment', 'tslib', '@angular/forms', '@swipey'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.wm = global.wm || {}, global.wm.components = global.wm.components || {}, global.wm.components.base = {}), global.ng.core, global.ng.common, global.wm.core, global.wm.security, global.focusTrap, global._, global.ng.platformBrowser, global.rxjs, global.rxjs.operators, global.momentLib, global.momentLib$1, global.tslib, global.ng.forms, global.swipey));
5
+ })(this, (function (exports, i0, i1$1, i1, security, focusTrap, lodashEs, i1$2, rxjs, operators, momentLib, momentLib$1, tslib, forms, _swipey) { 'use strict';
6
6
 
7
7
  function _interopNamespaceDefault(e) {
8
8
  var n = Object.create(null);
@@ -25,6 +25,8 @@
25
25
  var i1$1__namespace = /*#__PURE__*/_interopNamespaceDefault(i1$1);
26
26
  var i1__namespace = /*#__PURE__*/_interopNamespaceDefault(i1);
27
27
  var i1$2__namespace = /*#__PURE__*/_interopNamespaceDefault(i1$2);
28
+ var momentLib__namespace = /*#__PURE__*/_interopNamespaceDefault(momentLib);
29
+ var momentLib$1__namespace = /*#__PURE__*/_interopNamespaceDefault(momentLib$1);
28
30
 
29
31
  const WidgetConfig = new i0.InjectionToken('WidgetConfig');
30
32
  class WidgetRef {
@@ -2283,6 +2285,7 @@
2283
2285
  }
2284
2286
  }
2285
2287
 
2288
+ const moment$1 = momentLib__namespace.default || window['moment'];
2286
2289
  const getEpochValue = data => {
2287
2290
  let epoch;
2288
2291
  // For data in form of string number ('123'), convert to number (123). And don't parse date objects.
@@ -2290,7 +2293,7 @@
2290
2293
  data = parseInt(data, 10);
2291
2294
  }
2292
2295
  // get the timestamp value. If data is time string, append date string to the time value
2293
- epoch = moment(data).valueOf() || moment(new Date().toDateString() + ' ' + data).valueOf();
2296
+ epoch = moment$1(data).valueOf() || moment$1(new Date().toDateString() + ' ' + data).valueOf();
2294
2297
  return epoch;
2295
2298
  };
2296
2299
  class TrailingZeroDecimalPipe {
@@ -2343,7 +2346,7 @@
2343
2346
  let formattedVal;
2344
2347
  const timeZone = this.i18nService ? this.i18nService.getTimezone(compInstance) : timezone;
2345
2348
  if (timeZone && (data === timestamp || i1.hasOffsetStr(data))) {
2346
- formattedVal = moment(timestamp).tz(timeZone).format(format.replaceAll('y', 'Y').replaceAll('d', 'D').replace('a', 'A'));
2349
+ formattedVal = moment$1(timestamp).tz(timeZone).format(format.replaceAll('y', 'Y').replaceAll('d', 'D').replace('a', 'A'));
2347
2350
  }
2348
2351
  else {
2349
2352
  formattedVal = this.datePipe.transform(timestamp, format);
@@ -2493,7 +2496,7 @@
2493
2496
  return undefined;
2494
2497
  }
2495
2498
  timestamp = getEpochValue(data);
2496
- return timestamp ? moment(timestamp).fromNow() : undefined;
2499
+ return timestamp ? moment$1(timestamp).fromNow() : undefined;
2497
2500
  }
2498
2501
  static { this.ɵfac = function TimeFromNowPipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TimeFromNowPipe)(); }; }
2499
2502
  static { this.ɵpipe = /*@__PURE__*/ i0__namespace.ɵɵdefinePipe({ name: "timeFromNow", type: TimeFromNowPipe, pure: true, standalone: true }); }
@@ -3677,6 +3680,7 @@
3677
3680
  return dataObject;
3678
3681
  }
3679
3682
 
3683
+ const moment = momentLib$1__namespace.default || window['moment'];
3680
3684
  const momentLocale = moment.localeData();
3681
3685
  const momentCalendarOptions = i1.getClonedObject(momentLocale._calendar);
3682
3686
  const momentCalendarDayOptions = momentLocale._calendarDay || {
@@ -3,10 +3,11 @@ import { DatePipe, DecimalPipe } from '@angular/common';
3
3
  import { AbstractI18nService, CURRENCY_INFO, CustomPipeManager, hasOffsetStr, isDefined } from '@wm/core';
4
4
  import { WmPipe } from "./wm-pipe";
5
5
  import { filter, includes, isDate, isFunction, isObject, isUndefined, startsWith } from "lodash-es";
6
- import moment from 'moment';
6
+ import * as momentLib from 'moment-timezone/moment-timezone';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/common";
9
9
  import * as i2 from "@wm/core";
10
+ const moment = momentLib.default || window['moment'];
10
11
  const getEpochValue = data => {
11
12
  let epoch;
12
13
  // For data in form of string number ('123'), convert to number (123). And don't parse date objects.
@@ -453,4 +454,4 @@ export class FileExtensionFromMimePipe {
453
454
  name: 'fileExtensionFromMime'
454
455
  }]
455
456
  }], null, null); })();
456
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXBpcGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9iYXNlL3NyYy9waXBlcy9jdXN0b20tcGlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBQyxRQUFRLEVBQUUsV0FBVyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3hHLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUVsRyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7Ozs7QUFFNUIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEVBQUU7SUFDekIsSUFBSSxLQUFLLENBQUM7SUFDVixvR0FBb0c7SUFDcEcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2hDLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFDRCx3RkFBd0Y7SUFDeEYsS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxZQUFZLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDM0YsT0FBTyxLQUFLLENB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QUFFLE1BQU07WUFDcEIsYUFBYSxFQUFFLE1BQU07WUFDckIsYUFBYSxFQUFFLE1BQU07WUFDckIsNkJBQTZCLEVBQUUsS0FBSztTQUN2QyxDQUFDO1FBRUYsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsQ0FBQzswSEExRVEseUJBQXlCOytGQUF6Qix5QkFBeUI7O2lGQUF6Qix5QkFBeUI7Y0FKckMsSUFBSTtlQUFDO2dCQUNGLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixJQUFJLEVBQUUsdUJBQXVCO2FBQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIFBpcGUsIFBpcGVUcmFuc2Zvcm19IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEYXRlUGlwZSwgRGVjaW1hbFBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0Fic3RyYWN0STE4blNlcnZpY2UsIENVUlJFTkNZX0lORk8sIEN1c3RvbVBpcGVNYW5hZ2VyLCBoYXNPZmZzZXRTdHIsIGlzRGVmaW5lZH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtXbVBpcGV9IGZyb20gXCIuL3dtLXBpcGVcIjtcbmltcG9ydCB7ZmlsdGVyLCBpbmNsdWRlcywgaXNEYXRlLCBpc0Z1bmN0aW9uLCBpc09iamVjdCwgaXNVbmRlZmluZWQsIHN0YXJ0c1dpdGh9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5jb25zdCBnZXRFcG9jaFZhbHVlID0gZGF0YSA9PiB7XG4gICAgbGV0IGVwb2NoO1xuICAgIC8vIEZvciBkYXRhIGluIGZvcm0gb2Ygc3RyaW5nIG51bWJlciAoJzEyMycpLCBjb252ZXJ0IHRvIG51bWJlciAoMTIzKS4gQW5kIGRvbid0IHBhcnNlIGRhdGUgb2JqZWN0cy5cbiAgICBpZiAoIWlzRGF0ZShkYXRhKSAmJiAhaXNOYU4oZGF0YSkpIHtcbiAgICAgICAgZGF0YSA9IHBhcnNlSW50KGRhdGEsIDEwKTtcbiAgICB9XG4gICAgLy8gZ2V0IHRoZSB0aW1lc3RhbXAgdmFsdWUuIElmIGRhdGEgaXMgdGltZSBzdHJpbmcsIGFwcGVuZCBkYXRlIHN0cmluZyB0byB0aGUgdGltZSB2YWx1ZVxuICAgIGVwb2NoID0gbW9tZW50KGRhdGEpLnZhbHVlT2YoKSB8fCBtb21lbnQobmV3IERhdGUoKS50b0RhdGVTdHJpbmcoKSArICcgJyArIGRhdGEpLnZhbHVlT2YoKTtcbiAgICByZXR1cm4gZXBvY2g7XG59O1xuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAndHJhaWxpbmdaZXJvRGVjaW1hbFBpcGUnXG59KVxuZXhwb3J0IGNsYXNzIFRyYWlsaW5nWmVyb0RlY2ltYWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIHNlbGVjdGVkTG9jYWxlOiBzdHJpbmcsIG51bWJlcmZpbHRlcjogc3RyaW5nLCBsb2NhbGVmaWx0ZXI6IGFueSwgdHJhaWxpbmd6ZXJvOiBib29sZWFuLCBkZWNpbWFsVmFsdWU6IHN0cmluZywgc2tpcFRyYWlsaW5nWmVyb0NoZWNrPzogYm9vbGVhbiwgZm9ybWF0dGVkTG9jYWxlPyk6IGFueSB7XG4gICAgICAgIG51bWJlcmZpbHRlciA9IHRyYWlsaW5nemVybyAmJiAhc2tpcFRyYWlsaW5nWmVyb0NoZWNrID8gYDEuJHtkZWNpbWFsVmFsdWUubGVuZ3RofS0xNmA6IG51bWJlcmZpbHRlcjtcbiAgICAgICAgY29uc3QgbG9jYWxlID0gZm9ybWF0dGVkTG9jYWxlID8gZm9ybWF0dGVkTG9jYWxlWydudW1iZXInXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKHZhbHVlLCBudW1iZXJmaWx0ZXIsIGxvY2FsZWZpbHRlciB8fCBsb2NhbGUgfHwgc2VsZWN0ZWRMb2NhbGUpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlKSB7IH1cblxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAndG9EYXRlJ1xufSlcbmV4cG9ydCBjbGFzcyBUb0RhdGVQaXBlIGV4dGVuZHMgV21QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgLy8gVGhpcyBtZXRob2QgY2FsbHMgdGhlIGN1c3RvbSBmb3JtYXR0ZXIgZm4gYWZ0ZXIgYXBwbHlpbmcgdGhlIGV4aXNpdG5nIGRhdGUgcGF0dGVyblxuICAgIHJldHVybkZuKGRhdGEsIGFyZ3MpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNDdXN0b21QaXBlKSB7XG4gICAgICAgICAgICBpZiAoYXJncykge1xuICAgICAgICAgICAgICAgIGFyZ3NbMF0gPSBkYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VzdG9tRm9ybWF0dGVyKGRhdGEsIGFyZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICB0cmFuc2Zvcm0oZGF0YTogYW55LCBmb3JtYXQ6IGFueSwgdGltZXpvbmU/LCBjb21wSW5zdGFuY2U/KSB7XG4gICAgICAgIGxldCB0aW1lc3RhbXA7XG4gICAgICAgIC8vICdudWxsJyBpcyB0byBiZSB0cmVhdGVkIGFzIGEgc3BlY2lhbCBjYXNlLCBJZiB1c2VyIHdhbnRzIHRvIGVudGVyIG51bGwgdmFsdWUsIGVtcHR5IHN0cmluZyB3aWxsIGJlIHBhc3NlZCB0byB0aGUgYmFja2VuZFxuICAgICAgICBpZiAoZGF0YSA9PT0gJ251bGwnIHx8IGRhdGEgPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5GbignJywgYXJndW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzRGVmaW5lZChkYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuRm4oJycsYXJndW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICB0aW1lc3RhbXAgPSBnZXRFcG9jaFZhbHVlKGRhdGEpO1xuICAgICAgICBpZiAodGltZXN0YW1wKSB7XG4gICAgICAgICAgICBpZiAoZm9ybWF0ID09PSAndGltZXN0YW1wJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybkZuKHRpbWVzdGFtcCwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICdVVEMnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuRm4obmV3IERhdGUodGltZXN0YW1wKS50b0lTT1N0cmluZygpLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGZvcm1hdHRlZFZhbDtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVab25lID0gdGhpcy5pMThuU2VydmljZSA/IHRoaXMuaTE4blNlcnZpY2UuZ2V0VGltZXpvbmUoY29tcEluc3RhbmNlKSA6IHRpbWV6b25lO1xuICAgICAgICAgICAgaWYgKHRpbWVab25lICYmIChkYXRhID09PSB0aW1lc3RhbXAgfHwgaGFzT2Zmc2V0U3RyKGRhdGEpKSkge1xuICAgICAgICAgICAgICAgIGZvcm1hdHRlZFZhbCA9IChtb21lbnQodGltZXN0YW1wKSBhcyBhbnkpLnR6KHRpbWVab25lKS5mb3JtYXQoZm9ybWF0LnJlcGxhY2VBbGwoJ3knLCAnWScpLnJlcGxhY2VBbGwoJ2QnLCAnRCcpLnJlcGxhY2UoJ2EnLCAnQScpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGltZXN0YW1wLCBmb3JtYXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuRm4oZm9ybWF0dGVkVmFsLCBhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJldHVybkZuKCcnLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLCBwcml2YXRlIGkxOG5TZXJ2aWNlOiBBYnN0cmFjdEkxOG5TZXJ2aWNlLCBwcm90ZWN0ZWQgY3VzdG9tUGlwZU1hbmFnZXI6IEN1c3RvbVBpcGVNYW5hZ2VyKSB7XG4gICAgICAgIHN1cGVyKCd0b0RhdGUnLCBjdXN0b21QaXBlTWFuYWdlcik7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAndG9OdW1iZXInXG59KVxuZXhwb3J0IGNsYXNzIFRvTnVtYmVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShkYXRhLCBmcmFjU2l6ZSkge1xuICAgICAgICBpZiAoZnJhY1NpemUgJiYgIVN0cmluZyhmcmFjU2l6ZSkubWF0Y2goL14oXFxkKyk/XFwuKChcXGQrKSgtKFxcZCspKT8pPyQvKSkge1xuICAgICAgICAgICAgZnJhY1NpemUgPSAnMS4nICsgZnJhY1NpemUgKyAnLScgKyBmcmFjU2l6ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzTmFOKCtkYXRhKSkge1xuICAgICAgICAgICAgY29uc3QgbG9jYWxlID0gdGhpcy5pMThuU2VydmljZSAmJiB0aGlzLmkxOG5TZXJ2aWNlLmdldHdpZGdldExvY2FsZSgpID8gdGhpcy5pMThuU2VydmljZS5nZXR3aWRnZXRMb2NhbGUoKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZExvY2FsZSA9IGxvY2FsZSA/IGxvY2FsZVsnbnVtYmVyJ10gOiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVjaW1hbFBpcGUudHJhbnNmb3JtKGRhdGEsIGZyYWNTaXplLCBmb3JtYXR0ZWRMb2NhbGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLCAgQEluamVjdChBYnN0cmFjdEkxOG5TZXJ2aWNlKSBwcml2YXRlIGkxOG5TZXJ2aWNlOiBBYnN0cmFjdEkxOG5TZXJ2aWNlKSB7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAndG9DdXJyZW5jeSdcbn0pXG5leHBvcnQgY2xhc3MgVG9DdXJyZW5jeVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oZGF0YSwgY3VycmVuY3lTeW1ib2wsIGZyYWNTaXplKSB7XG4gICAgICAgIGNvbnN0IF9jdXJyZW5jeVN5bWJvbCA9IChDVVJSRU5DWV9JTkZPW2N1cnJlbmN5U3ltYm9sXSB8fCB7fSkuc3ltYm9sIHx8IGN1cnJlbmN5U3ltYm9sIHx8ICcnO1xuICAgICAgICBsZXQgX3ZhbCA9IG5ldyBUb051bWJlclBpcGUodGhpcy5kZWNpbWFsUGlwZSwgdGhpcy5pMThuU2VydmljZSkudHJhbnNmb3JtKGRhdGEsIGZyYWNTaXplKTtcbiAgICAgICAgY29uc3QgaXNOZWdhdGl2ZU51bWJlciA9IHN0YXJ0c1dpdGgoX3ZhbCwgJy0nKTtcbiAgICAgICAgaWYgKGlzTmVnYXRpdmVOdW1iZXIpIHtcbiAgICAgICAgICAgIF92YWwgPSBfdmFsLnJlcGxhY2UoJy0nLCcnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX3ZhbCA/IGlzTmVnYXRpdmVOdW1iZXIgPyAnLScrIF9jdXJyZW5jeVN5bWJvbCArX3ZhbCA6X2N1cnJlbmN5U3ltYm9sICsgX3ZhbCA6ICcnO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGVjaW1hbFBpcGU6IERlY2ltYWxQaXBlLCBASW5qZWN0KEFic3RyYWN0STE4blNlcnZpY2UpIHByaXZhdGUgaTE4blNlcnZpY2U6IEFic3RyYWN0STE4blNlcnZpY2UpIHtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICdwcmVmaXgnXG59KVxuZXhwb3J0IGNsYXNzIFByZWZpeFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oZGF0YSwgcGFkZGluZykge1xuICAgICAgICByZXR1cm4gKGlzVW5kZWZpbmVkKGRhdGEpIHx8IGRhdGEgPT09IG51bGwgfHwgZGF0YSA9PT0gJycpID8gZGF0YSA6ICgocGFkZGluZyB8fCAnJykgKyBkYXRhKTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICdzdWZmaXgnXG59KVxuZXhwb3J0IGNsYXNzIFN1ZmZpeFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oZGF0YSwgcGFkZGluZykge1xuICAgICAgICByZXR1cm4gKGlzVW5kZWZpbmVkKGRhdGEpIHx8IGRhdGEgPT09IG51bGwgfHwgZGF0YSA9PT0gJycpID8gZGF0YSA6IChkYXRhICsgKHBhZGRpbmcgfHwgJycpKTtcbiAgICB9XG59XG5cblxuLyoqXG4gKiBDdXN0b20gcGlwZTogSXQgaXMgd29yayBhcyBpbnRlcmNlcHRvciBiZXR3ZWVuIHRoZSB1c2VyIGN1c3RvbSBwaXBlIGZ1bmN0aW9uIGFuZCBhbmd1bGFyIHBpcGVcbiAqL1xuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ2N1c3RvbSdcbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY3VzdG1lVXNlclBpcGU6IEN1c3RvbVBpcGVNYW5hZ2VyKSB7XG5cbiAgICB9XG4gICAgdHJhbnNmb3JtKGRhdGEsIHBpcGVuYW1lKSB7XG4gICAgICAgbGV0IGFyZ3VtZW50QXJyID0gW107XG4gICAgICAgZm9yKGxldCBpID0yIDsgaTxhcmd1bWVudHMubGVuZ3RoOyBpKysgKXtcbiAgICAgICAgYXJndW1lbnRBcnIucHVzaChhcmd1bWVudHNbaV0pO1xuICAgICAgIH1cblxuICAgICAgICBsZXQgcGlwZVJlZiA9IHRoaXMuY3VzdG1lVXNlclBpcGUuZ2V0Q3VzdG9tUGlwZShwaXBlbmFtZSk7XG4gICAgICAgIGlmICghcGlwZVJlZiB8fCAhaXNGdW5jdGlvbihwaXBlUmVmLmZvcm1hdHRlcikpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignZm9ybWF0dGVyIGlzIG5vdCBkZWZpbmVkLCBwbGVhc2UgY2hlY2sgdGhlIGN1c3RvbSBwaXBlcyBkb2N1bWVudGF0aW9uJyk7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeXtcbiAgICAgICAgICAgIHJldHVybiBwaXBlUmVmLmZvcm1hdHRlcihkYXRhLCAuLi5hcmd1bWVudEFycik7XG4gICAgICAgIH0gY2F0Y2goZXJyb3Ipe1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignUGlwZSBuYW1lOiAnK3BpcGVuYW1lLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgIH1cbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICd0aW1lRnJvbU5vdydcbn0pXG5leHBvcnQgY2xhc3MgVGltZUZyb21Ob3dQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGRhdGEpIHtcbiAgICAgICAgbGV0IHRpbWVzdGFtcDtcbiAgICAgICAgaWYgKCFpc0RlZmluZWQoZGF0YSkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgdGltZXN0YW1wID0gZ2V0RXBvY2hWYWx1ZShkYXRhKTtcbiAgICAgICAgcmV0dXJuIHRpbWVzdGFtcCA/IG1vbWVudCh0aW1lc3RhbXApLmZyb21Ob3coKSA6IHVuZGVmaW5lZDtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICdudW1iZXJUb1N0cmluZydcbn0pXG5leHBvcnQgY2xhc3MgTnVtYmVyVG9TdHJpbmdQaXBlIGV4dGVuZHMgVG9OdW1iZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7IH1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3N0cmluZ1RvTnVtYmVyJ1xufSlcbmV4cG9ydCBjbGFzcyBTdHJpbmdUb051bWJlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oZGF0YSkge1xuICAgICAgICByZXR1cm4gTnVtYmVyKGRhdGEpIHx8IHVuZGVmaW5lZDtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICdmaWx0ZXInXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oZGF0YTogYW55W10sIGZpZWxkOiBhbnksIHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgb2JqZWN0IGlzIHBhc3NlZCBhcyBmaXJzdCBwYXJhbXRlclxuICAgICAgICBpZiAoaXNPYmplY3QoZmllbGQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyKGRhdGEsIGZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBrZXkgdmFsdWUgcGFpciBpcyBwcm92aWRlZFxuICAgICAgICByZXR1cm4gZmlsdGVyKGRhdGEsIGl0ZW0gPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGluY2x1ZGVzKGl0ZW1bZmllbGRdLCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ2ZpbGVzaXplJ1xufSlcbmV4cG9ydCBjbGFzcyBGaWxlU2l6ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oYnl0ZXM6IG51bWJlciwgcHJlY2lzaW9uOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgdW5pdHMgPSBbXG4gICAgICAgICAgICAnYnl0ZXMnLFxuICAgICAgICAgICAgJ0tCJyxcbiAgICAgICAgICAgICdNQicsXG4gICAgICAgICAgICAnR0InLFxuICAgICAgICAgICAgJ1RCJyxcbiAgICAgICAgICAgICdQQidcbiAgICAgICAgXTtcblxuICAgICAgICAvKlRvZG9bc2h1YmhhbV1cbiAgICAgICAgaWYgKGlzTmFOKHBhcnNlRmxvYXQoYnl0ZXMpKSB8fCAhaXNGaW5pdGUoYnl0ZXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gaXNNb2JpbGUoKSA/ICcnIDogJz8nO1xuICAgICAgICB9Ki9cbiAgICAgICAgbGV0IHVuaXQgPSAwO1xuICAgICAgICB3aGlsZSAoYnl0ZXMgPj0gMTAyNCkge1xuICAgICAgICAgICAgYnl0ZXMgLz0gMTAyNDtcbiAgICAgICAgICAgIHVuaXQrKztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnl0ZXMudG9GaXhlZCgrcHJlY2lzaW9uKSArICcgJyArIHVuaXRzW3VuaXRdO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ2ZpbGVJY29uQ2xhc3MnXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVJY29uQ2xhc3NQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGZpbGVFeHRlbnNpb246IGFueSkge1xuICAgICAgICBjb25zdCBmaWxlQ2xhc3NNYXBwaW5nID0ge1xuICAgICAgICAgICAgJ3ppcCcgICAgICAgOiAgICdmYS1maWxlLXppcC1vJyxcbiAgICAgICAgICAgICdwZGYnICAgICAgIDogICAnZmEtZmlsZS1wZGYtbycsXG4gICAgICAgICAgICAncmFyJyAgICAgICA6ICAgJ2ZhLWZpbGUtYXJjaGl2ZS1vJyxcbiAgICAgICAgICAgICd0eHQnICAgICAgIDogICAnZmEtZmlsZS10ZXh0LW8nLFxuICAgICAgICAgICAgJ3BwdCcgICAgICAgOiAgICdmYS1maWxlLXBvd2VycG9pbnQtbycsXG4gICAgICAgICAgICAncG90JyAgICAgICA6ICAgJ2ZhLWZpbGUtcG93ZXJwb2ludC1vJyxcbiAgICAgICAgICAgICdwcHMnICAgICAgIDogICAnZmEtZmlsZS1wb3dlcnBvaW50LW8nLFxuICAgICAgICAgICAgJ3BwdHgnICAgICAgOiAgICdmYS1maWxlLXBvd2VycG9pbnQtbycsXG4gICAgICAgICAgICAncG90eCcgICAgICA6ICAgJ2ZhLWZpbGUtcG93ZXJwb2ludC1vJyxcbiAgICAgICAgICAgICdwcHN4JyAgICAgIDogICAnZmEtZmlsZS1wb3dlcnBvaW50LW8nLFxuICAgICAgICAgICAgJ21wZycgICAgICAgOiAgICdmYS1maWxlLW1vdmllLW8nLFxuICAgICAgICAgICAgJ21wNCcgICAgICAgOiAgICdmYS1maWxlLW1vdmllLW8nLFxuICAgICAgICAgICAgJ21vdicgICAgICAgOiAgICdmYS1maWxlLW1vdmllLW8nLFxuICAgICAgICAgICAgJ2F2aScgICAgICAgOiAgICdmYS1maWxlLW1vdmllLW8nLFxuICAgICAgICAgICAgJ21wMycgICAgICAgOiAgICdmYS1maWxlLWF1ZGlvLW8nLFxuICAgICAgICAgICAgJ2RvY3gnICAgICAgOiAgICdmYS1maWxlLXdvcmQtbycsXG4gICAgICAgICAgICAnanMnICAgICAgICA6ICAgJ2ZhLWZpbGUtY29kZS1vJyxcbiAgICAgICAgICAgICdtZCcgICAgICAgIDogICAnZmEtZmlsZS1jb2RlLW8nLFxuICAgICAgICAgICAgJ2h0bWwnICAgICAgOiAgICdmYS1maWxlLWNvZGUtbycsXG4gICAgICAgICAgICAnY3NzJyAgICAgICA6ICAgJ2ZhLWZpbGUtY29kZS1vJyxcbiAgICAgICAgICAgICd4bHN4JyAgICAgIDogICAnZmEtZmlsZS1leGNlbC1vJyxcbiAgICAgICAgICAgICdwbmcnICAgICAgIDogICAnZmEtZmlsZS1pbWFnZS1vJyxcbiAgICAgICAgICAgICdqcGcnICAgICAgIDogICAnZmEtZmlsZS1pbWFnZS1vJyxcbiAgICAgICAgICAgICdqcGVnJyAgICAgIDogICAnZmEtZmlsZS1pbWFnZS1vJyxcbiAgICAgICAgICAgICdmaWxlJyAgICAgIDogICAnZmEtZmlsZS1vJyxcbiAgICAgICAgICAgICdkZWZhdWx0JyAgIDogICAnZmEtZmlsZS1vJ1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiAnZmEgJyArIChmaWxlQ2xhc3NNYXBwaW5nW2ZpbGVFeHRlbnNpb25dIHx8ICdmYS1maWxlLW8nKTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICdzdGF0ZUNsYXNzJ1xufSlcbmV4cG9ydCBjbGFzcyBTdGF0ZUNsYXNzUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShzdGF0ZSkge1xuICAgICAgICBjb25zdCBzdGF0ZUNsYXNzTWFwID0ge1xuICAgICAgICAgICAgJ3N1Y2Nlc3MnOiAnd2kgd2ktY2hlY2stY2lyY2xlIHRleHQtc3VjY2VzcycsXG4gICAgICAgICAgICAnZXJyb3InICAgICA6ICd3aSB3aS1lcnJvciB0ZXh0LWRhbmdlcidcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHN0YXRlQ2xhc3NNYXBbc3RhdGUudG9Mb3dlckNhc2UoKV07XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAnZmlsZUV4dGVuc2lvbkZyb21NaW1lJ1xufSlcbmV4cG9ydCBjbGFzcyBGaWxlRXh0ZW5zaW9uRnJvbU1pbWVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKG1pbWVUeXBlOiBhbnkpIHtcbiAgICAgICAgY29uc3QgdHlwZU1hcHBpbmcgPSB7XG4gICAgICAgICAgICAnYXVkaW8vYWFjJzogJy5hYWMnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtYWJpd29yZCc6ICcuYWJ3JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQuYW5kcm9pZC5wYWNrYWdlLWFyY2hpdmUnOiAnLmFwaycsXG4gICAgICAgICAgICAndmlkZW8veC1tc3ZpZGVvJzogJy5hdmknLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5hbWF6b24uZWJvb2snOiAnLmF6dycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJzogJy5iaW4nLFxuICAgICAgICAgICAgJ2ltYWdlL2JtcCc6ICcuYm1wJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWJ6aXAnOiAnLmJ6JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWJ6aXAyJzogJy5iejInLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtY3NoJzogJy5jc2gnLFxuICAgICAgICAgICAgJ3RleHQvY3NzJzogJy5jc3MnLFxuICAgICAgICAgICAgJ3RleHQvY3N2JzogJy5jc3YnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL21zd29yZCc6ICcuZG9jJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCc6ICcuZG9jeCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QnOiAnLmVvdCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vZXB1Yit6aXAnOiAnLmVwdWInLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2VjbWFzY3JpcHQnOiAnLmVzJyxcbiAgICAgICAgICAgICdpbWFnZS9naWYnOiAnLmdpZicsXG4gICAgICAgICAgICAndGV4dC9odG1sJzogJy5odG1sJyxcbiAgICAgICAgICAgICdpbWFnZS94LWljb24nOiAnLmljbycsXG4gICAgICAgICAgICAndGV4dC9jYWxlbmRhcic6ICcuaWNzJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmUnOiAnLmphcicsXG4gICAgICAgICAgICAnaW1hZ2UvanBlZyc6IFsnLmpwZWcnLCAnLmpwZyddLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnOiAnLmpzJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzogJy5qc29uJyxcbiAgICAgICAgICAgICdhdWRpby9taWRpJzogJy5taWQnLFxuICAgICAgICAgICAgJ2F1ZGlvL3gtbWlkaSc6ICcubWlkaScsXG4gICAgICAgICAgICAndmlkZW8vbXBlZyc6ICcubXBlZycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLmFwcGxlLmluc3RhbGxlcit4bWwnOiAnbXBrZycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb24nOiAnLm9kcCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldCc6ICcub2RzJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQnOiAnLm9kdCcsXG4gICAgICAgICAgICAnYXVkaW8vb2dnJzogJy5vZ2EnLFxuICAgICAgICAgICAgJ3ZpZGVvL29nZyc6ICcub2d2JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9vZ2cnOiAnLm9neCcsXG4gICAgICAgICAgICAnZm9udC9vdGYnOiAnLm90ZicsXG4gICAgICAgICAgICAnaW1hZ2UvcG5nJzogJy5wbmcnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3BkZic6ICcucGRmJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCc6ICcucHB0JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uJzogJy5wcHR4JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXJhci1jb21wcmVzc2VkJzogJy5yYXInLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3J0Zic6ICcucnRmJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXNoJzogJy5zaCcsXG4gICAgICAgICAgICAnaW1hZ2Uvc3ZnK3htbCc6ICcuc3ZnJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCc6ICcuc3dmJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXRhcic6ICcudGFyJyxcbiAgICAgICAgICAgICdpbWFnZS90aWZmJzogJy50aWZmJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi90eXBlc2NyaXB0JzogJy50cycsXG4gICAgICAgICAgICAnZm9udC90dGYnOiAnLnR0ZicsXG4gICAgICAgICAgICAndGV4dC9wbGFpbic6ICcudHh0JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQudmlzaW8nOiAnLnZzZCcsXG4gICAgICAgICAgICAnYXVkaW8vd2F2JzogJy53YXYnLFxuICAgICAgICAgICAgJ2F1ZGlvL3dlYm0nOiAnLndlYmEnLFxuICAgICAgICAgICAgJ3ZpZGVvL3dlYm0nOiAnLndlYm0nLFxuICAgICAgICAgICAgJ2ltYWdlL3dlYnAnOiAnLndlYnAnLFxuICAgICAgICAgICAgJ2ZvbnQvd29mZic6ICcud29mZicsXG4gICAgICAgICAgICAnZm9udC93b2ZmMic6ICcud29mZjInLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3hodG1sK3htbCc6ICcueGh0bWwnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCc6ICcueGxzJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCc6ICcueGxzeCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veG1sJzogJy54bWwnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5tb3ppbGxhLnh1bCt4bWwnOiAnLnh1bCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vemlwJzogJy56aXAnLFxuICAgICAgICAgICAgJ3ZpZGVvLzNncHAnOiAnLjNncCcsXG4gICAgICAgICAgICAnYXVkaW8vM2dwcCc6ICcuM2dwJyxcbiAgICAgICAgICAgICd2aWRlby8zZ3BwMic6ICcuM2cyJyxcbiAgICAgICAgICAgICdhdWRpby8zZ3BwMic6ICcuM2cyJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LTd6LWNvbXByZXNzZWQnOiAnLjd6J1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0eXBlTWFwcGluZ1ttaW1lVHlwZV07XG4gICAgfVxufVxuXG5cbiJdfQ==
457
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXBpcGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9iYXNlL3NyYy9waXBlcy9jdXN0b20tcGlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBQyxRQUFRLEVBQUUsV0FBVyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdEQsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ3hHLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUVsRyxPQUFPLEtBQUssU0FBUyxNQUFNLGlDQUFpQyxDQUFDOzs7O0FBQzdELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRXJELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxFQUFFO0lBQ3pCLElBQUksS0FBSyxDQUFDO0lBQ1Ysb0dBQW9HO0lBQ3BHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBQ0Qsd0ZBQXdGO0lBQ3hGLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMs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aUNBQWlDLEVBQUUsTUFBTTtZQUN6QyxpQkFBaUIsRUFBRSxNQUFNO1lBQ3pCLFlBQVksRUFBRSxNQUFNO1lBQ3BCLFlBQVksRUFBRSxNQUFNO1lBQ3BCLGFBQWEsRUFBRSxNQUFNO1lBQ3JCLGFBQWEsRUFBRSxNQUFNO1lBQ3JCLDZCQUE2QixFQUFFLEtBQUs7U0FDdkMsQ0FBQztRQUVGLE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7MEhBMUVRLHlCQUF5QjsrRkFBekIseUJBQXlCOztpRkFBekIseUJBQXlCO2NBSnJDLElBQUk7ZUFBQztnQkFDRixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsSUFBSSxFQUFFLHVCQUF1QjthQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RGF0ZVBpcGUsIERlY2ltYWxQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtBYnN0cmFjdEkxOG5TZXJ2aWNlLCBDVVJSRU5DWV9JTkZPLCBDdXN0b21QaXBlTWFuYWdlciwgaGFzT2Zmc2V0U3RyLCBpc0RlZmluZWR9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7V21QaXBlfSBmcm9tIFwiLi93bS1waXBlXCI7XG5pbXBvcnQge2ZpbHRlciwgaW5jbHVkZXMsIGlzRGF0ZSwgaXNGdW5jdGlvbiwgaXNPYmplY3QsIGlzVW5kZWZpbmVkLCBzdGFydHNXaXRofSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmltcG9ydCAqIGFzIG1vbWVudExpYiBmcm9tICdtb21lbnQtdGltZXpvbmUvbW9tZW50LXRpbWV6b25lJztcbmNvbnN0IG1vbWVudCA9IG1vbWVudExpYi5kZWZhdWx0IHx8IHdpbmRvd1snbW9tZW50J107XG5cbmNvbnN0IGdldEVwb2NoVmFsdWUgPSBkYXRhID0+IHtcbiAgICBsZXQgZXBvY2g7XG4gICAgLy8gRm9yIGRhdGEgaW4gZm9ybSBvZiBzdHJpbmcgbnVtYmVyICgnMTIzJyksIGNvbnZlcnQgdG8gbnVtYmVyICgxMjMpLiBBbmQgZG9uJ3QgcGFyc2UgZGF0ZSBvYmplY3RzLlxuICAgIGlmICghaXNEYXRlKGRhdGEpICYmICFpc05hTihkYXRhKSkge1xuICAgICAgICBkYXRhID0gcGFyc2VJbnQoZGF0YSwgMTApO1xuICAgIH1cbiAgICAvLyBnZXQgdGhlIHRpbWVzdGFtcCB2YWx1ZS4gSWYgZGF0YSBpcyB0aW1lIHN0cmluZywgYXBwZW5kIGRhdGUgc3RyaW5nIHRvIHRoZSB0aW1lIHZhbHVlXG4gICAgZXBvY2ggPSBtb21lbnQoZGF0YSkudmFsdWVPZigpIHx8IG1vbWVudChuZXcgRGF0ZSgpLnRvRGF0ZVN0cmluZygpICsgJyAnICsgZGF0YSkudmFsdWVPZigpO1xuICAgIHJldHVybiBlcG9jaDtcbn07XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICd0cmFpbGluZ1plcm9EZWNpbWFsUGlwZSdcbn0pXG5leHBvcnQgY2xhc3MgVHJhaWxpbmdaZXJvRGVjaW1hbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgc2VsZWN0ZWRMb2NhbGU6IHN0cmluZywgbnVtYmVyZmlsdGVyOiBzdHJpbmcsIGxvY2FsZWZpbHRlcjogYW55LCB0cmFpbGluZ3plcm86IGJvb2xlYW4sIGRlY2ltYWxWYWx1ZTogc3RyaW5nLCBza2lwVHJhaWxpbmdaZXJvQ2hlY2s/OiBib29sZWFuLCBmb3JtYXR0ZWRMb2NhbGU/KTogYW55IHtcbiAgICAgICAgbnVtYmVyZmlsdGVyID0gdHJhaWxpbmd6ZXJvICYmICFza2lwVHJhaWxpbmdaZXJvQ2hlY2sgPyBgMS4ke2RlY2ltYWxWYWx1ZS5sZW5ndGh9LTE2YDogbnVtYmVyZmlsdGVyO1xuICAgICAgICBjb25zdCBsb2NhbGUgPSBmb3JtYXR0ZWRMb2NhbGUgPyBmb3JtYXR0ZWRMb2NhbGVbJ251bWJlciddIDogdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0odmFsdWUsIG51bWJlcmZpbHRlciwgbG9jYWxlZmlsdGVyIHx8IGxvY2FsZSB8fCBzZWxlY3RlZExvY2FsZSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkZWNpbWFsUGlwZTogRGVjaW1hbFBpcGUpIHsgfVxuXG59XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICd0b0RhdGUnXG59KVxuZXhwb3J0IGNsYXNzIFRvRGF0ZVBpcGUgZXh0ZW5kcyBXbVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICAvLyBUaGlzIG1ldGhvZCBjYWxscyB0aGUgY3VzdG9tIGZvcm1hdHRlciBmbiBhZnRlciBhcHBseWluZyB0aGUgZXhpc2l0bmcgZGF0ZSBwYXR0ZXJuXG4gICAgcmV0dXJuRm4oZGF0YSwgYXJncykge1xuICAgICAgICBpZiAodGhpcy5pc0N1c3RvbVBpcGUpIHtcbiAgICAgICAgICAgIGlmIChhcmdzKSB7XG4gICAgICAgICAgICAgICAgYXJnc1swXSA9IGRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21Gb3JtYXR0ZXIoZGF0YSwgYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuICAgIHRyYW5zZm9ybShkYXRhOiBhbnksIGZvcm1hdDogYW55LCB0aW1lem9uZT8sIGNvbXBJbnN0YW5jZT8pIHtcbiAgICAgICAgbGV0IHRpbWVzdGFtcDtcbiAgICAgICAgLy8gJ251bGwnIGlzIHRvIGJlIHRyZWF0ZWQgYXMgYSBzcGVjaWFsIGNhc2UsIElmIHVzZXIgd2FudHMgdG8gZW50ZXIgbnVsbCB2YWx1ZSwgZW1wdHkgc3RyaW5nIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBiYWNrZW5kXG4gICAgICAgIGlmIChkYXRhID09PSAnbnVsbCcgfHwgZGF0YSA9PT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJldHVybkZuKCcnLCBhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNEZWZpbmVkKGRhdGEpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5GbignJyxhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgICAgIHRpbWVzdGFtcCA9IGdldEVwb2NoVmFsdWUoZGF0YSk7XG4gICAgICAgIGlmICh0aW1lc3RhbXApIHtcbiAgICAgICAgICAgIGlmIChmb3JtYXQgPT09ICd0aW1lc3RhbXAnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuRm4odGltZXN0YW1wLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZvcm1hdCA9PT0gJ1VUQycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5GbihuZXcgRGF0ZSh0aW1lc3RhbXApLnRvSVNPU3RyaW5nKCksIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgZm9ybWF0dGVkVmFsO1xuICAgICAgICAgICAgY29uc3QgdGltZVpvbmUgPSB0aGlzLmkxOG5TZXJ2aWNlID8gdGhpcy5pMThuU2VydmljZS5nZXRUaW1lem9uZShjb21wSW5zdGFuY2UpIDogdGltZXpvbmU7XG4gICAgICAgICAgICBpZiAodGltZVpvbmUgJiYgKGRhdGEgPT09IHRpbWVzdGFtcCB8fCBoYXNPZmZzZXRTdHIoZGF0YSkpKSB7XG4gICAgICAgICAgICAgICAgZm9ybWF0dGVkVmFsID0gKG1vbWVudCh0aW1lc3RhbXApIGFzIGFueSkudHoodGltZVpvbmUpLmZvcm1hdChmb3JtYXQucmVwbGFjZUFsbCgneScsICdZJykucmVwbGFjZUFsbCgnZCcsICdEJykucmVwbGFjZSgnYScsICdBJykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmb3JtYXR0ZWRWYWwgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aW1lc3RhbXAsIGZvcm1hdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXR1cm5Gbihmb3JtYXR0ZWRWYWwsIGFyZ3VtZW50cyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmV0dXJuRm4oJycsIGFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUsIHByaXZhdGUgaTE4blNlcnZpY2U6IEFic3RyYWN0STE4blNlcnZpY2UsIHByb3RlY3RlZCBjdXN0b21QaXBlTWFuYWdlcjogQ3VzdG9tUGlwZU1hbmFnZXIpIHtcbiAgICAgICAgc3VwZXIoJ3RvRGF0ZScsIGN1c3RvbVBpcGVNYW5hZ2VyKTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICd0b051bWJlcidcbn0pXG5leHBvcnQgY2xhc3MgVG9OdW1iZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKGRhdGEsIGZyYWNTaXplKSB7XG4gICAgICAgIGlmIChmcmFjU2l6ZSAmJiAhU3RyaW5nKGZyYWNTaXplKS5tYXRjaCgvXihcXGQrKT9cXC4oKFxcZCspKC0oXFxkKykpPyk/JC8pKSB7XG4gICAgICAgICAgICBmcmFjU2l6ZSA9ICcxLicgKyBmcmFjU2l6ZSArICctJyArIGZyYWNTaXplO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNOYU4oK2RhdGEpKSB7XG4gICAgICAgICAgICBjb25zdCBsb2NhbGUgPSB0aGlzLmkxOG5TZXJ2aWNlICYmIHRoaXMuaTE4blNlcnZpY2UuZ2V0d2lkZ2V0TG9jYWxlKCkgPyB0aGlzLmkxOG5TZXJ2aWNlLmdldHdpZGdldExvY2FsZSgpIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkTG9jYWxlID0gbG9jYWxlID8gbG9jYWxlWydudW1iZXInXSA6IG51bGw7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kZWNpbWFsUGlwZS50cmFuc2Zvcm0oZGF0YSwgZnJhY1NpemUsIGZvcm1hdHRlZExvY2FsZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkZWNpbWFsUGlwZTogRGVjaW1hbFBpcGUsICBASW5qZWN0KEFic3RyYWN0STE4blNlcnZpY2UpIHByaXZhdGUgaTE4blNlcnZpY2U6IEFic3RyYWN0STE4blNlcnZpY2UpIHtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICd0b0N1cnJlbmN5J1xufSlcbmV4cG9ydCBjbGFzcyBUb0N1cnJlbmN5UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShkYXRhLCBjdXJyZW5jeVN5bWJvbCwgZnJhY1NpemUpIHtcbiAgICAgICAgY29uc3QgX2N1cnJlbmN5U3ltYm9sID0gKENVUlJFTkNZX0lORk9bY3VycmVuY3lTeW1ib2xdIHx8IHt9KS5zeW1ib2wgfHwgY3VycmVuY3lTeW1ib2wgfHwgJyc7XG4gICAgICAgIGxldCBfdmFsID0gbmV3IFRvTnVtYmVyUGlwZSh0aGlzLmRlY2ltYWxQaXBlLCB0aGlzLmkxOG5TZXJ2aWNlKS50cmFuc2Zvcm0oZGF0YSwgZnJhY1NpemUpO1xuICAgICAgICBjb25zdCBpc05lZ2F0aXZlTnVtYmVyID0gc3RhcnRzV2l0aChfdmFsLCAnLScpO1xuICAgICAgICBpZiAoaXNOZWdhdGl2ZU51bWJlcikge1xuICAgICAgICAgICAgX3ZhbCA9IF92YWwucmVwbGFjZSgnLScsJycpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfdmFsID8gaXNOZWdhdGl2ZU51bWJlciA/ICctJysgX2N1cnJlbmN5U3ltYm9sICtfdmFsIDpfY3VycmVuY3lTeW1ib2wgKyBfdmFsIDogJyc7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkZWNpbWFsUGlwZTogRGVjaW1hbFBpcGUsIEBJbmplY3QoQWJzdHJhY3RJMThuU2VydmljZSkgcHJpdmF0ZSBpMThuU2VydmljZTogQWJzdHJhY3RJMThuU2VydmljZSkge1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3ByZWZpeCdcbn0pXG5leHBvcnQgY2xhc3MgUHJlZml4UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShkYXRhLCBwYWRkaW5nKSB7XG4gICAgICAgIHJldHVybiAoaXNVbmRlZmluZWQoZGF0YSkgfHwgZGF0YSA9PT0gbnVsbCB8fCBkYXRhID09PSAnJykgPyBkYXRhIDogKChwYWRkaW5nIHx8ICcnKSArIGRhdGEpO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3N1ZmZpeCdcbn0pXG5leHBvcnQgY2xhc3MgU3VmZml4UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShkYXRhLCBwYWRkaW5nKSB7XG4gICAgICAgIHJldHVybiAoaXNVbmRlZmluZWQoZGF0YSkgfHwgZGF0YSA9PT0gbnVsbCB8fCBkYXRhID09PSAnJykgPyBkYXRhIDogKGRhdGEgKyAocGFkZGluZyB8fCAnJykpO1xuICAgIH1cbn1cblxuXG4vKipcbiAqIEN1c3RvbSBwaXBlOiBJdCBpcyB3b3JrIGFzIGludGVyY2VwdG9yIGJldHdlZW4gdGhlIHVzZXIgY3VzdG9tIHBpcGUgZnVuY3Rpb24gYW5kIGFuZ3VsYXIgcGlwZVxuICovXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAnY3VzdG9tJ1xufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjdXN0bWVVc2VyUGlwZTogQ3VzdG9tUGlwZU1hbmFnZXIpIHtcblxuICAgIH1cbiAgICB0cmFuc2Zvcm0oZGF0YSwgcGlwZW5hbWUpIHtcbiAgICAgICBsZXQgYXJndW1lbnRBcnIgPSBbXTtcbiAgICAgICBmb3IobGV0IGkgPTIgOyBpPGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApe1xuICAgICAgICBhcmd1bWVudEFyci5wdXNoKGFyZ3VtZW50c1tpXSk7XG4gICAgICAgfVxuXG4gICAgICAgIGxldCBwaXBlUmVmID0gdGhpcy5jdXN0bWVVc2VyUGlwZS5nZXRDdXN0b21QaXBlKHBpcGVuYW1lKTtcbiAgICAgICAgaWYgKCFwaXBlUmVmIHx8ICFpc0Z1bmN0aW9uKHBpcGVSZWYuZm9ybWF0dGVyKSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdmb3JtYXR0ZXIgaXMgbm90IGRlZmluZWQsIHBsZWFzZSBjaGVjayB0aGUgY3VzdG9tIHBpcGVzIGRvY3VtZW50YXRpb24nKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5e1xuICAgICAgICAgICAgcmV0dXJuIHBpcGVSZWYuZm9ybWF0dGVyKGRhdGEsIC4uLmFyZ3VtZW50QXJyKTtcbiAgICAgICAgfSBjYXRjaChlcnJvcil7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdQaXBlIG5hbWU6ICcrcGlwZW5hbWUsIGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICAgfVxuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3RpbWVGcm9tTm93J1xufSlcbmV4cG9ydCBjbGFzcyBUaW1lRnJvbU5vd1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oZGF0YSkge1xuICAgICAgICBsZXQgdGltZXN0YW1wO1xuICAgICAgICBpZiAoIWlzRGVmaW5lZChkYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0aW1lc3RhbXAgPSBnZXRFcG9jaFZhbHVlKGRhdGEpO1xuICAgICAgICByZXR1cm4gdGltZXN0YW1wID8gbW9tZW50KHRpbWVzdGFtcCkuZnJvbU5vdygpIDogdW5kZWZpbmVkO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ251bWJlclRvU3RyaW5nJ1xufSlcbmV4cG9ydCBjbGFzcyBOdW1iZXJUb1N0cmluZ1BpcGUgZXh0ZW5kcyBUb051bWJlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHsgfVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAnc3RyaW5nVG9OdW1iZXInXG59KVxuZXhwb3J0IGNsYXNzIFN0cmluZ1RvTnVtYmVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShkYXRhKSB7XG4gICAgICAgIHJldHVybiBOdW1iZXIoZGF0YSkgfHwgdW5kZWZpbmVkO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ2ZpbHRlcidcbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShkYXRhOiBhbnlbXSwgZmllbGQ6IGFueSwgdmFsdWU6IGFueSkge1xuICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZiBvYmplY3QgaXMgcGFzc2VkIGFzIGZpcnN0IHBhcmFtdGVyXG4gICAgICAgIGlmIChpc09iamVjdChmaWVsZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXIoZGF0YSwgZmllbGQpO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIGtleSB2YWx1ZSBwYWlyIGlzIHByb3ZpZGVkXG4gICAgICAgIHJldHVybiBmaWx0ZXIoZGF0YSwgaXRlbSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gaW5jbHVkZXMoaXRlbVtmaWVsZF0sIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAnZmlsZXNpemUnXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVTaXplUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHRyYW5zZm9ybShieXRlczogbnVtYmVyLCBwcmVjaXNpb246IG51bWJlcikge1xuICAgICAgICBjb25zdCB1bml0cyA9IFtcbiAgICAgICAgICAgICdieXRlcycsXG4gICAgICAgICAgICAnS0InLFxuICAgICAgICAgICAgJ01CJyxcbiAgICAgICAgICAgICdHQicsXG4gICAgICAgICAgICAnVEInLFxuICAgICAgICAgICAgJ1BCJ1xuICAgICAgICBdO1xuXG4gICAgICAgIC8qVG9kb1tzaHViaGFtXVxuICAgICAgICBpZiAoaXNOYU4ocGFyc2VGbG9hdChieXRlcykpIHx8ICFpc0Zpbml0ZShieXRlcykpIHtcbiAgICAgICAgICAgIHJldHVybiBpc01vYmlsZSgpID8gJycgOiAnPyc7XG4gICAgICAgIH0qL1xuICAgICAgICBsZXQgdW5pdCA9IDA7XG4gICAgICAgIHdoaWxlIChieXRlcyA+PSAxMDI0KSB7XG4gICAgICAgICAgICBieXRlcyAvPSAxMDI0O1xuICAgICAgICAgICAgdW5pdCsrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBieXRlcy50b0ZpeGVkKCtwcmVjaXNpb24pICsgJyAnICsgdW5pdHNbdW5pdF07XG4gICAgfVxufVxuXG5AUGlwZSh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBuYW1lOiAnZmlsZUljb25DbGFzcydcbn0pXG5leHBvcnQgY2xhc3MgRmlsZUljb25DbGFzc1BpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0oZmlsZUV4dGVuc2lvbjogYW55KSB7XG4gICAgICAgIGNvbnN0IGZpbGVDbGFzc01hcHBpbmcgPSB7XG4gICAgICAgICAgICAnemlwJyAgICAgICA6ICAgJ2ZhLWZpbGUtemlwLW8nLFxuICAgICAgICAgICAgJ3BkZicgICAgICAgOiAgICdmYS1maWxlLXBkZi1vJyxcbiAgICAgICAgICAgICdyYXInICAgICAgIDogICAnZmEtZmlsZS1hcmNoaXZlLW8nLFxuICAgICAgICAgICAgJ3R4dCcgICAgICAgOiAgICdmYS1maWxlLXRleHQtbycsXG4gICAgICAgICAgICAncHB0JyAgICAgICA6ICAgJ2ZhLWZpbGUtcG93ZXJwb2ludC1vJyxcbiAgICAgICAgICAgICdwb3QnICAgICAgIDogICAnZmEtZmlsZS1wb3dlcnBvaW50LW8nLFxuICAgICAgICAgICAgJ3BwcycgICAgICAgOiAgICdmYS1maWxlLXBvd2VycG9pbnQtbycsXG4gICAgICAgICAgICAncHB0eCcgICAgICA6ICAgJ2ZhLWZpbGUtcG93ZXJwb2ludC1vJyxcbiAgICAgICAgICAgICdwb3R4JyAgICAgIDogICAnZmEtZmlsZS1wb3dlcnBvaW50LW8nLFxuICAgICAgICAgICAgJ3Bwc3gnICAgICAgOiAgICdmYS1maWxlLXBvd2VycG9pbnQtbycsXG4gICAgICAgICAgICAnbXBnJyAgICAgICA6ICAgJ2ZhLWZpbGUtbW92aWUtbycsXG4gICAgICAgICAgICAnbXA0JyAgICAgICA6ICAgJ2ZhLWZpbGUtbW92aWUtbycsXG4gICAgICAgICAgICAnbW92JyAgICAgICA6ICAgJ2ZhLWZpbGUtbW92aWUtbycsXG4gICAgICAgICAgICAnYXZpJyAgICAgICA6ICAgJ2ZhLWZpbGUtbW92aWUtbycsXG4gICAgICAgICAgICAnbXAzJyAgICAgICA6ICAgJ2ZhLWZpbGUtYXVkaW8tbycsXG4gICAgICAgICAgICAnZG9jeCcgICAgICA6ICAgJ2ZhLWZpbGUtd29yZC1vJyxcbiAgICAgICAgICAgICdqcycgICAgICAgIDogICAnZmEtZmlsZS1jb2RlLW8nLFxuICAgICAgICAgICAgJ21kJyAgICAgICAgOiAgICdmYS1maWxlLWNvZGUtbycsXG4gICAgICAgICAgICAnaHRtbCcgICAgICA6ICAgJ2ZhLWZpbGUtY29kZS1vJyxcbiAgICAgICAgICAgICdjc3MnICAgICAgIDogICAnZmEtZmlsZS1jb2RlLW8nLFxuICAgICAgICAgICAgJ3hsc3gnICAgICAgOiAgICdmYS1maWxlLWV4Y2VsLW8nLFxuICAgICAgICAgICAgJ3BuZycgICAgICAgOiAgICdmYS1maWxlLWltYWdlLW8nLFxuICAgICAgICAgICAgJ2pwZycgICAgICAgOiAgICdmYS1maWxlLWltYWdlLW8nLFxuICAgICAgICAgICAgJ2pwZWcnICAgICAgOiAgICdmYS1maWxlLWltYWdlLW8nLFxuICAgICAgICAgICAgJ2ZpbGUnICAgICAgOiAgICdmYS1maWxlLW8nLFxuICAgICAgICAgICAgJ2RlZmF1bHQnICAgOiAgICdmYS1maWxlLW8nXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuICdmYSAnICsgKGZpbGVDbGFzc01hcHBpbmdbZmlsZUV4dGVuc2lvbl0gfHwgJ2ZhLWZpbGUtbycpO1xuICAgIH1cbn1cblxuQFBpcGUoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgbmFtZTogJ3N0YXRlQ2xhc3MnXG59KVxuZXhwb3J0IGNsYXNzIFN0YXRlQ2xhc3NQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHN0YXRlKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlQ2xhc3NNYXAgPSB7XG4gICAgICAgICAgICAnc3VjY2Vzcyc6ICd3aSB3aS1jaGVjay1jaXJjbGUgdGV4dC1zdWNjZXNzJyxcbiAgICAgICAgICAgICdlcnJvcicgICAgIDogJ3dpIHdpLWVycm9yIHRleHQtZGFuZ2VyJ1xuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gc3RhdGVDbGFzc01hcFtzdGF0ZS50b0xvd2VyQ2FzZSgpXTtcbiAgICB9XG59XG5cbkBQaXBlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIG5hbWU6ICdmaWxlRXh0ZW5zaW9uRnJvbU1pbWUnXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVFeHRlbnNpb25Gcm9tTWltZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgICB0cmFuc2Zvcm0obWltZVR5cGU6IGFueSkge1xuICAgICAgICBjb25zdCB0eXBlTWFwcGluZyA9IHtcbiAgICAgICAgICAgICdhdWRpby9hYWMnOiAnLmFhYycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veC1hYml3b3JkJzogJy5hYncnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5hbmRyb2lkLnBhY2thZ2UtYXJjaGl2ZSc6ICcuYXBrJyxcbiAgICAgICAgICAgICd2aWRlby94LW1zdmlkZW8nOiAnLmF2aScsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLmFtYXpvbi5lYm9vayc6ICcuYXp3JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nOiAnLmJpbicsXG4gICAgICAgICAgICAnaW1hZ2UvYm1wJzogJy5ibXAnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtYnppcCc6ICcuYnonLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtYnppcDInOiAnLmJ6MicsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veC1jc2gnOiAnLmNzaCcsXG4gICAgICAgICAgICAndGV4dC9jc3MnOiAnLmNzcycsXG4gICAgICAgICAgICAndGV4dC9jc3YnOiAnLmNzdicsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vbXN3b3JkJzogJy5kb2MnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JzogJy5kb2N4JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQubXMtZm9udG9iamVjdCc6ICcuZW90JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi9lcHViK3ppcCc6ICcuZXB1YicsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vZWNtYXNjcmlwdCc6ICcuZXMnLFxuICAgICAgICAgICAgJ2ltYWdlL2dpZic6ICcuZ2lmJyxcbiAgICAgICAgICAgICd0ZXh0L2h0bWwnOiAnLmh0bWwnLFxuICAgICAgICAgICAgJ2ltYWdlL3gtaWNvbic6ICcuaWNvJyxcbiAgICAgICAgICAgICd0ZXh0L2NhbGVuZGFyJzogJy5pY3MnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2phdmEtYXJjaGl2ZSc6ICcuamFyJyxcbiAgICAgICAgICAgICdpbWFnZS9qcGVnJzogWycuanBlZycsICcuanBnJ10sXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vamF2YXNjcmlwdCc6ICcuanMnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL2pzb24nOiAnLmpzb24nLFxuICAgICAgICAgICAgJ2F1ZGlvL21pZGknOiAnLm1pZCcsXG4gICAgICAgICAgICAnYXVkaW8veC1taWRpJzogJy5taWRpJyxcbiAgICAgICAgICAgICd2aWRlby9tcGVnJzogJy5tcGVnJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQuYXBwbGUuaW5zdGFsbGVyK3htbCc6ICdtcGtnJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnByZXNlbnRhdGlvbic6ICcub2RwJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0JzogJy5vZHMnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dCc6ICcub2R0JyxcbiAgICAgICAgICAgICdhdWRpby9vZ2cnOiAnLm9nYScsXG4gICAgICAgICAgICAndmlkZW8vb2dnJzogJy5vZ3YnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL29nZyc6ICcub2d4JyxcbiAgICAgICAgICAgICdmb250L290Zic6ICcub3RmJyxcbiAgICAgICAgICAgICdpbWFnZS9wbmcnOiAnLnBuZycsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vcGRmJzogJy5wZGYnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JzogJy5wcHQnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24nOiAnLnBwdHgnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQnOiAnLnJhcicsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vcnRmJzogJy5ydGYnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtc2gnOiAnLnNoJyxcbiAgICAgICAgICAgICdpbWFnZS9zdmcreG1sJzogJy5zdmcnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoJzogJy5zd2YnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtdGFyJzogJy50YXInLFxuICAgICAgICAgICAgJ2ltYWdlL3RpZmYnOiAnLnRpZmYnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3R5cGVzY3JpcHQnOiAnLnRzJyxcbiAgICAgICAgICAgICdmb250L3R0Zic6ICcudHRmJyxcbiAgICAgICAgICAgICd0ZXh0L3BsYWluJzogJy50eHQnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC52aXNpbyc6ICcudnNkJyxcbiAgICAgICAgICAgICdhdWRpby93YXYnOiAnLndhdicsXG4gICAgICAgICAgICAnYXVkaW8vd2VibSc6ICcud2ViYScsXG4gICAgICAgICAgICAndmlkZW8vd2VibSc6ICcud2VibScsXG4gICAgICAgICAgICAnaW1hZ2Uvd2VicCc6ICcud2VicCcsXG4gICAgICAgICAgICAnZm9udC93b2ZmJzogJy53b2ZmJyxcbiAgICAgICAgICAgICdmb250L3dvZmYyJzogJy53b2ZmMicsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24veGh0bWwreG1sJzogJy54aHRtbCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJzogJy54bHMnLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JzogJy54bHN4JyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi94bWwnOiAnLnhtbCcsXG4gICAgICAgICAgICAnYXBwbGljYXRpb24vdm5kLm1vemlsbGEueHVsK3htbCc6ICcueHVsJyxcbiAgICAgICAgICAgICdhcHBsaWNhdGlvbi96aXAnOiAnLnppcCcsXG4gICAgICAgICAgICAndmlkZW8vM2dwcCc6ICcuM2dwJyxcbiAgICAgICAgICAgICdhdWRpby8zZ3BwJzogJy4zZ3AnLFxuICAgICAgICAgICAgJ3ZpZGVvLzNncHAyJzogJy4zZzInLFxuICAgICAgICAgICAgJ2F1ZGlvLzNncHAyJzogJy4zZzInLFxuICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtN3otY29tcHJlc3NlZCc6ICcuN3onXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHR5cGVNYXBwaW5nW21pbWVUeXBlXTtcbiAgICB9XG59XG5cblxuIl19
@@ -2,7 +2,8 @@ import { $parseEvent, getClonedObject, getFormattedDate, isDefined, isEqualWithF
2
2
  import { getEvaluatedData, getObjValueByKey } from './widget-utils';
3
3
  import { ALLFIELDS } from './data-utils';
4
4
  import { cloneDeep, filter, forEach, get, groupBy, includes, isArray, isEqual, isNull, isObject, isString, isUndefined, keys, orderBy as _orderBy, sortBy, split, toLower, trim, uniqBy, uniqWith, values } from "lodash-es";
5
- import moment from 'moment';
5
+ import * as momentLib from 'moment';
6
+ const moment = momentLib.default || window['moment'];
6
7
  const momentLocale = moment.localeData();
7
8
  const momentCalendarOptions = getClonedObject(momentLocale._calendar);
8
9
  const momentCalendarDayOptions = momentLocale._calendarDay || {
@@ -447,4 +448,4 @@ export const configureDnD = ($el, options, startCb, updateCb, sortCb) => {
447
448
  */
448
449
  export class DataSetItem {
449
450
  }
450
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvdXRpbHMvZm9ybS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFeEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQ0gsU0FBUyxFQUNULE1BQU0sRUFDTixPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQy9CLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLE1BQU0sRUFDTixRQUFRLEVBQ1IsUUFBUSxFQUNSLFdBQVcsRUFBRSxJQUFJLEVBQ2pCLE9BQU8sSUFBSSxRQUFRLEVBQUUsTUFBTSxFQUMzQixLQUFLLEVBQUUsT0FBTyxFQUNkLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFDakMsTUFBTSxXQUFXLENBQUM7QUFHbkIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBRTVCLE1BQU0sWUFBWSxHQUFRLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUM5QyxNQUFNLHFCQUFxQixHQUFHLGVBQWUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDdEUsTUFBTSx3QkFBd0IsR0FBRyxZQUFZLENBQUMsWUFBWSxJQUFJO0lBQ3RELE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFFBQVEsRUFBRSxhQUFhO0lBQ3ZCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxNQUFNO0lBQ2hCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFFBQVEsRUFBRSxHQUFHO0NBQ2hC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SUFBSTtRQUNaLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLEtBQUssRUFBRSxPQUFPO1FBQ2QsTUFBTSxFQUFFLFFBQVE7UUFDaEIsSUFBSSxFQUFFLE1BQU07S0FDZixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRVosR0FBRyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUM5QixDQUFDLENBQUM7QUFXRjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxPQUFPLFdBQVc7Q0FRdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyAkcGFyc2VFdmVudCwgZ2V0Q2xvbmVkT2JqZWN0LCBnZXRGb3JtYXR0ZWREYXRlLCBpc0RlZmluZWQsIGlzRXF1YWxXaXRoRmllbGRzIH0gZnJvbSAnQHdtL2NvcmUnO1xuXG5pbXBvcnQgeyBnZXRFdmFsdWF0ZWREYXRhLCBnZXRPYmpWYWx1ZUJ5S2V5IH0gZnJvbSAnLi93aWRnZXQtdXRpbHMnO1xuXG5pbXBvcnQgeyBBTExGSUVMRFMgfSBmcm9tICcuL2RhdGEtdXRpbHMnO1xuaW1wb3J0IHsgVG9EYXRlUGlwZSB9IGZyb20gJy4uL3BpcGVzL2N1c3RvbS1waXBlcyc7XG5pbXBvcnQge1xuICAgIGNsb25lRGVlcCxcbiAgICBmaWx0ZXIsXG4gICAgZm9yRWFjaCwgZ2V0LCBncm91cEJ5LCBpbmNsdWRlcyxcbiAgICBpc0FycmF5LCBpc0VxdWFsLFxuICAgIGlzTnVsbCxcbiAgICBpc09iamVjdCxcbiAgICBpc1N0cmluZyxcbiAgICBpc1VuZGVmaW5lZCwga2V5cyxcbiAgICBvcmRlckJ5IGFzIF9vcmRlckJ5LCBzb3J0QnksXG4gICAgc3BsaXQsIHRvTG93ZXIsXG4gICAgdHJpbSwgdW5pcUJ5LCB1bmlxV2l0aCwgdmFsdWVzXG59IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZGVjbGFyZSBjb25zdCAkO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5jb25zdCBtb21lbnRMb2NhbGU6IGFueSA9IG1vbWVudC5sb2NhbGVEYXRhKCk7XG5jb25zdCBtb21lbnRDYWxlbmRhck9wdGlvbnMgPSBnZXRDbG9uZWRPYmplY3QobW9tZW50TG9jYWxlLl9jYWxlbmRhcik7XG5jb25zdCBtb21lbnRDYWxlbmRhckRheU9wdGlvbnMgPSBtb21lbnRMb2NhbGUuX2NhbGVuZGFyRGF5IHx8IHtcbiAgICAgICAgbGFzdERheTogJ1tZZXN0ZXJkYXldJyxcbiAgICAgICAgbGFzdFdlZWs6ICdbTGFzdF0gZGRkZCcsXG4gICAgICAgIG5leHREYXk6ICdbVG9tb3Jyb3ddJyxcbiAgICAgICAgbmV4dFdlZWs6ICdkZGRkJyxcbiAgICAgICAgc2FtZURheTogJ1tUb2RheV0nLFxuICAgICAgICBzYW1lRWxzZTogJ0wnXG4gICAgfTtcbmNvbnN0IEdST1VQX0JZX09QVElPTlMgPSB7XG4gICAgICAgIEFMUEhBQkVUOiAnYWxwaGFiZXQnLFxuICAgICAgICBXT1JEOiAnd29yZCcsXG4gICAgICAgIE9USEVSUzogJ090aGVycydcbiAgICB9O1xuY29uc3QgVElNRV9ST0xMVVBfT1BUSU9OUyA9IHtcbiAgICAgICAgSE9VUjogJ2hvdXInLFxuICAgICAgICBEQVk6ICdkYXknLFxuICAgICAgICBXRUVLOiAnd2VlaycsXG4gICAgICAgIE1PTlRIOiAnbW9udGgnLFxuICAgICAgICBZRUFSOiAneWVhcidcbiAgICB9O1xuY29uc3QgUk9MTFVQX1BBVFRFUk5TID0ge1xuICAgICAgICBEQVk6ICd5eXl5LU1NLWRkJyxcbiAgICAgICAgV0VFSzogJ3cgXFwnV2Vla1xcJywgIHl5eXknLFxuICAgICAgICBNT05USDogJ01NTSwgeXl5eScsXG4gICAgICAgIFlFQVI6ICdZWVlZJyxcbiAgICAgICAgSE9VUjogJ2hoOm1tIGEnXG4gICAgfTtcblxuLyoqXG4gKiBmdW5jdGlvbiB0byBnZXQgdGhlIG9yZGVyZWQgZGF0YXNldCBiYXNlZCBvbiB0aGUgZ2l2ZW4gb3JkZXJieVxuICovXG5leHBvcnQgY29uc3QgZ2V0T3JkZXJlZERhdGFzZXQgPSAoZGF0YVNldDogYW55LCBvcmRlckJ5OiBzdHJpbmcsIGlubmVySXRlbT8pID0+IHtcbiAgICBpZiAoIW9yZGVyQnkpIHtcbiAgICAgICAgcmV0dXJuIGNsb25lRGVlcChkYXRhU2V0KTtcbiAgICB9XG5cbiAgICAvLyBUaGUgb3JkZXIgYnkgb25seSB3b3JrcyB3aGVuIHRoZSBkYXRhc2V0IGNvbnRhaW5zIGxpc3Qgb2Ygb2JqZWN0cy5cbiAgICBjb25zdCBpdGVtcyA9IG9yZGVyQnkuc3BsaXQoJywnKSxcbiAgICAgICAgZmllbGRzID0gW10sXG4gICAgICAgIGRpcmVjdGlvbnMgPSBbXTtcbiAgICBpdGVtcy5mb3JFYWNoKG9iaiA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBvYmouc3BsaXQoJzonKTtcbiAgICAgICAgZmllbGRzLnB1c2goaW5uZXJJdGVtID8gaW5uZXJJdGVtICsgJy4nICsgaXRlbVswXSA6IGl0ZW1bMF0pO1xuICAgICAgICBkaXJlY3Rpb25zLnB1c2goaXRlbVsxXSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIF9vcmRlckJ5KGRhdGFTZXQsIGZpZWxkcywgZGlyZWN0aW9ucyk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gYXJyYXkgb2Ygb2JqZWN0LCBlYWNoIG9iamVjdCBjb250YWluIHRoZSBEYXRhU2V0SXRlbSB3aG9zZSBrZXksIHZhbHVlLCBsYWJlbCBhcmUgZXh0cmFjdGVkIGZyb20gb2JqZWN0IGtleXMuXG4gKi9cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1EYXRhV2l0aEtleXMgPSAoZGF0YVNldDogYW55KSA9PiB7XG4gICAgY29uc3QgZGF0YTogRGF0YVNldEl0ZW1bXSA9IFtdO1xuICAgIC8vIGlmIHRoZSBkYXRhc2V0IGlzIGluc3RhbmNlIG9mIG9iamVjdCAobm90IGFuIGFycmF5KSBvciB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgZGF0YXNldCBhcnJheSBpcyBhbiBvYmplY3QsXG4gICAgLy8gdGhlbiB3ZSBleHRyYWN0IHRoZSBrZXlzIGZyb20gdGhlIG9iamVjdCBhbmQgcHJlcGFyZSB0aGUgZGF0YXNldCBpdGVtcy5cbiAgICBpZiAoaXNPYmplY3QoZGF0YVNldFswXSkgfHwgKGlzT2JqZWN0KGRhdGFTZXQpICYmICEoZGF0YVNldCBpbnN0YW5jZW9mIEFycmF5KSkpIHtcbiAgICAgICAgLy8gZ2V0dGluZyBrZXlzIG9mIHRoZSBvYmplY3RcbiAgICAgICAgY29uc3Qgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzKGRhdGFTZXRbMF0gfHwgZGF0YVNldCk7XG4gICAgICAgIGZvckVhY2gob2JqZWN0S2V5cywgKG9iaktleSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGRhdGEucHVzaCh7XG4gICAgICAgICAgICAgICAga2V5OiBvYmpLZXksXG4gICAgICAgICAgICAgICAgbGFiZWw6IG9iaktleSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogb2JqS2V5LFxuICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCArIDFcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbn07XG5cbi8vIENvbnZlcnRzIGFueSB0eXBlIG9mIGRhdGEgdG8gYXJyYXkuXG5leHBvcnQgY29uc3QgZXh0cmFjdERhdGFBc0FycmF5ID0gZGF0YSA9PiB7XG5cbiAgICBpZiAoaXNVbmRlZmluZWQoZGF0YSkgfHwgaXNOdWxsKGRhdGEpIHx8IHRyaW0oZGF0YSkgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBpZiAoaXNTdHJpbmcoZGF0YSkpIHtcbiAgICAgICAgZGF0YSA9IHNwbGl0KGRhdGEsICcsJykubWFwKHN0ciA9PiBzdHIudHJpbSgpKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzQXJyYXkoZGF0YSkpIHtcbiAgICAgICAgZGF0YSA9IFtkYXRhXTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gcmV0dXJuIGFsd2F5cyBhbiBvYmplY3QgY29udGFpbmluZyBkYXRhc2V0IGRldGFpbHMuXG5leHBvcnQgY29uc3QgY29udmVydERhdGFUb09iamVjdCA9IGRhdGFSZXN1bHQgPT4ge1xuICAgIGlmIChpc1N0cmluZyhkYXRhUmVzdWx0KSkge1xuICAgICAgICBkYXRhUmVzdWx0ID0gc3BsaXQoZGF0YVJlc3VsdCwgJywnKS5tYXAoc3RyID0+IHN0ci50cmltKCkpO1xuICAgIH1cblxuICAgIHJldHVybiBkYXRhUmVzdWx0O1xufTtcblxuLy8gVGhpcyBmdW5jdGlvbiB1c2VkIHRvIGNoZWNrIHRoZSBzZWFyY2ggdHlwZSB3aWRnZXRcbmNvbnN0IGlzU2VhY2hXaWRnZXQgPSAod2lkZ2V0VHlwZSkgPT4ge1xuICAgIHJldHVybiB3aWRnZXRUeXBlID09PSAnd20tc2VhcmNoJztcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBzZXQgdGhlIGdyb3VwYnkgZmllbGQgZm9yIHNlYXJjaC9hdXRvY29tcGxldGVcbmNvbnN0IHNldEdyb3VwYnlLZXkgPSAoc2NvcGUsIGNvbnRleHQsIGRhdGFTZXRJdGVtLCBpbm5lckl0ZW0pID0+IHtcbiAgICBpZiAoc2NvcGUgJiYgaXNTZWFjaFdpZGdldChzY29wZS53aWRnZXRUeXBlKSkge1xuICAgICAgICBpZiAoc2NvcGUuZ3JvdXBieSkge1xuICAgICAgICAgICAgaWYgKGluY2x1ZGVzKHNjb3BlLmdyb3VwYnksICcoJykpIHtcbiAgICAgICAgICAgICAgICAvL1tUb2RvLUNTUF06IGNhbiBnZW5lcmF0ZSBleHByIGZuIGluIHBhZ2UgYmFzZWQgb24gZ3JvdXBieSBwcm9wZXJ0eSBvbiB3aWRnZXRcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cERhdGFCeVVzZXJEZWZpbmVkRm4gPSAkcGFyc2VFdmVudChzY29wZS5ncm91cGJ5KTtcbiAgICAgICAgICAgICAgICAoZGF0YVNldEl0ZW0gYXMgYW55KS5ncm91cGJ5ID0gZ3JvdXBEYXRhQnlVc2VyRGVmaW5lZEZuKGNvbnRleHQsIHsncm93JzogZGF0YVNldEl0ZW0uZGF0YU9iamVjdCB8fCBkYXRhU2V0SXRlbX0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAoZGF0YVNldEl0ZW0gYXMgYW55KS5ncm91cGJ5ID0gZ3JvdXBEYXRhQnlGaWVsZChzY29wZS5ncm91cGJ5LCBzY29wZS5tYXRjaCwgaW5uZXJJdGVtLCBzY29wZS5kYXRlZm9ybWF0LCBzY29wZS5kYXRlUGlwZSwgc2NvcGUuYXBwRGVmYXVsdHMsIGRhdGFTZXRJdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIChkYXRhU2V0SXRlbSBhcyBhbnkpLmdyb3VwYnkgPSAgJyc7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG4vKipcbiAqIFRoZSBmaXJzdCBzdGVwIGluIGRhdGFzZXRJdGVtcyBjcmVhdGlvbiBpcyBkYXRhIHRyYW5zZm9ybWF0aW9uOlxuICpcbiAqIFRoZSBkYXRhc2V0IGNhbiBjb250YWluIG9uZSBvZiB0aGUgZm9sbG93aW5nIGZvcm1hdHMgYW5kIGVhY2ggb2YgdGhlbSB0byBiZSBjb252ZXJ0ZWQgdG8gdGhlIGdpdmVuIGZvcm1hdDtcbiAqXG4gKiAxKSBUaGUgY29tbWEgc2VwYXJhdGVkIHN0cmluZy4uZWc6IEEsQixDID0+IFt7IGtleTogJ0EnLCB2YWx1ZTogJ0EnfSwgeyBrZXk6ICdCJywgdmFsdWU6ICdCJ30sIHsga2V5OiAnQycsIHZhbHVlOiAnQyd9XVxuICogMikgVGhlIGFycmF5IG9mIHZhbHVlcyBlZzogWzEsMiwzXSA9PiBbeyBrZXk6IDEsIHZhbHVlOiAxfSwgeyBrZXk6IDIsIHZhbHVlOiAyfSwgeyBrZXk6IDMsIHZhbHVlOiAzfV1cbiAqIDMpIGFuIG9iamVjdCBlZzoge25hbWU6ICdBJywgYWdlOiAyMH0gPT4gWyB7a2V5OiAnbmFtZScsIHZhbHVlOiAnQSd9LCB7a2V5OiAnYWdlJywgdmFsdWU6IDIwfV1cbiAqIDQpIGFuIGFycmF5IG9mIG9iamVjdHMuLi5lZzogWyB7bmFtZTogJ0EnLCBhZ2U6IDIwfSwge25hbWU6ICdCJywgYWdlOiAyMH1dID09PiByZXR1cm5zIFt7a2V5OiBfREFUQUZJRUxEXywgdmFsdWU6IF9ESVNQTEFZRklFTEQsIGxhYmVsOiBfRElTUExBWVZBTFVFfV1cbiAqL1xuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUZvcm1EYXRhID0gKGNvbnRleHQ6IGFueSwgZGF0YVNldDogYW55LCBteURhdGFGaWVsZD86IHN0cmluZywgZGlzcGxheU9wdGlvbnM/LCBzdGFydEluZGV4PzogbnVtYmVyLCBzY29wZT86IGFueSk6IEFycmF5PERhdGFTZXRJdGVtPiA9PiB7XG4gICAgY29uc3QgZGF0YSA9IFtdO1xuICAgIGlmICghZGF0YVNldCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRhdGFTZXQgPSBjb252ZXJ0RGF0YVRvT2JqZWN0KGRhdGFTZXQpO1xuXG4gICAgLy8gc3RhcnRJbmRleCBpcyB0aGUgaW5kZXggb2YgdGhlIG5leHQgbmV3IGl0ZW0uXG4gICAgaWYgKGlzVW5kZWZpbmVkKHN0YXJ0SW5kZXgpKSB7XG4gICAgICAgIHN0YXJ0SW5kZXggPSAxO1xuICAgIH1cblxuICAgIGlmIChpc1N0cmluZyhkYXRhU2V0KSkge1xuICAgICAgICBkYXRhU2V0ID0gZGF0YVNldC5zcGxpdCgnLCcpLm1hcChzdHIgPT4gc3RyLnRyaW0oKSk7XG4gICAgICAgIGRhdGFTZXQuZm9yRWFjaCgob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YVNldEl0ZW0gPSB7a2V5OiBvcHRpb24sIHZhbHVlOiBvcHRpb24sIGxhYmVsOiAoaXNEZWZpbmVkKG9wdGlvbikgJiYgb3B0aW9uICE9PSBudWxsKSA/IG9wdGlvbi50b1N0cmluZygpIDogJycsIGluZGV4OiBzdGFydEluZGV4ICsgaW5kZXh9O1xuICAgICAgICAgICAgc2V0R3JvdXBieUtleShzY29wZSwgY29udGV4dCwgZGF0YVNldEl0ZW0sICd2YWx1ZScpO1xuICAgICAgICAgICAgZGF0YS5wdXNoKGRhdGFTZXRJdGVtKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KGRhdGFTZXQpICYmICFpc09iamVjdChkYXRhU2V0WzBdKSkgeyAvLyBhcnJheSBvZiBwcmltaXRpdmUgdmFsdWVzIG9ubHlcbiAgICAgICAgZGF0YVNldC5mb3JFYWNoKChvcHRpb24sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRhU2V0SXRlbSA9IHtrZXk6IG9wdGlvbiwgdmFsdWU6IG9wdGlvbiwgbGFiZWw6IChpc0RlZmluZWQob3B0aW9uKSAmJiBvcHRpb24gIT09IG51bGwpID8gb3B0aW9uLnRvU3RyaW5nKCkgOiAnJywgaW5kZXg6IHN0YXJ0SW5kZXggKyBpbmRleH07XG4gICAgICAgICAgICBzZXRHcm91cGJ5S2V5KHNjb3BlLCBjb250ZXh0LCBkYXRhU2V0SXRlbSwgJ3ZhbHVlJyk7XG4gICAgICAgICAgICBkYXRhLnB1c2goZGF0YVNldEl0ZW0pO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKCEoZGF0YVNldCBpbnN0YW5jZW9mIEFycmF5KSAmJiBpc09iamVjdChkYXRhU2V0KSkge1xuICAgICAgICBjb25zdCBpID0gMDtcbiAgICAgICAgZm9yRWFjaChkYXRhU2V0LCAodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgY29uc3QgZGF0YVNldEl0ZW0gPSB7a2V5OiB0cmltKGtleSksIHZhbHVlOiBrZXksIGxhYmVsOiAoaXNEZWZpbmVkKHZhbHVlKSAmJiB2YWx1ZSAhPT0gbnVsbCkgPyB2YWx1ZS50b1N0cmluZygpIDogJycsXG4gICAgICAgICAgICAgICAgaW5kZXg6IHN0YXJ0SW5kZXgsXG4gICAgICAgICAgICAgICAgZGF0YU9iamVjdDogZGF0YVNldFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHNldEdyb3VwYnlLZXkoc2NvcGUsIGNvbnRleHQsIGRhdGFTZXRJdGVtLCAndmFsdWUnKTtcbiAgICAgICAgICAgIGRhdGEucHVzaChkYXRhU2V0SXRlbSk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghbXlEYXRhRmllbGQpIHsgLy8gY29uc2lkZXIgdGhlIGRhdGFmaWVsZCBhcyAnQUxMRklFTERTJyB3aGVuIGRhdGFmaWVsZCBpcyBub3QgZ2l2ZW4uXG4gICAgICAgICAgICBteURhdGFGaWVsZCA9IEFMTEZJRUxEUztcbiAgICAgICAgfVxuICAgICAgICBkYXRhU2V0LmZvckVhY2goKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IG15RGF0YUZpZWxkID09PSBBTExGSUVMRFMgPyBzdGFydEluZGV4ICsgaW5kZXggOiBnZXRPYmpWYWx1ZUJ5S2V5KG9wdGlvbiwgbXlEYXRhRmllbGQpO1xuICAgICAgICAgICAgLy8gT21pdCBhbGwgdGhlIGl0ZW1zIHdob3NlIGRhdGFmaWVsZCAoa2V5KSBpcyBudWxsIG9yIHVuZGVmaW5lZC5cbiAgICAgICAgICAgIGlmICghaXNVbmRlZmluZWQoa2V5KSAmJiAhaXNOdWxsKGtleSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IGdldEV2YWx1YXRlZERhdGEob3B0aW9uLCB7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkOiBkaXNwbGF5T3B0aW9ucy5kaXNwbGF5RmllbGQsXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IGRpc3BsYXlPcHRpb25zLmRpc3BsYXlFeHByLFxuICAgICAgICAgICAgICAgICAgICBiaW5kRXhwcmVzc2lvbjogZGlzcGxheU9wdGlvbnMuYmluZERpc3BsYXlFeHByXG4gICAgICAgICAgICAgICAgfSwgY29udGV4dCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YVNldEl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogKGlzRGVmaW5lZChsYWJlbCkgJiYgbGFiZWwgIT09IG51bGwpID8gbGFiZWwudG9TdHJpbmcoKSA6ICcnLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbXlEYXRhRmllbGQgPT09IEFMTEZJRUxEUyA/IG9wdGlvbiA6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YU9iamVjdDogb3B0aW9uLCAvLyByZXByZXNlbnRzIHRoZSBvYmplY3Qgd2hlbiBkYXRhZmllbGQgaXMgQUxMRklFTERTLiBUaGlzIGlzIHVzZWQgYXMgaW5uZXJJdGVtIHdoaWxlIGdyb3VwaW5nIHRoZSBkYXRhc2V0SXRlbXMuXG4gICAgICAgICAgICAgICAgICAgIGluZGV4OiBzdGFydEluZGV4ICsgaW5kZXhcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGlmIChkaXNwbGF5T3B0aW9ucy5kaXNwbGF5SW1nU3JjIHx8IGRpc3BsYXlPcHRpb25zLmJpbmREaXNwbGF5SW1nU3JjKSB7XG4gICAgICAgICAgICAgICAgICAgIChkYXRhU2V0SXRlbSBhcyBhbnkpLmltZ1NyYyA9IGdldEV2YWx1YXRlZERhdGEob3B0aW9uLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBkaXNwbGF5T3B0aW9ucy5kaXNwbGF5SW1nU3JjLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmluZEV4cHJlc3Npb246IGRpc3BsYXlPcHRpb25zLmJpbmREaXNwbGF5SW1nU3JjXG4gICAgICAgICAgICAgICAgICAgIH0sIGNvbnRleHQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRHcm91cGJ5S2V5KHNjb3BlLCBjb250ZXh0LCBkYXRhU2V0SXRlbSwgJ2RhdGFPYmplY3QnKTtcblxuICAgICAgICAgICAgICAgIGRhdGEucHVzaChkYXRhU2V0SXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbn07XG5cbi8qKlxuICogUHJpdmF0ZSBtZXRob2QgdG8gZ2V0IHRoZSB1bmlxdWUgb2JqZWN0cyBieSB0aGUgZGF0YSBmaWVsZFxuICovXG5leHBvcnQgY29uc3QgZ2V0VW5pcU9ianNCeURhdGFGaWVsZCA9IChkYXRhOiBBcnJheTxEYXRhU2V0SXRlbT4sIGRhdGFGaWVsZDogc3RyaW5nLCBkaXNwbGF5RmllbGQ6IHN0cmluZywgYWxsb3dFbXB0eUZpZWxkcz86IGJvb2xlYW4pID0+IHtcbiAgICBsZXQgdW5pcURhdGE7XG4gICAgY29uc3QgaXNBbGxGaWVsZHMgPSBkYXRhRmllbGQgPT09IEFMTEZJRUxEUztcblxuICAgIHVuaXFEYXRhID0gaXNBbGxGaWVsZHMgPyB1bmlxV2l0aChkYXRhLCBpc0VxdWFsKSA6IHVuaXFCeShkYXRhLCAna2V5Jyk7XG5cbiAgICBpZiAoIWRpc3BsYXlGaWVsZCB8fCBhbGxvd0VtcHR5RmllbGRzKSB7XG4gICAgICAgIHJldHVybiB1bmlxRGF0YTtcbiAgICB9XG5cbiAgICAvLyByZXR1cm4gb2JqZWN0cyBoYXZpbmcgbm9uIGVtcHR5IGRhdGFmaWVsZCBhbmQgZGlzcGxheSBmaWVsZCB2YWx1ZXMuXG4gICAgcmV0dXJuIGZpbHRlcih1bmlxRGF0YSwgKG9iaikgPT4ge1xuICAgICAgICBpZiAoaXNBbGxGaWVsZHMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cmltKG9iai5sYWJlbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRyaW0ob2JqLmtleSkgJiYgdHJpbShvYmoubGFiZWwpO1xuICAgIH0pO1xufTtcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIHNlbGVjdGVkSXRlbSBieSBjb21wYXJpbmcgdGhlIGZpZWxkIHZhbHVlcywgd2hlcmUgZmllbGRzIGFyZSBwYXNzZWQgYnkgXCJjb21wYXJlYnlcIiBwcm9wZXJ0eS5cbiAqIHdvcmtzIG9ubHkgZm9yIGRhdGFmaWVsZCB3aXRoIEFMTF9GSUVMRFNcbiAqIEBwYXJhbSBkYXRhc2V0SXRlbXMgbGlzdCBvZiBkYXRhc2V0IGl0ZW1zLlxuICogQHBhcmFtIGNvbXBhcmVXaXRoRGF0YU9iaiByZXByZXNlbnRzIHRoZSBkYXRhdmFsdWUgKG9iamVjdCkgd2hvc2UgcHJvcGVydGllcyBhcmUgdG8gYmUgY2hlY2tlZCBhZ2FpbnN0IGVhY2ggcHJvcGVydHkgb2YgZGF0YXNldEl0ZW0uXG4gKiBAcGFyYW0gY29tcGFyZUJ5RmllbGQgc3BlY2lmaWVzIHRoZSBwcm9wZXJ0eSBuYW1lcyBvbiB3aGljaCBkYXRhc2V0SXRlbSBoYXMgdG8gYmUgY29tcGFyZWQgYWdhaW5zdCBkYXRhdmFsdWUgb2JqZWN0LlxuICovXG5leHBvcnQgY29uc3Qgc2V0SXRlbUJ5Q29tcGFyZSA9IChkYXRhc2V0SXRlbXM6IEFycmF5PERhdGFTZXRJdGVtPiwgY29tcGFyZVdpdGhEYXRhT2JqOiBPYmplY3QsIGNvbXBhcmVCeUZpZWxkOiBzdHJpbmcpID0+IHtcbiAgICAvLyBjb21wYXJlIHRoZSBmaWVsZHMgYmFzZWQgb24gZmllbGRzIGdpdmVuIHRvIGNvbXBhcmVieSBwcm9wZXJ0eS5cbiAgICBmb3JFYWNoKGRhdGFzZXRJdGVtcywgb3B0ID0+IHtcbiAgICAgICAgaWYgKGlzRXF1YWxXaXRoRmllbGRzKG9wdC52YWx1ZSwgY29tcGFyZVdpdGhEYXRhT2JqLCBjb21wYXJlQnlGaWVsZCkpIHtcbiAgICAgICAgICAgIG9wdC5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5cbi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBzb3J0ZWQgZGF0YSBiYXNlZCB0byBncm91cGtleS5cbiAqIFJldHVybnMgYSBhcnJheSBvZiBvYmplY3RzLCBlYWNoIG9iamVjdCBjb250YWluaW5nIGtleSB3aGljaCBpcyBncm91cEtleSBhbmQgZGF0YSBpcyB0aGUgc29ydGVkIGRhdGEgd2hpY2ggaXMgc29ydGVkIGJ5IGdyb3VwYnkgZmllbGQgaW4gdGhlIGRhdGEuXG4gKlxuICogQHBhcmFtIGdyb3VwZWRMaURhdGEsIGdyb3VwZWQgZGF0YSBvYmplY3Qgd2l0aCBrZXkgYXMgdGhlIGdyb3VwS2V5IGFuZCBpdHMgdmFsdWUgYXMgdGhlIGFycmF5IG9mIG9iamVjdHMgZ3JvdXBlZCB1bmRlciB0aGUgZ3JvdXBLZXkuXG4gKiBAcGFyYW0gZ3JvdXBCeSwgc3RyaW5nIGdyb3VwYnkgcHJvcGVydHlcbiAqIEByZXR1cm5zIHthbnlbXX1cbiAqL1xuY29uc3QgZ2V0U29ydGVkR3JvdXBlZERhdGEgPSAoZ3JvdXBlZExpRGF0YTogT2JqZWN0LCBncm91cEJ5OiBzdHJpbmcsIG9yZGVyYnk6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IF9ncm91cGVkRGF0YSA9IFtdO1xuICAgIGZvckVhY2goa2V5cyhncm91cGVkTGlEYXRhKSwgKGdyb3Vwa2V5LCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBsaURhdGEgPSBnZXRPcmRlcmVkRGF0YXNldChncm91cGVkTGlEYXRhW2dyb3Vwa2V5XSwgb3JkZXJieSwgJ2RhdGFPYmplY3QnKTtcbiAgICAgICAgX2dyb3VwZWREYXRhLnB1c2goe1xuICAgICAgICAgICAga2V5OiBncm91cGtleSxcbiAgICAgICAgICAgIGRhdGE6IHNvcnRCeShsaURhdGEsIGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgIGRhdGEuX2dyb3VwSW5kZXggPSBpbmRleCArIDE7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldChkYXRhLCBncm91cEJ5KSB8fCBnZXQoZGF0YS5kYXRhT2JqZWN0LCBncm91cEJ5KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBfZ3JvdXBlZERhdGE7XG59O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGdldHMgdGhlIGdyb3VwZWREYXRhIHVzaW5nIGdyb3VwYnkgcHJvcGVydHkgYW5kIG1hdGNoIGFuZCByZXR1cm5zIHRoZSBzb3J0ZWQgYXJyYXkgb2Ygb2JqZWN0cy5cbiAqXG4gKiBAcGFyYW0gY29tcFJlZiByZXByZXNlbnRzIHRoZSBjb21wb25lbnQncyByZWZlcmVuY2UgaS5lLiBcInRoaXNcIiB2YWx1ZS5cbiAqIEBwYXJhbSBkYXRhIHJlcHJlc2VudHMgdGhlIGRhdGFzZXQgaS5lIGFycmF5IG9mIG9iamVjdHMuXG4gKiBAcGFyYW0gZ3JvdXBieSwgc3RyaW5nIGdyb3VwYnkgcHJvcGVydHlcbiAqIEBwYXJhbSBtYXRjaCwgc3RyaW5nIG1hdGNoIHByb3BlcnR5XG4gKiBAcGFyYW0gb3JkZXJieSwgc3RyaW5nIG9yZGVyYnkgcHJvcGVydHlcbiAqIEBwYXJhbSBkYXRlZm9ybWF0LCBzdHJpbmcgZGF0ZUZvcm1hdCBwcm9wZXJ0eVxuICogQHBhcmFtIGlubmVySXRlbSwgcmVwcmVzZW50cyB0aGUgaW5uZXJJdGVtIG9uIHdoaWNoIGdyb3VwYnkgaGFzIHRvIGJlIGFwcGxpZWQuIEluY2FzZSBvZiBkYXRhc2V0SXRlbXMsICdkYXRhT2JqZWN0JyBjb250YWlucyB0aGUgZnVsbCBvYmplY3QuIEhlcmUgaW5uZXJJdGVtIGlzIGRhdGFPYmplY3QuXG4gKiBAcmV0dXJucyB7YW55W119IGdyb3VwZWREYXRhLCBhcnJheSBvZiBvYmplY3RzLCBlYWNoIG9iamVjdCBoYXZpbmcga2V5IGFuZCBkYXRhLlxuICovXG5leHBvcnQgY29uc3QgZ3JvdXBEYXRhID0gKGNvbXBSZWY6IGFueSwgZGF0YTogQXJyYXk8T2JqZWN0IHwgRGF0YVNldEl0ZW0+LCBncm91cGJ5OiBzdHJpbmcsIG1hdGNoOiBzdHJpbmcsIG9yZGVyYnk6IHN0cmluZywgZGF0ZWZvcm1hdDogc3RyaW5nLCBkYXRlUGlwZTogVG9EYXRlUGlwZSwgaW5uZXJJdGVtPzogc3RyaW5nLCBBcHBEZWZhdWx0cz86IGFueSkgPT4ge1xuICAgIGxldCBncm91cGVkTGlEYXRhID0ge307XG4gICAgaWYgKGluY2x1ZGVzKGdyb3VwYnksICcoJykpIHtcbiAgICAgICAgLy9bVG9kby1DU1BdOiBjYW4gZ2VuZXJhdGUgZXhwciBmbiBpbiBwYWdlIGJhc2VkIG9uIGdyb3VwYnkgcHJvcGVydHkgb24gd2lkZ2V0XG4gICAgICAgIGNvbnN0IGdyb3VwRGF0YUJ5VXNlckRlZmluZWRGbiA9ICRwYXJzZUV2ZW50KGdyb3VwYnkpO1xuICAgICAgICBncm91cGVkTGlEYXRhID0gZ3JvdXBCeShkYXRhLCB2YWwgPT4ge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcmV0dXJuIGdyb3VwRGF0YUJ5VXNlckRlZmluZWRGbihjb21wUmVmLnZpZXdQYXJlbnQsIHsncm93JzogdmFsLmRhdGFPYmplY3QgfHwgdmFsfSk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGdyb3VwZWRMaURhdGEgPSBnZXRHcm91cGVkRGF0YShkYXRhLCBncm91cGJ5LCBtYXRjaCwgb3JkZXJieSwgZGF0ZWZvcm1hdCwgZGF0ZVBpcGUsIGlubmVySXRlbSwgQXBwRGVmYXVsdHMpO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRTb3J0ZWRHcm91cGVkRGF0YShncm91cGVkTGlEYXRhLCBncm91cGJ5LCBvcmRlcmJ5KTtcbn07XG5cbi8qKlxuICogVGhpcyBtZXRob2QgcHJlcGFyZXMgdGhlIGdyb3VwZWQgZGF0YS5cbiAqXG4gKiBAcGFyYW0gZmllbGREZWZzIGFycmF5IG9mIG9iamVjdHMgaS5lLiBkYXRhc2V0XG4gKiBAcGFyYW0gZ3JvdXBieSBzdHJpbmcgZ3JvdXBieVxuICogQHBhcmFtIG1hdGNoIHN0cmluZyBtYXRjaFxuICogQHBhcmFtIG9yZGVyYnkgc3RyaW5nIG9yZGVyYnlcbiAqIEBwYXJhbSBkYXRlRm9ybWF0IHN0cmluZyBkYXRlIGZvcm1hdFxuICogQHBhcmFtIGlubmVySXRlbSwgaXRlbSB0byBsb29rIGZvciBpbiB0aGUgcGFzc2VkIGRhdGFcbiAqL1xuY29uc3QgZ2V0R3JvdXBlZERhdGEgPSAoZmllbGREZWZzOiBBcnJheTxPYmplY3QgfCBEYXRhU2V0SXRlbT4sIGdyb3VwYnk6IHN0cmluZywgbWF0Y2g6IHN0cmluZywgb3JkZXJieTogc3RyaW5nLCBkYXRlRm9ybWF0OiBzdHJpbmcsIGRhdGVQaXBlOiBUb0RhdGVQaXBlLCBpbm5lckl0ZW0/OiBzdHJpbmcsIEFwcERlZmF1bHRzPzogYW55KSA9PiB7XG4gICAgLy8gRm9yIGRheSwgc2V0IHRoZSByZWxldmFudCBtb21lbnQgY2FsZW5kYXIgb3B0aW9uc1xuICAgIGlmIChtYXRjaCA9PT0gVElNRV9ST0xMVVBfT1BUSU9OUy5EQVkpIHtcbiAgICAgICAgbW9tZW50TG9jYWxlLl9jYWxlbmRhciA9IG1vbWVudENhbGVuZGFyRGF5T3B0aW9ucztcbiAgICB9XG5cbiAgICAvLyBoYW5kbGluZyBjYXNlLWluLXNlbnNpdGl2ZSBzY2VuYXJpb1xuICAgIC8vIG9yZGVyaW5nIHRoZSBkYXRhIGJhc2VkIG9uIGdyb3VwYnkgZmllbGQuIElmIHRoZXJlIGlzIGlubmVySXRlbSB0aGVuIGFwcGx5IG9yZGVyYnkgdXNpbmcgdGhlIGlubmVySXRlbSdzIGNvbnRhaW5pbmcgdGhlIGdyb3VwYnkgZmllbGQuXG4gICAgZmllbGREZWZzID0gX29yZGVyQnkoZmllbGREZWZzLCBmaWVsZERlZiA9PiB7XG4gICAgICAgIGNvbnN0IGdyb3VwS2V5ID0gZ2V0KGlubmVySXRlbSA/IGZpZWxkRGVmW2lubmVySXRlbV0gOiBmaWVsZERlZiwgZ3JvdXBieSk7XG4gICAgICAgIGlmIChncm91cEtleSkge1xuICAgICAgICAgICAgcmV0dXJuIHRvTG93ZXIoZ3JvdXBLZXkpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBleHRyYWN0IHRoZSBncm91cGVkIGRhdGEgYmFzZWQgb24gdGhlIGZpZWxkIG9idGFpbmVkIGZyb20gJ2dyb3VwRGF0YUJ5RmllbGQnLlxuICAgIGNvbnN0IGdyb3VwZWRMaURhdGEgPSBncm91cEJ5KGZpZWxkRGVmcywgZ3JvdXBEYXRhQnlGaWVsZC5iaW5kKHVuZGVmaW5lZCwgZ3JvdXBieSwgbWF0Y2gsIGlubmVySXRlbSwgZGF0ZUZvcm1hdCwgZGF0ZVBpcGUsIEFwcERlZmF1bHRzKSk7XG4gICAgbW9tZW50TG9jYWxlLl9jYWxlbmRhciA9IG1vbWVudENhbGVuZGFyT3B0aW9uczsgLy8gUmVzZXQgdG8gZGVmYXVsdCBtb21lbnQgY2FsZW5kYXIgb3B0aW9uc1xuXG4gICAgcmV0dXJuIGdyb3VwZWRMaURhdGE7XG59O1xuXG4vLyBGb3JtYXQgdGhlIGRhdGUgd2l0aCBnaXZlbiBkYXRlIGZvcm1hdFxuZXhwb3J0IGNvbnN0IGZpbHRlckRhdGUgPSAodmFsdWU6IHN0cmluZyB8IG51bWJlciwgZm9ybWF0OiBzdHJpbmcsIGRlZmF1bHRGb3JtYXQ6IHN0cmluZywgZGF0ZVBpcGU6IFRvRGF0ZVBpcGUpID0+IHtcbiAgICBpZiAoZm9ybWF0ID09PSAndGltZXN0YW1wJykgeyAvLyBGb3IgdGltZXN0YW1wIGZvcm1hdCwgcmV0dXJuIHRoZSBlcG9jaCB2YWx1ZVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldEZvcm1hdHRlZERhdGUoZGF0ZVBpcGUsIHZhbHVlLCBmb3JtYXQgfHwgZGVmYXVsdEZvcm1hdCk7XG59O1xuXG5cbi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZ3JvdXBrZXkgYmFzZWQgb24gdGhlIHJvbGx1cCAobWF0Y2gpIHBhc3NlZFxuICpcbiAqIEBwYXJhbSBjb25jYXRTdHIsIHN0cmluZyBjb250YWluaW5nIGdyb3VwYnkgZmllbGQgdmFsdWVcbiAqIEBwYXJhbSByb2xsVXAgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG1hdGNoIHByb3BlcnR5LlxuICogQHBhcmFtIGRhdGVmb3JtYXQgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGRhdGUgZm9ybWF0IHRvIGRpc3BsYXkgdGhlIGRhdGUuXG4gKi9cbmNvbnN0IGdldFRpbWVSb2xsZWRVcFN0cmluZyA9IChjb25jYXRTdHI6IHN0cmluZywgcm9sbFVwOiBzdHJpbmcsIGRhdGVmb3JtYXQ6IHN0cmluZywgZGF0ZVBpcGU/OiBUb0RhdGVQaXBlLCBBcHBEZWZhdWx0cz86IGFueSkgPT4ge1xuICAgIGxldCBncm91cEJ5S2V5LFxuICAgICAgICBzdHJNb21lbnQgID0gbW9tZW50KGNvbmNhdFN0ciksXG4gICAgICAgIGRhdGVGb3JtYXQgPSBkYXRlZm9ybWF0O1xuXG4gICAgY29uc3QgY3Vyck1vbWVudCA9IG1vbWVudCgpLFxuICAgICAgICBnZXRTYW1lRWxzZUZvcm1hdCA9IGZ1bmN0aW9uICgpIHsgLy8gU2V0IHRoZSBzYW1lRWxzZSBvcHRpb24gb2YgbW9tZW50IGNhbGVuZGFyIHRvIHVzZXIgZGVmaW5lZCBwYXR0ZXJuXG4gICAgICAgICAgICByZXR1cm4gJ1snICsgZmlsdGVyRGF0ZSh0aGlzLnZhbHVlT2YoKSwgZGF0ZUZvcm1hdCwgUk9MTFVQX1BBVFRFUk5TLkRBWSwgZGF0ZVBpcGUpICsgJ10nO1xuICAgICAgICB9O1xuXG4gICAgc3dpdGNoIChyb2xsVXApIHtcbiAgICAgICAgY2FzZSBUSU1FX1JPTExVUF9PUFRJT05TLkhPVVI6XG4gICAgICAgICAgICBkYXRlRm9ybWF0ID0gZGF0ZUZvcm1hdCB8fCBBcHBEZWZhdWx0cy50aW1lRm9ybWF0O1xuXG4gICAgICAgICAgICAvLyBJZiBkYXRlIGlzIGludmFsaWQsIGNoZWNrIGlmIGRhdGEgaXMgaW4gZm9ybSBvZiBoaDptbSBhXG4gICAgICAgICAgICBpZiAoIXN0ck1vbWVudC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICBzdHJNb21lbnQgPSBtb21lbnQobmV3IERhdGUoKS50b0RhdGVTdHJpbmcoKSArICcgJyArIGNvbmNhdFN0cik7XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RyTW9tZW50LmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBBcyBvbmx5IHRpbWUgaXMgcHJlc2VudCwgcm9sbCB1cCBhdCB0aGUgaG91ciBsZXZlbCB3aXRoIGdpdmVuIHRpbWUgZm9ybWF0XG4gICAgICAgICAgICAgICAgICAgIG1vbWVudExvY2FsZS5fY2FsZW5kYXIuc2FtZURheSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnWycgKyBmaWx0ZXJEYXRlKHRoaXMudmFsdWVPZigpLCBkYXRlRm9ybWF0LCBST0xMVVBfUEFUVEVSTlMuSE9VUiwgZGF0ZVBpcGUpICsgJ10nO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHJvdW5kIG9mZiB0byBuZWFyZXN0IGxhc3QgaG91clxuICAgICAgICAgICAgc3RyTW9tZW50ID0gc3RyTW9tZW50LnN0YXJ0T2YoJ2hvdXInKTtcbiAgICAgICAgICAgIG1vbWVudExvY2FsZS5fY2FsZW5kYXIuc2FtZUVsc2UgPSBnZXRTYW1lRWxzZUZvcm1hdDtcbiAgICAgICAgICAgIGdyb3VwQnlLZXkgPSBzdHJNb21lbnQuY2FsZW5kYXIoY3Vyck1vbWVudCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBUSU1FX1JPTExVUF9PUFRJT05TLldFRUs6XG4gICAgICAgICAgICBncm91cEJ5S2V5ID0gZmlsdGVyRGF0ZShzdHJNb21lbnQudmFsdWVPZigpLCBkYXRlRm9ybWF0LCBST0xMVVBfUEFUVEVSTlMuV0VFSywgZGF0ZVBpcGUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVElNRV9ST0xMVVBfT1BUSU9OUy5NT05USDpcbiAgICAgICAgICAgIGdyb3VwQnlLZXkgPSBmaWx0ZXJEYXRlKHN0ck1vbWVudC52YWx1ZU9mKCksIGRhdGVGb3JtYXQsIFJPTExVUF9QQVRURVJOUy5NT05USCwgZGF0ZVBpcGUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVElNRV9ST0xMVVBfT1BUSU9OUy5ZRUFSOlxuICAgICAgICAgICAgZ3JvdXBCeUtleSA9IHN0ck1vbWVudC5mb3JtYXQoUk9MTFVQX1BBVFRFUk5TLllFQVIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVElNRV9ST0xMVVBfT1BUSU9OUy5EQVk6XG4gICAgICAgICAgICBkYXRlRm9ybWF0ID0gZGF0ZUZvcm1hdCB8fCBBcHBEZWZhdWx0cy5kYXRlRm9ybWF0O1xuICAgICAgICAgICAgc3RyTW9tZW50ID0gc3RyTW9tZW50LnN0YXJ0T2YoJ2RheScpOyAvLyByb3VuZCBvZmYgdG8gY3VycmVudCBkYXlcbiAgICAgICAgICAgIG1vbWVudExvY2FsZS5fY2FsZW5kYXIuc2FtZUVsc2UgPSBnZXRTYW1lRWxzZUZvcm1hdDtcbiAgICAgICAgICAgIGdyb3VwQnlLZXkgPSBzdHJNb21lbnQuY2FsZW5kYXIoY3Vyck1vbWVudCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgLy8gSWYgaW52YWxpZCBkYXRlIGlzIHJldHVybmVkLCBDYXRlZ29yaXplIGl0IGFzIE90aGVycy5cbiAgICBpZiAoZ3JvdXBCeUtleSA9PT0gJ0ludmFsaWQgZGF0ZScpIHtcbiAgICAgICAgcmV0dXJuIEdST1VQX0JZX09QVElPTlMuT1RIRVJTO1xuICAgIH1cbiAgICByZXR1cm4gZ3JvdXBCeUtleTtcbn07XG5cblxuLy8gZ3JvdXBzIHRoZSBmaWVsZHMgYmFzZWQgb24gdGhlIGdyb3VwYnkgdmFsdWUuXG5jb25zdCBncm91cERhdGFCeUZpZWxkID0gKGdyb3VwYnk6IHN0cmluZywgbWF0Y2g6IHN0cmluZywgaW5uZXJJdGVtOiBzdHJpbmcsIGRhdGVGb3JtYXQ6IHN0cmluZywgZGF0ZVBpcGU6IFRvRGF0ZVBpcGUsIEFwcERlZmF1bHRzOiBhbnksIGxpRGF0YTogT2JqZWN0KSA9PiB7XG4gICAgLy8gZ2V0IHRoZSBncm91cGJ5IGZpZWxkIHZhbHVlIGZyb20gdGhlIGxpRGF0YSBvciBpbm5lckl0ZW0gaW4gdGhlIGxpRGF0YS5cbiAgICBsZXQgY29uY2F0U3RyID0gZ2V0KGlubmVySXRlbSA/IGxpRGF0YVtpbm5lckl0ZW1dIDogbGlEYXRhLCBncm91cGJ5KTtcblxuICAgIC8vIGJ5IGRlZmF1bHQgc2V0IHRoZSB1bmRlZmluZWQgZ3JvdXBLZXkgYXMgJ290aGVycydcbiAgICBpZiAoaXNVbmRlZmluZWQoY29uY2F0U3RyKSB8fCBpc051bGwoY29uY2F0U3RyKSB8fCBjb25jYXRTdHIudG9TdHJpbmcoKS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBHUk9VUF9CWV9PUFRJT05TLk9USEVSUztcbiAgICB9XG5cbiAgICAvLyBpZiBtYXRjaCBwcm9wIGlzIGFscGhhYmV0aWMgLGdldCB0aGUgc3RhcnRpbmcgYWxwaGFiZXQgb2YgdGhlIHdvcmQgYXMga2V5LlxuICAgIGlmIChtYXRjaCA9PT0gR1JPVVBfQllfT1BUSU9OUy5BTFBIQUJFVCkge1xuICAgICAgICBjb25jYXRTdHIgPSBjb25jYXRTdHIuc3Vic3RyKDAsIDEpO1xuICAgIH1cblxuICAgIC8vIGlmIG1hdGNoIGNvbnRhaW5zIHRoZSB0aW1lIG9wdGlvbnMgdGhlbiBnZXQgdGhlIGNvbmNhdFN0ciB1c2luZyAnZ2V0VGltZVJvbGxlZFVwU3RyaW5nJ1xuICAgIGlmIChpbmNsdWRlcyh2YWx1ZXMoVElNRV9ST0xMVVBfT1BUSU9OUyksIG1hdGNoKSkge1xuICAgICAgICBjb25jYXRTdHIgPSBnZXRUaW1lUm9sbGVkVXBTdHJpbmcoY29uY2F0U3RyLCBtYXRjaCwgZGF0ZUZvcm1hdCwgZGF0ZVBpcGUsIEFwcERlZmF1bHRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uY2F0U3RyO1xufTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCB0b2dnbGVzIGFsbCB0aGUgbGlzdCBpdGVtcyBpbnNpZGUgdGhlIGVhY2ggbGlzdCBncm91cC5cbiAqIEBwYXJhbSBlbCwgY29tcG9uZW50IHJlZmVyZW5jZSBvbiB3aGljaCBncm91cGJ5IGlzIGFwcGxpZWQuXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVBbGxIZWFkZXJzID0gKGVsOiBhbnkpID0+IHtcbiAgICBjb25zdCBncm91cHMgPSAkKGVsLm5hdGl2ZUVsZW1lbnQpLmZpbmQoJy5pdGVtLWdyb3VwJyk7XG5cbiAgICBncm91cHMuZmluZCgnLmdyb3VwLWxpc3QtaXRlbScpLnRvZ2dsZSgpO1xuXG4gICAgLy8gdG9nZ2xlIHRoZSBjb2xsYXBzZSBpY29uIG9uIGxpc3QgaGVhZGVyLlxuICAgIGNvbnN0IGdyb3VwSWNvbnMgPSBncm91cHMuZmluZCgnbGkubGlzdC1ncm91cC1oZWFkZXIgLmFwcC1pY29uJyk7XG5cbiAgICBpZiAoZ3JvdXBJY29ucykge1xuICAgICAgICBmb3JFYWNoKGdyb3VwSWNvbnMsIChpY29uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCAkaWNvbiA9ICQoaWNvbik7XG4gICAgICAgICAgICBpZiAoJGljb24uaGFzQ2xhc3MoJ3dpLWNoZXZyb24tZG93bicpKSB7XG4gICAgICAgICAgICAgICAgJGljb24ucmVtb3ZlQ2xhc3MoJ3dpLWNoZXZyb24tZG93bicpLmFkZENsYXNzKCd3aS1jaGV2cm9uLXVwJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICRpY29uLnJlbW92ZUNsYXNzKCd3aS1jaGV2cm9uLXVwJykuYWRkQ2xhc3MoJ3dpLWNoZXZyb24tZG93bicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59O1xuXG4vKipcbiAqIE9uIGxpc3QgaGVhZGVyIGNsaWNrLCB0b2dnbGUgdGhlIGxpc3QgaXRlbXMgaW4gdGhpcyBncm91cC5cbiAqIGFuZCBhbHNvIHRvZ2dsZSB0aGUgaGVhZGVyIGljb24uXG4gKiBAcGFyYW0gJGV2ZW50XG4gKi9cbmV4cG9ydCBjb25zdCBoYW5kbGVIZWFkZXJDbGljayA9ICgkZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgY29uc3Qgc2VsZWN0ZWRHcm91cCAgID0gJCgkZXZlbnQudGFyZ2V0IGFzIGFueSkuY2xvc2VzdCgnLml0ZW0tZ3JvdXAnKSxcbiAgICAgICAgc2VsZWN0ZWRBcHBJY29uID0gc2VsZWN0ZWRHcm91cC5maW5kKCdsaS5saXN0LWdyb3VwLWhlYWRlciAuYXBwLWljb24nKTtcblxuICAgIGlmIChzZWxlY3RlZEFwcEljb24uaGFzQ2xhc3MoJ3dpLWNoZXZyb24tZG93bicpKSB7XG4gICAgICAgIHNlbGVjdGVkQXBwSWNvbi5yZW1vdmVDbGFzcygnd2ktY2hldnJvbi1kb3duJykuYWRkQ2xhc3MoJ3dpLWNoZXZyb24tdXAnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBzZWxlY3RlZEFwcEljb24ucmVtb3ZlQ2xhc3MoJ3dpLWNoZXZyb24tdXAnKS5hZGRDbGFzcygnd2ktY2hldnJvbi1kb3duJyk7XG4gICAgfVxuXG4gICAgc2VsZWN0ZWRHcm91cC5maW5kKCcuZ3JvdXAtbGlzdC1pdGVtJykudG9nZ2xlKCk7XG59O1xuXG4vKipcbiAqIGNvbmZpZ3VyZXMgcmVvcmRlcmluZyB0aGUgaXRlbXMuXG4gKiBAcGFyYW0gJGVsIGVsZW1lbnQgdG8gYmUgc29ydGFibGVcbiAqIEBwYXJhbSBvcHRpb25zIG9iamVjdCBjb250YWluaW5nIHRoZSBzb3J0YWJsZSBvcHRpb25zLlxuICogQHBhcmFtIHN0YXJ0Q2IgY2FsbGJhY2sgb24gZHJhZyBzdGFydCBvbiB0aGUgZWxlbWVudC5cbiAqIEBwYXJhbSB1cGRhdGVDYiBjYWxsYmFjayB0cmlnZ2VycmVkIHdoZW4gc29ydGluZyBpcyBzdG9wcGVkIGFuZCB0aGUgRE9NIHBvc2l0aW9uIGhhcyBjaGFuZ2VkLlxuICogQHBhcmFtIHNvcnRDYiBjYWxsYmFjayB0cmlnZ2VycmVkIGR1cmluZyB0aGUgc29ydGluZyBvZiBhbiBlbGVtZW50LlxuICovXG5leHBvcnQgY29uc3QgY29uZmlndXJlRG5EID0gKCRlbDogYW55LCBvcHRpb25zOiBvYmplY3QsIHN0YXJ0Q2I6IEZ1bmN0aW9uLCB1cGRhdGVDYjogRnVuY3Rpb24sIHNvcnRDYj86IEZ1bmN0aW9uKSA9PiB7XG4gICAgY29uc3Qgc29ydE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgY29udGFpbm1lbnQ6ICRlbCxcbiAgICAgICAgZGVsYXk6IDEwMCxcbiAgICAgICAgb3BhY2l0eTogMC44LFxuICAgICAgICBoZWxwZXI6ICdjbG9uZScsXG4gICAgICAgIHpJbmRleDogMTA1MCxcbiAgICAgICAgdG9sZXJhbmNlOiAncG9pbnRlcicsXG4gICAgICAgIHN0YXJ0OiBzdGFydENiLFxuICAgICAgICB1cGRhdGU6IHVwZGF0ZUNiLFxuICAgICAgICBzb3J0OiBzb3J0Q2JcbiAgICB9LCBvcHRpb25zKTtcblxuICAgICRlbC5zb3J0YWJsZShzb3J0T3B0aW9ucyk7XG59O1xuXG4vLyBUb2RvOiBjb252ZXJ0IHRvIENsYXNzXG5pbnRlcmZhY2UgRGF0YVNldFByb3BzIHtcbiAgICBkYXRhZmllbGQ6IHN0cmluZztcbiAgICBkaXNwbGF5ZmllbGQ/OiBzdHJpbmc7XG4gICAgZGlzcGxheWV4cHJlc3Npb24/OiBzdHJpbmc7XG4gICAgdXNla2V5cz86IGJvb2xlYW47XG4gICAgb3JkZXJieT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBrZXkgcmVwcmVzZW50cyB0aGUgZGF0YWZpZWxkIHZhbHVlXG4gKiBsYWJlbCByZXByZXNlbnRzIGRpc3BsYXkgdmFsdWUgb3IgZXhwcmVzc2lvbiB2YWx1ZVxuICogdmFsdWUgZGlzcGxheVZhbHVlIGZvciBwcmltaXRpdmVzIGFuZCBkYXRhIG9iamVjdCBmb3IgYWxsRmllbGRzXG4gKiBkYXRhT2JqZWN0IHJlcHJlc2VudCB0aGUgb2JqZWN0IGZyb20gdGhlIGRhdGFzZXQgd2hlbiBkYXRhZmllbGQgaXMgQUxMRklFTERTLiBUaGlzIGlzIHVzZWQgYXMgaW5uZXJJdGVtIHdoaWxlIGdyb3VwaW5nIHRoZSBkYXRhc2V0SXRlbXMuXG4gKiBpbWdTcmMgcGljdHVyZSBzb3VyY2VcbiAqIHNlbGVjdGVkIHJlcHJlc2VudHMgYm9vbGVhbiB0byBub3RpZnkgc2VsZWN0ZWQgaXRlbS5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFTZXRJdGVtIHtcbiAgICBrZXk6IGFueTtcbiAgICBsYWJlbDogYW55O1xuICAgIHZhbHVlOiBhbnk7XG4gICAgZGF0YU9iamVjdD86IE9iamVjdDtcbiAgICBpbmRleD86IG51bWJlcjtcbiAgICBpbWdTcmM/OiBzdHJpbmc7XG4gICAgc2VsZWN0ZWQ/OiBib29sZWFuO1xufVxuIl19
451
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvYmFzZS9zcmMvdXRpbHMvZm9ybS11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFeEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQ0gsU0FBUyxFQUNULE1BQU0sRUFDTixPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQy9CLE9BQU8sRUFBRSxPQUFPLEVBQ2hCLE1BQU0sRUFDTixRQUFRLEVBQ1IsUUFBUSxFQUNSLFdBQVcsRUFBRSxJQUFJLEVBQ2pCLE9BQU8sSUFBSSxRQUFRLEVBQUUsTUFBTSxFQUMzQixLQUFLLEVBQUUsT0FBTyxFQUNkLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFDakMsTUFBTSxXQUFXLENBQUM7QUFHbkIsT0FBTyxLQUFLLFNBQVMsTUFBTyxRQUFRLENBQUM7QUFDckMsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDckQsTUFBTSxZQUFZLEdBQVEsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQzlDLE1BQU0scUJBQXFCLEdBQUcsZUFBZSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN0RSxNQUFNLHdCQUF3QixHQUFHLFlBQVksQ0FBQyxZQUFZLElBQUk7SUFDdEQsT0FBTyxFQUFFLGFBQWE7SUFDdEIsUUFBUSxFQUFFLGFBQWE7SUFDdkIsT0FBTyxFQUFFLFlB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LEtBQUssRUFBRSxHQUFHO1FBQ1YsT0FBTyxFQUFFLEdBQUc7UUFDWixNQUFNLEVBQUUsT0FBTztRQUNmLE1BQU0sRUFBRSxJQUFJO1FBQ1osU0FBUyxFQUFFLFNBQVM7UUFDcEIsS0FBSyxFQUFFLE9BQU87UUFDZCxNQUFNLEVBQUUsUUFBUTtRQUNoQixJQUFJLEVBQUUsTUFBTTtLQUNmLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFWixHQUFHLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzlCLENBQUMsQ0FBQztBQVdGOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLE9BQU8sV0FBVztDQVF2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ICRwYXJzZUV2ZW50LCBnZXRDbG9uZWRPYmplY3QsIGdldEZvcm1hdHRlZERhdGUsIGlzRGVmaW5lZCwgaXNFcXVhbFdpdGhGaWVsZHMgfSBmcm9tICdAd20vY29yZSc7XG5cbmltcG9ydCB7IGdldEV2YWx1YXRlZERhdGEsIGdldE9ialZhbHVlQnlLZXkgfSBmcm9tICcuL3dpZGdldC11dGlscyc7XG5cbmltcG9ydCB7IEFMTEZJRUxEUyB9IGZyb20gJy4vZGF0YS11dGlscyc7XG5pbXBvcnQgeyBUb0RhdGVQaXBlIH0gZnJvbSAnLi4vcGlwZXMvY3VzdG9tLXBpcGVzJztcbmltcG9ydCB7XG4gICAgY2xvbmVEZWVwLFxuICAgIGZpbHRlcixcbiAgICBmb3JFYWNoLCBnZXQsIGdyb3VwQnksIGluY2x1ZGVzLFxuICAgIGlzQXJyYXksIGlzRXF1YWwsXG4gICAgaXNOdWxsLFxuICAgIGlzT2JqZWN0LFxuICAgIGlzU3RyaW5nLFxuICAgIGlzVW5kZWZpbmVkLCBrZXlzLFxuICAgIG9yZGVyQnkgYXMgX29yZGVyQnksIHNvcnRCeSxcbiAgICBzcGxpdCwgdG9Mb3dlcixcbiAgICB0cmltLCB1bmlxQnksIHVuaXFXaXRoLCB2YWx1ZXNcbn0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5kZWNsYXJlIGNvbnN0ICQ7XG5pbXBvcnQgKiBhcyBtb21lbnRMaWIgIGZyb20gJ21vbWVudCc7XG5jb25zdCBtb21lbnQgPSBtb21lbnRMaWIuZGVmYXVsdCB8fCB3aW5kb3dbJ21vbWVudCddO1xuY29uc3QgbW9tZW50TG9jYWxlOiBhbnkgPSBtb21lbnQubG9jYWxlRGF0YSgpO1xuY29uc3QgbW9tZW50Q2FsZW5kYXJPcHRpb25zID0gZ2V0Q2xvbmVkT2JqZWN0KG1vbWVudExvY2FsZS5fY2FsZW5kYXIpO1xuY29uc3QgbW9tZW50Q2FsZW5kYXJEYXlPcHRpb25zID0gbW9tZW50TG9jYWxlLl9jYWxlbmRhckRheSB8fCB7XG4gICAgICAgIGxhc3REYXk6ICdbWWVzdGVyZGF5XScsXG4gICAgICAgIGxhc3RXZWVrOiAnW0xhc3RdIGRkZGQnLFxuICAgICAgICBuZXh0RGF5OiAnW1RvbW9ycm93XScsXG4gICAgICAgIG5leHRXZWVrOiAnZGRkZCcsXG4gICAgICAgIHNhbWVEYXk6ICdbVG9kYXldJyxcbiAgICAgICAgc2FtZUVsc2U6ICdMJ1xuICAgIH07XG5jb25zdCBHUk9VUF9CWV9PUFRJT05TID0ge1xuICAgICAgICBBTFBIQUJFVDogJ2FscGhhYmV0JyxcbiAgICAgICAgV09SRDogJ3dvcmQnLFxuICAgICAgICBPVEhFUlM6ICdPdGhlcnMnXG4gICAgfTtcbmNvbnN0IFRJTUVfUk9MTFVQX09QVElPTlMgPSB7XG4gICAgICAgIEhPVVI6ICdob3VyJyxcbiAgICAgICAgREFZOiAnZGF5JyxcbiAgICAgICAgV0VFSzogJ3dlZWsnLFxuICAgICAgICBNT05USDogJ21vbnRoJyxcbiAgICAgICAgWUVBUjogJ3llYXInXG4gICAgfTtcbmNvbnN0IFJPTExVUF9QQVRURVJOUyA9IHtcbiAgICAgICAgREFZOiAneXl5eS1NTS1kZCcsXG4gICAgICAgIFdFRUs6ICd3IFxcJ1dlZWtcXCcsICB5eXl5JyxcbiAgICAgICAgTU9OVEg6ICdNTU0sIHl5eXknLFxuICAgICAgICBZRUFSOiAnWVlZWScsXG4gICAgICAgIEhPVVI6ICdoaDptbSBhJ1xuICAgIH07XG5cbi8qKlxuICogZnVuY3Rpb24gdG8gZ2V0IHRoZSBvcmRlcmVkIGRhdGFzZXQgYmFzZWQgb24gdGhlIGdpdmVuIG9yZGVyYnlcbiAqL1xuZXhwb3J0IGNvbnN0IGdldE9yZGVyZWREYXRhc2V0ID0gKGRhdGFTZXQ6IGFueSwgb3JkZXJCeTogc3RyaW5nLCBpbm5lckl0ZW0/KSA9PiB7XG4gICAgaWYgKCFvcmRlckJ5KSB7XG4gICAgICAgIHJldHVybiBjbG9uZURlZXAoZGF0YVNldCk7XG4gICAgfVxuXG4gICAgLy8gVGhlIG9yZGVyIGJ5IG9ubHkgd29ya3Mgd2hlbiB0aGUgZGF0YXNldCBjb250YWlucyBsaXN0IG9mIG9iamVjdHMuXG4gICAgY29uc3QgaXRlbXMgPSBvcmRlckJ5LnNwbGl0KCcsJyksXG4gICAgICAgIGZpZWxkcyA9IFtdLFxuICAgICAgICBkaXJlY3Rpb25zID0gW107XG4gICAgaXRlbXMuZm9yRWFjaChvYmogPT4ge1xuICAgICAgICBjb25zdCBpdGVtID0gb2JqLnNwbGl0KCc6Jyk7XG4gICAgICAgIGZpZWxkcy5wdXNoKGlubmVySXRlbSA/IGlubmVySXRlbSArICcuJyArIGl0ZW1bMF0gOiBpdGVtWzBdKTtcbiAgICAgICAgZGlyZWN0aW9ucy5wdXNoKGl0ZW1bMV0pO1xuICAgIH0pO1xuICAgIHJldHVybiBfb3JkZXJCeShkYXRhU2V0LCBmaWVsZHMsIGRpcmVjdGlvbnMpO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGFuIGFycmF5IG9mIG9iamVjdCwgZWFjaCBvYmplY3QgY29udGFpbiB0aGUgRGF0YVNldEl0ZW0gd2hvc2Uga2V5LCB2YWx1ZSwgbGFiZWwgYXJlIGV4dHJhY3RlZCBmcm9tIG9iamVjdCBrZXlzLlxuICovXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtRGF0YVdpdGhLZXlzID0gKGRhdGFTZXQ6IGFueSkgPT4ge1xuICAgIGNvbnN0IGRhdGE6IERhdGFTZXRJdGVtW10gPSBbXTtcbiAgICAvLyBpZiB0aGUgZGF0YXNldCBpcyBpbnN0YW5jZSBvZiBvYmplY3QgKG5vdCBhbiBhcnJheSkgb3IgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGRhdGFzZXQgYXJyYXkgaXMgYW4gb2JqZWN0LFxuICAgIC8vIHRoZW4gd2UgZXh0cmFjdCB0aGUga2V5cyBmcm9tIHRoZSBvYmplY3QgYW5kIHByZXBhcmUgdGhlIGRhdGFzZXQgaXRlbXMuXG4gICAgaWYgKGlzT2JqZWN0KGRhdGFTZXRbMF0pIHx8IChpc09iamVjdChkYXRhU2V0KSAmJiAhKGRhdGFTZXQgaW5zdGFuY2VvZiBBcnJheSkpKSB7XG4gICAgICAgIC8vIGdldHRpbmcga2V5cyBvZiB0aGUgb2JqZWN0XG4gICAgICAgIGNvbnN0IG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyhkYXRhU2V0WzBdIHx8IGRhdGFTZXQpO1xuICAgICAgICBmb3JFYWNoKG9iamVjdEtleXMsIChvYmpLZXksIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBkYXRhLnB1c2goe1xuICAgICAgICAgICAgICAgIGtleTogb2JqS2V5LFxuICAgICAgICAgICAgICAgIGxhYmVsOiBvYmpLZXksXG4gICAgICAgICAgICAgICAgdmFsdWU6IG9iaktleSxcbiAgICAgICAgICAgICAgICBpbmRleDogaW5kZXggKyAxXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG59O1xuXG4vLyBDb252ZXJ0cyBhbnkgdHlwZSBvZiBkYXRhIHRvIGFycmF5LlxuZXhwb3J0IGNvbnN0IGV4dHJhY3REYXRhQXNBcnJheSA9IGRhdGEgPT4ge1xuXG4gICAgaWYgKGlzVW5kZWZpbmVkKGRhdGEpIHx8IGlzTnVsbChkYXRhKSB8fCB0cmltKGRhdGEpID09PSAnJykge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgaWYgKGlzU3RyaW5nKGRhdGEpKSB7XG4gICAgICAgIGRhdGEgPSBzcGxpdChkYXRhLCAnLCcpLm1hcChzdHIgPT4gc3RyLnRyaW0oKSk7XG4gICAgfVxuXG4gICAgaWYgKCFpc0FycmF5KGRhdGEpKSB7XG4gICAgICAgIGRhdGEgPSBbZGF0YV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIHJldHVybiBhbHdheXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgZGF0YXNldCBkZXRhaWxzLlxuZXhwb3J0IGNvbnN0IGNvbnZlcnREYXRhVG9PYmplY3QgPSBkYXRhUmVzdWx0ID0+IHtcbiAgICBpZiAoaXNTdHJpbmcoZGF0YVJlc3VsdCkpIHtcbiAgICAgICAgZGF0YVJlc3VsdCA9IHNwbGl0KGRhdGFSZXN1bHQsICcsJykubWFwKHN0ciA9PiBzdHIudHJpbSgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YVJlc3VsdDtcbn07XG5cbi8vIFRoaXMgZnVuY3Rpb24gdXNlZCB0byBjaGVjayB0aGUgc2VhcmNoIHR5cGUgd2lkZ2V0XG5jb25zdCBpc1NlYWNoV2lkZ2V0ID0gKHdpZGdldFR5cGUpID0+IHtcbiAgICByZXR1cm4gd2lkZ2V0VHlwZSA9PT0gJ3dtLXNlYXJjaCc7XG59O1xuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2V0IHRoZSBncm91cGJ5IGZpZWxkIGZvciBzZWFyY2gvYXV0b2NvbXBsZXRlXG5jb25zdCBzZXRHcm91cGJ5S2V5ID0gKHNjb3BlLCBjb250ZXh0LCBkYXRhU2V0SXRlbSwgaW5uZXJJdGVtKSA9PiB7XG4gICAgaWYgKHNjb3BlICYmIGlzU2VhY2hXaWRnZXQoc2NvcGUud2lkZ2V0VHlwZSkpIHtcbiAgICAgICAgaWYgKHNjb3BlLmdyb3VwYnkpIHtcbiAgICAgICAgICAgIGlmIChpbmNsdWRlcyhzY29wZS5ncm91cGJ5LCAnKCcpKSB7XG4gICAgICAgICAgICAgICAgLy9bVG9kby1DU1BdOiBjYW4gZ2VuZXJhdGUgZXhwciBmbiBpbiBwYWdlIGJhc2VkIG9uIGdyb3VwYnkgcHJvcGVydHkgb24gd2lkZ2V0XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBEYXRhQnlVc2VyRGVmaW5lZEZuID0gJHBhcnNlRXZlbnQoc2NvcGUuZ3JvdXBieSk7XG4gICAgICAgICAgICAgICAgKGRhdGFTZXRJdGVtIGFzIGFueSkuZ3JvdXBieSA9IGdyb3VwRGF0YUJ5VXNlckRlZmluZWRGbihjb250ZXh0LCB7J3Jvdyc6IGRhdGFTZXRJdGVtLmRhdGFPYmplY3QgfHwgZGF0YVNldEl0ZW19KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgKGRhdGFTZXRJdGVtIGFzIGFueSkuZ3JvdXBieSA9IGdyb3VwRGF0YUJ5RmllbGQoc2NvcGUuZ3JvdXBieSwgc2NvcGUubWF0Y2gsIGlubmVySXRlbSwgc2NvcGUuZGF0ZWZvcm1hdCwgc2NvcGUuZGF0ZVBpcGUsIHNjb3BlLmFwcERlZmF1bHRzLCBkYXRhU2V0SXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAoZGF0YVNldEl0ZW0gYXMgYW55KS5ncm91cGJ5ID0gICcnO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuLyoqXG4gKiBUaGUgZmlyc3Qgc3RlcCBpbiBkYXRhc2V0SXRlbXMgY3JlYXRpb24gaXMgZGF0YSB0cmFuc2Zvcm1hdGlvbjpcbiAqXG4gKiBUaGUgZGF0YXNldCBjYW4gY29udGFpbiBvbmUgb2YgdGhlIGZvbGxvd2luZyBmb3JtYXRzIGFuZCBlYWNoIG9mIHRoZW0gdG8gYmUgY29udmVydGVkIHRvIHRoZSBnaXZlbiBmb3JtYXQ7XG4gKlxuICogMSkgVGhlIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmcuLmVnOiBBLEIsQyA9PiBbeyBrZXk6ICdBJywgdmFsdWU6ICdBJ30sIHsga2V5OiAnQicsIHZhbHVlOiAnQid9LCB7IGtleTogJ0MnLCB2YWx1ZTogJ0MnfV1cbiAqIDIpIFRoZSBhcnJheSBvZiB2YWx1ZXMgZWc6IFsxLDIsM10gPT4gW3sga2V5OiAxLCB2YWx1ZTogMX0sIHsga2V5OiAyLCB2YWx1ZTogMn0sIHsga2V5OiAzLCB2YWx1ZTogM31dXG4gKiAzKSBhbiBvYmplY3QgZWc6IHtuYW1lOiAnQScsIGFnZTogMjB9ID0+IFsge2tleTogJ25hbWUnLCB2YWx1ZTogJ0EnfSwge2tleTogJ2FnZScsIHZhbHVlOiAyMH1dXG4gKiA0KSBhbiBhcnJheSBvZiBvYmplY3RzLi4uZWc6IFsge25hbWU6ICdBJywgYWdlOiAyMH0sIHtuYW1lOiAnQicsIGFnZTogMjB9XSA9PT4gcmV0dXJucyBbe2tleTogX0RBVEFGSUVMRF8sIHZhbHVlOiBfRElTUExBWUZJRUxELCBsYWJlbDogX0RJU1BMQVlWQUxVRX1dXG4gKi9cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1Gb3JtRGF0YSA9IChjb250ZXh0OiBhbnksIGRhdGFTZXQ6IGFueSwgbXlEYXRhRmllbGQ/OiBzdHJpbmcsIGRpc3BsYXlPcHRpb25zPywgc3RhcnRJbmRleD86IG51bWJlciwgc2NvcGU/OiBhbnkpOiBBcnJheTxEYXRhU2V0SXRlbT4gPT4ge1xuICAgIGNvbnN0IGRhdGEgPSBbXTtcbiAgICBpZiAoIWRhdGFTZXQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkYXRhU2V0ID0gY29udmVydERhdGFUb09iamVjdChkYXRhU2V0KTtcblxuICAgIC8vIHN0YXJ0SW5kZXggaXMgdGhlIGluZGV4IG9mIHRoZSBuZXh0IG5ldyBpdGVtLlxuICAgIGlmIChpc1VuZGVmaW5lZChzdGFydEluZGV4KSkge1xuICAgICAgICBzdGFydEluZGV4ID0gMTtcbiAgICB9XG5cbiAgICBpZiAoaXNTdHJpbmcoZGF0YVNldCkpIHtcbiAgICAgICAgZGF0YVNldCA9IGRhdGFTZXQuc3BsaXQoJywnKS5tYXAoc3RyID0+IHN0ci50cmltKCkpO1xuICAgICAgICBkYXRhU2V0LmZvckVhY2goKG9wdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFTZXRJdGVtID0ge2tleTogb3B0aW9uLCB2YWx1ZTogb3B0aW9uLCBsYWJlbDogKGlzRGVmaW5lZChvcHRpb24pICYmIG9wdGlvbiAhPT0gbnVsbCkgPyBvcHRpb24udG9TdHJpbmcoKSA6ICcnLCBpbmRleDogc3RhcnRJbmRleCArIGluZGV4fTtcbiAgICAgICAgICAgIHNldEdyb3VwYnlLZXkoc2NvcGUsIGNvbnRleHQsIGRhdGFTZXRJdGVtLCAndmFsdWUnKTtcbiAgICAgICAgICAgIGRhdGEucHVzaChkYXRhU2V0SXRlbSk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShkYXRhU2V0KSAmJiAhaXNPYmplY3QoZGF0YVNldFswXSkpIHsgLy8gYXJyYXkgb2YgcHJpbWl0aXZlIHZhbHVlcyBvbmx5XG4gICAgICAgIGRhdGFTZXQuZm9yRWFjaCgob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YVNldEl0ZW0gPSB7a2V5OiBvcHRpb24sIHZhbHVlOiBvcHRpb24sIGxhYmVsOiAoaXNEZWZpbmVkKG9wdGlvbikgJiYgb3B0aW9uICE9PSBudWxsKSA/IG9wdGlvbi50b1N0cmluZygpIDogJycsIGluZGV4OiBzdGFydEluZGV4ICsgaW5kZXh9O1xuICAgICAgICAgICAgc2V0R3JvdXBieUtleShzY29wZSwgY29udGV4dCwgZGF0YVNldEl0ZW0sICd2YWx1ZScpO1xuICAgICAgICAgICAgZGF0YS5wdXNoKGRhdGFTZXRJdGVtKTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICghKGRhdGFTZXQgaW5zdGFuY2VvZiBBcnJheSkgJiYgaXNPYmplY3QoZGF0YVNldCkpIHtcbiAgICAgICAgY29uc3QgaSA9IDA7XG4gICAgICAgIGZvckVhY2goZGF0YVNldCwgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IGRhdGFTZXRJdGVtID0ge2tleTogdHJpbShrZXkpLCB2YWx1ZToga2V5LCBsYWJlbDogKGlzRGVmaW5lZCh2YWx1ZSkgJiYgdmFsdWUgIT09IG51bGwpID8gdmFsdWUudG9TdHJpbmcoKSA6ICcnLFxuICAgICAgICAgICAgICAgIGluZGV4OiBzdGFydEluZGV4LFxuICAgICAgICAgICAgICAgIGRhdGFPYmplY3Q6IGRhdGFTZXRcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBzZXRHcm91cGJ5S2V5KHNjb3BlLCBjb250ZXh0LCBkYXRhU2V0SXRlbSwgJ3ZhbHVlJyk7XG4gICAgICAgICAgICBkYXRhLnB1c2goZGF0YVNldEl0ZW0pO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIW15RGF0YUZpZWxkKSB7IC8vIGNvbnNpZGVyIHRoZSBkYXRhZmllbGQgYXMgJ0FMTEZJRUxEUycgd2hlbiBkYXRhZmllbGQgaXMgbm90IGdpdmVuLlxuICAgICAgICAgICAgbXlEYXRhRmllbGQgPSBBTExGSUVMRFM7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YVNldC5mb3JFYWNoKChvcHRpb24sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBteURhdGFGaWVsZCA9PT0gQUxMRklFTERTID8gc3RhcnRJbmRleCArIGluZGV4IDogZ2V0T2JqVmFsdWVCeUtleShvcHRpb24sIG15RGF0YUZpZWxkKTtcbiAgICAgICAgICAgIC8vIE9taXQgYWxsIHRoZSBpdGVtcyB3aG9zZSBkYXRhZmllbGQgKGtleSkgaXMgbnVsbCBvciB1bmRlZmluZWQuXG4gICAgICAgICAgICBpZiAoIWlzVW5kZWZpbmVkKGtleSkgJiYgIWlzTnVsbChrZXkpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBnZXRFdmFsdWF0ZWREYXRhKG9wdGlvbiwge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZDogZGlzcGxheU9wdGlvbnMuZGlzcGxheUZpZWxkLFxuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBkaXNwbGF5T3B0aW9ucy5kaXNwbGF5RXhwcixcbiAgICAgICAgICAgICAgICAgICAgYmluZEV4cHJlc3Npb246IGRpc3BsYXlPcHRpb25zLmJpbmREaXNwbGF5RXhwclxuICAgICAgICAgICAgICAgIH0sIGNvbnRleHQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGFTZXRJdGVtID0ge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IChpc0RlZmluZWQobGFiZWwpICYmIGxhYmVsICE9PSBudWxsKSA/IGxhYmVsLnRvU3RyaW5nKCkgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG15RGF0YUZpZWxkID09PSBBTExGSUVMRFMgPyBvcHRpb24gOiBrZXksXG4gICAgICAgICAgICAgICAgICAgIGRhdGFPYmplY3Q6IG9wdGlvbiwgLy8gcmVwcmVzZW50cyB0aGUgb2JqZWN0IHdoZW4gZGF0YWZpZWxkIGlzIEFMTEZJRUxEUy4gVGhpcyBpcyB1c2VkIGFzIGlubmVySXRlbSB3aGlsZSBncm91cGluZyB0aGUgZGF0YXNldEl0ZW1zLlxuICAgICAgICAgICAgICAgICAgICBpbmRleDogc3RhcnRJbmRleCArIGluZGV4XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoZGlzcGxheU9wdGlvbnMuZGlzcGxheUltZ1NyYyB8fCBkaXNwbGF5T3B0aW9ucy5iaW5kRGlzcGxheUltZ1NyYykge1xuICAgICAgICAgICAgICAgICAgICAoZGF0YVNldEl0ZW0gYXMgYW55KS5pbWdTcmMgPSBnZXRFdmFsdWF0ZWREYXRhKG9wdGlvbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogZGlzcGxheU9wdGlvbnMuZGlzcGxheUltZ1NyYyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRFeHByZXNzaW9uOiBkaXNwbGF5T3B0aW9ucy5iaW5kRGlzcGxheUltZ1NyY1xuICAgICAgICAgICAgICAgICAgICB9LCBjb250ZXh0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0R3JvdXBieUtleShzY29wZSwgY29udGV4dCwgZGF0YVNldEl0ZW0sICdkYXRhT2JqZWN0Jyk7XG5cbiAgICAgICAgICAgICAgICBkYXRhLnB1c2goZGF0YVNldEl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG59O1xuXG4vKipcbiAqIFByaXZhdGUgbWV0aG9kIHRvIGdldCB0aGUgdW5pcXVlIG9iamVjdHMgYnkgdGhlIGRhdGEgZmllbGRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFVuaXFPYmpzQnlEYXRhRmllbGQgPSAoZGF0YTogQXJyYXk8RGF0YVNldEl0ZW0+LCBkYXRhRmllbGQ6IHN0cmluZywgZGlzcGxheUZpZWxkOiBzdHJpbmcsIGFsbG93RW1wdHlGaWVsZHM/OiBib29sZWFuKSA9PiB7XG4gICAgbGV0IHVuaXFEYXRhO1xuICAgIGNvbnN0IGlzQWxsRmllbGRzID0gZGF0YUZpZWxkID09PSBBTExGSUVMRFM7XG5cbiAgICB1bmlxRGF0YSA9IGlzQWxsRmllbGRzID8gdW5pcVdpdGgoZGF0YSwgaXNFcXVhbCkgOiB1bmlxQnkoZGF0YSwgJ2tleScpO1xuXG4gICAgaWYgKCFkaXNwbGF5RmllbGQgfHwgYWxsb3dFbXB0eUZpZWxkcykge1xuICAgICAgICByZXR1cm4gdW5pcURhdGE7XG4gICAgfVxuXG4gICAgLy8gcmV0dXJuIG9iamVjdHMgaGF2aW5nIG5vbiBlbXB0eSBkYXRhZmllbGQgYW5kIGRpc3BsYXkgZmllbGQgdmFsdWVzLlxuICAgIHJldHVybiBmaWx0ZXIodW5pcURhdGEsIChvYmopID0+IHtcbiAgICAgICAgaWYgKGlzQWxsRmllbGRzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJpbShvYmoubGFiZWwpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cmltKG9iai5rZXkpICYmIHRyaW0ob2JqLmxhYmVsKTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSBzZWxlY3RlZEl0ZW0gYnkgY29tcGFyaW5nIHRoZSBmaWVsZCB2YWx1ZXMsIHdoZXJlIGZpZWxkcyBhcmUgcGFzc2VkIGJ5IFwiY29tcGFyZWJ5XCIgcHJvcGVydHkuXG4gKiB3b3JrcyBvbmx5IGZvciBkYXRhZmllbGQgd2l0aCBBTExfRklFTERTXG4gKiBAcGFyYW0gZGF0YXNldEl0ZW1zIGxpc3Qgb2YgZGF0YXNldCBpdGVtcy5cbiAqIEBwYXJhbSBjb21wYXJlV2l0aERhdGFPYmogcmVwcmVzZW50cyB0aGUgZGF0YXZhbHVlIChvYmplY3QpIHdob3NlIHByb3BlcnRpZXMgYXJlIHRvIGJlIGNoZWNrZWQgYWdhaW5zdCBlYWNoIHByb3BlcnR5IG9mIGRhdGFzZXRJdGVtLlxuICogQHBhcmFtIGNvbXBhcmVCeUZpZWxkIHNwZWNpZmllcyB0aGUgcHJvcGVydHkgbmFtZXMgb24gd2hpY2ggZGF0YXNldEl0ZW0gaGFzIHRvIGJlIGNvbXBhcmVkIGFnYWluc3QgZGF0YXZhbHVlIG9iamVjdC5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldEl0ZW1CeUNvbXBhcmUgPSAoZGF0YXNldEl0ZW1zOiBBcnJheTxEYXRhU2V0SXRlbT4sIGNvbXBhcmVXaXRoRGF0YU9iajogT2JqZWN0LCBjb21wYXJlQnlGaWVsZDogc3RyaW5nKSA9PiB7XG4gICAgLy8gY29tcGFyZSB0aGUgZmllbGRzIGJhc2VkIG9uIGZpZWxkcyBnaXZlbiB0byBjb21wYXJlYnkgcHJvcGVydHkuXG4gICAgZm9yRWFjaChkYXRhc2V0SXRlbXMsIG9wdCA9PiB7XG4gICAgICAgIGlmIChpc0VxdWFsV2l0aEZpZWxkcyhvcHQudmFsdWUsIGNvbXBhcmVXaXRoRGF0YU9iaiwgY29tcGFyZUJ5RmllbGQpKSB7XG4gICAgICAgICAgICBvcHQuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgc29ydGVkIGRhdGEgYmFzZWQgdG8gZ3JvdXBrZXkuXG4gKiBSZXR1cm5zIGEgYXJyYXkgb2Ygb2JqZWN0cywgZWFjaCBvYmplY3QgY29udGFpbmluZyBrZXkgd2hpY2ggaXMgZ3JvdXBLZXkgYW5kIGRhdGEgaXMgdGhlIHNvcnRlZCBkYXRhIHdoaWNoIGlzIHNvcnRlZCBieSBncm91cGJ5IGZpZWxkIGluIHRoZSBkYXRhLlxuICpcbiAqIEBwYXJhbSBncm91cGVkTGlEYXRhLCBncm91cGVkIGRhdGEgb2JqZWN0IHdpdGgga2V5IGFzIHRoZSBncm91cEtleSBhbmQgaXRzIHZhbHVlIGFzIHRoZSBhcnJheSBvZiBvYmplY3RzIGdyb3VwZWQgdW5kZXIgdGhlIGdyb3VwS2V5LlxuICogQHBhcmFtIGdyb3VwQnksIHN0cmluZyBncm91cGJ5IHByb3BlcnR5XG4gKiBAcmV0dXJucyB7YW55W119XG4gKi9cbmNvbnN0IGdldFNvcnRlZEdyb3VwZWREYXRhID0gKGdyb3VwZWRMaURhdGE6IE9iamVjdCwgZ3JvdXBCeTogc3RyaW5nLCBvcmRlcmJ5OiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBfZ3JvdXBlZERhdGEgPSBbXTtcbiAgICBmb3JFYWNoKGtleXMoZ3JvdXBlZExpRGF0YSksIChncm91cGtleSwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbGlEYXRhID0gZ2V0T3JkZXJlZERhdGFzZXQoZ3JvdXBlZExpRGF0YVtncm91cGtleV0sIG9yZGVyYnksICdkYXRhT2JqZWN0Jyk7XG4gICAgICAgIF9ncm91cGVkRGF0YS5wdXNoKHtcbiAgICAgICAgICAgIGtleTogZ3JvdXBrZXksXG4gICAgICAgICAgICBkYXRhOiBzb3J0QnkobGlEYXRhLCBkYXRhID0+IHtcbiAgICAgICAgICAgICAgICBkYXRhLl9ncm91cEluZGV4ID0gaW5kZXggKyAxO1xuICAgICAgICAgICAgICAgIHJldHVybiBnZXQoZGF0YSwgZ3JvdXBCeSkgfHwgZ2V0KGRhdGEuZGF0YU9iamVjdCwgZ3JvdXBCeSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gX2dyb3VwZWREYXRhO1xufTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBnZXRzIHRoZSBncm91cGVkRGF0YSB1c2luZyBncm91cGJ5IHByb3BlcnR5IGFuZCBtYXRjaCBhbmQgcmV0dXJucyB0aGUgc29ydGVkIGFycmF5IG9mIG9iamVjdHMuXG4gKlxuICogQHBhcmFtIGNvbXBSZWYgcmVwcmVzZW50cyB0aGUgY29tcG9uZW50J3MgcmVmZXJlbmNlIGkuZS4gXCJ0aGlzXCIgdmFsdWUuXG4gKiBAcGFyYW0gZGF0YSByZXByZXNlbnRzIHRoZSBkYXRhc2V0IGkuZSBhcnJheSBvZiBvYmplY3RzLlxuICogQHBhcmFtIGdyb3VwYnksIHN0cmluZyBncm91cGJ5IHByb3BlcnR5XG4gKiBAcGFyYW0gbWF0Y2gsIHN0cmluZyBtYXRjaCBwcm9wZXJ0eVxuICogQHBhcmFtIG9yZGVyYnksIHN0cmluZyBvcmRlcmJ5IHByb3BlcnR5XG4gKiBAcGFyYW0gZGF0ZWZvcm1hdCwgc3RyaW5nIGRhdGVGb3JtYXQgcHJvcGVydHlcbiAqIEBwYXJhbSBpbm5lckl0ZW0sIHJlcHJlc2VudHMgdGhlIGlubmVySXRlbSBvbiB3aGljaCBncm91cGJ5IGhhcyB0byBiZSBhcHBsaWVkLiBJbmNhc2Ugb2YgZGF0YXNldEl0ZW1zLCAnZGF0YU9iamVjdCcgY29udGFpbnMgdGhlIGZ1bGwgb2JqZWN0LiBIZXJlIGlubmVySXRlbSBpcyBkYXRhT2JqZWN0LlxuICogQHJldHVybnMge2FueVtdfSBncm91cGVkRGF0YSwgYXJyYXkgb2Ygb2JqZWN0cywgZWFjaCBvYmplY3QgaGF2aW5nIGtleSBhbmQgZGF0YS5cbiAqL1xuZXhwb3J0IGNvbnN0IGdyb3VwRGF0YSA9IChjb21wUmVmOiBhbnksIGRhdGE6IEFycmF5PE9iamVjdCB8IERhdGFTZXRJdGVtPiwgZ3JvdXBieTogc3RyaW5nLCBtYXRjaDogc3RyaW5nLCBvcmRlcmJ5OiBzdHJpbmcsIGRhdGVmb3JtYXQ6IHN0cmluZywgZGF0ZVBpcGU6IFRvRGF0ZVBpcGUsIGlubmVySXRlbT86IHN0cmluZywgQXBwRGVmYXVsdHM/OiBhbnkpID0+IHtcbiAgICBsZXQgZ3JvdXBlZExpRGF0YSA9IHt9O1xuICAgIGlmIChpbmNsdWRlcyhncm91cGJ5LCAnKCcpKSB7XG4gICAgICAgIC8vW1RvZG8tQ1NQXTogY2FuIGdlbmVyYXRlIGV4cHIgZm4gaW4gcGFnZSBiYXNlZCBvbiBncm91cGJ5IHByb3BlcnR5IG9uIHdpZGdldFxuICAgICAgICBjb25zdCBncm91cERhdGFCeVVzZXJEZWZpbmVkRm4gPSAkcGFyc2VFdmVudChncm91cGJ5KTtcbiAgICAgICAgZ3JvdXBlZExpRGF0YSA9IGdyb3VwQnkoZGF0YSwgdmFsID0+IHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHJldHVybiBncm91cERhdGFCeVVzZXJEZWZpbmVkRm4oY29tcFJlZi52aWV3UGFyZW50LCB7J3Jvdyc6IHZhbC5kYXRhT2JqZWN0IHx8IHZhbH0pO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBncm91cGVkTGlEYXRhID0gZ2V0R3JvdXBlZERhdGEoZGF0YSwgZ3JvdXBieSwgbWF0Y2gsIG9yZGVyYnksIGRhdGVmb3JtYXQsIGRhdGVQaXBlLCBpbm5lckl0ZW0sIEFwcERlZmF1bHRzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0U29ydGVkR3JvdXBlZERhdGEoZ3JvdXBlZExpRGF0YSwgZ3JvdXBieSwgb3JkZXJieSk7XG59O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIHByZXBhcmVzIHRoZSBncm91cGVkIGRhdGEuXG4gKlxuICogQHBhcmFtIGZpZWxkRGVmcyBhcnJheSBvZiBvYmplY3RzIGkuZS4gZGF0YXNldFxuICogQHBhcmFtIGdyb3VwYnkgc3RyaW5nIGdyb3VwYnlcbiAqIEBwYXJhbSBtYXRjaCBzdHJpbmcgbWF0Y2hcbiAqIEBwYXJhbSBvcmRlcmJ5IHN0cmluZyBvcmRlcmJ5XG4gKiBAcGFyYW0gZGF0ZUZvcm1hdCBzdHJpbmcgZGF0ZSBmb3JtYXRcbiAqIEBwYXJhbSBpbm5lckl0ZW0sIGl0ZW0gdG8gbG9vayBmb3IgaW4gdGhlIHBhc3NlZCBkYXRhXG4gKi9cbmNvbnN0IGdldEdyb3VwZWREYXRhID0gKGZpZWxkRGVmczogQXJyYXk8T2JqZWN0IHwgRGF0YVNldEl0ZW0+LCBncm91cGJ5OiBzdHJpbmcsIG1hdGNoOiBzdHJpbmcsIG9yZGVyYnk6IHN0cmluZywgZGF0ZUZvcm1hdDogc3RyaW5nLCBkYXRlUGlwZTogVG9EYXRlUGlwZSwgaW5uZXJJdGVtPzogc3RyaW5nLCBBcHBEZWZhdWx0cz86IGFueSkgPT4ge1xuICAgIC8vIEZvciBkYXksIHNldCB0aGUgcmVsZXZhbnQgbW9tZW50IGNhbGVuZGFyIG9wdGlvbnNcbiAgICBpZiAobWF0Y2ggPT09IFRJTUVfUk9MTFVQX09QVElPTlMuREFZKSB7XG4gICAgICAgIG1vbWVudExvY2FsZS5fY2FsZW5kYXIgPSBtb21lbnRDYWxlbmRhckRheU9wdGlvbnM7XG4gICAgfVxuXG4gICAgLy8gaGFuZGxpbmcgY2FzZS1pbi1zZW5zaXRpdmUgc2NlbmFyaW9cbiAgICAvLyBvcmRlcmluZyB0aGUgZGF0YSBiYXNlZCBvbiBncm91cGJ5IGZpZWxkLiBJZiB0aGVyZSBpcyBpbm5lckl0ZW0gdGhlbiBhcHBseSBvcmRlcmJ5IHVzaW5nIHRoZSBpbm5lckl0ZW0ncyBjb250YWluaW5nIHRoZSBncm91cGJ5IGZpZWxkLlxuICAgIGZpZWxkRGVmcyA9IF9vcmRlckJ5KGZpZWxkRGVmcywgZmllbGREZWYgPT4ge1xuICAgICAgICBjb25zdCBncm91cEtleSA9IGdldChpbm5lckl0ZW0gPyBmaWVsZERlZltpbm5lckl0ZW1dIDogZmllbGREZWYsIGdyb3VwYnkpO1xuICAgICAgICBpZiAoZ3JvdXBLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiB0b0xvd2VyKGdyb3VwS2V5KTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gZXh0cmFjdCB0aGUgZ3JvdXBlZCBkYXRhIGJhc2VkIG9uIHRoZSBmaWVsZCBvYnRhaW5lZCBmcm9tICdncm91cERhdGFCeUZpZWxkJy5cbiAgICBjb25zdCBncm91cGVkTGlEYXRhID0gZ3JvdXBCeShmaWVsZERlZnMsIGdyb3VwRGF0YUJ5RmllbGQuYmluZCh1bmRlZmluZWQsIGdyb3VwYnksIG1hdGNoLCBpbm5lckl0ZW0sIGRhdGVGb3JtYXQsIGRhdGVQaXBlLCBBcHBEZWZhdWx0cykpO1xuICAgIG1vbWVudExvY2FsZS5fY2FsZW5kYXIgPSBtb21lbnRDYWxlbmRhck9wdGlvbnM7IC8vIFJlc2V0IHRvIGRlZmF1bHQgbW9tZW50IGNhbGVuZGFyIG9wdGlvbnNcblxuICAgIHJldHVybiBncm91cGVkTGlEYXRhO1xufTtcblxuLy8gRm9ybWF0IHRoZSBkYXRlIHdpdGggZ2l2ZW4gZGF0ZSBmb3JtYXRcbmV4cG9ydCBjb25zdCBmaWx0ZXJEYXRlID0gKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIsIGZvcm1hdDogc3RyaW5nLCBkZWZhdWx0Rm9ybWF0OiBzdHJpbmcsIGRhdGVQaXBlOiBUb0RhdGVQaXBlKSA9PiB7XG4gICAgaWYgKGZvcm1hdCA9PT0gJ3RpbWVzdGFtcCcpIHsgLy8gRm9yIHRpbWVzdGFtcCBmb3JtYXQsIHJldHVybiB0aGUgZXBvY2ggdmFsdWVcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRGb3JtYXR0ZWREYXRlKGRhdGVQaXBlLCB2YWx1ZSwgZm9ybWF0IHx8IGRlZmF1bHRGb3JtYXQpO1xufTtcblxuXG4vKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGdyb3Vwa2V5IGJhc2VkIG9uIHRoZSByb2xsdXAgKG1hdGNoKSBwYXNzZWRcbiAqXG4gKiBAcGFyYW0gY29uY2F0U3RyLCBzdHJpbmcgY29udGFpbmluZyBncm91cGJ5IGZpZWxkIHZhbHVlXG4gKiBAcGFyYW0gcm9sbFVwIHN0cmluZyBjb250YWluaW5nIHRoZSBtYXRjaCBwcm9wZXJ0eS5cbiAqIEBwYXJhbSBkYXRlZm9ybWF0IHN0cmluZyBjb250YWluaW5nIHRoZSBkYXRlIGZvcm1hdCB0byBkaXNwbGF5IHRoZSBkYXRlLlxuICovXG5jb25zdCBnZXRUaW1lUm9sbGVkVXBTdHJpbmcgPSAoY29uY2F0U3RyOiBzdHJpbmcsIHJvbGxVcDogc3RyaW5nLCBkYXRlZm9ybWF0OiBzdHJpbmcsIGRhdGVQaXBlPzogVG9EYXRlUGlwZSwgQXBwRGVmYXVsdHM/OiBhbnkpID0+IHtcbiAgICBsZXQgZ3JvdXBCeUtleSxcbiAgICAgICAgc3RyTW9tZW50ICA9IG1vbWVudChjb25jYXRTdHIpLFxuICAgICAgICBkYXRlRm9ybWF0ID0gZGF0ZWZvcm1hdDtcblxuICAgIGNvbnN0IGN1cnJNb21lbnQgPSBtb21lbnQoKSxcbiAgICAgICAgZ2V0U2FtZUVsc2VGb3JtYXQgPSBmdW5jdGlvbiAoKSB7IC8vIFNldCB0aGUgc2FtZUVsc2Ugb3B0aW9uIG9mIG1vbWVudCBjYWxlbmRhciB0byB1c2VyIGRlZmluZWQgcGF0dGVyblxuICAgICAgICAgICAgcmV0dXJuICdbJyArIGZpbHRlckRhdGUodGhpcy52YWx1ZU9mKCksIGRhdGVGb3JtYXQsIFJPTExVUF9QQVRURVJOUy5EQVksIGRhdGVQaXBlKSArICddJztcbiAgICAgICAgfTtcblxuICAgIHN3aXRjaCAocm9sbFVwKSB7XG4gICAgICAgIGNhc2UgVElNRV9ST0xMVVBfT1BUSU9OUy5IT1VSOlxuICAgICAgICAgICAgZGF0ZUZvcm1hdCA9IGRhdGVGb3JtYXQgfHwgQXBwRGVmYXVsdHMudGltZUZvcm1hdDtcblxuICAgICAgICAgICAgLy8gSWYgZGF0ZSBpcyBpbnZhbGlkLCBjaGVjayBpZiBkYXRhIGlzIGluIGZvcm0gb2YgaGg6bW0gYVxuICAgICAgICAgICAgaWYgKCFzdHJNb21lbnQuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgICAgc3RyTW9tZW50ID0gbW9tZW50KG5ldyBEYXRlKCkudG9EYXRlU3RyaW5nKCkgKyAnICcgKyBjb25jYXRTdHIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHN0ck1vbWVudC5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQXMgb25seSB0aW1lIGlzIHByZXNlbnQsIHJvbGwgdXAgYXQgdGhlIGhvdXIgbGV2ZWwgd2l0aCBnaXZlbiB0aW1lIGZvcm1hdFxuICAgICAgICAgICAgICAgICAgICBtb21lbnRMb2NhbGUuX2NhbGVuZGFyLnNhbWVEYXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1snICsgZmlsdGVyRGF0ZSh0aGlzLnZhbHVlT2YoKSwgZGF0ZUZvcm1hdCwgUk9MTFVQX1BBVFRFUk5TLkhPVVIsIGRhdGVQaXBlKSArICddJztcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyByb3VuZCBvZmYgdG8gbmVhcmVzdCBsYXN0IGhvdXJcbiAgICAgICAgICAgIHN0ck1vbWVudCA9IHN0ck1vbWVudC5zdGFydE9mKCdob3VyJyk7XG4gICAgICAgICAgICBtb21lbnRMb2NhbGUuX2NhbGVuZGFyLnNhbWVFbHNlID0gZ2V0U2FtZUVsc2VGb3JtYXQ7XG4gICAgICAgICAgICBncm91cEJ5S2V5ID0gc3RyTW9tZW50LmNhbGVuZGFyKGN1cnJNb21lbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVElNRV9ST0xMVVBfT1BUSU9OUy5XRUVLOlxuICAgICAgICAgICAgZ3JvdXBCeUtleSA9IGZpbHRlckRhdGUoc3RyTW9tZW50LnZhbHVlT2YoKSwgZGF0ZUZvcm1hdCwgUk9MTFVQX1BBVFRFUk5TLldFRUssIGRhdGVQaXBlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRJTUVfUk9MTFVQX09QVElPTlMuTU9OVEg6XG4gICAgICAgICAgICBncm91cEJ5S2V5ID0gZmlsdGVyRGF0ZShzdHJNb21lbnQudmFsdWVPZigpLCBkYXRlRm9ybWF0LCBST0xMVVBfUEFUVEVSTlMuTU9OVEgsIGRhdGVQaXBlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRJTUVfUk9MTFVQX09QVElPTlMuWUVBUjpcbiAgICAgICAgICAgIGdyb3VwQnlLZXkgPSBzdHJNb21lbnQuZm9ybWF0KFJPTExVUF9QQVRURVJOUy5ZRUFSKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRJTUVfUk9MTFVQX09QVElPTlMuREFZOlxuICAgICAgICAgICAgZGF0ZUZvcm1hdCA9IGRhdGVGb3JtYXQgfHwgQXBwRGVmYXVsdHMuZGF0ZUZvcm1hdDtcbiAgICAgICAgICAgIHN0ck1vbWVudCA9IHN0ck1vbWVudC5zdGFydE9mKCdkYXknKTsgLy8gcm91bmQgb2ZmIHRvIGN1cnJlbnQgZGF5XG4gICAgICAgICAgICBtb21lbnRMb2NhbGUuX2NhbGVuZGFyLnNhbWVFbHNlID0gZ2V0U2FtZUVsc2VGb3JtYXQ7XG4gICAgICAgICAgICBncm91cEJ5S2V5ID0gc3RyTW9tZW50LmNhbGVuZGFyKGN1cnJNb21lbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIElmIGludmFsaWQgZGF0ZSBpcyByZXR1cm5lZCwgQ2F0ZWdvcml6ZSBpdCBhcyBPdGhlcnMuXG4gICAgaWYgKGdyb3VwQnlLZXkgPT09ICdJbnZhbGlkIGRhdGUnKSB7XG4gICAgICAgIHJldHVybiBHUk9VUF9CWV9PUFRJT05TLk9USEVSUztcbiAgICB9XG4gICAgcmV0dXJuIGdyb3VwQnlLZXk7XG59O1xuXG5cbi8vIGdyb3VwcyB0aGUgZmllbGRzIGJhc2VkIG9uIHRoZSBncm91cGJ5IHZhbHVlLlxuY29uc3QgZ3JvdXBEYXRhQnlGaWVsZCA9IChncm91cGJ5OiBzdHJpbmcsIG1hdGNoOiBzdHJpbmcsIGlubmVySXRlbTogc3RyaW5nLCBkYXRlRm9ybWF0OiBzdHJpbmcsIGRhdGVQaXBlOiBUb0RhdGVQaXBlLCBBcHBEZWZhdWx0czogYW55LCBsaURhdGE6IE9iamVjdCkgPT4ge1xuICAgIC8vIGdldCB0aGUgZ3JvdXBieSBmaWVsZCB2YWx1ZSBmcm9tIHRoZSBsaURhdGEgb3IgaW5uZXJJdGVtIGluIHRoZSBsaURhdGEuXG4gICAgbGV0IGNvbmNhdFN0ciA9IGdldChpbm5lckl0ZW0gPyBsaURhdGFbaW5uZXJJdGVtXSA6IGxpRGF0YSwgZ3JvdXBieSk7XG5cbiAgICAvLyBieSBkZWZhdWx0IHNldCB0aGUgdW5kZWZpbmVkIGdyb3VwS2V5IGFzICdvdGhlcnMnXG4gICAgaWYgKGlzVW5kZWZpbmVkKGNvbmNhdFN0cikgfHwgaXNOdWxsKGNvbmNhdFN0cikgfHwgY29uY2F0U3RyLnRvU3RyaW5nKCkudHJpbSgpID09PSAnJykge1xuICAgICAgICByZXR1cm4gR1JPVVBfQllfT1BUSU9OUy5PVEhFUlM7XG4gICAgfVxuXG4gICAgLy8gaWYgbWF0Y2ggcHJvcCBpcyBhbHBoYWJldGljICxnZXQgdGhlIHN0YXJ0aW5nIGFscGhhYmV0IG9mIHRoZSB3b3JkIGFzIGtleS5cbiAgICBpZiAobWF0Y2ggPT09IEdST1VQX0JZX09QVElPTlMuQUxQSEFCRVQpIHtcbiAgICAgICAgY29uY2F0U3RyID0gY29uY2F0U3RyLnN1YnN0cigwLCAxKTtcbiAgICB9XG5cbiAgICAvLyBpZiBtYXRjaCBjb250YWlucyB0aGUgdGltZSBvcHRpb25zIHRoZW4gZ2V0IHRoZSBjb25jYXRTdHIgdXNpbmcgJ2dldFRpbWVSb2xsZWRVcFN0cmluZydcbiAgICBpZiAoaW5jbHVkZXModmFsdWVzKFRJTUVfUk9MTFVQX09QVElPTlMpLCBtYXRjaCkpIHtcbiAgICAgICAgY29uY2F0U3RyID0gZ2V0VGltZVJvbGxlZFVwU3RyaW5nKGNvbmNhdFN0ciwgbWF0Y2gsIGRhdGVGb3JtYXQsIGRhdGVQaXBlLCBBcHBEZWZhdWx0cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmNhdFN0cjtcbn07XG5cbi8qKlxuICogVGhpcyBtZXRob2QgdG9nZ2xlcyBhbGwgdGhlIGxpc3QgaXRlbXMgaW5zaWRlIHRoZSBlYWNoIGxpc3QgZ3JvdXAuXG4gKiBAcGFyYW0gZWwsIGNvbXBvbmVudCByZWZlcmVuY2Ugb24gd2hpY2ggZ3JvdXBieSBpcyBhcHBsaWVkLlxuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlQWxsSGVhZGVycyA9IChlbDogYW55KSA9PiB7XG4gICAgY29uc3QgZ3JvdXBzID0gJChlbC5uYXRpdmVFbGVtZW50KS5maW5kKCcuaXRlbS1ncm91cCcpO1xuXG4gICAgZ3JvdXBzLmZpbmQoJy5ncm91cC1saXN0LWl0ZW0nKS50b2dnbGUoKTtcblxuICAgIC8vIHRvZ2dsZSB0aGUgY29sbGFwc2UgaWNvbiBvbiBsaXN0IGhlYWRlci5cbiAgICBjb25zdCBncm91cEljb25zID0gZ3JvdXBzLmZpbmQoJ2xpLmxpc3QtZ3JvdXAtaGVhZGVyIC5hcHAtaWNvbicpO1xuXG4gICAgaWYgKGdyb3VwSWNvbnMpIHtcbiAgICAgICAgZm9yRWFjaChncm91cEljb25zLCAoaWNvbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgJGljb24gPSAkKGljb24pO1xuICAgICAgICAgICAgaWYgKCRpY29uLmhhc0NsYXNzKCd3aS1jaGV2cm9uLWRvd24nKSkge1xuICAgICAgICAgICAgICAgICRpY29uLnJlbW92ZUNsYXNzKCd3aS1jaGV2cm9uLWRvd24nKS5hZGRDbGFzcygnd2ktY2hldnJvbi11cCcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAkaWNvbi5yZW1vdmVDbGFzcygnd2ktY2hldnJvbi11cCcpLmFkZENsYXNzKCd3aS1jaGV2cm9uLWRvd24nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufTtcblxuLyoqXG4gKiBPbiBsaXN0IGhlYWRlciBjbGljaywgdG9nZ2xlIHRoZSBsaXN0IGl0ZW1zIGluIHRoaXMgZ3JvdXAuXG4gKiBhbmQgYWxzbyB0b2dnbGUgdGhlIGhlYWRlciBpY29uLlxuICogQHBhcmFtICRldmVudFxuICovXG5leHBvcnQgY29uc3QgaGFuZGxlSGVhZGVyQ2xpY2sgPSAoJGV2ZW50OiBFdmVudCkgPT4ge1xuICAgIGNvbnN0IHNlbGVjdGVkR3JvdXAgICA9ICQoJGV2ZW50LnRhcmdldCBhcyBhbnkpLmNsb3Nlc3QoJy5pdGVtLWdyb3VwJyksXG4gICAgICAgIHNlbGVjdGVkQXBwSWNvbiA9IHNlbGVjdGVkR3JvdXAuZmluZCgnbGkubGlzdC1ncm91cC1oZWFkZXIgLmFwcC1pY29uJyk7XG5cbiAgICBpZiAoc2VsZWN0ZWRBcHBJY29uLmhhc0NsYXNzKCd3aS1jaGV2cm9uLWRvd24nKSkge1xuICAgICAgICBzZWxlY3RlZEFwcEljb24ucmVtb3ZlQ2xhc3MoJ3dpLWNoZXZyb24tZG93bicpLmFkZENsYXNzKCd3aS1jaGV2cm9uLXVwJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0ZWRBcHBJY29uLnJlbW92ZUNsYXNzKCd3aS1jaGV2cm9uLXVwJykuYWRkQ2xhc3MoJ3dpLWNoZXZyb24tZG93bicpO1xuICAgIH1cblxuICAgIHNlbGVjdGVkR3JvdXAuZmluZCgnLmdyb3VwLWxpc3QtaXRlbScpLnRvZ2dsZSgpO1xufTtcblxuLyoqXG4gKiBjb25maWd1cmVzIHJlb3JkZXJpbmcgdGhlIGl0ZW1zLlxuICogQHBhcmFtICRlbCBlbGVtZW50IHRvIGJlIHNvcnRhYmxlXG4gKiBAcGFyYW0gb3B0aW9ucyBvYmplY3QgY29udGFpbmluZyB0aGUgc29ydGFibGUgb3B0aW9ucy5cbiAqIEBwYXJhbSBzdGFydENiIGNhbGxiYWNrIG9uIGRyYWcgc3RhcnQgb24gdGhlIGVsZW1lbnQuXG4gKiBAcGFyYW0gdXBkYXRlQ2IgY2FsbGJhY2sgdHJpZ2dlcnJlZCB3aGVuIHNvcnRpbmcgaXMgc3RvcHBlZCBhbmQgdGhlIERPTSBwb3NpdGlvbiBoYXMgY2hhbmdlZC5cbiAqIEBwYXJhbSBzb3J0Q2IgY2FsbGJhY2sgdHJpZ2dlcnJlZCBkdXJpbmcgdGhlIHNvcnRpbmcgb2YgYW4gZWxlbWVudC5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbmZpZ3VyZURuRCA9ICgkZWw6IGFueSwgb3B0aW9uczogb2JqZWN0LCBzdGFydENiOiBGdW5jdGlvbiwgdXBkYXRlQ2I6IEZ1bmN0aW9uLCBzb3J0Q2I/OiBGdW5jdGlvbikgPT4ge1xuICAgIGNvbnN0IHNvcnRPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIGNvbnRhaW5tZW50OiAkZWwsXG4gICAgICAgIGRlbGF5OiAxMDAsXG4gICAgICAgIG9wYWNpdHk6IDAuOCxcbiAgICAgICAgaGVscGVyOiAnY2xvbmUnLFxuICAgICAgICB6SW5kZXg6IDEwNTAsXG4gICAgICAgIHRvbGVyYW5jZTogJ3BvaW50ZXInLFxuICAgICAgICBzdGFydDogc3RhcnRDYixcbiAgICAgICAgdXBkYXRlOiB1cGRhdGVDYixcbiAgICAgICAgc29ydDogc29ydENiXG4gICAgfSwgb3B0aW9ucyk7XG5cbiAgICAkZWwuc29ydGFibGUoc29ydE9wdGlvbnMpO1xufTtcblxuLy8gVG9kbzogY29udmVydCB0byBDbGFzc1xuaW50ZXJmYWNlIERhdGFTZXRQcm9wcyB7XG4gICAgZGF0YWZpZWxkOiBzdHJpbmc7XG4gICAgZGlzcGxheWZpZWxkPzogc3RyaW5nO1xuICAgIGRpc3BsYXlleHByZXNzaW9uPzogc3RyaW5nO1xuICAgIHVzZWtleXM/OiBib29sZWFuO1xuICAgIG9yZGVyYnk/OiBzdHJpbmc7XG59XG5cbi8qKlxuICoga2V5IHJlcHJlc2VudHMgdGhlIGRhdGFmaWVsZCB2YWx1ZVxuICogbGFiZWwgcmVwcmVzZW50cyBkaXNwbGF5IHZhbHVlIG9yIGV4cHJlc3Npb24gdmFsdWVcbiAqIHZhbHVlIGRpc3BsYXlWYWx1ZSBmb3IgcHJpbWl0aXZlcyBhbmQgZGF0YSBvYmplY3QgZm9yIGFsbEZpZWxkc1xuICogZGF0YU9iamVjdCByZXByZXNlbnQgdGhlIG9iamVjdCBmcm9tIHRoZSBkYXRhc2V0IHdoZW4gZGF0YWZpZWxkIGlzIEFMTEZJRUxEUy4gVGhpcyBpcyB1c2VkIGFzIGlubmVySXRlbSB3aGlsZSBncm91cGluZyB0aGUgZGF0YXNldEl0ZW1zLlxuICogaW1nU3JjIHBpY3R1cmUgc291cmNlXG4gKiBzZWxlY3RlZCByZXByZXNlbnRzIGJvb2xlYW4gdG8gbm90aWZ5IHNlbGVjdGVkIGl0ZW0uXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhU2V0SXRlbSB7XG4gICAga2V5OiBhbnk7XG4gICAgbGFiZWw6IGFueTtcbiAgICB2YWx1ZTogYW55O1xuICAgIGRhdGFPYmplY3Q/OiBPYmplY3Q7XG4gICAgaW5kZXg/OiBudW1iZXI7XG4gICAgaW1nU3JjPzogc3RyaW5nO1xuICAgIHNlbGVjdGVkPzogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -11,7 +11,8 @@ import * as i1$2 from '@angular/platform-browser';
11
11
  import { EventManager } from '@angular/platform-browser';
12
12
  import { ReplaySubject, Subject } from 'rxjs';
13
13
  import { filter, debounceTime } from 'rxjs/operators';
14
- import moment from 'moment';
14
+ import * as momentLib from 'moment-timezone/moment-timezone';
15
+ import * as momentLib$1 from 'moment';
15
16
  import { __decorate, __param, __metadata } from 'tslib';
16
17
  import { Validators } from '@angular/forms';
17
18
  import { SwipeAnimation } from '@swipey';
@@ -2279,6 +2280,7 @@ class WmPipe {
2279
2280
  }
2280
2281
  }
2281
2282
 
2283
+ const moment$1 = momentLib.default || window['moment'];
2282
2284
  const getEpochValue = data => {
2283
2285
  let epoch;
2284
2286
  // For data in form of string number ('123'), convert to number (123). And don't parse date objects.
@@ -2286,7 +2288,7 @@ const getEpochValue = data => {
2286
2288
  data = parseInt(data, 10);
2287
2289
  }
2288
2290
  // get the timestamp value. If data is time string, append date string to the time value
2289
- epoch = moment(data).valueOf() || moment(new Date().toDateString() + ' ' + data).valueOf();
2291
+ epoch = moment$1(data).valueOf() || moment$1(new Date().toDateString() + ' ' + data).valueOf();
2290
2292
  return epoch;
2291
2293
  };
2292
2294
  class TrailingZeroDecimalPipe {
@@ -2339,7 +2341,7 @@ class ToDatePipe extends WmPipe {
2339
2341
  let formattedVal;
2340
2342
  const timeZone = this.i18nService ? this.i18nService.getTimezone(compInstance) : timezone;
2341
2343
  if (timeZone && (data === timestamp || hasOffsetStr(data))) {
2342
- formattedVal = moment(timestamp).tz(timeZone).format(format.replaceAll('y', 'Y').replaceAll('d', 'D').replace('a', 'A'));
2344
+ formattedVal = moment$1(timestamp).tz(timeZone).format(format.replaceAll('y', 'Y').replaceAll('d', 'D').replace('a', 'A'));
2343
2345
  }
2344
2346
  else {
2345
2347
  formattedVal = this.datePipe.transform(timestamp, format);
@@ -2489,7 +2491,7 @@ class TimeFromNowPipe {
2489
2491
  return undefined;
2490
2492
  }
2491
2493
  timestamp = getEpochValue(data);
2492
- return timestamp ? moment(timestamp).fromNow() : undefined;
2494
+ return timestamp ? moment$1(timestamp).fromNow() : undefined;
2493
2495
  }
2494
2496
  static { this.ɵfac = function TimeFromNowPipe_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TimeFromNowPipe)(); }; }
2495
2497
  static { this.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "timeFromNow", type: TimeFromNowPipe, pure: true, standalone: true }); }
@@ -3673,6 +3675,7 @@ function transformData(dataObject, variableName) {
3673
3675
  return dataObject;
3674
3676
  }
3675
3677
 
3678
+ const moment = momentLib$1.default || window['moment'];
3676
3679
  const momentLocale = moment.localeData();
3677
3680
  const momentCalendarOptions = getClonedObject(momentLocale._calendar);
3678
3681
  const momentCalendarDayOptions = momentLocale._calendarDay || {