@mediusinc/mng-commons 3.5.0 → 3.6.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/assets/fonts/poppins-v20-latin-500.woff +0 -0
  2. package/assets/fonts/poppins-v20-latin-500.woff2 +0 -0
  3. package/assets/fonts/poppins-v20-latin-600.woff +0 -0
  4. package/assets/fonts/poppins-v20-latin-600.woff2 +0 -0
  5. package/assets/fonts/poppins-v20-latin-700.woff +0 -0
  6. package/assets/fonts/poppins-v20-latin-700.woff2 +0 -0
  7. package/assets/fonts/poppins-v20-latin-regular.woff +0 -0
  8. package/assets/fonts/poppins-v20-latin-regular.woff2 +0 -0
  9. package/assets/i18n/en.json +6 -2
  10. package/assets/i18n/sl.json +6 -2
  11. package/esm2022/lib/api/models/filter-match-type.model.mjs +3 -1
  12. package/esm2022/lib/api/utils/medius-rest.util.mjs +70 -40
  13. package/esm2022/lib/components/action/action.component.mjs +5 -5
  14. package/esm2022/lib/components/action/editor/action-editor.component.mjs +8 -7
  15. package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +96 -23
  16. package/esm2022/lib/components/form/date-range/date-range.component.mjs +14 -5
  17. package/esm2022/lib/components/form/dropdown/dropdown.component.mjs +3 -3
  18. package/esm2022/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.mjs +2 -2
  19. package/esm2022/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +3 -3
  20. package/esm2022/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +17 -3
  21. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +16 -4
  22. package/esm2022/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +2 -2
  23. package/esm2022/lib/components/layout/menu-item.component.mjs +3 -3
  24. package/esm2022/lib/components/layout/topbar.component.mjs +2 -2
  25. package/esm2022/lib/components/layoutV2/breadcrumb.component.mjs +30 -0
  26. package/esm2022/lib/components/layoutV2/footer.component.mjs +19 -0
  27. package/esm2022/lib/components/layoutV2/index.mjs +8 -0
  28. package/esm2022/lib/components/layoutV2/main-layout.component.mjs +89 -0
  29. package/esm2022/lib/components/layoutV2/menu-item.component.mjs +229 -0
  30. package/esm2022/lib/components/layoutV2/menu.component.mjs +31 -0
  31. package/esm2022/lib/components/layoutV2/model/index.mjs +3 -0
  32. package/esm2022/lib/components/layoutV2/model/layout-state.model.mjs +2 -0
  33. package/esm2022/lib/components/layoutV2/model/menu.model.mjs +2 -0
  34. package/esm2022/lib/components/layoutV2/services/index.mjs +3 -0
  35. package/esm2022/lib/components/layoutV2/services/main-layout.component.service.mjs +53 -0
  36. package/esm2022/lib/components/layoutV2/services/menu.service.mjs +122 -0
  37. package/esm2022/lib/components/layoutV2/sidebar.component.mjs +54 -0
  38. package/esm2022/lib/components/layoutV2/topbar-user.component.mjs +40 -0
  39. package/esm2022/lib/components/layoutV2/topbar.component.mjs +75 -0
  40. package/esm2022/lib/components/layoutV2/version.component.mjs +63 -0
  41. package/esm2022/lib/components/pages/error/error.page.component.mjs +3 -3
  42. package/esm2022/lib/components/pages/not-found/not-found.page.component.mjs +3 -3
  43. package/esm2022/lib/components/tableview/index.mjs +2 -1
  44. package/esm2022/lib/components/tableview/table/column-filter/column-filter.component.mjs +3 -6
  45. package/esm2022/lib/components/tableview/table/column-filter-full/column-filter-full.component.mjs +471 -0
  46. package/esm2022/lib/components/tableview/table/column-value/column-value.component.mjs +2 -2
  47. package/esm2022/lib/components/tableview/table/table.component.mjs +24 -16
  48. package/esm2022/lib/components/tableview/tableview.component.mjs +6 -5
  49. package/esm2022/lib/descriptors/editor/editor.descriptor.mjs +131 -34
  50. package/esm2022/lib/descriptors/editor/field.descriptor.mjs +25 -13
  51. package/esm2022/lib/descriptors/table/table.descriptor.mjs +10 -1
  52. package/esm2022/lib/descriptors/types/filter.type.mjs +3 -1
  53. package/esm2022/lib/directives/dialog-keydown-handler.directive.mjs +49 -0
  54. package/esm2022/lib/directives/index.mjs +2 -1
  55. package/esm2022/lib/mng-commons.module.mjs +10 -3
  56. package/esm2022/lib/models/common-init-event-enum.model.mjs +11 -0
  57. package/esm2022/lib/models/config.model.mjs +1 -1
  58. package/esm2022/lib/models/index.mjs +3 -1
  59. package/esm2022/lib/models/menu-config.model.mjs +2 -0
  60. package/esm2022/lib/models/menu.model.mjs +1 -1
  61. package/esm2022/lib/router/route-builder.mjs +55 -16
  62. package/esm2022/lib/router/routes-builder.mjs +9 -1
  63. package/esm2022/lib/services/action-executor.service.mjs +3 -4
  64. package/esm2022/lib/services/commons.service.mjs +26 -4
  65. package/esm2022/lib/services/internal/commons-init.service.mjs +28 -3
  66. package/esm2022/lib/utils/coercion.util.mjs +6 -0
  67. package/esm2022/lib/utils/index.mjs +2 -1
  68. package/esm2022/lib/utils/route.util.mjs +25 -1
  69. package/fesm2022/mediusinc-mng-commons.mjs +1897 -308
  70. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
  71. package/lib/api/models/filter-match-type.model.d.ts +3 -1
  72. package/lib/components/action/action.component.d.ts +1 -0
  73. package/lib/components/action/editor/action-editor.component.d.ts +2 -1
  74. package/lib/components/form/autocomplete/autocomplete.component.d.ts +26 -4
  75. package/lib/components/form/date-range/date-range.component.d.ts +4 -1
  76. package/lib/components/layoutV2/breadcrumb.component.d.ts +10 -0
  77. package/lib/components/layoutV2/footer.component.d.ts +8 -0
  78. package/lib/components/layoutV2/index.d.ts +7 -0
  79. package/lib/components/layoutV2/main-layout.component.d.ts +23 -0
  80. package/lib/components/layoutV2/menu-item.component.d.ts +38 -0
  81. package/lib/components/layoutV2/menu.component.d.ts +12 -0
  82. package/lib/components/layoutV2/model/index.d.ts +2 -0
  83. package/lib/components/layoutV2/model/layout-state.model.d.ts +11 -0
  84. package/lib/components/layoutV2/model/menu.model.d.ts +4 -0
  85. package/lib/components/layoutV2/services/index.d.ts +2 -0
  86. package/lib/components/layoutV2/services/main-layout.component.service.d.ts +14 -0
  87. package/lib/components/layoutV2/services/menu.service.d.ts +22 -0
  88. package/lib/components/layoutV2/sidebar.component.d.ts +19 -0
  89. package/lib/components/layoutV2/topbar-user.component.d.ts +16 -0
  90. package/lib/components/layoutV2/topbar.component.d.ts +23 -0
  91. package/lib/components/layoutV2/version.component.d.ts +19 -0
  92. package/lib/components/tableview/index.d.ts +1 -0
  93. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +2 -3
  94. package/lib/components/tableview/table/column-filter-full/column-filter-full.component.d.ts +85 -0
  95. package/lib/components/tableview/table/table.component.d.ts +8 -6
  96. package/lib/descriptors/editor/editor.descriptor.d.ts +139 -42
  97. package/lib/descriptors/editor/field.descriptor.d.ts +35 -30
  98. package/lib/descriptors/table/table.descriptor.d.ts +3 -0
  99. package/lib/descriptors/types/filter.type.d.ts +3 -1
  100. package/lib/directives/dialog-keydown-handler.directive.d.ts +12 -0
  101. package/lib/directives/index.d.ts +1 -0
  102. package/lib/mng-commons.module.d.ts +50 -48
  103. package/lib/models/common-init-event-enum.model.d.ts +9 -0
  104. package/lib/models/config.model.d.ts +9 -8
  105. package/lib/models/index.d.ts +2 -0
  106. package/lib/models/menu-config.model.d.ts +15 -0
  107. package/lib/models/menu.model.d.ts +3 -1
  108. package/lib/router/route-builder.d.ts +21 -3
  109. package/lib/router/routes-builder.d.ts +5 -0
  110. package/lib/services/internal/commons-init.service.d.ts +5 -0
  111. package/lib/utils/coercion.util.d.ts +2 -0
  112. package/lib/utils/index.d.ts +1 -0
  113. package/lib/utils/route.util.d.ts +19 -30
  114. package/package.json +2 -2
  115. package/scss/common/layout/_breadcrumb.scss +0 -1
  116. package/scss/mng-commons-dark-v2.scss +9 -0
  117. package/scss/mng-commons-light-v2.scss +9 -0
  118. package/scss/mng-overrides/_theme_autocomplete.scss +10 -12
  119. package/scss/mng-overrides/_theme_fileupload.scss +24 -0
  120. package/scss/mng-overrides/_theme_styles.scss +1 -0
  121. package/scss/v2/layout/_animation.scss +53 -0
  122. package/scss/v2/layout/_breadcrumb.scss +97 -0
  123. package/scss/v2/layout/_config.scss +42 -0
  124. package/scss/v2/layout/_content.scss +3 -0
  125. package/scss/v2/layout/_fonts.scss +32 -0
  126. package/scss/v2/layout/_layout_dark.scss +12 -0
  127. package/scss/v2/layout/_layout_light.scss +12 -0
  128. package/scss/v2/layout/_main.scss +54 -0
  129. package/scss/v2/layout/_profile.scss +10 -0
  130. package/scss/v2/layout/_responsive.scss +131 -0
  131. package/scss/v2/layout/_sidebar_drawer.scss +283 -0
  132. package/scss/v2/layout/_sidebar_horizontal.scss +168 -0
  133. package/scss/v2/layout/_sidebar_reveal.scss +201 -0
  134. package/scss/v2/layout/_sidebar_slim.scss +157 -0
  135. package/scss/v2/layout/_sidebar_slim_plus.scss +167 -0
  136. package/scss/v2/layout/_sidebar_vertical.scss +176 -0
  137. package/scss/v2/layout/_topbar.scss +174 -0
  138. package/scss/v2/layout/_typography.scss +62 -0
  139. package/scss/v2/layout/_utils.scss +33 -0
  140. package/scss/v2/layout/layout.scss +24 -0
  141. package/scss/v2/layout/mng/_mng_layout_footer.scss +33 -0
  142. package/scss/v2/layout/mng/_mng_layout_menu.scss +10 -0
  143. package/scss/v2/layout/mng/_mng_layout_styles.scss +3 -0
  144. package/scss/v2/layout/mng/_mng_layout_topbar.scss +16 -0
  145. package/scss/v2/layout/preloading.scss +84 -0
  146. package/scss/v2/theme/theme-base/_colors.scss +18 -0
  147. package/scss/v2/theme/theme-base/_common.scss +73 -0
  148. package/scss/v2/theme/theme-base/_components.scss +106 -0
  149. package/scss/v2/theme/theme-base/_mixins.scss +203 -0
  150. package/scss/v2/theme/theme-base/components/button/_button.scss +564 -0
  151. package/scss/v2/theme/theme-base/components/button/_speeddial.scss +86 -0
  152. package/scss/v2/theme/theme-base/components/button/_splitbutton.scss +381 -0
  153. package/scss/v2/theme/theme-base/components/data/_carousel.scss +37 -0
  154. package/scss/v2/theme/theme-base/components/data/_datatable.scss +338 -0
  155. package/scss/v2/theme/theme-base/components/data/_dataview.scss +55 -0
  156. package/scss/v2/theme/theme-base/components/data/_filter.scss +138 -0
  157. package/scss/v2/theme/theme-base/components/data/_fullcalendar.scss +329 -0
  158. package/scss/v2/theme/theme-base/components/data/_orderlist.scss +103 -0
  159. package/scss/v2/theme/theme-base/components/data/_organizationchart.scss +50 -0
  160. package/scss/v2/theme/theme-base/components/data/_paginator.scss +92 -0
  161. package/scss/v2/theme/theme-base/components/data/_picklist.scss +103 -0
  162. package/scss/v2/theme/theme-base/components/data/_timeline.scss +38 -0
  163. package/scss/v2/theme/theme-base/components/data/_tree.scss +149 -0
  164. package/scss/v2/theme/theme-base/components/data/_treetable.scss +256 -0
  165. package/scss/v2/theme/theme-base/components/data/_virtualscroller.scss +28 -0
  166. package/scss/v2/theme/theme-base/components/file/_fileupload.scss +58 -0
  167. package/scss/v2/theme/theme-base/components/input/_autocomplete.scss +117 -0
  168. package/scss/v2/theme/theme-base/components/input/_calendar.scss +263 -0
  169. package/scss/v2/theme/theme-base/components/input/_cascadeselect.scss +130 -0
  170. package/scss/v2/theme/theme-base/components/input/_checkbox.scss +90 -0
  171. package/scss/v2/theme/theme-base/components/input/_chips.scss +54 -0
  172. package/scss/v2/theme/theme-base/components/input/_colorpicker.scss +19 -0
  173. package/scss/v2/theme/theme-base/components/input/_dropdown.scss +135 -0
  174. package/scss/v2/theme/theme-base/components/input/_editor.scss +122 -0
  175. package/scss/v2/theme/theme-base/components/input/_inputgroup.scss +75 -0
  176. package/scss/v2/theme/theme-base/components/input/_inputmask.scss +16 -0
  177. package/scss/v2/theme/theme-base/components/input/_inputnumber.scss +28 -0
  178. package/scss/v2/theme/theme-base/components/input/_inputswitch.scss +60 -0
  179. package/scss/v2/theme/theme-base/components/input/_inputtext.scss +99 -0
  180. package/scss/v2/theme/theme-base/components/input/_listbox.scss +82 -0
  181. package/scss/v2/theme/theme-base/components/input/_multiselect.scss +173 -0
  182. package/scss/v2/theme/theme-base/components/input/_password.scss +52 -0
  183. package/scss/v2/theme/theme-base/components/input/_radiobutton.scss +78 -0
  184. package/scss/v2/theme/theme-base/components/input/_rating.scss +55 -0
  185. package/scss/v2/theme/theme-base/components/input/_selectbutton.scss +50 -0
  186. package/scss/v2/theme/theme-base/components/input/_slider.scss +71 -0
  187. package/scss/v2/theme/theme-base/components/input/_togglebutton.scss +48 -0
  188. package/scss/v2/theme/theme-base/components/input/_treeselect.scss +139 -0
  189. package/scss/v2/theme/theme-base/components/menu/_breadcrumb.scss +42 -0
  190. package/scss/v2/theme/theme-base/components/menu/_contextmenu.scss +61 -0
  191. package/scss/v2/theme/theme-base/components/menu/_dock.scss +86 -0
  192. package/scss/v2/theme/theme-base/components/menu/_megamenu.scss +106 -0
  193. package/scss/v2/theme/theme-base/components/menu/_menu.scss +45 -0
  194. package/scss/v2/theme/theme-base/components/menu/_menubar.scss +188 -0
  195. package/scss/v2/theme/theme-base/components/menu/_panelmenu.scss +140 -0
  196. package/scss/v2/theme/theme-base/components/menu/_slidemenu.scss +64 -0
  197. package/scss/v2/theme/theme-base/components/menu/_steps.scss +56 -0
  198. package/scss/v2/theme/theme-base/components/menu/_tabmenu.scss +74 -0
  199. package/scss/v2/theme/theme-base/components/menu/_tieredmenu.scss +65 -0
  200. package/scss/v2/theme/theme-base/components/messages/_inlinemessage.scss +69 -0
  201. package/scss/v2/theme/theme-base/components/messages/_message.scss +107 -0
  202. package/scss/v2/theme/theme-base/components/messages/_toast.scss +100 -0
  203. package/scss/v2/theme/theme-base/components/misc/_avatar.scss +30 -0
  204. package/scss/v2/theme/theme-base/components/misc/_badge.scss +48 -0
  205. package/scss/v2/theme/theme-base/components/misc/_blockui.scss +0 -0
  206. package/scss/v2/theme/theme-base/components/misc/_chip.scss +38 -0
  207. package/scss/v2/theme/theme-base/components/misc/_inplace.scss +17 -0
  208. package/scss/v2/theme/theme-base/components/misc/_progressbar.scss +17 -0
  209. package/scss/v2/theme/theme-base/components/misc/_scrolltop.scss +25 -0
  210. package/scss/v2/theme/theme-base/components/misc/_skeleton.scss +8 -0
  211. package/scss/v2/theme/theme-base/components/misc/_tag.scss +40 -0
  212. package/scss/v2/theme/theme-base/components/misc/_terminal.scss +11 -0
  213. package/scss/v2/theme/theme-base/components/multimedia/_galleria.scss +149 -0
  214. package/scss/v2/theme/theme-base/components/multimedia/_image.scss +49 -0
  215. package/scss/v2/theme/theme-base/components/overlay/_confirmpopup.scss +72 -0
  216. package/scss/v2/theme/theme-base/components/overlay/_dialog.scss +69 -0
  217. package/scss/v2/theme/theme-base/components/overlay/_overlaypanel.scss +64 -0
  218. package/scss/v2/theme/theme-base/components/overlay/_sidebar.scss +27 -0
  219. package/scss/v2/theme/theme-base/components/overlay/_tooltip.scss +33 -0
  220. package/scss/v2/theme/theme-base/components/panel/_accordion.scss +119 -0
  221. package/scss/v2/theme/theme-base/components/panel/_card.scss +30 -0
  222. package/scss/v2/theme/theme-base/components/panel/_divider.scss +31 -0
  223. package/scss/v2/theme/theme-base/components/panel/_fieldset.scss +47 -0
  224. package/scss/v2/theme/theme-base/components/panel/_panel.scss +58 -0
  225. package/scss/v2/theme/theme-base/components/panel/_scrollpanel.scss +6 -0
  226. package/scss/v2/theme/theme-base/components/panel/_splitter.scss +19 -0
  227. package/scss/v2/theme/theme-base/components/panel/_tabview.scss +78 -0
  228. package/scss/v2/theme/theme-base/components/panel/_toolbar.scss +11 -0
  229. package/scss/v2/theme/theme-base/mng/_mng_mixins.scss +69 -0
  230. package/scss/v2/theme/theme-base/mng/_mng_theme_autocomplete.scss +34 -0
  231. package/scss/v2/theme/theme-base/mng/_mng_theme_button.scss +68 -0
  232. package/scss/v2/theme/theme-base/mng/_mng_theme_datatable.scss +146 -0
  233. package/scss/v2/theme/theme-base/mng/_mng_theme_datepicker.scss +21 -0
  234. package/scss/v2/theme/theme-base/mng/_mng_theme_dialog.scss +206 -0
  235. package/scss/v2/theme/theme-base/mng/_mng_theme_dropdown.scss +22 -0
  236. package/scss/v2/theme/theme-base/mng/_mng_theme_fileupload.scss +24 -0
  237. package/scss/v2/theme/theme-base/mng/_mng_theme_forms.scss +66 -0
  238. package/scss/v2/theme/theme-base/mng/_mng_theme_image.scss +27 -0
  239. package/scss/v2/theme/theme-base/mng/_mng_theme_input.scss +31 -0
  240. package/scss/v2/theme/theme-base/mng/_mng_theme_menu.scss +5 -0
  241. package/scss/v2/theme/theme-base/mng/_mng_theme_multiselect.scss +20 -0
  242. package/scss/v2/theme/theme-base/mng/_mng_theme_styles.scss +17 -0
  243. package/scss/v2/theme/theme-base/mng/_mng_theme_tableview.scss +97 -0
  244. package/scss/v2/theme/theme-base/mng/_mng_theme_tabview.scss +11 -0
  245. package/scss/v2/theme/theme-base/mng/_mng_theme_toast.scss +3 -0
  246. package/scss/v2/theme/theme-base/mng/_mng_theme_toolbar.scss +5 -0
  247. package/scss/v2/theme/theme-base/mng/_mng_variables.scss +15 -0
  248. package/scss/v2/theme/theme-dark/_extensions.scss +100 -0
  249. package/scss/v2/theme/theme-dark/_variables.scss +937 -0
  250. package/scss/v2/theme/theme-dark/blue/theme.scss +13 -0
  251. package/scss/v2/theme/theme-light/_extensions.scss +100 -0
  252. package/scss/v2/theme/theme-light/_variables.scss +937 -0
  253. package/scss/v2/theme/theme-light/blue/theme.scss +13 -0
@@ -7,7 +7,7 @@ import { CalendarModule } from 'primeng/calendar';
7
7
  import { ColumnFilter, TableModule } from 'primeng/table';
8
8
  import { Subject, debounceTime, distinctUntilChanged } from 'rxjs';
9
9
  import { FilterDescriptor } from '../../../../descriptors/filter';
10
- import { FilterLookupTypeEnum, FilterMatchModeEnum, FilterTypeEnum, TableFilterDisplayEnum } from '../../../../descriptors/types';
10
+ import { FilterLookupTypeEnum, FilterMatchModeEnum, FilterTypeEnum } from '../../../../descriptors/types';
11
11
  import { MngAutocompleteComponent, MngDateRangeComponent, MngDropdownComponent } from '../../../form';
12
12
  import * as i0 from "@angular/core";
13
13
  import * as i1 from "primeng/api";
@@ -106,7 +106,7 @@ export class MngTableColumnFilterComponent {
106
106
  filterCallback(value);
107
107
  }
108
108
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngTableColumnFilterComponent, deps: [{ token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component }); }
109
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: MngTableColumnFilterComponent, isStandalone: true, selector: "mng-table-column-filter", inputs: { descriptor: "descriptor", display: "display" }, viewQueries: [{ propertyName: "primeColumnFilter", first: true, predicate: ColumnFilter, descendants: true }], ngImport: i0, template: "<p-columnFilter\n class=\"ml-auto\"\n [type]=\"primeType\"\n [field]=\"descriptor.property\"\n [display]=\"primeDisplay\"\n [matchMode]=\"primeDefaultMatchMode\"\n [matchModeOptions]=\"primeMatchModeCustomOptions\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showMatchModes]=\"true\"\n [showOperator]=\"false\"\n [showAddButton]=\"false\"\n [hideOnClear]=\"true\"\n [showMenu]=\"primeShowMatchMode\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits\"\n [useGrouping]=\"descriptor.numberUseGrouping\">\n <ng-template *ngIf=\"primeType === 'date'\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <ng-container *ngIf=\"activeMatchMode === 'between'; else datePicker\">\n <mng-date-range\n [ngModel]=\"value\"\n (ngModelChange)=\"dateFilter($event, filterCallback)\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [dateFormat]=\"descriptor.datePickerFormat\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"></mng-date-range>\n </ng-container>\n <ng-template #datePicker>\n <p-calendar\n appendTo=\"body\"\n [ngModel]=\"value\"\n (ngModelChange)=\"dateFilter($event, filterCallback)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showIcon]=\"true\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [firstDayOfWeek]=\"1\">\n </p-calendar>\n </ng-template>\n </ng-template>\n <ng-template *ngIf=\"lookupDescriptor\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <ng-container [ngSwitch]=\"lookupDescriptor.lookupType\">\n <mng-autocomplete\n *ngSwitchCase=\"lookupTypeAutocomplete\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [dataKeyProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [openOnFocus]=\"lookupDescriptor.autocompleteOpenOnFocus\"\n [inlineSearch]=\"lookupDescriptor.autocompleteInlineSearch\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.searchToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n (valueChange)=\"autocompleteFilter($event, filterCallback)\">\n </mng-autocomplete>\n <mng-dropdown\n *ngSwitchCase=\"lookupTypeDropdown\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.selectToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n [showClear]=\"false\"\n [changeValueOnBlur]=\"lookupDescriptor.multiselect\"\n (valueChange)=\"dropdownFilter($event, filterCallback)\">\n </mng-dropdown>\n </ng-container>\n </ng-template>\n</p-columnFilter>\n", dependencies: [{ kind: "ngmodule", type: TableModule }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i2.ColumnFilter, selector: "p-columnFilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping", "showButtons"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: MngDateRangeComponent, selector: "mng-date-range", inputs: ["placeholder", "showTime", "showSeconds", "dateFormat"] }, { kind: "ngmodule", type: CalendarModule }, { kind: "component", type: i4.Calendar, selector: "p-calendar", inputs: ["style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "component", type: MngAutocompleteComponent, selector: "mng-autocomplete", inputs: ["dataProvider", "dataKeyProperty", "itemsValueProperty", "itemsLabelProperty", "itemsLabelTranslate", "inlineSearch", "openOnFocus", "multiselect", "placeholder", "className", "dropdownClassName", "showClear", "autoClear", "selectFirst"], outputs: ["valueChange"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: MngDropdownComponent, selector: "mng-dropdown", inputs: ["dataProvider", "dataKeyProperty", "itemsLabelProperty", "itemsLabelTranslate", "itemsValueProperty", "itemsDisabledProperty", "multiselect", "placeholder", "showClear", "selectFirstItem", "className", "dropdownClassName", "changeValueOnBlur"], outputs: ["valueChange"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
109
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.6", type: MngTableColumnFilterComponent, isStandalone: true, selector: "mng-table-column-filter", inputs: { descriptor: "descriptor" }, viewQueries: [{ propertyName: "primeColumnFilter", first: true, predicate: ColumnFilter, descendants: true }], ngImport: i0, template: "<p-columnFilter\n class=\"ml-auto\"\n [type]=\"primeType\"\n [field]=\"descriptor.property\"\n [display]=\"primeDisplay\"\n [matchMode]=\"primeDefaultMatchMode\"\n [matchModeOptions]=\"primeMatchModeCustomOptions\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showMatchModes]=\"true\"\n [showOperator]=\"false\"\n [showAddButton]=\"false\"\n [hideOnClear]=\"true\"\n [showMenu]=\"primeShowMatchMode\"\n [minFractionDigits]=\"descriptor.numberMinFractionDigits\"\n [maxFractionDigits]=\"descriptor.numberMaxFractionDigits\"\n [useGrouping]=\"descriptor.numberUseGrouping\">\n <ng-template *ngIf=\"primeType === 'date'\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <ng-container *ngIf=\"activeMatchMode === 'between'; else datePicker\">\n <mng-date-range\n [ngModel]=\"value\"\n (ngModelChange)=\"dateFilter($event, filterCallback)\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [dateFormat]=\"descriptor.datePickerFormat\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"></mng-date-range>\n </ng-container>\n <ng-template #datePicker>\n <p-calendar\n appendTo=\"body\"\n [ngModel]=\"value\"\n (ngModelChange)=\"dateFilter($event, filterCallback)\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.typeToFilter' | translate\"\n [showIcon]=\"true\"\n [dateFormat]=\"descriptor.datePickerFormat ?? 'dd.mm.yy'\"\n [showTime]=\"descriptor.datePickerShowTime\"\n [firstDayOfWeek]=\"1\">\n </p-calendar>\n </ng-template>\n </ng-template>\n <ng-template *ngIf=\"lookupDescriptor\" pTemplate=\"filter\" let-value let-filterCallback=\"filterCallback\">\n <ng-container [ngSwitch]=\"lookupDescriptor.lookupType\">\n <mng-autocomplete\n *ngSwitchCase=\"lookupTypeAutocomplete\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [dataKeyProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [openOnFocus]=\"lookupDescriptor.autocompleteOpenOnFocus\"\n [inlineSearch]=\"lookupDescriptor.autocompleteInlineSearch\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.searchToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n (valueChange)=\"autocompleteFilter($event, filterCallback)\">\n </mng-autocomplete>\n <mng-dropdown\n *ngSwitchCase=\"lookupTypeDropdown\"\n [ngModel]=\"value\"\n [dataProvider]=\"lookupDescriptor.dataProvider\"\n [itemsValueProperty]=\"lookupDescriptor.itemsValueProperty\"\n [itemsLabelProperty]=\"lookupDescriptor.itemsLabelProperty\"\n [itemsLabelTranslate]=\"lookupDescriptor.itemsLabelTranslate\"\n [multiselect]=\"lookupDescriptor.multiselect\"\n [placeholder]=\"descriptor.placeholder ?? 'mngTable.selectToFilter' | translate\"\n [className]=\"lookupDescriptor.className\"\n [dropdownClassName]=\"lookupDescriptor.dropdownClassName\"\n [showClear]=\"false\"\n [changeValueOnBlur]=\"lookupDescriptor.multiselect\"\n (valueChange)=\"dropdownFilter($event, filterCallback)\">\n </mng-dropdown>\n </ng-container>\n </ng-template>\n</p-columnFilter>\n", dependencies: [{ kind: "ngmodule", type: TableModule }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i2.ColumnFilter, selector: "p-columnFilter", inputs: ["field", "type", "display", "showMenu", "matchMode", "operator", "showOperator", "showClearButton", "showApplyButton", "showMatchModes", "showAddButton", "hideOnClear", "placeholder", "matchModeOptions", "maxConstraints", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "locale", "localeMatcher", "currency", "currencyDisplay", "useGrouping", "showButtons"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: MngDateRangeComponent, selector: "mng-date-range", inputs: ["placeholder", "showTime", "showSeconds", "dateFormat", "disabled"] }, { kind: "ngmodule", type: CalendarModule }, { kind: "component", type: i4.Calendar, selector: "p-calendar", inputs: ["style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "component", type: MngAutocompleteComponent, selector: "mng-autocomplete", inputs: ["dataProvider", "dataKeyProperty", "itemsValueProperty", "itemsLabelProperty", "itemsLabelTranslate", "inlineSearch", "openOnFocus", "multiselect", "placeholder", "className", "dropdownClassName", "showClear", "autoClear", "selectFirst"], outputs: ["valueChange"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: MngDropdownComponent, selector: "mng-dropdown", inputs: ["dataProvider", "dataKeyProperty", "itemsLabelProperty", "itemsLabelTranslate", "itemsValueProperty", "itemsDisabledProperty", "multiselect", "placeholder", "showClear", "selectFirstItem", "className", "dropdownClassName", "changeValueOnBlur"], outputs: ["valueChange"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
110
110
  }
111
111
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImport: i0, type: MngTableColumnFilterComponent, decorators: [{
112
112
  type: Component,
@@ -114,11 +114,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.6", ngImpor
114
114
  }], ctorParameters: function () { return [{ type: i1.PrimeNGConfig }]; }, propDecorators: { descriptor: [{
115
115
  type: Input,
116
116
  args: [{ required: true }]
117
- }], display: [{
118
- type: Input,
119
- args: [{ required: true }]
120
117
  }], primeColumnFilter: [{
121
118
  type: ViewChild,
122
119
  args: [ColumnFilter]
123
120
  }] } });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGFibGV2aWV3L3RhYmxlL2NvbHVtbi1maWx0ZXIvY29sdW1uLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGFibGV2aWV3L3RhYmxlL2NvbHVtbi1maWx0ZXIvY29sdW1uLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFpQixhQUFhLEVBQWEsTUFBTSxhQUFhLENBQUM7QUFDdEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxZQUFZLEVBQUUsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxPQUFPLEVBQWdCLFlBQVksRUFBRSxvQkFBb0IsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUUvRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQXlCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEYsT0FBTyxFQUFDLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxzQkFBc0IsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ2hJLE9BQU8sRUFBQyx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBQyxNQUFNLGVBQWUsQ0FB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LEVBQUUsSUFBSSxDQUFDO29HQU9oSixVQUFVO3NCQUFsQyxLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQztnQkFDRSxPQUFPO3NCQUEvQixLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQztnQkFFUyxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdJZiwgTmdTd2l0Y2gsIE5nU3dpdGNoQ2FzZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7RmlsdGVyTWV0YWRhdGEsIFByaW1lTkdDb25maWcsIFNlbGVjdEl0ZW19IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7Q2FsZW5kYXJNb2R1bGV9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xuaW1wb3J0IHtDb2x1bW5GaWx0ZXIsIFRhYmxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3RhYmxlJztcbmltcG9ydCB7U3ViamVjdCwgU3Vic2NyaXB0aW9uLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtGaWx0ZXJEZXNjcmlwdG9yLCBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yfSBmcm9tICcuLi8uLi8uLi8uLi9kZXNjcmlwdG9ycy9maWx0ZXInO1xuaW1wb3J0IHtGaWx0ZXJMb29rdXBUeXBlRW51bSwgRmlsdGVyTWF0Y2hNb2RlRW51bSwgRmlsdGVyVHlwZUVudW0sIFRhYmxlRmlsdGVyRGlzcGxheUVudW19IGZyb20gJy4uLy4uLy4uLy4uL2Rlc2NyaXB0b3JzL3R5cGVzJztcbmltcG9ydCB7TW5nQXV0b2NvbXBsZXRlQ29tcG9uZW50LCBNbmdEYXRlUmFuZ2VDb21wb25lbnQsIE1uZ0Ryb3Bkb3duQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9mb3JtJztcblxuLyoqXG4gKiBDYW5ub3QgYmUgb24gcHVzaCBjaGFuZ2UgZGV0ZWN0aW9uIHN0cmF0ZWd5IGJlY2F1c2Ugb2YgZmlsdGVyIHVwZGF0ZXMgdHJpZ2dlcmVkIGZyb20gcm91dGUgd2hpY2ggY2F1c2VzIHRvIGZvcmNlIHVwZGF0ZSB2YWx1ZXMgaW4gZm9yY2UgbWV0YWRhdGFcbiAqIGFuZCB0aGVzZSBtdXN0IGJlIHByb3BhZ2F0ZWQgdGhyb3VnaCB0byB0aGlzIGNvbXBvbmVudCBhbmQgYmV5b25kIHRvIHByaW1lTkcuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctdGFibGUtY29sdW1uLWZpbHRlcicsXG4gICAgaW1wb3J0czogW1RhYmxlTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIE1uZ0RhdGVSYW5nZUNvbXBvbmVudCwgQ2FsZW5kYXJNb2R1bGUsIEZvcm1zTW9kdWxlLCBOZ1N3aXRjaCwgTW5nQXV0b2NvbXBsZXRlQ29tcG9uZW50LCBOZ1N3aXRjaENhc2UsIE1uZ0Ryb3Bkb3duQ29tcG9uZW50LCBOZ0lmXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29sdW1uLWZpbHRlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTW5nVGFibGVDb2x1bW5GaWx0ZXJDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIHJlYWRvbmx5IGxvb2t1cFR5cGVEcm9wZG93bjogRmlsdGVyTG9va3VwVHlwZUVudW0gPSBGaWx0ZXJMb29rdXBUeXBlRW51bS5Ecm9wZG93bjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbG9va3VwVHlwZUF1dG9jb21wbGV0ZTogRmlsdGVyTG9va3VwVHlwZUVudW0gPSBGaWx0ZXJMb29rdXBUeXBlRW51bS5BdXRvY29tcGxldGU7XG5cbiAgICBASW5wdXQoe3JlcXVpcmVkOiB0cnVlfSkgZGVzY3JpcHRvciE6IEZpbHRlckRlc2NyaXB0b3I8VD47XG4gICAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pIGRpc3BsYXkhOiBUYWJsZUZpbHRlckRpc3BsYXlFbnVtO1xuXG4gICAgQFZpZXdDaGlsZChDb2x1bW5GaWx0ZXIpIHB1YmxpYyBwcmltZUNvbHVtbkZpbHRlciE6IENvbHVtbkZpbHRlcjtcblxuICAgIHB1YmxpYyBsb29rdXBEZXNjcmlwdG9yPzogRmlsdGVyTG9va3VwRGVzY3JpcHRvcjxUPjtcblxuICAgIHB1YmxpYyBwcmltZUZpZWxkITogc3RyaW5nO1xuICAgIHB1YmxpYyBwcmltZVR5cGUgPSAndGV4dCc7XG4gICAgcHVibGljIHByaW1lU2hvd01hdGNoTW9kZSA9IHRydWU7XG4gICAgcHVibGljIHByaW1lRGVmYXVsdE1hdGNoTW9kZSE6IEZpbHRlck1hdGNoTW9kZUVudW07XG4gICAgcHVibGljIHByaW1lRGlzcGxheSA9ICdyb3cnO1xuICAgIHB1YmxpYyBwcmltZU1hdGNoTW9kZUN1c3RvbU9wdGlvbnM/OiBTZWxlY3RJdGVtW107XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICAgIHByaXZhdGUgZGF0ZUZpbHRlckNhbGxiYWNrPzogRnVuY3Rpb247XG4gICAgcHJpdmF0ZSBkYXRlRGVib3VuY2VTdWJqZWN0ID0gbmV3IFN1YmplY3Q8RGF0ZSB8IERhdGVbXSB8IG51bGw+KCk7XG4gICAgcHJpdmF0ZSBkYXRlRGVib3VuY2VTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHByaW1lQ29uZmlnOiBQcmltZU5HQ29uZmlnKSB7XG4gICAgICAgIHRoaXMuZGF0ZURlYm91bmNlU3Vic2NyaXB0aW9uID0gdGhpcy5kYXRlRGVib3VuY2VTdWJqZWN0LnBpcGUoZGVib3VuY2VUaW1lKDUwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSh2ID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZUZpbHRlckNhbGxiYWNrPy4odik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aXZlTWF0Y2hNb2RlKCk6IEZpbHRlck1hdGNoTW9kZUVudW0gfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSB0aGlzLnByaW1lQ29sdW1uRmlsdGVyPy5kdC5maWx0ZXJzW3RoaXMuZGVzY3JpcHRvci5wcm9wZXJ0eV0gYXMgRmlsdGVyTWV0YWRhdGE7XG4gICAgICAgIHJldHVybiBmaWx0ZXI/Lm1hdGNoTW9kZSBhcyBGaWx0ZXJNYXRjaE1vZGVFbnVtIHwgdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnByaW1lRGVmYXVsdE1hdGNoTW9kZSA9IHRoaXMuZGVzY3JpcHRvci5kZWZhdWx0RmlsdGVyTWF0Y2hNb2RlID8/IEZpbHRlck1hdGNoTW9kZUVudW0uRXF1YWxzO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy5kZXNjcmlwdG9yLmZpbHRlclR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRmlsdGVyVHlwZUVudW0uQm9vbGVhbjpcbiAgICAgICAgICAgICAgICB0aGlzLnByaW1lVHlwZSA9ICdib29sZWFuJztcbiAgICAgICAgICAgICAgICB0aGlzLnByaW1lU2hvd01hdGNoTW9kZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWx0ZXJUeXBlRW51bS5OdW1iZXI6XG4gICAgICAgICAgICAgICAgdGhpcy5wcmltZVR5cGUgPSAnbnVtZXJpYyc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpbHRlclR5cGVFbnVtLkRhdGU6XG4gICAgICAgICAgICAgICAgdGhpcy5wcmltZVR5cGUgPSAnZGF0ZSc7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmltZURlZmF1bHRNYXRjaE1vZGUgPSBGaWx0ZXJNYXRjaE1vZGVFbnVtLkRhdGVJcztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmlsdGVyVHlwZUVudW0uTG9va3VwOlxuICAgICAgICAgICAgICAgIHRoaXMucHJpbWVUeXBlID0gJ2xvb2t1cCc7XG4gICAgICAgICAgICAgICAgdGhpcy5sb29rdXBEZXNjcmlwdG9yID0gdGhpcy5kZXNjcmlwdG9yIGFzIEZpbHRlckxvb2t1cERlc2NyaXB0b3I8VD47XG4gICAgICAgICAgICAgICAgdGhpcy5wcmltZUZpZWxkID0gYCR7dGhpcy5kZXNjcmlwdG9yLnByb3BlcnR5fSR7dGhpcy5sb29rdXBEZXNjcmlwdG9yLml0ZW1zVmFsdWVQcm9wZXJ0eSA/IGAuJHt0aGlzLmxvb2t1cERlc2NyaXB0b3IuaXRlbXNWYWx1ZVByb3BlcnR5fWAgOiAnJ31gO1xuICAgICAgICAgICAgICAgIHRoaXMucHJpbWVNYXRjaE1vZGVDdXN0b21PcHRpb25zID0gW1xuICAgICAgICAgICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZUVudW0uRXF1YWxzLCBsYWJlbDogdGhpcy5wcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGVFbnVtLkVxdWFscyl9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsdWU6IEZpbHRlck1hdGNoTW9kZUVudW0uTm90RXF1YWxzLCBsYWJlbDogdGhpcy5wcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihGaWx0ZXJNYXRjaE1vZGVFbnVtLk5vdEVxdWFscyl9XG4gICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxvb2t1cERlc2NyaXB0b3IubXVsdGlzZWxlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmltZU1hdGNoTW9kZUN1c3RvbU9wdGlvbnMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJpbWVEZWZhdWx0TWF0Y2hNb2RlID0gRmlsdGVyTWF0Y2hNb2RlRW51bS5JbjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmlsdGVyVHlwZUVudW0uU3RyaW5nOlxuICAgICAgICAgICAgICAgIHRoaXMucHJpbWVUeXBlID0gJ3RleHQnO1xuICAgICAgICAgICAgICAgIHRoaXMucHJpbWVEZWZhdWx0TWF0Y2hNb2RlID0gRmlsdGVyTWF0Y2hNb2RlRW51bS5Db250YWlucztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRlc2NyaXB0b3IubWF0Y2hNb2Rlcykge1xuICAgICAgICAgICAgdGhpcy5wcmltZU1hdGNoTW9kZUN1c3RvbU9wdGlvbnMgPSB0aGlzLmRlc2NyaXB0b3IubWF0Y2hNb2Rlcy5tYXAobW0gPT4gPFNlbGVjdEl0ZW0+e3ZhbHVlOiBtbSwgbGFiZWw6IHRoaXMucHJpbWVDb25maWcuZ2V0VHJhbnNsYXRpb24obW0pfSk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5wcmltZU1hdGNoTW9kZUN1c3RvbU9wdGlvbnMubWFwKG1hdGNoTW9kZSA9PiBtYXRjaE1vZGUudmFsdWUpLmluY2x1ZGVzKHRoaXMucHJpbWVEZWZhdWx0TWF0Y2hNb2RlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucHJpbWVEZWZhdWx0TWF0Y2hNb2RlID0gdGhpcy5kZXNjcmlwdG9yLm1hdGNoTW9kZXNbMF0gYXMgRmlsdGVyTWF0Y2hNb2RlRW51bTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5wcmltZVNob3dNYXRjaE1vZGUgPSB0aGlzLnByaW1lTWF0Y2hNb2RlQ3VzdG9tT3B0aW9ucz8ubGVuZ3RoID4gMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRhdGVEZWJvdW5jZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICAgIGRhdGVGaWx0ZXIodmFsdWU6IERhdGUgfCBEYXRlW10gfCBudWxsLCBmaWx0ZXJDYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgICAgdGhpcy5kYXRlRmlsdGVyQ2FsbGJhY2sgPSBmaWx0ZXJDYWxsYmFjaztcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlTWF0Y2hNb2RlID09PSBGaWx0ZXJNYXRjaE1vZGVFbnVtLkJldHdlZW4gJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGVWYWx1ZXMgPSB2YWx1ZS5maWx0ZXIodiA9PiB2IGluc3RhbmNlb2YgRGF0ZSk7XG4gICAgICAgICAgICBpZiAoZGF0ZVZhbHVlcy5sZW5ndGggPD0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRhdGVEZWJvdW5jZVN1YmplY3QubmV4dCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbiAgICBkYXRlUmFuZ2VDaGFuZ2UodmFsdWU6IERhdGVbXSB8IG51bGwsIGZpbHRlckNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgICBmaWx0ZXJDYWxsYmFjayh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbiAgICBhdXRvY29tcGxldGVGaWx0ZXIodmFsdWU6IFQsIGZpbHRlckNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgICBmaWx0ZXJDYWxsYmFjayh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXMsIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBkcm9wZG93bkZpbHRlcih2YWx1ZTogYW55LCBmaWx0ZXJDYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZmlsdGVyQ2FsbGJhY2sodmFsdWUpO1xuICAgIH1cbn1cbiIsIjxwLWNvbHVtbkZpbHRlclxuICAgIGNsYXNzPVwibWwtYXV0b1wiXG4gICAgW3R5cGVdPVwicHJpbWVUeXBlXCJcbiAgICBbZmllbGRdPVwiZGVzY3JpcHRvci5wcm9wZXJ0eVwiXG4gICAgW2Rpc3BsYXldPVwicHJpbWVEaXNwbGF5XCJcbiAgICBbbWF0Y2hNb2RlXT1cInByaW1lRGVmYXVsdE1hdGNoTW9kZVwiXG4gICAgW21hdGNoTW9kZU9wdGlvbnNdPVwicHJpbWVNYXRjaE1vZGVDdXN0b21PcHRpb25zXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwiZGVzY3JpcHRvci5wbGFjZWhvbGRlciA/PyAnbW5nVGFibGUudHlwZVRvRmlsdGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3Nob3dNYXRjaE1vZGVzXT1cInRydWVcIlxuICAgIFtzaG93T3BlcmF0b3JdPVwiZmFsc2VcIlxuICAgIFtzaG93QWRkQnV0dG9uXT1cImZhbHNlXCJcbiAgICBbaGlkZU9uQ2xlYXJdPVwidHJ1ZVwiXG4gICAgW3Nob3dNZW51XT1cInByaW1lU2hvd01hdGNoTW9kZVwiXG4gICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cImRlc2NyaXB0b3IubnVtYmVyTWluRnJhY3Rpb25EaWdpdHNcIlxuICAgIFttYXhGcmFjdGlvbkRpZ2l0c109XCJkZXNjcmlwdG9yLm51bWJlck1heEZyYWN0aW9uRGlnaXRzXCJcbiAgICBbdXNlR3JvdXBpbmddPVwiZGVzY3JpcHRvci5udW1iZXJVc2VHcm91cGluZ1wiPlxuICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cInByaW1lVHlwZSA9PT0gJ2RhdGUnXCIgcFRlbXBsYXRlPVwiZmlsdGVyXCIgbGV0LXZhbHVlIGxldC1maWx0ZXJDYWxsYmFjaz1cImZpbHRlckNhbGxiYWNrXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVNYXRjaE1vZGUgPT09ICdiZXR3ZWVuJzsgZWxzZSBkYXRlUGlja2VyXCI+XG4gICAgICAgICAgICA8bW5nLWRhdGUtcmFuZ2VcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZGF0ZUZpbHRlcigkZXZlbnQsIGZpbHRlckNhbGxiYWNrKVwiXG4gICAgICAgICAgICAgICAgW3Nob3dUaW1lXT1cImRlc2NyaXB0b3IuZGF0ZVBpY2tlclNob3dUaW1lXCJcbiAgICAgICAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJkZXNjcmlwdG9yLmRhdGVQaWNrZXJGb3JtYXRcIlxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJkZXNjcmlwdG9yLnBsYWNlaG9sZGVyID8/ICdtbmdUYWJsZS50eXBlVG9GaWx0ZXInIHwgdHJhbnNsYXRlXCI+PC9tbmctZGF0ZS1yYW5nZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGF0ZVBpY2tlcj5cbiAgICAgICAgICAgIDxwLWNhbGVuZGFyXG4gICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiZGF0ZUZpbHRlcigkZXZlbnQsIGZpbHRlckNhbGxiYWNrKVwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImRlc2NyaXB0b3IucGxhY2Vob2xkZXIgPz8gJ21uZ1RhYmxlLnR5cGVUb0ZpbHRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtzaG93SWNvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJkZXNjcmlwdG9yLmRhdGVQaWNrZXJGb3JtYXQgPz8gJ2RkLm1tLnl5J1wiXG4gICAgICAgICAgICAgICAgW3Nob3dUaW1lXT1cImRlc2NyaXB0b3IuZGF0ZVBpY2tlclNob3dUaW1lXCJcbiAgICAgICAgICAgICAgICBbZmlyc3REYXlPZldlZWtdPVwiMVwiPlxuICAgICAgICAgICAgPC9wLWNhbGVuZGFyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwibG9va3VwRGVzY3JpcHRvclwiIHBUZW1wbGF0ZT1cImZpbHRlclwiIGxldC12YWx1ZSBsZXQtZmlsdGVyQ2FsbGJhY2s9XCJmaWx0ZXJDYWxsYmFja1wiPlxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJsb29rdXBEZXNjcmlwdG9yLmxvb2t1cFR5cGVcIj5cbiAgICAgICAgICAgIDxtbmctYXV0b2NvbXBsZXRlXG4gICAgICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cImxvb2t1cFR5cGVBdXRvY29tcGxldGVcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICBbZGF0YVByb3ZpZGVyXT1cImxvb2t1cERlc2NyaXB0b3IuZGF0YVByb3ZpZGVyXCJcbiAgICAgICAgICAgICAgICBbZGF0YUtleVByb3BlcnR5XT1cImxvb2t1cERlc2NyaXB0b3IuaXRlbXNWYWx1ZVByb3BlcnR5XCJcbiAgICAgICAgICAgICAgICBbaXRlbXNWYWx1ZVByb3BlcnR5XT1cImxvb2t1cERlc2NyaXB0b3IuaXRlbXNWYWx1ZVByb3BlcnR5XCJcbiAgICAgICAgICAgICAgICBbaXRlbXNMYWJlbFByb3BlcnR5XT1cImxvb2t1cERlc2NyaXB0b3IuaXRlbXNMYWJlbFByb3BlcnR5XCJcbiAgICAgICAgICAgICAgICBbaXRlbXNMYWJlbFRyYW5zbGF0ZV09XCJsb29rdXBEZXNjcmlwdG9yLml0ZW1zTGFiZWxUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFttdWx0aXNlbGVjdF09XCJsb29rdXBEZXNjcmlwdG9yLm11bHRpc2VsZWN0XCJcbiAgICAgICAgICAgICAgICBbb3Blbk9uRm9jdXNdPVwibG9va3VwRGVzY3JpcHRvci5hdXRvY29tcGxldGVPcGVuT25Gb2N1c1wiXG4gICAgICAgICAgICAgICAgW2lubGluZVNlYXJjaF09XCJsb29rdXBEZXNjcmlwdG9yLmF1dG9jb21wbGV0ZUlubGluZVNlYXJjaFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImRlc2NyaXB0b3IucGxhY2Vob2xkZXIgPz8gJ21uZ1RhYmxlLnNlYXJjaFRvRmlsdGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzTmFtZV09XCJsb29rdXBEZXNjcmlwdG9yLmNsYXNzTmFtZVwiXG4gICAgICAgICAgICAgICAgW2Ryb3Bkb3duQ2xhc3NOYW1lXT1cImxvb2t1cERlc2NyaXB0b3IuZHJvcGRvd25DbGFzc05hbWVcIlxuICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJhdXRvY29tcGxldGVGaWx0ZXIoJGV2ZW50LCBmaWx0ZXJDYWxsYmFjaylcIj5cbiAgICAgICAgICAgIDwvbW5nLWF1dG9jb21wbGV0ZT5cbiAgICAgICAgICAgIDxtbmctZHJvcGRvd25cbiAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwibG9va3VwVHlwZURyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2RhdGFQcm92aWRlcl09XCJsb29rdXBEZXNjcmlwdG9yLmRhdGFQcm92aWRlclwiXG4gICAgICAgICAgICAgICAgW2l0ZW1zVmFsdWVQcm9wZXJ0eV09XCJsb29rdXBEZXNjcmlwdG9yLml0ZW1zVmFsdWVQcm9wZXJ0eVwiXG4gICAgICAgICAgICAgICAgW2l0ZW1zTGFiZWxQcm9wZXJ0eV09XCJsb29rdXBEZXNjcmlwdG9yLml0ZW1zTGFiZWxQcm9wZXJ0eVwiXG4gICAgICAgICAgICAgICAgW2l0ZW1zTGFiZWxUcmFuc2xhdGVdPVwibG9va3VwRGVzY3JpcHRvci5pdGVtc0xhYmVsVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbbXVsdGlzZWxlY3RdPVwibG9va3VwRGVzY3JpcHRvci5tdWx0aXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImRlc2NyaXB0b3IucGxhY2Vob2xkZXIgPz8gJ21uZ1RhYmxlLnNlbGVjdFRvRmlsdGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzTmFtZV09XCJsb29rdXBEZXNjcmlwdG9yLmNsYXNzTmFtZVwiXG4gICAgICAgICAgICAgICAgW2Ryb3Bkb3duQ2xhc3NOYW1lXT1cImxvb2t1cERlc2NyaXB0b3IuZHJvcGRvd25DbGFzc05hbWVcIlxuICAgICAgICAgICAgICAgIFtzaG93Q2xlYXJdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtjaGFuZ2VWYWx1ZU9uQmx1cl09XCJsb29rdXBEZXNjcmlwdG9yLm11bHRpc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiZHJvcGRvd25GaWx0ZXIoJGV2ZW50LCBmaWx0ZXJDYWxsYmFjaylcIj5cbiAgICAgICAgICAgIDwvbW5nLWRyb3Bkb3duPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9wLWNvbHVtbkZpbHRlcj5cbiJdfQ==
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGFibGV2aWV3L3RhYmxlL2NvbHVtbi1maWx0ZXIvY29sdW1uLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGFibGV2aWV3L3RhYmxlL2NvbHVtbi1maWx0ZXIvY29sdW1uLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFpQixhQUFhLEVBQWEsTUFBTSxhQUFhLENBQUM7QUFDdEUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxZQUFZLEVBQUUsV0FBVyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBQyxPQUFPLEVBQWdCLFlBQVksRUFBRSxvQkFBb0IsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUUvRSxPQUFPLEVBQUMsZ0JBQWdCLEVBQXlCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEYsT0FBTyxFQUFDLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3hHLE9BQU8sRUFBQyx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQUVw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QUFDO29HQU9oSixVQUFVO3NCQUFsQyxLQUFLO3VCQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQztnQkFFUyxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdJZiwgTmdTd2l0Y2gsIE5nU3dpdGNoQ2FzZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7RmlsdGVyTWV0YWRhdGEsIFByaW1lTkdDb25maWcsIFNlbGVjdEl0ZW19IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7Q2FsZW5kYXJNb2R1bGV9IGZyb20gJ3ByaW1lbmcvY2FsZW5kYXInO1xuaW1wb3J0IHtDb2x1bW5GaWx0ZXIsIFRhYmxlTW9kdWxlfSBmcm9tICdwcmltZW5nL3RhYmxlJztcbmltcG9ydCB7U3ViamVjdCwgU3Vic2NyaXB0aW9uLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtGaWx0ZXJEZXNjcmlwdG9yLCBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yfSBmcm9tICcuLi8uLi8uLi8uLi9kZXNjcmlwdG9ycy9maWx0ZXInO1xuaW1wb3J0IHtGaWx0ZXJMb29rdXBUeXBlRW51bSwgRmlsdGVyTWF0Y2hNb2RlRW51bSwgRmlsdGVyVHlwZUVudW19IGZyb20gJy4uLy4uLy4uLy4uL2Rlc2NyaXB0b3JzL3R5cGVzJztcbmltcG9ydCB7TW5nQXV0b2NvbXBsZXRlQ29tcG9uZW50LCBNbmdEYXRlUmFuZ2VDb21wb25lbnQsIE1uZ0Ryb3Bkb3duQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9mb3JtJztcblxuLyoqXG4gKiBDYW5ub3QgYmUgb24gcHVzaCBjaGFuZ2UgZGV0ZWN0aW9uIHN0cmF0ZWd5IGJlY2F1c2Ugb2YgZmlsdGVyIHVwZGF0ZXMgdHJpZ2dlcmVkIGZyb20gcm91dGUgd2hpY2ggY2F1c2VzIHRvIGZvcmNlIHVwZGF0ZSB2YWx1ZXMgaW4gZm9yY2UgbWV0YWRhdGFcbiAqIGFuZCB0aGVzZSBtdXN0IGJlIHByb3BhZ2F0ZWQgdGhyb3VnaCB0byB0aGlzIGNvbXBvbmVudCBhbmQgYmV5b25kIHRvIHByaW1lTkcuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdtbmctdGFibGUtY29sdW1uLWZpbHRlcicsXG4gICAgaW1wb3J0czogW1RhYmxlTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIE1uZ0RhdGVSYW5nZUNvbXBvbmVudCwgQ2FsZW5kYXJNb2R1bGUsIEZvcm1zTW9kdWxlLCBOZ1N3aXRjaCwgTW5nQXV0b2NvbXBsZXRlQ29tcG9uZW50LCBOZ1N3aXRjaENhc2UsIE1uZ0Ryb3Bkb3duQ29tcG9uZW50LCBOZ0lmXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29sdW1uLWZpbHRlci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTW5nVGFibGVDb2x1bW5GaWx0ZXJDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIHJlYWRvbmx5IGxvb2t1cFR5cGVEcm9wZG93bjogRmlsdGVyTG9va3VwVHlwZUVudW0gPSBGaWx0ZXJMb29rdXBUeXBlRW51bS5Ecm9wZG93bjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgbG9va3VwVHlwZUF1dG9jb21wbGV0ZTogRmlsdGVyTG9va3VwVHlwZUVudW0gPSBGaWx0ZXJMb29rdXBUeXBlRW51bS5BdXRvY29tcGxldGU7XG5cbiAgICBASW5wdXQoe3JlcXVpcmVkOiB0cnVlfSkgZGVzY3JpcHRvciE6IEZpbHRlckRlc2NyaXB0b3I8VD47XG5cbiAgICBAVmlld0NoaWxkKENvbHVtbkZpbHRlcikgcHVibGljIHByaW1lQ29sdW1uRmlsdGVyITogQ29sdW1uRmlsdGVyO1xuXG4gICAgcHVibGljIGxvb2t1cERlc2NyaXB0b3I/OiBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yPFQ+O1xuXG4gICAgcHVibGljIHByaW1lRmllbGQhOiBzdHJpbmc7XG4gICAgcHVibGljIHByaW1lVHlwZSA9ICd0ZXh0JztcbiAgICBwdWJsaWMgcHJpbWVTaG93TWF0Y2hNb2RlID0gdHJ1ZTtcbiAgICBwdWJsaWMgcHJpbWVEZWZhdWx0TWF0Y2hNb2RlITogRmlsdGVyTWF0Y2hNb2RlRW51bTtcbiAgICBwdWJsaWMgcHJpbWVEaXNwbGF5ID0gJ3Jvdyc7XG4gICAgcHVibGljIHByaW1lTWF0Y2hNb2RlQ3VzdG9tT3B0aW9ucz86IFNlbGVjdEl0ZW1bXTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXG4gICAgcHJpdmF0ZSBkYXRlRmlsdGVyQ2FsbGJhY2s/OiBGdW5jdGlvbjtcbiAgICBwcml2YXRlIGRhdGVEZWJvdW5jZVN1YmplY3QgPSBuZXcgU3ViamVjdDxEYXRlIHwgRGF0ZVtdIHwgbnVsbD4oKTtcbiAgICBwcml2YXRlIGRhdGVEZWJvdW5jZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJpbWVDb25maWc6IFByaW1lTkdDb25maWcpIHtcbiAgICAgICAgdGhpcy5kYXRlRGVib3VuY2VTdWJzY3JpcHRpb24gPSB0aGlzLmRhdGVEZWJvdW5jZVN1YmplY3QucGlwZShkZWJvdW5jZVRpbWUoNTAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKHYgPT4ge1xuICAgICAgICAgICAgdGhpcy5kYXRlRmlsdGVyQ2FsbGJhY2s/Lih2KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3RpdmVNYXRjaE1vZGUoKTogRmlsdGVyTWF0Y2hNb2RlRW51bSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMucHJpbWVDb2x1bW5GaWx0ZXI/LmR0LmZpbHRlcnNbdGhpcy5kZXNjcmlwdG9yLnByb3BlcnR5XSBhcyBGaWx0ZXJNZXRhZGF0YTtcbiAgICAgICAgcmV0dXJuIGZpbHRlcj8ubWF0Y2hNb2RlIGFzIEZpbHRlck1hdGNoTW9kZUVudW0gfCB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMucHJpbWVEZWZhdWx0TWF0Y2hNb2RlID0gdGhpcy5kZXNjcmlwdG9yLmRlZmF1bHRGaWx0ZXJNYXRjaE1vZGUgPz8gRmlsdGVyTWF0Y2hNb2RlRW51bS5FcXVhbHM7XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLmRlc2NyaXB0b3IuZmlsdGVyVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBGaWx0ZXJUeXBlRW51bS5Cb29sZWFuOlxuICAgICAgICAgICAgICAgIHRoaXMucHJpbWVUeXBlID0gJ2Jvb2xlYW4nO1xuICAgICAgICAgICAgICAgIHRoaXMucHJpbWVTaG93TWF0Y2hNb2RlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpbHRlclR5cGVFbnVtLk51bWJlcjpcbiAgICAgICAgICAgICAgICB0aGlzLnByaW1lVHlwZSA9ICdudW1lcmljJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmlsdGVyVHlwZUVudW0uRGF0ZTpcbiAgICAgICAgICAgICAgICB0aGlzLnByaW1lVHlwZSA9ICdkYXRlJztcbiAgICAgICAgICAgICAgICB0aGlzLnByaW1lRGVmYXVsdE1hdGNoTW9kZSA9IEZpbHRlck1hdGNoTW9kZUVudW0uRGF0ZUlzO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWx0ZXJUeXBlRW51bS5Mb29rdXA6XG4gICAgICAgICAgICAgICAgdGhpcy5wcmltZVR5cGUgPSAnbG9va3VwJztcbiAgICAgICAgICAgICAgICB0aGlzLmxvb2t1cERlc2NyaXB0b3IgPSB0aGlzLmRlc2NyaXB0b3IgYXMgRmlsdGVyTG9va3VwRGVzY3JpcHRvcjxUPjtcbiAgICAgICAgICAgICAgICB0aGlzLnByaW1lRmllbGQgPSBgJHt0aGlzLmRlc2NyaXB0b3IucHJvcGVydHl9JHt0aGlzLmxvb2t1cERlc2NyaXB0b3IuaXRlbXNWYWx1ZVByb3BlcnR5ID8gYC4ke3RoaXMubG9va3VwRGVzY3JpcHRvci5pdGVtc1ZhbHVlUHJvcGVydHl9YCA6ICcnfWA7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmltZU1hdGNoTW9kZUN1c3RvbU9wdGlvbnMgPSBbXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlRW51bS5FcXVhbHMsIGxhYmVsOiB0aGlzLnByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZUVudW0uRXF1YWxzKX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWx1ZTogRmlsdGVyTWF0Y2hNb2RlRW51bS5Ob3RFcXVhbHMsIGxhYmVsOiB0aGlzLnByaW1lQ29uZmlnLmdldFRyYW5zbGF0aW9uKEZpbHRlck1hdGNoTW9kZUVudW0uTm90RXF1YWxzKX1cbiAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubG9va3VwRGVzY3JpcHRvci5tdWx0aXNlbGVjdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByaW1lTWF0Y2hNb2RlQ3VzdG9tT3B0aW9ucyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmltZURlZmF1bHRNYXRjaE1vZGUgPSBGaWx0ZXJNYXRjaE1vZGVFbnVtLkluO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWx0ZXJUeXBlRW51bS5TdHJpbmc6XG4gICAgICAgICAgICAgICAgdGhpcy5wcmltZVR5cGUgPSAndGV4dCc7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmltZURlZmF1bHRNYXRjaE1vZGUgPSBGaWx0ZXJNYXRjaE1vZGVFbnVtLkNvbnRhaW5zO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5tYXRjaE1vZGVzKSB7XG4gICAgICAgICAgICB0aGlzLnByaW1lTWF0Y2hNb2RlQ3VzdG9tT3B0aW9ucyA9IHRoaXMuZGVzY3JpcHRvci5tYXRjaE1vZGVzLm1hcChtbSA9PiA8U2VsZWN0SXRlbT57dmFsdWU6IG1tLCBsYWJlbDogdGhpcy5wcmltZUNvbmZpZy5nZXRUcmFuc2xhdGlvbihtbSl9KTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLnByaW1lTWF0Y2hNb2RlQ3VzdG9tT3B0aW9ucy5tYXAobWF0Y2hNb2RlID0+IG1hdGNoTW9kZS52YWx1ZSkuaW5jbHVkZXModGhpcy5wcmltZURlZmF1bHRNYXRjaE1vZGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmltZURlZmF1bHRNYXRjaE1vZGUgPSB0aGlzLmRlc2NyaXB0b3IubWF0Y2hNb2Rlc1swXSBhcyBGaWx0ZXJNYXRjaE1vZGVFbnVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnByaW1lU2hvd01hdGNoTW9kZSA9IHRoaXMucHJpbWVNYXRjaE1vZGVDdXN0b21PcHRpb25zPy5sZW5ndGggPiAxO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuZGF0ZURlYm91bmNlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzXG4gICAgZGF0ZUZpbHRlcih2YWx1ZTogRGF0ZSB8IERhdGVbXSB8IG51bGwsIGZpbHRlckNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgICB0aGlzLmRhdGVGaWx0ZXJDYWxsYmFjayA9IGZpbHRlckNhbGxiYWNrO1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVNYXRjaE1vZGUgPT09IEZpbHRlck1hdGNoTW9kZUVudW0uQmV0d2VlbiAmJiBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZVZhbHVlcyA9IHZhbHVlLmZpbHRlcih2ID0+IHYgaW5zdGFuY2VvZiBEYXRlKTtcbiAgICAgICAgICAgIGlmIChkYXRlVmFsdWVzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0ZURlYm91bmNlU3ViamVjdC5uZXh0KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICAgIGRhdGVSYW5nZUNoYW5nZSh2YWx1ZTogRGF0ZVtdIHwgbnVsbCwgZmlsdGVyQ2FsbGJhY2s6IEZ1bmN0aW9uKSB7XG4gICAgICAgIGZpbHRlckNhbGxiYWNrKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlc1xuICAgIGF1dG9jb21wbGV0ZUZpbHRlcih2YWx1ZTogVCwgZmlsdGVyQ2FsbGJhY2s6IEZ1bmN0aW9uKSB7XG4gICAgICAgIGZpbHRlckNhbGxiYWNrKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10eXBlcywgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGRyb3Bkb3duRmlsdGVyKHZhbHVlOiBhbnksIGZpbHRlckNhbGxiYWNrOiBGdW5jdGlvbikge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBmaWx0ZXJDYWxsYmFjayh2YWx1ZSk7XG4gICAgfVxufVxuIiwiPHAtY29sdW1uRmlsdGVyXG4gICAgY2xhc3M9XCJtbC1hdXRvXCJcbiAgICBbdHlwZV09XCJwcmltZVR5cGVcIlxuICAgIFtmaWVsZF09XCJkZXNjcmlwdG9yLnByb3BlcnR5XCJcbiAgICBbZGlzcGxheV09XCJwcmltZURpc3BsYXlcIlxuICAgIFttYXRjaE1vZGVdPVwicHJpbWVEZWZhdWx0TWF0Y2hNb2RlXCJcbiAgICBbbWF0Y2hNb2RlT3B0aW9uc109XCJwcmltZU1hdGNoTW9kZUN1c3RvbU9wdGlvbnNcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJkZXNjcmlwdG9yLnBsYWNlaG9sZGVyID8/ICdtbmdUYWJsZS50eXBlVG9GaWx0ZXInIHwgdHJhbnNsYXRlXCJcbiAgICBbc2hvd01hdGNoTW9kZXNdPVwidHJ1ZVwiXG4gICAgW3Nob3dPcGVyYXRvcl09XCJmYWxzZVwiXG4gICAgW3Nob3dBZGRCdXR0b25dPVwiZmFsc2VcIlxuICAgIFtoaWRlT25DbGVhcl09XCJ0cnVlXCJcbiAgICBbc2hvd01lbnVdPVwicHJpbWVTaG93TWF0Y2hNb2RlXCJcbiAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwiZGVzY3JpcHRvci5udW1iZXJNaW5GcmFjdGlvbkRpZ2l0c1wiXG4gICAgW21heEZyYWN0aW9uRGlnaXRzXT1cImRlc2NyaXB0b3IubnVtYmVyTWF4RnJhY3Rpb25EaWdpdHNcIlxuICAgIFt1c2VHcm91cGluZ109XCJkZXNjcmlwdG9yLm51bWJlclVzZUdyb3VwaW5nXCI+XG4gICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwicHJpbWVUeXBlID09PSAnZGF0ZSdcIiBwVGVtcGxhdGU9XCJmaWx0ZXJcIiBsZXQtdmFsdWUgbGV0LWZpbHRlckNhbGxiYWNrPVwiZmlsdGVyQ2FsbGJhY2tcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGl2ZU1hdGNoTW9kZSA9PT0gJ2JldHdlZW4nOyBlbHNlIGRhdGVQaWNrZXJcIj5cbiAgICAgICAgICAgIDxtbmctZGF0ZS1yYW5nZVxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJkYXRlRmlsdGVyKCRldmVudCwgZmlsdGVyQ2FsbGJhY2spXCJcbiAgICAgICAgICAgICAgICBbc2hvd1RpbWVdPVwiZGVzY3JpcHRvci5kYXRlUGlja2VyU2hvd1RpbWVcIlxuICAgICAgICAgICAgICAgIFtkYXRlRm9ybWF0XT1cImRlc2NyaXB0b3IuZGF0ZVBpY2tlckZvcm1hdFwiXG4gICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImRlc2NyaXB0b3IucGxhY2Vob2xkZXIgPz8gJ21uZ1RhYmxlLnR5cGVUb0ZpbHRlcicgfCB0cmFuc2xhdGVcIj48L21uZy1kYXRlLXJhbmdlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkYXRlUGlja2VyPlxuICAgICAgICAgICAgPHAtY2FsZW5kYXJcbiAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJkYXRlRmlsdGVyKCRldmVudCwgZmlsdGVyQ2FsbGJhY2spXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGVzY3JpcHRvci5wbGFjZWhvbGRlciA/PyAnbW5nVGFibGUudHlwZVRvRmlsdGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW3Nob3dJY29uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtkYXRlRm9ybWF0XT1cImRlc2NyaXB0b3IuZGF0ZVBpY2tlckZvcm1hdCA/PyAnZGQubW0ueXknXCJcbiAgICAgICAgICAgICAgICBbc2hvd1RpbWVdPVwiZGVzY3JpcHRvci5kYXRlUGlja2VyU2hvd1RpbWVcIlxuICAgICAgICAgICAgICAgIFtmaXJzdERheU9mV2Vla109XCIxXCI+XG4gICAgICAgICAgICA8L3AtY2FsZW5kYXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJsb29rdXBEZXNjcmlwdG9yXCIgcFRlbXBsYXRlPVwiZmlsdGVyXCIgbGV0LXZhbHVlIGxldC1maWx0ZXJDYWxsYmFjaz1cImZpbHRlckNhbGxiYWNrXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImxvb2t1cERlc2NyaXB0b3IubG9va3VwVHlwZVwiPlxuICAgICAgICAgICAgPG1uZy1hdXRvY29tcGxldGVcbiAgICAgICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwibG9va3VwVHlwZUF1dG9jb21wbGV0ZVwiXG4gICAgICAgICAgICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAgICAgICAgICAgICAgIFtkYXRhUHJvdmlkZXJdPVwibG9va3VwRGVzY3JpcHRvci5kYXRhUHJvdmlkZXJcIlxuICAgICAgICAgICAgICAgIFtkYXRhS2V5UHJvcGVydHldPVwibG9va3VwRGVzY3JpcHRvci5pdGVtc1ZhbHVlUHJvcGVydHlcIlxuICAgICAgICAgICAgICAgIFtpdGVtc1ZhbHVlUHJvcGVydHldPVwibG9va3VwRGVzY3JpcHRvci5pdGVtc1ZhbHVlUHJvcGVydHlcIlxuICAgICAgICAgICAgICAgIFtpdGVtc0xhYmVsUHJvcGVydHldPVwibG9va3VwRGVzY3JpcHRvci5pdGVtc0xhYmVsUHJvcGVydHlcIlxuICAgICAgICAgICAgICAgIFtpdGVtc0xhYmVsVHJhbnNsYXRlXT1cImxvb2t1cERlc2NyaXB0b3IuaXRlbXNMYWJlbFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW211bHRpc2VsZWN0XT1cImxvb2t1cERlc2NyaXB0b3IubXVsdGlzZWxlY3RcIlxuICAgICAgICAgICAgICAgIFtvcGVuT25Gb2N1c109XCJsb29rdXBEZXNjcmlwdG9yLmF1dG9jb21wbGV0ZU9wZW5PbkZvY3VzXCJcbiAgICAgICAgICAgICAgICBbaW5saW5lU2VhcmNoXT1cImxvb2t1cERlc2NyaXB0b3IuYXV0b2NvbXBsZXRlSW5saW5lU2VhcmNoXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGVzY3JpcHRvci5wbGFjZWhvbGRlciA/PyAnbW5nVGFibGUuc2VhcmNoVG9GaWx0ZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NOYW1lXT1cImxvb2t1cERlc2NyaXB0b3IuY2xhc3NOYW1lXCJcbiAgICAgICAgICAgICAgICBbZHJvcGRvd25DbGFzc05hbWVdPVwibG9va3VwRGVzY3JpcHRvci5kcm9wZG93bkNsYXNzTmFtZVwiXG4gICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImF1dG9jb21wbGV0ZUZpbHRlcigkZXZlbnQsIGZpbHRlckNhbGxiYWNrKVwiPlxuICAgICAgICAgICAgPC9tbmctYXV0b2NvbXBsZXRlPlxuICAgICAgICAgICAgPG1uZy1kcm9wZG93blxuICAgICAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJsb29rdXBUeXBlRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICBbZGF0YVByb3ZpZGVyXT1cImxvb2t1cERlc2NyaXB0b3IuZGF0YVByb3ZpZGVyXCJcbiAgICAgICAgICAgICAgICBbaXRlbXNWYWx1ZVByb3BlcnR5XT1cImxvb2t1cERlc2NyaXB0b3IuaXRlbXNWYWx1ZVByb3BlcnR5XCJcbiAgICAgICAgICAgICAgICBbaXRlbXNMYWJlbFByb3BlcnR5XT1cImxvb2t1cERlc2NyaXB0b3IuaXRlbXNMYWJlbFByb3BlcnR5XCJcbiAgICAgICAgICAgICAgICBbaXRlbXNMYWJlbFRyYW5zbGF0ZV09XCJsb29rdXBEZXNjcmlwdG9yLml0ZW1zTGFiZWxUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFttdWx0aXNlbGVjdF09XCJsb29rdXBEZXNjcmlwdG9yLm11bHRpc2VsZWN0XCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZGVzY3JpcHRvci5wbGFjZWhvbGRlciA/PyAnbW5nVGFibGUuc2VsZWN0VG9GaWx0ZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbY2xhc3NOYW1lXT1cImxvb2t1cERlc2NyaXB0b3IuY2xhc3NOYW1lXCJcbiAgICAgICAgICAgICAgICBbZHJvcGRvd25DbGFzc05hbWVdPVwibG9va3VwRGVzY3JpcHRvci5kcm9wZG93bkNsYXNzTmFtZVwiXG4gICAgICAgICAgICAgICAgW3Nob3dDbGVhcl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgW2NoYW5nZVZhbHVlT25CbHVyXT1cImxvb2t1cERlc2NyaXB0b3IubXVsdGlzZWxlY3RcIlxuICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJkcm9wZG93bkZpbHRlcigkZXZlbnQsIGZpbHRlckNhbGxiYWNrKVwiPlxuICAgICAgICAgICAgPC9tbmctZHJvcGRvd24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L3AtY29sdW1uRmlsdGVyPlxuIl19