@mediusinc/mng-commons 5.0.0-rc.2 → 5.0.0-rc.4

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 (204) hide show
  1. package/core/data-providers/base-data-provider.factory.d.ts +13 -0
  2. package/core/data-providers/base.data-provider.d.ts +2 -14
  3. package/core/descriptors/editor.descriptor.d.ts +1 -1
  4. package/core/descriptors/tableview.descriptor.d.ts +5 -5
  5. package/core/directives/component.directive.d.ts +2 -2
  6. package/core/index.d.ts +1 -0
  7. package/core/security/permission.service.d.ts +1 -0
  8. package/core/services/commons-router.service.d.ts +3 -3
  9. package/core/services/commons.service.d.ts +31 -42
  10. package/core/services/tokens/module-config.token.d.ts +2 -2
  11. package/esm2022/core/components/notification/notification-wrapper.component.mjs +3 -3
  12. package/esm2022/core/components/pages/error/error.page.component.mjs +3 -3
  13. package/esm2022/core/components/pages/not-found/not-found.page.component.mjs +3 -3
  14. package/esm2022/core/data-providers/base-data-provider.factory.mjs +28 -0
  15. package/esm2022/core/data-providers/base.data-provider.mjs +1 -31
  16. package/esm2022/core/descriptors/editor.descriptor.mjs +1 -1
  17. package/esm2022/core/descriptors/tableview.descriptor.mjs +1 -1
  18. package/esm2022/core/directives/component.directive.mjs +10 -7
  19. package/esm2022/core/index.mjs +2 -1
  20. package/esm2022/core/security/permission.service.mjs +4 -2
  21. package/esm2022/core/services/commons-init.service.mjs +2 -2
  22. package/esm2022/core/services/commons-router.service.mjs +16 -15
  23. package/esm2022/core/services/commons.service.mjs +109 -166
  24. package/esm2022/core/services/tokens/module-config.token.mjs +1 -1
  25. package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +4 -4
  26. package/esm2022/form/api/data-providers/lookup-data-provider.factory.mjs +31 -0
  27. package/esm2022/form/api/data-providers/lookup.data-provider.mjs +1 -31
  28. package/esm2022/form/api/index.mjs +2 -1
  29. package/esm2022/form/components/autocomplete/autocomplete.component.mjs +92 -83
  30. package/esm2022/form/components/dropdown/dropdown.component.mjs +145 -87
  31. package/esm2022/model/data-providers/base-from-type-data-provider.factory.mjs +8 -0
  32. package/esm2022/model/descriptors/enum.descriptor.mjs +3 -6
  33. package/esm2022/model/descriptors/model.descriptor.mjs +22 -9
  34. package/esm2022/model/descriptors/type.descriptor.mjs +3 -9
  35. package/esm2022/model/index.mjs +3 -1
  36. package/esm2022/table/api/data-providers/table-data-provider.factory.mjs +33 -0
  37. package/esm2022/table/api/data-providers/table.data-provider.mjs +1 -31
  38. package/esm2022/table/api/descriptors/sort.descriptor.mjs +2 -2
  39. package/esm2022/table/api/descriptors/table-descriptor.factory.mjs +89 -0
  40. package/esm2022/table/api/descriptors/table.descriptor.mjs +4 -139
  41. package/esm2022/table/api/helpers/table-descriptor-helpers.mjs +97 -0
  42. package/esm2022/table/api/index.mjs +4 -1
  43. package/esm2022/table/components/column-filter-full/column-filter-full.component.mjs +6 -7
  44. package/esm2022/table/components/column-value/column-value.component.mjs +2 -2
  45. package/esm2022/table/components/table/table.component.mjs +5 -5
  46. package/esm2022/table/pipes/locale-default-row-class.pipe.mjs +2 -2
  47. package/esm2022/table/services/data-list.service.mjs +1 -1
  48. package/esm2022/tableview/action/components/action/action.component.mjs +140 -188
  49. package/esm2022/tableview/action/components/editor/action-editor.component.mjs +56 -66
  50. package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +119 -141
  51. package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +21 -39
  52. package/esm2022/tableview/action/components/route/action-route.component.mjs +17 -23
  53. package/esm2022/tableview/action/components/table/action-table.component.mjs +1 -1
  54. package/esm2022/tableview/action/services/action-executor.service.mjs +9 -9
  55. package/esm2022/tableview/action/services/navigation.service.mjs +3 -2
  56. package/esm2022/tableview/action/services/view-container.service.mjs +5 -21
  57. package/esm2022/tableview/api/action/descriptors/action-descriptor.factory.mjs +119 -0
  58. package/esm2022/tableview/api/action/descriptors/action-editor-descriptor.factory.mjs +77 -0
  59. package/esm2022/tableview/api/action/descriptors/action-editor.descriptor.mjs +20 -80
  60. package/esm2022/tableview/api/action/descriptors/action-link-descriptor.factory.mjs +45 -0
  61. package/esm2022/tableview/api/action/descriptors/action-link.descriptor.mjs +1 -32
  62. package/esm2022/tableview/api/action/descriptors/action.descriptor.mjs +3 -69
  63. package/esm2022/tableview/api/action/models/action-component.model.mjs +1 -1
  64. package/esm2022/tableview/api/action/models/execution/view-container.model.mjs +1 -1
  65. package/esm2022/tableview/api/editor/data-providers/editor-data-provider.factory.mjs +33 -0
  66. package/esm2022/tableview/api/editor/data-providers/editor.data-provider.mjs +1 -31
  67. package/esm2022/tableview/api/editor/descriptors/editor-descriptor.factory.mjs +81 -0
  68. package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +7 -133
  69. package/esm2022/tableview/api/editor/descriptors/field-action.descriptor.mjs +1 -1
  70. package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +13 -5
  71. package/esm2022/tableview/api/editor/descriptors/field-group.descriptor.mjs +1 -1
  72. package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +4 -4
  73. package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +3 -3
  74. package/esm2022/tableview/api/editor/descriptors/field-validation.descriptor.mjs +1 -1
  75. package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +1 -1
  76. package/esm2022/tableview/api/editor/helpers/editor-descriptor-helpers.mjs +95 -0
  77. package/esm2022/tableview/api/editor/helpers/field-validators.mjs +7 -7
  78. package/esm2022/tableview/api/editor/models/editor-fields.model.mjs +1 -1
  79. package/esm2022/tableview/api/editor/models/field-action-context.model.mjs +1 -1
  80. package/esm2022/tableview/api/editor/models/field-validation.model.mjs +2 -0
  81. package/esm2022/tableview/api/editor/models/field.model.mjs +1 -1
  82. package/esm2022/tableview/api/editor/models/form-editor.event.mjs +1 -1
  83. package/esm2022/tableview/api/editor/models/form-editor.interface.mjs +1 -1
  84. package/esm2022/tableview/api/editor/models/formly-field.model.mjs +1 -1
  85. package/esm2022/tableview/api/index.mjs +11 -1
  86. package/esm2022/tableview/api/tableview/data-providers/tableview-data-provider.factory.mjs +47 -0
  87. package/esm2022/tableview/api/tableview/data-providers/tableview.data-provider.mjs +5 -46
  88. package/esm2022/tableview/api/tableview/descriptors/tableview-descriptor.factory.mjs +111 -0
  89. package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +15 -168
  90. package/esm2022/tableview/api/tableview/helpers/files-export.mjs +2 -2
  91. package/esm2022/tableview/api/tableview/helpers/tableview-create.mjs +5 -5
  92. package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +53 -18
  93. package/esm2022/tableview/api/tableview/helpers/tableview-descriptor-helpers.mjs +110 -0
  94. package/esm2022/tableview/api/tableview/helpers/tableview-input-builder.mjs +2 -2
  95. package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +16 -11
  96. package/esm2022/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.mjs +6 -2
  97. package/esm2022/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +10 -11
  98. package/esm2022/tableview/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.mjs +1 -1
  99. package/esm2022/tableview/editor/components/formly/fields/formly-field-datepicker/formly-field-datepicker.component.mjs +4 -4
  100. package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +9 -11
  101. package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +4 -4
  102. package/esm2022/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +16 -18
  103. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +20 -22
  104. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +18 -20
  105. package/esm2022/tableview/editor/helpers/editor-formly.mjs +27 -6
  106. package/esm2022/tableview/editor/services/form-editor.service.mjs +96 -0
  107. package/esm2022/tableview/index.mjs +2 -1
  108. package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +3 -3
  109. package/fesm2022/mediusinc-mng-commons-core.mjs +155 -210
  110. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  111. package/fesm2022/mediusinc-mng-commons-filter.mjs +3 -3
  112. package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -1
  113. package/fesm2022/mediusinc-mng-commons-form-api.mjs +18 -18
  114. package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
  115. package/fesm2022/mediusinc-mng-commons-form.mjs +236 -169
  116. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
  117. package/fesm2022/mediusinc-mng-commons-model.mjs +43 -33
  118. package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -1
  119. package/fesm2022/mediusinc-mng-commons-table-api.mjs +192 -146
  120. package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
  121. package/fesm2022/mediusinc-mng-commons-table.mjs +11 -12
  122. package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
  123. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +822 -590
  124. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  125. package/fesm2022/mediusinc-mng-commons-tableview.mjs +564 -571
  126. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  127. package/form/api/data-providers/lookup-data-provider.factory.d.ts +18 -0
  128. package/form/api/data-providers/lookup.data-provider.d.ts +2 -14
  129. package/form/api/index.d.ts +1 -0
  130. package/form/components/autocomplete/autocomplete.component.d.ts +31 -23
  131. package/form/components/dropdown/dropdown.component.d.ts +38 -25
  132. package/model/data-providers/base-from-type-data-provider.factory.d.ts +8 -0
  133. package/model/descriptors/enum.descriptor.d.ts +1 -2
  134. package/model/descriptors/model.descriptor.d.ts +11 -4
  135. package/model/descriptors/type.descriptor.d.ts +2 -4
  136. package/model/index.d.ts +1 -0
  137. package/package.json +7 -7
  138. package/table/api/data-providers/table-data-provider.factory.d.ts +18 -0
  139. package/table/api/data-providers/table.data-provider.d.ts +2 -14
  140. package/table/api/descriptors/table-descriptor.factory.d.ts +44 -0
  141. package/table/api/descriptors/table.descriptor.d.ts +4 -65
  142. package/table/api/helpers/table-descriptor-helpers.d.ts +44 -0
  143. package/table/api/index.d.ts +3 -0
  144. package/table/components/column-filter-full/column-filter-full.component.d.ts +5 -4
  145. package/table/components/table/table.component.d.ts +11 -11
  146. package/table/services/data-list.service.d.ts +9 -10
  147. package/tableview/action/components/action/action.component.d.ts +37 -44
  148. package/tableview/action/components/editor/action-editor.component.d.ts +20 -18
  149. package/tableview/action/components/editor/injector-context/action-editor-injector-context.component.d.ts +23 -23
  150. package/tableview/action/components/localization/data-language-dropdown.component.d.ts +11 -14
  151. package/tableview/action/components/route/action-route.component.d.ts +6 -11
  152. package/tableview/action/components/table/action-table.component.d.ts +3 -3
  153. package/tableview/action/services/view-container.service.d.ts +3 -9
  154. package/tableview/api/action/descriptors/action-descriptor.factory.d.ts +36 -0
  155. package/tableview/api/action/descriptors/action-editor-descriptor.factory.d.ts +31 -0
  156. package/tableview/api/action/descriptors/action-editor.descriptor.d.ts +17 -37
  157. package/tableview/api/action/descriptors/action-link-descriptor.factory.d.ts +15 -0
  158. package/tableview/api/action/descriptors/action-link.descriptor.d.ts +1 -9
  159. package/tableview/api/action/descriptors/action.descriptor.d.ts +4 -27
  160. package/tableview/api/action/models/action-component.model.d.ts +8 -8
  161. package/tableview/api/action/models/execution/view-container.model.d.ts +4 -3
  162. package/tableview/api/editor/data-providers/editor-data-provider.factory.d.ts +18 -0
  163. package/tableview/api/editor/data-providers/editor.data-provider.d.ts +2 -14
  164. package/tableview/api/editor/descriptors/editor-descriptor.factory.d.ts +44 -0
  165. package/tableview/api/editor/descriptors/editor.descriptor.d.ts +34 -90
  166. package/tableview/api/editor/descriptors/field-action.descriptor.d.ts +3 -3
  167. package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +15 -13
  168. package/tableview/api/editor/descriptors/field-group.descriptor.d.ts +7 -6
  169. package/tableview/api/editor/descriptors/field-lookup.descriptor.d.ts +2 -2
  170. package/tableview/api/editor/descriptors/field-many.descriptor.d.ts +8 -8
  171. package/tableview/api/editor/descriptors/field-validation.descriptor.d.ts +6 -6
  172. package/tableview/api/editor/descriptors/field.descriptor.d.ts +1 -1
  173. package/tableview/api/editor/helpers/editor-descriptor-helpers.d.ts +43 -0
  174. package/tableview/api/editor/helpers/field-validators.d.ts +1 -1
  175. package/tableview/api/editor/models/editor-fields.model.d.ts +24 -22
  176. package/tableview/api/editor/models/field-action-context.model.d.ts +10 -8
  177. package/tableview/api/editor/models/field-validation.model.d.ts +26 -0
  178. package/tableview/api/editor/models/field.model.d.ts +0 -19
  179. package/tableview/api/editor/models/form-editor.event.d.ts +24 -16
  180. package/tableview/api/editor/models/form-editor.interface.d.ts +2 -1
  181. package/tableview/api/editor/models/formly-custom-field.model.d.ts +1 -1
  182. package/tableview/api/editor/models/formly-field.model.d.ts +4 -4
  183. package/tableview/api/index.d.ts +10 -0
  184. package/tableview/api/tableview/data-providers/tableview-data-provider.factory.d.ts +25 -0
  185. package/tableview/api/tableview/data-providers/tableview.data-provider.d.ts +3 -20
  186. package/tableview/api/tableview/descriptors/tableview-descriptor.factory.d.ts +49 -0
  187. package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +40 -100
  188. package/tableview/api/tableview/helpers/tableview-create.d.ts +2 -2
  189. package/tableview/api/tableview/helpers/tableview-default-actions.d.ts +4 -2
  190. package/tableview/api/tableview/helpers/tableview-descriptor-helpers.d.ts +42 -0
  191. package/tableview/api/tableview/helpers/tableview-input-builder.d.ts +1 -1
  192. package/tableview/editor/components/editor/form-editor.component.d.ts +6 -4
  193. package/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.d.ts +5 -3
  194. package/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +1 -0
  195. package/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +1 -1
  196. package/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +1 -1
  197. package/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +3 -4
  198. package/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +3 -4
  199. package/tableview/editor/helpers/editor-formly.d.ts +1 -1
  200. package/tableview/editor/services/form-editor.service.d.ts +39 -0
  201. package/tableview/index.d.ts +1 -0
  202. package/tableview/tableview/components/route/tableview-route.component.d.ts +1 -1
  203. package/tableview/tableview/components/tableview/tableview.component.d.ts +1 -1
  204. package/version-info.json +7 -7
@@ -0,0 +1,45 @@
1
+ import { ModelDescriptor } from '@mediusinc/mng-commons/model';
2
+ import { ActionLinkDescriptorInst } from './action-link.descriptor';
3
+ export class ActionLinkDescriptor {
4
+ static create(actionName, cfg) {
5
+ return actionLink(actionName, cfg);
6
+ }
7
+ static fromModel(model, actionName, cfg) {
8
+ return actionLinkFromModel(model, actionName, cfg);
9
+ }
10
+ static fromClass(type, actionName, cfg) {
11
+ return actionLinkFromClass(type, actionName, cfg);
12
+ }
13
+ static fromAction(action) {
14
+ return actionLinkFromAction(action);
15
+ }
16
+ }
17
+ export function actionLink(actionName, cfg) {
18
+ return new ActionLinkDescriptorInst(actionName, {
19
+ ...cfg
20
+ });
21
+ }
22
+ export function actionLinkFromModel(model, actionName, cfg) {
23
+ return new ActionLinkDescriptorInst(actionName, {
24
+ model,
25
+ ...cfg
26
+ });
27
+ }
28
+ export function actionLinkFromClass(type, actionName, cfg) {
29
+ return new ActionLinkDescriptorInst(actionName, {
30
+ model: ModelDescriptor.fromClass(type, cfg?.idProperty, cfg?.titleProperty, cfg?.i18nBaseKey),
31
+ ...cfg
32
+ });
33
+ }
34
+ export function actionLinkFromAction(action) {
35
+ const descriptor = new ActionLinkDescriptorInst(action.actionName, { model: action.model });
36
+ action.copyTo(descriptor);
37
+ descriptor.withRunConfirmationDescriptor();
38
+ descriptor.withRunNotificationSuccess(undefined, undefined, false);
39
+ descriptor.withRunNotificationError(undefined, undefined, false);
40
+ descriptor.withAfterRunAction();
41
+ descriptor.withOnRunErrorAction();
42
+ descriptor.withSubactionsAsMenu(false);
43
+ return descriptor;
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxpbmstZGVzY3JpcHRvci5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1saW5rLWRlc2NyaXB0b3IuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFHN0QsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFHbEUsTUFBTSxPQUFPLG9CQUFvQjtJQUN0QixNQUFNLENBQUMsTUFBTSxDQUFjLFVBQWtCLEVBQUUsR0FBMEM7UUFDNUYsT0FBTyxVQUFVLENBQVEsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFRLEtBQTZCLEVBQUUsVUFBa0IsRUFBRSxHQUEwQztRQUN4SCxPQUFPLG1CQUFtQixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFTLENBQVEsSUFBc0IsRUFBRSxVQUFrQixFQUFFLEdBQWdEO1FBQ3ZILE9BQU8sbUJBQW1CLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU0sTUFBTSxDQUFDLFVBQVUsQ0FBUSxNQUFtQztRQUMvRCxPQUFPLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDSjtBQUVELE1BQU0sVUFBVSxVQUFVLENBQWMsVUFBa0IsRUFBRSxHQUEwQztJQUNsRyxPQUFPLElBQUksd0JBQXdCLENBQVEsVUFBVSxFQUFFO1FBQ25ELEdBQUcsR0FBRztLQUNULENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQVEsS0FBNkIsRUFBRSxVQUFrQixFQUFFLEdBQTBDO0lBQ3BJLE9BQU8sSUFBSSx3QkFBd0IsQ0FBUSxVQUFVLEVBQUU7UUFDbkQsS0FBSztRQUNMLEdBQUcsR0FBRztLQUNULENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQVEsSUFBc0IsRUFBRSxVQUFrQixFQUFFLEdBQWdEO0lBQ25JLE9BQU8sSUFBSSx3QkFBd0IsQ0FBUSxVQUFVLEVBQUU7UUFDbkQsS0FBSyxFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDO1FBQ3BHLEdBQUcsR0FBRztLQUNULENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQVEsTUFBbUM7SUFDM0UsTUFBTSxVQUFVLEdBQUcsSUFBSSx3QkFBd0IsQ0FBUSxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO0lBRWpHLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFMUIsVUFBVSxDQUFDLDZCQUE2QixFQUFFLENBQUM7SUFFM0MsVUFBVSxDQUFDLDBCQUEwQixDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkUsVUFBVSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFakUsVUFBVSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDaEMsVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFFbEMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXZDLE9BQU8sVUFBVSxDQUFDO0FBQ3RCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NsYXNzVHlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlRnJvbUNsYXNzT3B0c30gZnJvbSAnLi9hY3Rpb24tZGVzY3JpcHRvci5mYWN0b3J5JztcbmltcG9ydCB7QWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi1saW5rLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUsIEFjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi5kZXNjcmlwdG9yJztcblxuZXhwb3J0IGNsYXNzIEFjdGlvbkxpbmtEZXNjcmlwdG9yIHtcbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZTxNb2RlbCA9IGFueT4oYWN0aW9uTmFtZTogc3RyaW5nLCBjZmc/OiBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIGFjdGlvbkxpbms8TW9kZWw+KGFjdGlvbk5hbWUsIGNmZyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tTW9kZWw8TW9kZWw+KG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LCBhY3Rpb25OYW1lOiBzdHJpbmcsIGNmZz86IEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSkge1xuICAgICAgICByZXR1cm4gYWN0aW9uTGlua0Zyb21Nb2RlbChtb2RlbCwgYWN0aW9uTmFtZSwgY2ZnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21DbGFzczxNb2RlbD4odHlwZTogQ2xhc3NUeXBlPE1vZGVsPiwgYWN0aW9uTmFtZTogc3RyaW5nLCBjZmc/OiBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlRnJvbUNsYXNzT3B0czxNb2RlbD4pIHtcbiAgICAgICAgcmV0dXJuIGFjdGlvbkxpbmtGcm9tQ2xhc3ModHlwZSwgYWN0aW9uTmFtZSwgY2ZnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21BY3Rpb248TW9kZWw+KGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWw+KSB7XG4gICAgICAgIHJldHVybiBhY3Rpb25MaW5rRnJvbUFjdGlvbihhY3Rpb24pO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkxpbms8TW9kZWwgPSBhbnk+KGFjdGlvbk5hbWU6IHN0cmluZywgY2ZnPzogQWN0aW9uRGVzY3JpcHRvckNyZWF0ZU9wdHNQYXJlbnRUeXBlKSB7XG4gICAgcmV0dXJuIG5ldyBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8TW9kZWw+KGFjdGlvbk5hbWUsIHtcbiAgICAgICAgLi4uY2ZnXG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhY3Rpb25MaW5rRnJvbU1vZGVsPE1vZGVsPihtb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPiwgYWN0aW9uTmFtZTogc3RyaW5nLCBjZmc/OiBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUpIHtcbiAgICByZXR1cm4gbmV3IEFjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdDxNb2RlbD4oYWN0aW9uTmFtZSwge1xuICAgICAgICBtb2RlbCxcbiAgICAgICAgLi4uY2ZnXG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhY3Rpb25MaW5rRnJvbUNsYXNzPE1vZGVsPih0eXBlOiBDbGFzc1R5cGU8TW9kZWw+LCBhY3Rpb25OYW1lOiBzdHJpbmcsIGNmZz86IEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVGcm9tQ2xhc3NPcHRzPE1vZGVsPikge1xuICAgIHJldHVybiBuZXcgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PE1vZGVsPihhY3Rpb25OYW1lLCB7XG4gICAgICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3IuZnJvbUNsYXNzPE1vZGVsPih0eXBlLCBjZmc/LmlkUHJvcGVydHksIGNmZz8udGl0bGVQcm9wZXJ0eSwgY2ZnPy5pMThuQmFzZUtleSksXG4gICAgICAgIC4uLmNmZ1xuICAgIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uTGlua0Zyb21BY3Rpb248TW9kZWw+KGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWw+KSB7XG4gICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8TW9kZWw+KGFjdGlvbi5hY3Rpb25OYW1lLCB7bW9kZWw6IGFjdGlvbi5tb2RlbH0pO1xuXG4gICAgYWN0aW9uLmNvcHlUbyhkZXNjcmlwdG9yKTtcblxuICAgIGRlc2NyaXB0b3Iud2l0aFJ1bkNvbmZpcm1hdGlvbkRlc2NyaXB0b3IoKTtcblxuICAgIGRlc2NyaXB0b3Iud2l0aFJ1bk5vdGlmaWNhdGlvblN1Y2Nlc3ModW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKTtcbiAgICBkZXNjcmlwdG9yLndpdGhSdW5Ob3RpZmljYXRpb25FcnJvcih1bmRlZmluZWQsIHVuZGVmaW5lZCwgZmFsc2UpO1xuXG4gICAgZGVzY3JpcHRvci53aXRoQWZ0ZXJSdW5BY3Rpb24oKTtcbiAgICBkZXNjcmlwdG9yLndpdGhPblJ1bkVycm9yQWN0aW9uKCk7XG5cbiAgICBkZXNjcmlwdG9yLndpdGhTdWJhY3Rpb25zQXNNZW51KGZhbHNlKTtcblxuICAgIHJldHVybiBkZXNjcmlwdG9yO1xufVxuIl19
@@ -1,4 +1,3 @@
1
- import { ModelDescriptor } from '@mediusinc/mng-commons/model';
2
1
  import { ActionDescriptorInst } from './action.descriptor';
3
2
  export class ActionLinkDescriptorInst extends ActionDescriptorInst {
4
3
  constructor(actionName = 'link', cfg) {
@@ -56,34 +55,4 @@ export class ActionLinkDescriptorInst extends ActionDescriptorInst {
56
55
  return this;
57
56
  }
58
57
  }
59
- export class ActionLinkDescriptor {
60
- static create(actionName, cfg) {
61
- return new ActionLinkDescriptorInst(actionName, {
62
- ...cfg
63
- });
64
- }
65
- static fromModel(model, actionName, cfg) {
66
- return new ActionLinkDescriptorInst(actionName, {
67
- model,
68
- ...cfg
69
- });
70
- }
71
- static fromClass(type, actionName, cfg) {
72
- return new ActionLinkDescriptorInst(actionName, {
73
- model: ModelDescriptor.fromClass(type, cfg?.idProperty, cfg?.titleProperty, cfg?.i18nBaseKey),
74
- ...cfg
75
- });
76
- }
77
- static fromAction(action) {
78
- const descriptor = new ActionLinkDescriptorInst(action.actionName, { model: action.model });
79
- action.copyTo(descriptor);
80
- descriptor.withRunConfirmationDescriptor();
81
- descriptor.withRunNotificationSuccess(undefined, undefined, false);
82
- descriptor.withRunNotificationError(undefined, undefined, false);
83
- descriptor.withAfterRunAction();
84
- descriptor.withOnRunErrorAction();
85
- descriptor.withSubactionsAsMenu(false);
86
- return descriptor;
87
- }
88
- }
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxpbmsuZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUU3RCxPQUFPLEVBQWlILG9CQUFvQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFHekssTUFBTSxPQUFPLHdCQUFnQyxTQUFRLG9CQUFzQztJQVN2RixZQUFZLFVBQVUsR0FBRyxNQUFNLEVBQUUsR0FBZ0Q7UUFDN0UsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQVRuQixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1Ysa0JBQWEsR0FBYSxFQUFFLENBQUM7UUFHN0IsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsWUFBTyxHQUFHLE9BQU8sQ0FBQztRQUNsQixpQkFBWSxHQUFHLEtBQUssQ0FBQztJQUk3QixDQUFDO0lBRUQsSUFBVyxHQUFHO1FBQ1YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFXLG1CQUFtQjtRQUMxQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFTSxRQUFRLENBQUMsR0FBVztRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNoQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sY0FBYyxDQUFDLEdBQUcsWUFBc0I7UUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGVBQWUsQ0FBQyxXQUFtQixFQUFFLG1CQUF5QztRQUNqRixJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztRQUNoQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsbUJBQW1CLENBQUM7UUFDaEQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGNBQWMsQ0FBQyxVQUFVLEdBQUcsS0FBSztRQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sVUFBVSxDQUFDLFNBQTZCLE9BQU87UUFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxXQUFvQjtRQUNyQyxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sb0JBQW9CO0lBQ3RCLE1BQU0sQ0FBQyxNQUFNLENBQWMsVUFBa0IsRUFBRSxHQUEwQztRQUM1RixPQUFPLElBQUksd0JBQXdCLENBQVEsVUFBVSxFQUFFO1lBQ25ELEdBQUcsR0FBRztTQUNULENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFRLEtBQTZCLEVBQUUsVUFBa0IsRUFBRSxHQUEwQztRQUN4SCxPQUFPLElBQUksd0JBQXdCLENBQVEsVUFBVSxFQUFFO1lBQ25ELEtBQUs7WUFDTCxHQUFHLEdBQUc7U0FDVCxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FBUSxJQUFzQixFQUFFLFVBQWtCLEVBQUUsR0FBZ0Q7UUFDdkgsT0FBTyxJQUFJLHdCQUF3QixDQUFRLFVBQVUsRUFBRTtZQUNuRCxLQUFLLEVBQUUsZUFBZSxDQUFDLFNBQVMsQ0FBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUM7WUFDcEcsR0FBRyxHQUFHO1NBQ1QsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLE1BQU0sQ0FBQyxVQUFVLENBQVEsTUFBbUM7UUFDL0QsTUFBTSxVQUFVLEdBQUcsSUFBSSx3QkFBd0IsQ0FBUSxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO1FBRWpHLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFMUIsVUFBVSxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFFM0MsVUFBVSxDQUFDLDBCQUEwQixDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkUsVUFBVSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFakUsVUFBVSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDaEMsVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFFbEMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXZDLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGFyYW1zLCBRdWVyeVBhcmFtc0hhbmRsaW5nfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge0NsYXNzVHlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yQ29uc3RydWN0b3JPcHRzVHlwZSwgQWN0aW9uRGVzY3JpcHRvckNyZWF0ZUZyb21DbGFzc09wdHMsIEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSwgQWN0aW9uRGVzY3JpcHRvckluc3R9IGZyb20gJy4vYWN0aW9uLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgdHlwZSBBY3Rpb25MaW5rRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0czxNb2RlbD4gPSBPbWl0PEFjdGlvbkRlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHNUeXBlPE1vZGVsLCB1bmRlZmluZWQ+LCAnc2VydmljZVR5cGUnIHwgJ2RhdGFQcm92aWRlcic+O1xuZXhwb3J0IGNsYXNzIEFjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdDxNb2RlbD4gZXh0ZW5kcyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkPiB7XG4gICAgcHJpdmF0ZSBfdXJsID0gJyc7XG4gICAgcHJpdmF0ZSBfcGF0aFNlZ21lbnRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHByaXZhdGUgX3F1ZXJ5UGFyYW1zPzogUGFyYW1zO1xuICAgIHByaXZhdGUgX3F1ZXJ5UGFyYW1zSGFuZGxpbmc/OiBRdWVyeVBhcmFtc0hhbmRsaW5nO1xuICAgIHByaXZhdGUgX3JlcGxhY2VVcmwgPSBmYWxzZTtcbiAgICBwcml2YXRlIF90YXJnZXQgPSAnX3NlbGYnO1xuICAgIHByaXZhdGUgX2lzU3R5bGVMaW5rID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihhY3Rpb25OYW1lID0gJ2xpbmsnLCBjZmc/OiBBY3Rpb25MaW5rRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0czxNb2RlbD4pIHtcbiAgICAgICAgc3VwZXIoYWN0aW9uTmFtZSwgY2ZnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fdXJsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGF0aFNlZ21lbnRzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhdGhTZWdtZW50cztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHF1ZXJ5UGFyYW1zKCk6IFBhcmFtcyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9xdWVyeVBhcmFtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHF1ZXJ5UGFyYW1zSGFuZGxpbmcoKTogUXVlcnlQYXJhbXNIYW5kbGluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9xdWVyeVBhcmFtc0hhbmRsaW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVwbGFjZVVybCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcGxhY2VVcmw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0YXJnZXQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhcmdldDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzU3R5bGVMaW5rKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTdHlsZUxpbms7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhIcmVmKHVybDogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3VybCA9IHVybDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSb3V0ZXJMaW5rKC4uLnBhdGhTZWdtZW50czogc3RyaW5nW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcGF0aFNlZ21lbnRzID0gcGF0aFNlZ21lbnRzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zOiBQYXJhbXMsIHF1ZXJ5UGFyYW1zSGFuZGxpbmc/OiBRdWVyeVBhcmFtc0hhbmRsaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3F1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXM7XG4gICAgICAgIHRoaXMuX3F1ZXJ5UGFyYW1zSGFuZGxpbmcgPSBxdWVyeVBhcmFtc0hhbmRsaW5nO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJlcGxhY2VVcmwocmVwbGFjZVVybCA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3JlcGxhY2VVcmwgPSByZXBsYWNlVXJsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhcmdldCh0YXJnZXQ6ICdfc2VsZicgfCAnX2JsYW5rJyA9ICdfc2VsZicpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFyZ2V0ID0gdGFyZ2V0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFN0eWxlTGluayhpc1N0eWxlTGluazogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc1N0eWxlTGluayA9IGlzU3R5bGVMaW5rO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25MaW5rRGVzY3JpcHRvciB7XG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGU8TW9kZWwgPSBhbnk+KGFjdGlvbk5hbWU6IHN0cmluZywgY2ZnPzogQWN0aW9uRGVzY3JpcHRvckNyZWF0ZU9wdHNQYXJlbnRUeXBlKSB7XG4gICAgICAgIHJldHVybiBuZXcgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PE1vZGVsPihhY3Rpb25OYW1lLCB7XG4gICAgICAgICAgICAuLi5jZmdcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tTW9kZWw8TW9kZWw+KG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+LCBhY3Rpb25OYW1lOiBzdHJpbmcsIGNmZz86IEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSkge1xuICAgICAgICByZXR1cm4gbmV3IEFjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdDxNb2RlbD4oYWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICAuLi5jZmdcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tQ2xhc3M8TW9kZWw+KHR5cGU6IENsYXNzVHlwZTxNb2RlbD4sIGFjdGlvbk5hbWU6IHN0cmluZywgY2ZnPzogQWN0aW9uRGVzY3JpcHRvckNyZWF0ZUZyb21DbGFzc09wdHM8TW9kZWw+KSB7XG4gICAgICAgIHJldHVybiBuZXcgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PE1vZGVsPihhY3Rpb25OYW1lLCB7XG4gICAgICAgICAgICBtb2RlbDogTW9kZWxEZXNjcmlwdG9yLmZyb21DbGFzczxNb2RlbD4odHlwZSwgY2ZnPy5pZFByb3BlcnR5LCBjZmc/LnRpdGxlUHJvcGVydHksIGNmZz8uaTE4bkJhc2VLZXkpLFxuICAgICAgICAgICAgLi4uY2ZnXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUFjdGlvbjxNb2RlbD4oYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbD4pIHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8TW9kZWw+KGFjdGlvbi5hY3Rpb25OYW1lLCB7bW9kZWw6IGFjdGlvbi5tb2RlbH0pO1xuXG4gICAgICAgIGFjdGlvbi5jb3B5VG8oZGVzY3JpcHRvcik7XG5cbiAgICAgICAgZGVzY3JpcHRvci53aXRoUnVuQ29uZmlybWF0aW9uRGVzY3JpcHRvcigpO1xuXG4gICAgICAgIGRlc2NyaXB0b3Iud2l0aFJ1bk5vdGlmaWNhdGlvblN1Y2Nlc3ModW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKTtcbiAgICAgICAgZGVzY3JpcHRvci53aXRoUnVuTm90aWZpY2F0aW9uRXJyb3IodW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKTtcblxuICAgICAgICBkZXNjcmlwdG9yLndpdGhBZnRlclJ1bkFjdGlvbigpO1xuICAgICAgICBkZXNjcmlwdG9yLndpdGhPblJ1bkVycm9yQWN0aW9uKCk7XG5cbiAgICAgICAgZGVzY3JpcHRvci53aXRoU3ViYWN0aW9uc0FzTWVudShmYWxzZSk7XG5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuIl19
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxpbmsuZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2FjdGlvbi9kZXNjcmlwdG9ycy9hY3Rpb24tbGluay5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBc0Msb0JBQW9CLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUk5RixNQUFNLE9BQU8sd0JBQWdDLFNBQVEsb0JBQXNDO0lBU3ZGLFlBQVksVUFBVSxHQUFHLE1BQU0sRUFBRSxHQUFnRDtRQUM3RSxLQUFLLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBVG5CLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixrQkFBYSxHQUFhLEVBQUUsQ0FBQztRQUc3QixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixZQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBSTdCLENBQUM7SUFFRCxJQUFXLEdBQUc7UUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsbUJBQW1CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVNLFFBQVEsQ0FBQyxHQUFXO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxjQUFjLENBQUMsR0FBRyxZQUFzQjtRQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sZUFBZSxDQUFDLFdBQW1CLEVBQUUsbUJBQXlDO1FBQ2pGLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxtQkFBbUIsQ0FBQztRQUNoRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sY0FBYyxDQUFDLFVBQVUsR0FBRyxLQUFLO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxVQUFVLENBQUMsU0FBNkIsT0FBTztRQUNsRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sYUFBYSxDQUFDLFdBQW9CO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7UGFyYW1zLCBRdWVyeVBhcmFtc0hhbmRsaW5nfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHNUeXBlLCBBY3Rpb25EZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi9hY3Rpb24uZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkxpbmtEZXNjcmlwdG9yQ29uc3RydWN0b3JPcHRzPE1vZGVsPiA9IE9taXQ8QWN0aW9uRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8TW9kZWwsIHVuZGVmaW5lZD4sICdzZXJ2aWNlVHlwZScgfCAnZGF0YVByb3ZpZGVyJz47XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8TW9kZWw+IGV4dGVuZHMgQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZD4ge1xuICAgIHByaXZhdGUgX3VybCA9ICcnO1xuICAgIHByaXZhdGUgX3BhdGhTZWdtZW50czogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIF9xdWVyeVBhcmFtcz86IFBhcmFtcztcbiAgICBwcml2YXRlIF9xdWVyeVBhcmFtc0hhbmRsaW5nPzogUXVlcnlQYXJhbXNIYW5kbGluZztcbiAgICBwcml2YXRlIF9yZXBsYWNlVXJsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfdGFyZ2V0ID0gJ19zZWxmJztcbiAgICBwcml2YXRlIF9pc1N0eWxlTGluayA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoYWN0aW9uTmFtZSA9ICdsaW5rJywgY2ZnPzogQWN0aW9uTGlua0Rlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHM8TW9kZWw+KSB7XG4gICAgICAgIHN1cGVyKGFjdGlvbk5hbWUsIGNmZyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBhdGhTZWdtZW50cygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXRoU2VnbWVudHM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBxdWVyeVBhcmFtcygpOiBQYXJhbXMgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fcXVlcnlQYXJhbXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBxdWVyeVBhcmFtc0hhbmRsaW5nKCk6IFF1ZXJ5UGFyYW1zSGFuZGxpbmcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fcXVlcnlQYXJhbXNIYW5kbGluZztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJlcGxhY2VVcmwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXBsYWNlVXJsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFyZ2V0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YXJnZXQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1N0eWxlTGluaygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU3R5bGVMaW5rO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSHJlZih1cmw6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl91cmwgPSB1cmw7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUm91dGVyTGluayguLi5wYXRoU2VnbWVudHM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3BhdGhTZWdtZW50cyA9IHBhdGhTZWdtZW50cztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhRdWVyeVBhcmFtcyhxdWVyeVBhcmFtczogUGFyYW1zLCBxdWVyeVBhcmFtc0hhbmRsaW5nPzogUXVlcnlQYXJhbXNIYW5kbGluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9xdWVyeVBhcmFtcyA9IHF1ZXJ5UGFyYW1zO1xuICAgICAgICB0aGlzLl9xdWVyeVBhcmFtc0hhbmRsaW5nID0gcXVlcnlQYXJhbXNIYW5kbGluZztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSZXBsYWNlVXJsKHJlcGxhY2VVcmwgPSBmYWxzZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9yZXBsYWNlVXJsID0gcmVwbGFjZVVybDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUYXJnZXQodGFyZ2V0OiAnX3NlbGYnIHwgJ19ibGFuaycgPSAnX3NlbGYnKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhcmdldCA9IHRhcmdldDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTdHlsZUxpbmsoaXNTdHlsZUxpbms6IGJvb2xlYW4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXNTdHlsZUxpbmsgPSBpc1N0eWxlTGluaztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuIl19
@@ -1,23 +1,9 @@
1
1
  import { of } from 'rxjs';
2
- import { CommonsInternalError, DataProvider, LoggerService, StyleLevelEnum, StyleSizeEnum, findReflectTypeName } from '@mediusinc/mng-commons/core';
2
+ import { CommonsInternalError, DataProviderInst, LoggerService, StyleLevelEnum, StyleSizeEnum, findReflectTypeName } from '@mediusinc/mng-commons/core';
3
3
  import { ActionButtonDescriptor, ButtonStyleBuilder } from '@mediusinc/mng-commons/form/api';
4
- import { ModelDescriptor } from '@mediusinc/mng-commons/model';
5
4
  import { ActionActivationTriggerEnum, ActionPositionEnum, ActionTypeEnum } from '../models/action.type';
6
5
  import { TableviewActionDefaultCategories } from '../models/tableview-action-default-categories.model';
7
6
  import { ActionConfirmationDescriptor } from './action-confirmation.descriptor';
8
- export const actionGetProviderCfgObj = (serviceOrDataProvider) => {
9
- const cfg = {};
10
- if (serviceOrDataProvider) {
11
- if (serviceOrDataProvider.isDataProvider) {
12
- // type casting needed, cause there was no other way found to differentiate the types
13
- cfg.dataProvider = serviceOrDataProvider;
14
- }
15
- else {
16
- cfg.serviceType = serviceOrDataProvider;
17
- }
18
- }
19
- return cfg;
20
- };
21
7
  export class ActionDescriptorInst {
22
8
  constructor(actionName, cfg) {
23
9
  this._type = ActionTypeEnum.Direct;
@@ -44,7 +30,7 @@ export class ActionDescriptorInst {
44
30
  this._parentProperty = cfg?.parentProperty;
45
31
  this.setI18nModelActionBaseKey();
46
32
  if (cfg?.serviceType) {
47
- this._dataProvider = DataProvider.fromAnyParam(this._model?.type, cfg.serviceType);
33
+ this._dataProvider = new DataProviderInst(this._model?.type, cfg.serviceType);
48
34
  }
49
35
  else if (cfg?.dataProvider) {
50
36
  this._dataProvider = cfg.dataProvider;
@@ -318,48 +304,6 @@ export class ActionDescriptorInst {
318
304
  return descriptor;
319
305
  }
320
306
  }
321
- export class ActionDescriptor extends ActionDescriptorInst {
322
- constructor() {
323
- super('internal');
324
- }
325
- static create(actionName, cfg) {
326
- return new ActionDescriptorInst(actionName, {
327
- ...cfg
328
- });
329
- }
330
- static createWithProvider(serviceProvider, actionName, cfg) {
331
- return new ActionDescriptorInst(actionName, {
332
- ...actionGetProviderCfgObj(serviceProvider),
333
- ...cfg
334
- });
335
- }
336
- static fromModel(model, actionName, cfg) {
337
- return new ActionDescriptorInst(actionName, {
338
- model,
339
- ...cfg
340
- });
341
- }
342
- static fromModelWithProvider(model, serviceProvider, actionName, cfg) {
343
- return new ActionDescriptorInst(actionName, {
344
- model,
345
- ...actionGetProviderCfgObj(serviceProvider),
346
- ...cfg
347
- });
348
- }
349
- static fromClass(type, actionName, cfg) {
350
- return new ActionDescriptorInst(actionName, {
351
- model: ModelDescriptor.fromClass(type, cfg?.idProperty, cfg?.titleProperty, cfg?.i18nBaseKey),
352
- ...cfg
353
- });
354
- }
355
- static fromClassWithProvider(classType, serviceProvider, actionName, cfg) {
356
- return new ActionDescriptorInst(actionName, {
357
- model: ModelDescriptor.fromClass(classType, cfg?.idProperty, cfg?.titleProperty, cfg?.i18nBaseKey),
358
- ...actionGetProviderCfgObj(serviceProvider),
359
- ...cfg
360
- });
361
- }
362
- }
363
307
  export class ActionDeleteDescriptorInst extends ActionDescriptorInst {
364
308
  static { this.ACTION_NAME = 'delete'; }
365
309
  constructor(model, cfg) {
@@ -372,14 +316,4 @@ export class ActionDeleteDescriptorInst extends ActionDescriptorInst {
372
316
  this.button.withLabel(null).withIcon('pi pi-trash');
373
317
  }
374
318
  }
375
- export class ActionDeleteDescriptor {
376
- static create(model) {
377
- return new ActionDeleteDescriptorInst(model);
378
- }
379
- static createWithProvider(model, serviceProvider) {
380
- return new ActionDeleteDescriptorInst(model, {
381
- ...actionGetProviderCfgObj(serviceProvider)
382
- });
383
- }
384
- }
385
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUV4QixPQUFPLEVBR0gsb0JBQW9CLEVBQ3BCLFlBQVksRUFHWixhQUFhLEVBRWIsY0FBYyxFQUNkLGFBQWEsRUFDYixtQkFBbUIsRUFDdEIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUMsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFJN0QsT0FBTyxFQUFDLDJCQUEyQixFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBRXRHLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQ3JHLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBOEI5RSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFpQixxQkFBMEQsRUFBRSxFQUFFO0lBQ2xILE1BQU0sR0FBRyxHQUEyRCxFQUFFLENBQUM7SUFDdkUsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQ3hCLElBQUsscUJBQXVDLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDMUQscUZBQXFGO1lBQ3JGLEdBQUcsQ0FBQyxZQUFZLEdBQUcscUJBQXNELENBQUM7UUFDOUUsQ0FBQzthQUFNLENBQUM7WUFDSixHQUFHLENBQUMsV0FBVyxHQUFHLHFCQUFrRCxDQUFDO1FBQ3pFLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDLENBQUM7QUFFRixNQUFNLE9B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WUFDekQsR0FBRyx1QkFBdUIsQ0FBQyxlQUFlLENBQUM7U0FDOUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rpb25Ub2tlbiwgVHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7b2Z9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgIEFQZXJtaXNzaW9ucyxcbiAgICBDbGFzc1R5cGUsXG4gICAgQ29tbW9uc0ludGVybmFsRXJyb3IsXG4gICAgRGF0YVByb3ZpZGVyLFxuICAgIElBY3Rpb25EZXNjcmlwdG9yLFxuICAgIElEYXRhUHJvdmlkZXIsXG4gICAgTG9nZ2VyU2VydmljZSxcbiAgICBTZXJ2aWNlQ2xhc3NUeXBlLFxuICAgIFN0eWxlTGV2ZWxFbnVtLFxuICAgIFN0eWxlU2l6ZUVudW0sXG4gICAgZmluZFJlZmxlY3RUeXBlTmFtZVxufSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtBY3Rpb25CdXR0b25EZXNjcmlwdG9yLCBCdXR0b25TdHlsZUJ1aWxkZXJ9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvZm9ybS9hcGknO1xuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge0lBY3Rpb25Db21wb25lbnR9IGZyb20gJy4uL21vZGVscy9hY3Rpb24tY29tcG9uZW50Lm1vZGVsJztcbmltcG9ydCB7QWN0aW9uUnVuRm5UeXBlLCBBY3Rpb25WYWxpZGF0aW9uRm5UeXBlfSBmcm9tICcuLi9tb2RlbHMvYWN0aW9uLWRlc2NyaXB0b3IudHlwZXMnO1xuaW1wb3J0IHtBY3Rpb25BY3RpdmF0aW9uVHJpZ2dlckVudW0sIEFjdGlvblBvc2l0aW9uRW51bSwgQWN0aW9uVHlwZUVudW19IGZyb20gJy4uL21vZGVscy9hY3Rpb24udHlwZSc7XG5pbXBvcnQge0lBY3Rpb25Db250ZXh0fSBmcm9tICcuLi9tb2RlbHMvZXhlY3V0aW9uL2FjdGlvbi1jb250ZXh0Lm1vZGVsJztcbmltcG9ydCB7VGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXN9IGZyb20gJy4uL21vZGVscy90YWJsZXZpZXctYWN0aW9uLWRlZmF1bHQtY2F0ZWdvcmllcy5tb2RlbCc7XG5pbXBvcnQge0FjdGlvbkNvbmZpcm1hdGlvbkRlc2NyaXB0b3J9IGZyb20gJy4vYWN0aW9uLWNvbmZpcm1hdGlvbi5kZXNjcmlwdG9yJztcblxuZXhwb3J0IHR5cGUgQWN0aW9uRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8TW9kZWwsIFNlcnZpY2U+ID0gQWN0aW9uRGVzY3JpcHRvckNyZWF0ZU9wdHNQYXJlbnRUeXBlICZcbiAgICBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4gJiB7XG4gICAgICAgIG1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPjtcbiAgICB9O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlRnJvbUNsYXNzT3B0czxNb2RlbD4gPSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c01vZGVsPE1vZGVsPiAmIEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzSTE4blR5cGUgJiBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGU7XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgZGF0YVByb3ZpZGVyPzogSURhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZT47XG59O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c0kxOG5UeXBlID0ge1xuICAgIGkxOG5CYXNlS2V5Pzogc3RyaW5nIHwgQ2xhc3NUeXBlPGFueT47XG59O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c01vZGVsPE1vZGVsPiA9IHtcbiAgICBpZFByb3BlcnR5Pzoga2V5b2YgTW9kZWw7XG4gICAgdGl0bGVQcm9wZXJ0eT86IGtleW9mIE1vZGVsO1xufTtcblxuZXhwb3J0IHR5cGUgQWN0aW9uRGVzY3JpcHRvckNyZWF0ZU9wdHNQYXJlbnRUeXBlID0ge1xuICAgIHBhcmVudFR5cGU/OiBDbGFzc1R5cGU8dW5rbm93bj47XG4gICAgcGFyZW50UHJvcGVydHk/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25Qcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+ID0gU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPiB8IElEYXRhUHJvdmlkZXI8TW9kZWwsIFNlcnZpY2U+O1xuXG5leHBvcnQgY29uc3QgYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmogPSA8TW9kZWwsIFNlcnZpY2U+KHNlcnZpY2VPckRhdGFQcm92aWRlcj86IEFjdGlvblByb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4pID0+IHtcbiAgICBjb25zdCBjZmc6IEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPiA9IHt9O1xuICAgIGlmIChzZXJ2aWNlT3JEYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgaWYgKChzZXJ2aWNlT3JEYXRhUHJvdmlkZXIgYXMgSURhdGFQcm92aWRlcikuaXNEYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgICAgIC8vIHR5cGUgY2FzdGluZyBuZWVkZWQsIGNhdXNlIHRoZXJlIHdhcyBubyBvdGhlciB3YXkgZm91bmQgdG8gZGlmZmVyZW50aWF0ZSB0aGUgdHlwZXNcbiAgICAgICAgICAgIGNmZy5kYXRhUHJvdmlkZXIgPSBzZXJ2aWNlT3JEYXRhUHJvdmlkZXIgYXMgSURhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZT47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjZmcuc2VydmljZVR5cGUgPSBzZXJ2aWNlT3JEYXRhUHJvdmlkZXIgYXMgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPjtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY2ZnO1xufTtcblxuZXhwb3J0IGNsYXNzIEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlID0gYW55PiBpbXBsZW1lbnRzIElBY3Rpb25EZXNjcmlwdG9yPE1vZGVsLCBTZXJ2aWNlPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9tb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9hY3Rpb25OYW1lOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9hY3Rpb25OYW1lTG9uZzogc3RyaW5nO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfcGFyZW50VHlwZT86IENsYXNzVHlwZTx1bmtub3duPjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3BhcmVudFR5cGVOYW1lPzogc3RyaW5nO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfcGFyZW50UHJvcGVydHk/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2RhdGFQcm92aWRlcj86IElEYXRhUHJvdmlkZXI8TW9kZWwsIFNlcnZpY2U+O1xuXG4gICAgcHJvdGVjdGVkIF9pMThuTW9kZWxBY3Rpb25CYXNlS2V5Pzogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF90eXBlOiBBY3Rpb25UeXBlRW51bSA9IEFjdGlvblR5cGVFbnVtLkRpcmVjdDtcbiAgICBwcm90ZWN0ZWQgX2FjdGl2YXRpb25UcmlnZ2VyOiBBY3Rpb25BY3RpdmF0aW9uVHJpZ2dlckVudW0gPSBBY3Rpb25BY3RpdmF0aW9uVHJpZ2dlckVudW0uT25DbGljaztcbiAgICBwcm90ZWN0ZWQgX3Bvc2l0aW9uOiBBY3Rpb25Qb3NpdGlvbkVudW0gPSBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0O1xuICAgIHByb3RlY3RlZCBfbGV2ZWw6IFN0eWxlTGV2ZWxFbnVtID0gU3R5bGVMZXZlbEVudW0uRGVmYXVsdDtcbiAgICBwcml2YXRlIF9wb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXM/OiBzdHJpbmdbXTtcbiAgICBwcm90ZWN0ZWQgX3RhYmxldmlld0NhdGVnb3J5Pzogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF9yb3V0ZVVybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcm90ZWN0ZWQgX3J1bkZ1bmN0aW9uPzogQWN0aW9uUnVuRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBwcm90ZWN0ZWQgX2lzVmlzaWJsZUZ1bmN0aW9uPzogQWN0aW9uVmFsaWRhdGlvbkZuVHlwZTxNb2RlbCwgU2VydmljZT47XG4gICAgcHJvdGVjdGVkIF9pc0VuYWJsZWRGdW5jdGlvbj86IEFjdGlvblZhbGlkYXRpb25GblR5cGU8TW9kZWwsIFNlcnZpY2U+O1xuXG4gICAgcHJvdGVjdGVkIF9ydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yPzogQWN0aW9uQ29uZmlybWF0aW9uRGVzY3JpcHRvcjxNb2RlbD47XG5cbiAgICBwcm90ZWN0ZWQgX2hhc1J1bk5vdGlmaWNhdGlvblN1Y2Nlc3MgPSB0cnVlO1xuICAgIHByb3RlY3RlZCBfcnVuTm90aWZpY2F0aW9uU3VjY2Vzc1RpdGxlPzogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfcnVuTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX2hhc1J1bk5vdGlmaWNhdGlvbkVycm9yID0gdHJ1ZTtcbiAgICBwcm90ZWN0ZWQgX3J1bk5vdGlmaWNhdGlvbkVycm9yVGl0bGU/OiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIF9ydW5Ob3RpZmljYXRpb25FcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX2FmdGVyUnVuQWN0aW9uPzogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55PiB8ICgoY3R4OiBJQWN0aW9uQ29udGV4dDxNb2RlbCwgYW55PikgPT4gQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pik7XG4gICAgcHJvdGVjdGVkIF9vblJ1bkVycm9yQWN0aW9uPzogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWw+IHwgKChjdHg6IElBY3Rpb25Db250ZXh0PE1vZGVsLCBhbnk+KSA9PiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbD4pO1xuXG4gICAgLy8gc2VjdXJpdHlcbiAgICBwcm90ZWN0ZWQgX3Blcm1pc3Npb25zPzogQVBlcm1pc3Npb25zO1xuXG4gICAgLy9idXR0b25cbiAgICBwcm90ZWN0ZWQgX2J1dHRvbiA9IG5ldyBBY3Rpb25CdXR0b25EZXNjcmlwdG9yKCk7XG5cbiAgICAvLyBtdWx0aXBsZSByb3cgc2VsZWN0aW9uXG4gICAgcHJvdGVjdGVkIF9oYXNJdGVtc1NlbGVjdGlvbiA9IGZhbHNlO1xuXG4gICAgLy8gY3VzdG9tIGFjdGlvbiBjb21wb25lbnRcbiAgICBwcm90ZWN0ZWQgX2NvbXBvbmVudD86IFR5cGU8SUFjdGlvbkNvbXBvbmVudDxNb2RlbD4+O1xuICAgIHByb3RlY3RlZCBfY29tcG9uZW50RnJvbURpPzogSW5qZWN0aW9uVG9rZW48VHlwZTxhbnk+PjtcblxuICAgIC8vIHN1YmFjdGlvbnNcbiAgICBwcm90ZWN0ZWQgX3N1YmFjdGlvbnNBc01lbnUgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgX3N1YmFjdGlvbnM6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPj4gPSBbXTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihhY3Rpb25OYW1lOiBzdHJpbmcsIGNmZz86IEFjdGlvbkRlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHNUeXBlPE1vZGVsLCBTZXJ2aWNlPikge1xuICAgICAgICB0aGlzLl9tb2RlbCA9IGNmZz8ubW9kZWw7XG4gICAgICAgIHRoaXMuX2FjdGlvbk5hbWUgPSBhY3Rpb25OYW1lO1xuXG4gICAgICAgIGlmICgoY2ZnPy5wYXJlbnRUeXBlICYmICFjZmc/LnBhcmVudFByb3BlcnR5KSB8fCAoIWNmZz8ucGFyZW50UHJvcGVydHkgJiYgY2ZnPy5wYXJlbnRQcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgUHJvdmlkZSBib3RoIHRoZSBwYXJlbnQgdHlwZSBhbmQgcGFyZW50IHByb3BlcnR5IG9yIG5vbmU6ICR7dGhpcy5fYWN0aW9uTmFtZX0sICR7Y2ZnPy5wYXJlbnRUeXBlfSwgJHtjZmc/LnBhcmVudFByb3BlcnR5fS5gKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wYXJlbnRUeXBlID0gY2ZnPy5wYXJlbnRUeXBlO1xuICAgICAgICB0aGlzLl9wYXJlbnRUeXBlTmFtZSA9IGNmZz8ucGFyZW50VHlwZSA/IGZpbmRSZWZsZWN0VHlwZU5hbWUoY2ZnPy5wYXJlbnRUeXBlKSA/PyB1bmRlZmluZWQgOiB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX3BhcmVudFByb3BlcnR5ID0gY2ZnPy5wYXJlbnRQcm9wZXJ0eTtcblxuICAgICAgICB0aGlzLnNldEkxOG5Nb2RlbEFjdGlvbkJhc2VLZXkoKTtcblxuICAgICAgICBpZiAoY2ZnPy5zZXJ2aWNlVHlwZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyID0gRGF0YVByb3ZpZGVyLmZyb21BbnlQYXJhbTxNb2RlbCwgU2VydmljZT4odGhpcy5fbW9kZWw/LnR5cGUsIGNmZy5zZXJ2aWNlVHlwZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2ZnPy5kYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFQcm92aWRlciA9IGNmZy5kYXRhUHJvdmlkZXI7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZGlzcGxheU5hbWUgPSBhY3Rpb25OYW1lO1xuICAgICAgICBpZiAodGhpcy5fbW9kZWwpIGRpc3BsYXlOYW1lID0gYCR7dGhpcy5fbW9kZWwudHlwZU5hbWUgPz8gdGhpcy5fbW9kZWwuaTE4bkJhc2VLZXkgPz8gJ05vTW9kZWxOYW1lJ30uJHtkaXNwbGF5TmFtZX1gO1xuICAgICAgICBpZiAodGhpcy5fcGFyZW50VHlwZU5hbWUpIHtcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lID0gYCR7dGhpcy5fcGFyZW50VHlwZU5hbWV9LiR7dGhpcy5fcGFyZW50UHJvcGVydHl9XyR7ZGlzcGxheU5hbWV9YDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9hY3Rpb25OYW1lTG9uZyA9IGRpc3BsYXlOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbW9kZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBhcmVudFR5cGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50VHlwZU5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYXJlbnRQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudFByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaTE4bk1vZGVsQWN0aW9uQmFzZUtleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2kxOG5Nb2RlbEFjdGlvbkJhc2VLZXk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0eXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGl2YXRpb25UcmlnZ2VyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZhdGlvblRyaWdnZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwb3NpdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbGV2ZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sZXZlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJvdXRlVXJsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm91dGVVcmw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRhUHJvdmlkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhUHJvdmlkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNSdW5GdW5jdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9ydW5GdW5jdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJ1bkZ1bmN0aW9uKCk6IEFjdGlvblJ1bkZuVHlwZTxNb2RlbCwgU2VydmljZT4ge1xuICAgICAgICBpZiAoIXRoaXMuX3J1bkZ1bmN0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYFJ1biBmdW5jdGlvbiBpcyBub3QgZGVmaW5lZCBmb3IgYWN0aW9uICR7dGhpcy5fYWN0aW9uTmFtZUxvbmd9IGFuZCBjYW5ub3QgYmUgaW52b2tlZGApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5GdW5jdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzVmlzaWJsZUZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNWaXNpYmxlRnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc0VuYWJsZWRGdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aW9uTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbk5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3Rpb25OYW1lTG9uZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbk5hbWVMb25nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5idXR0b24uc3R5bGVDbGFzcy5jdXN0b21DbGFzcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJ1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzUnVuQ29uZmlybWF0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvciAhPT0gbnVsbCAmJiB0aGlzLl9ydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNSdW5Ob3RpZmljYXRpb25TdWNjZXNzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzUnVuTm90aWZpY2F0aW9uU3VjY2VzcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJ1bk5vdGlmaWNhdGlvblN1Y2Nlc3NUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bk5vdGlmaWNhdGlvblN1Y2Nlc3NUaXRsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJ1bk5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNSdW5Ob3RpZmljYXRpb25FcnJvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1J1bk5vdGlmaWNhdGlvbkVycm9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcnVuTm90aWZpY2F0aW9uRXJyb3JUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bk5vdGlmaWNhdGlvbkVycm9yVGl0bGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBydW5Ob3RpZmljYXRpb25FcnJvck1lc3NhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5Ob3RpZmljYXRpb25FcnJvck1lc3NhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhZnRlclJ1bkFjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FmdGVyUnVuQWN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb25SdW5FcnJvckFjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uUnVuRXJyb3JBY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwZXJtaXNzaW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Blcm1pc3Npb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFibGV2aWV3Q2F0ZWdvcnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZXZpZXdDYXRlZ29yeTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0l0ZW1zU2VsZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzSXRlbXNTZWxlY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBidXR0b24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9idXR0b247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb21wb25lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wb25lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb21wb25lbnRGcm9tRGkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wb25lbnRGcm9tRGk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdWJhY3Rpb25zQXNNZW51KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3ViYWN0aW9uc0FzTWVudTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHN1YmFjdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdWJhY3Rpb25zO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRJMThuTW9kZWxBY3Rpb25CYXNlS2V5KGJhc2U/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudFR5cGVOYW1lIHx8IHRoaXMuX21vZGVsKSB7XG4gICAgICAgICAgICB0aGlzLl9pMThuTW9kZWxBY3Rpb25CYXNlS2V5ID0gdGhpcy5fcGFyZW50VHlwZU5hbWVcbiAgICAgICAgICAgICAgICA/IGAke3RoaXMuX3BhcmVudFR5cGVOYW1lfS5hY3Rpb25zLiR7dGhpcy5fcGFyZW50UHJvcGVydHl9XyR7dGhpcy5fYWN0aW9uTmFtZX1gXG4gICAgICAgICAgICAgICAgOiBgJHtiYXNlID8/IHRoaXMuX21vZGVsIS5pMThuQmFzZUtleX0uYWN0aW9ucy4ke3RoaXMuX2FjdGlvbk5hbWV9YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUnVuRnVuY3Rpb24oZm46IEFjdGlvblJ1bkZuVHlwZTxNb2RlbCwgU2VydmljZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcnVuRnVuY3Rpb24gPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhJc1Zpc2libGVGdW5jdGlvbihmbj86IEFjdGlvblZhbGlkYXRpb25GblR5cGU8TW9kZWwsIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzVmlzaWJsZUZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSXNFbmFibGVkRnVuY3Rpb24oZm4/OiBBY3Rpb25WYWxpZGF0aW9uRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc0VuYWJsZWRGdW5jdGlvbiA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJvdXRlVHJpZ2dlcihyb3V0ZVVybDogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FjdGl2YXRpb25UcmlnZ2VyID0gQWN0aW9uQWN0aXZhdGlvblRyaWdnZXJFbnVtLk9uUm91dGU7XG4gICAgICAgIHRoaXMuX3JvdXRlVXJsID0gcm91dGVVcmw7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUG9zaXRpb24ocG9zaXRpb246IEFjdGlvblBvc2l0aW9uRW51bSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9wb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjcmVhdGVzIGNvbmZpcm1hdGlvbiBhY3Rpb24gd2l0aCBkZWZhdWx0IHN0eWxlIGJhc2VkIG9uIGFjdGlvbiBkZXNjcmlwdG9yXG4gICAgICovXG4gICAgcHVibGljIHdpdGhSdW5Db25maXJtYXRpb24oKTogQWN0aW9uQ29uZmlybWF0aW9uRGVzY3JpcHRvcjxNb2RlbD4ge1xuICAgICAgICB0aGlzLl9ydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yID0gbmV3IEFjdGlvbkNvbmZpcm1hdGlvbkRlc2NyaXB0b3I8TW9kZWw+KCk7XG4gICAgICAgIHRoaXMuX3J1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3IuYWNjZXB0QnV0dG9uLnN0eWxlQ2xhc3Mud2l0aEFjdGlvbkxldmVsKHRoaXMuX2xldmVsKTtcbiAgICAgICAgdGhpcy5fcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvci5yZWplY3RCdXR0b24/LnN0eWxlQ2xhc3Mud2l0aEFjdGlvbkxldmVsKHRoaXMuX2xldmVsKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgYSBjb25maWd1cmF0aW9uIGRpYWxvZ3VlIHRvIGFjdGlvbiB1c2luZyBBY3Rpb25Db25maWd1cmF0aW9uRGVzY3JpcHRvclxuICAgICAqIEBwYXJhbSBydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yIGRlc2NyaXB0b3Igd2l0aCBjdXN0b21pemFibGUgaW5mb3JtYXRpb24gZm9yIGRpYWxvZ1xuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoUnVuQ29uZmlybWF0aW9uRGVzY3JpcHRvcihydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yPzogQWN0aW9uQ29uZmlybWF0aW9uRGVzY3JpcHRvcjxNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvciA9IHJ1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUnVuTm90aWZpY2F0aW9uU3VjY2Vzcyh0aXRsZT86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZywgaGFzTm90aWZpY2F0aW9uID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9oYXNSdW5Ob3RpZmljYXRpb25TdWNjZXNzID0gaGFzTm90aWZpY2F0aW9uO1xuICAgICAgICB0aGlzLl9ydW5Ob3RpZmljYXRpb25TdWNjZXNzVGl0bGUgPSB0aXRsZTtcbiAgICAgICAgdGhpcy5fcnVuTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJ1bk5vdGlmaWNhdGlvbkVycm9yKHRpdGxlPzogc3RyaW5nLCBtZXNzYWdlPzogc3RyaW5nLCBoYXNOb3RpZmljYXRpb24gPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hhc1J1bk5vdGlmaWNhdGlvbkVycm9yID0gaGFzTm90aWZpY2F0aW9uO1xuICAgICAgICB0aGlzLl9ydW5Ob3RpZmljYXRpb25FcnJvclRpdGxlID0gdGl0bGU7XG4gICAgICAgIHRoaXMuX3J1bk5vdGlmaWNhdGlvbkVycm9yTWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQWZ0ZXJSdW5BY3Rpb248UmV0dXJuLCBTZXJ2aWNlID0gYW55PihhY3Rpb24/OiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxSZXR1cm4+IHwgKChjdHg6IElBY3Rpb25Db250ZXh0PE1vZGVsLCBTZXJ2aWNlPikgPT4gQWN0aW9uRGVzY3JpcHRvckluc3Q8UmV0dXJuPikpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYWZ0ZXJSdW5BY3Rpb24gPSBhY3Rpb247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT25SdW5FcnJvckFjdGlvbjxTID0gYW55PihhY3Rpb24/OiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbD4gfCAoKGN0eDogSUFjdGlvbkNvbnRleHQ8TW9kZWwsIFM+KSA9PiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbD4pKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX29uUnVuRXJyb3JBY3Rpb24gPSBhY3Rpb247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGVybWlzc2lvbnMocGVybWlzc2lvbnM6IEFQZXJtaXNzaW9ucyk6IHRoaXMge1xuICAgICAgICBpZiAodGhpcy5fdGFibGV2aWV3Q2F0ZWdvcnkpIHtcbiAgICAgICAgICAgIExvZ2dlclNlcnZpY2UuZ2V0KCkuZGVidWcoXG4gICAgICAgICAgICAgICAgYFdBUk5JTkc6IFBlcm1pc3Npb25zIHNldCBvbiBhY3Rpb24gJHt0aGlzLl9hY3Rpb25OYW1lTG9uZ30gd2l0aCByb3V0ZSB0eXBlICcke3RoaXMuX3RhYmxldmlld0NhdGVnb3J5fScgd2lsbCBiZSBvbWl0dGVkIGluIHJvdXRlIGd1YXJkIHZhbGlkYXRpb24uYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wZXJtaXNzaW9ucyA9IHBlcm1pc3Npb25zO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhYmxldmlld0NhdGVnb3J5KHBlcm1pc3Npb25zUm91dGVUeXBlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGV2aWV3Q2F0ZWdvcnkgPSBwZXJtaXNzaW9uc1JvdXRlVHlwZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhCdXR0b25EZXNjcmlwdG9yKGJ1dHRvbjogQWN0aW9uQnV0dG9uRGVzY3JpcHRvcik6IHRoaXMge1xuICAgICAgICB0aGlzLl9idXR0b24gPSBidXR0b247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQnV0dG9uKGxhYmVsPzogc3RyaW5nIHwgbnVsbCwgaWNvbjogc3RyaW5nIHwgbnVsbCA9IG51bGwsIHN0eWxlTGV2ZWwgPSBTdHlsZUxldmVsRW51bS5EZWZhdWx0LCBzdHlsZVRleHQgPSBmYWxzZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9idXR0b24gPSBuZXcgQWN0aW9uQnV0dG9uRGVzY3JpcHRvcigpLndpdGhMYWJlbChsYWJlbCkud2l0aEljb24oaWNvbikud2l0aFN0eWxlQ2xhc3MobmV3IEJ1dHRvblN0eWxlQnVpbGRlcihzdHlsZUxldmVsKS53aXRoVGV4dEJ1dHRvbihzdHlsZVRleHQpKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhJdGVtc1NlbGVjdGlvbihoYXNTZWxlY3Rpb24gPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hhc0l0ZW1zU2VsZWN0aW9uID0gaGFzU2VsZWN0aW9uO1xuICAgICAgICB0aGlzLl9pc0VuYWJsZWRGdW5jdGlvbiA9IHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uID8/IChjdHggPT4gb2YoKGN0eC5wYXJhbWV0ZXJzLnNlbGVjdGVkSXRlbXM/Lmxlbmd0aCA/PyAwKSA+IDApKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDb21wb25lbnQoY29tcG9uZW50OiBUeXBlPElBY3Rpb25Db21wb25lbnQ8TW9kZWw+Pik6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29tcG9uZW50RnJvbURpKGluamVjdGlvblRva2VuOiBJbmplY3Rpb25Ub2tlbjxUeXBlPGFueT4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbXBvbmVudEZyb21EaSA9IGluamVjdGlvblRva2VuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyhwb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyA9IHBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhJMThuQmFzZShiYXNlOiBDbGFzc1R5cGU8dW5rbm93bj4gfCBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiYXNlICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBmaW5kUmVmbGVjdFR5cGVOYW1lKGJhc2UpO1xuICAgICAgICAgICAgaWYgKCF0eXBlTmFtZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgQ291bGQgbm90IGZpbmQgZGVmaW5lIGkxOG5CYXNlS2V5IGZvciAke2Jhc2V9IG9uIGFjdGlvbiAke3RoaXMuYWN0aW9uTmFtZUxvbmd9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBiYXNlID0gdHlwZU5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRJMThuTW9kZWxBY3Rpb25CYXNlS2V5KGJhc2UpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFN1YmFjdGlvbnNBc01lbnUoc3ViYWN0aW9uc0FzTWVudSA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fc3ViYWN0aW9uc0FzTWVudSA9IHN1YmFjdGlvbnNBc01lbnU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU3ViYWN0aW9ucyguLi5zdWJhY3Rpb25zOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbD4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3N1YmFjdGlvbnMucHVzaCguLi5zdWJhY3Rpb25zKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHlUbyhkZXNjcmlwdG9yOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZT4pOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZT4ge1xuICAgICAgICBkZXNjcmlwdG9yLl9pMThuTW9kZWxBY3Rpb25CYXNlS2V5ID0gdGhpcy5faTE4bk1vZGVsQWN0aW9uQmFzZUtleTtcbiAgICAgICAgZGVzY3JpcHRvci5fdHlwZSA9IHRoaXMuX3R5cGU7XG4gICAgICAgIGRlc2NyaXB0b3IuX2FjdGl2YXRpb25UcmlnZ2VyID0gdGhpcy5fYWN0aXZhdGlvblRyaWdnZXI7XG4gICAgICAgIGRlc2NyaXB0b3IuX3Bvc2l0aW9uID0gdGhpcy5fcG9zaXRpb247XG4gICAgICAgIGRlc2NyaXB0b3IuX2xldmVsID0gdGhpcy5fbGV2ZWw7XG4gICAgICAgIGRlc2NyaXB0b3IuX3Bvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyA9IHRoaXMuX3Bvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcztcblxuICAgICAgICBkZXNjcmlwdG9yLl90YWJsZXZpZXdDYXRlZ29yeSA9IHRoaXMuX3RhYmxldmlld0NhdGVnb3J5O1xuICAgICAgICBkZXNjcmlwdG9yLl9yb3V0ZVVybCA9IHRoaXMuX3JvdXRlVXJsO1xuXG4gICAgICAgIGRlc2NyaXB0b3IuX3J1bkZ1bmN0aW9uID0gdGhpcy5fcnVuRnVuY3Rpb247XG4gICAgICAgIGRlc2NyaXB0b3IuX2lzVmlzaWJsZUZ1bmN0aW9uID0gdGhpcy5faXNWaXNpYmxlRnVuY3Rpb247XG4gICAgICAgIGRlc2NyaXB0b3IuX2lzRW5hYmxlZEZ1bmN0aW9uID0gdGhpcy5faXNFbmFibGVkRnVuY3Rpb247XG5cbiAgICAgICAgZGVzY3JpcHRvci5fcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvciA9IHRoaXMuX3J1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3I7XG5cbiAgICAgICAgZGVzY3JpcHRvci5faGFzUnVuTm90aWZpY2F0aW9uU3VjY2VzcyA9IHRoaXMuX2hhc1J1bk5vdGlmaWNhdGlvblN1Y2Nlc3M7XG4gICAgICAgIGRlc2NyaXB0b3IuX3J1bk5vdGlmaWNhdGlvblN1Y2Nlc3NUaXRsZSA9IHRoaXMuX3J1bk5vdGlmaWNhdGlvblN1Y2Nlc3NUaXRsZTtcbiAgICAgICAgZGVzY3JpcHRvci5fcnVuTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2UgPSB0aGlzLl9ydW5Ob3RpZmljYXRpb25TdWNjZXNzTWVzc2FnZTtcblxuICAgICAgICBkZXNjcmlwdG9yLl9oYXNSdW5Ob3RpZmljYXRpb25FcnJvciA9IHRoaXMuX2hhc1J1bk5vdGlmaWNhdGlvbkVycm9yO1xuICAgICAgICBkZXNjcmlwdG9yLl9ydW5Ob3RpZmljYXRpb25FcnJvclRpdGxlID0gdGhpcy5fcnVuTm90aWZpY2F0aW9uRXJyb3JUaXRsZTtcbiAgICAgICAgZGVzY3JpcHRvci5fcnVuTm90aWZpY2F0aW9uRXJyb3JNZXNzYWdlID0gdGhpcy5fcnVuTm90aWZpY2F0aW9uRXJyb3JNZXNzYWdlO1xuXG4gICAgICAgIGRlc2NyaXB0b3IuX2FmdGVyUnVuQWN0aW9uID0gdGhpcy5fYWZ0ZXJSdW5BY3Rpb247XG4gICAgICAgIGRlc2NyaXB0b3IuX29uUnVuRXJyb3JBY3Rpb24gPSB0aGlzLl9vblJ1bkVycm9yQWN0aW9uO1xuXG4gICAgICAgIGRlc2NyaXB0b3IuX3Blcm1pc3Npb25zID0gdGhpcy5fcGVybWlzc2lvbnM7XG5cbiAgICAgICAgZGVzY3JpcHRvci5fYnV0dG9uID0gdGhpcy5fYnV0dG9uLmNvcHkoKTtcblxuICAgICAgICBkZXNjcmlwdG9yLl9oYXNJdGVtc1NlbGVjdGlvbiA9IHRoaXMuX2hhc0l0ZW1zU2VsZWN0aW9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9jb21wb25lbnQgPSB0aGlzLl9jb21wb25lbnQ7XG4gICAgICAgIGRlc2NyaXB0b3IuX3N1YmFjdGlvbnNBc01lbnUgPSB0aGlzLl9zdWJhY3Rpb25zQXNNZW51O1xuICAgICAgICBkZXNjcmlwdG9yLl9zdWJhY3Rpb25zID0gdGhpcy5fc3ViYWN0aW9ucztcblxuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25EZXNjcmlwdG9yIGV4dGVuZHMgQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55PiB7XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcignaW50ZXJuYWwnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZTxNb2RlbD4oYWN0aW9uTmFtZTogc3RyaW5nLCBjZmc/OiBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkPihhY3Rpb25OYW1lLCB7XG4gICAgICAgICAgICAuLi5jZmdcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVXaXRoUHJvdmlkZXI8U2VydmljZSwgTW9kZWw+KHNlcnZpY2VQcm92aWRlcjogQWN0aW9uUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPiwgYWN0aW9uTmFtZTogc3RyaW5nLCBjZmc/OiBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgU2VydmljZT4oYWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgLi4uYWN0aW9uR2V0UHJvdmlkZXJDZmdPYmooc2VydmljZVByb3ZpZGVyKSxcbiAgICAgICAgICAgIC4uLmNmZ1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21Nb2RlbDxNb2RlbD4obW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sIGFjdGlvbk5hbWU6IHN0cmluZywgY2ZnPzogQWN0aW9uRGVzY3JpcHRvckNyZWF0ZU9wdHNQYXJlbnRUeXBlKSB7XG4gICAgICAgIHJldHVybiBuZXcgQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZD4oYWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgbW9kZWwsXG4gICAgICAgICAgICAuLi5jZmdcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tTW9kZWxXaXRoUHJvdmlkZXI8TW9kZWwsIFNlcnZpY2U+KFxuICAgICAgICBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPixcbiAgICAgICAgc2VydmljZVByb3ZpZGVyOiBBY3Rpb25Qcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+LFxuICAgICAgICBhY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNmZz86IEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZVxuICAgICkge1xuICAgICAgICByZXR1cm4gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPihhY3Rpb25OYW1lLCB7XG4gICAgICAgICAgICBtb2RlbCxcbiAgICAgICAgICAgIC4uLmFjdGlvbkdldFByb3ZpZGVyQ2ZnT2JqKHNlcnZpY2VQcm92aWRlciksXG4gICAgICAgICAgICAuLi5jZmdcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tQ2xhc3M8TW9kZWw+KHR5cGU6IENsYXNzVHlwZTxNb2RlbD4sIGFjdGlvbk5hbWU6IHN0cmluZywgY2ZnPzogQWN0aW9uRGVzY3JpcHRvckNyZWF0ZUZyb21DbGFzc09wdHM8TW9kZWw+KSB7XG4gICAgICAgIHJldHVybiBuZXcgQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZD4oYWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvci5mcm9tQ2xhc3M8TW9kZWw+KHR5cGUsIGNmZz8uaWRQcm9wZXJ0eSwgY2ZnPy50aXRsZVByb3BlcnR5LCBjZmc/LmkxOG5CYXNlS2V5KSxcbiAgICAgICAgICAgIC4uLmNmZ1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21DbGFzc1dpdGhQcm92aWRlcjxNb2RlbCwgU2VydmljZT4oXG4gICAgICAgIGNsYXNzVHlwZTogQ2xhc3NUeXBlPE1vZGVsPixcbiAgICAgICAgc2VydmljZVByb3ZpZGVyOiBBY3Rpb25Qcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+LFxuICAgICAgICBhY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGNmZz86IEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVGcm9tQ2xhc3NPcHRzPE1vZGVsPlxuICAgICkge1xuICAgICAgICByZXR1cm4gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPihhY3Rpb25OYW1lLCB7XG4gICAgICAgICAgICBtb2RlbDogTW9kZWxEZXNjcmlwdG9yLmZyb21DbGFzczxNb2RlbD4oY2xhc3NUeXBlLCBjZmc/LmlkUHJvcGVydHksIGNmZz8udGl0bGVQcm9wZXJ0eSwgY2ZnPy5pMThuQmFzZUtleSksXG4gICAgICAgICAgICAuLi5hY3Rpb25HZXRQcm92aWRlckNmZ09iaihzZXJ2aWNlUHJvdmlkZXIpLFxuICAgICAgICAgICAgLi4uY2ZnXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFjdGlvbkRlbGV0ZURlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlID0gYW55PiBleHRlbmRzIEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlPiB7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBQ1RJT05fTkFNRSA9ICdkZWxldGUnO1xuXG4gICAgY29uc3RydWN0b3IobW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD4sIGNmZz86IEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPikge1xuICAgICAgICBzdXBlcihBY3Rpb25EZWxldGVEZXNjcmlwdG9ySW5zdC5BQ1RJT05fTkFNRSwge21vZGVsLCAuLi5jZmd9KTtcbiAgICAgICAgdGhpcy53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLlJvd0lubGluZSk7XG4gICAgICAgIHRoaXMuYnV0dG9uLnN0eWxlQ2xhc3Mud2l0aFNpemUoU3R5bGVTaXplRW51bS5TbWFsbCk7XG4gICAgICAgIHRoaXMuYnV0dG9uLnN0eWxlQ2xhc3Mud2l0aEFjdGlvbkxldmVsKFN0eWxlTGV2ZWxFbnVtLkRhbmdlcik7XG4gICAgICAgIHRoaXMud2l0aFJ1bkNvbmZpcm1hdGlvbigpO1xuICAgICAgICB0aGlzLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERUxFVEUpO1xuICAgICAgICB0aGlzLmJ1dHRvbi53aXRoTGFiZWwobnVsbCkud2l0aEljb24oJ3BpIHBpLXRyYXNoJyk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWN0aW9uRGVsZXRlRGVzY3JpcHRvciB7XG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGU8TW9kZWw+KG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+KSB7XG4gICAgICAgIHJldHVybiBuZXcgQWN0aW9uRGVsZXRlRGVzY3JpcHRvckluc3Q8TW9kZWwsIHVuZGVmaW5lZD4obW9kZWwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlV2l0aFByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlPihtb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPiwgc2VydmljZVByb3ZpZGVyOiBBY3Rpb25Qcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+KSB7XG4gICAgICAgIHJldHVybiBuZXcgQWN0aW9uRGVsZXRlRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+KG1vZGVsLCB7XG4gICAgICAgICAgICAuLi5hY3Rpb25HZXRQcm92aWRlckNmZ09iaihzZXJ2aWNlUHJvdmlkZXIpXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUV4QixPQUFPLEVBR0gsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUdoQixhQUFhLEVBRWIsY0FBYyxFQUNkLGFBQWEsRUFDYixtQkFBbUIsRUFDdEIsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUMsc0JBQXNCLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUszRixPQUFPLEVBQUMsMkJBQTJCLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFFdEcsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0scURBQXFELENBQUM7QUFDckcsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFpQjlFLE1BQU0sT0FBTyxvQkFBb0I7SUF1RDdCLFlBQW1CLFVBQWtCLEVBQUUsR0FBeUQ7UUEzQ3RGLFVBQUssR0FBbUIsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUM5Qyx1QkFBa0IsR0FBZ0MsMkJBQTJCLENBQUMsT0FBTyxDQUFDO1FBQ3RGLGNBQVMsR0FBdUIsa0JBQWtCLENBQUMsWUFBWSxDQUFDO1FBQ2hFLFdBQU0sR0FBbUIsY0FBYyxDQUFDLE9BQU8sQ0FBQztRQUloRCxjQUFTLEdBQWtCLElBQUksQ0FBQztRQVFoQywrQkFBMEIsR0FBRyxJQUFJLENBQUM7UUFJbEMsNkJBQXdCLEdBQUcsSUFBSSxDQUFDO1FBVTFDLFFBQVE7UUFDRSxZQUFPLEdBQUcsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1FBRWpELHlCQUF5QjtRQUNmLHVCQUFrQixHQUFHLEtB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QUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rpb25Ub2tlbiwgVHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7b2Z9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgIEFQZXJtaXNzaW9ucyxcbiAgICBDbGFzc1R5cGUsXG4gICAgQ29tbW9uc0ludGVybmFsRXJyb3IsXG4gICAgRGF0YVByb3ZpZGVySW5zdCxcbiAgICBJQWN0aW9uRGVzY3JpcHRvcixcbiAgICBJRGF0YVByb3ZpZGVyLFxuICAgIExvZ2dlclNlcnZpY2UsXG4gICAgU2VydmljZUNsYXNzVHlwZSxcbiAgICBTdHlsZUxldmVsRW51bSxcbiAgICBTdHlsZVNpemVFbnVtLFxuICAgIGZpbmRSZWZsZWN0VHlwZU5hbWVcbn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7QWN0aW9uQnV0dG9uRGVzY3JpcHRvciwgQnV0dG9uU3R5bGVCdWlsZGVyfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2Zvcm0vYXBpJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtJQWN0aW9uQ29tcG9uZW50fSBmcm9tICcuLi9tb2RlbHMvYWN0aW9uLWNvbXBvbmVudC5tb2RlbCc7XG5pbXBvcnQge0FjdGlvblJ1bkZuVHlwZSwgQWN0aW9uVmFsaWRhdGlvbkZuVHlwZX0gZnJvbSAnLi4vbW9kZWxzL2FjdGlvbi1kZXNjcmlwdG9yLnR5cGVzJztcbmltcG9ydCB7QWN0aW9uQWN0aXZhdGlvblRyaWdnZXJFbnVtLCBBY3Rpb25Qb3NpdGlvbkVudW0sIEFjdGlvblR5cGVFbnVtfSBmcm9tICcuLi9tb2RlbHMvYWN0aW9uLnR5cGUnO1xuaW1wb3J0IHtJQWN0aW9uQ29udGV4dH0gZnJvbSAnLi4vbW9kZWxzL2V4ZWN1dGlvbi9hY3Rpb24tY29udGV4dC5tb2RlbCc7XG5pbXBvcnQge1RhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzfSBmcm9tICcuLi9tb2RlbHMvdGFibGV2aWV3LWFjdGlvbi1kZWZhdWx0LWNhdGVnb3JpZXMubW9kZWwnO1xuaW1wb3J0IHtBY3Rpb25Db25maXJtYXRpb25EZXNjcmlwdG9yfSBmcm9tICcuL2FjdGlvbi1jb25maXJtYXRpb24uZGVzY3JpcHRvcic7XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPE1vZGVsLCBTZXJ2aWNlPiA9IHtcbiAgICBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgZGF0YVByb3ZpZGVyPzogSURhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZT47XG59O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUgPSB7XG4gICAgcGFyZW50VHlwZT86IENsYXNzVHlwZTx1bmtub3duPjtcbiAgICBwYXJlbnRQcm9wZXJ0eT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkRlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHNUeXBlPE1vZGVsLCBTZXJ2aWNlPiA9IEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSAmXG4gICAgQWN0aW9uRGVzY3JpcHRvckNyZWF0ZU9wdHNQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+ICYge1xuICAgICAgICBtb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgfTtcblxuZXhwb3J0IGNsYXNzIEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBTZXJ2aWNlID0gYW55PiBpbXBsZW1lbnRzIElBY3Rpb25EZXNjcmlwdG9yPE1vZGVsLCBTZXJ2aWNlPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9tb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxNb2RlbD47XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9hY3Rpb25OYW1lOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9hY3Rpb25OYW1lTG9uZzogc3RyaW5nO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfcGFyZW50VHlwZT86IENsYXNzVHlwZTx1bmtub3duPjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3BhcmVudFR5cGVOYW1lPzogc3RyaW5nO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfcGFyZW50UHJvcGVydHk/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2RhdGFQcm92aWRlcj86IElEYXRhUHJvdmlkZXI8TW9kZWwsIFNlcnZpY2U+O1xuXG4gICAgcHJvdGVjdGVkIF9pMThuTW9kZWxBY3Rpb25CYXNlS2V5Pzogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF90eXBlOiBBY3Rpb25UeXBlRW51bSA9IEFjdGlvblR5cGVFbnVtLkRpcmVjdDtcbiAgICBwcm90ZWN0ZWQgX2FjdGl2YXRpb25UcmlnZ2VyOiBBY3Rpb25BY3RpdmF0aW9uVHJpZ2dlckVudW0gPSBBY3Rpb25BY3RpdmF0aW9uVHJpZ2dlckVudW0uT25DbGljaztcbiAgICBwcm90ZWN0ZWQgX3Bvc2l0aW9uOiBBY3Rpb25Qb3NpdGlvbkVudW0gPSBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0O1xuICAgIHByb3RlY3RlZCBfbGV2ZWw6IFN0eWxlTGV2ZWxFbnVtID0gU3R5bGVMZXZlbEVudW0uRGVmYXVsdDtcbiAgICBwcml2YXRlIF9wb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXM/OiBzdHJpbmdbXTtcbiAgICBwcm90ZWN0ZWQgX3RhYmxldmlld0NhdGVnb3J5Pzogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF9yb3V0ZVVybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcm90ZWN0ZWQgX3J1bkZ1bmN0aW9uPzogQWN0aW9uUnVuRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBwcm90ZWN0ZWQgX2lzVmlzaWJsZUZ1bmN0aW9uPzogQWN0aW9uVmFsaWRhdGlvbkZuVHlwZTxNb2RlbCwgU2VydmljZT47XG4gICAgcHJvdGVjdGVkIF9pc0VuYWJsZWRGdW5jdGlvbj86IEFjdGlvblZhbGlkYXRpb25GblR5cGU8TW9kZWwsIFNlcnZpY2U+O1xuXG4gICAgcHJvdGVjdGVkIF9ydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yPzogQWN0aW9uQ29uZmlybWF0aW9uRGVzY3JpcHRvcjxNb2RlbD47XG5cbiAgICBwcm90ZWN0ZWQgX2hhc1J1bk5vdGlmaWNhdGlvblN1Y2Nlc3MgPSB0cnVlO1xuICAgIHByb3RlY3RlZCBfcnVuTm90aWZpY2F0aW9uU3VjY2Vzc1RpdGxlPzogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfcnVuTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX2hhc1J1bk5vdGlmaWNhdGlvbkVycm9yID0gdHJ1ZTtcbiAgICBwcm90ZWN0ZWQgX3J1bk5vdGlmaWNhdGlvbkVycm9yVGl0bGU/OiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIF9ydW5Ob3RpZmljYXRpb25FcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX2FmdGVyUnVuQWN0aW9uPzogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55PiB8ICgoY3R4OiBJQWN0aW9uQ29udGV4dDxNb2RlbCwgYW55PikgPT4gQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55Pik7XG4gICAgcHJvdGVjdGVkIF9vblJ1bkVycm9yQWN0aW9uPzogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWw+IHwgKChjdHg6IElBY3Rpb25Db250ZXh0PE1vZGVsLCBhbnk+KSA9PiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbD4pO1xuXG4gICAgLy8gc2VjdXJpdHlcbiAgICBwcm90ZWN0ZWQgX3Blcm1pc3Npb25zPzogQVBlcm1pc3Npb25zO1xuXG4gICAgLy9idXR0b25cbiAgICBwcm90ZWN0ZWQgX2J1dHRvbiA9IG5ldyBBY3Rpb25CdXR0b25EZXNjcmlwdG9yKCk7XG5cbiAgICAvLyBtdWx0aXBsZSByb3cgc2VsZWN0aW9uXG4gICAgcHJvdGVjdGVkIF9oYXNJdGVtc1NlbGVjdGlvbiA9IGZhbHNlO1xuXG4gICAgLy8gY3VzdG9tIGFjdGlvbiBjb21wb25lbnRcbiAgICBwcm90ZWN0ZWQgX2NvbXBvbmVudD86IFR5cGU8SUFjdGlvbkNvbXBvbmVudDxNb2RlbD4+O1xuICAgIHByb3RlY3RlZCBfY29tcG9uZW50RnJvbURpPzogSW5qZWN0aW9uVG9rZW48VHlwZTxhbnk+PjtcblxuICAgIC8vIHN1YmFjdGlvbnNcbiAgICBwcm90ZWN0ZWQgX3N1YmFjdGlvbnNBc01lbnUgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgX3N1YmFjdGlvbnM6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsPj4gPSBbXTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihhY3Rpb25OYW1lOiBzdHJpbmcsIGNmZz86IEFjdGlvbkRlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHNUeXBlPE1vZGVsLCBTZXJ2aWNlPikge1xuICAgICAgICB0aGlzLl9tb2RlbCA9IGNmZz8ubW9kZWw7XG4gICAgICAgIHRoaXMuX2FjdGlvbk5hbWUgPSBhY3Rpb25OYW1lO1xuXG4gICAgICAgIGlmICgoY2ZnPy5wYXJlbnRUeXBlICYmICFjZmc/LnBhcmVudFByb3BlcnR5KSB8fCAoIWNmZz8ucGFyZW50UHJvcGVydHkgJiYgY2ZnPy5wYXJlbnRQcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgUHJvdmlkZSBib3RoIHRoZSBwYXJlbnQgdHlwZSBhbmQgcGFyZW50IHByb3BlcnR5IG9yIG5vbmU6ICR7dGhpcy5fYWN0aW9uTmFtZX0sICR7Y2ZnPy5wYXJlbnRUeXBlfSwgJHtjZmc/LnBhcmVudFByb3BlcnR5fS5gKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wYXJlbnRUeXBlID0gY2ZnPy5wYXJlbnRUeXBlO1xuICAgICAgICB0aGlzLl9wYXJlbnRUeXBlTmFtZSA9IGNmZz8ucGFyZW50VHlwZSA/IGZpbmRSZWZsZWN0VHlwZU5hbWUoY2ZnPy5wYXJlbnRUeXBlKSA/PyB1bmRlZmluZWQgOiB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX3BhcmVudFByb3BlcnR5ID0gY2ZnPy5wYXJlbnRQcm9wZXJ0eTtcblxuICAgICAgICB0aGlzLnNldEkxOG5Nb2RlbEFjdGlvbkJhc2VLZXkoKTtcblxuICAgICAgICBpZiAoY2ZnPy5zZXJ2aWNlVHlwZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyID0gbmV3IERhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2U+KHRoaXMuX21vZGVsPy50eXBlLCBjZmcuc2VydmljZVR5cGUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNmZz8uZGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBjZmcuZGF0YVByb3ZpZGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGRpc3BsYXlOYW1lID0gYWN0aW9uTmFtZTtcbiAgICAgICAgaWYgKHRoaXMuX21vZGVsKSBkaXNwbGF5TmFtZSA9IGAke3RoaXMuX21vZGVsLnR5cGVOYW1lID8/IHRoaXMuX21vZGVsLmkxOG5CYXNlS2V5ID8/ICdOb01vZGVsTmFtZSd9LiR7ZGlzcGxheU5hbWV9YDtcbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudFR5cGVOYW1lKSB7XG4gICAgICAgICAgICBkaXNwbGF5TmFtZSA9IGAke3RoaXMuX3BhcmVudFR5cGVOYW1lfS4ke3RoaXMuX3BhcmVudFByb3BlcnR5fV8ke2Rpc3BsYXlOYW1lfWA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fYWN0aW9uTmFtZUxvbmcgPSBkaXNwbGF5TmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1vZGVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbW9kZWw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYXJlbnRUeXBlTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudFR5cGVOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGFyZW50UHJvcGVydHkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnRQcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGkxOG5Nb2RlbEFjdGlvbkJhc2VLZXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pMThuTW9kZWxBY3Rpb25CYXNlS2V5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3RpdmF0aW9uVHJpZ2dlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2YXRpb25UcmlnZ2VyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcG9zaXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxldmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGV2ZWw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByb3V0ZVVybCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JvdXRlVXJsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0YVByb3ZpZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVByb3ZpZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzUnVuRnVuY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5fcnVuRnVuY3Rpb24gPT09ICdmdW5jdGlvbic7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBydW5GdW5jdGlvbigpOiBBY3Rpb25SdW5GblR5cGU8TW9kZWwsIFNlcnZpY2U+IHtcbiAgICAgICAgaWYgKCF0aGlzLl9ydW5GdW5jdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBSdW4gZnVuY3Rpb24gaXMgbm90IGRlZmluZWQgZm9yIGFjdGlvbiAke3RoaXMuX2FjdGlvbk5hbWVMb25nfSBhbmQgY2Fubm90IGJlIGludm9rZWRgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcnVuRnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1Zpc2libGVGdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmlzaWJsZUZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNFbmFibGVkRnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0VuYWJsZWRGdW5jdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGlvbk5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3Rpb25OYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aW9uTmFtZUxvbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3Rpb25OYW1lTG9uZztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnV0dG9uLnN0eWxlQ2xhc3MuY3VzdG9tQ2xhc3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1J1bkNvbmZpcm1hdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3IgIT09IG51bGwgJiYgdGhpcy5fcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvciAhPT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzUnVuTm90aWZpY2F0aW9uU3VjY2VzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1J1bk5vdGlmaWNhdGlvblN1Y2Nlc3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBydW5Ob3RpZmljYXRpb25TdWNjZXNzVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5Ob3RpZmljYXRpb25TdWNjZXNzVGl0bGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBydW5Ob3RpZmljYXRpb25TdWNjZXNzTWVzc2FnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bk5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzUnVuTm90aWZpY2F0aW9uRXJyb3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNSdW5Ob3RpZmljYXRpb25FcnJvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJ1bk5vdGlmaWNhdGlvbkVycm9yVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5Ob3RpZmljYXRpb25FcnJvclRpdGxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcnVuTm90aWZpY2F0aW9uRXJyb3JNZXNzYWdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuTm90aWZpY2F0aW9uRXJyb3JNZXNzYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWZ0ZXJSdW5BY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZnRlclJ1bkFjdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9uUnVuRXJyb3JBY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vblJ1bkVycm9yQWN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGVybWlzc2lvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wZXJtaXNzaW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRhYmxldmlld0NhdGVnb3J5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGV2aWV3Q2F0ZWdvcnk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNJdGVtc1NlbGVjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0l0ZW1zU2VsZWN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYnV0dG9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYnV0dG9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY29tcG9uZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29tcG9uZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY29tcG9uZW50RnJvbURpKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29tcG9uZW50RnJvbURpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc3ViYWN0aW9uc0FzTWVudSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N1YmFjdGlvbnNBc01lbnU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdWJhY3Rpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3ViYWN0aW9ucztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0STE4bk1vZGVsQWN0aW9uQmFzZUtleShiYXNlPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLl9wYXJlbnRUeXBlTmFtZSB8fCB0aGlzLl9tb2RlbCkge1xuICAgICAgICAgICAgdGhpcy5faTE4bk1vZGVsQWN0aW9uQmFzZUtleSA9IHRoaXMuX3BhcmVudFR5cGVOYW1lXG4gICAgICAgICAgICAgICAgPyBgJHt0aGlzLl9wYXJlbnRUeXBlTmFtZX0uYWN0aW9ucy4ke3RoaXMuX3BhcmVudFByb3BlcnR5fV8ke3RoaXMuX2FjdGlvbk5hbWV9YFxuICAgICAgICAgICAgICAgIDogYCR7YmFzZSA/PyB0aGlzLl9tb2RlbCEuaTE4bkJhc2VLZXl9LmFjdGlvbnMuJHt0aGlzLl9hY3Rpb25OYW1lfWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJ1bkZ1bmN0aW9uKGZuOiBBY3Rpb25SdW5GblR5cGU8TW9kZWwsIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3J1bkZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSXNWaXNpYmxlRnVuY3Rpb24oZm4/OiBBY3Rpb25WYWxpZGF0aW9uRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc1Zpc2libGVGdW5jdGlvbiA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aElzRW5hYmxlZEZ1bmN0aW9uKGZuPzogQWN0aW9uVmFsaWRhdGlvbkZuVHlwZTxNb2RlbCwgU2VydmljZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXNFbmFibGVkRnVuY3Rpb24gPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSb3V0ZVRyaWdnZXIocm91dGVVcmw6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9hY3RpdmF0aW9uVHJpZ2dlciA9IEFjdGlvbkFjdGl2YXRpb25UcmlnZ2VyRW51bS5PblJvdXRlO1xuICAgICAgICB0aGlzLl9yb3V0ZVVybCA9IHJvdXRlVXJsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBvc2l0aW9uKHBvc2l0aW9uOiBBY3Rpb25Qb3NpdGlvbkVudW0pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBjb25maXJtYXRpb24gYWN0aW9uIHdpdGggZGVmYXVsdCBzdHlsZSBiYXNlZCBvbiBhY3Rpb24gZGVzY3JpcHRvclxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoUnVuQ29uZmlybWF0aW9uKCk6IEFjdGlvbkNvbmZpcm1hdGlvbkRlc2NyaXB0b3I8TW9kZWw+IHtcbiAgICAgICAgdGhpcy5fcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvciA9IG5ldyBBY3Rpb25Db25maXJtYXRpb25EZXNjcmlwdG9yPE1vZGVsPigpO1xuICAgICAgICB0aGlzLl9ydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yLmFjY2VwdEJ1dHRvbi5zdHlsZUNsYXNzLndpdGhBY3Rpb25MZXZlbCh0aGlzLl9sZXZlbCk7XG4gICAgICAgIHRoaXMuX3J1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3IucmVqZWN0QnV0dG9uPy5zdHlsZUNsYXNzLndpdGhBY3Rpb25MZXZlbCh0aGlzLl9sZXZlbCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIGEgY29uZmlndXJhdGlvbiBkaWFsb2d1ZSB0byBhY3Rpb24gdXNpbmcgQWN0aW9uQ29uZmlndXJhdGlvbkRlc2NyaXB0b3JcbiAgICAgKiBAcGFyYW0gcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvciBkZXNjcmlwdG9yIHdpdGggY3VzdG9taXphYmxlIGluZm9ybWF0aW9uIGZvciBkaWFsb2dcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFJ1bkNvbmZpcm1hdGlvbkRlc2NyaXB0b3IocnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvcj86IEFjdGlvbkNvbmZpcm1hdGlvbkRlc2NyaXB0b3I8TW9kZWw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3J1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3IgPSBydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJ1bk5vdGlmaWNhdGlvblN1Y2Nlc3ModGl0bGU/OiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcsIGhhc05vdGlmaWNhdGlvbiA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzUnVuTm90aWZpY2F0aW9uU3VjY2VzcyA9IGhhc05vdGlmaWNhdGlvbjtcbiAgICAgICAgdGhpcy5fcnVuTm90aWZpY2F0aW9uU3VjY2Vzc1RpdGxlID0gdGl0bGU7XG4gICAgICAgIHRoaXMuX3J1bk5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSdW5Ob3RpZmljYXRpb25FcnJvcih0aXRsZT86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZywgaGFzTm90aWZpY2F0aW9uID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9oYXNSdW5Ob3RpZmljYXRpb25FcnJvciA9IGhhc05vdGlmaWNhdGlvbjtcbiAgICAgICAgdGhpcy5fcnVuTm90aWZpY2F0aW9uRXJyb3JUaXRsZSA9IHRpdGxlO1xuICAgICAgICB0aGlzLl9ydW5Ob3RpZmljYXRpb25FcnJvck1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFmdGVyUnVuQWN0aW9uPFJldHVybiwgU2VydmljZSA9IGFueT4oYWN0aW9uPzogQWN0aW9uRGVzY3JpcHRvckluc3Q8UmV0dXJuPiB8ICgoY3R4OiBJQWN0aW9uQ29udGV4dDxNb2RlbCwgU2VydmljZT4pID0+IEFjdGlvbkRlc2NyaXB0b3JJbnN0PFJldHVybj4pKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FmdGVyUnVuQWN0aW9uID0gYWN0aW9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE9uUnVuRXJyb3JBY3Rpb248UyA9IGFueT4oYWN0aW9uPzogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWw+IHwgKChjdHg6IElBY3Rpb25Db250ZXh0PE1vZGVsLCBTPikgPT4gQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWw+KSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9vblJ1bkVycm9yQWN0aW9uID0gYWN0aW9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBlcm1pc3Npb25zKHBlcm1pc3Npb25zOiBBUGVybWlzc2lvbnMpOiB0aGlzIHtcbiAgICAgICAgaWYgKHRoaXMuX3RhYmxldmlld0NhdGVnb3J5KSB7XG4gICAgICAgICAgICBMb2dnZXJTZXJ2aWNlLmdldCgpLmRlYnVnKFxuICAgICAgICAgICAgICAgIGBXQVJOSU5HOiBQZXJtaXNzaW9ucyBzZXQgb24gYWN0aW9uICR7dGhpcy5fYWN0aW9uTmFtZUxvbmd9IHdpdGggcm91dGUgdHlwZSAnJHt0aGlzLl90YWJsZXZpZXdDYXRlZ29yeX0nIHdpbGwgYmUgb21pdHRlZCBpbiByb3V0ZSBndWFyZCB2YWxpZGF0aW9uLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcGVybWlzc2lvbnMgPSBwZXJtaXNzaW9ucztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUYWJsZXZpZXdDYXRlZ29yeShwZXJtaXNzaW9uc1JvdXRlVHlwZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxldmlld0NhdGVnb3J5ID0gcGVybWlzc2lvbnNSb3V0ZVR5cGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQnV0dG9uRGVzY3JpcHRvcihidXR0b246IEFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYnV0dG9uID0gYnV0dG9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEJ1dHRvbihsYWJlbD86IHN0cmluZyB8IG51bGwsIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsLCBzdHlsZUxldmVsID0gU3R5bGVMZXZlbEVudW0uRGVmYXVsdCwgc3R5bGVUZXh0ID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYnV0dG9uID0gbmV3IEFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IoKS53aXRoTGFiZWwobGFiZWwpLndpdGhJY29uKGljb24pLndpdGhTdHlsZUNsYXNzKG5ldyBCdXR0b25TdHlsZUJ1aWxkZXIoc3R5bGVMZXZlbCkud2l0aFRleHRCdXR0b24oc3R5bGVUZXh0KSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSXRlbXNTZWxlY3Rpb24oaGFzU2VsZWN0aW9uID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9oYXNJdGVtc1NlbGVjdGlvbiA9IGhhc1NlbGVjdGlvbjtcbiAgICAgICAgdGhpcy5faXNFbmFibGVkRnVuY3Rpb24gPSB0aGlzLl9pc0VuYWJsZWRGdW5jdGlvbiA/PyAoY3R4ID0+IG9mKChjdHgucGFyYW1ldGVycy5zZWxlY3RlZEl0ZW1zPy5sZW5ndGggPz8gMCkgPiAwKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29tcG9uZW50KGNvbXBvbmVudDogVHlwZTxJQWN0aW9uQ29tcG9uZW50PE1vZGVsPj4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENvbXBvbmVudEZyb21EaShpbmplY3Rpb25Ub2tlbjogSW5qZWN0aW9uVG9rZW48VHlwZTxhbnk+Pik6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb21wb25lbnRGcm9tRGkgPSBpbmplY3Rpb25Ub2tlbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMocG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzOiBzdHJpbmdbXSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9wb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMgPSBwb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSTE4bkJhc2UoYmFzZTogQ2xhc3NUeXBlPHVua25vd24+IHwgc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIGlmICh0eXBlb2YgYmFzZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVOYW1lID0gZmluZFJlZmxlY3RUeXBlTmFtZShiYXNlKTtcbiAgICAgICAgICAgIGlmICghdHlwZU5hbWUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYENvdWxkIG5vdCBmaW5kIGRlZmluZSBpMThuQmFzZUtleSBmb3IgJHtiYXNlfSBvbiBhY3Rpb24gJHt0aGlzLmFjdGlvbk5hbWVMb25nfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYmFzZSA9IHR5cGVOYW1lO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0STE4bk1vZGVsQWN0aW9uQmFzZUtleShiYXNlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTdWJhY3Rpb25zQXNNZW51KHN1YmFjdGlvbnNBc01lbnUgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3N1YmFjdGlvbnNBc01lbnUgPSBzdWJhY3Rpb25zQXNNZW51O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFN1YmFjdGlvbnMoLi4uc3ViYWN0aW9uczogQXJyYXk8QWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWw+Pik6IHRoaXMge1xuICAgICAgICB0aGlzLl9zdWJhY3Rpb25zLnB1c2goLi4uc3ViYWN0aW9ucyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5VG8oZGVzY3JpcHRvcjogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+KTogQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+IHtcbiAgICAgICAgZGVzY3JpcHRvci5faTE4bk1vZGVsQWN0aW9uQmFzZUtleSA9IHRoaXMuX2kxOG5Nb2RlbEFjdGlvbkJhc2VLZXk7XG4gICAgICAgIGRlc2NyaXB0b3IuX3R5cGUgPSB0aGlzLl90eXBlO1xuICAgICAgICBkZXNjcmlwdG9yLl9hY3RpdmF0aW9uVHJpZ2dlciA9IHRoaXMuX2FjdGl2YXRpb25UcmlnZ2VyO1xuICAgICAgICBkZXNjcmlwdG9yLl9wb3NpdGlvbiA9IHRoaXMuX3Bvc2l0aW9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9sZXZlbCA9IHRoaXMuX2xldmVsO1xuICAgICAgICBkZXNjcmlwdG9yLl9wb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMgPSB0aGlzLl9wb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXM7XG5cbiAgICAgICAgZGVzY3JpcHRvci5fdGFibGV2aWV3Q2F0ZWdvcnkgPSB0aGlzLl90YWJsZXZpZXdDYXRlZ29yeTtcbiAgICAgICAgZGVzY3JpcHRvci5fcm91dGVVcmwgPSB0aGlzLl9yb3V0ZVVybDtcblxuICAgICAgICBkZXNjcmlwdG9yLl9ydW5GdW5jdGlvbiA9IHRoaXMuX3J1bkZ1bmN0aW9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9pc1Zpc2libGVGdW5jdGlvbiA9IHRoaXMuX2lzVmlzaWJsZUZ1bmN0aW9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9pc0VuYWJsZWRGdW5jdGlvbiA9IHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uO1xuXG4gICAgICAgIGRlc2NyaXB0b3IuX3J1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3IgPSB0aGlzLl9ydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yO1xuXG4gICAgICAgIGRlc2NyaXB0b3IuX2hhc1J1bk5vdGlmaWNhdGlvblN1Y2Nlc3MgPSB0aGlzLl9oYXNSdW5Ob3RpZmljYXRpb25TdWNjZXNzO1xuICAgICAgICBkZXNjcmlwdG9yLl9ydW5Ob3RpZmljYXRpb25TdWNjZXNzVGl0bGUgPSB0aGlzLl9ydW5Ob3RpZmljYXRpb25TdWNjZXNzVGl0bGU7XG4gICAgICAgIGRlc2NyaXB0b3IuX3J1bk5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlID0gdGhpcy5fcnVuTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2U7XG5cbiAgICAgICAgZGVzY3JpcHRvci5faGFzUnVuTm90aWZpY2F0aW9uRXJyb3IgPSB0aGlzLl9oYXNSdW5Ob3RpZmljYXRpb25FcnJvcjtcbiAgICAgICAgZGVzY3JpcHRvci5fcnVuTm90aWZpY2F0aW9uRXJyb3JUaXRsZSA9IHRoaXMuX3J1bk5vdGlmaWNhdGlvbkVycm9yVGl0bGU7XG4gICAgICAgIGRlc2NyaXB0b3IuX3J1bk5vdGlmaWNhdGlvbkVycm9yTWVzc2FnZSA9IHRoaXMuX3J1bk5vdGlmaWNhdGlvbkVycm9yTWVzc2FnZTtcblxuICAgICAgICBkZXNjcmlwdG9yLl9hZnRlclJ1bkFjdGlvbiA9IHRoaXMuX2FmdGVyUnVuQWN0aW9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9vblJ1bkVycm9yQWN0aW9uID0gdGhpcy5fb25SdW5FcnJvckFjdGlvbjtcblxuICAgICAgICBkZXNjcmlwdG9yLl9wZXJtaXNzaW9ucyA9IHRoaXMuX3Blcm1pc3Npb25zO1xuXG4gICAgICAgIGRlc2NyaXB0b3IuX2J1dHRvbiA9IHRoaXMuX2J1dHRvbi5jb3B5KCk7XG5cbiAgICAgICAgZGVzY3JpcHRvci5faGFzSXRlbXNTZWxlY3Rpb24gPSB0aGlzLl9oYXNJdGVtc1NlbGVjdGlvbjtcbiAgICAgICAgZGVzY3JpcHRvci5fY29tcG9uZW50ID0gdGhpcy5fY29tcG9uZW50O1xuICAgICAgICBkZXNjcmlwdG9yLl9zdWJhY3Rpb25zQXNNZW51ID0gdGhpcy5fc3ViYWN0aW9uc0FzTWVudTtcbiAgICAgICAgZGVzY3JpcHRvci5fc3ViYWN0aW9ucyA9IHRoaXMuX3N1YmFjdGlvbnM7XG5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWN0aW9uRGVsZXRlRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2UgPSBhbnk+IGV4dGVuZHMgQWN0aW9uRGVzY3JpcHRvckluc3Q8TW9kZWwsIFNlcnZpY2U+IHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDVElPTl9OQU1FID0gJ2RlbGV0ZSc7XG5cbiAgICBjb25zdHJ1Y3Rvcihtb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPiwgY2ZnPzogQWN0aW9uRGVzY3JpcHRvckNyZWF0ZU9wdHNQcm92aWRlclR5cGU8TW9kZWwsIFNlcnZpY2U+KSB7XG4gICAgICAgIHN1cGVyKEFjdGlvbkRlbGV0ZURlc2NyaXB0b3JJbnN0LkFDVElPTl9OQU1FLCB7bW9kZWwsIC4uLmNmZ30pO1xuICAgICAgICB0aGlzLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lKTtcbiAgICAgICAgdGhpcy5idXR0b24uc3R5bGVDbGFzcy53aXRoU2l6ZShTdHlsZVNpemVFbnVtLlNtYWxsKTtcbiAgICAgICAgdGhpcy5idXR0b24uc3R5bGVDbGFzcy53aXRoQWN0aW9uTGV2ZWwoU3R5bGVMZXZlbEVudW0uRGFuZ2VyKTtcbiAgICAgICAgdGhpcy53aXRoUnVuQ29uZmlybWF0aW9uKCk7XG4gICAgICAgIHRoaXMud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFTEVURSk7XG4gICAgICAgIHRoaXMuYnV0dG9uLndpdGhMYWJlbChudWxsKS53aXRoSWNvbigncGkgcGktdHJhc2gnKTtcbiAgICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWNvbXBvbmVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2FjdGlvbi9tb2RlbHMvYWN0aW9uLWNvbXBvbmVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdmVudEVtaXR0ZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0FjdGlvbkRhdGEsIEFjdGlvblBhcmFtZXRlcnMsIElkVHlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vZGVzY3JpcHRvcnMvYWN0aW9uLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIElBY3Rpb25Db21wb25lbnQ8SXRlbSA9IGFueSwgU2VydmljZSA9IHVuZGVmaW5lZD4ge1xuICAgIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvckluc3Q8SXRlbSwgU2VydmljZT47XG4gICAgaXRlbTogSXRlbTtcbiAgICBpdGVtSWQ6IElkVHlwZTtcbiAgICBhY3Rpb25EYXRhOiBBY3Rpb25EYXRhO1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgbG9hZGluZzogYm9vbGVhbjtcbiAgICB0cmlnZ2VyQWN0aW9uRXZlbnRFbWl0dGVyOiBFdmVudEVtaXR0ZXI8QWN0aW9uUGFyYW1ldGVyczxJdGVtPj47XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWNvbXBvbmVudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2FjdGlvbi9tb2RlbHMvYWN0aW9uLWNvbXBvbmVudC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbnB1dFNpZ25hbCwgT3V0cHV0RW1pdHRlclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7QWN0aW9uRGF0YSwgQWN0aW9uUGFyYW1ldGVycywgSWRUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi9kZXNjcmlwdG9ycy9hY3Rpb24uZGVzY3JpcHRvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFjdGlvbkNvbXBvbmVudDxJdGVtID0gYW55LCBTZXJ2aWNlID0gdW5kZWZpbmVkPiB7XG4gICAgYWN0aW9uOiBJbnB1dFNpZ25hbDxBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlPj47XG4gICAgaXRlbTogSW5wdXRTaWduYWw8SXRlbT47XG4gICAgaXRlbUlkOiBJbnB1dFNpZ25hbDxJZFR5cGU+O1xuICAgIGFjdGlvbkRhdGE6IElucHV0U2lnbmFsPEFjdGlvbkRhdGE+O1xuICAgIGVuYWJsZWQ6IElucHV0U2lnbmFsPGJvb2xlYW4+O1xuICAgIGxvYWRpbmc6IElucHV0U2lnbmFsPGJvb2xlYW4+O1xuICAgIHRyaWdnZXI6IE91dHB1dEVtaXR0ZXJSZWY8QWN0aW9uUGFyYW1ldGVyczxJdGVtPj47XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1jb250YWluZXIubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vbW9kZWxzL2V4ZWN1dGlvbi92aWV3LWNvbnRhaW5lci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtEYXRhTGlzdFBhcmFtcywgSURhdGFQcm92aWRlcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcblxuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9ySW5zdH0gZnJvbSAnLi4vLi4vZGVzY3JpcHRvcnMvYWN0aW9uLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtJQWN0aW9uSW5zdGFuY2V9IGZyb20gJy4vYWN0aW9uLWluc3RhbmNlLm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBJVmlld0NvbnRhaW5lcjxJdGVtLCBTZXJ2aWNlLCBBY3Rpb25JbnN0YW5jZSBleHRlbmRzIElBY3Rpb25JbnN0YW5jZTxJdGVtLCBTZXJ2aWNlPiA9IElBY3Rpb25JbnN0YW5jZTxJdGVtLCBTZXJ2aWNlPj4ge1xuICAgIGRhdGFQcm92aWRlcj86IElEYXRhUHJvdmlkZXI8SXRlbSwgU2VydmljZT47XG4gICAgcm91dGVUcmlnZ2VyZWRBY3Rpb25JbnN0YW5jZT86IEFjdGlvbkluc3RhbmNlO1xuICAgIGFjdGlvbnM6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PEl0ZW0+PjtcblxuICAgIHRhYmxlUmVsb2FkJDogT2JzZXJ2YWJsZTxWaWV3Q29udGFpbmVyVGFibGVSZWxvYWRFdmVudD47XG4gICAgZWRpdG9yUmVzZXQkOiBPYnNlcnZhYmxlPFZpZXdDb250YWluZXJFZGl0b3JSZXNldEV2ZW50PEl0ZW0+PjtcbiAgICBlZGl0b3JDbG9zZSQ6IE9ic2VydmFibGU8Vmlld0NvbnRhaW5lckVkaXRvckNsb3NlRXZlbnQ8SXRlbT4+O1xuXG4gICAgcmVsb2FkVGFibGUoZXZlbnQ/OiBWaWV3Q29udGFpbmVyVGFibGVSZWxvYWRFdmVudCk6IHZvaWQ7XG5cbiAgICByZXNldEVkaXRvcihldmVudD86IFZpZXdDb250YWluZXJFZGl0b3JSZXNldEV2ZW50PEl0ZW0+IHwgdW5kZWZpbmVkKTogdm9pZDtcblxuICAgIGNsb3NlRWRpdG9yKGV2ZW50PzogVmlld0NvbnRhaW5lckVkaXRvckNsb3NlRXZlbnQ8SXRlbT4pOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdDb250YWluZXJUYWJsZVJlbG9hZEV2ZW50IHtcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICAgIHJlc2V0UGFyYW1zPzogYm9vbGVhbjtcbiAgICBwYXJhbXM/OiBEYXRhTGlzdFBhcmFtcztcbiAgICBkYXRhPzoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaWV3Q29udGFpbmVyRWRpdG9yUmVzZXRFdmVudDxUPiB7XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgICBmZXRjaD86IGJvb2xlYW47IC8vIGlmIGl0ZW0gc2hvdWxkIGJlIHJlLWZldGNoZWQgYWdhaW4gdGhyb3VnaCBkYXRhIHByb3ZpZGVyXG4gICAgaXRlbT86IFQ7IC8vIGlmIHByZXNlbnQsIGl0ZW0gdmFsdWUgd2lsbCBiZSB1c2VkIHRvIHJlc2V0IGZvcm1cbiAgICBmaWVsZHM/OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgfTtcbiAgICBkYXRhPzoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaWV3Q29udGFpbmVyRWRpdG9yQ2xvc2VFdmVudDxUPiB7XG4gICAgZW1pdEV2ZW50PzogYm9vbGVhbjtcbiAgICBpdGVtPzogVDtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1jb250YWluZXIubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vbW9kZWxzL2V4ZWN1dGlvbi92aWV3LWNvbnRhaW5lci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtXcml0YWJsZVNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7RGF0YUxpc3RQYXJhbXMsIElEYXRhUHJvdmlkZXJ9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5cbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvckluc3R9IGZyb20gJy4uLy4uL2Rlc2NyaXB0b3JzL2FjdGlvbi5kZXNjcmlwdG9yJztcbmltcG9ydCB7SUFjdGlvbkluc3RhbmNlfSBmcm9tICcuL2FjdGlvbi1pbnN0YW5jZS5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVZpZXdDb250YWluZXI8SXRlbSwgU2VydmljZSwgQWN0aW9uSW5zdGFuY2UgZXh0ZW5kcyBJQWN0aW9uSW5zdGFuY2U8SXRlbSwgU2VydmljZT4gPSBJQWN0aW9uSW5zdGFuY2U8SXRlbSwgU2VydmljZT4+IHtcbiAgICBkYXRhUHJvdmlkZXI6IFdyaXRhYmxlU2lnbmFsPElEYXRhUHJvdmlkZXI8SXRlbSwgU2VydmljZT4gfCB1bmRlZmluZWQ+O1xuICAgIHJvdXRlVHJpZ2dlcmVkQWN0aW9uSW5zdGFuY2U6IFdyaXRhYmxlU2lnbmFsPEFjdGlvbkluc3RhbmNlIHwgdW5kZWZpbmVkPjtcbiAgICBhY3Rpb25zOiBXcml0YWJsZVNpZ25hbDxBcnJheTxBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtPj4+O1xuXG4gICAgdGFibGVSZWxvYWQkOiBPYnNlcnZhYmxlPFZpZXdDb250YWluZXJUYWJsZVJlbG9hZEV2ZW50PjtcbiAgICBlZGl0b3JSZXNldCQ6IE9ic2VydmFibGU8Vmlld0NvbnRhaW5lckVkaXRvclJlc2V0RXZlbnQ8SXRlbT4+O1xuICAgIGVkaXRvckNsb3NlJDogT2JzZXJ2YWJsZTxWaWV3Q29udGFpbmVyRWRpdG9yQ2xvc2VFdmVudDxJdGVtPj47XG5cbiAgICByZWxvYWRUYWJsZShldmVudD86IFZpZXdDb250YWluZXJUYWJsZVJlbG9hZEV2ZW50KTogdm9pZDtcblxuICAgIHJlc2V0RWRpdG9yKGV2ZW50PzogVmlld0NvbnRhaW5lckVkaXRvclJlc2V0RXZlbnQ8SXRlbT4gfCB1bmRlZmluZWQpOiB2b2lkO1xuXG4gICAgY2xvc2VFZGl0b3IoZXZlbnQ/OiBWaWV3Q29udGFpbmVyRWRpdG9yQ2xvc2VFdmVudDxJdGVtPik6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlld0NvbnRhaW5lclRhYmxlUmVsb2FkRXZlbnQge1xuICAgIGVtaXRFdmVudD86IGJvb2xlYW47XG4gICAgcmVzZXRQYXJhbXM/OiBib29sZWFuO1xuICAgIHBhcmFtcz86IERhdGFMaXN0UGFyYW1zO1xuICAgIGRhdGE/OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdDb250YWluZXJFZGl0b3JSZXNldEV2ZW50PFQ+IHtcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICAgIGZldGNoPzogYm9vbGVhbjsgLy8gaWYgaXRlbSBzaG91bGQgYmUgcmUtZmV0Y2hlZCBhZ2FpbiB0aHJvdWdoIGRhdGEgcHJvdmlkZXJcbiAgICBpdGVtPzogVDsgLy8gaWYgcHJlc2VudCwgaXRlbSB2YWx1ZSB3aWxsIGJlIHVzZWQgdG8gcmVzZXQgZm9ybVxuICAgIGZpZWxkcz86IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICB9O1xuICAgIGRhdGE/OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZpZXdDb250YWluZXJFZGl0b3JDbG9zZUV2ZW50PFQ+IHtcbiAgICBlbWl0RXZlbnQ/OiBib29sZWFuO1xuICAgIGl0ZW0/OiBUO1xufVxuIl19
@@ -0,0 +1,33 @@
1
+ import { EditorDataProviderInst } from './editor.data-provider';
2
+ export class EditorDataProvider extends EditorDataProviderInst {
3
+ constructor() {
4
+ super(undefined, undefined);
5
+ }
6
+ static create() {
7
+ return editorDataProvider();
8
+ }
9
+ static fromClass(type) {
10
+ return editorDataProviderFromClass(type);
11
+ }
12
+ static fromClassWithService(type, serviceType) {
13
+ return editorDataProviderFromClass(type, serviceType);
14
+ }
15
+ static fromService(serviceType) {
16
+ return editorDataProviderWithService(serviceType);
17
+ }
18
+ }
19
+ export function editorDataProvider(type, serviceType) {
20
+ return new EditorDataProviderInst(undefined, serviceType);
21
+ }
22
+ export function editorDataProviderWithService(serviceType) {
23
+ return new EditorDataProviderInst(undefined, serviceType);
24
+ }
25
+ export function editorDataProviderFromClass(type, serviceType) {
26
+ return new EditorDataProviderInst(type, serviceType);
27
+ }
28
+ export function editorDataProviderFromModel(model, serviceType) {
29
+ return typeof serviceType !== 'undefined'
30
+ ? new EditorDataProviderInst(model.type, serviceType)
31
+ : new EditorDataProviderInst(model.type, undefined);
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWRhdGEtcHJvdmlkZXIuZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2VkaXRvci9kYXRhLXByb3ZpZGVycy9lZGl0b3ItZGF0YS1wcm92aWRlci5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxzQkFBMkI7SUFDL0Q7UUFDSSxLQUFLLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTSxNQUFNLENBQUMsTUFBTTtRQUNoQixPQUFPLGtCQUFrQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFTLENBQVEsSUFBc0I7UUFDakQsT0FBTywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU0sTUFBTSxDQUFDLG9CQUFvQixDQUM5QixJQUFzQixFQUN0QixXQUFzQztRQUV0QyxPQUFPLDJCQUEyQixDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU0sTUFBTSxDQUFDLFdBQVcsQ0FBaUIsV0FBc0M7UUFDNUUsT0FBTyw2QkFBNkIsQ0FBaUIsV0FBVyxDQUFDLENBQUM7SUFDdEUsQ0FBQztDQUNKO0FBUUQsTUFBTSxVQUFVLGtCQUFrQixDQUFpRSxJQUE0QixFQUFFLFdBQTBCO0lBQ3ZKLE9BQU8sSUFBSSxzQkFBc0IsQ0FBMEMsU0FBUyxFQUFFLFdBQTJCLENBQUMsQ0FBQztBQUN2SCxDQUFDO0FBRUQsTUFBTSxVQUFVLDZCQUE2QixDQUN6QyxXQUFzQztJQUV0QyxPQUFPLElBQUksc0JBQXNCLENBQXVELFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUNwSCxDQUFDO0FBT0QsTUFBTSxVQUFVLDJCQUEyQixDQUFpRSxJQUFzQixFQUFFLFdBQTBCO0lBQzFKLE9BQU8sSUFBSSxzQkFBc0IsQ0FBaUQsSUFBSSxFQUFFLFdBQTJCLENBQUMsQ0FBQztBQUN6SCxDQUFDO0FBU0QsTUFBTSxVQUFVLDJCQUEyQixDQUN2QyxLQUF5QyxFQUN6QyxXQUEwQjtJQUUxQixPQUFPLE9BQU8sV0FBVyxLQUFLLFdBQVc7UUFDckMsQ0FBQyxDQUFDLElBQUksc0JBQXNCLENBQThELEtBQUssQ0FBQyxJQUF3QixFQUFFLFdBQXdDLENBQUM7UUFDbkssQ0FBQyxDQUFDLElBQUksc0JBQXNCLENBQWdELEtBQUssQ0FBQyxJQUF3QixFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQy9ILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NsYXNzVHlwZSwgU2VydmljZUNsYXNzVHlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yLCBUeXBlRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5cbmltcG9ydCB7RWRpdG9yRGF0YVByb3ZpZGVySW5zdH0gZnJvbSAnLi9lZGl0b3IuZGF0YS1wcm92aWRlcic7XG5cbmV4cG9ydCBjbGFzcyBFZGl0b3JEYXRhUHJvdmlkZXIgZXh0ZW5kcyBFZGl0b3JEYXRhUHJvdmlkZXJJbnN0PGFueT4ge1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIodW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlPE1vZGVsPigpOiBFZGl0b3JEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBlZGl0b3JEYXRhUHJvdmlkZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21DbGFzczxNb2RlbD4odHlwZTogQ2xhc3NUeXBlPE1vZGVsPik6IEVkaXRvckRhdGFQcm92aWRlckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgQ2xhc3NUeXBlPE1vZGVsPiwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiBlZGl0b3JEYXRhUHJvdmlkZXJGcm9tQ2xhc3ModHlwZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tQ2xhc3NXaXRoU2VydmljZTxNb2RlbCwgU2VydmljZT4oXG4gICAgICAgIHR5cGU6IENsYXNzVHlwZTxNb2RlbD4sXG4gICAgICAgIHNlcnZpY2VUeXBlOiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+XG4gICAgKTogRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgQ2xhc3NUeXBlPE1vZGVsPiwgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPj4ge1xuICAgICAgICByZXR1cm4gZWRpdG9yRGF0YVByb3ZpZGVyRnJvbUNsYXNzKHR5cGUsIHNlcnZpY2VUeXBlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21TZXJ2aWNlPFNlcnZpY2UsIE1vZGVsPihzZXJ2aWNlVHlwZTogU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPik6IEVkaXRvckRhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIHVuZGVmaW5lZCwgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPj4ge1xuICAgICAgICByZXR1cm4gZWRpdG9yRGF0YVByb3ZpZGVyV2l0aFNlcnZpY2U8U2VydmljZSwgTW9kZWw+KHNlcnZpY2VUeXBlKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlZGl0b3JEYXRhUHJvdmlkZXI8TW9kZWw+KCk6IEVkaXRvckRhdGFQcm92aWRlckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+O1xuZXhwb3J0IGZ1bmN0aW9uIGVkaXRvckRhdGFQcm92aWRlcjxNb2RlbD4odHlwZTogVHlwZURlc2NyaXB0b3I8TW9kZWw+KTogRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZD47XG5leHBvcnQgZnVuY3Rpb24gZWRpdG9yRGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlID0gYW55PihcbiAgICB0eXBlOiBUeXBlRGVzY3JpcHRvcjxNb2RlbD4sXG4gICAgc2VydmljZVR5cGU6IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT5cbik6IEVkaXRvckRhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIHVuZGVmaW5lZCwgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPj47XG5leHBvcnQgZnVuY3Rpb24gZWRpdG9yRGF0YVByb3ZpZGVyPE1vZGVsLCBTZXJ2aWNlID0gYW55LCBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+Pih0eXBlPzogVHlwZURlc2NyaXB0b3I8TW9kZWw+LCBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzcykge1xuICAgIHJldHVybiBuZXcgRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgdW5kZWZpbmVkLCBTZXJ2aWNlQ2xhc3M+KHVuZGVmaW5lZCwgc2VydmljZVR5cGUgYXMgU2VydmljZUNsYXNzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVkaXRvckRhdGFQcm92aWRlcldpdGhTZXJ2aWNlPFNlcnZpY2UsIE1vZGVsPihcbiAgICBzZXJ2aWNlVHlwZTogU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPlxuKTogRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgdW5kZWZpbmVkLCBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+PiB7XG4gICAgcmV0dXJuIG5ldyBFZGl0b3JEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCB1bmRlZmluZWQsIFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4+KHVuZGVmaW5lZCwgc2VydmljZVR5cGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZWRpdG9yRGF0YVByb3ZpZGVyRnJvbUNsYXNzPE1vZGVsPih0eXBlOiBDbGFzc1R5cGU8TW9kZWw+KTogRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCBDbGFzc1R5cGU8TW9kZWw+LCB1bmRlZmluZWQ+O1xuZXhwb3J0IGZ1bmN0aW9uIGVkaXRvckRhdGFQcm92aWRlckZyb21DbGFzczxNb2RlbCwgU2VydmljZSA9IGFueT4oXG4gICAgdHlwZTogQ2xhc3NUeXBlPE1vZGVsPixcbiAgICBzZXJ2aWNlVHlwZTogU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPlxuKTogRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgQ2xhc3NUeXBlPE1vZGVsPiwgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPj47XG5leHBvcnQgZnVuY3Rpb24gZWRpdG9yRGF0YVByb3ZpZGVyRnJvbUNsYXNzPE1vZGVsLCBTZXJ2aWNlID0gYW55LCBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+Pih0eXBlOiBDbGFzc1R5cGU8TW9kZWw+LCBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzcykge1xuICAgIHJldHVybiBuZXcgRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgQ2xhc3NUeXBlPE1vZGVsPiwgU2VydmljZUNsYXNzPih0eXBlLCBzZXJ2aWNlVHlwZSBhcyBTZXJ2aWNlQ2xhc3MpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZWRpdG9yRGF0YVByb3ZpZGVyRnJvbU1vZGVsPE1vZGVsLCBNb2RlbENsYXNzID0gQ2xhc3NUeXBlPE1vZGVsPj4oXG4gICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxNb2RlbCwgTW9kZWxDbGFzcz5cbik6IEVkaXRvckRhdGFQcm92aWRlckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgTW9kZWxDbGFzcywgdW5kZWZpbmVkPjtcbmV4cG9ydCBmdW5jdGlvbiBlZGl0b3JEYXRhUHJvdmlkZXJGcm9tTW9kZWw8TW9kZWwsIFNlcnZpY2UgPSBhbnksIE1vZGVsQ2xhc3MgPSBDbGFzc1R5cGU8TW9kZWw+PihcbiAgICBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsLCBNb2RlbENsYXNzPixcbiAgICBTZXJ2aWNlQ2xhc3M6IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT5cbik6IEVkaXRvckRhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UsIE1vZGVsQ2xhc3MsIFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4+O1xuZXhwb3J0IGZ1bmN0aW9uIGVkaXRvckRhdGFQcm92aWRlckZyb21Nb2RlbDxNb2RlbCwgU2VydmljZSA9IGFueSwgTW9kZWxDbGFzcyA9IENsYXNzVHlwZTxNb2RlbD4sIFNlcnZpY2VDbGFzcyA9IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4+KFxuICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8TW9kZWwsIE1vZGVsQ2xhc3M+LFxuICAgIHNlcnZpY2VUeXBlPzogU2VydmljZUNsYXNzXG4pIHtcbiAgICByZXR1cm4gdHlwZW9mIHNlcnZpY2VUeXBlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICA/IG5ldyBFZGl0b3JEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCBTZXJ2aWNlLCBDbGFzc1R5cGU8TW9kZWw+LCBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+Pihtb2RlbC50eXBlIGFzIENsYXNzVHlwZTxNb2RlbD4sIHNlcnZpY2VUeXBlIGFzIFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4pXG4gICAgICAgIDogbmV3IEVkaXRvckRhdGFQcm92aWRlckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgQ2xhc3NUeXBlPE1vZGVsPiwgdW5kZWZpbmVkPihtb2RlbC50eXBlIGFzIENsYXNzVHlwZTxNb2RlbD4sIHVuZGVmaW5lZCk7XG59XG4iXX0=
@@ -71,34 +71,4 @@ export class EditorDataProviderInst extends DataProviderInst {
71
71
  return this;
72
72
  }
73
73
  }
74
- export class EditorDataProvider extends EditorDataProviderInst {
75
- constructor() {
76
- super(undefined, undefined);
77
- }
78
- static create() {
79
- return new EditorDataProviderInst(undefined, undefined);
80
- }
81
- static fromClass(type) {
82
- return new EditorDataProviderInst(type, undefined);
83
- }
84
- static fromClassWithService(type, serviceType) {
85
- return new EditorDataProviderInst(type, serviceType);
86
- }
87
- static fromService(serviceType) {
88
- return new EditorDataProviderInst(undefined, serviceType);
89
- }
90
- static fromAnyParam(type, serviceType) {
91
- if (typeof type !== 'undefined') {
92
- return typeof serviceType !== 'undefined'
93
- ? EditorDataProvider.fromClassWithService(type, serviceType)
94
- : EditorDataProvider.fromClass(type);
95
- }
96
- else if (typeof serviceType !== 'undefined') {
97
- return EditorDataProvider.fromService(serviceType);
98
- }
99
- else {
100
- return EditorDataProvider.create();
101
- }
102
- }
103
- }
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmRhdGEtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvZGF0YS1wcm92aWRlcnMvZWRpdG9yLmRhdGEtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVoQyxPQUFPLEVBR0gsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQU1uQixNQUFNLDZCQUE2QixDQUFDO0FBdURyQyxNQUFNLE9BQU8sc0JBQ1QsU0FBUSxnQkFBMEQ7SUFRbEUsWUFBc0IsSUFBZ0IsRUFBRSxXQUF5QjtRQUM3RCxLQUFLLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBTm5CLFdBQU0sR0FBa0QsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxvQkFBb0IsQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBTy9KLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsU0FBUyxDQUFDLEVBQWlEO1FBQ3ZELElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILFVBQVUsQ0FBQyxFQUFtRDtRQUMxRCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxVQUFVLENBQUMsRUFBbUQ7UUFDMUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILFVBQVUsQ0FBQyxFQUFtRDtRQUMxRCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsc0JBQTJCO0lBQy9EO1FBQ0ksS0FBSyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sTUFBTSxDQUFDLE1BQU07UUFDaEIsT0FBTyxJQUFJLHNCQUFzQixDQUF5QyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDcEcsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFTLENBQVEsSUFBc0I7UUFDakQsT0FBTyxJQUFJLHNCQUFzQixDQUFnRCxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVNLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBaUIsSUFBc0IsRUFBRSxXQUFzQztRQUM3RyxPQUFPLElBQUksc0JBQXNCLENBQThELElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN0SCxDQUFDO0lBRU0sTUFBTSxDQUFDLFdBQVcsQ0FBaUIsV0FBc0M7UUFDNUUsT0FBTyxJQUFJLHNCQUFzQixDQUF1RCxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDcEgsQ0FBQztJQWdCTSxNQUFNLENBQUMsWUFBWSxDQUFnRyxJQUFpQixFQUFFLFdBQTBCO1FBQ25LLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDOUIsT0FBTyxPQUFPLFdBQVcsS0FBSyxXQUFXO2dCQUNyQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLENBQUMsSUFBd0IsRUFBRSxXQUF3QyxDQUFDO2dCQUM3RyxDQUFDLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLElBQXdCLENBQUMsQ0FBQztRQUNqRSxDQUFDO2FBQU0sSUFBSSxPQUFPLFdBQVcsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUM1QyxPQUFPLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxXQUF3QyxDQUFDLENBQUM7UUFDcEYsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLGtCQUFrQixDQUFDLE1BQU0sRUFBUyxDQUFDO1FBQzlDLENBQUM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3Rocm93RXJyb3J9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgIENsYXNzT3B0VHlwZSxcbiAgICBDbGFzc1R5cGUsXG4gICAgQ29tbW9uc0ludGVybmFsRXJyb3IsXG4gICAgRGF0YVByb3ZpZGVySW5zdCxcbiAgICBJRGF0YVByb3ZpZGVyLFxuICAgIElkVHlwZSxcbiAgICBJdGVtT3JPYnNlcnZhYmxlLFxuICAgIFNlcnZpY2VDbGFzc09wdFR5cGUsXG4gICAgU2VydmljZUNsYXNzVHlwZVxufSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZTxNb2RlbCA9IGFueSwgU2VydmljZSA9IHVuZGVmaW5lZCwgSWQgPSBJZFR5cGUsIFJldHVybiA9IEl0ZW1Pck9ic2VydmFibGU8TW9kZWw+PiA9IChcbiAgICBpZDogSWQsXG4gICAgc2VydmljZTogU2VydmljZSxcbiAgICBsb2NhbGU6IHN0cmluZyB8IHVuZGVmaW5lZFxuKSA9PiBSZXR1cm47XG5leHBvcnQgdHlwZSBFZGl0b3JEYXRhUHJvdmlkZXJDcmVhdGVGblR5cGU8TW9kZWwgPSBhbnksIFNlcnZpY2UgPSB1bmRlZmluZWQsIEl0ZW0gPSBNb2RlbCB8IHVuZGVmaW5lZCwgUmV0dXJuID0gSXRlbU9yT2JzZXJ2YWJsZTxNb2RlbD4+ID0gKGl0ZW06IEl0ZW0sIHNlcnZpY2U6IFNlcnZpY2UpID0+IFJldHVybjtcbmV4cG9ydCB0eXBlIEVkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxNb2RlbCA9IGFueSwgU2VydmljZSA9IHVuZGVmaW5lZCwgSWQgPSBJZFR5cGUsIEl0ZW0gPSBNb2RlbCB8IHVuZGVmaW5lZCwgUmV0dXJuID0gSXRlbU9yT2JzZXJ2YWJsZTxNb2RlbD4+ID0gKFxuICAgIGlkOiBJZCxcbiAgICBpdGVtOiBJdGVtLFxuICAgIHNlcnZpY2U6IFNlcnZpY2VcbikgPT4gUmV0dXJuO1xuZXhwb3J0IHR5cGUgRWRpdG9yRGF0YVByb3ZpZGVyRGVsZXRlRm5UeXBlPE1vZGVsID0gYW55LCBTZXJ2aWNlID0gdW5kZWZpbmVkLCBJZCA9IElkVHlwZSwgSXRlbSA9IE1vZGVsIHwgdW5kZWZpbmVkLCBSZXR1cm4gPSBJdGVtT3JPYnNlcnZhYmxlPE1vZGVsIHwgbnVsbD4+ID0gKFxuICAgIGlkOiBJZCxcbiAgICBpdGVtOiBJdGVtLFxuICAgIHNlcnZpY2U6IFNlcnZpY2VcbikgPT4gUmV0dXJuO1xuXG5leHBvcnQgaW50ZXJmYWNlIElFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaDxNb2RlbCwgU2VydmljZT4ge1xuICAgIGZldGNoOiBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZTxNb2RlbCwgU2VydmljZT47XG5cbiAgICB3aXRoRmV0Y2goZm46IEVkaXRvckRhdGFQcm92aWRlckZldGNoRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPik6IHRoaXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckRhdGFQcm92aWRlckNyZWF0ZTxNb2RlbCwgU2VydmljZT4ge1xuICAgIGNyZWF0ZT86IEVkaXRvckRhdGFQcm92aWRlckNyZWF0ZUZuVHlwZTxNb2RlbCwgU2VydmljZT47XG5cbiAgICB3aXRoQ3JlYXRlKGZuPzogRWRpdG9yRGF0YVByb3ZpZGVyQ3JlYXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPik6IHRoaXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckRhdGFQcm92aWRlclVwZGF0ZTxNb2RlbCwgU2VydmljZT4ge1xuICAgIHVwZGF0ZT86IEVkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxNb2RlbCwgU2VydmljZT47XG5cbiAgICB3aXRoVXBkYXRlKGZuPzogRWRpdG9yRGF0YVByb3ZpZGVyVXBkYXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPik6IHRoaXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckRhdGFQcm92aWRlckRlbGV0ZTxNb2RlbCwgU2VydmljZT4ge1xuICAgIGRlbGV0ZT86IEVkaXRvckRhdGFQcm92aWRlckRlbGV0ZUZuVHlwZTxNb2RlbCwgU2VydmljZT47XG5cbiAgICB3aXRoRGVsZXRlKGZuPzogRWRpdG9yRGF0YVByb3ZpZGVyRGVsZXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPik6IHRoaXM7XG59XG5cbmV4cG9ydCB0eXBlIElFZGl0b3JEYXRhUHJvdmlkZXJGbnNUeXBlPE1vZGVsLCBTZXJ2aWNlPiA9IElFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaDxNb2RlbCwgU2VydmljZT4gJlxuICAgIElFZGl0b3JEYXRhUHJvdmlkZXJDcmVhdGU8TW9kZWwsIFNlcnZpY2U+ICZcbiAgICBJRWRpdG9yRGF0YVByb3ZpZGVyVXBkYXRlPE1vZGVsLCBTZXJ2aWNlPiAmXG4gICAgSUVkaXRvckRhdGFQcm92aWRlckRlbGV0ZTxNb2RlbCwgU2VydmljZT47XG5leHBvcnQgdHlwZSBJRWRpdG9yRGF0YVByb3ZpZGVyPE1vZGVsID0gYW55LCBTZXJ2aWNlID0gYW55LCBNb2RlbENsYXNzID0gQ2xhc3NPcHRUeXBlPE1vZGVsPiwgU2VydmljZUNsYXNzID0gU2VydmljZUNsYXNzT3B0VHlwZTxTZXJ2aWNlPj4gPSBJRGF0YVByb3ZpZGVyPFxuICAgIE1vZGVsLFxuICAgIFNlcnZpY2UsXG4gICAgTW9kZWxDbGFzcyxcbiAgICBTZXJ2aWNlQ2xhc3Ncbj4gJlxuICAgIElFZGl0b3JEYXRhUHJvdmlkZXJGbnNUeXBlPE1vZGVsLCBTZXJ2aWNlPjtcblxuZXhwb3J0IGNsYXNzIEVkaXRvckRhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UgPSBhbnksIE1vZGVsQ2xhc3MgPSBDbGFzc09wdFR5cGU8TW9kZWw+LCBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NPcHRUeXBlPFNlcnZpY2U+PlxuICAgIGV4dGVuZHMgRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgTW9kZWxDbGFzcywgU2VydmljZUNsYXNzPlxuICAgIGltcGxlbWVudHMgSUVkaXRvckRhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZSwgTW9kZWxDbGFzcywgU2VydmljZUNsYXNzPlxue1xuICAgIHByb3RlY3RlZCBfZmV0Y2g6IEVkaXRvckRhdGFQcm92aWRlckZldGNoRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPiA9IGlkID0+IHRocm93RXJyb3IoKCkgPT4gbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBObyBmZXRjaCBmdW5jdGlvbiBwcm92aWRlZCBmb3IgaWQgJHtpZH0uYCkpO1xuICAgIHByb3RlY3RlZCBfY3JlYXRlPzogRWRpdG9yRGF0YVByb3ZpZGVyQ3JlYXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBwcm90ZWN0ZWQgX3VwZGF0ZT86IEVkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxNb2RlbCwgU2VydmljZT47XG4gICAgcHJvdGVjdGVkIF9kZWxldGU/OiBFZGl0b3JEYXRhUHJvdmlkZXJEZWxldGVGblR5cGU8TW9kZWwsIFNlcnZpY2U+O1xuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHR5cGU6IE1vZGVsQ2xhc3MsIHNlcnZpY2VUeXBlOiBTZXJ2aWNlQ2xhc3MpIHtcbiAgICAgICAgc3VwZXIodHlwZSwgc2VydmljZVR5cGUpO1xuICAgIH1cblxuICAgIGdldCBmZXRjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoO1xuICAgIH1cblxuICAgIGdldCBjcmVhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGU7XG4gICAgfVxuXG4gICAgZ2V0IHVwZGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZTtcbiAgICB9XG5cbiAgICBnZXQgZGVsZXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVsZXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGZldGNoIGZ1bmN0aW9uIGZvciB0aGUgRWRpdG9yRGF0YVByb3ZpZGVyIGluc3RhbmNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZTxNb2RlbCwgU2VydmljZT59IGZuIC0gVGhlIGZldGNoIGZ1bmN0aW9uIHRvIGJlIHNldC5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBUaGUgaW5zdGFuY2Ugb2YgdGhlIEVkaXRvckRhdGFQcm92aWRlciB3aXRoIHRoZSBmZXRjaCBmdW5jdGlvbiBzZXQuXG4gICAgICpcbiAgICAgKiBAdHlwZXBhcmFtIE1vZGVsIFRoZSB0eXBlIG9mIGRhdGEgdGhpcyBEYXRhUHJvdmlkZXIgd2lsbCBoYW5kbGUuXG4gICAgICogQHR5cGVwYXJhbSBTZXJ2aWNlIFRoZSB0eXBlIG9mIHNlcnZpY2UgdXNlZCBieSB0aGlzIERhdGFQcm92aWRlci5cbiAgICAgKi9cbiAgICB3aXRoRmV0Y2goZm46IEVkaXRvckRhdGFQcm92aWRlckZldGNoRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9mZXRjaCA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBjcmVhdGUgZnVuY3Rpb24gZm9yIHRoZSBFZGl0b3JEYXRhUHJvdmlkZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0VkaXRvckRhdGFQcm92aWRlckNyZWF0ZUZuVHlwZTxNb2RlbCwgU2VydmljZT59IGZuIC0gVGhlIGZ1bmN0aW9uIHVzZWQgZm9yIGNyZWF0aW5nIG5ldyBpdGVtcy5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBpbnN0YW5jZSBvZiB0aGUgY2xhc3MuXG4gICAgICpcbiAgICAgKiBAdHlwZXBhcmFtIE1vZGVsIFRoZSB0eXBlIG9mIGRhdGEgdGhpcyBEYXRhUHJvdmlkZXIgd2lsbCBoYW5kbGUuXG4gICAgICogQHR5cGVwYXJhbSBTZXJ2aWNlIFRoZSB0eXBlIG9mIHNlcnZpY2UgdXNlZCBieSB0aGlzIERhdGFQcm92aWRlci5cbiAgICAgKi9cbiAgICB3aXRoQ3JlYXRlKGZuPzogRWRpdG9yRGF0YVByb3ZpZGVyQ3JlYXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9jcmVhdGUgPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdXBkYXRlIGZ1bmN0aW9uIGZvciB0aGUgRWRpdG9yRGF0YVByb3ZpZGVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtFZGl0b3JEYXRhUHJvdmlkZXJVcGRhdGVGblR5cGU8TW9kZWwsIFNlcnZpY2U+fSBmbiAtIFRoZSB1cGRhdGUgZnVuY3Rpb24gdG8gYmUgc2V0LlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGluc3RhbmNlIG9mIHRoZSBvYmplY3QgY2FsbGluZyB0aGlzIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEB0eXBlcGFyYW0gTW9kZWwgVGhlIHR5cGUgb2YgZGF0YSB0aGlzIERhdGFQcm92aWRlciB3aWxsIGhhbmRsZS5cbiAgICAgKiBAdHlwZXBhcmFtIFNlcnZpY2UgVGhlIHR5cGUgb2Ygc2VydmljZSB1c2VkIGJ5IHRoaXMgRGF0YVByb3ZpZGVyLlxuICAgICAqL1xuICAgIHdpdGhVcGRhdGUoZm4/OiBFZGl0b3JEYXRhUHJvdmlkZXJVcGRhdGVGblR5cGU8TW9kZWwsIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZSA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBkZWxldGUgZnVuY3Rpb24gZm9yIHRoZSBlZGl0b3IgZGF0YSBwcm92aWRlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RWRpdG9yRGF0YVByb3ZpZGVyRGVsZXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPn0gZm4gLSBUaGUgZGVsZXRlIGZ1bmN0aW9uIHRvIGJlIHNldC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGluc3RhbmNlIG9mIHRoZSBjdXJyZW50IGNsYXNzLlxuICAgICAqXG4gICAgICogQHR5cGVwYXJhbSBNb2RlbCBUaGUgdHlwZSBvZiBkYXRhIHRoaXMgRGF0YVByb3ZpZGVyIHdpbGwgaGFuZGxlLlxuICAgICAqIEB0eXBlcGFyYW0gU2VydmljZSBUaGUgdHlwZSBvZiBzZXJ2aWNlIHVzZWQgYnkgdGhpcyBEYXRhUHJvdmlkZXIuXG4gICAgICovXG4gICAgd2l0aERlbGV0ZShmbj86IEVkaXRvckRhdGFQcm92aWRlckRlbGV0ZUZuVHlwZTxNb2RlbCwgU2VydmljZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGVsZXRlID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVkaXRvckRhdGFQcm92aWRlciBleHRlbmRzIEVkaXRvckRhdGFQcm92aWRlckluc3Q8YW55PiB7XG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcih1bmRlZmluZWQsIHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGU8TW9kZWw+KCkge1xuICAgICAgICByZXR1cm4gbmV3IEVkaXRvckRhdGFQcm92aWRlckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQ+KHVuZGVmaW5lZCwgdW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21DbGFzczxNb2RlbD4odHlwZTogQ2xhc3NUeXBlPE1vZGVsPikge1xuICAgICAgICByZXR1cm4gbmV3IEVkaXRvckRhdGFQcm92aWRlckluc3Q8TW9kZWwsIHVuZGVmaW5lZCwgQ2xhc3NUeXBlPE1vZGVsPiwgdW5kZWZpbmVkPih0eXBlLCB1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbUNsYXNzV2l0aFNlcnZpY2U8TW9kZWwsIFNlcnZpY2U+KHR5cGU6IENsYXNzVHlwZTxNb2RlbD4sIHNlcnZpY2VUeXBlOiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+KSB7XG4gICAgICAgIHJldHVybiBuZXcgRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgQ2xhc3NUeXBlPE1vZGVsPiwgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPj4odHlwZSwgc2VydmljZVR5cGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbVNlcnZpY2U8U2VydmljZSwgTW9kZWw+KHNlcnZpY2VUeXBlOiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+KTogRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgdW5kZWZpbmVkLCBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+PiB7XG4gICAgICAgIHJldHVybiBuZXcgRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgdW5kZWZpbmVkLCBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+Pih1bmRlZmluZWQsIHNlcnZpY2VUeXBlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21BbnlQYXJhbTxNb2RlbD4oKTogRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZD47XG4gICAgcHVibGljIHN0YXRpYyBmcm9tQW55UGFyYW08TW9kZWw+KHR5cGU6IENsYXNzVHlwZTxNb2RlbD4pOiBFZGl0b3JEYXRhUHJvdmlkZXJJbnN0PE1vZGVsLCB1bmRlZmluZWQsIENsYXNzVHlwZTxNb2RlbD4sIHVuZGVmaW5lZD47XG4gICAgcHVibGljIHN0YXRpYyBmcm9tQW55UGFyYW08TW9kZWwsIFNlcnZpY2UgPSBhbnk+KFxuICAgICAgICB0eXBlOiB1bmRlZmluZWQsXG4gICAgICAgIHNlcnZpY2VUeXBlOiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+XG4gICAgKTogRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgdW5kZWZpbmVkLCBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+PjtcbiAgICBwdWJsaWMgc3RhdGljIGZyb21BbnlQYXJhbTxNb2RlbCwgU2VydmljZSA9IGFueT4oXG4gICAgICAgIHR5cGU6IENsYXNzVHlwZTxNb2RlbD4sXG4gICAgICAgIHNlcnZpY2VUeXBlOiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+XG4gICAgKTogRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgQ2xhc3NUeXBlPE1vZGVsPiwgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPj47XG4gICAgcHVibGljIHN0YXRpYyBmcm9tQW55UGFyYW08TW9kZWwsIFNlcnZpY2UsIE1vZGVsQ2xhc3MgPSBDbGFzc1R5cGU8TW9kZWw+LCBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+PihcbiAgICAgICAgdHlwZT86IE1vZGVsQ2xhc3MsXG4gICAgICAgIHNlcnZpY2VUeXBlPzogU2VydmljZUNsYXNzXG4gICAgKTogRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgTW9kZWxDbGFzcywgU2VydmljZUNsYXNzPjtcbiAgICBwdWJsaWMgc3RhdGljIGZyb21BbnlQYXJhbTxNb2RlbCwgU2VydmljZSA9IGFueSwgTW9kZWxDbGFzcyA9IENsYXNzVHlwZTxNb2RlbD4sIFNlcnZpY2VDbGFzcyA9IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4+KHR5cGU/OiBNb2RlbENsYXNzLCBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzcykge1xuICAgICAgICBpZiAodHlwZW9mIHR5cGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gdHlwZW9mIHNlcnZpY2VUeXBlICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgICAgID8gRWRpdG9yRGF0YVByb3ZpZGVyLmZyb21DbGFzc1dpdGhTZXJ2aWNlKHR5cGUgYXMgQ2xhc3NUeXBlPE1vZGVsPiwgc2VydmljZVR5cGUgYXMgU2VydmljZUNsYXNzVHlwZTxTZXJ2aWNlPilcbiAgICAgICAgICAgICAgICA6IEVkaXRvckRhdGFQcm92aWRlci5mcm9tQ2xhc3ModHlwZSBhcyBDbGFzc1R5cGU8TW9kZWw+KTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc2VydmljZVR5cGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gRWRpdG9yRGF0YVByb3ZpZGVyLmZyb21TZXJ2aWNlKHNlcnZpY2VUeXBlIGFzIFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIEVkaXRvckRhdGFQcm92aWRlci5jcmVhdGU8TW9kZWw+KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmRhdGEtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9lZGl0b3IvZGF0YS1wcm92aWRlcnMvZWRpdG9yLmRhdGEtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVoQyxPQUFPLEVBQWUsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQStELE1BQU0sNkJBQTZCLENBQUM7QUF1RC9KLE1BQU0sT0FBTyxzQkFDVCxTQUFRLGdCQUEwRDtJQVFsRSxZQUFtQixJQUFnQixFQUFFLFdBQXlCO1FBQzFELEtBQUssQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFObkIsV0FBTSxHQUFrRCxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLG9CQUFvQixDQUFDLHFDQUFxQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFPL0osQ0FBQztJQUVELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxTQUFTLENBQUMsRUFBaUQ7UUFDdkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDakIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsVUFBVSxDQUFDLEVBQW1EO1FBQzFELElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILFVBQVUsQ0FBQyxFQUFtRDtRQUMxRCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsVUFBVSxDQUFDLEVBQW1EO1FBQzFELElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7dGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7Q2xhc3NPcHRUeXBlLCBDb21tb25zSW50ZXJuYWxFcnJvciwgRGF0YVByb3ZpZGVySW5zdCwgSURhdGFQcm92aWRlciwgSWRUeXBlLCBJdGVtT3JPYnNlcnZhYmxlLCBTZXJ2aWNlQ2xhc3NPcHRUeXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5leHBvcnQgdHlwZSBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZTxNb2RlbCA9IGFueSwgU2VydmljZSA9IHVuZGVmaW5lZCwgSWQgPSBJZFR5cGUsIFJldHVybiA9IEl0ZW1Pck9ic2VydmFibGU8TW9kZWw+PiA9IChcbiAgICBpZDogSWQsXG4gICAgc2VydmljZTogU2VydmljZSxcbiAgICBsb2NhbGU6IHN0cmluZyB8IHVuZGVmaW5lZFxuKSA9PiBSZXR1cm47XG5leHBvcnQgdHlwZSBFZGl0b3JEYXRhUHJvdmlkZXJDcmVhdGVGblR5cGU8TW9kZWwgPSBhbnksIFNlcnZpY2UgPSB1bmRlZmluZWQsIEl0ZW0gPSBNb2RlbCB8IHVuZGVmaW5lZCwgUmV0dXJuID0gSXRlbU9yT2JzZXJ2YWJsZTxNb2RlbD4+ID0gKGl0ZW06IEl0ZW0sIHNlcnZpY2U6IFNlcnZpY2UpID0+IFJldHVybjtcbmV4cG9ydCB0eXBlIEVkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxNb2RlbCA9IGFueSwgU2VydmljZSA9IHVuZGVmaW5lZCwgSWQgPSBJZFR5cGUsIEl0ZW0gPSBNb2RlbCB8IHVuZGVmaW5lZCwgUmV0dXJuID0gSXRlbU9yT2JzZXJ2YWJsZTxNb2RlbD4+ID0gKFxuICAgIGlkOiBJZCxcbiAgICBpdGVtOiBJdGVtLFxuICAgIHNlcnZpY2U6IFNlcnZpY2VcbikgPT4gUmV0dXJuO1xuZXhwb3J0IHR5cGUgRWRpdG9yRGF0YVByb3ZpZGVyRGVsZXRlRm5UeXBlPE1vZGVsID0gYW55LCBTZXJ2aWNlID0gdW5kZWZpbmVkLCBJZCA9IElkVHlwZSwgSXRlbSA9IE1vZGVsIHwgdW5kZWZpbmVkLCBSZXR1cm4gPSBJdGVtT3JPYnNlcnZhYmxlPE1vZGVsIHwgbnVsbD4+ID0gKFxuICAgIGlkOiBJZCxcbiAgICBpdGVtOiBJdGVtLFxuICAgIHNlcnZpY2U6IFNlcnZpY2VcbikgPT4gUmV0dXJuO1xuXG5leHBvcnQgaW50ZXJmYWNlIElFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaDxNb2RlbCwgU2VydmljZT4ge1xuICAgIGZldGNoOiBFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZTxNb2RlbCwgU2VydmljZT47XG5cbiAgICB3aXRoRmV0Y2goZm46IEVkaXRvckRhdGFQcm92aWRlckZldGNoRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPik6IHRoaXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckRhdGFQcm92aWRlckNyZWF0ZTxNb2RlbCwgU2VydmljZT4ge1xuICAgIGNyZWF0ZT86IEVkaXRvckRhdGFQcm92aWRlckNyZWF0ZUZuVHlwZTxNb2RlbCwgU2VydmljZT47XG5cbiAgICB3aXRoQ3JlYXRlKGZuPzogRWRpdG9yRGF0YVByb3ZpZGVyQ3JlYXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPik6IHRoaXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckRhdGFQcm92aWRlclVwZGF0ZTxNb2RlbCwgU2VydmljZT4ge1xuICAgIHVwZGF0ZT86IEVkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxNb2RlbCwgU2VydmljZT47XG5cbiAgICB3aXRoVXBkYXRlKGZuPzogRWRpdG9yRGF0YVByb3ZpZGVyVXBkYXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPik6IHRoaXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckRhdGFQcm92aWRlckRlbGV0ZTxNb2RlbCwgU2VydmljZT4ge1xuICAgIGRlbGV0ZT86IEVkaXRvckRhdGFQcm92aWRlckRlbGV0ZUZuVHlwZTxNb2RlbCwgU2VydmljZT47XG5cbiAgICB3aXRoRGVsZXRlKGZuPzogRWRpdG9yRGF0YVByb3ZpZGVyRGVsZXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPik6IHRoaXM7XG59XG5cbmV4cG9ydCB0eXBlIElFZGl0b3JEYXRhUHJvdmlkZXJGbnNUeXBlPE1vZGVsLCBTZXJ2aWNlPiA9IElFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaDxNb2RlbCwgU2VydmljZT4gJlxuICAgIElFZGl0b3JEYXRhUHJvdmlkZXJDcmVhdGU8TW9kZWwsIFNlcnZpY2U+ICZcbiAgICBJRWRpdG9yRGF0YVByb3ZpZGVyVXBkYXRlPE1vZGVsLCBTZXJ2aWNlPiAmXG4gICAgSUVkaXRvckRhdGFQcm92aWRlckRlbGV0ZTxNb2RlbCwgU2VydmljZT47XG5leHBvcnQgdHlwZSBJRWRpdG9yRGF0YVByb3ZpZGVyPE1vZGVsID0gYW55LCBTZXJ2aWNlID0gYW55LCBNb2RlbENsYXNzID0gQ2xhc3NPcHRUeXBlPE1vZGVsPiwgU2VydmljZUNsYXNzID0gU2VydmljZUNsYXNzT3B0VHlwZTxTZXJ2aWNlPj4gPSBJRGF0YVByb3ZpZGVyPFxuICAgIE1vZGVsLFxuICAgIFNlcnZpY2UsXG4gICAgTW9kZWxDbGFzcyxcbiAgICBTZXJ2aWNlQ2xhc3Ncbj4gJlxuICAgIElFZGl0b3JEYXRhUHJvdmlkZXJGbnNUeXBlPE1vZGVsLCBTZXJ2aWNlPjtcblxuZXhwb3J0IGNsYXNzIEVkaXRvckRhdGFQcm92aWRlckluc3Q8TW9kZWwsIFNlcnZpY2UgPSBhbnksIE1vZGVsQ2xhc3MgPSBDbGFzc09wdFR5cGU8TW9kZWw+LCBTZXJ2aWNlQ2xhc3MgPSBTZXJ2aWNlQ2xhc3NPcHRUeXBlPFNlcnZpY2U+PlxuICAgIGV4dGVuZHMgRGF0YVByb3ZpZGVySW5zdDxNb2RlbCwgU2VydmljZSwgTW9kZWxDbGFzcywgU2VydmljZUNsYXNzPlxuICAgIGltcGxlbWVudHMgSUVkaXRvckRhdGFQcm92aWRlcjxNb2RlbCwgU2VydmljZSwgTW9kZWxDbGFzcywgU2VydmljZUNsYXNzPlxue1xuICAgIHByb3RlY3RlZCBfZmV0Y2g6IEVkaXRvckRhdGFQcm92aWRlckZldGNoRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPiA9IGlkID0+IHRocm93RXJyb3IoKCkgPT4gbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBObyBmZXRjaCBmdW5jdGlvbiBwcm92aWRlZCBmb3IgaWQgJHtpZH0uYCkpO1xuICAgIHByb3RlY3RlZCBfY3JlYXRlPzogRWRpdG9yRGF0YVByb3ZpZGVyQ3JlYXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPjtcbiAgICBwcm90ZWN0ZWQgX3VwZGF0ZT86IEVkaXRvckRhdGFQcm92aWRlclVwZGF0ZUZuVHlwZTxNb2RlbCwgU2VydmljZT47XG4gICAgcHJvdGVjdGVkIF9kZWxldGU/OiBFZGl0b3JEYXRhUHJvdmlkZXJEZWxldGVGblR5cGU8TW9kZWwsIFNlcnZpY2U+O1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHR5cGU6IE1vZGVsQ2xhc3MsIHNlcnZpY2VUeXBlOiBTZXJ2aWNlQ2xhc3MpIHtcbiAgICAgICAgc3VwZXIodHlwZSwgc2VydmljZVR5cGUpO1xuICAgIH1cblxuICAgIGdldCBmZXRjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoO1xuICAgIH1cblxuICAgIGdldCBjcmVhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGU7XG4gICAgfVxuXG4gICAgZ2V0IHVwZGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZTtcbiAgICB9XG5cbiAgICBnZXQgZGVsZXRlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVsZXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGZldGNoIGZ1bmN0aW9uIGZvciB0aGUgRWRpdG9yRGF0YVByb3ZpZGVyIGluc3RhbmNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtFZGl0b3JEYXRhUHJvdmlkZXJGZXRjaEZuVHlwZTxNb2RlbCwgU2VydmljZT59IGZuIC0gVGhlIGZldGNoIGZ1bmN0aW9uIHRvIGJlIHNldC5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBUaGUgaW5zdGFuY2Ugb2YgdGhlIEVkaXRvckRhdGFQcm92aWRlciB3aXRoIHRoZSBmZXRjaCBmdW5jdGlvbiBzZXQuXG4gICAgICpcbiAgICAgKiBAdHlwZXBhcmFtIE1vZGVsIFRoZSB0eXBlIG9mIGRhdGEgdGhpcyBEYXRhUHJvdmlkZXIgd2lsbCBoYW5kbGUuXG4gICAgICogQHR5cGVwYXJhbSBTZXJ2aWNlIFRoZSB0eXBlIG9mIHNlcnZpY2UgdXNlZCBieSB0aGlzIERhdGFQcm92aWRlci5cbiAgICAgKi9cbiAgICB3aXRoRmV0Y2goZm46IEVkaXRvckRhdGFQcm92aWRlckZldGNoRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9mZXRjaCA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBjcmVhdGUgZnVuY3Rpb24gZm9yIHRoZSBFZGl0b3JEYXRhUHJvdmlkZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0VkaXRvckRhdGFQcm92aWRlckNyZWF0ZUZuVHlwZTxNb2RlbCwgU2VydmljZT59IGZuIC0gVGhlIGZ1bmN0aW9uIHVzZWQgZm9yIGNyZWF0aW5nIG5ldyBpdGVtcy5cbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBpbnN0YW5jZSBvZiB0aGUgY2xhc3MuXG4gICAgICpcbiAgICAgKiBAdHlwZXBhcmFtIE1vZGVsIFRoZSB0eXBlIG9mIGRhdGEgdGhpcyBEYXRhUHJvdmlkZXIgd2lsbCBoYW5kbGUuXG4gICAgICogQHR5cGVwYXJhbSBTZXJ2aWNlIFRoZSB0eXBlIG9mIHNlcnZpY2UgdXNlZCBieSB0aGlzIERhdGFQcm92aWRlci5cbiAgICAgKi9cbiAgICB3aXRoQ3JlYXRlKGZuPzogRWRpdG9yRGF0YVByb3ZpZGVyQ3JlYXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9jcmVhdGUgPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdXBkYXRlIGZ1bmN0aW9uIGZvciB0aGUgRWRpdG9yRGF0YVByb3ZpZGVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtFZGl0b3JEYXRhUHJvdmlkZXJVcGRhdGVGblR5cGU8TW9kZWwsIFNlcnZpY2U+fSBmbiAtIFRoZSB1cGRhdGUgZnVuY3Rpb24gdG8gYmUgc2V0LlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGluc3RhbmNlIG9mIHRoZSBvYmplY3QgY2FsbGluZyB0aGlzIG1ldGhvZC5cbiAgICAgKlxuICAgICAqIEB0eXBlcGFyYW0gTW9kZWwgVGhlIHR5cGUgb2YgZGF0YSB0aGlzIERhdGFQcm92aWRlciB3aWxsIGhhbmRsZS5cbiAgICAgKiBAdHlwZXBhcmFtIFNlcnZpY2UgVGhlIHR5cGUgb2Ygc2VydmljZSB1c2VkIGJ5IHRoaXMgRGF0YVByb3ZpZGVyLlxuICAgICAqL1xuICAgIHdpdGhVcGRhdGUoZm4/OiBFZGl0b3JEYXRhUHJvdmlkZXJVcGRhdGVGblR5cGU8TW9kZWwsIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZSA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBkZWxldGUgZnVuY3Rpb24gZm9yIHRoZSBlZGl0b3IgZGF0YSBwcm92aWRlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7RWRpdG9yRGF0YVByb3ZpZGVyRGVsZXRlRm5UeXBlPE1vZGVsLCBTZXJ2aWNlPn0gZm4gLSBUaGUgZGVsZXRlIGZ1bmN0aW9uIHRvIGJlIHNldC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHt0aGlzfSAtIFJldHVybnMgdGhlIGluc3RhbmNlIG9mIHRoZSBjdXJyZW50IGNsYXNzLlxuICAgICAqXG4gICAgICogQHR5cGVwYXJhbSBNb2RlbCBUaGUgdHlwZSBvZiBkYXRhIHRoaXMgRGF0YVByb3ZpZGVyIHdpbGwgaGFuZGxlLlxuICAgICAqIEB0eXBlcGFyYW0gU2VydmljZSBUaGUgdHlwZSBvZiBzZXJ2aWNlIHVzZWQgYnkgdGhpcyBEYXRhUHJvdmlkZXIuXG4gICAgICovXG4gICAgd2l0aERlbGV0ZShmbj86IEVkaXRvckRhdGFQcm92aWRlckRlbGV0ZUZuVHlwZTxNb2RlbCwgU2VydmljZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGVsZXRlID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cbiJdfQ==