@pega/angular-sdk-components 0.23.7 → 0.24.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/esm2022/lib/_bridge/angular-pconnect.mjs +18 -6
  2. package/esm2022/lib/_bridge/component-mapper/component-mapper.component.mjs +4 -4
  3. package/esm2022/lib/_bridge/helpers/sdk-pega-component-map.mjs +3 -1
  4. package/esm2022/lib/_bridge/helpers/sdk_component_map.mjs +1 -1
  5. package/esm2022/lib/_components/designSystemExtension/alert/alert.component.mjs +4 -4
  6. package/esm2022/lib/_components/designSystemExtension/alert-banner/alert-banner.component.mjs +4 -4
  7. package/esm2022/lib/_components/designSystemExtension/banner/banner.component.mjs +4 -4
  8. package/esm2022/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.mjs +5 -5
  9. package/esm2022/lib/_components/designSystemExtension/field-group/field-group.component.mjs +3 -3
  10. package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +9 -6
  11. package/esm2022/lib/_components/designSystemExtension/material-details/material-details.component.mjs +5 -5
  12. package/esm2022/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.mjs +5 -5
  13. package/esm2022/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.mjs +5 -5
  14. package/esm2022/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.mjs +4 -4
  15. package/esm2022/lib/_components/designSystemExtension/material-utility/material-utility.component.mjs +5 -5
  16. package/esm2022/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.mjs +5 -5
  17. package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +12 -8
  18. package/esm2022/lib/_components/designSystemExtension/pulse/pulse.component.mjs +4 -4
  19. package/esm2022/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.mjs +4 -4
  20. package/esm2022/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.mjs +3 -3
  21. package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +5 -5
  22. package/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +5 -5
  23. package/esm2022/lib/_components/field/check-box/check-box.component.mjs +110 -45
  24. package/esm2022/lib/_components/field/currency/currency.component.mjs +32 -17
  25. package/esm2022/lib/_components/field/date/date.component.mjs +6 -6
  26. package/esm2022/lib/_components/field/date-time/date-time.component.mjs +14 -43
  27. package/esm2022/lib/_components/field/decimal/decimal.component.mjs +37 -10
  28. package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +5 -5
  29. package/esm2022/lib/_components/field/email/email.component.mjs +5 -5
  30. package/esm2022/lib/_components/field/group/group.component.mjs +5 -5
  31. package/esm2022/lib/_components/field/integer/integer.component.mjs +5 -5
  32. package/esm2022/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.mjs +3 -3
  33. package/esm2022/lib/_components/field/multiselect/multiselect.component.mjs +311 -0
  34. package/esm2022/lib/_components/field/multiselect/utils.mjs +187 -0
  35. package/esm2022/lib/_components/field/percentage/percentage.component.mjs +25 -8
  36. package/esm2022/lib/_components/field/phone/phone.component.mjs +5 -5
  37. package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +5 -5
  38. package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +5 -5
  39. package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +5 -5
  40. package/esm2022/lib/_components/field/semantic-link/semantic-link.component.mjs +5 -5
  41. package/esm2022/lib/_components/field/text/text.component.mjs +5 -5
  42. package/esm2022/lib/_components/field/text-area/text-area.component.mjs +5 -5
  43. package/esm2022/lib/_components/field/text-content/text-content.component.mjs +5 -5
  44. package/esm2022/lib/_components/field/text-input/text-input.component.mjs +5 -5
  45. package/esm2022/lib/_components/field/time/time.component.mjs +5 -5
  46. package/esm2022/lib/_components/field/url/url.component.mjs +5 -5
  47. package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +38 -26
  48. package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +19 -12
  49. package/esm2022/lib/_components/infra/Containers/flow-container/helpers.mjs +1 -1
  50. package/esm2022/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.mjs +3 -3
  51. package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +5 -5
  52. package/esm2022/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.mjs +3 -3
  53. package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +5 -5
  54. package/esm2022/lib/_components/infra/action-buttons/action-buttons.component.mjs +3 -3
  55. package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +27 -6
  56. package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +4 -4
  57. package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +5 -5
  58. package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +5 -5
  59. package/esm2022/lib/_components/infra/error-boundary/error-boundary.component.mjs +3 -3
  60. package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +6 -6
  61. package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +12 -7
  62. package/esm2022/lib/_components/infra/reference/reference.component.mjs +5 -5
  63. package/esm2022/lib/_components/infra/region/region.component.mjs +4 -4
  64. package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +5 -5
  65. package/esm2022/lib/_components/infra/stages/stages.component.mjs +5 -5
  66. package/esm2022/lib/_components/infra/view/view.component.mjs +5 -5
  67. package/esm2022/lib/_components/template/app-shell/app-shell.component.mjs +5 -5
  68. package/esm2022/lib/_components/template/banner-page/banner-page.component.mjs +5 -5
  69. package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +38 -9
  70. package/esm2022/lib/_components/template/case-view/case-view.component.mjs +6 -6
  71. package/esm2022/lib/_components/template/confirmation/confirmation.component.mjs +5 -5
  72. package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +5 -5
  73. package/esm2022/lib/_components/template/default-form/default-form.component.mjs +5 -5
  74. package/esm2022/lib/_components/template/details/details.component.mjs +5 -5
  75. package/esm2022/lib/_components/template/details-narrow-wide/details-narrow-wide.component.mjs +5 -5
  76. package/esm2022/lib/_components/template/details-one-column/details-one-column.component.mjs +5 -5
  77. package/esm2022/lib/_components/template/details-sub-tabs/details-sub-tabs.component.mjs +5 -5
  78. package/esm2022/lib/_components/template/details-three-column/details-three-column.component.mjs +5 -5
  79. package/esm2022/lib/_components/template/details-two-column/details-two-column.component.mjs +5 -5
  80. package/esm2022/lib/_components/template/details-wide-narrow/details-wide-narrow.component.mjs +5 -5
  81. package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +5 -5
  82. package/esm2022/lib/_components/template/field-group-list/field-group-list.component.mjs +4 -4
  83. package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +5 -5
  84. package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +3 -3
  85. package/esm2022/lib/_components/template/inline-dashboard/inline-dashboard.component.mjs +4 -4
  86. package/esm2022/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.mjs +5 -5
  87. package/esm2022/lib/_components/template/list-page/list-page.component.mjs +4 -4
  88. package/esm2022/lib/_components/template/list-view/DefaultViewMeta.mjs +1 -1
  89. package/esm2022/lib/_components/template/list-view/list-view.component.mjs +6 -6
  90. package/esm2022/lib/_components/template/list-view/listViewHelpers.mjs +1 -1
  91. package/esm2022/lib/_components/template/list-view/utils.mjs +1 -1
  92. package/esm2022/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.mjs +5 -5
  93. package/esm2022/lib/_components/template/narrow-wide-form/narrow-wide-form.component.mjs +4 -4
  94. package/esm2022/lib/_components/template/one-column/one-column.component.mjs +4 -4
  95. package/esm2022/lib/_components/template/one-column-page/one-column-page.component.mjs +4 -4
  96. package/esm2022/lib/_components/template/one-column-tab/one-column-tab.component.mjs +4 -4
  97. package/esm2022/lib/_components/template/page/page.component.mjs +5 -5
  98. package/esm2022/lib/_components/template/promoted-filters/promoted-filters.component.mjs +5 -5
  99. package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +5 -5
  100. package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +5 -5
  101. package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +1 -1
  102. package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +6 -6
  103. package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +5 -5
  104. package/esm2022/lib/_components/template/single-reference-readonly/single-reference-readonly.component.mjs +4 -4
  105. package/esm2022/lib/_components/template/sub-tabs/sub-tabs.component.mjs +5 -5
  106. package/esm2022/lib/_components/template/three-column/three-column.component.mjs +4 -4
  107. package/esm2022/lib/_components/template/three-column-page/three-column-page.component.mjs +4 -4
  108. package/esm2022/lib/_components/template/two-column/two-column.component.mjs +4 -4
  109. package/esm2022/lib/_components/template/two-column-page/two-column-page.component.mjs +5 -5
  110. package/esm2022/lib/_components/template/two-column-tab/two-column-tab.component.mjs +4 -4
  111. package/esm2022/lib/_components/template/utils.mjs +1 -1
  112. package/esm2022/lib/_components/template/wide-narrow-form/wide-narrow-form.component.mjs +4 -4
  113. package/esm2022/lib/_components/template/wide-narrow-page/wide-narrow-page.component.mjs +5 -5
  114. package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +8 -6
  115. package/esm2022/lib/_components/widget/app-announcement/app-announcement.component.mjs +4 -4
  116. package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +10 -6
  117. package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +6 -6
  118. package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +5 -5
  119. package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +18 -18
  120. package/esm2022/lib/_components/widget/list-utility/list-utility.component.mjs +6 -6
  121. package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +5 -5
  122. package/esm2022/lib/_components/widget/todo/todo.component.mjs +6 -6
  123. package/esm2022/lib/_components/widget/utility/utility.component.mjs +5 -5
  124. package/esm2022/lib/_directives/thousand-seperator.directive.mjs +6 -9
  125. package/esm2022/lib/_helpers/case-utils.mjs +1 -1
  126. package/esm2022/lib/_helpers/currency-utils.mjs +1 -1
  127. package/esm2022/lib/_helpers/event-util.mjs +1 -1
  128. package/esm2022/lib/_helpers/field-group-utils.mjs +1 -1
  129. package/esm2022/lib/_helpers/filter-utils.mjs +1 -1
  130. package/esm2022/lib/_helpers/formatters/boolean.mjs +1 -1
  131. package/esm2022/lib/_helpers/formatters/currency.mjs +1 -1
  132. package/esm2022/lib/_helpers/formatters/date.mjs +1 -1
  133. package/esm2022/lib/_helpers/formatters/format-utils.mjs +1 -1
  134. package/esm2022/lib/_helpers/formatters/index.mjs +1 -1
  135. package/esm2022/lib/_helpers/instructions-utils.mjs +36 -0
  136. package/esm2022/lib/_helpers/tab-utils.mjs +1 -1
  137. package/esm2022/lib/_helpers/template-utils.mjs +4 -4
  138. package/esm2022/lib/_helpers/utils.mjs +6 -6
  139. package/esm2022/lib/_messages/error-messages.service.mjs +3 -3
  140. package/esm2022/lib/_messages/get-login-status.service.mjs +3 -3
  141. package/esm2022/lib/_messages/oauth-response.service.mjs +3 -3
  142. package/esm2022/lib/_messages/progress-spinner.service.mjs +3 -3
  143. package/esm2022/lib/_messages/reset-pconnect.service.mjs +3 -3
  144. package/esm2022/lib/_messages/update-worklist.service.mjs +3 -3
  145. package/esm2022/lib/_services/case.service.mjs +4 -4
  146. package/esm2022/lib/_services/datapage.service.mjs +5 -5
  147. package/esm2022/lib/_services/server-config.service.mjs +3 -3
  148. package/esm2022/public-api.mjs +2 -1
  149. package/fesm2022/pega-angular-sdk-components.mjs +1342 -651
  150. package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
  151. package/lib/_bridge/angular-pconnect.d.ts +2 -0
  152. package/lib/_bridge/helpers/sdk-pega-component-map.d.ts +2 -0
  153. package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +2 -0
  154. package/lib/_components/designSystemExtension/operator/operator.component.d.ts +2 -1
  155. package/lib/_components/field/check-box/check-box.component.d.ts +18 -0
  156. package/lib/_components/field/currency/currency.component.d.ts +4 -5
  157. package/lib/_components/field/date-time/date-time.component.d.ts +0 -1
  158. package/lib/_components/field/decimal/decimal.component.d.ts +9 -1
  159. package/lib/_components/field/multiselect/multiselect.component.d.ts +64 -0
  160. package/lib/_components/field/multiselect/utils.d.ts +8 -0
  161. package/lib/_components/field/percentage/percentage.component.d.ts +4 -0
  162. package/lib/_components/field/user-reference/user-reference.component.d.ts +9 -4
  163. package/lib/_components/infra/assignment/assignment.component.d.ts +2 -0
  164. package/lib/_components/infra/navbar/navbar.component.d.ts +2 -0
  165. package/lib/_components/template/case-summary/case-summary.component.d.ts +2 -0
  166. package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +2 -0
  167. package/lib/_components/widget/attachment/attachment.component.d.ts +4 -0
  168. package/lib/_components/widget/file-utility/file-utility.component.d.ts +1 -1
  169. package/lib/_helpers/instructions-utils.d.ts +4 -0
  170. package/package.json +1 -1
  171. package/public-api.d.ts +1 -0
@@ -26,6 +26,8 @@ export class WssNavBarComponent {
26
26
  this.bShowCaseTypes$ = false;
27
27
  this.portalApp$ = '';
28
28
  this.showAppName$ = false;
29
+ this.localizedVal = PCore.getLocaleUtils().getLocaleValue;
30
+ this.localeCategory = 'AppShell';
29
31
  }
30
32
  ngOnInit() {
31
33
  // First thing in initialization is registering and subscribing to the AngularPConnect service
@@ -115,13 +117,13 @@ export class WssNavBarComponent {
115
117
  window.location.reload();
116
118
  });
117
119
  }
118
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WssNavBarComponent, deps: [{ token: i1.AngularPConnectService }, { token: i0.ChangeDetectorRef }, { token: i2.ProgressSpinnerService }, { token: i0.NgZone }, { token: i3.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
119
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: WssNavBarComponent, isStandalone: true, selector: "app-wss-nav-bar", inputs: { pConn$: "pConn$", appName$: "appName$", pages$: "pages$", caseTypes$: "caseTypes$", homePage: "homePage" }, providers: [Utils], ngImport: i0, template: "<mat-toolbar style=\"margin-bottom: 5px; background-color: #262626\">\n <mat-toolbar-row mat-icon-button>\n <div class=\"psdk-nav-header\" (click)=\"navPanelButtonClick(homePage)\">\n <div>\n <img src=\"{{ portalLogoImage$ }}\" class=\"psdk-nav-logo\" />\n </div>\n <div class=\"psdk-nav-portal-info\">\n <div class=\"psdk-nav-portal-app\">{{ portalApp$ }}</div>\n </div>\n </div>\n\n <div *ngFor=\"let page of navPages$\">\n <div class=\"flex-box mat-list-item\" style=\"cursor: pointer\" (click)=\"navPanelButtonClick(page)\">\n <div mat-button class=\"psdk-nav-button-span\">{{ page.pyLabel }}</div>\n </div>\n </div>\n\n <span class=\"spacer\"></span>\n\n <mat-list>\n <mat-list-item [matMenuTriggerFor]=\"menu\" class=\"psdk-profile-list-item\">\n <div class=\"flex-box\">\n <div class=\"psdk-nav-oper-avatar\">{{ portalOperatorInitials$ }}</div>\n </div>\n </mat-list-item>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item>Profile</button>\n <button mat-menu-item (click)=\"navPanelLogoutClick()\">Logoff</button>\n </mat-menu>\n </mat-list>\n </mat-toolbar-row>\n</mat-toolbar>\n", styles: [".psdk-nav-divider{border-bottom:.0625rem solid var(--app-divider-color);width:100%;align-items:center}.psdk-nav-header{display:flex;padding-top:.625rem;cursor:pointer;padding-right:1rem;align-items:center}.psdk-nav-header:hover{background-color:var(--app-neutral-color)}.psdk-nav-logo{width:3.75rem;padding:.625rem;margin-right:1.25rem}.psdk-nav-svg-icon{filter:var(--app-white-color-filter);width:1.6rem;padding-right:.625rem}.psdk-nav-portal-name{font-size:.875rem}.psdk-nav-portal-app{font-size:1.5rem;color:var(--app-nav-color)}.psdk-appshell-nav{z-index:3;position:fixed;display:flex;flex-direction:column;justify-content:flex-start;background:var(--app-nav-bg);width:var(--app-nav-width);height:100%;color:var(--app-nav-color);overflow-y:auto;overflow-x:hidden;white-space:nowrap;will-change:width}.psdk-appshell-nav:hover{width:var(--app-nav-width-expanded)}.psdk-appshell-topnav{display:flex;flex-direction:column;justify-content:flex-start;background:var(--app-nav-bg);width:var(--app-nav-width);height:15%;color:var(--app-nav-color);overflow:hidden;white-space:nowrap;will-change:width}.psdk-appshell-middlenav{display:flex;flex-direction:column;justify-content:space-between;background:var(--app-nav-bg);width:var(--app-nav-width);height:50%;color:var(--app-nav-color);overflow:hidden;white-space:nowrap;will-change:width}.psdk-nav-ul-middle{display:block;list-style-type:none;margin:0rem;padding-inline-start:30px}.psdk-nav-li-middle{box-sizing:border-box;text-align:left}.psdk-icon{padding:0rem .125rem;min-width:unset}.psdk-nav-button-span{padding:0 1rem;color:var(--app-nav-color)}.psdk-nav-button-span:hover{background-color:var(--app-neutral-color)}.psdk-nav-oper-avatar{margin:0rem;padding:0rem;min-width:2.5rem;min-height:2.5rem;max-width:2.5rem;max-height:2.5rem;border-radius:50%;justify-content:center;align-items:center;text-align:center;display:inline-flex;background:var(--app-neutral-color);color:var(--app-form-color);font-weight:400;font-size:1rem}mat-list{padding:0}.psdk-profile-list-item{padding-left:24px}mat-list-item{padding:20px 0 20px 30px;cursor:pointer!important;height:auto!important}mat-list-item .flex-box{display:flex;align-items:center;width:100%;text-align:left}.spacer{flex:1 1 auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i5.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i7.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i7.MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }] }); }
120
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WssNavBarComponent, deps: [{ token: i1.AngularPConnectService }, { token: i0.ChangeDetectorRef }, { token: i2.ProgressSpinnerService }, { token: i0.NgZone }, { token: i3.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
121
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WssNavBarComponent, isStandalone: true, selector: "app-wss-nav-bar", inputs: { pConn$: "pConn$", appName$: "appName$", pages$: "pages$", caseTypes$: "caseTypes$", homePage: "homePage" }, providers: [Utils], ngImport: i0, template: "<mat-toolbar style=\"margin-bottom: 5px; background-color: #262626\">\n <mat-toolbar-row mat-icon-button>\n <div class=\"psdk-nav-header\" (click)=\"navPanelButtonClick(homePage)\">\n <div>\n <img src=\"{{ portalLogoImage$ }}\" class=\"psdk-nav-logo\" />\n </div>\n <div class=\"psdk-nav-portal-info\">\n <div class=\"psdk-nav-portal-app\">{{ portalApp$ }}</div>\n </div>\n </div>\n\n <div *ngFor=\"let page of navPages$\">\n <div class=\"flex-box mat-list-item\" style=\"cursor: pointer\" (click)=\"navPanelButtonClick(page)\">\n <div mat-button class=\"psdk-nav-button-span\">{{ page.pyLabel }}</div>\n </div>\n </div>\n\n <span class=\"spacer\"></span>\n\n <mat-list>\n <mat-list-item [matMenuTriggerFor]=\"menu\" class=\"psdk-profile-list-item\">\n <div class=\"flex-box\">\n <div class=\"psdk-nav-oper-avatar\">{{ portalOperatorInitials$ }}</div>\n </div>\n </mat-list-item>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item>Profile</button>\n <button mat-menu-item (click)=\"navPanelLogoutClick()\">{{ localizedVal('Log off', localeCategory) }}</button>\n </mat-menu>\n </mat-list>\n </mat-toolbar-row>\n</mat-toolbar>\n", styles: [".psdk-nav-divider{border-bottom:.0625rem solid var(--app-divider-color);width:100%;align-items:center}.psdk-nav-header{display:flex;padding-top:.625rem;cursor:pointer;padding-right:1rem;align-items:center}.psdk-nav-header:hover{background-color:var(--app-neutral-color)}.psdk-nav-logo{width:3.75rem;padding:.625rem;margin-right:1.25rem}.psdk-nav-svg-icon{filter:var(--app-white-color-filter);width:1.6rem;padding-right:.625rem}.psdk-nav-portal-name{font-size:.875rem}.psdk-nav-portal-app{font-size:1.5rem;color:var(--app-nav-color)}.psdk-appshell-nav{z-index:3;position:fixed;display:flex;flex-direction:column;justify-content:flex-start;background:var(--app-nav-bg);width:var(--app-nav-width);height:100%;color:var(--app-nav-color);overflow-y:auto;overflow-x:hidden;white-space:nowrap;will-change:width}.psdk-appshell-nav:hover{width:var(--app-nav-width-expanded)}.psdk-appshell-topnav{display:flex;flex-direction:column;justify-content:flex-start;background:var(--app-nav-bg);width:var(--app-nav-width);height:15%;color:var(--app-nav-color);overflow:hidden;white-space:nowrap;will-change:width}.psdk-appshell-middlenav{display:flex;flex-direction:column;justify-content:space-between;background:var(--app-nav-bg);width:var(--app-nav-width);height:50%;color:var(--app-nav-color);overflow:hidden;white-space:nowrap;will-change:width}.psdk-nav-ul-middle{display:block;list-style-type:none;margin:0rem;padding-inline-start:30px}.psdk-nav-li-middle{box-sizing:border-box;text-align:left}.psdk-icon{padding:0rem .125rem;min-width:unset}.psdk-nav-button-span{padding:0 1rem;color:var(--app-nav-color)}.psdk-nav-button-span:hover{background-color:var(--app-neutral-color)}.psdk-nav-oper-avatar{margin:0rem;padding:0rem;min-width:2.5rem;min-height:2.5rem;max-width:2.5rem;max-height:2.5rem;border-radius:50%;justify-content:center;align-items:center;text-align:center;display:inline-flex;background:var(--app-neutral-color);color:var(--app-form-color);font-weight:400;font-size:1rem}mat-list{padding:0}.psdk-profile-list-item{padding-left:24px}mat-list-item{padding:20px 0 20px 30px;cursor:pointer!important;height:auto!important}mat-list-item .flex-box{display:flex;align-items:center;width:100%;text-align:left}.spacer{flex:1 1 auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i5.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i5.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i7.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i7.MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }] }); }
120
122
  }
121
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WssNavBarComponent, decorators: [{
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WssNavBarComponent, decorators: [{
122
124
  type: Component,
123
- args: [{ selector: 'app-wss-nav-bar', providers: [Utils], standalone: true, imports: [CommonModule, MatListModule, MatMenuModule, MatIconModule, MatToolbarModule], template: "<mat-toolbar style=\"margin-bottom: 5px; background-color: #262626\">\n <mat-toolbar-row mat-icon-button>\n <div class=\"psdk-nav-header\" (click)=\"navPanelButtonClick(homePage)\">\n <div>\n <img src=\"{{ portalLogoImage$ }}\" class=\"psdk-nav-logo\" />\n </div>\n <div class=\"psdk-nav-portal-info\">\n <div class=\"psdk-nav-portal-app\">{{ portalApp$ }}</div>\n </div>\n </div>\n\n <div *ngFor=\"let page of navPages$\">\n <div class=\"flex-box mat-list-item\" style=\"cursor: pointer\" (click)=\"navPanelButtonClick(page)\">\n <div mat-button class=\"psdk-nav-button-span\">{{ page.pyLabel }}</div>\n </div>\n </div>\n\n <span class=\"spacer\"></span>\n\n <mat-list>\n <mat-list-item [matMenuTriggerFor]=\"menu\" class=\"psdk-profile-list-item\">\n <div class=\"flex-box\">\n <div class=\"psdk-nav-oper-avatar\">{{ portalOperatorInitials$ }}</div>\n </div>\n </mat-list-item>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item>Profile</button>\n <button mat-menu-item (click)=\"navPanelLogoutClick()\">Logoff</button>\n </mat-menu>\n </mat-list>\n </mat-toolbar-row>\n</mat-toolbar>\n", styles: [".psdk-nav-divider{border-bottom:.0625rem solid var(--app-divider-color);width:100%;align-items:center}.psdk-nav-header{display:flex;padding-top:.625rem;cursor:pointer;padding-right:1rem;align-items:center}.psdk-nav-header:hover{background-color:var(--app-neutral-color)}.psdk-nav-logo{width:3.75rem;padding:.625rem;margin-right:1.25rem}.psdk-nav-svg-icon{filter:var(--app-white-color-filter);width:1.6rem;padding-right:.625rem}.psdk-nav-portal-name{font-size:.875rem}.psdk-nav-portal-app{font-size:1.5rem;color:var(--app-nav-color)}.psdk-appshell-nav{z-index:3;position:fixed;display:flex;flex-direction:column;justify-content:flex-start;background:var(--app-nav-bg);width:var(--app-nav-width);height:100%;color:var(--app-nav-color);overflow-y:auto;overflow-x:hidden;white-space:nowrap;will-change:width}.psdk-appshell-nav:hover{width:var(--app-nav-width-expanded)}.psdk-appshell-topnav{display:flex;flex-direction:column;justify-content:flex-start;background:var(--app-nav-bg);width:var(--app-nav-width);height:15%;color:var(--app-nav-color);overflow:hidden;white-space:nowrap;will-change:width}.psdk-appshell-middlenav{display:flex;flex-direction:column;justify-content:space-between;background:var(--app-nav-bg);width:var(--app-nav-width);height:50%;color:var(--app-nav-color);overflow:hidden;white-space:nowrap;will-change:width}.psdk-nav-ul-middle{display:block;list-style-type:none;margin:0rem;padding-inline-start:30px}.psdk-nav-li-middle{box-sizing:border-box;text-align:left}.psdk-icon{padding:0rem .125rem;min-width:unset}.psdk-nav-button-span{padding:0 1rem;color:var(--app-nav-color)}.psdk-nav-button-span:hover{background-color:var(--app-neutral-color)}.psdk-nav-oper-avatar{margin:0rem;padding:0rem;min-width:2.5rem;min-height:2.5rem;max-width:2.5rem;max-height:2.5rem;border-radius:50%;justify-content:center;align-items:center;text-align:center;display:inline-flex;background:var(--app-neutral-color);color:var(--app-form-color);font-weight:400;font-size:1rem}mat-list{padding:0}.psdk-profile-list-item{padding-left:24px}mat-list-item{padding:20px 0 20px 30px;cursor:pointer!important;height:auto!important}mat-list-item .flex-box{display:flex;align-items:center;width:100%;text-align:left}.spacer{flex:1 1 auto}\n"] }]
124
- }], ctorParameters: function () { return [{ type: i1.AngularPConnectService }, { type: i0.ChangeDetectorRef }, { type: i2.ProgressSpinnerService }, { type: i0.NgZone }, { type: i3.Utils }]; }, propDecorators: { pConn$: [{
125
+ args: [{ selector: 'app-wss-nav-bar', providers: [Utils], standalone: true, imports: [CommonModule, MatListModule, MatMenuModule, MatIconModule, MatToolbarModule], template: "<mat-toolbar style=\"margin-bottom: 5px; background-color: #262626\">\n <mat-toolbar-row mat-icon-button>\n <div class=\"psdk-nav-header\" (click)=\"navPanelButtonClick(homePage)\">\n <div>\n <img src=\"{{ portalLogoImage$ }}\" class=\"psdk-nav-logo\" />\n </div>\n <div class=\"psdk-nav-portal-info\">\n <div class=\"psdk-nav-portal-app\">{{ portalApp$ }}</div>\n </div>\n </div>\n\n <div *ngFor=\"let page of navPages$\">\n <div class=\"flex-box mat-list-item\" style=\"cursor: pointer\" (click)=\"navPanelButtonClick(page)\">\n <div mat-button class=\"psdk-nav-button-span\">{{ page.pyLabel }}</div>\n </div>\n </div>\n\n <span class=\"spacer\"></span>\n\n <mat-list>\n <mat-list-item [matMenuTriggerFor]=\"menu\" class=\"psdk-profile-list-item\">\n <div class=\"flex-box\">\n <div class=\"psdk-nav-oper-avatar\">{{ portalOperatorInitials$ }}</div>\n </div>\n </mat-list-item>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item>Profile</button>\n <button mat-menu-item (click)=\"navPanelLogoutClick()\">{{ localizedVal('Log off', localeCategory) }}</button>\n </mat-menu>\n </mat-list>\n </mat-toolbar-row>\n</mat-toolbar>\n", styles: [".psdk-nav-divider{border-bottom:.0625rem solid var(--app-divider-color);width:100%;align-items:center}.psdk-nav-header{display:flex;padding-top:.625rem;cursor:pointer;padding-right:1rem;align-items:center}.psdk-nav-header:hover{background-color:var(--app-neutral-color)}.psdk-nav-logo{width:3.75rem;padding:.625rem;margin-right:1.25rem}.psdk-nav-svg-icon{filter:var(--app-white-color-filter);width:1.6rem;padding-right:.625rem}.psdk-nav-portal-name{font-size:.875rem}.psdk-nav-portal-app{font-size:1.5rem;color:var(--app-nav-color)}.psdk-appshell-nav{z-index:3;position:fixed;display:flex;flex-direction:column;justify-content:flex-start;background:var(--app-nav-bg);width:var(--app-nav-width);height:100%;color:var(--app-nav-color);overflow-y:auto;overflow-x:hidden;white-space:nowrap;will-change:width}.psdk-appshell-nav:hover{width:var(--app-nav-width-expanded)}.psdk-appshell-topnav{display:flex;flex-direction:column;justify-content:flex-start;background:var(--app-nav-bg);width:var(--app-nav-width);height:15%;color:var(--app-nav-color);overflow:hidden;white-space:nowrap;will-change:width}.psdk-appshell-middlenav{display:flex;flex-direction:column;justify-content:space-between;background:var(--app-nav-bg);width:var(--app-nav-width);height:50%;color:var(--app-nav-color);overflow:hidden;white-space:nowrap;will-change:width}.psdk-nav-ul-middle{display:block;list-style-type:none;margin:0rem;padding-inline-start:30px}.psdk-nav-li-middle{box-sizing:border-box;text-align:left}.psdk-icon{padding:0rem .125rem;min-width:unset}.psdk-nav-button-span{padding:0 1rem;color:var(--app-nav-color)}.psdk-nav-button-span:hover{background-color:var(--app-neutral-color)}.psdk-nav-oper-avatar{margin:0rem;padding:0rem;min-width:2.5rem;min-height:2.5rem;max-width:2.5rem;max-height:2.5rem;border-radius:50%;justify-content:center;align-items:center;text-align:center;display:inline-flex;background:var(--app-neutral-color);color:var(--app-form-color);font-weight:400;font-size:1rem}mat-list{padding:0}.psdk-profile-list-item{padding-left:24px}mat-list-item{padding:20px 0 20px 30px;cursor:pointer!important;height:auto!important}mat-list-item .flex-box{display:flex;align-items:center;width:100%;text-align:left}.spacer{flex:1 1 auto}\n"] }]
126
+ }], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i0.ChangeDetectorRef }, { type: i2.ProgressSpinnerService }, { type: i0.NgZone }, { type: i3.Utils }], propDecorators: { pConn$: [{
125
127
  type: Input
126
128
  }], appName$: [{
127
129
  type: Input
@@ -132,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
132
134
  }], homePage: [{
133
135
  type: Input
134
136
  }] } });
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3NzLW5hdi1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL3RlbXBsYXRlL3dzcy1uYXYtYmFyL3dzcy1uYXYtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS93c3MtbmF2LWJhci93c3MtbmF2LWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUc3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7QUFlaEQsTUFBTSxPQUFPLGtCQUFrQjtJQTZCN0IsWUFDVSxlQUF1QyxFQUN2QyxLQUF3QixFQUN4QixTQUFpQyxFQUNqQyxNQUFjLEVBQ2QsS0FBWTtRQUpaLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FB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LGNBQ04sSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixDQUFDOzJOQUc3RSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbGJhcic7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWVzc2FnZXMvcHJvZ3Jlc3Mtc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IGxvZ291dCB9IGZyb20gJ0BwZWdhL2F1dGgvbGliL3Nkay1hdXRoLW1hbmFnZXInO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy91dGlscyc7XG5cbmludGVyZmFjZSBXc3NOYXZCYXJQcm9wcyB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhpcyBjb21wb25lbnRcbiAgc2hvd0FwcE5hbWU6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC13c3MtbmF2LWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi93c3MtbmF2LWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dzcy1uYXYtYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1V0aWxzXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0TGlzdE1vZHVsZSwgTWF0TWVudU1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0VG9vbGJhck1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgV3NzTmF2QmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgYXBwTmFtZSQ6IHN0cmluZztcbiAgQElucHV0KCkgcGFnZXMkOiBhbnlbXTtcbiAgQElucHV0KCkgY2FzZVR5cGVzJDogYW55W107XG4gIEBJbnB1dCgpIGhvbWVQYWdlOiBhbnk7XG5cbiAgLy8gRm9yIGludGVyYWN0aW9uIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcbiAgY29uZmlnUHJvcHMkOiBXc3NOYXZCYXJQcm9wcztcblxuICBuYXZQYWdlcyQ6IGFueVtdO1xuICBuYXZFeHBhbmRDb2xsYXBzZSQ6IHN0cmluZztcbiAgYlNob3dDYXNlVHlwZXMkID0gZmFsc2U7XG5cbiAgcG9ydGFsQXBwJCA9ICcnO1xuICBwb3J0YWxMb2dvSW1hZ2UkOiBzdHJpbmc7XG4gIHNob3dBcHBOYW1lJCA9IGZhbHNlO1xuXG4gIHBvcnRhbE9wZXJhdG9yJDogc3RyaW5nO1xuICBwb3J0YWxPcGVyYXRvckluaXRpYWxzJDogc3RyaW5nO1xuXG4gIGFjdGlvbnNBUEk6IGFueTtcbiAgY3JlYXRlV29yazogYW55O1xuICBzaG93UGFnZTogYW55O1xuICBsb2dvdXQ6IGFueTtcblxuICBuYXZJY29uJDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcHNTZXJ2aWNlOiBQcm9ncmVzc1NwaW5uZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSB1dGlsczogVXRpbHNcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuXG4gICAgdGhpcy5uYXZJY29uJCA9IHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpLmNvbmNhdCgnYXNzZXRzL3B6cGVnYS1sb2dvLW1hcmsuc3ZnJyk7XG5cbiAgICAvLyB0aGlzIGlzIGEgZHVtbXkgXCJnZXRcIiwgYmVjYXVzZSByaWdodCBub3cgaW1hZ2VzIGFyZSBpbiBodHRwIGFuZCB0aGUgbWFpbiBzY3JlZW4gaXMgaHR0cHNcbiAgICAvLyBzbyB0aGUgaW1hZ2VzIGRvbid0IGxvYWQgYXV0b21hdGljYWxseS4gIFRoaXMgY2FsbCwgbWFrZXMgYW4gaW5pdGlhbCBoaXQgdGhhdCBhbGxvd3MgdGhlXG4gICAgLy8gcmVzdCBvZiB0aGUgaW1hZ2VzIHRvIHNob3cgdXBcbiAgICB0aGlzLmxvYWRJbWFnZSh0aGlzLm5hdkljb24kKTtcblxuICAgIHRoaXMuaW5pdENvbXBvbmVudCgpO1xuICB9XG5cbiAgLy8gbmdPbkRlc3Ryb3lcbiAgLy8gIHVuc3Vic2NyaWJlIGZyb20gU3RvcmVcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRJbWFnZShzcmM6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIHJlc29sdmUoc3JjKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICAgIGNvbnN0IGJVcGRhdGVTZWxmID0gdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuXG4gICAgLy8gTk9URTogY2FuIGNhbGwgYW5ndWxhclBDb25uZWN0LmdldFN0YXRlIHdpdGggb3B0aW9uYWwgYXJncyBmb3IgZGV0YWlsZWQgbG9nZ2luZzogYkxvZ01zZyBhbmQgY29tcG9uZW50IG9iamVjdFxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0LmdldFN0YXRlKCk7XG5cbiAgICBpZiAoYlVwZGF0ZVNlbGYpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVNlbGYoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0Q29tcG9uZW50KCk7XG4gIH1cblxuICBpbml0Q29tcG9uZW50KCkge1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLm5hdkljb24kID0gdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkuY29uY2F0KCdhc3NldHMvcHpwZWdhLWxvZ28tbWFyay5zdmcnKTtcbiAgICAgIHRoaXMubmF2RXhwYW5kQ29sbGFwc2UkID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygncGx1cycsIHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpKTtcblxuICAgICAgLy8gVGhlbiwgY29udGludWUgb24gd2l0aCBvdGhlciBpbml0aWFsaXphdGlvblxuXG4gICAgICAvLyBtYWtpbmcgYSBjb3B5LCBzbyBjYW4gYWRkIGluZm9cbiAgICAgIHRoaXMubmF2UGFnZXMkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnBhZ2VzJCkpO1xuXG4gICAgICB0aGlzLm5hdlBhZ2VzJC5mb3JFYWNoKHBhZ2UgPT4ge1xuICAgICAgICBwYWdlLmljb25OYW1lID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYyhwYWdlLnB4UGFnZVZpZXdJY29uLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5hY3Rpb25zQVBJID0gdGhpcy5wQ29ubiQuZ2V0QWN0aW9uc0FwaSgpO1xuICAgICAgdGhpcy5jcmVhdGVXb3JrID0gdGhpcy5hY3Rpb25zQVBJLmNyZWF0ZVdvcmsuYmluZCh0aGlzLmFjdGlvbnNBUEkpO1xuICAgICAgdGhpcy5zaG93UGFnZSA9IHRoaXMuYWN0aW9uc0FQSS5zaG93UGFnZS5iaW5kKHRoaXMuYWN0aW9uc0FQSSk7XG4gICAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKSBhcyBXc3NOYXZCYXJQcm9wcztcbiAgICAgIHRoaXMubG9nb3V0ID0gdGhpcy5hY3Rpb25zQVBJLmxvZ291dC5iaW5kKHRoaXMuYWN0aW9uc0FQSSk7XG5cbiAgICAgIC8vIGNvbnN0IG9EYXRhID0gdGhpcy5wQ29ubiQuZ2V0RGF0YU9iamVjdCgpO1xuXG4gICAgICB0aGlzLnBvcnRhbExvZ29JbWFnZSQgPSB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKS5jb25jYXQoJ2Fzc2V0cy9wenBlZ2EtbG9nby1tYXJrLnN2ZycpO1xuICAgICAgdGhpcy5wb3J0YWxPcGVyYXRvciQgPSBQQ29yZS5nZXRFbnZpcm9ubWVudEluZm8oKS5nZXRPcGVyYXRvck5hbWUoKTtcbiAgICAgIHRoaXMucG9ydGFsT3BlcmF0b3JJbml0aWFscyQgPSB0aGlzLnV0aWxzLmdldEluaXRpYWxzKHRoaXMucG9ydGFsT3BlcmF0b3IkKTtcbiAgICAgIHRoaXMuc2hvd0FwcE5hbWUkID0gdGhpcy5jb25maWdQcm9wcyQuc2hvd0FwcE5hbWU7XG5cbiAgICAgIHRoaXMucG9ydGFsQXBwJCA9IFBDb3JlLmdldEVudmlyb25tZW50SW5mbygpLmdldEFwcGxpY2F0aW9uTGFiZWwoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5hdlBhbmVsQnV0dG9uQ2xpY2sob1BhZ2VEYXRhOiBhbnkpIHtcbiAgICBjb25zdCB7IHB5Q2xhc3NOYW1lLCBweVJ1bGVOYW1lIH0gPSBvUGFnZURhdGE7XG5cbiAgICB0aGlzLnNob3dQYWdlKHB5UnVsZU5hbWUsIHB5Q2xhc3NOYW1lKTtcbiAgfVxuXG4gIG5hdlBhbmVsQ3JlYXRlQnV0dG9uQ2xpY2soKSB7XG4gICAgaWYgKHRoaXMubmF2RXhwYW5kQ29sbGFwc2UkLmluZGV4T2YoJ3BsdXMnKSA+IDApIHtcbiAgICAgIHRoaXMubmF2RXhwYW5kQ29sbGFwc2UkID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygndGltZXMnLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gICAgICB0aGlzLmJTaG93Q2FzZVR5cGVzJCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmF2RXhwYW5kQ29sbGFwc2UkID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygncGx1cycsIHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpKTtcbiAgICAgIHRoaXMuYlNob3dDYXNlVHlwZXMkID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmF2UGFuZWxDcmVhdGVDYXNlVHlwZShzQ2FzZVR5cGU6IHN0cmluZywgc0Zsb3dUeXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZSh0cnVlKTtcbiAgICB0aGlzLm5hdlBhbmVsQ3JlYXRlQnV0dG9uQ2xpY2soKTtcblxuICAgIGNvbnN0IGFjdGlvbkluZm8gPSB7XG4gICAgICBjb250YWluZXJOYW1lOiAncHJpbWFyeScsXG4gICAgICBmbG93VHlwZTogc0Zsb3dUeXBlIHx8ICdweVN0YXJ0Q2FzZSdcbiAgICB9O1xuICAgIHRoaXMuY3JlYXRlV29yayhzQ2FzZVR5cGUsIGFjdGlvbkluZm8pO1xuICB9XG5cbiAgbmF2UGFuZWxMb2dvdXRDbGljaygpIHtcbiAgICBsb2dvdXQoKS50aGVuKCgpID0+IHtcbiAgICAgIC8vIFJlbG9hZCB0aGUgcGFnZSB0byBraWNrIG9mZiB0aGUgbG9naW5cbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPG1hdC10b29sYmFyIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMjYyNjI2XCI+XG4gIDxtYXQtdG9vbGJhci1yb3cgbWF0LWljb24tYnV0dG9uPlxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLW5hdi1oZWFkZXJcIiAoY2xpY2spPVwibmF2UGFuZWxCdXR0b25DbGljayhob21lUGFnZSlcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxpbWcgc3JjPVwie3sgcG9ydGFsTG9nb0ltYWdlJCB9fVwiIGNsYXNzPVwicHNkay1uYXYtbG9nb1wiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLW5hdi1wb3J0YWwtaW5mb1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1uYXYtcG9ydGFsLWFwcFwiPnt7IHBvcnRhbEFwcCQgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgcGFnZSBvZiBuYXZQYWdlcyRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWJveCBtYXQtbGlzdC1pdGVtXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIiAoY2xpY2spPVwibmF2UGFuZWxCdXR0b25DbGljayhwYWdlKVwiPlxuICAgICAgICA8ZGl2IG1hdC1idXR0b24gY2xhc3M9XCJwc2RrLW5hdi1idXR0b24tc3BhblwiPnt7IHBhZ2UucHlMYWJlbCB9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8c3BhbiBjbGFzcz1cInNwYWNlclwiPjwvc3Bhbj5cblxuICAgIDxtYXQtbGlzdD5cbiAgICAgIDxtYXQtbGlzdC1pdGVtIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJwc2RrLXByb2ZpbGUtbGlzdC1pdGVtXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWJveFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLW5hdi1vcGVyLWF2YXRhclwiPnt7IHBvcnRhbE9wZXJhdG9ySW5pdGlhbHMkIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0+UHJvZmlsZTwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm5hdlBhbmVsTG9nb3V0Q2xpY2soKVwiPkxvZ29mZjwvYnV0dG9uPlxuICAgICAgPC9tYXQtbWVudT5cbiAgICA8L21hdC1saXN0PlxuICA8L21hdC10b29sYmFyLXJvdz5cbjwvbWF0LXRvb2xiYXI+XG4iXX0=
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3NzLW5hdi1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL3RlbXBsYXRlL3dzcy1uYXYtYmFyL3dzcy1uYXYtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS93c3MtbmF2LWJhci93c3MtbmF2LWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQTZCLE1BQU0sZUFBZSxDQUFDO0FBQy9GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUc3RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7QUFlaEQsTUFBTSxPQUFPLGtCQUFrQjtJQThCN0IsWUFDVSxlQUF1QyxFQUN2QyxLQUF3QixFQUN4QixTQUFpQyxFQUNqQyxNQUFjLEVBQ2QsS0FBWTtRQUpaLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUF3QjtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FB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LCt1RURWWSxZQUFZLDJKQUFFLGFBQWEsdVJBQUUsYUFBYSw2dkJBQUUsYUFBYSw4QkFBRSxnQkFBZ0I7OzRGQUUxRSxrQkFBa0I7a0JBUjlCLFNBQVM7K0JBQ0UsaUJBQWlCLGFBR2hCLENBQUMsS0FBSyxDQUFDLGNBQ04sSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixDQUFDO3lNQUc3RSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbGJhcic7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWVzc2FnZXMvcHJvZ3Jlc3Mtc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IGxvZ291dCB9IGZyb20gJ0BwZWdhL2F1dGgvbGliL3Nkay1hdXRoLW1hbmFnZXInO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy91dGlscyc7XG5cbmludGVyZmFjZSBXc3NOYXZCYXJQcm9wcyB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhpcyBjb21wb25lbnRcbiAgc2hvd0FwcE5hbWU6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC13c3MtbmF2LWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi93c3MtbmF2LWJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dzcy1uYXYtYmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1V0aWxzXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0TGlzdE1vZHVsZSwgTWF0TWVudU1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0VG9vbGJhck1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgV3NzTmF2QmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgYXBwTmFtZSQ6IHN0cmluZztcbiAgQElucHV0KCkgcGFnZXMkOiBhbnlbXTtcbiAgQElucHV0KCkgY2FzZVR5cGVzJDogYW55W107XG4gIEBJbnB1dCgpIGhvbWVQYWdlOiBhbnk7XG5cbiAgLy8gRm9yIGludGVyYWN0aW9uIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcbiAgY29uZmlnUHJvcHMkOiBXc3NOYXZCYXJQcm9wcztcblxuICBuYXZQYWdlcyQ6IGFueVtdO1xuICBuYXZFeHBhbmRDb2xsYXBzZSQ6IHN0cmluZztcbiAgYlNob3dDYXNlVHlwZXMkID0gZmFsc2U7XG5cbiAgcG9ydGFsQXBwJCA9ICcnO1xuICBwb3J0YWxMb2dvSW1hZ2UkOiBzdHJpbmc7XG4gIHNob3dBcHBOYW1lJCA9IGZhbHNlO1xuXG4gIHBvcnRhbE9wZXJhdG9yJDogc3RyaW5nO1xuICBwb3J0YWxPcGVyYXRvckluaXRpYWxzJDogc3RyaW5nO1xuXG4gIGFjdGlvbnNBUEk6IGFueTtcbiAgY3JlYXRlV29yazogYW55O1xuICBzaG93UGFnZTogYW55O1xuICBsb2dvdXQ6IGFueTtcblxuICBuYXZJY29uJDogc3RyaW5nO1xuICBsb2NhbGl6ZWRWYWwgPSBQQ29yZS5nZXRMb2NhbGVVdGlscygpLmdldExvY2FsZVZhbHVlO1xuICBsb2NhbGVDYXRlZ29yeSA9ICdBcHBTaGVsbCc7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcHNTZXJ2aWNlOiBQcm9ncmVzc1NwaW5uZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSB1dGlsczogVXRpbHNcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuXG4gICAgdGhpcy5uYXZJY29uJCA9IHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpLmNvbmNhdCgnYXNzZXRzL3B6cGVnYS1sb2dvLW1hcmsuc3ZnJyk7XG5cbiAgICAvLyB0aGlzIGlzIGEgZHVtbXkgXCJnZXRcIiwgYmVjYXVzZSByaWdodCBub3cgaW1hZ2VzIGFyZSBpbiBodHRwIGFuZCB0aGUgbWFpbiBzY3JlZW4gaXMgaHR0cHNcbiAgICAvLyBzbyB0aGUgaW1hZ2VzIGRvbid0IGxvYWQgYXV0b21hdGljYWxseS4gIFRoaXMgY2FsbCwgbWFrZXMgYW4gaW5pdGlhbCBoaXQgdGhhdCBhbGxvd3MgdGhlXG4gICAgLy8gcmVzdCBvZiB0aGUgaW1hZ2VzIHRvIHNob3cgdXBcbiAgICB0aGlzLmxvYWRJbWFnZSh0aGlzLm5hdkljb24kKTtcblxuICAgIHRoaXMuaW5pdENvbXBvbmVudCgpO1xuICB9XG5cbiAgLy8gbmdPbkRlc3Ryb3lcbiAgLy8gIHVuc3Vic2NyaWJlIGZyb20gU3RvcmVcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRJbWFnZShzcmM6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIHJlc29sdmUoc3JjKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICAgIGNvbnN0IGJVcGRhdGVTZWxmID0gdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuXG4gICAgLy8gTk9URTogY2FuIGNhbGwgYW5ndWxhclBDb25uZWN0LmdldFN0YXRlIHdpdGggb3B0aW9uYWwgYXJncyBmb3IgZGV0YWlsZWQgbG9nZ2luZzogYkxvZ01zZyBhbmQgY29tcG9uZW50IG9iamVjdFxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0LmdldFN0YXRlKCk7XG5cbiAgICBpZiAoYlVwZGF0ZVNlbGYpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVNlbGYoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0Q29tcG9uZW50KCk7XG4gIH1cblxuICBpbml0Q29tcG9uZW50KCkge1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLm5hdkljb24kID0gdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkuY29uY2F0KCdhc3NldHMvcHpwZWdhLWxvZ28tbWFyay5zdmcnKTtcbiAgICAgIHRoaXMubmF2RXhwYW5kQ29sbGFwc2UkID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygncGx1cycsIHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpKTtcblxuICAgICAgLy8gVGhlbiwgY29udGludWUgb24gd2l0aCBvdGhlciBpbml0aWFsaXphdGlvblxuXG4gICAgICAvLyBtYWtpbmcgYSBjb3B5LCBzbyBjYW4gYWRkIGluZm9cbiAgICAgIHRoaXMubmF2UGFnZXMkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnBhZ2VzJCkpO1xuXG4gICAgICB0aGlzLm5hdlBhZ2VzJC5mb3JFYWNoKHBhZ2UgPT4ge1xuICAgICAgICBwYWdlLmljb25OYW1lID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYyhwYWdlLnB4UGFnZVZpZXdJY29uLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5hY3Rpb25zQVBJID0gdGhpcy5wQ29ubiQuZ2V0QWN0aW9uc0FwaSgpO1xuICAgICAgdGhpcy5jcmVhdGVXb3JrID0gdGhpcy5hY3Rpb25zQVBJLmNyZWF0ZVdvcmsuYmluZCh0aGlzLmFjdGlvbnNBUEkpO1xuICAgICAgdGhpcy5zaG93UGFnZSA9IHRoaXMuYWN0aW9uc0FQSS5zaG93UGFnZS5iaW5kKHRoaXMuYWN0aW9uc0FQSSk7XG4gICAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKSBhcyBXc3NOYXZCYXJQcm9wcztcbiAgICAgIHRoaXMubG9nb3V0ID0gdGhpcy5hY3Rpb25zQVBJLmxvZ291dC5iaW5kKHRoaXMuYWN0aW9uc0FQSSk7XG5cbiAgICAgIC8vIGNvbnN0IG9EYXRhID0gdGhpcy5wQ29ubiQuZ2V0RGF0YU9iamVjdCgpO1xuXG4gICAgICB0aGlzLnBvcnRhbExvZ29JbWFnZSQgPSB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKS5jb25jYXQoJ2Fzc2V0cy9wenBlZ2EtbG9nby1tYXJrLnN2ZycpO1xuICAgICAgdGhpcy5wb3J0YWxPcGVyYXRvciQgPSBQQ29yZS5nZXRFbnZpcm9ubWVudEluZm8oKS5nZXRPcGVyYXRvck5hbWUoKTtcbiAgICAgIHRoaXMucG9ydGFsT3BlcmF0b3JJbml0aWFscyQgPSB0aGlzLnV0aWxzLmdldEluaXRpYWxzKHRoaXMucG9ydGFsT3BlcmF0b3IkKTtcbiAgICAgIHRoaXMuc2hvd0FwcE5hbWUkID0gdGhpcy5jb25maWdQcm9wcyQuc2hvd0FwcE5hbWU7XG5cbiAgICAgIHRoaXMucG9ydGFsQXBwJCA9IFBDb3JlLmdldEVudmlyb25tZW50SW5mbygpLmdldEFwcGxpY2F0aW9uTGFiZWwoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5hdlBhbmVsQnV0dG9uQ2xpY2sob1BhZ2VEYXRhOiBhbnkpIHtcbiAgICBjb25zdCB7IHB5Q2xhc3NOYW1lLCBweVJ1bGVOYW1lIH0gPSBvUGFnZURhdGE7XG5cbiAgICB0aGlzLnNob3dQYWdlKHB5UnVsZU5hbWUsIHB5Q2xhc3NOYW1lKTtcbiAgfVxuXG4gIG5hdlBhbmVsQ3JlYXRlQnV0dG9uQ2xpY2soKSB7XG4gICAgaWYgKHRoaXMubmF2RXhwYW5kQ29sbGFwc2UkLmluZGV4T2YoJ3BsdXMnKSA+IDApIHtcbiAgICAgIHRoaXMubmF2RXhwYW5kQ29sbGFwc2UkID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygndGltZXMnLCB0aGlzLnV0aWxzLmdldFNES1N0YXRpY0NvbnRlbnRVcmwoKSk7XG4gICAgICB0aGlzLmJTaG93Q2FzZVR5cGVzJCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmF2RXhwYW5kQ29sbGFwc2UkID0gdGhpcy51dGlscy5nZXRJbWFnZVNyYygncGx1cycsIHRoaXMudXRpbHMuZ2V0U0RLU3RhdGljQ29udGVudFVybCgpKTtcbiAgICAgIHRoaXMuYlNob3dDYXNlVHlwZXMkID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmF2UGFuZWxDcmVhdGVDYXNlVHlwZShzQ2FzZVR5cGU6IHN0cmluZywgc0Zsb3dUeXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnBzU2VydmljZS5zZW5kTWVzc2FnZSh0cnVlKTtcbiAgICB0aGlzLm5hdlBhbmVsQ3JlYXRlQnV0dG9uQ2xpY2soKTtcblxuICAgIGNvbnN0IGFjdGlvbkluZm8gPSB7XG4gICAgICBjb250YWluZXJOYW1lOiAncHJpbWFyeScsXG4gICAgICBmbG93VHlwZTogc0Zsb3dUeXBlIHx8ICdweVN0YXJ0Q2FzZSdcbiAgICB9O1xuICAgIHRoaXMuY3JlYXRlV29yayhzQ2FzZVR5cGUsIGFjdGlvbkluZm8pO1xuICB9XG5cbiAgbmF2UGFuZWxMb2dvdXRDbGljaygpIHtcbiAgICBsb2dvdXQoKS50aGVuKCgpID0+IHtcbiAgICAgIC8vIFJlbG9hZCB0aGUgcGFnZSB0byBraWNrIG9mZiB0aGUgbG9naW5cbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPG1hdC10b29sYmFyIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMjYyNjI2XCI+XG4gIDxtYXQtdG9vbGJhci1yb3cgbWF0LWljb24tYnV0dG9uPlxuICAgIDxkaXYgY2xhc3M9XCJwc2RrLW5hdi1oZWFkZXJcIiAoY2xpY2spPVwibmF2UGFuZWxCdXR0b25DbGljayhob21lUGFnZSlcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxpbWcgc3JjPVwie3sgcG9ydGFsTG9nb0ltYWdlJCB9fVwiIGNsYXNzPVwicHNkay1uYXYtbG9nb1wiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLW5hdi1wb3J0YWwtaW5mb1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHNkay1uYXYtcG9ydGFsLWFwcFwiPnt7IHBvcnRhbEFwcCQgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgcGFnZSBvZiBuYXZQYWdlcyRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWJveCBtYXQtbGlzdC1pdGVtXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIiAoY2xpY2spPVwibmF2UGFuZWxCdXR0b25DbGljayhwYWdlKVwiPlxuICAgICAgICA8ZGl2IG1hdC1idXR0b24gY2xhc3M9XCJwc2RrLW5hdi1idXR0b24tc3BhblwiPnt7IHBhZ2UucHlMYWJlbCB9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8c3BhbiBjbGFzcz1cInNwYWNlclwiPjwvc3Bhbj5cblxuICAgIDxtYXQtbGlzdD5cbiAgICAgIDxtYXQtbGlzdC1pdGVtIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJwc2RrLXByb2ZpbGUtbGlzdC1pdGVtXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWJveFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwc2RrLW5hdi1vcGVyLWF2YXRhclwiPnt7IHBvcnRhbE9wZXJhdG9ySW5pdGlhbHMkIH19PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtbGlzdC1pdGVtPlxuICAgICAgPG1hdC1tZW51ICNtZW51PVwibWF0TWVudVwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0+UHJvZmlsZTwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cIm5hdlBhbmVsTG9nb3V0Q2xpY2soKVwiPnt7IGxvY2FsaXplZFZhbCgnTG9nIG9mZicsIGxvY2FsZUNhdGVnb3J5KSB9fTwvYnV0dG9uPlxuICAgICAgPC9tYXQtbWVudT5cbiAgICA8L21hdC1saXN0PlxuICA8L21hdC10b29sYmFyLXJvdz5cbjwvbWF0LXRvb2xiYXI+XG4iXX0=
@@ -12,13 +12,13 @@ export class AppAnnouncementComponent {
12
12
  this.details$ = datasource.source.map(item => item.name);
13
13
  }
14
14
  }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppAnnouncementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AppAnnouncementComponent, isStandalone: true, selector: "app-app-announcement", inputs: { pConn$: "pConn$" }, ngImport: i0, template: "<article class=\"psdk-announcement\">\n <h2>{{ configProps$.header }}</h2>\n <div>\n <p>{{ configProps$.description }}</p>\n <div>\n <h3>{{ configProps$.label }}</h3>\n <ul>\n <li *ngFor=\"let detail of details$\">{{ detail }}</li>\n </ul>\n </div>\n </div>\n <a *ngIf=\"configProps$.whatsnewlink != ''\" mat-raised-button color=\"primary\" [href]=\"configProps$.whatsnewlink\">See what's new</a>\n</article>\n", styles: ["h2{font-size:1.2rem;margin-block-start:0rem}h3{font-size:1.1rem}ul{padding-inline-start:20px}.psdk-announcement{background-color:var(--app-form-color);padding:1rem;margin:1rem 0;border-radius:.6125rem;border-left:6px solid;border-left-color:var(--app-primary-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }] }); }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppAnnouncementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AppAnnouncementComponent, isStandalone: true, selector: "app-app-announcement", inputs: { pConn$: "pConn$" }, ngImport: i0, template: "<article class=\"psdk-announcement\">\n <h2>{{ configProps$.header }}</h2>\n <div>\n <p>{{ configProps$.description }}</p>\n <div>\n <h3>{{ configProps$.label }}</h3>\n <ul>\n <li *ngFor=\"let detail of details$\">{{ detail }}</li>\n </ul>\n </div>\n </div>\n <a *ngIf=\"configProps$.whatsnewlink != ''\" mat-raised-button color=\"primary\" [href]=\"configProps$.whatsnewlink\">See what's new</a>\n</article>\n", styles: ["h2{font-size:1.2rem;margin-block-start:0rem}h3{font-size:1.1rem}ul{padding-inline-start:20px}.psdk-announcement{background-color:var(--app-form-color);padding:1rem;margin:1rem 0;border-radius:.6125rem;border-left:6px solid;border-left-color:var(--app-primary-color)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }] }); }
17
17
  }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AppAnnouncementComponent, decorators: [{
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppAnnouncementComponent, decorators: [{
19
19
  type: Component,
20
20
  args: [{ selector: 'app-app-announcement', standalone: true, imports: [CommonModule, MatButtonModule], template: "<article class=\"psdk-announcement\">\n <h2>{{ configProps$.header }}</h2>\n <div>\n <p>{{ configProps$.description }}</p>\n <div>\n <h3>{{ configProps$.label }}</h3>\n <ul>\n <li *ngFor=\"let detail of details$\">{{ detail }}</li>\n </ul>\n </div>\n </div>\n <a *ngIf=\"configProps$.whatsnewlink != ''\" mat-raised-button color=\"primary\" [href]=\"configProps$.whatsnewlink\">See what's new</a>\n</article>\n", styles: ["h2{font-size:1.2rem;margin-block-start:0rem}h3{font-size:1.1rem}ul{padding-inline-start:20px}.psdk-announcement{background-color:var(--app-form-color);padding:1rem;margin:1rem 0;border-radius:.6125rem;border-left:6px solid;border-left-color:var(--app-primary-color)}\n"] }]
21
21
  }], propDecorators: { pConn$: [{
22
22
  type: Input
23
23
  }] } });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWFubm91bmNlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2FwcC1hbm5vdW5jZW1lbnQvYXBwLWFubm91bmNlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2FwcC1hbm5vdW5jZW1lbnQvYXBwLWFubm91bmNlbWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBa0IzRCxNQUFNLE9BQU8sd0JBQXdCO0lBTW5DLFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDakQsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFekMsSUFBSSxVQUFVLEVBQUUsTUFBTSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDMUQ7SUFDSCxDQUFDOytHQWJVLHdCQUF3QjttR0FBeEIsd0JBQXdCLDhHQ3BCckMsK2JBYUEscVVES1ksWUFBWSwrUEFBRSxlQUFlOzs0RkFFNUIsd0JBQXdCO2tCQVBwQyxTQUFTOytCQUNFLHNCQUFzQixjQUdwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDOzhCQUcvQixNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuXG5pbnRlcmZhY2UgQXBwQW5ub3VuY2VtZW50UHJvcHMge1xuICAvLyBJZiBhbnksIGVudGVyIGFkZGl0aW9uYWwgcHJvcHMgdGhhdCBvbmx5IGV4aXN0IG9uIHRoaXMgY29tcG9uZW50XG4gIGhlYWRlcj86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHdoYXRzbmV3bGluaz86IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGRhdGFzb3VyY2U/OiBhbnk7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hcHAtYW5ub3VuY2VtZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcC1hbm5vdW5jZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hcHAtYW5ub3VuY2VtZW50LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgQXBwQW5ub3VuY2VtZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG5cbiAgY29uZmlnUHJvcHMkOiBBcHBBbm5vdW5jZW1lbnRQcm9wcztcbiAgZGV0YWlscyQ6IGFueVtdO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKTtcbiAgICBjb25zdCB7IGRhdGFzb3VyY2UgfSA9IHRoaXMuY29uZmlnUHJvcHMkO1xuXG4gICAgaWYgKGRhdGFzb3VyY2U/LnNvdXJjZSkge1xuICAgICAgdGhpcy5kZXRhaWxzJCA9IGRhdGFzb3VyY2Uuc291cmNlLm1hcChpdGVtID0+IGl0ZW0ubmFtZSk7XG4gICAgfVxuICB9XG59XG4iLCI8YXJ0aWNsZSBjbGFzcz1cInBzZGstYW5ub3VuY2VtZW50XCI+XG4gIDxoMj57eyBjb25maWdQcm9wcyQuaGVhZGVyIH19PC9oMj5cbiAgPGRpdj5cbiAgICA8cD57eyBjb25maWdQcm9wcyQuZGVzY3JpcHRpb24gfX08L3A+XG4gICAgPGRpdj5cbiAgICAgIDxoMz57eyBjb25maWdQcm9wcyQubGFiZWwgfX08L2gzPlxuICAgICAgPHVsPlxuICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRldGFpbCBvZiBkZXRhaWxzJFwiPnt7IGRldGFpbCB9fTwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGEgKm5nSWY9XCJjb25maWdQcm9wcyQud2hhdHNuZXdsaW5rICE9ICcnXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW2hyZWZdPVwiY29uZmlnUHJvcHMkLndoYXRzbmV3bGlua1wiPlNlZSB3aGF0J3MgbmV3PC9hPlxuPC9hcnRpY2xlPlxuIl19
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWFubm91bmNlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2FwcC1hbm5vdW5jZW1lbnQvYXBwLWFubm91bmNlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2FwcC1hbm5vdW5jZW1lbnQvYXBwLWFubm91bmNlbWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBa0IzRCxNQUFNLE9BQU8sd0JBQXdCO0lBTW5DLFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDakQsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFekMsSUFBSSxVQUFVLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRCxDQUFDO0lBQ0gsQ0FBQzsrR0FiVSx3QkFBd0I7bUdBQXhCLHdCQUF3Qiw4R0NwQnJDLCtiQWFBLHFVREtZLFlBQVksK1BBQUUsZUFBZTs7NEZBRTVCLHdCQUF3QjtrQkFQcEMsU0FBUzsrQkFDRSxzQkFBc0IsY0FHcEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQzs4QkFHL0IsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcblxuaW50ZXJmYWNlIEFwcEFubm91bmNlbWVudFByb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiB0aGlzIGNvbXBvbmVudFxuICBoZWFkZXI/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB3aGF0c25ld2xpbms/OiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBkYXRhc291cmNlPzogYW55O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYXBwLWFubm91bmNlbWVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAtYW5ub3VuY2VtZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXBwLWFubm91bmNlbWVudC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIEFwcEFubm91bmNlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuXG4gIGNvbmZpZ1Byb3BzJDogQXBwQW5ub3VuY2VtZW50UHJvcHM7XG4gIGRldGFpbHMkOiBhbnlbXTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZ1Byb3BzJCA9IHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCk7XG4gICAgY29uc3QgeyBkYXRhc291cmNlIH0gPSB0aGlzLmNvbmZpZ1Byb3BzJDtcblxuICAgIGlmIChkYXRhc291cmNlPy5zb3VyY2UpIHtcbiAgICAgIHRoaXMuZGV0YWlscyQgPSBkYXRhc291cmNlLnNvdXJjZS5tYXAoaXRlbSA9PiBpdGVtLm5hbWUpO1xuICAgIH1cbiAgfVxufVxuIiwiPGFydGljbGUgY2xhc3M9XCJwc2RrLWFubm91bmNlbWVudFwiPlxuICA8aDI+e3sgY29uZmlnUHJvcHMkLmhlYWRlciB9fTwvaDI+XG4gIDxkaXY+XG4gICAgPHA+e3sgY29uZmlnUHJvcHMkLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgIDxkaXY+XG4gICAgICA8aDM+e3sgY29uZmlnUHJvcHMkLmxhYmVsIH19PC9oMz5cbiAgICAgIDx1bD5cbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkZXRhaWwgb2YgZGV0YWlscyRcIj57eyBkZXRhaWwgfX08L2xpPlxuICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxhICpuZ0lmPVwiY29uZmlnUHJvcHMkLndoYXRzbmV3bGluayAhPSAnJ1wiIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFtocmVmXT1cImNvbmZpZ1Byb3BzJC53aGF0c25ld2xpbmtcIj5TZWUgd2hhdCdzIG5ldzwvYT5cbjwvYXJ0aWNsZT5cbiJdfQ==
@@ -33,6 +33,10 @@ export class AttachmentComponent {
33
33
  this.extensions$ = '';
34
34
  this.status = '';
35
35
  this.validateMessage = '';
36
+ this.localizedVal = PCore.getLocaleUtils().getLocaleValue;
37
+ this.localeCategory = 'CosmosFields';
38
+ this.uploadMultipleFilesLabel = this.localizedVal('file_upload_text_multiple', this.localeCategory);
39
+ this.uploadSingleFileLabel = this.localizedVal('file_upload_text_one', this.localeCategory);
36
40
  this.fileDownload = (data, fileName, ext) => {
37
41
  const file = ext ? `${fileName}.${ext}` : fileName;
38
42
  download(atob(data), file);
@@ -574,15 +578,15 @@ export class AttachmentComponent {
574
578
  }
575
579
  };
576
580
  }
577
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AttachmentComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.Utils }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
578
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AttachmentComponent, isStandalone: true, selector: "app-attachment", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, ngImport: i0, template: "<div class=\"psdk-label-infix-readonly\" *ngIf=\"bVisible$\">\n <span class=\"psdk-label-wrapper-readonly\">\n <label [ngClass]=\"{ 'psdk-label-readonly': true, 'label-required': bRequired$ === true }\" [htmlFor]=\"att_valueRef\">{{ label$ }}</label>\n </span>\n <div\n [ngClass]=\"{ 'psdk-modal-file-selector': status !== 'error', 'psdk-modal-file-selector-error': status === 'error' }\"\n id=\"attachment-container\"\n *ngIf=\"bShowSelector$\"\n >\n <mat-spinner *ngIf=\"bLoading$\" class=\"progress-spinner\" diameter=\"40\"></mat-spinner>\n <input hidden type=\"file\" [required]=\"bRequired$\" #uploader [id]=\"att_valueRef\" [multiple]=\"allowMultiple$\" (change)=\"uploadMyFiles($event)\" />\n\n <button mat-stroked-button color=\"primary\" [disabled]=\"bDisabled$\" (click)=\"uploader.click()\">\n {{ allowMultiple$ ? 'Upload files' : 'Upload file' }}\n </button>\n </div>\n <span *ngIf=\"validateMessage\" class=\"file-error\">{{ validateMessage }}</span>\n\n <div class=\"psdk-attachment-list\" *ngIf=\"arFileList$ != null && arFileList$.length > 0\">\n <div *ngFor=\"let attachment of arFileList$\">\n <component-mapper\n *ngIf=\"attachment.noDeleteIcon !== true; else showfull\"\n name=\"SummaryItem\"\n [props]=\"{ item$: attachment, menuIconOverride$: 'trash', menuIconOverrideAction$: removeFileFromList$ }\"\n ></component-mapper>\n <ng-template #showfull>\n <component-mapper name=\"SummaryItem\" [props]=\"{ item$: attachment, menuIconOverrideAction$: removeFileFromList$ }\"></component-mapper>\n </ng-template>\n </div>\n </div>\n</div>\n", styles: [".progress-spinner{text-align:center;position:absolute;left:45%}.psdk-modal-file-selector{border:1px dashed var(--app-neutral-dark-color);width:100%;padding:.3rem;text-align:center;position:relative}.label-required:after{display:inline;content:\" *\";vertical-align:top;color:var(--app-neutral-dark-color)}.file-error{color:var(--app-error-light-color)}.psdk-modal-file-selector-error{border:1px dashed var(--app-error-light-color);width:100%;padding:.3rem;text-align:center;position:relative}.psdk-full-width{width:100%}.psdk-label-readonly{opacity:54%;font-size:.8rem;font-weight:400}.psdk-data-readonly{padding-top:.625rem;width:100%}.psdk-attachment-list{border:1px solid var(--app-neutral-color)}::ng-deep .mat-mdc-form-field-infix{width:auto}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatProgressSpinnerModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i4.MatProgressSpinner; }), selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatButtonModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i5.MatButton; }), selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
581
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AttachmentComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.Utils }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
582
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AttachmentComponent, isStandalone: true, selector: "app-attachment", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, ngImport: i0, template: "<div class=\"psdk-label-infix-readonly\" *ngIf=\"bVisible$\">\n <span class=\"psdk-label-wrapper-readonly\">\n <label [ngClass]=\"{ 'psdk-label-readonly': true, 'label-required': bRequired$ === true }\" [htmlFor]=\"att_valueRef\">{{ label$ }}</label>\n </span>\n <div\n [ngClass]=\"{ 'psdk-modal-file-selector': status !== 'error', 'psdk-modal-file-selector-error': status === 'error' }\"\n id=\"attachment-container\"\n *ngIf=\"bShowSelector$\"\n >\n <mat-spinner *ngIf=\"bLoading$\" class=\"progress-spinner\" diameter=\"40\"></mat-spinner>\n <input hidden type=\"file\" [required]=\"bRequired$\" #uploader [id]=\"att_valueRef\" [multiple]=\"allowMultiple$\" (change)=\"uploadMyFiles($event)\" />\n\n <button mat-stroked-button color=\"primary\" [disabled]=\"bDisabled$\" (click)=\"uploader.click()\">\n {{\n allowMultiple$\n ? uploadMultipleFilesLabel === 'file_upload_text_multiple'\n ? 'Choose files'\n : uploadMultipleFilesLabel\n : uploadSingleFileLabel === 'file_upload_text_one'\n ? 'Choose a file'\n : uploadSingleFileLabel\n }}\n </button>\n </div>\n <span *ngIf=\"validateMessage\" class=\"file-error\">{{ validateMessage }}</span>\n\n <div class=\"psdk-attachment-list\" *ngIf=\"arFileList$ != null && arFileList$.length > 0\">\n <div *ngFor=\"let attachment of arFileList$\">\n <component-mapper\n *ngIf=\"attachment.noDeleteIcon !== true; else showfull\"\n name=\"SummaryItem\"\n [props]=\"{ item$: attachment, menuIconOverride$: 'trash', menuIconOverrideAction$: removeFileFromList$ }\"\n ></component-mapper>\n <ng-template #showfull>\n <component-mapper name=\"SummaryItem\" [props]=\"{ item$: attachment, menuIconOverrideAction$: removeFileFromList$ }\"></component-mapper>\n </ng-template>\n </div>\n </div>\n</div>\n", styles: [".progress-spinner{text-align:center;position:absolute;left:45%}.psdk-modal-file-selector{border:1px dashed var(--app-neutral-dark-color);width:100%;padding:.3rem;text-align:center;position:relative}.label-required:after{display:inline;content:\" *\";vertical-align:top;color:var(--app-neutral-dark-color)}.file-error{color:var(--app-error-light-color)}.psdk-modal-file-selector-error{border:1px dashed var(--app-error-light-color);width:100%;padding:.3rem;text-align:center;position:relative}.psdk-full-width{width:100%}.psdk-label-readonly{opacity:54%;font-size:.8rem;font-weight:400}.psdk-data-readonly{padding-top:.625rem;width:100%}.psdk-attachment-list{border:1px solid var(--app-neutral-color)}::ng-deep .mat-mdc-form-field-infix{width:auto}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i3.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i3.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i3.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatProgressSpinnerModule) }, { kind: "component", type: i0.forwardRef(() => i4.MatProgressSpinner), selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatButtonModule) }, { kind: "component", type: i0.forwardRef(() => i5.MatButton), selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
579
583
  }
580
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AttachmentComponent, decorators: [{
584
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AttachmentComponent, decorators: [{
581
585
  type: Component,
582
- args: [{ selector: 'app-attachment', standalone: true, imports: [CommonModule, MatProgressSpinnerModule, MatButtonModule, forwardRef(() => ComponentMapperComponent)], template: "<div class=\"psdk-label-infix-readonly\" *ngIf=\"bVisible$\">\n <span class=\"psdk-label-wrapper-readonly\">\n <label [ngClass]=\"{ 'psdk-label-readonly': true, 'label-required': bRequired$ === true }\" [htmlFor]=\"att_valueRef\">{{ label$ }}</label>\n </span>\n <div\n [ngClass]=\"{ 'psdk-modal-file-selector': status !== 'error', 'psdk-modal-file-selector-error': status === 'error' }\"\n id=\"attachment-container\"\n *ngIf=\"bShowSelector$\"\n >\n <mat-spinner *ngIf=\"bLoading$\" class=\"progress-spinner\" diameter=\"40\"></mat-spinner>\n <input hidden type=\"file\" [required]=\"bRequired$\" #uploader [id]=\"att_valueRef\" [multiple]=\"allowMultiple$\" (change)=\"uploadMyFiles($event)\" />\n\n <button mat-stroked-button color=\"primary\" [disabled]=\"bDisabled$\" (click)=\"uploader.click()\">\n {{ allowMultiple$ ? 'Upload files' : 'Upload file' }}\n </button>\n </div>\n <span *ngIf=\"validateMessage\" class=\"file-error\">{{ validateMessage }}</span>\n\n <div class=\"psdk-attachment-list\" *ngIf=\"arFileList$ != null && arFileList$.length > 0\">\n <div *ngFor=\"let attachment of arFileList$\">\n <component-mapper\n *ngIf=\"attachment.noDeleteIcon !== true; else showfull\"\n name=\"SummaryItem\"\n [props]=\"{ item$: attachment, menuIconOverride$: 'trash', menuIconOverrideAction$: removeFileFromList$ }\"\n ></component-mapper>\n <ng-template #showfull>\n <component-mapper name=\"SummaryItem\" [props]=\"{ item$: attachment, menuIconOverrideAction$: removeFileFromList$ }\"></component-mapper>\n </ng-template>\n </div>\n </div>\n</div>\n", styles: [".progress-spinner{text-align:center;position:absolute;left:45%}.psdk-modal-file-selector{border:1px dashed var(--app-neutral-dark-color);width:100%;padding:.3rem;text-align:center;position:relative}.label-required:after{display:inline;content:\" *\";vertical-align:top;color:var(--app-neutral-dark-color)}.file-error{color:var(--app-error-light-color)}.psdk-modal-file-selector-error{border:1px dashed var(--app-error-light-color);width:100%;padding:.3rem;text-align:center;position:relative}.psdk-full-width{width:100%}.psdk-label-readonly{opacity:54%;font-size:.8rem;font-weight:400}.psdk-data-readonly{padding-top:.625rem;width:100%}.psdk-attachment-list{border:1px solid var(--app-neutral-color)}::ng-deep .mat-mdc-form-field-infix{width:auto}\n"] }]
583
- }], ctorParameters: function () { return [{ type: i1.AngularPConnectService }, { type: i2.Utils }, { type: i0.NgZone }]; }, propDecorators: { pConn$: [{
586
+ args: [{ selector: 'app-attachment', standalone: true, imports: [CommonModule, MatProgressSpinnerModule, MatButtonModule, forwardRef(() => ComponentMapperComponent)], template: "<div class=\"psdk-label-infix-readonly\" *ngIf=\"bVisible$\">\n <span class=\"psdk-label-wrapper-readonly\">\n <label [ngClass]=\"{ 'psdk-label-readonly': true, 'label-required': bRequired$ === true }\" [htmlFor]=\"att_valueRef\">{{ label$ }}</label>\n </span>\n <div\n [ngClass]=\"{ 'psdk-modal-file-selector': status !== 'error', 'psdk-modal-file-selector-error': status === 'error' }\"\n id=\"attachment-container\"\n *ngIf=\"bShowSelector$\"\n >\n <mat-spinner *ngIf=\"bLoading$\" class=\"progress-spinner\" diameter=\"40\"></mat-spinner>\n <input hidden type=\"file\" [required]=\"bRequired$\" #uploader [id]=\"att_valueRef\" [multiple]=\"allowMultiple$\" (change)=\"uploadMyFiles($event)\" />\n\n <button mat-stroked-button color=\"primary\" [disabled]=\"bDisabled$\" (click)=\"uploader.click()\">\n {{\n allowMultiple$\n ? uploadMultipleFilesLabel === 'file_upload_text_multiple'\n ? 'Choose files'\n : uploadMultipleFilesLabel\n : uploadSingleFileLabel === 'file_upload_text_one'\n ? 'Choose a file'\n : uploadSingleFileLabel\n }}\n </button>\n </div>\n <span *ngIf=\"validateMessage\" class=\"file-error\">{{ validateMessage }}</span>\n\n <div class=\"psdk-attachment-list\" *ngIf=\"arFileList$ != null && arFileList$.length > 0\">\n <div *ngFor=\"let attachment of arFileList$\">\n <component-mapper\n *ngIf=\"attachment.noDeleteIcon !== true; else showfull\"\n name=\"SummaryItem\"\n [props]=\"{ item$: attachment, menuIconOverride$: 'trash', menuIconOverrideAction$: removeFileFromList$ }\"\n ></component-mapper>\n <ng-template #showfull>\n <component-mapper name=\"SummaryItem\" [props]=\"{ item$: attachment, menuIconOverrideAction$: removeFileFromList$ }\"></component-mapper>\n </ng-template>\n </div>\n </div>\n</div>\n", styles: [".progress-spinner{text-align:center;position:absolute;left:45%}.psdk-modal-file-selector{border:1px dashed var(--app-neutral-dark-color);width:100%;padding:.3rem;text-align:center;position:relative}.label-required:after{display:inline;content:\" *\";vertical-align:top;color:var(--app-neutral-dark-color)}.file-error{color:var(--app-error-light-color)}.psdk-modal-file-selector-error{border:1px dashed var(--app-error-light-color);width:100%;padding:.3rem;text-align:center;position:relative}.psdk-full-width{width:100%}.psdk-label-readonly{opacity:54%;font-size:.8rem;font-weight:400}.psdk-data-readonly{padding-top:.625rem;width:100%}.psdk-attachment-list{border:1px solid var(--app-neutral-color)}::ng-deep .mat-mdc-form-field-infix{width:auto}\n"] }]
587
+ }], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i2.Utils }, { type: i0.NgZone }], propDecorators: { pConn$: [{
584
588
  type: Input
585
589
  }], formGroup$: [{
586
590
  type: Input
587
591
  }] } });
588
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2F0dGFjaG1lbnQvYXR0YWNobWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2F0dGFjaG1lbnQvYXR0YWNobWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBVSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFeEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLFFBQVEsTUFBTSxZQUFZLENBQUM7QUFHbEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOERBQThELENBQUM7Ozs7Ozs7QUFpQnhHLE1BQU0sT0FBTyxtQkFBbUI7SUFpQzlCLFlBQ1UsZUFBdUMsRUFDdkMsS0FBWSxFQUNaLE1BQWM7UUFGZCxvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFDdkMsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNaLFdBQU0sR0FBTixNQUFNLENBQVE7UUFoQ3hCLHVDQUF1QztRQUN2Qyx3QkFBbUIsR0FBd0IsRUFBRSxDQUFDO1FBRTlDLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFFWixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixj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QUFDLFlBQVk7Z0JBQzFCLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQzthQUNsRTtZQUNELGFBQWEsRUFBRTtnQkFDYixHQUFHLE9BQU87YUFDWDtTQUNGLENBQUM7SUFDSixDQUFDOytHQXRxQlUsbUJBQW1CO21HQUFuQixtQkFBbUIsa0lDekJoQyxtbkRBK0JBLHkwQkRSWSxZQUFZLHlmQUFFLHdCQUF3QixnVEFBRSxlQUFlLDBWQUFtQix3QkFBd0I7OzRGQUVqRyxtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBR2QsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQztzSkFHckcsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE5nWm9uZSwgZm9yd2FyZFJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Byb2dyZXNzLXNwaW5uZXInO1xuaW1wb3J0IGRvd25sb2FkIGZyb20gJ2Rvd25sb2FkanMnO1xuaW1wb3J0IHsgQW5ndWxhclBDb25uZWN0RGF0YSwgQW5ndWxhclBDb25uZWN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvYW5ndWxhci1wY29ubmVjdCc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL3V0aWxzJztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQQ29ubkZpZWxkUHJvcHMgfSBmcm9tICcuLi8uLi8uLi9fdHlwZXMvUENvbm5Qcm9wcy5pbnRlcmZhY2UnO1xuXG5pbnRlcmZhY2UgQXR0YWNobWVudFByb3BzIGV4dGVuZHMgT21pdDxQQ29ubkZpZWxkUHJvcHMsICd2YWx1ZSc+IHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiB0aGlzIGNvbXBvbmVudFxuICB2YWx1ZTogYW55O1xuICBleHRlbnNpb25zOiBhbnk7XG4gIGFsbG93TXVsdGlwbGU6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1hdHRhY2htZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F0dGFjaG1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdHRhY2htZW50LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCldXG59KVxuZXhwb3J0IGNsYXNzIEF0dGFjaG1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuICBASW5wdXQoKSBmb3JtR3JvdXAkOiBGb3JtR3JvdXA7XG5cbiAgLy8gRm9yIGludGVyYWN0aW9uIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcblxuICBsYWJlbCQgPSAnJztcbiAgdmFsdWUkOiBhbnk7XG4gIGJSZXF1aXJlZCQgPSBmYWxzZTtcbiAgYlJlYWRvbmx5JCA9IGZhbHNlO1xuICBiRGlzYWJsZWQkID0gZmFsc2U7XG4gIGJWaXNpYmxlJCA9IHRydWU7XG4gIGJMb2FkaW5nJCA9IGZhbHNlO1xuICBhckZpbGVzJDogYW55W10gPSBbXTtcbiAgYXJGaWxlTGlzdCQ6IGFueVtdID0gW107XG4gIHJlbW92ZUZpbGVGcm9tTGlzdCQ6IGFueTtcbiAgYXJNZW51TGlzdCQ6IGFueVtdID0gW107XG4gIGJTaG93U2VsZWN0b3IkID0gdHJ1ZTtcbiAgYlNob3dKdXN0RGVsZXRlJCA9IGZhbHNlO1xuICBhdHRfdmFsdWVSZWY6IGFueTtcbiAgYXR0X2NhdGVnb3J5TmFtZTogc3RyaW5nO1xuICBhdHRfaWQ6IHN0cmluZztcbiAgbXlGaWxlczogYW55O1xuICBmaWxlVGVtcDogYW55ID0ge307XG4gIGNhc2VJRDogYW55O1xuICBhbGxvd011bHRpcGxlJCA9IGZhbHNlO1xuICBleHRlbnNpb25zJCA9ICcnO1xuICBzdGF0dXMgPSAnJztcbiAgdmFsaWRhdGVNZXNzYWdlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcbiAgdmFsdWVSZWY6IHN0cmluZztcbiAgaW1hZ2VQYXRoJDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuXG4gICAgdGhpcy5yZW1vdmVGaWxlRnJvbUxpc3QkID0geyBvbkNsaWNrOiB0aGlzLl9yZW1vdmVGaWxlRnJvbUxpc3QuYmluZCh0aGlzKSB9O1xuXG4gICAgdGhpcy5jYXNlSUQgPSBQQ29yZS5nZXRTdG9yZVZhbHVlKCcucHlJRCcsICdjYXNlSW5mby5jb250ZW50JywgdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSk7XG5cbiAgICAvLyBsZXQgY29uZmlnUHJvcHM6IGFueSA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKTtcbiAgICB0aGlzLmNoZWNrQW5kVXBkYXRlKCk7XG4gIH1cblxuICBjaGVja0FuZFVwZGF0ZSgpIHtcbiAgICAvLyBTaG91bGQgYWx3YXlzIGNoZWNrIHRoZSBicmlkZ2UgdG8gc2VlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkXG4gICAgLy8gdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICAgIGNvbnN0IGJVcGRhdGVTZWxmID0gdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuXG4gICAgLy8gT05MWSBjYWxsIHVwZGF0ZVNlbGYgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGVcbiAgICBpZiAoYlVwZGF0ZVNlbGYpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbikge1xuICAgICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4oKTtcbiAgICB9XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnVuc3Vic2NyaWJlKFBDb3JlLmdldENvbnN0YW50cygpLlBVQl9TVUJfRVZFTlRTLkNBU0VfRVZFTlRTLkFTU0lHTk1FTlRfU1VCTUlTU0lPTiwgdGhpcy5jYXNlSUQpO1xuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuICB9XG5cbiAgdXBkYXRlQXR0YWNobWVudHNJbmZvKCkge1xuICAgIC8vIEB0cy1pZ25vcmUgLSBQcm9wZXJ0eSAnYXR0YWNobWVudHNJbmZvJyBkb2VzIG5vdCBleGlzdCBvbiB0eXBlICdDMTFuRW52J1xuICAgIGlmICghdGhpcy5wQ29ubiQuYXR0YWNobWVudHNJbmZvKSB7XG4gICAgICAvLyBAdHMtaWdub3JlIC0gUHJvcGVydHkgJ2F0dGFjaG1lbnRzSW5mbycgZG9lcyBub3QgZXhpc3Qgb24gdHlwZSAnQzExbkVudidcbiAgICAgIHRoaXMucENvbm4kLmF0dGFjaG1lbnRzSW5mbyA9IHtcbiAgICAgICAgdHlwZTogJ0ZpbGUnLFxuICAgICAgICBhdHRhY2htZW50RmllbGROYW1lOiB0aGlzLmF0dF92YWx1ZVJlZixcbiAgICAgICAgY2F0ZWdvcnk6IHRoaXMuYXR0X2NhdGVnb3J5TmFtZVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcm9jZXNzRmlsZShmaWxlLCBpKSB7XG4gICAgZmlsZS5wcm9wcy50eXBlID0gZmlsZS5yZXNwb25zZVByb3BzLnB5TWltZUZpbGVFeHRlbnNpb247XG4gICAgZmlsZS5wcm9wcy5taW1lVHlwZSA9IGZpbGUucmVzcG9uc2VQcm9wcy5weU1pbWVGaWxlRXh0ZW5zaW9uO1xuICAgIGZpbGUucHJvcHMuSUQgPSBmaWxlLnJlc3BvbnNlUHJvcHMucHpJbnNLZXk7XG5cbiAgICBjb25zdCBhck1lbnVMaXN0ID0gW1xuICAgICAge1xuICAgICAgICBpY29uOiAnZG93bmxvYWQnLFxuICAgICAgICB0ZXh0OiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnRG93bmxvYWQnLCAnJywgJycpLFxuICAgICAgICBvbkNsaWNrOiAoKSA9PiB0aGlzLl9kb3dubG9hZEZpbGVGcm9tTGlzdCh0aGlzLnZhbHVlJC5weFJlc3VsdHNbaV0pXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICB0ZXh0OiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnRGVsZXRlJywgJycsICcnKSxcbiAgICAgICAgb25DbGljazogKCkgPT4gdGhpcy5fcmVtb3ZlRmlsZUZyb21MaXN0KHRoaXMuYXJGaWxlTGlzdCRbaV0pXG4gICAgICB9XG4gICAgXTtcblxuICAgIGNvbnN0IGFyRmlsZXNBdHRhY2htZW50SURzOiBhbnkgPSBbXTtcbiAgICB0aGlzLmFyRmlsZUxpc3QkLmZvckVhY2goYXJGaWxlID0+IHtcbiAgICAgIGFyRmlsZXNBdHRhY2htZW50SURzLnB1c2goYXJGaWxlLmlkKTtcbiAgICB9KTtcblxuICAgIGlmICghYXJGaWxlc0F0dGFjaG1lbnRJRHMuaW5jbHVkZXMoZmlsZS5wcm9wcy5JRCkpIHtcbiAgICAgIHRoaXMuYXJGaWxlTGlzdCQucHVzaChcbiAgICAgICAgdGhpcy5nZXROZXdMaXN0VXRpbGl0eUl0ZW1Qcm9wcyh7XG4gICAgICAgICAgYXR0OiBmaWxlLnByb3BzLFxuICAgICAgICAgIGRvd25sb2FkRmlsZTogbnVsbCxcbiAgICAgICAgICBjYW5jZWxGaWxlOiBudWxsLFxuICAgICAgICAgIGRlbGV0ZUZpbGU6IG51bGwsXG4gICAgICAgICAgcmVtb3ZlRmlsZTogbnVsbFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmFyRmlsZUxpc3QkW2ldLmFjdGlvbnMgPSBhck1lbnVMaXN0O1xuICAgIHRoaXMuYXJGaWxlTGlzdCRbaV0ubm9EZWxldGVJY29uID0gdHJ1ZTtcblxuICAgIHRoaXMuYlNob3dTZWxlY3RvciQgPSBmYWxzZTtcbiAgfVxuXG4gIHVwZGF0ZVNlbGYoKSB7XG4gICAgY29uc3QgY29uZmlnUHJvcHM6IEF0dGFjaG1lbnRQcm9wcyA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKSBhcyBBdHRhY2htZW50UHJvcHM7XG4gICAgY29uc3Qgc3RhdGVQcm9wczogYW55ID0gdGhpcy5wQ29ubiQuZ2V0U3RhdGVQcm9wcygpO1xuXG4gICAgY29uc3QgeyB2YWx1ZSwgbGFiZWwsIGV4dGVuc2lvbnMgfSA9IGNvbmZpZ1Byb3BzO1xuXG4gICAgaWYgKGNvbmZpZ1Byb3BzLnJlcXVpcmVkICE9IG51bGwpIHtcbiAgICAgIHRoaXMuYlJlcXVpcmVkJCA9IHRoaXMudXRpbHMuZ2V0Qm9vbGVhblZhbHVlKGNvbmZpZ1Byb3BzLnJlcXVpcmVkKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZ1Byb3BzLnZpc2liaWxpdHkgIT0gbnVsbCkge1xuICAgICAgdGhpcy5iVmlzaWJsZSQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZShjb25maWdQcm9wcy52aXNpYmlsaXR5KTtcbiAgICB9XG5cbiAgICAvLyBkaXNhYmxlZFxuICAgIGlmIChjb25maWdQcm9wcy5kaXNhYmxlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuYkRpc2FibGVkJCA9IHRoaXMudXRpbHMuZ2V0Qm9vbGVhblZhbHVlKGNvbmZpZ1Byb3BzLmRpc2FibGVkKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnUHJvcHMucmVhZE9ubHkgIT0gbnVsbCkge1xuICAgICAgdGhpcy5iUmVhZG9ubHkkID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUoY29uZmlnUHJvcHMucmVhZE9ubHkpO1xuICAgIH1cblxuICAgIGlmIChjb25maWdQcm9wcy5hbGxvd011bHRpcGxlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuYWxsb3dNdWx0aXBsZSQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZShjb25maWdQcm9wcy5hbGxvd011bHRpcGxlKTtcbiAgICB9XG5cbiAgICB0aGlzLmJTaG93SnVzdERlbGV0ZSQgPSB0cnVlO1xuICAgIHRoaXMubGFiZWwkID0gbGFiZWw7XG4gICAgdGhpcy52YWx1ZSQgPSB2YWx1ZTtcbiAgICB0aGlzLnN0YXR1cyA9IHN0YXRlUHJvcHMuc3RhdHVzO1xuICAgIHRoaXMudmFsaWRhdGVNZXNzYWdlID0gdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnZhbGlkYXRlTWVzc2FnZTtcbiAgICB0aGlzLmV4dGVuc2lvbnMkID0gZXh0ZW5zaW9ucztcbiAgICB0aGlzLnZhbHVlUmVmID0gKHRoaXMucENvbm4kLmdldFN0YXRlUHJvcHMoKSBhcyBhbnkpLnZhbHVlO1xuICAgIHRoaXMudmFsdWVSZWYgPSB0aGlzLnZhbHVlUmVmLnN0YXJ0c1dpdGgoJy4nKSA/IHRoaXMudmFsdWVSZWYuc3Vic3RyaW5nKDEpIDogdGhpcy52YWx1ZVJlZjtcblxuICAgIC8qIHRoaXMgaXMgYSB0ZW1wb3JhcnkgZml4IGJlY2F1c2UgcmVxdWlyZWQgaXMgc3VwcG9zZWQgdG8gYmUgcGFzc2VkIGFzIGEgYm9vbGVhbiBhbmQgTk9UIGFzIGEgc3RyaW5nICovXG4gICAgbGV0IHsgcmVxdWlyZWQsIGRpc2FibGVkIH0gPSBjb25maWdQcm9wcztcbiAgICBbcmVxdWlyZWQsIGRpc2FibGVkXSA9IFtyZXF1aXJlZCwgZGlzYWJsZWRdLm1hcChwcm9wID0+IHByb3AgPT09IHRydWUgfHwgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJyAmJiBwcm9wID09PSAndHJ1ZScpKTtcblxuICAgIHRoaXMuYXR0X2NhdGVnb3J5TmFtZSA9ICcnO1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5weUNhdGVnb3J5TmFtZSkge1xuICAgICAgdGhpcy5hdHRfY2F0ZWdvcnlOYW1lID0gdmFsdWUucHlDYXRlZ29yeU5hbWU7XG4gICAgfVxuXG4gICAgdGhpcy5hdHRfdmFsdWVSZWYgPSAodGhpcy5wQ29ubiQuZ2V0U3RhdGVQcm9wcygpIGFzIGFueSkudmFsdWU7XG4gICAgdGhpcy5hdHRfdmFsdWVSZWYgPSB0aGlzLmF0dF92YWx1ZVJlZi5pbmRleE9mKCcuJykgPT09IDAgPyB0aGlzLmF0dF92YWx1ZVJlZi5zdWJzdHJpbmcoMSkgOiB0aGlzLmF0dF92YWx1ZVJlZjtcblxuICAgIHRoaXMudXBkYXRlQXR0YWNobWVudHMoKTtcbiAgfVxuXG4gIHVwZGF0ZUF0dGFjaG1lbnRzKCkge1xuICAgIGNvbnN0IGF0dGFjaG1lbnRzRnJvbVNlcnZlciA9IHRoaXMudmFsdWUkICYmIHRoaXMudmFsdWUkLnB4UmVzdWx0cyAmJiArdGhpcy52YWx1ZSQucHlDb3VudCA+IDA7XG5cbiAgICBpZiAoYXR0YWNobWVudHNGcm9tU2VydmVyKSB7XG4gICAgICB0aGlzLnVwZGF0ZUF0dGFjaG1lbnRzRnJvbVNlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBHZXQgdGhlIGF0dGFjaG1lbnRzIGZyb20gdGhlIFJlZHV4XG4gICAgICB0aGlzLm15RmlsZXMgPSB0aGlzLmdldEN1cnJlbnRBdHRhY2htZW50c0xpc3QodGhpcy5nZXRBdHRhY2htZW50S2V5KHRoaXMuYXR0X3ZhbHVlUmVmKSwgdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSk7XG5cbiAgICAgIGlmICh0aGlzLm15RmlsZXM/Lmxlbmd0aCAmJiB0aGlzLmFyRmlsZXMkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmFyRmlsZUxpc3QkID0gdGhpcy5teUZpbGVzLm1hcChhdHQgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldE5ld0xpc3RVdGlsaXR5SXRlbVByb3BzKHtcbiAgICAgICAgICAgIGF0dCxcbiAgICAgICAgICAgIGRvd25sb2FkRmlsZTogbnVsbCxcbiAgICAgICAgICAgIGNhbmNlbEZpbGU6IG51bGwsXG4gICAgICAgICAgICBkZWxldGVGaWxlOiBudWxsLFxuICAgICAgICAgICAgcmVtb3ZlRmlsZTogbnVsbFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbXlGaWxlc0F0dGFjaG1lbnRJRHM6IGFueSA9IFtdO1xuICAgICAgdGhpcy5teUZpbGVzLmZvckVhY2gobXlGaWxlID0+IHtcbiAgICAgICAgbXlGaWxlc0F0dGFjaG1lbnRJRHMucHVzaChteUZpbGUuSUQpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuYXJGaWxlcyQuZm9yRWFjaChhckZpbGUgPT4ge1xuICAgICAgICBpZiAoIW15RmlsZXNBdHRhY2htZW50SURzLmluY2x1ZGVzKGFyRmlsZS5JRCkpIHtcbiAgICAgICAgICB0aGlzLm15RmlsZXMgPSBbLi4udGhpcy5teUZpbGVzLCBhckZpbGVdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmJTaG93SnVzdERlbGV0ZSQgPSB0cnVlO1xuICAgIHRoaXMuYlNob3dTZWxlY3RvciQgPSAhKHRoaXMuYXJGaWxlTGlzdCQ/Lmxlbmd0aCA+IDApIHx8IHRoaXMuYWxsb3dNdWx0aXBsZSQ7XG5cbiAgICBpZiAodGhpcy5hckZpbGVMaXN0JC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLkNoZWNrRm9ySW52YWxpZEF0dGFjaG1lbnQoKTtcbiAgICB9XG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5zdWJzY3JpYmUoXG4gICAgICBQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5DQVNFX0VWRU5UUy5BU1NJR05NRU5UX1NVQk1JU1NJT04sXG4gICAgICB0aGlzLnJlc2V0QXR0YWNobWVudFN0b3JlZFN0YXRlLmJpbmQodGhpcyksXG4gICAgICB0aGlzLmNhc2VJRFxuICAgICk7XG4gIH1cblxuICB1cGRhdGVBdHRhY2htZW50c0Zyb21TZXJ2ZXIoKSB7XG4gICAgdGhpcy52YWx1ZSQucHhSZXN1bHRzLmZvckVhY2goKGF0dGFjaG1lbnQsIGkpID0+IHtcbiAgICAgIGNvbnN0IGZpbGU6IGFueSA9IHRoaXMuYnVpbGRGaWxlUHJvcHNGcm9tUmVzcG9uc2UoYXR0YWNobWVudCk7XG4gICAgICBpZiAoZmlsZS5yZXNwb25zZVByb3BzKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQXR0YWNobWVudHNJbmZvKCk7XG4gICAgICAgIGlmIChmaWxlLnJlc3BvbnNlUHJvcHMucHpJbnNLZXkgJiYgIWZpbGUucmVzcG9uc2VQcm9wcy5wekluc0tleS5pbmNsdWRlcygndGVtcCcpKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzRmlsZShmaWxlLCBpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsZSkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRBdHRhY2htZW50TGlzdCA9IHRoaXMuZ2V0Q3VycmVudEF0dGFjaG1lbnRzTGlzdCh0aGlzLmdldEF0dGFjaG1lbnRLZXkodGhpcy5hdHRfdmFsdWVSZWYpLCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKTtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGN1cnJlbnRBdHRhY2htZW50TGlzdC5maW5kSW5kZXgoZWxlbWVudCA9PiBlbGVtZW50LnByb3BzLklEID09PSBmaWxlLnByb3BzLklEKTtcbiAgICAgICAgICBsZXQgdGVtcEZpbGVzOiBhbnkgPSBbXTtcbiAgICAgICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgICAgICB0ZW1wRmlsZXMgPSBbZmlsZV07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgUENvcmUuZ2V0U3RhdGVVdGlscygpLnVwZGF0ZVN0YXRlKFxuICAgICAgICAgICAgdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0QXR0YWNobWVudEtleSh0aGlzLmF0dF92YWx1ZVJlZiksXG4gICAgICAgICAgICBbLi4uY3VycmVudEF0dGFjaG1lbnRMaXN0LCAuLi50ZW1wRmlsZXNdLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwYWdlUmVmZXJlbmNlOiAnY29udGV4dF9kYXRhJyxcbiAgICAgICAgICAgICAgaXNBcnJheURlZXBNZXJnZTogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXNldEF0dGFjaG1lbnRTdG9yZWRTdGF0ZSgpIHtcbiAgICBQQ29yZS5nZXRTdGF0ZVV0aWxzKCkudXBkYXRlU3RhdGUodGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSwgdGhpcy5nZXRBdHRhY2htZW50S2V5KHRoaXMuYXR0X3ZhbHVlUmVmKSwgdW5kZWZpbmVkLCB7XG4gICAgICBwYWdlUmVmZXJlbmNlOiAnY29udGV4dF9kYXRhJyxcbiAgICAgIGlzQXJyYXlEZWVwTWVyZ2U6IGZhbHNlXG4gICAgfSk7XG4gIH1cblxuICBfZG93bmxvYWRGaWxlRnJvbUxpc3QoZmlsZU9iajogYW55KSB7XG4gICAgUENvcmUuZ2V0QXR0YWNobWVudFV0aWxzKClcbiAgICAgIC8vIEB0cy1pZ25vcmUgLSAzcmQgcGFyYW1ldGVyIFwicmVzcG9uc2VFbmNvZGluZ1wiIHNob3VsZCBiZSBvcHRpb25hbFxuICAgICAgLmRvd25sb2FkQXR0YWNobWVudChmaWxlT2JqLnB6SW5zS2V5LCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKVxuICAgICAgLnRoZW4oKGNvbnRlbnQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBleHRlbnNpb24gPSBmaWxlT2JqLnB5QXR0YWNoTmFtZS5zcGxpdCgnLicpLnBvcCgpO1xuICAgICAgICB0aGlzLmZpbGVEb3dubG9hZChjb250ZW50LmRhdGEsIGZpbGVPYmoucHlGaWxlTmFtZSwgZXh0ZW5zaW9uKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgfSk7XG4gIH1cblxuICBmaWxlRG93bmxvYWQgPSAoZGF0YSwgZmlsZU5hbWUsIGV4dCkgPT4ge1xuICAgIGNvbnN0IGZpbGUgPSBleHQgPyBgJHtmaWxlTmFtZX0uJHtleHR9YCA6IGZpbGVOYW1lO1xuICAgIGRvd25sb2FkKGF0b2IoZGF0YSksIGZpbGUpO1xuICB9O1xuXG4gIGdldEF0dGFjaG1lbnRLZXkgPSAobmFtZSA9ICcnKSA9PiAobmFtZSA/IGBhdHRhY2htZW50c0xpc3QuJHtuYW1lfWAgOiAnYXR0YWNobWVudHNMaXN0Jyk7XG5cbiAgQ2hlY2tGb3JJbnZhbGlkQXR0YWNobWVudCgpIHtcbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgdGhpcy5hckZpbGVMaXN0JC5mb3JFYWNoKGZpbGUgPT4ge1xuICAgICAgaWYgKGZpbGUuc2Vjb25kYXJ5LmVycm9yKSB7XG4gICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgUENvcmUuZ2V0TWVzc2FnZU1hbmFnZXIoKS5jbGVhck1lc3NhZ2VzKHtcbiAgICAgICAgdHlwZTogUENvcmUuZ2V0Q29uc3RhbnRzKCkuTUVTU0FHRVMuTUVTU0FHRVNfVFlQRV9FUlJPUixcbiAgICAgICAgcHJvcGVydHk6ICh0aGlzLnBDb25uJC5nZXRTdGF0ZVByb3BzKCkgYXMgYW55KS52YWx1ZSxcbiAgICAgICAgcGFnZVJlZmVyZW5jZTogdGhpcy5wQ29ubiQuZ2V0UGFnZVJlZmVyZW5jZSgpLFxuICAgICAgICBjb250ZXh0OiB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBfcmVtb3ZlRmlsZUZyb21MaXN0KGl0ZW06IGFueSkge1xuICAgIGNvbnN0IGZpbGVMaXN0SW5kZXggPSB0aGlzLmFyRmlsZUxpc3QkLmZpbmRJbmRleChlbGVtZW50ID0+IGVsZW1lbnQ/LmlkID09PSBpdGVtPy5pZCk7XG4gICAgY29uc3QgZmlsZUluZGV4ID0gdGhpcy5hckZpbGVzJC5maW5kSW5kZXgoZWxlbWVudCA9PiBlbGVtZW50Py5JRCA9PT0gaXRlbT8uaWQpO1xuXG4gICAgY29uc3QgYXR0YWNobWVudHNMaXN0ID0gW107XG4gICAgbGV0IGN1cnJlbnRBdHRhY2htZW50TGlzdCA9IHRoaXMuZ2V0Q3VycmVudEF0dGFjaG1lbnRzTGlzdCh0aGlzLmdldEF0dGFjaG1lbnRLZXkodGhpcy5hdHRfdmFsdWVSZWYpLCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKTtcbiAgICBpZiAodGhpcy52YWx1ZSQgJiYgdGhpcy52YWx1ZSQucHhSZXN1bHRzICYmICt0aGlzLnZhbHVlJC5weUNvdW50ID4gMCAmJiBpdGVtLmFjdGlvbnMpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRBdHRhY2htZW50cyA9IGN1cnJlbnRBdHRhY2htZW50TGlzdC5tYXAoYXR0YWNobWVudCA9PiB7XG4gICAgICAgIGlmIChhdHRhY2htZW50Py5JRCA9PT0gdGhpcy5hckZpbGVMaXN0JFtmaWxlTGlzdEluZGV4XS5pZCB8fCBhdHRhY2htZW50Py5wcm9wcz8uSUQgPT09IHRoaXMuYXJGaWxlTGlzdCRbZmlsZUxpc3RJbmRleF0uaWQpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi5hdHRhY2htZW50LCBkZWxldGU6IHRydWUsIGxhYmVsOiB0aGlzLnZhbHVlUmVmIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnQ7XG4gICAgICB9KTtcblxuICAgICAgLy8gdXBkYXRpbmcgdGhlIHJlZHV4IHN0b3JlIHRvIGhlbHAgZm9ybS1oYW5kbGVyIGluIHBhc3NpbmcgdGhlIGRhdGEgdG8gZGVsZXRlIHRoZSBmaWxlIGZyb20gc2VydmVyXG4gICAgICBQQ29yZS5nZXRTdGF0ZVV0aWxzKCkudXBkYXRlU3RhdGUodGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSwgdGhpcy5nZXRBdHRhY2htZW50S2V5KHRoaXMuYXR0X3ZhbHVlUmVmKSwgdXBkYXRlZEF0dGFjaG1lbnRzLCB7XG4gICAgICAgIHBhZ2VSZWZlcmVuY2U6ICdjb250ZXh0X2RhdGEnLFxuICAgICAgICBpc0FycmF5RGVlcE1lcmdlOiBmYWxzZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRBdHRhY2htZW50TGlzdCA9IGN1cnJlbnRBdHRhY2htZW50TGlzdC5maWx0ZXIoZiA9PiBmLklEICE9PSBpdGVtLmlkKTtcbiAgICAgIFBDb3JlLmdldFN0YXRlVXRpbHMoKS51cGRhdGVTdGF0ZShcbiAgICAgICAgdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSxcbiAgICAgICAgdGhpcy5nZXRBdHRhY2htZW50S2V5KHRoaXMuYXR0X3ZhbHVlUmVmKSxcbiAgICAgICAgWy4uLmN1cnJlbnRBdHRhY2htZW50TGlzdCwgLi4uYXR0YWNobWVudHNMaXN0XSxcbiAgICAgICAge1xuICAgICAgICAgIHBhZ2VSZWZlcmVuY2U6ICdjb250ZXh0X2RhdGEnLFxuICAgICAgICAgIGlzQXJyYXlEZWVwTWVyZ2U6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGZpbGVMaXN0SW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5hckZpbGVMaXN0JC5zcGxpY2UoZmlsZUxpc3RJbmRleCwgMSk7XG4gICAgfVxuICAgIGlmIChmaWxlSW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5hckZpbGVzJC5zcGxpY2UoZmlsZUluZGV4LCAxKTtcbiAgICB9XG5cbiAgICB0aGlzLkNoZWNrRm9ySW52YWxpZEF0dGFjaG1lbnQoKTtcblxuICAgIHRoaXMuYlNob3dTZWxlY3RvciQgPSAhKHRoaXMuYXJGaWxlTGlzdCQ/Lmxlbmd0aCA+IDApIHx8IHRoaXMuYWxsb3dNdWx0aXBsZSQ7XG4gIH1cblxuICBnZXRDdXJyZW50QXR0YWNobWVudHNMaXN0KGtleSwgY29udGV4dCkge1xuICAgIHJldHVybiBQQ29yZS5nZXRTdG9yZVZhbHVlKGAuJHtrZXl9YCwgJ2NvbnRleHRfZGF0YScsIGNvbnRleHQpIHx8IFtdO1xuICB9XG5cbiAgZXJyb3JIYW5kbGVyKGlzRmV0Y2hDYW5jZWxlZCwgZmlsZSkge1xuICAgIHJldHVybiBlcnJvciA9PiB7XG4gICAgICBpZiAoIWlzRmV0Y2hDYW5jZWxlZChlcnJvcikpIHtcbiAgICAgICAgbGV0IHVwbG9hZEZhaWxNc2cgPSB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnU29tZXRoaW5nIHdlbnQgd3JvbmcnLCAnJywgJycpO1xuICAgICAgICBpZiAoZXJyb3IucmVzcG9uc2UgJiYgZXJyb3IucmVzcG9uc2UuZGF0YSAmJiBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9yRGV0YWlscykge1xuICAgICAgICAgIHVwbG9hZEZhaWxNc2cgPSB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZShlcnJvci5yZXNwb25zZS5kYXRhLmVycm9yRGV0YWlsc1swXS5sb2NhbGl6ZWRWYWx1ZSwgJycsICcnKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IG15RmlsZSBvZiB0aGlzLm15RmlsZXMpIHtcbiAgICAgICAgICBpZiAobXlGaWxlLklEID09PSBmaWxlLklEKSB7XG4gICAgICAgICAgICBteUZpbGUubWV0YSA9IHVwbG9hZEZhaWxNc2c7XG4gICAgICAgICAgICBteUZpbGUuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgbXlGaWxlLmZpbGVOYW1lID0gdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ1VuYWJsZSB0byB1cGxvYWQgZmlsZScsICcnLCAnJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuYlNob3dTZWxlY3RvciQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hckZpbGVMaXN0JCA9IHRoaXMubXlGaWxlcy5tYXAoYXR0ID0+IHtcbiAgICAgICAgICBpZiAoYXR0LmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gYXR0O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXROZXdMaXN0VXRpbGl0eUl0ZW1Qcm9wcyh7XG4gICAgICAgICAgICBhdHQsXG4gICAgICAgICAgICBkb3dubG9hZEZpbGU6IG51bGwsXG4gICAgICAgICAgICBjYW5jZWxGaWxlOiBudWxsLFxuICAgICAgICAgICAgZGVsZXRlRmlsZTogbnVsbCxcbiAgICAgICAgICAgIHJlbW92ZUZpbGU6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgUENvcmUuZ2V0TWVzc2FnZU1hbmFnZXIoKS5hZGRNZXNzYWdlcyh7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG1lc3NhZ2VzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdFcnJvciB3aXRoIG9uZSBvciBtb3JlIGZpbGVzJywgJycsICcnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgcHJvcGVydHk6ICh0aGlzLnBDb25uJC5nZXRTdGF0ZVByb3BzKCkgYXMgYW55KS52YWx1ZSxcbiAgICAgICAgICBwYWdlUmVmZXJlbmNlOiB0aGlzLnBDb25uJC5nZXRQYWdlUmVmZXJlbmNlKCksXG4gICAgICAgICAgY29udGV4dDogdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmJTaG93SnVzdERlbGV0ZSQgPSB0cnVlO1xuICAgICAgICB0aGlzLmJMb2FkaW5nJCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfTtcbiAgfVxuXG4gIHVwbG9hZE15RmlsZXMoZXZlbnQ6IGFueSkge1xuICAgIGxldCBhcnJBdHRhY2htZW50RmlsZXM6IGFueSA9IFtdO1xuICAgIGlmICh0aGlzLmFyRmlsZXMkLmxlbmd0aCkge1xuICAgICAgYXJyQXR0YWNobWVudEZpbGVzID0gdGhpcy5hckZpbGVzJDtcbiAgICB9IGVsc2Uge1xuICAgICAgYXJyQXR0YWNobWVudEZpbGVzID0gdGhpcy5hckZpbGVMaXN0JDtcbiAgICB9XG4gICAgdGhpcy5hckZpbGVzJCA9IFsuLi5hcnJBdHRhY2htZW50RmlsZXMsIC4uLnRoaXMuZ2V0RmlsZXMoZXZlbnQudGFyZ2V0LmZpbGVzKV07XG5cbiAgICAvLyBjb252ZXJ0IEZpbGVMaXN0IHRvIGFuIGFycmF5XG4gICAgdGhpcy5teUZpbGVzID0gQXJyYXkuZnJvbSh0aGlzLmFyRmlsZXMkKTtcblxuICAgIHRoaXMuYkxvYWRpbmckID0gdHJ1ZTtcblxuICAgIGNvbnN0IGZpbGVzVG9CZVVwbG9hZGVkID0gdGhpcy5teUZpbGVzXG4gICAgICAuZmlsdGVyKGUgPT4ge1xuICAgICAgICBpZiAoZS5pZCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0ZpbGVVcGxvYWRlZCA9IGUgJiYgZS5wcm9ncmVzcyA9PT0gMTAwO1xuICAgICAgICBjb25zdCBmaWxlSGFzRXJyb3IgPSBlICYmIGUuZXJyb3I7XG4gICAgICAgIGNvbnN0IGlzRmlsZVVwbG9hZGVkaW5MYXN0U3RlcCA9IGUucmVzcG9uc2VQcm9wcyAmJiBlLnJlc3BvbnNlUHJvcHMucHpJbnNLZXk7XG4gICAgICAgIHJldHVybiAhaXNGaWxlVXBsb2FkZWQgJiYgIWZpbGVIYXNFcnJvciAmJiAhaXNGaWxlVXBsb2FkZWRpbkxhc3RTdGVwO1xuICAgICAgfSlcbiAgICAgIC5tYXAoZiA9PlxuICAgICAgICBQQ29yZS5nZXRBdHRhY2htZW50VXRpbHMoKS51cGxvYWRBdHRhY2htZW50KFxuICAgICAgICAgIGYsXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblVwbG9hZFByb2dyZXNzKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBpc0ZldGNoQ2FuY2VsZWQgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyKGlzRmV0Y2hDYW5jZWxlZCwgZik7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICBQcm9taXNlLmFsbFNldHRsZWQoZmlsZXNUb0JlVXBsb2FkZWQpXG4gICAgICAudGhlbigoZmlsZVJlc3BvbnNlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlRmlsZVVwbG9hZFN1Y2Nlc3MoZmlsZVJlc3BvbnNlcyk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICB0aGlzLmhhbmRsZUZpbGVVcGxvYWRGYWlsdXJlKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZUZpbGVVcGxvYWRTdWNjZXNzKGZpbGVSZXNwb25zZXMpIHtcbiAgICBjb25zdCBzdWNjZXNzRmlsZVJlc3BvbnNlcyA9IGZpbGVSZXNwb25zZXMuZmlsdGVyKGZyID0+IGZyLnN0YXR1cyAhPT0gJ3JlamVjdGVkJyk7IC8vIGluIGNhc2Ugb2YgZGVsZXRpbmcgYW4gaW4gcHJvZ3Jlc3MgZmlsZSwgcHJvbWlzZSBnZXRzIGNhbmNlbGxlZCBidXQgc3RpbGwgZW50ZXJzIHRoZW4gYmxvY2tcbiAgICBsZXQgcmVxT2JqO1xuICAgIGlmIChzdWNjZXNzRmlsZVJlc3BvbnNlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB0ZW1wRmlsZXNVcGxvYWRlZCA9IFsuLi50aGlzLmFyRmlsZXMkLmZpbHRlcihmaWxlID0+ICFmaWxlLmlkKV07XG4gICAgICBsZXQgbmV3QXR0YWNobWVudHM6IGFueSA9IFtdO1xuICAgICAgdGVtcEZpbGVzVXBsb2FkZWQuZm9yRWFjaChmaWxlUmVzID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBzdWNjZXNzRmlsZVJlc3BvbnNlcy5maW5kSW5kZXgoKGZyOiBhbnkpID0+IGZyLnZhbHVlLmNsaWVudEZpbGVJRCA9PT0gZmlsZVJlcy5JRCk7XG4gICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgcmVxT2JqID0ge1xuICAgICAgICAgICAgdHlwZTogJ0ZpbGUnLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMuYXR0X3ZhbHVlUmVmLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHRoaXMuYXR0X2NhdGVnb3J5TmFtZSxcbiAgICAgICAgICAgIGhhbmRsZTogc3VjY2Vzc0ZpbGVSZXNwb25zZXNbaW5kZXhdLnZhbHVlLklELFxuICAgICAgICAgICAgSUQ6IGZpbGVSZXMuSUQsXG4gICAgICAgICAgICBuYW1lOiBmaWxlUmVzLm5hbWVcbiAgICAgICAgICB9O1xuICAgICAgICAgIG5ld0F0dGFjaG1lbnRzID0gWy4uLm5ld0F0dGFjaG1lbnRzLCByZXFPYmpdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGN1cnJlbnRBdHRhY2htZW50TGlzdCA9IHRoaXMuZ2V0Q3VycmVudEF0dGFjaG1lbnRzTGlzdCh0aGlzLmdldEF0dGFjaG1lbnRLZXkodGhpcy5hdHRfdmFsdWVSZWYpLCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKS5maWx0ZXIoXG4gICAgICAgIGYgPT4gZi5sYWJlbCAhPT0gdGhpcy5hdHRfdmFsdWVSZWZcbiAgICAgICk7XG4gICAgICBQQ29yZS5nZXRTdGF0ZVV0aWxzKCkudXBkYXRlU3RhdGUoXG4gICAgICAgIHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCksXG4gICAgICAgIHRoaXMuZ2V0QXR0YWNobWVudEtleSh0aGlzLmF0dF92YWx1ZVJlZiksXG4gICAgICAgIFsuLi5jdXJyZW50QXR0YWNobWVudExpc3QsIC4uLm5ld0F0dGFjaG1lbnRzXSxcbiAgICAgICAge1xuICAgICAgICAgIHBhZ2VSZWZlcmVuY2U6ICdjb250ZXh0X2RhdGEnLFxuICAgICAgICAgIGlzQXJyYXlEZWVwTWVyZ2U6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICB0aGlzLmFyRmlsZXMkID0gdGVtcEZpbGVzVXBsb2FkZWQ7XG5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuYlNob3dTZWxlY3RvciQgPSB0aGlzLmFsbG93TXVsdGlwbGUkO1xuICAgICAgICB0aGlzLmFyRmlsZXMkLmZvckVhY2goZmlsZSA9PiB7XG4gICAgICAgICAgaWYgKCFmaWxlLmVycm9yKSB7XG4gICAgICAgICAgICBmaWxlLm1ldGEgPSB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnRmlsZSB1cGxvYWRlZCBzdWNjZXNzZnVsbHknLCAnJywgJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYXJGaWxlTGlzdCQgPSB0aGlzLm15RmlsZXMubWFwKGF0dCA9PiB7XG4gICAgICAgICAgaWYgKGF0dC5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIGF0dDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmV3TGlzdFV0aWxpdHlJdGVtUHJvcHMoe1xuICAgICAgICAgICAgYXR0LFxuICAgICAgICAgICAgZG93bmxvYWRGaWxlOiBudWxsLFxuICAgICAgICAgICAgY2FuY2VsRmlsZTogbnVsbCxcbiAgICAgICAgICAgIGRlbGV0ZUZpbGU6IG51bGwsXG4gICAgICAgICAgICByZW1vdmVGaWxlOiBudWxsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuQ2hlY2tGb3JJbnZhbGlkQXR0YWNobWVudCgpO1xuXG4gICAgICAgIHRoaXMuYlNob3dKdXN0RGVsZXRlJCA9IHRydWU7XG4gICAgICAgIHRoaXMuYkxvYWRpbmckID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVGaWxlVXBsb2FkRmFpbHVyZSgpIHtcbiAgICB0aGlzLmJTaG93SnVzdERlbGV0ZSQgPSB0cnVlO1xuICAgIHRoaXMuYkxvYWRpbmckID0gZmFsc2U7XG4gICAgdGhpcy5iU2hvd1NlbGVjdG9yJCA9IHRoaXMuYWxsb3dNdWx0aXBsZSQ7XG4gICAgdGhpcy5teUZpbGVzLmZvckVhY2goZmlsZSA9PiB7XG4gICAgICBpZiAoZmlsZT8uc2Vjb25kYXJ5Py5lcnJvcikge1xuICAgICAgICBmaWxlLm1ldGEgPSAnRmlsZSB1cGxvYWRlZCBmYWlsZWQnO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5hckZpbGVMaXN0JCA9IHRoaXMubXlGaWxlcy5tYXAoYXR0ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmdldE5ld0xpc3RVdGlsaXR5SXRlbVByb3BzKHtcbiAgICAgICAgYXR0LFxuICAgICAgICBkb3dubG9hZEZpbGU6IG51bGwsXG4gICAgICAgIGNhbmNlbEZpbGU6IG51bGwsXG4gICAgICAgIGRlbGV0ZUZpbGU6IG51bGwsXG4gICAgICAgIHJlbW92ZUZpbGU6IG51bGxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5iU2hvd0p1c3REZWxldGUkID0gdHJ1ZTtcbiAgICB0aGlzLmJMb2FkaW5nJCA9IGZhbHNlO1xuICB9XG5cbiAgZ2V0TmV3TGlzdFV0aWxpdHlJdGVtUHJvcHMgPSAoeyBhdHQsIGNhbmNlbEZpbGUsIGRvd25sb2FkRmlsZSwgZGVsZXRlRmlsZSwgcmVtb3ZlRmlsZSB9KSA9PiB7XG4gICAgbGV0IGFjdGlvbnM7XG4gICAgbGV0IGlzRG93bmxvYWRhYmxlID0gZmFsc2U7XG5cbiAgICBpZiAoYXR0LnByb2dyZXNzICYmIGF0dC5wcm9ncmVzcyAhPT0gMTAwKSB7XG4gICAgICBhY3Rpb25zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGBDYW5jZWwtJHthdHQuSUR9YCxcbiAgICAgICAgICB0ZXh0OiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQ2FuY2VsJywgJycsICcnKSxcbiAgICAgICAgICBpY29uOiAndGltZXMnLFxuICAgICAgICAgIG9uQ2xpY2s6IGNhbmNlbEZpbGVcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKGF0dC5saW5rcykge1xuICAgICAgY29uc3QgaXNGaWxlID0gYXR0LnR5cGUgPT09ICdGSUxFJztcbiAgICAgIGNvbnN0IElEID0gYXR0LklELnJlcGxhY2UoL1xccy9naSwgJycpO1xuICAgICAgY29uc3QgYWN0aW9uc01hcCA9IG5ldyBNYXAoW1xuICAgICAgICBbXG4gICAgICAgICAgJ2Rvd25sb2FkJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogYGRvd25sb2FkLSR7SUR9YCxcbiAgICAgICAgICAgIHRleHQ6IGlzRmlsZSA/IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdEb3dubG9hZCcsICcnLCAnJykgOiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnT3BlbicsICcnLCAnJyksXG4gICAgICAgICAgICBpY29uOiBpc0ZpbGUgPyAnZG93bmxvYWQnIDogJ29wZW4nLFxuICAgICAgICAgICAgb25DbGljazogZG93bmxvYWRGaWxlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgJ2RlbGV0ZScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IGBEZWxldGUtJHtJRH1gLFxuICAgICAgICAgICAgdGV4dDogdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0RlbGV0ZScsICcnLCAnJyksXG4gICAgICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICAgICAgb25DbGljazogZGVsZXRlRmlsZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgXSk7XG4gICAgICBhY3Rpb25zID0gW107XG4gICAgICBhY3Rpb25zTWFwLmZvckVhY2goKGFjdGlvbiwgYWN0aW9uS2V5KSA9PiB7XG4gICAgICAgIGlmIChhdHQubGlua3NbYWN0aW9uS2V5XSkge1xuICAgICAgICAgIGFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIGlzRG93bmxvYWRhYmxlID0gYXR0LmxpbmtzLmRvd25sb2FkO1xuICAgIH0gZWxzZSBpZiAoYXR0LmVycm9yKSB7XG4gICAgICBhY3Rpb25zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGBSZW1vdmUtJHthdHQuSUR9YCxcbiAgICAgICAgICB0ZXh0OiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnUmVtb3ZlJywgJycsICcnKSxcbiAgICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICAgIG9uQ2xpY2s6IHJlbW92ZUZpbGVcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGF0dC5JRCxcbiAgICAgIHZpc3VhbDoge1xuICAgICAgICBpY29uOiB0aGlzLnV0aWxzLmdldEljb25Gb3JBdHRhY2htZW50KGF0dCksXG4gICAgICAgIHByb2dyZXNzOiBhdHQucHJvZ3Jlc3MgPT0gMTAwID8gdW5kZWZpbmVkIDogYXR0LnByb2dyZXNzXG4gICAgICB9LFxuICAgICAgcHJpbWFyeToge1xuICAgICAgICB0eXBlOiBhdHQudHlwZSxcbiAgICAgICAgbmFtZTogYXR0LmVycm9yID8gYXR0LmZpbGVOYW1lIDogYXR0Lm5hbWUsXG4gICAgICAgIGljb246ICd0cmFzaCcsXG4gICAgICAgIGNsaWNrOiByZW1vdmVGaWxlXG4gICAgICB9LFxuICAgICAgc2Vjb25kYXJ5OiB7XG4gICAgICAgIHRleHQ6IGF0dC5tZXRhLFxuICAgICAgICBlcnJvcjogYXR0LmVycm9yXG4gICAgICB9LFxuICAgICAgYWN0aW9uc1xuICAgIH07XG4gIH07XG5cbiAgb25VcGxvYWRQcm9ncmVzcygpIHt9XG5cbiAgZ2V0RmlsZXMoYXJGaWxlczogYW55W10pOiBhbnlbXSB7XG4gICAgY29uc3QgZmlsZXMgPSB0aGlzLmFsbG93TXVsdGlwbGUkID8gYXJGaWxlcyA6IFthckZpbGVzWzBdXTtcbiAgICByZXR1cm4gdGhpcy5zZXROZXdGaWxlcyhmaWxlcyk7XG4gIH1cblxuICBzZXROZXdGaWxlcyhhckZpbGVzKSB7XG4gICAgbGV0IGluZGV4ID0gMDtcbiAgICBjb25zdCBtYXhBdHRhY2htZW50U2l6ZSA9IFBDb3JlLmdldEVudmlyb25tZW50SW5mbygpLmdldE1heEF0dGFjaG1lbnRTaXplKCkgfHwgNTtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgYXJGaWxlcykge1xuICAgICAgZmlsZS5taW1lVHlwZSA9IGZpbGUudHlwZTtcbiAgICAgIGZpbGUuaWNvbiA9IHRoaXMudXRpbHMuZ2V0SWNvbkZyb21GaWxlVHlwZShmaWxlLnR5cGUpO1xuICAgICAgZmlsZS5JRCA9IGAke25ldyBEYXRlKCkuZ2V0VGltZSgpfUkke2luZGV4fWA7XG5cbiAgICAgIGlmICghdGhpcy52YWxpZGF0ZU1heFNpemUoZmlsZSwgbWF4QXR0YWNobWVudFNpemUpKSB7XG4gICAgICAgIGZpbGUuZXJyb3IgPSB0cnVlO1xuICAgICAgICBmaWxlLm1ldGEgPSB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnRmlsZSBpcyB0b28gYmlnLiBNYXggYWxsb3dlZCBzaXplIGlzIDVNQi4nLCAnJywgJycpO1xuICAgICAgfSBlbHNlIGlmICghdGhpcy52YWxpZGF0ZUZpbGVFeHRlbnNpb24oZmlsZSwgdGhpcy5leHRlbnNpb25zJCkpIHtcbiAgICAgICAgZmlsZS5lcnJvciA9IHRydWU7XG4gICAgICAgIGZpbGUubWV0YSA9IGAke3RoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdGaWxlIGhhcyBpbnZhbGlkIGV4dGVuc2lvbi4gQWxsb3dlZCBleHRlbnNpb25zIGFyZTonLCAnJywgJycpfSAke3RoaXMuZXh0ZW5zaW9ucyQucmVwbGFjZUFsbChcbiAgICAgICAgICAnLicsXG4gICAgICAgICAgJydcbiAgICAgICAgKX1gO1xuICAgICAgfVxuICAgICAgaWYgKGZpbGUuZXJyb3IpIHtcbiAgICAgICAgY29uc3QgZmllbGROYW1lID0gKHRoaXMucENvbm4kLmdldFN0YXRlUHJvcHMoKSBhcyBhbnkpLnZhbHVlO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICAgICAgUENvcmUuZ2V0TWVzc2FnZU1hbmFnZXIoKS5hZGRNZXNzYWdlcyh7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG1lc3NhZ2VzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdFcnJvciB3aXRoIG9uZSBvciBtb3JlIGZpbGVzJywgJycsICcnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgcHJvcGVydHk6IGZpZWxkTmFtZSxcbiAgICAgICAgICBwYWdlUmVmZXJlbmNlOiB0aGlzLnBDb25uJC5nZXRQYWdlUmVmZXJlbmNlKCksXG4gICAgICAgICAgY29udGV4dFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGluZGV4Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIFsuLi5hckZpbGVzXTtcbiAgfVxuXG4gIHZhbGlkYXRlTWF4U2l6ZShmaWxlT2JqLCBtYXhTaXplSW5NQik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpbGVTaXplID0gKGZpbGVPYmouc2l6ZSAvIDEwNDg1NzYpLnRvRml4ZWQoMik7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoZmlsZVNpemUpIDwgcGFyc2VGbG9hdChtYXhTaXplSW5NQik7XG4gIH1cblxuICB2YWxpZGF0ZUZpbGVFeHRlbnNpb24gPSAoZmlsZU9iaiwgYWxsb3dlZEV4dGVuc2lvbnMpID0+IHtcbiAgICBpZiAoIWFsbG93ZWRFeHRlbnNpb25zKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgYWxsb3dlZEV4dGVuc2lvbkxpc3QgPSBhbGxvd2VkRXh0ZW5zaW9uc1xuICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAubWFwKGl0ZW0gPT4gaXRlbS5yZXBsYWNlQWxsKCcuJywgJycpLnRyaW0oKSk7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gZmlsZU9iai5uYW1lLnNwbGl0KCcuJykucG9wKCkudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gYWxsb3dlZEV4dGVuc2lvbkxpc3QuaW5jbHVkZXMoZXh0ZW5zaW9uKTtcbiAgfTtcblxuICBidWlsZEZpbGVQcm9wc0Zyb21SZXNwb25zZShyZXNwT2JqKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIG1ldGE6IGAke3Jlc3BPYmoucHlDYXRlZ29yeU5hbWV9LCAke3Jlc3BPYmoucHhDcmVhdGVPcGVyYXRvcn1gLFxuICAgICAgICBuYW1lOiByZXNwT2JqLnB5QXR0YWNoTmFtZSxcbiAgICAgICAgaWNvbjogdGhpcy51dGlscy5nZXRJY29uRnJvbUZpbGVUeXBlKHJlc3BPYmoucHlNaW1lRmlsZUV4dGVuc2lvbilcbiAgICAgIH0sXG4gICAgICByZXNwb25zZVByb3BzOiB7XG4gICAgICAgIC4uLnJlc3BPYmpcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicHNkay1sYWJlbC1pbmZpeC1yZWFkb25seVwiICpuZ0lmPVwiYlZpc2libGUkXCI+XG4gIDxzcGFuIGNsYXNzPVwicHNkay1sYWJlbC13cmFwcGVyLXJlYWRvbmx5XCI+XG4gICAgPGxhYmVsIFtuZ0NsYXNzXT1cInsgJ3BzZGstbGFiZWwtcmVhZG9ubHknOiB0cnVlLCAnbGFiZWwtcmVxdWlyZWQnOiBiUmVxdWlyZWQkID09PSB0cnVlIH1cIiBbaHRtbEZvcl09XCJhdHRfdmFsdWVSZWZcIj57eyBsYWJlbCQgfX08L2xhYmVsPlxuICA8L3NwYW4+XG4gIDxkaXZcbiAgICBbbmdDbGFzc109XCJ7ICdwc2RrLW1vZGFsLWZpbGUtc2VsZWN0b3InOiBzdGF0dXMgIT09ICdlcnJvcicsICdwc2RrLW1vZGFsLWZpbGUtc2VsZWN0b3ItZXJyb3InOiBzdGF0dXMgPT09ICdlcnJvcicgfVwiXG4gICAgaWQ9XCJhdHRhY2htZW50LWNvbnRhaW5lclwiXG4gICAgKm5nSWY9XCJiU2hvd1NlbGVjdG9yJFwiXG4gID5cbiAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJiTG9hZGluZyRcIiBjbGFzcz1cInByb2dyZXNzLXNwaW5uZXJcIiBkaWFtZXRlcj1cIjQwXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICA8aW5wdXQgaGlkZGVuIHR5cGU9XCJmaWxlXCIgW3JlcXVpcmVkXT1cImJSZXF1aXJlZCRcIiAjdXBsb2FkZXIgW2lkXT1cImF0dF92YWx1ZVJlZlwiIFttdWx0aXBsZV09XCJhbGxvd011bHRpcGxlJFwiIChjaGFuZ2UpPVwidXBsb2FkTXlGaWxlcygkZXZlbnQpXCIgLz5cblxuICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJiRGlzYWJsZWQkXCIgKGNsaWNrKT1cInVwbG9hZGVyLmNsaWNrKClcIj5cbiAgICAgIHt7IGFsbG93TXVsdGlwbGUkID8gJ1VwbG9hZCBmaWxlcycgOiAnVXBsb2FkIGZpbGUnIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8c3BhbiAqbmdJZj1cInZhbGlkYXRlTWVzc2FnZVwiIGNsYXNzPVwiZmlsZS1lcnJvclwiPnt7IHZhbGlkYXRlTWVzc2FnZSB9fTwvc3Bhbj5cblxuICA8ZGl2IGNsYXNzPVwicHNkay1hdHRhY2htZW50LWxpc3RcIiAqbmdJZj1cImFyRmlsZUxpc3QkICE9IG51bGwgJiYgYXJGaWxlTGlzdCQubGVuZ3RoID4gMFwiPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGF0dGFjaG1lbnQgb2YgYXJGaWxlTGlzdCRcIj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAgICpuZ0lmPVwiYXR0YWNobWVudC5ub0RlbGV0ZUljb24gIT09IHRydWU7IGVsc2Ugc2hvd2Z1bGxcIlxuICAgICAgICBuYW1lPVwiU3VtbWFyeUl0ZW1cIlxuICAgICAgICBbcHJvcHNdPVwieyBpdGVtJDogYXR0YWNobWVudCwgbWVudUljb25PdmVycmlkZSQ6ICd0cmFzaCcsIG1lbnVJY29uT3ZlcnJpZGVBY3Rpb24kOiByZW1vdmVGaWxlRnJvbUxpc3QkIH1cIlxuICAgICAgPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd2Z1bGw+XG4gICAgICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJTdW1tYXJ5SXRlbVwiIFtwcm9wc109XCJ7IGl0ZW0kOiBhdHRhY2htZW50LCBtZW51SWNvbk92ZXJyaWRlQWN0aW9uJDogcmVtb3ZlRmlsZUZyb21MaXN0JCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
592
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNobWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2F0dGFjaG1lbnQvYXR0YWNobWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvd2lkZ2V0L2F0dGFjaG1lbnQvYXR0YWNobWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBVSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFeEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM5RSxPQUFPLFFBQVEsTUFBTSxZQUFZLENBQUM7QUFHbEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOERBQThELENBQUM7Ozs7Ozs7QUFpQnhHLE1BQU0sT0FBTyxtQkFBbUI7SUFvQzlCLFlBQ1UsZUFBdUMsRUFDdkMsS0FBWSxFQUNaLE1BQWM7UUFGZCxvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFDdkMsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNaLFdBQU0sR0FBTixNQUFNLENBQVE7UUFuQ3hCLHVDQUF1QztRQUN2Qyx3QkFBbUIsR0FBd0IsRUFBRSxDQUFDO1FBRTlDLFdBQU0sR0FBRyxFQUFFLENBQUM7UUFFWixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixj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QkRoQlksWUFBWSxpYkFBRSx3QkFBd0IsNFFBQUUsZUFBZSxzUUFBbUIsd0JBQXdCOzs0RkFFakcsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNFLGdCQUFnQixjQUdkLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUM7b0lBR3JHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBOZ1pvbmUsIGZvcndhcmRSZWYsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCBkb3dubG9hZCBmcm9tICdkb3dubG9hZGpzJztcbmltcG9ydCB7IEFuZ3VsYXJQQ29ubmVjdERhdGEsIEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2FuZ3VsYXItcGNvbm5lY3QnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi8uLi9faGVscGVycy91dGlscyc7XG5pbXBvcnQgeyBDb21wb25lbnRNYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2NvbXBvbmVudC1tYXBwZXIvY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUENvbm5GaWVsZFByb3BzIH0gZnJvbSAnLi4vLi4vLi4vX3R5cGVzL1BDb25uUHJvcHMuaW50ZXJmYWNlJztcblxuaW50ZXJmYWNlIEF0dGFjaG1lbnRQcm9wcyBleHRlbmRzIE9taXQ8UENvbm5GaWVsZFByb3BzLCAndmFsdWUnPiB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhpcyBjb21wb25lbnRcbiAgdmFsdWU6IGFueTtcbiAgZXh0ZW5zaW9uczogYW55O1xuICBhbGxvd011bHRpcGxlOiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYXR0YWNobWVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdHRhY2htZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYXR0YWNobWVudC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBBdHRhY2htZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgZm9ybUdyb3VwJDogRm9ybUdyb3VwO1xuXG4gIC8vIEZvciBpbnRlcmFjdGlvbiB3aXRoIEFuZ3VsYXJQQ29ubmVjdFxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG5cbiAgbGFiZWwkID0gJyc7XG4gIHZhbHVlJDogYW55O1xuICBiUmVxdWlyZWQkID0gZmFsc2U7XG4gIGJSZWFkb25seSQgPSBmYWxzZTtcbiAgYkRpc2FibGVkJCA9IGZhbHNlO1xuICBiVmlzaWJsZSQgPSB0cnVlO1xuICBiTG9hZGluZyQgPSBmYWxzZTtcbiAgYXJGaWxlcyQ6IGFueVtdID0gW107XG4gIGFyRmlsZUxpc3QkOiBhbnlbXSA9IFtdO1xuICByZW1vdmVGaWxlRnJvbUxpc3QkOiBhbnk7XG4gIGFyTWVudUxpc3QkOiBhbnlbXSA9IFtdO1xuICBiU2hvd1NlbGVjdG9yJCA9IHRydWU7XG4gIGJTaG93SnVzdERlbGV0ZSQgPSBmYWxzZTtcbiAgYXR0X3ZhbHVlUmVmOiBhbnk7XG4gIGF0dF9jYXRlZ29yeU5hbWU6IHN0cmluZztcbiAgYXR0X2lkOiBzdHJpbmc7XG4gIG15RmlsZXM6IGFueTtcbiAgZmlsZVRlbXA6IGFueSA9IHt9O1xuICBjYXNlSUQ6IGFueTtcbiAgYWxsb3dNdWx0aXBsZSQgPSBmYWxzZTtcbiAgZXh0ZW5zaW9ucyQgPSAnJztcbiAgc3RhdHVzID0gJyc7XG4gIHZhbGlkYXRlTWVzc2FnZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyc7XG4gIHZhbHVlUmVmOiBzdHJpbmc7XG4gIGltYWdlUGF0aCQ6IHN0cmluZztcbiAgbG9jYWxpemVkVmFsID0gUENvcmUuZ2V0TG9jYWxlVXRpbHMoKS5nZXRMb2NhbGVWYWx1ZTtcbiAgbG9jYWxlQ2F0ZWdvcnkgPSAnQ29zbW9zRmllbGRzJztcbiAgdXBsb2FkTXVsdGlwbGVGaWxlc0xhYmVsID0gdGhpcy5sb2NhbGl6ZWRWYWwoJ2ZpbGVfdXBsb2FkX3RleHRfbXVsdGlwbGUnLCB0aGlzLmxvY2FsZUNhdGVnb3J5KTtcbiAgdXBsb2FkU2luZ2xlRmlsZUxhYmVsID0gdGhpcy5sb2NhbGl6ZWRWYWwoJ2ZpbGVfdXBsb2FkX3RleHRfb25lJywgdGhpcy5sb2NhbGVDYXRlZ29yeSk7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuXG4gICAgdGhpcy5yZW1vdmVGaWxlRnJvbUxpc3QkID0geyBvbkNsaWNrOiB0aGlzLl9yZW1vdmVGaWxlRnJvbUxpc3QuYmluZCh0aGlzKSB9O1xuXG4gICAgdGhpcy5jYXNlSUQgPSBQQ29yZS5nZXRTdG9yZVZhbHVlKCcucHlJRCcsICdjYXNlSW5mby5jb250ZW50JywgdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSk7XG5cbiAgICAvLyBsZXQgY29uZmlnUHJvcHM6IGFueSA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKTtcbiAgICB0aGlzLmNoZWNrQW5kVXBkYXRlKCk7XG4gIH1cblxuICBjaGVja0FuZFVwZGF0ZSgpIHtcbiAgICAvLyBTaG91bGQgYWx3YXlzIGNoZWNrIHRoZSBicmlkZ2UgdG8gc2VlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkXG4gICAgLy8gdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICAgIGNvbnN0IGJVcGRhdGVTZWxmID0gdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuXG4gICAgLy8gT05MWSBjYWxsIHVwZGF0ZVNlbGYgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGVcbiAgICBpZiAoYlVwZGF0ZVNlbGYpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbikge1xuICAgICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4oKTtcbiAgICB9XG5cbiAgICBQQ29yZS5nZXRQdWJTdWJVdGlscygpLnVuc3Vic2NyaWJlKFBDb3JlLmdldENvbnN0YW50cygpLlBVQl9TVUJfRVZFTlRTLkNBU0VfRVZFTlRTLkFTU0lHTk1FTlRfU1VCTUlTU0lPTiwgdGhpcy5jYXNlSUQpO1xuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuICB9XG5cbiAgdXBkYXRlQXR0YWNobWVudHNJbmZvKCkge1xuICAgIC8vIEB0cy1pZ25vcmUgLSBQcm9wZXJ0eSAnYXR0YWNobWVudHNJbmZvJyBkb2VzIG5vdCBleGlzdCBvbiB0eXBlICdDMTFuRW52J1xuICAgIGlmICghdGhpcy5wQ29ubiQuYXR0YWNobWVudHNJbmZvKSB7XG4gICAgICAvLyBAdHMtaWdub3JlIC0gUHJvcGVydHkgJ2F0dGFjaG1lbnRzSW5mbycgZG9lcyBub3QgZXhpc3Qgb24gdHlwZSAnQzExbkVudidcbiAgICAgIHRoaXMucENvbm4kLmF0dGFjaG1lbnRzSW5mbyA9IHtcbiAgICAgICAgdHlwZTogJ0ZpbGUnLFxuICAgICAgICBhdHRhY2htZW50RmllbGROYW1lOiB0aGlzLmF0dF92YWx1ZVJlZixcbiAgICAgICAgY2F0ZWdvcnk6IHRoaXMuYXR0X2NhdGVnb3J5TmFtZVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcm9jZXNzRmlsZShmaWxlLCBpKSB7XG4gICAgZmlsZS5wcm9wcy50eXBlID0gZmlsZS5yZXNwb25zZVByb3BzLnB5TWltZUZpbGVFeHRlbnNpb247XG4gICAgZmlsZS5wcm9wcy5taW1lVHlwZSA9IGZpbGUucmVzcG9uc2VQcm9wcy5weU1pbWVGaWxlRXh0ZW5zaW9uO1xuICAgIGZpbGUucHJvcHMuSUQgPSBmaWxlLnJlc3BvbnNlUHJvcHMucHpJbnNLZXk7XG5cbiAgICBjb25zdCBhck1lbnVMaXN0ID0gW1xuICAgICAge1xuICAgICAgICBpY29uOiAnZG93bmxvYWQnLFxuICAgICAgICB0ZXh0OiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnRG93bmxvYWQnLCAnJywgJycpLFxuICAgICAgICBvbkNsaWNrOiAoKSA9PiB0aGlzLl9kb3dubG9hZEZpbGVGcm9tTGlzdCh0aGlzLnZhbHVlJC5weFJlc3VsdHNbaV0pXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICB0ZXh0OiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnRGVsZXRlJywgJycsICcnKSxcbiAgICAgICAgb25DbGljazogKCkgPT4gdGhpcy5fcmVtb3ZlRmlsZUZyb21MaXN0KHRoaXMuYXJGaWxlTGlzdCRbaV0pXG4gICAgICB9XG4gICAgXTtcblxuICAgIGNvbnN0IGFyRmlsZXNBdHRhY2htZW50SURzOiBhbnkgPSBbXTtcbiAgICB0aGlzLmFyRmlsZUxpc3QkLmZvckVhY2goYXJGaWxlID0+IHtcbiAgICAgIGFyRmlsZXNBdHRhY2htZW50SURzLnB1c2goYXJGaWxlLmlkKTtcbiAgICB9KTtcblxuICAgIGlmICghYXJGaWxlc0F0dGFjaG1lbnRJRHMuaW5jbHVkZXMoZmlsZS5wcm9wcy5JRCkpIHtcbiAgICAgIHRoaXMuYXJGaWxlTGlzdCQucHVzaChcbiAgICAgICAgdGhpcy5nZXROZXdMaXN0VXRpbGl0eUl0ZW1Qcm9wcyh7XG4gICAgICAgICAgYXR0OiBmaWxlLnByb3BzLFxuICAgICAgICAgIGRvd25sb2FkRmlsZTogbnVsbCxcbiAgICAgICAgICBjYW5jZWxGaWxlOiBudWxsLFxuICAgICAgICAgIGRlbGV0ZUZpbGU6IG51bGwsXG4gICAgICAgICAgcmVtb3ZlRmlsZTogbnVsbFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmFyRmlsZUxpc3QkW2ldLmFjdGlvbnMgPSBhck1lbnVMaXN0O1xuICAgIHRoaXMuYXJGaWxlTGlzdCRbaV0ubm9EZWxldGVJY29uID0gdHJ1ZTtcblxuICAgIHRoaXMuYlNob3dTZWxlY3RvciQgPSBmYWxzZTtcbiAgfVxuXG4gIHVwZGF0ZVNlbGYoKSB7XG4gICAgY29uc3QgY29uZmlnUHJvcHM6IEF0dGFjaG1lbnRQcm9wcyA9IHRoaXMucENvbm4kLnJlc29sdmVDb25maWdQcm9wcyh0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpKSBhcyBBdHRhY2htZW50UHJvcHM7XG4gICAgY29uc3Qgc3RhdGVQcm9wczogYW55ID0gdGhpcy5wQ29ubiQuZ2V0U3RhdGVQcm9wcygpO1xuXG4gICAgY29uc3QgeyB2YWx1ZSwgbGFiZWwsIGV4dGVuc2lvbnMgfSA9IGNvbmZpZ1Byb3BzO1xuXG4gICAgaWYgKGNvbmZpZ1Byb3BzLnJlcXVpcmVkICE9IG51bGwpIHtcbiAgICAgIHRoaXMuYlJlcXVpcmVkJCA9IHRoaXMudXRpbHMuZ2V0Qm9vbGVhblZhbHVlKGNvbmZpZ1Byb3BzLnJlcXVpcmVkKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZ1Byb3BzLnZpc2liaWxpdHkgIT0gbnVsbCkge1xuICAgICAgdGhpcy5iVmlzaWJsZSQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZShjb25maWdQcm9wcy52aXNpYmlsaXR5KTtcbiAgICB9XG5cbiAgICAvLyBkaXNhYmxlZFxuICAgIGlmIChjb25maWdQcm9wcy5kaXNhYmxlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuYkRpc2FibGVkJCA9IHRoaXMudXRpbHMuZ2V0Qm9vbGVhblZhbHVlKGNvbmZpZ1Byb3BzLmRpc2FibGVkKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnUHJvcHMucmVhZE9ubHkgIT0gbnVsbCkge1xuICAgICAgdGhpcy5iUmVhZG9ubHkkID0gdGhpcy51dGlscy5nZXRCb29sZWFuVmFsdWUoY29uZmlnUHJvcHMucmVhZE9ubHkpO1xuICAgIH1cblxuICAgIGlmIChjb25maWdQcm9wcy5hbGxvd011bHRpcGxlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuYWxsb3dNdWx0aXBsZSQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZShjb25maWdQcm9wcy5hbGxvd011bHRpcGxlKTtcbiAgICB9XG5cbiAgICB0aGlzLmJTaG93SnVzdERlbGV0ZSQgPSB0cnVlO1xuICAgIHRoaXMubGFiZWwkID0gbGFiZWw7XG4gICAgdGhpcy52YWx1ZSQgPSB2YWx1ZTtcbiAgICB0aGlzLnN0YXR1cyA9IHN0YXRlUHJvcHMuc3RhdHVzO1xuICAgIHRoaXMudmFsaWRhdGVNZXNzYWdlID0gdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnZhbGlkYXRlTWVzc2FnZTtcbiAgICB0aGlzLmV4dGVuc2lvbnMkID0gZXh0ZW5zaW9ucztcbiAgICB0aGlzLnZhbHVlUmVmID0gKHRoaXMucENvbm4kLmdldFN0YXRlUHJvcHMoKSBhcyBhbnkpLnZhbHVlO1xuICAgIHRoaXMudmFsdWVSZWYgPSB0aGlzLnZhbHVlUmVmLnN0YXJ0c1dpdGgoJy4nKSA/IHRoaXMudmFsdWVSZWYuc3Vic3RyaW5nKDEpIDogdGhpcy52YWx1ZVJlZjtcblxuICAgIC8qIHRoaXMgaXMgYSB0ZW1wb3JhcnkgZml4IGJlY2F1c2UgcmVxdWlyZWQgaXMgc3VwcG9zZWQgdG8gYmUgcGFzc2VkIGFzIGEgYm9vbGVhbiBhbmQgTk9UIGFzIGEgc3RyaW5nICovXG4gICAgbGV0IHsgcmVxdWlyZWQsIGRpc2FibGVkIH0gPSBjb25maWdQcm9wcztcbiAgICBbcmVxdWlyZWQsIGRpc2FibGVkXSA9IFtyZXF1aXJlZCwgZGlzYWJsZWRdLm1hcChwcm9wID0+IHByb3AgPT09IHRydWUgfHwgKHR5cGVvZiBwcm9wID09PSAnc3RyaW5nJyAmJiBwcm9wID09PSAndHJ1ZScpKTtcblxuICAgIHRoaXMuYXR0X2NhdGVnb3J5TmFtZSA9ICcnO1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5weUNhdGVnb3J5TmFtZSkge1xuICAgICAgdGhpcy5hdHRfY2F0ZWdvcnlOYW1lID0gdmFsdWUucHlDYXRlZ29yeU5hbWU7XG4gICAgfVxuXG4gICAgdGhpcy5hdHRfdmFsdWVSZWYgPSAodGhpcy5wQ29ubiQuZ2V0U3RhdGVQcm9wcygpIGFzIGFueSkudmFsdWU7XG4gICAgdGhpcy5hdHRfdmFsdWVSZWYgPSB0aGlzLmF0dF92YWx1ZVJlZi5pbmRleE9mKCcuJykgPT09IDAgPyB0aGlzLmF0dF92YWx1ZVJlZi5zdWJzdHJpbmcoMSkgOiB0aGlzLmF0dF92YWx1ZVJlZjtcblxuICAgIHRoaXMudXBkYXRlQXR0YWNobWVudHMoKTtcbiAgfVxuXG4gIHVwZGF0ZUF0dGFjaG1lbnRzKCkge1xuICAgIGNvbnN0IGF0dGFjaG1lbnRzRnJvbVNlcnZlciA9IHRoaXMudmFsdWUkICYmIHRoaXMudmFsdWUkLnB4UmVzdWx0cyAmJiArdGhpcy52YWx1ZSQucHlDb3VudCA+IDA7XG5cbiAgICBpZiAoYXR0YWNobWVudHNGcm9tU2VydmVyKSB7XG4gICAgICB0aGlzLnVwZGF0ZUF0dGFjaG1lbnRzRnJvbVNlcnZlcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBHZXQgdGhlIGF0dGFjaG1lbnRzIGZyb20gdGhlIFJlZHV4XG4gICAgICB0aGlzLm15RmlsZXMgPSB0aGlzLmdldEN1cnJlbnRBdHRhY2htZW50c0xpc3QodGhpcy5nZXRBdHRhY2htZW50S2V5KHRoaXMuYXR0X3ZhbHVlUmVmKSwgdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSk7XG5cbiAgICAgIGlmICh0aGlzLm15RmlsZXM/Lmxlbmd0aCAmJiB0aGlzLmFyRmlsZXMkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmFyRmlsZUxpc3QkID0gdGhpcy5teUZpbGVzLm1hcChhdHQgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmdldE5ld0xpc3RVdGlsaXR5SXRlbVByb3BzKHtcbiAgICAgICAgICAgIGF0dCxcbiAgICAgICAgICAgIGRvd25sb2FkRmlsZTogbnVsbCxcbiAgICAgICAgICAgIGNhbmNlbEZpbGU6IG51bGwsXG4gICAgICAgICAgICBkZWxldGVGaWxlOiBudWxsLFxuICAgICAgICAgICAgcmVtb3ZlRmlsZTogbnVsbFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbXlGaWxlc0F0dGFjaG1lbnRJRHM6IGFueSA9IFtdO1xuICAgICAgdGhpcy5teUZpbGVzLmZvckVhY2gobXlGaWxlID0+IHtcbiAgICAgICAgbXlGaWxlc0F0dGFjaG1lbnRJRHMucHVzaChteUZpbGUuSUQpO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuYXJGaWxlcyQuZm9yRWFjaChhckZpbGUgPT4ge1xuICAgICAgICBpZiAoIW15RmlsZXNBdHRhY2htZW50SURzLmluY2x1ZGVzKGFyRmlsZS5JRCkpIHtcbiAgICAgICAgICB0aGlzLm15RmlsZXMgPSBbLi4udGhpcy5teUZpbGVzLCBhckZpbGVdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmJTaG93SnVzdERlbGV0ZSQgPSB0cnVlO1xuICAgIHRoaXMuYlNob3dTZWxlY3RvciQgPSAhKHRoaXMuYXJGaWxlTGlzdCQ/Lmxlbmd0aCA+IDApIHx8IHRoaXMuYWxsb3dNdWx0aXBsZSQ7XG5cbiAgICBpZiAodGhpcy5hckZpbGVMaXN0JC5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLkNoZWNrRm9ySW52YWxpZEF0dGFjaG1lbnQoKTtcbiAgICB9XG4gICAgUENvcmUuZ2V0UHViU3ViVXRpbHMoKS5zdWJzY3JpYmUoXG4gICAgICBQQ29yZS5nZXRDb25zdGFudHMoKS5QVUJfU1VCX0VWRU5UUy5DQVNFX0VWRU5UUy5BU1NJR05NRU5UX1NVQk1JU1NJT04sXG4gICAgICB0aGlzLnJlc2V0QXR0YWNobWVudFN0b3JlZFN0YXRlLmJpbmQodGhpcyksXG4gICAgICB0aGlzLmNhc2VJRFxuICAgICk7XG4gIH1cblxuICB1cGRhdGVBdHRhY2htZW50c0Zyb21TZXJ2ZXIoKSB7XG4gICAgdGhpcy52YWx1ZSQucHhSZXN1bHRzLmZvckVhY2goKGF0dGFjaG1lbnQsIGkpID0+IHtcbiAgICAgIGNvbnN0IGZpbGU6IGFueSA9IHRoaXMuYnVpbGRGaWxlUHJvcHNGcm9tUmVzcG9uc2UoYXR0YWNobWVudCk7XG4gICAgICBpZiAoZmlsZS5yZXNwb25zZVByb3BzKSB7XG4gICAgICAgIHRoaXMudXBkYXRlQXR0YWNobWVudHNJbmZvKCk7XG4gICAgICAgIGlmIChmaWxlLnJlc3BvbnNlUHJvcHMucHpJbnNLZXkgJiYgIWZpbGUucmVzcG9uc2VQcm9wcy5wekluc0tleS5pbmNsdWRlcygndGVtcCcpKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzRmlsZShmaWxlLCBpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsZSkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRBdHRhY2htZW50TGlzdCA9IHRoaXMuZ2V0Q3VycmVudEF0dGFjaG1lbnRzTGlzdCh0aGlzLmdldEF0dGFjaG1lbnRLZXkodGhpcy5hdHRfdmFsdWVSZWYpLCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKTtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGN1cnJlbnRBdHRhY2htZW50TGlzdC5maW5kSW5kZXgoZWxlbWVudCA9PiBlbGVtZW50LnByb3BzLklEID09PSBmaWxlLnByb3BzLklEKTtcbiAgICAgICAgICBsZXQgdGVtcEZpbGVzOiBhbnkgPSBbXTtcbiAgICAgICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgICAgICB0ZW1wRmlsZXMgPSBbZmlsZV07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgUENvcmUuZ2V0U3RhdGVVdGlscygpLnVwZGF0ZVN0YXRlKFxuICAgICAgICAgICAgdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0QXR0YWNobWVudEtleSh0aGlzLmF0dF92YWx1ZVJlZiksXG4gICAgICAgICAgICBbLi4uY3VycmVudEF0dGFjaG1lbnRMaXN0LCAuLi50ZW1wRmlsZXNdLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwYWdlUmVmZXJlbmNlOiAnY29udGV4dF9kYXRhJyxcbiAgICAgICAgICAgICAgaXNBcnJheURlZXBNZXJnZTogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXNldEF0dGFjaG1lbnRTdG9yZWRTdGF0ZSgpIHtcbiAgICBQQ29yZS5nZXRTdGF0ZVV0aWxzKCkudXBkYXRlU3RhdGUodGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSwgdGhpcy5nZXRBdHRhY2htZW50S2V5KHRoaXMuYXR0X3ZhbHVlUmVmKSwgdW5kZWZpbmVkLCB7XG4gICAgICBwYWdlUmVmZXJlbmNlOiAnY29udGV4dF9kYXRhJyxcbiAgICAgIGlzQXJyYXlEZWVwTWVyZ2U6IGZhbHNlXG4gICAgfSk7XG4gIH1cblxuICBfZG93bmxvYWRGaWxlRnJvbUxpc3QoZmlsZU9iajogYW55KSB7XG4gICAgUENvcmUuZ2V0QXR0YWNobWVudFV0aWxzKClcbiAgICAgIC8vIEB0cy1pZ25vcmUgLSAzcmQgcGFyYW1ldGVyIFwicmVzcG9uc2VFbmNvZGluZ1wiIHNob3VsZCBiZSBvcHRpb25hbFxuICAgICAgLmRvd25sb2FkQXR0YWNobWVudChmaWxlT2JqLnB6SW5zS2V5LCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKVxuICAgICAgLnRoZW4oKGNvbnRlbnQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBleHRlbnNpb24gPSBmaWxlT2JqLnB5QXR0YWNoTmFtZS5zcGxpdCgnLicpLnBvcCgpO1xuICAgICAgICB0aGlzLmZpbGVEb3dubG9hZChjb250ZW50LmRhdGEsIGZpbGVPYmoucHlGaWxlTmFtZSwgZXh0ZW5zaW9uKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgfSk7XG4gIH1cblxuICBmaWxlRG93bmxvYWQgPSAoZGF0YSwgZmlsZU5hbWUsIGV4dCkgPT4ge1xuICAgIGNvbnN0IGZpbGUgPSBleHQgPyBgJHtmaWxlTmFtZX0uJHtleHR9YCA6IGZpbGVOYW1lO1xuICAgIGRvd25sb2FkKGF0b2IoZGF0YSksIGZpbGUpO1xuICB9O1xuXG4gIGdldEF0dGFjaG1lbnRLZXkgPSAobmFtZSA9ICcnKSA9PiAobmFtZSA/IGBhdHRhY2htZW50c0xpc3QuJHtuYW1lfWAgOiAnYXR0YWNobWVudHNMaXN0Jyk7XG5cbiAgQ2hlY2tGb3JJbnZhbGlkQXR0YWNobWVudCgpIHtcbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgdGhpcy5hckZpbGVMaXN0JC5mb3JFYWNoKGZpbGUgPT4ge1xuICAgICAgaWYgKGZpbGUuc2Vjb25kYXJ5LmVycm9yKSB7XG4gICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoaXNWYWxpZCkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgUENvcmUuZ2V0TWVzc2FnZU1hbmFnZXIoKS5jbGVhck1lc3NhZ2VzKHtcbiAgICAgICAgdHlwZTogUENvcmUuZ2V0Q29uc3RhbnRzKCkuTUVTU0FHRVMuTUVTU0FHRVNfVFlQRV9FUlJPUixcbiAgICAgICAgcHJvcGVydHk6ICh0aGlzLnBDb25uJC5nZXRTdGF0ZVByb3BzKCkgYXMgYW55KS52YWx1ZSxcbiAgICAgICAgcGFnZVJlZmVyZW5jZTogdGhpcy5wQ29ubiQuZ2V0UGFnZVJlZmVyZW5jZSgpLFxuICAgICAgICBjb250ZXh0OiB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBfcmVtb3ZlRmlsZUZyb21MaXN0KGl0ZW06IGFueSkge1xuICAgIGNvbnN0IGZpbGVMaXN0SW5kZXggPSB0aGlzLmFyRmlsZUxpc3QkLmZpbmRJbmRleChlbGVtZW50ID0+IGVsZW1lbnQ/LmlkID09PSBpdGVtPy5pZCk7XG4gICAgY29uc3QgZmlsZUluZGV4ID0gdGhpcy5hckZpbGVzJC5maW5kSW5kZXgoZWxlbWVudCA9PiBlbGVtZW50Py5JRCA9PT0gaXRlbT8uaWQpO1xuXG4gICAgY29uc3QgYXR0YWNobWVudHNMaXN0ID0gW107XG4gICAgbGV0IGN1cnJlbnRBdHRhY2htZW50TGlzdCA9IHRoaXMuZ2V0Q3VycmVudEF0dGFjaG1lbnRzTGlzdCh0aGlzLmdldEF0dGFjaG1lbnRLZXkodGhpcy5hdHRfdmFsdWVSZWYpLCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKTtcbiAgICBpZiAodGhpcy52YWx1ZSQgJiYgdGhpcy52YWx1ZSQucHhSZXN1bHRzICYmICt0aGlzLnZhbHVlJC5weUNvdW50ID4gMCAmJiBpdGVtLmFjdGlvbnMpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRBdHRhY2htZW50cyA9IGN1cnJlbnRBdHRhY2htZW50TGlzdC5tYXAoYXR0YWNobWVudCA9PiB7XG4gICAgICAgIGlmIChhdHRhY2htZW50Py5JRCA9PT0gdGhpcy5hckZpbGVMaXN0JFtmaWxlTGlzdEluZGV4XS5pZCB8fCBhdHRhY2htZW50Py5wcm9wcz8uSUQgPT09IHRoaXMuYXJGaWxlTGlzdCRbZmlsZUxpc3RJbmRleF0uaWQpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi5hdHRhY2htZW50LCBkZWxldGU6IHRydWUsIGxhYmVsOiB0aGlzLnZhbHVlUmVmIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnQ7XG4gICAgICB9KTtcblxuICAgICAgLy8gdXBkYXRpbmcgdGhlIHJlZHV4IHN0b3JlIHRvIGhlbHAgZm9ybS1oYW5kbGVyIGluIHBhc3NpbmcgdGhlIGRhdGEgdG8gZGVsZXRlIHRoZSBmaWxlIGZyb20gc2VydmVyXG4gICAgICBQQ29yZS5nZXRTdGF0ZVV0aWxzKCkudXBkYXRlU3RhdGUodGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSwgdGhpcy5nZXRBdHRhY2htZW50S2V5KHRoaXMuYXR0X3ZhbHVlUmVmKSwgdXBkYXRlZEF0dGFjaG1lbnRzLCB7XG4gICAgICAgIHBhZ2VSZWZlcmVuY2U6ICdjb250ZXh0X2RhdGEnLFxuICAgICAgICBpc0FycmF5RGVlcE1lcmdlOiBmYWxzZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnRBdHRhY2htZW50TGlzdCA9IGN1cnJlbnRBdHRhY2htZW50TGlzdC5maWx0ZXIoZiA9PiBmLklEICE9PSBpdGVtLmlkKTtcbiAgICAgIFBDb3JlLmdldFN0YXRlVXRpbHMoKS51cGRhdGVTdGF0ZShcbiAgICAgICAgdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKSxcbiAgICAgICAgdGhpcy5nZXRBdHRhY2htZW50S2V5KHRoaXMuYXR0X3ZhbHVlUmVmKSxcbiAgICAgICAgWy4uLmN1cnJlbnRBdHRhY2htZW50TGlzdCwgLi4uYXR0YWNobWVudHNMaXN0XSxcbiAgICAgICAge1xuICAgICAgICAgIHBhZ2VSZWZlcmVuY2U6ICdjb250ZXh0X2RhdGEnLFxuICAgICAgICAgIGlzQXJyYXlEZWVwTWVyZ2U6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGZpbGVMaXN0SW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5hckZpbGVMaXN0JC5zcGxpY2UoZmlsZUxpc3RJbmRleCwgMSk7XG4gICAgfVxuICAgIGlmIChmaWxlSW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5hckZpbGVzJC5zcGxpY2UoZmlsZUluZGV4LCAxKTtcbiAgICB9XG5cbiAgICB0aGlzLkNoZWNrRm9ySW52YWxpZEF0dGFjaG1lbnQoKTtcblxuICAgIHRoaXMuYlNob3dTZWxlY3RvciQgPSAhKHRoaXMuYXJGaWxlTGlzdCQ/Lmxlbmd0aCA+IDApIHx8IHRoaXMuYWxsb3dNdWx0aXBsZSQ7XG4gIH1cblxuICBnZXRDdXJyZW50QXR0YWNobWVudHNMaXN0KGtleSwgY29udGV4dCkge1xuICAgIHJldHVybiBQQ29yZS5nZXRTdG9yZVZhbHVlKGAuJHtrZXl9YCwgJ2NvbnRleHRfZGF0YScsIGNvbnRleHQpIHx8IFtdO1xuICB9XG5cbiAgZXJyb3JIYW5kbGVyKGlzRmV0Y2hDYW5jZWxlZCwgZmlsZSkge1xuICAgIHJldHVybiBlcnJvciA9PiB7XG4gICAgICBpZiAoIWlzRmV0Y2hDYW5jZWxlZChlcnJvcikpIHtcbiAgICAgICAgbGV0IHVwbG9hZEZhaWxNc2cgPSB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnU29tZXRoaW5nIHdlbnQgd3JvbmcnLCAnJywgJycpO1xuICAgICAgICBpZiAoZXJyb3IucmVzcG9uc2UgJiYgZXJyb3IucmVzcG9uc2UuZGF0YSAmJiBlcnJvci5yZXNwb25zZS5kYXRhLmVycm9yRGV0YWlscykge1xuICAgICAgICAgIHVwbG9hZEZhaWxNc2cgPSB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZShlcnJvci5yZXNwb25zZS5kYXRhLmVycm9yRGV0YWlsc1swXS5sb2NhbGl6ZWRWYWx1ZSwgJycsICcnKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGNvbnN0IG15RmlsZSBvZiB0aGlzLm15RmlsZXMpIHtcbiAgICAgICAgICBpZiAobXlGaWxlLklEID09PSBmaWxlLklEKSB7XG4gICAgICAgICAgICBteUZpbGUubWV0YSA9IHVwbG9hZEZhaWxNc2c7XG4gICAgICAgICAgICBteUZpbGUuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgbXlGaWxlLmZpbGVOYW1lID0gdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ1VuYWJsZSB0byB1cGxvYWQgZmlsZScsICcnLCAnJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuYlNob3dTZWxlY3RvciQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hckZpbGVMaXN0JCA9IHRoaXMubXlGaWxlcy5tYXAoYXR0ID0+IHtcbiAgICAgICAgICBpZiAoYXR0LmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gYXR0O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXROZXdMaXN0VXRpbGl0eUl0ZW1Qcm9wcyh7XG4gICAgICAgICAgICBhdHQsXG4gICAgICAgICAgICBkb3dubG9hZEZpbGU6IG51bGwsXG4gICAgICAgICAgICBjYW5jZWxGaWxlOiBudWxsLFxuICAgICAgICAgICAgZGVsZXRlRmlsZTogbnVsbCxcbiAgICAgICAgICAgIHJlbW92ZUZpbGU6IG51bGxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgUENvcmUuZ2V0TWVzc2FnZU1hbmFnZXIoKS5hZGRNZXNzYWdlcyh7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG1lc3NhZ2VzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdFcnJvciB3aXRoIG9uZSBvciBtb3JlIGZpbGVzJywgJycsICcnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgcHJvcGVydHk6ICh0aGlzLnBDb25uJC5nZXRTdGF0ZVByb3BzKCkgYXMgYW55KS52YWx1ZSxcbiAgICAgICAgICBwYWdlUmVmZXJlbmNlOiB0aGlzLnBDb25uJC5nZXRQYWdlUmVmZXJlbmNlKCksXG4gICAgICAgICAgY29udGV4dDogdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmJTaG93SnVzdERlbGV0ZSQgPSB0cnVlO1xuICAgICAgICB0aGlzLmJMb2FkaW5nJCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfTtcbiAgfVxuXG4gIHVwbG9hZE15RmlsZXMoZXZlbnQ6IGFueSkge1xuICAgIGxldCBhcnJBdHRhY2htZW50RmlsZXM6IGFueSA9IFtdO1xuICAgIGlmICh0aGlzLmFyRmlsZXMkLmxlbmd0aCkge1xuICAgICAgYXJyQXR0YWNobWVudEZpbGVzID0gdGhpcy5hckZpbGVzJDtcbiAgICB9IGVsc2Uge1xuICAgICAgYXJyQXR0YWNobWVudEZpbGVzID0gdGhpcy5hckZpbGVMaXN0JDtcbiAgICB9XG4gICAgdGhpcy5hckZpbGVzJCA9IFsuLi5hcnJBdHRhY2htZW50RmlsZXMsIC4uLnRoaXMuZ2V0RmlsZXMoZXZlbnQudGFyZ2V0LmZpbGVzKV07XG5cbiAgICAvLyBjb252ZXJ0IEZpbGVMaXN0IHRvIGFuIGFycmF5XG4gICAgdGhpcy5teUZpbGVzID0gQXJyYXkuZnJvbSh0aGlzLmFyRmlsZXMkKTtcblxuICAgIHRoaXMuYkxvYWRpbmckID0gdHJ1ZTtcblxuICAgIGNvbnN0IGZpbGVzVG9CZVVwbG9hZGVkID0gdGhpcy5teUZpbGVzXG4gICAgICAuZmlsdGVyKGUgPT4ge1xuICAgICAgICBpZiAoZS5pZCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0ZpbGVVcGxvYWRlZCA9IGUgJiYgZS5wcm9ncmVzcyA9PT0gMTAwO1xuICAgICAgICBjb25zdCBmaWxlSGFzRXJyb3IgPSBlICYmIGUuZXJyb3I7XG4gICAgICAgIGNvbnN0IGlzRmlsZVVwbG9hZGVkaW5MYXN0U3RlcCA9IGUucmVzcG9uc2VQcm9wcyAmJiBlLnJlc3BvbnNlUHJvcHMucHpJbnNLZXk7XG4gICAgICAgIHJldHVybiAhaXNGaWxlVXBsb2FkZWQgJiYgIWZpbGVIYXNFcnJvciAmJiAhaXNGaWxlVXBsb2FkZWRpbkxhc3RTdGVwO1xuICAgICAgfSlcbiAgICAgIC5tYXAoZiA9PlxuICAgICAgICBQQ29yZS5nZXRBdHRhY2htZW50VXRpbHMoKS51cGxvYWRBdHRhY2htZW50KFxuICAgICAgICAgIGYsXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vblVwbG9hZFByb2dyZXNzKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBpc0ZldGNoQ2FuY2VsZWQgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXJyb3JIYW5kbGVyKGlzRmV0Y2hDYW5jZWxlZCwgZik7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICBQcm9taXNlLmFsbFNldHRsZWQoZmlsZXNUb0JlVXBsb2FkZWQpXG4gICAgICAudGhlbigoZmlsZVJlc3BvbnNlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlRmlsZVVwbG9hZFN1Y2Nlc3MoZmlsZVJlc3BvbnNlcyk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgICB0aGlzLmhhbmRsZUZpbGVVcGxvYWRGYWlsdXJlKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZUZpbGVVcGxvYWRTdWNjZXNzKGZpbGVSZXNwb25zZXMpIHtcbiAgICBjb25zdCBzdWNjZXNzRmlsZVJlc3BvbnNlcyA9IGZpbGVSZXNwb25zZXMuZmlsdGVyKGZyID0+IGZyLnN0YXR1cyAhPT0gJ3JlamVjdGVkJyk7IC8vIGluIGNhc2Ugb2YgZGVsZXRpbmcgYW4gaW4gcHJvZ3Jlc3MgZmlsZSwgcHJvbWlzZSBnZXRzIGNhbmNlbGxlZCBidXQgc3RpbGwgZW50ZXJzIHRoZW4gYmxvY2tcbiAgICBsZXQgcmVxT2JqO1xuICAgIGlmIChzdWNjZXNzRmlsZVJlc3BvbnNlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB0ZW1wRmlsZXNVcGxvYWRlZCA9IFsuLi50aGlzLmFyRmlsZXMkLmZpbHRlcihmaWxlID0+ICFmaWxlLmlkKV07XG4gICAgICBsZXQgbmV3QXR0YWNobWVudHM6IGFueSA9IFtdO1xuICAgICAgdGVtcEZpbGVzVXBsb2FkZWQuZm9yRWFjaChmaWxlUmVzID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBzdWNjZXNzRmlsZVJlc3BvbnNlcy5maW5kSW5kZXgoKGZyOiBhbnkpID0+IGZyLnZhbHVlLmNsaWVudEZpbGVJRCA9PT0gZmlsZVJlcy5JRCk7XG4gICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgcmVxT2JqID0ge1xuICAgICAgICAgICAgdHlwZTogJ0ZpbGUnLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMuYXR0X3ZhbHVlUmVmLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IHRoaXMuYXR0X2NhdGVnb3J5TmFtZSxcbiAgICAgICAgICAgIGhhbmRsZTogc3VjY2Vzc0ZpbGVSZXNwb25zZXNbaW5kZXhdLnZhbHVlLklELFxuICAgICAgICAgICAgSUQ6IGZpbGVSZXMuSUQsXG4gICAgICAgICAgICBuYW1lOiBmaWxlUmVzLm5hbWVcbiAgICAgICAgICB9O1xuICAgICAgICAgIG5ld0F0dGFjaG1lbnRzID0gWy4uLm5ld0F0dGFjaG1lbnRzLCByZXFPYmpdO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGN1cnJlbnRBdHRhY2htZW50TGlzdCA9IHRoaXMuZ2V0Q3VycmVudEF0dGFjaG1lbnRzTGlzdCh0aGlzLmdldEF0dGFjaG1lbnRLZXkodGhpcy5hdHRfdmFsdWVSZWYpLCB0aGlzLnBDb25uJC5nZXRDb250ZXh0TmFtZSgpKS5maWx0ZXIoXG4gICAgICAgIGYgPT4gZi5sYWJlbCAhPT0gdGhpcy5hdHRfdmFsdWVSZWZcbiAgICAgICk7XG4gICAgICBQQ29yZS5nZXRTdGF0ZVV0aWxzKCkudXBkYXRlU3RhdGUoXG4gICAgICAgIHRoaXMucENvbm4kLmdldENvbnRleHROYW1lKCksXG4gICAgICAgIHRoaXMuZ2V0QXR0YWNobWVudEtleSh0aGlzLmF0dF92YWx1ZVJlZiksXG4gICAgICAgIFsuLi5jdXJyZW50QXR0YWNobWVudExpc3QsIC4uLm5ld0F0dGFjaG1lbnRzXSxcbiAgICAgICAge1xuICAgICAgICAgIHBhZ2VSZWZlcmVuY2U6ICdjb250ZXh0X2RhdGEnLFxuICAgICAgICAgIGlzQXJyYXlEZWVwTWVyZ2U6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICB0aGlzLmFyRmlsZXMkID0gdGVtcEZpbGVzVXBsb2FkZWQ7XG5cbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuYlNob3dTZWxlY3RvciQgPSB0aGlzLmFsbG93TXVsdGlwbGUkO1xuICAgICAgICB0aGlzLmFyRmlsZXMkLmZvckVhY2goZmlsZSA9PiB7XG4gICAgICAgICAgaWYgKCFmaWxlLmVycm9yKSB7XG4gICAgICAgICAgICBmaWxlLm1ldGEgPSB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnRmlsZSB1cGxvYWRlZCBzdWNjZXNzZnVsbHknLCAnJywgJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYXJGaWxlTGlzdCQgPSB0aGlzLm15RmlsZXMubWFwKGF0dCA9PiB7XG4gICAgICAgICAgaWYgKGF0dC5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIGF0dDtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TmV3TGlzdFV0aWxpdHlJdGVtUHJvcHMoe1xuICAgICAgICAgICAgYXR0LFxuICAgICAgICAgICAgZG93bmxvYWRGaWxlOiBudWxsLFxuICAgICAgICAgICAgY2FuY2VsRmlsZTogbnVsbCxcbiAgICAgICAgICAgIGRlbGV0ZUZpbGU6IG51bGwsXG4gICAgICAgICAgICByZW1vdmVGaWxlOiBudWxsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuQ2hlY2tGb3JJbnZhbGlkQXR0YWNobWVudCgpO1xuXG4gICAgICAgIHRoaXMuYlNob3dKdXN0RGVsZXRlJCA9IHRydWU7XG4gICAgICAgIHRoaXMuYkxvYWRpbmckID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVGaWxlVXBsb2FkRmFpbHVyZSgpIHtcbiAgICB0aGlzLmJTaG93SnVzdERlbGV0ZSQgPSB0cnVlO1xuICAgIHRoaXMuYkxvYWRpbmckID0gZmFsc2U7XG4gICAgdGhpcy5iU2hvd1NlbGVjdG9yJCA9IHRoaXMuYWxsb3dNdWx0aXBsZSQ7XG4gICAgdGhpcy5teUZpbGVzLmZvckVhY2goZmlsZSA9PiB7XG4gICAgICBpZiAoZmlsZT8uc2Vjb25kYXJ5Py5lcnJvcikge1xuICAgICAgICBmaWxlLm1ldGEgPSAnRmlsZSB1cGxvYWRlZCBmYWlsZWQnO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5hckZpbGVMaXN0JCA9IHRoaXMubXlGaWxlcy5tYXAoYXR0ID0+IHtcbiAgICAgIHJldHVybiB0aGlzLmdldE5ld0xpc3RVdGlsaXR5SXRlbVByb3BzKHtcbiAgICAgICAgYXR0LFxuICAgICAgICBkb3dubG9hZEZpbGU6IG51bGwsXG4gICAgICAgIGNhbmNlbEZpbGU6IG51bGwsXG4gICAgICAgIGRlbGV0ZUZpbGU6IG51bGwsXG4gICAgICAgIHJlbW92ZUZpbGU6IG51bGxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5iU2hvd0p1c3REZWxldGUkID0gdHJ1ZTtcbiAgICB0aGlzLmJMb2FkaW5nJCA9IGZhbHNlO1xuICB9XG5cbiAgZ2V0TmV3TGlzdFV0aWxpdHlJdGVtUHJvcHMgPSAoeyBhdHQsIGNhbmNlbEZpbGUsIGRvd25sb2FkRmlsZSwgZGVsZXRlRmlsZSwgcmVtb3ZlRmlsZSB9KSA9PiB7XG4gICAgbGV0IGFjdGlvbnM7XG4gICAgbGV0IGlzRG93bmxvYWRhYmxlID0gZmFsc2U7XG5cbiAgICBpZiAoYXR0LnByb2dyZXNzICYmIGF0dC5wcm9ncmVzcyAhPT0gMTAwKSB7XG4gICAgICBhY3Rpb25zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGBDYW5jZWwtJHthdHQuSUR9YCxcbiAgICAgICAgICB0ZXh0OiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnQ2FuY2VsJywgJycsICcnKSxcbiAgICAgICAgICBpY29uOiAndGltZXMnLFxuICAgICAgICAgIG9uQ2xpY2s6IGNhbmNlbEZpbGVcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKGF0dC5saW5rcykge1xuICAgICAgY29uc3QgaXNGaWxlID0gYXR0LnR5cGUgPT09ICdGSUxFJztcbiAgICAgIGNvbnN0IElEID0gYXR0LklELnJlcGxhY2UoL1xccy9naSwgJycpO1xuICAgICAgY29uc3QgYWN0aW9uc01hcCA9IG5ldyBNYXAoW1xuICAgICAgICBbXG4gICAgICAgICAgJ2Rvd25sb2FkJyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogYGRvd25sb2FkLSR7SUR9YCxcbiAgICAgICAgICAgIHRleHQ6IGlzRmlsZSA/IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdEb3dubG9hZCcsICcnLCAnJykgOiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnT3BlbicsICcnLCAnJyksXG4gICAgICAgICAgICBpY29uOiBpc0ZpbGUgPyAnZG93bmxvYWQnIDogJ29wZW4nLFxuICAgICAgICAgICAgb25DbGljazogZG93bmxvYWRGaWxlXG4gICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgJ2RlbGV0ZScsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IGBEZWxldGUtJHtJRH1gLFxuICAgICAgICAgICAgdGV4dDogdGhpcy5wQ29ubiQuZ2V0TG9jYWxpemVkVmFsdWUoJ0RlbGV0ZScsICcnLCAnJyksXG4gICAgICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICAgICAgb25DbGljazogZGVsZXRlRmlsZVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgXSk7XG4gICAgICBhY3Rpb25zID0gW107XG4gICAgICBhY3Rpb25zTWFwLmZvckVhY2goKGFjdGlvbiwgYWN0aW9uS2V5KSA9PiB7XG4gICAgICAgIGlmIChhdHQubGlua3NbYWN0aW9uS2V5XSkge1xuICAgICAgICAgIGFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgIGlzRG93bmxvYWRhYmxlID0gYXR0LmxpbmtzLmRvd25sb2FkO1xuICAgIH0gZWxzZSBpZiAoYXR0LmVycm9yKSB7XG4gICAgICBhY3Rpb25zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGBSZW1vdmUtJHthdHQuSUR9YCxcbiAgICAgICAgICB0ZXh0OiB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnUmVtb3ZlJywgJycsICcnKSxcbiAgICAgICAgICBpY29uOiAndHJhc2gnLFxuICAgICAgICAgIG9uQ2xpY2s6IHJlbW92ZUZpbGVcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGF0dC5JRCxcbiAgICAgIHZpc3VhbDoge1xuICAgICAgICBpY29uOiB0aGlzLnV0aWxzLmdldEljb25Gb3JBdHRhY2htZW50KGF0dCksXG4gICAgICAgIHByb2dyZXNzOiBhdHQucHJvZ3Jlc3MgPT0gMTAwID8gdW5kZWZpbmVkIDogYXR0LnByb2dyZXNzXG4gICAgICB9LFxuICAgICAgcHJpbWFyeToge1xuICAgICAgICB0eXBlOiBhdHQudHlwZSxcbiAgICAgICAgbmFtZTogYXR0LmVycm9yID8gYXR0LmZpbGVOYW1lIDogYXR0Lm5hbWUsXG4gICAgICAgIGljb246ICd0cmFzaCcsXG4gICAgICAgIGNsaWNrOiByZW1vdmVGaWxlXG4gICAgICB9LFxuICAgICAgc2Vjb25kYXJ5OiB7XG4gICAgICAgIHRleHQ6IGF0dC5tZXRhLFxuICAgICAgICBlcnJvcjogYXR0LmVycm9yXG4gICAgICB9LFxuICAgICAgYWN0aW9uc1xuICAgIH07XG4gIH07XG5cbiAgb25VcGxvYWRQcm9ncmVzcygpIHt9XG5cbiAgZ2V0RmlsZXMoYXJGaWxlczogYW55W10pOiBhbnlbXSB7XG4gICAgY29uc3QgZmlsZXMgPSB0aGlzLmFsbG93TXVsdGlwbGUkID8gYXJGaWxlcyA6IFthckZpbGVzWzBdXTtcbiAgICByZXR1cm4gdGhpcy5zZXROZXdGaWxlcyhmaWxlcyk7XG4gIH1cblxuICBzZXROZXdGaWxlcyhhckZpbGVzKSB7XG4gICAgbGV0IGluZGV4ID0gMDtcbiAgICBjb25zdCBtYXhBdHRhY2htZW50U2l6ZSA9IFBDb3JlLmdldEVudmlyb25tZW50SW5mbygpLmdldE1heEF0dGFjaG1lbnRTaXplKCkgfHwgNTtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgYXJGaWxlcykge1xuICAgICAgZmlsZS5taW1lVHlwZSA9IGZpbGUudHlwZTtcbiAgICAgIGZpbGUuaWNvbiA9IHRoaXMudXRpbHMuZ2V0SWNvbkZyb21GaWxlVHlwZShmaWxlLnR5cGUpO1xuICAgICAgZmlsZS5JRCA9IGAke25ldyBEYXRlKCkuZ2V0VGltZSgpfUkke2luZGV4fWA7XG5cbiAgICAgIGlmICghdGhpcy52YWxpZGF0ZU1heFNpemUoZmlsZSwgbWF4QXR0YWNobWVudFNpemUpKSB7XG4gICAgICAgIGZpbGUuZXJyb3IgPSB0cnVlO1xuICAgICAgICBmaWxlLm1ldGEgPSB0aGlzLnBDb25uJC5nZXRMb2NhbGl6ZWRWYWx1ZSgnRmlsZSBpcyB0b28gYmlnLiBNYXggYWxsb3dlZCBzaXplIGlzIDVNQi4nLCAnJywgJycpO1xuICAgICAgfSBlbHNlIGlmICghdGhpcy52YWxpZGF0ZUZpbGVFeHRlbnNpb24oZmlsZSwgdGhpcy5leHRlbnNpb25zJCkpIHtcbiAgICAgICAgZmlsZS5lcnJvciA9IHRydWU7XG4gICAgICAgIGZpbGUubWV0YSA9IGAke3RoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdGaWxlIGhhcyBpbnZhbGlkIGV4dGVuc2lvbi4gQWxsb3dlZCBleHRlbnNpb25zIGFyZTonLCAnJywgJycpfSAke3RoaXMuZXh0ZW5zaW9ucyQucmVwbGFjZUFsbChcbiAgICAgICAgICAnLicsXG4gICAgICAgICAgJydcbiAgICAgICAgKX1gO1xuICAgICAgfVxuICAgICAgaWYgKGZpbGUuZXJyb3IpIHtcbiAgICAgICAgY29uc3QgZmllbGROYW1lID0gKHRoaXMucENvbm4kLmdldFN0YXRlUHJvcHMoKSBhcyBhbnkpLnZhbHVlO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcbiAgICAgICAgUENvcmUuZ2V0TWVzc2FnZU1hbmFnZXIoKS5hZGRNZXNzYWdlcyh7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIG1lc3NhZ2VzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMucENvbm4kLmdldExvY2FsaXplZFZhbHVlKCdFcnJvciB3aXRoIG9uZSBvciBtb3JlIGZpbGVzJywgJycsICcnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgcHJvcGVydHk6IGZpZWxkTmFtZSxcbiAgICAgICAgICBwYWdlUmVmZXJlbmNlOiB0aGlzLnBDb25uJC5nZXRQYWdlUmVmZXJlbmNlKCksXG4gICAgICAgICAgY29udGV4dFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGluZGV4Kys7XG4gICAgfVxuXG4gICAgcmV0dXJuIFsuLi5hckZpbGVzXTtcbiAgfVxuXG4gIHZhbGlkYXRlTWF4U2l6ZShmaWxlT2JqLCBtYXhTaXplSW5NQik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpbGVTaXplID0gKGZpbGVPYmouc2l6ZSAvIDEwNDg1NzYpLnRvRml4ZWQoMik7XG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoZmlsZVNpemUpIDwgcGFyc2VGbG9hdChtYXhTaXplSW5NQik7XG4gIH1cblxuICB2YWxpZGF0ZUZpbGVFeHRlbnNpb24gPSAoZmlsZU9iaiwgYWxsb3dlZEV4dGVuc2lvbnMpID0+IHtcbiAgICBpZiAoIWFsbG93ZWRFeHRlbnNpb25zKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgYWxsb3dlZEV4dGVuc2lvbkxpc3QgPSBhbGxvd2VkRXh0ZW5zaW9uc1xuICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAubWFwKGl0ZW0gPT4gaXRlbS5yZXBsYWNlQWxsKCcuJywgJycpLnRyaW0oKSk7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gZmlsZU9iai5uYW1lLnNwbGl0KCcuJykucG9wKCkudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gYWxsb3dlZEV4dGVuc2lvbkxpc3QuaW5jbHVkZXMoZXh0ZW5zaW9uKTtcbiAgfTtcblxuICBidWlsZEZpbGVQcm9wc0Zyb21SZXNwb25zZShyZXNwT2JqKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIG1ldGE6IGAke3Jlc3BPYmoucHlDYXRlZ29yeU5hbWV9LCAke3Jlc3BPYmoucHhDcmVhdGVPcGVyYXRvcn1gLFxuICAgICAgICBuYW1lOiByZXNwT2JqLnB5QXR0YWNoTmFtZSxcbiAgICAgICAgaWNvbjogdGhpcy51dGlscy5nZXRJY29uRnJvbUZpbGVUeXBlKHJlc3BPYmoucHlNaW1lRmlsZUV4dGVuc2lvbilcbiAgICAgIH0sXG4gICAgICByZXNwb25zZVByb3BzOiB7XG4gICAgICAgIC4uLnJlc3BPYmpcbiAgICAgIH1cbiAgICB9O1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicHNkay1sYWJlbC1pbmZpeC1yZWFkb25seVwiICpuZ0lmPVwiYlZpc2libGUkXCI+XG4gIDxzcGFuIGNsYXNzPVwicHNkay1sYWJlbC13cmFwcGVyLXJlYWRvbmx5XCI+XG4gICAgPGxhYmVsIFtuZ0NsYXNzXT1cInsgJ3BzZGstbGFiZWwtcmVhZG9ubHknOiB0cnVlLCAnbGFiZWwtcmVxdWlyZWQnOiBiUmVxdWlyZWQkID09PSB0cnVlIH1cIiBbaHRtbEZvcl09XCJhdHRfdmFsdWVSZWZcIj57eyBsYWJlbCQgfX08L2xhYmVsPlxuICA8L3NwYW4+XG4gIDxkaXZcbiAgICBbbmdDbGFzc109XCJ7ICdwc2RrLW1vZGFsLWZpbGUtc2VsZWN0b3InOiBzdGF0dXMgIT09ICdlcnJvcicsICdwc2RrLW1vZGFsLWZpbGUtc2VsZWN0b3ItZXJyb3InOiBzdGF0dXMgPT09ICdlcnJvcicgfVwiXG4gICAgaWQ9XCJhdHRhY2htZW50LWNvbnRhaW5lclwiXG4gICAgKm5nSWY9XCJiU2hvd1NlbGVjdG9yJFwiXG4gID5cbiAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJiTG9hZGluZyRcIiBjbGFzcz1cInByb2dyZXNzLXNwaW5uZXJcIiBkaWFtZXRlcj1cIjQwXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICA8aW5wdXQgaGlkZGVuIHR5cGU9XCJmaWxlXCIgW3JlcXVpcmVkXT1cImJSZXF1aXJlZCRcIiAjdXBsb2FkZXIgW2lkXT1cImF0dF92YWx1ZVJlZlwiIFttdWx0aXBsZV09XCJhbGxvd011bHRpcGxlJFwiIChjaGFuZ2UpPVwidXBsb2FkTXlGaWxlcygkZXZlbnQpXCIgLz5cblxuICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJiRGlzYWJsZWQkXCIgKGNsaWNrKT1cInVwbG9hZGVyLmNsaWNrKClcIj5cbiAgICAgIHt7XG4gICAgICAgIGFsbG93TXVsdGlwbGUkXG4gICAgICAgICAgPyB1cGxvYWRNdWx0aXBsZUZpbGVzTGFiZWwgPT09ICdmaWxlX3VwbG9hZF90ZXh0X211bHRpcGxlJ1xuICAgICAgICAgICAgPyAnQ2hvb3NlIGZpbGVzJ1xuICAgICAgICAgICAgOiB1cGxvYWRNdWx0aXBsZUZpbGVzTGFiZWxcbiAgICAgICAgICA6IHVwbG9hZFNpbmdsZUZpbGVMYWJlbCA9PT0gJ2ZpbGVfdXBsb2FkX3RleHRfb25lJ1xuICAgICAgICAgICAgPyAnQ2hvb3NlIGEgZmlsZSdcbiAgICAgICAgICAgIDogdXBsb2FkU2luZ2xlRmlsZUxhYmVsXG4gICAgICB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPHNwYW4gKm5nSWY9XCJ2YWxpZGF0ZU1lc3NhZ2VcIiBjbGFzcz1cImZpbGUtZXJyb3JcIj57eyB2YWxpZGF0ZU1lc3NhZ2UgfX08L3NwYW4+XG5cbiAgPGRpdiBjbGFzcz1cInBzZGstYXR0YWNobWVudC1saXN0XCIgKm5nSWY9XCJhckZpbGVMaXN0JCAhPSBudWxsICYmIGFyRmlsZUxpc3QkLmxlbmd0aCA+IDBcIj5cbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhdHRhY2htZW50IG9mIGFyRmlsZUxpc3QkXCI+XG4gICAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgICAqbmdJZj1cImF0dGFjaG1lbnQubm9EZWxldGVJY29uICE9PSB0cnVlOyBlbHNlIHNob3dmdWxsXCJcbiAgICAgICAgbmFtZT1cIlN1bW1hcnlJdGVtXCJcbiAgICAgICAgW3Byb3BzXT1cInsgaXRlbSQ6IGF0dGFjaG1lbnQsIG1lbnVJY29uT3ZlcnJpZGUkOiAndHJhc2gnLCBtZW51SWNvbk92ZXJyaWRlQWN0aW9uJDogcmVtb3ZlRmlsZUZyb21MaXN0JCB9XCJcbiAgICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI3Nob3dmdWxsPlxuICAgICAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiU3VtbWFyeUl0ZW1cIiBbcHJvcHNdPVwieyBpdGVtJDogYXR0YWNobWVudCwgbWVudUljb25PdmVycmlkZUFjdGlvbiQ6IHJlbW92ZUZpbGVGcm9tTGlzdCQgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=