igniteui-angular 16.0.0-beta.0 → 16.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/esm2022/lib/banner/banner.component.mjs +12 -12
  2. package/esm2022/lib/calendar/calendar-base.mjs +1 -1
  3. package/esm2022/lib/calendar/calendar.mjs +2 -1
  4. package/esm2022/lib/card/card.component.mjs +1 -2
  5. package/esm2022/lib/chips/chip.component.mjs +2 -2
  6. package/esm2022/lib/data-operations/data-util.mjs +1 -1
  7. package/esm2022/lib/data-operations/filtering-strategy.mjs +1 -1
  8. package/esm2022/lib/data-operations/pivot-sort-strategy.mjs +1 -1
  9. package/esm2022/lib/data-operations/pivot-strategy.mjs +3 -3
  10. package/esm2022/lib/data-operations/sorting-strategy.mjs +3 -3
  11. package/esm2022/lib/date-common/picker-base.directive.mjs +1 -2
  12. package/esm2022/lib/date-range-picker/date-range-picker.component.mjs +1 -2
  13. package/esm2022/lib/directives/autocomplete/autocomplete.directive.mjs +1 -3
  14. package/esm2022/lib/directives/drag-drop/drag-drop.directive.mjs +2 -2
  15. package/esm2022/lib/directives/for-of/for_of.directive.mjs +1 -1
  16. package/esm2022/lib/directives/mask/mask-parsing.service.mjs +4 -5
  17. package/esm2022/lib/directives/mask/mask.directive.mjs +1 -2
  18. package/esm2022/lib/directives/text-selection/text-selection.module.mjs +20 -0
  19. package/esm2022/lib/expansion-panel/expansion-panel-header.component.mjs +1 -3
  20. package/esm2022/lib/grids/columns/column.component.mjs +2 -1
  21. package/esm2022/lib/grids/columns/interfaces.mjs +1 -1
  22. package/esm2022/lib/grids/columns/templates.directive.mjs +1 -8
  23. package/esm2022/lib/grids/common/strategy.mjs +1 -1
  24. package/esm2022/lib/grids/filtering/excel-style/excel-style-filtering.component.mjs +2 -2
  25. package/esm2022/lib/grids/filtering/excel-style/excel-style-search.component.mjs +1 -2
  26. package/esm2022/lib/grids/grid/grid.directives.mjs +1 -11
  27. package/esm2022/lib/grids/grid-base.directive.mjs +3 -5
  28. package/esm2022/lib/grids/grid-public-cell.mjs +12 -12
  29. package/esm2022/lib/grids/grid.rowEdit.directive.mjs +1 -5
  30. package/esm2022/lib/grids/pivot-grid/pivot-data-selector.component.mjs +1 -3
  31. package/esm2022/lib/grids/pivot-grid/pivot-grid.component.mjs +2 -2
  32. package/esm2022/lib/grids/pivot-grid/pivot-grid.directives.mjs +1 -2
  33. package/esm2022/lib/grids/pivot-grid/pivot-grid.pipes.mjs +2 -2
  34. package/esm2022/lib/grids/pivot-grid/pivot-header-row.component.mjs +5 -5
  35. package/esm2022/lib/grids/pivot-grid/pivot-row.component.mjs +2 -2
  36. package/esm2022/lib/grids/resizing/pivot-grid/pivot-resize-handle.directive.mjs +1 -2
  37. package/esm2022/lib/grids/row-drag.directive.mjs +1 -3
  38. package/esm2022/lib/grids/selection/row-selectors.mjs +1 -4
  39. package/esm2022/lib/grids/state.directive.mjs +2 -2
  40. package/esm2022/lib/grids/summaries/grid-root-summary.pipe.mjs +1 -1
  41. package/esm2022/lib/grids/toolbar/common.mjs +1 -2
  42. package/esm2022/lib/grids/tree-grid/tree-grid-api.service.mjs +2 -2
  43. package/esm2022/lib/grids/tree-grid/tree-grid.component.mjs +1 -2
  44. package/esm2022/lib/grids/tree-grid/tree-grid.filtering.strategy.mjs +1 -1
  45. package/esm2022/lib/grids/tree-grid/tree-grid.grouping.pipe.mjs +1 -1
  46. package/esm2022/lib/icon/icon.service.mjs +2 -2
  47. package/esm2022/lib/services/excel/excel-files.mjs +2 -2
  48. package/esm2022/lib/services/excel/worksheet-data-dictionary.mjs +1 -1
  49. package/esm2022/lib/services/exporter-common/base-export-service.mjs +2 -2
  50. package/esm2022/lib/services/transaction/igx-transaction.mjs +1 -1
  51. package/esm2022/lib/services/transaction/transaction-factory.service.mjs +1 -2
  52. package/esm2022/lib/splitter/splitter-pane/splitter-pane.component.mjs +1 -3
  53. package/esm2022/lib/tabs/tab-content.directive.mjs +1 -2
  54. package/esm2022/lib/tabs/tab-header.directive.mjs +1 -2
  55. package/esm2022/lib/tabs/tab-item.directive.mjs +1 -2
  56. package/esm2022/lib/tabs/tabs/public_api.mjs +1 -1
  57. package/esm2022/lib/tabs/tabs/tabs.component.mjs +1 -2
  58. package/esm2022/lib/tree/tree-navigation.service.mjs +1 -1
  59. package/esm2022/lib/tree/tree-node/tree-node.component.mjs +1 -3
  60. package/esm2022/lib/tree/tree-selection.service.mjs +1 -2
  61. package/esm2022/public_api.mjs +2 -1
  62. package/fesm2022/igniteui-angular.mjs +66 -101
  63. package/fesm2022/igniteui-angular.mjs.map +1 -1
  64. package/lib/banner/banner.component.d.ts +9 -9
  65. package/lib/directives/for-of/for_of.directive.d.ts +1 -1
  66. package/lib/directives/text-selection/text-selection.module.d.ts +11 -0
  67. package/lib/grids/columns/column.component.d.ts +1 -1
  68. package/lib/grids/columns/interfaces.d.ts +1 -2
  69. package/lib/grids/grid-base.directive.d.ts +1 -1
  70. package/lib/grids/grid-public-cell.d.ts +8 -8
  71. package/lib/tabs/tabs/public_api.d.ts +1 -0
  72. package/migrations/common/UpdateChanges.js +2 -3
  73. package/migrations/common/util.js +3 -1
  74. package/migrations/update-13_0_0/index.js +4 -4
  75. package/package.json +7 -7
  76. package/public_api.d.ts +1 -0
  77. package/schematics/tsconfig.tsbuildinfo +1 -1
@@ -54,17 +54,6 @@ export class IgxGridCell {
54
54
  return this.grid.crudService.cell.editValue;
55
55
  }
56
56
  }
57
- /**
58
- * Gets the validation status and errors, if any.
59
- * ```typescript
60
- * let validation = this.cell.validation;
61
- * let errors = validation.errors;
62
- * ```
63
- */
64
- get validation() {
65
- const form = this.grid.validation.getFormControl(this.row.key, this.column.field);
66
- return { status: form?.status || 'VALID', errors: form?.errors };
67
- }
68
57
  /**
69
58
  * Sets the current edit value while a cell is in edit mode.
70
59
  * Only for cell editing mode.
@@ -79,6 +68,17 @@ export class IgxGridCell {
79
68
  this.grid.crudService.cell.editValue = value;
80
69
  }
81
70
  }
71
+ /**
72
+ * Gets the validation status and errors, if any.
73
+ * ```typescript
74
+ * let validation = this.cell.validation;
75
+ * let errors = validation.errors;
76
+ * ```
77
+ */
78
+ get validation() {
79
+ const form = this.grid.validation.getFormControl(this.row.key, this.column.field);
80
+ return { status: form?.status || 'VALID', errors: form?.errors };
81
+ }
82
82
  /**
83
83
  * Returns whether the cell is editable..
84
84
  *
@@ -253,4 +253,4 @@ export class IgxGridCell {
253
253
  }
254
254
  }
255
255
  }
256
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wdWJsaWMtY2VsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9ncmlkLXB1YmxpYy1jZWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxNQUFNLE9BQU8sV0FBVztJQWFwQjs7T0FFRztJQUNILFlBQ0ksSUFBYyxFQUNkLEdBQXFCLEVBQ3JCLE1BQTJCO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1NBQ3hCO2FBQU07WUFDSCxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztZQUNoQixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7U0FDOUI7UUFDRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTtZQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztTQUM5QjthQUFNO1lBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILElBQVcsR0FBRztRQUNWLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFB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LE1BQU07Z0JBQzFCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWTthQUMvQyxDQUFDLENBQUMsQ0FBQyxJQUFJO1NBQ1gsQ0FBQztJQUNOLENBQUM7SUFFTyxnQkFBZ0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUU7WUFDdEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyRCxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSztnQkFDeEQsY0FBYyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVE7Z0JBQzVDLGNBQWMsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUM7WUFDakQsT0FBTyxhQUFhLENBQUM7U0FDeEI7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU8sT0FBTztRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdkM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZWxsVHlwZSwgQ29sdW1uVHlwZSwgR3JpZFR5cGUsIElHcmlkVmFsaWRhdGlvblN0YXRlLCBSb3dUeXBlLCBWYWxpZGF0aW9uU3RhdHVzIH0gZnJvbSAnLi9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSVNlbGVjdGlvbk5vZGUgfSBmcm9tICcuL2NvbW1vbi90eXBlcyc7XG5pbXBvcnQgeyByZXNvbHZlTmVzdGVkUGF0aCB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgSWd4R3JpZENlbGwgaW1wbGVtZW50cyBDZWxsVHlwZSB7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBncmlkIGNvbnRhaW5pbmcgdGhlIGNlbGwuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ3JpZDogR3JpZFR5cGU7XG4gICAgcHJpdmF0ZSBfcm93OiBSb3dUeXBlO1xuICAgIHByaXZhdGUgX3Jvd0luZGV4OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfY29sdW1uOiBDb2x1bW5UeXBlO1xuICAgIHByaXZhdGUgX2NvbHVtbkZpZWxkOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGdyaWQ6IEdyaWRUeXBlLFxuICAgICAgICByb3c6IG51bWJlciB8IFJvd1R5cGUsXG4gICAgICAgIGNvbHVtbjogc3RyaW5nIHwgQ29sdW1uVHlwZSkge1xuICAgICAgICB0aGlzLmdyaWQgPSBncmlkO1xuICAgICAgICBpZiAodHlwZW9mIHJvdyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jvd0luZGV4ID0gcm93O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcm93ID0gcm93O1xuICAgICAgICAgICAgdGhpcy5fcm93SW5kZXggPSByb3cuaW5kZXg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBjb2x1bW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLl9jb2x1bW5GaWVsZCA9IGNvbHVtbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHJvdyBjb250YWluaW5nIHRoZSBjZWxsLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgcm93ID0gdGhpcy5jZWxsLnJvdztcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hHcmlkQ2VsbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcm93KCk6IFJvd1R5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93IHx8IHRoaXMuZ3JpZC5jcmVhdGVSb3codGhpcy5fcm93SW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNvbHVtbiBvZiB0aGUgY2VsbC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGNvbHVtbiA9IHRoaXMuY2VsbC5jb2x1bW47XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGNvbHVtbigpOiBDb2x1bW5UeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbiB8fCB0aGlzLmdyaWQuZ2V0Q29sdW1uQnlOYW1lKHRoaXMuX2NvbHVtbkZpZWxkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBjdXJyZW50IGVkaXQgdmFsdWUgd2hpbGUgYSBjZWxsIGlzIGluIGVkaXQgbW9kZS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGVkaXRWYWx1ZSA9IHRoaXMuY2VsbC5lZGl0VmFsdWU7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGVkaXRWYWx1ZSgpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5pc0NlbGxJbkVkaXRNb2RlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuY2VsbC5lZGl0VmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB2YWxpZGF0aW9uIHN0YXR1cyBhbmQgZXJyb3JzLCBpZiBhbnkuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCB2YWxpZGF0aW9uID0gdGhpcy5jZWxsLnZhbGlkYXRpb247XG4gICAgICogbGV0IGVycm9ycyA9IHZhbGlkYXRpb24uZXJyb3JzO1xuICAgICAqIGBgYFxuICAgICAqL1xuXG4gICAgcHVibGljIGdldCB2YWxpZGF0aW9uKCk6IElHcmlkVmFsaWRhdGlvblN0YXRlIHtcbiAgICAgICAgY29uc3QgZm9ybSA9IHRoaXMuZ3JpZC52YWxpZGF0aW9uLmdldEZvcm1Db250cm9sKHRoaXMucm93LmtleSwgdGhpcy5jb2x1bW4uZmllbGQpO1xuICAgICAgICByZXR1cm4geyBzdGF0dXM6IGZvcm0/LnN0YXR1cyBhcyBWYWxpZGF0aW9uU3RhdHVzIHx8ICdWQUxJRCcsIGVycm9yczogZm9ybT8uZXJyb3JzIH0gYXMgY29uc3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgY3VycmVudCBlZGl0IHZhbHVlIHdoaWxlIGEgY2VsbCBpcyBpbiBlZGl0IG1vZGUuXG4gICAgICogT25seSBmb3IgY2VsbCBlZGl0aW5nIG1vZGUuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuY2VsbC5lZGl0VmFsdWUgPSB2YWx1ZTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hHcmlkQ2VsbFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgZWRpdFZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNDZWxsSW5FZGl0TW9kZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuY2VsbC5lZGl0VmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgY2VsbCBpcyBlZGl0YWJsZS4uXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGVkaXRhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW4uZWRpdGFibGUgJiYgIXRoaXMucm93Py5kaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB3aWR0aCBvZiB0aGUgY2VsbC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGNlbGxXaWR0aCA9IHRoaXMuY2VsbC53aWR0aDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hHcmlkQ2VsbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgd2lkdGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLndpZHRoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNlbGwgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgICAgIC8vIHdpbGwgcmV0dXJuIHVuZGVmaW5lZCBmb3IgYSBjb2x1bW4gbGF5b3V0LCBiZWNhdXNlIGdldENlbGxCeUNvbHVtblZpc2libGVJbmRleCBtYXkgcmV0dXJuIHRoZSBjb2x1bW4gbGF5b3V0IGF0IHRoYXQgaW5kZXguXG4gICAgICAgIC8vIGdldENlbGxCeUNvbHVtblZpc2libGVJbmRleCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25cbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLmZpZWxkID9cbiAgICAgICAgICAgIHRoaXMuY29sdW1uLmhhc05lc3RlZFBhdGggPyByZXNvbHZlTmVzdGVkUGF0aCh0aGlzLnJvdz8uZGF0YSwgdGhpcy5jb2x1bW4uZmllbGQpIDogdGhpcy5yb3c/LmRhdGFbdGhpcy5jb2x1bW4uZmllbGRdXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBjZWxsIHZhbHVlLlxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneEdyaWRDZWxsXG4gICAgICovXG4gICAgcHVibGljIHNldCB2YWx1ZSh2YWw6IGFueSkge1xuICAgICAgICB0aGlzLnVwZGF0ZSh2YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGNlbGwgaWQuXG4gICAgICogQSBjZWxsIGluIHRoZSBncmlkIGlzIGlkZW50aWZpZWQgYnk6XG4gICAgICogLSByb3dJRCAtIHByaW1hcnlLZXkgZGF0YSB2YWx1ZSBvciB0aGUgd2hvbGUgcm93RGF0YSwgaWYgdGhlIHByaW1hcnlLZXkgaXMgb21pdHRlZC5cbiAgICAgKiAtIHJvd0luZGV4IC0gdGhlIHJvdyBpbmRleFxuICAgICAqIC0gY29sdW1uSUQgLSBjb2x1bW4gaW5kZXhcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgY2VsbElEID0gY2VsbC5pZDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hHcmlkQ2VsbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaWQoKTogYW55IHtcbiAgICAgICAgY29uc3QgcHJpbWFyeUtleSA9IHRoaXMuZ3JpZC5wcmltYXJ5S2V5O1xuICAgICAgICBjb25zdCByb3dJRCA9IHByaW1hcnlLZXkgPyB0aGlzLnJvdz8uZGF0YVtwcmltYXJ5S2V5XSA6IHRoaXMucm93Py5kYXRhO1xuICAgICAgICByZXR1cm4geyByb3dJRCwgY29sdW1uSUQ6IHRoaXMuY29sdW1uLmluZGV4LCByb3dJbmRleDogdGhpcy5fcm93SW5kZXggfHwgdGhpcy5yb3c/LmluZGV4IH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpZiB0aGUgcm93IGlzIGN1cnJlbnRseSBpbiBlZGl0IG1vZGUuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGVkaXRNb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0NlbGxJbkVkaXRNb2RlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RhcnRzL2VuZHMgZWRpdCBtb2RlIGZvciB0aGUgY2VsbC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjZWxsLmVkaXRNb2RlICA9ICFjZWxsLmVkaXRNb2RlO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneEdyaWRDZWxsXG4gICAgICovXG4gICAgcHVibGljIHNldCBlZGl0TW9kZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBpc0luRWRpdE1vZGUgPSB0aGlzLmlzQ2VsbEluRWRpdE1vZGUoKTtcbiAgICAgICAgaWYgKCF0aGlzLnJvdyB8fCB0aGlzLnJvdz8uZGVsZXRlZCB8fCBpc0luRWRpdE1vZGUgPT09IHZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZWRpdGFibGUgJiYgdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kRWRpdCgpO1xuICAgICAgICAgICAgLy8gVE9ETyBwb3NzaWJseSBkZWZpbmUgc2ltaWxhciBtZXRob2QgaW4gZ3JpZEFQSSwgd2hpY2ggZG9lcyBub3QgZW1pdCBldmVudFxuICAgICAgICAgICAgdGhpcy5ncmlkLmNydWRTZXJ2aWNlLmVudGVyRWRpdE1vZGUodGhpcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuZW5kQ2VsbEVkaXQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdyaWQubm90aWZ5Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgd2hldGhlciB0aGUgY2VsbCBpcyBzZWxlY3RlZC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGlzU2VsZWN0ZWQgPSB0aGlzLmNlbGwuc2VsZWN0ZWQ7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hHcmlkQ2VsbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZCh0aGlzLnNlbGVjdGlvbk5vZGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMvZGVzZWxlY3RzIHRoZSBjZWxsLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNlbGwuc2VsZWN0ZWQgPSB0cnVlLlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0IHNlbGVjdGVkKHZhbDogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5zZWxlY3Rpb25Ob2RlO1xuICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5hZGQobm9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5yZW1vdmUobm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkLm5vdGlmeUNoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGl2ZSgpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZ3JpZC5uYXZpZ2F0aW9uLmFjdGl2ZU5vZGU7XG4gICAgICAgIHJldHVybiBub2RlID8gbm9kZS5yb3cgPT09IHRoaXMucm93Py5pbmRleCAmJiBub2RlLmNvbHVtbiA9PT0gdGhpcy5jb2x1bW4udmlzaWJsZUluZGV4IDogZmFsc2U7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBjZWxsIHZhbHVlLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNlbGwudXBkYXRlKG5ld1ZhbHVlKTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hHcmlkQ2VsbFxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGUodmFsOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucm93Py5kZWxldGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVuZEVkaXQoKTtcblxuICAgICAgICBjb25zdCBjZWxsID0gdGhpcy5pc0NlbGxJbkVkaXRNb2RlKCkgPyB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuY2VsbCA6IHRoaXMuZ3JpZC5jcnVkU2VydmljZS5jcmVhdGVDZWxsKHRoaXMpO1xuICAgICAgICBjZWxsLmVkaXRWYWx1ZSA9IHZhbDtcbiAgICAgICAgdGhpcy5ncmlkLmdyaWRBUEkudXBkYXRlX2NlbGwoY2VsbCk7XG4gICAgICAgIHRoaXMuZ3JpZC5jcnVkU2VydmljZS5lbmRDZWxsRWRpdCgpO1xuICAgICAgICB0aGlzLmdyaWQubm90aWZ5Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgc2VsZWN0aW9uTm9kZSgpOiBJU2VsZWN0aW9uTm9kZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByb3c6IHRoaXMucm93Py5pbmRleCxcbiAgICAgICAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW4uY29sdW1uTGF5b3V0Q2hpbGQgPyB0aGlzLmNvbHVtbi5wYXJlbnQudmlzaWJsZUluZGV4IDogdGhpcy5jb2x1bW4udmlzaWJsZUluZGV4LFxuICAgICAgICAgICAgbGF5b3V0OiB0aGlzLmNvbHVtbi5jb2x1bW5MYXlvdXRDaGlsZCA/IHtcbiAgICAgICAgICAgICAgICByb3dTdGFydDogdGhpcy5jb2x1bW4ucm93U3RhcnQsXG4gICAgICAgICAgICAgICAgY29sU3RhcnQ6IHRoaXMuY29sdW1uLmNvbFN0YXJ0LFxuICAgICAgICAgICAgICAgIHJvd0VuZDogdGhpcy5jb2x1bW4ucm93RW5kLFxuICAgICAgICAgICAgICAgIGNvbEVuZDogdGhpcy5jb2x1bW4uY29sRW5kLFxuICAgICAgICAgICAgICAgIGNvbHVtblZpc2libGVJbmRleDogdGhpcy5jb2x1bW4udmlzaWJsZUluZGV4XG4gICAgICAgICAgICB9IDogbnVsbFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNDZWxsSW5FZGl0TW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JpZC5jcnVkU2VydmljZS5jZWxsSW5FZGl0TW9kZSkge1xuICAgICAgICAgICAgY29uc3QgY2VsbEluRWRpdE1vZGUgPSB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuY2VsbC5pZDtcbiAgICAgICAgICAgIGNvbnN0IGlzQ3VycmVudENlbGwgPSBjZWxsSW5FZGl0TW9kZS5yb3dJRCA9PT0gdGhpcy5pZC5yb3dJRCAmJlxuICAgICAgICAgICAgICAgIGNlbGxJbkVkaXRNb2RlLnJvd0luZGV4ID09PSB0aGlzLmlkLnJvd0luZGV4ICYmXG4gICAgICAgICAgICAgICAgY2VsbEluRWRpdE1vZGUuY29sdW1uSUQgPT09IHRoaXMuaWQuY29sdW1uSUQ7XG4gICAgICAgICAgICByZXR1cm4gaXNDdXJyZW50Q2VsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbmRFZGl0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNDZWxsSW5FZGl0TW9kZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQuZ3JpZEFQSS51cGRhdGVfY2VsbCh0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuY2VsbCk7XG4gICAgICAgICAgICB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuZW5kQ2VsbEVkaXQoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wdWJsaWMtY2VsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9ncmlkLXB1YmxpYy1jZWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxNQUFNLE9BQU8sV0FBVztJQWFwQjs7T0FFRztJQUNILFlBQ0ksSUFBYyxFQUNkLEdBQXFCLEVBQ3JCLE1BQTJCO1FBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1NBQ3hCO2FBQU07WUFDSCxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztZQUNoQixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7U0FDOUI7UUFDRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTtZQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQztTQUM5QjthQUFNO1lBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILElBQVcsR0FBRztRQUNWLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFB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LE1BQU07Z0JBQzFCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWTthQUMvQyxDQUFDLENBQUMsQ0FBQyxJQUFJO1NBQ1gsQ0FBQztJQUNOLENBQUM7SUFFTyxnQkFBZ0I7UUFDcEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUU7WUFDdEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyRCxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSztnQkFDeEQsY0FBYyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVE7Z0JBQzVDLGNBQWMsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUM7WUFDakQsT0FBTyxhQUFhLENBQUM7U0FDeEI7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU8sT0FBTztRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdkM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZWxsVHlwZSwgQ29sdW1uVHlwZSwgR3JpZFR5cGUsIElHcmlkVmFsaWRhdGlvblN0YXRlLCBSb3dUeXBlLCBWYWxpZGF0aW9uU3RhdHVzIH0gZnJvbSAnLi9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSVNlbGVjdGlvbk5vZGUgfSBmcm9tICcuL2NvbW1vbi90eXBlcyc7XG5pbXBvcnQgeyByZXNvbHZlTmVzdGVkUGF0aCB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgSWd4R3JpZENlbGwgaW1wbGVtZW50cyBDZWxsVHlwZSB7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBncmlkIGNvbnRhaW5pbmcgdGhlIGNlbGwuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ3JpZDogR3JpZFR5cGU7XG4gICAgcHJpdmF0ZSBfcm93OiBSb3dUeXBlO1xuICAgIHByaXZhdGUgX3Jvd0luZGV4OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfY29sdW1uOiBDb2x1bW5UeXBlO1xuICAgIHByaXZhdGUgX2NvbHVtbkZpZWxkOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGdyaWQ6IEdyaWRUeXBlLFxuICAgICAgICByb3c6IG51bWJlciB8IFJvd1R5cGUsXG4gICAgICAgIGNvbHVtbjogc3RyaW5nIHwgQ29sdW1uVHlwZSkge1xuICAgICAgICB0aGlzLmdyaWQgPSBncmlkO1xuICAgICAgICBpZiAodHlwZW9mIHJvdyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jvd0luZGV4ID0gcm93O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcm93ID0gcm93O1xuICAgICAgICAgICAgdGhpcy5fcm93SW5kZXggPSByb3cuaW5kZXg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBjb2x1bW4gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLl9jb2x1bW5GaWVsZCA9IGNvbHVtbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHJvdyBjb250YWluaW5nIHRoZSBjZWxsLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgcm93ID0gdGhpcy5jZWxsLnJvdztcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hHcmlkQ2VsbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcm93KCk6IFJvd1R5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93IHx8IHRoaXMuZ3JpZC5jcmVhdGVSb3codGhpcy5fcm93SW5kZXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNvbHVtbiBvZiB0aGUgY2VsbC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGNvbHVtbiA9IHRoaXMuY2VsbC5jb2x1bW47XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGNvbHVtbigpOiBDb2x1bW5UeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbiB8fCB0aGlzLmdyaWQuZ2V0Q29sdW1uQnlOYW1lKHRoaXMuX2NvbHVtbkZpZWxkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBjdXJyZW50IGVkaXQgdmFsdWUgd2hpbGUgYSBjZWxsIGlzIGluIGVkaXQgbW9kZS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGVkaXRWYWx1ZSA9IHRoaXMuY2VsbC5lZGl0VmFsdWU7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGVkaXRWYWx1ZSgpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5pc0NlbGxJbkVkaXRNb2RlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuY2VsbC5lZGl0VmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBjdXJyZW50IGVkaXQgdmFsdWUgd2hpbGUgYSBjZWxsIGlzIGluIGVkaXQgbW9kZS5cbiAgICAgKiBPbmx5IGZvciBjZWxsIGVkaXRpbmcgbW9kZS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5jZWxsLmVkaXRWYWx1ZSA9IHZhbHVlO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneEdyaWRDZWxsXG4gICAgICovXG4gICAgcHVibGljIHNldCBlZGl0VmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICBpZiAodGhpcy5pc0NlbGxJbkVkaXRNb2RlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5jcnVkU2VydmljZS5jZWxsLmVkaXRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdmFsaWRhdGlvbiBzdGF0dXMgYW5kIGVycm9ycywgaWYgYW55LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgdmFsaWRhdGlvbiA9IHRoaXMuY2VsbC52YWxpZGF0aW9uO1xuICAgICAqIGxldCBlcnJvcnMgPSB2YWxpZGF0aW9uLmVycm9ycztcbiAgICAgKiBgYGBcbiAgICAgKi9cblxuICAgIHB1YmxpYyBnZXQgdmFsaWRhdGlvbigpOiBJR3JpZFZhbGlkYXRpb25TdGF0ZSB7XG4gICAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLmdyaWQudmFsaWRhdGlvbi5nZXRGb3JtQ29udHJvbCh0aGlzLnJvdy5rZXksIHRoaXMuY29sdW1uLmZpZWxkKTtcbiAgICAgICAgcmV0dXJuIHsgc3RhdHVzOiBmb3JtPy5zdGF0dXMgYXMgVmFsaWRhdGlvblN0YXR1cyB8fCAnVkFMSUQnLCBlcnJvcnM6IGZvcm0/LmVycm9ycyB9IGFzIGNvbnN0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgY2VsbCBpcyBlZGl0YWJsZS4uXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGVkaXRhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW4uZWRpdGFibGUgJiYgIXRoaXMucm93Py5kaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB3aWR0aCBvZiB0aGUgY2VsbC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGNlbGxXaWR0aCA9IHRoaXMuY2VsbC53aWR0aDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hHcmlkQ2VsbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgd2lkdGgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLndpZHRoO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNlbGwgdmFsdWUuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgICAgIC8vIHdpbGwgcmV0dXJuIHVuZGVmaW5lZCBmb3IgYSBjb2x1bW4gbGF5b3V0LCBiZWNhdXNlIGdldENlbGxCeUNvbHVtblZpc2libGVJbmRleCBtYXkgcmV0dXJuIHRoZSBjb2x1bW4gbGF5b3V0IGF0IHRoYXQgaW5kZXguXG4gICAgICAgIC8vIGdldENlbGxCeUNvbHVtblZpc2libGVJbmRleCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25cbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLmZpZWxkID9cbiAgICAgICAgICAgIHRoaXMuY29sdW1uLmhhc05lc3RlZFBhdGggPyByZXNvbHZlTmVzdGVkUGF0aCh0aGlzLnJvdz8uZGF0YSwgdGhpcy5jb2x1bW4uZmllbGQpIDogdGhpcy5yb3c/LmRhdGFbdGhpcy5jb2x1bW4uZmllbGRdXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBjZWxsIHZhbHVlLlxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneEdyaWRDZWxsXG4gICAgICovXG4gICAgcHVibGljIHNldCB2YWx1ZSh2YWw6IGFueSkge1xuICAgICAgICB0aGlzLnVwZGF0ZSh2YWwpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGNlbGwgaWQuXG4gICAgICogQSBjZWxsIGluIHRoZSBncmlkIGlzIGlkZW50aWZpZWQgYnk6XG4gICAgICogLSByb3dJRCAtIHByaW1hcnlLZXkgZGF0YSB2YWx1ZSBvciB0aGUgd2hvbGUgcm93RGF0YSwgaWYgdGhlIHByaW1hcnlLZXkgaXMgb21pdHRlZC5cbiAgICAgKiAtIHJvd0luZGV4IC0gdGhlIHJvdyBpbmRleFxuICAgICAqIC0gY29sdW1uSUQgLSBjb2x1bW4gaW5kZXhcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgY2VsbElEID0gY2VsbC5pZDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hHcmlkQ2VsbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaWQoKTogYW55IHtcbiAgICAgICAgY29uc3QgcHJpbWFyeUtleSA9IHRoaXMuZ3JpZC5wcmltYXJ5S2V5O1xuICAgICAgICBjb25zdCByb3dJRCA9IHByaW1hcnlLZXkgPyB0aGlzLnJvdz8uZGF0YVtwcmltYXJ5S2V5XSA6IHRoaXMucm93Py5kYXRhO1xuICAgICAgICByZXR1cm4geyByb3dJRCwgY29sdW1uSUQ6IHRoaXMuY29sdW1uLmluZGV4LCByb3dJbmRleDogdGhpcy5fcm93SW5kZXggfHwgdGhpcy5yb3c/LmluZGV4IH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpZiB0aGUgcm93IGlzIGN1cnJlbnRseSBpbiBlZGl0IG1vZGUuXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGVkaXRNb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0NlbGxJbkVkaXRNb2RlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RhcnRzL2VuZHMgZWRpdCBtb2RlIGZvciB0aGUgY2VsbC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBjZWxsLmVkaXRNb2RlICA9ICFjZWxsLmVkaXRNb2RlO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneEdyaWRDZWxsXG4gICAgICovXG4gICAgcHVibGljIHNldCBlZGl0TW9kZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBpc0luRWRpdE1vZGUgPSB0aGlzLmlzQ2VsbEluRWRpdE1vZGUoKTtcbiAgICAgICAgaWYgKCF0aGlzLnJvdyB8fCB0aGlzLnJvdz8uZGVsZXRlZCB8fCBpc0luRWRpdE1vZGUgPT09IHZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZWRpdGFibGUgJiYgdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kRWRpdCgpO1xuICAgICAgICAgICAgLy8gVE9ETyBwb3NzaWJseSBkZWZpbmUgc2ltaWxhciBtZXRob2QgaW4gZ3JpZEFQSSwgd2hpY2ggZG9lcyBub3QgZW1pdCBldmVudFxuICAgICAgICAgICAgdGhpcy5ncmlkLmNydWRTZXJ2aWNlLmVudGVyRWRpdE1vZGUodGhpcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuZW5kQ2VsbEVkaXQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdyaWQubm90aWZ5Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgd2hldGhlciB0aGUgY2VsbCBpcyBzZWxlY3RlZC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGlzU2VsZWN0ZWQgPSB0aGlzLmNlbGwuc2VsZWN0ZWQ7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hHcmlkQ2VsbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5zZWxlY3RlZCh0aGlzLnNlbGVjdGlvbk5vZGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMvZGVzZWxlY3RzIHRoZSBjZWxsLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNlbGwuc2VsZWN0ZWQgPSB0cnVlLlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4R3JpZENlbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0IHNlbGVjdGVkKHZhbDogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5zZWxlY3Rpb25Ob2RlO1xuICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5hZGQobm9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5yZW1vdmUobm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkLm5vdGlmeUNoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGl2ZSgpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZ3JpZC5uYXZpZ2F0aW9uLmFjdGl2ZU5vZGU7XG4gICAgICAgIHJldHVybiBub2RlID8gbm9kZS5yb3cgPT09IHRoaXMucm93Py5pbmRleCAmJiBub2RlLmNvbHVtbiA9PT0gdGhpcy5jb2x1bW4udmlzaWJsZUluZGV4IDogZmFsc2U7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBjZWxsIHZhbHVlLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNlbGwudXBkYXRlKG5ld1ZhbHVlKTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hHcmlkQ2VsbFxuICAgICAqL1xuICAgIHB1YmxpYyB1cGRhdGUodmFsOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucm93Py5kZWxldGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVuZEVkaXQoKTtcblxuICAgICAgICBjb25zdCBjZWxsID0gdGhpcy5pc0NlbGxJbkVkaXRNb2RlKCkgPyB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuY2VsbCA6IHRoaXMuZ3JpZC5jcnVkU2VydmljZS5jcmVhdGVDZWxsKHRoaXMpO1xuICAgICAgICBjZWxsLmVkaXRWYWx1ZSA9IHZhbDtcbiAgICAgICAgdGhpcy5ncmlkLmdyaWRBUEkudXBkYXRlX2NlbGwoY2VsbCk7XG4gICAgICAgIHRoaXMuZ3JpZC5jcnVkU2VydmljZS5lbmRDZWxsRWRpdCgpO1xuICAgICAgICB0aGlzLmdyaWQubm90aWZ5Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgc2VsZWN0aW9uTm9kZSgpOiBJU2VsZWN0aW9uTm9kZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICByb3c6IHRoaXMucm93Py5pbmRleCxcbiAgICAgICAgICAgIGNvbHVtbjogdGhpcy5jb2x1bW4uY29sdW1uTGF5b3V0Q2hpbGQgPyB0aGlzLmNvbHVtbi5wYXJlbnQudmlzaWJsZUluZGV4IDogdGhpcy5jb2x1bW4udmlzaWJsZUluZGV4LFxuICAgICAgICAgICAgbGF5b3V0OiB0aGlzLmNvbHVtbi5jb2x1bW5MYXlvdXRDaGlsZCA/IHtcbiAgICAgICAgICAgICAgICByb3dTdGFydDogdGhpcy5jb2x1bW4ucm93U3RhcnQsXG4gICAgICAgICAgICAgICAgY29sU3RhcnQ6IHRoaXMuY29sdW1uLmNvbFN0YXJ0LFxuICAgICAgICAgICAgICAgIHJvd0VuZDogdGhpcy5jb2x1bW4ucm93RW5kLFxuICAgICAgICAgICAgICAgIGNvbEVuZDogdGhpcy5jb2x1bW4uY29sRW5kLFxuICAgICAgICAgICAgICAgIGNvbHVtblZpc2libGVJbmRleDogdGhpcy5jb2x1bW4udmlzaWJsZUluZGV4XG4gICAgICAgICAgICB9IDogbnVsbFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNDZWxsSW5FZGl0TW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuZ3JpZC5jcnVkU2VydmljZS5jZWxsSW5FZGl0TW9kZSkge1xuICAgICAgICAgICAgY29uc3QgY2VsbEluRWRpdE1vZGUgPSB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuY2VsbC5pZDtcbiAgICAgICAgICAgIGNvbnN0IGlzQ3VycmVudENlbGwgPSBjZWxsSW5FZGl0TW9kZS5yb3dJRCA9PT0gdGhpcy5pZC5yb3dJRCAmJlxuICAgICAgICAgICAgICAgIGNlbGxJbkVkaXRNb2RlLnJvd0luZGV4ID09PSB0aGlzLmlkLnJvd0luZGV4ICYmXG4gICAgICAgICAgICAgICAgY2VsbEluRWRpdE1vZGUuY29sdW1uSUQgPT09IHRoaXMuaWQuY29sdW1uSUQ7XG4gICAgICAgICAgICByZXR1cm4gaXNDdXJyZW50Q2VsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlbmRFZGl0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNDZWxsSW5FZGl0TW9kZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQuZ3JpZEFQSS51cGRhdGVfY2VsbCh0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuY2VsbCk7XG4gICAgICAgICAgICB0aGlzLmdyaWQuY3J1ZFNlcnZpY2UuZW5kQ2VsbEVkaXQoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -6,7 +6,6 @@ export class IgxRowEditTemplateDirective {
6
6
  static ngTemplateContextGuard(_directive, context) {
7
7
  return true;
8
8
  }
9
- ;
10
9
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxRowEditTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
10
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-rc.4", type: IgxRowEditTemplateDirective, isStandalone: true, selector: "[igxRowEdit]", ngImport: i0 }); }
12
11
  }
@@ -22,7 +21,6 @@ export class IgxRowEditTextDirective {
22
21
  static ngTemplateContextGuard(_directive, context) {
23
22
  return true;
24
23
  }
25
- ;
26
24
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxRowEditTextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
27
25
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-rc.4", type: IgxRowEditTextDirective, isStandalone: true, selector: "[igxRowEditText]", ngImport: i0 }); }
28
26
  }
@@ -38,7 +36,6 @@ export class IgxRowAddTextDirective {
38
36
  static ngTemplateContextGuard(_directive, context) {
39
37
  return true;
40
38
  }
41
- ;
42
39
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxRowAddTextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
43
40
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-rc.4", type: IgxRowAddTextDirective, isStandalone: true, selector: "[igxRowAddText]", ngImport: i0 }); }
44
41
  }
@@ -54,7 +51,6 @@ export class IgxRowEditActionsDirective {
54
51
  static ngTemplateContextGuard(_directive, context) {
55
52
  return true;
56
53
  }
57
- ;
58
54
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0-rc.4", ngImport: i0, type: IgxRowEditActionsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
59
55
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0-rc.4", type: IgxRowEditActionsDirective, isStandalone: true, selector: "[igxRowEditActions]", ngImport: i0 }); }
60
56
  }
@@ -127,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ng
127
123
  type: HostListener,
128
124
  args: ['keydown.Enter', ['$event']]
129
125
  }] } });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5yb3dFZGl0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9ncmlkLnJvd0VkaXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQWlKLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUV2TSx3QkFBd0I7QUFLeEIsTUFBTSxPQUFPLDJCQUEyQjtJQUM3QixNQUFNLENBQUMsc0JBQXNCLENBQUMsVUFBdUMsRUFDeEUsT0FBZ0I7UUFDaEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUFBLENBQUM7bUhBSk8sMkJBQTJCO3VHQUEzQiwyQkFBMkI7O2dHQUEzQiwyQkFBMkI7a0JBSnZDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs7QUFRRCx3QkFBd0I7QUFLeEIsTUFBTSxPQUFPLHVCQUF1QjtJQUN6QixNQUFNLENBQUMsc0JBQXNCLENBQUMsVUFBbUMsRUFDcEUsT0FBZ0I7UUFDaEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUFBLENBQUM7bUhBSk8sdUJBQXVCO3VHQUF2Qix1QkFBdUI7O2dHQUF2Qix1QkFBdUI7a0JBSm5DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsVUFBVSxFQUFFLElBQUk7aUJBQ25COztBQVFELHdCQUF3QjtBQUt4QixNQUFNLE9BQU8sc0JBQXNCO0lBQ3hCLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxVQUFrQyxFQUNuRSxPQUFnQjtRQUNoQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQUEsQ0FBQzttSEFKTyxzQkFBc0I7dUdBQXRC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QyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUN0QyxZQUFZO3VCQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVd0QyxZQUFZO3NCQURsQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU9uQyxXQUFXO3NCQURqQixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEdyaWRUeXBlLCBJZ3hHcmlkRW1wdHlUZW1wbGF0ZUNvbnRleHQsIElneEdyaWRSb3dFZGl0QWN0aW9uc1RlbXBsYXRlQ29udGV4dCwgSWd4R3JpZFJvd0VkaXRUZW1wbGF0ZUNvbnRleHQsIElneEdyaWRSb3dFZGl0VGV4dFRlbXBsYXRlQ29udGV4dCwgSUdYX0dSSURfQkFTRSB9IGZyb20gJy4vY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcblxuLyoqIEBoaWRkZW4gQGludGVybmFsICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hSb3dFZGl0XScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hSb3dFZGl0VGVtcGxhdGVEaXJlY3RpdmUge1xuICAgIHB1YmxpYyBzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZChfZGlyZWN0aXZlOiBJZ3hSb3dFZGl0VGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgICAgIGNvbnRleHQ6IHVua25vd24pOiBjb250ZXh0IGlzIElneEdyaWRSb3dFZGl0VGVtcGxhdGVDb250ZXh0IHsgXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gfVxuXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneFJvd0VkaXRUZXh0XScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hSb3dFZGl0VGV4dERpcmVjdGl2ZSB7XG4gICAgcHVibGljIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKF9kaXJlY3RpdmU6IElneFJvd0VkaXRUZXh0RGlyZWN0aXZlLFxuICAgICAgICBjb250ZXh0OiB1bmtub3duKTogY29udGV4dCBpcyBJZ3hHcmlkUm93RWRpdFRleHRUZW1wbGF0ZUNvbnRleHQgeyBcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfTtcbiB9XG5cbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4Um93QWRkVGV4dF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4Um93QWRkVGV4dERpcmVjdGl2ZSB7XG4gICAgcHVibGljIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKF9kaXJlY3RpdmU6IElneFJvd0FkZFRleHREaXJlY3RpdmUsXG4gICAgICAgIGNvbnRleHQ6IHVua25vd24pOiBjb250ZXh0IGlzIElneEdyaWRFbXB0eVRlbXBsYXRlQ29udGV4dCB7IFxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuIH1cblxuLyoqIEBoaWRkZW4gQGludGVybmFsICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hSb3dFZGl0QWN0aW9uc10nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4Um93RWRpdEFjdGlvbnNEaXJlY3RpdmUge1xuICAgIHB1YmxpYyBzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZChfZGlyZWN0aXZlOiBJZ3hSb3dFZGl0QWN0aW9uc0RpcmVjdGl2ZSxcbiAgICAgICAgY29udGV4dDogdW5rbm93bik6IGNvbnRleHQgaXMgSWd4R3JpZFJvd0VkaXRBY3Rpb25zVGVtcGxhdGVDb250ZXh0IHsgXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gfVxuXG5cbi8vIFRPRE86IFJlZmFjdG9yIGNpcmN1bGFyIHJlZiwgZGVwcyBhbmQgbG9naWNcbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6IGBbaWd4Um93RWRpdFRhYlN0b3BdYCxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneFJvd0VkaXRUYWJTdG9wRGlyZWN0aXZlIHtcbiAgICBwcml2YXRlIGN1cnJlbnRDZWxsSW5kZXg6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoSUdYX0dSSURfQkFTRSkgcHVibGljIGdyaWQ6IEdyaWRUeXBlLCBwdWJsaWMgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pIHt9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLlRhYicsIFtgJGV2ZW50YF0pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5TaGlmdC5UYWInLCBbYCRldmVudGBdKVxuICAgIHB1YmxpYyBoYW5kbGVUYWIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGlmICgodGhpcy5ncmlkLnJvd0VkaXRUYWJzLmxhc3QgPT09IHRoaXMgJiYgIWV2ZW50LnNoaWZ0S2V5KSB8fFxuICAgICAgICAgICAgKHRoaXMuZ3JpZC5yb3dFZGl0VGFicy5maXJzdCA9PT0gdGhpcyAmJiBldmVudC5zaGlmdEtleSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLm1vdmUoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5Fc2NhcGUnLCBbYCRldmVudGBdKVxuICAgIHB1YmxpYyBoYW5kbGVFc2NhcGUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ncmlkLmNydWRTZXJ2aWNlLmVuZEVkaXQoZmFsc2UsIGV2ZW50KTtcbiAgICAgICAgdGhpcy5ncmlkLnRib2R5Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkVudGVyJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgaGFuZGxlRW50ZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTW92ZXMgZm9jdXMgdG8gZmlyc3QvbGFzdCBlZGl0YWJsZSBjZWxsIGluIHRoZSBlZGl0YWJsZSByb3cgYW5kIHB1dCB0aGUgY2VsbCBpbiBlZGl0IG1vZGUuXG4gICAgICogSWYgY2VsbCBpcyBvdXQgb2YgdmlldyBmaXJzdCBzY3JvbGxzIHRvIHRoZSBjZWxsXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXZlbnQga2V5Ym9hcmQgZXZlbnQgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB3aGV0aGVyIFNISUZUIGtleSB3YXMgcHJlc3NlZFxuICAgICAqL1xuICAgIHByaXZhdGUgbW92ZShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmN1cnJlbnRDZWxsSW5kZXggPSBldmVudC5zaGlmdEtleSA/IHRoaXMuZ3JpZC5sYXN0RWRpdGFibGVDb2x1bW5JbmRleCA6IHRoaXMuZ3JpZC5maXJzdEVkaXRhYmxlQ29sdW1uSW5kZXg7XG4gICAgICAgIHRoaXMuZ3JpZC5uYXZpZ2F0aW9uLmFjdGl2ZU5vZGUucm93ID0gdGhpcy5ncmlkLmNydWRTZXJ2aWNlLnJvd0luRWRpdE1vZGUuaW5kZXg7XG4gICAgICAgIHRoaXMuZ3JpZC5uYXZpZ2F0aW9uLmFjdGl2ZU5vZGUuY29sdW1uID0gdGhpcy5jdXJyZW50Q2VsbEluZGV4O1xuICAgICAgICB0aGlzLmdyaWQubmF2aWdhdGVUbyh0aGlzLmdyaWQuY3J1ZFNlcnZpY2Uucm93SW5FZGl0TW9kZS5pbmRleCwgdGhpcy5jdXJyZW50Q2VsbEluZGV4LCAob2JqKSA9PiB7XG4gICAgICAgICAgICBvYmoudGFyZ2V0LmFjdGl2YXRlKGV2ZW50KTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5yb3dFZGl0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9ncmlkLnJvd0VkaXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQWlKLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUV2TSx3QkFBd0I7QUFLeEIsTUFBTSxPQUFPLDJCQUEyQjtJQUM3QixNQUFNLENBQUMsc0JBQXNCLENBQUMsVUFBdUMsRUFDeEUsT0FBZ0I7UUFDaEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzttSEFKUSwyQkFBMkI7dUdBQTNCLDJCQUEyQjs7Z0dBQTNCLDJCQUEyQjtrQkFKdkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLElBQUk7aUJBQ25COztBQVFELHdCQUF3QjtBQUt4QixNQUFNLE9BQU8sdUJBQXVCO0lBQ3pCLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxVQUFtQyxFQUNwRSxPQUFnQjtRQUNoQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO21IQUpRLHVCQUF1Qjt1R0FBdkIsdUJBQXVCOztnR0FBdkIsdUJBQXVCO2tCQUpuQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQjs7QUFRRCx3QkFBd0I7QUFLeEIsTUFBTSxPQUFPLHNCQUFzQjtJQUN4QixNQUFNLENBQUMsc0JBQXNCLENBQUMsVUFBa0MsRUFDbkUsT0FBZ0I7UUFDaEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzttSEFKUSxzQkFBc0I7dUdBQXRCLHNCQUFzQjs7Z0dBQXRCLHNCQUFzQjtrQkFKbEMs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dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBV3RDLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBT25DLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3JpZFR5cGUsIElneEdyaWRFbXB0eVRlbXBsYXRlQ29udGV4dCwgSWd4R3JpZFJvd0VkaXRBY3Rpb25zVGVtcGxhdGVDb250ZXh0LCBJZ3hHcmlkUm93RWRpdFRlbXBsYXRlQ29udGV4dCwgSWd4R3JpZFJvd0VkaXRUZXh0VGVtcGxhdGVDb250ZXh0LCBJR1hfR1JJRF9CQVNFIH0gZnJvbSAnLi9jb21tb24vZ3JpZC5pbnRlcmZhY2UnO1xuXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneFJvd0VkaXRdJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneFJvd0VkaXRUZW1wbGF0ZURpcmVjdGl2ZSB7XG4gICAgcHVibGljIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKF9kaXJlY3RpdmU6IElneFJvd0VkaXRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICAgICAgY29udGV4dDogdW5rbm93bik6IGNvbnRleHQgaXMgSWd4R3JpZFJvd0VkaXRUZW1wbGF0ZUNvbnRleHQgeyBcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuIH1cblxuLyoqIEBoaWRkZW4gQGludGVybmFsICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hSb3dFZGl0VGV4dF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4Um93RWRpdFRleHREaXJlY3RpdmUge1xuICAgIHB1YmxpYyBzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZChfZGlyZWN0aXZlOiBJZ3hSb3dFZGl0VGV4dERpcmVjdGl2ZSxcbiAgICAgICAgY29udGV4dDogdW5rbm93bik6IGNvbnRleHQgaXMgSWd4R3JpZFJvd0VkaXRUZXh0VGVtcGxhdGVDb250ZXh0IHsgXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiB9XG5cbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4Um93QWRkVGV4dF0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgSWd4Um93QWRkVGV4dERpcmVjdGl2ZSB7XG4gICAgcHVibGljIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKF9kaXJlY3RpdmU6IElneFJvd0FkZFRleHREaXJlY3RpdmUsXG4gICAgICAgIGNvbnRleHQ6IHVua25vd24pOiBjb250ZXh0IGlzIElneEdyaWRFbXB0eVRlbXBsYXRlQ29udGV4dCB7IFxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gfVxuXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneFJvd0VkaXRBY3Rpb25zXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hSb3dFZGl0QWN0aW9uc0RpcmVjdGl2ZSB7XG4gICAgcHVibGljIHN0YXRpYyBuZ1RlbXBsYXRlQ29udGV4dEd1YXJkKF9kaXJlY3RpdmU6IElneFJvd0VkaXRBY3Rpb25zRGlyZWN0aXZlLFxuICAgICAgICBjb250ZXh0OiB1bmtub3duKTogY29udGV4dCBpcyBJZ3hHcmlkUm93RWRpdEFjdGlvbnNUZW1wbGF0ZUNvbnRleHQgeyBcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuIH1cblxuXG4vLyBUT0RPOiBSZWZhY3RvciBjaXJjdWxhciByZWYsIGRlcHMgYW5kIGxvZ2ljXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiBgW2lneFJvd0VkaXRUYWJTdG9wXWAsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hSb3dFZGl0VGFiU3RvcERpcmVjdGl2ZSB7XG4gICAgcHJpdmF0ZSBjdXJyZW50Q2VsbEluZGV4OiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KElHWF9HUklEX0JBU0UpIHB1YmxpYyBncmlkOiBHcmlkVHlwZSwgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5UYWInLCBbYCRldmVudGBdKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uU2hpZnQuVGFiJywgW2AkZXZlbnRgXSlcbiAgICBwdWJsaWMgaGFuZGxlVGFiKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoKHRoaXMuZ3JpZC5yb3dFZGl0VGFicy5sYXN0ID09PSB0aGlzICYmICFldmVudC5zaGlmdEtleSkgfHxcbiAgICAgICAgICAgICh0aGlzLmdyaWQucm93RWRpdFRhYnMuZmlyc3QgPT09IHRoaXMgJiYgZXZlbnQuc2hpZnRLZXkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5tb3ZlKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uRXNjYXBlJywgW2AkZXZlbnRgXSlcbiAgICBwdWJsaWMgaGFuZGxlRXNjYXBlKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ3JpZC5jcnVkU2VydmljZS5lbmRFZGl0KGZhbHNlLCBldmVudCk7XG4gICAgICAgIHRoaXMuZ3JpZC50Ym9keS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5FbnRlcicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIGhhbmRsZUVudGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1vdmVzIGZvY3VzIHRvIGZpcnN0L2xhc3QgZWRpdGFibGUgY2VsbCBpbiB0aGUgZWRpdGFibGUgcm93IGFuZCBwdXQgdGhlIGNlbGwgaW4gZWRpdCBtb2RlLlxuICAgICAqIElmIGNlbGwgaXMgb3V0IG9mIHZpZXcgZmlyc3Qgc2Nyb2xscyB0byB0aGUgY2VsbFxuICAgICAqXG4gICAgICogQHBhcmFtIGV2ZW50IGtleWJvYXJkIGV2ZW50IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgd2hldGhlciBTSElGVCBrZXkgd2FzIHByZXNzZWRcbiAgICAgKi9cbiAgICBwcml2YXRlIG1vdmUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50Q2VsbEluZGV4ID0gZXZlbnQuc2hpZnRLZXkgPyB0aGlzLmdyaWQubGFzdEVkaXRhYmxlQ29sdW1uSW5kZXggOiB0aGlzLmdyaWQuZmlyc3RFZGl0YWJsZUNvbHVtbkluZGV4O1xuICAgICAgICB0aGlzLmdyaWQubmF2aWdhdGlvbi5hY3RpdmVOb2RlLnJvdyA9IHRoaXMuZ3JpZC5jcnVkU2VydmljZS5yb3dJbkVkaXRNb2RlLmluZGV4O1xuICAgICAgICB0aGlzLmdyaWQubmF2aWdhdGlvbi5hY3RpdmVOb2RlLmNvbHVtbiA9IHRoaXMuY3VycmVudENlbGxJbmRleDtcbiAgICAgICAgdGhpcy5ncmlkLm5hdmlnYXRlVG8odGhpcy5ncmlkLmNydWRTZXJ2aWNlLnJvd0luRWRpdE1vZGUuaW5kZXgsIHRoaXMuY3VycmVudENlbGxJbmRleCwgKG9iaikgPT4ge1xuICAgICAgICAgICAgb2JqLnRhcmdldC5hY3RpdmF0ZShldmVudCk7XG4gICAgICAgICAgICB0aGlzLmdyaWQuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -49,12 +49,10 @@ export class IgxPivotDataSelectorComponent {
49
49
  get dims() {
50
50
  return this._grid?.allDimensions || [];
51
51
  }
52
- ;
53
52
  /** @hidden @internal */
54
53
  get values() {
55
54
  return this._grid?.pivotConfiguration.values || [];
56
55
  }
57
- ;
58
56
  constructor(renderer, cdr) {
59
57
  this.renderer = renderer;
60
58
  this.cdr = cdr;
@@ -529,4 +527,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ng
529
527
  }], grid: [{
530
528
  type: Input
531
529
  }] } });
532
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtZGF0YS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvcGl2b3QtZ3JpZC9waXZvdC1kYXRhLXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9waXZvdC1ncmlkL3Bpdm90LWRhdGEtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFFSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXhELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBOEcsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUV4TyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzRSxPQUFPLEVBQ0gsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUdwQixpQkFBaUIsRUFDcEIsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxPQUFPLEVBSUgsa0JBQWtCLEVBQ3JCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztB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QixNQUFNO2dCQVFBLFFBQVE7c0JBRGQsV0FBVzt1QkFBQywrQkFBK0I7Z0JBOEdqQyxJQUFJO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VBbmltYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvYW5pbWF0aW9uc1wiO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBmYWRlSW4sIGZhZGVPdXQgfSBmcm9tIFwiLi4vLi4vYW5pbWF0aW9ucy9mYWRlXCI7XG5pbXBvcnQgeyBEaXNwbGF5RGVuc2l0eSB9IGZyb20gXCIuLi8uLi9jb3JlL2RlbnNpdHlcIjtcbmltcG9ydCB7IFNvcnRpbmdEaXJlY3Rpb24gfSBmcm9tIFwiLi4vLi4vZGF0YS1vcGVyYXRpb25zL3NvcnRpbmctc3RyYXRlZ3lcIjtcbmltcG9ydCB7IElEcmFnQmFzZUV2ZW50QXJncywgSURyYWdHaG9zdEJhc2VFdmVudEFyZ3MsIElEcmFnTW92ZUV2ZW50QXJncywgSURyb3BCYXNlRXZlbnRBcmdzLCBJRHJvcERyb3BwZWRFdmVudEFyZ3MsIElneERyb3BEaXJlY3RpdmUsIElneERyYWdEaXJlY3RpdmUsIElneERyYWdIYW5kbGVEaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlcy9kcmFnLWRyb3AvZHJhZy1kcm9wLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgSVNlbGVjdGlvbkV2ZW50QXJncyB9IGZyb20gXCIuLi8uLi9kcm9wLWRvd24vZHJvcC1kb3duLmNvbW1vblwiO1xuaW1wb3J0IHsgSWd4RHJvcERvd25Db21wb25lbnQgfSBmcm9tIFwiLi4vLi4vZHJvcC1kb3duL2Ryb3AtZG93bi5jb21wb25lbnRcIjtcbmltcG9ydCB7XG4gICAgQWJzb2x1dGVTY3JvbGxTdHJhdGVneSxcbiAgICBBdXRvUG9zaXRpb25TdHJhdGVneSxcbiAgICBPdmVybGF5U2V0dGluZ3MsXG4gICAgUG9zaXRpb25TZXR0aW5ncyxcbiAgICBWZXJ0aWNhbEFsaWdubWVudFxufSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcHVibGljX2FwaVwiO1xuaW1wb3J0IHsgQ29sdW1uVHlwZSwgUGl2b3RHcmlkVHlwZSB9IGZyb20gXCIuLi9jb21tb24vZ3JpZC5pbnRlcmZhY2VcIjtcbmltcG9ydCB7XG4gICAgSVBpdm90QWdncmVnYXRvcixcbiAgICBJUGl2b3REaW1lbnNpb24sXG4gICAgSVBpdm90VmFsdWUsXG4gICAgUGl2b3REaW1lbnNpb25UeXBlXG59IGZyb20gXCIuL3Bpdm90LWdyaWQuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBQaXZvdFV0aWwgfSBmcm9tICcuL3Bpdm90LXV0aWwnO1xuaW1wb3J0IHsgSWd4RmlsdGVyUGl2b3RJdGVtc1BpcGUgfSBmcm9tIFwiLi9waXZvdC1ncmlkLnBpcGVzXCI7XG5pbXBvcnQgeyBJZ3hEcm9wRG93bkl0ZW1Db21wb25lbnQgfSBmcm9tIFwiLi4vLi4vZHJvcC1kb3duL2Ryb3AtZG93bi1pdGVtLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgSWd4RHJvcERvd25JdGVtTmF2aWdhdGlvbkRpcmVjdGl2ZSB9IGZyb20gXCIuLi8uLi9kcm9wLWRvd24vZHJvcC1kb3duLW5hdmlnYXRpb24uZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBJZ3hFeHBhbnNpb25QYW5lbEJvZHlDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC1ib2R5LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgSWd4Q2hpcENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jaGlwcy9jaGlwLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgSWd4RXhwYW5zaW9uUGFuZWxUaXRsZURpcmVjdGl2ZSB9IGZyb20gXCIuLi8uLi9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLmRpcmVjdGl2ZXNcIjtcbmltcG9ydCB7IElneEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgSWd4RXhwYW5zaW9uUGFuZWxDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneEFjY29yZGlvbkNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9hY2NvcmRpb24vYWNjb3JkaW9uLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgSWd4Q2hlY2tib3hDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50XCI7XG5pbXBvcnQgeyBJZ3hMaXN0SXRlbUNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9saXN0L2xpc3QtaXRlbS5jb21wb25lbnRcIjtcbmltcG9ydCB7IE5nRm9yLCBOZ0lmIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgSWd4TGlzdENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9saXN0L2xpc3QuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBJZ3hJbnB1dERpcmVjdGl2ZSB9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL2lucHV0L2lucHV0LmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgSWd4UHJlZml4RGlyZWN0aXZlIH0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvcHJlZml4L3ByZWZpeC5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IElneEljb25Db21wb25lbnQgfSBmcm9tIFwiLi4vLi4vaWNvbi9pY29uLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgSWd4SW5wdXRHcm91cENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC5jb21wb25lbnRcIjtcblxuaW50ZXJmYWNlIElEYXRhU2VsZWN0b3JQYW5lbCB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGkxOG46IHN0cmluZztcbiAgICB0eXBlPzogUGl2b3REaW1lbnNpb25UeXBlO1xuICAgIGRhdGFLZXk6IHN0cmluZztcbiAgICBpY29uOiBzdHJpbmc7XG4gICAgaXRlbUtleTogc3RyaW5nO1xuICAgIGRpc3BsYXlLZXk/OiBzdHJpbmc7XG4gICAgc29ydGFibGU6IGJvb2xlYW47XG4gICAgZHJhZ0NoYW5uZWxzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBQaXZvdCBEYXRhIFNlbGVjdG9yIHByb3ZpZGVzIG1lYW5zIHRvIGNvbmZpZ3VyZSB0aGUgcGl2b3Qgc3RhdGUgb2YgdGhlIFBpdm90IEdyaWQgdmlhIGEgdmVydGljYWwgcGFuZWwgVUlcbiAqXG4gKiBAaWd4TW9kdWxlIElneFBpdm90R3JpZE1vZHVsZVxuICogQGlneEdyb3VwIEdyaWRzICYgTGlzdHNcbiAqIEBpZ3hLZXl3b3JkcyBkYXRhIHNlbGVjdG9yLCBwaXZvdCwgZ3JpZFxuICogQGlneFRoZW1lIHBpdm90LWRhdGEtc2VsZWN0b3ItdGhlbWVcbiAqIEByZW1hcmtzXG4gKiBUaGUgSWduaXRlIFVJIERhdGEgU2VsZWN0b3IgaGFzIGEgc2VhcmNoYWJsZSBsaXN0IHdpdGggdGhlIGdyaWQgZGF0YSBjb2x1bW5zLFxuICogdGhlcmUgYXJlIGFsc28gZm91ciBleHBhbmRhYmxlIGFyZWFzIHVuZGVybmVhdGggZm9yIGZpbHRlcnMsIHJvd3MsIGNvbHVtbnMsIGFuZCB2YWx1ZXNcbiAqIGlzIHVzZWQgZm9yIGdyb3VwaW5nIGFuZCBhZ2dyZWdhdGluZyBzaW1wbGUgZmxhdCBkYXRhIGludG8gYSBwaXZvdCB0YWJsZS5cbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8aWd4LXBpdm90LWdyaWQgI2dyaWQxIFtkYXRhXT1cImRhdGFcIiBbcGl2b3RDb25maWd1cmF0aW9uXT1cImNvbmZpZ3VyYXRpb25cIj5cbiAqIDwvaWd4LXBpdm90LWdyaWQ+XG4gKiA8aWd4LXBpdm90LWRhdGEtc2VsZWN0b3IgW2dyaWRdPVwiZ3JpZDFcIj48L2lneC1waXZvdC1kYXRhLXNlbGVjdG9yPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcImlneC1waXZvdC1kYXRhLXNlbGVjdG9yXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9waXZvdC1kYXRhLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbSWd4SW5wdXRHcm91cENvbXBvbmVudCwgSWd4SWNvbkNvbXBvbmVudCwgSWd4UHJlZml4RGlyZWN0aXZlLCBJZ3hJbnB1dERpcmVjdGl2ZSwgSWd4TGlzdENvbXBvbmVudCwgTmdGb3IsIElneExpc3RJdGVtQ29tcG9uZW50LCBJZ3hDaGVja2JveENvbXBvbmVudCwgSWd4QWNjb3JkaW9uQ29tcG9uZW50LCBJZ3hFeHBhbnNpb25QYW5lbENvbXBvbmVudCwgSWd4RXhwYW5zaW9uUGFuZWxIZWFkZXJDb21wb25lbnQsIElneERyb3BEaXJlY3RpdmUsIElneEV4cGFuc2lvblBhbmVsVGl0bGVEaXJlY3RpdmUsIElneENoaXBDb21wb25lbnQsIElneEV4cGFuc2lvblBhbmVsQm9keUNvbXBvbmVudCwgTmdJZiwgSWd4RHJhZ0RpcmVjdGl2ZSwgSWd4RHJvcERvd25JdGVtTmF2aWdhdGlvbkRpcmVjdGl2ZSwgSWd4RHJhZ0hhbmRsZURpcmVjdGl2ZSwgSWd4RHJvcERvd25Db21wb25lbnQsIElneERyb3BEb3duSXRlbUNvbXBvbmVudCwgSWd4RmlsdGVyUGl2b3RJdGVtc1BpcGVdXG59KVxuZXhwb3J0IGNsYXNzIElneFBpdm90RGF0YVNlbGVjdG9yQ29tcG9uZW50IHtcblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB3aGV0aGVyIHRoZSBjb2x1bW5zIHBhbmVsIGlzIGV4cGFuZGVkXG4gICAgICogR2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBjb25zdCBjb2x1bW5zUGFuZWxTdGF0ZTogYm9vbGVhbiA9IHRoaXMuZGF0YVNlbGVjdG9yLmNvbHVtbnNFeHBhbmRlZDtcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1waXZvdC1kYXRhLXNlbGVjdG9yIFtncmlkXT1cImdyaWQxXCIgW2NvbHVtbnNFeHBhbmRlZF09XCJjb2x1bW5zUGFuZWxTdGF0ZVwiPjwvaWd4LXBpdm90LWRhdGEtc2VsZWN0b3I+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBUd28td2F5IGRhdGEgYmluZGluZzpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1waXZvdC1kYXRhLXNlbGVjdG9yIFtncmlkXT1cImdyaWQxXCIgWyhjb2x1bW5zRXhwYW5kZWQpXT1cImNvbHVtbnNQYW5lbFN0YXRlXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb2x1bW5zRXhwYW5kZWQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjb2x1bW5zRXhwYW5kZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgd2hldGhlciB0aGUgcm93cyBwYW5lbCBpcyBleHBhbmRlZFxuICAgICAqIEdldFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgY29uc3Qgcm93c1BhbmVsU3RhdGU6IGJvb2xlYW4gPSB0aGlzLmRhdGFTZWxlY3Rvci5yb3dzRXhwYW5kZWQ7XG4gICAgICogYGBgXG4gICAgICogU2V0XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvciBbZ3JpZF09XCJncmlkMVwiIFtyb3dzRXhwYW5kZWRdPVwicm93c1BhbmVsU3RhdGVcIj48L2lneC1waXZvdC1kYXRhLXNlbGVjdG9yPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogVHdvLXdheSBkYXRhIGJpbmRpbmc6XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvciBbZ3JpZF09XCJncmlkMVwiIFsocm93c0V4cGFuZGVkKV09XCJyb3dzUGFuZWxTdGF0ZVwiPjwvaWd4LXBpdm90LWRhdGEtc2VsZWN0b3I+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcm93c0V4cGFuZGVkID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcm93c0V4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHdoZXRoZXIgdGhlIGZpbHRlcnMgcGFuZWwgaXMgZXhwYW5kZWRcbiAgICAgKiBHZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IGZpbHRlcnNQYW5lbFN0YXRlOiBib29sZWFuID0gdGhpcy5kYXRhU2VsZWN0b3IuZmlsdGVyc0V4cGFuZGVkO1xuICAgICAqIGBgYFxuICAgICAqIFNldFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXBpdm90LWRhdGEtc2VsZWN0b3IgW2dyaWRdPVwiZ3JpZDFcIiBbZmlsdGVyc0V4cGFuZGVkXT1cImZpbHRlcnNQYW5lbFN0YXRlXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIFR3by13YXkgZGF0YSBiaW5kaW5nOlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXBpdm90LWRhdGEtc2VsZWN0b3IgW2dyaWRdPVwiZ3JpZDFcIiBbKGZpbHRlcnNFeHBhbmRlZCldPVwiZmlsdGVyc1BhbmVsU3RhdGVcIj48L2lneC1waXZvdC1kYXRhLXNlbGVjdG9yPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGZpbHRlcnNFeHBhbmRlZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGZpbHRlcnNFeHBhbmRlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB3aGV0aGVyIHRoZSB2YWx1ZXMgcGFuZWwgaXMgZXhwYW5kZWRcbiAgICAgKiBHZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IHZhbHVlc1BhbmVsU3RhdGU6IGJvb2xlYW4gPSB0aGlzLmRhdGFTZWxlY3Rvci52YWx1ZXNFeHBhbmRlZDtcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1waXZvdC1kYXRhLXNlbGVjdG9yIFtncmlkXT1cImdyaWQxXCIgW3ZhbHVlc0V4cGFuZGVkXT1cInZhbHVlc1BhbmVsU3RhdGVcIj48L2lneC1waXZvdC1kYXRhLXNlbGVjdG9yPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogVHdvLXdheSBkYXRhIGJpbmRpbmc6XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvciBbZ3JpZF09XCJncmlkMVwiIFsodmFsdWVzRXhwYW5kZWQpXT1cInZhbHVlc1BhbmVsU3RhdGVcIj48L2lneC1waXZvdC1kYXRhLXNlbGVjdG9yPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbHVlc0V4cGFuZGVkID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdmFsdWVzRXhwYW5kZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICBwcml2YXRlIF9ncmlkOiBQaXZvdEdyaWRUeXBlO1xuICAgIHByaXZhdGUgX2Ryb3BEZWx0YSA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKiovXG4gICAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JcIilcbiAgICBwdWJsaWMgY3NzQ2xhc3MgPSBcImlneC1waXZvdC1kYXRhLXNlbGVjdG9yXCI7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICoqL1xuICAgIHB1YmxpYyBkaW1lbnNpb25zOiBJUGl2b3REaW1lbnNpb25bXTtcblxuICAgIHByaXZhdGUgX3N1Yk1lbnVQb3NpdGlvblNldHRpbmdzOiBQb3NpdGlvblNldHRpbmdzID0ge1xuICAgICAgICB2ZXJ0aWNhbFN0YXJ0UG9pbnQ6IFZlcnRpY2FsQWxpZ25tZW50LkJvdHRvbSxcbiAgICAgICAgY2xvc2VBbmltYXRpb246IHVuZGVmaW5lZCxcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBfc3ViTWVudU92ZXJsYXlTZXR0aW5nczogT3ZlcmxheVNldHRpbmdzID0ge1xuICAgICAgICBjbG9zZU9uT3V0c2lkZUNsaWNrOiB0cnVlLFxuICAgICAgICBtb2RhbDogZmFsc2UsXG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IG5ldyBBdXRvUG9zaXRpb25TdHJhdGVneShcbiAgICAgICAgICAgIHRoaXMuX3N1Yk1lbnVQb3NpdGlvblNldHRpbmdzXG4gICAgICAgICksXG4gICAgICAgIHNjcm9sbFN0cmF0ZWd5OiBuZXcgQWJzb2x1dGVTY3JvbGxTdHJhdGVneSgpLFxuICAgIH07XG4gICAgcHVibGljIGFuaW1hdGlvblNldHRpbmdzID0ge1xuICAgICAgICBjbG9zZUFuaW1hdGlvbjogdXNlQW5pbWF0aW9uKGZhZGVPdXQsIHtcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBcIjBtc1wiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICAgIG9wZW5BbmltYXRpb246IHVzZUFuaW1hdGlvbihmYWRlSW4sIHtcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBcIjBtc1wiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgfTtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBhZ2dyZWdhdGVMaXN0OiBJUGl2b3RBZ2dyZWdhdG9yW10gPSBbXTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgdmFsdWU6IElQaXZvdFZhbHVlO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnaG9zdFRleHQ6IHN0cmluZztcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2hvc3RXaWR0aDogbnVtYmVyO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBkcm9wQWxsb3dlZDogYm9vbGVhbjtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IGRpbXMoKSA6IElQaXZvdERpbWVuc2lvbltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dyaWQ/LmFsbERpbWVuc2lvbnMgfHwgW107XG4gICAgfTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IHZhbHVlcygpOiBJUGl2b3RWYWx1ZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dyaWQ/LnBpdm90Q29uZmlndXJhdGlvbi52YWx1ZXMgfHwgW107XG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgX3BhbmVsczogSURhdGFTZWxlY3RvclBhbmVsW10gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiRmlsdGVyc1wiLFxuICAgICAgICAgICAgaTE4bjogJ2lneF9ncmlkX3Bpdm90X3NlbGVjdG9yX2ZpbHRlcnMnLFxuICAgICAgICAgICAgdHlwZTogUGl2b3REaW1lbnNpb25UeXBlLkZpbHRlcixcbiAgICAgICAgICAgIGRhdGFLZXk6IFwiZmlsdGVyRGltZW5zaW9uc1wiLFxuICAgICAgICAgICAgaWNvbjogXCJmaWx0ZXJfbGlzdFwiLFxuICAgICAgICAgICAgaXRlbUtleTogXCJtZW1iZXJOYW1lXCIsXG4gICAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBkcmFnQ2hhbm5lbHM6IFtcIkZpbHRlcnNcIiwgXCJDb2x1bW5zXCIsIFwiUm93c1wiXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIkNvbHVtbnNcIixcbiAgICAgICAgICAgIGkxOG46ICdpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl9jb2x1bW5zJyxcbiAgICAgICAgICAgIHR5cGU6IFBpdm90RGltZW5zaW9uVHlwZS5Db2x1bW4sXG4gICAgICAgICAgICBkYXRhS2V5OiBcImNvbHVtbkRpbWVuc2lvbnNcIixcbiAgICAgICAgICAgIGljb246IFwidmlld19jb2x1bW5cIixcbiAgICAgICAgICAgIGl0ZW1LZXk6IFwibWVtYmVyTmFtZVwiLFxuICAgICAgICAgICAgc29ydGFibGU6IHRydWUsXG4gICAgICAgICAgICBkcmFnQ2hhbm5lbHM6IFtcIkZpbHRlcnNcIiwgXCJDb2x1bW5zXCIsIFwiUm93c1wiXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIlJvd3NcIixcbiAgICAgICAgICAgIGkxOG46ICdpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl9yb3dzJyxcbiAgICAgICAgICAgIHR5cGU6IFBpdm90RGltZW5zaW9uVHlwZS5Sb3csXG4gICAgICAgICAgICBkYXRhS2V5OiBcInJvd0RpbWVuc2lvbnNcIixcbiAgICAgICAgICAgIGljb246IFwidGFibGVfcm93c1wiLFxuICAgICAgICAgICAgaXRlbUtleTogXCJtZW1iZXJOYW1lXCIsXG4gICAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGRyYWdDaGFubmVsczogW1wiRmlsdGVyc1wiLCBcIkNvbHVtbnNcIiwgXCJSb3dzXCJdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiVmFsdWVzXCIsXG4gICAgICAgICAgICBpMThuOiAnaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3JfdmFsdWVzJyxcbiAgICAgICAgICAgIHR5cGU6IG51bGwsXG4gICAgICAgICAgICBkYXRhS2V5OiBcInZhbHVlc1wiLFxuICAgICAgICAgICAgaWNvbjogXCJmdW5jdGlvbnNcIixcbiAgICAgICAgICAgIGl0ZW1LZXk6IFwibWVtYmVyXCIsXG4gICAgICAgICAgICBkaXNwbGF5S2V5OiAnZGlzcGxheU5hbWUnLFxuICAgICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgZHJhZ0NoYW5uZWxzOiBbXCJWYWx1ZXNcIl1cbiAgICAgICAgfSxcbiAgICBdO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGRpc3BsYXlEZW5zaXR5KCk6IERpc3BsYXlEZW5zaXR5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZD8uZGlzcGxheURlbnNpdHk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHRoYXQgc2V0cyB0aGUgZ3JpZC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZ3JpZCh2YWx1ZTogUGl2b3RHcmlkVHlwZSkge1xuICAgICAgICB0aGlzLl9ncmlkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgZ3JpZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGdyaWQoKTogUGl2b3RHcmlkVHlwZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ncmlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25JdGVtU29ydChcbiAgICAgICAgXzogRXZlbnQsXG4gICAgICAgIGRpbWVuc2lvbjogSVBpdm90RGltZW5zaW9uLFxuICAgICAgICBkaW1lbnNpb25UeXBlOiBQaXZvdERpbWVuc2lvblR5cGVcbiAgICApIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXRoaXMuX3BhbmVscy5maW5kKFxuICAgICAgICAgICAgICAgIChwYW5lbDogSURhdGFTZWxlY3RvclBhbmVsKSA9PiBwYW5lbC50eXBlID09PSBkaW1lbnNpb25UeXBlXG4gICAgICAgICAgICApLnNvcnRhYmxlXG4gICAgICAgIClcbiAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICBjb25zdCBzdGFydERpcmVjdGlvbiA9IGRpbWVuc2lvbi5zb3J0RGlyZWN0aW9uIHx8IFNvcnRpbmdEaXJlY3Rpb24uTm9uZTtcbiAgICAgICAgY29uc3QgZGlyZWN0aW9uID0gc3RhcnREaXJlY3Rpb24gKyAxID4gU29ydGluZ0RpcmVjdGlvbi5EZXNjID9cbiAgICAgICAgICAgIFNvcnRpbmdEaXJlY3Rpb24uTm9uZSA6IHN0YXJ0RGlyZWN0aW9uICsgMTtcbiAgICAgICAgdGhpcy5ncmlkLnNvcnREaW1lbnNpb24oZGltZW5zaW9uLCBkaXJlY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25GaWx0ZXJpbmdJY29uUG9pbnRlckRvd24oZXZlbnQ6IFBvaW50ZXJFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uRmlsdGVyaW5nSWNvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50LCBkaW1lbnNpb246IElQaXZvdERpbWVuc2lvbikge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICBsZXQgZGltID0gZGltZW5zaW9uO1xuICAgICAgICBsZXQgY29sOiBDb2x1bW5UeXBlO1xuXG4gICAgICAgIHdoaWxlIChkaW0pIHtcbiAgICAgICAgICAgIGNvbCA9IHRoaXMuZ3JpZC5kaW1lbnNpb25EYXRhQ29sdW1ucy5maW5kKFxuICAgICAgICAgICAgICAgICh4KSA9PiB4LmZpZWxkID09PSBkaW0ubWVtYmVyTmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChjb2wpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGltID0gZGltLmNoaWxkTGV2ZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdyaWQuZmlsdGVyaW5nU2VydmljZS50b2dnbGVGaWx0ZXJEcm9wZG93bihldmVudC50YXJnZXQsIGNvbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXREaW1lbnNpb25TdGF0ZShkaW1lbnNpb25UeXBlOiBQaXZvdERpbWVuc2lvblR5cGUpIHtcbiAgICAgICAgc3dpdGNoIChkaW1lbnNpb25UeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFBpdm90RGltZW5zaW9uVHlwZS5Sb3c6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5yb3dEaW1lbnNpb25zO1xuICAgICAgICAgICAgY2FzZSBQaXZvdERpbWVuc2lvblR5cGUuQ29sdW1uOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdyaWQuY29sdW1uRGltZW5zaW9ucztcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLkZpbHRlcjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ncmlkLmZpbHRlckRpbWVuc2lvbnM7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBtb3ZlVmFsdWVJdGVtKGl0ZW1JZDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGFnZ3JlZ2F0aW9uID0gdGhpcy5ncmlkLnBpdm90Q29uZmlndXJhdGlvbi52YWx1ZXM7XG4gICAgICAgIGNvbnN0IHZhbHVlSW5kZXggPVxuICAgICAgICAgICAgYWdncmVnYXRpb24uZmluZEluZGV4KCh4KSA9PiB4Lm1lbWJlciA9PT0gaXRlbUlkKSAhPT0gLTFcbiAgICAgICAgICAgICAgICA/IGFnZ3JlZ2F0aW9uPy5maW5kSW5kZXgoKHgpID0+IHgubWVtYmVyID09PSBpdGVtSWQpXG4gICAgICAgICAgICAgICAgOiBhZ2dyZWdhdGlvbi5sZW5ndGg7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlSW5kZXggPVxuICAgICAgICAgICAgdmFsdWVJbmRleCArIHRoaXMuX2Ryb3BEZWx0YSA8IDAgPyAwIDogdmFsdWVJbmRleCArIHRoaXMuX2Ryb3BEZWx0YTtcblxuICAgICAgICBjb25zdCBhZ2dyZWdhdGlvbkl0ZW0gPSBhZ2dyZWdhdGlvbi5maW5kKFxuICAgICAgICAgICAgKHgpID0+IHgubWVtYmVyID09PSBpdGVtSWQgfHwgeC5kaXNwbGF5TmFtZSA9PT0gaXRlbUlkXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGFnZ3JlZ2F0aW9uSXRlbSkge1xuICAgICAgICAgICAgdGhpcy5ncmlkLm1vdmVWYWx1ZShhZ2dyZWdhdGlvbkl0ZW0sIG5ld1ZhbHVlSW5kZXgpO1xuICAgICAgICAgICAgdGhpcy5ncmlkLnZhbHVlc0NoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgICAgICB2YWx1ZXM6IHRoaXMuZ3JpZC5waXZvdENvbmZpZ3VyYXRpb24udmFsdWVzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uSXRlbURyb3BwZWQoXG4gICAgICAgIGV2ZW50OiBJRHJvcERyb3BwZWRFdmVudEFyZ3MsXG4gICAgICAgIGRpbWVuc2lvblR5cGU6IFBpdm90RGltZW5zaW9uVHlwZVxuICAgICkge1xuICAgICAgICBpZiAoIXRoaXMuZHJvcEFsbG93ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRpbWVuc2lvbiA9IHRoaXMuZ3JpZC5nZXREaW1lbnNpb25zQnlUeXBlKGRpbWVuc2lvblR5cGUpO1xuICAgICAgICBjb25zdCBkaW1lbnNpb25TdGF0ZSA9IHRoaXMuZ2V0RGltZW5zaW9uU3RhdGUoZGltZW5zaW9uVHlwZSk7XG4gICAgICAgIGNvbnN0IGl0ZW1JZCA9IGV2ZW50LmRyYWcuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlkO1xuICAgICAgICBjb25zdCB0YXJnZXRJZCA9IGV2ZW50Lm93bmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudC5pZDtcbiAgICAgICAgY29uc3QgZGltZW5zaW9uSXRlbSA9IGRpbWVuc2lvbj8uZmluZCgoeCkgPT4geC5tZW1iZXJOYW1lID09PSBpdGVtSWQpO1xuICAgICAgICBjb25zdCBpdGVtSW5kZXggPVxuICAgICAgICAgICAgZGltZW5zaW9uPy5maW5kSW5kZXgoKHgpID0+IHg/Lm1lbWJlck5hbWUgPT09IGl0ZW1JZCkgIT09IC0xXG4gICAgICAgICAgICAgICAgPyBkaW1lbnNpb24/LmZpbmRJbmRleCgoeCkgPT4geC5tZW1iZXJOYW1lID09PSBpdGVtSWQpXG4gICAgICAgICAgICAgICAgOiBkaW1lbnNpb24/Lmxlbmd0aDtcbiAgICAgICAgY29uc3QgZGltZW5zaW9ucyA9IHRoaXMuZ3JpZC5hbGxEaW1lbnNpb25zLmZpbHRlcigoeCkgPT4geCAmJiB4Lm1lbWJlck5hbWUgPT09IGl0ZW1JZCk7XG5cbiAgICAgICAgY29uc3QgcmVvcmRlciA9XG4gICAgICAgICAgICBkaW1lbnNpb25TdGF0ZT8uZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLm1lbWJlck5hbWUgPT09IGl0ZW1JZCkgIT09XG4gICAgICAgICAgICAtMTtcblxuICAgICAgICBsZXQgdGFyZ2V0SW5kZXggPVxuICAgICAgICAgICAgdGFyZ2V0SWQgIT09IFwiXCJcbiAgICAgICAgICAgICAgICA/IGRpbWVuc2lvbj8uZmluZEluZGV4KCh4KSA9PiB4Lm1lbWJlck5hbWUgPT09IHRhcmdldElkKVxuICAgICAgICAgICAgICAgIDogZGltZW5zaW9uPy5sZW5ndGg7XG5cbiAgICAgICAgaWYgKCFkaW1lbnNpb24pIHtcbiAgICAgICAgICAgIHRoaXMubW92ZVZhbHVlSXRlbShpdGVtSWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlb3JkZXIpIHtcbiAgICAgICAgICAgIHRhcmdldEluZGV4ID1cbiAgICAgICAgICAgICAgICBpdGVtSW5kZXggKyB0aGlzLl9kcm9wRGVsdGEgPCAwXG4gICAgICAgICAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgICAgICAgICA6IGl0ZW1JbmRleCArIHRoaXMuX2Ryb3BEZWx0YTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkaW1lbnNpb25JdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQubW92ZURpbWVuc2lvbihkaW1lbnNpb25JdGVtLCBkaW1lbnNpb25UeXBlLCB0YXJnZXRJbmRleCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBuZXdEaW0gPSBkaW1lbnNpb25zLmZpbmQoKHgpID0+IHgubWVtYmVyTmFtZSA9PT0gaXRlbUlkKTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5tb3ZlRGltZW5zaW9uKG5ld0RpbSwgZGltZW5zaW9uVHlwZSwgdGFyZ2V0SW5kZXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ncmlkLmRpbWVuc2lvbnNDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgICBkaW1lbnNpb25zOiBkaW1lbnNpb24sXG4gICAgICAgICAgICBkaW1lbnNpb25Db2xsZWN0aW9uVHlwZTogZGltZW5zaW9uVHlwZSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCB1cGRhdGVEcm9wRG93bihcbiAgICAgICAgdmFsdWU6IElQaXZvdFZhbHVlLFxuICAgICAgICBkcm9wZG93bjogSWd4RHJvcERvd25Db21wb25lbnRcbiAgICApIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICBkcm9wZG93bi53aWR0aCA9IFwiMjAwcHhcIjtcbiAgICAgICAgdGhpcy5hZ2dyZWdhdGVMaXN0ID0gUGl2b3RVdGlsLmdldEFnZ3JlZ2F0ZUxpc3QodmFsdWUsIHRoaXMuZ3JpZCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgZHJvcGRvd24ub3Blbih0aGlzLl9zdWJNZW51T3ZlcmxheVNldHRpbmdzKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uU3VtbWFyeUNsaWNrKFxuICAgICAgICBldmVudDogTW91c2VFdmVudCxcbiAgICAgICAgdmFsdWU6IElQaXZvdFZhbHVlLFxuICAgICAgICBkcm9wZG93bjogSWd4RHJvcERvd25Db21wb25lbnRcbiAgICApIHtcbiAgICAgICAgdGhpcy5fc3ViTWVudU92ZXJsYXlTZXR0aW5ncy50YXJnZXQgPVxuICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICBpZiAoZHJvcGRvd24uY29sbGFwc2VkKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURyb3BEb3duKHZhbHVlLCBkcm9wZG93bik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBjbG9zZSBmb3IgcHJldmlvdXMgY2hpcFxuICAgICAgICAgICAgZHJvcGRvd24uY2xvc2UoKTtcbiAgICAgICAgICAgIGRyb3Bkb3duLmNsb3NlZC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVEcm9wRG93bih2YWx1ZSwgZHJvcGRvd24pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uQWdncmVnYXRpb25DaGFuZ2UoZXZlbnQ6IElTZWxlY3Rpb25FdmVudEFyZ3MpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzU2VsZWN0ZWQoZXZlbnQubmV3U2VsZWN0aW9uLnZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZS5hZ2dyZWdhdGUgPSBldmVudC5uZXdTZWxlY3Rpb24udmFsdWU7XG4gICAgICAgICAgICB0aGlzLmdyaWQucGlwZVRyaWdnZXIrKztcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGlzU2VsZWN0ZWQodmFsOiBJUGl2b3RBZ2dyZWdhdG9yKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlLmFnZ3JlZ2F0ZS5rZXkgPT09IHZhbC5rZXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnaG9zdENyZWF0ZWQoZXZlbnQ6IElEcmFnR2hvc3RCYXNlRXZlbnRBcmdzLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHsgd2lkdGg6IGl0ZW1XaWR0aCB9ID1cbiAgICAgICAgICAgIGV2ZW50Lm93bmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgdGhpcy5naG9zdFdpZHRoID0gaXRlbVdpZHRoO1xuICAgICAgICB0aGlzLmdob3N0VGV4dCA9IHZhbHVlO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgICAgZXZlbnQub3duZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgXCJwb3NpdGlvblwiLFxuICAgICAgICAgICAgXCJhYnNvbHV0ZVwiXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgICBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBcInZpc2liaWxpdHlcIixcbiAgICAgICAgICAgIFwiaGlkZGVuXCJcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIHRvZ2dsZUl0ZW0oaXRlbTogSVBpdm90RGltZW5zaW9uIHwgSVBpdm90VmFsdWUpIHtcbiAgICAgICAgaWYgKGl0ZW0gYXMgSVBpdm90VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC50b2dnbGVWYWx1ZShpdGVtIGFzIElQaXZvdFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtIGFzIElQaXZvdERpbWVuc2lvbikge1xuICAgICAgICAgICAgdGhpcy5ncmlkLnRvZ2dsZURpbWVuc2lvbihpdGVtIGFzIElQaXZvdERpbWVuc2lvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uUGFuZWxFbnRyeShldmVudDogSURyb3BCYXNlRXZlbnRBcmdzLCBwYW5lbDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZHJvcEFsbG93ZWQgPSBldmVudC5kcmFnRGF0YS5ncmlkSUQgPT09IHRoaXMuZ3JpZC5pZCAmJiBldmVudC5kcmFnRGF0YS5zZWxlY3RvckNoYW5uZWxzPy5zb21lKFxuICAgICAgICAgICAgKGNoYW5uZWw6IHN0cmluZykgPT4gY2hhbm5lbCA9PT0gcGFuZWxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uSXRlbURyYWdNb3ZlKGV2ZW50OiBJRHJhZ01vdmVFdmVudEFyZ3MpIHtcbiAgICAgICAgY29uc3QgY2xpZW50UmVjdCA9XG4gICAgICAgICAgICBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHRoaXMuX2Ryb3BEZWx0YSA9IE1hdGgucm91bmQoXG4gICAgICAgICAgICAoZXZlbnQubmV4dFBhZ2VZIC0gZXZlbnQuc3RhcnRZKSAvIGNsaWVudFJlY3QuaGVpZ2h0XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkl0ZW1EcmFnRW5kKGV2ZW50OiBJRHJhZ0Jhc2VFdmVudEFyZ3MpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICAgIGV2ZW50Lm93bmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIFwicG9zaXRpb25cIixcbiAgICAgICAgICAgIFwic3RhdGljXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICAgIGV2ZW50Lm93bmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIFwidmlzaWJpbGl0eVwiLFxuICAgICAgICAgICAgXCJ2aXNpYmxlXCJcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uSXRlbURyYWdPdmVyKGV2ZW50OiBJRHJvcEJhc2VFdmVudEFyZ3MpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJvcEFsbG93ZWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoXG4gICAgICAgICAgICAgICAgZXZlbnQub3duZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgIFwiaWd4LWRyYWctLXB1c2hcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25JdGVtRHJhZ0xlYXZlKGV2ZW50OiBJRHJvcEJhc2VFdmVudEFyZ3MpIHtcbiAgICAgICAgaWYgKHRoaXMuZHJvcEFsbG93ZWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoXG4gICAgICAgICAgICAgICAgZXZlbnQub3duZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgIFwiaWd4LWRyYWctLXB1c2hcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UGFuZWxDb2xsYXBzZWQocGFuZWxUeXBlOiBQaXZvdERpbWVuc2lvblR5cGUpOiBib29sZWFuIHtcbiAgICAgICAgc3dpdGNoKHBhbmVsVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBQaXZvdERpbWVuc2lvblR5cGUuQ29sdW1uOlxuICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5jb2x1bW5zRXhwYW5kZWQ7XG4gICAgICAgICAgICBjYXNlIFBpdm90RGltZW5zaW9uVHlwZS5GaWx0ZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmZpbHRlcnNFeHBhbmRlZDtcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLlJvdzpcbiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMucm93c0V4cGFuZGVkO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMudmFsdWVzRXhwYW5kZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uQ29sbGFwc2VDaGFuZ2UodmFsdWU6IGJvb2xlYW4sIHBhbmVsVHlwZTogUGl2b3REaW1lbnNpb25UeXBlKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaChwYW5lbFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLkNvbHVtbjpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnNFeHBhbmRlZCA9ICF2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnNFeHBhbmRlZENoYW5nZS5lbWl0KHRoaXMuY29sdW1uc0V4cGFuZGVkKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLkZpbHRlcjpcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnNFeHBhbmRlZCA9ICF2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcnNFeHBhbmRlZENoYW5nZS5lbWl0KHRoaXMuZmlsdGVyc0V4cGFuZGVkKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLlJvdzpcbiAgICAgICAgICAgICAgICB0aGlzLnJvd3NFeHBhbmRlZCA9ICF2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnJvd3NFeHBhbmRlZENoYW5nZS5lbWl0KHRoaXMucm93c0V4cGFuZGVkKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXNFeHBhbmRlZCA9ICF2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlc0V4cGFuZGVkQ2hhbmdlLmVtaXQodGhpcy52YWx1ZXNFeHBhbmRlZClcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9fZmlsdGVyXCI+XG4gICAgPGlneC1pbnB1dC1ncm91cCB0eXBlPVwiYm94XCIgW2Rpc3BsYXlEZW5zaXR5XT1cImRpc3BsYXlEZW5zaXR5XCI+XG4gICAgICAgIDxpZ3gtaWNvbiBpZ3hQcmVmaXg+c2VhcmNoPC9pZ3gtaWNvbj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgIGlneElucHV0XG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2hcIlxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgLz5cbiAgICA8L2lneC1pbnB1dC1ncm91cD5cbiAgICA8aWd4LWxpc3QgW2Rpc3BsYXlEZW5zaXR5XT1cImRpc3BsYXlEZW5zaXR5XCI+XG4gICAgICAgIDxpZ3gtbGlzdC1pdGVtXG4gICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgaXRlbSBvZiBkaW1zXG4gICAgICAgICAgICAgICAgICAgIHwgZmlsdGVyUGl2b3RJdGVtczogaW5wdXQudmFsdWU6Z3JpZD8ucGlwZVRyaWdnZXJcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbaWRdPVwiaXRlbS5tZW1iZXJOYW1lXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGlneC1jaGVja2JveFxuICAgICAgICAgICAgICAgIFthcmlhLWxhYmVsbGVkYnldPVwiaXRlbS5tZW1iZXJOYW1lXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpdGVtLmVuYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVJdGVtKGl0ZW0pXCJcbiAgICAgICAgICAgID48L2lneC1jaGVja2JveD5cbiAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0ubWVtYmVyTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9pZ3gtbGlzdC1pdGVtPlxuICAgICAgICA8aWd4LWxpc3QtaXRlbVxuICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGl0ZW0gb2YgdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgIHwgZmlsdGVyUGl2b3RJdGVtczogaW5wdXQudmFsdWU6Z3JpZD8ucGlwZVRyaWdnZXJcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbaWRdPVwiaXRlbS5tZW1iZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aWd4LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxsZWRieV09XCJpdGVtLm1lbWJlclwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXRlbS5lbmFibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlSXRlbShpdGVtKVwiXG4gICAgICAgICAgICA+PC9pZ3gtY2hlY2tib3g+XG4gICAgICAgICAgICA8c3Bhbj57eyBpdGVtLmRpc3BsYXlOYW1lIHx8IGl0ZW0ubWVtYmVyIH19PC9zcGFuPlxuICAgICAgICA8L2lneC1saXN0LWl0ZW0+XG4gICAgPC9pZ3gtbGlzdD5cbjwvZGl2PlxuXG48aWd4LWFjY29yZGlvbj5cbiAgICA8aWd4LWV4cGFuc2lvbi1wYW5lbFxuICAgICAgICAqbmdGb3I9XCJsZXQgcGFuZWwgb2YgX3BhbmVsc1wiXG4gICAgICAgIFthbmltYXRpb25TZXR0aW5nc109XCJhbmltYXRpb25TZXR0aW5nc1wiXG4gICAgICAgIFtjb2xsYXBzZWRdPVwiZ2V0UGFuZWxDb2xsYXBzZWQocGFuZWwudHlwZSlcIlxuICAgICAgICAoY29sbGFwc2VkQ2hhbmdlKT1cIm9uQ29sbGFwc2VDaGFuZ2UoJGV2ZW50LCBwYW5lbC50eXBlKVwiXG4gICAgPlxuICAgICAgICA8aWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcbiAgICAgICAgICAgIGljb25Qb3NpdGlvbj1cImxlZnRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgIGlneERyb3BcbiAgICAgICAgICAgIChlbnRlcik9XCJvblBhbmVsRW50cnkoJGV2ZW50LCBwYW5lbC5uYW1lKVwiXG4gICAgICAgICAgICAoZHJvcHBlZCk9XCJvbkl0ZW1Ecm9wcGVkKCRldmVudCwgcGFuZWwudHlwZSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aWd4LWV4cGFuc2lvbi1wYW5lbC10aXRsZSBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9faGVhZGVyLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGdyaWQ/LnJlc291cmNlU3RyaW5nc1twYW5lbC5pMThuXSB9fVxuICAgICAgICAgICAgICAgIDwvaDY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19oZWFkZXItZXh0cmFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlneC1pY29uPnt7IHBhbmVsLmljb24gfX08L2lneC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8aWd4LWNoaXA+e3sgdGhpcy5ncmlkID8gdGhpcy5ncmlkW3BhbmVsLmRhdGFLZXldLmxlbmd0aCA6IDAgfX08L2lneC1jaGlwPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsLXRpdGxlPlxuICAgICAgICA8L2lneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICA8aWd4LWV4cGFuc2lvbi1wYW5lbC1ib2R5XG4gICAgICAgICAgICBpZ3hEcm9wXG4gICAgICAgICAgICAoZW50ZXIpPVwib25QYW5lbEVudHJ5KCRldmVudCwgcGFuZWwubmFtZSlcIlxuICAgICAgICAgICAgKGRyb3BwZWQpPVwib25JdGVtRHJvcHBlZCgkZXZlbnQsIHBhbmVsLnR5cGUpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGlneC1saXN0XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLmdyaWQgJiYgdGhpcy5ncmlkW3BhbmVsLmRhdGFLZXldLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgIFtkaXNwbGF5RGVuc2l0eV09XCJkaXNwbGF5RGVuc2l0eVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlneC1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgaWd4RHJvcFxuICAgICAgICAgICAgICAgICAgICBbaWd4RHJhZ109XCJ7IGdyaWRJRDogZ3JpZC5pZCwgc2VsZWN0b3JDaGFubmVsczogcGFuZWwuZHJhZ0NoYW5uZWxzIH1cIlxuICAgICAgICAgICAgICAgICAgICBbZ2hvc3RUZW1wbGF0ZV09XCJpdGVtR2hvc3RcIlxuICAgICAgICAgICAgICAgICAgICAoZ2hvc3RDcmVhdGUpPVwiZ2hvc3RDcmVhdGVkKCRldmVudCwgaXRlbVtwYW5lbC5pdGVtS2V5XSlcIlxuICAgICAgICAgICAgICAgICAgICAob3Zlcik9XCJvbkl0ZW1EcmFnT3ZlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGxlYXZlKT1cIm9uSXRlbURyYWdMZWF2ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGRyYWdNb3ZlKT1cIm9uSXRlbURyYWdNb3ZlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoZHJhZ0VuZCk9XCJvbkl0ZW1EcmFnRW5kKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoZHJvcHBlZCk9XCJvbkl0ZW1Ecm9wcGVkKCRldmVudCwgcGFuZWwudHlwZSlcIlxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpdGVtIG9mIHRoaXMuZ3JpZFtwYW5lbC5kYXRhS2V5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmRleFxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaXRlbVtwYW5lbC5pdGVtS2V5XVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19pdGVtLXN0YXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtU29ydCgkZXZlbnQsIGl0ZW0sIHBhbmVsLnR5cGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2FjdGlvbi1zb3J0XT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5lbC5zb3J0YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19pdGVtLXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYW5lbC50eXBlID09PSBudWxsXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYWdncmVnYXRlLmtleVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYW5lbC50eXBlID09PSBudWxsXCI+KDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbVtwYW5lbC5kaXNwbGF5S2V5XSB8fCBpdGVtW3BhbmVsLml0ZW1LZXldIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBhbmVsLnR5cGUgPT09IG51bGxcIj4pPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZ3gtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19hY3Rpb24tc29ydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFuZWwuc29ydGFibGUgJiYgaXRlbS5zb3J0RGlyZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNvcnREaXJlY3Rpb24gPCAyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImFycm93X3Vwd2FyZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBcImFycm93X2Rvd253YXJkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lneC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2l0ZW0tZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlneC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2FjdGlvbi1maWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhbmVsLnR5cGUgIT09IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnRlcmRvd24pPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZpbHRlcmluZ0ljb25Qb2ludGVyRG93bigkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkZpbHRlcmluZ0ljb25DbGljaygkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPmZpbHRlcl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9pZ3gtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWd4LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9fYWN0aW9uLXN1bW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhbmVsLnR5cGUgPT09IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TdW1tYXJ5Q2xpY2soJGV2ZW50LCBpdGVtLCBkcm9wZG93bilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWd4RHJvcERvd25JdGVtTmF2aWdhdGlvbl09XCJkcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lneC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZ3gtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ3hEcmFnSGFuZGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2FjdGlvbi1tb3ZlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYW5lbC5kcmFnQ2hhbm5lbHMubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5kcmFnX2hhbmRsZTwvaWd4LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9pZ3gtbGlzdC1pdGVtPlxuICAgICAgICAgICAgPC9pZ3gtbGlzdD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19lbXB0eVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLmdyaWQgJiYgdGhpcy5ncmlkW3BhbmVsLmRhdGFLZXldLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgZ3JpZD8ucmVzb3VyY2VTdHJpbmdzLmlneF9ncmlkX3Bpdm90X3NlbGVjdG9yX3BhbmVsX2VtcHR5IH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsLWJvZHk+XG4gICAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsPlxuPC9pZ3gtYWNjb3JkaW9uPlxuXG48aWd4LWRyb3AtZG93biAjZHJvcGRvd24gKHNlbGVjdGlvbkNoYW5naW5nKT1cIm9uQWdncmVnYXRpb25DaGFuZ2UoJGV2ZW50KVwiPlxuICAgIDxpZ3gtZHJvcC1kb3duLWl0ZW1cbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYWdncmVnYXRlTGlzdFwiXG4gICAgICAgIFtzZWxlY3RlZF09XCJpc1NlbGVjdGVkKGl0ZW0pXCJcbiAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIlxuICAgID5cbiAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxuICAgIDwvaWd4LWRyb3AtZG93bi1pdGVtPlxuPC9pZ3gtZHJvcC1kb3duPlxuXG48bmctdGVtcGxhdGUgI2l0ZW1HaG9zdD5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2l0ZW0tZ2hvc3RcIlxuICAgICAgICBbc3R5bGUud2lkdGgucHhdPVwiZ2hvc3RXaWR0aFwiXG4gICAgICAgIFtjbGFzcy5pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9faXRlbS1naG9zdC0tbm8tZHJvcF09XCIhZHJvcEFsbG93ZWRcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19pdGVtLWdob3N0LXRleHRcIj5cbiAgICAgICAgICAgIDxpZ3gtaWNvbj51bmZvbGRfbW9yZTwvaWd4LWljb24+XG4gICAgICAgICAgICA8c3Bhbj57eyBnaG9zdFRleHQgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aWd4LWljb24+ZHJhZ19oYW5kbGU8L2lneC1pY29uPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
530
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtZGF0YS1zZWxlY3Rvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvcGl2b3QtZ3JpZC9waXZvdC1kYXRhLXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy9waXZvdC1ncmlkL3Bpdm90LWRhdGEtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFFSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxFQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXhELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBOEcsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUV4TyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMzRSxPQUFPLEVBQ0gsc0JBQXNCLEVBQ3RCLG9CQUFvQixFQUdwQixpQkFBaUIsRUFDcEIsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxPQUFPLEVBSUgsa0JBQWtCLEVBQ3JCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztB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QURkLFdBQVc7dUJBQUMsK0JBQStCO2dCQThHakMsSUFBSTtzQkFEZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQW5pbWF0aW9uIH0gZnJvbSBcIkBhbmd1bGFyL2FuaW1hdGlvbnNcIjtcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUmVuZGVyZXIyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgZmFkZUluLCBmYWRlT3V0IH0gZnJvbSBcIi4uLy4uL2FuaW1hdGlvbnMvZmFkZVwiO1xuaW1wb3J0IHsgRGlzcGxheURlbnNpdHkgfSBmcm9tIFwiLi4vLi4vY29yZS9kZW5zaXR5XCI7XG5pbXBvcnQgeyBTb3J0aW5nRGlyZWN0aW9uIH0gZnJvbSBcIi4uLy4uL2RhdGEtb3BlcmF0aW9ucy9zb3J0aW5nLXN0cmF0ZWd5XCI7XG5pbXBvcnQgeyBJRHJhZ0Jhc2VFdmVudEFyZ3MsIElEcmFnR2hvc3RCYXNlRXZlbnRBcmdzLCBJRHJhZ01vdmVFdmVudEFyZ3MsIElEcm9wQmFzZUV2ZW50QXJncywgSURyb3BEcm9wcGVkRXZlbnRBcmdzLCBJZ3hEcm9wRGlyZWN0aXZlLCBJZ3hEcmFnRGlyZWN0aXZlLCBJZ3hEcmFnSGFuZGxlRGlyZWN0aXZlIH0gZnJvbSBcIi4uLy4uL2RpcmVjdGl2ZXMvZHJhZy1kcm9wL2RyYWctZHJvcC5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IElTZWxlY3Rpb25FdmVudEFyZ3MgfSBmcm9tIFwiLi4vLi4vZHJvcC1kb3duL2Ryb3AtZG93bi5jb21tb25cIjtcbmltcG9ydCB7IElneERyb3BEb3duQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2Ryb3AtZG93bi9kcm9wLWRvd24uY29tcG9uZW50XCI7XG5pbXBvcnQge1xuICAgIEFic29sdXRlU2Nyb2xsU3RyYXRlZ3ksXG4gICAgQXV0b1Bvc2l0aW9uU3RyYXRlZ3ksXG4gICAgT3ZlcmxheVNldHRpbmdzLFxuICAgIFBvc2l0aW9uU2V0dGluZ3MsXG4gICAgVmVydGljYWxBbGlnbm1lbnRcbn0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3B1YmxpY19hcGlcIjtcbmltcG9ydCB7IENvbHVtblR5cGUsIFBpdm90R3JpZFR5cGUgfSBmcm9tIFwiLi4vY29tbW9uL2dyaWQuaW50ZXJmYWNlXCI7XG5pbXBvcnQge1xuICAgIElQaXZvdEFnZ3JlZ2F0b3IsXG4gICAgSVBpdm90RGltZW5zaW9uLFxuICAgIElQaXZvdFZhbHVlLFxuICAgIFBpdm90RGltZW5zaW9uVHlwZVxufSBmcm9tIFwiLi9waXZvdC1ncmlkLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgUGl2b3RVdGlsIH0gZnJvbSAnLi9waXZvdC11dGlsJztcbmltcG9ydCB7IElneEZpbHRlclBpdm90SXRlbXNQaXBlIH0gZnJvbSBcIi4vcGl2b3QtZ3JpZC5waXBlc1wiO1xuaW1wb3J0IHsgSWd4RHJvcERvd25JdGVtQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2Ryb3AtZG93bi9kcm9wLWRvd24taXRlbS5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneERyb3BEb3duSXRlbU5hdmlnYXRpb25EaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZHJvcC1kb3duL2Ryb3AtZG93bi1uYXZpZ2F0aW9uLmRpcmVjdGl2ZVwiO1xuaW1wb3J0IHsgSWd4RXhwYW5zaW9uUGFuZWxCb2R5Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwtYm9keS5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneENoaXBDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY2hpcHMvY2hpcC5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneEV4cGFuc2lvblBhbmVsVGl0bGVEaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC5kaXJlY3RpdmVzXCI7XG5pbXBvcnQgeyBJZ3hFeHBhbnNpb25QYW5lbEhlYWRlckNvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneEV4cGFuc2lvblBhbmVsQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBJZ3hBY2NvcmRpb25Db21wb25lbnQgfSBmcm9tIFwiLi4vLi4vYWNjb3JkaW9uL2FjY29yZGlvbi5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgSWd4TGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tIFwiLi4vLi4vbGlzdC9saXN0LWl0ZW0uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBOZ0ZvciwgTmdJZiB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IElneExpc3RDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vbGlzdC9saXN0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgSWd4SW5wdXREaXJlY3RpdmUgfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlcy9pbnB1dC9pbnB1dC5kaXJlY3RpdmVcIjtcbmltcG9ydCB7IElneFByZWZpeERpcmVjdGl2ZSB9IGZyb20gXCIuLi8uLi9kaXJlY3RpdmVzL3ByZWZpeC9wcmVmaXguZGlyZWN0aXZlXCI7XG5pbXBvcnQgeyBJZ3hJY29uQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2ljb24vaWNvbi5jb21wb25lbnRcIjtcbmltcG9ydCB7IElneElucHV0R3JvdXBDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vaW5wdXQtZ3JvdXAvaW5wdXQtZ3JvdXAuY29tcG9uZW50XCI7XG5cbmludGVyZmFjZSBJRGF0YVNlbGVjdG9yUGFuZWwge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpMThuOiBzdHJpbmc7XG4gICAgdHlwZT86IFBpdm90RGltZW5zaW9uVHlwZTtcbiAgICBkYXRhS2V5OiBzdHJpbmc7XG4gICAgaWNvbjogc3RyaW5nO1xuICAgIGl0ZW1LZXk6IHN0cmluZztcbiAgICBkaXNwbGF5S2V5Pzogc3RyaW5nO1xuICAgIHNvcnRhYmxlOiBib29sZWFuO1xuICAgIGRyYWdDaGFubmVsczogc3RyaW5nW107XG59XG5cbi8qKlxuICogUGl2b3QgRGF0YSBTZWxlY3RvciBwcm92aWRlcyBtZWFucyB0byBjb25maWd1cmUgdGhlIHBpdm90IHN0YXRlIG9mIHRoZSBQaXZvdCBHcmlkIHZpYSBhIHZlcnRpY2FsIHBhbmVsIFVJXG4gKlxuICogQGlneE1vZHVsZSBJZ3hQaXZvdEdyaWRNb2R1bGVcbiAqIEBpZ3hHcm91cCBHcmlkcyAmIExpc3RzXG4gKiBAaWd4S2V5d29yZHMgZGF0YSBzZWxlY3RvciwgcGl2b3QsIGdyaWRcbiAqIEBpZ3hUaGVtZSBwaXZvdC1kYXRhLXNlbGVjdG9yLXRoZW1lXG4gKiBAcmVtYXJrc1xuICogVGhlIElnbml0ZSBVSSBEYXRhIFNlbGVjdG9yIGhhcyBhIHNlYXJjaGFibGUgbGlzdCB3aXRoIHRoZSBncmlkIGRhdGEgY29sdW1ucyxcbiAqIHRoZXJlIGFyZSBhbHNvIGZvdXIgZXhwYW5kYWJsZSBhcmVhcyB1bmRlcm5lYXRoIGZvciBmaWx0ZXJzLCByb3dzLCBjb2x1bW5zLCBhbmQgdmFsdWVzXG4gKiBpcyB1c2VkIGZvciBncm91cGluZyBhbmQgYWdncmVnYXRpbmcgc2ltcGxlIGZsYXQgZGF0YSBpbnRvIGEgcGl2b3QgdGFibGUuXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPGlneC1waXZvdC1ncmlkICNncmlkMSBbZGF0YV09XCJkYXRhXCIgW3Bpdm90Q29uZmlndXJhdGlvbl09XCJjb25maWd1cmF0aW9uXCI+XG4gKiA8L2lneC1waXZvdC1ncmlkPlxuICogPGlneC1waXZvdC1kYXRhLXNlbGVjdG9yIFtncmlkXT1cImdyaWQxXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvclwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vcGl2b3QtZGF0YS1zZWxlY3Rvci5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0lneElucHV0R3JvdXBDb21wb25lbnQsIElneEljb25Db21wb25lbnQsIElneFByZWZpeERpcmVjdGl2ZSwgSWd4SW5wdXREaXJlY3RpdmUsIElneExpc3RDb21wb25lbnQsIE5nRm9yLCBJZ3hMaXN0SXRlbUNvbXBvbmVudCwgSWd4Q2hlY2tib3hDb21wb25lbnQsIElneEFjY29yZGlvbkNvbXBvbmVudCwgSWd4RXhwYW5zaW9uUGFuZWxDb21wb25lbnQsIElneEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50LCBJZ3hEcm9wRGlyZWN0aXZlLCBJZ3hFeHBhbnNpb25QYW5lbFRpdGxlRGlyZWN0aXZlLCBJZ3hDaGlwQ29tcG9uZW50LCBJZ3hFeHBhbnNpb25QYW5lbEJvZHlDb21wb25lbnQsIE5nSWYsIElneERyYWdEaXJlY3RpdmUsIElneERyb3BEb3duSXRlbU5hdmlnYXRpb25EaXJlY3RpdmUsIElneERyYWdIYW5kbGVEaXJlY3RpdmUsIElneERyb3BEb3duQ29tcG9uZW50LCBJZ3hEcm9wRG93bkl0ZW1Db21wb25lbnQsIElneEZpbHRlclBpdm90SXRlbXNQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hQaXZvdERhdGFTZWxlY3RvckNvbXBvbmVudCB7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgd2hldGhlciB0aGUgY29sdW1ucyBwYW5lbCBpcyBleHBhbmRlZFxuICAgICAqIEdldFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgY29uc3QgY29sdW1uc1BhbmVsU3RhdGU6IGJvb2xlYW4gPSB0aGlzLmRhdGFTZWxlY3Rvci5jb2x1bW5zRXhwYW5kZWQ7XG4gICAgICogYGBgXG4gICAgICogU2V0XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvciBbZ3JpZF09XCJncmlkMVwiIFtjb2x1bW5zRXhwYW5kZWRdPVwiY29sdW1uc1BhbmVsU3RhdGVcIj48L2lneC1waXZvdC1kYXRhLXNlbGVjdG9yPlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogVHdvLXdheSBkYXRhIGJpbmRpbmc6XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvciBbZ3JpZF09XCJncmlkMVwiIFsoY29sdW1uc0V4cGFuZGVkKV09XCJjb2x1bW5zUGFuZWxTdGF0ZVwiPjwvaWd4LXBpdm90LWRhdGEtc2VsZWN0b3I+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgY29sdW1uc0V4cGFuZGVkID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgY29sdW1uc0V4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHdoZXRoZXIgdGhlIHJvd3MgcGFuZWwgaXMgZXhwYW5kZWRcbiAgICAgKiBHZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IHJvd3NQYW5lbFN0YXRlOiBib29sZWFuID0gdGhpcy5kYXRhU2VsZWN0b3Iucm93c0V4cGFuZGVkO1xuICAgICAqIGBgYFxuICAgICAqIFNldFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXBpdm90LWRhdGEtc2VsZWN0b3IgW2dyaWRdPVwiZ3JpZDFcIiBbcm93c0V4cGFuZGVkXT1cInJvd3NQYW5lbFN0YXRlXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIFR3by13YXkgZGF0YSBiaW5kaW5nOlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXBpdm90LWRhdGEtc2VsZWN0b3IgW2dyaWRdPVwiZ3JpZDFcIiBbKHJvd3NFeHBhbmRlZCldPVwicm93c1BhbmVsU3RhdGVcIj48L2lneC1waXZvdC1kYXRhLXNlbGVjdG9yPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJvd3NFeHBhbmRlZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJvd3NFeHBhbmRlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB3aGV0aGVyIHRoZSBmaWx0ZXJzIHBhbmVsIGlzIGV4cGFuZGVkXG4gICAgICogR2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBjb25zdCBmaWx0ZXJzUGFuZWxTdGF0ZTogYm9vbGVhbiA9IHRoaXMuZGF0YVNlbGVjdG9yLmZpbHRlcnNFeHBhbmRlZDtcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1waXZvdC1kYXRhLXNlbGVjdG9yIFtncmlkXT1cImdyaWQxXCIgW2ZpbHRlcnNFeHBhbmRlZF09XCJmaWx0ZXJzUGFuZWxTdGF0ZVwiPjwvaWd4LXBpdm90LWRhdGEtc2VsZWN0b3I+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBUd28td2F5IGRhdGEgYmluZGluZzpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1waXZvdC1kYXRhLXNlbGVjdG9yIFtncmlkXT1cImdyaWQxXCIgWyhmaWx0ZXJzRXhwYW5kZWQpXT1cImZpbHRlcnNQYW5lbFN0YXRlXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWx0ZXJzRXhwYW5kZWQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBmaWx0ZXJzRXhwYW5kZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgd2hldGhlciB0aGUgdmFsdWVzIHBhbmVsIGlzIGV4cGFuZGVkXG4gICAgICogR2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBjb25zdCB2YWx1ZXNQYW5lbFN0YXRlOiBib29sZWFuID0gdGhpcy5kYXRhU2VsZWN0b3IudmFsdWVzRXhwYW5kZWQ7XG4gICAgICogYGBgXG4gICAgICogU2V0XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvciBbZ3JpZF09XCJncmlkMVwiIFt2YWx1ZXNFeHBhbmRlZF09XCJ2YWx1ZXNQYW5lbFN0YXRlXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIFR3by13YXkgZGF0YSBiaW5kaW5nOlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXBpdm90LWRhdGEtc2VsZWN0b3IgW2dyaWRdPVwiZ3JpZDFcIiBbKHZhbHVlc0V4cGFuZGVkKV09XCJ2YWx1ZXNQYW5lbFN0YXRlXCI+PC9pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWx1ZXNFeHBhbmRlZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZhbHVlc0V4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgcHJpdmF0ZSBfZ3JpZDogUGl2b3RHcmlkVHlwZTtcbiAgICBwcml2YXRlIF9kcm9wRGVsdGEgPSAwO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICoqL1xuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmlneC1waXZvdC1kYXRhLXNlbGVjdG9yXCIpXG4gICAgcHVibGljIGNzc0NsYXNzID0gXCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3RvclwiO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqKi9cbiAgICBwdWJsaWMgZGltZW5zaW9uczogSVBpdm90RGltZW5zaW9uW107XG5cbiAgICBwcml2YXRlIF9zdWJNZW51UG9zaXRpb25TZXR0aW5nczogUG9zaXRpb25TZXR0aW5ncyA9IHtcbiAgICAgICAgdmVydGljYWxTdGFydFBvaW50OiBWZXJ0aWNhbEFsaWdubWVudC5Cb3R0b20sXG4gICAgICAgIGNsb3NlQW5pbWF0aW9uOiB1bmRlZmluZWQsXG4gICAgfTtcblxuICAgIHByaXZhdGUgX3N1Yk1lbnVPdmVybGF5U2V0dGluZ3M6IE92ZXJsYXlTZXR0aW5ncyA9IHtcbiAgICAgICAgY2xvc2VPbk91dHNpZGVDbGljazogdHJ1ZSxcbiAgICAgICAgbW9kYWw6IGZhbHNlLFxuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiBuZXcgQXV0b1Bvc2l0aW9uU3RyYXRlZ3koXG4gICAgICAgICAgICB0aGlzLl9zdWJNZW51UG9zaXRpb25TZXR0aW5nc1xuICAgICAgICApLFxuICAgICAgICBzY3JvbGxTdHJhdGVneTogbmV3IEFic29sdXRlU2Nyb2xsU3RyYXRlZ3koKSxcbiAgICB9O1xuICAgIHB1YmxpYyBhbmltYXRpb25TZXR0aW5ncyA9IHtcbiAgICAgICAgY2xvc2VBbmltYXRpb246IHVzZUFuaW1hdGlvbihmYWRlT3V0LCB7XG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogXCIwbXNcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICBvcGVuQW5pbWF0aW9uOiB1c2VBbmltYXRpb24oZmFkZUluLCB7XG4gICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogXCIwbXNcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgYWdncmVnYXRlTGlzdDogSVBpdm90QWdncmVnYXRvcltdID0gW107XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHZhbHVlOiBJUGl2b3RWYWx1ZTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2hvc3RUZXh0OiBzdHJpbmc7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdob3N0V2lkdGg6IG51bWJlcjtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZHJvcEFsbG93ZWQ6IGJvb2xlYW47XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdldCBkaW1zKCkgOiBJUGl2b3REaW1lbnNpb25bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ncmlkPy5hbGxEaW1lbnNpb25zIHx8IFtdO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IHZhbHVlcygpOiBJUGl2b3RWYWx1ZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dyaWQ/LnBpdm90Q29uZmlndXJhdGlvbi52YWx1ZXMgfHwgW107XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBfcGFuZWxzOiBJRGF0YVNlbGVjdG9yUGFuZWxbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJGaWx0ZXJzXCIsXG4gICAgICAgICAgICBpMThuOiAnaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3JfZmlsdGVycycsXG4gICAgICAgICAgICB0eXBlOiBQaXZvdERpbWVuc2lvblR5cGUuRmlsdGVyLFxuICAgICAgICAgICAgZGF0YUtleTogXCJmaWx0ZXJEaW1lbnNpb25zXCIsXG4gICAgICAgICAgICBpY29uOiBcImZpbHRlcl9saXN0XCIsXG4gICAgICAgICAgICBpdGVtS2V5OiBcIm1lbWJlck5hbWVcIixcbiAgICAgICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGRyYWdDaGFubmVsczogW1wiRmlsdGVyc1wiLCBcIkNvbHVtbnNcIiwgXCJSb3dzXCJdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiQ29sdW1uc1wiLFxuICAgICAgICAgICAgaTE4bjogJ2lneF9ncmlkX3Bpdm90X3NlbGVjdG9yX2NvbHVtbnMnLFxuICAgICAgICAgICAgdHlwZTogUGl2b3REaW1lbnNpb25UeXBlLkNvbHVtbixcbiAgICAgICAgICAgIGRhdGFLZXk6IFwiY29sdW1uRGltZW5zaW9uc1wiLFxuICAgICAgICAgICAgaWNvbjogXCJ2aWV3X2NvbHVtblwiLFxuICAgICAgICAgICAgaXRlbUtleTogXCJtZW1iZXJOYW1lXCIsXG4gICAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGRyYWdDaGFubmVsczogW1wiRmlsdGVyc1wiLCBcIkNvbHVtbnNcIiwgXCJSb3dzXCJdXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiUm93c1wiLFxuICAgICAgICAgICAgaTE4bjogJ2lneF9ncmlkX3Bpdm90X3NlbGVjdG9yX3Jvd3MnLFxuICAgICAgICAgICAgdHlwZTogUGl2b3REaW1lbnNpb25UeXBlLlJvdyxcbiAgICAgICAgICAgIGRhdGFLZXk6IFwicm93RGltZW5zaW9uc1wiLFxuICAgICAgICAgICAgaWNvbjogXCJ0YWJsZV9yb3dzXCIsXG4gICAgICAgICAgICBpdGVtS2V5OiBcIm1lbWJlck5hbWVcIixcbiAgICAgICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuICAgICAgICAgICAgZHJhZ0NoYW5uZWxzOiBbXCJGaWx0ZXJzXCIsIFwiQ29sdW1uc1wiLCBcIlJvd3NcIl1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJWYWx1ZXNcIixcbiAgICAgICAgICAgIGkxOG46ICdpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl92YWx1ZXMnLFxuICAgICAgICAgICAgdHlwZTogbnVsbCxcbiAgICAgICAgICAgIGRhdGFLZXk6IFwidmFsdWVzXCIsXG4gICAgICAgICAgICBpY29uOiBcImZ1bmN0aW9uc1wiLFxuICAgICAgICAgICAgaXRlbUtleTogXCJtZW1iZXJcIixcbiAgICAgICAgICAgIGRpc3BsYXlLZXk6ICdkaXNwbGF5TmFtZScsXG4gICAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsXG4gICAgICAgICAgICBkcmFnQ2hhbm5lbHM6IFtcIlZhbHVlc1wiXVxuICAgICAgICB9LFxuICAgIF07XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZGlzcGxheURlbnNpdHkoKTogRGlzcGxheURlbnNpdHkge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkPy5kaXNwbGF5RGVuc2l0eTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbiBASW5wdXQgcHJvcGVydHkgdGhhdCBzZXRzIHRoZSBncmlkLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBncmlkKHZhbHVlOiBQaXZvdEdyaWRUeXBlKSB7XG4gICAgICAgIHRoaXMuX2dyaWQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBncmlkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZ3JpZCgpOiBQaXZvdEdyaWRUeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dyaWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkl0ZW1Tb3J0KFxuICAgICAgICBfOiBFdmVudCxcbiAgICAgICAgZGltZW5zaW9uOiBJUGl2b3REaW1lbnNpb24sXG4gICAgICAgIGRpbWVuc2lvblR5cGU6IFBpdm90RGltZW5zaW9uVHlwZVxuICAgICkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhdGhpcy5fcGFuZWxzLmZpbmQoXG4gICAgICAgICAgICAgICAgKHBhbmVsOiBJRGF0YVNlbGVjdG9yUGFuZWwpID0+IHBhbmVsLnR5cGUgPT09IGRpbWVuc2lvblR5cGVcbiAgICAgICAgICAgICkuc29ydGFibGVcbiAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHN0YXJ0RGlyZWN0aW9uID0gZGltZW5zaW9uLnNvcnREaXJlY3Rpb24gfHwgU29ydGluZ0RpcmVjdGlvbi5Ob25lO1xuICAgICAgICBjb25zdCBkaXJlY3Rpb24gPSBzdGFydERpcmVjdGlvbiArIDEgPiBTb3J0aW5nRGlyZWN0aW9uLkRlc2MgP1xuICAgICAgICAgICAgU29ydGluZ0RpcmVjdGlvbi5Ob25lIDogc3RhcnREaXJlY3Rpb24gKyAxO1xuICAgICAgICB0aGlzLmdyaWQuc29ydERpbWVuc2lvbihkaW1lbnNpb24sIGRpcmVjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkZpbHRlcmluZ0ljb25Qb2ludGVyRG93bihldmVudDogUG9pbnRlckV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25GaWx0ZXJpbmdJY29uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGRpbWVuc2lvbjogSVBpdm90RGltZW5zaW9uKSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGxldCBkaW0gPSBkaW1lbnNpb247XG4gICAgICAgIGxldCBjb2w6IENvbHVtblR5cGU7XG5cbiAgICAgICAgd2hpbGUgKGRpbSkge1xuICAgICAgICAgICAgY29sID0gdGhpcy5ncmlkLmRpbWVuc2lvbkRhdGFDb2x1bW5zLmZpbmQoXG4gICAgICAgICAgICAgICAgKHgpID0+IHguZmllbGQgPT09IGRpbS5tZW1iZXJOYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGNvbCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkaW0gPSBkaW0uY2hpbGRMZXZlbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZ3JpZC5maWx0ZXJpbmdTZXJ2aWNlLnRvZ2dsZUZpbHRlckRyb3Bkb3duKGV2ZW50LnRhcmdldCwgY29sKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGdldERpbWVuc2lvblN0YXRlKGRpbWVuc2lvblR5cGU6IFBpdm90RGltZW5zaW9uVHlwZSkge1xuICAgICAgICBzd2l0Y2ggKGRpbWVuc2lvblR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLlJvdzpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5ncmlkLnJvd0RpbWVuc2lvbnM7XG4gICAgICAgICAgICBjYXNlIFBpdm90RGltZW5zaW9uVHlwZS5Db2x1bW46XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5jb2x1bW5EaW1lbnNpb25zO1xuICAgICAgICAgICAgY2FzZSBQaXZvdERpbWVuc2lvblR5cGUuRmlsdGVyOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdyaWQuZmlsdGVyRGltZW5zaW9ucztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG1vdmVWYWx1ZUl0ZW0oaXRlbUlkOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgYWdncmVnYXRpb24gPSB0aGlzLmdyaWQucGl2b3RDb25maWd1cmF0aW9uLnZhbHVlcztcbiAgICAgICAgY29uc3QgdmFsdWVJbmRleCA9XG4gICAgICAgICAgICBhZ2dyZWdhdGlvbi5maW5kSW5kZXgoKHgpID0+IHgubWVtYmVyID09PSBpdGVtSWQpICE9PSAtMVxuICAgICAgICAgICAgICAgID8gYWdncmVnYXRpb24/LmZpbmRJbmRleCgoeCkgPT4geC5tZW1iZXIgPT09IGl0ZW1JZClcbiAgICAgICAgICAgICAgICA6IGFnZ3JlZ2F0aW9uLmxlbmd0aDtcbiAgICAgICAgY29uc3QgbmV3VmFsdWVJbmRleCA9XG4gICAgICAgICAgICB2YWx1ZUluZGV4ICsgdGhpcy5fZHJvcERlbHRhIDwgMCA/IDAgOiB2YWx1ZUluZGV4ICsgdGhpcy5fZHJvcERlbHRhO1xuXG4gICAgICAgIGNvbnN0IGFnZ3JlZ2F0aW9uSXRlbSA9IGFnZ3JlZ2F0aW9uLmZpbmQoXG4gICAgICAgICAgICAoeCkgPT4geC5tZW1iZXIgPT09IGl0ZW1JZCB8fCB4LmRpc3BsYXlOYW1lID09PSBpdGVtSWRcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoYWdncmVnYXRpb25JdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQubW92ZVZhbHVlKGFnZ3JlZ2F0aW9uSXRlbSwgbmV3VmFsdWVJbmRleCk7XG4gICAgICAgICAgICB0aGlzLmdyaWQudmFsdWVzQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgICAgIHZhbHVlczogdGhpcy5ncmlkLnBpdm90Q29uZmlndXJhdGlvbi52YWx1ZXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25JdGVtRHJvcHBlZChcbiAgICAgICAgZXZlbnQ6IElEcm9wRHJvcHBlZEV2ZW50QXJncyxcbiAgICAgICAgZGltZW5zaW9uVHlwZTogUGl2b3REaW1lbnNpb25UeXBlXG4gICAgKSB7XG4gICAgICAgIGlmICghdGhpcy5kcm9wQWxsb3dlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGltZW5zaW9uID0gdGhpcy5ncmlkLmdldERpbWVuc2lvbnNCeVR5cGUoZGltZW5zaW9uVHlwZSk7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvblN0YXRlID0gdGhpcy5nZXREaW1lbnNpb25TdGF0ZShkaW1lbnNpb25UeXBlKTtcbiAgICAgICAgY29uc3QgaXRlbUlkID0gZXZlbnQuZHJhZy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuaWQ7XG4gICAgICAgIGNvbnN0IHRhcmdldElkID0gZXZlbnQub3duZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LmlkO1xuICAgICAgICBjb25zdCBkaW1lbnNpb25JdGVtID0gZGltZW5zaW9uPy5maW5kKCh4KSA9PiB4Lm1lbWJlck5hbWUgPT09IGl0ZW1JZCk7XG4gICAgICAgIGNvbnN0IGl0ZW1JbmRleCA9XG4gICAgICAgICAgICBkaW1lbnNpb24/LmZpbmRJbmRleCgoeCkgPT4geD8ubWVtYmVyTmFtZSA9PT0gaXRlbUlkKSAhPT0gLTFcbiAgICAgICAgICAgICAgICA/IGRpbWVuc2lvbj8uZmluZEluZGV4KCh4KSA9PiB4Lm1lbWJlck5hbWUgPT09IGl0ZW1JZClcbiAgICAgICAgICAgICAgICA6IGRpbWVuc2lvbj8ubGVuZ3RoO1xuICAgICAgICBjb25zdCBkaW1lbnNpb25zID0gdGhpcy5ncmlkLmFsbERpbWVuc2lvbnMuZmlsdGVyKCh4KSA9PiB4ICYmIHgubWVtYmVyTmFtZSA9PT0gaXRlbUlkKTtcblxuICAgICAgICBjb25zdCByZW9yZGVyID1cbiAgICAgICAgICAgIGRpbWVuc2lvblN0YXRlPy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0ubWVtYmVyTmFtZSA9PT0gaXRlbUlkKSAhPT1cbiAgICAgICAgICAgIC0xO1xuXG4gICAgICAgIGxldCB0YXJnZXRJbmRleCA9XG4gICAgICAgICAgICB0YXJnZXRJZCAhPT0gXCJcIlxuICAgICAgICAgICAgICAgID8gZGltZW5zaW9uPy5maW5kSW5kZXgoKHgpID0+IHgubWVtYmVyTmFtZSA9PT0gdGFyZ2V0SWQpXG4gICAgICAgICAgICAgICAgOiBkaW1lbnNpb24/Lmxlbmd0aDtcblxuICAgICAgICBpZiAoIWRpbWVuc2lvbikge1xuICAgICAgICAgICAgdGhpcy5tb3ZlVmFsdWVJdGVtKGl0ZW1JZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVvcmRlcikge1xuICAgICAgICAgICAgdGFyZ2V0SW5kZXggPVxuICAgICAgICAgICAgICAgIGl0ZW1JbmRleCArIHRoaXMuX2Ryb3BEZWx0YSA8IDBcbiAgICAgICAgICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICAgICAgICAgIDogaXRlbUluZGV4ICsgdGhpcy5fZHJvcERlbHRhO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRpbWVuc2lvbkl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5tb3ZlRGltZW5zaW9uKGRpbWVuc2lvbkl0ZW0sIGRpbWVuc2lvblR5cGUsIHRhcmdldEluZGV4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0RpbSA9IGRpbWVuc2lvbnMuZmluZCgoeCkgPT4geC5tZW1iZXJOYW1lID09PSBpdGVtSWQpO1xuICAgICAgICAgICAgdGhpcy5ncmlkLm1vdmVEaW1lbnNpb24obmV3RGltLCBkaW1lbnNpb25UeXBlLCB0YXJnZXRJbmRleCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdyaWQuZGltZW5zaW9uc0NoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgIGRpbWVuc2lvbnM6IGRpbWVuc2lvbixcbiAgICAgICAgICAgIGRpbWVuc2lvbkNvbGxlY3Rpb25UeXBlOiBkaW1lbnNpb25UeXBlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHVwZGF0ZURyb3BEb3duKFxuICAgICAgICB2YWx1ZTogSVBpdm90VmFsdWUsXG4gICAgICAgIGRyb3Bkb3duOiBJZ3hEcm9wRG93bkNvbXBvbmVudFxuICAgICkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIGRyb3Bkb3duLndpZHRoID0gXCIyMDBweFwiO1xuICAgICAgICB0aGlzLmFnZ3JlZ2F0ZUxpc3QgPSBQaXZvdFV0aWwuZ2V0QWdncmVnYXRlTGlzdCh2YWx1ZSwgdGhpcy5ncmlkKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBkcm9wZG93bi5vcGVuKHRoaXMuX3N1Yk1lbnVPdmVybGF5U2V0dGluZ3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25TdW1tYXJ5Q2xpY2soXG4gICAgICAgIGV2ZW50OiBNb3VzZUV2ZW50LFxuICAgICAgICB2YWx1ZTogSVBpdm90VmFsdWUsXG4gICAgICAgIGRyb3Bkb3duOiBJZ3hEcm9wRG93bkNvbXBvbmVudFxuICAgICkge1xuICAgICAgICB0aGlzLl9zdWJNZW51T3ZlcmxheVNldHRpbmdzLnRhcmdldCA9XG4gICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIGlmIChkcm9wZG93bi5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRHJvcERvd24odmFsdWUsIGRyb3Bkb3duKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGNsb3NlIGZvciBwcmV2aW91cyBjaGlwXG4gICAgICAgICAgICBkcm9wZG93bi5jbG9zZSgpO1xuICAgICAgICAgICAgZHJvcGRvd24uY2xvc2VkLnBpcGUoZmlyc3QoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZURyb3BEb3duKHZhbHVlLCBkcm9wZG93bik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25BZ2dyZWdhdGlvbkNoYW5nZShldmVudDogSVNlbGVjdGlvbkV2ZW50QXJncykge1xuICAgICAgICBpZiAoIXRoaXMuaXNTZWxlY3RlZChldmVudC5uZXdTZWxlY3Rpb24udmFsdWUpKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlLmFnZ3JlZ2F0ZSA9IGV2ZW50Lm5ld1NlbGVjdGlvbi52YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5waXBlVHJpZ2dlcisrO1xuICAgICAgICAgICAgdGhpcy5ncmlkLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNTZWxlY3RlZCh2YWw6IElQaXZvdEFnZ3JlZ2F0b3IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUuYWdncmVnYXRlLmtleSA9PT0gdmFsLmtleTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdob3N0Q3JlYXRlZChldmVudDogSURyYWdHaG9zdEJhc2VFdmVudEFyZ3MsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgeyB3aWR0aDogaXRlbVdpZHRoIH0gPVxuICAgICAgICAgICAgZXZlbnQub3duZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLmdob3N0V2lkdGggPSBpdGVtV2lkdGg7XG4gICAgICAgIHRoaXMuZ2hvc3RUZXh0ID0gdmFsdWU7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXG4gICAgICAgICAgICBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBcInBvc2l0aW9uXCIsXG4gICAgICAgICAgICBcImFic29sdXRlXCJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShcbiAgICAgICAgICAgIGV2ZW50Lm93bmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIFwidmlzaWJpbGl0eVwiLFxuICAgICAgICAgICAgXCJoaWRkZW5cIlxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgdG9nZ2xlSXRlbShpdGVtOiBJUGl2b3REaW1lbnNpb24gfCBJUGl2b3RWYWx1ZSkge1xuICAgICAgICBpZiAoaXRlbSBhcyBJUGl2b3RWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5ncmlkLnRvZ2dsZVZhbHVlKGl0ZW0gYXMgSVBpdm90VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW0gYXMgSVBpdm90RGltZW5zaW9uKSB7XG4gICAgICAgICAgICB0aGlzLmdyaWQudG9nZ2xlRGltZW5zaW9uKGl0ZW0gYXMgSVBpdm90RGltZW5zaW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25QYW5lbEVudHJ5KGV2ZW50OiBJRHJvcEJhc2VFdmVudEFyZ3MsIHBhbmVsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5kcm9wQWxsb3dlZCA9IGV2ZW50LmRyYWdEYXRhLmdyaWRJRCA9PT0gdGhpcy5ncmlkLmlkICYmIGV2ZW50LmRyYWdEYXRhLnNlbGVjdG9yQ2hhbm5lbHM/LnNvbWUoXG4gICAgICAgICAgICAoY2hhbm5lbDogc3RyaW5nKSA9PiBjaGFubmVsID09PSBwYW5lbFxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25JdGVtRHJhZ01vdmUoZXZlbnQ6IElEcmFnTW92ZUV2ZW50QXJncykge1xuICAgICAgICBjb25zdCBjbGllbnRSZWN0ID1cbiAgICAgICAgICAgIGV2ZW50Lm93bmVyLmVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgdGhpcy5fZHJvcERlbHRhID0gTWF0aC5yb3VuZChcbiAgICAgICAgICAgIChldmVudC5uZXh0UGFnZVkgLSBldmVudC5zdGFydFkpIC8gY2xpZW50UmVjdC5oZWlnaHRcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uSXRlbURyYWdFbmQoZXZlbnQ6IElEcmFnQmFzZUV2ZW50QXJncykge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgICAgZXZlbnQub3duZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgXCJwb3NpdGlvblwiLFxuICAgICAgICAgICAgXCJzdGF0aWNcIlxuICAgICAgICApO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKFxuICAgICAgICAgICAgZXZlbnQub3duZXIuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgXCJ2aXNpYmlsaXR5XCIsXG4gICAgICAgICAgICBcInZpc2libGVcIlxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25JdGVtRHJhZ092ZXIoZXZlbnQ6IElEcm9wQmFzZUV2ZW50QXJncykge1xuICAgICAgICBpZiAodGhpcy5kcm9wQWxsb3dlZCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhcbiAgICAgICAgICAgICAgICBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgXCJpZ3gtZHJhZy0tcHVzaFwiXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvbkl0ZW1EcmFnTGVhdmUoZXZlbnQ6IElEcm9wQmFzZUV2ZW50QXJncykge1xuICAgICAgICBpZiAodGhpcy5kcm9wQWxsb3dlZCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcbiAgICAgICAgICAgICAgICBldmVudC5vd25lci5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgXCJpZ3gtZHJhZy0tcHVzaFwiXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQYW5lbENvbGxhcHNlZChwYW5lbFR5cGU6IFBpdm90RGltZW5zaW9uVHlwZSk6IGJvb2xlYW4ge1xuICAgICAgICBzd2l0Y2gocGFuZWxUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFBpdm90RGltZW5zaW9uVHlwZS5Db2x1bW46XG4gICAgICAgICAgICAgICAgcmV0dXJuICF0aGlzLmNvbHVtbnNFeHBhbmRlZDtcbiAgICAgICAgICAgIGNhc2UgUGl2b3REaW1lbnNpb25UeXBlLkZpbHRlcjpcbiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuZmlsdGVyc0V4cGFuZGVkO1xuICAgICAgICAgICAgY2FzZSBQaXZvdERpbWVuc2lvblR5cGUuUm93OlxuICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy5yb3dzRXhwYW5kZWQ7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAhdGhpcy52YWx1ZXNFeHBhbmRlZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25Db2xsYXBzZUNoYW5nZSh2YWx1ZTogYm9vbGVhbiwgcGFuZWxUeXBlOiBQaXZvdERpbWVuc2lvblR5cGUpOiB2b2lkIHtcbiAgICAgICAgc3dpdGNoKHBhbmVsVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBQaXZvdERpbWVuc2lvblR5cGUuQ29sdW1uOlxuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uc0V4cGFuZGVkID0gIXZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uc0V4cGFuZGVkQ2hhbmdlLmVtaXQodGhpcy5jb2x1bW5zRXhwYW5kZWQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBQaXZvdERpbWVuc2lvblR5cGUuRmlsdGVyOlxuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyc0V4cGFuZGVkID0gIXZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyc0V4cGFuZGVkQ2hhbmdlLmVtaXQodGhpcy5maWx0ZXJzRXhwYW5kZWQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBQaXZvdERpbWVuc2lvblR5cGUuUm93OlxuICAgICAgICAgICAgICAgIHRoaXMucm93c0V4cGFuZGVkID0gIXZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMucm93c0V4cGFuZGVkQ2hhbmdlLmVtaXQodGhpcy5yb3dzRXhwYW5kZWQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlc0V4cGFuZGVkID0gIXZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMudmFsdWVzRXhwYW5kZWRDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlc0V4cGFuZGVkKVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19maWx0ZXJcIj5cbiAgICA8aWd4LWlucHV0LWdyb3VwIHR5cGU9XCJib3hcIiBbZGlzcGxheURlbnNpdHldPVwiZGlzcGxheURlbnNpdHlcIj5cbiAgICAgICAgPGlneC1pY29uIGlneFByZWZpeD5zZWFyY2g8L2lneC1pY29uPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgaWd4SW5wdXRcbiAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaFwiXG4gICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAvPlxuICAgIDwvaWd4LWlucHV0LWdyb3VwPlxuICAgIDxpZ3gtbGlzdCBbZGlzcGxheURlbnNpdHldPVwiZGlzcGxheURlbnNpdHlcIj5cbiAgICAgICAgPGlneC1saXN0LWl0ZW1cbiAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBpdGVtIG9mIGRpbXNcbiAgICAgICAgICAgICAgICAgICAgfCBmaWx0ZXJQaXZvdEl0ZW1zOiBpbnB1dC52YWx1ZTpncmlkPy5waXBlVHJpZ2dlclxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtpZF09XCJpdGVtLm1lbWJlck5hbWVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aWd4LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgW2FyaWEtbGFiZWxsZWRieV09XCJpdGVtLm1lbWJlck5hbWVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIml0ZW0uZW5hYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUl0ZW0oaXRlbSlcIlxuICAgICAgICAgICAgPjwvaWd4LWNoZWNrYm94PlxuICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5tZW1iZXJOYW1lIH19PC9zcGFuPlxuICAgICAgICA8L2lneC1saXN0LWl0ZW0+XG4gICAgICAgIDxpZ3gtbGlzdC1pdGVtXG4gICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgaXRlbSBvZiB2YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgfCBmaWx0ZXJQaXZvdEl0ZW1zOiBpbnB1dC52YWx1ZTpncmlkPy5waXBlVHJpZ2dlclxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtpZF09XCJpdGVtLm1lbWJlclwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpZ3gtY2hlY2tib3hcbiAgICAgICAgICAgICAgICBbYXJpYS1sYWJlbGxlZGJ5XT1cIml0ZW0ubWVtYmVyXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpdGVtLmVuYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVJdGVtKGl0ZW0pXCJcbiAgICAgICAgICAgID48L2lneC1jaGVja2JveD5cbiAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0uZGlzcGxheU5hbWUgfHwgaXRlbS5tZW1iZXIgfX08L3NwYW4+XG4gICAgICAgIDwvaWd4LWxpc3QtaXRlbT5cbiAgICA8L2lneC1saXN0PlxuPC9kaXY+XG5cbjxpZ3gtYWNjb3JkaW9uPlxuICAgIDxpZ3gtZXhwYW5zaW9uLXBhbmVsXG4gICAgICAgICpuZ0Zvcj1cImxldCBwYW5lbCBvZiBfcGFuZWxzXCJcbiAgICAgICAgW2FuaW1hdGlvblNldHRpbmdzXT1cImFuaW1hdGlvblNldHRpbmdzXCJcbiAgICAgICAgW2NvbGxhcHNlZF09XCJnZXRQYW5lbENvbGxhcHNlZChwYW5lbC50eXBlKVwiXG4gICAgICAgIChjb2xsYXBzZWRDaGFuZ2UpPVwib25Db2xsYXBzZUNoYW5nZSgkZXZlbnQsIHBhbmVsLnR5cGUpXCJcbiAgICA+XG4gICAgICAgIDxpZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlclxuICAgICAgICAgICAgaWNvblBvc2l0aW9uPVwibGVmdFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgaWd4RHJvcFxuICAgICAgICAgICAgKGVudGVyKT1cIm9uUGFuZWxFbnRyeSgkZXZlbnQsIHBhbmVsLm5hbWUpXCJcbiAgICAgICAgICAgIChkcm9wcGVkKT1cIm9uSXRlbURyb3BwZWQoJGV2ZW50LCBwYW5lbC50eXBlKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpZ3gtZXhwYW5zaW9uLXBhbmVsLXRpdGxlIGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2hlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19oZWFkZXItdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZ3JpZD8ucmVzb3VyY2VTdHJpbmdzW3BhbmVsLmkxOG5dIH19XG4gICAgICAgICAgICAgICAgPC9oNj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2hlYWRlci1leHRyYVwiPlxuICAgICAgICAgICAgICAgICAgICA8aWd4LWljb24+e3sgcGFuZWwuaWNvbiB9fTwvaWd4LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDxpZ3gtY2hpcD57eyB0aGlzLmdyaWQgPyB0aGlzLmdyaWRbcGFuZWwuZGF0YUtleV0ubGVuZ3RoIDogMCB9fTwvaWd4LWNoaXA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2lneC1leHBhbnNpb24tcGFuZWwtdGl0bGU+XG4gICAgICAgIDwvaWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgIDxpZ3gtZXhwYW5zaW9uLXBhbmVsLWJvZHlcbiAgICAgICAgICAgIGlneERyb3BcbiAgICAgICAgICAgIChlbnRlcik9XCJvblBhbmVsRW50cnkoJGV2ZW50LCBwYW5lbC5uYW1lKVwiXG4gICAgICAgICAgICAoZHJvcHBlZCk9XCJvbkl0ZW1Ecm9wcGVkKCRldmVudCwgcGFuZWwudHlwZSlcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8aWd4LWxpc3RcbiAgICAgICAgICAgICAgICAqbmdJZj1cInRoaXMuZ3JpZCAmJiB0aGlzLmdyaWRbcGFuZWwuZGF0YUtleV0ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgW2Rpc3BsYXlEZW5zaXR5XT1cImRpc3BsYXlEZW5zaXR5XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aWd4LWxpc3QtaXRlbVxuICAgICAgICAgICAgICAgICAgICBpZ3hEcm9wXG4gICAgICAgICAgICAgICAgICAgIFtpZ3hEcmFnXT1cInsgZ3JpZElEOiBncmlkLmlkLCBzZWxlY3RvckNoYW5uZWxzOiBwYW5lbC5kcmFnQ2hhbm5lbHMgfVwiXG4gICAgICAgICAgICAgICAgICAgIFtnaG9zdFRlbXBsYXRlXT1cIml0ZW1HaG9zdFwiXG4gICAgICAgICAgICAgICAgICAgIChnaG9zdENyZWF0ZSk9XCJnaG9zdENyZWF0ZWQoJGV2ZW50LCBpdGVtW3BhbmVsLml0ZW1LZXldKVwiXG4gICAgICAgICAgICAgICAgICAgIChvdmVyKT1cIm9uSXRlbURyYWdPdmVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAobGVhdmUpPVwib25JdGVtRHJhZ0xlYXZlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoZHJhZ01vdmUpPVwib25JdGVtRHJhZ01vdmUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChkcmFnRW5kKT1cIm9uSXRlbURyYWdFbmQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChkcm9wcGVkKT1cIm9uSXRlbURyb3BwZWQoJGV2ZW50LCBwYW5lbC50eXBlKVwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW0gb2YgdGhpcy5ncmlkW3BhbmVsLmRhdGFLZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGluZGV4XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJpdGVtW3BhbmVsLml0ZW1LZXldXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9faXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2l0ZW0tc3RhcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkl0ZW1Tb3J0KCRldmVudCwgaXRlbSwgcGFuZWwudHlwZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9fYWN0aW9uLXNvcnRdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsLnNvcnRhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2l0ZW0tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBhbmVsLnR5cGUgPT09IG51bGxcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5hZ2dyZWdhdGUua2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBhbmVsLnR5cGUgPT09IG51bGxcIj4oPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtW3BhbmVsLmRpc3BsYXlLZXldIHx8IGl0ZW1bcGFuZWwuaXRlbUtleV0gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicGFuZWwudHlwZSA9PT0gbnVsbFwiPik8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlneC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2FjdGlvbi1zb3J0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJwYW5lbC5zb3J0YWJsZSAmJiBpdGVtLnNvcnREaXJlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc29ydERpcmVjdGlvbiA8IDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiYXJyb3dfdXB3YXJkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiYXJyb3dfZG93bndhcmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaWd4LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9faXRlbS1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWd4LWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9fYWN0aW9uLWZpbHRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFuZWwudHlwZSAhPT0gbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb2ludGVyZG93bik9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRmlsdGVyaW5nSWNvblBvaW50ZXJEb3duKCRldmVudClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRmlsdGVyaW5nSWNvbkNsaWNrKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+ZmlsdGVyX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2lneC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZ3gtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19hY3Rpb24tc3VtbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicGFuZWwudHlwZSA9PT0gbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblN1bW1hcnlDbGljaygkZXZlbnQsIGl0ZW0sIGRyb3Bkb3duKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZ3hEcm9wRG93bkl0ZW1OYXZpZ2F0aW9uXT1cImRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaWd4LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlneC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlneERyYWdIYW5kbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9fYWN0aW9uLW1vdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInBhbmVsLmRyYWdDaGFubmVscy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPmRyYWdfaGFuZGxlPC9pZ3gtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2lneC1saXN0LWl0ZW0+XG4gICAgICAgICAgICA8L2lneC1saXN0PlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2VtcHR5XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cInRoaXMuZ3JpZCAmJiB0aGlzLmdyaWRbcGFuZWwuZGF0YUtleV0ubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBncmlkPy5yZXNvdXJjZVN0cmluZ3MuaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3JfcGFuZWxfZW1wdHkgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2lneC1leHBhbnNpb24tcGFuZWwtYm9keT5cbiAgICA8L2lneC1leHBhbnNpb24tcGFuZWw+XG48L2lneC1hY2NvcmRpb24+XG5cbjxpZ3gtZHJvcC1kb3duICNkcm9wZG93biAoc2VsZWN0aW9uQ2hhbmdpbmcpPVwib25BZ2dyZWdhdGlvbkNoYW5nZSgkZXZlbnQpXCI+XG4gICAgPGlneC1kcm9wLWRvd24taXRlbVxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhZ2dyZWdhdGVMaXN0XCJcbiAgICAgICAgW3NlbGVjdGVkXT1cImlzU2VsZWN0ZWQoaXRlbSlcIlxuICAgICAgICBbdmFsdWVdPVwiaXRlbVwiXG4gICAgPlxuICAgICAgICB7eyBpdGVtLmxhYmVsIH19XG4gICAgPC9pZ3gtZHJvcC1kb3duLWl0ZW0+XG48L2lneC1kcm9wLWRvd24+XG5cbjxuZy10ZW1wbGF0ZSAjaXRlbUdob3N0PlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJpZ3gtcGl2b3QtZGF0YS1zZWxlY3Rvcl9faXRlbS1naG9zdFwiXG4gICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJnaG9zdFdpZHRoXCJcbiAgICAgICAgW2NsYXNzLmlneC1waXZvdC1kYXRhLXNlbGVjdG9yX19pdGVtLWdob3N0LS1uby1kcm9wXT1cIiFkcm9wQWxsb3dlZFwiXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LXBpdm90LWRhdGEtc2VsZWN0b3JfX2l0ZW0tZ2hvc3QtdGV4dFwiPlxuICAgICAgICAgICAgPGlneC1pY29uPnVuZm9sZF9tb3JlPC9pZ3gtaWNvbj5cbiAgICAgICAgICAgIDxzcGFuPnt7IGdob3N0VGV4dCB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxpZ3gtaWNvbj5kcmFnX2hhbmRsZTwvaWd4LWljb24+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19