@mediusinc/mng-commons 2.5.0 → 2.6.0-rc.1

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 (76) hide show
  1. package/assets/i18n/en.json +4 -1
  2. package/assets/i18n/sl.json +4 -1
  3. package/esm2020/lib/components/action/action.component.mjs +8 -1
  4. package/esm2020/lib/components/action/editor/action-editor.component.mjs +196 -115
  5. package/esm2020/lib/components/action/models/action-execution.model.mjs +99 -10
  6. package/esm2020/lib/components/action/route/action-route.component.mjs +53 -35
  7. package/esm2020/lib/components/form/editor/form-editor.component.mjs +15 -6
  8. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +4 -1
  9. package/esm2020/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.mjs +69 -0
  10. package/esm2020/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.mjs +54 -0
  11. package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +4 -1
  12. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +4 -1
  13. package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +4 -1
  14. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +5 -2
  15. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +4 -1
  16. package/esm2020/lib/components/form/formly/fields/index.mjs +3 -1
  17. package/esm2020/lib/components/form/formly/formly.config.mjs +11 -1
  18. package/esm2020/lib/components/form/formly/models/formly-field.model.mjs +1 -1
  19. package/esm2020/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +21 -3
  20. package/esm2020/lib/components/layout/menu-item.component.mjs +9 -11
  21. package/esm2020/lib/components/layout/version.component.mjs +3 -3
  22. package/esm2020/lib/components/tableview/table/models/index.mjs +2 -0
  23. package/esm2020/lib/components/tableview/table/table.component.mjs +67 -9
  24. package/esm2020/lib/descriptors/action/action.descriptor.mjs +13 -1
  25. package/esm2020/lib/descriptors/editor/field.descriptor.mjs +77 -3
  26. package/esm2020/lib/descriptors/table/column.descriptor.mjs +25 -1
  27. package/esm2020/lib/descriptors/table/table.descriptor.mjs +13 -1
  28. package/esm2020/lib/descriptors/types/table.type.mjs +4 -1
  29. package/esm2020/lib/mng-commons.module.mjs +7 -4
  30. package/esm2020/lib/models/config.model.mjs +1 -1
  31. package/esm2020/lib/models/view-container.model.mjs +1 -1
  32. package/esm2020/lib/services/action-executor.service.mjs +327 -192
  33. package/esm2020/lib/services/commons.service.mjs +8 -1
  34. package/esm2020/lib/services/index.mjs +3 -1
  35. package/esm2020/lib/services/internal/commons-init.service.mjs +5 -9
  36. package/esm2020/lib/services/navigation.service.mjs +6 -3
  37. package/esm2020/lib/services/view-container.component.service.mjs +10 -1
  38. package/esm2020/lib/utils/action-data-provider.util.mjs +14 -1
  39. package/esm2020/lib/utils/editor-formly.util.mjs +23 -3
  40. package/fesm2015/mediusinc-mng-commons.mjs +2552 -1806
  41. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  42. package/fesm2020/mediusinc-mng-commons.mjs +2179 -1451
  43. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  44. package/lib/components/action/action.component.d.ts +1 -2
  45. package/lib/components/action/editor/action-editor.component.d.ts +19 -6
  46. package/lib/components/action/models/action-execution.model.d.ts +35 -6
  47. package/lib/components/action/route/action-route.component.d.ts +7 -4
  48. package/lib/components/form/editor/form-editor.component.d.ts +2 -1
  49. package/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.d.ts +27 -0
  50. package/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.d.ts +11 -0
  51. package/lib/components/form/formly/fields/index.d.ts +2 -0
  52. package/lib/components/form/formly/models/formly-field.model.d.ts +1 -0
  53. package/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.d.ts +5 -0
  54. package/lib/components/layout/menu-item.component.d.ts +1 -2
  55. package/lib/components/layout/version.component.d.ts +1 -1
  56. package/lib/components/tableview/table/models/index.d.ts +6 -0
  57. package/lib/components/tableview/table/table.component.d.ts +16 -1
  58. package/lib/descriptors/action/action.descriptor.d.ts +5 -0
  59. package/lib/descriptors/editor/field.descriptor.d.ts +28 -1
  60. package/lib/descriptors/table/column.descriptor.d.ts +8 -0
  61. package/lib/descriptors/table/table.descriptor.d.ts +2 -0
  62. package/lib/descriptors/types/table.type.d.ts +3 -0
  63. package/lib/mng-commons.module.d.ts +15 -14
  64. package/lib/models/config.model.d.ts +4 -0
  65. package/lib/models/view-container.model.d.ts +6 -0
  66. package/lib/services/action-executor.service.d.ts +73 -37
  67. package/lib/services/commons.service.d.ts +2 -0
  68. package/lib/services/index.d.ts +2 -0
  69. package/lib/services/internal/commons-init.service.d.ts +1 -3
  70. package/lib/services/navigation.service.d.ts +3 -2
  71. package/lib/services/view-container.component.service.d.ts +7 -2
  72. package/lib/utils/action-data-provider.util.d.ts +8 -0
  73. package/package.json +2 -2
  74. package/scss/mng-commons-light.scss +3 -0
  75. package/scss/mng-overrides/_theme_multiselect.scss +20 -0
  76. package/scss/mng-overrides/_theme_styles.scss +1 -0
@@ -11,6 +11,9 @@ export class ColumnDescriptor {
11
11
  this._isSortEnabled = false;
12
12
  this._isMultiline = false;
13
13
  this._hasValueAsTooltip = false;
14
+ this._isReorderable = false;
15
+ this._isToggleable = false;
16
+ this._isVisible = true;
14
17
  // styling
15
18
  this._headerClassName = '';
16
19
  this._className = '';
@@ -126,6 +129,15 @@ export class ColumnDescriptor {
126
129
  get hasValueAsTooltip() {
127
130
  return this._hasValueAsTooltip;
128
131
  }
132
+ get isReorderable() {
133
+ return this._isReorderable;
134
+ }
135
+ get isToggleable() {
136
+ return this._isToggleable;
137
+ }
138
+ get isVisible() {
139
+ return this._isVisible;
140
+ }
129
141
  get isLocalized() {
130
142
  return this._isLocalized;
131
143
  }
@@ -323,6 +335,15 @@ export class ColumnDescriptor {
323
335
  this._hasValueAsTooltip = valueAsTooltip;
324
336
  return this;
325
337
  }
338
+ withReorderable(isReorderable = true) {
339
+ this._isReorderable = isReorderable;
340
+ return this;
341
+ }
342
+ withToggleable(isToggleable = true, isVisible = true) {
343
+ this._isToggleable = isToggleable;
344
+ this._isVisible = isVisible;
345
+ return this;
346
+ }
326
347
  localized(existsProperty) {
327
348
  if (existsProperty) {
328
349
  this._localizationExistsProperty = existsProperty;
@@ -369,6 +390,9 @@ export class ColumnDescriptor {
369
390
  obj._getter = this._getter;
370
391
  obj._isMultiline = this._isMultiline;
371
392
  obj._hasValueAsTooltip = this._hasValueAsTooltip;
393
+ obj._isReorderable = this._isReorderable;
394
+ obj._isToggleable = this._isToggleable;
395
+ obj._isVisible = this._isVisible;
372
396
  obj._isLocalized = this._isLocalized;
373
397
  obj._localizationExistsProperty = this._localizationExistsProperty;
374
398
  }
@@ -427,4 +451,4 @@ export class ColumnDynamicDescriptor extends ColumnDescriptor {
427
451
  return descriptor;
428
452
  }
429
453
  }
430
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL3RhYmxlL2NvbHVtbi5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBd0IsZ0JBQWdCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFFckUsT0FBTyxFQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsMEJBQTBCLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDL0YsT0FBTyxFQUFDLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFHL0UsTUFBTSxPQUFPLGdCQUFnQjtJQXFEekIsWUFBWSxLQUEwQixFQUFFLFFBQWdCO1FBbERoRCxnQkFBVyxHQUFtQixjQUFjLENBQUMsTUFBTSxDQUFDO1FBQ3BELHVCQUFrQixHQUEwQixxQkFBcUIsQ0FBQyxNQUFNLENBQUM7UUFHekUsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFPdkIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRW5DLFVBQVU7UUFDRixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixXQUFNLEdBQWtCLElBQUksQ0FBQztRQUM3QixjQUFTLEdBQWtCLElBQUksQ0FBQztRQUNoQyxjQUFTLEdBQWtCLElBQUksQ0FBQztRQUtoQyxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFakMsb0JBQW9CO1FBQ1osbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFnQi9C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Q2xDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGNBQWMsQ0FBQyxVQUFtQjtRQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7O09BRUc7SUFDYSxJQUFJO1FBQ2hCLE1BQU0sVUFBVSxHQUFHLElBQUksdUJBQXVCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixVQUFVLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDaEMsVUFBVSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzFDLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxlQUFxQztRQUMzRCxNQUFNLFVBQVUsR0FBRyxJQUFJLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0lDb2x1bW5WYWx1ZUNvbXBvbmVudCwgTW5nRXJyb3JJbnRlcm5hbH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7Q2xhc3NUeXBlLCBFbnVtQ29uc3RhbnRUeXBlLCBFbnVtVHlwZX0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHtNb2RlbFV0aWwsIFR5cGVVdGlsfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQge0RhdGVVdGlsfSBmcm9tICcuLi8uLi91dGlscy9kYXRlLnV0aWwnO1xuaW1wb3J0IHtUYWJsZXZpZXdVdGlsfSBmcm9tICcuLi8uLi91dGlscy90YWJsZXZpZXcudXRpbCc7XG5pbXBvcnQge0ZpbHRlckRlc2NyaXB0b3IsIEZpbHRlckxvb2t1cERlc2NyaXB0b3IsIEZpbHRlckxvb2t1cEVudW1EZXNjcmlwdG9yfSBmcm9tICcuLi9maWx0ZXInO1xuaW1wb3J0IHtDb2x1bW5EaXNwbGF5VHlwZUVudW0sIENvbHVtblR5cGVFbnVtLCBGaWx0ZXJUeXBlRW51bX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtUYWJsZURlc2NyaXB0b3IsIFRhYmxlRHluYW1pY0Rlc2NyaXB0b3J9IGZyb20gJy4vdGFibGUuZGVzY3JpcHRvcic7XG5cbmV4cG9ydCBjbGFzcyBDb2x1bW5EZXNjcmlwdG9yPFQsIFRUPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF90YWJsZTogVGFibGVEZXNjcmlwdG9yPFRUPjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3Byb3BlcnR5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfY29sdW1uVHlwZTogQ29sdW1uVHlwZUVudW0gPSBDb2x1bW5UeXBlRW51bS5TdHJpbmc7XG4gICAgcHJpdmF0ZSBfY29sdW1uRGlzcGxheVR5cGU6IENvbHVtbkRpc3BsYXlUeXBlRW51bSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5TdHJpbmc7XG4gICAgcHJvdGVjdGVkIF90aXRsZT86IHN0cmluZztcbiAgICBwcml2YXRlIF9qc29uUGF0aD86IHN0cmluZztcbiAgICBwcml2YXRlIF9pc1NvcnRFbmFibGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfc29ydFByb3BlcnR5Pzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2ZpbHRlckRlc2NyaXB0b3I/OiBGaWx0ZXJEZXNjcmlwdG9yPHVua25vd24+O1xuICAgIHByaXZhdGUgX2Rpc3BsYXlGb3JtYXQ/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfbG9jYWxlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX3RlbXBsYXRlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2dldHRlcj86IChpdGVtOiBUVCwgdmFsdWU/OiBUIHwgbnVsbCkgPT4gdW5rbm93bjtcbiAgICBwcml2YXRlIF9pc011bHRpbGluZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2hhc1ZhbHVlQXNUb29sdGlwID0gZmFsc2U7XG5cbiAgICAvLyBzdHlsaW5nXG4gICAgcHJpdmF0ZSBfaGVhZGVyQ2xhc3NOYW1lID0gJyc7XG4gICAgcHJpdmF0ZSBfY2xhc3NOYW1lID0gJyc7XG4gICAgcHJpdmF0ZSBfd2lkdGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgX21pbldpZHRoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIF9tYXhXaWR0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvLyBlbnVtIHNwZWNpZmljc1xuICAgIHByaXZhdGUgX2VudW1UeXBlPzogRW51bVR5cGU7XG4gICAgcHJpdmF0ZSBfZW51bVRpdGxlUGF0aD86IHN0cmluZyB8IG51bGw7XG4gICAgcHJpdmF0ZSBfZW51bU5hbWVBc1ZhbHVlID0gZmFsc2U7XG5cbiAgICAvLyBib29sZWFuIHNwZWNpZmljc1xuICAgIHByaXZhdGUgX2Jvb2xlYW5Bc0ljb24gPSBmYWxzZTtcbiAgICBwcml2YXRlIF9ib29sZWFuWWVzPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2Jvb2xlYW5Obz86IHN0cmluZztcblxuICAgIC8vIG1vZGVsIHNwZWNpZmljc1xuICAgIHByaXZhdGUgX29iamVjdE1vZGVsVHlwZT86IENsYXNzVHlwZTx1bmtub3duPjtcbiAgICBwcml2YXRlIF9vYmplY3RUaXRsZVByb3BlcnR5Pzogc3RyaW5nO1xuXG4gICAgLy8gY3VycmVuY3kgc3BlY2lmaWNzXG4gICAgcHJpdmF0ZSBfY3VycmVuY3lDb2RlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2N1cnJlbmN5RnJvbVByb3BlcnR5Pzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2N1cnJlbmN5RGlzcGxheT86ICdzeW1ib2wnIHwgJ2NvZGUnIHwgJ25hbWUnO1xuXG4gICAgLy8gY3VzdG9tIHNwZWNpZmljc1xuICAgIHByaXZhdGUgX2N1c3RvbUNvbXBvbmVudFR5cGU/OiBUeXBlPElDb2x1bW5WYWx1ZUNvbXBvbmVudDxUVD4+O1xuXG4gICAgLy8gaGVscGVyc1xuICAgIHByaXZhdGUgX2hhc0NvcHlUb0NsaXBib2FyZCA9IGZhbHNlO1xuXG4gICAgLy8gbG9jYWxpemF0aW9uXG4gICAgcHJpdmF0ZSBfaXNMb2NhbGl6ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9sb2NhbGl6YXRpb25FeGlzdHNQcm9wZXJ0eT86IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKHRhYmxlOiBUYWJsZURlc2NyaXB0b3I8VFQ+LCBwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3RhYmxlID0gdGFibGU7XG4gICAgICAgIHRoaXMuX3Byb3BlcnR5ID0gcHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb2x1bW5UeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1uVHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbHVtbkRpc3BsYXlUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1uRGlzcGxheVR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0aXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RpdGxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQganNvblBhdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9qc29uUGF0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzU29ydEVuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1NvcnRFbmFibGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc29ydFByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc29ydFByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsdGVyRGVzY3JpcHRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlckRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaXNwbGF5Rm9ybWF0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheUZvcm1hdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGVhZGVyQ2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVhZGVyQ2xhc3NOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2xhc3NOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgd2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93aWR0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1pbldpZHRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWluV2lkdGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtYXhXaWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heFdpZHRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW51bVR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnVtVHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVudW1UaXRsZVBhdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnVtVGl0bGVQYXRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW51bU5hbWVBc1ZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW51bU5hbWVBc1ZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYm9vbGVhbkFzSWNvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Jvb2xlYW5Bc0ljb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBib29sZWFuWWVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYm9vbGVhblllcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGJvb2xlYW5ObygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Jvb2xlYW5ObztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9iamVjdE1vZGVsVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdE1vZGVsVHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9iamVjdFRpdGxlUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vYmplY3RUaXRsZVByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VzdG9tQ29tcG9uZW50VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbUNvbXBvbmVudFR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXJyZW5jeUNvZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW5jeUNvZGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXJyZW5jeURpc3BsYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW5jeURpc3BsYXk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXJyZW5jeUZyb21Qcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbmN5RnJvbVByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzQ29weVRvQ2xpcGJvYXJkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzQ29weVRvQ2xpcGJvYXJkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGVtcGxhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGdldHRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldHRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzTXVsdGlsaW5lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNNdWx0aWxpbmU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNWYWx1ZUFzVG9vbHRpcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1ZhbHVlQXNUb29sdGlwO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNMb2NhbGl6ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvY2FsaXphdGlvbkV4aXN0c1Byb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29udmVydHMgY29sdW1uIHRvIGdpdmVuIHR5cGUgd2l0aCBhZGRpdGlvbmFsIGFyZ3VtZW50c1xuICAgICAqIEBwYXJhbSB0eXBlIGNvbHVtbiB0eXBlIGVudW1cbiAgICAgKiBAcGFyYW0gYXJncyBhbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgZm9yIGNvbHVtbiAob3B0aW9uYWwpXG4gICAgICovXG4gICAgcHVibGljIGFzVHlwZSh0eXBlOiBDb2x1bW5UeXBlRW51bSwgZGlzcGxheVR5cGU/OiBDb2x1bW5EaXNwbGF5VHlwZUVudW0sIC4uLmFyZ3M6IGFueVtdKTogdGhpcyB7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5OdW1iZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlUeXBlID09PSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uQ3VycmVuY3kgPyB0aGlzLmFzQ3VycmVuY3koLi4uYXJncykgOiB0aGlzLmFzTnVtYmVyKC4uLmFyZ3MpO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5Cb29sZWFuOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzQm9vbGVhbiguLi5hcmdzKTtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uRGF0ZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc0RhdGUoLi4uYXJncyk7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkVudW06XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNFbnVtKGFyZ3NbMF0gYXMgRW51bVR5cGUsIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5DdXN0b206XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNDdXN0b21Db21wb25lbnQoYXJnc1swXSk7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLlN0cmluZzpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXNOdW1iZXIoZGlzcGxheUZvcm1hdCA9ICcxLjAtMCcsIGxvY2FsZT86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uTnVtYmVyO1xuICAgICAgICB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5OdW1iZXI7XG4gICAgICAgIHRoaXMuX2Rpc3BsYXlGb3JtYXQgPSBkaXNwbGF5Rm9ybWF0O1xuICAgICAgICB0aGlzLl9sb2NhbGUgPSBsb2NhbGUgPz8gdGhpcy5fbG9jYWxlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNDdXJyZW5jeShjdXJyZW5jeUNvZGU/OiBzdHJpbmcsIGN1cnJlbmN5RnJvbVByb3BlcnR5Pzogc3RyaW5nLCBjdXJyZW5jeURpc3BsYXk/OiAnc3ltYm9sJyB8ICdjb2RlJyB8ICduYW1lJywgZGlzcGxheUZvcm1hdCA9ICcxLjItMicsIGxvY2FsZT86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uTnVtYmVyO1xuICAgICAgICB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5DdXJyZW5jeTtcbiAgICAgICAgdGhpcy5fY3VycmVuY3lDb2RlID0gY3VycmVuY3lDb2RlID8/IHRoaXMuX2N1cnJlbmN5Q29kZTtcbiAgICAgICAgdGhpcy5fY3VycmVuY3lGcm9tUHJvcGVydHkgPSBjdXJyZW5jeUZyb21Qcm9wZXJ0eSA/PyB0aGlzLl9jdXJyZW5jeUZyb21Qcm9wZXJ0eTtcbiAgICAgICAgdGhpcy5fY3VycmVuY3lEaXNwbGF5ID0gY3VycmVuY3lEaXNwbGF5ID8/IHRoaXMuX2N1cnJlbmN5RGlzcGxheTtcbiAgICAgICAgdGhpcy5fZGlzcGxheUZvcm1hdCA9IGRpc3BsYXlGb3JtYXQgPz8gZGlzcGxheUZvcm1hdDtcbiAgICAgICAgdGhpcy5fbG9jYWxlID0gbG9jYWxlID8/IHRoaXMuX2xvY2FsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzRGF0ZShkaXNwbGF5Rm9ybWF0ID0gJ2RkLk1NLnl5eXknKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbHVtblR5cGUgPSBDb2x1bW5UeXBlRW51bS5EYXRlO1xuICAgICAgICB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5EYXRlO1xuICAgICAgICB0aGlzLl9kaXNwbGF5Rm9ybWF0ID0gZGlzcGxheUZvcm1hdDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQm9vbGVhbih5ZXM/OiBzdHJpbmcsIG5vPzogc3RyaW5nLCBhc0ljb24gPSBmYWxzZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uQm9vbGVhbjtcbiAgICAgICAgdGhpcy5fY29sdW1uRGlzcGxheVR5cGUgPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uQm9vbGVhbjtcbiAgICAgICAgdGhpcy5fYm9vbGVhbkFzSWNvbiA9IGFzSWNvbjtcbiAgICAgICAgdGhpcy5fYm9vbGVhblllcyA9IHllcztcbiAgICAgICAgdGhpcy5fYm9vbGVhbk5vID0gbm87XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0VudW0oZW51bVR5cGU6IEVudW1UeXBlLCBuYW1lQXNWYWx1ZSA9IGZhbHNlLCB0aXRsZVBhdGg/OiBzdHJpbmcgfCBudWxsKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbHVtblR5cGUgPSBDb2x1bW5UeXBlRW51bS5FbnVtO1xuICAgICAgICB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5FbnVtO1xuICAgICAgICB0aGlzLl9lbnVtVHlwZSA9IGVudW1UeXBlO1xuICAgICAgICB0aGlzLl9lbnVtTmFtZUFzVmFsdWUgPSBuYW1lQXNWYWx1ZTtcbiAgICAgICAgaWYgKHR5cGVvZiB0aXRsZVBhdGggPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aXRsZVBhdGggPSBUeXBlVXRpbC5maW5kRW51bU5hbWUoZW51bVR5cGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2VudW1UaXRsZVBhdGggPSB0aXRsZVBhdGg7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0N1c3RvbUNvbXBvbmVudChjdXN0b21Db21wb25lbnRUeXBlOiBUeXBlPElDb2x1bW5WYWx1ZUNvbXBvbmVudDxUVD4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbHVtblR5cGUgPSBDb2x1bW5UeXBlRW51bS5DdXN0b207XG4gICAgICAgIHRoaXMuX2NvbHVtbkRpc3BsYXlUeXBlID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkNvbXBvbmVudDtcbiAgICAgICAgdGhpcy5fY3VzdG9tQ29tcG9uZW50VHlwZSA9IGN1c3RvbUNvbXBvbmVudFR5cGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0h0bWwoKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbHVtbkRpc3BsYXlUeXBlID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkh0bWw7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ2xhc3NOYW1lKGNsYXNzTmFtZT86IHN0cmluZywgaGVhZGVyQ2xhc3NOYW1lPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NsYXNzTmFtZSA9IGNsYXNzTmFtZSA/PyAnJztcbiAgICAgICAgdGhpcy5faGVhZGVyQ2xhc3NOYW1lID0gaGVhZGVyQ2xhc3NOYW1lID8/ICcnO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFdpZHRoKHdpZHRoPzogbnVtYmVyLCBtaW5XaWR0aD86IG51bWJlciwgbWF4V2lkdGg/OiBudW1iZXIpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fd2lkdGggPSB3aWR0aCA/PyBudWxsO1xuICAgICAgICB0aGlzLl9taW5XaWR0aCA9IG1pbldpZHRoID8/IG51bGw7XG4gICAgICAgIHRoaXMuX21heFdpZHRoID0gbWF4V2lkdGggPz8gbnVsbDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhPYmplY3RQcm9wZXJ0eTxNVD4obW9kZWxUeXBlOiBDbGFzc1R5cGU8TVQ+LCB0aXRsZVByb3BlcnR5Pzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX29iamVjdE1vZGVsVHlwZSA9IG1vZGVsVHlwZTtcbiAgICAgICAgaWYgKCF0aXRsZVByb3BlcnR5KSB7XG4gICAgICAgICAgICB0aGlzLl9vYmplY3RUaXRsZVByb3BlcnR5ID0gTW9kZWxVdGlsLmZpbmRUaXRsZUF0dHJpYnV0ZShtb2RlbFR5cGUpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX29iamVjdFRpdGxlUHJvcGVydHkgPSB0aXRsZVByb3BlcnR5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGl0bGUodGl0bGU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl90aXRsZSA9IHRpdGxlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEpzb25QYXRoKHBhdGg6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9qc29uUGF0aCA9IHBhdGg7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmlsdGVyKGZvcmNlU2ltcGxlID0gZmFsc2UpOiBGaWx0ZXJEZXNjcmlwdG9yPGFueT4ge1xuICAgICAgICB0aGlzLl9maWx0ZXJEZXNjcmlwdG9yID0gbmV3IEZpbHRlckRlc2NyaXB0b3I8dW5rbm93bj4odGhpcy5fcHJvcGVydHkpO1xuICAgICAgICBsZXQgZmlsdGVyVHlwZTogRmlsdGVyVHlwZUVudW07XG5cbiAgICAgICAgaWYgKCFmb3JjZVNpbXBsZSAmJiB0aGlzLl9vYmplY3RNb2RlbFR5cGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndpdGhGaWx0ZXJMb29rdXAoKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHRoaXMuX2NvbHVtblR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uTnVtYmVyOlxuICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5OdW1iZXI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkJvb2xlYW46XG4gICAgICAgICAgICAgICAgZmlsdGVyVHlwZSA9IEZpbHRlclR5cGVFbnVtLkJvb2xlYW47XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkRhdGU6XG4gICAgICAgICAgICAgICAgZmlsdGVyVHlwZSA9IEZpbHRlclR5cGVFbnVtLkRhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkVudW06XG4gICAgICAgICAgICAgICAgaWYgKCFmb3JjZVNpbXBsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53aXRoRmlsdGVyTG9va3VwRW51bSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5TdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uU3RyaW5nOlxuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5DdXN0b206XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5TdHJpbmc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9maWx0ZXJEZXNjcmlwdG9yLmFzRmlsdGVyVHlwZShmaWx0ZXJUeXBlKTtcbiAgICAgICAgaWYgKGZpbHRlclR5cGUgPT09IEZpbHRlclR5cGVFbnVtLk51bWJlcikge1xuICAgICAgICAgICAgY29uc3QgZGlzcGxheUZvcm1hdEZyYWN0aW9ucyA9IHRoaXMuX2Rpc3BsYXlGb3JtYXQ/LnNwbGl0KCcuJyk/LlsxXT8uc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIGlmIChkaXNwbGF5Rm9ybWF0RnJhY3Rpb25zICYmIGRpc3BsYXlGb3JtYXRGcmFjdGlvbnMubGVuZ3RoID4gMikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbHRlckRlc2NyaXB0b3Iud2l0aE51bWJlckZyYWN0aW9ucyhwYXJzZUludChkaXNwbGF5Rm9ybWF0RnJhY3Rpb25zWzBdKSwgcGFyc2VJbnQoZGlzcGxheUZvcm1hdEZyYWN0aW9uc1sxXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlclR5cGUgPT09IEZpbHRlclR5cGVFbnVtLkRhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlGb3JtYXQgPSB0aGlzLl9kaXNwbGF5Rm9ybWF0O1xuICAgICAgICAgICAgaWYgKGRpc3BsYXlGb3JtYXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJEaXNwbGF5Rm9ybWF0ID0gRGF0ZVV0aWwuZnJvbVByaW1lVG9Bbmd1bGFyRGF0ZUZvcm1hdChkaXNwbGF5Rm9ybWF0KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9maWx0ZXJEZXNjcmlwdG9yLndpdGhEYXRlRm9ybWF0KGZpbHRlckRpc3BsYXlGb3JtYXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlckRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWx0ZXJMb29rdXAoKTogRmlsdGVyTG9va3VwRGVzY3JpcHRvcjx1bmtub3duPiB7XG4gICAgICAgIGNvbnN0IGZpbHRlckRlc2NyaXB0b3IgPSBuZXcgRmlsdGVyTG9va3VwRGVzY3JpcHRvcjx1bmtub3duPih0aGlzLl9wcm9wZXJ0eSwgdGhpcy5fb2JqZWN0TW9kZWxUeXBlID8/IG51bGwpO1xuICAgICAgICB0aGlzLl9maWx0ZXJEZXNjcmlwdG9yID0gZmlsdGVyRGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIGZpbHRlckRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWx0ZXJMb29rdXBFbnVtKG9wdGlvbnM/OiBBcnJheTxFbnVtQ29uc3RhbnRUeXBlPik6IEZpbHRlckxvb2t1cEVudW1EZXNjcmlwdG9yIHtcbiAgICAgICAgaWYgKHRoaXMuX2NvbHVtblR5cGUgIT09IENvbHVtblR5cGVFbnVtLkVudW0gfHwgIXRoaXMuX2VudW1UeXBlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTW5nRXJyb3JJbnRlcm5hbChgQ29sdW1uICR7dGhpcy5fcHJvcGVydHl9IGlzIG5vdCBvZiB0eXBlIGVudW0gb3IgZW51bSB0eXBlIGlzIHVuZGVmaW5lZC5gLCAnQ29sdW1uRGVzY3JpcHRvciBlcnJvcicpLmNvbnNvbGVFcnJvcigpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpbHRlckRlc2NyaXB0b3IgPSBuZXcgRmlsdGVyTG9va3VwRW51bURlc2NyaXB0b3IodGhpcy5fcHJvcGVydHksIHRoaXMuX2VudW1UeXBlLCBvcHRpb25zLCB0aGlzLl9lbnVtTmFtZUFzVmFsdWUsIHRoaXMuX2VudW1UaXRsZVBhdGgpO1xuICAgICAgICB0aGlzLl9maWx0ZXJEZXNjcmlwdG9yID0gZmlsdGVyRGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIGZpbHRlckRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTb3J0KGlzRW5hYmxlZCA9IHRydWUsIHNvcnRQcm9wZXJ0eT86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc1NvcnRFbmFibGVkID0gaXNFbmFibGVkO1xuICAgICAgICB0aGlzLl9zb3J0UHJvcGVydHkgPSBzb3J0UHJvcGVydHk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGVmYXVsdFNvcnQoYXNjID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZS53aXRoRGVmYXVsdFNvcnQodGhpcy5fcHJvcGVydHksIGFzYyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29weVRvQ2xpcGJvYXJkKGhhc0NvcHlUb0NsaWJvYXJkID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9oYXNDb3B5VG9DbGlwYm9hcmQgPSBoYXNDb3B5VG9DbGlib2FyZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUZW1wbGF0ZSh0ZW1wbGF0ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoR2V0dGVyKGdldHRlcj86IChpdGVtOiBUVCwgdmFsdWU/OiBUIHwgbnVsbCkgPT4gdW5rbm93bik6IHRoaXMge1xuICAgICAgICB0aGlzLl9nZXR0ZXIgPSBnZXR0ZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTXVsdGlsaW5lKGlzTXVsdGlsaW5lID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc011bHRpbGluZSA9IGlzTXVsdGlsaW5lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFZhbHVlQXNUb29sdGlwKHZhbHVlQXNUb29sdGlwID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9oYXNWYWx1ZUFzVG9vbHRpcCA9IHZhbHVlQXNUb29sdGlwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgbG9jYWxpemVkKGV4aXN0c1Byb3BlcnR5Pzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIGlmIChleGlzdHNQcm9wZXJ0eSkge1xuICAgICAgICAgICAgdGhpcy5fbG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHkgPSBleGlzdHNQcm9wZXJ0eTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2xvY2FsaXphdGlvbkV4aXN0c1Byb3BlcnR5ID0gYCR7dGhpcy5fcHJvcGVydHl9TG9jYWxpemVkYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBDb2x1bW5EZXNjcmlwdG9yPFQsIFRUPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgQ29sdW1uRGVzY3JpcHRvcjxULCBUVD4odGhpcy5fdGFibGUsIHRoaXMuX3Byb3BlcnR5KTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZGVzY3JpcHRvcik7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb3B5RmllbGRzVG8ob2JqOiBDb2x1bW5EZXNjcmlwdG9yPFQsIFRUPikge1xuICAgICAgICBvYmouX2pzb25QYXRoID0gdGhpcy5fanNvblBhdGg7XG4gICAgICAgIG9iai5fdGl0bGUgPSB0aGlzLl90aXRsZTtcbiAgICAgICAgb2JqLl9pc1NvcnRFbmFibGVkID0gdGhpcy5faXNTb3J0RW5hYmxlZDtcbiAgICAgICAgb2JqLl9zb3J0UHJvcGVydHkgPSB0aGlzLl9zb3J0UHJvcGVydHk7XG4gICAgICAgIG9iai5fY29sdW1uVHlwZSA9IHRoaXMuX2NvbHVtblR5cGU7XG4gICAgICAgIG9iai5fY29sdW1uRGlzcGxheVR5cGUgPSB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZTtcbiAgICAgICAgb2JqLl9maWx0ZXJEZXNjcmlwdG9yID0gdGhpcy5fZmlsdGVyRGVzY3JpcHRvcj8uY29weSgpO1xuICAgICAgICBvYmouX2VudW1UeXBlID0gdGhpcy5fZW51bVR5cGU7XG4gICAgICAgIG9iai5fZW51bVRpdGxlUGF0aCA9IHRoaXMuX2VudW1UaXRsZVBhdGg7XG4gICAgICAgIG9iai5fZW51bU5hbWVBc1ZhbHVlID0gdGhpcy5fZW51bU5hbWVBc1ZhbHVlO1xuICAgICAgICBvYmouX2Jvb2xlYW5Bc0ljb24gPSB0aGlzLl9ib29sZWFuQXNJY29uO1xuICAgICAgICBvYmouX2Jvb2xlYW5ZZXMgPSB0aGlzLl9ib29sZWFuWWVzO1xuICAgICAgICBvYmouX2Jvb2xlYW5ObyA9IHRoaXMuX2Jvb2xlYW5ObztcbiAgICAgICAgb2JqLl9vYmplY3RNb2RlbFR5cGUgPSB0aGlzLl9vYmplY3RNb2RlbFR5cGU7XG4gICAgICAgIG9iai5fb2JqZWN0VGl0bGVQcm9wZXJ0eSA9IHRoaXMuX29iamVjdFRpdGxlUHJvcGVydHk7XG4gICAgICAgIG9iai5fbG9jYWxlID0gdGhpcy5fbG9jYWxlO1xuICAgICAgICBvYmouX2N1cnJlbmN5Q29kZSA9IHRoaXMuX2N1cnJlbmN5Q29kZTtcbiAgICAgICAgb2JqLl9jdXJyZW5jeURpc3BsYXkgPSB0aGlzLl9jdXJyZW5jeURpc3BsYXk7XG4gICAgICAgIG9iai5fY3VycmVuY3lGcm9tUHJvcGVydHkgPSB0aGlzLl9jdXJyZW5jeUZyb21Qcm9wZXJ0eTtcbiAgICAgICAgb2JqLl9kaXNwbGF5Rm9ybWF0ID0gdGhpcy5fZGlzcGxheUZvcm1hdDtcbiAgICAgICAgb2JqLl9oZWFkZXJDbGFzc05hbWUgPSB0aGlzLl9oZWFkZXJDbGFzc05hbWU7XG4gICAgICAgIG9iai5fY2xhc3NOYW1lID0gdGhpcy5fY2xhc3NOYW1lO1xuICAgICAgICBvYmouX3dpZHRoID0gdGhpcy5fd2lkdGg7XG4gICAgICAgIG9iai5fbWluV2lkdGggPSB0aGlzLl9taW5XaWR0aDtcbiAgICAgICAgb2JqLl9tYXhXaWR0aCA9IHRoaXMuX21heFdpZHRoO1xuICAgICAgICBvYmouX2N1c3RvbUNvbXBvbmVudFR5cGUgPSB0aGlzLl9jdXN0b21Db21wb25lbnRUeXBlO1xuICAgICAgICBvYmouX2hhc0NvcHlUb0NsaXBib2FyZCA9IHRoaXMuX2hhc0NvcHlUb0NsaXBib2FyZDtcbiAgICAgICAgb2JqLl90ZW1wbGF0ZSA9IHRoaXMuX3RlbXBsYXRlO1xuICAgICAgICBvYmouX2dldHRlciA9IHRoaXMuX2dldHRlcjtcbiAgICAgICAgb2JqLl9pc011bHRpbGluZSA9IHRoaXMuX2lzTXVsdGlsaW5lO1xuICAgICAgICBvYmouX2hhc1ZhbHVlQXNUb29sdGlwID0gdGhpcy5faGFzVmFsdWVBc1Rvb2x0aXA7XG4gICAgICAgIG9iai5faXNMb2NhbGl6ZWQgPSB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICAgICAgb2JqLl9sb2NhbGl6YXRpb25FeGlzdHNQcm9wZXJ0eSA9IHRoaXMuX2xvY2FsaXphdGlvbkV4aXN0c1Byb3BlcnR5O1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIENvbHVtbkR5bmFtaWNEZXNjcmlwdG9yIGV4dGVuZHMgQ29sdW1uRGVzY3JpcHRvcjxhbnksIGFueT4ge1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSBfdGFibGU6IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3I7XG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIF90aXRsZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgX3Zpc2liaWxpdHkgPSB0cnVlO1xuXG4gICAgLy8gcHJpdmF0ZSBfZmlsdGVyU3RhdHVzO1xuXG4gICAgY29uc3RydWN0b3IodGFibGU6IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3IsIHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIodGFibGUsIHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fdGFibGUgPSB0YWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHZpc2liaWxpdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmlsaXR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgY29sdW1uJ3MgdGl0bGUgYW5kIHJldHVybnMgdGhpcyBjb2x1bW5cbiAgICAgKiBAcGFyYW0gdGl0bGUgdGl0bGUgdG8gYmUgc2V0XG4gICAgICogQHBhcmFtIG92ZXJyaWRlIHNob3VsZCBjb2x1bW4gdGl0bGUgaWYgYWxsIHJlYWR5IHNldD9cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aFRpdGxlKHRpdGxlOiBzdHJpbmcsIG92ZXJyaWRlID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgaWYgKHRoaXMuX3RpdGxlID09IG51bGwgfHwgb3ZlcnJpZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpdGxlID0gdGl0bGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZGVmaW5lcyBhdXRvbWF0aWMgdHlwZSBhbmQgcmV0dXJucyB0aGlzIGNvbHVtblxuICAgICAqIEBwYXJhbSB2YWx1ZVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQXV0b21hdGljVHlwZSh2YWx1ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIFRhYmxldmlld1V0aWwuc3RyaW5nQ29sdW1uQ29udmVydGVyKHRoaXMsIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2V0cyB2aXNpYmlsaXR5IHN0YXRlIGZvciBjb2x1bW4gYW5kIHJldHVybnMgdGhpcyBjb2x1bW5cbiAgICAgKiBAcGFyYW0gdmlzaWJpbGl0eVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoVmlzaWJpbGl0eSh2aXNpYmlsaXR5OiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Zpc2liaWxpdHkgPSB2aXNpYmlsaXR5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjcmVhdGVzIGRlZXAgY29weSBvZiBjb2x1bW4gZHluYW1pYyBkZXNjcmlwdG9yXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGNvcHkoKTogQ29sdW1uRHluYW1pY0Rlc2NyaXB0b3Ige1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IENvbHVtbkR5bmFtaWNEZXNjcmlwdG9yKHRoaXMuX3RhYmxlLCB0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICBkZXNjcmlwdG9yLl90aXRsZSA9IHRoaXMuX3RpdGxlO1xuICAgICAgICBkZXNjcmlwdG9yLl92aXNpYmlsaXR5ID0gdGhpcy5fdmlzaWJpbGl0eTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIHRvQ29sdW1uRGVzY3JpcHRvcih0YWJsZURlc2NyaXB0b3I6IFRhYmxlRGVzY3JpcHRvcjxhbnk+KTogQ29sdW1uRGVzY3JpcHRvcjxhbnksIGFueT4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IENvbHVtbkRlc2NyaXB0b3IodGFibGVEZXNjcmlwdG9yLCB0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG59XG4iXX0=
454
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL3RhYmxlL2NvbHVtbi5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBd0IsZ0JBQWdCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFFckUsT0FBTyxFQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsMEJBQTBCLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDL0YsT0FBTyxFQUFDLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFHL0UsTUFBTSxPQUFPLGdCQUFnQjtJQXdEekIsWUFBWSxLQUEwQixFQUFFLFFBQWdCO1FBckRoRCxnQkFBVyxHQUFtQixjQUFjLENBQUMsTUFBTSxDQUFDO1FBQ3BELHVCQUFrQixHQUEwQixxQkFBcUIsQ0FBQyxNQUFNLENBQUM7UUFHekUsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFPdkIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFFMUIsVUFBVTtRQUNGLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUN0QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBQzdCLGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQ2hDLGNBQVMsR0FBa0IsSUFB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QUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlCLFVBQVUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNoQyxVQUFVLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDMUMsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVNLGtCQUFrQixDQUFDLGVBQXFDO1FBQzNELE1BQU0sVUFBVSxHQUFHLElBQUksZ0JBQWdCLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlCLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7SUNvbHVtblZhbHVlQ29tcG9uZW50LCBNbmdFcnJvckludGVybmFsfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtDbGFzc1R5cGUsIEVudW1Db25zdGFudFR5cGUsIEVudW1UeXBlfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge01vZGVsVXRpbCwgVHlwZVV0aWx9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7RGF0ZVV0aWx9IGZyb20gJy4uLy4uL3V0aWxzL2RhdGUudXRpbCc7XG5pbXBvcnQge1RhYmxldmlld1V0aWx9IGZyb20gJy4uLy4uL3V0aWxzL3RhYmxldmlldy51dGlsJztcbmltcG9ydCB7RmlsdGVyRGVzY3JpcHRvciwgRmlsdGVyTG9va3VwRGVzY3JpcHRvciwgRmlsdGVyTG9va3VwRW51bURlc2NyaXB0b3J9IGZyb20gJy4uL2ZpbHRlcic7XG5pbXBvcnQge0NvbHVtbkRpc3BsYXlUeXBlRW51bSwgQ29sdW1uVHlwZUVudW0sIEZpbHRlclR5cGVFbnVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge1RhYmxlRGVzY3JpcHRvciwgVGFibGVEeW5hbWljRGVzY3JpcHRvcn0gZnJvbSAnLi90YWJsZS5kZXNjcmlwdG9yJztcblxuZXhwb3J0IGNsYXNzIENvbHVtbkRlc2NyaXB0b3I8VCwgVFQ+IHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3RhYmxlOiBUYWJsZURlc2NyaXB0b3I8VFQ+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfcHJvcGVydHk6IHN0cmluZztcbiAgICBwcml2YXRlIF9jb2x1bW5UeXBlOiBDb2x1bW5UeXBlRW51bSA9IENvbHVtblR5cGVFbnVtLlN0cmluZztcbiAgICBwcml2YXRlIF9jb2x1bW5EaXNwbGF5VHlwZTogQ29sdW1uRGlzcGxheVR5cGVFbnVtID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLlN0cmluZztcbiAgICBwcm90ZWN0ZWQgX3RpdGxlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2pzb25QYXRoPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2lzU29ydEVuYWJsZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9zb3J0UHJvcGVydHk/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfZmlsdGVyRGVzY3JpcHRvcj86IEZpbHRlckRlc2NyaXB0b3I8dW5rbm93bj47XG4gICAgcHJpdmF0ZSBfZGlzcGxheUZvcm1hdD86IHN0cmluZztcbiAgICBwcml2YXRlIF9sb2NhbGU/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfdGVtcGxhdGU/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfZ2V0dGVyPzogKGl0ZW06IFRULCB2YWx1ZT86IFQgfCBudWxsKSA9PiB1bmtub3duO1xuICAgIHByaXZhdGUgX2lzTXVsdGlsaW5lID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaGFzVmFsdWVBc1Rvb2x0aXAgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9pc1Jlb3JkZXJhYmxlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNUb2dnbGVhYmxlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNWaXNpYmxlID0gdHJ1ZTtcblxuICAgIC8vIHN0eWxpbmdcbiAgICBwcml2YXRlIF9oZWFkZXJDbGFzc05hbWUgPSAnJztcbiAgICBwcml2YXRlIF9jbGFzc05hbWUgPSAnJztcbiAgICBwcml2YXRlIF93aWR0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBfbWluV2lkdGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgX21heFdpZHRoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8vIGVudW0gc3BlY2lmaWNzXG4gICAgcHJpdmF0ZSBfZW51bVR5cGU/OiBFbnVtVHlwZTtcbiAgICBwcml2YXRlIF9lbnVtVGl0bGVQYXRoPzogc3RyaW5nIHwgbnVsbDtcbiAgICBwcml2YXRlIF9lbnVtTmFtZUFzVmFsdWUgPSBmYWxzZTtcblxuICAgIC8vIGJvb2xlYW4gc3BlY2lmaWNzXG4gICAgcHJpdmF0ZSBfYm9vbGVhbkFzSWNvbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2Jvb2xlYW5ZZXM/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfYm9vbGVhbk5vPzogc3RyaW5nO1xuXG4gICAgLy8gbW9kZWwgc3BlY2lmaWNzXG4gICAgcHJpdmF0ZSBfb2JqZWN0TW9kZWxUeXBlPzogQ2xhc3NUeXBlPHVua25vd24+O1xuICAgIHByaXZhdGUgX29iamVjdFRpdGxlUHJvcGVydHk/OiBzdHJpbmc7XG5cbiAgICAvLyBjdXJyZW5jeSBzcGVjaWZpY3NcbiAgICBwcml2YXRlIF9jdXJyZW5jeUNvZGU/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfY3VycmVuY3lGcm9tUHJvcGVydHk/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfY3VycmVuY3lEaXNwbGF5PzogJ3N5bWJvbCcgfCAnY29kZScgfCAnbmFtZSc7XG5cbiAgICAvLyBjdXN0b20gc3BlY2lmaWNzXG4gICAgcHJpdmF0ZSBfY3VzdG9tQ29tcG9uZW50VHlwZT86IFR5cGU8SUNvbHVtblZhbHVlQ29tcG9uZW50PFRUPj47XG5cbiAgICAvLyBoZWxwZXJzXG4gICAgcHJpdmF0ZSBfaGFzQ29weVRvQ2xpcGJvYXJkID0gZmFsc2U7XG5cbiAgICAvLyBsb2NhbGl6YXRpb25cbiAgICBwcml2YXRlIF9pc0xvY2FsaXplZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2xvY2FsaXphdGlvbkV4aXN0c1Byb3BlcnR5Pzogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IodGFibGU6IFRhYmxlRGVzY3JpcHRvcjxUVD4sIHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdGFibGUgPSB0YWJsZTtcbiAgICAgICAgdGhpcy5fcHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbHVtblR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW5UeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY29sdW1uRGlzcGxheVR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBqc29uUGF0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2pzb25QYXRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNTb3J0RW5hYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU29ydEVuYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzb3J0UHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zb3J0UHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWx0ZXJEZXNjcmlwdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyRGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRpc3BsYXlGb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5Rm9ybWF0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoZWFkZXJDbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJDbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB3aWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3dpZHRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWluV2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9taW5XaWR0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1heFdpZHRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4V2lkdGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlbnVtVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VudW1UeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW51bVRpdGxlUGF0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VudW1UaXRsZVBhdGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlbnVtTmFtZUFzVmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnVtTmFtZUFzVmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBib29sZWFuQXNJY29uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYm9vbGVhbkFzSWNvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGJvb2xlYW5ZZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ib29sZWFuWWVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYm9vbGVhbk5vKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYm9vbGVhbk5vO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb2JqZWN0TW9kZWxUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0TW9kZWxUeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb2JqZWN0VGl0bGVQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdFRpdGxlUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXN0b21Db21wb25lbnRUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VzdG9tQ29tcG9uZW50VHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvY2FsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1cnJlbmN5Q29kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbmN5Q29kZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1cnJlbmN5RGlzcGxheSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbmN5RGlzcGxheTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1cnJlbmN5RnJvbVByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVuY3lGcm9tUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNDb3B5VG9DbGlwYm9hcmQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNDb3B5VG9DbGlwYm9hcmQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0ZW1wbGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RlbXBsYXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZ2V0dGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0dGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNNdWx0aWxpbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc011bHRpbGluZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1ZhbHVlQXNUb29sdGlwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzVmFsdWVBc1Rvb2x0aXA7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1Jlb3JkZXJhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNSZW9yZGVyYWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzVG9nZ2xlYWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVG9nZ2xlYWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzVmlzaWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmlzaWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzTG9jYWxpemVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNMb2NhbGl6ZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsb2NhbGl6YXRpb25FeGlzdHNQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsaXphdGlvbkV4aXN0c1Byb3BlcnR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNvbnZlcnRzIGNvbHVtbiB0byBnaXZlbiB0eXBlIHdpdGggYWRkaXRpb25hbCBhcmd1bWVudHNcbiAgICAgKiBAcGFyYW0gdHlwZSBjb2x1bW4gdHlwZSBlbnVtXG4gICAgICogQHBhcmFtIGFyZ3MgYW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGZvciBjb2x1bW4gKG9wdGlvbmFsKVxuICAgICAqL1xuICAgIHB1YmxpYyBhc1R5cGUodHlwZTogQ29sdW1uVHlwZUVudW0sIGRpc3BsYXlUeXBlPzogQ29sdW1uRGlzcGxheVR5cGVFbnVtLCAuLi5hcmdzOiBhbnlbXSk6IHRoaXMge1xuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uTnVtYmVyOlxuICAgICAgICAgICAgICAgIHJldHVybiBkaXNwbGF5VHlwZSA9PT0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkN1cnJlbmN5ID8gdGhpcy5hc0N1cnJlbmN5KC4uLmFyZ3MpIDogdGhpcy5hc051bWJlciguLi5hcmdzKTtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uQm9vbGVhbjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc0Jvb2xlYW4oLi4uYXJncyk7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkRhdGU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNEYXRlKC4uLmFyZ3MpO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5FbnVtOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzRW51bShhcmdzWzBdIGFzIEVudW1UeXBlLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uQ3VzdG9tOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzQ3VzdG9tQ29tcG9uZW50KGFyZ3NbMF0pO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5TdHJpbmc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzTnVtYmVyKGRpc3BsYXlGb3JtYXQgPSAnMS4wLTAnLCBsb2NhbGU/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVHlwZSA9IENvbHVtblR5cGVFbnVtLk51bWJlcjtcbiAgICAgICAgdGhpcy5fY29sdW1uRGlzcGxheVR5cGUgPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uTnVtYmVyO1xuICAgICAgICB0aGlzLl9kaXNwbGF5Rm9ybWF0ID0gZGlzcGxheUZvcm1hdDtcbiAgICAgICAgdGhpcy5fbG9jYWxlID0gbG9jYWxlID8/IHRoaXMuX2xvY2FsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQ3VycmVuY3koY3VycmVuY3lDb2RlPzogc3RyaW5nLCBjdXJyZW5jeUZyb21Qcm9wZXJ0eT86IHN0cmluZywgY3VycmVuY3lEaXNwbGF5PzogJ3N5bWJvbCcgfCAnY29kZScgfCAnbmFtZScsIGRpc3BsYXlGb3JtYXQgPSAnMS4yLTInLCBsb2NhbGU/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVHlwZSA9IENvbHVtblR5cGVFbnVtLk51bWJlcjtcbiAgICAgICAgdGhpcy5fY29sdW1uRGlzcGxheVR5cGUgPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uQ3VycmVuY3k7XG4gICAgICAgIHRoaXMuX2N1cnJlbmN5Q29kZSA9IGN1cnJlbmN5Q29kZSA/PyB0aGlzLl9jdXJyZW5jeUNvZGU7XG4gICAgICAgIHRoaXMuX2N1cnJlbmN5RnJvbVByb3BlcnR5ID0gY3VycmVuY3lGcm9tUHJvcGVydHkgPz8gdGhpcy5fY3VycmVuY3lGcm9tUHJvcGVydHk7XG4gICAgICAgIHRoaXMuX2N1cnJlbmN5RGlzcGxheSA9IGN1cnJlbmN5RGlzcGxheSA/PyB0aGlzLl9jdXJyZW5jeURpc3BsYXk7XG4gICAgICAgIHRoaXMuX2Rpc3BsYXlGb3JtYXQgPSBkaXNwbGF5Rm9ybWF0ID8/IGRpc3BsYXlGb3JtYXQ7XG4gICAgICAgIHRoaXMuX2xvY2FsZSA9IGxvY2FsZSA/PyB0aGlzLl9sb2NhbGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0RhdGUoZGlzcGxheUZvcm1hdCA9ICdkZC5NTS55eXl5Jyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uRGF0ZTtcbiAgICAgICAgdGhpcy5fY29sdW1uRGlzcGxheVR5cGUgPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uRGF0ZTtcbiAgICAgICAgdGhpcy5fZGlzcGxheUZvcm1hdCA9IGRpc3BsYXlGb3JtYXQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0Jvb2xlYW4oeWVzPzogc3RyaW5nLCBubz86IHN0cmluZywgYXNJY29uID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVHlwZSA9IENvbHVtblR5cGVFbnVtLkJvb2xlYW47XG4gICAgICAgIHRoaXMuX2NvbHVtbkRpc3BsYXlUeXBlID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkJvb2xlYW47XG4gICAgICAgIHRoaXMuX2Jvb2xlYW5Bc0ljb24gPSBhc0ljb247XG4gICAgICAgIHRoaXMuX2Jvb2xlYW5ZZXMgPSB5ZXM7XG4gICAgICAgIHRoaXMuX2Jvb2xlYW5ObyA9IG5vO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNFbnVtKGVudW1UeXBlOiBFbnVtVHlwZSwgbmFtZUFzVmFsdWUgPSBmYWxzZSwgdGl0bGVQYXRoPzogc3RyaW5nIHwgbnVsbCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uRW51bTtcbiAgICAgICAgdGhpcy5fY29sdW1uRGlzcGxheVR5cGUgPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uRW51bTtcbiAgICAgICAgdGhpcy5fZW51bVR5cGUgPSBlbnVtVHlwZTtcbiAgICAgICAgdGhpcy5fZW51bU5hbWVBc1ZhbHVlID0gbmFtZUFzVmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2YgdGl0bGVQYXRoID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGl0bGVQYXRoID0gVHlwZVV0aWwuZmluZEVudW1OYW1lKGVudW1UeXBlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9lbnVtVGl0bGVQYXRoID0gdGl0bGVQYXRoO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNDdXN0b21Db21wb25lbnQoY3VzdG9tQ29tcG9uZW50VHlwZTogVHlwZTxJQ29sdW1uVmFsdWVDb21wb25lbnQ8VFQ+Pik6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uQ3VzdG9tO1xuICAgICAgICB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5Db21wb25lbnQ7XG4gICAgICAgIHRoaXMuX2N1c3RvbUNvbXBvbmVudFR5cGUgPSBjdXN0b21Db21wb25lbnRUeXBlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNIdG1sKCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5IdG1sO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENsYXNzTmFtZShjbGFzc05hbWU/OiBzdHJpbmcsIGhlYWRlckNsYXNzTmFtZT86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jbGFzc05hbWUgPSBjbGFzc05hbWUgPz8gJyc7XG4gICAgICAgIHRoaXMuX2hlYWRlckNsYXNzTmFtZSA9IGhlYWRlckNsYXNzTmFtZSA/PyAnJztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhXaWR0aCh3aWR0aD86IG51bWJlciwgbWluV2lkdGg/OiBudW1iZXIsIG1heFdpZHRoPzogbnVtYmVyKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3dpZHRoID0gd2lkdGggPz8gbnVsbDtcbiAgICAgICAgdGhpcy5fbWluV2lkdGggPSBtaW5XaWR0aCA/PyBudWxsO1xuICAgICAgICB0aGlzLl9tYXhXaWR0aCA9IG1heFdpZHRoID8/IG51bGw7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT2JqZWN0UHJvcGVydHk8TVQ+KG1vZGVsVHlwZTogQ2xhc3NUeXBlPE1UPiwgdGl0bGVQcm9wZXJ0eT86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9vYmplY3RNb2RlbFR5cGUgPSBtb2RlbFR5cGU7XG4gICAgICAgIGlmICghdGl0bGVQcm9wZXJ0eSkge1xuICAgICAgICAgICAgdGhpcy5fb2JqZWN0VGl0bGVQcm9wZXJ0eSA9IE1vZGVsVXRpbC5maW5kVGl0bGVBdHRyaWJ1dGUobW9kZWxUeXBlKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9vYmplY3RUaXRsZVByb3BlcnR5ID0gdGl0bGVQcm9wZXJ0eTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRpdGxlKHRpdGxlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGl0bGUgPSB0aXRsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhKc29uUGF0aChwYXRoOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fanNvblBhdGggPSBwYXRoO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpbHRlcihmb3JjZVNpbXBsZSA9IGZhbHNlKTogRmlsdGVyRGVzY3JpcHRvcjxhbnk+IHtcbiAgICAgICAgdGhpcy5fZmlsdGVyRGVzY3JpcHRvciA9IG5ldyBGaWx0ZXJEZXNjcmlwdG9yPHVua25vd24+KHRoaXMuX3Byb3BlcnR5KTtcbiAgICAgICAgbGV0IGZpbHRlclR5cGU6IEZpbHRlclR5cGVFbnVtO1xuXG4gICAgICAgIGlmICghZm9yY2VTaW1wbGUgJiYgdGhpcy5fb2JqZWN0TW9kZWxUeXBlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy53aXRoRmlsdGVyTG9va3VwKCk7XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoICh0aGlzLl9jb2x1bW5UeXBlKSB7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLk51bWJlcjpcbiAgICAgICAgICAgICAgICBmaWx0ZXJUeXBlID0gRmlsdGVyVHlwZUVudW0uTnVtYmVyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5Cb29sZWFuOlxuICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5Cb29sZWFuO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5EYXRlOlxuICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5EYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5FbnVtOlxuICAgICAgICAgICAgICAgIGlmICghZm9yY2VTaW1wbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud2l0aEZpbHRlckxvb2t1cEVudW0oKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJUeXBlID0gRmlsdGVyVHlwZUVudW0uU3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLlN0cmluZzpcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uQ3VzdG9tOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBmaWx0ZXJUeXBlID0gRmlsdGVyVHlwZUVudW0uU3RyaW5nO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZmlsdGVyRGVzY3JpcHRvci5hc0ZpbHRlclR5cGUoZmlsdGVyVHlwZSk7XG4gICAgICAgIGlmIChmaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5OdW1iZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlGb3JtYXRGcmFjdGlvbnMgPSB0aGlzLl9kaXNwbGF5Rm9ybWF0Py5zcGxpdCgnLicpPy5bMV0/LnNwbGl0KCctJyk7XG4gICAgICAgICAgICBpZiAoZGlzcGxheUZvcm1hdEZyYWN0aW9ucyAmJiBkaXNwbGF5Rm9ybWF0RnJhY3Rpb25zLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9maWx0ZXJEZXNjcmlwdG9yLndpdGhOdW1iZXJGcmFjdGlvbnMocGFyc2VJbnQoZGlzcGxheUZvcm1hdEZyYWN0aW9uc1swXSksIHBhcnNlSW50KGRpc3BsYXlGb3JtYXRGcmFjdGlvbnNbMV0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5EYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBkaXNwbGF5Rm9ybWF0ID0gdGhpcy5fZGlzcGxheUZvcm1hdDtcbiAgICAgICAgICAgIGlmIChkaXNwbGF5Rm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyRGlzcGxheUZvcm1hdCA9IERhdGVVdGlsLmZyb21QcmltZVRvQW5ndWxhckRhdGVGb3JtYXQoZGlzcGxheUZvcm1hdCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVyRGVzY3JpcHRvci53aXRoRGF0ZUZvcm1hdChmaWx0ZXJEaXNwbGF5Rm9ybWF0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmlsdGVyTG9va3VwKCk6IEZpbHRlckxvb2t1cERlc2NyaXB0b3I8dW5rbm93bj4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJEZXNjcmlwdG9yID0gbmV3IEZpbHRlckxvb2t1cERlc2NyaXB0b3I8dW5rbm93bj4odGhpcy5fcHJvcGVydHksIHRoaXMuX29iamVjdE1vZGVsVHlwZSA/PyBudWxsKTtcbiAgICAgICAgdGhpcy5fZmlsdGVyRGVzY3JpcHRvciA9IGZpbHRlckRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiBmaWx0ZXJEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmlsdGVyTG9va3VwRW51bShvcHRpb25zPzogQXJyYXk8RW51bUNvbnN0YW50VHlwZT4pOiBGaWx0ZXJMb29rdXBFbnVtRGVzY3JpcHRvciB7XG4gICAgICAgIGlmICh0aGlzLl9jb2x1bW5UeXBlICE9PSBDb2x1bW5UeXBlRW51bS5FbnVtIHx8ICF0aGlzLl9lbnVtVHlwZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE1uZ0Vycm9ySW50ZXJuYWwoYENvbHVtbiAke3RoaXMuX3Byb3BlcnR5fSBpcyBub3Qgb2YgdHlwZSBlbnVtIG9yIGVudW0gdHlwZSBpcyB1bmRlZmluZWQuYCwgJ0NvbHVtbkRlc2NyaXB0b3IgZXJyb3InKS5jb25zb2xlRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmaWx0ZXJEZXNjcmlwdG9yID0gbmV3IEZpbHRlckxvb2t1cEVudW1EZXNjcmlwdG9yKHRoaXMuX3Byb3BlcnR5LCB0aGlzLl9lbnVtVHlwZSwgb3B0aW9ucywgdGhpcy5fZW51bU5hbWVBc1ZhbHVlLCB0aGlzLl9lbnVtVGl0bGVQYXRoKTtcbiAgICAgICAgdGhpcy5fZmlsdGVyRGVzY3JpcHRvciA9IGZpbHRlckRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiBmaWx0ZXJEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU29ydChpc0VuYWJsZWQgPSB0cnVlLCBzb3J0UHJvcGVydHk/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXNTb3J0RW5hYmxlZCA9IGlzRW5hYmxlZDtcbiAgICAgICAgdGhpcy5fc29ydFByb3BlcnR5ID0gc29ydFByb3BlcnR5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERlZmF1bHRTb3J0KGFzYyA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGUud2l0aERlZmF1bHRTb3J0KHRoaXMuX3Byb3BlcnR5LCBhc2MpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENvcHlUb0NsaXBib2FyZChoYXNDb3B5VG9DbGlib2FyZCA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzQ29weVRvQ2xpcGJvYXJkID0gaGFzQ29weVRvQ2xpYm9hcmQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGVtcGxhdGUodGVtcGxhdGU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl90ZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEdldHRlcihnZXR0ZXI/OiAoaXRlbTogVFQsIHZhbHVlPzogVCB8IG51bGwpID0+IHVua25vd24pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZ2V0dGVyID0gZ2V0dGVyO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE11bHRpbGluZShpc011bHRpbGluZSA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXNNdWx0aWxpbmUgPSBpc011bHRpbGluZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhWYWx1ZUFzVG9vbHRpcCh2YWx1ZUFzVG9vbHRpcCA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzVmFsdWVBc1Rvb2x0aXAgPSB2YWx1ZUFzVG9vbHRpcDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSZW9yZGVyYWJsZShpc1Jlb3JkZXJhYmxlID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc1Jlb3JkZXJhYmxlID0gaXNSZW9yZGVyYWJsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUb2dnbGVhYmxlKGlzVG9nZ2xlYWJsZSA9IHRydWUsIGlzVmlzaWJsZSA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXNUb2dnbGVhYmxlID0gaXNUb2dnbGVhYmxlO1xuICAgICAgICB0aGlzLl9pc1Zpc2libGUgPSBpc1Zpc2libGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2NhbGl6ZWQoZXhpc3RzUHJvcGVydHk/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgaWYgKGV4aXN0c1Byb3BlcnR5KSB7XG4gICAgICAgICAgICB0aGlzLl9sb2NhbGl6YXRpb25FeGlzdHNQcm9wZXJ0eSA9IGV4aXN0c1Byb3BlcnR5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHkgPSBgJHt0aGlzLl9wcm9wZXJ0eX1Mb2NhbGl6ZWRgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IENvbHVtbkRlc2NyaXB0b3I8VCwgVFQ+IHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBDb2x1bW5EZXNjcmlwdG9yPFQsIFRUPih0aGlzLl90YWJsZSwgdGhpcy5fcHJvcGVydHkpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvcHlGaWVsZHNUbyhvYmo6IENvbHVtbkRlc2NyaXB0b3I8VCwgVFQ+KSB7XG4gICAgICAgIG9iai5fanNvblBhdGggPSB0aGlzLl9qc29uUGF0aDtcbiAgICAgICAgb2JqLl90aXRsZSA9IHRoaXMuX3RpdGxlO1xuICAgICAgICBvYmouX2lzU29ydEVuYWJsZWQgPSB0aGlzLl9pc1NvcnRFbmFibGVkO1xuICAgICAgICBvYmouX3NvcnRQcm9wZXJ0eSA9IHRoaXMuX3NvcnRQcm9wZXJ0eTtcbiAgICAgICAgb2JqLl9jb2x1bW5UeXBlID0gdGhpcy5fY29sdW1uVHlwZTtcbiAgICAgICAgb2JqLl9jb2x1bW5EaXNwbGF5VHlwZSA9IHRoaXMuX2NvbHVtbkRpc3BsYXlUeXBlO1xuICAgICAgICBvYmouX2ZpbHRlckRlc2NyaXB0b3IgPSB0aGlzLl9maWx0ZXJEZXNjcmlwdG9yPy5jb3B5KCk7XG4gICAgICAgIG9iai5fZW51bVR5cGUgPSB0aGlzLl9lbnVtVHlwZTtcbiAgICAgICAgb2JqLl9lbnVtVGl0bGVQYXRoID0gdGhpcy5fZW51bVRpdGxlUGF0aDtcbiAgICAgICAgb2JqLl9lbnVtTmFtZUFzVmFsdWUgPSB0aGlzLl9lbnVtTmFtZUFzVmFsdWU7XG4gICAgICAgIG9iai5fYm9vbGVhbkFzSWNvbiA9IHRoaXMuX2Jvb2xlYW5Bc0ljb247XG4gICAgICAgIG9iai5fYm9vbGVhblllcyA9IHRoaXMuX2Jvb2xlYW5ZZXM7XG4gICAgICAgIG9iai5fYm9vbGVhbk5vID0gdGhpcy5fYm9vbGVhbk5vO1xuICAgICAgICBvYmouX29iamVjdE1vZGVsVHlwZSA9IHRoaXMuX29iamVjdE1vZGVsVHlwZTtcbiAgICAgICAgb2JqLl9vYmplY3RUaXRsZVByb3BlcnR5ID0gdGhpcy5fb2JqZWN0VGl0bGVQcm9wZXJ0eTtcbiAgICAgICAgb2JqLl9sb2NhbGUgPSB0aGlzLl9sb2NhbGU7XG4gICAgICAgIG9iai5fY3VycmVuY3lDb2RlID0gdGhpcy5fY3VycmVuY3lDb2RlO1xuICAgICAgICBvYmouX2N1cnJlbmN5RGlzcGxheSA9IHRoaXMuX2N1cnJlbmN5RGlzcGxheTtcbiAgICAgICAgb2JqLl9jdXJyZW5jeUZyb21Qcm9wZXJ0eSA9IHRoaXMuX2N1cnJlbmN5RnJvbVByb3BlcnR5O1xuICAgICAgICBvYmouX2Rpc3BsYXlGb3JtYXQgPSB0aGlzLl9kaXNwbGF5Rm9ybWF0O1xuICAgICAgICBvYmouX2hlYWRlckNsYXNzTmFtZSA9IHRoaXMuX2hlYWRlckNsYXNzTmFtZTtcbiAgICAgICAgb2JqLl9jbGFzc05hbWUgPSB0aGlzLl9jbGFzc05hbWU7XG4gICAgICAgIG9iai5fd2lkdGggPSB0aGlzLl93aWR0aDtcbiAgICAgICAgb2JqLl9taW5XaWR0aCA9IHRoaXMuX21pbldpZHRoO1xuICAgICAgICBvYmouX21heFdpZHRoID0gdGhpcy5fbWF4V2lkdGg7XG4gICAgICAgIG9iai5fY3VzdG9tQ29tcG9uZW50VHlwZSA9IHRoaXMuX2N1c3RvbUNvbXBvbmVudFR5cGU7XG4gICAgICAgIG9iai5faGFzQ29weVRvQ2xpcGJvYXJkID0gdGhpcy5faGFzQ29weVRvQ2xpcGJvYXJkO1xuICAgICAgICBvYmouX3RlbXBsYXRlID0gdGhpcy5fdGVtcGxhdGU7XG4gICAgICAgIG9iai5fZ2V0dGVyID0gdGhpcy5fZ2V0dGVyO1xuICAgICAgICBvYmouX2lzTXVsdGlsaW5lID0gdGhpcy5faXNNdWx0aWxpbmU7XG4gICAgICAgIG9iai5faGFzVmFsdWVBc1Rvb2x0aXAgPSB0aGlzLl9oYXNWYWx1ZUFzVG9vbHRpcDtcbiAgICAgICAgb2JqLl9pc1Jlb3JkZXJhYmxlID0gdGhpcy5faXNSZW9yZGVyYWJsZTtcbiAgICAgICAgb2JqLl9pc1RvZ2dsZWFibGUgPSB0aGlzLl9pc1RvZ2dsZWFibGU7XG4gICAgICAgIG9iai5faXNWaXNpYmxlID0gdGhpcy5faXNWaXNpYmxlO1xuICAgICAgICBvYmouX2lzTG9jYWxpemVkID0gdGhpcy5faXNMb2NhbGl6ZWQ7XG4gICAgICAgIG9iai5fbG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHkgPSB0aGlzLl9sb2NhbGl6YXRpb25FeGlzdHNQcm9wZXJ0eTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2x1bW5EeW5hbWljRGVzY3JpcHRvciBleHRlbmRzIENvbHVtbkRlc2NyaXB0b3I8YW55LCBhbnk+IHtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX3RhYmxlOiBUYWJsZUR5bmFtaWNEZXNjcmlwdG9yO1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSBfdGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBwcml2YXRlIF92aXNpYmlsaXR5ID0gdHJ1ZTtcblxuICAgIC8vIHByaXZhdGUgX2ZpbHRlclN0YXR1cztcblxuICAgIGNvbnN0cnVjdG9yKHRhYmxlOiBUYWJsZUR5bmFtaWNEZXNjcmlwdG9yLCBwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHRhYmxlLCBwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX3RhYmxlID0gdGFibGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB2aXNpYmlsaXR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJpbGl0eTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIGNvbHVtbidzIHRpdGxlIGFuZCByZXR1cm5zIHRoaXMgY29sdW1uXG4gICAgICogQHBhcmFtIHRpdGxlIHRpdGxlIHRvIGJlIHNldFxuICAgICAqIEBwYXJhbSBvdmVycmlkZSBzaG91bGQgY29sdW1uIHRpdGxlIGlmIGFsbCByZWFkeSBzZXQ/XG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIHdpdGhUaXRsZSh0aXRsZTogc3RyaW5nLCBvdmVycmlkZSA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIGlmICh0aGlzLl90aXRsZSA9PSBudWxsIHx8IG92ZXJyaWRlKSB7XG4gICAgICAgICAgICB0aGlzLl90aXRsZSA9IHRpdGxlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRlZmluZXMgYXV0b21hdGljIHR5cGUgYW5kIHJldHVybnMgdGhpcyBjb2x1bW5cbiAgICAgKiBAcGFyYW0gdmFsdWVcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aEF1dG9tYXRpY1R5cGUodmFsdWU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICBUYWJsZXZpZXdVdGlsLnN0cmluZ0NvbHVtbkNvbnZlcnRlcih0aGlzLCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgdmlzaWJpbGl0eSBzdGF0ZSBmb3IgY29sdW1uIGFuZCByZXR1cm5zIHRoaXMgY29sdW1uXG4gICAgICogQHBhcmFtIHZpc2liaWxpdHlcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFZpc2liaWxpdHkodmlzaWJpbGl0eTogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICB0aGlzLl92aXNpYmlsaXR5ID0gdmlzaWJpbGl0eTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBkZWVwIGNvcHkgb2YgY29sdW1uIGR5bmFtaWMgZGVzY3JpcHRvclxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBjb3B5KCk6IENvbHVtbkR5bmFtaWNEZXNjcmlwdG9yIHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBDb2x1bW5EeW5hbWljRGVzY3JpcHRvcih0aGlzLl90YWJsZSwgdGhpcy5fcHJvcGVydHkpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgZGVzY3JpcHRvci5fdGl0bGUgPSB0aGlzLl90aXRsZTtcbiAgICAgICAgZGVzY3JpcHRvci5fdmlzaWJpbGl0eSA9IHRoaXMuX3Zpc2liaWxpdHk7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b0NvbHVtbkRlc2NyaXB0b3IodGFibGVEZXNjcmlwdG9yOiBUYWJsZURlc2NyaXB0b3I8YW55Pik6IENvbHVtbkRlc2NyaXB0b3I8YW55LCBhbnk+IHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBDb2x1bW5EZXNjcmlwdG9yKHRhYmxlRGVzY3JpcHRvciwgdGhpcy5fcHJvcGVydHkpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuIl19
@@ -203,6 +203,18 @@ export class TableDescriptor {
203
203
  this._dataKeyProperty = property;
204
204
  return this;
205
205
  }
206
+ withColumnsReorderable(columnsReorderable = true) {
207
+ for (const col of this.columns) {
208
+ col.withReorderable(columnsReorderable);
209
+ }
210
+ return this;
211
+ }
212
+ withColumnsToggleable(columnsToggleable = true) {
213
+ for (const col of this.columns) {
214
+ col.withToggleable(columnsToggleable);
215
+ }
216
+ return this;
217
+ }
206
218
  withDefaultSort(property, asc = true) {
207
219
  this._hasDefaultSort = true;
208
220
  this._defaultSortProperty.push(property);
@@ -494,4 +506,4 @@ export class TableDynamicDescriptor extends TableDescriptor {
494
506
  return descriptor;
495
507
  }
496
508
  }
497
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGVzY3JpcHRvcnMvdGFibGUvdGFibGUuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUtqRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDakQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBd0IsY0FBYyxFQUFFLDJCQUEyQixFQUFFLHNCQUFzQixFQUEyQixhQUFhLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDNUosT0FBTyxFQUFDLGdCQUFnQixFQUFFLHVCQUF1QixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFOUUsTUFBTSxPQUFPLGVBQWU7SUFtQ3hCLFlBQVksU0FBdUIsRUFBRSxVQUFtQixFQUFFLGFBQXNCLEVBQUUsV0FBeUM7UUFoQ25ILG1CQUFjLEdBQTJCLHNCQUFzQixDQUFDLElBQUksQ0FBQztRQUVyRSx3QkFBbUIsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEMsb0JBQWUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsYUFBUSxHQUFvQyxFQUFFLENBQUM7UUFFakQsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFHcEIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIseUJBQW9CLEdBQWEsRUFBRSxDQUFDO1FBQ3BDLG9CQUFlLEdBQWMsRUFBRSxDQUFDO1FBRXhDLFNBQVM7UUFDRCxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLFVBQUssR0FBa0IsYUFBYSxDQUFDLEtBQUssQ0FBQztRQUczQyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3QixzQkFBaUIsR0FBcUIsUUFBUSxDQUFDO1FBTS9DLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRXZCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBSXpCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUksU0FBUyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsSUFBSSxTQUFTLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLFNBQVMsQ0FBQztJQUM1RixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUFJLFNBQXVCLEVBQUUsVUFBbUIsRUFBRSxhQUFzQjtRQUN0RixPQUFPLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN0SSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksTUFBTSxDQUFDLHVCQUF1QixDQUFJLFNBQXVCLEVBQUUsVUFBbUMsRUFBRSxVQUFtQixFQUFFLGFBQXNCO1FBQzlJLE1BQU0sVUFBVSxHQUFHLElBQUksZUFBZSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDN0UsVUFBVSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDakMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JKLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDckIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNsQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsS0FBSztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxlQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDckIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFXLG1CQUFtQjtRQUMxQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQVcscUJBQXFCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsbUJBQW1CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN2QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBVyxpQkFBaUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBVywwQkFBMEI7UUFDakMsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUM7SUFDNUMsQ0FBQztJQUVNLFNBQVMsQ0FBQyxRQUFnQjtRQUM3QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU0sbUJBQW1CLENBQUssTUFBK0I7UUFDMUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFNBQVMsQ0FBQyxRQUFnQjtRQUM3QixNQUFNLE1BQU0sR0FBRyxJQUFJLGdCQUFnQixDQUFZLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU0sZUFBZSxDQUFDLFFBQWdCLEVBQUUsYUFBc0I7UUFDM0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBWSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU0sYUFBYSxDQUFDLFFBQWdCLEVBQUUsYUFBc0I7UUFDekQsTUFBTSxNQUFNLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBVSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDN0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsUUFBZ0IsRUFBRSxHQUFZLEVBQUUsRUFBVyxFQUFFLE1BQU0sR0FBRyxLQUFLO1FBQy9FLE1BQU0sTUFBTSxHQUFHLElBQUksZ0JBQWdCLENBQWEsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU0sYUFBYSxDQUFDLFFBQWdCLEVBQUUsUUFBa0IsRUFBRSxXQUFXLEdBQUcsS0FBSyxFQUFFLFNBQXlCO1FBQ3JHLE1BQU0sTUFBTSxHQUFHLElBQUksZ0JBQWdCLENBQWMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU0sd0JBQXdCLENBQUMsUUFBZ0IsRUFBRSxtQkFBbUQ7UUFDakcsTUFBTSxNQUFNLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBUyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDNUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVNLFlBQVksQ0FBQyxRQUFnQjtRQUNoQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxpQkFBeUM7UUFDOUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sa0JBQWtCLENBQUMsY0FBdUM7UUFDN0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGVBQWUsQ0FBQyxJQUFZLEVBQUUsT0FBdUI7UUFDeEQsSUFBSSxPQUFPLEVBQUU7WUFDVCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxDQUFDO1NBQ3RDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDMUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEQ7YUFBTTtZQUNILElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1NBQy9CO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFNBQVMsQ0FBQyxLQUFhO1FBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxjQUFjLENBQUMsVUFBVSxHQUFHLElBQUk7UUFDbkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLG1CQUFtQixDQUFDLFFBQWdCO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGVBQWUsQ0FBQyxRQUFnQixFQUFFLEdBQUcsR0FBRyxJQUFJO1FBQy9DLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxTQUFpQjtRQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sUUFBUSxDQUFDLE9BQXNCLGFBQWEsQ0FBQyxNQUFNO1FBQ3RELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSx5QkFBeUIsQ0FBQyxxQkFBNkI7UUFDMUQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLHFCQUFxQixDQUFDO1FBQ3BELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxhQUFhLENBQUMsU0FBaUI7UUFDbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFNBQVMsQ0FBQyxLQUFjO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxhQUFhLENBQUMsU0FBa0I7UUFDbkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLG9CQUFvQixDQUFDLGdCQUFnQixHQUFHLElBQUksRUFBRSxtQkFBcUMsS0FBSztRQUMzRixJQUFJLENBQUMsb0JBQW9CLEdBQUcsZ0JBQWdCLENBQUM7UUFDN0MsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO1FBQzFDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxZQUFxQixFQUFFLGNBQXlEO1FBQ3BHLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxjQUFjLENBQUM7UUFDekMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLG1CQUFtQixDQUFDLGVBQXVCO1FBQzlDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGFBQWE7UUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLDhCQUE4QixDQUFDLDBCQUFrQztRQUNwRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsMkJBQTJCLEdBQUcsMEJBQTBCLENBQUM7UUFDOUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVTLFlBQVksQ0FBQyxHQUF1QjtRQUMxQyxHQUFHLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDekIsR0FBRyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ25DLEdBQUcsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDN0MsR0FBRyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzNDLEdBQUcsQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsR0FBRyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELEdBQUcsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUN6QyxHQUFHLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDakMsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLEdBQUcsQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUM7UUFDekQsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ2pDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMvQixHQUFHLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDdkMsR0FBRyxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUNyRCxHQUFHLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQy9DLEdBQUcsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNyQyxHQUFHLENBQUMsMkJBQTJCLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDO0lBQ3ZFLENBQUM7SUFFTSxJQUFJO1FBQ1AsTUFBTSxVQUFVLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2pILElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUIsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLDRCQUE0QixDQUFDLFNBQWdDLEVBQUUsTUFBb0MsRUFBRSxHQUFHLElBQVc7UUFDdkgsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO1lBQ2hCLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzQztRQUVELElBQUksU0FBUyxDQUFDLFVBQVUsS0FBSyxjQUFjLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ25FLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMvQjtRQUVELE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDbkYsSUFBSSxTQUFTLENBQUMsU0FBUyxFQUFFO1lBQ3JCLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDN0Q7YUFBTTtZQUNILE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNsQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxzQkFBc0IsQ0FBQyxRQUFnQixFQUFFLFVBQTJCLEVBQUUsaUJBQXlDLEVBQUUsR0FBRyxJQUFXO1FBQ2xJLE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQztRQUVwSCxJQUFJLFlBQVksSUFBSSxJQUFJLEVBQUU7WUFDdEIsWUFBWSxDQUFDLFVBQVUsR0FBRyxVQUFVLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQztZQUNoRSxZQUFZLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLElBQUksWUFBWSxDQUFDLGlCQUFpQixDQUFDO1lBQ3JGLElBQUksQ0FBQyw0QkFBNEIsQ0FDN0IsWUFBWSxFQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQzVELEdBQUcsSUFBSSxDQUNWLENBQUM7U0FDTDtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksc0JBQXNCLENBQUMsUUFBZ0IsRUFBRSxRQUFtQjtRQUMvRCxNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUM7UUFFcEgsSUFBSSxZQUFZLElBQUksSUFBSSxFQUFFO1lBQ3RCLFlBQVksQ0FBQyxVQUFVLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQztZQUM5QyxJQUFJLENBQUMsNEJBQTRCLENBQzdCLFlBQVksRUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLEVBQ25ELFFBQVEsSUFBSyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBYyxDQUMvRSxDQUFDO1NBQ0w7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksd0JBQXdCLENBQUMsUUFBZ0IsRUFBRSxjQUE2QyxFQUFFLGtCQUEyQixFQUFFLGNBQXVCO1FBQ2pKLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQztRQUNuRSxJQUFJLE1BQU0sRUFBRTtZQUNSLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2pFLElBQUksTUFBTSxZQUFZLHNCQUFzQixFQUFFO2dCQUMxQyxJQUFJLGtCQUFrQixFQUFFO29CQUNuQixNQUFvQyxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDLENBQUM7aUJBQ3BGO2dCQUVELElBQUksY0FBYyxFQUFFO29CQUNmLE1BQW9DLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQzVFO2FBQ0o7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0E0Qko7QUFFRCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsZUFBb0I7SUFTNUQsWUFBWSxVQUFtQixFQUFFLGFBQXNCO1FBQ25ELEtBQUssQ0FBQyxFQUFvQixFQUFFLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQztRQVRuRCxxQkFBZ0IsR0FBa0IsRUFBRSxDQUFDO1FBQ3JDLG1CQUFjLEdBQWtCLEVBQUUsQ0FBQztRQUNuQyxpQkFBWSxHQUFrQixFQUFFLENBQUM7UUFDakMsb0JBQWUsR0FBRywyQkFBMkIsQ0FBQyxPQUFPLENBQUM7UUFDdEQsc0JBQWlCLEdBQUcsMkJBQTJCLENBQUMsT0FBTyxDQUFDO1FBRTdDLGFBQVEsR0FBOEIsRUFBRSxDQUFDO1FBSXhELElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQW9CLE9BQU87UUFDdkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxtQkFBbUIsQ0FBQyxjQUF3QjtRQUMvQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsY0FBYyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksZUFBZSxDQUFDLGFBQXVCLEVBQUUsY0FBYyxHQUFHLDJCQUEyQixDQUFDLFlBQVk7UUFDckcsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7UUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxpQkFBaUIsQ0FBQyxjQUF3QixFQUFFLGdCQUFnQixHQUFHLDJCQUEyQixDQUFDLFlBQVk7UUFDMUcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO1FBQzFDLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNhLHNCQUFzQixDQUFDLFFBQWdCLEVBQUUsSUFBb0IsRUFBRSxXQUFtQyxFQUFFLEdBQUcsSUFBVztRQUM5SCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsS0FBSyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEgsSUFBSSxNQUFNLEVBQUU7WUFDUixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztTQUM3QztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksZUFBZSxDQUFDLFFBQWdCLEVBQUUsS0FBYTtRQUNsRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFFBQVEsS0FBSyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0kseUJBQXlCLENBQUMsSUFBNEI7UUFDekQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFakQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7WUFDcEQsT0FBTyxlQUFlLENBQUM7U0FDMUI7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO2FBQ3RDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN2RCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMseUJBQXlCO1FBRTVFLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxPQUFPLEVBQUU7WUFDaEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ25FLElBQUksTUFBa0MsQ0FBQztZQUN2QyxJQUFJLFVBQVUsRUFBRTtnQkFDWixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRTtvQkFDeEIsU0FBUztpQkFDWjtnQkFDRCxNQUFNLEdBQUcsVUFBVSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDO2dCQUN4RCxlQUFlLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDL0M7aUJBQU07Z0JBQ0gsTUFBTSxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN2RCxhQUFhLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ3REO1lBRUQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekUsSUFDSSxDQUFDLElBQUksQ0FBQyxlQUFlLEtBQUssMkJBQTJCLENBQUMsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7Z0JBQ3ZGLENBQUMsSUFBSSxDQUFDLGVBQWUsS0FBSywyQkFBMkIsQ0FBQyxZQUFZLElBQUksb0JBQW9CLENBQUMsRUFDN0Y7Z0JBQ0UsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ3JCO1lBRUQsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0UsSUFDSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsS0FBSywyQkFBMkIsQ0FBQyxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztnQkFDM0YsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEtBQUssMkJBQTJCLENBQUMsWUFBWSxJQUFJLHNCQUFzQixDQUFDLEVBQ2pHO2dCQUNFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUN2QjtTQUNKO1FBRUQsT0FBTyxlQUFlLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7T0FHRztJQUNhLFNBQVMsQ0FBQyxRQUFnQjtRQUN0QyxNQUFNLE1BQU0sR0FBRyxJQUFJLHVCQUF1QixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRWUsWUFBWSxDQUFDLFFBQWdCO1FBQ3pDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9GLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ2EsSUFBSTtRQUNoQixNQUFNLFVBQVUsR0FBRyxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN2RyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlCLFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN0RCxVQUFVLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3pELFVBQVUsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNyRCxVQUFVLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakQsVUFBVSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUN0RCxVQUFVLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDbEQsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztJQUVNLGlCQUFpQjtRQUNwQixNQUFNLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBTSxFQUFvQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMzSCxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlCLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7TWVkaXVzUXVlcnlSZXN1bHR9IGZyb20gJy4uLy4uL2FwaS9tb2RlbHMnO1xuaW1wb3J0IHtPYmplY3RTZXJpYWxpemVyfSBmcm9tICcuLi8uLi9hcGkvdXRpbHMnO1xuaW1wb3J0IHtJTG9va3VwRGF0YVByb3ZpZGVyfSBmcm9tICcuLi8uLi9kYXRhLXByb3ZpZGVycyc7XG5pbXBvcnQge0lDb2x1bW5WYWx1ZUNvbXBvbmVudH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7VGFibGV2aWV3QXR0cmlidXRlRGVmfSBmcm9tICcuLi8uLi9tb2RlbHMvdGFibGV2aWV3LWF0dHIubW9kZWwnO1xuaW1wb3J0IHtDbGFzc1R5cGUsIEVudW1UeXBlfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge01vZGVsVXRpbH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtUYWJsZXZpZXdVdGlsfSBmcm9tICcuLi8uLi91dGlscy90YWJsZXZpZXcudXRpbCc7XG5pbXBvcnQge0ZpbHRlckxvb2t1cERlc2NyaXB0b3J9IGZyb20gJy4uL2ZpbHRlcic7XG5pbXBvcnQge01vZGVsRGVzY3JpcHRvcn0gZnJvbSAnLi4vbW9kZWwuZGVzY3JpcHRvcic7XG5pbXBvcnQge0NvbHVtbkRpc3BsYXlUeXBlRW51bSwgQ29sdW1uVHlwZUVudW0sIFRhYmxlRHluYW1pY0NvbHVtbnNNb2RlRW51bSwgVGFibGVGaWx0ZXJEaXNwbGF5RW51bSwgVGFibGVQYWdpbmF0aW9uTW9kZUVudW0sIFRhYmxlU2l6ZUVudW19IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7Q29sdW1uRGVzY3JpcHRvciwgQ29sdW1uRHluYW1pY0Rlc2NyaXB0b3J9IGZyb20gJy4vY29sdW1uLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgY2xhc3MgVGFibGVEZXNjcmlwdG9yPFQ+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9tb2RlbDogTW9kZWxEZXNjcmlwdG9yPFQ+O1xuICAgIHByaXZhdGUgX21vZGVsVHlwZTogQ2xhc3NUeXBlPFQ+O1xuICAgIHByaXZhdGUgX2ZpbHRlckRpc3BsYXk6IFRhYmxlRmlsdGVyRGlzcGxheUVudW0gPSBUYWJsZUZpbHRlckRpc3BsYXlFbnVtLk1lbnU7XG4gICAgcHJpdmF0ZSBfcGFnaW5hdGlvbk1vZGU/OiBUYWJsZVBhZ2luYXRpb25Nb2RlRW51bTtcbiAgICBwcml2YXRlIF9yb3dzUGVyUGFnZU9wdGlvbnMgPSBbMjUsIDUwLCAxMDBdO1xuICAgIHByaXZhdGUgX2RlZmF1bHROdW1Sb3dzID0gdGhpcy5fcm93c1BlclBhZ2VPcHRpb25zWzBdO1xuICAgIHByb3RlY3RlZCBfY29sdW1uczogQXJyYXk8Q29sdW1uRGVzY3JpcHRvcjxhbnksIFQ+PiA9IFtdO1xuICAgIHByaXZhdGUgX3RpdGxlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2hpZGVIZWFkZXIgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9kYXRhS2V5UHJvcGVydHk/OiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIF9oYXNEZWZhdWx0U29ydCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2RlZmF1bHRTb3J0UHJvcGVydHk6IHN0cmluZ1tdID0gW107XG4gICAgcHJpdmF0ZSBfZGVmYXVsdFNvcnRBc2M6IGJvb2xlYW5bXSA9IFtdO1xuXG4gICAgLy8gdmlzdWFsXG4gICAgcHJpdmF0ZSBfY2xhc3NOYW1lID0gJyc7XG4gICAgcHJpdmF0ZSBfc2l6ZTogVGFibGVTaXplRW51bSA9IFRhYmxlU2l6ZUVudW0uTGFyZ2U7XG4gICAgcHJpdmF0ZSBfdGFibGVGdWxsSGVpZ2h0T2Zmc2V0PzogbnVtYmVyO1xuICAgIHByaXZhdGUgX3Jvd0hlaWdodD86IG51bWJlcjtcbiAgICBwcml2YXRlIF9oYXNIb3ZlciA9IHRydWU7XG4gICAgcHJpdmF0ZSBfaGFzR3JpZGxpbmVzID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaGFzUmVzaXphYmxlQ29sdW1ucyA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2NvbHVtblJlc2l6ZU1vZGU6ICdmaXQnIHwgJ2V4cGFuZCcgPSAnZXhwYW5kJztcblxuICAgIHByaXZhdGUgX2hlYWRlckNsYXNzTmFtZT86IHN0cmluZztcbiAgICBwcml2YXRlIF9yb3dDbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfcm93Q2xhc3NOYW1lTWFwRm4/OiAoY2xhc3NOYW1lPzogc3RyaW5nLCBpdGVtPzogVCkgPT4gc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBfYXV0b0dlbmVyYXRlZCA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSBfaXNMb2NhbGl6ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eT86IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKG1vZGVsVHlwZTogQ2xhc3NUeXBlPFQ+LCBpZFByb3BlcnR5Pzogc3RyaW5nLCB0aXRsZVByb3BlcnR5Pzogc3RyaW5nLCBpMThuQmFzZUtleT86IHN0cmluZyB8IENsYXNzVHlwZTx1bmtub3duPikge1xuICAgICAgICB0aGlzLl9tb2RlbFR5cGUgPSBtb2RlbFR5cGU7XG4gICAgICAgIHRoaXMuX21vZGVsID0gbmV3IE1vZGVsRGVzY3JpcHRvcjxUPihtb2RlbFR5cGUsIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHksIGkxOG5CYXNlS2V5KTtcbiAgICAgICAgdGhpcy5fZGF0YUtleVByb3BlcnR5ID0gaWRQcm9wZXJ0eSA/PyBNb2RlbFV0aWwuZmluZElkQXR0cmlidXRlKG1vZGVsVHlwZSkgPz8gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdlbmVyYXRlcyBkZXNjcmlwdG9yIGJhc2VkIG9uIG1vZGVsVHlwZSBhdHRyaWJ1dGUgZGVmaW5pdGlvblxuICAgICAqIEBwYXJhbSBtb2RlbFR5cGUgY2xhc3MgdHlwZVxuICAgICAqIEBwYXJhbSBpZFByb3BlcnR5XG4gICAgICogQHBhcmFtIHRpdGxlUHJvcGVydHlcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGZyb208VD4obW9kZWxUeXBlOiBDbGFzc1R5cGU8VD4sIGlkUHJvcGVydHk/OiBzdHJpbmcsIHRpdGxlUHJvcGVydHk/OiBzdHJpbmcpOiBUYWJsZURlc2NyaXB0b3I8VD4ge1xuICAgICAgICByZXR1cm4gVGFibGVEZXNjcmlwdG9yLmZyb21Nb2RlbFdpdGhBdHRyaWJ1dGVzKG1vZGVsVHlwZSwgVGFibGV2aWV3VXRpbC5nZXRBdHRyaWJ1dGVEZWZNYXAobW9kZWxUeXBlKSwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2VuZXJhdGVzIGRlc2NyaXB0b3IgYmFzZSBvbiBnaXZlbiBhdHRyaWJ1dGUgZGVmaW5pdGlvblxuICAgICAqIEBwYXJhbSBtb2RlbFR5cGUgY2xhc3MgdHlwZVxuICAgICAqIEBwYXJhbSBhdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgZnJvbSB3aGljaCBkZXNjcmlwdG9yIGlzIGdlbmVyYXRlZFxuICAgICAqIEBwYXJhbSBpZFByb3BlcnR5XG4gICAgICogQHBhcmFtIHRpdGxlUHJvcGVydHlcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGZyb21Nb2RlbFdpdGhBdHRyaWJ1dGVzPFQ+KG1vZGVsVHlwZTogQ2xhc3NUeXBlPFQ+LCBhdHRyaWJ1dGVzOiBUYWJsZXZpZXdBdHRyaWJ1dGVEZWZbXSwgaWRQcm9wZXJ0eT86IHN0cmluZywgdGl0bGVQcm9wZXJ0eT86IHN0cmluZyk6IFRhYmxlRGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgVGFibGVEZXNjcmlwdG9yKG1vZGVsVHlwZSwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSk7XG4gICAgICAgIGRlc2NyaXB0b3IuX2F1dG9HZW5lcmF0ZWQgPSB0cnVlO1xuICAgICAgICBhdHRyaWJ1dGVzLmZpbHRlcihhdHRyID0+ICFhdHRyLnR5cGUuaW5jbHVkZXMoJ1NldCcpICYmICFhdHRyLnR5cGUuaW5jbHVkZXMoJ0FycmF5JykpLmZvckVhY2goYXR0ciA9PiBkZXNjcmlwdG9yLnVwc2VydENvbHVtbkZyb21BdHRyaWJ1dGVEZWYoYXR0cikpO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpbHRlckRpc3BsYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJEaXNwbGF5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGFnaW5hdGlvbk1vZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYWdpbmF0aW9uTW9kZTtcbiAgICB9XG5cbiAgICBnZXQgcm93c1BlclBhZ2VPcHRpb25zKCk6IG51bWJlcltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd3NQZXJQYWdlT3B0aW9ucztcbiAgICB9XG5cbiAgICBnZXQgZGVmYXVsdE51bVJvd3MoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHROdW1Sb3dzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY29sdW1ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0aXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RpdGxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGlkZUhlYWRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZGVIZWFkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRhS2V5UHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhS2V5UHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNEZWZhdWx0U29ydCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0RlZmF1bHRTb3J0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGVmYXVsdFNvcnRQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRTb3J0UHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZWZhdWx0U29ydEFzYygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRTb3J0QXNjO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbW9kZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaXplO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFibGVGdWxsSGVpZ2h0T2Zmc2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGVGdWxsSGVpZ2h0T2Zmc2V0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcm93SGVpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93SGVpZ2h0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzSG92ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNIb3ZlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0dyaWRsaW5lcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0dyaWRsaW5lcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1Jlc2l6YWJsZUNvbHVtbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNSZXNpemFibGVDb2x1bW5zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY29sdW1uUmVzaXplTW9kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtblJlc2l6ZU1vZGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByb3dDbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3dDbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByb3dDbGFzc05hbWVNYXBGbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd0NsYXNzTmFtZU1hcEZuO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGVhZGVyQ2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVhZGVyQ2xhc3NOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNMb2NhbGl6ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbHVtbihwcm9wZXJ0eTogc3RyaW5nKTogQ29sdW1uRGVzY3JpcHRvcjxzdHJpbmcsIFQ+IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbnMuZmluZChjb2wgPT4gY29sLnByb3BlcnR5ID09PSBwcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbkRlc2NyaXB0b3I8Q1Q+KGNvbHVtbjogQ29sdW1uRGVzY3JpcHRvcjxDVCwgVD4pOiBUYWJsZURlc2NyaXB0b3I8VD4ge1xuICAgICAgICB0aGlzLl9jb2x1bW5zLnB1c2goY29sdW1uKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbihwcm9wZXJ0eTogc3RyaW5nKTogQ29sdW1uRGVzY3JpcHRvcjxzdHJpbmcsIFQ+IHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gbmV3IENvbHVtbkRlc2NyaXB0b3I8c3RyaW5nLCBUPih0aGlzLCBwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX2NvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICByZXR1cm4gY29sdW1uO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDb2x1bW5OdW1iZXIocHJvcGVydHk6IHN0cmluZywgZGlzcGxheUZvcm1hdD86IHN0cmluZyk6IENvbHVtbkRlc2NyaXB0b3I8bnVtYmVyLCBUPiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IG5ldyBDb2x1bW5EZXNjcmlwdG9yPG51bWJlciwgVD4odGhpcywgcHJvcGVydHkpO1xuICAgICAgICBjb2x1bW4uYXNOdW1iZXIoZGlzcGxheUZvcm1hdCk7XG4gICAgICAgIHRoaXMuX2NvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICByZXR1cm4gY29sdW1uO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDb2x1bW5EYXRlKHByb3BlcnR5OiBzdHJpbmcsIGRpc3BsYXlGb3JtYXQ/OiBzdHJpbmcpOiBDb2x1bW5EZXNjcmlwdG9yPERhdGUsIFQ+IHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gbmV3IENvbHVtbkRlc2NyaXB0b3I8RGF0ZSwgVD4odGhpcywgcHJvcGVydHkpO1xuICAgICAgICBjb2x1bW4uYXNEYXRlKGRpc3BsYXlGb3JtYXQpO1xuICAgICAgICB0aGlzLl9jb2x1bW5zLnB1c2goY29sdW1uKTtcbiAgICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uQm9vbGVhbihwcm9wZXJ0eTogc3RyaW5nLCB5ZXM/OiBzdHJpbmcsIG5vPzogc3RyaW5nLCBhc0ljb24gPSBmYWxzZSk6IENvbHVtbkRlc2NyaXB0b3I8Ym9vbGVhbiwgVD4ge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBuZXcgQ29sdW1uRGVzY3JpcHRvcjxib29sZWFuLCBUPih0aGlzLCBwcm9wZXJ0eSk7XG4gICAgICAgIGNvbHVtbi5hc0Jvb2xlYW4oeWVzLCBubywgYXNJY29uKTtcbiAgICAgICAgdGhpcy5fY29sdW1ucy5wdXNoKGNvbHVtbik7XG4gICAgICAgIHJldHVybiBjb2x1bW47XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbkVudW0ocHJvcGVydHk6IHN0cmluZywgZW51bVR5cGU6IEVudW1UeXBlLCBuYW1lQXNWYWx1ZSA9IGZhbHNlLCB0aXRsZVBhdGg/OiBzdHJpbmcgfCBudWxsKTogQ29sdW1uRGVzY3JpcHRvcjxFbnVtVHlwZSwgVD4ge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBuZXcgQ29sdW1uRGVzY3JpcHRvcjxFbnVtVHlwZSwgVD4odGhpcywgcHJvcGVydHkpO1xuICAgICAgICBjb2x1bW4uYXNFbnVtKGVudW1UeXBlLCBuYW1lQXNWYWx1ZSwgdGl0bGVQYXRoKTtcbiAgICAgICAgdGhpcy5fY29sdW1ucy5wdXNoKGNvbHVtbik7XG4gICAgICAgIHJldHVybiBjb2x1bW47XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbkN1c3RvbUNvbXBvbmVudChwcm9wZXJ0eTogc3RyaW5nLCBjdXN0b21Db21wb25lbnRUeXBlOiBUeXBlPElDb2x1bW5WYWx1ZUNvbXBvbmVudDxUPj4pOiBDb2x1bW5EZXNjcmlwdG9yPGFueSwgVD4ge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBuZXcgQ29sdW1uRGVzY3JpcHRvcjxhbnksIFQ+KHRoaXMsIHByb3BlcnR5KTtcbiAgICAgICAgY29sdW1uLmFzQ3VzdG9tQ29tcG9uZW50KGN1c3RvbUNvbXBvbmVudFR5cGUpO1xuICAgICAgICB0aGlzLl9jb2x1bW5zLnB1c2goY29sdW1uKTtcbiAgICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlQ29sdW1uKHByb3BlcnR5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29sdW1uZElkeCA9IHRoaXMuX2NvbHVtbnMuZmluZEluZGV4KGMgPT4gYy5wcm9wZXJ0eSA9PT0gcHJvcGVydHkpO1xuICAgICAgICB0aGlzLl9jb2x1bW5zLnNwbGljZShjb2x1bW5kSWR4LCAxKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpbHRlckRpc3BsYXkoZmlsdGVyRGlzcGxheVR5cGU6IFRhYmxlRmlsdGVyRGlzcGxheUVudW0pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyRGlzcGxheSA9IGZpbHRlckRpc3BsYXlUeXBlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBhZ2luYXRpb25Nb2RlKHBhZ2luYXRpb25Nb2RlOiBUYWJsZVBhZ2luYXRpb25Nb2RlRW51bSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9wYWdpbmF0aW9uTW9kZSA9IHBhZ2luYXRpb25Nb2RlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJvd3NQZXJQYWdlKHJvd3M6IG51bWJlciwgb3B0aW9ucz86IEFycmF5PG51bWJlcj4pIHtcbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jvd3NQZXJQYWdlT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9yb3dzUGVyUGFnZU9wdGlvbnMuaW5jbHVkZXMocm93cykpIHtcbiAgICAgICAgICAgIHRoaXMuX2RlZmF1bHROdW1Sb3dzID0gdGhpcy5fcm93c1BlclBhZ2VPcHRpb25zWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZGVmYXVsdE51bVJvd3MgPSByb3dzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGl0bGUodGl0bGU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl90aXRsZSA9IHRpdGxlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEhpZGVIZWFkZXIoaGlkZUhlYWRlciA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5faGlkZUhlYWRlciA9IGhpZGVIZWFkZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGF0YUtleVByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGF0YUtleVByb3BlcnR5ID0gcHJvcGVydHk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGVmYXVsdFNvcnQocHJvcGVydHk6IHN0cmluZywgYXNjID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9oYXNEZWZhdWx0U29ydCA9IHRydWU7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRTb3J0UHJvcGVydHkucHVzaChwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRTb3J0QXNjLnB1c2goYXNjKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDbGFzc05hbWUoY2xhc3NOYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFNpemUoc2l6ZTogVGFibGVTaXplRW51bSA9IFRhYmxlU2l6ZUVudW0uTm9ybWFsKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3NpemUgPSBzaXplO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhYmxlRnVsbEhlaWdodE9mZnNldCh0YWJsZUZ1bGxIZWlnaHRPZmZzZXQ6IG51bWJlcik6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZUZ1bGxIZWlnaHRPZmZzZXQgPSB0YWJsZUZ1bGxIZWlnaHRPZmZzZXQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUm93SGVpZ2h0KHJvd0hlaWdodDogbnVtYmVyKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Jvd0hlaWdodCA9IHJvd0hlaWdodDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhIb3Zlcihob3ZlcjogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICB0aGlzLl9oYXNIb3ZlciA9IGhvdmVyO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEdyaWRsaW5lcyhncmlkbGluZXM6IGJvb2xlYW4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzR3JpZGxpbmVzID0gZ3JpZGxpbmVzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJlc2l6YWJsZUNvbHVtbnMocmVzaXphYmxlQ29sdW1ucyA9IHRydWUsIGNvbHVtblJlc2l6ZU1vZGU6ICdmaXQnIHwgJ2V4cGFuZCcgPSAnZml0Jyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9oYXNSZXNpemFibGVDb2x1bW5zID0gcmVzaXphYmxlQ29sdW1ucztcbiAgICAgICAgdGhpcy5fY29sdW1uUmVzaXplTW9kZSA9IGNvbHVtblJlc2l6ZU1vZGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUm93Q2xhc3NOYW1lKHJvd0NsYXNzTmFtZT86IHN0cmluZywgY2xhc3NOYW1lTWFwRm4/OiAoY2xhc3NOYW1lPzogc3RyaW5nLCBpdGVtPzogVCkgPT4gc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Jvd0NsYXNzTmFtZSA9IHJvd0NsYXNzTmFtZTtcbiAgICAgICAgdGhpcy5fcm93Q2xhc3NOYW1lTWFwRm4gPSBjbGFzc05hbWVNYXBGbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhIZWFkZXJDbGFzc05hbWUoaGVhZGVyQ2xhc3NOYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGVhZGVyQ2xhc3NOYW1lID0gaGVhZGVyQ2xhc3NOYW1lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aExvY2FsaXplZCgpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXNMb2NhbGl6ZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aExvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5KGxvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXNMb2NhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLl9sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eSA9IGxvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29weUZpZWxkc1RvKG9iajogVGFibGVEZXNjcmlwdG9yPFQ+KSB7XG4gICAgICAgIG9iai5fdGl0bGUgPSB0aGlzLl90aXRsZTtcbiAgICAgICAgb2JqLl9oaWRlSGVhZGVyID0gdGhpcy5faGlkZUhlYWRlcjtcbiAgICAgICAgb2JqLl9kYXRhS2V5UHJvcGVydHkgPSB0aGlzLl9kYXRhS2V5UHJvcGVydHk7XG4gICAgICAgIG9iai5faGFzRGVmYXVsdFNvcnQgPSB0aGlzLl9oYXNEZWZhdWx0U29ydDtcbiAgICAgICAgb2JqLl9kZWZhdWx0U29ydFByb3BlcnR5ID0gdGhpcy5fZGVmYXVsdFNvcnRQcm9wZXJ0eS5tYXAocCA9PiBwKTtcbiAgICAgICAgb2JqLl9kZWZhdWx0U29ydEFzYyA9IHRoaXMuX2RlZmF1bHRTb3J0QXNjLm1hcChwID0+IHApO1xuICAgICAgICBvYmouX2ZpbHRlckRpc3BsYXkgPSB0aGlzLl9maWx0ZXJEaXNwbGF5O1xuICAgICAgICBvYmouX2NsYXNzTmFtZSA9IHRoaXMuX2NsYXNzTmFtZTtcbiAgICAgICAgb2JqLl9zaXplID0gdGhpcy5fc2l6ZTtcbiAgICAgICAgb2JqLl90YWJsZUZ1bGxIZWlnaHRPZmZzZXQgPSB0aGlzLl90YWJsZUZ1bGxIZWlnaHRPZmZzZXQ7XG4gICAgICAgIG9iai5fcm93SGVpZ2h0ID0gdGhpcy5fcm93SGVpZ2h0O1xuICAgICAgICBvYmouX2hhc0hvdmVyID0gdGhpcy5faGFzSG92ZXI7XG4gICAgICAgIG9iai5faGFzR3JpZGxpbmVzID0gdGhpcy5faGFzR3JpZGxpbmVzO1xuICAgICAgICBvYmouX2hhc1Jlc2l6YWJsZUNvbHVtbnMgPSB0aGlzLl9oYXNSZXNpemFibGVDb2x1bW5zO1xuICAgICAgICBvYmouX2NvbHVtblJlc2l6ZU1vZGUgPSB0aGlzLl9jb2x1bW5SZXNpemVNb2RlO1xuICAgICAgICBvYmouX2lzTG9jYWxpemVkID0gdGhpcy5faXNMb2NhbGl6ZWQ7XG4gICAgICAgIG9iai5fbG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHkgPSB0aGlzLl9sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBUYWJsZURlc2NyaXB0b3I8VD4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IFRhYmxlRGVzY3JpcHRvcih0aGlzLm1vZGVsLnR5cGUsIHRoaXMubW9kZWwuaWRQcm9wZXJ0eU5hbWUsIHRoaXMubW9kZWwudGl0bGVQcm9wZXJ0eU5hbWUpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgZGVzY3JpcHRvci5fY29sdW1ucyA9IHRoaXMuY29sdW1ucy5tYXAoYyA9PiBjLmNvcHkoKSk7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdlbmVyYXRlcyBjb2x1bW4gYmFzZWQgb24gYXR0cmlidXRlc1xuICAgICAqIEBwYXJhbSBhdHRyaWJ1dGUgYXR0cmlidXRlIG1hcFxuICAgICAqIEBwYXJhbSBjb2x1bW4gaWYgcHJvdmlkZWQsIHJlcGxhY2VkIGJ5IG5ldywgb3RoZXJ3aXNlIG5ldyBpcyBjcmVhdGVkXG4gICAgICogQHBhcmFtIGFyZ3MgYWRkaXRpb25hbCBwYXJhbWV0ZXJzXG4gICAgICovXG4gICAgcHJpdmF0ZSB1cHNlcnRDb2x1bW5Gcm9tQXR0cmlidXRlRGVmKGF0dHJpYnV0ZTogVGFibGV2aWV3QXR0cmlidXRlRGVmLCBjb2x1bW4/OiBDb2x1bW5EZXNjcmlwdG9yPHN0cmluZywgVD4sIC4uLmFyZ3M6IGFueVtdKTogQ29sdW1uRGVzY3JpcHRvcjxzdHJpbmcsIFQ+IHtcbiAgICAgICAgaWYgKGNvbHVtbiA9PSBudWxsKSB7XG4gICAgICAgICAgICBjb2x1bW4gPSB0aGlzLmFkZENvbHVtbihhdHRyaWJ1dGUubmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXR0cmlidXRlLmNvbHVtblR5cGUgPT09IENvbHVtblR5cGVFbnVtLkVudW0gJiYgYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGFyZ3MgPSBbYXR0cmlidXRlLmVudW1UeXBlXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbHVtbiA9IGNvbHVtbi5hc1R5cGUoYXR0cmlidXRlLmNvbHVtblR5cGUsIGF0dHJpYnV0ZS5jb2x1bW5EaXNwbGF5VHlwZSwgLi4uYXJncyk7XG4gICAgICAgIGlmIChhdHRyaWJ1dGUuY2xhc3NUeXBlKSB7XG4gICAgICAgICAgICBjb2x1bW4ud2l0aE9iamVjdFByb3BlcnR5KGF0dHJpYnV0ZS5jbGFzc1R5cGUpLndpdGhTb3J0KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb2x1bW4ud2l0aFNvcnQoKS53aXRoRmlsdGVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29sdW1uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRlZmluZXMgbW9kaWZpZWQgdHlwZSBvZiBjb2x1bW5cbiAgICAgKiBETyBOT1QgVVNFIHdpdGggZW51bSAodXNlIHdpdGhDdXN0b21FbnVtVHlwZSlcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgY29sdW1uIG5hbWVcbiAgICAgKiBAcGFyYW0gY29sdW1uVHlwZSBtb2RpZmllZCB0eXBlXG4gICAgICogQHBhcmFtIGFyZ3MgYWRkaXRpb25hbCBhdHRyaWJ1dGVzXG4gICAgICovXG4gICAgcHVibGljIHdpdGhDb2x1bW5Nb2RpZmllZFR5cGUocHJvcGVydHk6IHN0cmluZywgY29sdW1uVHlwZT86IENvbHVtblR5cGVFbnVtLCBjb2x1bW5EaXNwbGF5VHlwZT86IENvbHVtbkRpc3BsYXlUeXBlRW51bSwgLi4uYXJnczogYW55W10pOiB0aGlzIHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlRGVmID0gVGFibGV2aWV3VXRpbC5nZXRBdHRyaWJ1dGVEZWZNYXAodGhpcy5fbW9kZWxUeXBlKS5maW5kKGF0cmlidXRlID0+IGF0cmlidXRlLm5hbWUgPT09IHByb3BlcnR5KTtcblxuICAgICAgICBpZiAoYXR0cmlidXRlRGVmICE9IG51bGwpIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZURlZi5jb2x1bW5UeXBlID0gY29sdW1uVHlwZSA/PyBhdHRyaWJ1dGVEZWYuY29sdW1uVHlwZTtcbiAgICAgICAgICAgIGF0dHJpYnV0ZURlZi5jb2x1bW5EaXNwbGF5VHlwZSA9IGNvbHVtbkRpc3BsYXlUeXBlID8/IGF0dHJpYnV0ZURlZi5jb2x1bW5EaXNwbGF5VHlwZTtcbiAgICAgICAgICAgIHRoaXMudXBzZXJ0Q29sdW1uRnJvbUF0dHJpYnV0ZURlZihcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVEZWYsXG4gICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5zLmZpbmQoY29sID0+IGNvbC5wcm9wZXJ0eSA9PT0gYXR0cmlidXRlRGVmLm5hbWUpLFxuICAgICAgICAgICAgICAgIC4uLmFyZ3NcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBkZWZpbmVzIGN1c3RvbSBlbnVtIHR5cGUgZm9yIGNvbHVtblxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBjb2x1bW4gbmFtZVxuICAgICAqIEBwYXJhbSBlbnVtVHlwZVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQ29sdW1uTW9kaWZpZWRFbnVtKHByb3BlcnR5OiBzdHJpbmcsIGVudW1UeXBlPzogRW51bVR5cGUpOiB0aGlzIHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlRGVmID0gVGFibGV2aWV3VXRpbC5nZXRBdHRyaWJ1dGVEZWZNYXAodGhpcy5fbW9kZWxUeXBlKS5maW5kKGF0cmlidXRlID0+IGF0cmlidXRlLm5hbWUgPT09IHByb3BlcnR5KTtcblxuICAgICAgICBpZiAoYXR0cmlidXRlRGVmICE9IG51bGwpIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZURlZi5jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uRW51bTtcbiAgICAgICAgICAgIHRoaXMudXBzZXJ0Q29sdW1uRnJvbUF0dHJpYnV0ZURlZihcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVEZWYsXG4gICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5zLmZpbmQoY29sID0+IGNvbC5wcm9wZXJ0eSA9PT0gcHJvcGVydHkpLFxuICAgICAgICAgICAgICAgIGVudW1UeXBlID8/IChPYmplY3RTZXJpYWxpemVyLmdldCgpLmZpbmRFbnVtKGF0dHJpYnV0ZURlZi50eXBlKSBhcyBFbnVtVHlwZSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBtb2RpZmllcyBjb2x1bW4gd2l0aCBjbGFzcyBhbmQgbG9va3VwIHByb3ZpZGVyXG4gICAgICogQHBhcmFtIHByb3BlcnR5IGNvbHVtbiBuYW1lXG4gICAgICogQHBhcmFtIGxvb2t1cFByb3ZpZGVyIGxvb2t1cFByb3ZpZGVyIGZvciBjbGFzc1xuICAgICAqIEBwYXJhbSBpdGVtc0xhYmVsUHJvcGVydHlcbiAgICAgKiBAcGFyYW0gZmlsdGVyUHJvcGVydHlcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aENvbHVtbk1vZGlmaWVkTG9va3VwKHByb3BlcnR5OiBzdHJpbmcsIGxvb2t1cFByb3ZpZGVyOiBJTG9va3VwRGF0YVByb3ZpZGVyPGFueSwgYW55PiwgaXRlbXNMYWJlbFByb3BlcnR5Pzogc3RyaW5nLCBmaWx0ZXJQcm9wZXJ0eT86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmluZChjb2wgPT4gY29sLnByb3BlcnR5ID09PSBwcm9wZXJ0eSk7XG4gICAgICAgIGlmIChjb2x1bW4pIHtcbiAgICAgICAgICAgIGNvbHVtbi53aXRoRmlsdGVyTG9va3VwKCkud2l0aExvb2t1cERhdGFQcm92aWRlcihsb29rdXBQcm92aWRlcik7XG4gICAgICAgICAgICBpZiAoY29sdW1uIGluc3RhbmNlb2YgRmlsdGVyTG9va3VwRGVzY3JpcHRvcikge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtc0xhYmVsUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgKGNvbHVtbiBhcyBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yPFQ+KS53aXRoSXRlbXNMYWJlbFByb3BlcnR5KGl0ZW1zTGFiZWxQcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlclByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgICAgIChjb2x1bW4gYXMgRmlsdGVyTG9va3VwRGVzY3JpcHRvcjxUPikud2l0aEZpbHRlclByb3BlcnR5KGZpbHRlclByb3BlcnR5KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2FsbGVkIG9uIGRhdGEgcmVjZWl2ZWQgdG8gY3VzdG9taXplIFN0cmluZyBwcm9wZXJ0aWVzIHdpdGggZWl0aGVyIERhdGEgb3IgTnVtYmVyIHR5cGVcbiAgICAgKiBAcGFyYW0gZGF0YSBhcGkgcmVzcG9uc2VcbiAgICAgKi9cbiAgICAvLyBwdWJsaWMgb25EYXRhUmVjZWl2ZWRUeXBlQnVpbGRpbmcoZGF0YTogTWVkaXVzUXVlcnlSZXN1bHQ8VD4pOiB0aGlzIHtcbiAgICAvLyAgICAgaWYgKCF0aGlzLl9hdXRvR2VuZXJhdGVkKSB7XG4gICAgLy8gICAgICAgICByZXR1cm4gdGhpcztcbiAgICAvLyAgICAgfSBlbHNlIGlmIChkYXRhLnBhZ2VEYXRhID09IG51bGwgfHwgZGF0YS5wYWdlRGF0YS5sZW5ndGggPT0gMCkge1xuICAgIC8vICAgICAgICAgdGhyb3cgRXJyb3IoJ1BhZ2VEYXRhIGlzIGVtcHR5LCBjYW5ub3QgZ2VuZXJhdGUgZGVzY3JpcHRvcicpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICAgIGNvbnN0IG9iamVjdE1vZGVsID0gZGF0YS5wYWdlRGF0YVswXTtcbiAgICAvLyAgICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKG9iamVjdE1vZGVsKTtcbiAgICAvL1xuICAgIC8vICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBlbnRyaWVzKSB7XG4gICAgLy8gICAgICAgICBjb25zdCBhdHRyaWJ1dGUgPSBUYWJsZXZpZXdVdGlsLmdldEF0dHJpYnV0ZURlZk1hcCh0aGlzLl9tb2RlbFR5cGUpLmZpbmQoYSA9PiBhLm5hbWUgPT09IGtleSk7XG4gICAgLy8gICAgICAgICBpZiAoYXR0cmlidXRlICYmIGF0dHJpYnV0ZS5jb2x1bW5UeXBlID09PSBDb2x1bW5UeXBlRW51bS5TdHJpbmcpIHtcbiAgICAvLyAgICAgICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmluZChjb2wgPT4gY29sLnByb3BlcnR5ID09PSBhdHRyaWJ1dGUubmFtZSk7XG4gICAgLy9cbiAgICAvLyAgICAgICAgICAgICBpZiAoY29sdW1uKSB7XG4gICAgLy8gICAgICAgICAgICAgICAgIFRhYmxldmlld1V0aWwuc3RyaW5nQ29sdW1uQ29udmVydGVyKGNvbHVtbiwgdmFsdWUpO1xuICAgIC8vICAgICAgICAgICAgIH1cbiAgICAvLyAgICAgICAgIH1cbiAgICAvLyAgICAgfVxuICAgIC8vXG4gICAgLy8gICAgIHJldHVybiB0aGlzO1xuICAgIC8vIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRhYmxlRHluYW1pY0Rlc2NyaXB0b3IgZXh0ZW5kcyBUYWJsZURlc2NyaXB0b3I8YW55PiB7XG4gICAgcHJpdmF0ZSBfZXhjbHVkZWRDb2x1bW5zOiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgcHJpdmF0ZSBfZmlsdGVyQ29sdW1uczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIHByaXZhdGUgX3NvcnRDb2x1bW5zOiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgcHJpdmF0ZSBfc29ydENvbHVtbk1vZGUgPSBUYWJsZUR5bmFtaWNDb2x1bW5zTW9kZUVudW0uRVhDTFVERTtcbiAgICBwcml2YXRlIF9maWx0ZXJDb2x1bW5Nb2RlID0gVGFibGVEeW5hbWljQ29sdW1uc01vZGVFbnVtLkVYQ0xVREU7XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX2NvbHVtbnM6IENvbHVtbkR5bmFtaWNEZXNjcmlwdG9yW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKGlkUHJvcGVydHk/OiBzdHJpbmcsIHRpdGxlUHJvcGVydHk/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoe30gYXMgQ2xhc3NUeXBlPGFueT4sIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHkpO1xuICAgICAgICB0aGlzLndpdGhUaXRsZSgnRHluYW1pYyB0YWJsZScpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgY29sdW1ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbnM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZGVmaW5lcyBleGNsdWRlZCBjb2x1bW5zIHdoZW4gZ2VuZXJhdGluZyBkZXNjcmlwdG9yXG4gICAgICogQHBhcmFtIGV4Y2x1ZGVkQ29sdW1uIG5hbWVzIG9mIGV4Y2x1ZGVkIGNvbHVtbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aENvbHVtbnNFeGNsdWRlZChleGNsdWRlZENvbHVtbjogc3RyaW5nW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZXhjbHVkZWRDb2x1bW5zID0gZXhjbHVkZWRDb2x1bW47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRlZmluZXMgY29sdW1uIHByb3BlcnRpZXMgb24gd2hpY2ggc29ydCBpcyBkZWZpbmVkIG9yIG5vdCBkZXBlbmRpbmcgb24gc29ydENvbHVtbk1vZGVcbiAgICAgKiBAcGFyYW0gc29ydE9uQ29sdW1ucyBjb2x1bW4gbmFtZXNcbiAgICAgKiBAcGFyYW0gc29ydENvbHVtbk1vZGUgSU5DTFVERV9PTkxZIChkZWZhdWx0KSBvbmx5IGdpdmVuIGNvbHVtbnMgd2lsbCBoYXZlIHNvcnQsIEVYQ0xVREUgZ2l2ZW4gY29sdW1ucyB3aWxsIE5PVCBoYXZlIHNvcnRcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aENvbHVtbnNTb3J0KHNvcnRPbkNvbHVtbnM6IHN0cmluZ1tdLCBzb3J0Q29sdW1uTW9kZSA9IFRhYmxlRHluYW1pY0NvbHVtbnNNb2RlRW51bS5JTkNMVURFX09OTFkpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fc29ydENvbHVtbk1vZGUgPSBzb3J0Q29sdW1uTW9kZTtcbiAgICAgICAgdGhpcy5fc29ydENvbHVtbnMgPSBzb3J0T25Db2x1bW5zO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBkZWZpbmVzIGNvbHVtbiBwcm9wZXJ0aWVzIG9uIHdoaWNoIGZpbHRlciBpcyBkZWZpbmVkIG9yIG5vdCBkZXBlbmRpbmcgb24gZmlsdGVyQ29sdW1uTW9kZVxuICAgICAqIEBwYXJhbSBmaWx0ZXJPbkNvbHVtbiBjb2x1bW4gbmFtZXNcbiAgICAgKiBAcGFyYW0gZmlsdGVyQ29sdW1uTW9kZSBJTkNMVURFX09OTFkgKGRlZmF1bHQpIG9ubHkgZ2l2ZW4gY29sdW1ucyB3aWxsIGhhdmUgZmlsdGVyLCBFWENMVURFIGdpdmVuIGNvbHVtbnMgd2lsbCBOT1QgaGF2ZSBmaWx0ZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aENvbHVtbnNGaWx0ZXIoZmlsdGVyT25Db2x1bW46IHN0cmluZ1tdLCBmaWx0ZXJDb2x1bW5Nb2RlID0gVGFibGVEeW5hbWljQ29sdW1uc01vZGVFbnVtLklOQ0xVREVfT05MWSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWx0ZXJDb2x1bW5Nb2RlID0gZmlsdGVyQ29sdW1uTW9kZTtcbiAgICAgICAgdGhpcy5fZmlsdGVyQ29sdW1ucyA9IGZpbHRlck9uQ29sdW1uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIGdpdmVuIHR5cGUgdG8gY29sdW1uIHdpdGggZ2l2ZW4gcHJvcGVydHkgYW5kIHJldHVybnMgdGhpcyB0YWJsZVxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBjb2x1bW4ncyBwcm9wZXJ0eVxuICAgICAqIEBwYXJhbSB0eXBlIGN1c3RvbSB0eXBlIGZvciBjb2x1bW5cbiAgICAgKiBAcGFyYW0gYXJncyBhZGRpdGlvbiBhcmd1bWVudHMgZm9yIGNvbHVtblxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSB3aXRoQ29sdW1uTW9kaWZpZWRUeXBlKHByb3BlcnR5OiBzdHJpbmcsIHR5cGU6IENvbHVtblR5cGVFbnVtLCBkaXNwbGF5VHlwZT86IENvbHVtbkRpc3BsYXlUeXBlRW51bSwgLi4uYXJnczogYW55W10pOiB0aGlzIHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5fY29sdW1ucy5maW5kKGNvbCA9PiBwcm9wZXJ0eSA9PT0gY29sLnByb3BlcnR5KSA/PyB0aGlzLmFkZENvbHVtbihwcm9wZXJ0eSkud2l0aFRpdGxlKHByb3BlcnR5KTtcbiAgICAgICAgaWYgKGNvbHVtbikge1xuICAgICAgICAgICAgY29sdW1uLmFzVHlwZSh0eXBlLCBkaXNwbGF5VHlwZSwgLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2V0cyB0aXRsZSB0byBjb2x1bW4gd2l0aCBnaXZlbiBwcm9wZXJ0eSBhbmQgcmV0dXJucyB0aGlzIHRhYmxlXG4gICAgICogQHBhcmFtIHByb3BlcnR5IGNvbHVtbidzIHByb3BlcnR5XG4gICAgICogQHBhcmFtIHRpdGxlIGNvbHVtbidzIHRpdGxlXG4gICAgICovXG4gICAgcHVibGljIHdpdGhDb2x1bW5UaXRsZShwcm9wZXJ0eTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuX2NvbHVtbnMuZmluZChjb2wgPT4gcHJvcGVydHkgPT09IGNvbC5wcm9wZXJ0eSkgPz8gdGhpcy5hZGRDb2x1bW4ocHJvcGVydHkpO1xuICAgICAgICBjb2x1bW4ud2l0aFRpdGxlKHRpdGxlLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2VuZXJhdGVzIGNvbHVtbnMgZGVmaW5lZCBvbiB0YWJsZSBiYXNlZCBvbiBkYXRhIGZldGNoZWQgZnJvbSBhcGlcbiAgICAgKiBAcGFyYW0gZGF0YSBkYXRhIGZyb20gYXBpXG4gICAgICovXG4gICAgcHVibGljIHRvVGFibGVEZXNjcmlwdG9yRnJvbURhdGEoZGF0YTogTWVkaXVzUXVlcnlSZXN1bHQ8YW55Pik6IFRhYmxlRGVzY3JpcHRvcjxhbnk+IHtcbiAgICAgICAgY29uc3QgdGFibGVEZXNjcmlwdG9yID0gdGhpcy50b1RhYmxlRGVzY3JpcHRvcigpO1xuXG4gICAgICAgIGlmIChkYXRhLnBhZ2VEYXRhID09IG51bGwgfHwgZGF0YS5wYWdlRGF0YS5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRhYmxlRGVzY3JpcHRvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9iamVjdE1vZGVsID0gZGF0YS5wYWdlRGF0YVswXTtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKG9iamVjdE1vZGVsKVxuICAgICAgICAgICAgLmZpbHRlcigoW2tleV0pID0+ICF0aGlzLl9leGNsdWRlZENvbHVtbnMuaW5jbHVkZXMoa2V5KSlcbiAgICAgICAgICAgIC5maWx0ZXIoKFssIHZhbHVlXSkgPT4gIUFycmF5LmlzQXJyYXkodmFsdWUpKTsgLy9leGNsdWRlIGFycmF5cyBhbmQgc2V0c1xuXG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGVudHJpZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IG1ldGFDb2x1bW4gPSB0aGlzLl9jb2x1bW5zLmZpbmQoY29sID0+IGNvbC5wcm9wZXJ0eSA9PT0ga2V5KTtcbiAgICAgICAgICAgIGxldCBjb2x1bW46IENvbHVtbkRlc2NyaXB0b3I8YW55LCBhbnk+O1xuICAgICAgICAgICAgaWYgKG1ldGFDb2x1bW4pIHtcbiAgICAgICAgICAgICAgICBpZiAoIW1ldGFDb2x1bW4udmlzaWJpbGl0eSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29sdW1uID0gbWV0YUNvbHVtbi50b0NvbHVtbkRlc2NyaXB0b3IodGFibGVEZXNjcmlwdG9yKTtcbiAgICAgICAgICAgICAgICB0YWJsZURlc2NyaXB0b3IuYWRkQ29sdW1uRGVzY3JpcHRvcihjb2x1bW4pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4gPSB0YWJsZURlc2NyaXB0b3IuYWRkQ29sdW1uKGtleSkud2l0aFRpdGxlKGtleSk7XG4gICAgICAgICAgICAgICAgVGFibGV2aWV3VXRpbC5zdHJpbmdDb2x1bW5Db252ZXJ0ZXIoY29sdW1uLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRPZlNvcnRDb2x1bW5zID0gdGhpcy5fc29ydENvbHVtbnMuaW5jbHVkZXMoY29sdW1uLnByb3BlcnR5KTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAodGhpcy5fc29ydENvbHVtbk1vZGUgPT09IFRhYmxlRHluYW1pY0NvbHVtbnNNb2RlRW51bS5FWENMVURFICYmICFlbGVtZW50T2ZTb3J0Q29sdW1ucykgfHxcbiAgICAgICAgICAgICAgICAodGhpcy5fc29ydENvbHVtbk1vZGUgPT09IFRhYmxlRHluYW1pY0NvbHVtbnNNb2RlRW51bS5JTkNMVURFX09OTFkgJiYgZWxlbWVudE9mU29ydENvbHVtbnMpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4ud2l0aFNvcnQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZWxlbWVudE9mRmlsdGVyQ29sdW1ucyA9IHRoaXMuX2ZpbHRlckNvbHVtbnMuaW5jbHVkZXMoY29sdW1uLnByb3BlcnR5KTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAodGhpcy5fZmlsdGVyQ29sdW1uTW9kZSA9PT0gVGFibGVEeW5hbWljQ29sdW1uc01vZGVFbnVtLkVYQ0xVREUgJiYgIWVsZW1lbnRPZkZpbHRlckNvbHVtbnMpIHx8XG4gICAgICAgICAgICAgICAgKHRoaXMuX2ZpbHRlckNvbHVtbk1vZGUgPT09IFRhYmxlRHluYW1pY0NvbHVtbnNNb2RlRW51bS5JTkNMVURFX09OTFkgJiYgZWxlbWVudE9mRmlsdGVyQ29sdW1ucylcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGNvbHVtbi53aXRoRmlsdGVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGFibGVEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGFkZHMgQ29sdW1uRHluYW1pY0Rlc2NyaXB0b3IgdG8gdGhpcyB0YWJsZVxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBjb2x1bW4ncyBwcm9wZXJ0eVxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBhZGRDb2x1bW4ocHJvcGVydHk6IHN0cmluZyk6IENvbHVtbkR5bmFtaWNEZXNjcmlwdG9yIHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gbmV3IENvbHVtbkR5bmFtaWNEZXNjcmlwdG9yKHRoaXMsIHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fY29sdW1ucy5wdXNoKGNvbHVtbik7XG4gICAgICAgIHJldHVybiBjb2x1bW47XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHJlbW92ZUNvbHVtbihwcm9wZXJ0eTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKGNvbCA9PiBjb2wucHJvcGVydHkgPT09IHByb3BlcnR5KSA/PyB0aGlzLmFkZENvbHVtbihwcm9wZXJ0eSk7XG4gICAgICAgIGNvbHVtbi53aXRoVmlzaWJpbGl0eShmYWxzZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgZGVlcCBjb3B5IG9mIHRhYmxlIGR5bmFtaWMgZGVzY3JpcHRvclxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBjb3B5KCk6IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3Ige1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3IodGhpcy5tb2RlbC5pZFByb3BlcnR5TmFtZSwgdGhpcy5tb2RlbC50aXRsZVByb3BlcnR5TmFtZSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICBkZXNjcmlwdG9yLl9jb2x1bW5zID0gdGhpcy5jb2x1bW5zLm1hcChjID0+IGMuY29weSgpKTtcbiAgICAgICAgZGVzY3JpcHRvci5fZXhjbHVkZWRDb2x1bW5zID0gWy4uLnRoaXMuX2V4Y2x1ZGVkQ29sdW1uc107XG4gICAgICAgIGRlc2NyaXB0b3IuX2ZpbHRlckNvbHVtbnMgPSBbLi4udGhpcy5fZmlsdGVyQ29sdW1uc107XG4gICAgICAgIGRlc2NyaXB0b3IuX3NvcnRDb2x1bW5zID0gWy4uLnRoaXMuX3NvcnRDb2x1bW5zXTtcbiAgICAgICAgZGVzY3JpcHRvci5fZmlsdGVyQ29sdW1uTW9kZSA9IHRoaXMuX2ZpbHRlckNvbHVtbk1vZGU7XG4gICAgICAgIGRlc2NyaXB0b3IuX3NvcnRDb2x1bW5Nb2RlID0gdGhpcy5fc29ydENvbHVtbk1vZGU7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b1RhYmxlRGVzY3JpcHRvcigpOiBUYWJsZURlc2NyaXB0b3I8YW55PiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgVGFibGVEZXNjcmlwdG9yPGFueT4oe30gYXMgQ2xhc3NUeXBlPGFueT4sIHRoaXMubW9kZWwuaWRQcm9wZXJ0eU5hbWUsIHRoaXMubW9kZWwudGl0bGVQcm9wZXJ0eU5hbWUpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuIl19
509
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGVzY3JpcHRvcnMvdGFibGUvdGFibGUuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUtqRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDakQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBd0IsY0FBYyxFQUFFLDJCQUEyQixFQUFFLHNCQUFzQixFQUEyQixhQUFhLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDNUosT0FBTyxFQUFDLGdCQUFnQixFQUFFLHVCQUF1QixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFOUUsTUFBTSxPQUFPLGVBQWU7SUFtQ3hCLFlBQVksU0FBdUIsRUFBRSxVQUFtQixFQUFFLGFBQXNCLEVBQUUsV0FBeUM7UUFoQ25ILG1CQUFjLEdBQTJCLHNCQUFzQixDQUFDLElBQUksQ0FBQztRQUVyRSx3QkFBbUIsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEMsb0JBQWUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsYUFBUSxHQUFvQyxFQUFFLENBQUM7UUFFakQsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFHcEIsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIseUJBQW9CLEdBQWEsRUFBRSxDQUFDO1FBQ3BDLG9CQUFlLEdBQWMsRUFBRSxDQUFDO1FBRXhDLFNBQVM7UUFDRCxlQUFVLEdBQUcsRUFBRSxDQUFD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QztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtNZWRpdXNRdWVyeVJlc3VsdH0gZnJvbSAnLi4vLi4vYXBpL21vZGVscyc7XG5pbXBvcnQge09iamVjdFNlcmlhbGl6ZXJ9IGZyb20gJy4uLy4uL2FwaS91dGlscyc7XG5pbXBvcnQge0lMb29rdXBEYXRhUHJvdmlkZXJ9IGZyb20gJy4uLy4uL2RhdGEtcHJvdmlkZXJzJztcbmltcG9ydCB7SUNvbHVtblZhbHVlQ29tcG9uZW50fSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtUYWJsZXZpZXdBdHRyaWJ1dGVEZWZ9IGZyb20gJy4uLy4uL21vZGVscy90YWJsZXZpZXctYXR0ci5tb2RlbCc7XG5pbXBvcnQge0NsYXNzVHlwZSwgRW51bVR5cGV9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7TW9kZWxVdGlsfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQge1RhYmxldmlld1V0aWx9IGZyb20gJy4uLy4uL3V0aWxzL3RhYmxldmlldy51dGlsJztcbmltcG9ydCB7RmlsdGVyTG9va3VwRGVzY3JpcHRvcn0gZnJvbSAnLi4vZmlsdGVyJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICcuLi9tb2RlbC5kZXNjcmlwdG9yJztcbmltcG9ydCB7Q29sdW1uRGlzcGxheVR5cGVFbnVtLCBDb2x1bW5UeXBlRW51bSwgVGFibGVEeW5hbWljQ29sdW1uc01vZGVFbnVtLCBUYWJsZUZpbHRlckRpc3BsYXlFbnVtLCBUYWJsZVBhZ2luYXRpb25Nb2RlRW51bSwgVGFibGVTaXplRW51bX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtDb2x1bW5EZXNjcmlwdG9yLCBDb2x1bW5EeW5hbWljRGVzY3JpcHRvcn0gZnJvbSAnLi9jb2x1bW4uZGVzY3JpcHRvcic7XG5cbmV4cG9ydCBjbGFzcyBUYWJsZURlc2NyaXB0b3I8VD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX21vZGVsOiBNb2RlbERlc2NyaXB0b3I8VD47XG4gICAgcHJpdmF0ZSBfbW9kZWxUeXBlOiBDbGFzc1R5cGU8VD47XG4gICAgcHJpdmF0ZSBfZmlsdGVyRGlzcGxheTogVGFibGVGaWx0ZXJEaXNwbGF5RW51bSA9IFRhYmxlRmlsdGVyRGlzcGxheUVudW0uTWVudTtcbiAgICBwcml2YXRlIF9wYWdpbmF0aW9uTW9kZT86IFRhYmxlUGFnaW5hdGlvbk1vZGVFbnVtO1xuICAgIHByaXZhdGUgX3Jvd3NQZXJQYWdlT3B0aW9ucyA9IFsyNSwgNTAsIDEwMF07XG4gICAgcHJpdmF0ZSBfZGVmYXVsdE51bVJvd3MgPSB0aGlzLl9yb3dzUGVyUGFnZU9wdGlvbnNbMF07XG4gICAgcHJvdGVjdGVkIF9jb2x1bW5zOiBBcnJheTxDb2x1bW5EZXNjcmlwdG9yPGFueSwgVD4+ID0gW107XG4gICAgcHJpdmF0ZSBfdGl0bGU/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfaGlkZUhlYWRlciA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2RhdGFLZXlQcm9wZXJ0eT86IHN0cmluZztcblxuICAgIHByaXZhdGUgX2hhc0RlZmF1bHRTb3J0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfZGVmYXVsdFNvcnRQcm9wZXJ0eTogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIF9kZWZhdWx0U29ydEFzYzogYm9vbGVhbltdID0gW107XG5cbiAgICAvLyB2aXN1YWxcbiAgICBwcml2YXRlIF9jbGFzc05hbWUgPSAnJztcbiAgICBwcml2YXRlIF9zaXplOiBUYWJsZVNpemVFbnVtID0gVGFibGVTaXplRW51bS5MYXJnZTtcbiAgICBwcml2YXRlIF90YWJsZUZ1bGxIZWlnaHRPZmZzZXQ/OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfcm93SGVpZ2h0PzogbnVtYmVyO1xuICAgIHByaXZhdGUgX2hhc0hvdmVyID0gdHJ1ZTtcbiAgICBwcml2YXRlIF9oYXNHcmlkbGluZXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9oYXNSZXNpemFibGVDb2x1bW5zID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfY29sdW1uUmVzaXplTW9kZTogJ2ZpdCcgfCAnZXhwYW5kJyA9ICdleHBhbmQnO1xuXG4gICAgcHJpdmF0ZSBfaGVhZGVyQ2xhc3NOYW1lPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX3Jvd0NsYXNzTmFtZT86IHN0cmluZztcbiAgICBwcml2YXRlIF9yb3dDbGFzc05hbWVNYXBGbj86IChjbGFzc05hbWU/OiBzdHJpbmcsIGl0ZW0/OiBUKSA9PiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIF9hdXRvR2VuZXJhdGVkID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF9pc0xvY2FsaXplZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2xvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5Pzogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IobW9kZWxUeXBlOiBDbGFzc1R5cGU8VD4sIGlkUHJvcGVydHk/OiBzdHJpbmcsIHRpdGxlUHJvcGVydHk/OiBzdHJpbmcsIGkxOG5CYXNlS2V5Pzogc3RyaW5nIHwgQ2xhc3NUeXBlPHVua25vd24+KSB7XG4gICAgICAgIHRoaXMuX21vZGVsVHlwZSA9IG1vZGVsVHlwZTtcbiAgICAgICAgdGhpcy5fbW9kZWwgPSBuZXcgTW9kZWxEZXNjcmlwdG9yPFQ+KG1vZGVsVHlwZSwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSwgaTE4bkJhc2VLZXkpO1xuICAgICAgICB0aGlzLl9kYXRhS2V5UHJvcGVydHkgPSBpZFByb3BlcnR5ID8/IE1vZGVsVXRpbC5maW5kSWRBdHRyaWJ1dGUobW9kZWxUeXBlKSA/PyB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2VuZXJhdGVzIGRlc2NyaXB0b3IgYmFzZWQgb24gbW9kZWxUeXBlIGF0dHJpYnV0ZSBkZWZpbml0aW9uXG4gICAgICogQHBhcmFtIG1vZGVsVHlwZSBjbGFzcyB0eXBlXG4gICAgICogQHBhcmFtIGlkUHJvcGVydHlcbiAgICAgKiBAcGFyYW0gdGl0bGVQcm9wZXJ0eVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZnJvbTxUPihtb2RlbFR5cGU6IENsYXNzVHlwZTxUPiwgaWRQcm9wZXJ0eT86IHN0cmluZywgdGl0bGVQcm9wZXJ0eT86IHN0cmluZyk6IFRhYmxlRGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIHJldHVybiBUYWJsZURlc2NyaXB0b3IuZnJvbU1vZGVsV2l0aEF0dHJpYnV0ZXMobW9kZWxUeXBlLCBUYWJsZXZpZXdVdGlsLmdldEF0dHJpYnV0ZURlZk1hcChtb2RlbFR5cGUpLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZW5lcmF0ZXMgZGVzY3JpcHRvciBiYXNlIG9uIGdpdmVuIGF0dHJpYnV0ZSBkZWZpbml0aW9uXG4gICAgICogQHBhcmFtIG1vZGVsVHlwZSBjbGFzcyB0eXBlXG4gICAgICogQHBhcmFtIGF0dHJpYnV0ZXMgYXR0cmlidXRlcyBmcm9tIHdoaWNoIGRlc2NyaXB0b3IgaXMgZ2VuZXJhdGVkXG4gICAgICogQHBhcmFtIGlkUHJvcGVydHlcbiAgICAgKiBAcGFyYW0gdGl0bGVQcm9wZXJ0eVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZnJvbU1vZGVsV2l0aEF0dHJpYnV0ZXM8VD4obW9kZWxUeXBlOiBDbGFzc1R5cGU8VD4sIGF0dHJpYnV0ZXM6IFRhYmxldmlld0F0dHJpYnV0ZURlZltdLCBpZFByb3BlcnR5Pzogc3RyaW5nLCB0aXRsZVByb3BlcnR5Pzogc3RyaW5nKTogVGFibGVEZXNjcmlwdG9yPFQ+IHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBUYWJsZURlc2NyaXB0b3IobW9kZWxUeXBlLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5KTtcbiAgICAgICAgZGVzY3JpcHRvci5fYXV0b0dlbmVyYXRlZCA9IHRydWU7XG4gICAgICAgIGF0dHJpYnV0ZXMuZmlsdGVyKGF0dHIgPT4gIWF0dHIudHlwZS5pbmNsdWRlcygnU2V0JykgJiYgIWF0dHIudHlwZS5pbmNsdWRlcygnQXJyYXknKSkuZm9yRWFjaChhdHRyID0+IGRlc2NyaXB0b3IudXBzZXJ0Q29sdW1uRnJvbUF0dHJpYnV0ZURlZihhdHRyKSk7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsdGVyRGlzcGxheSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlckRpc3BsYXk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYWdpbmF0aW9uTW9kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhZ2luYXRpb25Nb2RlO1xuICAgIH1cblxuICAgIGdldCByb3dzUGVyUGFnZU9wdGlvbnMoKTogbnVtYmVyW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93c1BlclBhZ2VPcHRpb25zO1xuICAgIH1cblxuICAgIGdldCBkZWZhdWx0TnVtUm93cygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdE51bVJvd3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb2x1bW5zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoaWRlSGVhZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGlkZUhlYWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGFLZXlQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFLZXlQcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0RlZmF1bHRTb3J0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzRGVmYXVsdFNvcnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkZWZhdWx0U29ydFByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFNvcnRQcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRlZmF1bHRTb3J0QXNjKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFNvcnRBc2M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtb2RlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2xhc3NOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpemU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0YWJsZUZ1bGxIZWlnaHRPZmZzZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZUZ1bGxIZWlnaHRPZmZzZXQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByb3dIZWlnaHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3dIZWlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNIb3ZlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0hvdmVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzR3JpZGxpbmVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzR3JpZGxpbmVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzUmVzaXphYmxlQ29sdW1ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1Jlc2l6YWJsZUNvbHVtbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb2x1bW5SZXNpemVNb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1uUmVzaXplTW9kZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJvd0NsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd0NsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJvd0NsYXNzTmFtZU1hcEZuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93Q2xhc3NOYW1lTWFwRm47XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoZWFkZXJDbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJDbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc0xvY2FsaXplZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTG9jYWxpemVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29sdW1uKHByb3BlcnR5OiBzdHJpbmcpOiBDb2x1bW5EZXNjcmlwdG9yPHN0cmluZywgVD4gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1ucy5maW5kKGNvbCA9PiBjb2wucHJvcGVydHkgPT09IHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uRGVzY3JpcHRvcjxDVD4oY29sdW1uOiBDb2x1bW5EZXNjcmlwdG9yPENULCBUPik6IFRhYmxlRGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIHRoaXMuX2NvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uKHByb3BlcnR5OiBzdHJpbmcpOiBDb2x1bW5EZXNjcmlwdG9yPHN0cmluZywgVD4ge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBuZXcgQ29sdW1uRGVzY3JpcHRvcjxzdHJpbmcsIFQ+KHRoaXMsIHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fY29sdW1ucy5wdXNoKGNvbHVtbik7XG4gICAgICAgIHJldHVybiBjb2x1bW47XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbk51bWJlcihwcm9wZXJ0eTogc3RyaW5nLCBkaXNwbGF5Rm9ybWF0Pzogc3RyaW5nKTogQ29sdW1uRGVzY3JpcHRvcjxudW1iZXIsIFQ+IHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gbmV3IENvbHVtbkRlc2NyaXB0b3I8bnVtYmVyLCBUPih0aGlzLCBwcm9wZXJ0eSk7XG4gICAgICAgIGNvbHVtbi5hc051bWJlcihkaXNwbGF5Rm9ybWF0KTtcbiAgICAgICAgdGhpcy5fY29sdW1ucy5wdXNoKGNvbHVtbik7XG4gICAgICAgIHJldHVybiBjb2x1bW47XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbkRhdGUocHJvcGVydHk6IHN0cmluZywgZGlzcGxheUZvcm1hdD86IHN0cmluZyk6IENvbHVtbkRlc2NyaXB0b3I8RGF0ZSwgVD4ge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBuZXcgQ29sdW1uRGVzY3JpcHRvcjxEYXRlLCBUPih0aGlzLCBwcm9wZXJ0eSk7XG4gICAgICAgIGNvbHVtbi5hc0RhdGUoZGlzcGxheUZvcm1hdCk7XG4gICAgICAgIHRoaXMuX2NvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICByZXR1cm4gY29sdW1uO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRDb2x1bW5Cb29sZWFuKHByb3BlcnR5OiBzdHJpbmcsIHllcz86IHN0cmluZywgbm8/OiBzdHJpbmcsIGFzSWNvbiA9IGZhbHNlKTogQ29sdW1uRGVzY3JpcHRvcjxib29sZWFuLCBUPiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IG5ldyBDb2x1bW5EZXNjcmlwdG9yPGJvb2xlYW4sIFQ+KHRoaXMsIHByb3BlcnR5KTtcbiAgICAgICAgY29sdW1uLmFzQm9vbGVhbih5ZXMsIG5vLCBhc0ljb24pO1xuICAgICAgICB0aGlzLl9jb2x1bW5zLnB1c2goY29sdW1uKTtcbiAgICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uRW51bShwcm9wZXJ0eTogc3RyaW5nLCBlbnVtVHlwZTogRW51bVR5cGUsIG5hbWVBc1ZhbHVlID0gZmFsc2UsIHRpdGxlUGF0aD86IHN0cmluZyB8IG51bGwpOiBDb2x1bW5EZXNjcmlwdG9yPEVudW1UeXBlLCBUPiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IG5ldyBDb2x1bW5EZXNjcmlwdG9yPEVudW1UeXBlLCBUPih0aGlzLCBwcm9wZXJ0eSk7XG4gICAgICAgIGNvbHVtbi5hc0VudW0oZW51bVR5cGUsIG5hbWVBc1ZhbHVlLCB0aXRsZVBhdGgpO1xuICAgICAgICB0aGlzLl9jb2x1bW5zLnB1c2goY29sdW1uKTtcbiAgICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uQ3VzdG9tQ29tcG9uZW50KHByb3BlcnR5OiBzdHJpbmcsIGN1c3RvbUNvbXBvbmVudFR5cGU6IFR5cGU8SUNvbHVtblZhbHVlQ29tcG9uZW50PFQ+Pik6IENvbHVtbkRlc2NyaXB0b3I8YW55LCBUPiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IG5ldyBDb2x1bW5EZXNjcmlwdG9yPGFueSwgVD4odGhpcywgcHJvcGVydHkpO1xuICAgICAgICBjb2x1bW4uYXNDdXN0b21Db21wb25lbnQoY3VzdG9tQ29tcG9uZW50VHlwZSk7XG4gICAgICAgIHRoaXMuX2NvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICByZXR1cm4gY29sdW1uO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVDb2x1bW4ocHJvcGVydHk6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2x1bW5kSWR4ID0gdGhpcy5fY29sdW1ucy5maW5kSW5kZXgoYyA9PiBjLnByb3BlcnR5ID09PSBwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX2NvbHVtbnMuc3BsaWNlKGNvbHVtbmRJZHgsIDEpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmlsdGVyRGlzcGxheShmaWx0ZXJEaXNwbGF5VHlwZTogVGFibGVGaWx0ZXJEaXNwbGF5RW51bSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWx0ZXJEaXNwbGF5ID0gZmlsdGVyRGlzcGxheVR5cGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGFnaW5hdGlvbk1vZGUocGFnaW5hdGlvbk1vZGU6IFRhYmxlUGFnaW5hdGlvbk1vZGVFbnVtKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3BhZ2luYXRpb25Nb2RlID0gcGFnaW5hdGlvbk1vZGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUm93c1BlclBhZ2Uocm93czogbnVtYmVyLCBvcHRpb25zPzogQXJyYXk8bnVtYmVyPikge1xuICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5fcm93c1BlclBhZ2VPcHRpb25zID0gb3B0aW9ucztcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuX3Jvd3NQZXJQYWdlT3B0aW9ucy5pbmNsdWRlcyhyb3dzKSkge1xuICAgICAgICAgICAgdGhpcy5fZGVmYXVsdE51bVJvd3MgPSB0aGlzLl9yb3dzUGVyUGFnZU9wdGlvbnNbMF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9kZWZhdWx0TnVtUm93cyA9IHJvd3M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUaXRsZSh0aXRsZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RpdGxlID0gdGl0bGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSGlkZUhlYWRlcihoaWRlSGVhZGVyID0gdHJ1ZSkge1xuICAgICAgICB0aGlzLl9oaWRlSGVhZGVyID0gaGlkZUhlYWRlcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEYXRhS2V5UHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kYXRhS2V5UHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDb2x1bW5zUmVvcmRlcmFibGUoY29sdW1uc1Jlb3JkZXJhYmxlID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiB0aGlzLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIGNvbC53aXRoUmVvcmRlcmFibGUoY29sdW1uc1Jlb3JkZXJhYmxlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENvbHVtbnNUb2dnbGVhYmxlKGNvbHVtbnNUb2dnbGVhYmxlID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiB0aGlzLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIGNvbC53aXRoVG9nZ2xlYWJsZShjb2x1bW5zVG9nZ2xlYWJsZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEZWZhdWx0U29ydChwcm9wZXJ0eTogc3RyaW5nLCBhc2MgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hhc0RlZmF1bHRTb3J0ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fZGVmYXVsdFNvcnRQcm9wZXJ0eS5wdXNoKHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fZGVmYXVsdFNvcnRBc2MucHVzaChhc2MpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENsYXNzTmFtZShjbGFzc05hbWU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jbGFzc05hbWUgPSBjbGFzc05hbWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU2l6ZShzaXplOiBUYWJsZVNpemVFbnVtID0gVGFibGVTaXplRW51bS5Ob3JtYWwpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fc2l6ZSA9IHNpemU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGFibGVGdWxsSGVpZ2h0T2Zmc2V0KHRhYmxlRnVsbEhlaWdodE9mZnNldDogbnVtYmVyKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlRnVsbEhlaWdodE9mZnNldCA9IHRhYmxlRnVsbEhlaWdodE9mZnNldDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSb3dIZWlnaHQocm93SGVpZ2h0OiBudW1iZXIpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcm93SGVpZ2h0ID0gcm93SGVpZ2h0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEhvdmVyKGhvdmVyOiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hhc0hvdmVyID0gaG92ZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoR3JpZGxpbmVzKGdyaWRsaW5lczogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICB0aGlzLl9oYXNHcmlkbGluZXMgPSBncmlkbGluZXM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUmVzaXphYmxlQ29sdW1ucyhyZXNpemFibGVDb2x1bW5zID0gdHJ1ZSwgY29sdW1uUmVzaXplTW9kZTogJ2ZpdCcgfCAnZXhwYW5kJyA9ICdmaXQnKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hhc1Jlc2l6YWJsZUNvbHVtbnMgPSByZXNpemFibGVDb2x1bW5zO1xuICAgICAgICB0aGlzLl9jb2x1bW5SZXNpemVNb2RlID0gY29sdW1uUmVzaXplTW9kZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSb3dDbGFzc05hbWUocm93Q2xhc3NOYW1lPzogc3RyaW5nLCBjbGFzc05hbWVNYXBGbj86IChjbGFzc05hbWU/OiBzdHJpbmcsIGl0ZW0/OiBUKSA9PiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcm93Q2xhc3NOYW1lID0gcm93Q2xhc3NOYW1lO1xuICAgICAgICB0aGlzLl9yb3dDbGFzc05hbWVNYXBGbiA9IGNsYXNzTmFtZU1hcEZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEhlYWRlckNsYXNzTmFtZShoZWFkZXJDbGFzc05hbWU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9oZWFkZXJDbGFzc05hbWUgPSBoZWFkZXJDbGFzc05hbWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTG9jYWxpemVkKCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc0xvY2FsaXplZCA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHkobG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHk6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc0xvY2FsaXplZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX2xvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5ID0gbG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb3B5RmllbGRzVG8ob2JqOiBUYWJsZURlc2NyaXB0b3I8VD4pIHtcbiAgICAgICAgb2JqLl90aXRsZSA9IHRoaXMuX3RpdGxlO1xuICAgICAgICBvYmouX2hpZGVIZWFkZXIgPSB0aGlzLl9oaWRlSGVhZGVyO1xuICAgICAgICBvYmouX2RhdGFLZXlQcm9wZXJ0eSA9IHRoaXMuX2RhdGFLZXlQcm9wZXJ0eTtcbiAgICAgICAgb2JqLl9oYXNEZWZhdWx0U29ydCA9IHRoaXMuX2hhc0RlZmF1bHRTb3J0O1xuICAgICAgICBvYmouX2RlZmF1bHRTb3J0UHJvcGVydHkgPSB0aGlzLl9kZWZhdWx0U29ydFByb3BlcnR5Lm1hcChwID0+IHApO1xuICAgICAgICBvYmouX2RlZmF1bHRTb3J0QXNjID0gdGhpcy5fZGVmYXVsdFNvcnRBc2MubWFwKHAgPT4gcCk7XG4gICAgICAgIG9iai5fZmlsdGVyRGlzcGxheSA9IHRoaXMuX2ZpbHRlckRpc3BsYXk7XG4gICAgICAgIG9iai5fY2xhc3NOYW1lID0gdGhpcy5fY2xhc3NOYW1lO1xuICAgICAgICBvYmouX3NpemUgPSB0aGlzLl9zaXplO1xuICAgICAgICBvYmouX3RhYmxlRnVsbEhlaWdodE9mZnNldCA9IHRoaXMuX3RhYmxlRnVsbEhlaWdodE9mZnNldDtcbiAgICAgICAgb2JqLl9yb3dIZWlnaHQgPSB0aGlzLl9yb3dIZWlnaHQ7XG4gICAgICAgIG9iai5faGFzSG92ZXIgPSB0aGlzLl9oYXNIb3ZlcjtcbiAgICAgICAgb2JqLl9oYXNHcmlkbGluZXMgPSB0aGlzLl9oYXNHcmlkbGluZXM7XG4gICAgICAgIG9iai5faGFzUmVzaXphYmxlQ29sdW1ucyA9IHRoaXMuX2hhc1Jlc2l6YWJsZUNvbHVtbnM7XG4gICAgICAgIG9iai5fY29sdW1uUmVzaXplTW9kZSA9IHRoaXMuX2NvbHVtblJlc2l6ZU1vZGU7XG4gICAgICAgIG9iai5faXNMb2NhbGl6ZWQgPSB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICAgICAgb2JqLl9sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eSA9IHRoaXMuX2xvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IFRhYmxlRGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgVGFibGVEZXNjcmlwdG9yKHRoaXMubW9kZWwudHlwZSwgdGhpcy5tb2RlbC5pZFByb3BlcnR5TmFtZSwgdGhpcy5tb2RlbC50aXRsZVByb3BlcnR5TmFtZSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICBkZXNjcmlwdG9yLl9jb2x1bW5zID0gdGhpcy5jb2x1bW5zLm1hcChjID0+IGMuY29weSgpKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2VuZXJhdGVzIGNvbHVtbiBiYXNlZCBvbiBhdHRyaWJ1dGVzXG4gICAgICogQHBhcmFtIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgbWFwXG4gICAgICogQHBhcmFtIGNvbHVtbiBpZiBwcm92aWRlZCwgcmVwbGFjZWQgYnkgbmV3LCBvdGhlcndpc2UgbmV3IGlzIGNyZWF0ZWRcbiAgICAgKiBAcGFyYW0gYXJncyBhZGRpdGlvbmFsIHBhcmFtZXRlcnNcbiAgICAgKi9cbiAgICBwcml2YXRlIHVwc2VydENvbHVtbkZyb21BdHRyaWJ1dGVEZWYoYXR0cmlidXRlOiBUYWJsZXZpZXdBdHRyaWJ1dGVEZWYsIGNvbHVtbj86IENvbHVtbkRlc2NyaXB0b3I8c3RyaW5nLCBUPiwgLi4uYXJnczogYW55W10pOiBDb2x1bW5EZXNjcmlwdG9yPHN0cmluZywgVD4ge1xuICAgICAgICBpZiAoY29sdW1uID09IG51bGwpIHtcbiAgICAgICAgICAgIGNvbHVtbiA9IHRoaXMuYWRkQ29sdW1uKGF0dHJpYnV0ZS5uYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhdHRyaWJ1dGUuY29sdW1uVHlwZSA9PT0gQ29sdW1uVHlwZUVudW0uRW51bSAmJiBhcmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgYXJncyA9IFthdHRyaWJ1dGUuZW51bVR5cGVdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29sdW1uID0gY29sdW1uLmFzVHlwZShhdHRyaWJ1dGUuY29sdW1uVHlwZSwgYXR0cmlidXRlLmNvbHVtbkRpc3BsYXlUeXBlLCAuLi5hcmdzKTtcbiAgICAgICAgaWYgKGF0dHJpYnV0ZS5jbGFzc1R5cGUpIHtcbiAgICAgICAgICAgIGNvbHVtbi53aXRoT2JqZWN0UHJvcGVydHkoYXR0cmlidXRlLmNsYXNzVHlwZSkud2l0aFNvcnQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbHVtbi53aXRoU29ydCgpLndpdGhGaWx0ZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb2x1bW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZGVmaW5lcyBtb2RpZmllZCB0eXBlIG9mIGNvbHVtblxuICAgICAqIERPIE5PVCBVU0Ugd2l0aCBlbnVtICh1c2Ugd2l0aEN1c3RvbUVudW1UeXBlKVxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBjb2x1bW4gbmFtZVxuICAgICAqIEBwYXJhbSBjb2x1bW5UeXBlIG1vZGlmaWVkIHR5cGVcbiAgICAgKiBAcGFyYW0gYXJncyBhZGRpdGlvbmFsIGF0dHJpYnV0ZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aENvbHVtbk1vZGlmaWVkVHlwZShwcm9wZXJ0eTogc3RyaW5nLCBjb2x1bW5UeXBlPzogQ29sdW1uVHlwZUVudW0sIGNvbHVtbkRpc3BsYXlUeXBlPzogQ29sdW1uRGlzcGxheVR5cGVFbnVtLCAuLi5hcmdzOiBhbnlbXSk6IHRoaXMge1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVEZWYgPSBUYWJsZXZpZXdVdGlsLmdldEF0dHJpYnV0ZURlZk1hcCh0aGlzLl9tb2RlbFR5cGUpLmZpbmQoYXRyaWJ1dGUgPT4gYXRyaWJ1dGUubmFtZSA9PT0gcHJvcGVydHkpO1xuXG4gICAgICAgIGlmIChhdHRyaWJ1dGVEZWYgIT0gbnVsbCkge1xuICAgICAgICAgICAgYXR0cmlidXRlRGVmLmNvbHVtblR5cGUgPSBjb2x1bW5UeXBlID8/IGF0dHJpYnV0ZURlZi5jb2x1bW5UeXBlO1xuICAgICAgICAgICAgYXR0cmlidXRlRGVmLmNvbHVtbkRpc3BsYXlUeXBlID0gY29sdW1uRGlzcGxheVR5cGUgPz8gYXR0cmlidXRlRGVmLmNvbHVtbkRpc3BsYXlUeXBlO1xuICAgICAgICAgICAgdGhpcy51cHNlcnRDb2x1bW5Gcm9tQXR0cmlidXRlRGVmKFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZURlZixcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnMuZmluZChjb2wgPT4gY29sLnByb3BlcnR5ID09PSBhdHRyaWJ1dGVEZWYubmFtZSksXG4gICAgICAgICAgICAgICAgLi4uYXJnc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRlZmluZXMgY3VzdG9tIGVudW0gdHlwZSBmb3IgY29sdW1uXG4gICAgICogQHBhcmFtIHByb3BlcnR5IGNvbHVtbiBuYW1lXG4gICAgICogQHBhcmFtIGVudW1UeXBlXG4gICAgICovXG4gICAgcHVibGljIHdpdGhDb2x1bW5Nb2RpZmllZEVudW0ocHJvcGVydHk6IHN0cmluZywgZW51bVR5cGU/OiBFbnVtVHlwZSk6IHRoaXMge1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVEZWYgPSBUYWJsZXZpZXdVdGlsLmdldEF0dHJpYnV0ZURlZk1hcCh0aGlzLl9tb2RlbFR5cGUpLmZpbmQoYXRyaWJ1dGUgPT4gYXRyaWJ1dGUubmFtZSA9PT0gcHJvcGVydHkpO1xuXG4gICAgICAgIGlmIChhdHRyaWJ1dGVEZWYgIT0gbnVsbCkge1xuICAgICAgICAgICAgYXR0cmlidXRlRGVmLmNvbHVtblR5cGUgPSBDb2x1bW5UeXBlRW51bS5FbnVtO1xuICAgICAgICAgICAgdGhpcy51cHNlcnRDb2x1bW5Gcm9tQXR0cmlidXRlRGVmKFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZURlZixcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnMuZmluZChjb2wgPT4gY29sLnByb3BlcnR5ID09PSBwcm9wZXJ0eSksXG4gICAgICAgICAgICAgICAgZW51bVR5cGUgPz8gKE9iamVjdFNlcmlhbGl6ZXIuZ2V0KCkuZmluZEVudW0oYXR0cmlidXRlRGVmLnR5cGUpIGFzIEVudW1UeXBlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIG1vZGlmaWVzIGNvbHVtbiB3aXRoIGNsYXNzIGFuZCBsb29rdXAgcHJvdmlkZXJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgY29sdW1uIG5hbWVcbiAgICAgKiBAcGFyYW0gbG9va3VwUHJvdmlkZXIgbG9va3VwUHJvdmlkZXIgZm9yIGNsYXNzXG4gICAgICogQHBhcmFtIGl0ZW1zTGFiZWxQcm9wZXJ0eVxuICAgICAqIEBwYXJhbSBmaWx0ZXJQcm9wZXJ0eVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQ29sdW1uTW9kaWZpZWRMb29rdXAocHJvcGVydHk6IHN0cmluZywgbG9va3VwUHJvdmlkZXI6IElMb29rdXBEYXRhUHJvdmlkZXI8YW55LCBhbnk+LCBpdGVtc0xhYmVsUHJvcGVydHk/OiBzdHJpbmcsIGZpbHRlclByb3BlcnR5Pzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKGNvbCA9PiBjb2wucHJvcGVydHkgPT09IHByb3BlcnR5KTtcbiAgICAgICAgaWYgKGNvbHVtbikge1xuICAgICAgICAgICAgY29sdW1uLndpdGhGaWx0ZXJMb29rdXAoKS53aXRoTG9va3VwRGF0YVByb3ZpZGVyKGxvb2t1cFByb3ZpZGVyKTtcbiAgICAgICAgICAgIGlmIChjb2x1bW4gaW5zdGFuY2VvZiBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW1zTGFiZWxQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgICAgICAoY29sdW1uIGFzIEZpbHRlckxvb2t1cERlc2NyaXB0b3I8VD4pLndpdGhJdGVtc0xhYmVsUHJvcGVydHkoaXRlbXNMYWJlbFByb3BlcnR5KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyUHJvcGVydHkpIHtcbiAgICAgICAgICAgICAgICAgICAgKGNvbHVtbiBhcyBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yPFQ+KS53aXRoRmlsdGVyUHJvcGVydHkoZmlsdGVyUHJvcGVydHkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjYWxsZWQgb24gZGF0YSByZWNlaXZlZCB0byBjdXN0b21pemUgU3RyaW5nIHByb3BlcnRpZXMgd2l0aCBlaXRoZXIgRGF0YSBvciBOdW1iZXIgdHlwZVxuICAgICAqIEBwYXJhbSBkYXRhIGFwaSByZXNwb25zZVxuICAgICAqL1xuICAgIC8vIHB1YmxpYyBvbkRhdGFSZWNlaXZlZFR5cGVCdWlsZGluZyhkYXRhOiBNZWRpdXNRdWVyeVJlc3VsdDxUPik6IHRoaXMge1xuICAgIC8vICAgICBpZiAoIXRoaXMuX2F1dG9HZW5lcmF0ZWQpIHtcbiAgICAvLyAgICAgICAgIHJldHVybiB0aGlzO1xuICAgIC8vICAgICB9IGVsc2UgaWYgKGRhdGEucGFnZURhdGEgPT0gbnVsbCB8fCBkYXRhLnBhZ2VEYXRhLmxlbmd0aCA9PSAwKSB7XG4gICAgLy8gICAgICAgICB0aHJvdyBFcnJvcignUGFnZURhdGEgaXMgZW1wdHksIGNhbm5vdCBnZW5lcmF0ZSBkZXNjcmlwdG9yJyk7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgY29uc3Qgb2JqZWN0TW9kZWwgPSBkYXRhLnBhZ2VEYXRhWzBdO1xuICAgIC8vICAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMob2JqZWN0TW9kZWwpO1xuICAgIC8vXG4gICAgLy8gICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGVudHJpZXMpIHtcbiAgICAvLyAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IFRhYmxldmlld1V0aWwuZ2V0QXR0cmlidXRlRGVmTWFwKHRoaXMuX21vZGVsVHlwZSkuZmluZChhID0+IGEubmFtZSA9PT0ga2V5KTtcbiAgICAvLyAgICAgICAgIGlmIChhdHRyaWJ1dGUgJiYgYXR0cmlidXRlLmNvbHVtblR5cGUgPT09IENvbHVtblR5cGVFbnVtLlN0cmluZykge1xuICAgIC8vICAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKGNvbCA9PiBjb2wucHJvcGVydHkgPT09IGF0dHJpYnV0ZS5uYW1lKTtcbiAgICAvL1xuICAgIC8vICAgICAgICAgICAgIGlmIChjb2x1bW4pIHtcbiAgICAvLyAgICAgICAgICAgICAgICAgVGFibGV2aWV3VXRpbC5zdHJpbmdDb2x1bW5Db252ZXJ0ZXIoY29sdW1uLCB2YWx1ZSk7XG4gICAgLy8gICAgICAgICAgICAgfVxuICAgIC8vICAgICAgICAgfVxuICAgIC8vICAgICB9XG4gICAgLy9cbiAgICAvLyAgICAgcmV0dXJuIHRoaXM7XG4gICAgLy8gfVxufVxuXG5leHBvcnQgY2xhc3MgVGFibGVEeW5hbWljRGVzY3JpcHRvciBleHRlbmRzIFRhYmxlRGVzY3JpcHRvcjxhbnk+IHtcbiAgICBwcml2YXRlIF9leGNsdWRlZENvbHVtbnM6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICBwcml2YXRlIF9maWx0ZXJDb2x1bW5zOiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgcHJpdmF0ZSBfc29ydENvbHVtbnM6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICBwcml2YXRlIF9zb3J0Q29sdW1uTW9kZSA9IFRhYmxlRHluYW1pY0NvbHVtbnNNb2RlRW51bS5FWENMVURFO1xuICAgIHByaXZhdGUgX2ZpbHRlckNvbHVtbk1vZGUgPSBUYWJsZUR5bmFtaWNDb2x1bW5zTW9kZUVudW0uRVhDTFVERTtcblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBfY29sdW1uczogQ29sdW1uRHluYW1pY0Rlc2NyaXB0b3JbXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoaWRQcm9wZXJ0eT86IHN0cmluZywgdGl0bGVQcm9wZXJ0eT86IHN0cmluZykge1xuICAgICAgICBzdXBlcih7fSBhcyBDbGFzc1R5cGU8YW55PiwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMud2l0aFRpdGxlKCdEeW5hbWljIHRhYmxlJyk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCBjb2x1bW5zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1ucztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBkZWZpbmVzIGV4Y2x1ZGVkIGNvbHVtbnMgd2hlbiBnZW5lcmF0aW5nIGRlc2NyaXB0b3JcbiAgICAgKiBAcGFyYW0gZXhjbHVkZWRDb2x1bW4gbmFtZXMgb2YgZXhjbHVkZWQgY29sdW1uc1xuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQ29sdW1uc0V4Y2x1ZGVkKGV4Y2x1ZGVkQ29sdW1uOiBzdHJpbmdbXSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9leGNsdWRlZENvbHVtbnMgPSBleGNsdWRlZENvbHVtbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZGVmaW5lcyBjb2x1bW4gcHJvcGVydGllcyBvbiB3aGljaCBzb3J0IGlzIGRlZmluZWQgb3Igbm90IGRlcGVuZGluZyBvbiBzb3J0Q29sdW1uTW9kZVxuICAgICAqIEBwYXJhbSBzb3J0T25Db2x1bW5zIGNvbHVtbiBuYW1lc1xuICAgICAqIEBwYXJhbSBzb3J0Q29sdW1uTW9kZSBJTkNMVURFX09OTFkgKGRlZmF1bHQpIG9ubHkgZ2l2ZW4gY29sdW1ucyB3aWxsIGhhdmUgc29ydCwgRVhDTFVERSBnaXZlbiBjb2x1bW5zIHdpbGwgTk9UIGhhdmUgc29ydFxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQ29sdW1uc1NvcnQoc29ydE9uQ29sdW1uczogc3RyaW5nW10sIHNvcnRDb2x1bW5Nb2RlID0gVGFibGVEeW5hbWljQ29sdW1uc01vZGVFbnVtLklOQ0xVREVfT05MWSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9zb3J0Q29sdW1uTW9kZSA9IHNvcnRDb2x1bW5Nb2RlO1xuICAgICAgICB0aGlzLl9zb3J0Q29sdW1ucyA9IHNvcnRPbkNvbHVtbnM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRlZmluZXMgY29sdW1uIHByb3BlcnRpZXMgb24gd2hpY2ggZmlsdGVyIGlzIGRlZmluZWQgb3Igbm90IGRlcGVuZGluZyBvbiBmaWx0ZXJDb2x1bW5Nb2RlXG4gICAgICogQHBhcmFtIGZpbHRlck9uQ29sdW1uIGNvbHVtbiBuYW1lc1xuICAgICAqIEBwYXJhbSBmaWx0ZXJDb2x1bW5Nb2RlIElOQ0xVREVfT05MWSAoZGVmYXVsdCkgb25seSBnaXZlbiBjb2x1bW5zIHdpbGwgaGF2ZSBmaWx0ZXIsIEVYQ0xVREUgZ2l2ZW4gY29sdW1ucyB3aWxsIE5PVCBoYXZlIGZpbHRlclxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQ29sdW1uc0ZpbHRlcihmaWx0ZXJPbkNvbHVtbjogc3RyaW5nW10sIGZpbHRlckNvbHVtbk1vZGUgPSBUYWJsZUR5bmFtaWNDb2x1bW5zTW9kZUVudW0uSU5DTFVERV9PTkxZKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZpbHRlckNvbHVtbk1vZGUgPSBmaWx0ZXJDb2x1bW5Nb2RlO1xuICAgICAgICB0aGlzLl9maWx0ZXJDb2x1bW5zID0gZmlsdGVyT25Db2x1bW47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgZ2l2ZW4gdHlwZSB0byBjb2x1bW4gd2l0aCBnaXZlbiBwcm9wZXJ0eSBhbmQgcmV0dXJucyB0aGlzIHRhYmxlXG4gICAgICogQHBhcmFtIHByb3BlcnR5IGNvbHVtbidzIHByb3BlcnR5XG4gICAgICogQHBhcmFtIHR5cGUgY3VzdG9tIHR5cGUgZm9yIGNvbHVtblxuICAgICAqIEBwYXJhbSBhcmdzIGFkZGl0aW9uIGFyZ3VtZW50cyBmb3IgY29sdW1uXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIHdpdGhDb2x1bW5Nb2RpZmllZFR5cGUocHJvcGVydHk6IHN0cmluZywgdHlwZTogQ29sdW1uVHlwZUVudW0sIGRpc3BsYXlUeXBlPzogQ29sdW1uRGlzcGxheVR5cGVFbnVtLCAuLi5hcmdzOiBhbnlbXSk6IHRoaXMge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLl9jb2x1bW5zLmZpbmQoY29sID0+IHByb3BlcnR5ID09PSBjb2wucHJvcGVydHkpID8/IHRoaXMuYWRkQ29sdW1uKHByb3BlcnR5KS53aXRoVGl0bGUocHJvcGVydHkpO1xuICAgICAgICBpZiAoY29sdW1uKSB7XG4gICAgICAgICAgICBjb2x1bW4uYXNUeXBlKHR5cGUsIGRpc3BsYXlUeXBlLCAuLi5hcmdzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIHRpdGxlIHRvIGNvbHVtbiB3aXRoIGdpdmVuIHByb3BlcnR5IGFuZCByZXR1cm5zIHRoaXMgdGFibGVcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgY29sdW1uJ3MgcHJvcGVydHlcbiAgICAgKiBAcGFyYW0gdGl0bGUgY29sdW1uJ3MgdGl0bGVcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aENvbHVtblRpdGxlKHByb3BlcnR5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5fY29sdW1ucy5maW5kKGNvbCA9PiBwcm9wZXJ0eSA9PT0gY29sLnByb3BlcnR5KSA/PyB0aGlzLmFkZENvbHVtbihwcm9wZXJ0eSk7XG4gICAgICAgIGNvbHVtbi53aXRoVGl0bGUodGl0bGUsIHRydWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZW5lcmF0ZXMgY29sdW1ucyBkZWZpbmVkIG9uIHRhYmxlIGJhc2VkIG9uIGRhdGEgZmV0Y2hlZCBmcm9tIGFwaVxuICAgICAqIEBwYXJhbSBkYXRhIGRhdGEgZnJvbSBhcGlcbiAgICAgKi9cbiAgICBwdWJsaWMgdG9UYWJsZURlc2NyaXB0b3JGcm9tRGF0YShkYXRhOiBNZWRpdXNRdWVyeVJlc3VsdDxhbnk+KTogVGFibGVEZXNjcmlwdG9yPGFueT4ge1xuICAgICAgICBjb25zdCB0YWJsZURlc2NyaXB0b3IgPSB0aGlzLnRvVGFibGVEZXNjcmlwdG9yKCk7XG5cbiAgICAgICAgaWYgKGRhdGEucGFnZURhdGEgPT0gbnVsbCB8fCBkYXRhLnBhZ2VEYXRhLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFibGVEZXNjcmlwdG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb2JqZWN0TW9kZWwgPSBkYXRhLnBhZ2VEYXRhWzBdO1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMob2JqZWN0TW9kZWwpXG4gICAgICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gIXRoaXMuX2V4Y2x1ZGVkQ29sdW1ucy5pbmNsdWRlcyhrZXkpKVxuICAgICAgICAgICAgLmZpbHRlcigoWywgdmFsdWVdKSA9PiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpOyAvL2V4Y2x1ZGUgYXJyYXlzIGFuZCBzZXRzXG5cbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgZW50cmllcykge1xuICAgICAgICAgICAgY29uc3QgbWV0YUNvbHVtbiA9IHRoaXMuX2NvbHVtbnMuZmluZChjb2wgPT4gY29sLnByb3BlcnR5ID09PSBrZXkpO1xuICAgICAgICAgICAgbGV0IGNvbHVtbjogQ29sdW1uRGVzY3JpcHRvcjxhbnksIGFueT47XG4gICAgICAgICAgICBpZiAobWV0YUNvbHVtbikge1xuICAgICAgICAgICAgICAgIGlmICghbWV0YUNvbHVtbi52aXNpYmlsaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb2x1bW4gPSBtZXRhQ29sdW1uLnRvQ29sdW1uRGVzY3JpcHRvcih0YWJsZURlc2NyaXB0b3IpO1xuICAgICAgICAgICAgICAgIHRhYmxlRGVzY3JpcHRvci5hZGRDb2x1bW5EZXNjcmlwdG9yKGNvbHVtbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbHVtbiA9IHRhYmxlRGVzY3JpcHRvci5hZGRDb2x1bW4oa2V5KS53aXRoVGl0bGUoa2V5KTtcbiAgICAgICAgICAgICAgICBUYWJsZXZpZXdVdGlsLnN0cmluZ0NvbHVtbkNvbnZlcnRlcihjb2x1bW4sIHZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZWxlbWVudE9mU29ydENvbHVtbnMgPSB0aGlzLl9zb3J0Q29sdW1ucy5pbmNsdWRlcyhjb2x1bW4ucHJvcGVydHkpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICh0aGlzLl9zb3J0Q29sdW1uTW9kZSA9PT0gVGFibGVEeW5hbWljQ29sdW1uc01vZGVFbnVtLkVYQ0xVREUgJiYgIWVsZW1lbnRPZlNvcnRDb2x1bW5zKSB8fFxuICAgICAgICAgICAgICAgICh0aGlzLl9zb3J0Q29sdW1uTW9kZSA9PT0gVGFibGVEeW5hbWljQ29sdW1uc01vZGVFbnVtLklOQ0xVREVfT05MWSAmJiBlbGVtZW50T2ZTb3J0Q29sdW1ucylcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGNvbHVtbi53aXRoU29ydCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50T2ZGaWx0ZXJDb2x1bW5zID0gdGhpcy5fZmlsdGVyQ29sdW1ucy5pbmNsdWRlcyhjb2x1bW4ucHJvcGVydHkpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICh0aGlzLl9maWx0ZXJDb2x1bW5Nb2RlID09PSBUYWJsZUR5bmFtaWNDb2x1bW5zTW9kZUVudW0uRVhDTFVERSAmJiAhZWxlbWVudE9mRmlsdGVyQ29sdW1ucykgfHxcbiAgICAgICAgICAgICAgICAodGhpcy5fZmlsdGVyQ29sdW1uTW9kZSA9PT0gVGFibGVEeW5hbWljQ29sdW1uc01vZGVFbnVtLklOQ0xVREVfT05MWSAmJiBlbGVtZW50T2ZGaWx0ZXJDb2x1bW5zKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLndpdGhGaWx0ZXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YWJsZURlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYWRkcyBDb2x1bW5EeW5hbWljRGVzY3JpcHRvciB0byB0aGlzIHRhYmxlXG4gICAgICogQHBhcmFtIHByb3BlcnR5IGNvbHVtbidzIHByb3BlcnR5XG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGFkZENvbHVtbihwcm9wZXJ0eTogc3RyaW5nKTogQ29sdW1uRHluYW1pY0Rlc2NyaXB0b3Ige1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBuZXcgQ29sdW1uRHluYW1pY0Rlc2NyaXB0b3IodGhpcywgcHJvcGVydHkpO1xuICAgICAgICB0aGlzLl9jb2x1bW5zLnB1c2goY29sdW1uKTtcbiAgICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVtb3ZlQ29sdW1uKHByb3BlcnR5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoY29sID0+IGNvbC5wcm9wZXJ0eSA9PT0gcHJvcGVydHkpID8/IHRoaXMuYWRkQ29sdW1uKHByb3BlcnR5KTtcbiAgICAgICAgY29sdW1uLndpdGhWaXNpYmlsaXR5KGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBkZWVwIGNvcHkgb2YgdGFibGUgZHluYW1pYyBkZXNjcmlwdG9yXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGNvcHkoKTogVGFibGVEeW5hbWljRGVzY3JpcHRvciB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgVGFibGVEeW5hbWljRGVzY3JpcHRvcih0aGlzLm1vZGVsLmlkUHJvcGVydHlOYW1lLCB0aGlzLm1vZGVsLnRpdGxlUHJvcGVydHlOYW1lKTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZGVzY3JpcHRvcik7XG4gICAgICAgIGRlc2NyaXB0b3IuX2NvbHVtbnMgPSB0aGlzLmNvbHVtbnMubWFwKGMgPT4gYy5jb3B5KCkpO1xuICAgICAgICBkZXNjcmlwdG9yLl9leGNsdWRlZENvbHVtbnMgPSBbLi4udGhpcy5fZXhjbHVkZWRDb2x1bW5zXTtcbiAgICAgICAgZGVzY3JpcHRvci5fZmlsdGVyQ29sdW1ucyA9IFsuLi50aGlzLl9maWx0ZXJDb2x1bW5zXTtcbiAgICAgICAgZGVzY3JpcHRvci5fc29ydENvbHVtbnMgPSBbLi4udGhpcy5fc29ydENvbHVtbnNdO1xuICAgICAgICBkZXNjcmlwdG9yLl9maWx0ZXJDb2x1bW5Nb2RlID0gdGhpcy5fZmlsdGVyQ29sdW1uTW9kZTtcbiAgICAgICAgZGVzY3JpcHRvci5fc29ydENvbHVtbk1vZGUgPSB0aGlzLl9zb3J0Q29sdW1uTW9kZTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIHRvVGFibGVEZXNjcmlwdG9yKCk6IFRhYmxlRGVzY3JpcHRvcjxhbnk+IHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBUYWJsZURlc2NyaXB0b3I8YW55Pih7fSBhcyBDbGFzc1R5cGU8YW55PiwgdGhpcy5tb2RlbC5pZFByb3BlcnR5TmFtZSwgdGhpcy5tb2RlbC50aXRsZVByb3BlcnR5TmFtZSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG59XG4iXX0=
@@ -7,6 +7,9 @@ export var TablePaginationModeEnum;
7
7
  export var TableFilterDisplayEnum;
8
8
  (function (TableFilterDisplayEnum) {
9
9
  TableFilterDisplayEnum[TableFilterDisplayEnum["Row"] = 0] = "Row";
10
+ /**
11
+ * @deprecated won't be supported anymore
12
+ */
10
13
  TableFilterDisplayEnum[TableFilterDisplayEnum["Menu"] = 1] = "Menu";
11
14
  })(TableFilterDisplayEnum || (TableFilterDisplayEnum = {}));
12
15
  export var TableSizeEnum;
@@ -24,4 +27,4 @@ export var TableDynamicColumnsModeEnum;
24
27
  TableDynamicColumnsModeEnum[TableDynamicColumnsModeEnum["EXCLUDE"] = 0] = "EXCLUDE";
25
28
  TableDynamicColumnsModeEnum[TableDynamicColumnsModeEnum["INCLUDE_ONLY"] = 1] = "INCLUDE_ONLY";
26
29
  })(TableDynamicColumnsModeEnum || (TableDynamicColumnsModeEnum = {}));
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGVzY3JpcHRvcnMvdHlwZXMvdGFibGUudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSx1QkFJWDtBQUpELFdBQVksdUJBQXVCO0lBQy9CLGlGQUFVLENBQUE7SUFDVix5RkFBYyxDQUFBO0lBQ2QscUVBQUksQ0FBQTtBQUNSLENBQUMsRUFKVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBSWxDO0FBRUQsTUFBTSxDQUFOLElBQVksc0JBR1g7QUFIRCxXQUFZLHNCQUFzQjtJQUM5QixpRUFBRyxDQUFBO0lBQ0gsbUVBQUksQ0FBQTtBQUNSLENBQUMsRUFIVyxzQkFBc0IsS0FBdEIsc0JBQXNCLFFBR2pDO0FBRUQsTUFBTSxDQUFOLElBQVksYUFJWDtBQUpELFdBQVksYUFBYTtJQUNyQixtREFBSyxDQUFBO0lBQ0wscURBQU0sQ0FBQTtJQUNOLG1EQUFLLENBQUE7QUFDVCxDQUFDLEVBSlcsYUFBYSxLQUFiLGFBQWEsUUFJeEI7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLENBQU4sSUFBWSwyQkFHWDtBQUhELFdBQVksMkJBQTJCO0lBQ25DLG1GQUFPLENBQUE7SUFDUCw2RkFBWSxDQUFBO0FBQ2hCLENBQUMsRUFIVywyQkFBMkIsS0FBM0IsMkJBQTJCLFFBR3RDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gVGFibGVQYWdpbmF0aW9uTW9kZUVudW0ge1xuICAgIFBhZ2luYXRpb24sXG4gICAgSW5maW5pdGVTY3JvbGwsXG4gICAgTm9uZVxufVxuXG5leHBvcnQgZW51bSBUYWJsZUZpbHRlckRpc3BsYXlFbnVtIHtcbiAgICBSb3csXG4gICAgTWVudVxufVxuXG5leHBvcnQgZW51bSBUYWJsZVNpemVFbnVtIHtcbiAgICBTbWFsbCxcbiAgICBOb3JtYWwsXG4gICAgTGFyZ2Vcbn1cblxuLyoqXG4gKiBFWENMVURFIGRlZmF1bHQsIGFsbCBjb2x1bW5zIGhhcyBzb3J0IGFuZCBmaWx0ZXIgb24gYnkgZGVmYXVsdCwgZGV2ZWxvcGVyIEVYQ0xVREVTIHByb3BlcnRpZXMgZnJvbSBzb3J0L2ZpbHRlclxuICogSU5DTFVERV9PTkxZIG9ubHkgc2VsZWN0ZWQgY29sdW1ucyBoYXZlIHNvcnQvZmlsdGVyLCBkZXZlbG9wZXJzIElOQ0xVREVTIHByb3BlcnRpZXNcbiAqL1xuZXhwb3J0IGVudW0gVGFibGVEeW5hbWljQ29sdW1uc01vZGVFbnVtIHtcbiAgICBFWENMVURFLFxuICAgIElOQ0xVREVfT05MWVxufVxuIl19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGVzY3JpcHRvcnMvdHlwZXMvdGFibGUudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSx1QkFJWDtBQUpELFdBQVksdUJBQXVCO0lBQy9CLGlGQUFVLENBQUE7SUFDVix5RkFBYyxDQUFBO0lBQ2QscUVBQUksQ0FBQTtBQUNSLENBQUMsRUFKVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBSWxDO0FBRUQsTUFBTSxDQUFOLElBQVksc0JBTVg7QUFORCxXQUFZLHNCQUFzQjtJQUM5QixpRUFBRyxDQUFBO0lBQ0g7O09BRUc7SUFDSCxtRUFBSSxDQUFBO0FBQ1IsQ0FBQyxFQU5XLHNCQUFzQixLQUF0QixzQkFBc0IsUUFNakM7QUFFRCxNQUFNLENBQU4sSUFBWSxhQUlYO0FBSkQsV0FBWSxhQUFhO0lBQ3JCLG1EQUFLLENBQUE7SUFDTCxxREFBTSxDQUFBO0lBQ04sbURBQUssQ0FBQTtBQUNULENBQUMsRUFKVyxhQUFhLEtBQWIsYUFBYSxRQUl4QjtBQUVEOzs7R0FHRztBQUNILE1BQU0sQ0FBTixJQUFZLDJCQUdYO0FBSEQsV0FBWSwyQkFBMkI7SUFDbkMsbUZBQU8sQ0FBQTtJQUNQLDZGQUFZLENBQUE7QUFDaEIsQ0FBQyxFQUhXLDJCQUEyQixLQUEzQiwyQkFBMkIsUUFHdEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBUYWJsZVBhZ2luYXRpb25Nb2RlRW51bSB7XG4gICAgUGFnaW5hdGlvbixcbiAgICBJbmZpbml0ZVNjcm9sbCxcbiAgICBOb25lXG59XG5cbmV4cG9ydCBlbnVtIFRhYmxlRmlsdGVyRGlzcGxheUVudW0ge1xuICAgIFJvdyxcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCB3b24ndCBiZSBzdXBwb3J0ZWQgYW55bW9yZVxuICAgICAqL1xuICAgIE1lbnVcbn1cblxuZXhwb3J0IGVudW0gVGFibGVTaXplRW51bSB7XG4gICAgU21hbGwsXG4gICAgTm9ybWFsLFxuICAgIExhcmdlXG59XG5cbi8qKlxuICogRVhDTFVERSBkZWZhdWx0LCBhbGwgY29sdW1ucyBoYXMgc29ydCBhbmQgZmlsdGVyIG9uIGJ5IGRlZmF1bHQsIGRldmVsb3BlciBFWENMVURFUyBwcm9wZXJ0aWVzIGZyb20gc29ydC9maWx0ZXJcbiAqIElOQ0xVREVfT05MWSBvbmx5IHNlbGVjdGVkIGNvbHVtbnMgaGF2ZSBzb3J0L2ZpbHRlciwgZGV2ZWxvcGVycyBJTkNMVURFUyBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBlbnVtIFRhYmxlRHluYW1pY0NvbHVtbnNNb2RlRW51bSB7XG4gICAgRVhDTFVERSxcbiAgICBJTkNMVURFX09OTFlcbn1cbiJdfQ==