@mediusinc/mng-commons 4.1.0 → 5.0.0-rc.0-c31d5206

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 (251) hide show
  1. package/assets/i18n/en.json +13 -66
  2. package/assets/i18n/sl.json +12 -67
  3. package/data-api/README.md +3 -0
  4. package/data-api/class-dto/README.md +3 -0
  5. package/data-api/class-dto/helpers/tableview-crud-create.d.ts +40 -0
  6. package/data-api/class-dto/index.d.ts +7 -0
  7. package/data-api/class-dto/models/query-result.model.d.ts +13 -0
  8. package/data-api/class-dto/obsolete/README.md +3 -0
  9. package/data-api/class-dto/obsolete/helpers/query-param-convert.d.ts +23 -0
  10. package/data-api/class-dto/obsolete/helpers/tableview-crud-create.d.ts +22 -0
  11. package/data-api/class-dto/obsolete/index.d.ts +14 -0
  12. package/data-api/class-dto/obsolete/models/builders/query-param.builder.d.ts +36 -0
  13. package/{lib/api → data-api/class-dto/obsolete}/models/filter-param.model.d.ts +1 -1
  14. package/{lib/api → data-api/class-dto/obsolete}/models/query-param.model.d.ts +1 -1
  15. package/{lib/api → data-api/class-dto/obsolete}/models/query-result.model.d.ts +1 -1
  16. package/data-api/class-dto/obsolete/provide.d.ts +9 -0
  17. package/data-api/class-dto/obsolete/services/api.abstract.service.d.ts +36 -0
  18. package/{lib/api → data-api/class-dto/obsolete}/services/crud-api.abstract.service.d.ts +20 -5
  19. package/data-api/class-dto/obsolete/services/get-all-api.abstract.service.d.ts +30 -0
  20. package/data-api/class-dto/obsolete/tableview/tableview-crud.data-provider.d.ts +28 -0
  21. package/data-api/class-dto/obsolete/utils/query-param-map.util.d.ts +22 -0
  22. package/{lib/api/utils/object-serializer.util.d.ts → data-api/class-dto/serder/object-serializer.d.ts} +1 -1
  23. package/{lib/api → data-api/class-dto}/services/api.abstract.service.d.ts +2 -4
  24. package/data-api/class-dto/services/crud-api.abstract.service.d.ts +25 -0
  25. package/data-api/class-dto/services/get-all-api.abstract.service.d.ts +14 -0
  26. package/data-api/class-dto/tableview/tableview-crud.data-provider.d.ts +17 -0
  27. package/data-api/helpers/get-all-params.d.ts +69 -0
  28. package/data-api/helpers/tableview-get-all-params-create.d.ts +14 -0
  29. package/data-api/index.d.ts +5 -0
  30. package/data-api/models/request-params.model.d.ts +61 -0
  31. package/data-api/rxjs/map-to-data-list.operator.d.ts +9 -0
  32. package/data-api/types/extract-get-all-params.type.d.ts +14 -0
  33. package/esm2022/data-api/class-dto/helpers/tableview-crud-create.mjs +40 -0
  34. package/esm2022/data-api/class-dto/index.mjs +13 -0
  35. package/esm2022/data-api/class-dto/mediusinc-mng-commons-data-api-class-dto.mjs +5 -0
  36. package/esm2022/data-api/class-dto/models/query-result.model.mjs +24 -0
  37. package/esm2022/data-api/class-dto/obsolete/helpers/query-param-convert.mjs +103 -0
  38. package/esm2022/data-api/class-dto/obsolete/helpers/tableview-crud-create.mjs +21 -0
  39. package/esm2022/data-api/class-dto/obsolete/index.mjs +21 -0
  40. package/esm2022/data-api/class-dto/obsolete/mediusinc-mng-commons-data-api-class-dto-obsolete.mjs +5 -0
  41. package/esm2022/data-api/class-dto/obsolete/models/builders/query-param.builder.mjs +83 -0
  42. package/esm2022/data-api/class-dto/obsolete/models/filter-match-type.model.mjs +27 -0
  43. package/esm2022/data-api/class-dto/obsolete/models/filter-param.model.mjs +33 -0
  44. package/esm2022/data-api/class-dto/obsolete/models/query-mode.model.mjs +18 -0
  45. package/esm2022/data-api/class-dto/obsolete/models/query-param.model.mjs +68 -0
  46. package/esm2022/data-api/class-dto/obsolete/models/query-result.model.mjs +24 -0
  47. package/esm2022/data-api/class-dto/obsolete/provide.mjs +40 -0
  48. package/esm2022/data-api/class-dto/obsolete/services/api.abstract.service.mjs +70 -0
  49. package/esm2022/data-api/class-dto/obsolete/services/crud-api.abstract.service.mjs +83 -0
  50. package/esm2022/data-api/class-dto/obsolete/services/get-all-api.abstract.service.mjs +38 -0
  51. package/esm2022/data-api/class-dto/obsolete/tableview/tableview-crud.data-provider.mjs +51 -0
  52. package/esm2022/data-api/class-dto/obsolete/utils/query-param-map.util.mjs +57 -0
  53. package/esm2022/data-api/class-dto/serder/object-serializer.mjs +184 -0
  54. package/esm2022/data-api/class-dto/services/api.abstract.service.mjs +55 -0
  55. package/esm2022/data-api/class-dto/services/crud-api.abstract.service.mjs +82 -0
  56. package/esm2022/data-api/class-dto/services/get-all-api.abstract.service.mjs +49 -0
  57. package/esm2022/data-api/class-dto/tableview/tableview-crud.data-provider.mjs +49 -0
  58. package/esm2022/data-api/helpers/get-all-params.mjs +180 -0
  59. package/esm2022/data-api/helpers/tableview-get-all-params-create.mjs +18 -0
  60. package/esm2022/data-api/index.mjs +10 -0
  61. package/esm2022/data-api/mediusinc-mng-commons-data-api.mjs +5 -0
  62. package/esm2022/data-api/models/request-params.model.mjs +2 -0
  63. package/esm2022/data-api/rxjs/map-to-data-list.operator.mjs +19 -0
  64. package/esm2022/data-api/types/extract-get-all-params.type.mjs +2 -0
  65. package/esm2022/index.mjs +3 -6
  66. package/esm2022/lib/components/action/action.component.mjs +4 -5
  67. package/esm2022/lib/components/action/editor/injector-context/action-editor-injector-context.component.mjs +2 -2
  68. package/esm2022/lib/components/action/models/action-execution.model.mjs +5 -4
  69. package/esm2022/lib/components/action/route/action-route.component.mjs +1 -2
  70. package/esm2022/lib/components/action/table/action-table.component.mjs +4 -6
  71. package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +29 -17
  72. package/esm2022/lib/components/form/dropdown/dropdown.component.mjs +3 -7
  73. package/esm2022/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +20 -18
  74. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +2 -2
  75. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +23 -12
  76. package/esm2022/lib/components/table/column-filter-full/column-filter-full.component.mjs +162 -33
  77. package/esm2022/lib/components/table/column-value/column-value.component.mjs +3 -3
  78. package/esm2022/lib/components/table/models/table.event.mjs +1 -1
  79. package/esm2022/lib/components/table/models/table.interface.mjs +1 -1
  80. package/esm2022/lib/components/table/table-column-filter-class/table-column-filter-class.pipe.mjs +4 -4
  81. package/esm2022/lib/components/table/table.component.mjs +117 -191
  82. package/esm2022/lib/components/tableview/actions/tableview-default-actions.mjs +215 -0
  83. package/esm2022/lib/components/tableview/builders/tableview-builder.mjs +162 -0
  84. package/esm2022/lib/components/tableview/helpers/tableview-create.mjs +24 -0
  85. package/esm2022/lib/components/tableview/index.mjs +5 -2
  86. package/esm2022/lib/components/tableview/models/tableview.model.mjs +2 -0
  87. package/esm2022/lib/components/tableview/route/tableview-route.component.mjs +7 -39
  88. package/esm2022/lib/components/tableview/tableview.component.mjs +4 -4
  89. package/esm2022/lib/data-providers/editor.data-provider.mjs +13 -13
  90. package/esm2022/lib/data-providers/index.mjs +1 -2
  91. package/esm2022/lib/data-providers/lookup.data-provider.mjs +1 -1
  92. package/esm2022/lib/data-providers/table.data-provider.mjs +4 -5
  93. package/esm2022/lib/data-providers/tableview.data-provider.mjs +1 -1
  94. package/esm2022/lib/descriptors/action/action-confirmation.descriptor.mjs +1 -1
  95. package/esm2022/lib/descriptors/action/action-editor.descriptor.mjs +10 -6
  96. package/esm2022/lib/descriptors/action/action.descriptor.mjs +2 -3
  97. package/esm2022/lib/descriptors/editor/editor.descriptor.mjs +13 -17
  98. package/esm2022/lib/descriptors/editor/field-lookup.descriptor.mjs +12 -17
  99. package/esm2022/lib/descriptors/editor/field.descriptor.mjs +5 -8
  100. package/esm2022/lib/descriptors/editor/internal/editor-fields.model.mjs +1 -1
  101. package/esm2022/lib/descriptors/filter/filter-lookup.descriptor.mjs +28 -52
  102. package/esm2022/lib/descriptors/filter/filter.descriptor.mjs +40 -23
  103. package/esm2022/lib/descriptors/model/enum.descriptor.mjs +31 -0
  104. package/esm2022/lib/descriptors/model/index.mjs +3 -1
  105. package/esm2022/lib/descriptors/model/model.descriptor.mjs +10 -1
  106. package/esm2022/lib/descriptors/model/type.descriptor.mjs +11 -0
  107. package/esm2022/lib/descriptors/table/column.descriptor.mjs +12 -107
  108. package/esm2022/lib/descriptors/table/index.mjs +2 -1
  109. package/esm2022/lib/descriptors/table/internal/table-columns.model.mjs +1 -1
  110. package/esm2022/lib/descriptors/table/internal/table.model.mjs +1 -1
  111. package/esm2022/lib/descriptors/table/sort.descriptor.mjs +45 -0
  112. package/esm2022/lib/descriptors/table/table.descriptor.mjs +208 -57
  113. package/esm2022/lib/descriptors/tableview/internal/tableview.model.mjs +1 -1
  114. package/esm2022/lib/descriptors/tableview/tableview.descriptor.mjs +114 -17
  115. package/esm2022/lib/descriptors/types/filter.type.mjs +1 -19
  116. package/esm2022/lib/descriptors/types/table.type.mjs +1 -5
  117. package/esm2022/lib/error/error.handler.mjs +1 -1
  118. package/esm2022/lib/helpers/data-provider-executors.mjs +80 -0
  119. package/esm2022/lib/models/data-list.model.mjs +2 -0
  120. package/esm2022/lib/models/filter-match.model.mjs +105 -0
  121. package/esm2022/lib/models/index.mjs +3 -1
  122. package/esm2022/lib/models/view-container.model.mjs +1 -1
  123. package/esm2022/lib/pipes/enum.pipe.mjs +6 -6
  124. package/esm2022/lib/provide.mjs +101 -0
  125. package/esm2022/lib/registry/type.registry.mjs +3 -10
  126. package/esm2022/lib/router/models/router.model.mjs +1 -1
  127. package/esm2022/lib/router/tableview-route-builder.mjs +1 -1
  128. package/esm2022/lib/services/action/action-executor.service.mjs +54 -32
  129. package/esm2022/lib/services/commons.service.mjs +1 -37
  130. package/esm2022/lib/services/data-provider-executor.service.mjs +52 -0
  131. package/esm2022/lib/services/index.mjs +2 -1
  132. package/esm2022/lib/services/view/view-container.service.mjs +1 -1
  133. package/esm2022/lib/types/action-descriptor.types.mjs +1 -1
  134. package/esm2022/lib/types/type.model.mjs +1 -1
  135. package/esm2022/lib/utils/data-list-params.util.mjs +416 -0
  136. package/esm2022/lib/utils/date.util.mjs +8 -2
  137. package/esm2022/lib/utils/enum.util.mjs +2 -1
  138. package/esm2022/lib/utils/error.util.mjs +3 -3
  139. package/esm2022/lib/utils/export.util.mjs +1 -1
  140. package/esm2022/lib/utils/index.mjs +2 -2
  141. package/esm2022/lib/utils/route.util.mjs +1 -2
  142. package/fesm2022/mediusinc-mng-commons-data-api-class-dto-obsolete.mjs +698 -0
  143. package/fesm2022/mediusinc-mng-commons-data-api-class-dto-obsolete.mjs.map +1 -0
  144. package/fesm2022/mediusinc-mng-commons-data-api-class-dto.mjs +480 -0
  145. package/fesm2022/mediusinc-mng-commons-data-api-class-dto.mjs.map +1 -0
  146. package/fesm2022/mediusinc-mng-commons-data-api.mjs +224 -0
  147. package/fesm2022/mediusinc-mng-commons-data-api.mjs.map +1 -0
  148. package/fesm2022/mediusinc-mng-commons.mjs +2634 -2549
  149. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
  150. package/index.d.ts +2 -4
  151. package/lib/components/action/action.component.d.ts +13 -13
  152. package/lib/components/action/models/action-execution.model.d.ts +47 -46
  153. package/lib/components/action/table/action-table.component.d.ts +15 -16
  154. package/lib/components/form/autocomplete/autocomplete.component.d.ts +1 -1
  155. package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +3 -5
  156. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +10 -10
  157. package/lib/components/table/column-filter-full/column-filter-full.component.d.ts +25 -9
  158. package/lib/components/table/models/table.event.d.ts +2 -2
  159. package/lib/components/table/models/table.interface.d.ts +4 -1
  160. package/lib/components/table/table-column-filter-class/table-column-filter-class.pipe.d.ts +2 -2
  161. package/lib/components/table/table.component.d.ts +19 -18
  162. package/lib/components/tableview/actions/tableview-default-actions.d.ts +36 -0
  163. package/lib/components/tableview/builders/tableview-builder.d.ts +115 -0
  164. package/lib/components/tableview/helpers/tableview-create.d.ts +16 -0
  165. package/lib/components/tableview/index.d.ts +4 -1
  166. package/lib/components/tableview/models/tableview.model.d.ts +8 -0
  167. package/lib/components/tableview/route/tableview-route.component.d.ts +5 -14
  168. package/lib/components/tableview/tableview.component.d.ts +12 -12
  169. package/lib/data-providers/editor.data-provider.d.ts +12 -12
  170. package/lib/data-providers/index.d.ts +0 -1
  171. package/lib/data-providers/lookup.data-provider.d.ts +2 -2
  172. package/lib/data-providers/table.data-provider.d.ts +25 -25
  173. package/lib/data-providers/tableview.data-provider.d.ts +18 -18
  174. package/lib/descriptors/action/action-confirmation.descriptor.d.ts +1 -1
  175. package/lib/descriptors/action/action-editor.descriptor.d.ts +20 -17
  176. package/lib/descriptors/editor/editor.descriptor.d.ts +8 -12
  177. package/lib/descriptors/editor/field-base.descriptor.d.ts +3 -3
  178. package/lib/descriptors/editor/field-lookup.descriptor.d.ts +11 -11
  179. package/lib/descriptors/editor/field-many.descriptor.d.ts +4 -4
  180. package/lib/descriptors/editor/field.descriptor.d.ts +2 -2
  181. package/lib/descriptors/editor/internal/editor-fields.model.d.ts +6 -5
  182. package/lib/descriptors/filter/filter-lookup.descriptor.d.ts +15 -14
  183. package/lib/descriptors/filter/filter.descriptor.d.ts +17 -18
  184. package/lib/descriptors/model/enum.descriptor.d.ts +14 -0
  185. package/lib/descriptors/model/index.d.ts +2 -0
  186. package/lib/descriptors/model/model.descriptor.d.ts +9 -0
  187. package/lib/descriptors/model/type.descriptor.d.ts +5 -0
  188. package/lib/descriptors/table/column.descriptor.d.ts +10 -24
  189. package/lib/descriptors/table/index.d.ts +1 -0
  190. package/lib/descriptors/table/internal/table-columns.model.d.ts +36 -5
  191. package/lib/descriptors/table/internal/table.model.d.ts +5 -2
  192. package/lib/descriptors/table/sort.descriptor.d.ts +17 -0
  193. package/lib/descriptors/table/table.descriptor.d.ts +57 -33
  194. package/lib/descriptors/tableview/internal/tableview.model.d.ts +3 -3
  195. package/lib/descriptors/tableview/tableview.descriptor.d.ts +49 -19
  196. package/lib/descriptors/types/filter.type.d.ts +0 -17
  197. package/lib/descriptors/types/table.type.d.ts +0 -3
  198. package/lib/error/error.handler.d.ts +1 -1
  199. package/lib/helpers/data-provider-executors.d.ts +19 -0
  200. package/lib/models/data-list.model.d.ts +27 -0
  201. package/lib/models/filter-match.model.d.ts +36 -0
  202. package/lib/models/index.d.ts +2 -0
  203. package/lib/models/view-container.model.d.ts +2 -2
  204. package/lib/pipes/enum.pipe.d.ts +2 -2
  205. package/lib/provide.d.ts +10 -0
  206. package/lib/router/models/router.model.d.ts +1 -1
  207. package/lib/router/tableview-route-builder.d.ts +1 -2
  208. package/lib/services/action/action-executor.service.d.ts +18 -16
  209. package/lib/services/data-provider-executor.service.d.ts +60 -0
  210. package/lib/services/index.d.ts +1 -0
  211. package/lib/services/view/view-container.service.d.ts +11 -11
  212. package/lib/types/action-descriptor.types.d.ts +2 -2
  213. package/lib/types/type.model.d.ts +1 -3
  214. package/lib/utils/data-list-params.util.d.ts +84 -0
  215. package/lib/utils/date.util.d.ts +3 -1
  216. package/lib/utils/enum.util.d.ts +4 -3
  217. package/lib/utils/export.util.d.ts +1 -1
  218. package/lib/utils/index.d.ts +1 -1
  219. package/openapi/angular/modelEnum.mustache +0 -3
  220. package/package.json +20 -2
  221. package/esm2022/lib/api/models/builders/query-param.builder.mjs +0 -59
  222. package/esm2022/lib/api/models/filter-match-type.model.mjs +0 -27
  223. package/esm2022/lib/api/models/filter-param.model.mjs +0 -33
  224. package/esm2022/lib/api/models/index.mjs +0 -7
  225. package/esm2022/lib/api/models/query-mode.model.mjs +0 -18
  226. package/esm2022/lib/api/models/query-param.model.mjs +0 -68
  227. package/esm2022/lib/api/models/query-result.model.mjs +0 -35
  228. package/esm2022/lib/api/services/api.abstract.service.mjs +0 -58
  229. package/esm2022/lib/api/services/crud-api.abstract.service.mjs +0 -75
  230. package/esm2022/lib/api/services/get-all-api.abstract.service.mjs +0 -30
  231. package/esm2022/lib/api/services/index.mjs +0 -4
  232. package/esm2022/lib/api/utils/index.mjs +0 -3
  233. package/esm2022/lib/api/utils/medius-rest.util.mjs +0 -293
  234. package/esm2022/lib/api/utils/object-serializer.util.mjs +0 -185
  235. package/esm2022/lib/components/tableview/route/tableview-route.abstract.component.mjs +0 -158
  236. package/esm2022/lib/data-providers/tableview-crud.data-provider.mjs +0 -32
  237. package/esm2022/lib/provide-commons.mjs +0 -88
  238. package/esm2022/lib/utils/action-data-provider.util.mjs +0 -171
  239. package/lib/api/models/builders/query-param.builder.d.ts +0 -13
  240. package/lib/api/models/index.d.ts +0 -6
  241. package/lib/api/services/get-all-api.abstract.service.d.ts +0 -14
  242. package/lib/api/services/index.d.ts +0 -3
  243. package/lib/api/utils/index.d.ts +0 -2
  244. package/lib/api/utils/medius-rest.util.d.ts +0 -32
  245. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +0 -35
  246. package/lib/data-providers/tableview-crud.data-provider.d.ts +0 -12
  247. package/lib/provide-commons.d.ts +0 -3
  248. package/lib/utils/action-data-provider.util.d.ts +0 -35
  249. package/templates/tableview-route.component.html +0 -5
  250. /package/{lib/api → data-api/class-dto/obsolete}/models/filter-match-type.model.d.ts +0 -0
  251. /package/{lib/api → data-api/class-dto/obsolete}/models/query-mode.model.d.ts +0 -0
@@ -1,14 +1,9 @@
1
- import { MngInternalError } from '../../models';
2
- import { DecoratorMetadataUtil } from '../../utils';
3
- import { DateUtil } from '../../utils/date.util';
4
1
  import { TableviewUtil } from '../../utils/tableview.util';
5
- import { FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor } from '../filter';
6
- import { ColumnDisplayTypeEnum, ColumnTypeEnum, FilterTypeEnum } from '../types';
2
+ import { ColumnDisplayTypeEnum, ColumnTypeEnum } from '../types';
7
3
  export class ColumnDescriptor {
8
4
  constructor(table, property) {
9
5
  this._columnType = ColumnTypeEnum.String;
10
6
  this._columnDisplayType = ColumnDisplayTypeEnum.String;
11
- this._isSortEnabled = false;
12
7
  this._isMultiline = false;
13
8
  this._hasValueAsTooltip = false;
14
9
  this._isReorderable = false;
@@ -20,7 +15,6 @@ export class ColumnDescriptor {
20
15
  this._width = null;
21
16
  this._minWidth = null;
22
17
  this._maxWidth = null;
23
- this._enumNameAsValue = false;
24
18
  // boolean specifics
25
19
  this._booleanAsIcon = false;
26
20
  // helpers
@@ -39,15 +33,6 @@ export class ColumnDescriptor {
39
33
  get title() {
40
34
  return this._title;
41
35
  }
42
- get isSortEnabled() {
43
- return this._isSortEnabled;
44
- }
45
- get sortProperty() {
46
- return this._sortProperty;
47
- }
48
- get filterDescriptor() {
49
- return this._filterDescriptor;
50
- }
51
36
  get displayFormat() {
52
37
  return this._displayFormat;
53
38
  }
@@ -75,14 +60,8 @@ export class ColumnDescriptor {
75
60
  get maxWidth() {
76
61
  return this._maxWidth;
77
62
  }
78
- get enumType() {
79
- return this._enumType;
80
- }
81
- get enumTitlePath() {
82
- return this._enumTitlePath;
83
- }
84
- get enumNameAsValue() {
85
- return this._enumNameAsValue;
63
+ get enum() {
64
+ return this._enum;
86
65
  }
87
66
  get booleanAsIcon() {
88
67
  return this._booleanAsIcon;
@@ -156,7 +135,7 @@ export class ColumnDescriptor {
156
135
  case ColumnTypeEnum.Date:
157
136
  return this.asDate(...args);
158
137
  case ColumnTypeEnum.Enum:
159
- return this.asEnum(args[0], args[1], args[2]);
138
+ return this.asEnumUnsafe(args[0]);
160
139
  case ColumnTypeEnum.Custom:
161
140
  return this.asCustomComponent(args[0]);
162
141
  case ColumnTypeEnum.String:
@@ -207,15 +186,10 @@ export class ColumnDescriptor {
207
186
  this._booleanNo = no;
208
187
  return this;
209
188
  }
210
- asEnum(enumType, nameAsValue = false, titlePath) {
189
+ asEnumUnsafe(enumDesc) {
211
190
  this._columnType = ColumnTypeEnum.Enum;
212
191
  this._columnDisplayType = ColumnDisplayTypeEnum.Enum;
213
- this._enumType = enumType;
214
- this._enumNameAsValue = nameAsValue;
215
- if (typeof titlePath === 'undefined') {
216
- titlePath = DecoratorMetadataUtil.findEnumName(enumType);
217
- }
218
- this._enumTitlePath = titlePath;
192
+ this._enum = enumDesc;
219
193
  return this;
220
194
  }
221
195
  asCustomComponent(customComponentType) {
@@ -244,75 +218,11 @@ export class ColumnDescriptor {
244
218
  this._title = title;
245
219
  return this;
246
220
  }
247
- withFilter(forceSimple = false) {
248
- this._filterDescriptor = new FilterDescriptor(this._property);
249
- let filterType;
250
- switch (this._columnType) {
251
- case ColumnTypeEnum.Number:
252
- filterType = FilterTypeEnum.Number;
253
- break;
254
- case ColumnTypeEnum.Boolean:
255
- filterType = FilterTypeEnum.Boolean;
256
- break;
257
- case ColumnTypeEnum.Date:
258
- filterType = FilterTypeEnum.Date;
259
- break;
260
- case ColumnTypeEnum.Enum:
261
- if (!forceSimple) {
262
- return this.withFilterLookupEnum();
263
- }
264
- else {
265
- filterType = FilterTypeEnum.String;
266
- break;
267
- }
268
- case ColumnTypeEnum.String:
269
- case ColumnTypeEnum.Custom:
270
- default:
271
- filterType = FilterTypeEnum.String;
272
- break;
273
- }
274
- this._filterDescriptor.asFilterType(filterType);
275
- if (filterType === FilterTypeEnum.Number) {
276
- const displayFormatFractions = this._displayFormat?.split('.')?.[1]?.split('-');
277
- if (displayFormatFractions && displayFormatFractions.length > 2) {
278
- this._filterDescriptor.withNumberFractions(parseInt(displayFormatFractions[0]), parseInt(displayFormatFractions[1]));
279
- }
280
- }
281
- else if (filterType === FilterTypeEnum.Date) {
282
- const displayFormat = this._displayFormat;
283
- if (displayFormat) {
284
- const filterDisplayFormat = DateUtil.fromPrimeToAngularDateFormat(displayFormat);
285
- this._filterDescriptor.withDateFormat(filterDisplayFormat);
286
- }
287
- }
288
- return this._filterDescriptor;
289
- }
290
- withFilterLookup(provider, optionsValueProperty) {
291
- return this.withFilterLookupUnsafe(provider, optionsValueProperty);
292
- }
293
- withFilterLookupUnsafe(provider, optionsValueProperty) {
294
- const filterDescriptor = new FilterLookupDescriptor(this._property, {
295
- dataProvider: provider,
296
- optionsValueProperty: optionsValueProperty
297
- });
298
- this._filterDescriptor = filterDescriptor;
299
- return filterDescriptor;
300
- }
301
- withFilterLookupEnum(options) {
302
- if (this._columnType !== ColumnTypeEnum.Enum || !this._enumType) {
303
- throw new MngInternalError(`Column ${this._property} is not of type enum or enum type is undefined.`, { name: 'ColumnDescriptorError' });
304
- }
305
- const filterDescriptor = new FilterLookupEnumDescriptor(this._property, this._enumType, options, this._enumNameAsValue, this._enumTitlePath);
306
- this._filterDescriptor = filterDescriptor;
307
- return filterDescriptor;
308
- }
309
- withSort(isEnabled = true, sortProperty) {
310
- this._isSortEnabled = isEnabled;
311
- this._sortProperty = sortProperty;
312
- return this;
221
+ withFilterUnsafe(forceSimple = false) {
222
+ return this._table.addFilterFromColumnDescriptorUnsafe(this, forceSimple);
313
223
  }
314
- withDefaultSort(asc = true) {
315
- this._table.withDefaultSortUnsafe(this._property, asc);
224
+ withSortUnsafe(isDefault = false, ascending) {
225
+ this._table.withSortUnsafe(this.property, isDefault, ascending);
316
226
  return this;
317
227
  }
318
228
  withCopyToClipboard(hasCopyToClipboard = true, clipboardValueGetter) {
@@ -363,14 +273,9 @@ export class ColumnDescriptor {
363
273
  }
364
274
  copyFieldsTo(obj) {
365
275
  obj._title = this._title;
366
- obj._isSortEnabled = this._isSortEnabled;
367
- obj._sortProperty = this._sortProperty;
368
276
  obj._columnType = this._columnType;
369
277
  obj._columnDisplayType = this._columnDisplayType;
370
- obj._filterDescriptor = this._filterDescriptor?.copy();
371
- obj._enumType = this._enumType;
372
- obj._enumTitlePath = this._enumTitlePath;
373
- obj._enumNameAsValue = this._enumNameAsValue;
278
+ obj._enum = this._enum;
374
279
  obj._booleanAsIcon = this._booleanAsIcon;
375
280
  obj._booleanYes = this._booleanYes;
376
281
  obj._booleanNo = this._booleanNo;
@@ -451,4 +356,4 @@ export class ColumnDynamicDescriptor extends ColumnDescriptor {
451
356
  return descriptor;
452
357
  }
453
358
  }
454
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL3RhYmxlL2NvbHVtbi5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBd0IsZ0JBQWdCLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFFckUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ2xELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFDLGdCQUFnQixFQUFFLHNCQUFzQixFQUFFLDBCQUEwQixFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQy9GLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBMkIvRSxNQUFNLE9BQU8sZ0JBQWdCO0lBcUR6QixZQUFZLEtBQTJDLEVBQUUsUUFBa0I7UUFsRG5FLGdCQUFXLEdBQW1CLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFDcEQsdUJBQWtCLEdBQTBCLHFCQUFxQixDQUFDLE1BQU0sQ0FBQztRQUV6RSxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQU92QixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0IsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUUxQixVQUFVO1FBQ0YscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsV0FBTSxHQUFrQixJQUFJLENBQUM7UUFDN0IsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFDaEMsY0FBUyxHQUFrQixJQUFJLENBQUM7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QyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7O09BRUc7SUFDYSxJQUFJO1FBQ2hCLE1BQU0sVUFBVSxHQUFHLElBQUksdUJBQXVCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixVQUFVLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDaEMsVUFBVSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzFDLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxlQUE4QztRQUNwRSxNQUFNLFVBQVUsR0FBRyxJQUFJLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0lMb29rdXBEYXRhUHJvdmlkZXJ9IGZyb20gJy4uLy4uL2RhdGEtcHJvdmlkZXJzJztcbmltcG9ydCB7SUNvbHVtblZhbHVlQ29tcG9uZW50LCBNbmdJbnRlcm5hbEVycm9yfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtFbnVtQ29uc3RhbnRUeXBlLCBFbnVtVHlwZSwgR2V0dGVyRm4sIE51bGxhYmxlfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge0RlY29yYXRvck1ldGFkYXRhVXRpbH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtEYXRlVXRpbH0gZnJvbSAnLi4vLi4vdXRpbHMvZGF0ZS51dGlsJztcbmltcG9ydCB7VGFibGV2aWV3VXRpbH0gZnJvbSAnLi4vLi4vdXRpbHMvdGFibGV2aWV3LnV0aWwnO1xuaW1wb3J0IHtGaWx0ZXJEZXNjcmlwdG9yLCBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yLCBGaWx0ZXJMb29rdXBFbnVtRGVzY3JpcHRvcn0gZnJvbSAnLi4vZmlsdGVyJztcbmltcG9ydCB7Q29sdW1uRGlzcGxheVR5cGVFbnVtLCBDb2x1bW5UeXBlRW51bSwgRmlsdGVyVHlwZUVudW19IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7SVRhYmxlRGVzY3JpcHRvckludGVybmFsfSBmcm9tICcuL2ludGVybmFsL3RhYmxlLm1vZGVsJztcblxuZXhwb3J0IHR5cGUgQ29sdW1uQ3VycmVuY3lPcHRzVHlwZTxQcm9wZXJ0eSA9IHN0cmluZz4gPSB7XG4gICAgY3VycmVuY3lQcm9wZXJ0eT86IFByb3BlcnR5O1xuICAgIGN1cnJlbmN5Pzogc3RyaW5nO1xuICAgIGN1cnJlbmN5RGlzcGxheT86ICdzeW1ib2wnIHwgJ2NvZGUnIHwgJ25hbWUnO1xufSAmIENvbHVtbk51bWJlckdyb3VwaW5nT3B0c1R5cGUgJlxuICAgIENvbHVtbk51bWJlckZyYWN0aW9uT3B0c1R5cGUgJlxuICAgIENvbHVtbkxvY2FsZU9wdHNUeXBlO1xuXG5leHBvcnQgdHlwZSBDb2x1bW5OdW1iZXJPcHRzVHlwZSA9IENvbHVtbk51bWJlckdyb3VwaW5nT3B0c1R5cGUgJiBDb2x1bW5OdW1iZXJGcmFjdGlvbk9wdHNUeXBlICYgQ29sdW1uTG9jYWxlT3B0c1R5cGU7XG5cbmV4cG9ydCB0eXBlIENvbHVtbk51bWJlckdyb3VwaW5nT3B0c1R5cGUgPSB7XG4gICAgZ3JvdXBTZXBhcmF0b3I/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQ29sdW1uTnVtYmVyRnJhY3Rpb25PcHRzVHlwZSA9IHtcbiAgICBtaW5JbnRlZ2VyRGlnaXRzPzogbnVtYmVyO1xuICAgIG1pbkZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xuICAgIG1heEZyYWN0aW9uRGlnaXRzPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgQ29sdW1uTG9jYWxlT3B0c1R5cGUgPSB7XG4gICAgbG9jYWxlPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGNsYXNzIENvbHVtbkRlc2NyaXB0b3I8Q29sdW1uTW9kZWwsIFRhYmxlTW9kZWwsIENvbHVtblZhbHVlID0gQ29sdW1uTW9kZWwsIFByb3BlcnR5ID0gc3RyaW5nPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF90YWJsZTogSVRhYmxlRGVzY3JpcHRvckludGVybmFsPFRhYmxlTW9kZWw+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfcHJvcGVydHk6IHN0cmluZztcbiAgICBwcml2YXRlIF9jb2x1bW5UeXBlOiBDb2x1bW5UeXBlRW51bSA9IENvbHVtblR5cGVFbnVtLlN0cmluZztcbiAgICBwcml2YXRlIF9jb2x1bW5EaXNwbGF5VHlwZTogQ29sdW1uRGlzcGxheVR5cGVFbnVtID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLlN0cmluZztcbiAgICBwcm90ZWN0ZWQgX3RpdGxlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2lzU29ydEVuYWJsZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9zb3J0UHJvcGVydHk/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfZmlsdGVyRGVzY3JpcHRvcj86IEZpbHRlckRlc2NyaXB0b3I8YW55PjtcbiAgICBwcml2YXRlIF9kaXNwbGF5Rm9ybWF0Pzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2xvY2FsZT86IHN0cmluZztcbiAgICBwcml2YXRlIF90ZW1wbGF0ZT86IHN0cmluZztcbiAgICBwcml2YXRlIF9nZXR0ZXI/OiBHZXR0ZXJGbjxDb2x1bW5WYWx1ZSwgVGFibGVNb2RlbD47XG4gICAgcHJpdmF0ZSBfaXNNdWx0aWxpbmUgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9oYXNWYWx1ZUFzVG9vbHRpcCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2lzUmVvcmRlcmFibGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9pc1RvZ2dsZWFibGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9pc1Zpc2libGUgPSB0cnVlO1xuXG4gICAgLy8gc3R5bGluZ1xuICAgIHByaXZhdGUgX2hlYWRlckNsYXNzTmFtZSA9ICcnO1xuICAgIHByaXZhdGUgX2NsYXNzTmFtZSA9ICcnO1xuICAgIHByaXZhdGUgX2NsYXNzTmFtZU1hcEZuPzogKGNsYXNzTmFtZT86IHN0cmluZywgaXRlbT86IFRhYmxlTW9kZWwpID0+IHN0cmluZztcbiAgICBwcml2YXRlIF93aWR0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBfbWluV2lkdGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgX21heFdpZHRoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8vIGVudW0gc3BlY2lmaWNzXG4gICAgcHJpdmF0ZSBfZW51bVR5cGU/OiBFbnVtVHlwZTtcbiAgICBwcml2YXRlIF9lbnVtVGl0bGVQYXRoPzogc3RyaW5nIHwgbnVsbDtcbiAgICBwcml2YXRlIF9lbnVtTmFtZUFzVmFsdWUgPSBmYWxzZTtcblxuICAgIC8vIGJvb2xlYW4gc3BlY2lmaWNzXG4gICAgcHJpdmF0ZSBfYm9vbGVhbkFzSWNvbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2Jvb2xlYW5ZZXM/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfYm9vbGVhbk5vPzogc3RyaW5nO1xuXG4gICAgLy8gY3VycmVuY3kgc3BlY2lmaWNzXG4gICAgcHJpdmF0ZSBfY3VycmVuY3lDb2RlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2N1cnJlbmN5UHJvcGVydHk/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfY3VycmVuY3lEaXNwbGF5PzogJ3N5bWJvbCcgfCAnY29kZScgfCAnbmFtZSc7XG5cbiAgICAvLyBjdXN0b20gc3BlY2lmaWNzXG4gICAgcHJpdmF0ZSBfY3VzdG9tQ29tcG9uZW50VHlwZT86IFR5cGU8SUNvbHVtblZhbHVlQ29tcG9uZW50PFRhYmxlTW9kZWw+PjtcblxuICAgIC8vIGhlbHBlcnNcbiAgICBwcml2YXRlIF9oYXNDb3B5VG9DbGlwYm9hcmQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9jbGlwYm9hcmRWYWx1ZUdldHRlcj86IEdldHRlckZuPENvbHVtblZhbHVlLCBUYWJsZU1vZGVsPjtcblxuICAgIC8vIGxvY2FsaXphdGlvblxuICAgIHByaXZhdGUgX2lzTG9jYWxpemVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfbG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHk/OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcih0YWJsZTogSVRhYmxlRGVzY3JpcHRvckludGVybmFsPFRhYmxlTW9kZWw+LCBwcm9wZXJ0eTogUHJvcGVydHkpIHtcbiAgICAgICAgdGhpcy5fdGFibGUgPSB0YWJsZTtcbiAgICAgICAgdGhpcy5fcHJvcGVydHkgPSBwcm9wZXJ0eSBhcyBzdHJpbmc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb2x1bW5UeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1uVHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbHVtbkRpc3BsYXlUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1uRGlzcGxheVR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0aXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RpdGxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNTb3J0RW5hYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU29ydEVuYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzb3J0UHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zb3J0UHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmaWx0ZXJEZXNjcmlwdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyRGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRpc3BsYXlGb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5Rm9ybWF0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoZWFkZXJDbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJDbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjbGFzc05hbWVNYXBGbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsYXNzTmFtZU1hcEZuO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgd2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93aWR0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1pbldpZHRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWluV2lkdGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtYXhXaWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heFdpZHRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW51bVR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnVtVHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVudW1UaXRsZVBhdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbnVtVGl0bGVQYXRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW51bU5hbWVBc1ZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW51bU5hbWVBc1ZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYm9vbGVhbkFzSWNvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Jvb2xlYW5Bc0ljb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBib29sZWFuWWVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYm9vbGVhblllcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGJvb2xlYW5ObygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Jvb2xlYW5ObztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGN1c3RvbUNvbXBvbmVudFR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXN0b21Db21wb25lbnRUeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VycmVuY3lDb2RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVuY3lDb2RlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VycmVuY3lEaXNwbGF5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVuY3lEaXNwbGF5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VycmVuY3lQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbmN5UHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNDb3B5VG9DbGlwYm9hcmQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNDb3B5VG9DbGlwYm9hcmQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjbGlwYm9hcmRWYWx1ZUdldHRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsaXBib2FyZFZhbHVlR2V0dGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGVtcGxhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGdldHRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldHRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzTXVsdGlsaW5lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNNdWx0aWxpbmU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNWYWx1ZUFzVG9vbHRpcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1ZhbHVlQXNUb29sdGlwO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNSZW9yZGVyYWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzUmVvcmRlcmFibGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1RvZ2dsZWFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1RvZ2dsZWFibGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1Zpc2libGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Zpc2libGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc0xvY2FsaXplZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTG9jYWxpemVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGl6YXRpb25FeGlzdHNQcm9wZXJ0eTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBjb2x1bW4gdG8gZ2l2ZW4gdHlwZSB3aXRoIGFkZGl0aW9uYWwgYXJndW1lbnRzXG4gICAgICogQHBhcmFtIHR5cGUgY29sdW1uIHR5cGUgZW51bVxuICAgICAqIEBwYXJhbSBkaXNwbGF5VHlwZSBjb2x1bW4gZGlzcGxheSB0eXBlXG4gICAgICogQHBhcmFtIGFyZ3MgYW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIGZvciBjb2x1bW4gKG9wdGlvbmFsKVxuICAgICAqL1xuICAgIHB1YmxpYyBhc1R5cGUodHlwZTogQ29sdW1uVHlwZUVudW0sIGRpc3BsYXlUeXBlPzogQ29sdW1uRGlzcGxheVR5cGVFbnVtLCAuLi5hcmdzOiBhbnlbXSk6IHRoaXMge1xuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uTnVtYmVyOlxuICAgICAgICAgICAgICAgIHJldHVybiBkaXNwbGF5VHlwZSA9PT0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkN1cnJlbmN5ID8gdGhpcy5hc0N1cnJlbmN5KC4uLmFyZ3MpIDogdGhpcy5hc051bWJlciguLi5hcmdzKTtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uQm9vbGVhbjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc0Jvb2xlYW4oLi4uYXJncyk7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkRhdGU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNEYXRlKC4uLmFyZ3MpO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5FbnVtOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzRW51bShhcmdzWzBdIGFzIEVudW1UeXBlLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uQ3VzdG9tOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzQ3VzdG9tQ29tcG9uZW50KGFyZ3NbMF0pO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5TdHJpbmc6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzTnVtYmVyKG9wdHM/OiBDb2x1bW5OdW1iZXJPcHRzVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uTnVtYmVyO1xuICAgICAgICB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5OdW1iZXI7XG4gICAgICAgIHRoaXMuX2Rpc3BsYXlGb3JtYXQgPVxuICAgICAgICAgICAgb3B0cz8ubWluSW50ZWdlckRpZ2l0cyB8fCBvcHRzPy5taW5GcmFjdGlvbkRpZ2l0cyB8fCBvcHRzPy5tYXhGcmFjdGlvbkRpZ2l0c1xuICAgICAgICAgICAgICAgID8gYCR7b3B0cz8ubWluSW50ZWdlckRpZ2l0cyA/PyAwfS4ke29wdHM/Lm1pbkZyYWN0aW9uRGlnaXRzID8/IDB9LSR7b3B0cz8ubWF4RnJhY3Rpb25EaWdpdHMgPz8gb3B0cz8ubWluRnJhY3Rpb25EaWdpdHMgPz8gMH1gXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX2xvY2FsZSA9IG9wdHM/LmxvY2FsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQ3VycmVuY3kob3B0cz86IENvbHVtbkN1cnJlbmN5T3B0c1R5cGU8a2V5b2YgQ29sdW1uTW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFzQ3VycmVuY3lVbnNhZmUoe1xuICAgICAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgICAgIGN1cnJlbmN5UHJvcGVydHk6IG9wdHM/LmN1cnJlbmN5UHJvcGVydHkgPyAob3B0cy5jdXJyZW5jeVByb3BlcnR5IGFzIHN0cmluZykgOiB1bmRlZmluZWRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQ3VycmVuY3lVbnNhZmUob3B0cz86IENvbHVtbkN1cnJlbmN5T3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVHlwZSA9IENvbHVtblR5cGVFbnVtLk51bWJlcjtcbiAgICAgICAgdGhpcy5fY29sdW1uRGlzcGxheVR5cGUgPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uQ3VycmVuY3k7XG4gICAgICAgIHRoaXMuX2N1cnJlbmN5Q29kZSA9IG9wdHM/LmN1cnJlbmN5O1xuICAgICAgICB0aGlzLl9jdXJyZW5jeVByb3BlcnR5ID0gb3B0cz8uY3VycmVuY3lQcm9wZXJ0eTtcbiAgICAgICAgdGhpcy5fY3VycmVuY3lEaXNwbGF5ID0gb3B0cz8uY3VycmVuY3lEaXNwbGF5O1xuICAgICAgICB0aGlzLl9kaXNwbGF5Rm9ybWF0ID1cbiAgICAgICAgICAgIG9wdHM/Lm1pbkludGVnZXJEaWdpdHMgfHwgb3B0cz8ubWluRnJhY3Rpb25EaWdpdHMgfHwgb3B0cz8ubWF4RnJhY3Rpb25EaWdpdHNcbiAgICAgICAgICAgICAgICA/IGAke29wdHM/Lm1pbkludGVnZXJEaWdpdHMgPz8gMH0uJHtvcHRzPy5taW5GcmFjdGlvbkRpZ2l0cyA/PyAwfS0ke29wdHM/Lm1heEZyYWN0aW9uRGlnaXRzID8/IG9wdHM/Lm1pbkZyYWN0aW9uRGlnaXRzID8/IDB9YFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLl9sb2NhbGUgPSBvcHRzPy5sb2NhbGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0RhdGUoZGlzcGxheUZvcm1hdCA9ICdkZC5NTS55eXl5Jyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uRGF0ZTtcbiAgICAgICAgdGhpcy5fY29sdW1uRGlzcGxheVR5cGUgPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uRGF0ZTtcbiAgICAgICAgdGhpcy5fZGlzcGxheUZvcm1hdCA9IGRpc3BsYXlGb3JtYXQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0Jvb2xlYW4oeWVzPzogc3RyaW5nLCBubz86IHN0cmluZywgYXNJY29uID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVHlwZSA9IENvbHVtblR5cGVFbnVtLkJvb2xlYW47XG4gICAgICAgIHRoaXMuX2NvbHVtbkRpc3BsYXlUeXBlID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkJvb2xlYW47XG4gICAgICAgIHRoaXMuX2Jvb2xlYW5Bc0ljb24gPSBhc0ljb247XG4gICAgICAgIHRoaXMuX2Jvb2xlYW5ZZXMgPSB5ZXM7XG4gICAgICAgIHRoaXMuX2Jvb2xlYW5ObyA9IG5vO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNFbnVtKGVudW1UeXBlOiBFbnVtVHlwZSwgbmFtZUFzVmFsdWUgPSBmYWxzZSwgdGl0bGVQYXRoPzogc3RyaW5nIHwgbnVsbCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uRW51bTtcbiAgICAgICAgdGhpcy5fY29sdW1uRGlzcGxheVR5cGUgPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uRW51bTtcbiAgICAgICAgdGhpcy5fZW51bVR5cGUgPSBlbnVtVHlwZTtcbiAgICAgICAgdGhpcy5fZW51bU5hbWVBc1ZhbHVlID0gbmFtZUFzVmFsdWU7XG4gICAgICAgIGlmICh0eXBlb2YgdGl0bGVQYXRoID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGl0bGVQYXRoID0gRGVjb3JhdG9yTWV0YWRhdGFVdGlsLmZpbmRFbnVtTmFtZShlbnVtVHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZW51bVRpdGxlUGF0aCA9IHRpdGxlUGF0aDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzQ3VzdG9tQ29tcG9uZW50KGN1c3RvbUNvbXBvbmVudFR5cGU6IFR5cGU8SUNvbHVtblZhbHVlQ29tcG9uZW50PFRhYmxlTW9kZWw+Pik6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uQ3VzdG9tO1xuICAgICAgICB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5Db21wb25lbnQ7XG4gICAgICAgIHRoaXMuX2N1c3RvbUNvbXBvbmVudFR5cGUgPSBjdXN0b21Db21wb25lbnRUeXBlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNIdG1sKCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5IdG1sO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENsYXNzTmFtZShjbGFzc05hbWU/OiBzdHJpbmcsIGhlYWRlckNsYXNzTmFtZT86IHN0cmluZywgY2xhc3NOYW1lTWFwRm4/OiAoY2xhc3NOYW1lPzogc3RyaW5nLCBpdGVtPzogVGFibGVNb2RlbCkgPT4gc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NsYXNzTmFtZSA9IGNsYXNzTmFtZSA/PyAnJztcbiAgICAgICAgdGhpcy5faGVhZGVyQ2xhc3NOYW1lID0gaGVhZGVyQ2xhc3NOYW1lID8/ICcnO1xuICAgICAgICB0aGlzLl9jbGFzc05hbWVNYXBGbiA9IGNsYXNzTmFtZU1hcEZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFdpZHRoKHdpZHRoPzogbnVtYmVyLCBtaW5XaWR0aD86IG51bWJlciwgbWF4V2lkdGg/OiBudW1iZXIpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fd2lkdGggPSB3aWR0aCA/PyBudWxsO1xuICAgICAgICB0aGlzLl9taW5XaWR0aCA9IG1pbldpZHRoID8/IG51bGw7XG4gICAgICAgIHRoaXMuX21heFdpZHRoID0gbWF4V2lkdGggPz8gbnVsbDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUaXRsZSh0aXRsZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RpdGxlID0gdGl0bGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmlsdGVyKGZvcmNlU2ltcGxlID0gZmFsc2UpOiBGaWx0ZXJEZXNjcmlwdG9yPGFueT4ge1xuICAgICAgICB0aGlzLl9maWx0ZXJEZXNjcmlwdG9yID0gbmV3IEZpbHRlckRlc2NyaXB0b3I8dW5rbm93bj4odGhpcy5fcHJvcGVydHkpO1xuICAgICAgICBsZXQgZmlsdGVyVHlwZTogRmlsdGVyVHlwZUVudW07XG5cbiAgICAgICAgc3dpdGNoICh0aGlzLl9jb2x1bW5UeXBlKSB7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLk51bWJlcjpcbiAgICAgICAgICAgICAgICBmaWx0ZXJUeXBlID0gRmlsdGVyVHlwZUVudW0uTnVtYmVyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5Cb29sZWFuOlxuICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5Cb29sZWFuO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5EYXRlOlxuICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5EYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5FbnVtOlxuICAgICAgICAgICAgICAgIGlmICghZm9yY2VTaW1wbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMud2l0aEZpbHRlckxvb2t1cEVudW0oKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXJUeXBlID0gRmlsdGVyVHlwZUVudW0uU3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLlN0cmluZzpcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uQ3VzdG9tOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBmaWx0ZXJUeXBlID0gRmlsdGVyVHlwZUVudW0uU3RyaW5nO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZmlsdGVyRGVzY3JpcHRvci5hc0ZpbHRlclR5cGUoZmlsdGVyVHlwZSk7XG4gICAgICAgIGlmIChmaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5OdW1iZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlGb3JtYXRGcmFjdGlvbnMgPSB0aGlzLl9kaXNwbGF5Rm9ybWF0Py5zcGxpdCgnLicpPy5bMV0/LnNwbGl0KCctJyk7XG4gICAgICAgICAgICBpZiAoZGlzcGxheUZvcm1hdEZyYWN0aW9ucyAmJiBkaXNwbGF5Rm9ybWF0RnJhY3Rpb25zLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9maWx0ZXJEZXNjcmlwdG9yLndpdGhOdW1iZXJGcmFjdGlvbnMocGFyc2VJbnQoZGlzcGxheUZvcm1hdEZyYWN0aW9uc1swXSksIHBhcnNlSW50KGRpc3BsYXlGb3JtYXRGcmFjdGlvbnNbMV0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5EYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBkaXNwbGF5Rm9ybWF0ID0gdGhpcy5fZGlzcGxheUZvcm1hdDtcbiAgICAgICAgICAgIGlmIChkaXNwbGF5Rm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyRGlzcGxheUZvcm1hdCA9IERhdGVVdGlsLmZyb21QcmltZVRvQW5ndWxhckRhdGVGb3JtYXQoZGlzcGxheUZvcm1hdCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVyRGVzY3JpcHRvci53aXRoRGF0ZUZvcm1hdChmaWx0ZXJEaXNwbGF5Rm9ybWF0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmlsdGVyTG9va3VwPEZMVCA9IENvbHVtbk1vZGVsLCBTID0gdW5kZWZpbmVkPihwcm92aWRlcj86IElMb29rdXBEYXRhUHJvdmlkZXI8RkxULCBTPiwgb3B0aW9uc1ZhbHVlUHJvcGVydHk/OiBrZXlvZiBGTFQgfCBudWxsKTogRmlsdGVyTG9va3VwRGVzY3JpcHRvcjxGTFQsIFM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aEZpbHRlckxvb2t1cFVuc2FmZShwcm92aWRlciwgb3B0aW9uc1ZhbHVlUHJvcGVydHkgYXMgTnVsbGFibGU8c3RyaW5nPik7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWx0ZXJMb29rdXBVbnNhZmU8RkxUID0gQ29sdW1uTW9kZWwsIFMgPSB1bmRlZmluZWQ+KHByb3ZpZGVyPzogSUxvb2t1cERhdGFQcm92aWRlcjxGTFQsIFM+LCBvcHRpb25zVmFsdWVQcm9wZXJ0eT86IHN0cmluZyB8IG51bGwpOiBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yPEZMVCwgUz4ge1xuICAgICAgICBjb25zdCBmaWx0ZXJEZXNjcmlwdG9yID0gbmV3IEZpbHRlckxvb2t1cERlc2NyaXB0b3I8RkxULCBTPih0aGlzLl9wcm9wZXJ0eSwge1xuICAgICAgICAgICAgZGF0YVByb3ZpZGVyOiBwcm92aWRlcixcbiAgICAgICAgICAgIG9wdGlvbnNWYWx1ZVByb3BlcnR5OiBvcHRpb25zVmFsdWVQcm9wZXJ0eVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fZmlsdGVyRGVzY3JpcHRvciA9IGZpbHRlckRlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiBmaWx0ZXJEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmlsdGVyTG9va3VwRW51bShvcHRpb25zPzogQXJyYXk8RW51bUNvbnN0YW50VHlwZT4pOiBGaWx0ZXJMb29rdXBFbnVtRGVzY3JpcHRvciB7XG4gICAgICAgIGlmICh0aGlzLl9jb2x1bW5UeXBlICE9PSBDb2x1bW5UeXBlRW51bS5FbnVtIHx8ICF0aGlzLl9lbnVtVHlwZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE1uZ0ludGVybmFsRXJyb3IoYENvbHVtbiAke3RoaXMuX3Byb3BlcnR5fSBpcyBub3Qgb2YgdHlwZSBlbnVtIG9yIGVudW0gdHlwZSBpcyB1bmRlZmluZWQuYCwge25hbWU6ICdDb2x1bW5EZXNjcmlwdG9yRXJyb3InfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZmlsdGVyRGVzY3JpcHRvciA9IG5ldyBGaWx0ZXJMb29rdXBFbnVtRGVzY3JpcHRvcih0aGlzLl9wcm9wZXJ0eSwgdGhpcy5fZW51bVR5cGUsIG9wdGlvbnMsIHRoaXMuX2VudW1OYW1lQXNWYWx1ZSwgdGhpcy5fZW51bVRpdGxlUGF0aCk7XG4gICAgICAgIHRoaXMuX2ZpbHRlckRlc2NyaXB0b3IgPSBmaWx0ZXJEZXNjcmlwdG9yO1xuICAgICAgICByZXR1cm4gZmlsdGVyRGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFNvcnQoaXNFbmFibGVkID0gdHJ1ZSwgc29ydFByb3BlcnR5Pzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzU29ydEVuYWJsZWQgPSBpc0VuYWJsZWQ7XG4gICAgICAgIHRoaXMuX3NvcnRQcm9wZXJ0eSA9IHNvcnRQcm9wZXJ0eTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEZWZhdWx0U29ydChhc2MgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhEZWZhdWx0U29ydFVuc2FmZSh0aGlzLl9wcm9wZXJ0eSwgYXNjKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDb3B5VG9DbGlwYm9hcmQoaGFzQ29weVRvQ2xpcGJvYXJkID0gdHJ1ZSwgY2xpcGJvYXJkVmFsdWVHZXR0ZXI/OiBHZXR0ZXJGbjxDb2x1bW5WYWx1ZSwgVGFibGVNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzQ29weVRvQ2xpcGJvYXJkID0gaGFzQ29weVRvQ2xpcGJvYXJkO1xuXG4gICAgICAgIGlmIChjbGlwYm9hcmRWYWx1ZUdldHRlcikge1xuICAgICAgICAgICAgdGhpcy5fY2xpcGJvYXJkVmFsdWVHZXR0ZXIgPSBjbGlwYm9hcmRWYWx1ZUdldHRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGVtcGxhdGUodGVtcGxhdGU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl90ZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEdldHRlcihnZXR0ZXI/OiBHZXR0ZXJGbjxDb2x1bW5WYWx1ZSwgVGFibGVNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZ2V0dGVyID0gZ2V0dGVyO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE11bHRpbGluZShpc011bHRpbGluZSA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXNNdWx0aWxpbmUgPSBpc011bHRpbGluZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhWYWx1ZUFzVG9vbHRpcCh2YWx1ZUFzVG9vbHRpcCA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzVmFsdWVBc1Rvb2x0aXAgPSB2YWx1ZUFzVG9vbHRpcDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSZW9yZGVyYWJsZShpc1Jlb3JkZXJhYmxlID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc1Jlb3JkZXJhYmxlID0gaXNSZW9yZGVyYWJsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUb2dnbGVhYmxlKGlzVG9nZ2xlYWJsZSA9IHRydWUsIGlzVmlzaWJsZSA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXNUb2dnbGVhYmxlID0gaXNUb2dnbGVhYmxlO1xuICAgICAgICB0aGlzLl9pc1Zpc2libGUgPSBpc1Zpc2libGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2NhbGl6ZWQoZXhpc3RzUHJvcGVydHk/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgaWYgKGV4aXN0c1Byb3BlcnR5KSB7XG4gICAgICAgICAgICB0aGlzLl9sb2NhbGl6YXRpb25FeGlzdHNQcm9wZXJ0eSA9IGV4aXN0c1Byb3BlcnR5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHkgPSBgJHt0aGlzLl9wcm9wZXJ0eX1Mb2NhbGl6ZWRgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IENvbHVtbkRlc2NyaXB0b3I8Q29sdW1uTW9kZWwsIFRhYmxlTW9kZWwsIENvbHVtblZhbHVlPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgQ29sdW1uRGVzY3JpcHRvcjxDb2x1bW5Nb2RlbCwgVGFibGVNb2RlbCwgQ29sdW1uVmFsdWU+KHRoaXMuX3RhYmxlLCB0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29weUZpZWxkc1RvKG9iajogQ29sdW1uRGVzY3JpcHRvcjxDb2x1bW5Nb2RlbCwgVGFibGVNb2RlbCwgQ29sdW1uVmFsdWU+KSB7XG4gICAgICAgIG9iai5fdGl0bGUgPSB0aGlzLl90aXRsZTtcbiAgICAgICAgb2JqLl9pc1NvcnRFbmFibGVkID0gdGhpcy5faXNTb3J0RW5hYmxlZDtcbiAgICAgICAgb2JqLl9zb3J0UHJvcGVydHkgPSB0aGlzLl9zb3J0UHJvcGVydHk7XG4gICAgICAgIG9iai5fY29sdW1uVHlwZSA9IHRoaXMuX2NvbHVtblR5cGU7XG4gICAgICAgIG9iai5fY29sdW1uRGlzcGxheVR5cGUgPSB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZTtcbiAgICAgICAgb2JqLl9maWx0ZXJEZXNjcmlwdG9yID0gdGhpcy5fZmlsdGVyRGVzY3JpcHRvcj8uY29weSgpO1xuICAgICAgICBvYmouX2VudW1UeXBlID0gdGhpcy5fZW51bVR5cGU7XG4gICAgICAgIG9iai5fZW51bVRpdGxlUGF0aCA9IHRoaXMuX2VudW1UaXRsZVBhdGg7XG4gICAgICAgIG9iai5fZW51bU5hbWVBc1ZhbHVlID0gdGhpcy5fZW51bU5hbWVBc1ZhbHVlO1xuICAgICAgICBvYmouX2Jvb2xlYW5Bc0ljb24gPSB0aGlzLl9ib29sZWFuQXNJY29uO1xuICAgICAgICBvYmouX2Jvb2xlYW5ZZXMgPSB0aGlzLl9ib29sZWFuWWVzO1xuICAgICAgICBvYmouX2Jvb2xlYW5ObyA9IHRoaXMuX2Jvb2xlYW5ObztcbiAgICAgICAgb2JqLl9sb2NhbGUgPSB0aGlzLl9sb2NhbGU7XG4gICAgICAgIG9iai5fY3VycmVuY3lDb2RlID0gdGhpcy5fY3VycmVuY3lDb2RlO1xuICAgICAgICBvYmouX2N1cnJlbmN5RGlzcGxheSA9IHRoaXMuX2N1cnJlbmN5RGlzcGxheTtcbiAgICAgICAgb2JqLl9jdXJyZW5jeVByb3BlcnR5ID0gdGhpcy5fY3VycmVuY3lQcm9wZXJ0eTtcbiAgICAgICAgb2JqLl9kaXNwbGF5Rm9ybWF0ID0gdGhpcy5fZGlzcGxheUZvcm1hdDtcbiAgICAgICAgb2JqLl9oZWFkZXJDbGFzc05hbWUgPSB0aGlzLl9oZWFkZXJDbGFzc05hbWU7XG4gICAgICAgIG9iai5fY2xhc3NOYW1lID0gdGhpcy5fY2xhc3NOYW1lO1xuICAgICAgICBvYmouX2NsYXNzTmFtZU1hcEZuID0gdGhpcy5fY2xhc3NOYW1lTWFwRm47XG4gICAgICAgIG9iai5fd2lkdGggPSB0aGlzLl93aWR0aDtcbiAgICAgICAgb2JqLl9taW5XaWR0aCA9IHRoaXMuX21pbldpZHRoO1xuICAgICAgICBvYmouX21heFdpZHRoID0gdGhpcy5fbWF4V2lkdGg7XG4gICAgICAgIG9iai5fY3VzdG9tQ29tcG9uZW50VHlwZSA9IHRoaXMuX2N1c3RvbUNvbXBvbmVudFR5cGU7XG4gICAgICAgIG9iai5faGFzQ29weVRvQ2xpcGJvYXJkID0gdGhpcy5faGFzQ29weVRvQ2xpcGJvYXJkO1xuICAgICAgICBvYmouX3RlbXBsYXRlID0gdGhpcy5fdGVtcGxhdGU7XG4gICAgICAgIG9iai5fZ2V0dGVyID0gdGhpcy5fZ2V0dGVyO1xuICAgICAgICBvYmouX2lzTXVsdGlsaW5lID0gdGhpcy5faXNNdWx0aWxpbmU7XG4gICAgICAgIG9iai5faGFzVmFsdWVBc1Rvb2x0aXAgPSB0aGlzLl9oYXNWYWx1ZUFzVG9vbHRpcDtcbiAgICAgICAgb2JqLl9pc1Jlb3JkZXJhYmxlID0gdGhpcy5faXNSZW9yZGVyYWJsZTtcbiAgICAgICAgb2JqLl9pc1RvZ2dsZWFibGUgPSB0aGlzLl9pc1RvZ2dsZWFibGU7XG4gICAgICAgIG9iai5faXNWaXNpYmxlID0gdGhpcy5faXNWaXNpYmxlO1xuICAgICAgICBvYmouX2lzTG9jYWxpemVkID0gdGhpcy5faXNMb2NhbGl6ZWQ7XG4gICAgICAgIG9iai5fbG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHkgPSB0aGlzLl9sb2NhbGl6YXRpb25FeGlzdHNQcm9wZXJ0eTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2x1bW5EeW5hbWljRGVzY3JpcHRvciBleHRlbmRzIENvbHVtbkRlc2NyaXB0b3I8YW55LCBhbnk+IHtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX3RpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSBfdmlzaWJpbGl0eSA9IHRydWU7XG5cbiAgICAvLyBwcml2YXRlIF9maWx0ZXJTdGF0dXM7XG5cbiAgICBjb25zdHJ1Y3Rvcih0YWJsZTogSVRhYmxlRGVzY3JpcHRvckludGVybmFsPGFueT4sIHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIodGFibGUsIHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHZpc2liaWxpdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmlsaXR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgY29sdW1uJ3MgdGl0bGUgYW5kIHJldHVybnMgdGhpcyBjb2x1bW5cbiAgICAgKiBAcGFyYW0gdGl0bGUgdGl0bGUgdG8gYmUgc2V0XG4gICAgICogQHBhcmFtIG92ZXJyaWRlIHNob3VsZCBjb2x1bW4gdGl0bGUgaWYgYWxsIHJlYWR5IHNldD9cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aFRpdGxlKHRpdGxlOiBzdHJpbmcsIG92ZXJyaWRlID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgaWYgKHRoaXMuX3RpdGxlID09IG51bGwgfHwgb3ZlcnJpZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpdGxlID0gdGl0bGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZGVmaW5lcyBhdXRvbWF0aWMgdHlwZSBhbmQgcmV0dXJucyB0aGlzIGNvbHVtblxuICAgICAqIEBwYXJhbSB2YWx1ZVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQXV0b21hdGljVHlwZSh2YWx1ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIFRhYmxldmlld1V0aWwuc3RyaW5nQ29sdW1uQ29udmVydGVyKHRoaXMsIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2V0cyB2aXNpYmlsaXR5IHN0YXRlIGZvciBjb2x1bW4gYW5kIHJldHVybnMgdGhpcyBjb2x1bW5cbiAgICAgKiBAcGFyYW0gdmlzaWJpbGl0eVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoVmlzaWJpbGl0eSh2aXNpYmlsaXR5OiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Zpc2liaWxpdHkgPSB2aXNpYmlsaXR5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjcmVhdGVzIGRlZXAgY29weSBvZiBjb2x1bW4gZHluYW1pYyBkZXNjcmlwdG9yXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGNvcHkoKTogQ29sdW1uRHluYW1pY0Rlc2NyaXB0b3Ige1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IENvbHVtbkR5bmFtaWNEZXNjcmlwdG9yKHRoaXMuX3RhYmxlLCB0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICBkZXNjcmlwdG9yLl90aXRsZSA9IHRoaXMuX3RpdGxlO1xuICAgICAgICBkZXNjcmlwdG9yLl92aXNpYmlsaXR5ID0gdGhpcy5fdmlzaWJpbGl0eTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIHRvQ29sdW1uRGVzY3JpcHRvcih0YWJsZURlc2NyaXB0b3I6IElUYWJsZURlc2NyaXB0b3JJbnRlcm5hbDxhbnk+KTogQ29sdW1uRGVzY3JpcHRvcjxhbnksIGFueT4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IENvbHVtbkRlc2NyaXB0b3IodGFibGVEZXNjcmlwdG9yLCB0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG59XG4iXX0=
359
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL3RhYmxlL2NvbHVtbi5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUd6RCxPQUFPLEVBQUMscUJBQXFCLEVBQUUsY0FBYyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBMkIvRCxNQUFNLE9BQU8sZ0JBQWdCO0lBZ0R6QixZQUFZLEtBQTJDLEVBQUUsUUFBZ0I7UUE3Q2pFLGdCQUFXLEdBQW1CLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFDcEQsdUJBQWtCLEdBQTBCLHFCQUFxQixDQUFDLE1BQU0sQ0FBQztRQU16RSxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDM0IsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsZUFBVSxHQUFHLElBQUksQ0FBQztRQUUxQixVQUFVO1FBQ0YscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsV0FBTSxHQUFrQixJQUFJLENBQUM7UUFDN0IsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFDaEMsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFLeEMsb0JBQW9CO1FBQ1osbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFZL0IsVUFBVTtRQUNGLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUdwQyxlQUFlO1FBQ1AsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFJekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFrQixDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMs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Q0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0lDb2x1bW5WYWx1ZUNvbXBvbmVudH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7R2V0dGVyRm59IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7VGFibGV2aWV3VXRpbH0gZnJvbSAnLi4vLi4vdXRpbHMvdGFibGV2aWV3LnV0aWwnO1xuaW1wb3J0IHtGaWx0ZXJEZXNjcmlwdG9yfSBmcm9tICcuLi9maWx0ZXInO1xuaW1wb3J0IHtFbnVtRGVzY3JpcHRvcn0gZnJvbSAnLi4vbW9kZWwnO1xuaW1wb3J0IHtDb2x1bW5EaXNwbGF5VHlwZUVudW0sIENvbHVtblR5cGVFbnVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0lUYWJsZURlc2NyaXB0b3JJbnRlcm5hbH0gZnJvbSAnLi9pbnRlcm5hbC90YWJsZS5tb2RlbCc7XG5cbmV4cG9ydCB0eXBlIENvbHVtbkN1cnJlbmN5T3B0c1R5cGU8UHJvcGVydHkgPSBzdHJpbmc+ID0ge1xuICAgIGN1cnJlbmN5UHJvcGVydHk/OiBQcm9wZXJ0eTtcbiAgICBjdXJyZW5jeT86IHN0cmluZztcbiAgICBjdXJyZW5jeURpc3BsYXk/OiAnc3ltYm9sJyB8ICdjb2RlJyB8ICduYW1lJztcbn0gJiBDb2x1bW5OdW1iZXJHcm91cGluZ09wdHNUeXBlICZcbiAgICBDb2x1bW5OdW1iZXJGcmFjdGlvbk9wdHNUeXBlICZcbiAgICBDb2x1bW5Mb2NhbGVPcHRzVHlwZTtcblxuZXhwb3J0IHR5cGUgQ29sdW1uTnVtYmVyT3B0c1R5cGUgPSBDb2x1bW5OdW1iZXJHcm91cGluZ09wdHNUeXBlICYgQ29sdW1uTnVtYmVyRnJhY3Rpb25PcHRzVHlwZSAmIENvbHVtbkxvY2FsZU9wdHNUeXBlO1xuXG5leHBvcnQgdHlwZSBDb2x1bW5OdW1iZXJHcm91cGluZ09wdHNUeXBlID0ge1xuICAgIGdyb3VwU2VwYXJhdG9yPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIENvbHVtbk51bWJlckZyYWN0aW9uT3B0c1R5cGUgPSB7XG4gICAgbWluSW50ZWdlckRpZ2l0cz86IG51bWJlcjtcbiAgICBtaW5GcmFjdGlvbkRpZ2l0cz86IG51bWJlcjtcbiAgICBtYXhGcmFjdGlvbkRpZ2l0cz86IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIENvbHVtbkxvY2FsZU9wdHNUeXBlID0ge1xuICAgIGxvY2FsZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCBjbGFzcyBDb2x1bW5EZXNjcmlwdG9yPENvbHVtbk1vZGVsLCBUYWJsZU1vZGVsLCBDb2x1bW5WYWx1ZSA9IENvbHVtbk1vZGVsPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF90YWJsZTogSVRhYmxlRGVzY3JpcHRvckludGVybmFsPFRhYmxlTW9kZWw+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfcHJvcGVydHk6IHN0cmluZztcbiAgICBwcml2YXRlIF9jb2x1bW5UeXBlOiBDb2x1bW5UeXBlRW51bSA9IENvbHVtblR5cGVFbnVtLlN0cmluZztcbiAgICBwcml2YXRlIF9jb2x1bW5EaXNwbGF5VHlwZTogQ29sdW1uRGlzcGxheVR5cGVFbnVtID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLlN0cmluZztcbiAgICBwcm90ZWN0ZWQgX3RpdGxlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2Rpc3BsYXlGb3JtYXQ/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfbG9jYWxlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX3RlbXBsYXRlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2dldHRlcj86IEdldHRlckZuPENvbHVtblZhbHVlLCBUYWJsZU1vZGVsPjtcbiAgICBwcml2YXRlIF9pc011bHRpbGluZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2hhc1ZhbHVlQXNUb29sdGlwID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNSZW9yZGVyYWJsZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2lzVG9nZ2xlYWJsZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2lzVmlzaWJsZSA9IHRydWU7XG5cbiAgICAvLyBzdHlsaW5nXG4gICAgcHJpdmF0ZSBfaGVhZGVyQ2xhc3NOYW1lID0gJyc7XG4gICAgcHJpdmF0ZSBfY2xhc3NOYW1lID0gJyc7XG4gICAgcHJpdmF0ZSBfY2xhc3NOYW1lTWFwRm4/OiAoY2xhc3NOYW1lPzogc3RyaW5nLCBpdGVtPzogVGFibGVNb2RlbCkgPT4gc3RyaW5nO1xuICAgIHByaXZhdGUgX3dpZHRoOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIF9taW5XaWR0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBfbWF4V2lkdGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLy8gZW51bSBzcGVjaWZpY3NcbiAgICBwcml2YXRlIF9lbnVtPzogRW51bURlc2NyaXB0b3I8YW55PjtcblxuICAgIC8vIGJvb2xlYW4gc3BlY2lmaWNzXG4gICAgcHJpdmF0ZSBfYm9vbGVhbkFzSWNvbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2Jvb2xlYW5ZZXM/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfYm9vbGVhbk5vPzogc3RyaW5nO1xuXG4gICAgLy8gY3VycmVuY3kgc3BlY2lmaWNzXG4gICAgcHJpdmF0ZSBfY3VycmVuY3lDb2RlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2N1cnJlbmN5UHJvcGVydHk/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfY3VycmVuY3lEaXNwbGF5PzogJ3N5bWJvbCcgfCAnY29kZScgfCAnbmFtZSc7XG5cbiAgICAvLyBjdXN0b20gc3BlY2lmaWNzXG4gICAgcHJpdmF0ZSBfY3VzdG9tQ29tcG9uZW50VHlwZT86IFR5cGU8SUNvbHVtblZhbHVlQ29tcG9uZW50PFRhYmxlTW9kZWw+PjtcblxuICAgIC8vIGhlbHBlcnNcbiAgICBwcml2YXRlIF9oYXNDb3B5VG9DbGlwYm9hcmQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9jbGlwYm9hcmRWYWx1ZUdldHRlcj86IEdldHRlckZuPENvbHVtblZhbHVlLCBUYWJsZU1vZGVsPjtcblxuICAgIC8vIGxvY2FsaXphdGlvblxuICAgIHByaXZhdGUgX2lzTG9jYWxpemVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfbG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHk/OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcih0YWJsZTogSVRhYmxlRGVzY3JpcHRvckludGVybmFsPFRhYmxlTW9kZWw+LCBwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3RhYmxlID0gdGFibGU7XG4gICAgICAgIHRoaXMuX3Byb3BlcnR5ID0gcHJvcGVydHkgYXMgc3RyaW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY29sdW1uVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtblR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb2x1bW5EaXNwbGF5VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbkRpc3BsYXlUeXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aXRsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRpc3BsYXlGb3JtYXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5Rm9ybWF0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFibGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoZWFkZXJDbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oZWFkZXJDbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjbGFzc05hbWVNYXBGbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsYXNzTmFtZU1hcEZuO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgd2lkdGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl93aWR0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1pbldpZHRoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWluV2lkdGg7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtYXhXaWR0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heFdpZHRoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZW51bSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VudW07XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBib29sZWFuQXNJY29uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYm9vbGVhbkFzSWNvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGJvb2xlYW5ZZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ib29sZWFuWWVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYm9vbGVhbk5vKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYm9vbGVhbk5vO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VzdG9tQ29tcG9uZW50VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2N1c3RvbUNvbXBvbmVudFR5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsb2NhbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb2NhbGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXJyZW5jeUNvZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW5jeUNvZGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXJyZW5jeURpc3BsYXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW5jeURpc3BsYXk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjdXJyZW5jeVByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVuY3lQcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0NvcHlUb0NsaXBib2FyZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0NvcHlUb0NsaXBib2FyZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNsaXBib2FyZFZhbHVlR2V0dGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2xpcGJvYXJkVmFsdWVHZXR0ZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0ZW1wbGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RlbXBsYXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZ2V0dGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0dGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNNdWx0aWxpbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc011bHRpbGluZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1ZhbHVlQXNUb29sdGlwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzVmFsdWVBc1Rvb2x0aXA7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1Jlb3JkZXJhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNSZW9yZGVyYWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzVG9nZ2xlYWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVG9nZ2xlYWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzVmlzaWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmlzaWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzTG9jYWxpemVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNMb2NhbGl6ZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsb2NhbGl6YXRpb25FeGlzdHNQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvY2FsaXphdGlvbkV4aXN0c1Byb3BlcnR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnRzIGNvbHVtbiB0byBnaXZlbiB0eXBlIHdpdGggYWRkaXRpb25hbCBhcmd1bWVudHNcbiAgICAgKiBAcGFyYW0gdHlwZSBjb2x1bW4gdHlwZSBlbnVtXG4gICAgICogQHBhcmFtIGRpc3BsYXlUeXBlIGNvbHVtbiBkaXNwbGF5IHR5cGVcbiAgICAgKiBAcGFyYW0gYXJncyBhbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgZm9yIGNvbHVtbiAob3B0aW9uYWwpXG4gICAgICovXG4gICAgcHVibGljIGFzVHlwZSh0eXBlOiBDb2x1bW5UeXBlRW51bSwgZGlzcGxheVR5cGU/OiBDb2x1bW5EaXNwbGF5VHlwZUVudW0sIC4uLmFyZ3M6IGFueVtdKTogdGhpcyB7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5OdW1iZXI6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRpc3BsYXlUeXBlID09PSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uQ3VycmVuY3kgPyB0aGlzLmFzQ3VycmVuY3koLi4uYXJncykgOiB0aGlzLmFzTnVtYmVyKC4uLmFyZ3MpO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5Cb29sZWFuOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFzQm9vbGVhbiguLi5hcmdzKTtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uRGF0ZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc0RhdGUoLi4uYXJncyk7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkVudW06XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNFbnVtVW5zYWZlKGFyZ3NbMF0gYXMgRW51bURlc2NyaXB0b3I8YW55Pik7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLkN1c3RvbTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5hc0N1c3RvbUNvbXBvbmVudChhcmdzWzBdKTtcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uU3RyaW5nOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc051bWJlcihvcHRzPzogQ29sdW1uTnVtYmVyT3B0c1R5cGUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVHlwZSA9IENvbHVtblR5cGVFbnVtLk51bWJlcjtcbiAgICAgICAgdGhpcy5fY29sdW1uRGlzcGxheVR5cGUgPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uTnVtYmVyO1xuICAgICAgICB0aGlzLl9kaXNwbGF5Rm9ybWF0ID1cbiAgICAgICAgICAgIG9wdHM/Lm1pbkludGVnZXJEaWdpdHMgfHwgb3B0cz8ubWluRnJhY3Rpb25EaWdpdHMgfHwgb3B0cz8ubWF4RnJhY3Rpb25EaWdpdHNcbiAgICAgICAgICAgICAgICA/IGAke29wdHM/Lm1pbkludGVnZXJEaWdpdHMgPz8gMH0uJHtvcHRzPy5taW5GcmFjdGlvbkRpZ2l0cyA/PyAwfS0ke29wdHM/Lm1heEZyYWN0aW9uRGlnaXRzID8/IG9wdHM/Lm1pbkZyYWN0aW9uRGlnaXRzID8/IDB9YFxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLl9sb2NhbGUgPSBvcHRzPy5sb2NhbGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0N1cnJlbmN5KG9wdHM/OiBDb2x1bW5DdXJyZW5jeU9wdHNUeXBlPGtleW9mIENvbHVtbk1vZGVsPik6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy5hc0N1cnJlbmN5VW5zYWZlKHtcbiAgICAgICAgICAgIC4uLm9wdHMsXG4gICAgICAgICAgICBjdXJyZW5jeVByb3BlcnR5OiBvcHRzPy5jdXJyZW5jeVByb3BlcnR5ID8gKG9wdHMuY3VycmVuY3lQcm9wZXJ0eSBhcyBzdHJpbmcpIDogdW5kZWZpbmVkXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0N1cnJlbmN5VW5zYWZlKG9wdHM/OiBDb2x1bW5DdXJyZW5jeU9wdHNUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbHVtblR5cGUgPSBDb2x1bW5UeXBlRW51bS5OdW1iZXI7XG4gICAgICAgIHRoaXMuX2NvbHVtbkRpc3BsYXlUeXBlID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkN1cnJlbmN5O1xuICAgICAgICB0aGlzLl9jdXJyZW5jeUNvZGUgPSBvcHRzPy5jdXJyZW5jeTtcbiAgICAgICAgdGhpcy5fY3VycmVuY3lQcm9wZXJ0eSA9IG9wdHM/LmN1cnJlbmN5UHJvcGVydHk7XG4gICAgICAgIHRoaXMuX2N1cnJlbmN5RGlzcGxheSA9IG9wdHM/LmN1cnJlbmN5RGlzcGxheTtcbiAgICAgICAgdGhpcy5fZGlzcGxheUZvcm1hdCA9XG4gICAgICAgICAgICBvcHRzPy5taW5JbnRlZ2VyRGlnaXRzIHx8IG9wdHM/Lm1pbkZyYWN0aW9uRGlnaXRzIHx8IG9wdHM/Lm1heEZyYWN0aW9uRGlnaXRzXG4gICAgICAgICAgICAgICAgPyBgJHtvcHRzPy5taW5JbnRlZ2VyRGlnaXRzID8/IDB9LiR7b3B0cz8ubWluRnJhY3Rpb25EaWdpdHMgPz8gMH0tJHtvcHRzPy5tYXhGcmFjdGlvbkRpZ2l0cyA/PyBvcHRzPy5taW5GcmFjdGlvbkRpZ2l0cyA/PyAwfWBcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5fbG9jYWxlID0gb3B0cz8ubG9jYWxlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNEYXRlKGRpc3BsYXlGb3JtYXQgPSAnZGQuTU0ueXl5eScpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29sdW1uVHlwZSA9IENvbHVtblR5cGVFbnVtLkRhdGU7XG4gICAgICAgIHRoaXMuX2NvbHVtbkRpc3BsYXlUeXBlID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkRhdGU7XG4gICAgICAgIHRoaXMuX2Rpc3BsYXlGb3JtYXQgPSBkaXNwbGF5Rm9ybWF0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNCb29sZWFuKHllcz86IHN0cmluZywgbm8/OiBzdHJpbmcsIGFzSWNvbiA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbHVtblR5cGUgPSBDb2x1bW5UeXBlRW51bS5Cb29sZWFuO1xuICAgICAgICB0aGlzLl9jb2x1bW5EaXNwbGF5VHlwZSA9IENvbHVtbkRpc3BsYXlUeXBlRW51bS5Cb29sZWFuO1xuICAgICAgICB0aGlzLl9ib29sZWFuQXNJY29uID0gYXNJY29uO1xuICAgICAgICB0aGlzLl9ib29sZWFuWWVzID0geWVzO1xuICAgICAgICB0aGlzLl9ib29sZWFuTm8gPSBubztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzRW51bVVuc2FmZShlbnVtRGVzYzogRW51bURlc2NyaXB0b3I8YW55Pik6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uRW51bTtcbiAgICAgICAgdGhpcy5fY29sdW1uRGlzcGxheVR5cGUgPSBDb2x1bW5EaXNwbGF5VHlwZUVudW0uRW51bTtcbiAgICAgICAgdGhpcy5fZW51bSA9IGVudW1EZXNjO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXNDdXN0b21Db21wb25lbnQoY3VzdG9tQ29tcG9uZW50VHlwZTogVHlwZTxJQ29sdW1uVmFsdWVDb21wb25lbnQ8VGFibGVNb2RlbD4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbHVtblR5cGUgPSBDb2x1bW5UeXBlRW51bS5DdXN0b207XG4gICAgICAgIHRoaXMuX2NvbHVtbkRpc3BsYXlUeXBlID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkNvbXBvbmVudDtcbiAgICAgICAgdGhpcy5fY3VzdG9tQ29tcG9uZW50VHlwZSA9IGN1c3RvbUNvbXBvbmVudFR5cGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc0h0bWwoKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbHVtbkRpc3BsYXlUeXBlID0gQ29sdW1uRGlzcGxheVR5cGVFbnVtLkh0bWw7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ2xhc3NOYW1lKGNsYXNzTmFtZT86IHN0cmluZywgaGVhZGVyQ2xhc3NOYW1lPzogc3RyaW5nLCBjbGFzc05hbWVNYXBGbj86IChjbGFzc05hbWU/OiBzdHJpbmcsIGl0ZW0/OiBUYWJsZU1vZGVsKSA9PiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY2xhc3NOYW1lID0gY2xhc3NOYW1lID8/ICcnO1xuICAgICAgICB0aGlzLl9oZWFkZXJDbGFzc05hbWUgPSBoZWFkZXJDbGFzc05hbWUgPz8gJyc7XG4gICAgICAgIHRoaXMuX2NsYXNzTmFtZU1hcEZuID0gY2xhc3NOYW1lTWFwRm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoV2lkdGgod2lkdGg/OiBudW1iZXIsIG1pbldpZHRoPzogbnVtYmVyLCBtYXhXaWR0aD86IG51bWJlcik6IHRoaXMge1xuICAgICAgICB0aGlzLl93aWR0aCA9IHdpZHRoID8/IG51bGw7XG4gICAgICAgIHRoaXMuX21pbldpZHRoID0gbWluV2lkdGggPz8gbnVsbDtcbiAgICAgICAgdGhpcy5fbWF4V2lkdGggPSBtYXhXaWR0aCA/PyBudWxsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRpdGxlKHRpdGxlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGl0bGUgPSB0aXRsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGaWx0ZXJVbnNhZmUoZm9yY2VTaW1wbGUgPSBmYWxzZSk6IEZpbHRlckRlc2NyaXB0b3I8YW55LCBUYWJsZU1vZGVsPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZS5hZGRGaWx0ZXJGcm9tQ29sdW1uRGVzY3JpcHRvclVuc2FmZSh0aGlzLCBmb3JjZVNpbXBsZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTb3J0VW5zYWZlKGlzRGVmYXVsdDogYm9vbGVhbiA9IGZhbHNlLCBhc2NlbmRpbmc/OiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxlLndpdGhTb3J0VW5zYWZlKHRoaXMucHJvcGVydHksIGlzRGVmYXVsdCwgYXNjZW5kaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDb3B5VG9DbGlwYm9hcmQoaGFzQ29weVRvQ2xpcGJvYXJkID0gdHJ1ZSwgY2xpcGJvYXJkVmFsdWVHZXR0ZXI/OiBHZXR0ZXJGbjxDb2x1bW5WYWx1ZSwgVGFibGVNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzQ29weVRvQ2xpcGJvYXJkID0gaGFzQ29weVRvQ2xpcGJvYXJkO1xuXG4gICAgICAgIGlmIChjbGlwYm9hcmRWYWx1ZUdldHRlcikge1xuICAgICAgICAgICAgdGhpcy5fY2xpcGJvYXJkVmFsdWVHZXR0ZXIgPSBjbGlwYm9hcmRWYWx1ZUdldHRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGVtcGxhdGUodGVtcGxhdGU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl90ZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEdldHRlcihnZXR0ZXI/OiBHZXR0ZXJGbjxDb2x1bW5WYWx1ZSwgVGFibGVNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZ2V0dGVyID0gZ2V0dGVyO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE11bHRpbGluZShpc011bHRpbGluZSA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXNNdWx0aWxpbmUgPSBpc011bHRpbGluZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhWYWx1ZUFzVG9vbHRpcCh2YWx1ZUFzVG9vbHRpcCA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzVmFsdWVBc1Rvb2x0aXAgPSB2YWx1ZUFzVG9vbHRpcDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSZW9yZGVyYWJsZShpc1Jlb3JkZXJhYmxlID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc1Jlb3JkZXJhYmxlID0gaXNSZW9yZGVyYWJsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUb2dnbGVhYmxlKGlzVG9nZ2xlYWJsZSA9IHRydWUsIGlzVmlzaWJsZSA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXNUb2dnbGVhYmxlID0gaXNUb2dnbGVhYmxlO1xuICAgICAgICB0aGlzLl9pc1Zpc2libGUgPSBpc1Zpc2libGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBsb2NhbGl6ZWQoZXhpc3RzUHJvcGVydHk/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgaWYgKGV4aXN0c1Byb3BlcnR5KSB7XG4gICAgICAgICAgICB0aGlzLl9sb2NhbGl6YXRpb25FeGlzdHNQcm9wZXJ0eSA9IGV4aXN0c1Byb3BlcnR5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHkgPSBgJHt0aGlzLl9wcm9wZXJ0eX1Mb2NhbGl6ZWRgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IENvbHVtbkRlc2NyaXB0b3I8Q29sdW1uTW9kZWwsIFRhYmxlTW9kZWwsIENvbHVtblZhbHVlPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgQ29sdW1uRGVzY3JpcHRvcjxDb2x1bW5Nb2RlbCwgVGFibGVNb2RlbCwgQ29sdW1uVmFsdWU+KHRoaXMuX3RhYmxlLCB0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29weUZpZWxkc1RvKG9iajogQ29sdW1uRGVzY3JpcHRvcjxDb2x1bW5Nb2RlbCwgVGFibGVNb2RlbCwgQ29sdW1uVmFsdWU+KSB7XG4gICAgICAgIG9iai5fdGl0bGUgPSB0aGlzLl90aXRsZTtcbiAgICAgICAgb2JqLl9jb2x1bW5UeXBlID0gdGhpcy5fY29sdW1uVHlwZTtcbiAgICAgICAgb2JqLl9jb2x1bW5EaXNwbGF5VHlwZSA9IHRoaXMuX2NvbHVtbkRpc3BsYXlUeXBlO1xuICAgICAgICBvYmouX2VudW0gPSB0aGlzLl9lbnVtO1xuICAgICAgICBvYmouX2Jvb2xlYW5Bc0ljb24gPSB0aGlzLl9ib29sZWFuQXNJY29uO1xuICAgICAgICBvYmouX2Jvb2xlYW5ZZXMgPSB0aGlzLl9ib29sZWFuWWVzO1xuICAgICAgICBvYmouX2Jvb2xlYW5ObyA9IHRoaXMuX2Jvb2xlYW5ObztcbiAgICAgICAgb2JqLl9sb2NhbGUgPSB0aGlzLl9sb2NhbGU7XG4gICAgICAgIG9iai5fY3VycmVuY3lDb2RlID0gdGhpcy5fY3VycmVuY3lDb2RlO1xuICAgICAgICBvYmouX2N1cnJlbmN5RGlzcGxheSA9IHRoaXMuX2N1cnJlbmN5RGlzcGxheTtcbiAgICAgICAgb2JqLl9jdXJyZW5jeVByb3BlcnR5ID0gdGhpcy5fY3VycmVuY3lQcm9wZXJ0eTtcbiAgICAgICAgb2JqLl9kaXNwbGF5Rm9ybWF0ID0gdGhpcy5fZGlzcGxheUZvcm1hdDtcbiAgICAgICAgb2JqLl9oZWFkZXJDbGFzc05hbWUgPSB0aGlzLl9oZWFkZXJDbGFzc05hbWU7XG4gICAgICAgIG9iai5fY2xhc3NOYW1lID0gdGhpcy5fY2xhc3NOYW1lO1xuICAgICAgICBvYmouX2NsYXNzTmFtZU1hcEZuID0gdGhpcy5fY2xhc3NOYW1lTWFwRm47XG4gICAgICAgIG9iai5fd2lkdGggPSB0aGlzLl93aWR0aDtcbiAgICAgICAgb2JqLl9taW5XaWR0aCA9IHRoaXMuX21pbldpZHRoO1xuICAgICAgICBvYmouX21heFdpZHRoID0gdGhpcy5fbWF4V2lkdGg7XG4gICAgICAgIG9iai5fY3VzdG9tQ29tcG9uZW50VHlwZSA9IHRoaXMuX2N1c3RvbUNvbXBvbmVudFR5cGU7XG4gICAgICAgIG9iai5faGFzQ29weVRvQ2xpcGJvYXJkID0gdGhpcy5faGFzQ29weVRvQ2xpcGJvYXJkO1xuICAgICAgICBvYmouX3RlbXBsYXRlID0gdGhpcy5fdGVtcGxhdGU7XG4gICAgICAgIG9iai5fZ2V0dGVyID0gdGhpcy5fZ2V0dGVyO1xuICAgICAgICBvYmouX2lzTXVsdGlsaW5lID0gdGhpcy5faXNNdWx0aWxpbmU7XG4gICAgICAgIG9iai5faGFzVmFsdWVBc1Rvb2x0aXAgPSB0aGlzLl9oYXNWYWx1ZUFzVG9vbHRpcDtcbiAgICAgICAgb2JqLl9pc1Jlb3JkZXJhYmxlID0gdGhpcy5faXNSZW9yZGVyYWJsZTtcbiAgICAgICAgb2JqLl9pc1RvZ2dsZWFibGUgPSB0aGlzLl9pc1RvZ2dsZWFibGU7XG4gICAgICAgIG9iai5faXNWaXNpYmxlID0gdGhpcy5faXNWaXNpYmxlO1xuICAgICAgICBvYmouX2lzTG9jYWxpemVkID0gdGhpcy5faXNMb2NhbGl6ZWQ7XG4gICAgICAgIG9iai5fbG9jYWxpemF0aW9uRXhpc3RzUHJvcGVydHkgPSB0aGlzLl9sb2NhbGl6YXRpb25FeGlzdHNQcm9wZXJ0eTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb2x1bW5EeW5hbWljRGVzY3JpcHRvciBleHRlbmRzIENvbHVtbkRlc2NyaXB0b3I8YW55LCBhbnk+IHtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX3RpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSBfdmlzaWJpbGl0eSA9IHRydWU7XG5cbiAgICAvLyBwcml2YXRlIF9maWx0ZXJTdGF0dXM7XG5cbiAgICBjb25zdHJ1Y3Rvcih0YWJsZTogSVRhYmxlRGVzY3JpcHRvckludGVybmFsPGFueT4sIHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIodGFibGUsIHByb3BlcnR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHZpc2liaWxpdHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmlsaXR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgY29sdW1uJ3MgdGl0bGUgYW5kIHJldHVybnMgdGhpcyBjb2x1bW5cbiAgICAgKiBAcGFyYW0gdGl0bGUgdGl0bGUgdG8gYmUgc2V0XG4gICAgICogQHBhcmFtIG92ZXJyaWRlIHNob3VsZCBjb2x1bW4gdGl0bGUgaWYgYWxsIHJlYWR5IHNldD9cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aFRpdGxlKHRpdGxlOiBzdHJpbmcsIG92ZXJyaWRlID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgaWYgKHRoaXMuX3RpdGxlID09IG51bGwgfHwgb3ZlcnJpZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpdGxlID0gdGl0bGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZGVmaW5lcyBhdXRvbWF0aWMgdHlwZSBhbmQgcmV0dXJucyB0aGlzIGNvbHVtblxuICAgICAqIEBwYXJhbSB2YWx1ZVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQXV0b21hdGljVHlwZSh2YWx1ZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIFRhYmxldmlld1V0aWwuc3RyaW5nQ29sdW1uQ29udmVydGVyKHRoaXMsIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2V0cyB2aXNpYmlsaXR5IHN0YXRlIGZvciBjb2x1bW4gYW5kIHJldHVybnMgdGhpcyBjb2x1bW5cbiAgICAgKiBAcGFyYW0gdmlzaWJpbGl0eVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoVmlzaWJpbGl0eSh2aXNpYmlsaXR5OiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Zpc2liaWxpdHkgPSB2aXNpYmlsaXR5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjcmVhdGVzIGRlZXAgY29weSBvZiBjb2x1bW4gZHluYW1pYyBkZXNjcmlwdG9yXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGNvcHkoKTogQ29sdW1uRHluYW1pY0Rlc2NyaXB0b3Ige1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IENvbHVtbkR5bmFtaWNEZXNjcmlwdG9yKHRoaXMuX3RhYmxlLCB0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICBkZXNjcmlwdG9yLl90aXRsZSA9IHRoaXMuX3RpdGxlO1xuICAgICAgICBkZXNjcmlwdG9yLl92aXNpYmlsaXR5ID0gdGhpcy5fdmlzaWJpbGl0eTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIHRvQ29sdW1uRGVzY3JpcHRvcih0YWJsZURlc2NyaXB0b3I6IElUYWJsZURlc2NyaXB0b3JJbnRlcm5hbDxhbnk+KTogQ29sdW1uRGVzY3JpcHRvcjxhbnksIGFueT4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IENvbHVtbkRlc2NyaXB0b3IodGFibGVEZXNjcmlwdG9yLCB0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuY29weUZpZWxkc1RvKGRlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG59XG4iXX0=
@@ -1,3 +1,4 @@
1
1
  export * from './column.descriptor';
2
+ export * from './sort.descriptor';
2
3
  export * from './table.descriptor';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL3RhYmxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29sdW1uLmRlc2NyaXB0b3InO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZS5kZXNjcmlwdG9yJztcbiJdfQ==
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL3RhYmxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb2x1bW4uZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL3NvcnQuZGVzY3JpcHRvcic7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLmRlc2NyaXB0b3InO1xuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1ucy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGVzY3JpcHRvcnMvdGFibGUvaW50ZXJuYWwvdGFibGUtY29sdW1ucy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb2x1bW5EZXNjcmlwdG9yfSBmcm9tICcuLi8uLi90YWJsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtbnNNYW5hZ2VJbnRlcmZhY2U8VGFibGVNb2RlbD4ge1xuICAgIGdldENvbHVtbihwcm9wZXJ0eToga2V5b2YgVGFibGVNb2RlbCk6IENvbHVtbkRlc2NyaXB0b3I8YW55LCBUYWJsZU1vZGVsPiB8IG51bGw7XG5cbiAgICBnZXRDb2x1bW5VbnNhZmUocHJvcGVydHk6IHN0cmluZyk6IENvbHVtbkRlc2NyaXB0b3I8YW55LCBUYWJsZU1vZGVsPiB8IG51bGw7XG5cbiAgICByZW1vdmVDb2x1bW4ocHJvcGVydHk6IGtleW9mIFRhYmxlTW9kZWwpOiB2b2lkO1xuXG4gICAgcmVtb3ZlQ29sdW1uVW5zYWZlKHByb3BlcnR5OiBzdHJpbmcpOiB2b2lkO1xuXG4gICAgYWRkQ29sdW1uRGVzY3JpcHRvcjxDb2x1bW5Nb2RlbD4oY29sdW1uOiBDb2x1bW5EZXNjcmlwdG9yPENvbHVtbk1vZGVsLCBUYWJsZU1vZGVsPik6IHRoaXM7XG5cbiAgICBhZGRDb2x1bW48UHJvcGVydHlLZXkgZXh0ZW5kcyBrZXlvZiBUYWJsZU1vZGVsPihwcm9wZXJ0eTogUHJvcGVydHlLZXkpOiBDb2x1bW5EZXNjcmlwdG9yPFRhYmxlTW9kZWxbUHJvcGVydHlLZXldLCBUYWJsZU1vZGVsPjtcblxuICAgIGFkZENvbHVtblVuc2FmZTxDb2x1bW5Nb2RlbCA9IGFueT4ocHJvcGVydHk6IHN0cmluZyk6IENvbHVtbkRlc2NyaXB0b3I8Q29sdW1uTW9kZWwsIFRhYmxlTW9kZWw+O1xuXG4gICAgYWRkQ29sdW1ucyguLi5wcm9wZXJ0aWVzOiAoa2V5b2YgVGFibGVNb2RlbClbXSk6IHRoaXM7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1ucy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGVzY3JpcHRvcnMvdGFibGUvaW50ZXJuYWwvdGFibGUtY29sdW1ucy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJTG9va3VwRGF0YVByb3ZpZGVyfSBmcm9tICcuLi8uLi8uLi9kYXRhLXByb3ZpZGVycyc7XG5pbXBvcnQge0VudW1Db25zdGFudFR5cGV9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7RmlsdGVyRGVzY3JpcHRvciwgRmlsdGVyTG9va3VwRGVzY3JpcHRvciwgRmlsdGVyTG9va3VwRW51bURlc2NyaXB0b3J9IGZyb20gJy4uLy4uL2ZpbHRlcic7XG5pbXBvcnQge0VudW1EZXNjcmlwdG9yfSBmcm9tICcuLi8uLi9tb2RlbCc7XG5pbXBvcnQge0NvbHVtbkRlc2NyaXB0b3IsIFNvcnREZXNjcmlwdG9yfSBmcm9tICcuLi8uLi90YWJsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtbnNNYW5hZ2VJbnRlcmZhY2U8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+IHtcbiAgICBnZXRDb2x1bW4ocHJvcGVydHk6IGtleW9mIFRhYmxlTW9kZWwpOiBDb2x1bW5EZXNjcmlwdG9yPGFueSwgVGFibGVNb2RlbD4gfCBudWxsO1xuXG4gICAgZ2V0Q29sdW1uVW5zYWZlKHByb3BlcnR5OiBzdHJpbmcpOiBDb2x1bW5EZXNjcmlwdG9yPGFueSwgVGFibGVNb2RlbD4gfCBudWxsO1xuXG4gICAgcmVtb3ZlQ29sdW1uKHByb3BlcnR5OiBrZXlvZiBUYWJsZU1vZGVsKTogdm9pZDtcblxuICAgIHJlbW92ZUNvbHVtblVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKTogdm9pZDtcblxuICAgIHdpdGhDb2x1bW48Q29sdW1uTW9kZWwsIENvbHVtblZhbHVlID0gQ29sdW1uTW9kZWw+KGNvbHVtbjogQ29sdW1uRGVzY3JpcHRvcjxDb2x1bW5Nb2RlbCwgVGFibGVNb2RlbCwgQ29sdW1uVmFsdWU+KTogdGhpcztcblxuICAgIGFkZENvbHVtbjxQcm9wZXJ0eUtleSBleHRlbmRzIGtleW9mIFRhYmxlTW9kZWw+KHByb3BlcnR5OiBQcm9wZXJ0eUtleSk6IENvbHVtbkRlc2NyaXB0b3I8Tm9uTnVsbGFibGU8VGFibGVNb2RlbFtQcm9wZXJ0eUtleV0+LCBUYWJsZU1vZGVsLCBUYWJsZU1vZGVsW1Byb3BlcnR5S2V5XT47XG5cbiAgICBhZGRDb2x1bW5FbnVtPFByb3BlcnR5S2V5IGV4dGVuZHMga2V5b2YgVGFibGVNb2RlbCwgRW51bSBleHRlbmRzIE5vbk51bGxhYmxlPFRhYmxlTW9kZWxbUHJvcGVydHlLZXldPj4oXG4gICAgICAgIHByb3BlcnR5OiBQcm9wZXJ0eUtleSxcbiAgICAgICAgZW51bURlc2M6IEVudW1EZXNjcmlwdG9yPEVudW0+XG4gICAgKTogQ29sdW1uRGVzY3JpcHRvcjxFbnVtLCBUYWJsZU1vZGVsLCBUYWJsZU1vZGVsW1Byb3BlcnR5S2V5XT47XG5cbiAgICBhZGRDb2x1bW5VbnNhZmU8Q29sdW1uTW9kZWwgPSBhbnk+KHByb3BlcnR5OiBzdHJpbmcpOiBDb2x1bW5EZXNjcmlwdG9yPENvbHVtbk1vZGVsLCBUYWJsZU1vZGVsPjtcblxuICAgIHdpdGhDb2x1bW5zKC4uLnByb3BlcnRpZXM6IChrZXlvZiBUYWJsZU1vZGVsKVtdKTogdGhpcztcblxuICAgIGdldFNvcnQocHJvcGVydHk6IFNvcnRzKTogU29ydERlc2NyaXB0b3I8VGFibGVNb2RlbD4gfCBudWxsO1xuXG4gICAgZ2V0U29ydFVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKTogU29ydERlc2NyaXB0b3I8VGFibGVNb2RlbD4gfCBudWxsO1xuXG4gICAgcmVtb3ZlU29ydChwcm9wZXJ0eTogU29ydHMpOiB2b2lkO1xuXG4gICAgcmVtb3ZlU29ydFVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKTogdm9pZDtcblxuICAgIGFkZFNvcnQocHJvcGVydHk6IFNvcnRzLCBpc0RlZmF1bHQ6IGJvb2xlYW4sIGFzY2VuZGluZz86IGJvb2xlYW4pOiBTb3J0RGVzY3JpcHRvcjxUYWJsZU1vZGVsPjtcblxuICAgIGFkZFNvcnRVbnNhZmUocHJvcGVydHk6IHN0cmluZywgaXNEZWZhdWx0OiBib29sZWFuLCBhc2NlbmRpbmc/OiBib29sZWFuKTogU29ydERlc2NyaXB0b3I8VGFibGVNb2RlbD47XG5cbiAgICB3aXRoU29ydChwcm9wZXJ0eTogU29ydHMsIGlzRGVmYXVsdDogYm9vbGVhbiwgYXNjZW5kaW5nPzogYm9vbGVhbik6IHRoaXM7XG5cbiAgICB3aXRoU29ydFVuc2FmZShwcm9wZXJ0eTogc3RyaW5nLCBpc0RlZmF1bHQ6IGJvb2xlYW4sIGFzY2VuZGluZz86IGJvb2xlYW4pOiB0aGlzO1xuXG4gICAgd2l0aFNvcnRzKC4uLnByb3BlcnRpZXM6IFNvcnRzW10pOiB0aGlzO1xuXG4gICAgd2l0aFNvcnRzVW5zYWZlKC4uLnByb3BlcnRpZXM6IHN0cmluZ1tdKTogdGhpcztcblxuICAgIGdldEZpbHRlcihwcm9wZXJ0eTogRmlsdGVycyk6IEZpbHRlckRlc2NyaXB0b3I8YW55LCBUYWJsZU1vZGVsPiB8IG51bGw7XG5cbiAgICBnZXRGaWx0ZXJVbnNhZmUocHJvcGVydHk6IHN0cmluZyk6IEZpbHRlckRlc2NyaXB0b3I8YW55LCBUYWJsZU1vZGVsPiB8IG51bGw7XG5cbiAgICByZW1vdmVGaWx0ZXIocHJvcGVydHk6IEZpbHRlcnMpOiB2b2lkO1xuXG4gICAgcmVtb3ZlRmlsdGVyVW5zYWZlKHByb3BlcnR5OiBzdHJpbmcpOiB2b2lkO1xuXG4gICAgYWRkRmlsdGVyPEZpbHRlck1vZGVsID0gRmlsdGVycyBleHRlbmRzIGtleW9mIFRhYmxlTW9kZWwgPyBUYWJsZU1vZGVsW0ZpbHRlcnNdIDogbmV2ZXI+KHByb3BlcnR5OiBGaWx0ZXJzKTogRmlsdGVyRGVzY3JpcHRvcjxGaWx0ZXJNb2RlbCwgVGFibGVNb2RlbD47XG5cbiAgICBhZGRGaWx0ZXJVbnNhZmU8RmlsdGVyTW9kZWw+KHByb3BlcnR5OiBzdHJpbmcpOiBGaWx0ZXJEZXNjcmlwdG9yPEZpbHRlck1vZGVsLCBUYWJsZU1vZGVsPjtcblxuICAgIGFkZEZpbHRlckxvb2t1cDxGaWx0ZXJNb2RlbCA9IEZpbHRlcnMgZXh0ZW5kcyBrZXlvZiBUYWJsZU1vZGVsID8gTm9uTnVsbGFibGU8VGFibGVNb2RlbFtGaWx0ZXJzXT4gOiBuZXZlciwgU2VydmljZSA9IHVuZGVmaW5lZD4oXG4gICAgICAgIHByb3BlcnR5OiBGaWx0ZXJzLFxuICAgICAgICBwcm92aWRlcj86IElMb29rdXBEYXRhUHJvdmlkZXI8RmlsdGVyTW9kZWwsIFNlcnZpY2U+LFxuICAgICAgICBvcHRpb25zVmFsdWVQcm9wZXJ0eT86IGtleW9mIEZpbHRlck1vZGVsXG4gICAgKTogRmlsdGVyTG9va3VwRGVzY3JpcHRvcjxGaWx0ZXJNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZT47XG5cbiAgICBhZGRGaWx0ZXJMb29rdXBVbnNhZmU8RmlsdGVyTW9kZWwsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgICAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgICAgICBwcm92aWRlcj86IElMb29rdXBEYXRhUHJvdmlkZXI8RmlsdGVyTW9kZWwsIFNlcnZpY2U+LFxuICAgICAgICBvcHRpb25zVmFsdWVQcm9wZXJ0eT86IHN0cmluZ1xuICAgICk6IEZpbHRlckxvb2t1cERlc2NyaXB0b3I8RmlsdGVyTW9kZWwsIFRhYmxlTW9kZWwsIFNlcnZpY2U+O1xuXG4gICAgYWRkRmlsdGVyTG9va3VwRW51bTxFbnVtPihwcm9wZXJ0eTogRmlsdGVycywgZW51bURlc2M6IEVudW1EZXNjcmlwdG9yPGFueT4sIG9wdGlvbnM/OiBBcnJheTxFbnVtPik6IEZpbHRlckxvb2t1cEVudW1EZXNjcmlwdG9yPEVudW0sIFRhYmxlTW9kZWw+O1xuXG4gICAgYWRkRmlsdGVyTG9va3VwRW51bVVuc2FmZTxFbnVtID0gRW51bUNvbnN0YW50VHlwZT4ocHJvcGVydHk6IHN0cmluZywgZW51bURlc2M6IEVudW1EZXNjcmlwdG9yPEVudW0+LCBvcHRpb25zPzogQXJyYXk8RW51bT4pOiBGaWx0ZXJMb29rdXBFbnVtRGVzY3JpcHRvcjxFbnVtLCBUYWJsZU1vZGVsPjtcblxuICAgIGFkZEZpbHRlckZyb21Db2x1bW4ocHJvcGVydHk6IEV4dHJhY3Q8RmlsdGVycywga2V5b2YgVGFibGVNb2RlbD4sIGZvcmNlU2ltcGxlOiBib29sZWFuKTogRmlsdGVyRGVzY3JpcHRvcjxhbnksIFRhYmxlTW9kZWw+O1xuXG4gICAgYWRkRmlsdGVyRnJvbUNvbHVtblVuc2FmZShwcm9wZXJ0eTogc3RyaW5nLCBmb3JjZVNpbXBsZTogYm9vbGVhbik6IEZpbHRlckRlc2NyaXB0b3I8YW55LCBUYWJsZU1vZGVsPjtcblxuICAgIHdpdGhGaWx0ZXJzRnJvbUNvbHVtbnMoLi4ucHJvcGVydGllczogRXh0cmFjdDxGaWx0ZXJzLCBrZXlvZiBUYWJsZU1vZGVsPltdKTogdGhpcztcblxuICAgIHdpdGhGaWx0ZXJzRnJvbUNvbHVtbnNVbnNhZmUoLi4ucHJvcGVydGllczogc3RyaW5nW10pOiB0aGlzO1xuXG4gICAgd2l0aEZpbHRlcjxGaWx0ZXJNb2RlbD4ocHJvcGVydHk6IEZpbHRlcnMsIGZpbHRlcjogRmlsdGVyRGVzY3JpcHRvcjxGaWx0ZXJNb2RlbCwgVGFibGVNb2RlbD4pOiB0aGlzO1xuXG4gICAgd2l0aEZpbHRlclVuc2FmZTxGaWx0ZXJNb2RlbD4oZmlsdGVyOiBGaWx0ZXJEZXNjcmlwdG9yPEZpbHRlck1vZGVsLCBUYWJsZU1vZGVsPik6IHRoaXM7XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL3RhYmxlL2ludGVybmFsL3RhYmxlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge01vZGVsRGVzY3JpcHRvcn0gZnJvbSAnLi4vLi4vbW9kZWwnO1xuXG4vKipcbiAqIFRoaXMgb25lIGlzIGludGVybmFsIG9ubHkgdG8gcHJldmVudCBjaXJjdWxhciBkZXBlbmRlbmNpZXMgYmV0d2VlbiBlZGl0b3IgYW5kIGZpZWxkcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVGFibGVEZXNjcmlwdG9ySW50ZXJuYWw8VGFibGVNb2RlbD4ge1xuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8VGFibGVNb2RlbD47XG5cbiAgICB3aXRoRGVmYXVsdFNvcnQocHJvcGVydHk6IGtleW9mIFRhYmxlTW9kZWwsIGFzYz86IGJvb2xlYW4pOiB0aGlzO1xuXG4gICAgd2l0aERlZmF1bHRTb3J0VW5zYWZlKHByb3BlcnR5OiBzdHJpbmcsIGFzYzogYm9vbGVhbik6IHRoaXM7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL3RhYmxlL2ludGVybmFsL3RhYmxlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZpbHRlckRlc2NyaXB0b3J9IGZyb20gJy4uLy4uL2ZpbHRlcic7XG5pbXBvcnQge01vZGVsRGVzY3JpcHRvcn0gZnJvbSAnLi4vLi4vbW9kZWwnO1xuaW1wb3J0IHtDb2x1bW5EZXNjcmlwdG9yfSBmcm9tICcuLi9jb2x1bW4uZGVzY3JpcHRvcic7XG5cbi8qKlxuICogVGhpcyBvbmUgaXMgaW50ZXJuYWwgb25seSB0byBwcmV2ZW50IGNpcmN1bGFyIGRlcGVuZGVuY2llcyBiZXR3ZWVuIGVkaXRvciBhbmQgZmllbGRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZURlc2NyaXB0b3JJbnRlcm5hbDxUYWJsZU1vZGVsPiB7XG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxUYWJsZU1vZGVsPjtcblxuICAgIHdpdGhEZWZhdWx0U29ydFVuc2FmZShwcm9wZXJ0eTogc3RyaW5nLCBhc2NlbmRpbmc/OiBib29sZWFuLCBvcmRlcj86IG51bWJlciwgZW5hYmxlZD86IGJvb2xlYW4pOiB0aGlzO1xuXG4gICAgd2l0aFNvcnRVbnNhZmUocHJvcGVydHk6IHN0cmluZywgaXNEZWZhdWx0OiBib29sZWFuLCBhc2NlbmRpbmc/OiBib29sZWFuKTogdGhpcztcblxuICAgIGFkZEZpbHRlckZyb21Db2x1bW5EZXNjcmlwdG9yVW5zYWZlPENvbHVtbk1vZGVsLCBDb2x1bW5WYWx1ZT4oXG4gICAgICAgIGNvbHVtbjogQ29sdW1uRGVzY3JpcHRvcjxDb2x1bW5Nb2RlbCwgVGFibGVNb2RlbCwgQ29sdW1uVmFsdWU+LFxuICAgICAgICBmb3JjZVNpbXBsZTogYm9vbGVhblxuICAgICk6IEZpbHRlckRlc2NyaXB0b3I8YW55LCBUYWJsZU1vZGVsPjtcbn1cbiJdfQ==
@@ -0,0 +1,45 @@
1
+ export class SortDescriptor {
2
+ constructor(property) {
3
+ this._defaultIsEnabled = false;
4
+ this._defaultIsAscending = undefined;
5
+ this._defaultOrder = undefined;
6
+ this._property = property;
7
+ this._showOnColumn = property;
8
+ }
9
+ get property() {
10
+ return this._property;
11
+ }
12
+ get showOnColumn() {
13
+ return this._showOnColumn;
14
+ }
15
+ get defaultIsEnabled() {
16
+ return this._defaultIsEnabled;
17
+ }
18
+ get defaultIsAscending() {
19
+ return this._defaultIsAscending;
20
+ }
21
+ get defaultOrder() {
22
+ return this._defaultOrder;
23
+ }
24
+ withShowOnColumn(property) {
25
+ return this.withShowOnColumnUnsafe(property);
26
+ }
27
+ withShowOnColumnUnsafe(property) {
28
+ this._showOnColumn = property;
29
+ return this;
30
+ }
31
+ withDefaultSort(enabled = true, ascending, order) {
32
+ this._defaultIsEnabled = enabled;
33
+ this._defaultIsAscending = true;
34
+ this._defaultOrder = order;
35
+ return this;
36
+ }
37
+ copy() {
38
+ const descriptor = new SortDescriptor(this._property);
39
+ descriptor._defaultIsEnabled = this._defaultIsEnabled;
40
+ descriptor._defaultIsAscending = this._defaultIsAscending;
41
+ descriptor._defaultOrder = this._defaultOrder;
42
+ return descriptor;
43
+ }
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9kZXNjcmlwdG9ycy90YWJsZS9zb3J0LmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGNBQWM7SUFRdkIsWUFBWSxRQUFnQjtRQUpsQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsd0JBQW1CLEdBQWEsU0FBUyxDQUFDO1FBQzFDLGtCQUFhLEdBQVksU0FBUyxDQUFDO1FBR3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsZ0JBQWdCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUN6QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsUUFBMEI7UUFDOUMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBa0IsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxRQUFnQjtRQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sZUFBZSxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQUUsU0FBbUIsRUFBRSxLQUFjO1FBQ3RFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUM7UUFDakMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUNoQyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sSUFBSTtRQUNQLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFhLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRSxVQUFVLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ3RELFVBQVUsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUM7UUFDMUQsVUFBVSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzlDLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBTb3J0RGVzY3JpcHRvcjxUYWJsZU1vZGVsPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9wcm9wZXJ0eTogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfc2hvd09uQ29sdW1uOiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX2RlZmF1bHRJc0VuYWJsZWQgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgX2RlZmF1bHRJc0FzY2VuZGluZz86IGJvb2xlYW4gPSB1bmRlZmluZWQ7XG4gICAgcHJvdGVjdGVkIF9kZWZhdWx0T3JkZXI/OiBudW1iZXIgPSB1bmRlZmluZWQ7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3Byb3BlcnR5ID0gcHJvcGVydHk7XG4gICAgICAgIHRoaXMuX3Nob3dPbkNvbHVtbiA9IHByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNob3dPbkNvbHVtbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3dPbkNvbHVtbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRlZmF1bHRJc0VuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0SXNFbmFibGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGVmYXVsdElzQXNjZW5kaW5nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdElzQXNjZW5kaW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGVmYXVsdE9yZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdE9yZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU2hvd09uQ29sdW1uKHByb3BlcnR5OiBrZXlvZiBUYWJsZU1vZGVsKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhTaG93T25Db2x1bW5VbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFNob3dPbkNvbHVtblVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Nob3dPbkNvbHVtbiA9IHByb3BlcnR5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERlZmF1bHRTb3J0KGVuYWJsZWQgPSB0cnVlLCBhc2NlbmRpbmc/OiBib29sZWFuLCBvcmRlcj86IG51bWJlcik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kZWZhdWx0SXNFbmFibGVkID0gZW5hYmxlZDtcbiAgICAgICAgdGhpcy5fZGVmYXVsdElzQXNjZW5kaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fZGVmYXVsdE9yZGVyID0gb3JkZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IFNvcnREZXNjcmlwdG9yPFRhYmxlTW9kZWw+IHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBTb3J0RGVzY3JpcHRvcjxUYWJsZU1vZGVsPih0aGlzLl9wcm9wZXJ0eSk7XG4gICAgICAgIGRlc2NyaXB0b3IuX2RlZmF1bHRJc0VuYWJsZWQgPSB0aGlzLl9kZWZhdWx0SXNFbmFibGVkO1xuICAgICAgICBkZXNjcmlwdG9yLl9kZWZhdWx0SXNBc2NlbmRpbmcgPSB0aGlzLl9kZWZhdWx0SXNBc2NlbmRpbmc7XG4gICAgICAgIGRlc2NyaXB0b3IuX2RlZmF1bHRPcmRlciA9IHRoaXMuX2RlZmF1bHRPcmRlcjtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuIl19