@mozaic-ds/angular 0.24.0-test.2 → 0.25.0

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 (165) hide show
  1. package/adeo/assets/fonts/LeroyMerlinSans-Web-Italic.woff +0 -0
  2. package/adeo/assets/fonts/LeroyMerlinSans-Web-Italic.woff2 +0 -0
  3. package/adeo/assets/fonts/LeroyMerlinSans-Web-Light.woff +0 -0
  4. package/adeo/assets/fonts/LeroyMerlinSans-Web-Light.woff2 +0 -0
  5. package/adeo/assets/fonts/LeroyMerlinSans-Web-LightItalic.woff +0 -0
  6. package/adeo/assets/fonts/LeroyMerlinSans-Web-LightItalic.woff2 +0 -0
  7. package/adeo/assets/fonts/LeroyMerlinSans-Web-Regular.woff +0 -0
  8. package/adeo/assets/fonts/LeroyMerlinSans-Web-Regular.woff2 +0 -0
  9. package/adeo/assets/fonts/LeroyMerlinSans-Web-SemiBold.woff +0 -0
  10. package/adeo/assets/fonts/LeroyMerlinSans-Web-SemiBold.woff2 +0 -0
  11. package/adeo/assets/fonts/LeroyMerlinSans-Web-SemiBoldItalic.woff +0 -0
  12. package/adeo/assets/fonts/LeroyMerlinSans-Web-SemiBoldItalic.woff2 +0 -0
  13. package/adeo/assets/tokens/bricoman/js/tokens.js +1 -1
  14. package/adeo/assets/tokens/bricoman/js/tokensObject.js +15 -15
  15. package/adeo/assets/tokens/bricoman/scss/_tokens.scss +3 -3
  16. package/adeo/components/autocomplete/autocomplete.component.d.ts +3 -1
  17. package/adeo/components/datatable/components/selection/moz-datatable-selection.component.d.ts +10 -1
  18. package/adeo/components/datatable/moz-datatable.component.d.ts +4 -1
  19. package/adeo/components/dropdown/dropdown.component.d.ts +3 -1
  20. package/adeo/components/pagination/pagination.component.d.ts +10 -9
  21. package/adeo/esm2020/components/accordion/accordion.component.mjs +2 -2
  22. package/adeo/esm2020/components/autocomplete/autocomplete.component.mjs +11 -5
  23. package/adeo/esm2020/components/breadcrumb/breadcrumb.component.mjs +2 -2
  24. package/adeo/esm2020/components/built-it-menu/built-it-menu.component.mjs +2 -2
  25. package/adeo/esm2020/components/datatable/components/footer/moz-datatable-footer.component.mjs +10 -8
  26. package/adeo/esm2020/components/datatable/components/selection/moz-datatable-selection.component.mjs +73 -44
  27. package/adeo/esm2020/components/datatable/moz-datatable.component.mjs +12 -3
  28. package/adeo/esm2020/components/dropdown/dropdown.component.mjs +10 -4
  29. package/adeo/esm2020/components/listbox/listbox.component.mjs +4 -4
  30. package/adeo/esm2020/components/pagination/pagination.component.mjs +26 -23
  31. package/adeo/esm2020/components/phone-number/phone-number.component.mjs +2 -2
  32. package/adeo/esm2020/components/stepper/step.component.mjs +2 -2
  33. package/adeo/esm2020/components/stepper/stepper.component.mjs +2 -2
  34. package/adeo/esm2020/components/text-area/text-area.component.mjs +2 -2
  35. package/adeo/fesm2015/mozaic-ds-angular.mjs +159 -102
  36. package/adeo/fesm2015/mozaic-ds-angular.mjs.map +1 -1
  37. package/adeo/fesm2020/mozaic-ds-angular.mjs +153 -98
  38. package/adeo/fesm2020/mozaic-ds-angular.mjs.map +1 -1
  39. package/adeo/package.json +1 -1
  40. package/assets/fonts/LeroyMerlinSans-Web-Italic.woff +0 -0
  41. package/assets/fonts/LeroyMerlinSans-Web-Italic.woff2 +0 -0
  42. package/assets/fonts/LeroyMerlinSans-Web-Light.woff +0 -0
  43. package/assets/fonts/LeroyMerlinSans-Web-Light.woff2 +0 -0
  44. package/assets/fonts/LeroyMerlinSans-Web-LightItalic.woff +0 -0
  45. package/assets/fonts/LeroyMerlinSans-Web-LightItalic.woff2 +0 -0
  46. package/assets/fonts/LeroyMerlinSans-Web-Regular.woff +0 -0
  47. package/assets/fonts/LeroyMerlinSans-Web-Regular.woff2 +0 -0
  48. package/assets/fonts/LeroyMerlinSans-Web-SemiBold.woff +0 -0
  49. package/assets/fonts/LeroyMerlinSans-Web-SemiBold.woff2 +0 -0
  50. package/assets/fonts/LeroyMerlinSans-Web-SemiBoldItalic.woff +0 -0
  51. package/assets/fonts/LeroyMerlinSans-Web-SemiBoldItalic.woff2 +0 -0
  52. package/assets/tokens/bricoman/js/tokens.js +1 -1
  53. package/assets/tokens/bricoman/js/tokensObject.js +15 -15
  54. package/assets/tokens/bricoman/scss/_tokens.scss +3 -3
  55. package/bricoman/assets/fonts/LeroyMerlinSans-Web-Italic.woff +0 -0
  56. package/bricoman/assets/fonts/LeroyMerlinSans-Web-Italic.woff2 +0 -0
  57. package/bricoman/assets/fonts/LeroyMerlinSans-Web-Light.woff +0 -0
  58. package/bricoman/assets/fonts/LeroyMerlinSans-Web-Light.woff2 +0 -0
  59. package/bricoman/assets/fonts/LeroyMerlinSans-Web-LightItalic.woff +0 -0
  60. package/bricoman/assets/fonts/LeroyMerlinSans-Web-LightItalic.woff2 +0 -0
  61. package/bricoman/assets/fonts/LeroyMerlinSans-Web-Regular.woff +0 -0
  62. package/bricoman/assets/fonts/LeroyMerlinSans-Web-Regular.woff2 +0 -0
  63. package/bricoman/assets/fonts/LeroyMerlinSans-Web-SemiBold.woff +0 -0
  64. package/bricoman/assets/fonts/LeroyMerlinSans-Web-SemiBold.woff2 +0 -0
  65. package/bricoman/assets/fonts/LeroyMerlinSans-Web-SemiBoldItalic.woff +0 -0
  66. package/bricoman/assets/fonts/LeroyMerlinSans-Web-SemiBoldItalic.woff2 +0 -0
  67. package/bricoman/assets/tokens/bricoman/js/tokens.js +1 -1
  68. package/bricoman/assets/tokens/bricoman/js/tokensObject.js +15 -15
  69. package/bricoman/assets/tokens/bricoman/scss/_tokens.scss +3 -3
  70. package/bricoman/components/autocomplete/autocomplete.component.d.ts +3 -1
  71. package/bricoman/components/datatable/components/selection/moz-datatable-selection.component.d.ts +10 -1
  72. package/bricoman/components/datatable/moz-datatable.component.d.ts +4 -1
  73. package/bricoman/components/dropdown/dropdown.component.d.ts +3 -1
  74. package/bricoman/components/pagination/pagination.component.d.ts +10 -9
  75. package/bricoman/esm2020/components/accordion/accordion.component.mjs +2 -2
  76. package/bricoman/esm2020/components/autocomplete/autocomplete.component.mjs +11 -5
  77. package/bricoman/esm2020/components/breadcrumb/breadcrumb.component.mjs +2 -2
  78. package/bricoman/esm2020/components/built-it-menu/built-it-menu.component.mjs +2 -2
  79. package/bricoman/esm2020/components/datatable/components/footer/moz-datatable-footer.component.mjs +10 -8
  80. package/bricoman/esm2020/components/datatable/components/selection/moz-datatable-selection.component.mjs +73 -44
  81. package/bricoman/esm2020/components/datatable/moz-datatable.component.mjs +12 -3
  82. package/bricoman/esm2020/components/dropdown/dropdown.component.mjs +10 -4
  83. package/bricoman/esm2020/components/listbox/listbox.component.mjs +4 -4
  84. package/bricoman/esm2020/components/pagination/pagination.component.mjs +26 -23
  85. package/bricoman/esm2020/components/phone-number/phone-number.component.mjs +2 -2
  86. package/bricoman/esm2020/components/stepper/step.component.mjs +2 -2
  87. package/bricoman/esm2020/components/stepper/stepper.component.mjs +2 -2
  88. package/bricoman/esm2020/components/text-area/text-area.component.mjs +2 -2
  89. package/bricoman/fesm2015/mozaic-ds-angular.mjs +159 -102
  90. package/bricoman/fesm2015/mozaic-ds-angular.mjs.map +1 -1
  91. package/bricoman/fesm2020/mozaic-ds-angular.mjs +153 -98
  92. package/bricoman/fesm2020/mozaic-ds-angular.mjs.map +1 -1
  93. package/bricoman/package.json +1 -1
  94. package/components/autocomplete/autocomplete.component.d.ts +3 -1
  95. package/components/datatable/components/selection/moz-datatable-selection.component.d.ts +10 -1
  96. package/components/datatable/moz-datatable.component.d.ts +4 -1
  97. package/components/dropdown/dropdown.component.d.ts +3 -1
  98. package/components/pagination/pagination.component.d.ts +10 -9
  99. package/esm2020/components/accordion/accordion.component.mjs +2 -2
  100. package/esm2020/components/autocomplete/autocomplete.component.mjs +11 -5
  101. package/esm2020/components/breadcrumb/breadcrumb.component.mjs +2 -2
  102. package/esm2020/components/built-it-menu/built-it-menu.component.mjs +2 -2
  103. package/esm2020/components/datatable/components/footer/moz-datatable-footer.component.mjs +10 -8
  104. package/esm2020/components/datatable/components/selection/moz-datatable-selection.component.mjs +73 -44
  105. package/esm2020/components/datatable/moz-datatable.component.mjs +12 -3
  106. package/esm2020/components/dropdown/dropdown.component.mjs +10 -4
  107. package/esm2020/components/listbox/listbox.component.mjs +4 -4
  108. package/esm2020/components/pagination/pagination.component.mjs +26 -23
  109. package/esm2020/components/phone-number/phone-number.component.mjs +2 -2
  110. package/esm2020/components/stepper/step.component.mjs +2 -2
  111. package/esm2020/components/stepper/stepper.component.mjs +2 -2
  112. package/esm2020/components/text-area/text-area.component.mjs +2 -2
  113. package/fesm2015/mozaic-ds-angular.mjs +159 -102
  114. package/fesm2015/mozaic-ds-angular.mjs.map +1 -1
  115. package/fesm2020/mozaic-ds-angular.mjs +153 -98
  116. package/fesm2020/mozaic-ds-angular.mjs.map +1 -1
  117. package/package.json +1 -1
  118. package/adeo/assets/tokens/adeo/android/colors.xml +0 -494
  119. package/adeo/assets/tokens/adeo/android/font_dimens.xml +0 -18
  120. package/adeo/assets/tokens/adeo/ios/StyleDictionaryColor.h +0 -502
  121. package/adeo/assets/tokens/adeo/ios/StyleDictionaryColor.m +0 -514
  122. package/adeo/assets/tokens/adeo/ios/StyleDictionaryColor.swift +0 -497
  123. package/adeo/assets/tokens/adeo/ios/StyleDictionarySize.h +0 -69
  124. package/adeo/assets/tokens/adeo/ios/StyleDictionarySize.m +0 -70
  125. package/adeo/assets/tokens/adeo/ios/StyleDictionarySize.swift +0 -71
  126. package/adeo/assets/tokens/bricoman/android/colors.xml +0 -486
  127. package/adeo/assets/tokens/bricoman/android/font_dimens.xml +0 -18
  128. package/adeo/assets/tokens/bricoman/ios/StyleDictionaryColor.h +0 -494
  129. package/adeo/assets/tokens/bricoman/ios/StyleDictionaryColor.m +0 -506
  130. package/adeo/assets/tokens/bricoman/ios/StyleDictionaryColor.swift +0 -489
  131. package/adeo/assets/tokens/bricoman/ios/StyleDictionarySize.h +0 -69
  132. package/adeo/assets/tokens/bricoman/ios/StyleDictionarySize.m +0 -70
  133. package/adeo/assets/tokens/bricoman/ios/StyleDictionarySize.swift +0 -71
  134. package/assets/tokens/adeo/android/colors.xml +0 -494
  135. package/assets/tokens/adeo/android/font_dimens.xml +0 -18
  136. package/assets/tokens/adeo/ios/StyleDictionaryColor.h +0 -502
  137. package/assets/tokens/adeo/ios/StyleDictionaryColor.m +0 -514
  138. package/assets/tokens/adeo/ios/StyleDictionaryColor.swift +0 -497
  139. package/assets/tokens/adeo/ios/StyleDictionarySize.h +0 -69
  140. package/assets/tokens/adeo/ios/StyleDictionarySize.m +0 -70
  141. package/assets/tokens/adeo/ios/StyleDictionarySize.swift +0 -71
  142. package/assets/tokens/bricoman/android/colors.xml +0 -486
  143. package/assets/tokens/bricoman/android/font_dimens.xml +0 -18
  144. package/assets/tokens/bricoman/ios/StyleDictionaryColor.h +0 -494
  145. package/assets/tokens/bricoman/ios/StyleDictionaryColor.m +0 -506
  146. package/assets/tokens/bricoman/ios/StyleDictionaryColor.swift +0 -489
  147. package/assets/tokens/bricoman/ios/StyleDictionarySize.h +0 -69
  148. package/assets/tokens/bricoman/ios/StyleDictionarySize.m +0 -70
  149. package/assets/tokens/bricoman/ios/StyleDictionarySize.swift +0 -71
  150. package/bricoman/assets/tokens/adeo/android/colors.xml +0 -494
  151. package/bricoman/assets/tokens/adeo/android/font_dimens.xml +0 -18
  152. package/bricoman/assets/tokens/adeo/ios/StyleDictionaryColor.h +0 -502
  153. package/bricoman/assets/tokens/adeo/ios/StyleDictionaryColor.m +0 -514
  154. package/bricoman/assets/tokens/adeo/ios/StyleDictionaryColor.swift +0 -497
  155. package/bricoman/assets/tokens/adeo/ios/StyleDictionarySize.h +0 -69
  156. package/bricoman/assets/tokens/adeo/ios/StyleDictionarySize.m +0 -70
  157. package/bricoman/assets/tokens/adeo/ios/StyleDictionarySize.swift +0 -71
  158. package/bricoman/assets/tokens/bricoman/android/colors.xml +0 -486
  159. package/bricoman/assets/tokens/bricoman/android/font_dimens.xml +0 -18
  160. package/bricoman/assets/tokens/bricoman/ios/StyleDictionaryColor.h +0 -494
  161. package/bricoman/assets/tokens/bricoman/ios/StyleDictionaryColor.m +0 -506
  162. package/bricoman/assets/tokens/bricoman/ios/StyleDictionaryColor.swift +0 -489
  163. package/bricoman/assets/tokens/bricoman/ios/StyleDictionarySize.h +0 -69
  164. package/bricoman/assets/tokens/bricoman/ios/StyleDictionarySize.m +0 -70
  165. package/bricoman/assets/tokens/bricoman/ios/StyleDictionarySize.swift +0 -71
@@ -21,20 +21,33 @@ export class PaginationComponent {
21
21
  this.globalEventService = globalEventService;
22
22
  this.cd = cd;
23
23
  this.numberOfPages = PAGINATION_MIN_NUMBER_OF_PAGES;
24
+ this.pageChangeEvent = new EventEmitter();
25
+ this.disable = false;
24
26
  this.light = false;
25
27
  this.pageLabel = 'Page';
26
28
  this.pageOfLabel = 'of';
27
- this.pageTitleMask = (page, numberOfPages) => `${this.pageLabel} ${page} ${this.pageOfLabel} ${numberOfPages}`;
28
- this.pageChangeEvent = new EventEmitter();
29
- this.onChange = () => { };
30
- this.onTouch = () => { };
31
29
  this.currentPage = PAGINATION_FIRST_PAGE;
32
30
  this.pages = [];
33
31
  this.smallResolution = 1024;
32
+ this.pageTitleMask = (page, numberOfPages) => `${this.pageLabel} ${page} ${this.pageOfLabel} ${numberOfPages}`;
33
+ this.onChange = () => { };
34
+ this.onTouch = () => { };
34
35
  const isSmall = this.displayIsSmall().pipe(shareReplay({ refCount: true, bufferSize: 1 }));
35
36
  this.initializeIcons(isSmall);
36
37
  this.selectSize = isSmall.pipe(map((isSmall) => this.chooseSelectSize(isSmall)));
37
38
  }
39
+ get viewSelect() {
40
+ return !this.light;
41
+ }
42
+ get isFirstPage() {
43
+ return this.currentPage <= PAGINATION_FIRST_PAGE;
44
+ }
45
+ get isLastPage() {
46
+ return this.currentPage >= this.numberOfPages;
47
+ }
48
+ get disabledSelect() {
49
+ return this.numberOfPages <= PAGINATION_MIN_NUMBER_OF_PAGES;
50
+ }
38
51
  ngAfterViewInit() {
39
52
  this.reinitializeNumberOfPagesAtInvalidValue();
40
53
  if (this.viewSelect) {
@@ -50,18 +63,6 @@ export class PaginationComponent {
50
63
  this.pages = this.initializePages(this.numberOfPages);
51
64
  this.reinitializeCurrentPageAtOverflow();
52
65
  }
53
- get viewSelect() {
54
- return !this.light;
55
- }
56
- get isFirstPage() {
57
- return this.currentPage <= PAGINATION_FIRST_PAGE;
58
- }
59
- get isLastPage() {
60
- return this.currentPage >= this.numberOfPages;
61
- }
62
- get disabledSelect() {
63
- return this.numberOfPages <= PAGINATION_MIN_NUMBER_OF_PAGES;
64
- }
65
66
  writeValue(value) {
66
67
  if (!value || value === this.currentPage || value > this.numberOfPages)
67
68
  return;
@@ -77,12 +78,12 @@ export class PaginationComponent {
77
78
  }
78
79
  nextPage() {
79
80
  this.writeValue(this.currentPage + PAGINATION_PAGE_STEP);
80
- this.pageChangeEvent.emit(this.currentPage + PAGINATION_PAGE_STEP);
81
+ this.pageChangeEvent.emit(this.currentPage);
81
82
  this.cd.markForCheck();
82
83
  }
83
84
  previousPage() {
84
85
  this.writeValue(this.currentPage - PAGINATION_PAGE_STEP);
85
- this.pageChangeEvent.emit(this.currentPage - PAGINATION_PAGE_STEP);
86
+ this.pageChangeEvent.emit(this.currentPage);
86
87
  this.cd.markForCheck();
87
88
  }
88
89
  compareWithPages(page, currentPage) {
@@ -127,12 +128,16 @@ export class PaginationComponent {
127
128
  }
128
129
  }
129
130
  PaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PaginationComponent, deps: [{ token: i1.GlobalEventsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
130
- PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PaginationComponent, selector: "moz-pagination", inputs: { numberOfPages: "numberOfPages", light: "light", pageLabel: "pageLabel", pageOfLabel: "pageOfLabel", pageTitleMask: "pageTitleMask" }, outputs: { pageChangeEvent: "pageChangeEvent" }, providers: [PAGINATION_CONTROL_VALUE_ACCESSOR], usesOnChanges: true, ngImport: i0, template: "<nav class=\"mc-pagination\" role=\"navigation\" aria-label=\"pagination\">\n <button\n moz-button\n theme=\"neutral\"\n class=\"mc-pagination__button\"\n [disabled]=\"isFirstPage\"\n [onlyIcon]=\"true\"\n [size]=\"(selectSize | async)!\"\n (click)=\"previousPage()\"\n *ngIf=\"leftIconName | async; let icon\"\n >\n <moz-icon [iconName]=\"icon\"></moz-icon>\n </button>\n <div *ngIf=\"viewSelect\">\n <select\n moz-select\n [ngModel]=\"currentPage\"\n (change)=\"onChange(currentPage); this.pageChangeEvent.emit(this.currentPage)\"\n (ngModelChange)=\"writeValue($event)\"\n [compareWith]=\"compareWithPages\"\n [size]=\"(selectSize | async)!\"\n [disabled]=\"disabledSelect\"\n >\n <option *ngFor=\"let page of pages\" [ngValue]=\"page.value\">{{ page.title }}</option>\n </select>\n </div>\n\n <button\n moz-button\n theme=\"neutral\"\n class=\"mc-pagination__button\"\n [disabled]=\"isLastPage\"\n (click)=\"nextPage()\"\n [size]=\"(selectSize | async)!\"\n [onlyIcon]=\"true\"\n *ngIf=\"rightIconName | async; let icon\"\n >\n <moz-icon [iconName]=\"icon\"></moz-icon>\n </button>\n</nav>\n", styles: [".mc-pagination{align-items:center;display:flex;justify-content:center;gap:1rem}.mc-pagination__select{font-size:1rem;line-height:1.125;padding:.875rem 3rem .875rem calc(.75rem - 1px)}@media screen and (min-width: 1024px){.mc-pagination__select{font-size:.875rem;line-height:1.1428571429;padding:calc(.5rem - 1px) 2.25rem calc(.5rem - 1px) calc(.5rem - 1px)}}.mc-pagination{gap:1rem}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[moz-button]", inputs: ["iconPosition", "onlyIcon", "theme", "variation", "widthBehavior", "size"] }, { kind: "component", type: i5.SelectComponent, selector: "select[moz-`select`]", inputs: ["size"] }, { kind: "component", type: i6.IconComponent, selector: "moz-icon", inputs: ["iconName"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
131
+ PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PaginationComponent, selector: "moz-pagination", inputs: { numberOfPages: "numberOfPages", disable: "disable", light: "light", pageLabel: "pageLabel", pageOfLabel: "pageOfLabel", pageTitleMask: "pageTitleMask" }, outputs: { pageChangeEvent: "pageChangeEvent" }, providers: [PAGINATION_CONTROL_VALUE_ACCESSOR], usesOnChanges: true, ngImport: i0, template: "<nav class=\"mc-pagination\" role=\"navigation\" aria-label=\"pagination\">\n <button\n moz-button\n theme=\"neutral\"\n class=\"mc-pagination__button\"\n [disabled]=\"isFirstPage || disable\"\n [onlyIcon]=\"true\"\n [size]=\"(selectSize | async)!\"\n (click)=\"previousPage()\"\n *ngIf=\"leftIconName | async; let icon\"\n >\n <moz-icon [iconName]=\"icon\"></moz-icon>\n </button>\n <div *ngIf=\"viewSelect\">\n <select\n moz-select\n [ngModel]=\"currentPage\"\n (change)=\"onChange(currentPage); this.pageChangeEvent.emit(this.currentPage)\"\n (ngModelChange)=\"writeValue($event)\"\n [compareWith]=\"compareWithPages\"\n [size]=\"(selectSize | async)!\"\n [disabled]=\"disabledSelect || disable\"\n >\n <option *ngFor=\"let page of pages\" [ngValue]=\"page.value\">{{ page.title }}</option>\n </select>\n </div>\n\n <button\n moz-button\n theme=\"neutral\"\n class=\"mc-pagination__button\"\n [disabled]=\"isLastPage || disable\"\n (click)=\"nextPage()\"\n [size]=\"(selectSize | async)!\"\n [onlyIcon]=\"true\"\n *ngIf=\"rightIconName | async; let icon\"\n >\n <moz-icon [iconName]=\"icon\"></moz-icon>\n </button>\n</nav>\n", styles: [".mc-pagination{align-items:center;display:flex;justify-content:center;gap:1rem}.mc-pagination__select{font-size:1rem;line-height:1.125;padding:.875rem 3rem .875rem calc(.75rem - 1px)}@media screen and (min-width: 1024px){.mc-pagination__select{font-size:.875rem;line-height:1.1428571429;padding:calc(.5rem - 1px) 2.25rem calc(.5rem - 1px) calc(.5rem - 1px)}}.mc-pagination{gap:1rem}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.ButtonComponent, selector: "button[moz-button]", inputs: ["iconPosition", "onlyIcon", "theme", "variation", "widthBehavior", "size"] }, { kind: "component", type: i5.SelectComponent, selector: "select[moz-`select`]", inputs: ["size"] }, { kind: "component", type: i6.IconComponent, selector: "moz-icon", inputs: ["iconName"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
131
132
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PaginationComponent, decorators: [{
132
133
  type: Component,
133
- args: [{ selector: 'moz-pagination', changeDetection: ChangeDetectionStrategy.OnPush, providers: [PAGINATION_CONTROL_VALUE_ACCESSOR], template: "<nav class=\"mc-pagination\" role=\"navigation\" aria-label=\"pagination\">\n <button\n moz-button\n theme=\"neutral\"\n class=\"mc-pagination__button\"\n [disabled]=\"isFirstPage\"\n [onlyIcon]=\"true\"\n [size]=\"(selectSize | async)!\"\n (click)=\"previousPage()\"\n *ngIf=\"leftIconName | async; let icon\"\n >\n <moz-icon [iconName]=\"icon\"></moz-icon>\n </button>\n <div *ngIf=\"viewSelect\">\n <select\n moz-select\n [ngModel]=\"currentPage\"\n (change)=\"onChange(currentPage); this.pageChangeEvent.emit(this.currentPage)\"\n (ngModelChange)=\"writeValue($event)\"\n [compareWith]=\"compareWithPages\"\n [size]=\"(selectSize | async)!\"\n [disabled]=\"disabledSelect\"\n >\n <option *ngFor=\"let page of pages\" [ngValue]=\"page.value\">{{ page.title }}</option>\n </select>\n </div>\n\n <button\n moz-button\n theme=\"neutral\"\n class=\"mc-pagination__button\"\n [disabled]=\"isLastPage\"\n (click)=\"nextPage()\"\n [size]=\"(selectSize | async)!\"\n [onlyIcon]=\"true\"\n *ngIf=\"rightIconName | async; let icon\"\n >\n <moz-icon [iconName]=\"icon\"></moz-icon>\n </button>\n</nav>\n", styles: [".mc-pagination{align-items:center;display:flex;justify-content:center;gap:1rem}.mc-pagination__select{font-size:1rem;line-height:1.125;padding:.875rem 3rem .875rem calc(.75rem - 1px)}@media screen and (min-width: 1024px){.mc-pagination__select{font-size:.875rem;line-height:1.1428571429;padding:calc(.5rem - 1px) 2.25rem calc(.5rem - 1px) calc(.5rem - 1px)}}.mc-pagination{gap:1rem}\n"] }]
134
+ args: [{ selector: 'moz-pagination', changeDetection: ChangeDetectionStrategy.OnPush, providers: [PAGINATION_CONTROL_VALUE_ACCESSOR], template: "<nav class=\"mc-pagination\" role=\"navigation\" aria-label=\"pagination\">\n <button\n moz-button\n theme=\"neutral\"\n class=\"mc-pagination__button\"\n [disabled]=\"isFirstPage || disable\"\n [onlyIcon]=\"true\"\n [size]=\"(selectSize | async)!\"\n (click)=\"previousPage()\"\n *ngIf=\"leftIconName | async; let icon\"\n >\n <moz-icon [iconName]=\"icon\"></moz-icon>\n </button>\n <div *ngIf=\"viewSelect\">\n <select\n moz-select\n [ngModel]=\"currentPage\"\n (change)=\"onChange(currentPage); this.pageChangeEvent.emit(this.currentPage)\"\n (ngModelChange)=\"writeValue($event)\"\n [compareWith]=\"compareWithPages\"\n [size]=\"(selectSize | async)!\"\n [disabled]=\"disabledSelect || disable\"\n >\n <option *ngFor=\"let page of pages\" [ngValue]=\"page.value\">{{ page.title }}</option>\n </select>\n </div>\n\n <button\n moz-button\n theme=\"neutral\"\n class=\"mc-pagination__button\"\n [disabled]=\"isLastPage || disable\"\n (click)=\"nextPage()\"\n [size]=\"(selectSize | async)!\"\n [onlyIcon]=\"true\"\n *ngIf=\"rightIconName | async; let icon\"\n >\n <moz-icon [iconName]=\"icon\"></moz-icon>\n </button>\n</nav>\n", styles: [".mc-pagination{align-items:center;display:flex;justify-content:center;gap:1rem}.mc-pagination__select{font-size:1rem;line-height:1.125;padding:.875rem 3rem .875rem calc(.75rem - 1px)}@media screen and (min-width: 1024px){.mc-pagination__select{font-size:.875rem;line-height:1.1428571429;padding:calc(.5rem - 1px) 2.25rem calc(.5rem - 1px) calc(.5rem - 1px)}}.mc-pagination{gap:1rem}\n"] }]
134
135
  }], ctorParameters: function () { return [{ type: i1.GlobalEventsService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { numberOfPages: [{
135
136
  type: Input
137
+ }], pageChangeEvent: [{
138
+ type: Output
139
+ }], disable: [{
140
+ type: Input
136
141
  }], light: [{
137
142
  type: Input
138
143
  }], pageLabel: [{
@@ -141,7 +146,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
141
146
  type: Input
142
147
  }], pageTitleMask: [{
143
148
  type: Input
144
- }], pageChangeEvent: [{
145
- type: Output
146
149
  }] } });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQWMsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBYyxNQUFNLHVCQUF1QixDQUFDO0FBQ2hFLE9BQU8sRUFFTCxxQkFBcUIsRUFDckIsOEJBQThCLEVBQzlCLG9CQUFvQixHQUNyQixNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7QUFFdEIsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQVE7SUFDcEQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQVNGLE1BQU0sT0FBTyxtQkFBbUI7SUE0QjlCLFlBQ21CLGtCQUF1QyxFQUN2QyxFQUFxQjtRQURyQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXFCO1FBQ3ZDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBN0IvQixrQkFBYSxHQUFHLDhCQUE4QixDQUFDO1FBRS9DLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxjQUFTLEdBQUcsTUFBTSxDQUFDO1FBQ25CLGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBRW5CLGtCQUFhLEdBQUcsQ0FBQyxJQUFZLEVBQUUsYUFBcUIsRUFBRSxFQUFFLENBQy9ELEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUV6RCxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFaEQsYUFBUSxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUV6QixZQUFPLEdBQVEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRXhCLGdCQUFXLEdBQUcscUJBQXFCLENBQUM7UUFFcEMsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQVFULG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBTXRDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxDQUFDO1FBQy9DLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3ZEO1FBQ0QsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBaUI7UUFDekQsSUFDRSxJQUFJLENBQUMsZUFBZSxDQUNsQixJQUFJLENBQUMsVUFBVSxFQUNmLGFBQWEsRUFBRSxZQUFZLEVBQzNCLGFBQWEsRUFBRSxhQUFhLEVBQzVCLGFBQWEsRUFBRSxZQUFZLEVBQzNCLGFBQWEsRUFBRSxhQUFhLENBQzdCLEVBQ0Q7WUFDQSxJQUFJLENBQUMsdUNBQXVDLEVBQUUsQ0FBQztTQUNoRDtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxxQkFBcUIsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUMsYUFBYSxJQUFJLDhCQUE4QixDQUFDO0lBQzlELENBQUM7SUFFTSxVQUFVLENBQUMsS0FBVTtRQUMxQixJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsV0FBVyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYTtZQUFFLE9BQU87UUFDL0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxFQUFPO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxFQUFPO1FBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLG9CQUFvQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLG9CQUFvQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLGdCQUFnQixDQUFDLElBQVksRUFBRSxXQUFvQjtRQUN4RCxPQUFPLElBQUksS0FBSyxXQUFXLENBQUM7SUFDOUIsQ0FBQztJQUVPLGVBQWUsQ0FBQyxhQUFxQjtRQUMzQyxPQUFPLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVELEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsYUFBYSxDQUFDO1lBQ25ELEtBQUssRUFBRSxLQUFLLEdBQUcsQ0FBQztTQUNqQixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFTyxlQUFlLENBQUMsT0FBNEI7UUFDbEQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FDM0IsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQzlDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQy9DLENBQUM7UUFFRixJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQy9CLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsZ0NBQWdDLFFBQVEsRUFBRSxDQUFDLENBQzlELENBQUM7UUFFRixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQ2hDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsaUNBQWlDLFFBQVEsRUFBRSxDQUFDLENBQy9ELENBQUM7SUFDSixDQUFDO0lBRU8sY0FBYztRQUNwQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM3RixNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsSUFBSSxDQUNuQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFFLEtBQUssRUFBRSxNQUFpQixFQUFFLFVBQVUsQ0FBQyxFQUNyRCxTQUFTLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FDckQsQ0FBQztRQUNGLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU8saUNBQWlDO1FBQ3ZDLElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7SUFFTyx1Q0FBdUM7UUFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyw4QkFBOEIsRUFBRTtZQUM5RSxJQUFJLENBQUMsYUFBYSxHQUFHLDhCQUE4QixDQUFDO1NBQ3JEO0lBQ0gsQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUFnQjtRQUNyQyxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsT0FBZ0I7UUFDdkMsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVPLGVBQWUsQ0FDckIsVUFBbUIsRUFDbkIscUJBQThCLEVBQzlCLG9CQUE2QixFQUM3QixxQkFBK0IsRUFDL0Isb0JBQThCO1FBRTlCLE1BQU0sc0JBQXNCLEdBQUcscUJBQXFCLEtBQUssb0JBQW9CLENBQUM7UUFDOUUsTUFBTSxjQUFjLEdBQUcscUJBQXFCLEtBQUssb0JBQW9CLENBQUM7UUFDdEUsT0FBTyxVQUFVLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxjQUFjLENBQUMsQ0FBQztJQUNsRSxDQUFDOztpSEExS1UsbUJBQW1CO3FHQUFuQixtQkFBbUIsME9BRm5CLENBQUMsaUNBQWlDLENBQUMsK0NDakNoRCx3ckNBd0NBOzRGRExhLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDRSxnQkFBZ0IsbUJBR1QsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLGlDQUFpQyxDQUFDOzBJQUdyQyxhQUFhO3NCQUFyQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFHSSxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR2xvYmFsRXZlbnRzU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5pbXBvcnQgeyBJY29uU2l6ZSB9IGZyb20gJy4uL2ljb24vaWNvbi1zaXplJztcbmltcG9ydCB7IFNFTEVDVF9TSVpFLCBTZWxlY3RTaXplIH0gZnJvbSAnLi4vc2VsZWN0L3NlbGVjdC1zaXplJztcbmltcG9ydCB7XG4gIFBhZ2UsXG4gIFBBR0lOQVRJT05fRklSU1RfUEFHRSxcbiAgUEFHSU5BVElPTl9NSU5fTlVNQkVSX09GX1BBR0VTLFxuICBQQUdJTkFUSU9OX1BBR0VfU1RFUCxcbn0gZnJvbSAnLi9wYWdpbmF0aW9uJztcblxuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGFnaW5hdGlvbkNvbXBvbmVudCksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW96LXBhZ2luYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BhZ2luYXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1BBR0lOQVRJT05fQ09OVFJPTF9WQUxVRV9BQ0NFU1NPUl0sXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpIG51bWJlck9mUGFnZXMgPSBQQUdJTkFUSU9OX01JTl9OVU1CRVJfT0ZfUEFHRVM7XG5cbiAgQElucHV0KCkgbGlnaHQgPSBmYWxzZTtcbiAgQElucHV0KCkgcGFnZUxhYmVsID0gJ1BhZ2UnO1xuICBASW5wdXQoKSBwYWdlT2ZMYWJlbCA9ICdvZic7XG5cbiAgQElucHV0KCkgcGFnZVRpdGxlTWFzayA9IChwYWdlOiBudW1iZXIsIG51bWJlck9mUGFnZXM6IG51bWJlcikgPT5cbiAgICBgJHt0aGlzLnBhZ2VMYWJlbH0gJHtwYWdlfSAke3RoaXMucGFnZU9mTGFiZWx9ICR7bnVtYmVyT2ZQYWdlc31gO1xuXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBwdWJsaWMgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuXG4gIHB1YmxpYyBvblRvdWNoOiBhbnkgPSAoKSA9PiB7fTtcblxuICBwdWJsaWMgY3VycmVudFBhZ2UgPSBQQUdJTkFUSU9OX0ZJUlNUX1BBR0U7XG5cbiAgcHVibGljIHBhZ2VzOiBQYWdlW10gPSBbXTtcblxuICBwdWJsaWMgcmlnaHRJY29uTmFtZSE6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBwdWJsaWMgbGVmdEljb25OYW1lITogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIHB1YmxpYyBzZWxlY3RTaXplOiBPYnNlcnZhYmxlPFNlbGVjdFNpemU+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc21hbGxSZXNvbHV0aW9uID0gMTAyNDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGdsb2JhbEV2ZW50U2VydmljZTogR2xvYmFsRXZlbnRzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICBjb25zdCBpc1NtYWxsID0gdGhpcy5kaXNwbGF5SXNTbWFsbCgpLnBpcGUoc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSk7XG4gICAgdGhpcy5pbml0aWFsaXplSWNvbnMoaXNTbWFsbCk7XG4gICAgdGhpcy5zZWxlY3RTaXplID0gaXNTbWFsbC5waXBlKG1hcCgoaXNTbWFsbCkgPT4gdGhpcy5jaG9vc2VTZWxlY3RTaXplKGlzU21hbGwpKSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5yZWluaXRpYWxpemVOdW1iZXJPZlBhZ2VzQXRJbnZhbGlkVmFsdWUoKTtcbiAgICBpZiAodGhpcy52aWV3U2VsZWN0KSB7XG4gICAgICB0aGlzLnBhZ2VzID0gdGhpcy5pbml0aWFsaXplUGFnZXModGhpcy5udW1iZXJPZlBhZ2VzKTtcbiAgICB9XG4gICAgdGhpcy5yZWluaXRpYWxpemVDdXJyZW50UGFnZUF0T3ZlcmZsb3coKTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHsgbnVtYmVyT2ZQYWdlcywgcGFnZVRpdGxlTWFzayB9OiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5uZWVkUmVuZGVyUGFnZXMoXG4gICAgICAgIHRoaXMudmlld1NlbGVjdCxcbiAgICAgICAgbnVtYmVyT2ZQYWdlcz8uY3VycmVudFZhbHVlLFxuICAgICAgICBudW1iZXJPZlBhZ2VzPy5wcmV2aW91c1ZhbHVlLFxuICAgICAgICBwYWdlVGl0bGVNYXNrPy5jdXJyZW50VmFsdWUsXG4gICAgICAgIHBhZ2VUaXRsZU1hc2s/LnByZXZpb3VzVmFsdWVcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRoaXMucmVpbml0aWFsaXplTnVtYmVyT2ZQYWdlc0F0SW52YWxpZFZhbHVlKCk7XG4gICAgfVxuICAgIHRoaXMucGFnZXMgPSB0aGlzLmluaXRpYWxpemVQYWdlcyh0aGlzLm51bWJlck9mUGFnZXMpO1xuICAgIHRoaXMucmVpbml0aWFsaXplQ3VycmVudFBhZ2VBdE92ZXJmbG93KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZpZXdTZWxlY3QoKSB7XG4gICAgcmV0dXJuICF0aGlzLmxpZ2h0O1xuICB9XG5cbiAgcHVibGljIGdldCBpc0ZpcnN0UGFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZSA8PSBQQUdJTkFUSU9OX0ZJUlNUX1BBR0U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzTGFzdFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFBhZ2UgPj0gdGhpcy5udW1iZXJPZlBhZ2VzO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZFNlbGVjdCgpIHtcbiAgICByZXR1cm4gdGhpcy5udW1iZXJPZlBhZ2VzIDw9IFBBR0lOQVRJT05fTUlOX05VTUJFUl9PRl9QQUdFUztcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIXZhbHVlIHx8IHZhbHVlID09PSB0aGlzLmN1cnJlbnRQYWdlIHx8IHZhbHVlID4gdGhpcy5udW1iZXJPZlBhZ2VzKSByZXR1cm47XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHZhbHVlO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyBuZXh0UGFnZSgpIHtcbiAgICB0aGlzLndyaXRlVmFsdWUodGhpcy5jdXJyZW50UGFnZSArIFBBR0lOQVRJT05fUEFHRV9TVEVQKTtcbiAgICB0aGlzLnBhZ2VDaGFuZ2VFdmVudC5lbWl0KHRoaXMuY3VycmVudFBhZ2UgKyBQQUdJTkFUSU9OX1BBR0VfU1RFUCk7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmV2aW91c1BhZ2UoKSB7XG4gICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuY3VycmVudFBhZ2UgLSBQQUdJTkFUSU9OX1BBR0VfU1RFUCk7XG4gICAgdGhpcy5wYWdlQ2hhbmdlRXZlbnQuZW1pdCh0aGlzLmN1cnJlbnRQYWdlIC0gUEFHSU5BVElPTl9QQUdFX1NURVApO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgY29tcGFyZVdpdGhQYWdlcyhwYWdlOiBudW1iZXIsIGN1cnJlbnRQYWdlPzogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHBhZ2UgPT09IGN1cnJlbnRQYWdlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplUGFnZXMobnVtYmVyT2ZQYWdlczogbnVtYmVyKTogUGFnZVtdIHtcbiAgICByZXR1cm4gbmV3IEFycmF5KG51bWJlck9mUGFnZXMpLmZpbGwobnVsbCkubWFwKChfLCBpbmRleCkgPT4gKHtcbiAgICAgIHRpdGxlOiB0aGlzLnBhZ2VUaXRsZU1hc2soaW5kZXggKyAxLCBudW1iZXJPZlBhZ2VzKSxcbiAgICAgIHZhbHVlOiBpbmRleCArIDEsXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplSWNvbnMoaXNTbWFsbDogT2JzZXJ2YWJsZTxib29sZWFuPikge1xuICAgIGNvbnN0IGljb25TaXplID0gaXNTbWFsbC5waXBlKFxuICAgICAgbWFwKChpc1NtYWxsKSA9PiB0aGlzLmNob29zZUljb25TaXplKGlzU21hbGwpKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSlcbiAgICApO1xuXG4gICAgdGhpcy5sZWZ0SWNvbk5hbWUgPSBpY29uU2l6ZS5waXBlKFxuICAgICAgbWFwKChpY29uU2l6ZSkgPT4gYE5hdmlnYXRpb25fQXJyb3dfQXJyb3ctLUxlZnRfJHtpY29uU2l6ZX1gKVxuICAgICk7XG5cbiAgICB0aGlzLnJpZ2h0SWNvbk5hbWUgPSBpY29uU2l6ZS5waXBlKFxuICAgICAgbWFwKChpY29uU2l6ZSkgPT4gYE5hdmlnYXRpb25fQXJyb3dfQXJyb3ctLVJpZ2h0XyR7aWNvblNpemV9YClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5SXNTbWFsbCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXNpemVFdmVudCA9IHRoaXMuZ2xvYmFsRXZlbnRTZXJ2aWNlLmdldFdpbmRvd0V2ZW50KCdyZXNpemUnKS5waXBlKGRlYm91bmNlVGltZSgxMDApKTtcbiAgICBjb25zdCBkaXNwbGF5V2lkdGggPSByZXNpemVFdmVudC5waXBlKFxuICAgICAgbWFwKChldmVudCkgPT4gKGV2ZW50Py50YXJnZXQgYXMgV2luZG93KT8uaW5uZXJXaWR0aCksXG4gICAgICBzdGFydFdpdGgodGhpcy5nbG9iYWxFdmVudFNlcnZpY2Uud2luZG93LmlubmVyV2lkdGgpXG4gICAgKTtcbiAgICByZXR1cm4gZGlzcGxheVdpZHRoLnBpcGUobWFwKCh3aWR0aCkgPT4gd2lkdGggPCB0aGlzLnNtYWxsUmVzb2x1dGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWluaXRpYWxpemVDdXJyZW50UGFnZUF0T3ZlcmZsb3coKSB7XG4gICAgaWYgKHRoaXMubnVtYmVyT2ZQYWdlcyA8IHRoaXMuY3VycmVudFBhZ2UpIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZShQQUdJTkFUSU9OX0ZJUlNUX1BBR0UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVpbml0aWFsaXplTnVtYmVyT2ZQYWdlc0F0SW52YWxpZFZhbHVlKCkge1xuICAgIGlmICghdGhpcy5udW1iZXJPZlBhZ2VzIHx8IHRoaXMubnVtYmVyT2ZQYWdlcyA8IFBBR0lOQVRJT05fTUlOX05VTUJFUl9PRl9QQUdFUykge1xuICAgICAgdGhpcy5udW1iZXJPZlBhZ2VzID0gUEFHSU5BVElPTl9NSU5fTlVNQkVSX09GX1BBR0VTO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hvb3NlSWNvblNpemUoaXNTbWFsbDogYm9vbGVhbik6IEljb25TaXplIHtcbiAgICByZXR1cm4gaXNTbWFsbCA/IEljb25TaXplLkwgOiBJY29uU2l6ZS5NO1xuICB9XG5cbiAgcHJpdmF0ZSBjaG9vc2VTZWxlY3RTaXplKGlzU21hbGw6IGJvb2xlYW4pOiBTZWxlY3RTaXplIHtcbiAgICByZXR1cm4gaXNTbWFsbCA/IFNFTEVDVF9TSVpFLk0gOiBTRUxFQ1RfU0laRS5TO1xuICB9XG5cbiAgcHJpdmF0ZSBuZWVkUmVuZGVyUGFnZXMoXG4gICAgdmlld1NlbGVjdDogYm9vbGVhbixcbiAgICBudW1iZXJPZlBhZ2VzUHJldmlvdXM/OiBudW1iZXIsXG4gICAgbnVtYmVyT2ZQYWdlc0N1cnJlbnQ/OiBudW1iZXIsXG4gICAgcGFnZVRpdGxlTWFza1ByZXZpb3VzPzogdW5rbm93bixcbiAgICBwYWdlVGl0bGVNYXNrQ3VycmVudD86IHVua25vd25cbiAgKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbnVtYmVyT2ZQYWdlSGFzQ2hhbmdlcyA9IG51bWJlck9mUGFnZXNQcmV2aW91cyAhPT0gbnVtYmVyT2ZQYWdlc0N1cnJlbnQ7XG4gICAgY29uc3QgbWFza0hhc0NoYW5nZXMgPSBwYWdlVGl0bGVNYXNrUHJldmlvdXMgIT09IHBhZ2VUaXRsZU1hc2tDdXJyZW50O1xuICAgIHJldHVybiB2aWV3U2VsZWN0ICYmIChudW1iZXJPZlBhZ2VIYXNDaGFuZ2VzIHx8IG1hc2tIYXNDaGFuZ2VzKTtcbiAgfVxufVxuIiwiPG5hdiBjbGFzcz1cIm1jLXBhZ2luYXRpb25cIiByb2xlPVwibmF2aWdhdGlvblwiIGFyaWEtbGFiZWw9XCJwYWdpbmF0aW9uXCI+XG4gIDxidXR0b25cbiAgICBtb3otYnV0dG9uXG4gICAgdGhlbWU9XCJuZXV0cmFsXCJcbiAgICBjbGFzcz1cIm1jLXBhZ2luYXRpb25fX2J1dHRvblwiXG4gICAgW2Rpc2FibGVkXT1cImlzRmlyc3RQYWdlXCJcbiAgICBbb25seUljb25dPVwidHJ1ZVwiXG4gICAgW3NpemVdPVwiKHNlbGVjdFNpemUgfCBhc3luYykhXCJcbiAgICAoY2xpY2spPVwicHJldmlvdXNQYWdlKClcIlxuICAgICpuZ0lmPVwibGVmdEljb25OYW1lIHwgYXN5bmM7IGxldCBpY29uXCJcbiAgPlxuICAgIDxtb3otaWNvbiBbaWNvbk5hbWVdPVwiaWNvblwiPjwvbW96LWljb24+XG4gIDwvYnV0dG9uPlxuICA8ZGl2ICpuZ0lmPVwidmlld1NlbGVjdFwiPlxuICAgIDxzZWxlY3RcbiAgICAgIG1vei1zZWxlY3RcbiAgICAgIFtuZ01vZGVsXT1cImN1cnJlbnRQYWdlXCJcbiAgICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoY3VycmVudFBhZ2UpOyB0aGlzLnBhZ2VDaGFuZ2VFdmVudC5lbWl0KHRoaXMuY3VycmVudFBhZ2UpXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIndyaXRlVmFsdWUoJGV2ZW50KVwiXG4gICAgICBbY29tcGFyZVdpdGhdPVwiY29tcGFyZVdpdGhQYWdlc1wiXG4gICAgICBbc2l6ZV09XCIoc2VsZWN0U2l6ZSB8IGFzeW5jKSFcIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkU2VsZWN0XCJcbiAgICA+XG4gICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBwYWdlIG9mIHBhZ2VzXCIgW25nVmFsdWVdPVwicGFnZS52YWx1ZVwiPnt7IHBhZ2UudGl0bGUgfX08L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgPC9kaXY+XG5cbiAgPGJ1dHRvblxuICAgIG1vei1idXR0b25cbiAgICB0aGVtZT1cIm5ldXRyYWxcIlxuICAgIGNsYXNzPVwibWMtcGFnaW5hdGlvbl9fYnV0dG9uXCJcbiAgICBbZGlzYWJsZWRdPVwiaXNMYXN0UGFnZVwiXG4gICAgKGNsaWNrKT1cIm5leHRQYWdlKClcIlxuICAgIFtzaXplXT1cIihzZWxlY3RTaXplIHwgYXN5bmMpIVwiXG4gICAgW29ubHlJY29uXT1cInRydWVcIlxuICAgICpuZ0lmPVwicmlnaHRJY29uTmFtZSB8IGFzeW5jOyBsZXQgaWNvblwiXG4gID5cbiAgICA8bW96LWljb24gW2ljb25OYW1lXT1cImljb25cIj48L21vei1pY29uPlxuICA8L2J1dHRvbj5cbjwvbmF2PlxuIl19
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9raXQvY29tcG9uZW50cy9wYWdpbmF0aW9uL3BhZ2luYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvcGFnaW5hdGlvbi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQWMsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBYyxNQUFNLHVCQUF1QixDQUFDO0FBQ2hFLE9BQU8sRUFFTCxxQkFBcUIsRUFDckIsOEJBQThCLEVBQzlCLG9CQUFvQixHQUNyQixNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7QUFFdEIsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQVE7SUFDcEQsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xELEtBQUssRUFBRSxJQUFJO0NBQ1osQ0FBQztBQVNGLE1BQU0sT0FBTyxtQkFBbUI7SUFxQjlCLFlBQ21CLGtCQUF1QyxFQUN2QyxFQUFxQjtRQURyQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXFCO1FBQ3ZDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBdEIvQixrQkFBYSxHQUFH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Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQXVDRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBHbG9iYWxFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IEljb25TaXplIH0gZnJvbSAnLi4vaWNvbi9pY29uLXNpemUnO1xuaW1wb3J0IHsgU0VMRUNUX1NJWkUsIFNlbGVjdFNpemUgfSBmcm9tICcuLi9zZWxlY3Qvc2VsZWN0LXNpemUnO1xuaW1wb3J0IHtcbiAgUGFnZSxcbiAgUEFHSU5BVElPTl9GSVJTVF9QQUdFLFxuICBQQUdJTkFUSU9OX01JTl9OVU1CRVJfT0ZfUEFHRVMsXG4gIFBBR0lOQVRJT05fUEFHRV9TVEVQLFxufSBmcm9tICcuL3BhZ2luYXRpb24nO1xuXG5leHBvcnQgY29uc3QgUEFHSU5BVElPTl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SOiBhbnkgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQYWdpbmF0aW9uQ29tcG9uZW50KSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb3otcGFnaW5hdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdpbmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGFnaW5hdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbUEFHSU5BVElPTl9DT05UUk9MX1ZBTFVFX0FDQ0VTU09SXSxcbn0pXG5leHBvcnQgY2xhc3MgUGFnaW5hdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBudW1iZXJPZlBhZ2VzID0gUEFHSU5BVElPTl9NSU5fTlVNQkVSX09GX1BBR0VTO1xuICBAT3V0cHV0KCkgcGFnZUNoYW5nZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgQElucHV0KCkgZGlzYWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBsaWdodCA9IGZhbHNlO1xuICBASW5wdXQoKSBwYWdlTGFiZWwgPSAnUGFnZSc7XG4gIEBJbnB1dCgpIHBhZ2VPZkxhYmVsID0gJ29mJztcblxuICBwdWJsaWMgY3VycmVudFBhZ2UgPSBQQUdJTkFUSU9OX0ZJUlNUX1BBR0U7XG5cbiAgcHVibGljIHBhZ2VzOiBQYWdlW10gPSBbXTtcblxuICBwdWJsaWMgcmlnaHRJY29uTmFtZSE6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICBwdWJsaWMgbGVmdEljb25OYW1lITogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIHB1YmxpYyBzZWxlY3RTaXplOiBPYnNlcnZhYmxlPFNlbGVjdFNpemU+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc21hbGxSZXNvbHV0aW9uID0gMTAyNDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGdsb2JhbEV2ZW50U2VydmljZTogR2xvYmFsRXZlbnRzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkOiBDaGFuZ2VEZXRlY3RvclJlZlxuICApIHtcbiAgICBjb25zdCBpc1NtYWxsID0gdGhpcy5kaXNwbGF5SXNTbWFsbCgpLnBpcGUoc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KSk7XG4gICAgdGhpcy5pbml0aWFsaXplSWNvbnMoaXNTbWFsbCk7XG4gICAgdGhpcy5zZWxlY3RTaXplID0gaXNTbWFsbC5waXBlKG1hcCgoaXNTbWFsbCkgPT4gdGhpcy5jaG9vc2VTZWxlY3RTaXplKGlzU21hbGwpKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZpZXdTZWxlY3QoKSB7XG4gICAgcmV0dXJuICF0aGlzLmxpZ2h0O1xuICB9XG5cbiAgcHVibGljIGdldCBpc0ZpcnN0UGFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZSA8PSBQQUdJTkFUSU9OX0ZJUlNUX1BBR0U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzTGFzdFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFBhZ2UgPj0gdGhpcy5udW1iZXJPZlBhZ2VzO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNhYmxlZFNlbGVjdCgpIHtcbiAgICByZXR1cm4gdGhpcy5udW1iZXJPZlBhZ2VzIDw9IFBBR0lOQVRJT05fTUlOX05VTUJFUl9PRl9QQUdFUztcbiAgfVxuXG4gIEBJbnB1dCgpIHBhZ2VUaXRsZU1hc2sgPSAocGFnZTogbnVtYmVyLCBudW1iZXJPZlBhZ2VzOiBudW1iZXIpID0+XG4gICAgYCR7dGhpcy5wYWdlTGFiZWx9ICR7cGFnZX0gJHt0aGlzLnBhZ2VPZkxhYmVsfSAke251bWJlck9mUGFnZXN9YDtcblxuICBwdWJsaWMgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuXG4gIHB1YmxpYyBvblRvdWNoOiBhbnkgPSAoKSA9PiB7fTtcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5yZWluaXRpYWxpemVOdW1iZXJPZlBhZ2VzQXRJbnZhbGlkVmFsdWUoKTtcbiAgICBpZiAodGhpcy52aWV3U2VsZWN0KSB7XG4gICAgICB0aGlzLnBhZ2VzID0gdGhpcy5pbml0aWFsaXplUGFnZXModGhpcy5udW1iZXJPZlBhZ2VzKTtcbiAgICB9XG4gICAgdGhpcy5yZWluaXRpYWxpemVDdXJyZW50UGFnZUF0T3ZlcmZsb3coKTtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHsgbnVtYmVyT2ZQYWdlcywgcGFnZVRpdGxlTWFzayB9OiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5uZWVkUmVuZGVyUGFnZXMoXG4gICAgICAgIHRoaXMudmlld1NlbGVjdCxcbiAgICAgICAgbnVtYmVyT2ZQYWdlcz8uY3VycmVudFZhbHVlLFxuICAgICAgICBudW1iZXJPZlBhZ2VzPy5wcmV2aW91c1ZhbHVlLFxuICAgICAgICBwYWdlVGl0bGVNYXNrPy5jdXJyZW50VmFsdWUsXG4gICAgICAgIHBhZ2VUaXRsZU1hc2s/LnByZXZpb3VzVmFsdWVcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHRoaXMucmVpbml0aWFsaXplTnVtYmVyT2ZQYWdlc0F0SW52YWxpZFZhbHVlKCk7XG4gICAgfVxuICAgIHRoaXMucGFnZXMgPSB0aGlzLmluaXRpYWxpemVQYWdlcyh0aGlzLm51bWJlck9mUGFnZXMpO1xuICAgIHRoaXMucmVpbml0aWFsaXplQ3VycmVudFBhZ2VBdE92ZXJmbG93KCk7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKCF2YWx1ZSB8fCB2YWx1ZSA9PT0gdGhpcy5jdXJyZW50UGFnZSB8fCB2YWx1ZSA+IHRoaXMubnVtYmVyT2ZQYWdlcykgcmV0dXJuO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSB2YWx1ZTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XG4gICAgdGhpcy5vblRvdWNoID0gZm47XG4gIH1cblxuICBwdWJsaWMgbmV4dFBhZ2UoKSB7XG4gICAgdGhpcy53cml0ZVZhbHVlKHRoaXMuY3VycmVudFBhZ2UgKyBQQUdJTkFUSU9OX1BBR0VfU1RFUCk7XG4gICAgdGhpcy5wYWdlQ2hhbmdlRXZlbnQuZW1pdCh0aGlzLmN1cnJlbnRQYWdlKTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHByZXZpb3VzUGFnZSgpIHtcbiAgICB0aGlzLndyaXRlVmFsdWUodGhpcy5jdXJyZW50UGFnZSAtIFBBR0lOQVRJT05fUEFHRV9TVEVQKTtcbiAgICB0aGlzLnBhZ2VDaGFuZ2VFdmVudC5lbWl0KHRoaXMuY3VycmVudFBhZ2UpO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgY29tcGFyZVdpdGhQYWdlcyhwYWdlOiBudW1iZXIsIGN1cnJlbnRQYWdlPzogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHBhZ2UgPT09IGN1cnJlbnRQYWdlO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplUGFnZXMobnVtYmVyT2ZQYWdlczogbnVtYmVyKTogUGFnZVtdIHtcbiAgICByZXR1cm4gbmV3IEFycmF5KG51bWJlck9mUGFnZXMpLmZpbGwobnVsbCkubWFwKChfLCBpbmRleCkgPT4gKHtcbiAgICAgIHRpdGxlOiB0aGlzLnBhZ2VUaXRsZU1hc2soaW5kZXggKyAxLCBudW1iZXJPZlBhZ2VzKSxcbiAgICAgIHZhbHVlOiBpbmRleCArIDEsXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplSWNvbnMoaXNTbWFsbDogT2JzZXJ2YWJsZTxib29sZWFuPikge1xuICAgIGNvbnN0IGljb25TaXplID0gaXNTbWFsbC5waXBlKFxuICAgICAgbWFwKChpc1NtYWxsKSA9PiB0aGlzLmNob29zZUljb25TaXplKGlzU21hbGwpKSxcbiAgICAgIHNoYXJlUmVwbGF5KHsgcmVmQ291bnQ6IHRydWUsIGJ1ZmZlclNpemU6IDEgfSlcbiAgICApO1xuXG4gICAgdGhpcy5sZWZ0SWNvbk5hbWUgPSBpY29uU2l6ZS5waXBlKFxuICAgICAgbWFwKChpY29uU2l6ZSkgPT4gYE5hdmlnYXRpb25fQXJyb3dfQXJyb3ctLUxlZnRfJHtpY29uU2l6ZX1gKVxuICAgICk7XG5cbiAgICB0aGlzLnJpZ2h0SWNvbk5hbWUgPSBpY29uU2l6ZS5waXBlKFxuICAgICAgbWFwKChpY29uU2l6ZSkgPT4gYE5hdmlnYXRpb25fQXJyb3dfQXJyb3ctLVJpZ2h0XyR7aWNvblNpemV9YClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNwbGF5SXNTbWFsbCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBjb25zdCByZXNpemVFdmVudCA9IHRoaXMuZ2xvYmFsRXZlbnRTZXJ2aWNlLmdldFdpbmRvd0V2ZW50KCdyZXNpemUnKS5waXBlKGRlYm91bmNlVGltZSgxMDApKTtcbiAgICBjb25zdCBkaXNwbGF5V2lkdGggPSByZXNpemVFdmVudC5waXBlKFxuICAgICAgbWFwKChldmVudCkgPT4gKGV2ZW50Py50YXJnZXQgYXMgV2luZG93KT8uaW5uZXJXaWR0aCksXG4gICAgICBzdGFydFdpdGgodGhpcy5nbG9iYWxFdmVudFNlcnZpY2Uud2luZG93LmlubmVyV2lkdGgpXG4gICAgKTtcbiAgICByZXR1cm4gZGlzcGxheVdpZHRoLnBpcGUobWFwKCh3aWR0aCkgPT4gd2lkdGggPCB0aGlzLnNtYWxsUmVzb2x1dGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWluaXRpYWxpemVDdXJyZW50UGFnZUF0T3ZlcmZsb3coKSB7XG4gICAgaWYgKHRoaXMubnVtYmVyT2ZQYWdlcyA8IHRoaXMuY3VycmVudFBhZ2UpIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZShQQUdJTkFUSU9OX0ZJUlNUX1BBR0UpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVpbml0aWFsaXplTnVtYmVyT2ZQYWdlc0F0SW52YWxpZFZhbHVlKCkge1xuICAgIGlmICghdGhpcy5udW1iZXJPZlBhZ2VzIHx8IHRoaXMubnVtYmVyT2ZQYWdlcyA8IFBBR0lOQVRJT05fTUlOX05VTUJFUl9PRl9QQUdFUykge1xuICAgICAgdGhpcy5udW1iZXJPZlBhZ2VzID0gUEFHSU5BVElPTl9NSU5fTlVNQkVSX09GX1BBR0VTO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hvb3NlSWNvblNpemUoaXNTbWFsbDogYm9vbGVhbik6IEljb25TaXplIHtcbiAgICByZXR1cm4gaXNTbWFsbCA/IEljb25TaXplLkwgOiBJY29uU2l6ZS5NO1xuICB9XG5cbiAgcHJpdmF0ZSBjaG9vc2VTZWxlY3RTaXplKGlzU21hbGw6IGJvb2xlYW4pOiBTZWxlY3RTaXplIHtcbiAgICByZXR1cm4gaXNTbWFsbCA/IFNFTEVDVF9TSVpFLk0gOiBTRUxFQ1RfU0laRS5TO1xuICB9XG5cbiAgcHJpdmF0ZSBuZWVkUmVuZGVyUGFnZXMoXG4gICAgdmlld1NlbGVjdDogYm9vbGVhbixcbiAgICBudW1iZXJPZlBhZ2VzUHJldmlvdXM/OiBudW1iZXIsXG4gICAgbnVtYmVyT2ZQYWdlc0N1cnJlbnQ/OiBudW1iZXIsXG4gICAgcGFnZVRpdGxlTWFza1ByZXZpb3VzPzogdW5rbm93bixcbiAgICBwYWdlVGl0bGVNYXNrQ3VycmVudD86IHVua25vd25cbiAgKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbnVtYmVyT2ZQYWdlSGFzQ2hhbmdlcyA9IG51bWJlck9mUGFnZXNQcmV2aW91cyAhPT0gbnVtYmVyT2ZQYWdlc0N1cnJlbnQ7XG4gICAgY29uc3QgbWFza0hhc0NoYW5nZXMgPSBwYWdlVGl0bGVNYXNrUHJldmlvdXMgIT09IHBhZ2VUaXRsZU1hc2tDdXJyZW50O1xuICAgIHJldHVybiB2aWV3U2VsZWN0ICYmIChudW1iZXJPZlBhZ2VIYXNDaGFuZ2VzIHx8IG1hc2tIYXNDaGFuZ2VzKTtcbiAgfVxufVxuIiwiPG5hdiBjbGFzcz1cIm1jLXBhZ2luYXRpb25cIiByb2xlPVwibmF2aWdhdGlvblwiIGFyaWEtbGFiZWw9XCJwYWdpbmF0aW9uXCI+XG4gIDxidXR0b25cbiAgICBtb3otYnV0dG9uXG4gICAgdGhlbWU9XCJuZXV0cmFsXCJcbiAgICBjbGFzcz1cIm1jLXBhZ2luYXRpb25fX2J1dHRvblwiXG4gICAgW2Rpc2FibGVkXT1cImlzRmlyc3RQYWdlIHx8IGRpc2FibGVcIlxuICAgIFtvbmx5SWNvbl09XCJ0cnVlXCJcbiAgICBbc2l6ZV09XCIoc2VsZWN0U2l6ZSB8IGFzeW5jKSFcIlxuICAgIChjbGljayk9XCJwcmV2aW91c1BhZ2UoKVwiXG4gICAgKm5nSWY9XCJsZWZ0SWNvbk5hbWUgfCBhc3luYzsgbGV0IGljb25cIlxuICA+XG4gICAgPG1vei1pY29uIFtpY29uTmFtZV09XCJpY29uXCI+PC9tb3otaWNvbj5cbiAgPC9idXR0b24+XG4gIDxkaXYgKm5nSWY9XCJ2aWV3U2VsZWN0XCI+XG4gICAgPHNlbGVjdFxuICAgICAgbW96LXNlbGVjdFxuICAgICAgW25nTW9kZWxdPVwiY3VycmVudFBhZ2VcIlxuICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZShjdXJyZW50UGFnZSk7IHRoaXMucGFnZUNoYW5nZUV2ZW50LmVtaXQodGhpcy5jdXJyZW50UGFnZSlcIlxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwid3JpdGVWYWx1ZSgkZXZlbnQpXCJcbiAgICAgIFtjb21wYXJlV2l0aF09XCJjb21wYXJlV2l0aFBhZ2VzXCJcbiAgICAgIFtzaXplXT1cIihzZWxlY3RTaXplIHwgYXN5bmMpIVwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRTZWxlY3QgfHwgZGlzYWJsZVwiXG4gICAgPlxuICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgcGFnZSBvZiBwYWdlc1wiIFtuZ1ZhbHVlXT1cInBhZ2UudmFsdWVcIj57eyBwYWdlLnRpdGxlIH19PC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gIDwvZGl2PlxuXG4gIDxidXR0b25cbiAgICBtb3otYnV0dG9uXG4gICAgdGhlbWU9XCJuZXV0cmFsXCJcbiAgICBjbGFzcz1cIm1jLXBhZ2luYXRpb25fX2J1dHRvblwiXG4gICAgW2Rpc2FibGVkXT1cImlzTGFzdFBhZ2UgfHwgZGlzYWJsZVwiXG4gICAgKGNsaWNrKT1cIm5leHRQYWdlKClcIlxuICAgIFtzaXplXT1cIihzZWxlY3RTaXplIHwgYXN5bmMpIVwiXG4gICAgW29ubHlJY29uXT1cInRydWVcIlxuICAgICpuZ0lmPVwicmlnaHRJY29uTmFtZSB8IGFzeW5jOyBsZXQgaWNvblwiXG4gID5cbiAgICA8bW96LWljb24gW2ljb25OYW1lXT1cImljb25cIj48L21vei1pY29uPlxuICA8L2J1dHRvbj5cbjwvbmF2PlxuIl19