@mediusinc/mng-commons 0.10.3-rc.1 → 0.11.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 (325) hide show
  1. package/assets/i18n/en.json +3 -0
  2. package/assets/i18n/sl.json +3 -0
  3. package/esm2020/lib/api/models/builders/query-param.builder.mjs +58 -58
  4. package/esm2020/lib/api/models/filter-match-type.model.mjs +24 -24
  5. package/esm2020/lib/api/models/filter-param.model.mjs +32 -32
  6. package/esm2020/lib/api/models/index.mjs +8 -8
  7. package/esm2020/lib/api/models/mappers.mjs +12 -12
  8. package/esm2020/lib/api/models/query-mode.model.mjs +17 -17
  9. package/esm2020/lib/api/models/query-param.model.mjs +67 -67
  10. package/esm2020/lib/api/models/query-result.model.mjs +17 -17
  11. package/esm2020/lib/api/models/serialization.model.mjs +1 -1
  12. package/esm2020/lib/api/services/api.abstract.service.mjs +55 -55
  13. package/esm2020/lib/api/services/crud-api.abstract.service.mjs +67 -67
  14. package/esm2020/lib/api/services/get-all-api.abstract.service.mjs +22 -22
  15. package/esm2020/lib/api/services/index.mjs +3 -3
  16. package/esm2020/lib/api/utils/index.mjs +2 -2
  17. package/esm2020/lib/api/utils/medius-rest.util.mjs +152 -152
  18. package/esm2020/lib/api/utils/object-serializer.util.mjs +243 -243
  19. package/esm2020/lib/components/action/action.component.mjs +199 -199
  20. package/esm2020/lib/components/action/editor/action-editor.component.mjs +247 -247
  21. package/esm2020/lib/components/action/index.mjs +3 -3
  22. package/esm2020/lib/components/action/models/action-confirmation-service.model.mjs +1 -1
  23. package/esm2020/lib/components/action/models/action-execution.model.mjs +235 -235
  24. package/esm2020/lib/components/action/models/index.mjs +2 -2
  25. package/esm2020/lib/components/action/route/action-route.component.mjs +124 -124
  26. package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +277 -277
  27. package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +186 -169
  28. package/esm2020/lib/components/form/editor/form-editor.component.mjs +212 -212
  29. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +48 -48
  30. package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +43 -43
  31. package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +25 -25
  32. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +102 -102
  33. package/esm2020/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +22 -22
  34. package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +179 -179
  35. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +173 -173
  36. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +150 -155
  37. package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +17 -17
  38. package/esm2020/lib/components/form/formly/fields/index.mjs +9 -9
  39. package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +14 -14
  40. package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +14 -14
  41. package/esm2020/lib/components/form/formly/wrappers/index.mjs +2 -2
  42. package/esm2020/lib/components/form/index.mjs +3 -3
  43. package/esm2020/lib/components/form/models/form-editor.event.mjs +33 -33
  44. package/esm2020/lib/components/form/models/index.mjs +1 -1
  45. package/esm2020/lib/components/layout/breadcrumb.component.mjs +16 -16
  46. package/esm2020/lib/components/layout/footer.component.mjs +16 -16
  47. package/esm2020/lib/components/layout/index.mjs +7 -7
  48. package/esm2020/lib/components/layout/main-layout.component.mjs +51 -51
  49. package/esm2020/lib/components/layout/menu-item.component.mjs +238 -238
  50. package/esm2020/lib/components/layout/menu.component.mjs +20 -20
  51. package/esm2020/lib/components/layout/services/index.mjs +1 -1
  52. package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +192 -192
  53. package/esm2020/lib/components/layout/topbar.component.mjs +57 -57
  54. package/esm2020/lib/components/layout/version.component.mjs +57 -57
  55. package/esm2020/lib/components/tableview/index.mjs +6 -6
  56. package/esm2020/lib/components/tableview/models/index.mjs +1 -1
  57. package/esm2020/lib/components/tableview/models/table.event.mjs +15 -15
  58. package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +57 -57
  59. package/esm2020/lib/components/tableview/route/tableview-route.component.mjs +60 -60
  60. package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +105 -102
  61. package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +70 -70
  62. package/esm2020/lib/components/tableview/table/table.component.mjs +509 -498
  63. package/esm2020/lib/components/tableview/tableview.component.mjs +91 -91
  64. package/esm2020/lib/config/formly.config.mjs +181 -181
  65. package/esm2020/lib/config/index.mjs +1 -1
  66. package/esm2020/lib/config/models/index.mjs +3 -2
  67. package/esm2020/lib/config/models/mng-config.model.mjs +1 -1
  68. package/esm2020/lib/config/models/mng-formly-config-model.mjs +2 -0
  69. package/esm2020/lib/data-providers/base.data-provider.mjs +16 -16
  70. package/esm2020/lib/data-providers/editor.data-provider.mjs +36 -36
  71. package/esm2020/lib/data-providers/index.mjs +5 -5
  72. package/esm2020/lib/data-providers/lookup.data-provider.mjs +15 -15
  73. package/esm2020/lib/data-providers/table.data-provider.mjs +16 -16
  74. package/esm2020/lib/data-providers/tableview.data-provider.mjs +16 -16
  75. package/esm2020/lib/descriptors/action.descriptor.mjs +587 -587
  76. package/esm2020/lib/descriptors/column.descriptor.mjs +264 -264
  77. package/esm2020/lib/descriptors/editor.descriptor.mjs +146 -146
  78. package/esm2020/lib/descriptors/field-validation.descriptor.mjs +20 -20
  79. package/esm2020/lib/descriptors/field.descriptor.mjs +819 -819
  80. package/esm2020/lib/descriptors/filter.descriptor.mjs +291 -289
  81. package/esm2020/lib/descriptors/index.mjs +9 -9
  82. package/esm2020/lib/descriptors/interfaces/field-config.interface.mjs +1 -1
  83. package/esm2020/lib/descriptors/interfaces/index.mjs +2 -2
  84. package/esm2020/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +1 -1
  85. package/esm2020/lib/descriptors/model.descriptor.mjs +33 -33
  86. package/esm2020/lib/descriptors/table.descriptor.mjs +197 -197
  87. package/esm2020/lib/descriptors/tableview.descriptor.mjs +134 -134
  88. package/esm2020/lib/descriptors/types/action.type.mjs +52 -52
  89. package/esm2020/lib/descriptors/types/column.type.mjs +10 -10
  90. package/esm2020/lib/descriptors/types/editor.type.mjs +7 -7
  91. package/esm2020/lib/descriptors/types/field.type.mjs +52 -52
  92. package/esm2020/lib/descriptors/types/filter.type.mjs +30 -30
  93. package/esm2020/lib/descriptors/types/index.mjs +6 -6
  94. package/esm2020/lib/descriptors/types/table.type.mjs +16 -16
  95. package/esm2020/lib/directives/component.directive.mjs +43 -43
  96. package/esm2020/lib/directives/index.mjs +2 -2
  97. package/esm2020/lib/directives/template.directive.mjs +27 -27
  98. package/esm2020/lib/mng-commons.module.mjs +441 -441
  99. package/esm2020/lib/models/column-value.model.mjs +1 -1
  100. package/esm2020/lib/models/enum.model.mjs +1 -1
  101. package/esm2020/lib/models/error.model.mjs +1 -1
  102. package/esm2020/lib/models/formly-field.model.mjs +2 -0
  103. package/esm2020/lib/models/index.mjs +9 -8
  104. package/esm2020/lib/models/menu.model.mjs +1 -1
  105. package/esm2020/lib/models/user.model.mjs +1 -1
  106. package/esm2020/lib/models/version.model.mjs +1 -1
  107. package/esm2020/lib/models/view-container.model.mjs +1 -1
  108. package/esm2020/lib/pipes/boolean.pipe.mjs +26 -26
  109. package/esm2020/lib/pipes/enum.pipe.mjs +24 -24
  110. package/esm2020/lib/pipes/i18n-property.pipe.mjs +17 -17
  111. package/esm2020/lib/pipes/index.mjs +5 -5
  112. package/esm2020/lib/pipes/json-path.pipe.mjs +79 -79
  113. package/esm2020/lib/pipes/link-formatter.pipe.mjs +38 -38
  114. package/esm2020/lib/router/index.mjs +2 -2
  115. package/esm2020/lib/router/models/index.mjs +1 -1
  116. package/esm2020/lib/router/models/router.model.mjs +1 -1
  117. package/esm2020/lib/router/route-builder.mjs +425 -425
  118. package/esm2020/lib/router/tableview-route-builder.mjs +159 -159
  119. package/esm2020/lib/security/authorization.guard.mjs +25 -25
  120. package/esm2020/lib/security/authorization.service.mjs +46 -46
  121. package/esm2020/lib/security/authorization.util.mjs +15 -15
  122. package/esm2020/lib/security/index.mjs +3 -3
  123. package/esm2020/lib/security/model/authorization.type.mjs +7 -7
  124. package/esm2020/lib/security/model/index.mjs +3 -3
  125. package/esm2020/lib/security/model/permission-service.interface.mjs +1 -1
  126. package/esm2020/lib/security/model/permissions.model.mjs +94 -94
  127. package/esm2020/lib/services/action-executor.service.mjs +535 -535
  128. package/esm2020/lib/services/commons.service.mjs +342 -342
  129. package/esm2020/lib/services/configuration.service.mjs +110 -110
  130. package/esm2020/lib/services/error-mapper.service.mjs +13 -13
  131. package/esm2020/lib/services/index.mjs +6 -6
  132. package/esm2020/lib/services/internal/commons-init.provider.mjs +3 -3
  133. package/esm2020/lib/services/internal/commons-init.service.mjs +43 -43
  134. package/esm2020/lib/services/internal/index.mjs +2 -2
  135. package/esm2020/lib/services/navigation.service.mjs +47 -47
  136. package/esm2020/lib/services/providers/config-service.provider.mjs +29 -29
  137. package/esm2020/lib/services/providers/formly-config.provider.mjs +30 -30
  138. package/esm2020/lib/services/providers/index.mjs +2 -2
  139. package/esm2020/lib/services/tokens/browser-storage.token.mjs +5 -5
  140. package/esm2020/lib/services/tokens/commons-init.token.mjs +2 -2
  141. package/esm2020/lib/services/tokens/default-setting.token.mjs +2 -2
  142. package/esm2020/lib/services/tokens/index.mjs +4 -4
  143. package/esm2020/lib/services/tokens/module-config.token.mjs +2 -2
  144. package/esm2020/lib/services/version.service.mjs +38 -38
  145. package/esm2020/lib/services/view-container.component.service.mjs +34 -34
  146. package/esm2020/lib/types/index.mjs +2 -2
  147. package/esm2020/lib/types/type.decorator.mjs +12 -12
  148. package/esm2020/lib/types/type.model.mjs +1 -1
  149. package/esm2020/lib/utils/action-data-provider.util.mjs +144 -144
  150. package/esm2020/lib/utils/editor-formly.util.mjs +251 -243
  151. package/esm2020/lib/utils/enum.util.mjs +81 -81
  152. package/esm2020/lib/utils/i18n.util.mjs +232 -232
  153. package/esm2020/lib/utils/index.mjs +7 -7
  154. package/esm2020/lib/utils/model.util.mjs +59 -59
  155. package/esm2020/lib/utils/notification.util.mjs +45 -45
  156. package/esm2020/lib/utils/route.util.mjs +23 -23
  157. package/esm2020/lib/utils/styles.util.mjs +40 -40
  158. package/esm2020/lib/utils/type.util.mjs +76 -76
  159. package/esm2020/mediusinc-mng-commons.mjs +4 -4
  160. package/esm2020/public-api.mjs +51 -51
  161. package/fesm2015/mediusinc-mng-commons.mjs +10669 -10637
  162. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  163. package/fesm2020/mediusinc-mng-commons.mjs +10522 -10486
  164. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  165. package/lib/api/models/builders/query-param.builder.d.ts +13 -13
  166. package/lib/api/models/filter-match-type.model.d.ts +23 -23
  167. package/lib/api/models/filter-param.model.d.ts +23 -23
  168. package/lib/api/models/index.d.ts +8 -8
  169. package/lib/api/models/mappers.d.ts +6 -6
  170. package/lib/api/models/query-mode.model.d.ts +16 -16
  171. package/lib/api/models/query-param.model.d.ts +31 -31
  172. package/lib/api/models/query-result.model.d.ts +23 -23
  173. package/lib/api/models/serialization.model.d.ts +8 -8
  174. package/lib/api/services/api.abstract.service.d.ts +24 -24
  175. package/lib/api/services/crud-api.abstract.service.d.ts +22 -22
  176. package/lib/api/services/get-all-api.abstract.service.d.ts +14 -14
  177. package/lib/api/services/index.d.ts +3 -3
  178. package/lib/api/utils/index.d.ts +2 -2
  179. package/lib/api/utils/medius-rest.util.d.ts +15 -15
  180. package/lib/api/utils/object-serializer.util.d.ts +33 -33
  181. package/lib/components/action/action.component.d.ts +75 -75
  182. package/lib/components/action/editor/action-editor.component.d.ts +64 -64
  183. package/lib/components/action/index.d.ts +3 -3
  184. package/lib/components/action/models/action-confirmation-service.model.d.ts +6 -6
  185. package/lib/components/action/models/action-execution.model.d.ts +129 -129
  186. package/lib/components/action/models/index.d.ts +2 -2
  187. package/lib/components/action/route/action-route.component.d.ts +31 -31
  188. package/lib/components/form/autocomplete/autocomplete.component.d.ts +56 -56
  189. package/lib/components/form/dropdown/dropdown.component.d.ts +50 -47
  190. package/lib/components/form/editor/form-editor.component.d.ts +45 -45
  191. package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +15 -15
  192. package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +14 -14
  193. package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +13 -13
  194. package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +23 -23
  195. package/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.d.ts +10 -10
  196. package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +45 -45
  197. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +23 -23
  198. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +38 -38
  199. package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +6 -6
  200. package/lib/components/form/formly/fields/index.d.ts +9 -9
  201. package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +6 -6
  202. package/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.d.ts +6 -6
  203. package/lib/components/form/formly/wrappers/index.d.ts +2 -2
  204. package/lib/components/form/index.d.ts +3 -3
  205. package/lib/components/form/models/form-editor.event.d.ts +37 -37
  206. package/lib/components/form/models/index.d.ts +1 -1
  207. package/lib/components/layout/breadcrumb.component.d.ts +8 -8
  208. package/lib/components/layout/footer.component.d.ts +9 -9
  209. package/lib/components/layout/index.d.ts +7 -7
  210. package/lib/components/layout/main-layout.component.d.ts +20 -20
  211. package/lib/components/layout/menu-item.component.d.ts +44 -44
  212. package/lib/components/layout/menu.component.d.ts +10 -10
  213. package/lib/components/layout/services/index.d.ts +1 -1
  214. package/lib/components/layout/services/main-layout.component.service.d.ts +65 -65
  215. package/lib/components/layout/topbar.component.d.ts +24 -24
  216. package/lib/components/layout/version.component.d.ts +19 -19
  217. package/lib/components/tableview/index.d.ts +6 -6
  218. package/lib/components/tableview/models/index.d.ts +1 -1
  219. package/lib/components/tableview/models/table.event.d.ts +17 -17
  220. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +20 -20
  221. package/lib/components/tableview/route/tableview-route.component.d.ts +23 -23
  222. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +32 -32
  223. package/lib/components/tableview/table/column-value/column-value.component.d.ts +29 -29
  224. package/lib/components/tableview/table/table.component.d.ts +108 -108
  225. package/lib/components/tableview/tableview.component.d.ts +41 -41
  226. package/lib/config/formly.config.d.ts +16 -15
  227. package/lib/config/index.d.ts +1 -1
  228. package/lib/config/models/index.d.ts +2 -1
  229. package/lib/config/models/mng-config.model.d.ts +36 -36
  230. package/lib/config/models/mng-formly-config-model.d.ts +17 -0
  231. package/lib/data-providers/base.data-provider.d.ts +14 -14
  232. package/lib/data-providers/editor.data-provider.d.ts +25 -25
  233. package/lib/data-providers/index.d.ts +5 -5
  234. package/lib/data-providers/lookup.data-provider.d.ts +14 -14
  235. package/lib/data-providers/table.data-provider.d.ts +14 -14
  236. package/lib/data-providers/tableview.data-provider.d.ts +15 -15
  237. package/lib/descriptors/action.descriptor.d.ts +234 -234
  238. package/lib/descriptors/column.descriptor.d.ts +82 -82
  239. package/lib/descriptors/editor.descriptor.d.ts +37 -37
  240. package/lib/descriptors/field-validation.descriptor.d.ts +18 -18
  241. package/lib/descriptors/field.descriptor.d.ts +300 -294
  242. package/lib/descriptors/filter.descriptor.d.ts +106 -106
  243. package/lib/descriptors/index.d.ts +9 -9
  244. package/lib/descriptors/interfaces/field-config.interface.d.ts +9 -9
  245. package/lib/descriptors/interfaces/index.d.ts +2 -2
  246. package/lib/descriptors/interfaces/lookup-descriptor.interface.d.ts +17 -17
  247. package/lib/descriptors/model.descriptor.d.ts +15 -15
  248. package/lib/descriptors/table.descriptor.d.ts +66 -66
  249. package/lib/descriptors/tableview.descriptor.d.ts +42 -42
  250. package/lib/descriptors/types/action.type.d.ts +45 -45
  251. package/lib/descriptors/types/column.type.d.ts +9 -9
  252. package/lib/descriptors/types/editor.type.d.ts +6 -6
  253. package/lib/descriptors/types/field.type.d.ts +44 -44
  254. package/lib/descriptors/types/filter.type.d.ts +27 -27
  255. package/lib/descriptors/types/index.d.ts +6 -6
  256. package/lib/descriptors/types/table.type.d.ts +13 -13
  257. package/lib/directives/component.directive.d.ts +16 -16
  258. package/lib/directives/index.d.ts +2 -2
  259. package/lib/directives/template.directive.d.ts +13 -13
  260. package/lib/mng-commons.module.d.ts +87 -87
  261. package/lib/models/column-value.model.d.ts +4 -4
  262. package/lib/models/enum.model.d.ts +6 -6
  263. package/lib/models/error.model.d.ts +14 -14
  264. package/lib/models/formly-field.model.d.ts +16 -0
  265. package/lib/models/index.d.ts +8 -7
  266. package/lib/models/menu.model.d.ts +27 -27
  267. package/lib/models/user.model.d.ts +8 -8
  268. package/lib/models/version.model.d.ts +18 -18
  269. package/lib/models/view-container.model.d.ts +6 -6
  270. package/lib/pipes/boolean.pipe.d.ts +7 -7
  271. package/lib/pipes/enum.pipe.d.ts +8 -8
  272. package/lib/pipes/i18n-property.pipe.d.ts +8 -8
  273. package/lib/pipes/index.d.ts +5 -5
  274. package/lib/pipes/json-path.pipe.d.ts +13 -13
  275. package/lib/pipes/link-formatter.pipe.d.ts +11 -11
  276. package/lib/router/index.d.ts +2 -2
  277. package/lib/router/models/index.d.ts +1 -1
  278. package/lib/router/models/router.model.d.ts +27 -27
  279. package/lib/router/route-builder.d.ts +98 -98
  280. package/lib/router/tableview-route-builder.d.ts +34 -34
  281. package/lib/security/authorization.guard.d.ts +11 -11
  282. package/lib/security/authorization.service.d.ts +19 -19
  283. package/lib/security/authorization.util.d.ts +5 -5
  284. package/lib/security/index.d.ts +3 -3
  285. package/lib/security/model/authorization.type.d.ts +6 -6
  286. package/lib/security/model/index.d.ts +3 -3
  287. package/lib/security/model/permission-service.interface.d.ts +6 -6
  288. package/lib/security/model/permissions.model.d.ts +44 -44
  289. package/lib/services/action-executor.service.d.ts +149 -149
  290. package/lib/services/commons.service.d.ts +78 -78
  291. package/lib/services/configuration.service.d.ts +36 -36
  292. package/lib/services/error-mapper.service.d.ts +7 -7
  293. package/lib/services/index.d.ts +6 -6
  294. package/lib/services/internal/commons-init.provider.d.ts +3 -3
  295. package/lib/services/internal/commons-init.service.d.ts +16 -16
  296. package/lib/services/internal/index.d.ts +2 -2
  297. package/lib/services/navigation.service.d.ts +14 -14
  298. package/lib/services/providers/config-service.provider.d.ts +6 -6
  299. package/lib/services/providers/formly-config.provider.d.ts +4 -4
  300. package/lib/services/providers/index.d.ts +2 -2
  301. package/lib/services/tokens/browser-storage.token.d.ts +2 -2
  302. package/lib/services/tokens/commons-init.token.d.ts +3 -3
  303. package/lib/services/tokens/default-setting.token.d.ts +2 -2
  304. package/lib/services/tokens/index.d.ts +4 -4
  305. package/lib/services/tokens/module-config.token.d.ts +3 -3
  306. package/lib/services/version.service.d.ts +13 -13
  307. package/lib/services/view-container.component.service.d.ts +22 -22
  308. package/lib/types/index.d.ts +2 -2
  309. package/lib/types/type.decorator.d.ts +4 -4
  310. package/lib/types/type.model.d.ts +23 -23
  311. package/lib/utils/action-data-provider.util.d.ts +20 -20
  312. package/lib/utils/editor-formly.util.d.ts +11 -11
  313. package/lib/utils/enum.util.d.ts +50 -50
  314. package/lib/utils/i18n.util.d.ts +56 -56
  315. package/lib/utils/index.d.ts +7 -7
  316. package/lib/utils/model.util.d.ts +8 -8
  317. package/lib/utils/notification.util.d.ts +11 -11
  318. package/lib/utils/route.util.d.ts +4 -4
  319. package/lib/utils/styles.util.d.ts +14 -14
  320. package/lib/utils/type.util.d.ts +36 -36
  321. package/mediusinc-mng-commons.d.ts +5 -5
  322. package/package.json +2 -2
  323. package/public-api.d.ts +32 -32
  324. package/version-info.json +7 -7
  325. package/mediusinc-mng-commons-0.10.3-rc.1.tgz +0 -0
@@ -1,265 +1,265 @@
1
- import { ModelUtil, TypeUtil } from '../utils';
2
- import { FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor } from './filter.descriptor';
3
- import { ColumnTypeEnum, FilterTypeEnum } from './types';
4
- export class ColumnDescriptor {
5
- constructor(table, property) {
6
- this._columnType = ColumnTypeEnum.String;
7
- this._isSortEnabled = false;
8
- // styling
9
- this._headerClassName = '';
10
- this._className = '';
11
- this._width = null;
12
- this._minWidth = null;
13
- this._maxWidth = null;
14
- this._enumNameAsValue = false;
15
- // boolean specifics
16
- this._booleanAsIcon = false;
17
- // helpers
18
- this._hasCopyToClipboard = false;
19
- this._table = table;
20
- this._property = property;
21
- }
22
- get columnType() {
23
- return this._columnType;
24
- }
25
- get title() {
26
- return this._title;
27
- }
28
- get jsonPath() {
29
- return this._jsonPath;
30
- }
31
- get isSortEnabled() {
32
- return this._isSortEnabled;
33
- }
34
- get filterDescriptor() {
35
- return this._filterDescriptor;
36
- }
37
- get displayFormat() {
38
- return this._displayFormat;
39
- }
40
- get table() {
41
- return this._table;
42
- }
43
- get property() {
44
- return this._property;
45
- }
46
- get headerClassName() {
47
- return this._headerClassName;
48
- }
49
- get className() {
50
- return this._className;
51
- }
52
- get width() {
53
- return this._width;
54
- }
55
- get minWidth() {
56
- return this._minWidth;
57
- }
58
- get maxWidth() {
59
- return this._maxWidth;
60
- }
61
- get enumType() {
62
- return this._enumType;
63
- }
64
- get enumTitlePath() {
65
- return this._enumTitlePath;
66
- }
67
- get enumNameAsValue() {
68
- return this._enumNameAsValue;
69
- }
70
- get booleanAsIcon() {
71
- return this._booleanAsIcon;
72
- }
73
- get booleanYes() {
74
- return this._booleanYes;
75
- }
76
- get booleanNo() {
77
- return this._booleanNo;
78
- }
79
- get objectModelType() {
80
- return this._objectModelType;
81
- }
82
- get objectTitleProperty() {
83
- return this._objectTitleProperty;
84
- }
85
- get customComponentType() {
86
- return this._customComponentType;
87
- }
88
- get locale() {
89
- return this._locale;
90
- }
91
- get currencyCode() {
92
- return this._currencyCode;
93
- }
94
- get currencyDisplay() {
95
- return this._currencyDisplay;
96
- }
97
- get currencyFromProperty() {
98
- return this._currencyFromProperty;
99
- }
100
- get hasCopyToClipboard() {
101
- return this._hasCopyToClipboard;
102
- }
103
- asType(type = ColumnTypeEnum.String) {
104
- this._columnType = type;
105
- return this;
106
- }
107
- asNumber(displayFormat = '1.0-0', locale) {
108
- this._columnType = ColumnTypeEnum.Number;
109
- this._displayFormat = displayFormat;
110
- this._locale = locale ?? this._locale;
111
- return this;
112
- }
113
- asCurrency(currencyCode, currencyFromProperty, currencyDisplay, displayFormat = '1.2-2', locale) {
114
- this._columnType = ColumnTypeEnum.Currency;
115
- this._currencyCode = currencyCode ?? this._currencyCode;
116
- this._currencyFromProperty = currencyFromProperty ?? this._currencyFromProperty;
117
- this._currencyDisplay = currencyDisplay ?? this._currencyDisplay;
118
- this._displayFormat = displayFormat ?? displayFormat;
119
- this._locale = locale ?? this._locale;
120
- return this;
121
- }
122
- asDate(displayFormat = 'dd.MM.yyyy') {
123
- this._columnType = ColumnTypeEnum.Date;
124
- this._displayFormat = displayFormat;
125
- return this;
126
- }
127
- asBoolean(yes, no, asIcon = false) {
128
- this._columnType = ColumnTypeEnum.Boolean;
129
- this._booleanAsIcon = asIcon;
130
- this._booleanYes = yes;
131
- this._booleanNo = no;
132
- return this;
133
- }
134
- asEnum(enumType, nameAsValue = false, titlePath) {
135
- this._columnType = ColumnTypeEnum.Enum;
136
- this._enumType = enumType;
137
- this._enumNameAsValue = nameAsValue;
138
- if (typeof titlePath === 'undefined') {
139
- titlePath = TypeUtil.findEnumName(enumType);
140
- }
141
- this._enumTitlePath = titlePath;
142
- return this;
143
- }
144
- asCustomComponent(customComponentType) {
145
- this._columnType = ColumnTypeEnum.Custom;
146
- this._customComponentType = customComponentType;
147
- return this;
148
- }
149
- withClassName(className, headerClassName) {
150
- this._className = className ?? '';
151
- this._headerClassName = headerClassName ?? '';
152
- return this;
153
- }
154
- withWidth(width, minWidth, maxWidth) {
155
- this._width = width ?? null;
156
- this._minWidth = minWidth ?? null;
157
- this._maxWidth = maxWidth ?? null;
158
- return this;
159
- }
160
- withObjectProperty(modelType, titleProperty) {
161
- this._objectModelType = modelType;
162
- if (!titleProperty) {
163
- this._objectTitleProperty = ModelUtil.findTitleAttribute(modelType) ?? undefined;
164
- }
165
- else {
166
- this._objectTitleProperty = titleProperty;
167
- }
168
- return this;
169
- }
170
- withTitle(title) {
171
- this._title = title;
172
- return this;
173
- }
174
- withJsonPath(path) {
175
- this._jsonPath = path;
176
- return this;
177
- }
178
- withFilter(forceSimple = false) {
179
- this._filterDescriptor = new FilterDescriptor(this._property);
180
- let filterType;
181
- if (!forceSimple && this._objectModelType) {
182
- return this.withFilterLookup();
183
- }
184
- switch (this._columnType) {
185
- case ColumnTypeEnum.Number:
186
- filterType = FilterTypeEnum.Number;
187
- break;
188
- case ColumnTypeEnum.Boolean:
189
- filterType = FilterTypeEnum.Boolean;
190
- break;
191
- case ColumnTypeEnum.Date:
192
- filterType = FilterTypeEnum.Date;
193
- break;
194
- case ColumnTypeEnum.Enum:
195
- if (!forceSimple) {
196
- return this.withFilterLookupEnum();
197
- }
198
- else {
199
- filterType = FilterTypeEnum.String;
200
- break;
201
- }
202
- case ColumnTypeEnum.String:
203
- case ColumnTypeEnum.Custom:
204
- default:
205
- filterType = FilterTypeEnum.String;
206
- break;
207
- }
208
- this._filterDescriptor.asFilterType(filterType);
209
- return this._filterDescriptor;
210
- }
211
- withFilterLookup() {
212
- const filterDescriptor = new FilterLookupDescriptor(this._property, this._objectModelType ?? null);
213
- this._filterDescriptor = filterDescriptor;
214
- return filterDescriptor;
215
- }
216
- withFilterLookupEnum(options) {
217
- if (this._columnType !== ColumnTypeEnum.Enum || !this._enumType) {
218
- throw new Error(`Column ${this._property} is not of type enum or enum type is undefined.`);
219
- }
220
- const filterDescriptor = new FilterLookupEnumDescriptor(this._property, this._enumType, options, this._enumNameAsValue, this._enumTitlePath);
221
- this._filterDescriptor = filterDescriptor;
222
- return filterDescriptor;
223
- }
224
- withSort(isEnabled = true) {
225
- this._isSortEnabled = isEnabled;
226
- return this;
227
- }
228
- withDefaultSort(asc = true) {
229
- this._table.withDefaultSort(this._property, asc);
230
- return this;
231
- }
232
- withCopyToClipboard(hasCopyToCliboard = true) {
233
- this._hasCopyToClipboard = hasCopyToCliboard;
234
- return this;
235
- }
236
- copy() {
237
- const descriptor = new ColumnDescriptor(this._table, this._property);
238
- descriptor._jsonPath = this._jsonPath;
239
- descriptor._title = this._title;
240
- descriptor._isSortEnabled = this._isSortEnabled;
241
- descriptor._columnType = this._columnType;
242
- descriptor._filterDescriptor = this._filterDescriptor?.copy();
243
- descriptor._enumType = this._enumType;
244
- descriptor._enumTitlePath = this._enumTitlePath;
245
- descriptor._enumNameAsValue = this._enumNameAsValue;
246
- descriptor._booleanAsIcon = this._booleanAsIcon;
247
- descriptor._booleanYes = this._booleanYes;
248
- descriptor._booleanNo = this._booleanNo;
249
- descriptor._objectModelType = this._objectModelType;
250
- descriptor._objectTitleProperty = this._objectTitleProperty;
251
- descriptor._locale = this._locale;
252
- descriptor._currencyCode = this._currencyCode;
253
- descriptor._currencyDisplay = this._currencyDisplay;
254
- descriptor._currencyFromProperty = this._currencyFromProperty;
255
- descriptor._displayFormat = this._displayFormat;
256
- descriptor._headerClassName = this._headerClassName;
257
- descriptor._className = this._className;
258
- descriptor._width = this._width;
259
- descriptor._minWidth = this._minWidth;
260
- descriptor._maxWidth = this._maxWidth;
261
- descriptor._hasCopyToClipboard = this._hasCopyToClipboard;
262
- return descriptor;
263
- }
264
- }
1
+ import { ModelUtil, TypeUtil } from '../utils';
2
+ import { FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor } from './filter.descriptor';
3
+ import { ColumnTypeEnum, FilterTypeEnum } from './types';
4
+ export class ColumnDescriptor {
5
+ constructor(table, property) {
6
+ this._columnType = ColumnTypeEnum.String;
7
+ this._isSortEnabled = false;
8
+ // styling
9
+ this._headerClassName = '';
10
+ this._className = '';
11
+ this._width = null;
12
+ this._minWidth = null;
13
+ this._maxWidth = null;
14
+ this._enumNameAsValue = false;
15
+ // boolean specifics
16
+ this._booleanAsIcon = false;
17
+ // helpers
18
+ this._hasCopyToClipboard = false;
19
+ this._table = table;
20
+ this._property = property;
21
+ }
22
+ get columnType() {
23
+ return this._columnType;
24
+ }
25
+ get title() {
26
+ return this._title;
27
+ }
28
+ get jsonPath() {
29
+ return this._jsonPath;
30
+ }
31
+ get isSortEnabled() {
32
+ return this._isSortEnabled;
33
+ }
34
+ get filterDescriptor() {
35
+ return this._filterDescriptor;
36
+ }
37
+ get displayFormat() {
38
+ return this._displayFormat;
39
+ }
40
+ get table() {
41
+ return this._table;
42
+ }
43
+ get property() {
44
+ return this._property;
45
+ }
46
+ get headerClassName() {
47
+ return this._headerClassName;
48
+ }
49
+ get className() {
50
+ return this._className;
51
+ }
52
+ get width() {
53
+ return this._width;
54
+ }
55
+ get minWidth() {
56
+ return this._minWidth;
57
+ }
58
+ get maxWidth() {
59
+ return this._maxWidth;
60
+ }
61
+ get enumType() {
62
+ return this._enumType;
63
+ }
64
+ get enumTitlePath() {
65
+ return this._enumTitlePath;
66
+ }
67
+ get enumNameAsValue() {
68
+ return this._enumNameAsValue;
69
+ }
70
+ get booleanAsIcon() {
71
+ return this._booleanAsIcon;
72
+ }
73
+ get booleanYes() {
74
+ return this._booleanYes;
75
+ }
76
+ get booleanNo() {
77
+ return this._booleanNo;
78
+ }
79
+ get objectModelType() {
80
+ return this._objectModelType;
81
+ }
82
+ get objectTitleProperty() {
83
+ return this._objectTitleProperty;
84
+ }
85
+ get customComponentType() {
86
+ return this._customComponentType;
87
+ }
88
+ get locale() {
89
+ return this._locale;
90
+ }
91
+ get currencyCode() {
92
+ return this._currencyCode;
93
+ }
94
+ get currencyDisplay() {
95
+ return this._currencyDisplay;
96
+ }
97
+ get currencyFromProperty() {
98
+ return this._currencyFromProperty;
99
+ }
100
+ get hasCopyToClipboard() {
101
+ return this._hasCopyToClipboard;
102
+ }
103
+ asType(type = ColumnTypeEnum.String) {
104
+ this._columnType = type;
105
+ return this;
106
+ }
107
+ asNumber(displayFormat = '1.0-0', locale) {
108
+ this._columnType = ColumnTypeEnum.Number;
109
+ this._displayFormat = displayFormat;
110
+ this._locale = locale ?? this._locale;
111
+ return this;
112
+ }
113
+ asCurrency(currencyCode, currencyFromProperty, currencyDisplay, displayFormat = '1.2-2', locale) {
114
+ this._columnType = ColumnTypeEnum.Currency;
115
+ this._currencyCode = currencyCode ?? this._currencyCode;
116
+ this._currencyFromProperty = currencyFromProperty ?? this._currencyFromProperty;
117
+ this._currencyDisplay = currencyDisplay ?? this._currencyDisplay;
118
+ this._displayFormat = displayFormat ?? displayFormat;
119
+ this._locale = locale ?? this._locale;
120
+ return this;
121
+ }
122
+ asDate(displayFormat = 'dd.MM.yyyy') {
123
+ this._columnType = ColumnTypeEnum.Date;
124
+ this._displayFormat = displayFormat;
125
+ return this;
126
+ }
127
+ asBoolean(yes, no, asIcon = false) {
128
+ this._columnType = ColumnTypeEnum.Boolean;
129
+ this._booleanAsIcon = asIcon;
130
+ this._booleanYes = yes;
131
+ this._booleanNo = no;
132
+ return this;
133
+ }
134
+ asEnum(enumType, nameAsValue = false, titlePath) {
135
+ this._columnType = ColumnTypeEnum.Enum;
136
+ this._enumType = enumType;
137
+ this._enumNameAsValue = nameAsValue;
138
+ if (typeof titlePath === 'undefined') {
139
+ titlePath = TypeUtil.findEnumName(enumType);
140
+ }
141
+ this._enumTitlePath = titlePath;
142
+ return this;
143
+ }
144
+ asCustomComponent(customComponentType) {
145
+ this._columnType = ColumnTypeEnum.Custom;
146
+ this._customComponentType = customComponentType;
147
+ return this;
148
+ }
149
+ withClassName(className, headerClassName) {
150
+ this._className = className ?? '';
151
+ this._headerClassName = headerClassName ?? '';
152
+ return this;
153
+ }
154
+ withWidth(width, minWidth, maxWidth) {
155
+ this._width = width ?? null;
156
+ this._minWidth = minWidth ?? null;
157
+ this._maxWidth = maxWidth ?? null;
158
+ return this;
159
+ }
160
+ withObjectProperty(modelType, titleProperty) {
161
+ this._objectModelType = modelType;
162
+ if (!titleProperty) {
163
+ this._objectTitleProperty = ModelUtil.findTitleAttribute(modelType) ?? undefined;
164
+ }
165
+ else {
166
+ this._objectTitleProperty = titleProperty;
167
+ }
168
+ return this;
169
+ }
170
+ withTitle(title) {
171
+ this._title = title;
172
+ return this;
173
+ }
174
+ withJsonPath(path) {
175
+ this._jsonPath = path;
176
+ return this;
177
+ }
178
+ withFilter(forceSimple = false) {
179
+ this._filterDescriptor = new FilterDescriptor(this._property);
180
+ let filterType;
181
+ if (!forceSimple && this._objectModelType) {
182
+ return this.withFilterLookup();
183
+ }
184
+ switch (this._columnType) {
185
+ case ColumnTypeEnum.Number:
186
+ filterType = FilterTypeEnum.Number;
187
+ break;
188
+ case ColumnTypeEnum.Boolean:
189
+ filterType = FilterTypeEnum.Boolean;
190
+ break;
191
+ case ColumnTypeEnum.Date:
192
+ filterType = FilterTypeEnum.Date;
193
+ break;
194
+ case ColumnTypeEnum.Enum:
195
+ if (!forceSimple) {
196
+ return this.withFilterLookupEnum();
197
+ }
198
+ else {
199
+ filterType = FilterTypeEnum.String;
200
+ break;
201
+ }
202
+ case ColumnTypeEnum.String:
203
+ case ColumnTypeEnum.Custom:
204
+ default:
205
+ filterType = FilterTypeEnum.String;
206
+ break;
207
+ }
208
+ this._filterDescriptor.asFilterType(filterType);
209
+ return this._filterDescriptor;
210
+ }
211
+ withFilterLookup() {
212
+ const filterDescriptor = new FilterLookupDescriptor(this._property, this._objectModelType ?? null);
213
+ this._filterDescriptor = filterDescriptor;
214
+ return filterDescriptor;
215
+ }
216
+ withFilterLookupEnum(options) {
217
+ if (this._columnType !== ColumnTypeEnum.Enum || !this._enumType) {
218
+ throw new Error(`Column ${this._property} is not of type enum or enum type is undefined.`);
219
+ }
220
+ const filterDescriptor = new FilterLookupEnumDescriptor(this._property, this._enumType, options, this._enumNameAsValue, this._enumTitlePath);
221
+ this._filterDescriptor = filterDescriptor;
222
+ return filterDescriptor;
223
+ }
224
+ withSort(isEnabled = true) {
225
+ this._isSortEnabled = isEnabled;
226
+ return this;
227
+ }
228
+ withDefaultSort(asc = true) {
229
+ this._table.withDefaultSort(this._property, asc);
230
+ return this;
231
+ }
232
+ withCopyToClipboard(hasCopyToCliboard = true) {
233
+ this._hasCopyToClipboard = hasCopyToCliboard;
234
+ return this;
235
+ }
236
+ copy() {
237
+ const descriptor = new ColumnDescriptor(this._table, this._property);
238
+ descriptor._jsonPath = this._jsonPath;
239
+ descriptor._title = this._title;
240
+ descriptor._isSortEnabled = this._isSortEnabled;
241
+ descriptor._columnType = this._columnType;
242
+ descriptor._filterDescriptor = this._filterDescriptor?.copy();
243
+ descriptor._enumType = this._enumType;
244
+ descriptor._enumTitlePath = this._enumTitlePath;
245
+ descriptor._enumNameAsValue = this._enumNameAsValue;
246
+ descriptor._booleanAsIcon = this._booleanAsIcon;
247
+ descriptor._booleanYes = this._booleanYes;
248
+ descriptor._booleanNo = this._booleanNo;
249
+ descriptor._objectModelType = this._objectModelType;
250
+ descriptor._objectTitleProperty = this._objectTitleProperty;
251
+ descriptor._locale = this._locale;
252
+ descriptor._currencyCode = this._currencyCode;
253
+ descriptor._currencyDisplay = this._currencyDisplay;
254
+ descriptor._currencyFromProperty = this._currencyFromProperty;
255
+ descriptor._displayFormat = this._displayFormat;
256
+ descriptor._headerClassName = this._headerClassName;
257
+ descriptor._className = this._className;
258
+ descriptor._width = this._width;
259
+ descriptor._minWidth = this._minWidth;
260
+ descriptor._maxWidth = this._maxWidth;
261
+ descriptor._hasCopyToClipboard = this._hasCopyToClipboard;
262
+ return descriptor;
263
+ }
264
+ }
265
265
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL2NvbHVtbi5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBQyxTQUFTLEVBQUUsUUFBUSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzdDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSwwQkFBMEIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRXpHLE9BQU8sRUFBQyxjQUFjLEVBQUUsY0FBYyxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBRXZELE1BQU0sT0FBTyxnQkFBZ0I7SUEyQ3pCLFlBQVksS0FBMEIsRUFBRSxRQUFnQjtRQXhDaEQsZ0JBQVcsR0FBbUIsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUdwRCxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUsvQixVQUFVO1FBQ0YscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsV0FBTSxHQUFrQixJQUFJLENBQUM7UUFDN0IsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFDaEMsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFLaEMscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBRWpDLG9CQUFvQjtRQUNaLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBZ0IvQixVQUFVO1FBQ0Ysd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBR2hDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQVcsUUFBUTtR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QVUsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUNsQyxVQUFVLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDOUMsVUFBVSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUNwRCxVQUFVLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1FBQzlELFVBQVUsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNoRCxVQUFVLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQ3BELFVBQVUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN4QyxVQUFVLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDaEMsVUFBVSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3RDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN0QyxVQUFVLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQzFELE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7SUNvbHVtblZhbHVlQ29tcG9uZW50fSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtDbGFzc1R5cGUsIEVudW1Db25zdGFudFR5cGUsIEVudW1UeXBlfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge01vZGVsVXRpbCwgVHlwZVV0aWx9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7RmlsdGVyRGVzY3JpcHRvciwgRmlsdGVyTG9va3VwRGVzY3JpcHRvciwgRmlsdGVyTG9va3VwRW51bURlc2NyaXB0b3J9IGZyb20gJy4vZmlsdGVyLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtUYWJsZURlc2NyaXB0b3J9IGZyb20gJy4vdGFibGUuZGVzY3JpcHRvcic7XG5pbXBvcnQge0NvbHVtblR5cGVFbnVtLCBGaWx0ZXJUeXBlRW51bX0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBDb2x1bW5EZXNjcmlwdG9yPFQsIFRUPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFibGU6IFRhYmxlRGVzY3JpcHRvcjxUVD47XG4gICAgcHJpdmF0ZSByZWFkb25seSBfcHJvcGVydHk6IHN0cmluZztcbiAgICBwcml2YXRlIF9jb2x1bW5UeXBlOiBDb2x1bW5UeXBlRW51bSA9IENvbHVtblR5cGVFbnVtLlN0cmluZztcbiAgICBwcml2YXRlIF90aXRsZT86IHN0cmluZztcbiAgICBwcml2YXRlIF9qc29uUGF0aD86IHN0cmluZztcbiAgICBwcml2YXRlIF9pc1NvcnRFbmFibGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfZmlsdGVyRGVzY3JpcHRvcj86IEZpbHRlckRlc2NyaXB0b3I8VD47XG4gICAgcHJpdmF0ZSBfZGlzcGxheUZvcm1hdD86IHN0cmluZztcbiAgICBwcml2YXRlIF9sb2NhbGU/OiBzdHJpbmc7XG5cbiAgICAvLyBzdHlsaW5nXG4gICAgcHJpdmF0ZSBfaGVhZGVyQ2xhc3NOYW1lID0gJyc7XG4gICAgcHJpdmF0ZSBfY2xhc3NOYW1lID0gJyc7XG4gICAgcHJpdmF0ZSBfd2lkdGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgX21pbldpZHRoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIF9tYXhXaWR0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvLyBlbnVtIHNwZWNpZmljc1xuICAgIHByaXZhdGUgX2VudW1UeXBlPzogRW51bVR5cGU7XG4gICAgcHJpdmF0ZSBfZW51bVRpdGxlUGF0aD86IHN0cmluZyB8IG51bGw7XG4gICAgcHJpdmF0ZSBfZW51bU5hbWVBc1ZhbHVlID0gZmFsc2U7XG5cbiAgICAvLyBib29sZWFuIHNwZWNpZmljc1xuICAgIHByaXZhdGUgX2Jvb2xlYW5Bc0ljb24gPSBmYWxzZTtcbiAgICBwcml2YXRlIF9ib29sZWFuWWVzPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2Jvb2xlYW5Obz86IHN0cmluZztcblxuICAgIC8vIG1vZGVsIHNwZWNpZmljc1xuICAgIHByaXZhdGUgX29iamVjdE1vZGVsVHlwZT86IENsYXNzVHlwZTx1bmtub3duPjtcbiAgICBwcml2YXRlIF9vYmplY3RUaXRsZVByb3BlcnR5Pzogc3RyaW5nO1xuXG4gICAgLy8gY3VycmVuY3kgc3BlY2lmaWNzXG4gICAgcHJpdmF0ZSBfY3VycmVuY3lDb2RlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2N1cnJlbmN5RnJvbVByb3BlcnR5Pzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2N1cnJlbmN5RGlzcGxheT86ICdzeW1ib2wnIHwgJ2NvZGUnIHwgJ25hbWUnO1xuXG4gICAgLy8gY3VzdG9tIHNwZWNpZmljc1xuICAgIHByaXZhdGUgX2N1c3RvbUNvbXBvbmVudFR5cGU/OiBUeXBlPElDb2x1bW5WYWx1ZUNvbXBvbmVudDxUVD4+O1xuXG4gICAgLy8gaGVscGVyc1xuICAgIHByaXZhdGUgX2hhc0NvcHlUb0NsaXBib2FyZCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IodGFibGU6IFRhYmxlRGVzY3JpcHRvcjxUVD4sIHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdGFibGUgPSB0YWJsZTtcbiAgICAgICAgdGhpcy5fcHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbHVtblR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2x1bW5UeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aXRsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGpzb25QYXRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fanNvblBhdGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1NvcnRFbmFibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTb3J0RW5hYmxlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZpbHRlckRlc2NyaXB0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGlzcGxheUZvcm1hdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlGb3JtYXQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0YWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhlYWRlckNsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hlYWRlckNsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHdpZHRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fd2lkdGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtaW5XaWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21pbldpZHRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbWF4V2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXhXaWR0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVudW1UeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW51bVR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlbnVtVGl0bGVQYXRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW51bVRpdGxlUGF0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVudW1OYW1lQXNWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VudW1OYW1lQXNWYWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGJvb2xlYW5Bc0ljb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ib29sZWFuQXNJY29uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYm9vbGVhblllcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Jvb2xlYW5ZZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBib29sZWFuTm8oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ib29sZWFuTm87XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvYmplY3RNb2RlbFR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vYmplY3RNb2RlbFR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvYmplY3RUaXRsZVByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0VGl0bGVQcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1c3RvbUNvbXBvbmVudFR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXN0b21Db21wb25lbnRUeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VycmVuY3lDb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVuY3lDb2RlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VycmVuY3lEaXNwbGF5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVuY3lEaXNwbGF5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VycmVuY3lGcm9tUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW5jeUZyb21Qcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0NvcHlUb0NsaXBib2FyZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0NvcHlUb0NsaXBib2FyZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNUeXBlKHR5cGU6IENvbHVtblR5cGVFbnVtID0gQ29sdW1uVHlwZUVudW0uU3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbHVtblR5cGUgPSB0eXBlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNOdW1iZXIoZGlzcGxheUZvcm1hdCA9ICcxLjAtMCcsIGxvY2FsZT86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uTnVtYmVyO1xuICAgICAgICB0aGlzLl9kaXNwbGF5Rm9ybWF0ID0gZGlzcGxheUZvcm1hdDtcbiAgICAgICAgdGhpcy5fbG9jYWxlID0gbG9jYWxlID8/IHRoaXMuX2xvY2FsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQ3VycmVuY3koY3VycmVuY3lDb2RlPzogc3RyaW5nLCBjdXJyZW5jeUZyb21Qcm9wZXJ0eT86IHN0cmluZywgY3VycmVuY3lEaXNwbGF5PzogJ3N5bWJvbCcgfCAnY29kZScgfCAnbmFtZScsIGRpc3BsYXlGb3JtYXQgPSAnMS4yLTInLCBsb2NhbGU/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVHlwZSA9IENvbHVtblR5cGVFbnVtLkN1cnJlbmN5O1xuICAgICAgICB0aGlzLl9jdXJyZW5jeUNvZGUgPSBjdXJyZW5jeUNvZGUgPz8gdGhpcy5fY3VycmVuY3lDb2RlO1xuICAgICAgICB0aGlzLl9jdXJyZW5jeUZyb21Qcm9wZXJ0eSA9IGN1cnJlbmN5RnJvbVByb3BlcnR5ID8/IHRoaXMuX2N1cnJlbmN5RnJvbVByb3BlcnR5O1xuICAgICAgICB0aGlzLl9jdXJyZW5jeURpc3BsYXkgPSBjdXJyZW5jeURpc3BsYXkgPz8gdGhpcy5fY3VycmVuY3lEaXNwbGF5O1xuICAgICAgICB0aGlzLl9kaXNwbGF5Rm9ybWF0ID0gZGlzcGxheUZvcm1hdCA/PyBkaXNwbGF5Rm9ybWF0O1xuICAgICAgICB0aGlzLl9sb2NhbGUgPSBsb2NhbGUgPz8gdGhpcy5fbG9jYWxlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNEYXRlKGRpc3BsYXlGb3JtYXQgPSAnZGQuTU0ueXl5eScpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVHlwZSA9IENvbHVtblR5cGVFbnVtLkRhdGU7XG4gICAgICAgIHRoaXMuX2Rpc3BsYXlGb3JtYXQgPSBkaXNwbGF5Rm9ybWF0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNCb29sZWFuKHllcz86IHN0cmluZywgbm8/OiBzdHJpbmcsIGFzSWNvbiA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbHVtblR5cGUgPSBDb2x1bW5UeXBlRW51bS5Cb29sZWFuO1xuICAgICAgICB0aGlzLl9ib29sZWFuQXNJY29uID0gYXNJY29uO1xuICAgICAgICB0aGlzLl9ib29sZWFuWWVzID0geWVzO1xuICAgICAgICB0aGlzLl9ib29sZWFuTm8gPSBubztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzRW51bShlbnVtVHlwZTogRW51bVR5cGUsIG5hbWVBc1ZhbHVlID0gZmFsc2UsIHRpdGxlUGF0aD86IHN0cmluZyB8IG51bGwpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVHlwZSA9IENvbHVtblR5cGVFbnVtLkVudW07XG4gICAgICAgIHRoaXMuX2VudW1UeXBlID0gZW51bVR5cGU7XG4gICAgICAgIHRoaXMuX2VudW1OYW1lQXNWYWx1ZSA9IG5hbWVBc1ZhbHVlO1xuICAgICAgICBpZiAodHlwZW9mIHRpdGxlUGF0aCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRpdGxlUGF0aCA9IFR5cGVVdGlsLmZpbmRFbnVtTmFtZShlbnVtVHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZW51bVRpdGxlUGF0aCA9IHRpdGxlUGF0aDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQ3VzdG9tQ29tcG9uZW50KGN1c3RvbUNvbXBvbmVudFR5cGU6IFR5cGU8SUNvbHVtblZhbHVlQ29tcG9uZW50PFRUPj4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVHlwZSA9IENvbHVtblR5cGVFbnVtLkN1c3RvbTtcbiAgICAgICAgdGhpcy5fY3VzdG9tQ29tcG9uZW50VHlwZSA9IGN1c3RvbUNvbXBvbmVudFR5cGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ2xhc3NOYW1lKGNsYXNzTmFtZT86IHN0cmluZywgaGVhZGVyQ2xhc3NOYW1lPzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NsYXNzTmFtZSA9IGNsYXNzTmFtZSA/PyAnJztcbiAgICAgICAgdGhpcy5faGVhZGVyQ2xhc3NOYW1lID0gaGVhZGVyQ2xhc3NOYW1lID8/ICcnO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFdpZHRoKHdpZHRoPzogbnVtYmVyLCBtaW5XaWR0aD86IG51bWJlciwgbWF4V2lkdGg/OiBudW1iZXIpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fd2lkdGggPSB3aWR0aCA/PyBudWxsO1xuICAgICAgICB0aGlzLl9taW5XaWR0aCA9IG1pbldpZHRoID8/IG51bGw7XG4gICAgICAgIHRoaXMuX21heFdpZHRoID0gbWF4V2lkdGggPz8gbnVsbDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhPYmplY3RQcm9wZXJ0eTxNVD4obW9kZWxUeXBlOiBDbGFzc1R5cGU8TVQ+LCB0aXRsZVByb3BlcnR5Pzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX29iamVjdE1vZGVsVHlwZSA9IG1vZGVsVHlwZTtcbiAgICAgICAgaWYgKCF0aXRsZVByb3BlcnR5KSB7XG4gICAgICAgICAgICB0aGlzLl9vYmplY3RUaXRsZVByb3BlcnR5ID0gTW9kZWxVdGlsLmZpbmRUaXRsZUF0dHJpYnV0ZShtb2RlbFR5cGUpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX29iamVjdFRpdGxlUHJvcGVydHkgPSB0aXRsZVByb3BlcnR5O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGl0bGUodGl0bGU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl90aXRsZSA9IHRpdGxlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEpzb25QYXRoKHBhdGg6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9qc29uUGF0aCA9IHBhdGg7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmlsdGVyKGZvcmNlU2ltcGxlID0gZmFsc2UpOiBGaWx0ZXJEZXNjcmlwdG9yPFQ+IHtcbiAgICAgICAgdGhpcy5fZmlsdGVyRGVzY3JpcHRvciA9IG5ldyBGaWx0ZXJEZXNjcmlwdG9yPGFueT4odGhpcy5fcHJvcGVydHkpO1xuICAgICAgICBsZXQgZmlsdGVyVHlwZTogRmlsdGVyVHlwZUVudW07XG5cbiAgICAgICAgaWYgKCFmb3JjZVNpbXBsZSAmJiB0aGlzLl9vYmplY3RNb2RlbFR5cGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndpdGhGaWx0ZXJMb29rdXAoKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHRoaXMuX2NvbHVtblR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uTnVtYmVyOlxuICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5OdW1iZXI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkJvb2xlYW46XG4gICAgICAgICAgICAgICAgZmlsdGVyVHlwZSA9IEZpbHRlclR5cGVFbnVtLkJvb2xlYW47XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkRhdGU6XG4gICAgICAgICAgICAgICAgZmlsdGVyVHlwZSA9IEZpbHRlclR5cGVFbnVtLkRhdGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkVudW06XG4gICAgICAgICAgICAgICAgaWYgKCFmb3JjZVNpbXBsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53aXRoRmlsdGVyTG9va3VwRW51bSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5TdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uU3RyaW5nOlxuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5DdXN0b206XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5TdHJpbmc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZmlsdGVyRGVzY3JpcHRvci5hc0ZpbHRlclR5cGUoZmlsdGVyVHlwZSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmlsdGVyTG9va3VwKCk6IEZpbHRlckxvb2t1cERlc2NyaXB0b3I8dW5rbm93bj4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJEZXNjcmlwdG9yID0gbmV3IEZpbHRlckxvb2t1cERlc2NyaXB0b3I8dW5rbm93bj4odGhpcy5fcHJvcGVydHksIHRoaXMuX29iamVjdE1vZGVsVHlwZSA/PyBudWxsKTtcbiAgICAgICAgdGhpcy5fZmlsdGVyRGVzY3JpcHRvciA9IGZpbHRlckRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiBmaWx0ZXJEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmlsdGVyTG9va3VwRW51bShvcHRpb25zPzogQXJyYXk8RW51bUNvbnN0YW50VHlwZT4pOiBGaWx0ZXJMb29rdXBFbnVtRGVzY3JpcHRvciB7XG4gICAgICAgIGlmICh0aGlzLl9jb2x1bW5UeXBlICE9PSBDb2x1bW5UeXBlRW51bS5FbnVtIHx8ICF0aGlzLl9lbnVtVHlwZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb2x1bW4gJHt0aGlzLl9wcm9wZXJ0eX0gaXMgbm90IG9mIHR5cGUgZW51bSBvciBlbnVtIHR5cGUgaXMgdW5kZWZpbmVkLmApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpbHRlckRlc2NyaXB0b3IgPSBuZXcgRmlsdGVyTG9va3VwRW51bURlc2NyaXB0b3IodGhpcy5fcHJvcGVydHksIHRoaXMuX2VudW1UeXBlLCBvcHRpb25zLCB0aGlzLl9lbnVtTmFtZUFzVmFsdWUsIHRoaXMuX2VudW1UaXRsZVBhdGgpO1xuICAgICAgICB0aGlzLl9maWx0ZXJEZXNjcmlwdG9yID0gZmlsdGVyRGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIGZpbHRlckRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTb3J0KGlzRW5hYmxlZCA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXNTb3J0RW5hYmxlZCA9IGlzRW5hYmxlZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEZWZhdWx0U29ydChhc2MgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhEZWZhdWx0U29ydCh0aGlzLl9wcm9wZXJ0eSwgYXNjKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDb3B5VG9DbGlwYm9hcmQoaGFzQ29weVRvQ2xpYm9hcmQgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hhc0NvcHlUb0NsaXBib2FyZCA9IGhhc0NvcHlUb0NsaWJvYXJkO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBDb2x1bW5EZXNjcmlwdG9yPFQsIFRUPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgQ29sdW1uRGVzY3JpcHRvcjxULCBUVD4odGhpcy5fdGFibGUsIHRoaXMuX3Byb3BlcnR5KTtcbiAgICAgICAgZGVzY3JpcHRvci5fanNvblBhdGggPSB0aGlzLl9qc29uUGF0aDtcbiAgICAgICAgZGVzY3JpcHRvci5fdGl0bGUgPSB0aGlzLl90aXRsZTtcbiAgICAgICAgZGVzY3JpcHRvci5faXNTb3J0RW5hYmxlZCA9IHRoaXMuX2lzU29ydEVuYWJsZWQ7XG4gICAgICAgIGRlc2NyaXB0b3IuX2NvbHVtblR5cGUgPSB0aGlzLl9jb2x1bW5UeXBlO1xuICAgICAgICBkZXNjcmlwdG9yLl9maWx0ZXJEZXNjcmlwdG9yID0gdGhpcy5fZmlsdGVyRGVzY3JpcHRvcj8uY29weSgpO1xuICAgICAgICBkZXNjcmlwdG9yLl9lbnVtVHlwZSA9IHRoaXMuX2VudW1UeXBlO1xuICAgICAgICBkZXNjcmlwdG9yLl9lbnVtVGl0bGVQYXRoID0gdGhpcy5fZW51bVRpdGxlUGF0aDtcbiAgICAgICAgZGVzY3JpcHRvci5fZW51bU5hbWVBc1ZhbHVlID0gdGhpcy5fZW51bU5hbWVBc1ZhbHVlO1xuICAgICAgICBkZXNjcmlwdG9yLl9ib29sZWFuQXNJY29uID0gdGhpcy5fYm9vbGVhbkFzSWNvbjtcbiAgICAgICAgZGVzY3JpcHRvci5fYm9vbGVhblllcyA9IHRoaXMuX2Jvb2xlYW5ZZXM7XG4gICAgICAgIGRlc2NyaXB0b3IuX2Jvb2xlYW5ObyA9IHRoaXMuX2Jvb2xlYW5ObztcbiAgICAgICAgZGVzY3JpcHRvci5fb2JqZWN0TW9kZWxUeXBlID0gdGhpcy5fb2JqZWN0TW9kZWxUeXBlO1xuICAgICAgICBkZXNjcmlwdG9yLl9vYmplY3RUaXRsZVByb3BlcnR5ID0gdGhpcy5fb2JqZWN0VGl0bGVQcm9wZXJ0eTtcbiAgICAgICAgZGVzY3JpcHRvci5fbG9jYWxlID0gdGhpcy5fbG9jYWxlO1xuICAgICAgICBkZXNjcmlwdG9yLl9jdXJyZW5jeUNvZGUgPSB0aGlzLl9jdXJyZW5jeUNvZGU7XG4gICAgICAgIGRlc2NyaXB0b3IuX2N1cnJlbmN5RGlzcGxheSA9IHRoaXMuX2N1cnJlbmN5RGlzcGxheTtcbiAgICAgICAgZGVzY3JpcHRvci5fY3VycmVuY3lGcm9tUHJvcGVydHkgPSB0aGlzLl9jdXJyZW5jeUZyb21Qcm9wZXJ0eTtcbiAgICAgICAgZGVzY3JpcHRvci5fZGlzcGxheUZvcm1hdCA9IHRoaXMuX2Rpc3BsYXlGb3JtYXQ7XG4gICAgICAgIGRlc2NyaXB0b3IuX2hlYWRlckNsYXNzTmFtZSA9IHRoaXMuX2hlYWRlckNsYXNzTmFtZTtcbiAgICAgICAgZGVzY3JpcHRvci5fY2xhc3NOYW1lID0gdGhpcy5fY2xhc3NOYW1lO1xuICAgICAgICBkZXNjcmlwdG9yLl93aWR0aCA9IHRoaXMuX3dpZHRoO1xuICAgICAgICBkZXNjcmlwdG9yLl9taW5XaWR0aCA9IHRoaXMuX21pbldpZHRoO1xuICAgICAgICBkZXNjcmlwdG9yLl9tYXhXaWR0aCA9IHRoaXMuX21heFdpZHRoO1xuICAgICAgICBkZXNjcmlwdG9yLl9oYXNDb3B5VG9DbGlwYm9hcmQgPSB0aGlzLl9oYXNDb3B5VG9DbGlwYm9hcmQ7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cbn1cbiJdfQ==