@tolle_/tolle-ui 18.2.24 → 18.2.25

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 (184) hide show
  1. package/esm2022/lib/accordion-item.component.mjs +17 -5
  2. package/esm2022/lib/alert-dialog-dynamic.component.mjs +1 -1
  3. package/esm2022/lib/alert-dialog.component.mjs +48 -10
  4. package/esm2022/lib/alert-dialog.service.mjs +13 -2
  5. package/esm2022/lib/alert.component.mjs +5 -5
  6. package/esm2022/lib/avatar.component.mjs +30 -9
  7. package/esm2022/lib/badge.component.mjs +41 -15
  8. package/esm2022/lib/breadcrumb-link.component.mjs +5 -5
  9. package/esm2022/lib/button.component.mjs +14 -3
  10. package/esm2022/lib/calendar.component.mjs +99 -17
  11. package/esm2022/lib/card.component.mjs +29 -9
  12. package/esm2022/lib/carousel/carousel.component.mjs +19 -3
  13. package/esm2022/lib/checkbox.component.mjs +44 -21
  14. package/esm2022/lib/collapsible.component.mjs +12 -4
  15. package/esm2022/lib/country-selector.component.mjs +140 -20
  16. package/esm2022/lib/data-table.component.mjs +27 -16
  17. package/esm2022/lib/date-picker.component.mjs +24 -4
  18. package/esm2022/lib/date-range-picker.component.mjs +37 -9
  19. package/esm2022/lib/dropdown-item.component.mjs +19 -5
  20. package/esm2022/lib/dropdown-label.component.mjs +3 -3
  21. package/esm2022/lib/dropdown-menu.component.mjs +3 -3
  22. package/esm2022/lib/dropdown-separator.component.mjs +3 -3
  23. package/esm2022/lib/dropdown-trigger.directive.mjs +7 -3
  24. package/esm2022/lib/empty-state.component.mjs +3 -3
  25. package/esm2022/lib/hover-card.component.mjs +4 -2
  26. package/esm2022/lib/input.component.mjs +7 -5
  27. package/esm2022/lib/label.component.mjs +2 -2
  28. package/esm2022/lib/masked-input.component.mjs +3 -3
  29. package/esm2022/lib/modal.component.mjs +58 -22
  30. package/esm2022/lib/modal.service.mjs +13 -1
  31. package/esm2022/lib/multi-select.component.mjs +228 -20
  32. package/esm2022/lib/otp.component.mjs +6 -3
  33. package/esm2022/lib/pagination.component.mjs +19 -9
  34. package/esm2022/lib/progress.component.mjs +8 -5
  35. package/esm2022/lib/radio-group.component.mjs +51 -3
  36. package/esm2022/lib/radio-item.component.mjs +46 -8
  37. package/esm2022/lib/radio-service.mjs +60 -1
  38. package/esm2022/lib/range-calendar.component.mjs +317 -98
  39. package/esm2022/lib/resizable-panel.component.mjs +5 -4
  40. package/esm2022/lib/scroll-area.component.mjs +5 -5
  41. package/esm2022/lib/segment.component.mjs +73 -7
  42. package/esm2022/lib/select-item.component.mjs +20 -2
  43. package/esm2022/lib/select-separator.component.mjs +3 -3
  44. package/esm2022/lib/select.component.mjs +221 -14
  45. package/esm2022/lib/separator.component.mjs +12 -6
  46. package/esm2022/lib/sheet-ref.mjs +8 -1
  47. package/esm2022/lib/sheet-wrapper.component.mjs +27 -11
  48. package/esm2022/lib/sheet.component.mjs +57 -16
  49. package/esm2022/lib/sheet.service.mjs +5 -1
  50. package/esm2022/lib/sidebar.component.mjs +73 -15
  51. package/esm2022/lib/skeleton.component.mjs +19 -5
  52. package/esm2022/lib/switch.component.mjs +59 -53
  53. package/esm2022/lib/tabs.component.mjs +75 -13
  54. package/esm2022/lib/tag-input.component.mjs +6 -3
  55. package/esm2022/lib/textarea.component.mjs +9 -7
  56. package/esm2022/lib/theme.service.mjs +114 -138
  57. package/esm2022/lib/toaster.component.mjs +19 -9
  58. package/esm2022/lib/toggle-group.component.mjs +76 -4
  59. package/esm2022/lib/tolle-config.mjs +1 -1
  60. package/esm2022/lib/tooltip.directive.mjs +41 -17
  61. package/esm2022/lib/utils/color.mjs +324 -0
  62. package/esm2022/public-api.mjs +2 -1
  63. package/fesm2022/tolle-ui.mjs +2645 -637
  64. package/fesm2022/tolle-ui.mjs.map +1 -1
  65. package/lib/alert-dialog.component.d.ts +10 -1
  66. package/lib/avatar.component.d.ts +16 -3
  67. package/lib/badge.component.d.ts +17 -5
  68. package/lib/button.component.d.ts +10 -3
  69. package/lib/calendar.component.d.ts +21 -3
  70. package/lib/card.component.d.ts +6 -0
  71. package/lib/carousel/carousel.component.d.ts +1 -0
  72. package/lib/checkbox.component.d.ts +12 -4
  73. package/lib/country-selector.component.d.ts +11 -2
  74. package/lib/date-picker.component.d.ts +1 -0
  75. package/lib/date-range-picker.component.d.ts +4 -1
  76. package/lib/dropdown-item.component.d.ts +4 -2
  77. package/lib/dropdown-trigger.directive.d.ts +1 -1
  78. package/lib/modal.component.d.ts +6 -0
  79. package/lib/multi-select.component.d.ts +20 -0
  80. package/lib/otp.component.d.ts +1 -0
  81. package/lib/progress.component.d.ts +1 -0
  82. package/lib/radio-group.component.d.ts +8 -0
  83. package/lib/radio-item.component.d.ts +10 -4
  84. package/lib/radio-service.d.ts +29 -0
  85. package/lib/range-calendar.component.d.ts +33 -4
  86. package/lib/segment.component.d.ts +13 -0
  87. package/lib/select-item.component.d.ts +4 -1
  88. package/lib/select.component.d.ts +20 -0
  89. package/lib/separator.component.d.ts +2 -0
  90. package/lib/sheet-wrapper.component.d.ts +4 -0
  91. package/lib/sheet.component.d.ts +10 -1
  92. package/lib/sidebar.component.d.ts +2 -0
  93. package/lib/skeleton.component.d.ts +9 -3
  94. package/lib/switch.component.d.ts +13 -20
  95. package/lib/tabs.component.d.ts +11 -1
  96. package/lib/theme.service.d.ts +21 -6
  97. package/lib/toaster.component.d.ts +2 -2
  98. package/lib/toggle-group.component.d.ts +20 -2
  99. package/lib/toggle.component.d.ts +1 -1
  100. package/lib/tolle-config.d.ts +8 -0
  101. package/lib/tooltip.directive.d.ts +3 -0
  102. package/lib/utils/color.d.ts +87 -0
  103. package/package.json +4 -1
  104. package/preset.js +28 -0
  105. package/public-api.d.ts +1 -0
  106. package/registry/docs-content.json +4214 -0
  107. package/registry/llms-full.txt +1599 -0
  108. package/registry/llms.txt +83 -0
  109. package/registry/manifest.json +4925 -0
  110. package/registry/r/accordion-item.json +21 -0
  111. package/registry/r/accordion.json +23 -0
  112. package/registry/r/alert-dialog-dynamic.json +31 -0
  113. package/registry/r/alert-dialog.json +26 -0
  114. package/registry/r/alert.json +23 -0
  115. package/registry/r/aspect-ratio.json +21 -0
  116. package/registry/r/avatar-fallback.json +16 -0
  117. package/registry/r/avatar.json +23 -0
  118. package/registry/r/badge.json +23 -0
  119. package/registry/r/breadcrumb-item.json +16 -0
  120. package/registry/r/breadcrumb-link.json +16 -0
  121. package/registry/r/breadcrumb-separator.json +16 -0
  122. package/registry/r/breadcrumb.json +21 -0
  123. package/registry/r/button-group.json +21 -0
  124. package/registry/r/button.json +23 -0
  125. package/registry/r/calendar.json +23 -0
  126. package/registry/r/card.json +21 -0
  127. package/registry/r/carousel.json +18 -0
  128. package/registry/r/checkbox.json +23 -0
  129. package/registry/r/collapsible.json +21 -0
  130. package/registry/r/context-menu-trigger.json +23 -0
  131. package/registry/r/context-menu.json +28 -0
  132. package/registry/r/country-selector.json +31 -0
  133. package/registry/r/data-table.json +38 -0
  134. package/registry/r/date-picker.json +27 -0
  135. package/registry/r/date-range-picker.json +32 -0
  136. package/registry/r/dropdown-item.json +21 -0
  137. package/registry/r/dropdown-label.json +16 -0
  138. package/registry/r/dropdown-menu.json +16 -0
  139. package/registry/r/dropdown-separator.json +16 -0
  140. package/registry/r/dropdown-trigger.json +20 -0
  141. package/registry/r/empty-state.json +23 -0
  142. package/registry/r/hover-card.json +23 -0
  143. package/registry/r/input.json +21 -0
  144. package/registry/r/label.json +21 -0
  145. package/registry/r/masked-input.json +21 -0
  146. package/registry/r/modal.json +36 -0
  147. package/registry/r/multi-select.json +33 -0
  148. package/registry/r/otp-group.json +16 -0
  149. package/registry/r/otp-slot.json +21 -0
  150. package/registry/r/otp.json +21 -0
  151. package/registry/r/pagination.json +32 -0
  152. package/registry/r/phone-number-input.json +34 -0
  153. package/registry/r/popover-content.json +21 -0
  154. package/registry/r/popover.json +18 -0
  155. package/registry/r/progress.json +21 -0
  156. package/registry/r/radio-group.json +26 -0
  157. package/registry/r/radio-item.json +26 -0
  158. package/registry/r/range-calendar.json +28 -0
  159. package/registry/r/resizable-panel-item.json +23 -0
  160. package/registry/r/resizable-panel.json +23 -0
  161. package/registry/r/resizable.json +21 -0
  162. package/registry/r/scroll-area.json +21 -0
  163. package/registry/r/segment.json +21 -0
  164. package/registry/r/select-group.json +21 -0
  165. package/registry/r/select-item.json +26 -0
  166. package/registry/r/select-separator.json +21 -0
  167. package/registry/r/select.json +31 -0
  168. package/registry/r/separator.json +21 -0
  169. package/registry/r/sheet-wrapper.json +31 -0
  170. package/registry/r/sheet.json +21 -0
  171. package/registry/r/sidebar.json +21 -0
  172. package/registry/r/skeleton.json +23 -0
  173. package/registry/r/slider.json +21 -0
  174. package/registry/r/switch.json +23 -0
  175. package/registry/r/tabs.json +23 -0
  176. package/registry/r/tag-input.json +25 -0
  177. package/registry/r/textarea.json +21 -0
  178. package/registry/r/toaster.json +26 -0
  179. package/registry/r/toggle-group.json +25 -0
  180. package/registry/r/toggle.json +23 -0
  181. package/registry/r/tolle-cell.json +16 -0
  182. package/registry/r/tooltip.json +23 -0
  183. package/registry/registry.json +1540 -0
  184. package/theme.css +56 -1
@@ -125,7 +125,6 @@ export class DataTableComponent {
125
125
  });
126
126
  }
127
127
  handlePageChange(newPage) {
128
- console.log('Page Change Event Triggered:', newPage); // <--- Add this
129
128
  this.currentPage = newPage;
130
129
  this.updatePage();
131
130
  }
@@ -186,6 +185,7 @@ export class DataTableComponent {
186
185
  <tolle-input
187
186
  [size]="size === 'lg' ? 'default' : 'sm'"
188
187
  class="w-full"
188
+ aria-label="Filter records"
189
189
  placeholder="Filter records..."
190
190
  [(ngModel)]="searchTerm"
191
191
  (ngModelChange)="onSearch()">
@@ -224,17 +224,20 @@ export class DataTableComponent {
224
224
  <table class="w-full table-auto border-collapse">
225
225
  <thead class="border-b border-border bg-background">
226
226
  <tr>
227
- <th *ngIf="expandable" [class]="cn('px-4', size === 'xs' ? 'w-[32px]' : 'w-[48px]', stickyHeader ? 'sticky top-0 z-10 bg-background' : '')"></th>
227
+ <th *ngIf="expandable" scope="col" [class]="cn('px-4', size === 'xs' ? 'w-[32px]' : 'w-[48px]', stickyHeader ? 'sticky top-0 z-10 bg-background' : '')"></th>
228
228
 
229
229
  <th *ngFor="let col of activeColumns"
230
+ scope="col"
231
+ [attr.aria-sort]="sortKey === col.key ? (sortDir === 'asc' ? 'ascending' : (sortDir === 'desc' ? 'descending' : 'none')) : 'none'"
230
232
  [class]="cn('text-left font-medium text-foreground',headerPaddingClass,fontSizeClass, col.class, stickyHeader ? 'sticky top-0 z-10 bg-background shadow-sm' : '')">
231
233
 
232
- <div *ngIf="col.sortable; else plainHeader"
234
+ <button *ngIf="col.sortable; else plainHeader"
235
+ type="button"
233
236
  (click)="toggleSort(col.key)"
234
- class="flex items-center gap-1 cursor-pointer select-none">
237
+ class="flex items-center gap-1 cursor-pointer select-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm">
235
238
  {{ col.label }}
236
- <i [class]="getSortIcon(col.key)"></i>
237
- </div>
239
+ <i [class]="getSortIcon(col.key)" aria-hidden="true"></i>
240
+ </button>
238
241
 
239
242
  <ng-template #plainHeader>
240
243
  {{ col.label }}
@@ -248,13 +251,15 @@ export class DataTableComponent {
248
251
  <tr class="hover:bg-muted/50 transition-colors">
249
252
  <td *ngIf="expandable" class="px-4">
250
253
  <button (click)="toggleRow(i)"
254
+ [attr.aria-label]="expandedRows.has(i) ? 'Collapse row' : 'Expand row'"
255
+ [attr.aria-expanded]="expandedRows.has(i)"
251
256
  [class]="cn(
252
- 'rounded-md hover:bg-accent transition-colors',
257
+ 'rounded-md hover:bg-accent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',
253
258
  size === 'xs' ? 'h-6 w-6' : 'h-8 w-8'
254
259
  )">
255
260
  <i [class]="expandedRows.has(i)
256
261
  ? 'ri-arrow-down-s-line'
257
- : 'ri-arrow-right-s-line'">
262
+ : 'ri-arrow-right-s-line'" aria-hidden="true">
258
263
  </i>
259
264
  </button>
260
265
  </td>
@@ -336,6 +341,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
336
341
  <tolle-input
337
342
  [size]="size === 'lg' ? 'default' : 'sm'"
338
343
  class="w-full"
344
+ aria-label="Filter records"
339
345
  placeholder="Filter records..."
340
346
  [(ngModel)]="searchTerm"
341
347
  (ngModelChange)="onSearch()">
@@ -374,17 +380,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
374
380
  <table class="w-full table-auto border-collapse">
375
381
  <thead class="border-b border-border bg-background">
376
382
  <tr>
377
- <th *ngIf="expandable" [class]="cn('px-4', size === 'xs' ? 'w-[32px]' : 'w-[48px]', stickyHeader ? 'sticky top-0 z-10 bg-background' : '')"></th>
383
+ <th *ngIf="expandable" scope="col" [class]="cn('px-4', size === 'xs' ? 'w-[32px]' : 'w-[48px]', stickyHeader ? 'sticky top-0 z-10 bg-background' : '')"></th>
378
384
 
379
385
  <th *ngFor="let col of activeColumns"
386
+ scope="col"
387
+ [attr.aria-sort]="sortKey === col.key ? (sortDir === 'asc' ? 'ascending' : (sortDir === 'desc' ? 'descending' : 'none')) : 'none'"
380
388
  [class]="cn('text-left font-medium text-foreground',headerPaddingClass,fontSizeClass, col.class, stickyHeader ? 'sticky top-0 z-10 bg-background shadow-sm' : '')">
381
389
 
382
- <div *ngIf="col.sortable; else plainHeader"
390
+ <button *ngIf="col.sortable; else plainHeader"
391
+ type="button"
383
392
  (click)="toggleSort(col.key)"
384
- class="flex items-center gap-1 cursor-pointer select-none">
393
+ class="flex items-center gap-1 cursor-pointer select-none focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded-sm">
385
394
  {{ col.label }}
386
- <i [class]="getSortIcon(col.key)"></i>
387
- </div>
395
+ <i [class]="getSortIcon(col.key)" aria-hidden="true"></i>
396
+ </button>
388
397
 
389
398
  <ng-template #plainHeader>
390
399
  {{ col.label }}
@@ -398,13 +407,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
398
407
  <tr class="hover:bg-muted/50 transition-colors">
399
408
  <td *ngIf="expandable" class="px-4">
400
409
  <button (click)="toggleRow(i)"
410
+ [attr.aria-label]="expandedRows.has(i) ? 'Collapse row' : 'Expand row'"
411
+ [attr.aria-expanded]="expandedRows.has(i)"
401
412
  [class]="cn(
402
- 'rounded-md hover:bg-accent transition-colors',
413
+ 'rounded-md hover:bg-accent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',
403
414
  size === 'xs' ? 'h-6 w-6' : 'h-8 w-8'
404
415
  )">
405
416
  <i [class]="expandedRows.has(i)
406
417
  ? 'ri-arrow-down-s-line'
407
- : 'ri-arrow-right-s-line'">
418
+ : 'ri-arrow-right-s-line'" aria-hidden="true">
408
419
  </i>
409
420
  </button>
410
421
  </td>
@@ -498,4 +509,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
498
509
  }], expandedTemplate: [{
499
510
  type: Input
500
511
  }] } });
501
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvbGliL2RhdGEtdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQUUsS0FBSyxFQUNILGVBQWUsRUFDN0IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQXlLekQsTUFBTSxPQUFPLGtCQUFrQjtJQUNwQixJQUFJLEdBQVUsRUFBRSxDQUFDO0lBQ2pCLE9BQU8sR0FBa0IsRUFBRSxDQUFDO0lBQzVCLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDbEIsUUFBUSxHQUFHLElBQUksQ0FBQztJQUNoQixlQUFlLEdBQWEsRUFBRSxDQUFBO0lBQzlCLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDZCxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBRW5CLElBQUksR0FBbUMsU0FBUyxDQUFDO0lBQ2pELFlBQVksR0FBRyxLQUFLLENBQUM7SUFDckIsU0FBUyxDQUFVO0lBRTVCLGlDQUFpQztJQUN4QixpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDekIsWUFBWSxHQUFHLElBQUksQ0FBQztJQUU3Qix5QkFBeUI7SUFDekIsZ0JBQWdCLEdBQTRCLEVBQUUsQ0FBQztJQUUvQyw0Q0FBNEM7SUFDNUMsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsWUFBWSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFDSSxhQUFhLENBQWlDO0lBQzFFLGdCQUFnQixDQUFvQjtJQUU3QyxZQUFZLEdBQVUsRUFBRSxDQUFDO0lBQ3pCLFNBQVMsR0FBVSxFQUFFLENBQUM7SUFDdEIsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUNoQixXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDYixPQUFPLEdBQTBCLElBQUksQ0FBQztJQUV0QyxnQkFBZ0I7SUFDaEIsSUFBSSxnQkFBZ0I7UUFDbEIsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLFVBQVUsQ0FBQztZQUM3QixLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sVUFBVSxDQUFDO1lBQzdCLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxVQUFVLENBQUM7WUFDN0IsT0FBTyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLGtCQUFrQjtRQUNwQixRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQixLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sVUFBVSxDQUFDO1lBQzdCLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxVQUFVLENBQUM7WUFDN0IsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLFdBQVcsQ0FBQztZQUM5QixPQUFPLENBQUMsQ0FBQyxPQUFPLFdBQVcsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxhQUFhLENBQUM7WUFDaEMsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQztZQUM1QixLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sV0FBVyxDQUFDO1lBQzlCLE9BQU8sQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRVMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUVsQixRQUFRO1FBQ04sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxvQ0FBb0M7WUFDMUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pCLCtFQUErRTtZQUMvRSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3hDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGtEQUFrRDtJQUNsRCxZQUFZLENBQUMsR0FBVztRQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekQsMEZBQTBGO1FBQzFGLG9EQUFvRDtJQUN0RCxDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxZQUFZO2dCQUNmLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakIsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FDekMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3RFLENBQUM7SUFDSixDQUFDO0lBRU8sU0FBUztRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBQzNDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzlCLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFBQyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNELElBQUksSUFBSSxHQUFHLElBQUk7Z0JBQUUsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4RCxJQUFJLElBQUksR0FBRyxJQUFJO2dCQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEQsT0FBTyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFlO1FBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7UUFDdEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxPQUFlO1FBQ2xDLElBQUksT0FBTyxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztZQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLG9DQUFvQztZQUMxRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDbkMsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNyRCxNQUFNLEdBQUcsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUVsQyxnRUFBZ0U7UUFDaEUsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5RCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVc7UUFDcEIsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzFGLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUM7WUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsK0JBQStCO1FBQ3JELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVc7UUFDckIsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxtQ0FBbUMsQ0FBQyxDQUFDLGtDQUFrQztRQUN6SCxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDLENBQUMsb0NBQW9DLENBQUM7SUFDNUcsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxDQUFDO2FBQ0ksQ0FBQztZQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEdBQVc7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDdkQsQ0FBQzt3R0E3TFUsa0JBQWtCOzRGQUFsQixrQkFBa0IsNGNBMEJaLGtCQUFrQixrREF0S3pCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwSVQsMlJBbEpDLFlBQVksc2FBQ1osV0FBVywrVkFDWCxtQkFBbUIsZ1NBQ25CLGNBQWMsdU5BQ2QsZ0JBQWdCLGlIQUNoQix1QkFBdUIscUZBQ3ZCLGlCQUFpQjs7NEZBOElSLGtCQUFrQjtrQkFoSzlCLFNBQVM7K0JBQ0Usa0JBQWtCLGNBQ2hCLElBQUksV0FTUDt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGdCQUFnQjt3QkFDaEIsdUJBQXVCO3dCQUN2QixpQkFBaUI7cUJBQ2xCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBJVDs4QkFHUSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQVcrQixhQUFhO3NCQUFqRCxlQUFlO3VCQUFDLGtCQUFrQjtnQkFDMUIsZ0JBQWdCO3NCQUF4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLCBDb250ZW50Q2hpbGRyZW4sIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5pbXBvcnQgeyBQYWdpbmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUb2xsZUNlbGxEaXJlY3RpdmUgfSBmcm9tICcuL3RvbGxlLWNlbGwuZGlyZWN0aXZlJztcbmltcG9ydCB7IElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4vcG9wb3Zlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9wb3ZlckNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL3BvcG92ZXItY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuL2NoZWNrYm94LmNvbXBvbmVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVDb2x1bW4ge1xuICBrZXk6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgc29ydGFibGU/OiBib29sZWFuO1xuICBjbGFzcz86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtZGF0YS10YWJsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHN0eWxlczogW2BcbiAgICA6aG9zdCB7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyB9XG4gICAgdGFibGUgeyB3aWR0aDogMTAwJTsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgZGlzcGxheTogdGFibGU7IH1cbiAgICB0aGVhZCB7IGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91cDsgfVxuICAgIHRib2R5IHsgZGlzcGxheTogdGFibGUtcm93LWdyb3VwOyB9XG4gICAgdHIgeyBkaXNwbGF5OiB0YWJsZS1yb3c7IH1cbiAgICB0aCwgdGQgeyBkaXNwbGF5OiB0YWJsZS1jZWxsOyB9XG4gIGBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFBhZ2luYXRpb25Db21wb25lbnQsXG4gICAgSW5wdXRDb21wb25lbnQsXG4gICAgUG9wb3ZlckNvbXBvbmVudCxcbiAgICBQb3BvdmVyQ29udGVudENvbXBvbmVudCxcbiAgICBDaGVja2JveENvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiaC1mdWxsIGZsZXggZmxleC1jb2wgdy1mdWxsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB5LTIgZmxleC1ub25lXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWFyY2hhYmxlXCIgY2xhc3M9XCJ3LWZ1bGwgbWF4LXctc21cIj5cbiAgICAgICAgICA8dG9sbGUtaW5wdXRcbiAgICAgICAgICAgIFtzaXplXT1cInNpemUgPT09ICdsZycgPyAnZGVmYXVsdCcgOiAnc20nXCJcbiAgICAgICAgICAgIGNsYXNzPVwidy1mdWxsXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIHJlY29yZHMuLi5cIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VhcmNoKClcIj5cbiAgICAgICAgICAgIDxpIHByZWZpeCBjbGFzcz1cInJpLXNlYXJjaC1saW5lXCI+PC9pPlxuICAgICAgICAgIDwvdG9sbGUtaW5wdXQ+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDx0b2xsZS1wb3BvdmVyICpuZ0lmPVwiYWxsb3dDb2x1bW5IaWRpbmcgJiYgc2hvd1NldHRpbmdzXCI+XG4gICAgICAgICAgPGJ1dHRvbiB0cmlnZ2VyXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY24oXG4gICAgICAgICAgICAgICdtbC1hdXRvIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1pbnB1dCBiZy1iYWNrZ3JvdW5kIHB4LTMgaG92ZXI6YmctYWNjZW50IGhvdmVyOnRleHQtYWNjZW50LWZvcmVncm91bmQgdHJhbnNpdGlvbi1jb2xvcnMgb3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nJyxcbiAgICAgICAgICAgICAgc2l6ZSA9PT0gJ3hzJyA/ICdoLTcgdGV4dC14cycgOiAnaC05IHRleHQtc20nXG4gICAgICAgICAgICApXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cInJpLXNldHRpbmdzLTMtbGluZVwiPjwvaT5cbiAgICAgICAgICAgIFZpZXdcbiAgICAgICAgICAgIDxpIGNsYXNzPVwicmktYXJyb3ctZG93bi1zLWxpbmUgbWwtMSBvcGFjaXR5LTUwXCI+PC9pPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDx0b2xsZS1wb3BvdmVyLWNvbnRlbnQgY2xhc3M9XCJ3LTU2IHAtMCBiZy1iYWNrZ3JvdW5kIGJvcmRlci1ib3JkZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTIgYm9yZGVyLWIgYm9yZGVyLWJvcmRlclwiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHB4LTJcIj5Ub2dnbGUgQ29sdW1uczwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMiBtYXgtaC1bMzAwcHhdIG92ZXJmbG93LXktYXV0byBzcGFjZS15LTFcIj5cbiAgICAgICAgICAgICAgPGxhYmVsICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMiBweS0xLjUgcm91bmRlZC1zbSBob3ZlcjpiZy1hY2NlbnQgY3Vyc29yLXBvaW50ZXIgdGV4dC1zbSB0cmFuc2l0aW9uLWNvbG9yc1wiPlxuICAgICAgICAgICAgICAgIDx0b2xsZS1jaGVja2JveCBbbmdNb2RlbF09XCJjb2x1bW5WaXNpYmlsaXR5W2NvbC5rZXldXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidG9nZ2xlQ29sdW1uKGNvbC5rZXkpXCIvPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGNvbC5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdG9sbGUtcG9wb3Zlci1jb250ZW50PlxuICAgICAgICA8L3RvbGxlLXBvcG92ZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgtMSBtaW4taC0wIHJvdW5kZWQtbWQgYm9yZGVyIGJvcmRlci1ib3JkZXIgb3ZlcmZsb3ctaGlkZGVuIHNoYWRvdy1zbSByZWxhdGl2ZSB3LWZ1bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm92ZXJmbG93LWF1dG8gdy1mdWxsIGgtZnVsbFwiIFtzdHlsZS5tYXgtaGVpZ2h0XT1cIm1heEhlaWdodFwiPlxuXG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwidy1mdWxsIHRhYmxlLWF1dG8gYm9yZGVyLWNvbGxhcHNlXCI+XG4gICAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJib3JkZXItYiBib3JkZXItYm9yZGVyIGJnLWJhY2tncm91bmRcIj5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiZXhwYW5kYWJsZVwiIFtjbGFzc109XCJjbigncHgtNCcsIHNpemUgPT09ICd4cycgPyAndy1bMzJweF0nIDogJ3ctWzQ4cHhdJywgc3RpY2t5SGVhZGVyID8gJ3N0aWNreSB0b3AtMCB6LTEwIGJnLWJhY2tncm91bmQnIDogJycpXCI+PC90aD5cblxuICAgICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbCBvZiBhY3RpdmVDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjbigndGV4dC1sZWZ0IGZvbnQtbWVkaXVtIHRleHQtZm9yZWdyb3VuZCcsaGVhZGVyUGFkZGluZ0NsYXNzLGZvbnRTaXplQ2xhc3MsIGNvbC5jbGFzcywgc3RpY2t5SGVhZGVyID8gJ3N0aWNreSB0b3AtMCB6LTEwIGJnLWJhY2tncm91bmQgc2hhZG93LXNtJyA6ICcnKVwiPlxuXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbC5zb3J0YWJsZTsgZWxzZSBwbGFpbkhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU29ydChjb2wua2V5KVwiXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xIGN1cnNvci1wb2ludGVyIHNlbGVjdC1ub25lXCI+XG4gICAgICAgICAgICAgICAgICB7eyBjb2wubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJnZXRTb3J0SWNvbihjb2wua2V5KVwiPjwvaT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcGxhaW5IZWFkZXI+XG4gICAgICAgICAgICAgICAgICB7eyBjb2wubGFiZWwgfX1cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGhlYWQ+XG5cbiAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImRpdmlkZS15IGRpdmlkZS1ib3JkZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvdyBvZiBwYWdlZERhdGE7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiaG92ZXI6YmctbXV0ZWQvNTAgdHJhbnNpdGlvbi1jb2xvcnNcIj5cbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJleHBhbmRhYmxlXCIgY2xhc3M9XCJweC00XCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJ0b2dnbGVSb3coaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY24oXG4gICAgICAgICAgICAgICAgICAgICAgJ3JvdW5kZWQtbWQgaG92ZXI6YmctYWNjZW50IHRyYW5zaXRpb24tY29sb3JzJyxcbiAgICAgICAgICAgICAgICAgICAgICBzaXplID09PSAneHMnID8gJ2gtNiB3LTYnIDogJ2gtOCB3LTgnXG4gICAgICAgICAgICAgICAgICAgIClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImV4cGFuZGVkUm93cy5oYXMoaSlcbiAgICAgICAgICAgICAgICA/ICdyaS1hcnJvdy1kb3duLXMtbGluZSdcbiAgICAgICAgICAgICAgICA6ICdyaS1hcnJvdy1yaWdodC1zLWxpbmUnXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvaT5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbCBvZiBhY3RpdmVDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNuKCdhbGlnbi1taWRkbGUnLGNlbGxQYWRkaW5nQ2xhc3MsZm9udFNpemVDbGFzcyxjb2wuY2xhc3MpXCI+XG5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRUZW1wbGF0ZShjb2wua2V5KSBhcyBjZWxsOyBlbHNlIGRlZmF1bHRDZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGwudGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3dbY29sLmtleV0sIHJvdzogcm93IH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2VsbD5cbiAgICAgICAgICAgICAgICAgICAge3sgcm93W2NvbC5rZXldIH19XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiZXhwYW5kZWRSb3dzLmhhcyhpKVwiIGNsYXNzPVwiYmctbXV0ZWQvMTBcIj5cbiAgICAgICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJhY3RpdmVDb2x1bW5zLmxlbmd0aCArIChleHBhbmRhYmxlID8gMSA6IDApXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLTBcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTYgYm9yZGVyLXQgYm9yZGVyLWRhc2hlZCBib3JkZXItYm9yZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHBhbmRlZFRlbXBsYXRlOyBlbHNlIG5vRXhwYW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImV4cGFuZGVkVGVtcGxhdGU7IGNvbnRleHQ6IHsgcm93OiByb3cgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vRXhwYW5kZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBpdGFsaWNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIE5vIGRldGFpbHMgYXZhaWxhYmxlLlxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPHRyICpuZ0lmPVwicGFnZWREYXRhLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJhY3RpdmVDb2x1bW5zLmxlbmd0aCArIChleHBhbmRhYmxlID8gMSA6IDApXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaC0yNCB0ZXh0LWNlbnRlciB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgICAgICBObyByZXN1bHRzIGZvdW5kLlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgtbm9uZSBweS0yXCI+XG4gICAgICAgIDx0b2xsZS1wYWdpbmF0aW9uXG4gICAgICAgICAgKm5nSWY9XCJwYWdpbmF0ZSAmJiBmaWx0ZXJlZERhdGEubGVuZ3RoID4gMFwiXG4gICAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJmaWx0ZXJlZERhdGEubGVuZ3RoXCJcbiAgICAgICAgICBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiXG4gICAgICAgICAgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlXCJcbiAgICAgICAgICBbY3VycmVudFBhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgICAob25QYWdlTnVtYmVyQ2hhbmdlKT1cImhhbmRsZVBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgKG9uUGFnZVNpemVDaGFuZ2UpPVwiaGFuZGxlUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L3RvbGxlLXBhZ2luYXRpb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGRhdGE6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10gPSBbXTtcbiAgQElucHV0KCkgc2VhcmNoYWJsZSA9IHRydWU7XG4gIEBJbnB1dCgpIHBhZ2luYXRlID0gdHJ1ZTtcbiAgQElucHV0KCkgcGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IFtdXG4gIEBJbnB1dCgpIHBhZ2VTaXplID0gMTA7XG4gIEBJbnB1dCgpIGV4cGFuZGFibGUgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzaXplOiAneHMnIHwgJ3NtJyB8ICdkZWZhdWx0JyB8ICdsZycgPSAnZGVmYXVsdCc7XG4gIEBJbnB1dCgpIHN0aWNreUhlYWRlciA9IGZhbHNlO1xuICBASW5wdXQoKSBtYXhIZWlnaHQ/OiBzdHJpbmc7XG5cbiAgLy8gLS0tIENvbHVtbiBIaWRpbmcgU2V0dGluZ3MgLS0tXG4gIEBJbnB1dCgpIGFsbG93Q29sdW1uSGlkaW5nID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1NldHRpbmdzID0gdHJ1ZTtcblxuICAvLyBUcmFjayB2aXNpYmlsaXR5IHN0YXRlXG4gIGNvbHVtblZpc2liaWxpdHk6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG5cbiAgLy8gRmlsdGVycyBjb2x1bW5zIGJhc2VkIG9uIHZpc2liaWxpdHkgc3RhdGVcbiAgZ2V0IGFjdGl2ZUNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maWx0ZXIoY29sID0+IHRoaXMuY29sdW1uVmlzaWJpbGl0eVtjb2wua2V5XSk7XG4gIH1cblxuICBleHBhbmRlZFJvd3MgPSBuZXcgU2V0PG51bWJlcj4oKTtcbiAgQENvbnRlbnRDaGlsZHJlbihUb2xsZUNlbGxEaXJlY3RpdmUpIGNlbGxUZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8VG9sbGVDZWxsRGlyZWN0aXZlPjtcbiAgQElucHV0KCkgZXhwYW5kZWRUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgZmlsdGVyZWREYXRhOiBhbnlbXSA9IFtdO1xuICBwYWdlZERhdGE6IGFueVtdID0gW107XG4gIHNlYXJjaFRlcm0gPSAnJztcbiAgY3VycmVudFBhZ2UgPSAxO1xuICBzb3J0S2V5ID0gJyc7XG4gIHNvcnREaXI6ICdhc2MnIHwgJ2Rlc2MnIHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gU3R5bGUgR2V0dGVyc1xuICBnZXQgY2VsbFBhZGRpbmdDbGFzcygpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5zaXplKSB7XG4gICAgICBjYXNlICd4cyc6IHJldHVybiAncC0xIHB4LTQnO1xuICAgICAgY2FzZSAnc20nOiByZXR1cm4gJ3AtMiBweC00JztcbiAgICAgIGNhc2UgJ2xnJzogcmV0dXJuICdwLTYgcHgtNCc7XG4gICAgICBkZWZhdWx0OiByZXR1cm4gJ3AtNCc7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGhlYWRlclBhZGRpbmdDbGFzcygpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5zaXplKSB7XG4gICAgICBjYXNlICd4cyc6IHJldHVybiAnaC03IHB4LTQnO1xuICAgICAgY2FzZSAnc20nOiByZXR1cm4gJ2gtOSBweC00JztcbiAgICAgIGNhc2UgJ2xnJzogcmV0dXJuICdoLTE0IHB4LTQnO1xuICAgICAgZGVmYXVsdDogcmV0dXJuICdoLTEyIHB4LTQnO1xuICAgIH1cbiAgfVxuXG4gIGdldCBmb250U2l6ZUNsYXNzKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnNpemUpIHtcbiAgICAgIGNhc2UgJ3hzJzogcmV0dXJuICd0ZXh0LVsxMXB4XSc7XG4gICAgICBjYXNlICdzbSc6IHJldHVybiAndGV4dC14cyc7XG4gICAgICBjYXNlICdsZyc6IHJldHVybiAndGV4dC1iYXNlJztcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAndGV4dC1zbSc7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNuID0gY247XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplVmlzaWJpbGl0eSgpO1xuICAgIHRoaXMucmVmcmVzaFRhYmxlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2RhdGEnXSAmJiAhY2hhbmdlc1snZGF0YSddLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTsgLy8gUmVzZXQgdG8gcGFnZSAxIHdoZW4gZGF0YSBjaGFuZ2VzXG4gICAgICB0aGlzLnJlZnJlc2hUYWJsZSgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snY29sdW1ucyddKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVWaXNpYmlsaXR5KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVmlzaWJpbGl0eSgpIHtcbiAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgLy8gT25seSBzZXQgdHJ1ZSBpZiB1bmRlZmluZWQsIHByZXNlcnZlcyB1c2VyIHNlbGVjdGlvbiBvbiBvdGhlciBkYXRhIHJlZnJlc2hlc1xuICAgICAgaWYgKHRoaXMuY29sdW1uVmlzaWJpbGl0eVtjb2wua2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuY29sdW1uVmlzaWJpbGl0eVtjb2wua2V5XSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZWZyZXNoVGFibGUoKSB7XG4gICAgdGhpcy5hcHBseVNlYXJjaCgpO1xuICAgIHRoaXMuYXBwbHlTb3J0KCk7XG4gICAgdGhpcy51cGRhdGVQYWdlKCk7XG4gIH1cbiAgb25TZWFyY2goKSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5yZWZyZXNoVGFibGUoKTtcbiAgfVxuXG4gIC8vIFRvZ2dsZSBmdW5jdGlvbiB1c2VkIGJ5IHRoZSBjaGVja2JveCBpbiBwb3BvdmVyXG4gIHRvZ2dsZUNvbHVtbihrZXk6IHN0cmluZykge1xuICAgIHRoaXMuY29sdW1uVmlzaWJpbGl0eVtrZXldID0gIXRoaXMuY29sdW1uVmlzaWJpbGl0eVtrZXldO1xuICAgIC8vIE5vIGV4cGxpY2l0IHJlZnJlc2ggbmVlZGVkIGFzIHRoZSBnZXR0ZXIgJ2FjdGl2ZUNvbHVtbnMnIHdpbGwgYXV0b21hdGljYWxseSByZS1ldmFsdWF0ZVxuICAgIC8vIHdoZW4gY2hhbmdlIGRldGVjdGlvbiBydW5zIGFmdGVyIHRoZSBjbGljayBldmVudC5cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTZWFyY2goKSB7XG4gICAgaWYgKCF0aGlzLnNlYXJjaFRlcm0pIHtcbiAgICAgIHRoaXMuZmlsdGVyZWREYXRhID1cbiAgICAgICAgWy4uLnRoaXMuZGF0YV07XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHEgPSB0aGlzLnNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IHRoaXMuZGF0YS5maWx0ZXIocm93ID0+XG4gICAgICBPYmplY3QudmFsdWVzKHJvdykuc29tZSh2YWwgPT4gU3RyaW5nKHZhbCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVNvcnQoKSB7XG4gICAgaWYgKCF0aGlzLnNvcnRLZXkgfHwgIXRoaXMuc29ydERpcikgcmV0dXJuO1xuICAgIHRoaXMuZmlsdGVyZWREYXRhLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IHZhbEEgPSBhW3RoaXMuc29ydEtleV07IGNvbnN0IHZhbEIgPSBiW3RoaXMuc29ydEtleV07XG4gICAgICBpZiAodmFsQSA8IHZhbEIpIHJldHVybiB0aGlzLnNvcnREaXIgPT09ICdhc2MnID8gLTEgOiAxO1xuICAgICAgaWYgKHZhbEEgPiB2YWxCKSByZXR1cm4gdGhpcy5zb3J0RGlyID09PSAnYXNjJyA/IDEgOiAtMTtcbiAgICAgIHJldHVybiAwO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlUGFnZUNoYW5nZShuZXdQYWdlOiBudW1iZXIpIHtcbiAgICBjb25zb2xlLmxvZygnUGFnZSBDaGFuZ2UgRXZlbnQgVHJpZ2dlcmVkOicsIG5ld1BhZ2UpOyAvLyA8LS0tIEFkZCB0aGlzXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IG5ld1BhZ2U7XG4gICAgdGhpcy51cGRhdGVQYWdlKCk7XG4gIH1cblxuICBoYW5kbGVQYWdlU2l6ZUNoYW5nZShuZXdTaXplOiBudW1iZXIpIHtcbiAgICBpZiAobmV3U2l6ZSAhPT0gdGhpcy5wYWdlU2l6ZSkge1xuICAgICAgdGhpcy5wYWdlU2l6ZSA9IG5ld1NpemU7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTsgLy8gUmVzZXQgdG8gcGFnZSAxIHdoZW4gc2l6ZSBjaGFuZ2VzXG4gICAgICB0aGlzLnVwZGF0ZVBhZ2UoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVQYWdlKCkge1xuICAgIGlmICghdGhpcy5wYWdpbmF0ZSkge1xuICAgICAgdGhpcy5wYWdlZERhdGEgPSB0aGlzLmZpbHRlcmVkRGF0YTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydCA9ICh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLnBhZ2VTaXplO1xuICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgdGhpcy5wYWdlU2l6ZTtcblxuICAgIC8vIFNhZmV0eSBjaGVjayBpZiBjdXJyZW50IHBhZ2UgaXMgb3V0IG9mIGJvdW5kcyBhZnRlciBmaWx0ZXJpbmdcbiAgICBpZiAoc3RhcnQgPj0gdGhpcy5maWx0ZXJlZERhdGEubGVuZ3RoICYmIHRoaXMuY3VycmVudFBhZ2UgPiAxKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICAgIHRoaXMudXBkYXRlUGFnZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGFnZWREYXRhID0gdGhpcy5maWx0ZXJlZERhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gIH1cblxuICB0b2dnbGVTb3J0KGtleTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc29ydEtleSA9PT0ga2V5KSB7XG4gICAgICB0aGlzLnNvcnREaXIgPSB0aGlzLnNvcnREaXIgPT09ICdhc2MnID8gJ2Rlc2MnIDogdGhpcy5zb3J0RGlyID09PSAnZGVzYycgPyBudWxsIDogJ2FzYyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc29ydEtleSA9IGtleTtcbiAgICAgIHRoaXMuc29ydERpciA9ICdhc2MnO1xuICAgIH1cbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTsgLy8gUmVzZXQgdG8gcGFnZSAxIHdoZW4gc29ydGluZ1xuICAgIHRoaXMucmVmcmVzaFRhYmxlKCk7XG4gIH1cblxuICBnZXRTb3J0SWNvbihrZXk6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNvcnRLZXkgIT09IGtleSB8fCAhdGhpcy5zb3J0RGlyKSByZXR1cm4gJ3JpLWV4cGFuZC11cC1kb3duLWxpbmUgb3BhY2l0eS0yMCc7IC8vIENoYW5nZWQgaWNvbiBmb3IgaW5hY3RpdmUgc3RhdGVcbiAgICByZXR1cm4gdGhpcy5zb3J0RGlyID09PSAnYXNjJyA/ICdyaS1hcnJvdy11cC1saW5lIHRleHQtZm9yZWdyb3VuZCcgOiAncmktYXJyb3ctZG93bi1saW5lIHRleHQtZm9yZWdyb3VuZCc7XG4gIH1cblxuICB0b2dnbGVSb3coaW5kZXg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmV4cGFuZGVkUm93cy5oYXMoaW5kZXgpKSB7XG4gICAgICB0aGlzLmV4cGFuZGVkUm93cy5kZWxldGUoaW5kZXgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuZXhwYW5kZWRSb3dzLmFkZChpbmRleCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0VGVtcGxhdGUoa2V5OiBzdHJpbmcpOiBUb2xsZUNlbGxEaXJlY3RpdmUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNlbGxUZW1wbGF0ZXM/LmZpbmQodCA9PiB0Lm5hbWUgPT09IGtleSk7XG4gIH1cbn1cbiJdfQ==
512
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvbGliL2RhdGEtdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQUUsS0FBSyxFQUNILGVBQWUsRUFDN0IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQStLekQsTUFBTSxPQUFPLGtCQUFrQjtJQUNwQixJQUFJLEdBQVUsRUFBRSxDQUFDO0lBQ2pCLE9BQU8sR0FBa0IsRUFBRSxDQUFDO0lBQzVCLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDbEIsUUFBUSxHQUFHLElBQUksQ0FBQztJQUNoQixlQUFlLEdBQWEsRUFBRSxDQUFBO0lBQzlCLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDZCxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBRW5CLElBQUksR0FBbUMsU0FBUyxDQUFDO0lBQ2pELFlBQVksR0FBRyxLQUFLLENBQUM7SUFDckIsU0FBUyxDQUFVO0lBRTVCLGlD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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnSlQ7OEJBR1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFXK0IsYUFBYTtzQkFBakQsZUFBZTt1QkFBQyxrQkFBa0I7Z0JBQzFCLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZiwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuaW1wb3J0IHsgUGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9sbGVDZWxsRGlyZWN0aXZlIH0gZnJvbSAnLi90b2xsZS1jZWxsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFBvcG92ZXJDb21wb25lbnQgfSBmcm9tICcuL3BvcG92ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFBvcG92ZXJDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9wb3BvdmVyLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi9jaGVja2JveC5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29sdW1uIHtcbiAga2V5OiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHNvcnRhYmxlPzogYm9vbGVhbjtcbiAgY2xhc3M/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWRhdGEtdGFibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzdHlsZXM6IFtgXG4gICAgOmhvc3QgeyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgfVxuICAgIHRhYmxlIHsgd2lkdGg6IDEwMCU7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IGRpc3BsYXk6IHRhYmxlOyB9XG4gICAgdGhlYWQgeyBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7IH1cbiAgICB0Ym9keSB7IGRpc3BsYXk6IHRhYmxlLXJvdy1ncm91cDsgfVxuICAgIHRyIHsgZGlzcGxheTogdGFibGUtcm93OyB9XG4gICAgdGgsIHRkIHsgZGlzcGxheTogdGFibGUtY2VsbDsgfVxuICBgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBQYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgIElucHV0Q29tcG9uZW50LFxuICAgIFBvcG92ZXJDb21wb25lbnQsXG4gICAgUG9wb3ZlckNvbnRlbnRDb21wb25lbnQsXG4gICAgQ2hlY2tib3hDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImgtZnVsbCBmbGV4IGZsZXgtY29sIHctZnVsbFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweS0yIGZsZXgtbm9uZVwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwic2VhcmNoYWJsZVwiIGNsYXNzPVwidy1mdWxsIG1heC13LXNtXCI+XG4gICAgICAgICAgPHRvbGxlLWlucHV0XG4gICAgICAgICAgICBbc2l6ZV09XCJzaXplID09PSAnbGcnID8gJ2RlZmF1bHQnIDogJ3NtJ1wiXG4gICAgICAgICAgICBjbGFzcz1cInctZnVsbFwiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiRmlsdGVyIHJlY29yZHNcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJGaWx0ZXIgcmVjb3Jkcy4uLlwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2goKVwiPlxuICAgICAgICAgICAgPGkgcHJlZml4IGNsYXNzPVwicmktc2VhcmNoLWxpbmVcIj48L2k+XG4gICAgICAgICAgPC90b2xsZS1pbnB1dD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPHRvbGxlLXBvcG92ZXIgKm5nSWY9XCJhbGxvd0NvbHVtbkhpZGluZyAmJiBzaG93U2V0dGluZ3NcIj5cbiAgICAgICAgICA8YnV0dG9uIHRyaWdnZXJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjbihcbiAgICAgICAgICAgICAgJ21sLWF1dG8gZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWlucHV0IGJnLWJhY2tncm91bmQgcHgtMyBob3ZlcjpiZy1hY2NlbnQgaG92ZXI6dGV4dC1hY2NlbnQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLWNvbG9ycyBvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcnLFxuICAgICAgICAgICAgICBzaXplID09PSAneHMnID8gJ2gtNyB0ZXh0LXhzJyA6ICdoLTkgdGV4dC1zbSdcbiAgICAgICAgICAgIClcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwicmktc2V0dGluZ3MtMy1saW5lXCI+PC9pPlxuICAgICAgICAgICAgVmlld1xuICAgICAgICAgICAgPGkgY2xhc3M9XCJyaS1hcnJvdy1kb3duLXMtbGluZSBtbC0xIG9wYWNpdHktNTBcIj48L2k+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPHRvbGxlLXBvcG92ZXItY29udGVudCBjbGFzcz1cInctNTYgcC0wIGJnLWJhY2tncm91bmQgYm9yZGVyLWJvcmRlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtMiBib3JkZXItYiBib3JkZXItYm9yZGVyXCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LW11dGVkLWZvcmVncm91bmQgcHgtMlwiPlRvZ2dsZSBDb2x1bW5zPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0yIG1heC1oLVszMDBweF0gb3ZlcmZsb3cteS1hdXRvIHNwYWNlLXktMVwiPlxuICAgICAgICAgICAgICA8bGFiZWwgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCIgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBweC0yIHB5LTEuNSByb3VuZGVkLXNtIGhvdmVyOmJnLWFjY2VudCBjdXJzb3ItcG9pbnRlciB0ZXh0LXNtIHRyYW5zaXRpb24tY29sb3JzXCI+XG4gICAgICAgICAgICAgICAgPHRvbGxlLWNoZWNrYm94IFtuZ01vZGVsXT1cImNvbHVtblZpc2liaWxpdHlbY29sLmtleV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVDb2x1bW4oY29sLmtleSlcIi8+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgY29sLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC90b2xsZS1wb3BvdmVyLWNvbnRlbnQ+XG4gICAgICAgIDwvdG9sbGUtcG9wb3Zlcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleC0xIG1pbi1oLTAgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWJvcmRlciBvdmVyZmxvdy1oaWRkZW4gc2hhZG93LXNtIHJlbGF0aXZlIHctZnVsbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3ZlcmZsb3ctYXV0byB3LWZ1bGwgaC1mdWxsXCIgW3N0eWxlLm1heC1oZWlnaHRdPVwibWF4SGVpZ2h0XCI+XG5cbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ3LWZ1bGwgdGFibGUtYXV0byBib3JkZXItY29sbGFwc2VcIj5cbiAgICAgICAgICAgIDx0aGVhZCBjbGFzcz1cImJvcmRlci1iIGJvcmRlci1ib3JkZXIgYmctYmFja2dyb3VuZFwiPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGggKm5nSWY9XCJleHBhbmRhYmxlXCIgc2NvcGU9XCJjb2xcIiBbY2xhc3NdPVwiY24oJ3B4LTQnLCBzaXplID09PSAneHMnID8gJ3ctWzMycHhdJyA6ICd3LVs0OHB4XScsIHN0aWNreUhlYWRlciA/ICdzdGlja3kgdG9wLTAgei0xMCBiZy1iYWNrZ3JvdW5kJyA6ICcnKVwiPjwvdGg+XG5cbiAgICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBjb2wgb2YgYWN0aXZlQ29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICBzY29wZT1cImNvbFwiXG4gICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNvcnRdPVwic29ydEtleSA9PT0gY29sLmtleSA/IChzb3J0RGlyID09PSAnYXNjJyA/ICdhc2NlbmRpbmcnIDogKHNvcnREaXIgPT09ICdkZXNjJyA/ICdkZXNjZW5kaW5nJyA6ICdub25lJykpIDogJ25vbmUnXCJcbiAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjbigndGV4dC1sZWZ0IGZvbnQtbWVkaXVtIHRleHQtZm9yZWdyb3VuZCcsaGVhZGVyUGFkZGluZ0NsYXNzLGZvbnRTaXplQ2xhc3MsIGNvbC5jbGFzcywgc3RpY2t5SGVhZGVyID8gJ3N0aWNreSB0b3AtMCB6LTEwIGJnLWJhY2tncm91bmQgc2hhZG93LXNtJyA6ICcnKVwiPlxuXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbC5zb3J0YWJsZTsgZWxzZSBwbGFpbkhlYWRlclwiXG4gICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTb3J0KGNvbC5rZXkpXCJcbiAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgY3Vyc29yLXBvaW50ZXIgc2VsZWN0LW5vbmUgZm9jdXMtdmlzaWJsZTpvdXRsaW5lLW5vbmUgZm9jdXMtdmlzaWJsZTpyaW5nLTIgZm9jdXMtdmlzaWJsZTpyaW5nLXJpbmcgcm91bmRlZC1zbVwiPlxuICAgICAgICAgICAgICAgICAge3sgY29sLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiZ2V0U29ydEljb24oY29sLmtleSlcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BsYWluSGVhZGVyPlxuICAgICAgICAgICAgICAgICAge3sgY29sLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L3RoZWFkPlxuXG4gICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJkaXZpZGUteSBkaXZpZGUtYm9yZGVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByb3cgb2YgcGFnZWREYXRhOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgIDx0ciBjbGFzcz1cImhvdmVyOmJnLW11dGVkLzUwIHRyYW5zaXRpb24tY29sb3JzXCI+XG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiZXhwYW5kYWJsZVwiIGNsYXNzPVwicHgtNFwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlUm93KGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJleHBhbmRlZFJvd3MuaGFzKGkpID8gJ0NvbGxhcHNlIHJvdycgOiAnRXhwYW5kIHJvdydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImV4cGFuZGVkUm93cy5oYXMoaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY24oXG4gICAgICAgICAgICAgICAgICAgICAgJ3JvdW5kZWQtbWQgaG92ZXI6YmctYWNjZW50IHRyYW5zaXRpb24tY29sb3JzIGZvY3VzLXZpc2libGU6b3V0bGluZS1ub25lIGZvY3VzLXZpc2libGU6cmluZy0yIGZvY3VzLXZpc2libGU6cmluZy1yaW5nJyxcbiAgICAgICAgICAgICAgICAgICAgICBzaXplID09PSAneHMnID8gJ2gtNiB3LTYnIDogJ2gtOCB3LTgnXG4gICAgICAgICAgICAgICAgICAgIClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImV4cGFuZGVkUm93cy5oYXMoaSlcbiAgICAgICAgICAgICAgICA/ICdyaS1hcnJvdy1kb3duLXMtbGluZSdcbiAgICAgICAgICAgICAgICA6ICdyaS1hcnJvdy1yaWdodC1zLWxpbmUnXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvaT5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbCBvZiBhY3RpdmVDb2x1bW5zXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNuKCdhbGlnbi1taWRkbGUnLGNlbGxQYWRkaW5nQ2xhc3MsZm9udFNpemVDbGFzcyxjb2wuY2xhc3MpXCI+XG5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRUZW1wbGF0ZShjb2wua2V5KSBhcyBjZWxsOyBlbHNlIGRlZmF1bHRDZWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGwudGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3dbY29sLmtleV0sIHJvdzogcm93IH1cIj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0Q2VsbD5cbiAgICAgICAgICAgICAgICAgICAge3sgcm93W2NvbC5rZXldIH19XG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG5cbiAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiZXhwYW5kZWRSb3dzLmhhcyhpKVwiIGNsYXNzPVwiYmctbXV0ZWQvMTBcIj5cbiAgICAgICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJhY3RpdmVDb2x1bW5zLmxlbmd0aCArIChleHBhbmRhYmxlID8gMSA6IDApXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLTBcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTYgYm9yZGVyLXQgYm9yZGVyLWRhc2hlZCBib3JkZXItYm9yZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHBhbmRlZFRlbXBsYXRlOyBlbHNlIG5vRXhwYW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImV4cGFuZGVkVGVtcGxhdGU7IGNvbnRleHQ6IHsgcm93OiByb3cgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vRXhwYW5kZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBpdGFsaWNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIE5vIGRldGFpbHMgYXZhaWxhYmxlLlxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPHRyICpuZ0lmPVwicGFnZWREYXRhLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCJhY3RpdmVDb2x1bW5zLmxlbmd0aCArIChleHBhbmRhYmxlID8gMSA6IDApXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaC0yNCB0ZXh0LWNlbnRlciB0ZXh0LW11dGVkLWZvcmVncm91bmRcIj5cbiAgICAgICAgICAgICAgICBObyByZXN1bHRzIGZvdW5kLlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImZsZXgtbm9uZSBweS0yXCI+XG4gICAgICAgIDx0b2xsZS1wYWdpbmF0aW9uXG4gICAgICAgICAgKm5nSWY9XCJwYWdpbmF0ZSAmJiBmaWx0ZXJlZERhdGEubGVuZ3RoID4gMFwiXG4gICAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJmaWx0ZXJlZERhdGEubGVuZ3RoXCJcbiAgICAgICAgICBbcGFnZVNpemVPcHRpb25zXT1cInBhZ2VTaXplT3B0aW9uc1wiXG4gICAgICAgICAgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlXCJcbiAgICAgICAgICBbY3VycmVudFBhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgICAob25QYWdlTnVtYmVyQ2hhbmdlKT1cImhhbmRsZVBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgKG9uUGFnZVNpemVDaGFuZ2UpPVwiaGFuZGxlUGFnZVNpemVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L3RvbGxlLXBhZ2luYXRpb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGRhdGE6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10gPSBbXTtcbiAgQElucHV0KCkgc2VhcmNoYWJsZSA9IHRydWU7XG4gIEBJbnB1dCgpIHBhZ2luYXRlID0gdHJ1ZTtcbiAgQElucHV0KCkgcGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IFtdXG4gIEBJbnB1dCgpIHBhZ2VTaXplID0gMTA7XG4gIEBJbnB1dCgpIGV4cGFuZGFibGUgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzaXplOiAneHMnIHwgJ3NtJyB8ICdkZWZhdWx0JyB8ICdsZycgPSAnZGVmYXVsdCc7XG4gIEBJbnB1dCgpIHN0aWNreUhlYWRlciA9IGZhbHNlO1xuICBASW5wdXQoKSBtYXhIZWlnaHQ/OiBzdHJpbmc7XG5cbiAgLy8gLS0tIENvbHVtbiBIaWRpbmcgU2V0dGluZ3MgLS0tXG4gIEBJbnB1dCgpIGFsbG93Q29sdW1uSGlkaW5nID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1NldHRpbmdzID0gdHJ1ZTtcblxuICAvLyBUcmFjayB2aXNpYmlsaXR5IHN0YXRlXG4gIGNvbHVtblZpc2liaWxpdHk6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG5cbiAgLy8gRmlsdGVycyBjb2x1bW5zIGJhc2VkIG9uIHZpc2liaWxpdHkgc3RhdGVcbiAgZ2V0IGFjdGl2ZUNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maWx0ZXIoY29sID0+IHRoaXMuY29sdW1uVmlzaWJpbGl0eVtjb2wua2V5XSk7XG4gIH1cblxuICBleHBhbmRlZFJvd3MgPSBuZXcgU2V0PG51bWJlcj4oKTtcbiAgQENvbnRlbnRDaGlsZHJlbihUb2xsZUNlbGxEaXJlY3RpdmUpIGNlbGxUZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8VG9sbGVDZWxsRGlyZWN0aXZlPjtcbiAgQElucHV0KCkgZXhwYW5kZWRUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgZmlsdGVyZWREYXRhOiBhbnlbXSA9IFtdO1xuICBwYWdlZERhdGE6IGFueVtdID0gW107XG4gIHNlYXJjaFRlcm0gPSAnJztcbiAgY3VycmVudFBhZ2UgPSAxO1xuICBzb3J0S2V5ID0gJyc7XG4gIHNvcnREaXI6ICdhc2MnIHwgJ2Rlc2MnIHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gU3R5bGUgR2V0dGVyc1xuICBnZXQgY2VsbFBhZGRpbmdDbGFzcygpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5zaXplKSB7XG4gICAgICBjYXNlICd4cyc6IHJldHVybiAncC0xIHB4LTQnO1xuICAgICAgY2FzZSAnc20nOiByZXR1cm4gJ3AtMiBweC00JztcbiAgICAgIGNhc2UgJ2xnJzogcmV0dXJuICdwLTYgcHgtNCc7XG4gICAgICBkZWZhdWx0OiByZXR1cm4gJ3AtNCc7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGhlYWRlclBhZGRpbmdDbGFzcygpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5zaXplKSB7XG4gICAgICBjYXNlICd4cyc6IHJldHVybiAnaC03IHB4LTQnO1xuICAgICAgY2FzZSAnc20nOiByZXR1cm4gJ2gtOSBweC00JztcbiAgICAgIGNhc2UgJ2xnJzogcmV0dXJuICdoLTE0IHB4LTQnO1xuICAgICAgZGVmYXVsdDogcmV0dXJuICdoLTEyIHB4LTQnO1xuICAgIH1cbiAgfVxuXG4gIGdldCBmb250U2l6ZUNsYXNzKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnNpemUpIHtcbiAgICAgIGNhc2UgJ3hzJzogcmV0dXJuICd0ZXh0LVsxMXB4XSc7XG4gICAgICBjYXNlICdzbSc6IHJldHVybiAndGV4dC14cyc7XG4gICAgICBjYXNlICdsZyc6IHJldHVybiAndGV4dC1iYXNlJztcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAndGV4dC1zbSc7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGNuID0gY247XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplVmlzaWJpbGl0eSgpO1xuICAgIHRoaXMucmVmcmVzaFRhYmxlKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2RhdGEnXSAmJiAhY2hhbmdlc1snZGF0YSddLmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTsgLy8gUmVzZXQgdG8gcGFnZSAxIHdoZW4gZGF0YSBjaGFuZ2VzXG4gICAgICB0aGlzLnJlZnJlc2hUYWJsZSgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snY29sdW1ucyddKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVWaXNpYmlsaXR5KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVmlzaWJpbGl0eSgpIHtcbiAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgLy8gT25seSBzZXQgdHJ1ZSBpZiB1bmRlZmluZWQsIHByZXNlcnZlcyB1c2VyIHNlbGVjdGlvbiBvbiBvdGhlciBkYXRhIHJlZnJlc2hlc1xuICAgICAgaWYgKHRoaXMuY29sdW1uVmlzaWJpbGl0eVtjb2wua2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuY29sdW1uVmlzaWJpbGl0eVtjb2wua2V5XSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZWZyZXNoVGFibGUoKSB7XG4gICAgdGhpcy5hcHBseVNlYXJjaCgpO1xuICAgIHRoaXMuYXBwbHlTb3J0KCk7XG4gICAgdGhpcy51cGRhdGVQYWdlKCk7XG4gIH1cbiAgb25TZWFyY2goKSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5yZWZyZXNoVGFibGUoKTtcbiAgfVxuXG4gIC8vIFRvZ2dsZSBmdW5jdGlvbiB1c2VkIGJ5IHRoZSBjaGVja2JveCBpbiBwb3BvdmVyXG4gIHRvZ2dsZUNvbHVtbihrZXk6IHN0cmluZykge1xuICAgIHRoaXMuY29sdW1uVmlzaWJpbGl0eVtrZXldID0gIXRoaXMuY29sdW1uVmlzaWJpbGl0eVtrZXldO1xuICAgIC8vIE5vIGV4cGxpY2l0IHJlZnJlc2ggbmVlZGVkIGFzIHRoZSBnZXR0ZXIgJ2FjdGl2ZUNvbHVtbnMnIHdpbGwgYXV0b21hdGljYWxseSByZS1ldmFsdWF0ZVxuICAgIC8vIHdoZW4gY2hhbmdlIGRldGVjdGlvbiBydW5zIGFmdGVyIHRoZSBjbGljayBldmVudC5cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTZWFyY2goKSB7XG4gICAgaWYgKCF0aGlzLnNlYXJjaFRlcm0pIHtcbiAgICAgIHRoaXMuZmlsdGVyZWREYXRhID1cbiAgICAgICAgWy4uLnRoaXMuZGF0YV07XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHEgPSB0aGlzLnNlYXJjaFRlcm0udG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLmZpbHRlcmVkRGF0YSA9IHRoaXMuZGF0YS5maWx0ZXIocm93ID0+XG4gICAgICBPYmplY3QudmFsdWVzKHJvdykuc29tZSh2YWwgPT4gU3RyaW5nKHZhbCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVNvcnQoKSB7XG4gICAgaWYgKCF0aGlzLnNvcnRLZXkgfHwgIXRoaXMuc29ydERpcikgcmV0dXJuO1xuICAgIHRoaXMuZmlsdGVyZWREYXRhLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IHZhbEEgPSBhW3RoaXMuc29ydEtleV07IGNvbnN0IHZhbEIgPSBiW3RoaXMuc29ydEtleV07XG4gICAgICBpZiAodmFsQSA8IHZhbEIpIHJldHVybiB0aGlzLnNvcnREaXIgPT09ICdhc2MnID8gLTEgOiAxO1xuICAgICAgaWYgKHZhbEEgPiB2YWxCKSByZXR1cm4gdGhpcy5zb3J0RGlyID09PSAnYXNjJyA/IDEgOiAtMTtcbiAgICAgIHJldHVybiAwO1xuICAgIH0pO1xuICB9XG5cbiAgaGFuZGxlUGFnZUNoYW5nZShuZXdQYWdlOiBudW1iZXIpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gbmV3UGFnZTtcbiAgICB0aGlzLnVwZGF0ZVBhZ2UoKTtcbiAgfVxuXG4gIGhhbmRsZVBhZ2VTaXplQ2hhbmdlKG5ld1NpemU6IG51bWJlcikge1xuICAgIGlmIChuZXdTaXplICE9PSB0aGlzLnBhZ2VTaXplKSB7XG4gICAgICB0aGlzLnBhZ2VTaXplID0gbmV3U2l6ZTtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxOyAvLyBSZXNldCB0byBwYWdlIDEgd2hlbiBzaXplIGNoYW5nZXNcbiAgICAgIHRoaXMudXBkYXRlUGFnZSgpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVBhZ2UoKSB7XG4gICAgaWYgKCF0aGlzLnBhZ2luYXRlKSB7XG4gICAgICB0aGlzLnBhZ2VkRGF0YSA9IHRoaXMuZmlsdGVyZWREYXRhO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ID0gKHRoaXMuY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMucGFnZVNpemU7XG4gICAgY29uc3QgZW5kID0gc3RhcnQgKyB0aGlzLnBhZ2VTaXplO1xuXG4gICAgLy8gU2FmZXR5IGNoZWNrIGlmIGN1cnJlbnQgcGFnZSBpcyBvdXQgb2YgYm91bmRzIGFmdGVyIGZpbHRlcmluZ1xuICAgIGlmIChzdGFydCA+PSB0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGggJiYgdGhpcy5jdXJyZW50UGFnZSA+IDEpIHtcbiAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgICAgdGhpcy51cGRhdGVQYWdlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wYWdlZERhdGEgPSB0aGlzLmZpbHRlcmVkRGF0YS5zbGljZShzdGFydCwgZW5kKTtcbiAgfVxuXG4gIHRvZ2dsZVNvcnQoa2V5OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5zb3J0S2V5ID09PSBrZXkpIHtcbiAgICAgIHRoaXMuc29ydERpciA9IHRoaXMuc29ydERpciA9PT0gJ2FzYycgPyAnZGVzYycgOiB0aGlzLnNvcnREaXIgPT09ICdkZXNjJyA/IG51bGwgOiAnYXNjJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zb3J0S2V5ID0ga2V5O1xuICAgICAgdGhpcy5zb3J0RGlyID0gJ2FzYyc7XG4gICAgfVxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxOyAvLyBSZXNldCB0byBwYWdlIDEgd2hlbiBzb3J0aW5nXG4gICAgdGhpcy5yZWZyZXNoVGFibGUoKTtcbiAgfVxuXG4gIGdldFNvcnRJY29uKGtleTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc29ydEtleSAhPT0ga2V5IHx8ICF0aGlzLnNvcnREaXIpIHJldHVybiAncmktZXhwYW5kLXVwLWRvd24tbGluZSBvcGFjaXR5LTIwJzsgLy8gQ2hhbmdlZCBpY29uIGZvciBpbmFjdGl2ZSBzdGF0ZVxuICAgIHJldHVybiB0aGlzLnNvcnREaXIgPT09ICdhc2MnID8gJ3JpLWFycm93LXVwLWxpbmUgdGV4dC1mb3JlZ3JvdW5kJyA6ICdyaS1hcnJvdy1kb3duLWxpbmUgdGV4dC1mb3JlZ3JvdW5kJztcbiAgfVxuXG4gIHRvZ2dsZVJvdyhpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuZXhwYW5kZWRSb3dzLmhhcyhpbmRleCkpIHtcbiAgICAgIHRoaXMuZXhwYW5kZWRSb3dzLmRlbGV0ZShpbmRleCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5leHBhbmRlZFJvd3MuYWRkKGluZGV4KTtcbiAgICB9XG4gIH1cblxuICBnZXRUZW1wbGF0ZShrZXk6IHN0cmluZyk6IFRvbGxlQ2VsbERpcmVjdGl2ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY2VsbFRlbXBsYXRlcz8uZmluZCh0ID0+IHQubmFtZSA9PT0ga2V5KTtcbiAgfVxufVxuIl19
@@ -1,4 +1,4 @@
1
- import { Component, Input, forwardRef, ViewChild } from '@angular/core';
1
+ import { Component, Input, forwardRef, ViewChild, HostListener } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
4
4
  import { computePosition, flip, shift, offset, autoUpdate } from '@floating-ui/dom';
@@ -113,10 +113,17 @@ export class DatePickerComponent {
113
113
  return;
114
114
  this.isOpen ? this.close() : this.open();
115
115
  }
116
+ onEscape() { if (this.isOpen)
117
+ this.close(); }
116
118
  open() {
117
119
  if (this.disabled)
118
120
  return;
119
121
  this.isOpen = true;
122
+ // Render the popover synchronously so its DOM node + @ViewChild('popover') exist
123
+ // before we position it. Otherwise, with zone eventCoalescing (Angular defers change
124
+ // detection to the next animation frame), updatePosition() can run first, find no
125
+ // popover, and the calendar stays hidden — regardless of where the picker is used.
126
+ this.cdr.detectChanges();
120
127
  this.trigger.nativeElement.focus();
121
128
  requestAnimationFrame(() => {
122
129
  this.updatePosition();
@@ -185,7 +192,7 @@ export class DatePickerComponent {
185
192
  setDisabledState(isDisabled) { this.disabled = isDisabled; }
186
193
  cn = cn;
187
194
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DatePickerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
188
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DatePickerComponent, isStandalone: true, selector: "tolle-date-picker", inputs: { placeholder: "placeholder", disabled: "disabled", class: "class", disablePastDates: "disablePastDates", showClear: "showClear", showQuickActions: "showQuickActions", minDate: "minDate", maxDate: "maxDate", mode: "mode", formatMonthFn: "formatMonthFn", formatYearFn: "formatYearFn", displayFormat: "displayFormat" }, providers: [
195
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DatePickerComponent, isStandalone: true, selector: "tolle-date-picker", inputs: { placeholder: "placeholder", disabled: "disabled", class: "class", disablePastDates: "disablePastDates", showClear: "showClear", showQuickActions: "showQuickActions", minDate: "minDate", maxDate: "maxDate", mode: "mode", formatMonthFn: "formatMonthFn", formatYearFn: "formatYearFn", displayFormat: "displayFormat" }, host: { listeners: { "keydown.escape": "onEscape()" } }, providers: [
189
196
  {
190
197
  provide: NG_VALUE_ACCESSOR,
191
198
  useExisting: forwardRef(() => DatePickerComponent),
@@ -205,6 +212,7 @@ export class DatePickerComponent {
205
212
  <button
206
213
  *ngIf="value && !disabled && showClear"
207
214
  type="button"
215
+ aria-label="Clear date"
208
216
  (click)="clear($event)"
209
217
  class="ri-close-line cursor-pointer text-muted-foreground hover:text-foreground transition-colors"
210
218
  tabindex="-1"
@@ -213,6 +221,9 @@ export class DatePickerComponent {
213
221
  <button
214
222
  type="button"
215
223
  #trigger
224
+ aria-label="Open calendar"
225
+ aria-haspopup="dialog"
226
+ [attr.aria-expanded]="isOpen"
216
227
  (click)="togglePopover($event)"
217
228
  [disabled]="disabled"
218
229
  [class]="cn(
@@ -227,6 +238,7 @@ export class DatePickerComponent {
227
238
  <div
228
239
  #popover
229
240
  *ngIf="isOpen"
241
+ role="dialog"
230
242
  class="fixed z-[50]"
231
243
  style="visibility: hidden; top: 0; left: 0;"
232
244
  >
@@ -243,7 +255,7 @@ export class DatePickerComponent {
243
255
  ></tolle-calendar>
244
256
  </div>
245
257
  </div>
246
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MaskedInputComponent, selector: "tolle-masked-input", inputs: ["id", "label", "hint", "errorMessage", "mask", "placeholder", "type", "disabled", "readonly", "class", "containerClass", "error", "size", "returnRaw", "hideHintOnFocus", "externalFocused"] }, { kind: "component", type: CalendarComponent, selector: "tolle-calendar", inputs: ["class", "mode", "disablePastDates", "showQuickActions", "minDate", "maxDate", "formatMonthFn", "formatYearFn", "formatDateFn"], outputs: ["dateSelect"] }] });
258
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MaskedInputComponent, selector: "tolle-masked-input", inputs: ["id", "label", "hint", "errorMessage", "mask", "placeholder", "type", "disabled", "readonly", "class", "containerClass", "error", "size", "returnRaw", "hideHintOnFocus", "externalFocused"] }, { kind: "component", type: CalendarComponent, selector: "tolle-calendar", inputs: ["class", "bordered", "mode", "disablePastDates", "showQuickActions", "minDate", "maxDate", "formatMonthFn", "formatYearFn", "formatDateFn"], outputs: ["dateSelect"] }] });
247
259
  }
248
260
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DatePickerComponent, decorators: [{
249
261
  type: Component,
@@ -272,6 +284,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
272
284
  <button
273
285
  *ngIf="value && !disabled && showClear"
274
286
  type="button"
287
+ aria-label="Clear date"
275
288
  (click)="clear($event)"
276
289
  class="ri-close-line cursor-pointer text-muted-foreground hover:text-foreground transition-colors"
277
290
  tabindex="-1"
@@ -280,6 +293,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
280
293
  <button
281
294
  type="button"
282
295
  #trigger
296
+ aria-label="Open calendar"
297
+ aria-haspopup="dialog"
298
+ [attr.aria-expanded]="isOpen"
283
299
  (click)="togglePopover($event)"
284
300
  [disabled]="disabled"
285
301
  [class]="cn(
@@ -294,6 +310,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
294
310
  <div
295
311
  #popover
296
312
  *ngIf="isOpen"
313
+ role="dialog"
297
314
  class="fixed z-[50]"
298
315
  style="visibility: hidden; top: 0; left: 0;"
299
316
  >
@@ -342,5 +359,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
342
359
  }], popover: [{
343
360
  type: ViewChild,
344
361
  args: ['popover']
362
+ }], onEscape: [{
363
+ type: HostListener,
364
+ args: ['keydown.escape']
345
365
  }] } });
346
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFjLFNBQVMsRUFDcEQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzlELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFnQixNQUFNLHNCQUFzQixDQUFDOzs7O0FBbUV2RSxNQUFNLE9BQU8sbUJBQW1CO0lBOEJWO0lBN0JYLFdBQVcsR0FBRyxZQUFZLENBQUM7SUFDM0IsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ1gsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDakIsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQ3hCLE9BQU8sQ0FBUTtJQUNmLE9BQU8sQ0FBUTtJQUNmLElBQUksR0FBaUIsTUFBTSxDQUFDO0lBQzVCLGFBQWEsQ0FBMEI7SUFDdkMsWUFBWSxDQUEwQjtJ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QUFvQixzUUFBRSxpQkFBaUI7OzRGQThEakUsbUJBQW1CO2tCQWpFL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQztvQkFDN0UsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvQkFDRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvRFQ7aUJBQ0Y7c0ZBRVUsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRWdCLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDRSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIElucHV0LCBmb3J3YXJkUmVmLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIENoYW5nZURldGVjdG9yUmVmLCBPbkRlc3Ryb3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNvbXB1dGVQb3NpdGlvbiwgZmxpcCwgc2hpZnQsIG9mZnNldCwgYXV0b1VwZGF0ZSB9IGZyb20gJ0BmbG9hdGluZy11aS9kb20nO1xuaW1wb3J0IHsgZm9ybWF0LCBwYXJzZSwgaXNWYWxpZCwgc3RhcnRPZkRheSB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5pbXBvcnQgeyBNYXNrZWRJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vbWFza2VkLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYWxlbmRhckNvbXBvbmVudCwgQ2FsZW5kYXJNb2RlIH0gZnJvbSAnLi9jYWxlbmRhci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1kYXRlLXBpY2tlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBNYXNrZWRJbnB1dENvbXBvbmVudCwgQ2FsZW5kYXJDb21wb25lbnRdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHctZnVsbFwiICN0cmlnZ2VyQ29udGFpbmVyPlxuICAgICAgPHRvbGxlLW1hc2tlZC1pbnB1dFxuICAgICAgICAjbWFza0lucHV0XG4gICAgICAgIFttYXNrXT1cImdldE1hc2soKVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFZhbHVlXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW2NsYXNzXT1cImNuKGNsYXNzKVwiPlxuICAgICAgICA8ZGl2IHN1ZmZpeCBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjVcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cInZhbHVlICYmICFkaXNhYmxlZCAmJiBzaG93Q2xlYXJcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXIoJGV2ZW50KVwiXG4gICAgICAgICAgICBjbGFzcz1cInJpLWNsb3NlLWxpbmUgY3Vyc29yLXBvaW50ZXIgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGhvdmVyOnRleHQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgICA+PC9idXR0b24+XG5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICN0cmlnZ2VyXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUG9wb3ZlcigkZXZlbnQpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiY24oXG4gICAgICAgICAgICAgICdjdXJzb3ItcG9pbnRlciB0ZXh0LW11dGVkLWZvcmVncm91bmQgdHJhbnNpdGlvbi1jb2xvcnMnLFxuICAgICAgICAgICAgICAncmktY2FsZW5kYXItbGluZSdcbiAgICAgICAgICAgIClcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdG9sbGUtbWFza2VkLWlucHV0PlxuXG4gICAgICA8ZGl2XG4gICAgICAgICNwb3BvdmVyXG4gICAgICAgICpuZ0lmPVwiaXNPcGVuXCJcbiAgICAgICAgY2xhc3M9XCJmaXhlZCB6LVs1MF1cIlxuICAgICAgICBzdHlsZT1cInZpc2liaWxpdHk6IGhpZGRlbjsgdG9wOiAwOyBsZWZ0OiAwO1wiXG4gICAgICA+XG4gICAgICAgIDx0b2xsZS1jYWxlbmRhciBjbGFzcz1cInNoYWRvdy1sZ1wiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25DYWxlbmRhckNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICBbbW9kZV09XCJtb2RlXCJcbiAgICAgICAgICBbZGlzYWJsZVBhc3REYXRlc109XCJkaXNhYmxlUGFzdERhdGVzXCJcbiAgICAgICAgICBbbWluRGF0ZV09XCJtaW5EYXRlXCJcbiAgICAgICAgICBbbWF4RGF0ZV09XCJtYXhEYXRlXCJcbiAgICAgICAgICBbc2hvd1F1aWNrQWN0aW9uc109XCJzaG93UXVpY2tBY3Rpb25zXCJcbiAgICAgICAgICBbZm9ybWF0TW9udGhGbl09XCJmb3JtYXRNb250aEZuXCJcbiAgICAgICAgICBbZm9ybWF0WWVhckZuXT1cImZvcm1hdFllYXJGblwiXG4gICAgICAgID48L3RvbGxlLWNhbGVuZGFyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgRGF0ZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdNTS9ERC9ZWVlZJztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgY2xhc3MgPSAnJztcbiAgQElucHV0KCkgZGlzYWJsZVBhc3REYXRlcyA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93Q2xlYXIgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93UXVpY2tBY3Rpb25zID0gdHJ1ZTtcbiAgQElucHV0KCkgbWluRGF0ZT86IERhdGU7XG4gIEBJbnB1dCgpIG1heERhdGU/OiBEYXRlO1xuICBASW5wdXQoKSBtb2RlOiBDYWxlbmRhck1vZGUgPSAnZGF0ZSc7XG4gIEBJbnB1dCgpIGZvcm1hdE1vbnRoRm4/OiAoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nO1xuICBASW5wdXQoKSBmb3JtYXRZZWFyRm4/OiAoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nO1xuXG4gIC8vIEZvcm1hdCBmdW5jdGlvbnMgZm9yIGRpc3BsYXlcbiAgQElucHV0KCkgZGlzcGxheUZvcm1hdD86IChkYXRlOiBEYXRlLCBtb2RlOiBDYWxlbmRhck1vZGUpID0+IHN0cmluZztcblxuICBAVmlld0NoaWxkKCd0cmlnZ2VyJykgdHJpZ2dlciE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3BvcG92ZXInKSBwb3BvdmVyITogRWxlbWVudFJlZjtcblxuICB2YWx1ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICBpbnB1dFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgaXNPcGVuID0gZmFsc2U7XG4gIGNsZWFudXBBdXRvVXBkYXRlPzogKCkgPT4gdm9pZDtcblxuICBwcml2YXRlIF9vdXRzaWRlQ2xpY2tIYW5kbGVyID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKCF0aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmICF0aGlzLnBvcG92ZXI/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgZ2V0TWFzaygpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5tb2RlKSB7XG4gICAgICBjYXNlICdkYXRlJzogcmV0dXJuICcwMC8wMC8wMDAwJztcbiAgICAgIGNhc2UgJ21vbnRoJzogcmV0dXJuICcwMC8wMDAwJztcbiAgICAgIGNhc2UgJ3llYXInOiByZXR1cm4gJzAwMDAnO1xuICAgICAgZGVmYXVsdDogcmV0dXJuICcwMC8wMC8wMDAwJztcbiAgICB9XG4gIH1cblxuICBnZXRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5tb2RlKSB7XG4gICAgICBjYXNlICdkYXRlJzogcmV0dXJuICdNTS9ERC9ZWVlZJztcbiAgICAgIGNhc2UgJ21vbnRoJzogcmV0dXJuICdNTS9ZWVlZJztcbiAgICAgIGNhc2UgJ3llYXInOiByZXR1cm4gJ1lZWVknO1xuICAgICAgZGVmYXVsdDogcmV0dXJuICdNTS9ERC9ZWVlZJztcbiAgICB9XG4gIH1cblxuICBnZXRGb3JtYXRTdHJpbmcoKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgICAgY2FzZSAnZGF0ZSc6IHJldHVybiAnTU0vZGQveXl5eSc7XG4gICAgICBjYXNlICdtb250aCc6IHJldHVybiAnTU0veXl5eSc7XG4gICAgICBjYXNlICd5ZWFyJzogcmV0dXJuICd5eXl5JztcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAnTU0vZGQveXl5eSc7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0RGF0ZShkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5Rm9ybWF0KSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwbGF5Rm9ybWF0KGRhdGUsIHRoaXMubW9kZSk7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0aGlzLm1vZGUpIHtcbiAgICAgIGNhc2UgJ2RhdGUnOiByZXR1cm4gZm9ybWF0KGRhdGUsICdNTS9kZC95eXl5Jyk7XG4gICAgICBjYXNlICdtb250aCc6IHJldHVybiBmb3JtYXQoZGF0ZSwgJ01NL3l5eXknKTtcbiAgICAgIGNhc2UgJ3llYXInOiByZXR1cm4gZm9ybWF0KGRhdGUsICd5eXl5Jyk7XG4gICAgICBkZWZhdWx0OiByZXR1cm4gZm9ybWF0KGRhdGUsICdNTS9kZC95eXl5Jyk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VEYXRlKHN0cjogc3RyaW5nKTogRGF0ZSB8IG51bGwge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZShzdHIsIHRoaXMuZ2V0Rm9ybWF0U3RyaW5nKCksIG5ldyBEYXRlKCkpO1xuICAgICAgcmV0dXJuIGlzVmFsaWQocGFyc2VkKSA/IHN0YXJ0T2ZEYXkocGFyc2VkKSA6IG51bGw7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBvbklucHV0Q2hhbmdlKHN0cjogc3RyaW5nKSB7XG4gICAgY29uc3QgZXhwZWN0ZWRMZW5ndGggPSB0aGlzLmdldEZvcm1hdFN0cmluZygpLnJlcGxhY2UoL1teMF0vZywgJycpLmxlbmd0aDtcblxuICAgIGlmIChzdHI/Lmxlbmd0aCA9PT0gZXhwZWN0ZWRMZW5ndGgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMucGFyc2VEYXRlKHN0cik7XG4gICAgICBpZiAocGFyc2VkKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBwYXJzZWQ7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghc3RyKSB7XG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgb25DYWxlbmRhckNoYW5nZShkYXRlOiBEYXRlIHwgbnVsbCkge1xuICAgIHRoaXMudmFsdWUgPSBkYXRlO1xuICAgIGlmIChkYXRlKSB7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLmZvcm1hdERhdGUoZGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIH1cbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHRvZ2dsZVBvcG92ZXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMuaXNPcGVuID8gdGhpcy5jbG9zZSgpIDogdGhpcy5vcGVuKCk7XG4gIH1cblxuICBvcGVuKCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy5pc09wZW4gPSB0cnVlO1xuICAgIHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24oKTtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuX291dHNpZGVDbGlja0hhbmRsZXIpO1xuICAgIH0pO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICBpZiAodGhpcy5jbGVhbnVwQXV0b1VwZGF0ZSkgdGhpcy5jbGVhbnVwQXV0b1VwZGF0ZSgpO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIHRoaXMuX291dHNpZGVDbGlja0hhbmRsZXIpO1xuICB9XG5cbiAgY2xlYXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcbiAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQb3NpdGlvbigpIHtcbiAgICBpZiAoIXRoaXMudHJpZ2dlciB8fCAhdGhpcy5wb3BvdmVyKSByZXR1cm47XG5cbiAgICB0aGlzLmNsZWFudXBBdXRvVXBkYXRlID0gYXV0b1VwZGF0ZShcbiAgICAgIHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50LFxuICAgICAgdGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbXB1dGVQb3NpdGlvbih0aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudCwgdGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICBzdHJhdGVneTogJ2ZpeGVkJyxcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20tc3RhcnQnLFxuICAgICAgICAgIG1pZGRsZXdhcmU6IFtcbiAgICAgICAgICAgIG9mZnNldCg0KSxcbiAgICAgICAgICAgIGZsaXAoKSxcbiAgICAgICAgICAgIHNoaWZ0KHsgcGFkZGluZzogOCB9KVxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLnRoZW4oKHsgeCwgeSwgc3RyYXRlZ3kgfSkgPT4ge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUsIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBzdHJhdGVneSxcbiAgICAgICAgICAgIGxlZnQ6IGAke3h9cHhgLFxuICAgICAgICAgICAgdG9wOiBgJHt5fXB4YCxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmNsZWFudXBBdXRvVXBkYXRlKSB0aGlzLmNsZWFudXBBdXRvVXBkYXRlKCk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5fb3V0c2lkZUNsaWNrSGFuZGxlcik7XG4gIH1cblxuICAvLyBDVkEgSW1wbGVtZW50YXRpb25cbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xuXG4gIHdyaXRlVmFsdWUodmFsOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsKSB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodmFsKTtcbiAgICAgIGlmIChpc1ZhbGlkKGRhdGUpKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBzdGFydE9mRGF5KGRhdGUpO1xuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLmZvcm1hdERhdGUodGhpcy52YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gJyc7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7IHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkOyB9XG4gIHByb3RlY3RlZCBjbiA9IGNuO1xufVxuIl19
366
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFjLFNBQVMsRUFBZ0MsWUFBWSxFQUNoRyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQWdCLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUF3RXZFLE1BQU0sT0FBTyxtQkFBbUI7SUE4QlY7SUE3QlgsV0FBVyxHQUFHLFlBQVksQ0FBQztJQUMzQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFDekIsU0FBUyxHQUFHLElBQUksQ0FBQztJQUNqQixnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDeEIsT0FBTyxDQUFRO0lBQ2YsT0FBTyxDQUFRO0lBQ2YsSUFBSSxHQUFpQixNQUFNLENBQUM7SUFDNUIsYUFBYSxDQUEwQjtJQUN2QyxZ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QUMsU0FBUztnQkFnR1ksUUFBUTtzQkFBdkMsWUFBWTt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsIElucHV0LCBmb3J3YXJkUmVmLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIENoYW5nZURldGVjdG9yUmVmLCBPbkRlc3Ryb3ksIEhvc3RMaXN0ZW5lclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29tcHV0ZVBvc2l0aW9uLCBmbGlwLCBzaGlmdCwgb2Zmc2V0LCBhdXRvVXBkYXRlIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgeyBmb3JtYXQsIHBhcnNlLCBpc1ZhbGlkLCBzdGFydE9mRGF5IH0gZnJvbSAnZGF0ZS1mbnMnO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuL3V0aWxzL2NuJztcbmltcG9ydCB7IE1hc2tlZElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9tYXNrZWQtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IENhbGVuZGFyQ29tcG9uZW50LCBDYWxlbmRhck1vZGUgfSBmcm9tICcuL2NhbGVuZGFyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWRhdGUtcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIE1hc2tlZElucHV0Q29tcG9uZW50LCBDYWxlbmRhckNvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVBpY2tlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgdy1mdWxsXCIgI3RyaWdnZXJDb250YWluZXI+XG4gICAgICA8dG9sbGUtbWFza2VkLWlucHV0XG4gICAgICAgICNtYXNrSW5wdXRcbiAgICAgICAgW21hc2tdPVwiZ2V0TWFzaygpXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdldFBsYWNlaG9sZGVyKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VmFsdWVcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbklucHV0Q2hhbmdlKCRldmVudClcIlxuICAgICAgICBbY2xhc3NdPVwiY24oY2xhc3MpXCI+XG4gICAgICAgIDxkaXYgc3VmZml4IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNVwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwidmFsdWUgJiYgIWRpc2FibGVkICYmIHNob3dDbGVhclwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhciBkYXRlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGVhcigkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwicmktY2xvc2UtbGluZSBjdXJzb3ItcG9pbnRlciB0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgID48L2J1dHRvbj5cblxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgI3RyaWdnZXJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJPcGVuIGNhbGVuZGFyXCJcbiAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW5cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBvcG92ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgW2NsYXNzXT1cImNuKFxuICAgICAgICAgICAgICAnY3Vyc29yLXBvaW50ZXIgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHRyYW5zaXRpb24tY29sb3JzJyxcbiAgICAgICAgICAgICAgJ3JpLWNhbGVuZGFyLWxpbmUnXG4gICAgICAgICAgICApXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3RvbGxlLW1hc2tlZC1pbnB1dD5cblxuICAgICAgPGRpdlxuICAgICAgICAjcG9wb3ZlclxuICAgICAgICAqbmdJZj1cImlzT3BlblwiXG4gICAgICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgICAgICBjbGFzcz1cImZpeGVkIHotWzUwXVwiXG4gICAgICAgIHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuOyB0b3A6IDA7IGxlZnQ6IDA7XCJcbiAgICAgID5cbiAgICAgICAgPHRvbGxlLWNhbGVuZGFyIGNsYXNzPVwic2hhZG93LWxnXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNhbGVuZGFyQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFttb2RlXT1cIm1vZGVcIlxuICAgICAgICAgIFtkaXNhYmxlUGFzdERhdGVzXT1cImRpc2FibGVQYXN0RGF0ZXNcIlxuICAgICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgICAgICAgIFtzaG93UXVpY2tBY3Rpb25zXT1cInNob3dRdWlja0FjdGlvbnNcIlxuICAgICAgICAgIFtmb3JtYXRNb250aEZuXT1cImZvcm1hdE1vbnRoRm5cIlxuICAgICAgICAgIFtmb3JtYXRZZWFyRm5dPVwiZm9ybWF0WWVhckZuXCJcbiAgICAgICAgPjwvdG9sbGUtY2FsZW5kYXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ01NL0REL1lZWVknO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBjbGFzcyA9ICcnO1xuICBASW5wdXQoKSBkaXNhYmxlUGFzdERhdGVzID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dDbGVhciA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dRdWlja0FjdGlvbnMgPSB0cnVlO1xuICBASW5wdXQoKSBtaW5EYXRlPzogRGF0ZTtcbiAgQElucHV0KCkgbWF4RGF0ZT86IERhdGU7XG4gIEBJbnB1dCgpIG1vZGU6IENhbGVuZGFyTW9kZSA9ICdkYXRlJztcbiAgQElucHV0KCkgZm9ybWF0TW9udGhGbj86IChkYXRlOiBEYXRlKSA9PiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZvcm1hdFllYXJGbj86IChkYXRlOiBEYXRlKSA9PiBzdHJpbmc7XG5cbiAgLy8gRm9ybWF0IGZ1bmN0aW9ucyBmb3IgZGlzcGxheVxuICBASW5wdXQoKSBkaXNwbGF5Rm9ybWF0PzogKGRhdGU6IERhdGUsIG1vZGU6IENhbGVuZGFyTW9kZSkgPT4gc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ3RyaWdnZXInKSB0cmlnZ2VyITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgncG9wb3ZlcicpIHBvcG92ZXIhOiBFbGVtZW50UmVmO1xuXG4gIHZhbHVlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIGlucHV0VmFsdWU6IHN0cmluZyA9ICcnO1xuICBpc09wZW4gPSBmYWxzZTtcbiAgY2xlYW51cEF1dG9VcGRhdGU/OiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgX291dHNpZGVDbGlja0hhbmRsZXIgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoIXRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiYgIXRoaXMucG9wb3Zlcj8ubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBnZXRNYXNrKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLm1vZGUpIHtcbiAgICAgIGNhc2UgJ2RhdGUnOiByZXR1cm4gJzAwLzAwLzAwMDAnO1xuICAgICAgY2FzZSAnbW9udGgnOiByZXR1cm4gJzAwLzAwMDAnO1xuICAgICAgY2FzZSAneWVhcic6IHJldHVybiAnMDAwMCc7XG4gICAgICBkZWZhdWx0OiByZXR1cm4gJzAwLzAwLzAwMDAnO1xuICAgIH1cbiAgfVxuXG4gIGdldFBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLm1vZGUpIHtcbiAgICAgIGNhc2UgJ2RhdGUnOiByZXR1cm4gJ01NL0REL1lZWVknO1xuICAgICAgY2FzZSAnbW9udGgnOiByZXR1cm4gJ01NL1lZWVknO1xuICAgICAgY2FzZSAneWVhcic6IHJldHVybiAnWVlZWSc7XG4gICAgICBkZWZhdWx0OiByZXR1cm4gJ01NL0REL1lZWVknO1xuICAgIH1cbiAgfVxuXG4gIGdldEZvcm1hdFN0cmluZygpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5tb2RlKSB7XG4gICAgICBjYXNlICdkYXRlJzogcmV0dXJuICdNTS9kZC95eXl5JztcbiAgICAgIGNhc2UgJ21vbnRoJzogcmV0dXJuICdNTS95eXl5JztcbiAgICAgIGNhc2UgJ3llYXInOiByZXR1cm4gJ3l5eXknO1xuICAgICAgZGVmYXVsdDogcmV0dXJuICdNTS9kZC95eXl5JztcbiAgICB9XG4gIH1cblxuICBmb3JtYXREYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmRpc3BsYXlGb3JtYXQpIHtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlGb3JtYXQoZGF0ZSwgdGhpcy5tb2RlKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgICAgY2FzZSAnZGF0ZSc6IHJldHVybiBmb3JtYXQoZGF0ZSwgJ01NL2RkL3l5eXknKTtcbiAgICAgIGNhc2UgJ21vbnRoJzogcmV0dXJuIGZvcm1hdChkYXRlLCAnTU0veXl5eScpO1xuICAgICAgY2FzZSAneWVhcic6IHJldHVybiBmb3JtYXQoZGF0ZSwgJ3l5eXknKTtcbiAgICAgIGRlZmF1bHQ6IHJldHVybiBmb3JtYXQoZGF0ZSwgJ01NL2RkL3l5eXknKTtcbiAgICB9XG4gIH1cblxuICBwYXJzZURhdGUoc3RyOiBzdHJpbmcpOiBEYXRlIHwgbnVsbCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlKHN0ciwgdGhpcy5nZXRGb3JtYXRTdHJpbmcoKSwgbmV3IERhdGUoKSk7XG4gICAgICByZXR1cm4gaXNWYWxpZChwYXJzZWQpID8gc3RhcnRPZkRheShwYXJzZWQpIDogbnVsbDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIG9uSW5wdXRDaGFuZ2Uoc3RyOiBzdHJpbmcpIHtcbiAgICBjb25zdCBleHBlY3RlZExlbmd0aCA9IHRoaXMuZ2V0Rm9ybWF0U3RyaW5nKCkucmVwbGFjZSgvW14wXS9nLCAnJykubGVuZ3RoO1xuXG4gICAgaWYgKHN0cj8ubGVuZ3RoID09PSBleHBlY3RlZExlbmd0aCkge1xuICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZURhdGUoc3RyKTtcbiAgICAgIGlmIChwYXJzZWQpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHBhcnNlZDtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFzdHIpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5vbkNoYW5nZShudWxsKTtcbiAgICB9XG4gIH1cblxuICBvbkNhbGVuZGFyQ2hhbmdlKGRhdGU6IERhdGUgfCBudWxsKSB7XG4gICAgdGhpcy52YWx1ZSA9IGRhdGU7XG4gICAgaWYgKGRhdGUpIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMuZm9ybWF0RGF0ZShkYXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gJyc7XG4gICAgfVxuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgdG9nZ2xlUG9wb3ZlcihldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm47XG4gICAgdGhpcy5pc09wZW4gPyB0aGlzLmNsb3NlKCkgOiB0aGlzLm9wZW4oKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZXNjYXBlJykgb25Fc2NhcGUoKSB7IGlmICh0aGlzLmlzT3BlbikgdGhpcy5jbG9zZSgpOyB9XG5cbiAgb3BlbigpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAvLyBSZW5kZXIgdGhlIHBvcG92ZXIgc3luY2hyb25vdXNseSBzbyBpdHMgRE9NIG5vZGUgKyBAVmlld0NoaWxkKCdwb3BvdmVyJykgZXhpc3RcbiAgICAvLyBiZWZvcmUgd2UgcG9zaXRpb24gaXQuIE90aGVyd2lzZSwgd2l0aCB6b25lIGV2ZW50Q29hbGVzY2luZyAoQW5ndWxhciBkZWZlcnMgY2hhbmdlXG4gICAgLy8gZGV0ZWN0aW9uIHRvIHRoZSBuZXh0IGFuaW1hdGlvbiBmcmFtZSksIHVwZGF0ZVBvc2l0aW9uKCkgY2FuIHJ1biBmaXJzdCwgZmluZCBub1xuICAgIC8vIHBvcG92ZXIsIGFuZCB0aGUgY2FsZW5kYXIgc3RheXMgaGlkZGVuIOKAlCByZWdhcmRsZXNzIG9mIHdoZXJlIHRoZSBwaWNrZXIgaXMgdXNlZC5cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5fb3V0c2lkZUNsaWNrSGFuZGxlcik7XG4gICAgfSk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmNsZWFudXBBdXRvVXBkYXRlKSB0aGlzLmNsZWFudXBBdXRvVXBkYXRlKCk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgdGhpcy5fb3V0c2lkZUNsaWNrSGFuZGxlcik7XG4gIH1cblxuICBjbGVhcihldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVBvc2l0aW9uKCkge1xuICAgIGlmICghdGhpcy50cmlnZ2VyIHx8ICF0aGlzLnBvcG92ZXIpIHJldHVybjtcblxuICAgIHRoaXMuY2xlYW51cEF1dG9VcGRhdGUgPSBhdXRvVXBkYXRlKFxuICAgICAgdGhpcy50cmlnZ2VyLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB0aGlzLnBvcG92ZXIubmF0aXZlRWxlbWVudCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29tcHV0ZVBvc2l0aW9uKHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50LCB0aGlzLnBvcG92ZXIubmF0aXZlRWxlbWVudCwge1xuICAgICAgICAgIHN0cmF0ZWd5OiAnZml4ZWQnLFxuICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbS1zdGFydCcsXG4gICAgICAgICAgbWlkZGxld2FyZTogW1xuICAgICAgICAgICAgb2Zmc2V0KDQpLFxuICAgICAgICAgICAgZmxpcCgpLFxuICAgICAgICAgICAgc2hpZnQoeyBwYWRkaW5nOiA4IH0pXG4gICAgICAgICAgXSxcbiAgICAgICAgfSkudGhlbigoeyB4LCB5LCBzdHJhdGVneSB9KSA9PiB7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLnBvcG92ZXIubmF0aXZlRWxlbWVudC5zdHlsZSwge1xuICAgICAgICAgICAgcG9zaXRpb246IHN0cmF0ZWd5LFxuICAgICAgICAgICAgbGVmdDogYCR7eH1weGAsXG4gICAgICAgICAgICB0b3A6IGAke3l9cHhgLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogJ3Zpc2libGUnLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuY2xlYW51cEF1dG9VcGRhdGUpIHRoaXMuY2xlYW51cEF1dG9VcGRhdGUoKTtcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCB0aGlzLl9vdXRzaWRlQ2xpY2tIYW5kbGVyKTtcbiAgfVxuXG4gIC8vIENWQSBJbXBsZW1lbnRhdGlvblxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge307XG4gIG9uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XG5cbiAgd3JpdGVWYWx1ZSh2YWw6IGFueSk6IHZvaWQge1xuICAgIGlmICh2YWwpIHtcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh2YWwpO1xuICAgICAgaWYgKGlzVmFsaWQoZGF0ZSkpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHN0YXJ0T2ZEYXkoZGF0ZSk7XG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMuZm9ybWF0RGF0ZSh0aGlzLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHsgdGhpcy5vbkNoYW5nZSA9IGZuOyB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHsgdGhpcy5vblRvdWNoZWQgPSBmbjsgfVxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHsgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7IH1cbiAgcHJvdGVjdGVkIGNuID0gY247XG59XG4iXX0=