@wavemaker/app-ng-runtime 11.9.0-next.24953 → 11.9.0-next.24956

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 (92) hide show
  1. app-ng-runtime/build-task/bundles/index.umd.js +2 -2
  2. app-ng-runtime/build-task/esm2022/basic/default/anchor/anchor.build.mjs +2 -2
  3. app-ng-runtime/build-task/esm2022/basic/default/html/html.build.mjs +2 -2
  4. app-ng-runtime/build-task/fesm2022/index.mjs +2 -2
  5. app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
  6. app-ng-runtime/components/base/bundles/index.umd.js +1 -1
  7. app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +3 -3
  8. app-ng-runtime/components/base/fesm2022/index.mjs +1 -1
  9. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  10. app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
  11. app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +1 -0
  12. app-ng-runtime/components/basic/default/bundles/index.umd.js +10 -8
  13. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +4 -4
  14. app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +5 -5
  15. app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +5 -4
  16. app-ng-runtime/components/basic/default/esm2022/video/video.props.mjs +2 -1
  17. app-ng-runtime/components/basic/default/fesm2022/index.mjs +10 -8
  18. app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
  19. app-ng-runtime/components/basic/default/video/video.component.d.ts +1 -0
  20. app-ng-runtime/components/basic/progress/bundles/index.umd.js +4 -4
  21. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +3 -3
  22. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +3 -3
  23. app-ng-runtime/components/basic/progress/fesm2022/index.mjs +4 -4
  24. app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
  25. app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +1 -0
  26. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +2 -1
  27. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +1 -0
  28. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  29. app-ng-runtime/components/basic/search/bundles/index.umd.js +7 -7
  30. app-ng-runtime/components/basic/search/esm2022/search.component.mjs +8 -8
  31. app-ng-runtime/components/basic/search/fesm2022/index.mjs +7 -7
  32. app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
  33. app-ng-runtime/components/data/pagination/bundles/index.umd.js +2 -0
  34. app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +3 -1
  35. app-ng-runtime/components/data/pagination/fesm2022/index.mjs +2 -0
  36. app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
  37. app-ng-runtime/components/data/table/bundles/index.umd.js +24 -3
  38. app-ng-runtime/components/data/table/esm2022/table.component.mjs +24 -4
  39. app-ng-runtime/components/data/table/esm2022/table.props.mjs +2 -1
  40. app-ng-runtime/components/data/table/fesm2022/index.mjs +25 -4
  41. app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
  42. app-ng-runtime/components/data/table/table.component.d.ts +5 -0
  43. app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +6 -4
  44. app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +7 -5
  45. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +6 -4
  46. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  47. app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +8 -4
  48. app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -5
  49. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +8 -4
  50. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  51. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +8 -3
  52. app-ng-runtime/components/dialogs/default/dialog-header/dialog-header.component.d.ts +2 -1
  53. app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +9 -4
  54. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +8 -3
  55. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  56. app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +4 -4
  57. app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +5 -5
  58. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +4 -4
  59. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  60. app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +9 -5
  61. app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +10 -6
  62. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +9 -5
  63. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  64. app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +9 -5
  65. app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +10 -6
  66. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +9 -5
  67. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  68. app-ng-runtime/components/input/chips/bundles/index.umd.js +2 -2
  69. app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +3 -3
  70. app-ng-runtime/components/input/chips/fesm2022/index.mjs +2 -2
  71. app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
  72. app-ng-runtime/components/input/default/bundles/index.umd.js +63 -24
  73. app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +8 -7
  74. app-ng-runtime/components/input/default/esm2022/number/number.props.mjs +2 -1
  75. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +6 -6
  76. app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +50 -13
  77. app-ng-runtime/components/input/default/fesm2022/index.mjs +62 -23
  78. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  79. app-ng-runtime/components/input/default/select/select.component.d.ts +1 -0
  80. app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -0
  81. app-ng-runtime/components/input/file-upload/bundles/index.umd.js +127 -95
  82. app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +125 -96
  83. app-ng-runtime/components/input/file-upload/esm2022/file-upload.props.mjs +4 -1
  84. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +127 -95
  85. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  86. app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +3 -7
  87. app-ng-runtime/core/bundles/index.umd.js +5 -5
  88. app-ng-runtime/core/esm2022/utils/utils.mjs +2 -3
  89. app-ng-runtime/core/fesm2022/index.mjs +1 -2
  90. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  91. app-ng-runtime/core/utils/utils.d.ts +0 -1
  92. app-ng-runtime/package.json +1 -1
@@ -32,9 +32,10 @@ export class CaptionPositionDirective {
32
32
  }
33
33
  // For select widget, display placeholder only on focus else remove the text of the option selected.
34
34
  checkForSelectPlaceholder() {
35
- if ($(this.nativeEl).find('select option:selected').text() && !$(this.nativeEl).find('select').is(':focus') &&
35
+ const selectElPlaceholderOption = this.nativeEl.querySelector('#placeholderOption');
36
+ if (selectElPlaceholderOption && selectElPlaceholderOption.textContent && !$(this.nativeEl).find('select').is(':focus') &&
36
37
  !$(this.inputEl.closest('[widget-id]')).attr('datavalue')) {
37
- $(this.nativeEl).find('select option:selected').text('');
38
+ selectElPlaceholderOption.textContent = '';
38
39
  }
39
40
  }
40
41
  setDefaultValueAnimation() {
@@ -136,10 +137,10 @@ export class CaptionPositionDirective {
136
137
  // before placeholder is removed assign it to the placeholder variable
137
138
  // check for placeholder in inputel and selectel
138
139
  if (this.inputEl) {
139
- const selectEl = this.inputEl.find('option:first');
140
- if (this.inputEl.attr('placeholder') || selectEl.text()) {
141
- if (selectEl.length) {
142
- selectEl.text('');
140
+ const selectElPlaceholderOption = this.nativeEl.querySelector('#placeholderOption');
141
+ if (this.inputEl.attr('placeholder') || selectElPlaceholderOption) {
142
+ if (selectElPlaceholderOption) {
143
+ selectElPlaceholderOption.textContent = '';
143
144
  }
144
145
  else {
145
146
  this.placeholder = this.inputEl.attr('placeholder');
@@ -167,4 +168,4 @@ export class CaptionPositionDirective {
167
168
  selector: '[wmCaptionPosition]'
168
169
  }]
169
170
  }], () => [{ type: i0.Injector }, { type: i1.App }], null); })();
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwdGlvbi1wb3NpdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZGVmYXVsdC9zcmMvY2FwdGlvbi1wb3NpdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUM3QixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDOzs7QUFNbEMsTUFBTSxPQUFPLHdCQUF3QjtJQWNqQyxZQUFZLEdBQWEsRUFBRSxHQUFRO1FBSG5DLGtEQUFrRDtRQUMxQyw2QkFBd0IsR0FBYSxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBR3hKLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQzlDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFFTyxRQUFRO1FBQ1osSUFBSSxjQUFjLENBQUM7UUFDbkIsc0dBQXNHO1FBQ3RHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDbkUsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtnQkFD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QUFDO3dCQUN0QixDQUFDOzZCQUFNLENBQUM7NEJBQ0osSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs0QkFDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7d0JBQzNDLENBQUM7b0JBQ0wsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ3RDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLENBQUM7SUFDTCxDQUFDO3lGQWhMUSx3QkFBd0I7b0VBQXhCLHdCQUF3Qjs7aUZBQXhCLHdCQUF3QjtjQUhwQyxTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjthQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3RvciwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBcHB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7Zm9yRWFjaH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5kZWNsYXJlIGNvbnN0ICQ7XG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t3bUNhcHRpb25Qb3NpdGlvbl0nXG59KVxuZXhwb3J0IGNsYXNzIENhcHRpb25Qb3NpdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG4gICAgcHJpdmF0ZSBpbnB1dEVsO1xuICAgIHByaXZhdGUgbmF0aXZlRWw7XG4gICAgcHJpdmF0ZSBjb21wb3NpdGVFbGU7XG4gICAgcHJpdmF0ZSBhcHA6IEFwcDtcbiAgICBwcml2YXRlIGxhYmVsQW5pbWF0aW9uU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgcGxhY2Vob2xkZXI7XG4gICAgcHJpdmF0ZSBfYXR0ck9ic2VydmVyO1xuICAgIHByaXZhdGUgX2lzUGxhY2Vob2xkZXJCb3VuZDtcblxuICAgIC8vIHNraXAgZmxvYXRpbmcgY2FwdGlvbiBmb3IgdGhlIGJlbG93IGZvcm0gZmllbGRzXG4gICAgcHJpdmF0ZSBza2lwRmxvYXRQb3NpdGlvbldpZGdldHM6IHN0cmluZ1tdID0gWydyYWRpb3NldCcsICdjaGVja2JveHNldCcsICdyaWNodGV4dCcsICdzd2l0Y2gnLCAnY2hpcHMnLCAnY2hlY2tib3gnLCAnc2xpZGVyJywgJ3JhdGluZycsICd0b2dnbGUnLCAndXBsb2FkJ107XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBhcHA6IEFwcCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYgPSBpbmouZ2V0KEVsZW1lbnRSZWYpO1xuICAgICAgICB0aGlzLm5hdGl2ZUVsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuYXBwID0gYXBwO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25CbHVyQ2IoKSB7IC8vIG9uIGJsdXIsIHJlbW92ZSBhbmltYXRpb24gYW5kIHBsYWNlaG9sZGVyIGlmIHRoZXJlIGlzIG5vIHZhbHVlXG4gICAgICAgIGxldCBtb2JpbGVJbnB1dFZhbDtcbiAgICAgICAgLy8gSW4gY2FzZSBvZiBtb2JpbGUgZGF0ZSAvIHRpbWUgcGlja2VyIGNoZWNrIGZvciBpbnB1dCBlbGVtZW50J3MgdmFsdWUgd2hpY2ggaGFzICdtb2JpbGUtaW5wdXQnIGNsYXNzXG4gICAgICAgIGlmICh0aGlzLmlucHV0RWwubGVuZ3RoID4gMSAmJiB0aGlzLmlucHV0RWwuaGFzQ2xhc3MoJ21vYmlsZS1pbnB1dCcpKSB7XG4gICAgICAgICAgICBmb3JFYWNoKHRoaXMuaW5wdXRFbCwgKGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCQoZWwpLmhhc0NsYXNzKCdtb2JpbGUtaW5wdXQnKSAmJiBlbC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBtb2JpbGVJbnB1dFZhbCA9IGVsLnZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5pbnB1dEVsLnZhbCgpICYmICFtb2JpbGVJbnB1dFZhbCkge1xuICAgICAgICAgICAgdGhpcy5jb21wb3NpdGVFbGUuY2xhc3NMaXN0LnJlbW92ZSgnZmxvYXQtYWN0aXZlJyk7XG4gICAgICAgICAgICB0aGlzLmlucHV0RWwucmVtb3ZlQXR0cigncGxhY2Vob2xkZXInKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25Gb2N1c0NiKCkgeyAvLyAgb24gZm9jdXMsIGFkZCBhbmltYXRpb24gY2xhc3MgYW5kIHRoZSBwbGFjZSBob2xkZXJcbiAgICAgICAgdGhpcy5jb21wb3NpdGVFbGUuY2xhc3NMaXN0LmFkZCgnZmxvYXQtYWN0aXZlJyk7XG4gICAgICAgIHRoaXMuaW5wdXRFbC5hdHRyKCdwbGFjZWhvbGRlcicsIHRoaXMucGxhY2Vob2xkZXIpO1xuICAgIH1cblxuICAgIC8vIEZvciBzZWxlY3Qgd2lkZ2V0LCBkaXNwbGF5IHBsYWNlaG9sZGVyIG9ubHkgb24gZm9jdXMgZWxzZSByZW1vdmUgdGhlIHRleHQgb2YgdGhlIG9wdGlvbiBzZWxlY3RlZC5cbiAgICBwcml2YXRlIGNoZWNrRm9yU2VsZWN0UGxhY2Vob2xkZXIoKSB7XG4gICAgICAgIGlmICgkKHRoaXMubmF0aXZlRWwpLmZpbmQoJ3NlbGVjdCBvcHRpb246c2VsZWN0ZWQnKS50ZXh0KCkgJiYgISQodGhpcy5uYXRpdmVFbCkuZmluZCgnc2VsZWN0JykuaXMoJzpmb2N1cycpICYmXG4gICAgICAgICAgICAhJCh0aGlzLmlucHV0RWwuY2xvc2VzdCgnW3dpZGdldC1pZF0nKSkuYXR0cignZGF0YXZhbHVlJykpIHtcbiAgICAgICAgICAgICQodGhpcy5uYXRpdmVFbCkuZmluZCgnc2VsZWN0IG9wdGlvbjpzZWxlY3RlZCcpLnRleHQoJycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0VmFsdWVBbmltYXRpb24oKSB7IC8vIHNldCBhbmltYXRpb24gd2hlbiBkZWZhdWx0IHZhbHVlcyBhcmUgcHJlc2VudFxuICAgICAgICAvLyByZW1vdmUgcGxhY2Vob2xkZXIgd2hlbiB0aGUgaW5wdXQgZWwgaGFzIHBsYWNlaG9sZGVyIGFuZCB0aGUgcGxhY2Vob2xkZXIgaXMgbm90IGJvdW5kIHRvIGFueSB2YXJpYWJsZVxuICAgICAgICBpZiAoIXRoaXMuX2lzUGxhY2Vob2xkZXJCb3VuZCAmJiB0aGlzLmlucHV0RWwuYXR0cigncGxhY2Vob2xkZXInKSkge1xuICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMuaW5wdXRFbC5hdHRyKCdwbGFjZWhvbGRlcicpO1xuICAgICAgICAgICAgdGhpcy5pbnB1dEVsLnJlbW92ZUF0dHIoJ3BsYWNlaG9sZGVyJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEbyBub3Qgc2hvdyBwbGFjZWhvbGRlciBhcyBzZWxlY3RlZCBieSBkZWZhdWx0XG4gICAgICAgIHRoaXMuY2hlY2tGb3JTZWxlY3RQbGFjZWhvbGRlcigpO1xuXG4gICAgICAgIC8vIGNoZWNrIGZvciBkYXRhdmFsdWUgYXR0cmlidXRlIGluIGNvbXBvc2l0ZSBlbGVtZW50IGFuZCBkZWZhdWx0dmFsdWUgYXR0cmlidXRlIGluIGZvcm0gZmllbGQgZWxlbWVudFxuICAgICAgICAvLyBjaGVjayBmb3IgZGF0YXZhbHVlLmJpbmQgYXR0cmlidXRlIHRvIHNlZSB3aGV0aGVyIGRlZmF1bHQgdmFsdWUgaXMgYmluZGVkIHZpYSBleHByZXNzaW9uIG9yIGEgdmFyaWFibGVcbiAgICAgICAgLy8gY2hlY2sgZm9yIGRpc3BsYXlmb3JtYXQgYXR0cmlidXRlLCBhcyBpbiBmb3JtIGZpZWxkcyB1c2VyIGNhbiBzZXQgZGlzcGxheSBmb3JtYXQgdG8gdGhlIGZpZWxkXG4gICAgICAgIC8vIGNoZWNrIGZvciBmb3JtZGF0YS9iaW5kZm9ybWRhdGEgYXR0cmlidXRlIHRvIHNlZSBpZiBhbnkgZGVmYXVsdCB2YWx1ZSBpcyBiaW5kZWQgdG8gdGhlIGZvcm1cbiAgICAgICAgLy8gY2hlY2sgZm9yIHNlbGVjdCB0YWcgd2l0aCBtdWx0aXBsZSBhdHRyaWJ1dGUgZW5hYmxlZFxuXG4gICAgICAgIGlmICgodGhpcy5pbnB1dEVsLnZhbCgpICYmICF0aGlzLmlucHV0RWwuaXMoJ3NlbGVjdCcpKSB8fCAkKHRoaXMuaW5wdXRFbC5jbG9zZXN0KCdbd2lkZ2V0LWlkXScpKS5hdHRyKCdkYXRhdmFsdWUnKSB8fCAkKHRoaXMuaW5wdXRFbC5wYXJlbnQoJ1t3aWRnZXQtaWRdJykpLmF0dHIoJ2RhdGF2YWx1ZS5iaW5kJykgfHwgdGhpcy5uYXRpdmVFbC5nZXRBdHRyaWJ1dGUoJ2RlZmF1bHR2YWx1ZScpXG4gICAgICAgICAgICB8fCB0aGlzLm5hdGl2ZUVsLmdldEF0dHJpYnV0ZSgnZGlzcGxheWZvcm1hdCcpIHx8ICQodGhpcy5uYXRpdmVFbCkuZmluZCgnc2VsZWN0IG9wdGlvbjpzZWxlY3RlZCcpLnRleHQoKSB8fCAkKHRoaXMubmF0aXZlRWwpLmZpbmQoJ3NlbGVjdCcpLmF0dHIoJ211bHRpcGxlJykpIHtcbiAgICAgICAgICAgIHRoaXMuY29tcG9zaXRlRWxlLmNsYXNzTGlzdC5hZGQoJ2Zsb2F0LWFjdGl2ZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2JzZXJ2aW5nIHBsYWNlaG9sZGVyIGF0dHJpYnV0ZSBjaGFuZ2Ugb24gRE9NIGluc3RlYWQgb2YgaGF2aW5nIGEgcHJvcENoYW5nZUhhbmRsZXIgZm5cbiAgICAgKiBGb3IgY29tcG9zaXRlIHdpZGdldHMgcHJvcGVydHljaGFuZ2VoYW5kbGVyIGZ1bmN0aW9uIGlzIGludm9rZWQgYXQgaW5kZXBlbmRlbnQgd2lkZ2V0cyB3aGVyZSBhcyB0aGUgZGlyZWN0aXZlIGlzIGF0IGNvbXBvc2l0ZSBsZXZlbFxuICAgICAqL1xuICAgIHByaXZhdGUgb2JzZXJ2ZUZvclBsYWNlaG9sZGVyQXR0ckNoYW5nZSgpIHtcbiAgICAgICAgdGhpcy5fYXR0ck9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIobXV0YXRpb25zID0+IHtcbiAgICAgICAgICAgIG11dGF0aW9ucy5mb3JFYWNoKChtdXRhdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lID09PSAncGxhY2Vob2xkZXInICYmIHRoaXMuaW5wdXRFbC5hdHRyKCdwbGFjZWhvbGRlcicpICYmICF0aGlzLmNvbXBvc2l0ZUVsZS5jbGFzc0xpc3QuY29udGFpbnMoJ2Zsb2F0LWFjdGl2ZScpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLmlucHV0RWwuYXR0cigncGxhY2Vob2xkZXInKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dEVsLnJlbW92ZUF0dHIoJ3BsYWNlaG9sZGVyJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBjb25maWcgPSB7IGF0dHJpYnV0ZXM6IHRydWUsIGNoaWxkTGlzdDogZmFsc2UsIGNoYXJhY3RlckRhdGE6IGZhbHNlIH07XG4gICAgICAgIHRoaXMuX2F0dHJPYnNlcnZlci5vYnNlcnZlKHRoaXMuaW5wdXRFbFswXSwgY29uZmlnKTtcbiAgICB9XG5cbiAgICAvLyB3aGVuIGEgZm9ybSBpcyByaWdodCBhbGlnbmVkIGFuZCBoYXZlIGlucHV0LWdyb3VwLWJ0bidzIGxpa2UgZGF0ZSBwaWNrZXIsIHRpbWUgcGlja2VyIGV0Yy4gYWRqdXN0IHRoZSBjc3MgdG8gbm90IG92ZXJsYXAgdGhlIGxhYmVsIG9uIHRoZSBpY29uXG4gICAgcHJpdmF0ZSBjaGVja0ZvclJpZ2h0QWxpZ25lZEZvcm0oKSB7XG4gICAgICAgIGNvbnN0ICRjb21wb3NpdGVFbGUgPSAkKHRoaXMuY29tcG9zaXRlRWxlKTtcbiAgICAgICAgaWYgKCRjb21wb3NpdGVFbGUuY2xvc2VzdCgnLmFsaWduLXJpZ2h0JykubGVuZ3RoICYmICRjb21wb3NpdGVFbGUuZmluZCgnLmlucHV0LWdyb3VwLWJ0bicpLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgJGxhYmVsID0gJGNvbXBvc2l0ZUVsZS5maW5kKCdsYWJlbCcpO1xuICAgICAgICAgICAgaWYgKCRjb21wb3NpdGVFbGUuZmluZCgnW3dtZGF0ZXRpbWVdJykubGVuZ3RoKSB7IC8vIGZvciBkYXRldGltZSBwaWNrZXIsIGFzIHRoZXJlIHdpbGwgYmUgMiBpY29ucyBjc3MgaXMgZGlmZmVyZW50XG4gICAgICAgICAgICAgICAgJGxhYmVsLmFkZENsYXNzKCdpbnB1dC1ncnAtZHQtaWNvbicpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAkbGFiZWwuYWRkQ2xhc3MoJ2lucHV0LWdycC1pY29uJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMuY29tcG9zaXRlRWxlID0gdGhpcy5uYXRpdmVFbDtcbiAgICAgICAgY29uc3Qgd2lkZ2V0ID0gdGhpcy5uYXRpdmVFbC53aWRnZXQ7XG4gICAgICAgIGxldCBjYXB0aW9uUG9zaXRpb246IHN0cmluZyA9IHdpZGdldC4kYXR0cnMuZ2V0KCdjYXB0aW9ucG9zaXRpb24nKTtcbiAgICAgICAgaWYgKHdpZGdldC5mb3JtKSB7XG4gICAgICAgICAgICBjYXB0aW9uUG9zaXRpb24gPSB3aWRnZXQuZm9ybS4kYXR0cnMuZ2V0KCdjYXB0aW9ucG9zaXRpb24nKTtcbiAgICAgICAgICAgIHRoaXMuY29tcG9zaXRlRWxlID0gdGhpcy5uYXRpdmVFbC5xdWVyeVNlbGVjdG9yKCcuYXBwLWNvbXBvc2l0ZS13aWRnZXQnKTtcbiAgICAgICAgICAgIHRoaXMuX2lzUGxhY2Vob2xkZXJCb3VuZCA9IHRoaXMubmF0aXZlRWwuZ2V0QXR0cmlidXRlKCdwbGFjZWhvbGRlci5iaW5kJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhcHRpb25Qb3NpdGlvbiA9PT0gJ2Zsb2F0aW5nJykge1xuICAgICAgICAgICAgaWYgKHdpZGdldC5mb3JtKSB7IC8vIGZvciBmb3JtLWZpZWxkcyByZW1vdmUgY2FwdGlvbi1mbG9hdGluZyBhbmQgcmVwbGFjZSBpdCB3aXRoIGNhcHRpb24tZmxvYXQgb3IgY2FwdGlvbi10b3BcbiAgICAgICAgICAgICAgICBjb25zdCB3aWRnZXRUeXBlOiBzdHJpbmcgPSB0aGlzLm5hdGl2ZUVsLmdldEF0dHJpYnV0ZSgnd2lkZ2V0dHlwZScpOyAvLyBmZXRjaGVzIHRoZSBmb3JtIGZpZWxkIHR5cGVcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5za2lwRmxvYXRQb3NpdGlvbldpZGdldHMuaW5kZXhPZih3aWRnZXRUeXBlKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9zaXRlRWxlLmNsYXNzTGlzdC5yZW1vdmUoJ2NhcHRpb24tZmxvYXRpbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb3NpdGVFbGUuY2xhc3NMaXN0LmFkZCgnY2FwdGlvbi10b3AnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja0ZvclJpZ2h0QWxpZ25lZEZvcm0oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbCA9ICQodGhpcy5uYXRpdmVFbCkuZmluZCgnaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEnKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5faXNQbGFjZWhvbGRlckJvdW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faXNQbGFjZWhvbGRlckJvdW5kID0gdGhpcy5pbnB1dEVsLmNsb3Nlc3QoJ1t3aWRnZXQtaWRdJykuYXR0cigncGxhY2Vob2xkZXIuYmluZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gY2FsbCB0aGUgYmVsb3cgZnVuY3Rpb24gdG8gYXBwbHkgZmxvYXQtYWN0aXZlIGNsYXNzIHdoZW4gdGhlcmUgYXJlIGRlZmF1bHQgdmFsdWVzIHRvIHRoZSBmaWVsZHNcbiAgICAgICAgICAgIHNldFRpbWVvdXQodGhpcy5zZXREZWZhdWx0VmFsdWVBbmltYXRpb24uYmluZCh0aGlzKSwgMCk7XG5cbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbC5mb2N1cyh0aGlzLm9uRm9jdXNDYi5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbC5ibHVyKHRoaXMub25CbHVyQ2IuYmluZCh0aGlzKSk7XG5cbiAgICAgICAgICAgIC8vIG9ic2VydmUgZm9yIHBsYWNlaG9sZGVyIGF0dHJpYnV0ZSBjaGFuZ2Ugd2hlbiBwbGFjZWhvbGRlciBpcyBib3VuZCB2aWEgZGIgdmFyaWFibGUgb3IgYW4gZXhwcmVzc2lvblxuICAgICAgICAgICAgaWYgKHRoaXMuX2lzUGxhY2Vob2xkZXJCb3VuZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub2JzZXJ2ZUZvclBsYWNlaG9sZGVyQXR0ckNoYW5nZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gY2FwdGlvblBvc2l0aW9uQW5pbWF0ZSBpcyBvbmx5IG5vdGlmaWVkIGZvciBkYXRlLXRpbWUsIHRpbWUgYW5kIHNlYXJjaCB3aWRnZXRzIGFzIGlucHV0IGVsIGlzIG5vdCB1cGRhdGVkIHdpdGggdmFsdWUgb24gc2VsZWN0aW9uIG9mIGRyb3Bkb3duL3BvcHVwc1xuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmxhYmVsQW5pbWF0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5hcHAuc3Vic2NyaWJlKCdjYXB0aW9uUG9zaXRpb25BbmltYXRlJywgKGRhdGEpID0+IHtcbiAgICAgICAgICAgIC8vIGRpc3BsYXlWYWwgaXMgdHJ1ZSB3aGVuIHRoZXJlIGlzIGEgdmFsdWUgZW50ZXJlZCBpbiB0aGUgaW5wdXQgZmllbGRcbiAgICAgICAgICAgIC8vIEluIGNhc2Ugb2YgZm9ybSBmaWVsZHMsIHdoZW4gdGhlIGZpZWxkIGlzIGluIGZvY3VzLCBpc0ZvY3VzZWQgd2lsbCBiZSBzZXQgYXMgdHJ1ZVxuICAgICAgICAgICAgLy8gaXNTZWxlY3RNdWx0aXBsZSBpcyBzZXQgdG8gdHJ1ZSB3aGVuIGZvciBzZWxlY3Qgd2lkZ2V0LCBtdWx0aXBsZSBvcHRpb24gaXMgZW5hYmxlZFxuICAgICAgICAgICAgLy8gQ2hlY2tpbmcgaW5wdXRFbCBmb2N1cyAtIHdoZW4gZm9ybSBpcyByZXByZXNlbnRlZCBhcyBkaWFsb2cgYW5kIHRoZSBmaXJzdCBmaWVsZCBpcyBhdXRvbWF0aWNhbGx5IGluIGZvY3VzXG4gICAgICAgICAgICBjb25zdCBpc0lucHV0RWxGb2N1c2VkID0gdGhpcy5pbnB1dEVsICYmIHRoaXMuaW5wdXRFbC5pcygnOmZvY3VzJyk7XG4gICAgICAgICAgICBpZiAoZGF0YS5kaXNwbGF5VmFsIHx8IGRhdGEuaXNGb2N1c2VkIHx8IGRhdGEuaXNTZWxlY3RNdWx0aXBsZSB8fCBpc0lucHV0RWxGb2N1c2VkKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5uYXRpdmVFbC5hZGRDbGFzcygnZmxvYXQtYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgaWYgKCFkYXRhLmRpc3BsYXlWYWwgJiYgaXNJbnB1dEVsRm9jdXNlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0RWwuYXR0cigncGxhY2Vob2xkZXInLCB0aGlzLnBsYWNlaG9sZGVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEubmF0aXZlRWwucmVtb3ZlQ2xhc3MoJ2Zsb2F0LWFjdGl2ZScpO1xuICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBwbGFjZWhvbGRlciBvbiByZW1vdmluZyBmbG9hdC1hY3RpdmUsIGlmIG5vdCB0aGUgbGFiZWwgYW5kIHBsYWNlaG9sZGVyIGFyZSBjb2xsaWRlZFxuICAgICAgICAgICAgICAgIC8vIGJlZm9yZSBwbGFjZWhvbGRlciBpcyByZW1vdmVkIGFzc2lnbiBpdCB0byB0aGUgcGxhY2Vob2xkZXIgdmFyaWFibGVcbiAgICAgICAgICAgICAgICAvLyBjaGVjayBmb3IgcGxhY2Vob2xkZXIgaW4gaW5wdXRlbCBhbmQgc2VsZWN0ZWxcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnB1dEVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdEVsID0gdGhpcy5pbnB1dEVsLmZpbmQoJ29wdGlvbjpmaXJzdCcpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnB1dEVsLmF0dHIoJ3BsYWNlaG9sZGVyJykgfHwgc2VsZWN0RWwudGV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0RWwubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0RWwudGV4dCgnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLmlucHV0RWwuYXR0cigncGxhY2Vob2xkZXInKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0RWwucmVtb3ZlQXR0cigncGxhY2Vob2xkZXInKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLmxhYmVsQW5pbWF0aW9uU3Vic2NyaXB0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmxhYmVsQW5pbWF0aW9uU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2F0dHJPYnNlcnZlcikge1xuICAgICAgICAgICAgdGhpcy5fYXR0ck9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwdGlvbi1wb3NpdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvaW5wdXQvZGVmYXVsdC9zcmMvY2FwdGlvbi1wb3NpdGlvbi5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDaEcsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUM3QixPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDOzs7QUFNbEMsTUFBTSxPQUFPLHdCQUF3QjtJQWNqQyxZQUFZLEdBQWEsRUFBRSxHQUFRO1FBSG5DLGtEQUFrRDtRQUMxQyw2QkFBd0IsR0FBYSxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBR3hKLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQzlDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFFTyxRQUFRO1FBQ1osSUFBSSxjQUFjLENBQUM7UUFDbkIsc0dBQXNHO1FBQ3RHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDbkUsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtnQkFD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R0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs0QkFDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7d0JBQzNDLENBQUM7b0JBQ0wsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ3RDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLENBQUM7SUFDTCxDQUFDO3lGQWpMUSx3QkFBd0I7b0VBQXhCLHdCQUF3Qjs7aUZBQXhCLHdCQUF3QjtjQUhwQyxTQUFTO2VBQUM7Z0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjthQUNsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3RvciwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBcHB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7Zm9yRWFjaH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5kZWNsYXJlIGNvbnN0ICQ7XG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1t3bUNhcHRpb25Qb3NpdGlvbl0nXG59KVxuZXhwb3J0IGNsYXNzIENhcHRpb25Qb3NpdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG4gICAgcHJpdmF0ZSBpbnB1dEVsO1xuICAgIHByaXZhdGUgbmF0aXZlRWw7XG4gICAgcHJpdmF0ZSBjb21wb3NpdGVFbGU7XG4gICAgcHJpdmF0ZSBhcHA6IEFwcDtcbiAgICBwcml2YXRlIGxhYmVsQW5pbWF0aW9uU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgcGxhY2Vob2xkZXI7XG4gICAgcHJpdmF0ZSBfYXR0ck9ic2VydmVyO1xuICAgIHByaXZhdGUgX2lzUGxhY2Vob2xkZXJCb3VuZDtcblxuICAgIC8vIHNraXAgZmxvYXRpbmcgY2FwdGlvbiBmb3IgdGhlIGJlbG93IGZvcm0gZmllbGRzXG4gICAgcHJpdmF0ZSBza2lwRmxvYXRQb3NpdGlvbldpZGdldHM6IHN0cmluZ1tdID0gWydyYWRpb3NldCcsICdjaGVja2JveHNldCcsICdyaWNodGV4dCcsICdzd2l0Y2gnLCAnY2hpcHMnLCAnY2hlY2tib3gnLCAnc2xpZGVyJywgJ3JhdGluZycsICd0b2dnbGUnLCAndXBsb2FkJ107XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBhcHA6IEFwcCkge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYgPSBpbmouZ2V0KEVsZW1lbnRSZWYpO1xuICAgICAgICB0aGlzLm5hdGl2ZUVsID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuYXBwID0gYXBwO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25CbHVyQ2IoKSB7IC8vIG9uIGJsdXIsIHJlbW92ZSBhbmltYXRpb24gYW5kIHBsYWNlaG9sZGVyIGlmIHRoZXJlIGlzIG5vIHZhbHVlXG4gICAgICAgIGxldCBtb2JpbGVJbnB1dFZhbDtcbiAgICAgICAgLy8gSW4gY2FzZSBvZiBtb2JpbGUgZGF0ZSAvIHRpbWUgcGlja2VyIGNoZWNrIGZvciBpbnB1dCBlbGVtZW50J3MgdmFsdWUgd2hpY2ggaGFzICdtb2JpbGUtaW5wdXQnIGNsYXNzXG4gICAgICAgIGlmICh0aGlzLmlucHV0RWwubGVuZ3RoID4gMSAmJiB0aGlzLmlucHV0RWwuaGFzQ2xhc3MoJ21vYmlsZS1pbnB1dCcpKSB7XG4gICAgICAgICAgICBmb3JFYWNoKHRoaXMuaW5wdXRFbCwgKGVsKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCQoZWwpLmhhc0NsYXNzKCdtb2JpbGUtaW5wdXQnKSAmJiBlbC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBtb2JpbGVJbnB1dFZhbCA9IGVsLnZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5pbnB1dEVsLnZhbCgpICYmICFtb2JpbGVJbnB1dFZhbCkge1xuICAgICAgICAgICAgdGhpcy5jb21wb3NpdGVFbGUuY2xhc3NMaXN0LnJlbW92ZSgnZmxvYXQtYWN0aXZlJyk7XG4gICAgICAgICAgICB0aGlzLmlucHV0RWwucmVtb3ZlQXR0cigncGxhY2Vob2xkZXInKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25Gb2N1c0NiKCkgeyAvLyAgb24gZm9jdXMsIGFkZCBhbmltYXRpb24gY2xhc3MgYW5kIHRoZSBwbGFjZSBob2xkZXJcbiAgICAgICAgdGhpcy5jb21wb3NpdGVFbGUuY2xhc3NMaXN0LmFkZCgnZmxvYXQtYWN0aXZlJyk7XG4gICAgICAgIHRoaXMuaW5wdXRFbC5hdHRyKCdwbGFjZWhvbGRlcicsIHRoaXMucGxhY2Vob2xkZXIpO1xuICAgIH1cblxuICAgIC8vIEZvciBzZWxlY3Qgd2lkZ2V0LCBkaXNwbGF5IHBsYWNlaG9sZGVyIG9ubHkgb24gZm9jdXMgZWxzZSByZW1vdmUgdGhlIHRleHQgb2YgdGhlIG9wdGlvbiBzZWxlY3RlZC5cbiAgICBwcml2YXRlIGNoZWNrRm9yU2VsZWN0UGxhY2Vob2xkZXIoKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEVsUGxhY2Vob2xkZXJPcHRpb24gPSB0aGlzLm5hdGl2ZUVsLnF1ZXJ5U2VsZWN0b3IoJyNwbGFjZWhvbGRlck9wdGlvbicpO1xuICAgICAgICBpZiAoc2VsZWN0RWxQbGFjZWhvbGRlck9wdGlvbiAmJiBzZWxlY3RFbFBsYWNlaG9sZGVyT3B0aW9uLnRleHRDb250ZW50ICYmICEkKHRoaXMubmF0aXZlRWwpLmZpbmQoJ3NlbGVjdCcpLmlzKCc6Zm9jdXMnKSAmJlxuICAgICAgICAgICAgISQodGhpcy5pbnB1dEVsLmNsb3Nlc3QoJ1t3aWRnZXQtaWRdJykpLmF0dHIoJ2RhdGF2YWx1ZScpKSB7XG4gICAgICAgICAgICBzZWxlY3RFbFBsYWNlaG9sZGVyT3B0aW9uLnRleHRDb250ZW50ID0gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERlZmF1bHRWYWx1ZUFuaW1hdGlvbigpIHsgLy8gc2V0IGFuaW1hdGlvbiB3aGVuIGRlZmF1bHQgdmFsdWVzIGFyZSBwcmVzZW50XG4gICAgICAgIC8vIHJlbW92ZSBwbGFjZWhvbGRlciB3aGVuIHRoZSBpbnB1dCBlbCBoYXMgcGxhY2Vob2xkZXIgYW5kIHRoZSBwbGFjZWhvbGRlciBpcyBub3QgYm91bmQgdG8gYW55IHZhcmlhYmxlXG4gICAgICAgIGlmICghdGhpcy5faXNQbGFjZWhvbGRlckJvdW5kICYmIHRoaXMuaW5wdXRFbC5hdHRyKCdwbGFjZWhvbGRlcicpKSB7XG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5pbnB1dEVsLmF0dHIoJ3BsYWNlaG9sZGVyJyk7XG4gICAgICAgICAgICB0aGlzLmlucHV0RWwucmVtb3ZlQXR0cigncGxhY2Vob2xkZXInKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERvIG5vdCBzaG93IHBsYWNlaG9sZGVyIGFzIHNlbGVjdGVkIGJ5IGRlZmF1bHRcbiAgICAgICAgdGhpcy5jaGVja0ZvclNlbGVjdFBsYWNlaG9sZGVyKCk7XG5cbiAgICAgICAgLy8gY2hlY2sgZm9yIGRhdGF2YWx1ZSBhdHRyaWJ1dGUgaW4gY29tcG9zaXRlIGVsZW1lbnQgYW5kIGRlZmF1bHR2YWx1ZSBhdHRyaWJ1dGUgaW4gZm9ybSBmaWVsZCBlbGVtZW50XG4gICAgICAgIC8vIGNoZWNrIGZvciBkYXRhdmFsdWUuYmluZCBhdHRyaWJ1dGUgdG8gc2VlIHdoZXRoZXIgZGVmYXVsdCB2YWx1ZSBpcyBiaW5kZWQgdmlhIGV4cHJlc3Npb24gb3IgYSB2YXJpYWJsZVxuICAgICAgICAvLyBjaGVjayBmb3IgZGlzcGxheWZvcm1hdCBhdHRyaWJ1dGUsIGFzIGluIGZvcm0gZmllbGRzIHVzZXIgY2FuIHNldCBkaXNwbGF5IGZvcm1hdCB0byB0aGUgZmllbGRcbiAgICAgICAgLy8gY2hlY2sgZm9yIGZvcm1kYXRhL2JpbmRmb3JtZGF0YSBhdHRyaWJ1dGUgdG8gc2VlIGlmIGFueSBkZWZhdWx0IHZhbHVlIGlzIGJpbmRlZCB0byB0aGUgZm9ybVxuICAgICAgICAvLyBjaGVjayBmb3Igc2VsZWN0IHRhZyB3aXRoIG11bHRpcGxlIGF0dHJpYnV0ZSBlbmFibGVkXG5cbiAgICAgICAgaWYgKCh0aGlzLmlucHV0RWwudmFsKCkgJiYgIXRoaXMuaW5wdXRFbC5pcygnc2VsZWN0JykpIHx8ICQodGhpcy5pbnB1dEVsLmNsb3Nlc3QoJ1t3aWRnZXQtaWRdJykpLmF0dHIoJ2RhdGF2YWx1ZScpIHx8ICQodGhpcy5pbnB1dEVsLnBhcmVudCgnW3dpZGdldC1pZF0nKSkuYXR0cignZGF0YXZhbHVlLmJpbmQnKSB8fCB0aGlzLm5hdGl2ZUVsLmdldEF0dHJpYnV0ZSgnZGVmYXVsdHZhbHVlJylcbiAgICAgICAgICAgIHx8IHRoaXMubmF0aXZlRWwuZ2V0QXR0cmlidXRlKCdkaXNwbGF5Zm9ybWF0JykgfHwgJCh0aGlzLm5hdGl2ZUVsKS5maW5kKCdzZWxlY3Qgb3B0aW9uOnNlbGVjdGVkJykudGV4dCgpIHx8ICQodGhpcy5uYXRpdmVFbCkuZmluZCgnc2VsZWN0JykuYXR0cignbXVsdGlwbGUnKSkge1xuICAgICAgICAgICAgdGhpcy5jb21wb3NpdGVFbGUuY2xhc3NMaXN0LmFkZCgnZmxvYXQtYWN0aXZlJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPYnNlcnZpbmcgcGxhY2Vob2xkZXIgYXR0cmlidXRlIGNoYW5nZSBvbiBET00gaW5zdGVhZCBvZiBoYXZpbmcgYSBwcm9wQ2hhbmdlSGFuZGxlciBmblxuICAgICAqIEZvciBjb21wb3NpdGUgd2lkZ2V0cyBwcm9wZXJ0eWNoYW5nZWhhbmRsZXIgZnVuY3Rpb24gaXMgaW52b2tlZCBhdCBpbmRlcGVuZGVudCB3aWRnZXRzIHdoZXJlIGFzIHRoZSBkaXJlY3RpdmUgaXMgYXQgY29tcG9zaXRlIGxldmVsXG4gICAgICovXG4gICAgcHJpdmF0ZSBvYnNlcnZlRm9yUGxhY2Vob2xkZXJBdHRyQ2hhbmdlKCkge1xuICAgICAgICB0aGlzLl9hdHRyT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihtdXRhdGlvbnMgPT4ge1xuICAgICAgICAgICAgbXV0YXRpb25zLmZvckVhY2goKG11dGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKG11dGF0aW9uLmF0dHJpYnV0ZU5hbWUgPT09ICdwbGFjZWhvbGRlcicgJiYgdGhpcy5pbnB1dEVsLmF0dHIoJ3BsYWNlaG9sZGVyJykgJiYgIXRoaXMuY29tcG9zaXRlRWxlLmNsYXNzTGlzdC5jb250YWlucygnZmxvYXQtYWN0aXZlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMuaW5wdXRFbC5hdHRyKCdwbGFjZWhvbGRlcicpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0RWwucmVtb3ZlQXR0cigncGxhY2Vob2xkZXInKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHsgYXR0cmlidXRlczogdHJ1ZSwgY2hpbGRMaXN0OiBmYWxzZSwgY2hhcmFjdGVyRGF0YTogZmFsc2UgfTtcbiAgICAgICAgdGhpcy5fYXR0ck9ic2VydmVyLm9ic2VydmUodGhpcy5pbnB1dEVsWzBdLCBjb25maWcpO1xuICAgIH1cblxuICAgIC8vIHdoZW4gYSBmb3JtIGlzIHJpZ2h0IGFsaWduZWQgYW5kIGhhdmUgaW5wdXQtZ3JvdXAtYnRuJ3MgbGlrZSBkYXRlIHBpY2tlciwgdGltZSBwaWNrZXIgZXRjLiBhZGp1c3QgdGhlIGNzcyB0byBub3Qgb3ZlcmxhcCB0aGUgbGFiZWwgb24gdGhlIGljb25cbiAgICBwcml2YXRlIGNoZWNrRm9yUmlnaHRBbGlnbmVkRm9ybSgpIHtcbiAgICAgICAgY29uc3QgJGNvbXBvc2l0ZUVsZSA9ICQodGhpcy5jb21wb3NpdGVFbGUpO1xuICAgICAgICBpZiAoJGNvbXBvc2l0ZUVsZS5jbG9zZXN0KCcuYWxpZ24tcmlnaHQnKS5sZW5ndGggJiYgJGNvbXBvc2l0ZUVsZS5maW5kKCcuaW5wdXQtZ3JvdXAtYnRuJykubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCAkbGFiZWwgPSAkY29tcG9zaXRlRWxlLmZpbmQoJ2xhYmVsJyk7XG4gICAgICAgICAgICBpZiAoJGNvbXBvc2l0ZUVsZS5maW5kKCdbd21kYXRldGltZV0nKS5sZW5ndGgpIHsgLy8gZm9yIGRhdGV0aW1lIHBpY2tlciwgYXMgdGhlcmUgd2lsbCBiZSAyIGljb25zIGNzcyBpcyBkaWZmZXJlbnRcbiAgICAgICAgICAgICAgICAkbGFiZWwuYWRkQ2xhc3MoJ2lucHV0LWdycC1kdC1pY29uJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICRsYWJlbC5hZGRDbGFzcygnaW5wdXQtZ3JwLWljb24nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5jb21wb3NpdGVFbGUgPSB0aGlzLm5hdGl2ZUVsO1xuICAgICAgICBjb25zdCB3aWRnZXQgPSB0aGlzLm5hdGl2ZUVsLndpZGdldDtcbiAgICAgICAgbGV0IGNhcHRpb25Qb3NpdGlvbjogc3RyaW5nID0gd2lkZ2V0LiRhdHRycy5nZXQoJ2NhcHRpb25wb3NpdGlvbicpO1xuICAgICAgICBpZiAod2lkZ2V0LmZvcm0pIHtcbiAgICAgICAgICAgIGNhcHRpb25Qb3NpdGlvbiA9IHdpZGdldC5mb3JtLiRhdHRycy5nZXQoJ2NhcHRpb25wb3NpdGlvbicpO1xuICAgICAgICAgICAgdGhpcy5jb21wb3NpdGVFbGUgPSB0aGlzLm5hdGl2ZUVsLnF1ZXJ5U2VsZWN0b3IoJy5hcHAtY29tcG9zaXRlLXdpZGdldCcpO1xuICAgICAgICAgICAgdGhpcy5faXNQbGFjZWhvbGRlckJvdW5kID0gdGhpcy5uYXRpdmVFbC5nZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyLmJpbmQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FwdGlvblBvc2l0aW9uID09PSAnZmxvYXRpbmcnKSB7XG4gICAgICAgICAgICBpZiAod2lkZ2V0LmZvcm0pIHsgLy8gZm9yIGZvcm0tZmllbGRzIHJlbW92ZSBjYXB0aW9uLWZsb2F0aW5nIGFuZCByZXBsYWNlIGl0IHdpdGggY2FwdGlvbi1mbG9hdCBvciBjYXB0aW9uLXRvcFxuICAgICAgICAgICAgICAgIGNvbnN0IHdpZGdldFR5cGU6IHN0cmluZyA9IHRoaXMubmF0aXZlRWwuZ2V0QXR0cmlidXRlKCd3aWRnZXR0eXBlJyk7IC8vIGZldGNoZXMgdGhlIGZvcm0gZmllbGQgdHlwZVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNraXBGbG9hdFBvc2l0aW9uV2lkZ2V0cy5pbmRleE9mKHdpZGdldFR5cGUpID4gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21wb3NpdGVFbGUuY2xhc3NMaXN0LnJlbW92ZSgnY2FwdGlvbi1mbG9hdGluZycpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvc2l0ZUVsZS5jbGFzc0xpc3QuYWRkKCdjYXB0aW9uLXRvcCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrRm9yUmlnaHRBbGlnbmVkRm9ybSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbnB1dEVsID0gJCh0aGlzLm5hdGl2ZUVsKS5maW5kKCdpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYScpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1BsYWNlaG9sZGVyQm91bmQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9pc1BsYWNlaG9sZGVyQm91bmQgPSB0aGlzLmlucHV0RWwuY2xvc2VzdCgnW3dpZGdldC1pZF0nKS5hdHRyKCdwbGFjZWhvbGRlci5iaW5kJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBjYWxsIHRoZSBiZWxvdyBmdW5jdGlvbiB0byBhcHBseSBmbG9hdC1hY3RpdmUgY2xhc3Mgd2hlbiB0aGVyZSBhcmUgZGVmYXVsdCB2YWx1ZXMgdG8gdGhlIGZpZWxkc1xuICAgICAgICAgICAgc2V0VGltZW91dCh0aGlzLnNldERlZmF1bHRWYWx1ZUFuaW1hdGlvbi5iaW5kKHRoaXMpLCAwKTtcblxuICAgICAgICAgICAgdGhpcy5pbnB1dEVsLmZvY3VzKHRoaXMub25Gb2N1c0NiLmJpbmQodGhpcykpO1xuICAgICAgICAgICAgdGhpcy5pbnB1dEVsLmJsdXIodGhpcy5vbkJsdXJDYi5iaW5kKHRoaXMpKTtcblxuICAgICAgICAgICAgLy8gb2JzZXJ2ZSBmb3IgcGxhY2Vob2xkZXIgYXR0cmlidXRlIGNoYW5nZSB3aGVuIHBsYWNlaG9sZGVyIGlzIGJvdW5kIHZpYSBkYiB2YXJpYWJsZSBvciBhbiBleHByZXNzaW9uXG4gICAgICAgICAgICBpZiAodGhpcy5faXNQbGFjZWhvbGRlckJvdW5kKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vYnNlcnZlRm9yUGxhY2Vob2xkZXJBdHRyQ2hhbmdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBjYXB0aW9uUG9zaXRpb25BbmltYXRlIGlzIG9ubHkgbm90aWZpZWQgZm9yIGRhdGUtdGltZSwgdGltZSBhbmQgc2VhcmNoIHdpZGdldHMgYXMgaW5wdXQgZWwgaXMgbm90IHVwZGF0ZWQgd2l0aCB2YWx1ZSBvbiBzZWxlY3Rpb24gb2YgZHJvcGRvd24vcG9wdXBzXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMubGFiZWxBbmltYXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLmFwcC5zdWJzY3JpYmUoJ2NhcHRpb25Qb3NpdGlvbkFuaW1hdGUnLCAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgLy8gZGlzcGxheVZhbCBpcyB0cnVlIHdoZW4gdGhlcmUgaXMgYSB2YWx1ZSBlbnRlcmVkIGluIHRoZSBpbnB1dCBmaWVsZFxuICAgICAgICAgICAgLy8gSW4gY2FzZSBvZiBmb3JtIGZpZWxkcywgd2hlbiB0aGUgZmllbGQgaXMgaW4gZm9jdXMsIGlzRm9jdXNlZCB3aWxsIGJlIHNldCBhcyB0cnVlXG4gICAgICAgICAgICAvLyBpc1NlbGVjdE11bHRpcGxlIGlzIHNldCB0byB0cnVlIHdoZW4gZm9yIHNlbGVjdCB3aWRnZXQsIG11bHRpcGxlIG9wdGlvbiBpcyBlbmFibGVkXG4gICAgICAgICAgICAvLyBDaGVja2luZyBpbnB1dEVsIGZvY3VzIC0gd2hlbiBmb3JtIGlzIHJlcHJlc2VudGVkIGFzIGRpYWxvZyBhbmQgdGhlIGZpcnN0IGZpZWxkIGlzIGF1dG9tYXRpY2FsbHkgaW4gZm9jdXNcbiAgICAgICAgICAgIGNvbnN0IGlzSW5wdXRFbEZvY3VzZWQgPSB0aGlzLmlucHV0RWwgJiYgdGhpcy5pbnB1dEVsLmlzKCc6Zm9jdXMnKTtcbiAgICAgICAgICAgIGlmIChkYXRhLmRpc3BsYXlWYWwgfHwgZGF0YS5pc0ZvY3VzZWQgfHwgZGF0YS5pc1NlbGVjdE11bHRpcGxlIHx8IGlzSW5wdXRFbEZvY3VzZWQpIHtcbiAgICAgICAgICAgICAgICBkYXRhLm5hdGl2ZUVsLmFkZENsYXNzKCdmbG9hdC1hY3RpdmUnKTtcbiAgICAgICAgICAgICAgICBpZiAoIWRhdGEuZGlzcGxheVZhbCAmJiBpc0lucHV0RWxGb2N1c2VkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRFbC5hdHRyKCdwbGFjZWhvbGRlcicsIHRoaXMucGxhY2Vob2xkZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGF0YS5uYXRpdmVFbC5yZW1vdmVDbGFzcygnZmxvYXQtYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHBsYWNlaG9sZGVyIG9uIHJlbW92aW5nIGZsb2F0LWFjdGl2ZSwgaWYgbm90IHRoZSBsYWJlbCBhbmQgcGxhY2Vob2xkZXIgYXJlIGNvbGxpZGVkXG4gICAgICAgICAgICAgICAgLy8gYmVmb3JlIHBsYWNlaG9sZGVyIGlzIHJlbW92ZWQgYXNzaWduIGl0IHRvIHRoZSBwbGFjZWhvbGRlciB2YXJpYWJsZVxuICAgICAgICAgICAgICAgIC8vIGNoZWNrIGZvciBwbGFjZWhvbGRlciBpbiBpbnB1dGVsIGFuZCBzZWxlY3RlbFxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlucHV0RWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0RWxQbGFjZWhvbGRlck9wdGlvbiA9IHRoaXMubmF0aXZlRWwucXVlcnlTZWxlY3RvcignI3BsYWNlaG9sZGVyT3B0aW9uJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlucHV0RWwuYXR0cigncGxhY2Vob2xkZXInKSB8fCBzZWxlY3RFbFBsYWNlaG9sZGVyT3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0RWxQbGFjZWhvbGRlck9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdEVsUGxhY2Vob2xkZXJPcHRpb24udGV4dENvbnRlbnQgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMuaW5wdXRFbC5hdHRyKCdwbGFjZWhvbGRlcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRFbC5yZW1vdmVBdHRyKCdwbGFjZWhvbGRlcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMubGFiZWxBbmltYXRpb25TdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMubGFiZWxBbmltYXRpb25TdWJzY3JpcHRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5fYXR0ck9ic2VydmVyKSB7XG4gICAgICAgICAgICB0aGlzLl9hdHRyT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -24,6 +24,7 @@ export const numberProps = new Map([
24
24
  ['trailingzero', { value: false, ...PROP_BOOLEAN }],
25
25
  ['updateon', PROP_STRING],
26
26
  ['inputmode', { value: 'natural', ...PROP_STRING }],
27
+ ['decimalplaces', PROP_NUMBER],
27
28
  ['conditionalclass', PROP_ANY],
28
29
  ['conditionalstyle', PROP_ANY]
29
30
  ]);
@@ -31,4 +32,4 @@ export const registerProps = () => {
31
32
  register('wm-number', numberProps);
32
33
  registerFormWidget(FormWidgetType.NUMBER, new Map(numberProps));
33
34
  };
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLnByb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2lucHV0L2RlZmF1bHQvc3JjL251bWJlci9udW1iZXIucHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNuSCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FDOUI7SUFDSSxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUM7SUFDM0IsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDO0lBQ3RCLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDO0lBQzdCLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQztJQUMxQixDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUM7SUFDMUIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDO0lBQ3JCLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQztJQUMxQixDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUM7SUFDN0IsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDO0lBQ3pCLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQztJQUN6QixDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUM7SUFDckIsQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDO0lBQzdCLENBQUMsYUFBYSxFQUFFLEVBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxHQUFHLFdBQVcsRUFBQyxDQUFDO0lBQ3hELENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQztJQUMxQixDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUM7SUFDdkIsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDO0lBQzFCLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQztJQUM1QixDQUFDLE1BQU0sRUFBRSxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxZQUFZLEVBQUMsQ0FBQztJQUN4QyxDQUFDLE1BQU0sRUFBRSxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxXQUFXLEVBQUMsQ0FBQztJQUNwQyxDQUFDLFVBQVUsRUFBRSxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxXQUFXLEVBQUMsQ0FBQztJQUN4QyxDQUFDLGNBQWMsRUFBRSxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxZQUFZLEVBQUMsQ0FBQztJQUNqRCxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUM7SUFDekIsQ0FBQyxXQUFXLEVBQUUsRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUM7SUFDakQsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUM7SUFDOUIsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUM7Q0FDakMsQ0FDSixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRTtJQUM5QixRQUFRLENBQ0osV0FBVyxFQUNYLFdBQVcsQ0FDZCxDQUFDO0lBQ0Ysa0JBQWtCLENBQ2QsY0FBYyxDQUFDLE1BQU0sRUFDckIsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQ3ZCLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1BST1BfQU5ZLCBQUk9QX0JPT0xFQU4sIFBST1BfTlVNQkVSLCBQUk9QX1NUUklORywgcmVnaXN0ZXIsIHJlZ2lzdGVyRm9ybVdpZGdldH0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQge0Zvcm1XaWRnZXRUeXBlfSBmcm9tICdAd20vY29yZSc7XG5cbmV4cG9ydCBjb25zdCBudW1iZXJQcm9wcyA9IG5ldyBNYXAoXG4gICAgW1xuICAgICAgICBbJ2F1dG9mb2N1cycsIFBST1BfQk9PTEVBTl0sXG4gICAgICAgIFsnY2xhc3MnLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnZGF0YXZhbHVlc291cmNlJywgUFJPUF9BTlldLFxuICAgICAgICBbJ2RhdGF2YWx1ZScsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydkaXNhYmxlZCcsIFBST1BfQk9PTEVBTl0sXG4gICAgICAgIFsnaGludCcsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydhcmlhbGFiZWwnLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnbG9jYWxlZmlsdGVyJywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ21pbnZhbHVlJywgUFJPUF9OVU1CRVJdLFxuICAgICAgICBbJ21heHZhbHVlJywgUFJPUF9OVU1CRVJdLFxuICAgICAgICBbJ25hbWUnLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnbnVtYmVyZmlsdGVyJywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ3BsYWNlaG9sZGVyJywge3ZhbHVlOiAnRW50ZXIgbnVtYmVyJywgLi4uUFJPUF9TVFJJTkd9XSxcbiAgICAgICAgWydyZWFkb25seScsIFBST1BfQk9PTEVBTl0sXG4gICAgICAgIFsncmVnZXhwJywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ3JlcXVpcmVkJywgUFJPUF9CT09MRUFOXSxcbiAgICAgICAgWydzaG9ydGN1dGtleScsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydzaG93Jywge3ZhbHVlOiB0cnVlLCAuLi5QUk9QX0JPT0xFQU59XSxcbiAgICAgICAgWydzdGVwJywge3ZhbHVlOiAxLCAuLi5QUk9QX05VTUJFUn1dLFxuICAgICAgICBbJ3RhYmluZGV4Jywge3ZhbHVlOiAwLCAuLi5QUk9QX05VTUJFUn1dLFxuICAgICAgICBbJ3RyYWlsaW5nemVybycsIHt2YWx1ZTogZmFsc2UsIC4uLlBST1BfQk9PTEVBTn1dLFxuICAgICAgICBbJ3VwZGF0ZW9uJywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ2lucHV0bW9kZScsIHt2YWx1ZTogJ25hdHVyYWwnLCAuLi5QUk9QX1NUUklOR31dLFxuICAgICAgICBbJ2NvbmRpdGlvbmFsY2xhc3MnLCBQUk9QX0FOWV0sXG4gICAgICAgIFsnY29uZGl0aW9uYWxzdHlsZScsIFBST1BfQU5ZXVxuICAgIF1cbik7XG5cbmV4cG9ydCBjb25zdCByZWdpc3RlclByb3BzID0gKCkgPT4ge1xuICAgIHJlZ2lzdGVyKFxuICAgICAgICAnd20tbnVtYmVyJyxcbiAgICAgICAgbnVtYmVyUHJvcHNcbiAgICApO1xuICAgIHJlZ2lzdGVyRm9ybVdpZGdldChcbiAgICAgICAgRm9ybVdpZGdldFR5cGUuTlVNQkVSLFxuICAgICAgICBuZXcgTWFwKG51bWJlclByb3BzKVxuICAgICk7XG59O1xuIl19
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLnByb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy93aWRnZXRzL2lucHV0L2RlZmF1bHQvc3JjL251bWJlci9udW1iZXIucHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNuSCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FDOUI7SUFDSSxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUM7SUFDM0IsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDO0lBQ3RCLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDO0lBQzdCLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQztJQUMxQixDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUM7SUFDMUIsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDO0lBQ3JCLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQztJQUMxQixDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUM7SUFDN0IsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDO0lBQ3pCLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQztJQUN6QixDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUM7SUFDckIsQ0FBQyxjQUFjLEVBQUUsV0FBVyxDQUFDO0lBQzdCLENBQUMsYUFBYSxFQUFFLEVBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxHQUFHLFdBQVcsRUFBQyxDQUFDO0lBQ3hELENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQztJQUMxQixDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUM7SUFDdkIsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDO0lBQzFCLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQztJQUM1QixDQUFDLE1BQU0sRUFBRSxFQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxZQUFZLEVBQUMsQ0FBQztJQUN4QyxDQUFDLE1BQU0sRUFBRSxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxXQUFXLEVBQUMsQ0FBQztJQUNwQyxDQUFDLFVBQVUsRUFBRSxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxXQUFXLEVBQUMsQ0FBQztJQUN4QyxDQUFDLGNBQWMsRUFBRSxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxZQUFZLEVBQUMsQ0FBQztJQUNqRCxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUM7SUFDekIsQ0FBQyxXQUFXLEVBQUUsRUFBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsV0FBVyxFQUFDLENBQUM7SUFDakQsQ0FBQyxlQUFlLEVBQUUsV0FBVyxDQUFDO0lBQzlCLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDO0lBQzlCLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDO0NBQ2pDLENBQ0osQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDOUIsUUFBUSxDQUNKLFdBQVcsRUFDWCxXQUFXLENBQ2QsQ0FBQztJQUNGLGtCQUFrQixDQUNkLGNBQWMsQ0FBQyxNQUFNLEVBQ3JCLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUN2QixDQUFDO0FBQ04sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtQUk9QX0FOWSwgUFJPUF9CT09MRUFOLCBQUk9QX05VTUJFUiwgUFJPUF9TVFJJTkcsIHJlZ2lzdGVyLCByZWdpc3RlckZvcm1XaWRnZXR9IGZyb20gJ0B3bS9jb21wb25lbnRzL2Jhc2UnO1xuaW1wb3J0IHtGb3JtV2lkZ2V0VHlwZX0gZnJvbSAnQHdtL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgbnVtYmVyUHJvcHMgPSBuZXcgTWFwKFxuICAgIFtcbiAgICAgICAgWydhdXRvZm9jdXMnLCBQUk9QX0JPT0xFQU5dLFxuICAgICAgICBbJ2NsYXNzJywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ2RhdGF2YWx1ZXNvdXJjZScsIFBST1BfQU5ZXSxcbiAgICAgICAgWydkYXRhdmFsdWUnLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnZGlzYWJsZWQnLCBQUk9QX0JPT0xFQU5dLFxuICAgICAgICBbJ2hpbnQnLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnYXJpYWxhYmVsJywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ2xvY2FsZWZpbHRlcicsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydtaW52YWx1ZScsIFBST1BfTlVNQkVSXSxcbiAgICAgICAgWydtYXh2YWx1ZScsIFBST1BfTlVNQkVSXSxcbiAgICAgICAgWyduYW1lJywgUFJPUF9TVFJJTkddLFxuICAgICAgICBbJ251bWJlcmZpbHRlcicsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydwbGFjZWhvbGRlcicsIHt2YWx1ZTogJ0VudGVyIG51bWJlcicsIC4uLlBST1BfU1RSSU5HfV0sXG4gICAgICAgIFsncmVhZG9ubHknLCBQUk9QX0JPT0xFQU5dLFxuICAgICAgICBbJ3JlZ2V4cCcsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydyZXF1aXJlZCcsIFBST1BfQk9PTEVBTl0sXG4gICAgICAgIFsnc2hvcnRjdXRrZXknLCBQUk9QX1NUUklOR10sXG4gICAgICAgIFsnc2hvdycsIHt2YWx1ZTogdHJ1ZSwgLi4uUFJPUF9CT09MRUFOfV0sXG4gICAgICAgIFsnc3RlcCcsIHt2YWx1ZTogMSwgLi4uUFJPUF9OVU1CRVJ9XSxcbiAgICAgICAgWyd0YWJpbmRleCcsIHt2YWx1ZTogMCwgLi4uUFJPUF9OVU1CRVJ9XSxcbiAgICAgICAgWyd0cmFpbGluZ3plcm8nLCB7dmFsdWU6IGZhbHNlLCAuLi5QUk9QX0JPT0xFQU59XSxcbiAgICAgICAgWyd1cGRhdGVvbicsIFBST1BfU1RSSU5HXSxcbiAgICAgICAgWydpbnB1dG1vZGUnLCB7dmFsdWU6ICduYXR1cmFsJywgLi4uUFJPUF9TVFJJTkd9XSxcbiAgICAgICAgWydkZWNpbWFscGxhY2VzJywgUFJPUF9OVU1CRVJdLFxuICAgICAgICBbJ2NvbmRpdGlvbmFsY2xhc3MnLCBQUk9QX0FOWV0sXG4gICAgICAgIFsnY29uZGl0aW9uYWxzdHlsZScsIFBST1BfQU5ZXVxuICAgIF1cbik7XG5cbmV4cG9ydCBjb25zdCByZWdpc3RlclByb3BzID0gKCkgPT4ge1xuICAgIHJlZ2lzdGVyKFxuICAgICAgICAnd20tbnVtYmVyJyxcbiAgICAgICAgbnVtYmVyUHJvcHNcbiAgICApO1xuICAgIHJlZ2lzdGVyRm9ybVdpZGdldChcbiAgICAgICAgRm9ybVdpZGdldFR5cGUuTlVNQkVSLFxuICAgICAgICBuZXcgTWFwKG51bWJlclByb3BzKVxuICAgICk7XG59O1xuIl19
@@ -192,7 +192,7 @@ export class SelectComponent extends DatasetAwareFormComponent {
192
192
  provideAs(SelectComponent, NG_VALUE_ACCESSOR, true),
193
193
  provideAs(SelectComponent, NG_VALIDATORS, true),
194
194
  provideAsWidgetRef(SelectComponent)
195
- ]), i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 17, consts: [["select", ""], ["focus-target", "", 3, "ngModelChange", "change", "mousedown", "blur", "ngClass", "disabled", "required", "tabindex", "ngModel", "ngModelOptions", "multiple", "autofocus"], ["selected", "", "value", "undefined", "id", "placeholderOption", 3, "textContent", "hidden"], [4, "ngIf"], [3, "label", 4, "ngFor", "ngForOf"], [3, "label"], [3, "value", "selected", "textContent", 4, "ngFor", "ngForOf"], [3, "value", "selected", "textContent"]], template: function SelectComponent_Template(rf, ctx) { if (rf & 1) {
195
+ ]), i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 18, consts: [["select", ""], ["focus-target", "", 3, "ngModelChange", "change", "mousedown", "blur", "ngClass", "disabled", "required", "tabindex", "ngModel", "ngModelOptions", "multiple", "autofocus"], ["selected", "", "value", "undefined", "id", "placeholderOption", 3, "textContent", "hidden"], [4, "ngIf"], [3, "label", 4, "ngFor", "ngForOf"], [3, "label"], [3, "value", "selected", "textContent", 4, "ngFor", "ngForOf"], [3, "value", "selected", "textContent"]], template: function SelectComponent_Template(rf, ctx) { if (rf & 1) {
196
196
  const _r1 = i0.ɵɵgetCurrentView();
197
197
  i0.ɵɵelementStart(0, "select", 1, 0);
198
198
  i0.ɵɵtwoWayListener("ngModelChange", function SelectComponent_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.modelByKey, $event) || (ctx.modelByKey = $event); return i0.ɵɵresetView($event); });
@@ -201,10 +201,10 @@ export class SelectComponent extends DatasetAwareFormComponent {
201
201
  i0.ɵɵtemplate(3, SelectComponent_ng_container_3_Template, 2, 1, "ng-container", 3)(4, SelectComponent_ng_container_4_Template, 2, 1, "ng-container", 3);
202
202
  i0.ɵɵelementEnd();
203
203
  } if (rf & 2) {
204
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(14, _c1, ctx.class))("disabled", ctx.disabled)("required", ctx.required)("tabindex", ctx.tabindex);
204
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(15, _c1, ctx.class))("disabled", ctx.disabled)("required", ctx.required)("tabindex", ctx.tabindex);
205
205
  i0.ɵɵtwoWayProperty("ngModel", ctx.modelByKey);
206
- i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(16, _c2))("multiple", ctx.multiple)("autofocus", ctx.autofocus);
207
- i0.ɵɵattribute("name", ctx.name)("aria-label", ctx.arialabel);
206
+ i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(17, _c2))("multiple", ctx.multiple)("autofocus", ctx.autofocus);
207
+ i0.ɵɵattribute("accesskey", ctx.shortcutkey)("name", ctx.name)("aria-label", ctx.arialabel);
208
208
  i0.ɵɵadvance(2);
209
209
  i0.ɵɵproperty("textContent", ctx.placeholder)("hidden", !ctx.placeholder);
210
210
  i0.ɵɵadvance();
@@ -219,7 +219,7 @@ export class SelectComponent extends DatasetAwareFormComponent {
219
219
  provideAs(SelectComponent, NG_VALUE_ACCESSOR, true),
220
220
  provideAs(SelectComponent, NG_VALIDATORS, true),
221
221
  provideAsWidgetRef(SelectComponent)
222
- ], template: "<!--Updated focus with mousedown event. IOS devices not allow update of option value after opening dropdown-->\n<select #select\n focus-target\n [ngClass]=\"['app-select form-control', class]\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [(ngModel)]=\"modelByKey\"\n [ngModelOptions]=\"{standalone: true}\"\n [multiple]=\"multiple\"\n (change)=\"onSelectValueChange($event)\"\n (mousedown)=\"checkForFloatingLabel($event)\"\n (blur)=\"invokeOnTouched($event); checkForFloatingLabel($event)\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel\"\n [autofocus]=\"autofocus\">\n\n <option selected\n value=\"undefined\"\n [textContent]=\"placeholder\"\n id=\"placeholderOption\"\n [hidden]=\"!placeholder\"></option>\n\n <ng-container *ngIf=\"groupby\">\n <optgroup *ngFor=\"let groupObj of groupedData\"\n [label]=\"groupObj.key\">\n <option *ngFor=\"let item of groupObj.data;\"\n [value]=\"item.key\"\n [selected]=\"item.selected\"\n [textContent]=\"item.label\"\n ></option>\n </optgroup>\n </ng-container>\n\n <ng-container *ngIf=\"!groupby\">\n <option *ngFor=\"let item of datasetItems\"\n [value]=\"item.key\"\n [selected]=\"item.selected\"\n [textContent]=\"item.label\"\n ></option>\n </ng-container>\n</select>\n" }]
222
+ ], template: "<!--Updated focus with mousedown event. IOS devices not allow update of option value after opening dropdown-->\n<select #select\n focus-target\n [ngClass]=\"['app-select form-control', class]\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [attr.accesskey]=\"shortcutkey\"\n [(ngModel)]=\"modelByKey\"\n [ngModelOptions]=\"{standalone: true}\"\n [multiple]=\"multiple\"\n (change)=\"onSelectValueChange($event)\"\n (mousedown)=\"checkForFloatingLabel($event)\"\n (blur)=\"invokeOnTouched($event); checkForFloatingLabel($event)\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel\"\n [autofocus]=\"autofocus\">\n\n <option selected\n value=\"undefined\"\n [textContent]=\"placeholder\"\n id=\"placeholderOption\"\n [hidden]=\"!placeholder\"></option>\n\n <ng-container *ngIf=\"groupby\">\n <optgroup *ngFor=\"let groupObj of groupedData\"\n [label]=\"groupObj.key\">\n <option *ngFor=\"let item of groupObj.data;\"\n [value]=\"item.key\"\n [selected]=\"item.selected\"\n [textContent]=\"item.label\"\n ></option>\n </optgroup>\n </ng-container>\n\n <ng-container *ngIf=\"!groupby\">\n <option *ngFor=\"let item of datasetItems\"\n [value]=\"item.key\"\n [selected]=\"item.selected\"\n [textContent]=\"item.label\"\n ></option>\n </ng-container>\n</select>\n" }]
223
223
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
224
224
  type: Inject,
225
225
  args: ['EXPLICIT_CONTEXT']
@@ -230,4 +230,4 @@ export class SelectComponent extends DatasetAwareFormComponent {
230
230
  args: ['select', { static: true, read: ElementRef }]
231
231
  }] }); })();
232
232
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SelectComponent, { className: "SelectComponent", filePath: "select/select.component.ts", lineNumber: 20 }); })();
233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFDLGFBQWEsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDaEUsT0FBTyxFQUFDLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUUxRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztJQ29CakMsNEJBSVU7OztJQUROLEFBREEsQUFEQSxtQ0FBa0IsOEJBQ1EsOEJBQ0E7OztJQUxsQyxtQ0FDMkI7SUFDdkIsZ0dBSUM7SUFDTCxpQkFBVzs7O0lBTlAsdUNBQXNCO0lBQ0csY0FBaUI7SUFBakIsMENBQWlCOzs7SUFIbEQsNkJBQThCO0lBQzFCLHlGQUMyQjs7OztJQURJLGNBQWM7SUFBZCw0Q0FBYzs7O0lBVzdDLDRCQUlVOzs7SUFETixBQURBLEFBREEsbUNBQWtCLDhCQUNRLDhCQUNBOzs7SUFKbEMsNkJBQStCO0lBQzNCLHFGQUlDOzs7O0lBSndCLGNBQWU7SUFBZiw2Q0FBZTs7QUQzQmhELE1BQU0sYUFBYSxHQUFHLEVBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUMsQ0FBQztBQVdqRixNQUFNLE9BQU8sZUFBZ0IsU0FBUSx5QkFBeUI7YUFDbkQsb0JBQWUsR0FBRyxhQUFhLEVBQUUsQUFBbEIsQ0FBbUI7SUFnQnpDLElBQUksVUFBVSxDQUFDLEVBQUU7UUFDYixJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7WUFDMUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksR0FBYSxFQUEwQyxlQUFvQjtRQUNuRixLQUFLLENBQUMsR0FBRyxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUV6Qjs7Ozs7WUFLSTtRQUNKLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3JELElBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDVCxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDakIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ25FLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzt3QkFDaEIsVUFBVSxDQUFDLEdBQUcsRUFBRTs0QkFDWixJQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dDQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDOzRCQUMzQyxDQUFDOzRCQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO3dCQUNoQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ1osQ0FBQztnQkFDTCxDQUFDO3FCQUFNLENBQUM7b0JBQ0osVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDWixJQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDOzRCQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO3dCQUMzQyxDQUFDO29CQUVMLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDWixDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELGVBQWU7UUFDWCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBNEIsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsc0dBQXNHO0lBQzVGLFdBQVcsQ0FBQyxJQUFpQixFQUFFLFNBQWlCLEVBQUUsYUFBdUIsRUFBRSxNQUFXO1FBQzVGLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckYsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUFNO1FBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUN6RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUMzQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBSSxJQUFZLENBQUMsYUFBYSxDQUFDO1lBQzdDLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLDhCQUE4QjtRQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBVyxFQUFFLEVBQU8sRUFBRSxFQUFRO1FBQzNDLElBQUksR0FBRyxLQUFLLFVBQVUsRUFBRyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQy9CLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxHQUFHLEtBQUssT0FBTyxJQUFLLEdBQUcsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN6QyxJQUFHLEdBQUcsS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDakIsbUhBQW1IO2dCQUNuSCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQTtnQkFDdkosSUFBRyxrQkFBa0IsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztvQkFDaEYsVUFBVSxDQUFDLEdBQUUsRUFBRTt3QkFDWCxJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7NEJBQzlMLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7d0JBQy9ELENBQUM7b0JBQ0wsQ0FBQyxDQUFDLENBQUM7Z0JBQ1AsQ0FBQztZQUNMLENBQUM7WUFDRCxPQUFPO1FBQ1gsQ0FBQzthQUFNLElBQUksR0FBRyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzNCLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUU7UUFDekksQ0FBQztRQUNELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHFCQUFxQixDQUFDLE1BQU07UUFDeEIsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDbkcsSUFBRyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUNuQyxDQUFDO1FBQ0QsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDMUYsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFdBQVcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDNUosSUFBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ2xCLGlCQUFpQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUNyRCxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN6QixJQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDbEIsaUJBQWlCLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztnQkFDdkMsQ0FBQztnQkFDRCxTQUFTLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztRQUtJO0lBQ0ksdUJBQXVCO1FBQzNCLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzVFLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQixJQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQzNDLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztnRkFySlEsZUFBZSwwREF1Qlcsa0JBQWtCO29FQXZCNUMsZUFBZTttQ0FlbUIsVUFBVTs7Ozs4Q0FyQjFDO2dCQUNQLFNBQVMsQ0FBQyxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDO2dCQUNuRCxTQUFTLENBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUM7Z0JBQy9DLGtCQUFrQixDQUFDLGVBQWUsQ0FBQzthQUN0Qzs7WUNoQkwsb0NBY2dDO1lBUnhCLHFQQUF3QjtZQUt4QixBQURBLEFBREEsMElBQVUsK0JBQTJCLEtBQUMsbUlBQ3pCLGlDQUE2QixLQUFDLG1HQUNuQywyQkFBdUIsd0JBQUUsaUNBQTZCLEtBQUM7WUFLL0QsNEJBSXlDO1lBYTdDLEFBWEEsa0ZBQThCLHFFQVdDO1lBT25DLGlCQUFTOztZQW5DRCxBQURBLEFBREEsQUFEQSxnRUFBOEMsMEJBQ3pCLDBCQUNBLDBCQUNBO1lBQ3JCLDhDQUF3QjtZQVF4QixBQU5BLEFBREEsNERBQXFDLDBCQUNoQiw0QkFNRTs7WUFJZixlQUEyQjtZQUUzQixBQUZBLDZDQUEyQiw0QkFFSjtZQUVwQixjQUFhO1lBQWIsa0NBQWE7WUFXYixjQUFjO1lBQWQsbUNBQWM7OztpRkRmcEIsZUFBZTtjQVQzQixTQUFTOzJCQUNJLFdBQVcsYUFFVjtvQkFDUCxTQUFTLGtCQUFrQixpQkFBaUIsRUFBRSxJQUFJLENBQUM7b0JBQ25ELFNBQVMsa0JBQWtCLGFBQWEsRUFBRSxJQUFJLENBQUM7b0JBQy9DLGtCQUFrQixpQkFBaUI7aUJBQ3RDOztzQkF5QjJCLE1BQU07dUJBQUMsa0JBQWtCOztzQkFBRyxRQUFRO3FCQVJQLFFBQVE7a0JBQWhFLFNBQVM7bUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFOztrRkFmOUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIEluamVjdG9yLCBPcHRpb25hbCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7RGF0YVNvdXJjZSwgaXNJb3MsIHJlbW92ZUF0dHIsIHNldEF0dHJ9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7cHJvdmlkZUFzLCBwcm92aWRlQXNXaWRnZXRSZWYsIHN0eWxlcn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQge0RhdGFzZXRBd2FyZUZvcm1Db21wb25lbnR9IGZyb20gJy4uL2RhdGFzZXQtYXdhcmUtZm9ybS5jb21wb25lbnQnO1xuXG5pbXBvcnQge3JlZ2lzdGVyUHJvcHN9IGZyb20gJy4vc2VsZWN0LnByb3BzJztcblxuY29uc3QgV0lER0VUX0NPTkZJRyA9IHt3aWRnZXRUeXBlOiAnd20tc2VsZWN0JywgaG9zdENsYXNzOiAnYXBwLXNlbGVjdC13cmFwcGVyJ307XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnd20tc2VsZWN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzKFNlbGVjdENvbXBvbmVudCwgTkdfVkFMVUVfQUNDRVNTT1IsIHRydWUpLFxuICAgICAgICBwcm92aWRlQXMoU2VsZWN0Q29tcG9uZW50LCBOR19WQUxJREFUT1JTLCB0cnVlKSxcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFNlbGVjdENvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdENvbXBvbmVudCBleHRlbmRzIERhdGFzZXRBd2FyZUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5OiBib29sZWFuO1xuICAgIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIHB1YmxpYyBuYXZzZWFyY2hiYXI6IGFueTtcbiAgICBwdWJsaWMgY2xhc3M6IGFueTtcbiAgICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW47XG4gICAgcHVibGljIGRpc2FibGVkOiBib29sZWFuO1xuICAgIHB1YmxpYyB0YWJpbmRleDogYW55O1xuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gICAgcHVibGljIGF1dG9mb2N1czogYm9vbGVhbjtcbiAgICBwdWJsaWMgaGludDogc3RyaW5nO1xuICAgIHB1YmxpYyBhcmlhbGFiZWw6IHN0cmluZztcblxuICAgIEBWaWV3Q2hpbGQoJ3NlbGVjdCcsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pIHNlbGVjdEVsOiBFbGVtZW50UmVmO1xuXG4gICAgc2V0IGRhdGFzb3VyY2UoZHMpIHtcbiAgICAgICAgaWYgKGRzICYmIGRzLmV4ZWN1dGUgJiYgZHMuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5JU19CT1VORF9UT19MT0NBTEUpKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGF2YWx1ZSA9IGRzLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uR0VUX0RFRkFVTFRfTE9DQUxFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGluajogSW5qZWN0b3IsIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueSkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG4gICAgICAgIHRoaXMuYWNjZXB0c0FycmF5ID0gdHJ1ZTtcblxuICAgICAgICAvKlxuICAgICAgICAqIFdoZW4gdGhlIGRhdGFzZXQgZm9yIGEgc2VsZWN0IGVsZW1lbnQgaXMgdXBkYXRlZCBhbmQgbm8gbG9uZ2VyIGluY2x1ZGVzIHRoZSBwcmV2aW91c2x5IHNlbGVjdGVkIHZhbHVlOlxuICAgICAgICAqIFRoZSBzZWxlY3QgZWxlbWVudCBiZWNvbWVzIGVtcHR5LCBhbmQgdGhlIG5nTW9kZWwgdmFsdWUgaXMgdXBkYXRlZCB0byByZWZsZWN0IHRoaXMgY2hhbmdlLlxuICAgICAgICAqIEhvd2V2ZXIsIHRoZSBjaGFuZ2UgZXZlbnQgaXMgbm90IHRyaWdnZXJlZCwgcHJldmVudGluZyB0aGUgZm9ybSBjb250cm9sIGZyb20gcmVjb2duaXppbmcgdGhlIHVwZGF0ZSBhbmQgYXBwbHlpbmcgbmVjZXNzYXJ5IHZhbGlkYXRpb25zLlxuICAgICAgICAqIEFzIHRoaXMgd2lkZ2V0IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIG1hbnVhbGx5IHVwZGF0aW5nIHRoZSBuZ01vZGVsIChvciBtb2RlbEJ5S2V5KSBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIGNvcnJlY3QgZm9ybSBiZWhhdmlvci5cbiAgICAgICAgKiAqL1xuICAgICAgICBjb25zdCBkYXRhc2V0U3Vic2NyaXB0aW9uID0gdGhpcy5kYXRhc2V0JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYoaXNJb3MoKSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGF2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLmRhdGFzZXRJdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS5zZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZighdGhpcy5wbGFjZWhvbGRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RlbEJ5S2V5ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYoIXRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gZGF0YXNldFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBzdHlsZXIodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50LCB0aGlzKTtcbiAgICB9XG5cbiAgICAvLyBDaGFuZ2UgZXZlbnQgaXMgcmVnaXN0ZXJlZCBmcm9tIHRoZSB0ZW1wbGF0ZSwgUHJldmVudCB0aGUgZnJhbWV3b3JrIGZyb20gcmVnaXN0ZXJpbmcgb25lIG1vcmUgZXZlbnRcbiAgICBwcm90ZWN0ZWQgaGFuZGxlRXZlbnQobm9kZTogSFRNTEVsZW1lbnQsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudENhbGxiYWNrOiBGdW5jdGlvbiwgbG9jYWxzOiBhbnkpIHtcbiAgICAgICAgaWYgKCFbJ2JsdXInLCAnY2hhbmdlJ10uaW5jbHVkZXMoZXZlbnROYW1lKSkge1xuICAgICAgICAgICAgc3VwZXIuaGFuZGxlRXZlbnQodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LCBldmVudE5hbWUsIGV2ZW50Q2FsbGJhY2ssIGxvY2Fscyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNlbGVjdFZhbHVlQ2hhbmdlKCRldmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLnBsYWNlaG9sZGVyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZGF0YXZhbHVlID0gKHRoaXMgYXMgYW55KS5wcmV2RGF0YXZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW52b2tlT25Ub3VjaGVkKCk7XG4gICAgICAgIC8vIGludm9rZSBvbiBkYXRhdmFsdWUgY2hhbmdlLlxuICAgICAgICB0aGlzLmludm9rZU9uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlLCAkZXZlbnQgfHwge30sIHRydWUpO1xuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdyZXF1aXJlZCcpICB7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleSA9PT0gJ2NsYXNzJyB8fCAga2V5ID09PSAndGFiaW5kZXgnKSB7XG4gICAgICAgICAgICBpZihrZXkgPT09ICdjbGFzcycpIHtcbiAgICAgICAgICAgICAgICAvLyBBZnRlciBORzE1IHVwZ3JhZGUgbmctaW52YWxpZCBjbGFzcyBpcyBhZGRlZCBldmVuIHRoZSBmaWVsZCBpcyB2YWxpZCwgc28gd2UgYXJlIHJlbW92aW5nIHRoZSBuZy1pbnZhbGlkIG1hbnVhbGx5XG4gICAgICAgICAgICAgICAgY29uc3QgaXNOZ1VudG91Y2hlZFZhbGlkID0gdGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctdW50b3VjaGVkJykgJiYgdGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctdmFsaWQnKVxuICAgICAgICAgICAgICAgIGlmKGlzTmdVbnRvdWNoZWRWYWxpZCAmJiBudi5pbmNsdWRlcygnbmctdW50b3VjaGVkJykgJiYgbnYuaW5jbHVkZXMoJ25nLWludmFsaWQnKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctdW50b3VjaGVkJykgJiYgdGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctdmFsaWQnKSAmJiB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy1pbnZhbGlkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnbmctaW52YWxpZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAncmVhZG9ubHknKSB7XG4gICAgICAgICAgICAgKG52ID09PSB0cnVlKSA/IHNldEF0dHIodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LCAncmVhZG9ubHknLCAncmVhZG9ubHknKSA6IHJlbW92ZUF0dHIodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LCAncmVhZG9ubHknKSA7XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hlbiBjYXB0aW9uIGZsb2F0aW5nIGlzIGVuYWJsZWQgYW5kIHBsYWNlaG9sZGVyIGlzIGdpdmVuLCBkbyBub3Qgc2hvdyBwbGFjZWhvbGRlciB1bnRpbCB1c2VyIGZvY3VzZXMgb24gdGhlIGZpZWxkXG4gICAgICogV2hlbiBmb2N1c2VkIGFkZCB0aGUgcGxhY2Vob2xkZXIgdG8gdGhlIG9wdGlvbiB3aGljaCBpcyBzZWxlY3RlZFxuICAgICAqIE9uIGJsdXIsIHJlbW92ZSB0aGUgcGxhY2Vob2xkZXIgYW5kIGRvIG5vdCBhbmltYXRlIHRoZSBsYWJlbFxuICAgICAqIEBwYXJhbSAkZXZlbnQgZXZlbnQgcmVjZWl2ZWQgd2lsbCBiZSBlaXRoZXIgYSBibHVyIG9yIGZvY3VzIGV2ZW50XG4gICAgICovXG4gICAgY2hlY2tGb3JGbG9hdGluZ0xhYmVsKCRldmVudCkge1xuICAgICAgICBjb25zdCBjYXB0aW9uRWwgPSAkKHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudCkuY2xvc2VzdCgnLmFwcC1jb21wb3NpdGUtd2lkZ2V0LmNhcHRpb24tZmxvYXRpbmcnKTtcbiAgICAgICAgaWYoIXRoaXMucGxhY2Vob2xkZXIgJiYgaXNJb3MoKSkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVQbGFjZWhvbGRlck9wdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYXB0aW9uRWwubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJPcHRpb24gPSB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignI3BsYWNlaG9sZGVyT3B0aW9uJyk7XG4gICAgICAgICAgICBpZiAoJGV2ZW50LnR5cGUgPT09ICdtb3VzZWRvd24nICYmICghdGhpcy5kYXRhdmFsdWUgfHwgKHRoaXMuZGF0YXZhbHVlICYmICQodGhpcy5zZWxlY3RFbCkuZmluZCgnc2VsZWN0IG9wdGlvbjpzZWxlY3RlZCcpLnRleHQoKSA9PT0gJycgJiYgdGhpcy5wbGFjZWhvbGRlcikpKSB7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5wbGFjZWhvbGRlcikge1xuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlck9wdGlvbi50ZXh0Q29udGVudCA9IHRoaXMucGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5kYXRhdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZih0aGlzLnBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyT3B0aW9uLnRleHRDb250ZW50ID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhcHRpb25FbC5yZW1vdmVDbGFzcygnZmxvYXQtYWN0aXZlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKlxuICAgICogUmVtb3ZpbmcgdGhlIHBsYWNlaG9sZGVyIG9wdGlvbiBpZiBubyBwbGFjZWhvbGRlciBpcyBwcm92aWRlZC5cbiAgICAqIEluIGh0bWwgd2UgYXJlIGhpZGluZyB0aGUgcGxhY2Vob2xkZXIgb3B0aW9uIHVzaW5nIGNzcyBidXQgaW4gQXBwbGUgZGV2aWNlcyBhbmQgc2FmYXJpIG9wdGlvbiBpcyBzaG93aW5nLlxuICAgICogU3R5bGVzIGFyZSBub3QgYWxsb3dlZCBvbiBvcHRpb24gdGFnIGluIGlvcyBzYWZhcmlcbiAgICAqIEFmdGVyIHJlbW92aW5nIHRoZSBvcHRpb24sIGlmIG5vIGRhdGF2YWx1ZSBpcyBwcmVzZW50IGFuZCBuYXRpdmUgc2VsZWN0IGVsZW1lbnQgc2V0cyB2YWx1ZSB0byB0aGUgZmlyc3Qgb3B0aW9uIGJ5IGRlZmF1bHQsIHNvIHdlIGFyZSBzZXR0aW5nIGl0IHRvIGVtcHR5XG4gICAgKiAqL1xuICAgIHByaXZhdGUgcmVtb3ZlUGxhY2Vob2xkZXJPcHRpb24oKSB7XG4gICAgICAgIGNvbnN0IGhpZGRlbkVsZSA9ICQodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50KS5maW5kKCcjcGxhY2Vob2xkZXJPcHRpb24nKTtcbiAgICAgICAgaWYgKGhpZGRlbkVsZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGhpZGRlbkVsZS5yZW1vdmUoKTtcbiAgICAgICAgICAgIGlmKCF0aGlzLmRhdGF2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiPCEtLVVwZGF0ZWQgZm9jdXMgd2l0aCBtb3VzZWRvd24gZXZlbnQuIElPUyBkZXZpY2VzIG5vdCBhbGxvdyB1cGRhdGUgb2Ygb3B0aW9uIHZhbHVlIGFmdGVyIG9wZW5pbmcgZHJvcGRvd24tLT5cbjxzZWxlY3QgI3NlbGVjdFxuICAgICAgICBmb2N1cy10YXJnZXRcbiAgICAgICAgW25nQ2xhc3NdPVwiWydhcHAtc2VsZWN0IGZvcm0tY29udHJvbCcsIGNsYXNzXVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgIFsobmdNb2RlbCldPVwibW9kZWxCeUtleVwiXG4gICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxuICAgICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0VmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChtb3VzZWRvd24pPVwiY2hlY2tGb3JGbG9hdGluZ0xhYmVsKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJpbnZva2VPblRvdWNoZWQoJGV2ZW50KTsgY2hlY2tGb3JGbG9hdGluZ0xhYmVsKCRldmVudClcIlxuICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFsYWJlbFwiXG4gICAgICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCI+XG5cbiAgICAgICAgPG9wdGlvbiBzZWxlY3RlZFxuICAgICAgICAgICAgICAgIHZhbHVlPVwidW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIGlkPVwicGxhY2Vob2xkZXJPcHRpb25cIlxuICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiIXBsYWNlaG9sZGVyXCI+PC9vcHRpb24+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBieVwiPlxuICAgICAgICA8b3B0Z3JvdXAgKm5nRm9yPVwibGV0IGdyb3VwT2JqIG9mIGdyb3VwZWREYXRhXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJncm91cE9iai5rZXlcIj5cbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ3JvdXBPYmouZGF0YTtcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtLmtleVwiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJpdGVtLmxhYmVsXCJcbiAgICAgICAgICAgID48L29wdGlvbj5cbiAgICAgICAgPC9vcHRncm91cD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZ3JvdXBieVwiPlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGFzZXRJdGVtc1wiXG4gICAgICAgICAgICBbdmFsdWVdPVwiaXRlbS5rZXlcIlxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgW3RleHRDb250ZW50XT1cIml0ZW0ubGFiZWxcIlxuICAgICAgICA+PC9vcHRpb24+XG4gICAgPC9uZy1jb250YWluZXI+XG48L3NlbGVjdD5cbiJdfQ==
233
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFDLGFBQWEsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDaEUsT0FBTyxFQUFDLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRSxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUUxRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztJQ3FCakMsNEJBSVU7OztJQUROLEFBREEsQUFEQSxtQ0FBa0IsOEJBQ1EsOEJBQ0E7OztJQUxsQyxtQ0FDMkI7SUFDdkIsZ0dBSUM7SUFDTCxpQkFBVzs7O0lBTlAsdUNBQXNCO0lBQ0csY0FBaUI7SUFBakIsMENBQWlCOzs7SUFIbEQsNkJBQThCO0lBQzFCLHlGQUMyQjs7OztJQURJLGNBQWM7SUFBZCw0Q0FBYzs7O0lBVzdDLDRCQUlVOzs7SUFETixBQURBLEFBREEsbUNBQWtCLDhCQUNRLDhCQUNBOzs7SUFKbEMsNkJBQStC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cG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIEluamVjdG9yLCBPcHRpb25hbCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TkdfVkFMSURBVE9SUywgTkdfVkFMVUVfQUNDRVNTT1J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7RGF0YVNvdXJjZSwgaXNJb3MsIHJlbW92ZUF0dHIsIHNldEF0dHJ9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7cHJvdmlkZUFzLCBwcm92aWRlQXNXaWRnZXRSZWYsIHN0eWxlcn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQge0RhdGFzZXRBd2FyZUZvcm1Db21wb25lbnR9IGZyb20gJy4uL2RhdGFzZXQtYXdhcmUtZm9ybS5jb21wb25lbnQnO1xuXG5pbXBvcnQge3JlZ2lzdGVyUHJvcHN9IGZyb20gJy4vc2VsZWN0LnByb3BzJztcblxuY29uc3QgV0lER0VUX0NPTkZJRyA9IHt3aWRnZXRUeXBlOiAnd20tc2VsZWN0JywgaG9zdENsYXNzOiAnYXBwLXNlbGVjdC13cmFwcGVyJ307XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnd20tc2VsZWN0JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzKFNlbGVjdENvbXBvbmVudCwgTkdfVkFMVUVfQUNDRVNTT1IsIHRydWUpLFxuICAgICAgICBwcm92aWRlQXMoU2VsZWN0Q29tcG9uZW50LCBOR19WQUxJREFUT1JTLCB0cnVlKSxcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFNlbGVjdENvbXBvbmVudClcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdENvbXBvbmVudCBleHRlbmRzIERhdGFzZXRBd2FyZUZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgcHVibGljIHJlYWRvbmx5OiBib29sZWFuO1xuICAgIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIHB1YmxpYyBuYXZzZWFyY2hiYXI6IGFueTtcbiAgICBwdWJsaWMgY2xhc3M6IGFueTtcbiAgICBwdWJsaWMgcmVxdWlyZWQ6IGJvb2xlYW47XG4gICAgcHVibGljIGRpc2FibGVkOiBib29sZWFuO1xuICAgIHB1YmxpYyB0YWJpbmRleDogYW55O1xuICAgIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG4gICAgcHVibGljIGF1dG9mb2N1czogYm9vbGVhbjtcbiAgICBwdWJsaWMgaGludDogc3RyaW5nO1xuICAgIHB1YmxpYyBhcmlhbGFiZWw6IHN0cmluZztcbiAgICBwdWJsaWMgc2hvcnRjdXRrZXk6IHN0cmluZztcblxuICAgIEBWaWV3Q2hpbGQoJ3NlbGVjdCcsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBFbGVtZW50UmVmIH0pIHNlbGVjdEVsOiBFbGVtZW50UmVmO1xuXG4gICAgc2V0IGRhdGFzb3VyY2UoZHMpIHtcbiAgICAgICAgaWYgKGRzICYmIGRzLmV4ZWN1dGUgJiYgZHMuZXhlY3V0ZShEYXRhU291cmNlLk9wZXJhdGlvbi5JU19CT1VORF9UT19MT0NBTEUpKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGF2YWx1ZSA9IGRzLmV4ZWN1dGUoRGF0YVNvdXJjZS5PcGVyYXRpb24uR0VUX0RFRkFVTFRfTE9DQUxFKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGluajogSW5qZWN0b3IsIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueSkge1xuICAgICAgICBzdXBlcihpbmosIFdJREdFVF9DT05GSUcsIGV4cGxpY2l0Q29udGV4dCk7XG4gICAgICAgIHRoaXMuYWNjZXB0c0FycmF5ID0gdHJ1ZTtcblxuICAgICAgICAvKlxuICAgICAgICAqIFdoZW4gdGhlIGRhdGFzZXQgZm9yIGEgc2VsZWN0IGVsZW1lbnQgaXMgdXBkYXRlZCBhbmQgbm8gbG9uZ2VyIGluY2x1ZGVzIHRoZSBwcmV2aW91c2x5IHNlbGVjdGVkIHZhbHVlOlxuICAgICAgICAqIFRoZSBzZWxlY3QgZWxlbWVudCBiZWNvbWVzIGVtcHR5LCBhbmQgdGhlIG5nTW9kZWwgdmFsdWUgaXMgdXBkYXRlZCB0byByZWZsZWN0IHRoaXMgY2hhbmdlLlxuICAgICAgICAqIEhvd2V2ZXIsIHRoZSBjaGFuZ2UgZXZlbnQgaXMgbm90IHRyaWdnZXJlZCwgcHJldmVudGluZyB0aGUgZm9ybSBjb250cm9sIGZyb20gcmVjb2duaXppbmcgdGhlIHVwZGF0ZSBhbmQgYXBwbHlpbmcgbmVjZXNzYXJ5IHZhbGlkYXRpb25zLlxuICAgICAgICAqIEFzIHRoaXMgd2lkZ2V0IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIG1hbnVhbGx5IHVwZGF0aW5nIHRoZSBuZ01vZGVsIChvciBtb2RlbEJ5S2V5KSBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIGNvcnJlY3QgZm9ybSBiZWhhdmlvci5cbiAgICAgICAgKiAqL1xuICAgICAgICBjb25zdCBkYXRhc2V0U3Vic2NyaXB0aW9uID0gdGhpcy5kYXRhc2V0JC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYoaXNJb3MoKSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGF2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW0gPSB0aGlzLmRhdGFzZXRJdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS5zZWxlY3RlZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2VsZWN0ZWRJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZighdGhpcy5wbGFjZWhvbGRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb2RlbEJ5S2V5ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYoIXRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJEZXN0cm95TGlzdGVuZXIoKCkgPT4gZGF0YXNldFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBzdHlsZXIodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50LCB0aGlzKTtcbiAgICB9XG5cbiAgICAvLyBDaGFuZ2UgZXZlbnQgaXMgcmVnaXN0ZXJlZCBmcm9tIHRoZSB0ZW1wbGF0ZSwgUHJldmVudCB0aGUgZnJhbWV3b3JrIGZyb20gcmVnaXN0ZXJpbmcgb25lIG1vcmUgZXZlbnRcbiAgICBwcm90ZWN0ZWQgaGFuZGxlRXZlbnQobm9kZTogSFRNTEVsZW1lbnQsIGV2ZW50TmFtZTogc3RyaW5nLCBldmVudENhbGxiYWNrOiBGdW5jdGlvbiwgbG9jYWxzOiBhbnkpIHtcbiAgICAgICAgaWYgKCFbJ2JsdXInLCAnY2hhbmdlJ10uaW5jbHVkZXMoZXZlbnROYW1lKSkge1xuICAgICAgICAgICAgc3VwZXIuaGFuZGxlRXZlbnQodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LCBldmVudE5hbWUsIGV2ZW50Q2FsbGJhY2ssIGxvY2Fscyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblNlbGVjdFZhbHVlQ2hhbmdlKCRldmVudCkge1xuICAgICAgICBpZiAodGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLnBsYWNlaG9sZGVyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZGF0YXZhbHVlID0gKHRoaXMgYXMgYW55KS5wcmV2RGF0YXZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW52b2tlT25Ub3VjaGVkKCk7XG4gICAgICAgIC8vIGludm9rZSBvbiBkYXRhdmFsdWUgY2hhbmdlLlxuICAgICAgICB0aGlzLmludm9rZU9uQ2hhbmdlKHRoaXMuZGF0YXZhbHVlLCAkZXZlbnQgfHwge30sIHRydWUpO1xuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92PzogYW55KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdyZXF1aXJlZCcpICB7XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZSh0aGlzLmRhdGF2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtleSA9PT0gJ2NsYXNzJyB8fCAga2V5ID09PSAndGFiaW5kZXgnKSB7XG4gICAgICAgICAgICBpZihrZXkgPT09ICdjbGFzcycpIHtcbiAgICAgICAgICAgICAgICAvLyBBZnRlciBORzE1IHVwZ3JhZGUgbmctaW52YWxpZCBjbGFzcyBpcyBhZGRlZCBldmVuIHRoZSBmaWVsZCBpcyB2YWxpZCwgc28gd2UgYXJlIHJlbW92aW5nIHRoZSBuZy1pbnZhbGlkIG1hbnVhbGx5XG4gICAgICAgICAgICAgICAgY29uc3QgaXNOZ1VudG91Y2hlZFZhbGlkID0gdGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctdW50b3VjaGVkJykgJiYgdGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctdmFsaWQnKVxuICAgICAgICAgICAgICAgIGlmKGlzTmdVbnRvdWNoZWRWYWxpZCAmJiBudi5pbmNsdWRlcygnbmctdW50b3VjaGVkJykgJiYgbnYuaW5jbHVkZXMoJ25nLWludmFsaWQnKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctdW50b3VjaGVkJykgJiYgdGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygnbmctdmFsaWQnKSAmJiB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCduZy1pbnZhbGlkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnbmctaW52YWxpZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAncmVhZG9ubHknKSB7XG4gICAgICAgICAgICAgKG52ID09PSB0cnVlKSA/IHNldEF0dHIodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LCAncmVhZG9ubHknLCAncmVhZG9ubHknKSA6IHJlbW92ZUF0dHIodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50LCAncmVhZG9ubHknKSA7XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hlbiBjYXB0aW9uIGZsb2F0aW5nIGlzIGVuYWJsZWQgYW5kIHBsYWNlaG9sZGVyIGlzIGdpdmVuLCBkbyBub3Qgc2hvdyBwbGFjZWhvbGRlciB1bnRpbCB1c2VyIGZvY3VzZXMgb24gdGhlIGZpZWxkXG4gICAgICogV2hlbiBmb2N1c2VkIGFkZCB0aGUgcGxhY2Vob2xkZXIgdG8gdGhlIG9wdGlvbiB3aGljaCBpcyBzZWxlY3RlZFxuICAgICAqIE9uIGJsdXIsIHJlbW92ZSB0aGUgcGxhY2Vob2xkZXIgYW5kIGRvIG5vdCBhbmltYXRlIHRoZSBsYWJlbFxuICAgICAqIEBwYXJhbSAkZXZlbnQgZXZlbnQgcmVjZWl2ZWQgd2lsbCBiZSBlaXRoZXIgYSBibHVyIG9yIGZvY3VzIGV2ZW50XG4gICAgICovXG4gICAgY2hlY2tGb3JGbG9hdGluZ0xhYmVsKCRldmVudCkge1xuICAgICAgICBjb25zdCBjYXB0aW9uRWwgPSAkKHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudCkuY2xvc2VzdCgnLmFwcC1jb21wb3NpdGUtd2lkZ2V0LmNhcHRpb24tZmxvYXRpbmcnKTtcbiAgICAgICAgaWYoIXRoaXMucGxhY2Vob2xkZXIgJiYgaXNJb3MoKSkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVQbGFjZWhvbGRlck9wdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYXB0aW9uRWwubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJPcHRpb24gPSB0aGlzLnNlbGVjdEVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignI3BsYWNlaG9sZGVyT3B0aW9uJyk7XG4gICAgICAgICAgICBpZiAoJGV2ZW50LnR5cGUgPT09ICdtb3VzZWRvd24nICYmICghdGhpcy5kYXRhdmFsdWUgfHwgKHRoaXMuZGF0YXZhbHVlICYmICQodGhpcy5zZWxlY3RFbCkuZmluZCgnc2VsZWN0IG9wdGlvbjpzZWxlY3RlZCcpLnRleHQoKSA9PT0gJycgJiYgdGhpcy5wbGFjZWhvbGRlcikpKSB7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5wbGFjZWhvbGRlcikge1xuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlck9wdGlvbi50ZXh0Q29udGVudCA9IHRoaXMucGxhY2Vob2xkZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5kYXRhdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZih0aGlzLnBsYWNlaG9sZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyT3B0aW9uLnRleHRDb250ZW50ID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhcHRpb25FbC5yZW1vdmVDbGFzcygnZmxvYXQtYWN0aXZlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKlxuICAgICogUmVtb3ZpbmcgdGhlIHBsYWNlaG9sZGVyIG9wdGlvbiBpZiBubyBwbGFjZWhvbGRlciBpcyBwcm92aWRlZC5cbiAgICAqIEluIGh0bWwgd2UgYXJlIGhpZGluZyB0aGUgcGxhY2Vob2xkZXIgb3B0aW9uIHVzaW5nIGNzcyBidXQgaW4gQXBwbGUgZGV2aWNlcyBhbmQgc2FmYXJpIG9wdGlvbiBpcyBzaG93aW5nLlxuICAgICogU3R5bGVzIGFyZSBub3QgYWxsb3dlZCBvbiBvcHRpb24gdGFnIGluIGlvcyBzYWZhcmlcbiAgICAqIEFmdGVyIHJlbW92aW5nIHRoZSBvcHRpb24sIGlmIG5vIGRhdGF2YWx1ZSBpcyBwcmVzZW50IGFuZCBuYXRpdmUgc2VsZWN0IGVsZW1lbnQgc2V0cyB2YWx1ZSB0byB0aGUgZmlyc3Qgb3B0aW9uIGJ5IGRlZmF1bHQsIHNvIHdlIGFyZSBzZXR0aW5nIGl0IHRvIGVtcHR5XG4gICAgKiAqL1xuICAgIHByaXZhdGUgcmVtb3ZlUGxhY2Vob2xkZXJPcHRpb24oKSB7XG4gICAgICAgIGNvbnN0IGhpZGRlbkVsZSA9ICQodGhpcy5zZWxlY3RFbC5uYXRpdmVFbGVtZW50KS5maW5kKCcjcGxhY2Vob2xkZXJPcHRpb24nKTtcbiAgICAgICAgaWYgKGhpZGRlbkVsZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGhpZGRlbkVsZS5yZW1vdmUoKTtcbiAgICAgICAgICAgIGlmKCF0aGlzLmRhdGF2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RWwubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiPCEtLVVwZGF0ZWQgZm9jdXMgd2l0aCBtb3VzZWRvd24gZXZlbnQuIElPUyBkZXZpY2VzIG5vdCBhbGxvdyB1cGRhdGUgb2Ygb3B0aW9uIHZhbHVlIGFmdGVyIG9wZW5pbmcgZHJvcGRvd24tLT5cbjxzZWxlY3QgI3NlbGVjdFxuICAgICAgICBmb2N1cy10YXJnZXRcbiAgICAgICAgW25nQ2xhc3NdPVwiWydhcHAtc2VsZWN0IGZvcm0tY29udHJvbCcsIGNsYXNzXVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICAgIFthdHRyLmFjY2Vzc2tleV09XCJzaG9ydGN1dGtleVwiXG4gICAgICAgIFsobmdNb2RlbCldPVwibW9kZWxCeUtleVwiXG4gICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxuICAgICAgICBbbXVsdGlwbGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0VmFsdWVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChtb3VzZWRvd24pPVwiY2hlY2tGb3JGbG9hdGluZ0xhYmVsKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJpbnZva2VPblRvdWNoZWQoJGV2ZW50KTsgY2hlY2tGb3JGbG9hdGluZ0xhYmVsKCRldmVudClcIlxuICAgICAgICBbYXR0ci5uYW1lXT1cIm5hbWVcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFsYWJlbFwiXG4gICAgICAgIFthdXRvZm9jdXNdPVwiYXV0b2ZvY3VzXCI+XG5cbiAgICAgICAgPG9wdGlvbiBzZWxlY3RlZFxuICAgICAgICAgICAgICAgIHZhbHVlPVwidW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICBbdGV4dENvbnRlbnRdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgIGlkPVwicGxhY2Vob2xkZXJPcHRpb25cIlxuICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiIXBsYWNlaG9sZGVyXCI+PC9vcHRpb24+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ3JvdXBieVwiPlxuICAgICAgICA8b3B0Z3JvdXAgKm5nRm9yPVwibGV0IGdyb3VwT2JqIG9mIGdyb3VwZWREYXRhXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCJncm91cE9iai5rZXlcIj5cbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ3JvdXBPYmouZGF0YTtcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtLmtleVwiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJpdGVtLmxhYmVsXCJcbiAgICAgICAgICAgID48L29wdGlvbj5cbiAgICAgICAgPC9vcHRncm91cD5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZ3JvdXBieVwiPlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGFzZXRJdGVtc1wiXG4gICAgICAgICAgICBbdmFsdWVdPVwiaXRlbS5rZXlcIlxuICAgICAgICAgICAgW3NlbGVjdGVkXT1cIml0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgW3RleHRDb250ZW50XT1cIml0ZW0ubGFiZWxcIlxuICAgICAgICA+PC9vcHRpb24+XG4gICAgPC9uZy1jb250YWluZXI+XG48L3NlbGVjdD5cbiJdfQ==