@pepperi-addons/ngx-lib 0.3.9-beta.7 → 0.3.9

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 (109) hide show
  1. package/bundles/pepperi-addons-ngx-lib-date.umd.js +11 -3
  2. package/bundles/pepperi-addons-ngx-lib-date.umd.js.map +1 -1
  3. package/bundles/pepperi-addons-ngx-lib-draggable-items.umd.js +4 -2
  4. package/bundles/pepperi-addons-ngx-lib-draggable-items.umd.js.map +1 -1
  5. package/bundles/pepperi-addons-ngx-lib-files-uploader.umd.js +14 -3
  6. package/bundles/pepperi-addons-ngx-lib-files-uploader.umd.js.map +1 -1
  7. package/bundles/pepperi-addons-ngx-lib-form.umd.js +17 -8
  8. package/bundles/pepperi-addons-ngx-lib-form.umd.js.map +1 -1
  9. package/bundles/pepperi-addons-ngx-lib-icon.umd.js +40 -14
  10. package/bundles/pepperi-addons-ngx-lib-icon.umd.js.map +1 -1
  11. package/bundles/pepperi-addons-ngx-lib-image.umd.js +14 -8
  12. package/bundles/pepperi-addons-ngx-lib-image.umd.js.map +1 -1
  13. package/bundles/pepperi-addons-ngx-lib-link.umd.js +488 -0
  14. package/bundles/pepperi-addons-ngx-lib-link.umd.js.map +1 -0
  15. package/bundles/pepperi-addons-ngx-lib-list.umd.js +1 -1
  16. package/bundles/pepperi-addons-ngx-lib-profile-data-views-list.umd.js +14 -9
  17. package/bundles/pepperi-addons-ngx-lib-profile-data-views-list.umd.js.map +1 -1
  18. package/bundles/pepperi-addons-ngx-lib-search.umd.js +10 -3
  19. package/bundles/pepperi-addons-ngx-lib-search.umd.js.map +1 -1
  20. package/bundles/pepperi-addons-ngx-lib-select.umd.js +2 -3
  21. package/bundles/pepperi-addons-ngx-lib-select.umd.js.map +1 -1
  22. package/bundles/pepperi-addons-ngx-lib.umd.js +25 -2
  23. package/bundles/pepperi-addons-ngx-lib.umd.js.map +1 -1
  24. package/core/customization/customization.model.d.ts +6 -0
  25. package/date/date.component.d.ts +1 -0
  26. package/date/pepperi-addons-ngx-lib-date.metadata.json +1 -1
  27. package/draggable-items/draggable-items.component.d.ts +2 -0
  28. package/draggable-items/pepperi-addons-ngx-lib-draggable-items.metadata.json +1 -1
  29. package/esm2015/core/common/services/utilities.service.js +4 -2
  30. package/esm2015/core/customization/customization.model.js +18 -2
  31. package/esm2015/date/date.component.js +12 -5
  32. package/esm2015/draggable-items/draggable-items.component.js +5 -3
  33. package/esm2015/files-uploader/files-uploader.component.js +15 -4
  34. package/esm2015/form/field-generator.component.js +2 -2
  35. package/esm2015/form/form.component.js +13 -5
  36. package/esm2015/form/form.module.js +3 -1
  37. package/esm2015/icon/icon-generated-all.model.js +2 -1
  38. package/esm2015/icon/icon-generated.model.js +5 -1
  39. package/esm2015/icon/icon.component.js +7 -20
  40. package/esm2015/icon/icon.module.js +3 -2
  41. package/esm2015/icon/icon.service.js +32 -0
  42. package/esm2015/icon/public-api.js +2 -1
  43. package/esm2015/image/image.component.js +15 -9
  44. package/esm2015/link/link.component.js +391 -0
  45. package/esm2015/link/link.module.js +51 -0
  46. package/esm2015/link/link.pipes.js +15 -0
  47. package/esm2015/link/pepperi-addons-ngx-lib-link.js +6 -0
  48. package/esm2015/link/public-api.js +6 -0
  49. package/esm2015/list/list-total.component.js +1 -1
  50. package/esm2015/profile-data-views-list/profile-data-view/profile-data-view.component.js +6 -2
  51. package/esm2015/profile-data-views-list/profile-data-views-card/profile-data-views-card.component.js +6 -6
  52. package/esm2015/profile-data-views-list/profile-data-views-list.component.js +5 -4
  53. package/esm2015/search/search.component.js +11 -4
  54. package/esm2015/select/select.component.js +3 -4
  55. package/fesm2015/pepperi-addons-ngx-lib-date.js +11 -4
  56. package/fesm2015/pepperi-addons-ngx-lib-date.js.map +1 -1
  57. package/fesm2015/pepperi-addons-ngx-lib-draggable-items.js +4 -2
  58. package/fesm2015/pepperi-addons-ngx-lib-draggable-items.js.map +1 -1
  59. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.js +14 -3
  60. package/fesm2015/pepperi-addons-ngx-lib-files-uploader.js.map +1 -1
  61. package/fesm2015/pepperi-addons-ngx-lib-form.js +15 -5
  62. package/fesm2015/pepperi-addons-ngx-lib-form.js.map +1 -1
  63. package/fesm2015/pepperi-addons-ngx-lib-icon.js +38 -15
  64. package/fesm2015/pepperi-addons-ngx-lib-icon.js.map +1 -1
  65. package/fesm2015/pepperi-addons-ngx-lib-image.js +14 -8
  66. package/fesm2015/pepperi-addons-ngx-lib-image.js.map +1 -1
  67. package/fesm2015/pepperi-addons-ngx-lib-link.js +460 -0
  68. package/fesm2015/pepperi-addons-ngx-lib-link.js.map +1 -0
  69. package/fesm2015/pepperi-addons-ngx-lib-list.js +1 -1
  70. package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.js +14 -9
  71. package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.js.map +1 -1
  72. package/fesm2015/pepperi-addons-ngx-lib-search.js +10 -3
  73. package/fesm2015/pepperi-addons-ngx-lib-search.js.map +1 -1
  74. package/fesm2015/pepperi-addons-ngx-lib-select.js +2 -3
  75. package/fesm2015/pepperi-addons-ngx-lib-select.js.map +1 -1
  76. package/fesm2015/pepperi-addons-ngx-lib.js +21 -3
  77. package/fesm2015/pepperi-addons-ngx-lib.js.map +1 -1
  78. package/files-uploader/files-uploader.component.d.ts +2 -0
  79. package/files-uploader/pepperi-addons-ngx-lib-files-uploader.metadata.json +1 -1
  80. package/form/pepperi-addons-ngx-lib-form.metadata.json +1 -1
  81. package/icon/icon-generated-all.model.d.ts +1 -0
  82. package/icon/icon-generated.model.d.ts +5 -1
  83. package/icon/icon.component.d.ts +3 -6
  84. package/icon/icon.service.d.ts +10 -0
  85. package/icon/pepperi-addons-ngx-lib-icon.metadata.json +1 -1
  86. package/icon/public-api.d.ts +1 -0
  87. package/image/image.component.d.ts +1 -0
  88. package/image/pepperi-addons-ngx-lib-image.metadata.json +1 -1
  89. package/link/link.component.d.ts +136 -0
  90. package/link/link.module.d.ts +5 -0
  91. package/link/link.pipes.d.ts +4 -0
  92. package/link/package.json +14 -0
  93. package/link/pepperi-addons-ngx-lib-link.d.ts +5 -0
  94. package/link/pepperi-addons-ngx-lib-link.metadata.json +1 -0
  95. package/link/public-api.d.ts +2 -0
  96. package/list/pepperi-addons-ngx-lib-list.metadata.json +1 -1
  97. package/package.json +1 -1
  98. package/pepperi-addons-ngx-lib.metadata.json +1 -1
  99. package/profile-data-views-list/pepperi-addons-ngx-lib-profile-data-views-list.metadata.json +1 -1
  100. package/profile-data-views-list/profile-data-view/profile-data-view.component.d.ts +1 -0
  101. package/profile-data-views-list/profile-data-views-list.component.d.ts +1 -1
  102. package/search/pepperi-addons-ngx-lib-search.metadata.json +1 -1
  103. package/search/search.component.d.ts +1 -0
  104. package/src/assets/i18n/en.ngx-lib.json +2 -1
  105. package/src/core/style/abstracts/functions.scss +10 -10
  106. package/src/core/style/abstracts/mixins.scss +96 -96
  107. package/src/core/style/base/base.scss +37 -15
  108. package/src/core/style/base/typography.scss +8 -0
  109. package/theming.scss +0 -15
@@ -122,6 +122,22 @@ export class PepTextboxField extends PepFieldBase {
122
122
  return validators;
123
123
  }
124
124
  }
125
+ export class PepLinkField extends PepFieldBase {
126
+ constructor(options = {}) {
127
+ super(options);
128
+ this.controlType = 'link';
129
+ this.type = 'link';
130
+ this.update(options);
131
+ }
132
+ update(options) {
133
+ super.update(options);
134
+ // DI-11292 - add changes for link field for the "Read Only display value" prop
135
+ this.formattedValue =
136
+ this.disabled && this.formattedValue && this.value
137
+ ? this.formattedValue
138
+ : this.value;
139
+ }
140
+ }
125
141
  export class PepTextareaField extends PepFieldBase {
126
142
  constructor(options = {}) {
127
143
  super(options);
@@ -174,12 +190,12 @@ export class PepQuantitySelectorField extends PepFieldBase {
174
190
  this.controlType = 'qs';
175
191
  this.notificationInfo = {};
176
192
  this.updatedDataCount = 0;
177
- this.allowDecimal = options.allowDecimal || false;
178
193
  this.type = options.type || 'qs';
179
194
  this.update(options);
180
195
  }
181
196
  update(options) {
182
197
  super.update(options);
198
+ this.allowDecimal = options.allowDecimal || false;
183
199
  this.notificationInfo = options.notificationInfo;
184
200
  this.updatedDataCount += 1;
185
201
  }
@@ -271,4 +287,4 @@ export class PepInternalMenuField extends PepFieldBase {
271
287
  // this.hasSubMenu = options['hasSubMenu'];
272
288
  }
273
289
  }
274
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9taXphdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvc3JjL2NvcmUvY3VzdG9taXphdGlvbi9jdXN0b21pemF0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWdCekQsb0NBQW9DO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUEyQixNQUFNLENBQUM7QUFJM0Usb0NBQW9DO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUF5QixLQUFLLENBQUM7QUFvQ3RFLE1BQU0sT0FBTyxZQUFZO0lBMkJyQix1QkFBdUI7SUFFdkIsWUFBWSxVQUFnQyxFQUFFOztRQUMxQyxJQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBRXJDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBQSxPQUFPLENBQUMsS0FBSyxtQ0FBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztRQUM3QyxrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBRS9CLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBQSxPQUFPLENBQUMs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O0lBQ3pCLENBQUM7SUFFTSxNQUFNLENBQUMsT0FBd0M7UUFDbEQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV0QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDckMsQ0FBQztDQUNKO0FBTUQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFlBQVk7SUFHbEQsK0JBQStCO0lBRS9CLFlBQVksVUFBd0MsRUFBRTtRQUNsRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFMbkIsZ0JBQVcsR0FBRyxNQUFNLENBQUM7UUFDckIsWUFBTyxHQUFpQixFQUFFLENBQUM7UUFLdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNyQywyQ0FBMkM7SUFDL0MsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8qKiBBbGxvd2VkIGxheW91dCBvcHRpb25zICovXG5leHBvcnQgdHlwZSBQZXBMYXlvdXRUeXBlID0gJ2Zvcm0nIHwgJ2NhcmQnIHwgJ3RhYmxlJztcblxuLyoqIEFsbG93ZWQgc3R5bGUgb3B0aW9ucyAqL1xuZXhwb3J0IHR5cGUgUGVwU3R5bGVUeXBlID0gJ3dlYWsnIHwgJ3dlYWstaW52ZXJ0JyB8ICdyZWd1bGFyJyB8ICdzdHJvbmcnO1xuXG4vKiogQWxsb3dlZCBzdHlsZSBzdGF0ZSBvcHRpb25zICovXG5leHBvcnQgdHlwZSBQZXBTdHlsZVN0YXRlVHlwZSA9ICdzeXN0ZW0nIHwgJ2NhdXRpb24nIHwgJ3N1Y2Nlc3MnO1xuXG4vKiogQWxsb3dlZCBzaXplIG9wdGlvbnMgKi9cbmV4cG9ydCB0eXBlIFBlcFNpemVUeXBlID0gJ3hzJyB8ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCc7XG5cbi8qKiBBbGxvd2VkIGhvcml6b250YWwgYWxpZ25tZW50IG9wdGlvbnMgKi9cbmV4cG9ydCB0eXBlIFBlcEhvcml6b250YWxBbGlnbm1lbnQgPSAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCc7XG4vKiogRGVmYXVsdCBob3Jpem9udGFsIGFsaWdubWVudC4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0hPUklaT05UQUxfQUxJR05NRU5UOiBQZXBIb3Jpem9udGFsQWxpZ25tZW50ID0gJ2xlZnQnO1xuXG4vKiogQWxsb3dlZCB2ZXJ0aWNhbCBhbGlnbm1lbnQgb3B0aW9ucyAqL1xuZXhwb3J0IHR5cGUgUGVwVmVydGljYWxBbGlnbm1lbnQgPSAndG9wJyB8ICdtaWRkbGUnIHwgJ2JvdHRvbSc7XG4vKiogRGVmYXVsdCBob3Jpem9udGFsIGFsaWdubWVudC4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1ZFUlRJQ0FMX0FMSUdOTUVOVDogUGVwVmVydGljYWxBbGlnbm1lbnQgPSAndG9wJztcbmV4cG9ydCBpbnRlcmZhY2UgSVBlcE9wdGlvbiB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZztcbn1cblxuLy8gZXhwb3J0IHR5cGUgUGVwRmllbGRCYXNlVHlwZSA9ICcnIHwgUGVwSW50ZXJuYWxCdXR0b25GaWVsZFR5cGUgfCBQZXBUZXh0Ym94RmllbGRUeXBlIHxcbi8vICAgICBQZXBRdWFudGl0eVNlbGVjdG9yRmllbGRUeXBlIHwgUGVwRGF0ZUZpZWxkVHlwZSB8IFBlcENoZWNrYm94RmllbGRUeXBlIHwgUGVwU2VsZWN0RmllbGRUeXBlO1xuaW50ZXJmYWNlIElQZXBGaWVsZEJhc2VPcHRpb25zIHtcbiAgICB2YWx1ZT86IGFueTtcbiAgICBmb3JtYXR0ZWRWYWx1ZT86IGFueTtcbiAgICBhZGRpdGlvbmFsVmFsdWU/OiBzdHJpbmc7XG4gICAga2V5Pzogc3RyaW5nO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICAgIGFjY2Vzc29yeT86IHN0cmluZztcbiAgICBtYW5kYXRvcnk/OiBib29sZWFuO1xuICAgIHJlYWRvbmx5PzogYm9vbGVhbjtcbiAgICBkaXNhYmxlZD86IGJvb2xlYW47XG4gICAgb3JkZXI/OiBudW1iZXI7XG4gICAgY29udHJvbFR5cGU/OiBzdHJpbmc7XG4gICAgLy8gdHlwZT86IFBlcEZpZWxkQmFzZVR5cGU7XG4gICAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgaGlkZGVuPzogYm9vbGVhbjtcbiAgICByb3c/OiBudW1iZXI7XG4gICAgcm93U3Bhbj86IG51bWJlcjtcbiAgICBjb2w/OiBudW1iZXI7XG4gICAgY29sU3Bhbj86IG51bWJlcjtcbiAgICB4QWxpZ25tZW50PzogUGVwSG9yaXpvbnRhbEFsaWdubWVudDtcbiAgICB5QWxpZ25tZW50PzogUGVwVmVydGljYWxBbGlnbm1lbnQ7XG4gICAgbWF4RmllbGRDaGFyYWN0ZXJzPzogbnVtYmVyO1xuICAgIG1pblZhbHVlPzogbnVtYmVyO1xuICAgIG1heFZhbHVlPzogbnVtYmVyO1xuICAgIHRleHRDb2xvcj86IHN0cmluZztcbiAgICB2aXNpYmxlPzogYm9vbGVhbjtcbiAgICAvLyBsYXN0Rm9jdXNGaWVsZD86IGFueTtcbn1cbmV4cG9ydCBjbGFzcyBQZXBGaWVsZEJhc2Uge1xuICAgIHZhbHVlOiBhbnk7XG4gICAgZm9ybWF0dGVkVmFsdWU6IGFueTtcbiAgICBhZGRpdGlvbmFsVmFsdWU6IHN0cmluZztcbiAgICBrZXk6IHN0cmluZztcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGFjY2Vzc29yeTogc3RyaW5nO1xuICAgIG1hbmRhdG9yeTogYm9vbGVhbjtcbiAgICByZWFkb25seTogYm9vbGVhbjtcbiAgICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgICBvcmRlcjogbnVtYmVyO1xuICAgIC8vIHR5cGU6IHN0cmluZztcbiAgICBjb250cm9sVHlwZTogc3RyaW5nO1xuICAgIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgaGlkZGVuOiBib29sZWFuO1xuICAgIHJvdzogbnVtYmVyO1xuICAgIHJvd1NwYW46IG51bWJlcjtcbiAgICBjb2w6IG51bWJlcjtcbiAgICBjb2xTcGFuOiBudW1iZXI7XG4gICAgeEFsaWdubWVudDogUGVwSG9yaXpvbnRhbEFsaWdubWVudDtcbiAgICB5QWxpZ25tZW50OiBQZXBWZXJ0aWNhbEFsaWdubWVudDtcbiAgICBncm91cEZpZWxkczogUGVwRmllbGRCYXNlW107XG4gICAgbWF4RmllbGRDaGFyYWN0ZXJzOiBudW1iZXI7XG4gICAgbWluVmFsdWU6IG51bWJlcjtcbiAgICBtYXhWYWx1ZTogbnVtYmVyO1xuICAgIHRleHRDb2xvcjogc3RyaW5nO1xuICAgIHZpc2libGU6IGJvb2xlYW47XG4gICAgLy8gbGFzdEZvY3VzRmllbGQ6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBGaWVsZEJhc2VPcHRpb25zID0ge30pIHtcbiAgICAgICAgdGhpcy5rZXkgPSBvcHRpb25zLmtleSB8fCAnJztcbiAgICAgICAgdGhpcy5sYWJlbCA9IG9wdGlvbnMubGFiZWwgfHwgJyc7XG4gICAgICAgIHRoaXMuYWNjZXNzb3J5ID0gb3B0aW9ucy5hY2Nlc3NvcnkgfHwgJyc7XG4gICAgICAgIHRoaXMubWFuZGF0b3J5ID0gISFvcHRpb25zLm1hbmRhdG9yeTtcblxuICAgICAgICB0aGlzLm9yZGVyID0gb3B0aW9ucy5vcmRlciA/PyAxO1xuICAgICAgICB0aGlzLmNvbnRyb2xUeXBlID0gb3B0aW9ucy5jb250cm9sVHlwZSB8fCAnJztcbiAgICAgICAgLy8gdGhpcy50eXBlID0gb3B0aW9ucy50eXBlIHx8ICcnO1xuICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gb3B0aW9ucy5wbGFjZWhvbGRlciB8fCAnJztcbiAgICAgICAgdGhpcy5oaWRkZW4gPSAhIW9wdGlvbnMuaGlkZGVuO1xuXG4gICAgICAgIHRoaXMucm93ID0gb3B0aW9ucy5yb3cgPz8gMTtcbiAgICAgICAgdGhpcy5yb3dTcGFuID0gb3B0aW9ucy5yb3dTcGFuID8/IDE7XG4gICAgICAgIHRoaXMuY29sID0gb3B0aW9ucy5jb2wgPz8gMTtcbiAgICAgICAgdGhpcy5jb2xTcGFuID0gb3B0aW9ucy5jb2xTcGFuID8/IDE7XG5cbiAgICAgICAgdGhpcy54QWxpZ25tZW50ID0gb3B0aW9ucy54QWxpZ25tZW50ID8/IERFRkFVTFRfSE9SSVpPTlRBTF9BTElHTk1FTlQ7XG4gICAgICAgIHRoaXMueUFsaWdubWVudCA9IG9wdGlvbnMueUFsaWdubWVudCA/PyBERUZBVUxUX1ZFUlRJQ0FMX0FMSUdOTUVOVDtcblxuICAgICAgICB0aGlzLm1heEZpZWxkQ2hhcmFjdGVycyA9IG9wdGlvbnMubWF4RmllbGRDaGFyYWN0ZXJzID8/IDA7XG4gICAgICAgIHRoaXMubWluVmFsdWUgPSBvcHRpb25zLm1pblZhbHVlID8/IDA7XG4gICAgICAgIHRoaXMubWF4VmFsdWUgPSBvcHRpb25zLm1heFZhbHVlID8/IDA7XG5cbiAgICAgICAgdGhpcy51cGRhdGUob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldEJhc2VWYWxpZGF0b3JzKGlzQ2hlY2tib3ggPSBmYWxzZSk6IFZhbGlkYXRvckZuW10ge1xuICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gW107XG5cbiAgICAgICAgaWYgKHRoaXMubWFuZGF0b3J5ICYmICF0aGlzLnJlYWRvbmx5ICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBpZiAoaXNDaGVja2JveCkge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkVHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm51bGxWYWxpZGF0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubWF4RmllbGRDaGFyYWN0ZXJzID4gMCkge1xuICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMubWF4RmllbGRDaGFyYWN0ZXJzKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsaWRhdG9ycztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHRoaXMuZ2V0QmFzZVZhbGlkYXRvcnMoKTtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRvcnM7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZShvcHRpb25zOiBJUGVwRmllbGRCYXNlT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhbHVlID0gb3B0aW9ucy52YWx1ZTtcbiAgICAgICAgdGhpcy5mb3JtYXR0ZWRWYWx1ZSA9IG9wdGlvbnMuZm9ybWF0dGVkVmFsdWU7XG4gICAgICAgIHRoaXMuYWRkaXRpb25hbFZhbHVlID0gb3B0aW9ucy5hZGRpdGlvbmFsVmFsdWU7XG5cbiAgICAgICAgdGhpcy5yZWFkb25seSA9ICEhb3B0aW9ucy5yZWFkb25seTtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9ICEhb3B0aW9ucy5kaXNhYmxlZDtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gISFvcHRpb25zLnZpc2libGU7XG4gICAgICAgIHRoaXMudGV4dENvbG9yID0gb3B0aW9ucy50ZXh0Q29sb3IgfHwgJyc7XG4gICAgICAgIC8vIHRoaXMubGFzdEZvY3VzRmllbGQgPSBvcHRpb25zLmxhc3RGb2N1c0ZpZWxkIHx8IG51bGw7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVwUGxhY2Vob2xkZXJGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAncGxhY2Vob2xkZXInO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcEZpZWxkQmFzZU9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQZXBTZXBhcmF0b3JGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAnc2VwYXJhdG9yJztcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBGaWVsZEJhc2VPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVwQXR0YWNobWVudEZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdhdHRhY2htZW50JztcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBGaWVsZEJhc2VPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVwSW5kaWNhdG9yc0ZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdpbmRpY2F0b3JzJztcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBGaWVsZEJhc2VPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBQZXBUZXh0Ym94RmllbGRUeXBlID1cbiAgICB8ICd0ZXh0J1xuICAgIHwgJ2xpbmsnXG4gICAgfCAnZW1haWwnXG4gICAgfCAncGhvbmUnXG4gICAgfCAnZHVyYXRpb24nXG4gICAgfCAnaW50J1xuICAgIHwgJ3BlcmNlbnRhZ2UnXG4gICAgfCAnY3VycmVuY3knXG4gICAgfCAncmVhbCc7XG5pbnRlcmZhY2UgSVBlcFRleHRib3hGaWVsZE9wdGlvbnMgZXh0ZW5kcyBJUGVwRmllbGRCYXNlT3B0aW9ucyB7XG4gICAgdHlwZT86IFBlcFRleHRib3hGaWVsZFR5cGU7XG59XG5leHBvcnQgY2xhc3MgUGVwVGV4dGJveEZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICd0ZXh0Ym94JztcbiAgICB0eXBlOiBQZXBUZXh0Ym94RmllbGRUeXBlID0gJ3RleHQnO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcFRleHRib3hGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcblxuICAgICAgICB0aGlzLnR5cGUgPSBvcHRpb25zLnR5cGUgfHwgJ3RleHQnO1xuXG4gICAgICAgIHRoaXMudXBkYXRlKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGUob3B0aW9uczogSVBlcFRleHRib3hGaWVsZE9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIudXBkYXRlKG9wdGlvbnMpO1xuXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdsaW5rJykge1xuICAgICAgICAgICAgLy8gREktMTEyOTIgLSBhZGQgY2hhbmdlcyBmb3IgbGluayBmaWVsZCBmb3IgdGhlIFwiUmVhZCBPbmx5IGRpc3BsYXkgdmFsdWVcIiBwcm9wXG4gICAgICAgICAgICB0aGlzLmZvcm1hdHRlZFZhbHVlID1cbiAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVkICYmIHRoaXMuZm9ybWF0dGVkVmFsdWUgJiYgdGhpcy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuZm9ybWF0dGVkVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbGlkYXRvcnMoKTogVmFsaWRhdG9yRm5bXSB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBzdXBlci5nZXRCYXNlVmFsaWRhdG9ycygpO1xuXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdlbWFpbCcpIHtcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oXG4gICAgICAgICAgICAgICAgICAgIC9eKChbXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSspKil8KFwiLitcIikpQCgoXFxbWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfV0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdwaG9uZScpIHtcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oL15bXFxkXFwuXFwtXFwrXFwoXFwpXFwqXFwjXSskLykpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ2ludCcgfHwgdGhpcy50eXBlID09PSAncmVhbCcpIHtcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnBhdHRlcm4oL15bXFwuLFxcLVxcK1xcZF0rJC8pKTtcblxuICAgICAgICAgICAgaWYgKCFpc05hTih0aGlzLm1pblZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbih0aGlzLm1pblZhbHVlKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaXNOYU4odGhpcy5tYXhWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5tYXgodGhpcy5tYXhWYWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRvcnM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVwVGV4dGFyZWFGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAndGV4dGFyZWEnO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcEZpZWxkQmFzZU9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgLy8gdGhpcy50eXBlID0gJ3RleHRhcmVhJztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQZXBSaWNoSHRtbFRleHRhcmVhRmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ3JpY2hodG1sdGV4dGFyZWEnO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcEZpZWxkQmFzZU9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgLy8gdGhpcy50eXBlID0gJ3JpY2hodG1sdGV4dGFyZWEnO1xuICAgIH1cbn1cblxuaW50ZXJmYWNlIElQZXBTaWduYXR1cmVGaWVsZE9wdGlvbnMgZXh0ZW5kcyBJUGVwRmllbGRCYXNlT3B0aW9ucyB7XG4gICAgb3B0aW9ucz86IElQZXBPcHRpb25bXTtcbn1cbmV4cG9ydCBjbGFzcyBQZXBTaWduYXR1cmVGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAnc2lnbmF0dXJlJztcbiAgICBvcHRpb25zOiBJUGVwT3B0aW9uW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBTaWduYXR1cmVGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucy5vcHRpb25zIHx8IFtdO1xuICAgIH1cbn1cblxuaW50ZXJmYWNlIElQZXBJbWFnZUZpZWxkT3B0aW9ucyBleHRlbmRzIElQZXBGaWVsZEJhc2VPcHRpb25zIHtcbiAgICBoYXNDYW1wYWlnbkZpZWxkPzogYW55O1xuICAgIGluZGljYXRvcnNGaWVsZD86IGFueTtcbiAgICBtZW51RmllbGQ/OiBhbnk7XG4gICAgb3B0aW9ucz86IElQZXBPcHRpb25bXTtcbiAgICBzaXplTGltaXRNQj86IG51bWJlcjtcbn1cbmV4cG9ydCBjbGFzcyBQZXBJbWFnZUZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdpbWFnZSc7XG4gICAgaGFzQ2FtcGFpZ25GaWVsZCA9IG51bGw7XG4gICAgaW5kaWNhdG9yc0ZpZWxkID0gbnVsbDtcbiAgICBtZW51RmllbGQgPSBudWxsO1xuICAgIG9wdGlvbnM6IElQZXBPcHRpb25bXSA9IFtdO1xuICAgIHNpemVMaW1pdE1CID0gNTtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBJbWFnZUZpZWxkT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLmhhc0NhbXBhaWduRmllbGQgPSBvcHRpb25zLmhhc0NhbXBhaWduRmllbGQgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5pbmRpY2F0b3JzRmllbGQgPSBvcHRpb25zLmluZGljYXRvcnNGaWVsZCB8fCBudWxsO1xuICAgICAgICB0aGlzLm1lbnVGaWVsZCA9IG9wdGlvbnMubWVudUZpZWxkIHx8IG51bGw7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMub3B0aW9ucyB8fCBbXTtcbiAgICAgICAgdGhpcy5zaXplTGltaXRNQiA9IG9wdGlvbnMuc2l6ZUxpbWl0TUIgfHwgNTtcbiAgICB9XG59XG5cbmludGVyZmFjZSBJUGVwSW1hZ2VzRmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIG9wdGlvbnM/OiBJUGVwT3B0aW9uW107XG59XG5leHBvcnQgY2xhc3MgUGVwSW1hZ2VzRmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ2ltYWdlcyc7XG4gICAgb3B0aW9uczogSVBlcE9wdGlvbltdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwSW1hZ2VzRmllbGRPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMub3B0aW9ucyB8fCBbXTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFBlcFF1YW50aXR5U2VsZWN0b3JGaWVsZFR5cGUgPVxuICAgIHwgJ2J1dHRvbidcbiAgICB8ICdwYWNrYWdlQnV0dG9uJ1xuICAgIHwgJ3FzJ1xuICAgIHwgJ3FzRm9yTWF0cml4JztcbmludGVyZmFjZSBJUGVwUXVhbnRpdHlTZWxlY3RvckZpZWxkT3B0aW9ucyBleHRlbmRzIElQZXBGaWVsZEJhc2VPcHRpb25zIHtcbiAgICBhbGxvd0RlY2ltYWw/OiBib29sZWFuO1xuICAgIG5vdGlmaWNhdGlvbkluZm8/OiBhbnk7XG4gICAgdHlwZT86IFBlcFF1YW50aXR5U2VsZWN0b3JGaWVsZFR5cGU7XG59XG5leHBvcnQgY2xhc3MgUGVwUXVhbnRpdHlTZWxlY3RvckZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdxcyc7XG4gICAgYWxsb3dEZWNpbWFsOiBib29sZWFuO1xuICAgIG5vdGlmaWNhdGlvbkluZm86IGFueSA9IHt9O1xuICAgIHVwZGF0ZWREYXRhQ291bnQ6IG51bWJlcjtcbiAgICB0eXBlOiBQZXBRdWFudGl0eVNlbGVjdG9yRmllbGRUeXBlO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcFF1YW50aXR5U2VsZWN0b3JGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZWREYXRhQ291bnQgPSAwO1xuICAgICAgICB0aGlzLmFsbG93RGVjaW1hbCA9IG9wdGlvbnMuYWxsb3dEZWNpbWFsIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLnR5cGUgPSBvcHRpb25zLnR5cGUgfHwgJ3FzJztcblxuICAgICAgICB0aGlzLnVwZGF0ZShvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlKG9wdGlvbnM6IElQZXBRdWFudGl0eVNlbGVjdG9yRmllbGRPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLnVwZGF0ZShvcHRpb25zKTtcblxuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkluZm8gPSBvcHRpb25zLm5vdGlmaWNhdGlvbkluZm87XG4gICAgICAgIHRoaXMudXBkYXRlZERhdGFDb3VudCArPSAxO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgUGVwRGF0ZUZpZWxkVHlwZSA9ICdkYXRldGltZScgfCAnZGF0ZSc7XG5pbnRlcmZhY2UgSVBlcERhdGVGaWVsZE9wdGlvbnMgZXh0ZW5kcyBJUGVwRmllbGRCYXNlT3B0aW9ucyB7XG4gICAgdHlwZT86IFBlcERhdGVGaWVsZFR5cGU7XG59XG5leHBvcnQgY2xhc3MgUGVwRGF0ZUZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdkYXRlJztcbiAgICB0eXBlOiBQZXBEYXRlRmllbGRUeXBlO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcERhdGVGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcblxuICAgICAgICB0aGlzLnR5cGUgPSBvcHRpb25zLnR5cGUgfHwgJ2RhdGUnO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgUGVwQ2hlY2tib3hGaWVsZFR5cGUgPSAnY2hlY2tib3gnIHwgJ2Jvb2xlYW5UZXh0JztcbmludGVyZmFjZSBJUGVwQ2hlY2tib3hGaWVsZE9wdGlvbnMgZXh0ZW5kcyBJUGVwRmllbGRCYXNlT3B0aW9ucyB7XG4gICAgdHlwZT86IFBlcENoZWNrYm94RmllbGRUeXBlO1xufVxuZXhwb3J0IGNsYXNzIFBlcENoZWNrYm94RmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ2NoZWNrYm94JztcbiAgICB0eXBlOiBQZXBDaGVja2JveEZpZWxkVHlwZTtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBDaGVja2JveEZpZWxkT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMudHlwZSA9IG9wdGlvbnMudHlwZSB8fCAnY2hlY2tib3gnO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xuICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gc3VwZXIuZ2V0QmFzZVZhbGlkYXRvcnModHJ1ZSk7XG4gICAgICAgIHJldHVybiB2YWxpZGF0b3JzO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgUGVwU2VsZWN0RmllbGRUeXBlID0gJ3NlbGVjdCcgfCAnbXVsdGknO1xuaW50ZXJmYWNlIElQZXBTZWxlY3RGaWVsZE9wdGlvbnMgZXh0ZW5kcyBJUGVwRmllbGRCYXNlT3B0aW9ucyB7XG4gICAgb3B0aW9ucz86IElQZXBPcHRpb25bXTtcbiAgICB0eXBlPzogUGVwU2VsZWN0RmllbGRUeXBlO1xufVxuZXhwb3J0IGNsYXNzIFBlcFNlbGVjdEZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdzZWxlY3QnO1xuICAgIG9wdGlvbnM6IElQZXBPcHRpb25bXSA9IFtdO1xuICAgIHR5cGU6IFBlcFNlbGVjdEZpZWxkVHlwZTtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBTZWxlY3RGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy50eXBlID0gb3B0aW9ucy50eXBlIHx8ICdzZWxlY3QnO1xuXG4gICAgICAgIHRoaXMudXBkYXRlKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGUob3B0aW9uczogSVBlcFNlbGVjdEZpZWxkT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICBzdXBlci51cGRhdGUob3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucy5vcHRpb25zIHx8IFtdO1xuICAgIH1cbn1cblxuaW50ZXJmYWNlIElQZXBBZGRyZXNzRmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIGdyb3VwRmllbGRzPzogUGVwRmllbGRCYXNlW107XG59XG5leHBvcnQgY2xhc3MgUGVwQWRkcmVzc0ZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdhZGRyZXNzJztcbiAgICBncm91cEZpZWxkczogUGVwRmllbGRCYXNlW10gPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcEFkZHJlc3NGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5ncm91cEZpZWxkcyA9IG9wdGlvbnMuZ3JvdXBGaWVsZHMgfHwgbnVsbDtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFBlcEludGVybmFsQnV0dG9uRmllbGRUeXBlID1cbiAgICB8ICdidXR0b24nXG4gICAgfCAncmVmZXJlbmNlJ1xuICAgIHwgJ2xpc3RvZm9iamVjdHMnO1xuaW50ZXJmYWNlIElQZXBJbnRlcm5hbEJ1dHRvbkZpZWxkT3B0aW9ucyBleHRlbmRzIElQZXBGaWVsZEJhc2VPcHRpb25zIHtcbiAgICByZWZlcmVuY2VPYmplY3RUeXBlPzogYW55O1xuICAgIHJlZmVyZW5jZU9iamVjdFN1YlR5cGU/OiBzdHJpbmc7XG4gICAgcmVmZXJlbmNlT2JqZWN0SW50ZXJuYWxUeXBlPzogc3RyaW5nO1xuICAgIHR5cGU/OiBQZXBJbnRlcm5hbEJ1dHRvbkZpZWxkVHlwZTtcbn1cbmV4cG9ydCBjbGFzcyBQZXBJbnRlcm5hbEJ1dHRvbkZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdidXR0b24nO1xuICAgIHJlZmVyZW5jZU9iamVjdFR5cGU7XG4gICAgcmVmZXJlbmNlT2JqZWN0U3ViVHlwZSA9ICcnO1xuICAgIHJlZmVyZW5jZU9iamVjdEludGVybmFsVHlwZSA9ICcnO1xuICAgIHR5cGU6IFBlcEludGVybmFsQnV0dG9uRmllbGRUeXBlO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcEludGVybmFsQnV0dG9uRmllbGRPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy5yZWZlcmVuY2VPYmplY3RUeXBlID0gb3B0aW9ucy5yZWZlcmVuY2VPYmplY3RUeXBlIHx8IG51bGw7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlT2JqZWN0U3ViVHlwZSA9IG9wdGlvbnMucmVmZXJlbmNlT2JqZWN0U3ViVHlwZSB8fCBudWxsO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZU9iamVjdEludGVybmFsVHlwZSA9XG4gICAgICAgICAgICBvcHRpb25zLnJlZmVyZW5jZU9iamVjdEludGVybmFsVHlwZSB8fCBudWxsO1xuXG4gICAgICAgIHRoaXMudHlwZSA9IG9wdGlvbnMudHlwZSB8fCAnYnV0dG9uJztcbiAgICB9XG59XG5cbmludGVyZmFjZSBJUGVwSW50ZXJuYWxQYWdlRmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIG9iamVjdElkPzogc3RyaW5nO1xuICAgIHBhcmVudElkPzogc3RyaW5nO1xuICAgIHNlYXJjaENvZGU/OiBzdHJpbmc7XG59XG5leHBvcnQgY2xhc3MgUGVwSW50ZXJuYWxQYWdlRmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ2ludGVybmFsUGFnZSc7XG4gICAgb2JqZWN0SWQgPSAnJztcbiAgICBwYXJlbnRJZCA9ICcnO1xuICAgIHNlYXJjaENvZGUgPSAnJztcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBJbnRlcm5hbFBhZ2VGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vYmplY3RJZCA9IG9wdGlvbnMub2JqZWN0SWQgfHwgJyc7XG4gICAgICAgIHRoaXMucGFyZW50SWQgPSBvcHRpb25zLnBhcmVudElkIHx8ICcnO1xuICAgICAgICB0aGlzLnNlYXJjaENvZGUgPSBvcHRpb25zLnNlYXJjaENvZGUgfHwgJyc7XG4gICAgfVxufVxuXG5cbmludGVyZmFjZSBJUGVwSW50ZXJuYWxDYXJ1c2VsRmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIHNlYXJjaENvZGU/OiBzdHJpbmc7XG4gICAgcGFnZUluZm8/OiBhbnk7XG59XG5leHBvcnQgY2xhc3MgUGVwSW50ZXJuYWxDYXJ1c2VsRmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ2ludGVybmFsQ2FydXNlbCc7XG4gICAgc2VhcmNoQ29kZSA9ICcnO1xuICAgIHBhZ2VJbmZvO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcEludGVybmFsQ2FydXNlbEZpZWxkT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnNlYXJjaENvZGUgPSBvcHRpb25zLnNlYXJjaENvZGUgfHwgJyc7XG5cbiAgICAgICAgdGhpcy51cGRhdGUob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZShvcHRpb25zOiBJUGVwSW50ZXJuYWxDYXJ1c2VsRmllbGRPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLnVwZGF0ZShvcHRpb25zKTtcblxuICAgICAgICB0aGlzLnBhZ2VJbmZvID0gb3B0aW9ucy5wYWdlSW5mbztcbiAgICB9XG59XG5cblxuaW50ZXJmYWNlIElQZXBJbnRlcm5hbE1lbnVGaWVsZE9wdGlvbnMgZXh0ZW5kcyBJUGVwRmllbGRCYXNlT3B0aW9ucyB7XG4gICAgb3B0aW9ucz86IElQZXBPcHRpb25bXTtcbn1cbmV4cG9ydCBjbGFzcyBQZXBJbnRlcm5hbE1lbnVGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAnbWVudSc7XG4gICAgb3B0aW9uczogSVBlcE9wdGlvbltdID0gW107XG4gICAgLy8gaGFzU3ViTWVudTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcEludGVybmFsTWVudUZpZWxkT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zLm9wdGlvbnMgfHwgW107XG4gICAgICAgIC8vIHRoaXMuaGFzU3ViTWVudSA9IG9wdGlvbnNbJ2hhc1N1Yk1lbnUnXTtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcEZpZWxkVmFsdWVDaGFuZ2VFdmVudCB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBjb250cm9sVHlwZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGVwRmllbGRDbGlja0V2ZW50IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgICBjb250cm9sVHlwZT86IHN0cmluZztcbiAgICBldmVudFdoaWNoPzogYW55O1xuICAgIG90aGVyRGF0YT86IGFueTtcbn1cbiJdfQ==
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9taXphdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvc3JjL2NvcmUvY3VzdG9taXphdGlvbi9jdXN0b21pemF0aW9uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQWdCekQsb0NBQW9DO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUEyQixNQUFNLENBQUM7QUFJM0Usb0NBQW9DO0FBQ3BDLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUF5QixLQUFLLENBQUM7QUFvQ3RFLE1BQU0sT0FBTyxZQUFZO0lBMkJyQix1QkFBdUI7SUFFdkIsWUFBWSxVQUFnQyxFQUFFOztRQUMxQyxJQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBRXJDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBQSxPQUFPLENBQUMsS0FBSyxtQ0FBSSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztRQUM3QyxrQ0FBa0M7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBRS9CLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBQSxPQUFPLENBQUMs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RyxFQUFFLENBQUM7UUFJWixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0NBQ0o7QUFPRCxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsWUFBWTtJQUtyRCxZQUFZLFVBQTJDLEVBQUU7UUFDckQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBTG5CLGdCQUFXLEdBQUcsaUJBQWlCLENBQUM7UUFDaEMsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUtaLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFFM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRU0sTUFBTSxDQUFDLE9BQXdDO1FBQ2xELEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQ3JDLENBQUM7Q0FDSjtBQU1ELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxZQUFZO0lBR2xELCtCQUErQjtJQUUvQixZQUFZLFVBQXdDLEVBQUU7UUFDbEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBTG5CLGdCQUFXLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLFlBQU8sR0FBaUIsRUFBRSxDQUFDO1FBS3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDckMsMkNBQTJDO0lBQy9DLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKiogQWxsb3dlZCBsYXlvdXQgb3B0aW9ucyAqL1xuZXhwb3J0IHR5cGUgUGVwTGF5b3V0VHlwZSA9ICdmb3JtJyB8ICdjYXJkJyB8ICd0YWJsZSc7XG5cbi8qKiBBbGxvd2VkIHN0eWxlIG9wdGlvbnMgKi9cbmV4cG9ydCB0eXBlIFBlcFN0eWxlVHlwZSA9ICd3ZWFrJyB8ICd3ZWFrLWludmVydCcgfCAncmVndWxhcicgfCAnc3Ryb25nJztcblxuLyoqIEFsbG93ZWQgc3R5bGUgc3RhdGUgb3B0aW9ucyAqL1xuZXhwb3J0IHR5cGUgUGVwU3R5bGVTdGF0ZVR5cGUgPSAnc3lzdGVtJyB8ICdjYXV0aW9uJyB8ICdzdWNjZXNzJztcblxuLyoqIEFsbG93ZWQgc2l6ZSBvcHRpb25zICovXG5leHBvcnQgdHlwZSBQZXBTaXplVHlwZSA9ICd4cycgfCAnc20nIHwgJ21kJyB8ICdsZycgfCAneGwnO1xuXG4vKiogQWxsb3dlZCBob3Jpem9udGFsIGFsaWdubWVudCBvcHRpb25zICovXG5leHBvcnQgdHlwZSBQZXBIb3Jpem9udGFsQWxpZ25tZW50ID0gJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnO1xuLyoqIERlZmF1bHQgaG9yaXpvbnRhbCBhbGlnbm1lbnQuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9IT1JJWk9OVEFMX0FMSUdOTUVOVDogUGVwSG9yaXpvbnRhbEFsaWdubWVudCA9ICdsZWZ0JztcblxuLyoqIEFsbG93ZWQgdmVydGljYWwgYWxpZ25tZW50IG9wdGlvbnMgKi9cbmV4cG9ydCB0eXBlIFBlcFZlcnRpY2FsQWxpZ25tZW50ID0gJ3RvcCcgfCAnbWlkZGxlJyB8ICdib3R0b20nO1xuLyoqIERlZmF1bHQgaG9yaXpvbnRhbCBhbGlnbm1lbnQuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9WRVJUSUNBTF9BTElHTk1FTlQ6IFBlcFZlcnRpY2FsQWxpZ25tZW50ID0gJ3RvcCc7XG5leHBvcnQgaW50ZXJmYWNlIElQZXBPcHRpb24ge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG59XG5cbi8vIGV4cG9ydCB0eXBlIFBlcEZpZWxkQmFzZVR5cGUgPSAnJyB8IFBlcEludGVybmFsQnV0dG9uRmllbGRUeXBlIHwgUGVwVGV4dGJveEZpZWxkVHlwZSB8XG4vLyAgICAgUGVwUXVhbnRpdHlTZWxlY3RvckZpZWxkVHlwZSB8IFBlcERhdGVGaWVsZFR5cGUgfCBQZXBDaGVja2JveEZpZWxkVHlwZSB8IFBlcFNlbGVjdEZpZWxkVHlwZTtcbmludGVyZmFjZSBJUGVwRmllbGRCYXNlT3B0aW9ucyB7XG4gICAgdmFsdWU/OiBhbnk7XG4gICAgZm9ybWF0dGVkVmFsdWU/OiBhbnk7XG4gICAgYWRkaXRpb25hbFZhbHVlPzogc3RyaW5nO1xuICAgIGtleT86IHN0cmluZztcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBhY2Nlc3Nvcnk/OiBzdHJpbmc7XG4gICAgbWFuZGF0b3J5PzogYm9vbGVhbjtcbiAgICByZWFkb25seT86IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICAgIG9yZGVyPzogbnVtYmVyO1xuICAgIGNvbnRyb2xUeXBlPzogc3RyaW5nO1xuICAgIC8vIHR5cGU/OiBQZXBGaWVsZEJhc2VUeXBlO1xuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIGhpZGRlbj86IGJvb2xlYW47XG4gICAgcm93PzogbnVtYmVyO1xuICAgIHJvd1NwYW4/OiBudW1iZXI7XG4gICAgY29sPzogbnVtYmVyO1xuICAgIGNvbFNwYW4/OiBudW1iZXI7XG4gICAgeEFsaWdubWVudD86IFBlcEhvcml6b250YWxBbGlnbm1lbnQ7XG4gICAgeUFsaWdubWVudD86IFBlcFZlcnRpY2FsQWxpZ25tZW50O1xuICAgIG1heEZpZWxkQ2hhcmFjdGVycz86IG51bWJlcjtcbiAgICBtaW5WYWx1ZT86IG51bWJlcjtcbiAgICBtYXhWYWx1ZT86IG51bWJlcjtcbiAgICB0ZXh0Q29sb3I/OiBzdHJpbmc7XG4gICAgdmlzaWJsZT86IGJvb2xlYW47XG4gICAgLy8gbGFzdEZvY3VzRmllbGQ/OiBhbnk7XG59XG5leHBvcnQgY2xhc3MgUGVwRmllbGRCYXNlIHtcbiAgICB2YWx1ZTogYW55O1xuICAgIGZvcm1hdHRlZFZhbHVlOiBhbnk7XG4gICAgYWRkaXRpb25hbFZhbHVlOiBzdHJpbmc7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBhY2Nlc3Nvcnk6IHN0cmluZztcbiAgICBtYW5kYXRvcnk6IGJvb2xlYW47XG4gICAgcmVhZG9ubHk6IGJvb2xlYW47XG4gICAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgb3JkZXI6IG51bWJlcjtcbiAgICAvLyB0eXBlOiBzdHJpbmc7XG4gICAgY29udHJvbFR5cGU6IHN0cmluZztcbiAgICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIGhpZGRlbjogYm9vbGVhbjtcbiAgICByb3c6IG51bWJlcjtcbiAgICByb3dTcGFuOiBudW1iZXI7XG4gICAgY29sOiBudW1iZXI7XG4gICAgY29sU3BhbjogbnVtYmVyO1xuICAgIHhBbGlnbm1lbnQ6IFBlcEhvcml6b250YWxBbGlnbm1lbnQ7XG4gICAgeUFsaWdubWVudDogUGVwVmVydGljYWxBbGlnbm1lbnQ7XG4gICAgZ3JvdXBGaWVsZHM6IFBlcEZpZWxkQmFzZVtdO1xuICAgIG1heEZpZWxkQ2hhcmFjdGVyczogbnVtYmVyO1xuICAgIG1pblZhbHVlOiBudW1iZXI7XG4gICAgbWF4VmFsdWU6IG51bWJlcjtcbiAgICB0ZXh0Q29sb3I6IHN0cmluZztcbiAgICB2aXNpYmxlOiBib29sZWFuO1xuICAgIC8vIGxhc3RGb2N1c0ZpZWxkOiBhbnk7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwRmllbGRCYXNlT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHRoaXMua2V5ID0gb3B0aW9ucy5rZXkgfHwgJyc7XG4gICAgICAgIHRoaXMubGFiZWwgPSBvcHRpb25zLmxhYmVsIHx8ICcnO1xuICAgICAgICB0aGlzLmFjY2Vzc29yeSA9IG9wdGlvbnMuYWNjZXNzb3J5IHx8ICcnO1xuICAgICAgICB0aGlzLm1hbmRhdG9yeSA9ICEhb3B0aW9ucy5tYW5kYXRvcnk7XG5cbiAgICAgICAgdGhpcy5vcmRlciA9IG9wdGlvbnMub3JkZXIgPz8gMTtcbiAgICAgICAgdGhpcy5jb250cm9sVHlwZSA9IG9wdGlvbnMuY29udHJvbFR5cGUgfHwgJyc7XG4gICAgICAgIC8vIHRoaXMudHlwZSA9IG9wdGlvbnMudHlwZSB8fCAnJztcbiAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IG9wdGlvbnMucGxhY2Vob2xkZXIgfHwgJyc7XG4gICAgICAgIHRoaXMuaGlkZGVuID0gISFvcHRpb25zLmhpZGRlbjtcblxuICAgICAgICB0aGlzLnJvdyA9IG9wdGlvbnMucm93ID8/IDE7XG4gICAgICAgIHRoaXMucm93U3BhbiA9IG9wdGlvbnMucm93U3BhbiA/PyAxO1xuICAgICAgICB0aGlzLmNvbCA9IG9wdGlvbnMuY29sID8/IDE7XG4gICAgICAgIHRoaXMuY29sU3BhbiA9IG9wdGlvbnMuY29sU3BhbiA/PyAxO1xuXG4gICAgICAgIHRoaXMueEFsaWdubWVudCA9IG9wdGlvbnMueEFsaWdubWVudCA/PyBERUZBVUxUX0hPUklaT05UQUxfQUxJR05NRU5UO1xuICAgICAgICB0aGlzLnlBbGlnbm1lbnQgPSBvcHRpb25zLnlBbGlnbm1lbnQgPz8gREVGQVVMVF9WRVJUSUNBTF9BTElHTk1FTlQ7XG5cbiAgICAgICAgdGhpcy5tYXhGaWVsZENoYXJhY3RlcnMgPSBvcHRpb25zLm1heEZpZWxkQ2hhcmFjdGVycyA/PyAwO1xuICAgICAgICB0aGlzLm1pblZhbHVlID0gb3B0aW9ucy5taW5WYWx1ZSA/PyAwO1xuICAgICAgICB0aGlzLm1heFZhbHVlID0gb3B0aW9ucy5tYXhWYWx1ZSA/PyAwO1xuXG4gICAgICAgIHRoaXMudXBkYXRlKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRCYXNlVmFsaWRhdG9ycyhpc0NoZWNrYm94ID0gZmFsc2UpOiBWYWxpZGF0b3JGbltdIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IFtdO1xuXG4gICAgICAgIGlmICh0aGlzLm1hbmRhdG9yeSAmJiAhdGhpcy5yZWFkb25seSAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgaWYgKGlzQ2hlY2tib3gpIHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZFRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5udWxsVmFsaWRhdG9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1heEZpZWxkQ2hhcmFjdGVycyA+IDApIHtcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm1heEZpZWxkQ2hhcmFjdGVycykpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbGlkYXRvcnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbGlkYXRvcnMoKTogVmFsaWRhdG9yRm5bXSB7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSB0aGlzLmdldEJhc2VWYWxpZGF0b3JzKCk7XG4gICAgICAgIHJldHVybiB2YWxpZGF0b3JzO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGUob3B0aW9uczogSVBlcEZpZWxkQmFzZU9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IG9wdGlvbnMudmFsdWU7XG4gICAgICAgIHRoaXMuZm9ybWF0dGVkVmFsdWUgPSBvcHRpb25zLmZvcm1hdHRlZFZhbHVlO1xuICAgICAgICB0aGlzLmFkZGl0aW9uYWxWYWx1ZSA9IG9wdGlvbnMuYWRkaXRpb25hbFZhbHVlO1xuXG4gICAgICAgIHRoaXMucmVhZG9ubHkgPSAhIW9wdGlvbnMucmVhZG9ubHk7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSAhIW9wdGlvbnMuZGlzYWJsZWQ7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9ICEhb3B0aW9ucy52aXNpYmxlO1xuICAgICAgICB0aGlzLnRleHRDb2xvciA9IG9wdGlvbnMudGV4dENvbG9yIHx8ICcnO1xuICAgICAgICAvLyB0aGlzLmxhc3RGb2N1c0ZpZWxkID0gb3B0aW9ucy5sYXN0Rm9jdXNGaWVsZCB8fCBudWxsO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBlcFBsYWNlaG9sZGVyRmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ3BsYWNlaG9sZGVyJztcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBGaWVsZEJhc2VPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVwU2VwYXJhdG9yRmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ3NlcGFyYXRvcic7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwRmllbGRCYXNlT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBlcEF0dGFjaG1lbnRGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAnYXR0YWNobWVudCc7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwRmllbGRCYXNlT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBlcEluZGljYXRvcnNGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAnaW5kaWNhdG9ycyc7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwRmllbGRCYXNlT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgUGVwVGV4dGJveEZpZWxkVHlwZSA9XG4gICAgfCAndGV4dCdcbiAgICB8ICdsaW5rJ1xuICAgIHwgJ2VtYWlsJ1xuICAgIHwgJ3Bob25lJ1xuICAgIHwgJ2R1cmF0aW9uJ1xuICAgIHwgJ2ludCdcbiAgICB8ICdwZXJjZW50YWdlJ1xuICAgIHwgJ2N1cnJlbmN5J1xuICAgIHwgJ3JlYWwnO1xuaW50ZXJmYWNlIElQZXBUZXh0Ym94RmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIHR5cGU/OiBQZXBUZXh0Ym94RmllbGRUeXBlO1xufVxuZXhwb3J0IGNsYXNzIFBlcFRleHRib3hGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAndGV4dGJveCc7XG4gICAgdHlwZTogUGVwVGV4dGJveEZpZWxkVHlwZSA9ICd0ZXh0JztcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBUZXh0Ym94RmllbGRPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy50eXBlID0gb3B0aW9ucy50eXBlIHx8ICd0ZXh0JztcblxuICAgICAgICB0aGlzLnVwZGF0ZShvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlKG9wdGlvbnM6IElQZXBUZXh0Ym94RmllbGRPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLnVwZGF0ZShvcHRpb25zKTtcblxuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnbGluaycpIHtcbiAgICAgICAgICAgIC8vIERJLTExMjkyIC0gYWRkIGNoYW5nZXMgZm9yIGxpbmsgZmllbGQgZm9yIHRoZSBcIlJlYWQgT25seSBkaXNwbGF5IHZhbHVlXCIgcHJvcFxuICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWRWYWx1ZSA9XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCAmJiB0aGlzLmZvcm1hdHRlZFZhbHVlICYmIHRoaXMudmFsdWVcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmZvcm1hdHRlZFZhbHVlXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy52YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWxpZGF0b3JzKCk6IFZhbGlkYXRvckZuW10ge1xuICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gc3VwZXIuZ2V0QmFzZVZhbGlkYXRvcnMoKTtcblxuICAgICAgICBpZiAodGhpcy50eXBlID09PSAnZW1haWwnKSB7XG4gICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKFxuICAgICAgICAgICAgICAgICAgICAvXigoW148PigpXFxbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31dKXwoKFthLXpBLVpcXC0wLTldK1xcLikrW2EtekEtWl17Mix9KSkkL1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAncGhvbmUnKSB7XG4gICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKC9eW1xcZFxcLlxcLVxcK1xcKFxcKVxcKlxcI10rJC8pKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICdpbnQnIHx8IHRoaXMudHlwZSA9PT0gJ3JlYWwnKSB7XG4gICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKC9eW1xcLixcXC1cXCtcXGRdKyQvKSk7XG5cbiAgICAgICAgICAgIGlmICghaXNOYU4odGhpcy5taW5WYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW4odGhpcy5taW5WYWx1ZSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWlzTmFOKHRoaXMubWF4VmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4KHRoaXMubWF4VmFsdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWxpZGF0b3JzO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBlcExpbmtGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAnbGluayc7XG4gICAgdHlwZTogUGVwVGV4dGJveEZpZWxkVHlwZSA9ICdsaW5rJztcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBGaWVsZEJhc2VPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy51cGRhdGUob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZShvcHRpb25zOiBJUGVwVGV4dGJveEZpZWxkT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICBzdXBlci51cGRhdGUob3B0aW9ucyk7XG5cbiAgICAgICAgLy8gREktMTEyOTIgLSBhZGQgY2hhbmdlcyBmb3IgbGluayBmaWVsZCBmb3IgdGhlIFwiUmVhZCBPbmx5IGRpc3BsYXkgdmFsdWVcIiBwcm9wXG4gICAgICAgIHRoaXMuZm9ybWF0dGVkVmFsdWUgPVxuICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCAmJiB0aGlzLmZvcm1hdHRlZFZhbHVlICYmIHRoaXMudmFsdWVcbiAgICAgICAgICAgICAgICA/IHRoaXMuZm9ybWF0dGVkVmFsdWVcbiAgICAgICAgICAgICAgICA6IHRoaXMudmFsdWU7XG5cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQZXBUZXh0YXJlYUZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICd0ZXh0YXJlYSc7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwRmllbGRCYXNlT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICAvLyB0aGlzLnR5cGUgPSAndGV4dGFyZWEnO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBlcFJpY2hIdG1sVGV4dGFyZWFGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAncmljaGh0bWx0ZXh0YXJlYSc7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwRmllbGRCYXNlT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICAvLyB0aGlzLnR5cGUgPSAncmljaGh0bWx0ZXh0YXJlYSc7XG4gICAgfVxufVxuXG5pbnRlcmZhY2UgSVBlcFNpZ25hdHVyZUZpZWxkT3B0aW9ucyBleHRlbmRzIElQZXBGaWVsZEJhc2VPcHRpb25zIHtcbiAgICBvcHRpb25zPzogSVBlcE9wdGlvbltdO1xufVxuZXhwb3J0IGNsYXNzIFBlcFNpZ25hdHVyZUZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdzaWduYXR1cmUnO1xuICAgIG9wdGlvbnM6IElQZXBPcHRpb25bXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcFNpZ25hdHVyZUZpZWxkT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zLm9wdGlvbnMgfHwgW107XG4gICAgfVxufVxuXG5pbnRlcmZhY2UgSVBlcEltYWdlRmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIGhhc0NhbXBhaWduRmllbGQ/OiBhbnk7XG4gICAgaW5kaWNhdG9yc0ZpZWxkPzogYW55O1xuICAgIG1lbnVGaWVsZD86IGFueTtcbiAgICBvcHRpb25zPzogSVBlcE9wdGlvbltdO1xuICAgIHNpemVMaW1pdE1CPzogbnVtYmVyO1xufVxuZXhwb3J0IGNsYXNzIFBlcEltYWdlRmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ2ltYWdlJztcbiAgICBoYXNDYW1wYWlnbkZpZWxkID0gbnVsbDtcbiAgICBpbmRpY2F0b3JzRmllbGQgPSBudWxsO1xuICAgIG1lbnVGaWVsZCA9IG51bGw7XG4gICAgb3B0aW9uczogSVBlcE9wdGlvbltdID0gW107XG4gICAgc2l6ZUxpbWl0TUIgPSA1O1xuXG4gICAgY29uc3RydWN0b3Iob3B0aW9uczogSVBlcEltYWdlRmllbGRPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMuaGFzQ2FtcGFpZ25GaWVsZCA9IG9wdGlvbnMuaGFzQ2FtcGFpZ25GaWVsZCB8fCBudWxsO1xuICAgICAgICB0aGlzLmluZGljYXRvcnNGaWVsZCA9IG9wdGlvbnMuaW5kaWNhdG9yc0ZpZWxkIHx8IG51bGw7XG4gICAgICAgIHRoaXMubWVudUZpZWxkID0gb3B0aW9ucy5tZW51RmllbGQgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucy5vcHRpb25zIHx8IFtdO1xuICAgICAgICB0aGlzLnNpemVMaW1pdE1CID0gb3B0aW9ucy5zaXplTGltaXRNQiB8fCA1O1xuICAgIH1cbn1cblxuaW50ZXJmYWNlIElQZXBJbWFnZXNGaWVsZE9wdGlvbnMgZXh0ZW5kcyBJUGVwRmllbGRCYXNlT3B0aW9ucyB7XG4gICAgb3B0aW9ucz86IElQZXBPcHRpb25bXTtcbn1cbmV4cG9ydCBjbGFzcyBQZXBJbWFnZXNGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAnaW1hZ2VzJztcbiAgICBvcHRpb25zOiBJUGVwT3B0aW9uW10gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBJbWFnZXNGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucy5vcHRpb25zIHx8IFtdO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgUGVwUXVhbnRpdHlTZWxlY3RvckZpZWxkVHlwZSA9XG4gICAgfCAnYnV0dG9uJ1xuICAgIHwgJ3BhY2thZ2VCdXR0b24nXG4gICAgfCAncXMnXG4gICAgfCAncXNGb3JNYXRyaXgnO1xuaW50ZXJmYWNlIElQZXBRdWFudGl0eVNlbGVjdG9yRmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIGFsbG93RGVjaW1hbD86IGJvb2xlYW47XG4gICAgbm90aWZpY2F0aW9uSW5mbz86IGFueTtcbiAgICB0eXBlPzogUGVwUXVhbnRpdHlTZWxlY3RvckZpZWxkVHlwZTtcbn1cbmV4cG9ydCBjbGFzcyBQZXBRdWFudGl0eVNlbGVjdG9yRmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ3FzJztcbiAgICBhbGxvd0RlY2ltYWw6IGJvb2xlYW47XG4gICAgbm90aWZpY2F0aW9uSW5mbzogYW55ID0ge307XG4gICAgdXBkYXRlZERhdGFDb3VudDogbnVtYmVyO1xuICAgIHR5cGU6IFBlcFF1YW50aXR5U2VsZWN0b3JGaWVsZFR5cGU7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwUXVhbnRpdHlTZWxlY3RvckZpZWxkT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMudXBkYXRlZERhdGFDb3VudCA9IDA7XG4gICAgICAgIHRoaXMudHlwZSA9IG9wdGlvbnMudHlwZSB8fCAncXMnO1xuXG4gICAgICAgIHRoaXMudXBkYXRlKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGUob3B0aW9uczogSVBlcFF1YW50aXR5U2VsZWN0b3JGaWVsZE9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIudXBkYXRlKG9wdGlvbnMpO1xuICAgICAgICBcbiAgICAgICAgdGhpcy5hbGxvd0RlY2ltYWwgPSBvcHRpb25zLmFsbG93RGVjaW1hbCB8fCBmYWxzZTtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25JbmZvID0gb3B0aW9ucy5ub3RpZmljYXRpb25JbmZvO1xuICAgICAgICB0aGlzLnVwZGF0ZWREYXRhQ291bnQgKz0gMTtcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFBlcERhdGVGaWVsZFR5cGUgPSAnZGF0ZXRpbWUnIHwgJ2RhdGUnO1xuaW50ZXJmYWNlIElQZXBEYXRlRmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIHR5cGU/OiBQZXBEYXRlRmllbGRUeXBlO1xufVxuZXhwb3J0IGNsYXNzIFBlcERhdGVGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAnZGF0ZSc7XG4gICAgdHlwZTogUGVwRGF0ZUZpZWxkVHlwZTtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBEYXRlRmllbGRPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy50eXBlID0gb3B0aW9ucy50eXBlIHx8ICdkYXRlJztcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFBlcENoZWNrYm94RmllbGRUeXBlID0gJ2NoZWNrYm94JyB8ICdib29sZWFuVGV4dCc7XG5pbnRlcmZhY2UgSVBlcENoZWNrYm94RmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIHR5cGU/OiBQZXBDaGVja2JveEZpZWxkVHlwZTtcbn1cbmV4cG9ydCBjbGFzcyBQZXBDaGVja2JveEZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdjaGVja2JveCc7XG4gICAgdHlwZTogUGVwQ2hlY2tib3hGaWVsZFR5cGU7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwQ2hlY2tib3hGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcblxuICAgICAgICB0aGlzLnR5cGUgPSBvcHRpb25zLnR5cGUgfHwgJ2NoZWNrYm94JztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VmFsaWRhdG9ycygpOiBWYWxpZGF0b3JGbltdIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IHN1cGVyLmdldEJhc2VWYWxpZGF0b3JzKHRydWUpO1xuICAgICAgICByZXR1cm4gdmFsaWRhdG9ycztcbiAgICB9XG59XG5cbmV4cG9ydCB0eXBlIFBlcFNlbGVjdEZpZWxkVHlwZSA9ICdzZWxlY3QnIHwgJ211bHRpJztcbmludGVyZmFjZSBJUGVwU2VsZWN0RmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIG9wdGlvbnM/OiBJUGVwT3B0aW9uW107XG4gICAgdHlwZT86IFBlcFNlbGVjdEZpZWxkVHlwZTtcbn1cbmV4cG9ydCBjbGFzcyBQZXBTZWxlY3RGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAnc2VsZWN0JztcbiAgICBvcHRpb25zOiBJUGVwT3B0aW9uW10gPSBbXTtcbiAgICB0eXBlOiBQZXBTZWxlY3RGaWVsZFR5cGU7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwU2VsZWN0RmllbGRPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMudHlwZSA9IG9wdGlvbnMudHlwZSB8fCAnc2VsZWN0JztcblxuICAgICAgICB0aGlzLnVwZGF0ZShvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlKG9wdGlvbnM6IElQZXBTZWxlY3RGaWVsZE9wdGlvbnMpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIudXBkYXRlKG9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMub3B0aW9ucyB8fCBbXTtcbiAgICB9XG59XG5cbmludGVyZmFjZSBJUGVwQWRkcmVzc0ZpZWxkT3B0aW9ucyBleHRlbmRzIElQZXBGaWVsZEJhc2VPcHRpb25zIHtcbiAgICBncm91cEZpZWxkcz86IFBlcEZpZWxkQmFzZVtdO1xufVxuZXhwb3J0IGNsYXNzIFBlcEFkZHJlc3NGaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAnYWRkcmVzcyc7XG4gICAgZ3JvdXBGaWVsZHM6IFBlcEZpZWxkQmFzZVtdID0gbnVsbDtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBBZGRyZXNzRmllbGRPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMuZ3JvdXBGaWVsZHMgPSBvcHRpb25zLmdyb3VwRmllbGRzIHx8IG51bGw7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBQZXBJbnRlcm5hbEJ1dHRvbkZpZWxkVHlwZSA9XG4gICAgfCAnYnV0dG9uJ1xuICAgIHwgJ3JlZmVyZW5jZSdcbiAgICB8ICdsaXN0b2ZvYmplY3RzJztcbmludGVyZmFjZSBJUGVwSW50ZXJuYWxCdXR0b25GaWVsZE9wdGlvbnMgZXh0ZW5kcyBJUGVwRmllbGRCYXNlT3B0aW9ucyB7XG4gICAgcmVmZXJlbmNlT2JqZWN0VHlwZT86IGFueTtcbiAgICByZWZlcmVuY2VPYmplY3RTdWJUeXBlPzogc3RyaW5nO1xuICAgIHJlZmVyZW5jZU9iamVjdEludGVybmFsVHlwZT86IHN0cmluZztcbiAgICB0eXBlPzogUGVwSW50ZXJuYWxCdXR0b25GaWVsZFR5cGU7XG59XG5leHBvcnQgY2xhc3MgUGVwSW50ZXJuYWxCdXR0b25GaWVsZCBleHRlbmRzIFBlcEZpZWxkQmFzZSB7XG4gICAgY29udHJvbFR5cGUgPSAnYnV0dG9uJztcbiAgICByZWZlcmVuY2VPYmplY3RUeXBlO1xuICAgIHJlZmVyZW5jZU9iamVjdFN1YlR5cGUgPSAnJztcbiAgICByZWZlcmVuY2VPYmplY3RJbnRlcm5hbFR5cGUgPSAnJztcbiAgICB0eXBlOiBQZXBJbnRlcm5hbEJ1dHRvbkZpZWxkVHlwZTtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBJbnRlcm5hbEJ1dHRvbkZpZWxkT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgICAgIHRoaXMucmVmZXJlbmNlT2JqZWN0VHlwZSA9IG9wdGlvbnMucmVmZXJlbmNlT2JqZWN0VHlwZSB8fCBudWxsO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZU9iamVjdFN1YlR5cGUgPSBvcHRpb25zLnJlZmVyZW5jZU9iamVjdFN1YlR5cGUgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5yZWZlcmVuY2VPYmplY3RJbnRlcm5hbFR5cGUgPVxuICAgICAgICAgICAgb3B0aW9ucy5yZWZlcmVuY2VPYmplY3RJbnRlcm5hbFR5cGUgfHwgbnVsbDtcblxuICAgICAgICB0aGlzLnR5cGUgPSBvcHRpb25zLnR5cGUgfHwgJ2J1dHRvbic7XG4gICAgfVxufVxuXG5pbnRlcmZhY2UgSVBlcEludGVybmFsUGFnZUZpZWxkT3B0aW9ucyBleHRlbmRzIElQZXBGaWVsZEJhc2VPcHRpb25zIHtcbiAgICBvYmplY3RJZD86IHN0cmluZztcbiAgICBwYXJlbnRJZD86IHN0cmluZztcbiAgICBzZWFyY2hDb2RlPzogc3RyaW5nO1xufVxuZXhwb3J0IGNsYXNzIFBlcEludGVybmFsUGFnZUZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdpbnRlcm5hbFBhZ2UnO1xuICAgIG9iamVjdElkID0gJyc7XG4gICAgcGFyZW50SWQgPSAnJztcbiAgICBzZWFyY2hDb2RlID0gJyc7XG5cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zOiBJUGVwSW50ZXJuYWxQYWdlRmllbGRPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMub2JqZWN0SWQgPSBvcHRpb25zLm9iamVjdElkIHx8ICcnO1xuICAgICAgICB0aGlzLnBhcmVudElkID0gb3B0aW9ucy5wYXJlbnRJZCB8fCAnJztcbiAgICAgICAgdGhpcy5zZWFyY2hDb2RlID0gb3B0aW9ucy5zZWFyY2hDb2RlIHx8ICcnO1xuICAgIH1cbn1cblxuXG5pbnRlcmZhY2UgSVBlcEludGVybmFsQ2FydXNlbEZpZWxkT3B0aW9ucyBleHRlbmRzIElQZXBGaWVsZEJhc2VPcHRpb25zIHtcbiAgICBzZWFyY2hDb2RlPzogc3RyaW5nO1xuICAgIHBhZ2VJbmZvPzogYW55O1xufVxuZXhwb3J0IGNsYXNzIFBlcEludGVybmFsQ2FydXNlbEZpZWxkIGV4dGVuZHMgUGVwRmllbGRCYXNlIHtcbiAgICBjb250cm9sVHlwZSA9ICdpbnRlcm5hbENhcnVzZWwnO1xuICAgIHNlYXJjaENvZGUgPSAnJztcbiAgICBwYWdlSW5mbztcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBJbnRlcm5hbENhcnVzZWxGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5zZWFyY2hDb2RlID0gb3B0aW9ucy5zZWFyY2hDb2RlIHx8ICcnO1xuXG4gICAgICAgIHRoaXMudXBkYXRlKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGUob3B0aW9uczogSVBlcEludGVybmFsQ2FydXNlbEZpZWxkT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICBzdXBlci51cGRhdGUob3B0aW9ucyk7XG5cbiAgICAgICAgdGhpcy5wYWdlSW5mbyA9IG9wdGlvbnMucGFnZUluZm87XG4gICAgfVxufVxuXG5cbmludGVyZmFjZSBJUGVwSW50ZXJuYWxNZW51RmllbGRPcHRpb25zIGV4dGVuZHMgSVBlcEZpZWxkQmFzZU9wdGlvbnMge1xuICAgIG9wdGlvbnM/OiBJUGVwT3B0aW9uW107XG59XG5leHBvcnQgY2xhc3MgUGVwSW50ZXJuYWxNZW51RmllbGQgZXh0ZW5kcyBQZXBGaWVsZEJhc2Uge1xuICAgIGNvbnRyb2xUeXBlID0gJ21lbnUnO1xuICAgIG9wdGlvbnM6IElQZXBPcHRpb25bXSA9IFtdO1xuICAgIC8vIGhhc1N1Yk1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElQZXBJbnRlcm5hbE1lbnVGaWVsZE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucy5vcHRpb25zIHx8IFtdO1xuICAgICAgICAvLyB0aGlzLmhhc1N1Yk1lbnUgPSBvcHRpb25zWydoYXNTdWJNZW51J107XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQZXBGaWVsZFZhbHVlQ2hhbmdlRXZlbnQge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgY29udHJvbFR5cGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcEZpZWxkQ2xpY2tFdmVudCB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gICAgY29udHJvbFR5cGU/OiBzdHJpbmc7XG4gICAgZXZlbnRXaGljaD86IGFueTtcbiAgICBvdGhlckRhdGE/OiBhbnk7XG59XG4iXX0=
@@ -1,9 +1,14 @@
1
1
  import { Component, ElementRef, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewChild, Renderer2, } from '@angular/core';
2
- import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
2
+ import { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';
3
3
  import { DatetimeAdapter, MAT_DATETIME_FORMATS, } from '@mat-datetimepicker/core';
4
4
  import { PepLayoutService, PepUtilitiesService, PepCustomizationService, DEFAULT_HORIZONTAL_ALIGNMENT, PepDateField, } from '@pepperi-addons/ngx-lib';
5
5
  import { utc } from 'moment/moment';
6
6
  import { MomentUtcDateAdapter, MomentUtcDateTimeAdapter, MY_DATE_FORMATS } from './date.model';
7
+ // Set the calture for the adapter.
8
+ export function getCalture(layoutService) {
9
+ const culture = layoutService.getCurrentLanguage();
10
+ return culture;
11
+ }
7
12
  const ɵ0 = MY_DATE_FORMATS, ɵ1 = MY_DATE_FORMATS;
8
13
  export class PepDateComponent {
9
14
  constructor(adapter, element, layoutService, utilitiesService, customizationService, renderer) {
@@ -104,8 +109,9 @@ export class PepDateComponent {
104
109
  this.renderer.addClass(this.element.nativeElement, PepCustomizationService.STAND_ALONE_FIELD_NO_SPACING_CLASS_NAME);
105
110
  }
106
111
  }
107
- const culture = this.layoutService.getCurrentLanguage();
108
- this.adapter.setLocale(culture);
112
+ // This is not working for the dateModel so I use set calure in the useFactory: getCalture function.
113
+ // const culture = this.layoutService.getCurrentLanguage();
114
+ // this.adapter.setLocale(culture);
109
115
  this.setDateModel();
110
116
  }
111
117
  ngOnChanges(changes) {
@@ -190,7 +196,8 @@ PepDateComponent.decorators = [
190
196
  // CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR,
191
197
  // The locale would typically be provided on the root module of your application. We do it at
192
198
  // the component level here, due to limitations of our example generation script.
193
- //{ provide: MAT_DATE_LOCALE, useValue: 'en-US' },
199
+ // { provide: MAT_DATE_LOCALE, useValue: 'he' },
200
+ { provide: MAT_DATE_LOCALE, useFactory: getCalture, deps: [PepLayoutService] },
194
201
  // `MomentDateAdapter` and `MAT_MOMENT_DATE_FORMATS` can be automatically provided by importing
195
202
  // `MatMomentDateModule` in your applications root module. We provide it at the component level
196
203
  // here, due to limitations of our example generation script.
@@ -242,4 +249,4 @@ PepDateComponent.propDecorators = {
242
249
  input: [{ type: ViewChild, args: ['input',] }]
243
250
  };
244
251
  export { ɵ0, ɵ1 };
245
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2RhdGUvZGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBRVYsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxTQUFTLEdBSVosTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZFLE9BQU8sRUFDSCxlQUFlLEVBRWYsb0JBQW9CLEdBQ3ZCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUNILGdCQUFnQixFQUNoQixtQkFBbUIsRUFFbkIsdUJBQXVCLEVBRXZCLDRCQUE0QixFQUU1QixZQUFZLEdBQ2YsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQVUsR0FBRyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7V0FtQmhELGVBQWUsT0FHWCxlQUFlO0FBR2xFLE1BQU0sT0FBTyxnQkFBZ0I7SUF5R3pCLFlBQ1ksT0FBeUIsRUFDekIsT0FBbUIsRUFDbkIsYUFBK0IsRUFDL0IsZ0JBQXFDLEVBQ3JDLG9CQUE2QyxFQUM3QyxRQUFtQjtRQUxuQixZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUN6QixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXFCO1FBQ3JDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBeUI7UUFDN0MsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQTlHdEIsUUFBRyxHQUFHLEVBQUUsQ0FBQztRQUVWLFdB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QkFBb0IsRUFBRSxRQUFRLElBQWlCLEVBQUU7aUJBQy9EOzthQUNKOzs7WUExQ1EsV0FBVztZQWRoQixVQUFVO1lBc0JWLGdCQUFnQjtZQUNoQixtQkFBbUI7WUFFbkIsdUJBQXVCO1lBbEJ2QixTQUFTOzs7a0JBbURSLEtBQUs7b0JBR0wsS0FBSzs2QkFTTCxLQUFLO29CQUNMLEtBQUs7bUJBR0wsS0FBSzt3QkFTTCxLQUFLO3VCQUNMLEtBQUs7dUJBQ0wsS0FBSzt3QkFDTCxLQUFLO3lCQUNMLEtBQUs7c0JBQ0wsS0FBSztzQkFHTCxLQUFLO3VCQW9CTCxLQUFLO3VCQVFMLEtBQUs7MkJBUUwsS0FBSzsyQkFNTCxLQUFLO21CQU9MLEtBQUs7dUJBQ0wsS0FBSzt3QkFDTCxLQUFLOzBCQUNMLEtBQUs7MEJBQ0wsS0FBSzsyQkFDTCxLQUFLO3lCQUNMLEtBQUs7MEJBRUwsTUFBTTs2QkFFTixTQUFTLFNBQUMsZ0JBQWdCO29CQUUxQixTQUFTLFNBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgT25Jbml0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgVmlld0NoaWxkLFxuICAgIFJlbmRlcmVyMixcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25DaGFuZ2VzLFxuICAgIE9wdGlvbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1vbWVudERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXInO1xuaW1wb3J0IHsgRGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7XG4gICAgRGF0ZXRpbWVBZGFwdGVyLFxuICAgIE1hdERhdGV0aW1lcGlja2VySW5wdXRFdmVudCxcbiAgICBNQVRfREFURVRJTUVfRk9STUFUUyxcbn0gZnJvbSAnQG1hdC1kYXRldGltZXBpY2tlci9jb3JlJztcbmltcG9ydCB7IE1vbWVudERhdGV0aW1lQWRhcHRlciB9IGZyb20gJ0BtYXQtZGF0ZXRpbWVwaWNrZXIvbW9tZW50JztcbmltcG9ydCB7XG4gICAgUGVwTGF5b3V0U2VydmljZSxcbiAgICBQZXBVdGlsaXRpZXNTZXJ2aWNlLFxuICAgIFBlcExheW91dFR5cGUsXG4gICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UsXG4gICAgUGVwSG9yaXpvbnRhbEFsaWdubWVudCxcbiAgICBERUZBVUxUX0hPUklaT05UQUxfQUxJR05NRU5ULFxuICAgIFBlcERhdGVGaWVsZFR5cGUsXG4gICAgUGVwRGF0ZUZpZWxkLFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5pbXBvcnQgeyBNb21lbnQsIHV0YyB9IGZyb20gJ21vbWVudC9tb21lbnQnO1xuaW1wb3J0IHsgTW9tZW50VXRjRGF0ZUFkYXB0ZXIsIE1vbWVudFV0Y0RhdGVUaW1lQWRhcHRlciwgTVlfREFURV9GT1JNQVRTIH0gZnJvbSAnLi9kYXRlLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtZGF0ZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGUuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RhdGUuY29tcG9uZW50LnNjc3MnLCAnLi9kYXRlLmNvbXBvbmVudC50aGVtZS5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIC8vIENVU1RPTV9JTlBVVF9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAvLyBUaGUgbG9jYWxlIHdvdWxkIHR5cGljYWxseSBiZSBwcm92aWRlZCBvbiB0aGUgcm9vdCBtb2R1bGUgb2YgeW91ciBhcHBsaWNhdGlvbi4gV2UgZG8gaXQgYXRcbiAgICAgICAgLy8gdGhlIGNvbXBvbmVudCBsZXZlbCBoZXJlLCBkdWUgdG8gbGltaXRhdGlvbnMgb2Ygb3VyIGV4YW1wbGUgZ2VuZXJhdGlvbiBzY3JpcHQuXG4gICAgICAgIC8veyBwcm92aWRlOiBNQVRfREFURV9MT0NBTEUsIHVzZVZhbHVlOiAnZW4tVVMnIH0sXG5cbiAgICAgICAgLy8gYE1vbWVudERhdGVBZGFwdGVyYCBhbmQgYE1BVF9NT01FTlRfREFURV9GT1JNQVRTYCBjYW4gYmUgYXV0b21hdGljYWxseSBwcm92aWRlZCBieSBpbXBvcnRpbmdcbiAgICAgICAgLy8gYE1hdE1vbWVudERhdGVNb2R1bGVgIGluIHlvdXIgYXBwbGljYXRpb25zIHJvb3QgbW9kdWxlLiBXZSBwcm92aWRlIGl0IGF0IHRoZSBjb21wb25lbnQgbGV2ZWxcbiAgICAgICAgLy8gaGVyZSwgZHVlIHRvIGxpbWl0YXRpb25zIG9mIG91ciBleGFtcGxlIGdlbmVyYXRpb24gc2NyaXB0LlxuICAgICAgICAvL3sgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBNb21lbnREYXRlQWRhcHRlciwgZGVwczogW01BVF9EQVRFX0xPQ0FMRV0gfSxcbiAgICAgICAgLy97IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBNQVRfTU9NRU5UX0RBVEVfRk9STUFUUyB9LFxuICAgICAgICB7IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogTW9tZW50VXRjRGF0ZUFkYXB0ZXIgfSxcbiAgICAgICAgeyBwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogTVlfREFURV9GT1JNQVRTIH0sXG4gICAgICAgIHsgcHJvdmlkZTogRGF0ZXRpbWVBZGFwdGVyLCB1c2VDbGFzczogTW9tZW50VXRjRGF0ZVRpbWVBZGFwdGVyIH0sXG4gICAgICAgIC8veyBwcm92aWRlOiBNQVRfREFURVRJTUVfRk9STUFUUywgdXNlVmFsdWU6IE1BVF9OQVRJVkVfREFURVRJTUVfRk9STUFUUyB9XG4gICAgICAgIHsgcHJvdmlkZTogTUFUX0RBVEVUSU1FX0ZPUk1BVFMsIHVzZVZhbHVlOiBNWV9EQVRFX0ZPUk1BVFMgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBEYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkga2V5ID0gJyc7XG5cbiAgICBwcml2YXRlIF92YWx1ZSA9ICcnO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXREYXRlTW9kZWwoKTtcbiAgICB9XG4gICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZm9ybWF0dGVkVmFsdWUgPSAnJztcbiAgICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuXG4gICAgcHJpdmF0ZSBfdHlwZTogUGVwRGF0ZUZpZWxkVHlwZSA9ICdkYXRlJztcbiAgICBASW5wdXQoKVxuICAgIHNldCB0eXBlKHR5cGU6IFBlcERhdGVGaWVsZFR5cGUpIHtcbiAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7XG4gICAgICAgIHRoaXMuc2hvd1RpbWUgPSB0eXBlID09PSAnZGF0ZXRpbWUnO1xuICAgIH1cbiAgICBnZXQgdHlwZSgpOiBQZXBEYXRlRmllbGRUeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgbWFuZGF0b3J5ID0gZmFsc2U7XG4gICAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHRleHRDb2xvciA9ICcnO1xuICAgIEBJbnB1dCgpIHhBbGlnbm1lbnQ6IFBlcEhvcml6b250YWxBbGlnbm1lbnQgPSBERUZBVUxUX0hPUklaT05UQUxfQUxJR05NRU5UO1xuICAgIEBJbnB1dCgpIHJvd1NwYW4gPSAxO1xuXG4gICAgcHJpdmF0ZSBfdmlzaWJsZSA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBzZXQgdmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGUgPSB2aXNpYmxlO1xuICAgICAgICBpZiAodmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAnaGlkZGVuLWVsZW1lbnQnXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAnaGlkZGVuLWVsZW1lbnQnXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgICB9XG5cbiAgICAvLyBNaW5pbXVtIGluIHRoaWNrc1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1pblZhbHVlKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHZhbHVlID4gMCkge1xuICAgICAgICAgICAgdGhpcy5taW5EYXRlID0gbmV3IERhdGUodmFsdWUgKiAxMDAwICogNjAgKiA2MCAqIDI0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1heGltdW0gaW4gdGhpY2tzXG4gICAgQElucHV0KClcbiAgICBzZXQgbWF4VmFsdWUodmFsdWU6IG51bWJlcikge1xuICAgICAgICBpZiAodmFsdWUgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm1heERhdGUgPSBuZXcgRGF0ZSh2YWx1ZSAqIDEwMDAgKiA2MCAqIDYwICogMjQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWluaW11bSBpbiBkYXRlXG4gICAgQElucHV0KClcbiAgICBzZXQgbWluRGF0ZVZhbHVlKGRhdGU6IHN0cmluZykge1xuICAgICAgICB0aGlzLm1pbkRhdGUgPSBkYXRlID8gbmV3IERhdGUoZGF0ZSkgOiBudWxsO1xuICAgIH1cblxuICAgIC8vIE1heGltdW0gaW4gZGF0ZVxuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1heERhdGVWYWx1ZShkYXRlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5tYXhEYXRlID0gZGF0ZSA/IG5ldyBEYXRlKGRhdGUpIDogbnVsbDtcbiAgICB9XG5cbiAgICBjb250cm9sVHlwZSA9ICdkYXRlJztcblxuICAgIEBJbnB1dCgpIGZvcm06IEZvcm1Hcm91cCA9IG51bGw7XG4gICAgQElucHV0KCkgaXNBY3RpdmUgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzaG93VGl0bGUgPSB0cnVlO1xuICAgIEBJbnB1dCgpIHJlbmRlclRpdGxlID0gdHJ1ZTtcbiAgICBASW5wdXQoKSByZW5kZXJFcnJvciA9IHRydWU7XG4gICAgQElucHV0KCkgcmVuZGVyU3ltYm9sID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBsYXlvdXRUeXBlOiBQZXBMYXlvdXRUeXBlID0gJ2Zvcm0nO1xuXG4gICAgQE91dHB1dCgpXG4gICAgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQFZpZXdDaGlsZCgnZGF0ZXRpbWVQaWNrZXInKSBkYXRldGltZVBpY2tlcjogYW55O1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZjtcblxuICAgIHN0YW5kQWxvbmUgPSBmYWxzZTtcbiAgICBpc0luRWRpdE1vZGUgPSBmYWxzZTtcbiAgICBkYXRlTW9kZWw6IE1vbWVudDtcbiAgICBtaW5EYXRlOiBEYXRlO1xuICAgIG1heERhdGU6IERhdGU7XG4gICAgc2hvd0RhdGVwaWNrZXIgPSBmYWxzZTtcbiAgICBzaG93VGltZSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYWRhcHRlcjogRGF0ZUFkYXB0ZXI8YW55PixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIGxheW91dFNlcnZpY2U6IFBlcExheW91dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdXRpbGl0aWVzU2VydmljZTogUGVwVXRpbGl0aWVzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjdXN0b21pemF0aW9uU2VydmljZTogUGVwQ3VzdG9taXphdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICAgICkgeyB9XG5cbiAgICBwcml2YXRlIHNldERlZmF1bHRGb3JtKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwZXBGaWVsZCA9IG5ldyBQZXBEYXRlRmllbGQoe1xuICAgICAgICAgICAga2V5OiB0aGlzLmtleSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgbWFuZGF0b3J5OiB0aGlzLm1hbmRhdG9yeSxcbiAgICAgICAgICAgIHJlYWRvbmx5OiB0aGlzLnJlYWRvbmx5LFxuICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmdldERlZmF1bHRGcm9tR3JvdXAocGVwRmllbGQpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mb3JtID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnN0YW5kQWxvbmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0Rm9ybSgpO1xuXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNUQU5EX0FMT05FX0ZJRUxEX0NMQVNTX05BTUVcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5yZW5kZXJUaXRsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5TVEFORF9BTE9ORV9GSUVMRF9OT19TUEFDSU5HX0NMQVNTX05BTUVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VsdHVyZSA9IHRoaXMubGF5b3V0U2VydmljZS5nZXRDdXJyZW50TGFuZ3VhZ2UoKTtcbiAgICAgICAgdGhpcy5hZGFwdGVyLnNldExvY2FsZShjdWx0dXJlKTtcblxuICAgICAgICB0aGlzLnNldERhdGVNb2RlbCgpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdGFuZEFsb25lKSB7XG4gICAgICAgICAgICB0aGlzLnNldERlZmF1bHRGb3JtKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy9cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEZvcm1hdHRlZFZhbHVlRnJvbU1vZGVsKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kYXRlTW9kZWwgPT09IG51bGwgfHwgIXRoaXMuZGF0ZU1vZGVsLmlzVmFsaWQoKSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWRWYWx1ZSA9ICcnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0ID0gdGhpcy5zaG93VGltZVxuICAgICAgICAgICAgICAgID8gTVlfREFURV9GT1JNQVRTLmRpc3BsYXkuZGF0ZXRpbWVJbnB1dFxuICAgICAgICAgICAgICAgIDogTVlfREFURV9GT1JNQVRTLmRpc3BsYXkuZGF0ZUlucHV0O1xuICAgICAgICAgICAgdGhpcy5mb3JtYXR0ZWRWYWx1ZSA9IHRoaXMuYWRhcHRlci5mb3JtYXQodGhpcy5kYXRlTW9kZWwsIGZvcm1hdCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERhdGVNb2RlbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgdGhpcy52YWx1ZSA9PT0gJycgfHxcbiAgICAgICAgICAgIHRoaXMudmFsdWUuaW5kZXhPZignMTkwMC0xLTEnKSA+PSAwIHx8XG4gICAgICAgICAgICB0aGlzLnZhbHVlLmluZGV4T2YoJzE5MDAtMDEtMDEnKSA+PSAwIHx8XG4gICAgICAgICAgICB0aGlzLnZhbHVlLmluZGV4T2YoJzE5NzAtMS0xJykgPj0gMCB8fFxuICAgICAgICAgICAgdGhpcy52YWx1ZS5pbmRleE9mKCcxOTcwLTAxLTAxJykgPj0gMFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gJyc7XG4gICAgICAgICAgICB0aGlzLmRhdGVNb2RlbCA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwYXJzZURhdGUgPSB0aGlzLnV0aWxpdGllc1NlcnZpY2UucGFyc2VEYXRlKHRoaXMudmFsdWUsIHRoaXMuc2hvd1RpbWUpO1xuICAgICAgICAgICAgdGhpcy5kYXRlTW9kZWwgPSB1dGMocGFyc2VEYXRlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0Rm9ybWF0dGVkVmFsdWVGcm9tTW9kZWwoKTtcbiAgICB9XG5cbiAgICBvcGVuRGF0ZXRpbWVQaWNrZXIoZGF0ZXRpbWVQaWNrZXIpOiB2b2lkIHtcbiAgICAgICAgZGF0ZXRpbWVQaWNrZXIub3BlbmVkID0gZmFsc2U7XG4gICAgICAgIGRhdGV0aW1lUGlja2VyLm9wZW4oKTtcbiAgICB9XG5cbiAgICBvbkJsdXIoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICAvLyBEb24ndCByZW1vdmUgdGhlIHRpbWVvdXQgY2F1c2UgYSBidWcgREktMTc4MTkuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNJbkVkaXRNb2RlICYmICF0aGlzLmRhdGV0aW1lUGlja2VyLm9wZW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNJbkVkaXRNb2RlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIG9uRGF0ZUNoYW5nZShldmVudDogTWF0RGF0ZXRpbWVwaWNrZXJJbnB1dEV2ZW50PE1vbWVudD4pOiB2b2lkIHtcbiAgICAgICAgbGV0IHZhbHVlID0gJyc7XG4gICAgICAgIGlmIChldmVudC52YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlOiBEYXRlID0gZXZlbnQudmFsdWUudG9EYXRlKCk7XG5cbiAgICAgICAgICAgIHZhbHVlID0gdGhpcy51dGlsaXRpZXNTZXJ2aWNlLnN0cmluZ2lmeURhdGUoZGF0ZSwgdGhpcy5zaG93VGltZSk7XG5cbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgZm9ybWF0dGVkIHZhbHVlLlxuICAgICAgICAgICAgdGhpcy5zZXRGb3JtYXR0ZWRWYWx1ZUZyb21Nb2RlbCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jdXN0b21pemF0aW9uU2VydmljZS51cGRhdGVGb3JtRmllbGRWYWx1ZShcbiAgICAgICAgICAgIHRoaXMuZm9ybSxcbiAgICAgICAgICAgIHRoaXMua2V5LFxuICAgICAgICAgICAgLy8gdGhpcy5mb3JtYXR0ZWRWYWx1ZVxuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNJbkVkaXRNb2RlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0luRWRpdE1vZGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgY2FyZFRlbXBsYXRlQ2xpY2tlZChldmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzSW5FZGl0TW9kZSA9IHRydWU7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIHRoaXMub3BlbkRhdGV0aW1lUGlja2VyKHRoaXMuZGF0ZXRpbWVQaWNrZXIpO1xuICAgICAgICB9LCAwKTtcbiAgICB9XG59XG4iXX0=
252
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbGliL2RhdGUvZGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBRVYsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxTQUFTLEdBSVosTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RixPQUFPLEVBQ0gsZUFBZSxFQUVmLG9CQUFvQixHQUN2QixNQUFNLDBCQUEwQixDQUFDO0FBRWxDLE9BQU8sRUFDSCxnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBRW5CLHVCQUF1QixFQUV2Qiw0QkFBNEIsRUFFNUIsWUFBWSxHQUNmLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFVLEdBQUcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRS9GLG1DQUFtQztBQUNuQyxNQUFNLFVBQVUsVUFBVSxDQUFDLGFBQStCO0lBQ3RELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ25ELE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUM7V0FvQjhDLGVBQWUsT0FHWCxlQUFlO0FBR2xFLE1BQU0sT0FBTyxnQkFBZ0I7SUF5R3pCLFlBQ1ksT0FBeUIsRUFDekIsT0FBbUIsRUFDbkIsYUFBK0IsRUFDL0IsZ0JBQXFDLEVBQ3JDLG9CQUE2QyxFQUM3QyxRQUFtQjtRQUxuQixZQUFPLEdBQVAsT0FBTyxDQUFrQjtRQUN6QixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQ25CLGtCQUFhLEdBQWIs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b0IsRUFBRTtvQkFDeEQsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxJQUFpQixFQUFFO29CQUN4RCxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFO29CQUNoRSwwRUFBMEU7b0JBQzFFLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFFBQVEsSUFBaUIsRUFBRTtpQkFDL0Q7O2FBQ0o7OztZQWpEUSxXQUFXO1lBZGhCLFVBQVU7WUFzQlYsZ0JBQWdCO1lBQ2hCLG1CQUFtQjtZQUVuQix1QkFBdUI7WUFsQnZCLFNBQVM7OztrQkEwRFIsS0FBSztvQkFHTCxLQUFLOzZCQVNMLEtBQUs7b0JBQ0wsS0FBSzttQkFHTCxLQUFLO3dCQVNMLEtBQUs7dUJBQ0wsS0FBSzt1QkFDTCxLQUFLO3dCQUNMLEtBQUs7eUJBQ0wsS0FBSztzQkFDTCxLQUFLO3NCQUdMLEtBQUs7dUJBb0JMLEtBQUs7dUJBUUwsS0FBSzsyQkFRTCxLQUFLOzJCQU1MLEtBQUs7bUJBT0wsS0FBSzt1QkFDTCxLQUFLO3dCQUNMLEtBQUs7MEJBQ0wsS0FBSzswQkFDTCxLQUFLOzJCQUNMLEtBQUs7eUJBQ0wsS0FBSzswQkFFTCxNQUFNOzZCQUVOLFNBQVMsU0FBQyxnQkFBZ0I7b0JBRTFCLFNBQVMsU0FBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBPbkluaXQsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBWaWV3Q2hpbGQsXG4gICAgUmVuZGVyZXIyLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTW9tZW50RGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC1tb21lbnQtYWRhcHRlcic7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUywgTUFUX0RBVEVfTE9DQUxFIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQge1xuICAgIERhdGV0aW1lQWRhcHRlcixcbiAgICBNYXREYXRldGltZXBpY2tlcklucHV0RXZlbnQsXG4gICAgTUFUX0RBVEVUSU1FX0ZPUk1BVFMsXG59IGZyb20gJ0BtYXQtZGF0ZXRpbWVwaWNrZXIvY29yZSc7XG5pbXBvcnQgeyBNb21lbnREYXRldGltZUFkYXB0ZXIgfSBmcm9tICdAbWF0LWRhdGV0aW1lcGlja2VyL21vbWVudCc7XG5pbXBvcnQge1xuICAgIFBlcExheW91dFNlcnZpY2UsXG4gICAgUGVwVXRpbGl0aWVzU2VydmljZSxcbiAgICBQZXBMYXlvdXRUeXBlLFxuICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgIFBlcEhvcml6b250YWxBbGlnbm1lbnQsXG4gICAgREVGQVVMVF9IT1JJWk9OVEFMX0FMSUdOTUVOVCxcbiAgICBQZXBEYXRlRmllbGRUeXBlLFxuICAgIFBlcERhdGVGaWVsZCxcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWInO1xuaW1wb3J0IHsgTW9tZW50LCB1dGMgfSBmcm9tICdtb21lbnQvbW9tZW50JztcbmltcG9ydCB7IE1vbWVudFV0Y0RhdGVBZGFwdGVyLCBNb21lbnRVdGNEYXRlVGltZUFkYXB0ZXIsIE1ZX0RBVEVfRk9STUFUUyB9IGZyb20gJy4vZGF0ZS5tb2RlbCc7XG5cbi8vIFNldCB0aGUgY2FsdHVyZSBmb3IgdGhlIGFkYXB0ZXIuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2FsdHVyZShsYXlvdXRTZXJ2aWNlOiBQZXBMYXlvdXRTZXJ2aWNlKSB7XG4gICAgY29uc3QgY3VsdHVyZSA9IGxheW91dFNlcnZpY2UuZ2V0Q3VycmVudExhbmd1YWdlKCk7XG4gICAgcmV0dXJuIGN1bHR1cmU7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLWRhdGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kYXRlLmNvbXBvbmVudC5zY3NzJywgJy4vZGF0ZS5jb21wb25lbnQudGhlbWUuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICAvLyBDVVNUT01fSU5QVVRfQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgLy8gVGhlIGxvY2FsZSB3b3VsZCB0eXBpY2FsbHkgYmUgcHJvdmlkZWQgb24gdGhlIHJvb3QgbW9kdWxlIG9mIHlvdXIgYXBwbGljYXRpb24uIFdlIGRvIGl0IGF0XG4gICAgICAgIC8vIHRoZSBjb21wb25lbnQgbGV2ZWwgaGVyZSwgZHVlIHRvIGxpbWl0YXRpb25zIG9mIG91ciBleGFtcGxlIGdlbmVyYXRpb24gc2NyaXB0LlxuICAgICAgICAvLyB7IHByb3ZpZGU6IE1BVF9EQVRFX0xPQ0FMRSwgdXNlVmFsdWU6ICdoZScgfSxcbiAgICAgICAgeyBwcm92aWRlOiBNQVRfREFURV9MT0NBTEUsIHVzZUZhY3Rvcnk6IGdldENhbHR1cmUsIGRlcHM6W1BlcExheW91dFNlcnZpY2VdIH0sXG5cbiAgICAgICAgLy8gYE1vbWVudERhdGVBZGFwdGVyYCBhbmQgYE1BVF9NT01FTlRfREFURV9GT1JNQVRTYCBjYW4gYmUgYXV0b21hdGljYWxseSBwcm92aWRlZCBieSBpbXBvcnRpbmdcbiAgICAgICAgLy8gYE1hdE1vbWVudERhdGVNb2R1bGVgIGluIHlvdXIgYXBwbGljYXRpb25zIHJvb3QgbW9kdWxlLiBXZSBwcm92aWRlIGl0IGF0IHRoZSBjb21wb25lbnQgbGV2ZWxcbiAgICAgICAgLy8gaGVyZSwgZHVlIHRvIGxpbWl0YXRpb25zIG9mIG91ciBleGFtcGxlIGdlbmVyYXRpb24gc2NyaXB0LlxuICAgICAgICAvL3sgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsIHVzZUNsYXNzOiBNb21lbnREYXRlQWRhcHRlciwgZGVwczogW01BVF9EQVRFX0xPQ0FMRV0gfSxcbiAgICAgICAgLy97IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBNQVRfTU9NRU5UX0RBVEVfRk9STUFUUyB9LFxuICAgICAgICB7IHByb3ZpZGU6IERhdGVBZGFwdGVyLCB1c2VDbGFzczogTW9tZW50VXRjRGF0ZUFkYXB0ZXIgfSxcbiAgICAgICAgeyBwcm92aWRlOiBNQVRfREFURV9GT1JNQVRTLCB1c2VWYWx1ZTogTVlfREFURV9GT1JNQVRTIH0sXG4gICAgICAgIHsgcHJvdmlkZTogRGF0ZXRpbWVBZGFwdGVyLCB1c2VDbGFzczogTW9tZW50VXRjRGF0ZVRpbWVBZGFwdGVyIH0sXG4gICAgICAgIC8veyBwcm92aWRlOiBNQVRfREFURVRJTUVfRk9STUFUUywgdXNlVmFsdWU6IE1BVF9OQVRJVkVfREFURVRJTUVfRk9STUFUUyB9XG4gICAgICAgIHsgcHJvdmlkZTogTUFUX0RBVEVUSU1FX0ZPUk1BVFMsIHVzZVZhbHVlOiBNWV9EQVRFX0ZPUk1BVFMgfSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQZXBEYXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkga2V5ID0gJyc7XG5cbiAgICBwcml2YXRlIF92YWx1ZSA9ICcnO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXREYXRlTW9kZWwoKTtcbiAgICB9XG4gICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgZm9ybWF0dGVkVmFsdWUgPSAnJztcbiAgICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuXG4gICAgcHJpdmF0ZSBfdHlwZTogUGVwRGF0ZUZpZWxkVHlwZSA9ICdkYXRlJztcbiAgICBASW5wdXQoKVxuICAgIHNldCB0eXBlKHR5cGU6IFBlcERhdGVGaWVsZFR5cGUpIHtcbiAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7XG4gICAgICAgIHRoaXMuc2hvd1RpbWUgPSB0eXBlID09PSAnZGF0ZXRpbWUnO1xuICAgIH1cbiAgICBnZXQgdHlwZSgpOiBQZXBEYXRlRmllbGRUeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgbWFuZGF0b3J5ID0gZmFsc2U7XG4gICAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHRleHRDb2xvciA9ICcnO1xuICAgIEBJbnB1dCgpIHhBbGlnbm1lbnQ6IFBlcEhvcml6b250YWxBbGlnbm1lbnQgPSBERUZBVUxUX0hPUklaT05UQUxfQUxJR05NRU5UO1xuICAgIEBJbnB1dCgpIHJvd1NwYW4gPSAxO1xuXG4gICAgcHJpdmF0ZSBfdmlzaWJsZSA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBzZXQgdmlzaWJsZSh2aXNpYmxlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGUgPSB2aXNpYmxlO1xuICAgICAgICBpZiAodmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAnaGlkZGVuLWVsZW1lbnQnXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhcbiAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICAgICAnaGlkZGVuLWVsZW1lbnQnXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgICB9XG5cbiAgICAvLyBNaW5pbXVtIGluIHRoaWNrc1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1pblZhbHVlKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHZhbHVlID4gMCkge1xuICAgICAgICAgICAgdGhpcy5taW5EYXRlID0gbmV3IERhdGUodmFsdWUgKiAxMDAwICogNjAgKiA2MCAqIDI0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1heGltdW0gaW4gdGhpY2tzXG4gICAgQElucHV0KClcbiAgICBzZXQgbWF4VmFsdWUodmFsdWU6IG51bWJlcikge1xuICAgICAgICBpZiAodmFsdWUgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm1heERhdGUgPSBuZXcgRGF0ZSh2YWx1ZSAqIDEwMDAgKiA2MCAqIDYwICogMjQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWluaW11bSBpbiBkYXRlXG4gICAgQElucHV0KClcbiAgICBzZXQgbWluRGF0ZVZhbHVlKGRhdGU6IHN0cmluZykge1xuICAgICAgICB0aGlzLm1pbkRhdGUgPSBkYXRlID8gbmV3IERhdGUoZGF0ZSkgOiBudWxsO1xuICAgIH1cblxuICAgIC8vIE1heGltdW0gaW4gZGF0ZVxuICAgIEBJbnB1dCgpXG4gICAgc2V0IG1heERhdGVWYWx1ZShkYXRlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5tYXhEYXRlID0gZGF0ZSA/IG5ldyBEYXRlKGRhdGUpIDogbnVsbDtcbiAgICB9XG5cbiAgICBjb250cm9sVHlwZSA9ICdkYXRlJztcblxuICAgIEBJbnB1dCgpIGZvcm06IEZvcm1Hcm91cCA9IG51bGw7XG4gICAgQElucHV0KCkgaXNBY3RpdmUgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzaG93VGl0bGUgPSB0cnVlO1xuICAgIEBJbnB1dCgpIHJlbmRlclRpdGxlID0gdHJ1ZTtcbiAgICBASW5wdXQoKSByZW5kZXJFcnJvciA9IHRydWU7XG4gICAgQElucHV0KCkgcmVuZGVyU3ltYm9sID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBsYXlvdXRUeXBlOiBQZXBMYXlvdXRUeXBlID0gJ2Zvcm0nO1xuXG4gICAgQE91dHB1dCgpXG4gICAgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQFZpZXdDaGlsZCgnZGF0ZXRpbWVQaWNrZXInKSBkYXRldGltZVBpY2tlcjogYW55O1xuXG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dDogRWxlbWVudFJlZjtcblxuICAgIHN0YW5kQWxvbmUgPSBmYWxzZTtcbiAgICBpc0luRWRpdE1vZGUgPSBmYWxzZTtcbiAgICBkYXRlTW9kZWw6IE1vbWVudDtcbiAgICBtaW5EYXRlOiBEYXRlO1xuICAgIG1heERhdGU6IERhdGU7XG4gICAgc2hvd0RhdGVwaWNrZXIgPSBmYWxzZTtcbiAgICBzaG93VGltZSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYWRhcHRlcjogRGF0ZUFkYXB0ZXI8YW55PixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIGxheW91dFNlcnZpY2U6IFBlcExheW91dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdXRpbGl0aWVzU2VydmljZTogUGVwVXRpbGl0aWVzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjdXN0b21pemF0aW9uU2VydmljZTogUGVwQ3VzdG9taXphdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICAgICkgeyB9XG5cbiAgICBwcml2YXRlIHNldERlZmF1bHRGb3JtKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBwZXBGaWVsZCA9IG5ldyBQZXBEYXRlRmllbGQoe1xuICAgICAgICAgICAga2V5OiB0aGlzLmtleSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgbWFuZGF0b3J5OiB0aGlzLm1hbmRhdG9yeSxcbiAgICAgICAgICAgIHJlYWRvbmx5OiB0aGlzLnJlYWRvbmx5LFxuICAgICAgICAgICAgZGlzYWJsZWQ6IHRoaXMuZGlzYWJsZWQsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZvcm0gPSB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLmdldERlZmF1bHRGcm9tR3JvdXAocGVwRmllbGQpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mb3JtID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnN0YW5kQWxvbmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0Rm9ybSgpO1xuXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLlNUQU5EX0FMT05FX0ZJRUxEX0NMQVNTX05BTUVcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5yZW5kZXJUaXRsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICBQZXBDdXN0b21pemF0aW9uU2VydmljZS5TVEFORF9BTE9ORV9GSUVMRF9OT19TUEFDSU5HX0NMQVNTX05BTUVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhpcyBpcyBub3Qgd29ya2luZyBmb3IgdGhlIGRhdGVNb2RlbCBzbyBJIHVzZSBzZXQgY2FsdXJlIGluIHRoZSB1c2VGYWN0b3J5OiBnZXRDYWx0dXJlIGZ1bmN0aW9uLlxuICAgICAgICAvLyBjb25zdCBjdWx0dXJlID0gdGhpcy5sYXlvdXRTZXJ2aWNlLmdldEN1cnJlbnRMYW5ndWFnZSgpO1xuICAgICAgICAvLyB0aGlzLmFkYXB0ZXIuc2V0TG9jYWxlKGN1bHR1cmUpO1xuXG4gICAgICAgIHRoaXMuc2V0RGF0ZU1vZGVsKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogYW55KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnN0YW5kQWxvbmUpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdEZvcm0oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvL1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0Rm9ybWF0dGVkVmFsdWVGcm9tTW9kZWwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRhdGVNb2RlbCA9PT0gbnVsbCB8fCAhdGhpcy5kYXRlTW9kZWwuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1hdHRlZFZhbHVlID0gJyc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXQgPSB0aGlzLnNob3dUaW1lXG4gICAgICAgICAgICAgICAgPyBNWV9EQVRFX0ZPUk1BVFMuZGlzcGxheS5kYXRldGltZUlucHV0XG4gICAgICAgICAgICAgICAgOiBNWV9EQVRFX0ZPUk1BVFMuZGlzcGxheS5kYXRlSW5wdXQ7XG4gICAgICAgICAgICB0aGlzLmZvcm1hdHRlZFZhbHVlID0gdGhpcy5hZGFwdGVyLmZvcm1hdCh0aGlzLmRhdGVNb2RlbCwgZm9ybWF0KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGF0ZU1vZGVsKCk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLnZhbHVlID09PSBudWxsIHx8XG4gICAgICAgICAgICB0aGlzLnZhbHVlID09PSAnJyB8fFxuICAgICAgICAgICAgdGhpcy52YWx1ZS5pbmRleE9mKCcxOTAwLTEtMScpID49IDAgfHxcbiAgICAgICAgICAgIHRoaXMudmFsdWUuaW5kZXhPZignMTkwMC0wMS0wMScpID49IDAgfHxcbiAgICAgICAgICAgIHRoaXMudmFsdWUuaW5kZXhPZignMTk3MC0xLTEnKSA+PSAwIHx8XG4gICAgICAgICAgICB0aGlzLnZhbHVlLmluZGV4T2YoJzE5NzAtMDEtMDEnKSA+PSAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSAnJztcbiAgICAgICAgICAgIHRoaXMuZGF0ZU1vZGVsID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlRGF0ZSA9IHRoaXMudXRpbGl0aWVzU2VydmljZS5wYXJzZURhdGUodGhpcy52YWx1ZSwgdGhpcy5zaG93VGltZSk7XG4gICAgICAgICAgICB0aGlzLmRhdGVNb2RlbCA9IHV0YyhwYXJzZURhdGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRGb3JtYXR0ZWRWYWx1ZUZyb21Nb2RlbCgpO1xuICAgIH1cblxuICAgIG9wZW5EYXRldGltZVBpY2tlcihkYXRldGltZVBpY2tlcik6IHZvaWQge1xuICAgICAgICBkYXRldGltZVBpY2tlci5vcGVuZWQgPSBmYWxzZTtcbiAgICAgICAgZGF0ZXRpbWVQaWNrZXIub3BlbigpO1xuICAgIH1cblxuICAgIG9uQmx1cihldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIC8vIERvbid0IHJlbW92ZSB0aGUgdGltZW91dCBjYXVzZSBhIGJ1ZyBESS0xNzgxOS5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0luRWRpdE1vZGUgJiYgIXRoaXMuZGF0ZXRpbWVQaWNrZXIub3BlbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0luRWRpdE1vZGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgb25EYXRlQ2hhbmdlKGV2ZW50OiBNYXREYXRldGltZXBpY2tlcklucHV0RXZlbnQ8TW9tZW50Pik6IHZvaWQge1xuICAgICAgICBsZXQgdmFsdWUgPSAnJztcbiAgICAgICAgaWYgKGV2ZW50LnZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGU6IERhdGUgPSBldmVudC52YWx1ZS50b0RhdGUoKTtcblxuICAgICAgICAgICAgdmFsdWUgPSB0aGlzLnV0aWxpdGllc1NlcnZpY2Uuc3RyaW5naWZ5RGF0ZShkYXRlLCB0aGlzLnNob3dUaW1lKTtcblxuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBmb3JtYXR0ZWQgdmFsdWUuXG4gICAgICAgICAgICB0aGlzLnNldEZvcm1hdHRlZFZhbHVlRnJvbU1vZGVsKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlLnVwZGF0ZUZvcm1GaWVsZFZhbHVlKFxuICAgICAgICAgICAgdGhpcy5mb3JtLFxuICAgICAgICAgICAgdGhpcy5rZXksXG4gICAgICAgICAgICAvLyB0aGlzLmZvcm1hdHRlZFZhbHVlXG4gICAgICAgICAgICB2YWx1ZVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0luRWRpdE1vZGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzSW5FZGl0TW9kZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICB9XG5cbiAgICBjYXJkVGVtcGxhdGVDbGlja2VkKGV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNJbkVkaXRNb2RlID0gdHJ1ZTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgdGhpcy5vcGVuRGF0ZXRpbWVQaWNrZXIodGhpcy5kYXRldGltZVBpY2tlcik7XG4gICAgICAgIH0sIDApO1xuICAgIH1cbn1cbiJdfQ==
@@ -8,6 +8,7 @@ export class DraggableItemsComponent {
8
8
  this.showSearch = false;
9
9
  this.title = '';
10
10
  this.titleType = 'regular';
11
+ this.titleSizeType = 'xl';
11
12
  this.itemPlaceholderType = 'none';
12
13
  this.dropAreaIds = [];
13
14
  this._items = [];
@@ -71,8 +72,8 @@ export class DraggableItemsComponent {
71
72
  DraggableItemsComponent.decorators = [
72
73
  { type: Component, args: [{
73
74
  selector: 'pep-draggable-items',
74
- template: "<div [id]=\"containerId\" class=\"pep-draggable-items-container\" cdkDropList [cdkDropListData]=\"filteredItems$ | async\"\r\n cdkDropListSortingDisabled [cdkDropListConnectedTo]=\"dropAreaIds\">\r\n\r\n <div *ngIf=\"titleType !== 'none'\" class=\"title-container\"\r\n [ngClass]=\"{ 'pep-border-bottom': titleType === 'with-bottom-border'}\">\r\n <label class=\"body-xl bold ellipsis\">{{title}}</label>\r\n <pep-search *ngIf=\"showSearch && items?.length > numberItemsToShowSearch\" sizeType=\"sm\" shrink=\"always\"\r\n [searchControl]=\"searchControl\" triggerOn=\"keydown\"></pep-search>\r\n </div>\r\n\r\n <pep-draggable-item *ngFor=\"let item of filteredItems$ | async; let i=index;\" class=\"draggble-item\"\r\n [title]=\"item.title\" [data]=\"item.data\" [disabled]=\"item.disabled\" cdkDrag [cdkDragData]=\"item.data\"\r\n [cdkDragDisabled]=\"item.disabled\" (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\">\r\n\r\n <ng-container *ngIf=\"itemPlaceholderType !== 'regular'\">\r\n <div class=\"placeholder-item {{itemPlaceholderType}}\" *cdkDragPlaceholder></div>\r\n </ng-container>\r\n </pep-draggable-item>\r\n</div>",
75
- styles: [".draggble-item{margin-bottom:.5rem;margin-bottom:var(--pep-spacing-sm,.5rem);cursor:-webkit-grab;cursor:grab}.draggble-item.cdk-drag-disabled{cursor:not-allowed}.title-container{height:2.5rem;display:flex;flex-flow:row;justify-content:space-between}.title-container.pep-border-bottom{margin-bottom:1rem;margin-bottom:var(--pep-spacing-lg,1rem)}.placeholder-item{height:2.5rem;border-radius:.25rem;border-radius:var(--pep-border-radius-md,.25rem);width:100%;margin-bottom:.5rem;margin-bottom:var(--pep-spacing-sm,.5rem)}.placeholder-item.none{opacity:0}.placeholder-item.weak{background:rgba(26,26,26,.12);background:hsla(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%),.12)}", ".placeholder-item.none{opacity:0}.placeholder-item.weak{background:rgba(26,26,26,.12);background:hsla(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%),.12)}"]
75
+ template: "<div [id]=\"containerId\" class=\"pep-draggable-items-container\" cdkDropList [cdkDropListData]=\"filteredItems$ | async\"\r\n cdkDropListSortingDisabled [cdkDropListConnectedTo]=\"dropAreaIds\">\r\n\r\n <div *ngIf=\"titleType !== 'none'\" class=\"title-container\"\r\n [ngClass]=\"{ 'pep-border-bottom': titleType === 'with-bottom-border'}\">\r\n <label class=\"title body-{{ titleSizeType }} bold ellipsis \" >{{title}}</label>\r\n <pep-search *ngIf=\"showSearch && items?.length > numberItemsToShowSearch\" sizeType=\"sm\" shrink=\"always\"\r\n [searchControl]=\"searchControl\" triggerOn=\"keydown\"></pep-search>\r\n </div>\r\n\r\n <div class=\"dragable-items-container\">\r\n <pep-draggable-item *ngFor=\"let item of filteredItems$ | async; let i=index;\" class=\"draggble-item\"\r\n [title]=\"item.title\" [data]=\"item.data\" [disabled]=\"item.disabled\" cdkDrag [cdkDragData]=\"item.data\"\r\n [cdkDragDisabled]=\"item.disabled\" (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\">\r\n \r\n <ng-container *ngIf=\"itemPlaceholderType !== 'regular'\">\r\n <div class=\"placeholder-item {{itemPlaceholderType}}\" *cdkDragPlaceholder></div>\r\n </ng-container>\r\n </pep-draggable-item>\r\n </div>\r\n</div>",
76
+ styles: [".dragable-items-container{display:flex;flex-direction:column;grid-gap:.5rem;gap:.5rem;grid-gap:var(--pep-spacing-sm,.5rem);gap:var(--pep-spacing-sm,.5rem)}.dragable-items-container .draggble-item{cursor:-webkit-grab;cursor:grab}.dragable-items-container .draggble-item.cdk-drag-disabled{cursor:not-allowed}.title-container{height:2.5rem;height:var(--pep-top-bar-field-height,2.5rem);display:flex;flex-flow:row;justify-content:space-between}.title-container .title{align-self:center}.title-container.pep-border-bottom{margin-bottom:1rem;margin-bottom:var(--pep-spacing-lg,1rem)}.placeholder-item{height:2.5rem;border-radius:.25rem;border-radius:var(--pep-border-radius-md,.25rem);width:100%}", ".placeholder-item.none{opacity:0}.placeholder-item.weak{background:rgba(26,26,26,.12);background:hsla(var(--pep-color-weak-h,0),var(--pep-color-weak-s,0%),var(--pep-color-weak-l,10%),.12)}"]
76
77
  },] }
77
78
  ];
78
79
  DraggableItemsComponent.ctorParameters = () => [];
@@ -81,10 +82,11 @@ DraggableItemsComponent.propDecorators = {
81
82
  showSearch: [{ type: Input }],
82
83
  title: [{ type: Input }],
83
84
  titleType: [{ type: Input }],
85
+ titleSizeType: [{ type: Input }],
84
86
  itemPlaceholderType: [{ type: Input }],
85
87
  dropAreaIds: [{ type: Input }],
86
88
  items: [{ type: Input }],
87
89
  itemDragStarted: [{ type: Output }],
88
90
  itemDragEnded: [{ type: Output }]
89
91
  };
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLWl0ZW1zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvZHJhZ2dhYmxlLWl0ZW1zL2RyYWdnYWJsZS1pdGVtcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQWUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFRM0QsTUFBTSxPQUFPLHVCQUF1QjtJQWtDaEM7UUFoQ1MsZ0JBQVcsR0FBRyxxQkFBcUIsQ0FBQztRQUNwQyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxjQUFTLEdBQStCLFNBQVMsQ0FBQztRQUVsRCx3QkFBbUIsR0FBb0MsTUFBTSxDQUFDO1FBRTlELGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBRWxCLFdBQU0sR0FBNkIsRUFBRSxDQUFDO1FBZXBDLG9CQUFlLEdBQWtELElBQUksWUFBWSxFQUFtQyxDQUFDO1FBQ3JILGtCQUFhLEdBQWdELElBQUksWUFBWSxFQUFpQyxDQUFDO1FBR3pILGtCQUFhLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNsQyw0QkFBdUIsR0FBRyxDQUFDLENBQUM7UUFJeEIsRUFBRTtRQUNGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBekJELElBQ0ksS0FBSyxDQUFDLEtBQStCOztRQUNyQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUVwQixJQUFJ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S0FBSztvQkFHTCxLQUFLOzhCQWNMLE1BQU07NEJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdFbmQsIENka0RyYWdTdGFydCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSVBlcERyYWdnYWJsZUl0ZW0sIFBlcERyYWdnYWJsZUl0ZW1QbGFjZWhvbGRlclR5cGUsIFBlcERyYWdnYWJsZUl0ZW1zVGl0bGVUeXBlIH0gZnJvbSAnLi9kcmFnZ2FibGUtaXRlbXMubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1kcmFnZ2FibGUtaXRlbXMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kcmFnZ2FibGUtaXRlbXMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RyYWdnYWJsZS1pdGVtcy5jb21wb25lbnQuc2NzcycsICcuL2RyYWdnYWJsZS1pdGVtcy5jb21wb25lbnQudGhlbWUuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERyYWdnYWJsZUl0ZW1zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgY29udGFpbmVySWQgPSAnZHJhZ2dhYmxlLWNvbnRhaW5lcic7XG4gICAgQElucHV0KCkgc2hvd1NlYXJjaCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHRpdGxlID0gJyc7XG4gICAgQElucHV0KCkgdGl0bGVUeXBlOiBQZXBEcmFnZ2FibGVJdGVtc1RpdGxlVHlwZSA9ICdyZWd1bGFyJztcblxuICAgIEBJbnB1dCgpIGl0ZW1QbGFjZWhvbGRlclR5cGU6IFBlcERyYWdnYWJsZUl0ZW1QbGFjZWhvbGRlclR5cGUgPSAnbm9uZSc7XG5cbiAgICBASW5wdXQoKSBkcm9wQXJlYUlkcyA9IFtdO1xuXG4gICAgcHJpdmF0ZSBfaXRlbXM6IEFycmF5PElQZXBEcmFnZ2FibGVJdGVtPiA9IFtdO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGl0ZW1zKHZhbHVlOiBBcnJheTxJUGVwRHJhZ2dhYmxlSXRlbT4pIHtcbiAgICAgICAgdGhpcy5faXRlbXMgPSB2YWx1ZTtcblxuICAgICAgICBpZiAodGhpcy5pdGVtcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLmVuYWJsZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgaXRlbXMoKTogQXJyYXk8SVBlcERyYWdnYWJsZUl0ZW0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKSBpdGVtRHJhZ1N0YXJ0ZWQ6IEV2ZW50RW1pdHRlcjxDZGtEcmFnU3RhcnQ8SVBlcERyYWdnYWJsZUl0ZW0+PiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2RrRHJhZ1N0YXJ0PElQZXBEcmFnZ2FibGVJdGVtPj4oKTtcbiAgICBAT3V0cHV0KCkgaXRlbURyYWdFbmRlZDogRXZlbnRFbWl0dGVyPENka0RyYWdFbmQ8SVBlcERyYWdnYWJsZUl0ZW0+PiA9IG5ldyBFdmVudEVtaXR0ZXI8Q2RrRHJhZ0VuZDxJUGVwRHJhZ2dhYmxlSXRlbT4+KCk7XG5cbiAgICBmaWx0ZXJlZEl0ZW1zJDogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcbiAgICBudW1iZXJJdGVtc1RvU2hvd1NlYXJjaCA9IDU7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveWVkOiBTdWJqZWN0PHZvaWQ+O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIC8vXG4gICAgICAgIHRoaXMuX2Rlc3Ryb3llZCA9IG5ldyBTdWJqZWN0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaWx0ZXJJdGVtcyh2YWx1ZTogc3RyaW5nKTogYW55W10ge1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1zLmZpbHRlcihcbiAgICAgICAgICAgIChvcHQpID0+XG4gICAgICAgICAgICAgICAgb3B0LnRpdGxlICYmXG4gICAgICAgICAgICAgICAgb3B0LnRpdGxlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUudG9Mb3dlckNhc2UoKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoYW5nZUN1cnNvck9uRHJhZ1N0YXJ0KCkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ2luaGVyaXRDdXJzb3JzJyk7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJ2dyYWJiaW5nJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoYW5nZUN1cnNvck9uRHJhZ0VuZCgpIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdpbmhlcml0Q3Vyc29ycycpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICd1bnNldCc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldERlc3Ryb3llcigpIHtcbiAgICAgICAgcmV0dXJuIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBJZiB0aGVyZSBpcyBubyBpdGVtIGRpc2FibGUgdGhlIHNlYXJjaC5cbiAgICAgICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmlsdGVyIHRoZSBkcmFnZ2FibGVJdGVtcyBieSB0aGUgc2VhcmNoIGNvbnRyb2wuXG4gICAgICAgIHRoaXMuZmlsdGVyZWRJdGVtcyQgPSB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICB0aGlzLmdldERlc3Ryb3llcigpLFxuICAgICAgICAgICAgc3RhcnRXaXRoPGFueT4oJycpLFxuICAgICAgICAgICAgbWFwKChvcHRpb24pID0+XG4gICAgICAgICAgICAgICAgdHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycgPyBvcHRpb24gOiBvcHRpb24gJiYgb3B0aW9uLnZhbHVlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbWFwKCh2YWx1ZSkgPT4gKHZhbHVlID8gdGhpcy5maWx0ZXJJdGVtcyh2YWx1ZSkgOiB0aGlzLml0ZW1zKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveWVkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgb25EcmFnU3RhcnQoZXZlbnQ6IENka0RyYWdTdGFydCkge1xuICAgICAgICB0aGlzLmNoYW5nZUN1cnNvck9uRHJhZ1N0YXJ0KCk7XG4gICAgICAgIHRoaXMuaXRlbURyYWdTdGFydGVkLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uRHJhZ0VuZChldmVudDogQ2RrRHJhZ0VuZCkge1xuICAgICAgICB0aGlzLmNoYW5nZUN1cnNvck9uRHJhZ0VuZCgpO1xuICAgICAgICB0aGlzLml0ZW1EcmFnRW5kZWQuZW1pdChldmVudCk7XG4gICAgfVxufVxuIl19
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLWl0ZW1zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1saWIvZHJhZ2dhYmxlLWl0ZW1zL2RyYWdnYWJsZS1pdGVtcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQWUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFRM0QsTUFBTSxPQUFPLHVCQUF1QjtJQW1DaEM7UUFqQ1MsZ0JBQVcsR0FBRyxxQkFBcUIsQ0FBQztRQUNwQyxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxjQUFTLEdBQStCLFNBQVMsQ0FBQztRQUNsRCxrQkFBYSxHQUFnQixJQUFJLENBQUM7UUFFbEMsd0JBQW1CLEdBQW9DLE1BQU0sQ0FBQztRQUU5RCxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUVsQixXQUFNLEdBQTZCLEVBQUUsQ0FBQztRQWVwQyxvQkFBZSxHQUFrRCxJQUFJLFlBQVksRUFBbUMsQ0FBQztRQUNySCxrQkFBYSxHQUFnRCxJQUFJLFlBQVksRUFBaUMsQ0FBQztRQUd6SCxrQkFBYSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbEMsNEJBQXVCLEdBQUcsQ0FBQyxDQUFDO1FBSXhCLEVBQUU7UUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQXpCRCxJQUNJLEtBQUssQ0FBQyxLQUErQjs7UUFDckMsSUFBSSxDQUFDLE1B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d0JBQ0wsS0FBSzs0QkFDTCxLQUFLO2tDQUVMLEtBQUs7MEJBRUwsS0FBSztvQkFHTCxLQUFLOzhCQWNMLE1BQU07NEJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdFbmQsIENka0RyYWdTdGFydCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSVBlcERyYWdnYWJsZUl0ZW0sIFBlcERyYWdnYWJsZUl0ZW1QbGFjZWhvbGRlclR5cGUsIFBlcERyYWdnYWJsZUl0ZW1zVGl0bGVUeXBlIH0gZnJvbSAnLi9kcmFnZ2FibGUtaXRlbXMubW9kZWwnO1xuaW1wb3J0IHsgUGVwU2l6ZVR5cGUgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1kcmFnZ2FibGUtaXRlbXMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kcmFnZ2FibGUtaXRlbXMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RyYWdnYWJsZS1pdGVtcy5jb21wb25lbnQuc2NzcycsICcuL2RyYWdnYWJsZS1pdGVtcy5jb21wb25lbnQudGhlbWUuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERyYWdnYWJsZUl0ZW1zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgY29udGFpbmVySWQgPSAnZHJhZ2dhYmxlLWNvbnRhaW5lcic7XG4gICAgQElucHV0KCkgc2hvd1NlYXJjaCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHRpdGxlID0gJyc7XG4gICAgQElucHV0KCkgdGl0bGVUeXBlOiBQZXBEcmFnZ2FibGVJdGVtc1RpdGxlVHlwZSA9ICdyZWd1bGFyJztcbiAgICBASW5wdXQoKSB0aXRsZVNpemVUeXBlOiBQZXBTaXplVHlwZSA9ICd4bCc7XG5cbiAgICBASW5wdXQoKSBpdGVtUGxhY2Vob2xkZXJUeXBlOiBQZXBEcmFnZ2FibGVJdGVtUGxhY2Vob2xkZXJUeXBlID0gJ25vbmUnO1xuXG4gICAgQElucHV0KCkgZHJvcEFyZWFJZHMgPSBbXTtcblxuICAgIHByaXZhdGUgX2l0ZW1zOiBBcnJheTxJUGVwRHJhZ2dhYmxlSXRlbT4gPSBbXTtcbiAgICBASW5wdXQoKVxuICAgIHNldCBpdGVtcyh2YWx1ZTogQXJyYXk8SVBlcERyYWdnYWJsZUl0ZW0+KSB7XG4gICAgICAgIHRoaXMuX2l0ZW1zID0gdmFsdWU7XG5cbiAgICAgICAgaWYgKHRoaXMuaXRlbXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGl0ZW1zKCk6IEFycmF5PElQZXBEcmFnZ2FibGVJdGVtPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgaXRlbURyYWdTdGFydGVkOiBFdmVudEVtaXR0ZXI8Q2RrRHJhZ1N0YXJ0PElQZXBEcmFnZ2FibGVJdGVtPj4gPSBuZXcgRXZlbnRFbWl0dGVyPENka0RyYWdTdGFydDxJUGVwRHJhZ2dhYmxlSXRlbT4+KCk7XG4gICAgQE91dHB1dCgpIGl0ZW1EcmFnRW5kZWQ6IEV2ZW50RW1pdHRlcjxDZGtEcmFnRW5kPElQZXBEcmFnZ2FibGVJdGVtPj4gPSBuZXcgRXZlbnRFbWl0dGVyPENka0RyYWdFbmQ8SVBlcERyYWdnYWJsZUl0ZW0+PigpO1xuXG4gICAgZmlsdGVyZWRJdGVtcyQ6IE9ic2VydmFibGU8YW55PjtcbiAgICBzZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gICAgbnVtYmVySXRlbXNUb1Nob3dTZWFyY2ggPSA1O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3llZDogU3ViamVjdDx2b2lkPjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvL1xuICAgICAgICB0aGlzLl9kZXN0cm95ZWQgPSBuZXcgU3ViamVjdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmlsdGVySXRlbXModmFsdWU6IHN0cmluZyk6IGFueVtdIHtcbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAob3B0KSA9PlxuICAgICAgICAgICAgICAgIG9wdC50aXRsZSAmJlxuICAgICAgICAgICAgICAgIG9wdC50aXRsZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGFuZ2VDdXJzb3JPbkRyYWdTdGFydCgpIHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdpbmhlcml0Q3Vyc29ycycpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICdncmFiYmluZyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGFuZ2VDdXJzb3JPbkRyYWdFbmQoKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnaW5oZXJpdEN1cnNvcnMnKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSAndW5zZXQnO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXREZXN0cm95ZXIoKSB7XG4gICAgICAgIHJldHVybiB0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gaXRlbSBkaXNhYmxlIHRoZSBzZWFyY2guXG4gICAgICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZpbHRlciB0aGUgZHJhZ2dhYmxlSXRlbXMgYnkgdGhlIHNlYXJjaCBjb250cm9sLlxuICAgICAgICB0aGlzLmZpbHRlcmVkSXRlbXMkID0gdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgdGhpcy5nZXREZXN0cm95ZXIoKSxcbiAgICAgICAgICAgIHN0YXJ0V2l0aDxhbnk+KCcnKSxcbiAgICAgICAgICAgIG1hcCgob3B0aW9uKSA9PlxuICAgICAgICAgICAgICAgIHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnID8gb3B0aW9uIDogb3B0aW9uICYmIG9wdGlvbi52YWx1ZVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1hcCgodmFsdWUpID0+ICh2YWx1ZSA/IHRoaXMuZmlsdGVySXRlbXModmFsdWUpIDogdGhpcy5pdGVtcykpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3llZC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3llZC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIG9uRHJhZ1N0YXJ0KGV2ZW50OiBDZGtEcmFnU3RhcnQpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VDdXJzb3JPbkRyYWdTdGFydCgpO1xuICAgICAgICB0aGlzLml0ZW1EcmFnU3RhcnRlZC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkRyYWdFbmQoZXZlbnQ6IENka0RyYWdFbmQpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VDdXJzb3JPbkRyYWdFbmQoKTtcbiAgICAgICAgdGhpcy5pdGVtRHJhZ0VuZGVkLmVtaXQoZXZlbnQpO1xuICAgIH1cbn1cbiJdfQ==
@@ -36,9 +36,10 @@ export class PepFilesUploaderComponent {
36
36
  }
37
37
  const reader = new FileReader();
38
38
  reader.onload = (event) => {
39
- const fileNameArray = item._file.name.split('.');
40
- const fileName = fileNameArray[0];
41
- const fileExt = fileNameArray[1]; // item._file.name.split('.').pop();
39
+ // fix for DI-19376 - when there is a dot on the file name (not include the extantion one)
40
+ //const fileNameArray = item._file.name.split('.');
41
+ const fileName = this.getFileName(item._file.name); //fileNameArray[0];
42
+ const fileExt = this.getFileExtension(item._file.name); //fileNameArray[1]; // item._file.name.split('.').pop();
42
43
  const target = event.target || event.srcElement;
43
44
  const fileStr = target.result;
44
45
  const errorMsg = this.isValidFile(fileStr, fileExt, this.acceptedExtensions, this.sizeLimitMB);
@@ -71,6 +72,16 @@ export class PepFilesUploaderComponent {
71
72
  get rowSpan() {
72
73
  return this._rowSpan;
73
74
  }
75
+ getFileName(filename) {
76
+ // get file name
77
+ const fileName = filename.substring(0, filename.lastIndexOf('.'));
78
+ return fileName;
79
+ }
80
+ getFileExtension(filename) {
81
+ // get file extension
82
+ const extension = filename.substring(filename.lastIndexOf('.') + 1, filename.length);
83
+ return extension;
84
+ }
74
85
  ngOnInit() {
75
86
  /*this.uploader.onCompleteAll = () => {
76
87
  this.fileInput.nativeElement.value = '';
@@ -207,4 +218,4 @@ PepFilesUploaderComponent.propDecorators = {
207
218
  imagePreview: [{ type: ViewChild, args: ['imagePreview',] }],
208
219
  fieldHeight: [{ type: Input }]
209
220
  };
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtdXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9maWxlcy11cGxvYWRlci9maWxlcy11cGxvYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILFNBQVMsRUFFVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUVULHVCQUF1QixHQUUxQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUNILGNBQWMsRUFFZCx1QkFBdUIsRUFFdkIsNEJBQTRCLEdBRS9CLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNILGdCQUFnQixFQUNoQixhQUFhLEdBQ2hCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBZ0IvRCxNQUFNLE9BQU8seUJBQXlCO0lBeUNsQyxZQUNZLGFBQStCLEVBQy9CLG9CQUE2QyxFQUM3QyxXQUEyQixFQUMzQixTQUEyQjtRQUgzQixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF5QjtRQUM3QyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUE1QzlCLFFBQUcsR0FBRyxFQUFFLENBQUM7UUFDVCxRQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1QsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixlQUFVLEdBQTJCLDRCQUE0QixDQUFDO1FBRW5FLGFBQVEsR0FB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QWdCOzs7a0JBZ0NwQixLQUFLO2tCQUNMLEtBQUs7b0JBQ0wsS0FBSzt3QkFDTCxLQUFLO3VCQUNMLEtBQUs7eUJBQ0wsS0FBSztzQkFHTCxLQUFLOzBCQVFMLEtBQUs7MEJBQ0wsS0FBSzttQkFFTCxLQUFLO3lCQUNMLEtBQUs7aUNBQ0wsS0FBSzt5QkFDTCxLQUFLO3lCQUVMLE1BQU07MkJBRU4sTUFBTTt3QkFHTixTQUFTLFNBQUMsV0FBVzsyQkFDckIsU0FBUyxTQUFDLGNBQWM7MEJBRXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBPbkluaXQsXG4gICAgSW5qZWN0YWJsZSxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIFZpZXdDaGlsZCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBPcHRpb25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkZXIgfSBmcm9tICduZzItZmlsZS11cGxvYWQnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBQZXBGaWxlU2VydmljZSxcbiAgICBQZXBMYXlvdXRUeXBlLFxuICAgIFBlcEN1c3RvbWl6YXRpb25TZXJ2aWNlLFxuICAgIFBlcEhvcml6b250YWxBbGlnbm1lbnQsXG4gICAgREVGQVVMVF9IT1JJWk9OVEFMX0FMSUdOTUVOVCxcbiAgICBJUGVwRmllbGRDbGlja0V2ZW50LFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYic7XG5pbXBvcnQge1xuICAgIFBlcERpYWxvZ1NlcnZpY2UsXG4gICAgUGVwRGlhbG9nRGF0YSxcbn0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZGlhbG9nJztcbmltcG9ydCB7IHBlcEljb25Ob0ltYWdlMiB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2ljb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQZXBGaWxlQ2hhbmdlRXZlbnQge1xuICAgIGFjY2VwdGVkRXh0ZW5zaW9ucz86IHN0cmluZztcbiAgICBmaWxlU3RyPzogc3RyaW5nO1xuICAgIGZpbGVOYW1lPzogc3RyaW5nO1xuICAgIGZpbGVFeHQ/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncGVwLWZpbGVzLXVwbG9hZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZmlsZXMtdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpbGVzLXVwbG9hZGVyLmNvbXBvbmVudC5zY3NzJywgJy4vZmlsZXMtdXBsb2FkZXIuY29tcG9uZW50LnRoZW1lLnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUGVwRmlsZXNVcGxvYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkga2V5ID0gJyc7XG4gICAgQElucHV0KCkgc3JjID0gJyc7XG4gICAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgICBASW5wdXQoKSBtYW5kYXRvcnkgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHhBbGlnbm1lbnQ6IFBlcEhvcml6b250YWxBbGlnbm1lbnQgPSBERUZBVUxUX0hPUklaT05UQUxfQUxJR05NRU5UO1xuXG4gICAgcHJpdmF0ZSBfcm93U3BhbiA9IDE7XG4gICAgQElucHV0KClcbiAgICBzZXQgcm93U3Bhbih2YWx1ZSkge1xuICAgICAgICB0aGlzLl9yb3dTcGFuID0gdmFsdWU7XG4gICAgfVxuICAgIGdldCByb3dTcGFuKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3dTcGFuO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGNvbnRyb2xUeXBlID0gJyc7XG4gICAgQElucHV0KCkgc2l6ZUxpbWl0TUIgPSA1O1xuXG4gICAgQElucHV0KCkgZm9ybTogRm9ybUdyb3VwO1xuICAgIEBJbnB1dCgpIHN0YW5kQWxvbmUgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBhY2NlcHRlZEV4dGVuc2lvbnMgPSAnYm1wLGpwZyxqcGVnLHBuZyxnaWYsaWNvLHN2ZyxodG1sLGNzcyc7XG4gICAgQElucHV0KCkgbGF5b3V0VHlwZTogUGVwTGF5b3V0VHlwZSA9ICdmb3JtJztcblxuICAgIEBPdXRwdXQoKVxuICAgIGZpbGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJUGVwRmlsZUNoYW5nZUV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SVBlcEZpbGVDaGFuZ2VFdmVudD4oKTtcbiAgICBAT3V0cHV0KClcbiAgICBlbGVtZW50Q2xpY2s6IEV2ZW50RW1pdHRlcjxJUGVwRmllbGRDbGlja0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8SVBlcEZpZWxkQ2xpY2tFdmVudD4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dDogYW55O1xuICAgIEBWaWV3Q2hpbGQoJ2ltYWdlUHJldmlldycpIGltYWdlUHJldmlldzogYW55O1xuXG4gICAgQElucHV0KCkgZmllbGRIZWlnaHQgPSAnJztcblxuICAgIC8vIG11bHRpcGxlID0gZmFsc2U7XG4gICAgdXBsb2FkZXI6IEZpbGVVcGxvYWRlcjtcbiAgICBwcm9ncmVzcyA9IDA7XG4gICAgLy8gcmVzcG9uc2U6IHN0cmluZztcbiAgICBpbnRlcnZhbElEOiBhbnkgPSBudWxsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogUGVwRGlhbG9nU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjdXN0b21pemF0aW9uU2VydmljZTogUGVwQ3VzdG9taXphdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZmlsZVNlcnZpY2U6IFBlcEZpbGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLnVwbG9hZGVyID0gbmV3IEZpbGVVcGxvYWRlcih7IHJlbW92ZUFmdGVyVXBsb2FkOiB0cnVlIH0pO1xuXG4gICAgICAgIHRoaXMudXBsb2FkZXIub25BZnRlckFkZGluZ0ZpbGUgPSAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZmlsZUlucHV0Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZU5hbWVBcnJheSA9IGl0ZW0uX2ZpbGUubmFtZS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVOYW1lID0gZmlsZU5hbWVBcnJheVswXTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlRXh0ID0gZmlsZU5hbWVBcnJheVsxXTsgLy8gaXRlbS5fZmlsZS5uYW1lLnNwbGl0KCcuJykucG9wKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IHx8IGV2ZW50LnNyY0VsZW1lbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZVN0ciA9IHRhcmdldC5yZXN1bHQ7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3JNc2cgPSB0aGlzLmlzVmFsaWRGaWxlKFxuICAgICAgICAgICAgICAgICAgICBmaWxlU3RyLFxuICAgICAgICAgICAgICAgICAgICBmaWxlRXh0LFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjY2VwdGVkRXh0ZW5zaW9ucyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXplTGltaXRNQlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yTXNnID09PSAnJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNyYyA9IGZpbGVTdHI7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuc2V0SW50ZXJ2YWxYKDI1LCA3NSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuc2V0UHJvZ3Jlc3MoNSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZUNoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdGVkRXh0ZW5zaW9uczogdGhpcy5hY2NlcHRlZEV4dGVuc2lvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlU3RyLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlRXh0LFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAnTUVTU0FHRVMuVElUTEVfTk9USUNFJ1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gbmV3IFBlcERpYWxvZ0RhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBlcnJvck1zZyxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuRGVmYXVsdERpYWxvZyhkYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoaXRlbS5fZmlsZSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8qdGhpcy51cGxvYWRlci5vbkNvbXBsZXRlQWxsID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgICAgICB9Ki9cbiAgICB9XG5cbiAgICBpc1ZhbGlkRmlsZShcbiAgICAgICAgZmlsZVN0cixcbiAgICAgICAgZmlsZUV4dGVuc2lvbixcbiAgICAgICAgYWNjZXB0ZWRFeHRlbnNpb25zLFxuICAgICAgICBzaXplTGltaXRNQiA9IDVcbiAgICApOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBmaWxlOiBhbnkgPSBmaWxlU3RyO1xuICAgICAgICBsZXQgZmlsZVNpemUgPSAwO1xuICAgICAgICBsZXQgY29udGVudCA9ICcnO1xuICAgICAgICAvLyBjaGVjayBpZiBnb3QgZmlsZSBhcyBCYXNlNjRcbiAgICAgICAgaWYgKHR5cGVvZiBmaWxlU3RyID09PSAnc3RyaW5nJyAmJiBmaWxlU3RyLmluZGV4T2YoJ2RhdGE6JykgPiAtMSkge1xuICAgICAgICAgICAgZmlsZVNpemUgPSB0aGlzLmdldEJhc2U2NEZpbGVTaXplKGZpbGVTdHIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZmlsZVNpemUgPSBmaWxlLnNpemU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY2hlY2sgdGhlIHNpemUgYW5kIHRoZSBleHRlbnNpb25cbiAgICAgICAgY29uc3Qgc2l6ZU9LOiBib29sZWFuID1cbiAgICAgICAgICAgIGZpbGVTaXplICE9PSAtMSAmJiBmaWxlICE9IG51bGwgJiYgZmlsZVNpemUgPCBzaXplTGltaXRNQiAqIDEwNDg1NzY7XG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbk9LID1cbiAgICAgICAgICAgIGFjY2VwdGVkRXh0ZW5zaW9ucyA9PT0gJycgfHxcbiAgICAgICAgICAgIGFjY2VwdGVkRXh0ZW5zaW9ucy5pbmRleE9mKGZpbGVFeHRlbnNpb24udG9Mb3dlckNhc2UoKSkgIT09IC0xO1xuICAgICAgICBpZiAoIWV4dGVuc2lvbk9LKSB7XG4gICAgICAgICAgICBjb250ZW50ID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAnTUVTU0FHRVMuRVJST1JfRkFJTERfVE9fTE9BRF9FWFRFTlNJT04nLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZUV4dGVuc2lvbjpcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiPGxhYmVsIGNsYXNzPSd1cHBlcmNhc2UgYm9sZCc+XCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUV4dGVuc2lvbiArXG4gICAgICAgICAgICAgICAgICAgICAgICAnPC9sYWJlbD4nLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXNpemVPSykge1xuICAgICAgICAgICAgY29udGVudCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoXG4gICAgICAgICAgICAgICAgJ01FU1NBR0VTLkVSUk9SX0ZBSUxEX1RPX0xPQURfU0laRScsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBmaWxlU2l6ZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiPGxhYmVsIGNsYXNzPSd1cHBlcmNhc2UgYm9sZCc+XCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZUxpbWl0TUIudG9TdHJpbmcoKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAnPC9sYWJlbD4nLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgZ2V0QmFzZTY0RmlsZVNpemUoYmFzZTY0U3RyaW5nOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBsZXQgZmlsZVNpemU6IG51bWJlcjtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgYmFzZTY0U3RyaW5nID0gYmFzZTY0U3RyaW5nLnN1YnN0cihiYXNlNjRTdHJpbmcuaW5kZXhPZignLCcpICsgMSk7XG4gICAgICAgICAgICBmaWxlU2l6ZSA9IGF0b2IoYmFzZTY0U3RyaW5nKS5sZW5ndGg7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGZpbGVTaXplID0gLTE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsZVNpemU7IC8vIHJldHVybiBzaXplIGluIGJ5dGVzO1xuICAgIH1cblxuICAgIC8vIHNldEludGVydmFsWChkZWxheSwgcmVwZXRpdGlvbnMpOiB2b2lkIHtcbiAgICAvLyAgICAgbGV0IHggPSAwO1xuICAgIC8vICAgICB0aGlzLmludGVydmFsSUQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgIC8vICAgICAgICAgLy8gdGhpcy5zZXRQcm9ncmVzcyh0aGlzLnByb2dyZXNzICsgNSk7XG4gICAgLy8gICAgICAgICBpZiAoKyt4ID09PSByZXBldGl0aW9ucyB8fCB0aGlzLnVwbG9hZGVyLnByb2dyZXNzID49IDEwMCkge1xuICAgIC8vICAgICAgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxJRCk7XG4gICAgLy8gICAgICAgICB9XG4gICAgLy8gICAgIH0sIGRlbGF5KTtcbiAgICAvLyB9XG5cbiAgICBlcnJvckhhbmRsZXIoZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQudGFyZ2V0LnNyYyA9IHRoaXMuZmlsZVNlcnZpY2UuZ2V0U3ZnQXNJbWFnZVNyYyhcbiAgICAgICAgICAgIHBlcEljb25Ob0ltYWdlMi5kYXRhXG4gICAgICAgICk7XG4gICAgICAgIGV2ZW50LnRhcmdldC50aXRsZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ0lNQUdFLk5PX0lNQUdFJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRQcm9ncmVzcyhwcm9ncmVzcyk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb2dyZXNzID0gcHJvZ3Jlc3M7XG4gICAgICAgIHRoaXMudXBsb2FkZXIucHJvZ3Jlc3MgPSBwcm9ncmVzcztcbiAgICB9XG5cbiAgICBkZWxldGVGaWxlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwbG9hZGVyLmNsZWFyUXVldWUoKTtcbiAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElEKTtcbiAgICAgICAgdGhpcy5zZXRQcm9ncmVzcygwKTtcblxuICAgICAgICBjb25zdCBlbXBsdFZhbHVlID0gJyc7XG4gICAgICAgIHRoaXMuc3JjID0gZW1wbHRWYWx1ZTtcblxuICAgICAgICB0aGlzLmZpbGVDaGFuZ2UuZW1pdChudWxsKTtcblxuICAgICAgICAvLyB0aGlzLmZpbGVDaGFuZ2UuZW1pdCh7XG4gICAgICAgIC8vICAgICBhY2NlcHRlZEV4dGVuc2lvbnM6IHRoaXMuYWNjZXB0ZWRFeHRlbnNpb25zLFxuICAgICAgICAvLyAgICAgZmlsZVN0cjogbnVsbCxcbiAgICAgICAgLy8gICAgIGZpbGVFeHQ6IG51bGwsXG4gICAgICAgIC8vIH0pO1xuICAgIH1cblxuICAgIG9uRWxlbWVudENsaWNrZWQoZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbGVtZW50Q2xpY2suZW1pdCh7XG4gICAgICAgICAgICBrZXk6IHRoaXMua2V5LFxuICAgICAgICAgICAgY29udHJvbFR5cGU6IHRoaXMuY29udHJvbFR5cGUsXG4gICAgICAgICAgICBldmVudFdoaWNoOiBldmVudC53aGljaCxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25DbGlja19DaG9vc2VGaWxlKGV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZpbGVJbnB1dD8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25LZXlQcmVzc19DaG9vc2VGaWxlKGV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGUgPSBldmVudCBhcyBLZXlib2FyZEV2ZW50O1xuXG4gICAgICAgIGlmIChbMTMsIDMyXS5pbmRleE9mKGUud2hpY2gpICE9PSAtMSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZmlsZUlucHV0Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlSW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG59XG4iXX0=
221
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtdXBsb2FkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWxpYi9maWxlcy11cGxvYWRlci9maWxlcy11cGxvYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNILFNBQVMsRUFFVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUVULHVCQUF1QixHQUUxQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUNILGNBQWMsRUFFZCx1QkFBdUIsRUFFdkIsNEJBQTRCLEdBRS9CLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUNILGdCQUFnQixFQUNoQixhQUFhLEdBQ2hCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBZ0IvRCxNQUFNLE9BQU8seUJBQXlCO0lBeUNsQyxZQUNZLGFBQStCLEVBQy9CLG9CQUE2QyxFQUM3QyxXQUEyQixFQUMzQixTQUEyQjtRQUgzQixrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF5QjtRQUM3QyxnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUE1QzlCLFFBQUcsR0FBRyxFQUFFLENBQUM7UUFDVCxRQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ1QsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixlQUFVLEdBQTJCLDRCQUE0QixDQUFDO1FBRW5FLGFBQVEsR0FB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QUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDbEMsSUFBSSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLGFBQWEsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDeEM7U0FDSjtRQUNELENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN2QixDQUFDOzs7WUE3T0osU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSxvQkFBb0I7Z0JBQzlCLHdqS0FBOEM7Z0JBRTlDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNsRDtZQUNBLFVBQVU7OztZQWxCUCxnQkFBZ0I7WUFOaEIsdUJBQXVCO1lBRnZCLGNBQWM7WUFKVCxnQkFBZ0I7OztrQkFnQ3BCLEtBQUs7a0JBQ0wsS0FBSztvQkFDTCxLQUFLO3dCQUNMLEtBQUs7dUJBQ0wsS0FBSzt5QkFDTCxLQUFLO3NCQUdMLEtBQUs7MEJBUUwsS0FBSzswQkFDTCxLQUFLO21CQUVMLEtBQUs7eUJBQ0wsS0FBSztpQ0FDTCxLQUFLO3lCQUNMLEtBQUs7eUJBRUwsTUFBTTsyQkFFTixNQUFNO3dCQUdOLFNBQVMsU0FBQyxXQUFXOzJCQUNyQixTQUFTLFNBQUMsY0FBYzswQkFFeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBJbmplY3RhYmxlLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgVmlld0NoaWxkLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIE9wdGlvbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEZpbGVVcGxvYWRlciB9IGZyb20gJ25nMi1maWxlLXVwbG9hZCc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIFBlcEZpbGVTZXJ2aWNlLFxuICAgIFBlcExheW91dFR5cGUsXG4gICAgUGVwQ3VzdG9taXphdGlvblNlcnZpY2UsXG4gICAgUGVwSG9yaXpvbnRhbEFsaWdubWVudCxcbiAgICBERUZBVUxUX0hPUklaT05UQUxfQUxJR05NRU5ULFxuICAgIElQZXBGaWVsZENsaWNrRXZlbnQsXG59IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliJztcbmltcG9ydCB7XG4gICAgUGVwRGlhbG9nU2VydmljZSxcbiAgICBQZXBEaWFsb2dEYXRhLFxufSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9kaWFsb2cnO1xuaW1wb3J0IHsgcGVwSWNvbk5vSW1hZ2UyIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvaWNvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBlcEZpbGVDaGFuZ2VFdmVudCB7XG4gICAgYWNjZXB0ZWRFeHRlbnNpb25zPzogc3RyaW5nO1xuICAgIGZpbGVTdHI/OiBzdHJpbmc7XG4gICAgZmlsZU5hbWU/OiBzdHJpbmc7XG4gICAgZmlsZUV4dD86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtZmlsZXMtdXBsb2FkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maWxlcy11cGxvYWRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmlsZXMtdXBsb2FkZXIuY29tcG9uZW50LnNjc3MnLCAnLi9maWxlcy11cGxvYWRlci5jb21wb25lbnQudGhlbWUuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQZXBGaWxlc1VwbG9hZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBrZXkgPSAnJztcbiAgICBASW5wdXQoKSBzcmMgPSAnJztcbiAgICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuICAgIEBJbnB1dCgpIG1hbmRhdG9yeSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gICAgQElucHV0KCkgeEFsaWdubWVudDogUGVwSG9yaXpvbnRhbEFsaWdubWVudCA9IERFRkFVTFRfSE9SSVpPTlRBTF9BTElHTk1FTlQ7XG5cbiAgICBwcml2YXRlIF9yb3dTcGFuID0gMTtcbiAgICBASW5wdXQoKVxuICAgIHNldCByb3dTcGFuKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX3Jvd1NwYW4gPSB2YWx1ZTtcbiAgICB9XG4gICAgZ2V0IHJvd1NwYW4oKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd1NwYW47XG4gICAgfVxuXG4gICAgQElucHV0KCkgY29udHJvbFR5cGUgPSAnJztcbiAgICBASW5wdXQoKSBzaXplTGltaXRNQiA9IDU7XG5cbiAgICBASW5wdXQoKSBmb3JtOiBGb3JtR3JvdXA7XG4gICAgQElucHV0KCkgc3RhbmRBbG9uZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGFjY2VwdGVkRXh0ZW5zaW9ucyA9ICdibXAsanBnLGpwZWcscG5nLGdpZixpY28sc3ZnLGh0bWwsY3NzJztcbiAgICBASW5wdXQoKSBsYXlvdXRUeXBlOiBQZXBMYXlvdXRUeXBlID0gJ2Zvcm0nO1xuXG4gICAgQE91dHB1dCgpXG4gICAgZmlsZUNoYW5nZTogRXZlbnRFbWl0dGVyPElQZXBGaWxlQ2hhbmdlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwRmlsZUNoYW5nZUV2ZW50PigpO1xuICAgIEBPdXRwdXQoKVxuICAgIGVsZW1lbnRDbGljazogRXZlbnRFbWl0dGVyPElQZXBGaWVsZENsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJUGVwRmllbGRDbGlja0V2ZW50PigpO1xuXG4gICAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JykgZmlsZUlucHV0OiBhbnk7XG4gICAgQFZpZXdDaGlsZCgnaW1hZ2VQcmV2aWV3JykgaW1hZ2VQcmV2aWV3OiBhbnk7XG5cbiAgICBASW5wdXQoKSBmaWVsZEhlaWdodCA9ICcnO1xuXG4gICAgLy8gbXVsdGlwbGUgPSBmYWxzZTtcbiAgICB1cGxvYWRlcjogRmlsZVVwbG9hZGVyO1xuICAgIHByb2dyZXNzID0gMDtcbiAgICAvLyByZXNwb25zZTogc3RyaW5nO1xuICAgIGludGVydmFsSUQ6IGFueSA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBQZXBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGN1c3RvbWl6YXRpb25TZXJ2aWNlOiBQZXBDdXN0b21pemF0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBmaWxlU2VydmljZTogUGVwRmlsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMudXBsb2FkZXIgPSBuZXcgRmlsZVVwbG9hZGVyKHsgcmVtb3ZlQWZ0ZXJVcGxvYWQ6IHRydWUgfSk7XG5cbiAgICAgICAgdGhpcy51cGxvYWRlci5vbkFmdGVyQWRkaW5nRmlsZSA9IChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5maWxlSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuXG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBmaXggZm9yIERJLTE5Mzc2IC0gd2hlbiB0aGVyZSBpcyBhIGRvdCBvbiB0aGUgZmlsZSBuYW1lIChub3QgaW5jbHVkZSB0aGUgZXh0YW50aW9uIG9uZSlcbiAgICAgICAgICAgICAgICAvL2NvbnN0IGZpbGVOYW1lQXJyYXkgPSBpdGVtLl9maWxlLm5hbWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IHRoaXMuZ2V0RmlsZU5hbWUoaXRlbS5fZmlsZS5uYW1lKTsgLy9maWxlTmFtZUFycmF5WzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVFeHQgPSB0aGlzLmdldEZpbGVFeHRlbnNpb24oaXRlbS5fZmlsZS5uYW1lKTsgLy9maWxlTmFtZUFycmF5WzFdOyAvLyBpdGVtLl9maWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgfHwgZXZlbnQuc3JjRWxlbWVudDtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlU3RyID0gdGFyZ2V0LnJlc3VsdDtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvck1zZyA9IHRoaXMuaXNWYWxpZEZpbGUoXG4gICAgICAgICAgICAgICAgICAgIGZpbGVTdHIsXG4gICAgICAgICAgICAgICAgICAgIGZpbGVFeHQsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWNjZXB0ZWRFeHRlbnNpb25zLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNpemVMaW1pdE1CXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JNc2cgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3JjID0gZmlsZVN0cjtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5zZXRJbnRlcnZhbFgoMjUsIDc1KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5zZXRQcm9ncmVzcyg1KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0ZWRFeHRlbnNpb25zOiB0aGlzLmFjY2VwdGVkRXh0ZW5zaW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVTdHIsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVFeHQsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICAgICAgICdNRVNTQUdFUy5USVRMRV9OT1RJQ0UnXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBuZXcgUGVwRGlhbG9nRGF0YSh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGVycm9yTXNnLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW5EZWZhdWx0RGlhbG9nKGRhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChpdGVtLl9maWxlKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBnZXRGaWxlTmFtZShmaWxlbmFtZSl7XG4gICAgICAgIC8vIGdldCBmaWxlIG5hbWVcbiAgICAgICAgY29uc3QgZmlsZU5hbWUgPSBmaWxlbmFtZS5zdWJzdHJpbmcoMCxmaWxlbmFtZS5sYXN0SW5kZXhPZignLicpKTtcbiAgICAgICAgcmV0dXJuIGZpbGVOYW1lO1xuICAgIH1cblxuICAgIGdldEZpbGVFeHRlbnNpb24oZmlsZW5hbWUpe1xuICAgICAgICAvLyBnZXQgZmlsZSBleHRlbnNpb25cbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gZmlsZW5hbWUuc3Vic3RyaW5nKGZpbGVuYW1lLmxhc3RJbmRleE9mKCcuJykgKyAxLCBmaWxlbmFtZS5sZW5ndGgpO1xuICAgICAgICByZXR1cm4gZXh0ZW5zaW9uO1xuICAgIH1cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLyp0aGlzLnVwbG9hZGVyLm9uQ29tcGxldGVBbGwgPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgIH0qL1xuICAgIH1cblxuICAgIGlzVmFsaWRGaWxlKFxuICAgICAgICBmaWxlU3RyLFxuICAgICAgICBmaWxlRXh0ZW5zaW9uLFxuICAgICAgICBhY2NlcHRlZEV4dGVuc2lvbnMsXG4gICAgICAgIHNpemVMaW1pdE1CID0gNVxuICAgICk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGZpbGU6IGFueSA9IGZpbGVTdHI7XG4gICAgICAgIGxldCBmaWxlU2l6ZSA9IDA7XG4gICAgICAgIGxldCBjb250ZW50ID0gJyc7XG4gICAgICAgIC8vIGNoZWNrIGlmIGdvdCBmaWxlIGFzIEJhc2U2NFxuICAgICAgICBpZiAodHlwZW9mIGZpbGVTdHIgPT09ICdzdHJpbmcnICYmIGZpbGVTdHIuaW5kZXhPZignZGF0YTonKSA+IC0xKSB7XG4gICAgICAgICAgICBmaWxlU2l6ZSA9IHRoaXMuZ2V0QmFzZTY0RmlsZVNpemUoZmlsZVN0cik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWxlU2l6ZSA9IGZpbGUuc2l6ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBjaGVjayB0aGUgc2l6ZSBhbmQgdGhlIGV4dGVuc2lvblxuICAgICAgICBjb25zdCBzaXplT0s6IGJvb2xlYW4gPVxuICAgICAgICAgICAgZmlsZVNpemUgIT09IC0xICYmIGZpbGUgIT0gbnVsbCAmJiBmaWxlU2l6ZSA8IHNpemVMaW1pdE1CICogMTA0ODU3NjtcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uT0sgPVxuICAgICAgICAgICAgYWNjZXB0ZWRFeHRlbnNpb25zID09PSAnJyB8fFxuICAgICAgICAgICAgYWNjZXB0ZWRFeHRlbnNpb25zLmluZGV4T2YoZmlsZUV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpKSAhPT0gLTE7XG4gICAgICAgIGlmICghZXh0ZW5zaW9uT0spIHtcbiAgICAgICAgICAgIGNvbnRlbnQgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICdNRVNTQUdFUy5FUlJPUl9GQUlMRF9UT19MT0FEX0VYVEVOU0lPTicsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBmaWxlRXh0ZW5zaW9uOlxuICAgICAgICAgICAgICAgICAgICAgICAgXCI8bGFiZWwgY2xhc3M9J3VwcGVyY2FzZSBib2xkJz5cIiArXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlRXh0ZW5zaW9uICtcbiAgICAgICAgICAgICAgICAgICAgICAgICc8L2xhYmVsPicsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmICghc2l6ZU9LKSB7XG4gICAgICAgICAgICBjb250ZW50ID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChcbiAgICAgICAgICAgICAgICAnTUVTU0FHRVMuRVJST1JfRkFJTERfVE9fTE9BRF9TSVpFJyxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGZpbGVTaXplOlxuICAgICAgICAgICAgICAgICAgICAgICAgXCI8bGFiZWwgY2xhc3M9J3VwcGVyY2FzZSBib2xkJz5cIiArXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplTGltaXRNQi50b1N0cmluZygpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICc8L2xhYmVsPicsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG5cbiAgICBnZXRCYXNlNjRGaWxlU2l6ZShiYXNlNjRTdHJpbmc6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGxldCBmaWxlU2l6ZTogbnVtYmVyO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBiYXNlNjRTdHJpbmcgPSBiYXNlNjRTdHJpbmcuc3Vic3RyKGJhc2U2NFN0cmluZy5pbmRleE9mKCcsJykgKyAxKTtcbiAgICAgICAgICAgIGZpbGVTaXplID0gYXRvYihiYXNlNjRTdHJpbmcpLmxlbmd0aDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgZmlsZVNpemUgPSAtMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWxlU2l6ZTsgLy8gcmV0dXJuIHNpemUgaW4gYnl0ZXM7XG4gICAgfVxuXG4gICAgLy8gc2V0SW50ZXJ2YWxYKGRlbGF5LCByZXBldGl0aW9ucyk6IHZvaWQge1xuICAgIC8vICAgICBsZXQgeCA9IDA7XG4gICAgLy8gICAgIHRoaXMuaW50ZXJ2YWxJRCA9IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgLy8gICAgICAgICAvLyB0aGlzLnNldFByb2dyZXNzKHRoaXMucHJvZ3Jlc3MgKyA1KTtcbiAgICAvLyAgICAgICAgIGlmICgrK3ggPT09IHJlcGV0aXRpb25zIHx8IHRoaXMudXBsb2FkZXIucHJvZ3Jlc3MgPj0gMTAwKSB7XG4gICAgLy8gICAgICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElEKTtcbiAgICAvLyAgICAgICAgIH1cbiAgICAvLyAgICAgfSwgZGVsYXkpO1xuICAgIC8vIH1cblxuICAgIGVycm9ySGFuZGxlcihldmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC50YXJnZXQuc3JjID0gdGhpcy5maWxlU2VydmljZS5nZXRTdmdBc0ltYWdlU3JjKFxuICAgICAgICAgICAgcGVwSWNvbk5vSW1hZ2UyLmRhdGFcbiAgICAgICAgKTtcbiAgICAgICAgZXZlbnQudGFyZ2V0LnRpdGxlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnSU1BR0UuTk9fSU1BR0UnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFByb2dyZXNzKHByb2dyZXNzKTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSBwcm9ncmVzcztcbiAgICAgICAgdGhpcy51cGxvYWRlci5wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgIH1cblxuICAgIGRlbGV0ZUZpbGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBsb2FkZXIuY2xlYXJRdWV1ZSgpO1xuICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSUQpO1xuICAgICAgICB0aGlzLnNldFByb2dyZXNzKDApO1xuXG4gICAgICAgIGNvbnN0IGVtcGx0VmFsdWUgPSAnJztcbiAgICAgICAgdGhpcy5zcmMgPSBlbXBsdFZhbHVlO1xuXG4gICAgICAgIHRoaXMuZmlsZUNoYW5nZS5lbWl0KG51bGwpO1xuXG4gICAgICAgIC8vIHRoaXMuZmlsZUNoYW5nZS5lbWl0KHtcbiAgICAgICAgLy8gICAgIGFjY2VwdGVkRXh0ZW5zaW9uczogdGhpcy5hY2NlcHRlZEV4dGVuc2lvbnMsXG4gICAgICAgIC8vICAgICBmaWxlU3RyOiBudWxsLFxuICAgICAgICAvLyAgICAgZmlsZUV4dDogbnVsbCxcbiAgICAgICAgLy8gfSk7XG4gICAgfVxuXG4gICAgb25FbGVtZW50Q2xpY2tlZChldmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVsZW1lbnRDbGljay5lbWl0KHtcbiAgICAgICAgICAgIGtleTogdGhpcy5rZXksXG4gICAgICAgICAgICBjb250cm9sVHlwZTogdGhpcy5jb250cm9sVHlwZSxcbiAgICAgICAgICAgIGV2ZW50V2hpY2g6IGV2ZW50LndoaWNoLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNsaWNrX0Nob29zZUZpbGUoZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZmlsZUlucHV0Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbktleVByZXNzX0Nob29zZUZpbGUoZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZSA9IGV2ZW50IGFzIEtleWJvYXJkRXZlbnQ7XG5cbiAgICAgICAgaWYgKFsxMywgMzJdLmluZGV4T2YoZS53aGljaCkgIT09IC0xKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5maWxlSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbn1cbiJdfQ==