@provoly/dashboard 0.24.9 → 0.24.10

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 (52) hide show
  1. package/assets/svgs/bin_normal.svg +6 -0
  2. package/esm2022/lib/core/components/edit-input/edit-input.component.mjs +18 -5
  3. package/esm2022/lib/core/i18n/en.translations.mjs +3 -2
  4. package/esm2022/lib/core/i18n/fr.translations.mjs +5 -3
  5. package/esm2022/lib/core/model/manifest.interface.mjs +1 -1
  6. package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +1 -1
  7. package/esm2022/lib/dashboard/components/widgets/settings/settings.component.mjs +3 -3
  8. package/esm2022/lib/dashboard/store/dashboard.actions.mjs +8 -2
  9. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +19 -1
  10. package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +66 -1
  11. package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +6 -4
  12. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +1 -1
  13. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +1 -1
  14. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +183 -43
  15. package/esm2022/widgets/widget-map/i18n/en.translations.mjs +22 -2
  16. package/esm2022/widgets/widget-map/i18n/fr.translations.mjs +23 -2
  17. package/esm2022/widgets/widget-map/style/css.component.mjs +2 -2
  18. package/esm2022/widgets/widget-map/widget-map.module.mjs +12 -5
  19. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +1 -1
  20. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  21. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +1 -1
  22. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
  23. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +237 -49
  24. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  25. package/fesm2022/provoly-dashboard.mjs +119 -12
  26. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  27. package/lib/core/components/edit-input/edit-input.component.d.ts +6 -2
  28. package/lib/core/i18n/en.translations.d.ts +1 -0
  29. package/lib/core/i18n/fr.translations.d.ts +2 -0
  30. package/lib/core/model/manifest.interface.d.ts +2 -1
  31. package/lib/core/model/widget-map-manifest.interface.d.ts +6 -0
  32. package/lib/dashboard/store/dashboard.actions.d.ts +37 -0
  33. package/lib/dashboard/store/dashboard.effects.d.ts +4 -0
  34. package/lib/dashboard/store/dashboard.selectors.d.ts +9 -0
  35. package/package.json +1 -1
  36. package/styles/base/_utils.scss +4 -0
  37. package/styles/components/_a-range-slider.scss +5 -21
  38. package/styles/components/_m-form-label-field.scss +1 -0
  39. package/styles/components/_o-layer-settings.scss +139 -0
  40. package/styles/components/_o-pry-edit.scss +30 -2
  41. package/styles/components/_o-settings.scss +6 -2
  42. package/styles/main.scss +1 -0
  43. package/styles-theme/components-theme/_m-layer-legend.theme.scss +24 -0
  44. package/styles-theme/components-theme/_o-layer-settings.theme.scss +32 -0
  45. package/styles-theme/components-theme/_o-settings.theme.scss +6 -0
  46. package/styles-theme/main-theme.scss +2 -0
  47. package/widgets/widget-map/component/widget-map.component.d.ts +22 -8
  48. package/widgets/widget-map/i18n/en.translations.d.ts +20 -0
  49. package/widgets/widget-map/i18n/fr.translations.d.ts +21 -0
  50. package/widgets/widget-map/style/_m-layer-legend.scss +30 -5
  51. package/widgets/widget-map/style/_o-widget-map.scss +4 -0
  52. package/widgets/widget-map/widget-map.module.d.ts +2 -1
@@ -84,6 +84,12 @@ export const DashboardActions = {
84
84
  addManifestMetadata: createAction('[Dashboard] Add manifest metadata', props()),
85
85
  deleteManifestMetadata: createAction('[Dashboard] Delete manifest metadata', props()),
86
86
  triggerAggregate: createAction('[Dashboard] (bus) Triggering aggregates for datasource', props()),
87
- loadPresentation: createAction('[Dashboard] load presentation', props())
87
+ loadPresentation: createAction('[Dashboard] load presentation', props()),
88
+ initDefaultLayerGroup: createAction('[Dashboard] init default layer group', props()),
89
+ addLayerGroup: createAction('[Dashboard] add map layer group', props()),
90
+ updateLayerGroup: createAction('[Dashboard] update map layer group', props()),
91
+ confirmLayerGroupDeletion: createAction('[Dashboard] confirm deleting map layer group', props()),
92
+ deleteLayerGroup: createAction('[Dashboard] delete map layer group', props()),
93
+ updateAllLayerGroups: createAction('[Dashboard] remove map layer group', props())
88
94
  };
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL3N0b3JlL2Rhc2hib2FyZC5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBNkJsRCxNQUFNLENBQU4sSUFBWSxRQVFYO0FBUkQsV0FBWSxRQUFRO0lBQ2xCLCtCQUFtQixDQUFBO0lBQ25CLCtCQUFtQixDQUFBO0lBQ25CLGlDQUFxQixDQUFBO0lBQ3JCLCtCQUFtQixDQUFBO0lBQ25CLDZCQUFpQixDQUFBO0lBQ2pCLDZCQUFpQixDQUFBO0lBQ2pCLDZCQUFpQixDQUFBO0FBQ25CLENBQUMsRUFSVyxRQUFRLEtBQVIsUUFBUSxRQVFuQjtBQUVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLElBQUksRUFBRSxZQUFZLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxFQUFzQixDQUFDO0lBQ3JFLEtBQUssRUFBRSxZQUFZLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxFQUFzQixDQUFDO0lBQ3JFLGNBQWMsRUFBRSxZQUFZLENBQzFCLHFDQUFxQyxFQUNyQyxLQUFLLEVBT0QsQ0FDTDtJQUNELHdCQUF3QixFQUFFLFlBQVksQ0FDcEMsaURBQWlELEVBQ2pELEtBQUssRUFPRCxDQUNMO0lBQ0QsK0JBQStCLEVBQUUsWUFBWSxDQUMzQyw0REFBNEQsRUFDNUQsS0FBSyxFQU9ELENBQ0w7SUFDRCw2QkFBNkIsRUFBRSxZQUFZLENBQ3pDLHVEQUF1RCxFQUN2RCxLQUFLLEVBU0QsQ0FDTDtJQUNELDhCQUE4QixFQUFFLFlBQVksQ0FDMUMsd0RBQXdELEVBQ3hELEtBQUssRUFPRCxDQUNMO0lBQ0Qsa0JBQWtCLEVBQUUsWUFBWSxDQUM5QixzQ0FBc0MsRUFDdEMs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c3RvcmUnO1xuaW1wb3J0IHsgUHJ5U25hY2tNZXNzYWdlIH0gZnJvbSAnLi4vLi4vY29yZS9jb21wb25lbnRzL3NuYWNrYmFyL3NuYWNrLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEaXNwbGF5T3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvZGlzcGxheS1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL2ZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSXRlbSB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgRGFzaGJvYXJkTWFuaWZlc3QsXG4gIEdsb2JhbE1hbmlmZXN0LFxuICBNYW5pZmVzdERlc2NyaXB0aW9uLFxuICBXaWRnZXRNYW5pZmVzdFxufSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL21hbmlmZXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZWxhdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvcmVsYXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IE9yZGVyVmFsdWUgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL3Jlc3VsdC1vcmRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVzdWx0U2V0LCBSZXN1bHRTZXRzIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbC9yZXN1bHQtc2V0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBHZXRDYXBhYmlsaXRpZXNSZXNwb25zZSB9IGZyb20gJy4vd21zLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBEYXNoYm9hcmRDZWxsUGFyYW1zID0ge1xuICBncmlkV2lkdGg6IG51bWJlcjtcbiAgZ3JpZEhlaWdodDogbnVtYmVyO1xuICBncmlkR2FwOiBudW1iZXI7XG4gIGNvbHVtbnM6IG51bWJlcjtcbiAgY2VsbEhlaWdodDogbnVtYmVyO1xuICByb3dzOiBudW1iZXI7XG4gIGNlbGxXaWR0aDogbnVtYmVyO1xuICBvZmZzZXRMZWZ0OiBudW1iZXI7XG4gIG9mZnNldFRvcDogbnVtYmVyO1xuICBtb2JpbGVNb2RlOiBib29sZWFuO1xufTtcblxuZXhwb3J0IGVudW0gVmlld01vZGUge1xuICBDQVRBTE9HID0gJ2NhdGFsb2cnLFxuICBDT05TVUxUID0gJ2NvbnN1bHQnLFxuICBDUkVBVElPTiA9ICdjcmVhdGlvbicsXG4gIEVESVRJT04gPSAnZWRpdGlvbicsXG4gIEVESVRPUiA9ICdlZGl0b3InLFxuICBTRUFSQ0ggPSAnc2VhcmNoJyxcbiAgQ1VTVE9NID0gJ2N1c3RvbSdcbn1cblxuZXhwb3J0IGNvbnN0IERhc2hib2FyZEFjdGlvbnMgPSB7XG4gIGpvaW46IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gam9pbmVkJywgcHJvcHM8eyBzZW5kZXI6IHN0cmluZyB9PigpKSxcbiAgbGVhdmU6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gbGVhdmUnLCBwcm9wczx7IHNlbmRlcjogc3RyaW5nIH0+KCkpLFxuICB1cGRhdGVNYW5pZmVzdDogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSB1cGRhdGluZyBtYW5pZmVzdCcsXG4gICAgcHJvcHM8e1xuICAgICAgdGVuYW50cz86IHN0cmluZ1tdO1xuICAgICAgbWFuaWZlc3Q6IEdsb2JhbE1hbmlmZXN0O1xuICAgICAgcmVzdWx0U2V0cz86IFJlc3VsdFNldHM7XG4gICAgICBqb2luaW5nPzogYm9vbGVhbjtcbiAgICAgIG1hbmlmZXN0SWQ/OiBzdHJpbmc7XG4gICAgICBzZWxlY3RlZElkczogc3RyaW5nW107XG4gICAgfT4oKVxuICApLFxuICB1cGRhdGVNYW5pZmVzdEFmdGVyRmV0Y2g6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gKGJ1cykgdXBkYXRpbmcgbWFuaWZlc3QgYWZ0ZXIgZmV0Y2gnLFxuICAgIHByb3BzPHtcbiAgICAgIHRlbmFudHM/OiBzdHJpbmdbXTtcbiAgICAgIG1hbmlmZXN0OiBHbG9iYWxNYW5pZmVzdDtcbiAgICAgIHJlc3VsdFNldHM/OiBSZXN1bHRTZXRzO1xuICAgICAgam9pbmluZz86IGJvb2xlYW47XG4gICAgICBtYW5pZmVzdElkPzogc3RyaW5nO1xuICAgICAgc2VsZWN0ZWRJZHM6IHN0cmluZ1tdO1xuICAgIH0+KClcbiAgKSxcbiAgdXBkYXRlTWFuaWZlc3RXaXRob3V0QWN0aXZhdGlvbjogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSB1cGRhdGluZyBtYW5pZmVzdCBidXQgZG8gbm90IGFjdGl2YXRlIGl0JyxcbiAgICBwcm9wczx7XG4gICAgICB0ZW5hbnRzPzogc3RyaW5nW107XG4gICAgICBtYW5pZmVzdDogR2xvYmFsTWFuaWZlc3Q7XG4gICAgICByZXN1bHRTZXRzPzogUmVzdWx0U2V0cztcbiAgICAgIGpvaW5pbmc/OiBib29sZWFuO1xuICAgICAgbWFuaWZlc3RJZD86IHN0cmluZztcbiAgICAgIHNlbGVjdGVkSWRzOiBzdHJpbmdbXTtcbiAgICB9PigpXG4gICksXG4gIHVwZGF0ZU1hbmlmZXN0QWZ0ZXJUZW5hbnRKb2luOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIHVwZGF0aW5nIG1hbmlmZXN0IGFmdGVyIHRlbmFudCBqb2luJyxcbiAgICBwcm9wczx7XG4gICAgICB0ZW5hbnRzPzogc3RyaW5nW107XG4gICAgICBtYW5pZmVzdDogR2xvYmFsTWFuaWZlc3Q7XG4gICAgICByZXN1bHRTZXRzPzogUmVzdWx0U2V0cztcbiAgICAgIGpvaW5pbmc/OiBib29sZWFuO1xuICAgICAgbWFuaWZlc3RJZD86IHN0cmluZztcbiAgICAgIHNlbGVjdGVkSWRzOiBzdHJpbmdbXTtcbiAgICAgIHByZXNlbnRhdGlvbj86IHsgY3VycmVudD86IE1hbmlmZXN0RGVzY3JpcHRpb247IGluaXRpYWw/OiBHbG9iYWxNYW5pZmVzdDsgdmlld01vZGU/OiBWaWV3TW9kZSB9O1xuICAgICAgZGlzcGxheT86IERpc3BsYXlPcHRpb25zO1xuICAgIH0+KClcbiAgKSxcbiAgdXBkYXRlTWFuaWZlc3RBZnRlclRlbmFudExlYXZlOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIHVwZGF0aW5nIG1hbmlmZXN0IGFmdGVyIHRlbmFudCBsZWF2ZScsXG4gICAgcHJvcHM8e1xuICAgICAgdGVuYW50cz86IHN0cmluZ1tdO1xuICAgICAgbWFuaWZlc3Q6IEdsb2JhbE1hbmlmZXN0O1xuICAgICAgcmVzdWx0U2V0cz86IFJlc3VsdFNldHM7XG4gICAgICBqb2luaW5nPzogYm9vbGVhbjtcbiAgICAgIG1hbmlmZXN0SWQ/OiBzdHJpbmc7XG4gICAgICBzZWxlY3RlZElkczogc3RyaW5nW107XG4gICAgfT4oKVxuICApLFxuICBzZWxlY3RQcmVzZW50YXRpb246IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gKGJ1cykgc2VsZWN0UHJlc2VudGF0aW9uJyxcbiAgICBwcm9wczx7XG4gICAgICBwcmVzZW50YXRpb246IE1hbmlmZXN0RGVzY3JpcHRpb24gfCB1bmRlZmluZWQ7XG4gICAgICB2aWV3TW9kZT86IFZpZXdNb2RlO1xuICAgIH0+KClcbiAgKSxcbiAgc2V0SW5pdGlhbFByZXNlbnRhdGlvbjogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSBzZXQgaW5pdGlhbCBwcmVzZW50YXRpb24nLFxuICAgIHByb3BzPHtcbiAgICAgIGluaXRpYWw/OiBHbG9iYWxNYW5pZmVzdDtcbiAgICB9PigpXG4gICksXG4gIGRlY2xhcmVTZW5kZXJJZDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBzZWxmLXVwZGF0aW5nIG1hbmlmZXN0JywgcHJvcHM8eyB0ZW5hbnRzOiBzdHJpbmdbXTsgc2VuZGVyOiBzdHJpbmcgfT4oKSksXG4gIHVwZGF0ZURhc2hib2FyZE1hbmlmZXN0OiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIHVwZGF0aW5nIGRhc2hib2FyZCB2aWV3JyxcbiAgICBwcm9wczx7IG1hbmlmZXN0OiBEYXNoYm9hcmRNYW5pZmVzdCB9PigpXG4gICksXG4gIHVwZGF0ZVdpZGdldE1hbmlmZXN0OiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIHVwZGF0aW5nIHdpZGdldCB2aWV3JyxcbiAgICBwcm9wczx7IG1hbmlmZXN0OiBXaWRnZXRNYW5pZmVzdDsgaW5kZXg6IG51bWJlciB9PigpXG4gICksXG4gIGFkZFdpZGdldFRvUHJlc2VudGF0aW9uOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIGFkZCB3aWRnZXQgdG8gcHJlc2VudGF0aW9uJyxcbiAgICBwcm9wczx7IGlkPzogc3RyaW5nIHwgc3RyaW5nW107IHdpZGdldFR5cGU6IHN0cmluZzsgYWRkaXRpb25hbE9wdGlvbnM/OiBhbnk7IGFsZXJ0PzogYm9vbGVhbiB9PigpXG4gICksXG4gIHVwZGF0ZVdpZGdldEluUHJlc2VudGF0aW9uOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIHVwZGF0ZSB3aWRnZXQgaW4gcHJlc2VudGF0aW9uJyxcbiAgICBwcm9wczx7IGlkPzogc3RyaW5nIHwgc3RyaW5nW107IHdpZGdldFR5cGU6IHN0cmluZzsgYWRkaXRpb25hbE9wdGlvbnM/OiBhbnkgfT4oKVxuICApLFxuICByZXF1ZXN0QWxsUm91dGVzOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIHJlcXVlc3Rpbmcgcm91dGUgdXBkYXRlJyksXG4gIHVwZGF0ZVJvdXRlTWFuaWZlc3Q6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgdXBkYXRpbmcgcm91dGUnLCBwcm9wczx7IHNlbmRlcj86IHN0cmluZzsgcm91dGU6IHN0cmluZyB9PigpKSxcbiAgZmV0Y2hNYW5pZmVzdHNMaXN0OiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIGZldGNoaW5nIGF2YWlsYWJsZSBtYW5pZmVzdHMnKSxcbiAgc2V0UmVmcmVzaFJhdGU6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgc2V0dGluZyByZWZyZXNoUmF0ZScsIHByb3BzPHsgaWQ6IHN0cmluZzsgcmF0ZTogbnVtYmVyIH0+KCkpLFxuICB1cGRhdGVNYW5pZmVzdHNMaXN0OiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIHJlY2VpdmVkIG1hbmlmZXN0cyBsaXN0JyxcbiAgICBwcm9wczx7IG1hbmlmZXN0czogTWFuaWZlc3REZXNjcmlwdGlvbltdIH0+KClcbiAgKSxcbiAgZmV0Y2hTdGF0aWNNYW5pZmVzdDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBmZXRjaGluZyBzdGF0aWNNYW5pZmVzdCcsIHByb3BzPHsgaWQ6IHN0cmluZyB9PigpKSxcbiAgZW5kTG9hZGluZzogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBlbmQgbG9hZGluZycpLFxuICB1cGRhdGVTdGF0aWNNYW5pZmVzdDogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSByZWNlaXZlZCBzdGF0aWNNYW5pZmVzdCcsXG4gICAgcHJvcHM8eyBzdGF0aWNNYW5pZmVzdDogR2xvYmFsTWFuaWZlc3QgfT4oKVxuICApLFxuICBsb2FkTWFuaWZlc3Q6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgbG9hZCBtYW5pZmVzdCcsIHByb3BzPHsgaWQ6IHN0cmluZyB9PigpKSxcbiAgbG9hZEFuZEFjdGl2YXRlTWFuaWZlc3Q6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgbG9hZCBhbmQgYWN0aXZhdGUgbWFuaWZlc3QnLCBwcm9wczx7IGlkOiBzdHJpbmcgfT4oKSksXG4gIGRvd25sb2FkTWFuaWZlc3Q6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gZG93bmxvYWQgbWFuaWZlc3QnLCBwcm9wczx7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9PigpKSxcbiAgY29uZmlybU1hbmlmZXN0RGVsZXRpb246IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gY29uZmlybSBtYW5pZmVzdCBkZWxldGlvbicsIHByb3BzPHsgaWQ6IHN0cmluZyB9PigpKSxcbiAgZGVsZXRlTWFuaWZlc3Q6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gZGVsZXRpbmcgbWFuaWZlc3QnLCBwcm9wczx7IGlkOiBzdHJpbmcgfT4oKSksXG4gIHNhdmVNYW5pZmVzdDogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSBzYXZlIG1hbmlmZXN0JyxcbiAgICBwcm9wczx7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBtYW5pZmVzdD86IEdsb2JhbE1hbmlmZXN0O1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgICAgaW1hZ2U/OiBzdHJpbmc7XG4gICAgICBtZXRhZGF0YT86IHsgbWV0YWRhdGFEZWZJZDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH1bXTtcbiAgICAgIGdyb3Vwcz86IHN0cmluZ1tdO1xuICAgIH0+KClcbiAgKSxcbiAgc29sdmVDb2xsaXNpb25zOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIHNvbHZpbmcgY29sbGlzaW9ucycpLFxuICBjbGVhck1hbmlmZXN0OiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIGNsZWFyIG1hbmlmZXN0JyksXG4gIGZvbGxvd01hbmlmZXN0Um91dGU6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgZm9sbG93IG1hbmlmZXN0IHJvdXRlJyksXG4gIG1vdmVXaWRnZXQ6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gbW92aW5nIHdpZGdldCcsIHByb3BzPHsgd2lkZ2V0SW5kZXg6IG51bWJlcjsgdGFyZ2V0SW5kZXg6IG51bWJlciB9PigpKSxcbiAgbWF4aW1pemVXaWRnZXQ6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gbWF4aW1pemUgd2lkZ2V0JywgcHJvcHM8eyB3aWRnZXRJbmRleDogbnVtYmVyIH0+KCkpLFxuICBhc3NlcnRSZXN1bHRTZXRzOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIGFzc2VydCByZXN1bHRTZXQnLCBwcm9wczx7IGlkPzogc3RyaW5nOyBleGNsdWRlR2VvPzogYm9vbGVhbiB9PigpKSxcbiAgdXBkYXRlUmVzdWx0U2V0OiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIHJlY2VpdmVkIG5hbWVkIHJlc3VsdFNldCcsXG4gICAgcHJvcHM8eyBpZDogc3RyaW5nOyByZXN1bHRTZXQ6IFJlc3VsdFNldDsgcGFyYW1zPzogc3RyaW5nIH0+KClcbiAgKSxcbiAgYWRkUmVsYXRpb25zVG9SZXN1bHRTZXRzOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIGFkZCByZWxhdGlvbnMgdG8gcmVzdWx0U2V0JyxcbiAgICBwcm9wczx7IHJlbGF0aW9uczogUmVsYXRpb25bXSB9PigpXG4gICksXG4gIGFkZEl0ZW1Ub1Jlc3VsdFNldHM6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gKGJ1cykgYWRkIGl0ZW0gdG8gcmVzdWx0U2V0JyxcbiAgICBwcm9wczx7IGl0ZW06IEl0ZW07IHJlc3VsdFNldD86IHN0cmluZyB9PigpXG4gICksXG4gIHN0YXJ0aW5nTWlzc2luZ1ZpZXdzOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIG9wZW5pbmcgbWlzc2luZyB2aWV3cyBmb3IgbWFuaWZlc3QnKSxcbiAgc2V0QXZhaWxhYmxlTmFtZWRRdWVyaWVzOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIHNldCBhdmFpbGFibGUgcnMgbmFtZXMnLCBwcm9wczx7IG5hbWVzOiBzdHJpbmdbXSB9PigpKSxcbiAgc2V0RGVmYXVsdERhdGFzb3VyY2U6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gc2V0IGN1cnJlbnQgcnMgbmFtZScsIHByb3BzPHsgbmFtZXM6IHN0cmluZ1tdIH0+KCkpLFxuICB1cGRhdGVEYXNoYm9hcmRQYXJhbXM6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gc2V0IGRhc2hib2FyZCBjZWxsIHBhcmFtcycsXG4gICAgcHJvcHM8eyBwYXJhbXM6IFBhcnRpYWw8RGFzaGJvYXJkQ2VsbFBhcmFtcz4gfT4oKVxuICApLFxuICB0b2dnbGVFZGl0aW9uTW9kZTogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSB0b2dnbGUgZWRpdGlvbiBtb2RlJywgcHJvcHM8eyBmb3JjZT86IGJvb2xlYW4gfT4oKSksXG4gIHNlbGVjdDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBzZWxlY3QgaXRlbScsIHByb3BzPHsgaWQ6IHN0cmluZzsgY3VtdWxhdGl2ZTogYm9vbGVhbiB9PigpKSxcbiAgc2VsZWN0TWFueTogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBzZWxlY3QgaXRlbXMnLCBwcm9wczx7IGlkczogc3RyaW5nW10gfT4oKSksXG4gIGludmVydFNlbGVjdGlvbjogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBpbnZlcnQgc2VsZWN0aW9uJyksXG4gIGZldGNoT2JqZWN0c0RldGFpbHM6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gZmV0Y2ggb2JqZWN0cyBkZXRhaWxzJywgcHJvcHM8eyBpZHM6IHN0cmluZ1tdIH0+KCkpLFxuICB1cGRhdGVPYmplY3RzRGV0YWlsczogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSB1cGRhdGUgb2JqZWN0cyBkZXRhaWxzJyxcbiAgICBwcm9wczx7IGxpc3Q6IHsgW2lkOiBzdHJpbmddOiBJdGVtIH0gfT4oKVxuICApLFxuICBleHBsb3JlOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIGlzb2xhdGUgaW4gZGF0YSBzZXQnLCBwcm9wczx7IGlkOiBzdHJpbmcgfT4oKSksXG4gIGRldGFpbDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBhZGQgZGV0YWlsIHZpZXcnLCBwcm9wczx7IGlkczogc3RyaW5nW10gfT4oKSksXG4gIHByb3hpbWl0eTogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBwcm94aW1pdHkgc2VhcmNoJywgcHJvcHM8eyBpZDogc3RyaW5nOyB0YXJnZXRSZXN1bHRTZXQ6IHN0cmluZyB9PigpKSxcbiAgbXVsdGlTbmFja0JhcjogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBkaXNwbGF5IHNuYWNrIG1lc3NhZ2UnLCBwcm9wczx7IG1lc3NhZ2U6IFByeVNuYWNrTWVzc2FnZSB9PigpKSxcbiAgcXVpY2tPcmRlcjogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSBxdWljayBvcmRlcicsXG4gICAgcHJvcHM8eyBkYXRhc291cmNlSWQ6IHN0cmluZzsgYXR0cmlidXRlOiBzdHJpbmc7IGFzYzogT3JkZXJWYWx1ZSB9PigpXG4gICksXG4gIHNldEdyaWRMYXlvdXQ6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gc2V0IGdyaWQgbGF5b3V0JywgcHJvcHM8eyBsYXlvdXQ6IHN0cmluZyB9PigpKSxcbiAgcHJvcGFnYXRlR3JpZExheW91dDogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSBjaGFuZ2UgZ3JpZCBsYXlvdXQnLFxuICAgIHByb3BzPHsgbWFuaWZlc3Q6IERhc2hib2FyZE1hbmlmZXN0OyByYW5rOiBudW1iZXIgfT4oKVxuICApLFxuICBjcmVhdGVUYWI6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgY3JlYXRlIG5ldyB0YWInKSxcbiAgcmVzdG9yZUluaXRpYWxNYW5pZmVzdDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSByZXN0b3JpbmcgbWlzc2luZyB0YWJzJyksXG4gIHNldEZpbHRlcnM6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgc2V0IGRhdGFzb3VyY2UgZmlsdGVycycsIHByb3BzPHsgZmlsdGVyczogRmlsdGVyW10gfT4oKSksXG4gIHVwZGF0ZUZpbHRlcnM6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgdXBkYXRlIGRhdGFzb3VyY2UgZmlsdGVycycsIHByb3BzPHsgZmlsdGVyOiBGaWx0ZXIgfT4oKSksXG4gIHJlbW92ZUZpbHRlcjogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSByZW1vdmUgZmlsdGVyIGluIHByZXNlbnRhdGlvbicsIHByb3BzPHsgaWQ6IHN0cmluZyB9PigpKSxcbiAgcmVtb3ZlRmlsdGVyczogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSByZW1vdmUgZmlsdGVycycpLFxuICB1cGRhdGVGaWx0ZXJWYWx1ZTogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSB1cGRhdGUgZmlsdGVyIHZhbHVlJyxcbiAgICBwcm9wczx7IGlkOiBzdHJpbmc7IHZhbHVlOiBhbnk7IGRhdGFzb3VyY2VJZDogc3RyaW5nIH0+KClcbiAgKSxcbiAgY2xlYXJBbGxGaWx0ZXJWYWx1ZXM6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgY2xlYXIgYWxsIGZpbHRlciB2YWx1ZXMnKSxcbiAgZGlzcGF0Y2hGaWx0ZXJzOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIGFwcGx5IGZpbHRlcnMgdG8gcHJlc2VudGF0aW9uIGRhdGFzb3VyY2VzJyksXG4gIHJlc2V0V21zRmVhdHVyZXM6IGNyZWF0ZUFjdGlvbignW1dpZGdldCBtYXBdIFJlc2V0IFdtcyBsYXllciBmZWF0dXJlcycpLFxuICBnZXRXbXNGZWF0dXJlczogY3JlYXRlQWN0aW9uKFxuICAgICdbV2lkZ2V0IG1hcF0gR2V0IFdtcyBsYXllciBmZWF0dXJlcycsXG4gICAgcHJvcHM8eyB1cmw6IHN0cmluZzsgb0NsYXNzOiBzdHJpbmc7IGNvb3JkaW5hdGVzOiBudW1iZXJbXSB9PigpXG4gICksXG4gIGFkZFdtc0ZlYXR1cmVzOiBjcmVhdGVBY3Rpb24oJ1tXaWRnZXQgbWFwXSBTZXQgV21zIGxheWVyIGZlYXR1cmVzJywgcHJvcHM8eyBmZWF0dXJlczogYW55IH0+KCkpLFxuICBnZXRXZnNGZWF0dXJlczogY3JlYXRlQWN0aW9uKFxuICAgICdbV2lkZ2V0IG1hcF0gR2V0IHdmcyBGZWF0dXJlcyBmb3IgcG9pbnQnLFxuICAgIHByb3BzPHsgdXJsOiBzdHJpbmc7IG9DbGFzczogc3RyaW5nOyBjb29yZGluYXRlczogbnVtYmVyW107IHN0eWxlOiBzdHJpbmcgfT4oKVxuICApLFxuICBnZXRXZnNGZWF0dXJlc0ZvclBvaW50U3RhY2tUb29sdGlwczogY3JlYXRlQWN0aW9uKFxuICAgICdbV2lkZ2V0IG1hcF0gR2V0IHdmcyBGZWF0dXJlcyBmb3Igc2hvd2luZyBzdGFjayB0b29sdGlwcycsXG4gICAgcHJvcHM8eyB1cmw6IHN0cmluZzsgb0NsYXNzOiBzdHJpbmc7IGNvb3JkaW5hdGVzOiBudW1iZXJbXSB9PigpXG4gICksXG4gIHVwZGF0ZURpc3BsYXlPcHRpb25zOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmQvRGlzcGxheV0gKGJ1cykgVXBkYXRlIGRpc3BsYXllZCBkYXNoYm9hcmQgbWFuYWdlbWVudCBmZWF0dXJlcycsXG4gICAgcHJvcHM8eyBtb2RlOiBWaWV3TW9kZTsgY3VzdG9tRGlzcGxheT86IERpc3BsYXlPcHRpb25zIH0+KClcbiAgKSxcbiAgZ2V0Q2FwYWJpbGl0eTogY3JlYXRlQWN0aW9uKCdbV2lkZ2V0IG1hcF0gR2V0IFdtcyBjYXBhYmlsaXR5JywgcHJvcHM8eyB1cmw6IHN0cmluZzsgZm9yY2U/OiBib29sZWFuIH0+KCkpLFxuICB1cGRhdGVDYXBhYmlsaXR5OiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tXaWRnZXQgbWFwXSBTdG9yZSBXbXMgY2FwYWJpbGl0eScsXG4gICAgcHJvcHM8eyB1cmw6IHN0cmluZzsgY2FwYWJpbGl0eTogR2V0Q2FwYWJpbGl0aWVzUmVzcG9uc2UgfCBudWxsIH0+KClcbiAgKSxcbiAgYWRkTWFuaWZlc3RNZXRhZGF0YTogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSBBZGQgbWFuaWZlc3QgbWV0YWRhdGEnLFxuICAgIHByb3BzPHsgcHJlc2VudGF0aW9uSWQ6IHN0cmluZzsgbWV0YWRhdGFJZDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+KClcbiAgKSxcbiAgZGVsZXRlTWFuaWZlc3RNZXRhZGF0YTogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSBEZWxldGUgbWFuaWZlc3QgbWV0YWRhdGEnLFxuICAgIHByb3BzPHsgcHJlc2VudGF0aW9uSWQ6IHN0cmluZzsgbWV0YWRhdGFJZDogc3RyaW5nIH0+KClcbiAgKSxcbiAgdHJpZ2dlckFnZ3JlZ2F0ZTogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBUcmlnZ2VyaW5nIGFnZ3JlZ2F0ZXMgZm9yIGRhdGFzb3VyY2UnLCBwcm9wczx7IGlkOiBzdHJpbmcgfT4oKSksXG4gIGxvYWRQcmVzZW50YXRpb246IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gbG9hZCBwcmVzZW50YXRpb24nLFxuICAgIHByb3BzPHsgcHJlc2VudGF0aW9uOiBNYW5pZmVzdERlc2NyaXB0aW9uOyB2aWV3TW9kZTogVmlld01vZGUgfT4oKVxuICApXG59O1xuIl19
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL3N0b3JlL2Rhc2hib2FyZC5hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBOEJsRCxNQUFNLENBQU4sSUFBWSxRQVFYO0FBUkQsV0FBWSxRQUFRO0lBQ2xCLCtCQUFtQixDQUFBO0lBQ25CLCtCQUFtQixDQUFBO0lBQ25CLGlDQUFxQixDQUFBO0lBQ3JCLCtCQUFtQixDQUFBO0lBQ25CLDZCQUFpQixDQUFBO0lBQ2pCLDZCQUFpQixDQUFBO0lBQ2pCLDZCQUFpQixDQUFBO0FBQ25CLENBQUMsRUFSVyxRQUFRLEtBQVIsUUFBUSxRQVFuQjtBQUVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLElBQUksRUFBRSxZQUFZLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxFQUFzQixDQUFDO0lBQ3JFLEtBQUssRUFBRSxZQUFZLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxFQUFzQixDQUFDO0lBQ3JFLGNBQWMsRUFBRSxZQUFZLENBQzFCLHFDQUFxQyxFQUNyQyxLQUFLLEVBT0QsQ0FDTDtJQUNELHdCQUF3QixFQUFFLFlBQVksQ0FDcEMsaURBQWlELEVBQ2pELEtBQUssRUFPRCxDQUNMO0lBQ0QsK0JBQStCLEVBQUUsWUFBWSxDQUMzQyw0REFBNEQsRUFDNUQsS0FBSyxFQU9ELENBQ0w7SUFDRCw2QkFBNkIsRUFBRSxZQUFZLENBQ3pDLHVEQUF1RCxFQUN2RCxLQUFLLEVBU0QsQ0FDTDtJQUNELDhCQUE4QixFQUFFLFlBQVksQ0FDMUMsd0RBQXdELEVBQ3hELEtBQUssRUFPRCxDQUNMO0lBQ0Qsa0JBQWtCLEVBQUUsWUFBWSxDQUM5QixzQ0FBc0MsRUFDdEMs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QVksQ0FBQyxpQ0FBaUMsRUFBRSxLQUFLLEVBQTRCLENBQUM7SUFDakcsZ0JBQWdCLEVBQUUsWUFBWSxDQUM1QixvQ0FBb0MsRUFDcEMsS0FBSyxFQUFnRyxDQUN0RztJQUNELHlCQUF5QixFQUFFLFlBQVksQ0FBQyw4Q0FBOEMsRUFBRSxLQUFLLEVBQW9CLENBQUM7SUFDbEgsZ0JBQWdCLEVBQUUsWUFBWSxDQUFDLG9DQUFvQyxFQUFFLEtBQUssRUFBb0IsQ0FBQztJQUMvRixvQkFBb0IsRUFBRSxZQUFZLENBQUMsb0NBQW9DLEVBQUUsS0FBSyxFQUE0QixDQUFDO0NBQzVHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVBY3Rpb24sIHByb3BzIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgUHJ5U25hY2tNZXNzYWdlIH0gZnJvbSAnLi4vLi4vY29yZS9jb21wb25lbnRzL3NuYWNrYmFyL3NuYWNrLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEaXNwbGF5T3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvZGlzcGxheS1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWx0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL2ZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSXRlbSB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgRGFzaGJvYXJkTWFuaWZlc3QsXG4gIEdsb2JhbE1hbmlmZXN0LFxuICBNYW5pZmVzdERlc2NyaXB0aW9uLFxuICBXaWRnZXRNYW5pZmVzdFxufSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL21hbmlmZXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBSZWxhdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvcmVsYXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IE9yZGVyVmFsdWUgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL3Jlc3VsdC1vcmRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVzdWx0U2V0LCBSZXN1bHRTZXRzIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbC9yZXN1bHQtc2V0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBHZXRDYXBhYmlsaXRpZXNSZXNwb25zZSB9IGZyb20gJy4vd21zLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGF5ZXJHcm91cCwgTWFwV2lkZ2V0TGF5ZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbC93aWRnZXQtbWFwLW1hbmlmZXN0LmludGVyZmFjZSc7XG5cbmV4cG9ydCB0eXBlIERhc2hib2FyZENlbGxQYXJhbXMgPSB7XG4gIGdyaWRXaWR0aDogbnVtYmVyO1xuICBncmlkSGVpZ2h0OiBudW1iZXI7XG4gIGdyaWRHYXA6IG51bWJlcjtcbiAgY29sdW1uczogbnVtYmVyO1xuICBjZWxsSGVpZ2h0OiBudW1iZXI7XG4gIHJvd3M6IG51bWJlcjtcbiAgY2VsbFdpZHRoOiBudW1iZXI7XG4gIG9mZnNldExlZnQ6IG51bWJlcjtcbiAgb2Zmc2V0VG9wOiBudW1iZXI7XG4gIG1vYmlsZU1vZGU6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgZW51bSBWaWV3TW9kZSB7XG4gIENBVEFMT0cgPSAnY2F0YWxvZycsXG4gIENPTlNVTFQgPSAnY29uc3VsdCcsXG4gIENSRUFUSU9OID0gJ2NyZWF0aW9uJyxcbiAgRURJVElPTiA9ICdlZGl0aW9uJyxcbiAgRURJVE9SID0gJ2VkaXRvcicsXG4gIFNFQVJDSCA9ICdzZWFyY2gnLFxuICBDVVNUT00gPSAnY3VzdG9tJ1xufVxuXG5leHBvcnQgY29uc3QgRGFzaGJvYXJkQWN0aW9ucyA9IHtcbiAgam9pbjogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBqb2luZWQnLCBwcm9wczx7IHNlbmRlcjogc3RyaW5nIH0+KCkpLFxuICBsZWF2ZTogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBsZWF2ZScsIHByb3BzPHsgc2VuZGVyOiBzdHJpbmcgfT4oKSksXG4gIHVwZGF0ZU1hbmlmZXN0OiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIHVwZGF0aW5nIG1hbmlmZXN0JyxcbiAgICBwcm9wczx7XG4gICAgICB0ZW5hbnRzPzogc3RyaW5nW107XG4gICAgICBtYW5pZmVzdDogR2xvYmFsTWFuaWZlc3Q7XG4gICAgICByZXN1bHRTZXRzPzogUmVzdWx0U2V0cztcbiAgICAgIGpvaW5pbmc/OiBib29sZWFuO1xuICAgICAgbWFuaWZlc3RJZD86IHN0cmluZztcbiAgICAgIHNlbGVjdGVkSWRzOiBzdHJpbmdbXTtcbiAgICB9PigpXG4gICksXG4gIHVwZGF0ZU1hbmlmZXN0QWZ0ZXJGZXRjaDogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSB1cGRhdGluZyBtYW5pZmVzdCBhZnRlciBmZXRjaCcsXG4gICAgcHJvcHM8e1xuICAgICAgdGVuYW50cz86IHN0cmluZ1tdO1xuICAgICAgbWFuaWZlc3Q6IEdsb2JhbE1hbmlmZXN0O1xuICAgICAgcmVzdWx0U2V0cz86IFJlc3VsdFNldHM7XG4gICAgICBqb2luaW5nPzogYm9vbGVhbjtcbiAgICAgIG1hbmlmZXN0SWQ/OiBzdHJpbmc7XG4gICAgICBzZWxlY3RlZElkczogc3RyaW5nW107XG4gICAgfT4oKVxuICApLFxuICB1cGRhdGVNYW5pZmVzdFdpdGhvdXRBY3RpdmF0aW9uOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIHVwZGF0aW5nIG1hbmlmZXN0IGJ1dCBkbyBub3QgYWN0aXZhdGUgaXQnLFxuICAgIHByb3BzPHtcbiAgICAgIHRlbmFudHM/OiBzdHJpbmdbXTtcbiAgICAgIG1hbmlmZXN0OiBHbG9iYWxNYW5pZmVzdDtcbiAgICAgIHJlc3VsdFNldHM/OiBSZXN1bHRTZXRzO1xuICAgICAgam9pbmluZz86IGJvb2xlYW47XG4gICAgICBtYW5pZmVzdElkPzogc3RyaW5nO1xuICAgICAgc2VsZWN0ZWRJZHM6IHN0cmluZ1tdO1xuICAgIH0+KClcbiAgKSxcbiAgdXBkYXRlTWFuaWZlc3RBZnRlclRlbmFudEpvaW46IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gKGJ1cykgdXBkYXRpbmcgbWFuaWZlc3QgYWZ0ZXIgdGVuYW50IGpvaW4nLFxuICAgIHByb3BzPHtcbiAgICAgIHRlbmFudHM/OiBzdHJpbmdbXTtcbiAgICAgIG1hbmlmZXN0OiBHbG9iYWxNYW5pZmVzdDtcbiAgICAgIHJlc3VsdFNldHM/OiBSZXN1bHRTZXRzO1xuICAgICAgam9pbmluZz86IGJvb2xlYW47XG4gICAgICBtYW5pZmVzdElkPzogc3RyaW5nO1xuICAgICAgc2VsZWN0ZWRJZHM6IHN0cmluZ1tdO1xuICAgICAgcHJlc2VudGF0aW9uPzogeyBjdXJyZW50PzogTWFuaWZlc3REZXNjcmlwdGlvbjsgaW5pdGlhbD86IEdsb2JhbE1hbmlmZXN0OyB2aWV3TW9kZT86IFZpZXdNb2RlIH07XG4gICAgICBkaXNwbGF5PzogRGlzcGxheU9wdGlvbnM7XG4gICAgfT4oKVxuICApLFxuICB1cGRhdGVNYW5pZmVzdEFmdGVyVGVuYW50TGVhdmU6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gKGJ1cykgdXBkYXRpbmcgbWFuaWZlc3QgYWZ0ZXIgdGVuYW50IGxlYXZlJyxcbiAgICBwcm9wczx7XG4gICAgICB0ZW5hbnRzPzogc3RyaW5nW107XG4gICAgICBtYW5pZmVzdDogR2xvYmFsTWFuaWZlc3Q7XG4gICAgICByZXN1bHRTZXRzPzogUmVzdWx0U2V0cztcbiAgICAgIGpvaW5pbmc/OiBib29sZWFuO1xuICAgICAgbWFuaWZlc3RJZD86IHN0cmluZztcbiAgICAgIHNlbGVjdGVkSWRzOiBzdHJpbmdbXTtcbiAgICB9PigpXG4gICksXG4gIHNlbGVjdFByZXNlbnRhdGlvbjogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSBzZWxlY3RQcmVzZW50YXRpb24nLFxuICAgIHByb3BzPHtcbiAgICAgIHByZXNlbnRhdGlvbjogTWFuaWZlc3REZXNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIHZpZXdNb2RlPzogVmlld01vZGU7XG4gICAgfT4oKVxuICApLFxuICBzZXRJbml0aWFsUHJlc2VudGF0aW9uOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIHNldCBpbml0aWFsIHByZXNlbnRhdGlvbicsXG4gICAgcHJvcHM8e1xuICAgICAgaW5pdGlhbD86IEdsb2JhbE1hbmlmZXN0O1xuICAgIH0+KClcbiAgKSxcbiAgZGVjbGFyZVNlbmRlcklkOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIHNlbGYtdXBkYXRpbmcgbWFuaWZlc3QnLCBwcm9wczx7IHRlbmFudHM6IHN0cmluZ1tdOyBzZW5kZXI6IHN0cmluZyB9PigpKSxcbiAgdXBkYXRlRGFzaGJvYXJkTWFuaWZlc3Q6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gdXBkYXRpbmcgZGFzaGJvYXJkIHZpZXcnLFxuICAgIHByb3BzPHsgbWFuaWZlc3Q6IERhc2hib2FyZE1hbmlmZXN0IH0+KClcbiAgKSxcbiAgdXBkYXRlV2lkZ2V0TWFuaWZlc3Q6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gdXBkYXRpbmcgd2lkZ2V0IHZpZXcnLFxuICAgIHByb3BzPHsgbWFuaWZlc3Q6IFdpZGdldE1hbmlmZXN0OyBpbmRleDogbnVtYmVyIH0+KClcbiAgKSxcbiAgYWRkV2lkZ2V0VG9QcmVzZW50YXRpb246IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gYWRkIHdpZGdldCB0byBwcmVzZW50YXRpb24nLFxuICAgIHByb3BzPHsgaWQ/OiBzdHJpbmcgfCBzdHJpbmdbXTsgd2lkZ2V0VHlwZTogc3RyaW5nOyBhZGRpdGlvbmFsT3B0aW9ucz86IGFueTsgYWxlcnQ/OiBib29sZWFuIH0+KClcbiAgKSxcbiAgdXBkYXRlV2lkZ2V0SW5QcmVzZW50YXRpb246IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gdXBkYXRlIHdpZGdldCBpbiBwcmVzZW50YXRpb24nLFxuICAgIHByb3BzPHsgaWQ/OiBzdHJpbmcgfCBzdHJpbmdbXTsgd2lkZ2V0VHlwZTogc3RyaW5nOyBhZGRpdGlvbmFsT3B0aW9ucz86IGFueSB9PigpXG4gICksXG4gIHJlcXVlc3RBbGxSb3V0ZXM6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgcmVxdWVzdGluZyByb3V0ZSB1cGRhdGUnKSxcbiAgdXBkYXRlUm91dGVNYW5pZmVzdDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSB1cGRhdGluZyByb3V0ZScsIHByb3BzPHsgc2VuZGVyPzogc3RyaW5nOyByb3V0ZTogc3RyaW5nIH0+KCkpLFxuICBmZXRjaE1hbmlmZXN0c0xpc3Q6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgZmV0Y2hpbmcgYXZhaWxhYmxlIG1hbmlmZXN0cycpLFxuICBzZXRSZWZyZXNoUmF0ZTogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBzZXR0aW5nIHJlZnJlc2hSYXRlJywgcHJvcHM8eyBpZDogc3RyaW5nOyByYXRlOiBudW1iZXIgfT4oKSksXG4gIHVwZGF0ZU1hbmlmZXN0c0xpc3Q6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gKGJ1cykgcmVjZWl2ZWQgbWFuaWZlc3RzIGxpc3QnLFxuICAgIHByb3BzPHsgbWFuaWZlc3RzOiBNYW5pZmVzdERlc2NyaXB0aW9uW10gfT4oKVxuICApLFxuICBmZXRjaFN0YXRpY01hbmlmZXN0OiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIGZldGNoaW5nIHN0YXRpY01hbmlmZXN0JywgcHJvcHM8eyBpZDogc3RyaW5nIH0+KCkpLFxuICBlbmRMb2FkaW5nOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIGVuZCBsb2FkaW5nJyksXG4gIHVwZGF0ZVN0YXRpY01hbmlmZXN0OiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIHJlY2VpdmVkIHN0YXRpY01hbmlmZXN0JyxcbiAgICBwcm9wczx7IHN0YXRpY01hbmlmZXN0OiBHbG9iYWxNYW5pZmVzdCB9PigpXG4gICksXG4gIGxvYWRNYW5pZmVzdDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBsb2FkIG1hbmlmZXN0JywgcHJvcHM8eyBpZDogc3RyaW5nIH0+KCkpLFxuICBsb2FkQW5kQWN0aXZhdGVNYW5pZmVzdDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBsb2FkIGFuZCBhY3RpdmF0ZSBtYW5pZmVzdCcsIHByb3BzPHsgaWQ6IHN0cmluZyB9PigpKSxcbiAgZG93bmxvYWRNYW5pZmVzdDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBkb3dubG9hZCBtYW5pZmVzdCcsIHByb3BzPHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0+KCkpLFxuICBjb25maXJtTWFuaWZlc3REZWxldGlvbjogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBjb25maXJtIG1hbmlmZXN0IGRlbGV0aW9uJywgcHJvcHM8eyBpZDogc3RyaW5nIH0+KCkpLFxuICBkZWxldGVNYW5pZmVzdDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBkZWxldGluZyBtYW5pZmVzdCcsIHByb3BzPHsgaWQ6IHN0cmluZyB9PigpKSxcbiAgc2F2ZU1hbmlmZXN0OiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIHNhdmUgbWFuaWZlc3QnLFxuICAgIHByb3BzPHtcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIG1hbmlmZXN0PzogR2xvYmFsTWFuaWZlc3Q7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgICBpbWFnZT86IHN0cmluZztcbiAgICAgIG1ldGFkYXRhPzogeyBtZXRhZGF0YURlZklkOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfVtdO1xuICAgICAgZ3JvdXBzPzogc3RyaW5nW107XG4gICAgfT4oKVxuICApLFxuICBzb2x2ZUNvbGxpc2lvbnM6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gc29sdmluZyBjb2xsaXNpb25zJyksXG4gIGNsZWFyTWFuaWZlc3Q6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gY2xlYXIgbWFuaWZlc3QnKSxcbiAgZm9sbG93TWFuaWZlc3RSb3V0ZTogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBmb2xsb3cgbWFuaWZlc3Qgcm91dGUnKSxcbiAgbW92ZVdpZGdldDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBtb3Zpbmcgd2lkZ2V0JywgcHJvcHM8eyB3aWRnZXRJbmRleDogbnVtYmVyOyB0YXJnZXRJbmRleDogbnVtYmVyIH0+KCkpLFxuICBtYXhpbWl6ZVdpZGdldDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBtYXhpbWl6ZSB3aWRnZXQnLCBwcm9wczx7IHdpZGdldEluZGV4OiBudW1iZXIgfT4oKSksXG4gIGFzc2VydFJlc3VsdFNldHM6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gYXNzZXJ0IHJlc3VsdFNldCcsIHByb3BzPHsgaWQ/OiBzdHJpbmc7IGV4Y2x1ZGVHZW8/OiBib29sZWFuIH0+KCkpLFxuICB1cGRhdGVSZXN1bHRTZXQ6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gKGJ1cykgcmVjZWl2ZWQgbmFtZWQgcmVzdWx0U2V0JyxcbiAgICBwcm9wczx7IGlkOiBzdHJpbmc7IHJlc3VsdFNldDogUmVzdWx0U2V0OyBwYXJhbXM/OiBzdHJpbmcgfT4oKVxuICApLFxuICBhZGRSZWxhdGlvbnNUb1Jlc3VsdFNldHM6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZF0gKGJ1cykgYWRkIHJlbGF0aW9ucyB0byByZXN1bHRTZXQnLFxuICAgIHByb3BzPHsgcmVsYXRpb25zOiBSZWxhdGlvbltdIH0+KClcbiAgKSxcbiAgYWRkSXRlbVRvUmVzdWx0U2V0czogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSAoYnVzKSBhZGQgaXRlbSB0byByZXN1bHRTZXQnLFxuICAgIHByb3BzPHsgaXRlbTogSXRlbTsgcmVzdWx0U2V0Pzogc3RyaW5nIH0+KClcbiAgKSxcbiAgc3RhcnRpbmdNaXNzaW5nVmlld3M6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gb3BlbmluZyBtaXNzaW5nIHZpZXdzIGZvciBtYW5pZmVzdCcpLFxuICBzZXRBdmFpbGFibGVOYW1lZFF1ZXJpZXM6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgc2V0IGF2YWlsYWJsZSBycyBuYW1lcycsIHByb3BzPHsgbmFtZXM6IHN0cmluZ1tdIH0+KCkpLFxuICBzZXREZWZhdWx0RGF0YXNvdXJjZTogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBzZXQgY3VycmVudCBycyBuYW1lJywgcHJvcHM8eyBuYW1lczogc3RyaW5nW10gfT4oKSksXG4gIHVwZGF0ZURhc2hib2FyZFBhcmFtczogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSBzZXQgZGFzaGJvYXJkIGNlbGwgcGFyYW1zJyxcbiAgICBwcm9wczx7IHBhcmFtczogUGFydGlhbDxEYXNoYm9hcmRDZWxsUGFyYW1zPiB9PigpXG4gICksXG4gIHRvZ2dsZUVkaXRpb25Nb2RlOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIHRvZ2dsZSBlZGl0aW9uIG1vZGUnLCBwcm9wczx7IGZvcmNlPzogYm9vbGVhbiB9PigpKSxcbiAgc2VsZWN0OiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIHNlbGVjdCBpdGVtJywgcHJvcHM8eyBpZDogc3RyaW5nOyBjdW11bGF0aXZlOiBib29sZWFuIH0+KCkpLFxuICBzZWxlY3RNYW55OiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIHNlbGVjdCBpdGVtcycsIHByb3BzPHsgaWRzOiBzdHJpbmdbXSB9PigpKSxcbiAgaW52ZXJ0U2VsZWN0aW9uOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIGludmVydCBzZWxlY3Rpb24nKSxcbiAgZmV0Y2hPYmplY3RzRGV0YWlsczogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBmZXRjaCBvYmplY3RzIGRldGFpbHMnLCBwcm9wczx7IGlkczogc3RyaW5nW10gfT4oKSksXG4gIHVwZGF0ZU9iamVjdHNEZXRhaWxzOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIHVwZGF0ZSBvYmplY3RzIGRldGFpbHMnLFxuICAgIHByb3BzPHsgbGlzdDogeyBbaWQ6IHN0cmluZ106IEl0ZW0gfSB9PigpXG4gICksXG4gIGV4cGxvcmU6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgaXNvbGF0ZSBpbiBkYXRhIHNldCcsIHByb3BzPHsgaWQ6IHN0cmluZyB9PigpKSxcbiAgZGV0YWlsOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIGFkZCBkZXRhaWwgdmlldycsIHByb3BzPHsgaWRzOiBzdHJpbmdbXSB9PigpKSxcbiAgcHJveGltaXR5OiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIHByb3hpbWl0eSBzZWFyY2gnLCBwcm9wczx7IGlkOiBzdHJpbmc7IHRhcmdldFJlc3VsdFNldDogc3RyaW5nIH0+KCkpLFxuICBtdWx0aVNuYWNrQmFyOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIGRpc3BsYXkgc25hY2sgbWVzc2FnZScsIHByb3BzPHsgbWVzc2FnZTogUHJ5U25hY2tNZXNzYWdlIH0+KCkpLFxuICBxdWlja09yZGVyOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIHF1aWNrIG9yZGVyJyxcbiAgICBwcm9wczx7IGRhdGFzb3VyY2VJZDogc3RyaW5nOyBhdHRyaWJ1dGU6IHN0cmluZzsgYXNjOiBPcmRlclZhbHVlIH0+KClcbiAgKSxcbiAgc2V0R3JpZExheW91dDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBzZXQgZ3JpZCBsYXlvdXQnLCBwcm9wczx7IGxheW91dDogc3RyaW5nIH0+KCkpLFxuICBwcm9wYWdhdGVHcmlkTGF5b3V0OiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIGNoYW5nZSBncmlkIGxheW91dCcsXG4gICAgcHJvcHM8eyBtYW5pZmVzdDogRGFzaGJvYXJkTWFuaWZlc3Q7IHJhbms6IG51bWJlciB9PigpXG4gICksXG4gIGNyZWF0ZVRhYjogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBjcmVhdGUgbmV3IHRhYicpLFxuICByZXN0b3JlSW5pdGlhbE1hbmlmZXN0OiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIHJlc3RvcmluZyBtaXNzaW5nIHRhYnMnKSxcbiAgc2V0RmlsdGVyczogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBzZXQgZGF0YXNvdXJjZSBmaWx0ZXJzJywgcHJvcHM8eyBmaWx0ZXJzOiBGaWx0ZXJbXSB9PigpKSxcbiAgdXBkYXRlRmlsdGVyczogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSB1cGRhdGUgZGF0YXNvdXJjZSBmaWx0ZXJzJywgcHJvcHM8eyBmaWx0ZXI6IEZpbHRlciB9PigpKSxcbiAgcmVtb3ZlRmlsdGVyOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIHJlbW92ZSBmaWx0ZXIgaW4gcHJlc2VudGF0aW9uJywgcHJvcHM8eyBpZDogc3RyaW5nIH0+KCkpLFxuICByZW1vdmVGaWx0ZXJzOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIHJlbW92ZSBmaWx0ZXJzJyksXG4gIHVwZGF0ZUZpbHRlclZhbHVlOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIChidXMpIHVwZGF0ZSBmaWx0ZXIgdmFsdWUnLFxuICAgIHByb3BzPHsgaWQ6IHN0cmluZzsgdmFsdWU6IGFueTsgZGF0YXNvdXJjZUlkOiBzdHJpbmcgfT4oKVxuICApLFxuICBjbGVhckFsbEZpbHRlclZhbHVlczogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSAoYnVzKSBjbGVhciBhbGwgZmlsdGVyIHZhbHVlcycpLFxuICBkaXNwYXRjaEZpbHRlcnM6IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gKGJ1cykgYXBwbHkgZmlsdGVycyB0byBwcmVzZW50YXRpb24gZGF0YXNvdXJjZXMnKSxcbiAgcmVzZXRXbXNGZWF0dXJlczogY3JlYXRlQWN0aW9uKCdbV2lkZ2V0IG1hcF0gUmVzZXQgV21zIGxheWVyIGZlYXR1cmVzJyksXG4gIGdldFdtc0ZlYXR1cmVzOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tXaWRnZXQgbWFwXSBHZXQgV21zIGxheWVyIGZlYXR1cmVzJyxcbiAgICBwcm9wczx7IHVybDogc3RyaW5nOyBvQ2xhc3M6IHN0cmluZzsgY29vcmRpbmF0ZXM6IG51bWJlcltdIH0+KClcbiAgKSxcbiAgYWRkV21zRmVhdHVyZXM6IGNyZWF0ZUFjdGlvbignW1dpZGdldCBtYXBdIFNldCBXbXMgbGF5ZXIgZmVhdHVyZXMnLCBwcm9wczx7IGZlYXR1cmVzOiBhbnkgfT4oKSksXG4gIGdldFdmc0ZlYXR1cmVzOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tXaWRnZXQgbWFwXSBHZXQgd2ZzIEZlYXR1cmVzIGZvciBwb2ludCcsXG4gICAgcHJvcHM8eyB1cmw6IHN0cmluZzsgb0NsYXNzOiBzdHJpbmc7IGNvb3JkaW5hdGVzOiBudW1iZXJbXTsgc3R5bGU6IHN0cmluZyB9PigpXG4gICksXG4gIGdldFdmc0ZlYXR1cmVzRm9yUG9pbnRTdGFja1Rvb2x0aXBzOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tXaWRnZXQgbWFwXSBHZXQgd2ZzIEZlYXR1cmVzIGZvciBzaG93aW5nIHN0YWNrIHRvb2x0aXBzJyxcbiAgICBwcm9wczx7IHVybDogc3RyaW5nOyBvQ2xhc3M6IHN0cmluZzsgY29vcmRpbmF0ZXM6IG51bWJlcltdIH0+KClcbiAgKSxcbiAgdXBkYXRlRGlzcGxheU9wdGlvbnM6IGNyZWF0ZUFjdGlvbihcbiAgICAnW0Rhc2hib2FyZC9EaXNwbGF5XSAoYnVzKSBVcGRhdGUgZGlzcGxheWVkIGRhc2hib2FyZCBtYW5hZ2VtZW50IGZlYXR1cmVzJyxcbiAgICBwcm9wczx7IG1vZGU6IFZpZXdNb2RlOyBjdXN0b21EaXNwbGF5PzogRGlzcGxheU9wdGlvbnMgfT4oKVxuICApLFxuICBnZXRDYXBhYmlsaXR5OiBjcmVhdGVBY3Rpb24oJ1tXaWRnZXQgbWFwXSBHZXQgV21zIGNhcGFiaWxpdHknLCBwcm9wczx7IHVybDogc3RyaW5nOyBmb3JjZT86IGJvb2xlYW4gfT4oKSksXG4gIHVwZGF0ZUNhcGFiaWxpdHk6IGNyZWF0ZUFjdGlvbihcbiAgICAnW1dpZGdldCBtYXBdIFN0b3JlIFdtcyBjYXBhYmlsaXR5JyxcbiAgICBwcm9wczx7IHVybDogc3RyaW5nOyBjYXBhYmlsaXR5OiBHZXRDYXBhYmlsaXRpZXNSZXNwb25zZSB8IG51bGwgfT4oKVxuICApLFxuICBhZGRNYW5pZmVzdE1ldGFkYXRhOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIEFkZCBtYW5pZmVzdCBtZXRhZGF0YScsXG4gICAgcHJvcHM8eyBwcmVzZW50YXRpb25JZDogc3RyaW5nOyBtZXRhZGF0YUlkOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4oKVxuICApLFxuICBkZWxldGVNYW5pZmVzdE1ldGFkYXRhOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIERlbGV0ZSBtYW5pZmVzdCBtZXRhZGF0YScsXG4gICAgcHJvcHM8eyBwcmVzZW50YXRpb25JZDogc3RyaW5nOyBtZXRhZGF0YUlkOiBzdHJpbmcgfT4oKVxuICApLFxuICB0cmlnZ2VyQWdncmVnYXRlOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIChidXMpIFRyaWdnZXJpbmcgYWdncmVnYXRlcyBmb3IgZGF0YXNvdXJjZScsIHByb3BzPHsgaWQ6IHN0cmluZyB9PigpKSxcbiAgbG9hZFByZXNlbnRhdGlvbjogY3JlYXRlQWN0aW9uKFxuICAgICdbRGFzaGJvYXJkXSBsb2FkIHByZXNlbnRhdGlvbicsXG4gICAgcHJvcHM8eyBwcmVzZW50YXRpb246IE1hbmlmZXN0RGVzY3JpcHRpb247IHZpZXdNb2RlOiBWaWV3TW9kZSB9PigpXG4gICksXG4gIGluaXREZWZhdWx0TGF5ZXJHcm91cDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBpbml0IGRlZmF1bHQgbGF5ZXIgZ3JvdXAnLCBwcm9wczx7IGxheWVycz86IHN0cmluZ1tdIH0+KCkpLFxuICBhZGRMYXllckdyb3VwOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIGFkZCBtYXAgbGF5ZXIgZ3JvdXAnLCBwcm9wczx7IGRlZmF1bHRUaXRsZTogc3RyaW5nIH0+KCkpLFxuICB1cGRhdGVMYXllckdyb3VwOiBjcmVhdGVBY3Rpb24oXG4gICAgJ1tEYXNoYm9hcmRdIHVwZGF0ZSBtYXAgbGF5ZXIgZ3JvdXAnLFxuICAgIHByb3BzPHsgbmFtZTogc3RyaW5nOyBuZXdOYW1lPzogc3RyaW5nOyBzaW5nbGVMYXllcj86IGJvb2xlYW47IHZpc2libGVMYXllcnM/OiBzdHJpbmcgfCBzdHJpbmdbXSB9PigpXG4gICksXG4gIGNvbmZpcm1MYXllckdyb3VwRGVsZXRpb246IGNyZWF0ZUFjdGlvbignW0Rhc2hib2FyZF0gY29uZmlybSBkZWxldGluZyBtYXAgbGF5ZXIgZ3JvdXAnLCBwcm9wczx7IG5hbWU6IHN0cmluZyB9PigpKSxcbiAgZGVsZXRlTGF5ZXJHcm91cDogY3JlYXRlQWN0aW9uKCdbRGFzaGJvYXJkXSBkZWxldGUgbWFwIGxheWVyIGdyb3VwJywgcHJvcHM8eyBuYW1lOiBzdHJpbmcgfT4oKSksXG4gIHVwZGF0ZUFsbExheWVyR3JvdXBzOiBjcmVhdGVBY3Rpb24oJ1tEYXNoYm9hcmRdIHJlbW92ZSBtYXAgbGF5ZXIgZ3JvdXAnLCBwcm9wczx7IGdyb3VwczogTGF5ZXJHcm91cFtdIH0+KCkpXG59O1xuIl19
@@ -434,6 +434,24 @@ export class DashboardEffects {
434
434
  }),
435
435
  DashboardActions.followManifestRoute()
436
436
  ])))));
437
+ this.confirmLayerGroupDeletion$ = createEffect(() => this.actions$.pipe(ofType(DashboardActions.confirmLayerGroupDeletion), tap((action) => {
438
+ const data = {
439
+ title: '@pry.widget.map.layerSettings.confirmDelete',
440
+ actions: [
441
+ {
442
+ id: 0,
443
+ label: '@pry.toolbox.manifest.validate',
444
+ actions: [DashboardActions.deleteLayerGroup({ name: action.name })]
445
+ },
446
+ {
447
+ id: 1,
448
+ label: '@pry.toolbox.manifest.close',
449
+ color: 'secondary'
450
+ }
451
+ ]
452
+ };
453
+ this.pryDialog.open(PryDialogConfirmComponent, { data });
454
+ })), { dispatch: false });
437
455
  dashboardInitService.init();
438
456
  refreshService.start();
439
457
  }
@@ -443,4 +461,4 @@ export class DashboardEffects {
443
461
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.3", ngImport: i0, type: DashboardEffects, decorators: [{
444
462
  type: Injectable
445
463
  }], ctorParameters: () => [{ type: i1.DashboardInitService }, { type: i2.Actions }, { type: i3.Store }, { type: i4.ManifestService }, { type: i5.ItemService }, { type: i6.PryTitleService }, { type: i7.PryI18nService }, { type: i8.PrySnackbarService }, { type: i9.Router }, { type: i10.RefreshService }, { type: i11.ToolboxManifestService }, { type: i12.BusService }, { type: i13.SearchService }, { type: i14.PryDialogService }, { type: i15.WmsService }, { type: i16.WidgetFactoryService }, { type: i7.PryI18nService }] });
446
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL3N0b3JlL2Rhc2hib2FyZC5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFXLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RHLE9BQU8sRUFDTCx5QkFBeUIsRUFFMUIsTUFBTSx3REFBd0QsQ0FBQztBQUloRSxPQUFPLEVBQUUsbUJBQW1CLEVBQWtDLE1BQU0scUNBQXFDLENBQUM7QUFJMUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBSTFHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFNM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7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S0FBSyxFQUFFLENBQUM7SUFDekIsQ0FBQzs4R0FuMEJVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1lcmdlLCBvZiwgc3RhcnRXaXRoLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwLCBtZXJnZU1hcCwgdGFwLCB3aXRoTGF0ZXN0RnJvbSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIFByeURpYWxvZ0NvbmZpcm1Db21wb25lbnQsXG4gIFByeURpYWxvZ0NvbmZpcm1EYXRhXG59IGZyb20gJy4uLy4uL2NvcmUvY29tcG9uZW50cy9vdmVybGF5L2RpYWxvZy1jb25maXJtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcnlEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9jb21wb25lbnRzL292ZXJsYXkvZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJ5U25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9jb21wb25lbnRzL3NuYWNrYmFyL3NuYWNrYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJ5STE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2kxOG4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IERhc2hib2FyZEdyaWRMYXlvdXQsIEdsb2JhbE1hbmlmZXN0LCBXaWRnZXRNYW5pZmVzdCB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvbWFuaWZlc3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IENoYXJ0V2lkZ2V0T3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvd2lkZ2V0LWNoYXJ0LW1hbmlmZXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBNYXBXaWRnZXRPcHRpb25zIH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbC93aWRnZXQtbWFwLW1hbmlmZXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBJdGVtU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvaXRlbS9pdGVtLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VhcmNoQWN0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvc2VhcmNoL3NlYXJjaC5hY3Rpb25zJztcbmltcG9ydCB7IERFRkFVTFRfTkFNRURfUVVFUllfSUQsIEVYUExPUkVfTkFNRURfUVVFUllfSUQgfSBmcm9tICcuLi8uLi9jb3JlL3N0b3JlL3NlYXJjaC9zZWFyY2guY29uc3RhbnRzJztcbmltcG9ydCB7IFNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3N0b3JlL3NlYXJjaC9zZWFyY2guc2VydmljZSc7XG5pbXBvcnQgeyBUb29sYm94TWFuaWZlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS90b29sYm94L3Rvb2xib3gtbWFuaWZlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBCdXNTZXJ2aWNlIH0gZnJvbSAnLi4vYWN0aW9uLWJ1cy9zZXJ2aWNlL2J1cy5zZXJ2aWNlJztcbmltcG9ydCB7IFdpZGdldFBsYWNlbWVudFV0aWxzIH0gZnJvbSAnLi4vY29tcG9uZW50cy93aWRnZXRzL3dpZGdldC1wbGFjZW1lbnQvd2lkZ2V0LXBsYWNlbWVudC51dGlscyc7XG5pbXBvcnQgeyBSZXN1bHRzZXRVdGlscyB9IGZyb20gJy4uL3Jlc3VsdHNldC11dGlscyc7XG5pbXBvcnQgeyBEYXNoYm9hcmRJbml0U2VydmljZSB9IGZyb20gJy4vZGFzaGJvYXJkLWluaXQuc2VydmljZSc7XG5pbXBvcnQgeyBEYXNoYm9hcmRBY3Rpb25zLCBWaWV3TW9kZSB9IGZyb20gJy4vZGFzaGJvYXJkLmFjdGlvbnMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkU2VsZWN0b3JzIH0gZnJvbSAnLi9kYXNoYm9hcmQuc2VsZWN0b3JzJztcbmltcG9ydCB7IE1hbmlmZXN0U2VydmljZSB9IGZyb20gJy4vbWFuaWZlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBSZWZyZXNoU2VydmljZSB9IGZyb20gJy4vcmVmcmVzaC5zZXJ2aWNlJztcbmltcG9ydCB7IFByeVRpdGxlU2VydmljZSB9IGZyb20gJy4vdGl0bGUuc2VydmljZSc7XG5pbXBvcnQgeyBXbXNTZXJ2aWNlIH0gZnJvbSAnLi93bXMuc2VydmljZSc7XG5pbXBvcnQgeyBXaWRnZXRGYWN0b3J5U2VydmljZSB9IGZyb20gJy4uL2NvbXBvbmVudHMvd2lkZ2V0cy93aWRnZXQtaW5zdGFuY2lhdG9yL3dpZGdldC1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZVNlbGVjdG9ycyB9IGZyb20gJy4uLy4uL2NvcmUvc3RvcmUvZGF0YS1zb3VyY2UvZGF0YS1zb3VyY2Uuc2VsZWN0b3JzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhc2hib2FyZEVmZmVjdHMge1xuICBqb2luJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmpvaW4pLFxuICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnRlbmFudHMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmVzdWx0U2V0cyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucHJlc2VudGF0aW9uKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmRpc3BsYXlPcHRpb25zKVxuICAgICAgKSxcbiAgICAgIGZpbHRlcigoW2FjdGlvbiwgcmFuaywgdGVuYW50cywgbWFuaWZlc3QsIHJlc3VsdFNldHMsIGRpc3BsYXldKSA9PiByYW5rID09PSAwKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwgcmFuaywgdGVuYW50cywgbWFuaWZlc3QsIHJlc3VsdFNldHMsIHNlbGVjdGVkSWRzLCBwcmVzZW50YXRpb24sIGRpc3BsYXldKSA9PlxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJUZW5hbnRKb2luKHtcbiAgICAgICAgICB0ZW5hbnRzLCAvLyB3ZSBhbHJlYWR5IGhhdmUgYWRkZWQgdGVuYW50IGluIHRoZSByZWR1Y2Ugb2YgdGhlIFwiam9pblwiIGFjdGlvblxuICAgICAgICAgIG1hbmlmZXN0OiB7XG4gICAgICAgICAgICAuLi5tYW5pZmVzdCxcbiAgICAgICAgICAgIHdpbmRvd3M6IG1hbmlmZXN0LndpbmRvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3VsdFNldHMsXG4gICAgICAgICAgc2VsZWN0ZWRJZHMsXG4gICAgICAgICAgam9pbmluZzogdHJ1ZSxcbiAgICAgICAgICBwcmVzZW50YXRpb24sXG4gICAgICAgICAgZGlzcGxheVxuICAgICAgICB9KVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsZWF2ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5sZWF2ZSksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMudGVuYW50cyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpXG4gICAgICApLFxuICAgICAgZmlsdGVyKChbYWN0aW9uLCByYW5rLCB0ZW5hbnRzLCBtYW5pZmVzdF0pID0+IHJhbmsgPT09IDAgfHwgKHRlbmFudHNbMF0gPT09IGFjdGlvbi5zZW5kZXIgJiYgcmFuayA9PT0gMSkpLFxuICAgICAgbWFwKChbYWN0aW9uLCByYW5rLCB0ZW5hbnRzLCBtYW5pZmVzdCwgc2VsZWN0ZWRJZHNdKSA9PiB7XG4gICAgICAgIGNvbnN0IGxlYXZlclJhbmsgPSB0ZW5hbnRzLmluZGV4T2YoYWN0aW9uLnNlbmRlcik7XG4gICAgICAgIGNvbnN0IG5ld1RlbmFudHNMaXN0ID0gWy4uLnRlbmFudHNdO1xuICAgICAgICBjb25zdCBuZXdXaW5kb3dMaXN0ID0gWy4uLm1hbmlmZXN0LndpbmRvd3NdO1xuICAgICAgICBpZiAobGVhdmVyUmFuayA+IC0xKSB7XG4gICAgICAgICAgbmV3VGVuYW50c0xpc3Quc3BsaWNlKGxlYXZlclJhbmssIDEpO1xuICAgICAgICAgIG5ld1dpbmRvd0xpc3Quc3BsaWNlKGxlYXZlclJhbmssIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlclRlbmFudExlYXZlKHtcbiAgICAgICAgICB0ZW5hbnRzOiBuZXdUZW5hbnRzTGlzdCxcbiAgICAgICAgICBtYW5pZmVzdDoge1xuICAgICAgICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICAgICAgICB3aW5kb3dzOiBuZXdXaW5kb3dMaXN0XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxlY3RlZElkc1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIGZldGNoU3RhdGljTWFuaWZlc3QkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZmV0Y2hTdGF0aWNNYW5pZmVzdCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuayksIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpKSxcbiAgICAgIGZpbHRlcigoW2FjdGlvbiwgcmFua10pID0+IHJhbmsgPT09IDApLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIHJhbmtdKSA9PlxuICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZVxuICAgICAgICAgIC5nZXQoYWN0aW9uLmlkKVxuICAgICAgICAgIC5waXBlKG1hcCgoc3RhdGljTWFuaWZlc3QpID0+IERhc2hib2FyZEFjdGlvbnMudXBkYXRlU3RhdGljTWFuaWZlc3QoeyBzdGF0aWNNYW5pZmVzdCB9KSkpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGxvYWRBbmRBY3RpdmF0ZU1hbmlmZXN0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmxvYWRBbmRBY3RpdmF0ZU1hbmlmZXN0LCBEYXNoYm9hcmRBY3Rpb25zLmxvYWRNYW5pZmVzdCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuayksIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpKSxcbiAgICAgIGZpbHRlcigoW2FjdGlvbiwgcmFua10pID0+IHJhbmsgPT09IDApLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIHJhbmssIHNlbGVjdGVkSWRzXSkgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2UuZ2V0KGFjdGlvbi5pZCkucGlwZShcbiAgICAgICAgICBtZXJnZU1hcCgobWFuaWZlc3QpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhY3Rpb24udHlwZSA9PT0gRGFzaGJvYXJkQWN0aW9ucy5sb2FkQW5kQWN0aXZhdGVNYW5pZmVzdC50eXBlXG4gICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyRmV0Y2goeyBtYW5pZmVzdCwgbWFuaWZlc3RJZDogYWN0aW9uLmlkLCBzZWxlY3RlZElkcyB9KSxcbiAgICAgICAgICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMuZm9sbG93TWFuaWZlc3RSb3V0ZSgpXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICA6IFtEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0V2l0aG91dEFjdGl2YXRpb24oeyBtYW5pZmVzdCwgbWFuaWZlc3RJZDogYWN0aW9uLmlkLCBzZWxlY3RlZElkcyB9KV07XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjbGVhck1hbmlmZXN0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmNsZWFyTWFuaWZlc3QpLFxuICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5zZWxlY3RlZEl0ZW1JZHMpXG4gICAgICApLFxuICAgICAgbWFwKChbYWN0aW9uLCBtYW5pZmVzdCwgc2VsZWN0ZWRJZHNdKSA9PlxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJGZXRjaCh7IG1hbmlmZXN0LCBtYW5pZmVzdElkOiAnJywgc2VsZWN0ZWRJZHMgfSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZG93bmxvYWRNYW5pZmVzdCQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZG93bmxvYWRNYW5pZmVzdCksXG4gICAgICAgIHRhcCgoYWN0aW9uKSA9PlxuICAgICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlLmdldChhY3Rpb24uaWQpLnN1YnNjcmliZSgobWFuaWZlc3Q6IEdsb2JhbE1hbmlmZXN0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRhU3RyID0gJ2RhdGE6dGV4dC9qc29uO2NoYXJzZXQ9dXRmLTgsJyArIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShtYW5pZmVzdCkpO1xuICAgICAgICAgICAgY29uc3QgZGxBbmNob3JFbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgZGxBbmNob3JFbGVtLnNldEF0dHJpYnV0ZSgnaHJlZicsIGRhdGFTdHIpO1xuICAgICAgICAgICAgZGxBbmNob3JFbGVtLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBgJHthY3Rpb24ubmFtZX0uanNvbmApO1xuICAgICAgICAgICAgZGxBbmNob3JFbGVtLmNsaWNrKCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgZm9sbG93TWFuaWZlc3RSb3V0ZSQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZm9sbG93TWFuaWZlc3RSb3V0ZSksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy53aW5kb3dNYW5pZmVzdCkpLFxuICAgICAgICB0YXAoKFthY3Rpb24sIG1hbmlmZXN0XSkgPT4ge1xuICAgICAgICAgIGlmIChtYW5pZmVzdC5yb3V0ZSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChtYW5pZmVzdC5yb3V0ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgZW5kTG9hZGluZ0FmdGVyRm9sbG93aW5nTWFuaWZlc3RSb3V0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5mb2xsb3dNYW5pZmVzdFJvdXRlKSxcbiAgICAgIG1hcCgoYWN0aW9uKSA9PiBEYXNoYm9hcmRBY3Rpb25zLmVuZExvYWRpbmcoKSlcbiAgICApXG4gICk7XG5cbiAgcmVxdWVzdE1hbmlmZXN0Um91dGUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMucmVxdWVzdEFsbFJvdXRlcyksXG4gICAgICBtYXAoKCkgPT4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVSb3V0ZU1hbmlmZXN0KHsgcm91dGU6IHRoaXMucm91dGVyLnVybCB9KSlcbiAgICApXG4gICk7XG5cbiAgYXNzZXJ0UmVzdWx0U2V0cyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuYXNzZXJ0UmVzdWx0U2V0cyxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5kaXNwYXRjaEZpbHRlcnMsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuY2xlYXJBbGxGaWx0ZXJWYWx1ZXNcbiAgICAgICksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdsb2JhbE1hbmlmZXN0KSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJlc3VsdFNldHMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmVzdWx0U2V0c1BhcmFtcyksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5xdWlja09yZGVyKVxuICAgICAgKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCBtYW5pZmVzdCwgcmVzdWx0U2V0cywgcmVzdWx0U2V0c1BhcmFtcywgcXVpY2tPcmRlcl0pID0+IHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAoIWFjdGlvbi5pZCkge1xuICAgICAgICAgIC8vIEZpcnN0IHNlbmQgYWdncmVnYXRlIHVwZGF0ZXNcbiAgICAgICAgICBjb25zdCB0b0FnZ3JlZ2F0ZUFjdGlvbnMgPSAoXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIC4uLm5ldyBTZXQoXG4gICAgICAgICAgICAgICAgbWFuaWZlc3Qud2luZG93c1xuICAgICAgICAgICAgICAgICAgLm1hcCgod2luTWFuaWZlc3QpID0+ICh3aW5NYW5pZmVzdCA/PyB7fSkud2lkZ2V0cyA/PyBbXSlcbiAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IFsuLi5wLCAuLi5jXSwgW10pXG4gICAgICAgICAgICAgICAgICAubWFwKCh3aWRNYW5pZmVzdCkgPT4gdGhpcy53aWRnZXRGYWN0b3J5U2VydmljZS5hZ2dyZWdhdGVzVG9BdXRvTG9hZCh3aWRNYW5pZmVzdCkpXG4gICAgICAgICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBbLi4ucCwgLi4uY10sIFtdIGFzIHN0cmluZ1tdKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdIGFzIHN0cmluZ1tdXG4gICAgICAgICAgKS5tYXAoKGRzKSA9PiBEYXNoYm9hcmRBY3Rpb25zLnRyaWdnZXJBZ2dyZWdhdGUoeyBpZDogZHMgfSkpO1xuXG4gICAgICAgICAgY29uc3QgdG9JdGVtc0FjdGlvbnMgPSBPYmplY3QudmFsdWVzKFxuICAgICAgICAgICAgbWFuaWZlc3Qud2luZG93c1xuICAgICAgICAgICAgICAubWFwKCh3aW5NYW5pZmVzdCkgPT4gKHdpbk1hbmlmZXN0ID8/IHt9KS53aWRnZXRzID8/IFtdKVxuICAgICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBbLi4ucCwgLi4uY10sIFtdKVxuICAgICAgICAgICAgICAubWFwKCh3aWRNYW5pZmVzdCkgPT4gdGhpcy53aWRnZXRGYWN0b3J5U2VydmljZS5kYXRhc291cmNlc1RvQXV0b0xvYWQod2lkTWFuaWZlc3QpKVxuICAgICAgICAgICAgICAuZmxhdCgpXG4gICAgICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKHAsIGMpID0+ICh7XG4gICAgICAgICAgICAgICAgICAuLi5wLFxuICAgICAgICAgICAgICAgICAgW2MuZGF0YXNldElkXToge1xuICAgICAgICAgICAgICAgICAgICAuLi5wW2MuZGF0YXNldElkXSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYyxcbiAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUdlbzogcFtjLmRhdGFzZXRJZF0/LmV4Y2x1ZGVHZW8gPT09IGZhbHNlID8gcFtjLmRhdGFzZXRJZF0uZXhjbHVkZUdlbyA6IGMuZXhjbHVkZUdlb1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHt9IGFzIHsgW2tleTogc3RyaW5nXTogeyBkYXRhc2V0SWQ6IHN0cmluZzsgZXhjbHVkZUdlbzogYm9vbGVhbiB9IH1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIClcbiAgICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAgIChyZXN1bHRTZXQpID0+XG4gICAgICAgICAgICAgICAgISFyZXN1bHRTZXQuZGF0YXNldElkICYmXG4gICAgICAgICAgICAgICAgcmVzdWx0U2V0LmRhdGFzZXRJZCAhPT0gJycgJiZcbiAgICAgICAgICAgICAgICAoIXJlc3VsdFNldHNbcmVzdWx0U2V0LmRhdGFzZXRJZF0gfHxcbiAgICAgICAgICAgICAgICAgIHJlc3VsdFNldHNQYXJhbXNbcmVzdWx0U2V0LmRhdGFzZXRJZF0gIT09XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5nZXRJdGVtc1NlcmlhbGl6ZWRQYXJhbXMocmVzdWx0U2V0LmRhdGFzZXRJZCwgcXVpY2tPcmRlcikpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAubWFwKChyZXN1bHRTZXQpID0+XG4gICAgICAgICAgICAgIFNlYXJjaEFjdGlvbnMuZ2V0RGF0YXNvdXJjZUl0ZW1zKHtcbiAgICAgICAgICAgICAgICBpZDogcmVzdWx0U2V0LmRhdGFzZXRJZCxcbiAgICAgICAgICAgICAgICBleGNsdWRlR2VvOiByZXN1bHRTZXQuZXhjbHVkZUdlbyxcbiAgICAgICAgICAgICAgICBmcm9tOiAnRGFzaGJvYXJkRWZmZWN0cy5hc3NlcnRSZXN1bHRTZXRzJC0xJ1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybiBbLi4udG9JdGVtc0FjdGlvbnMsIC4uLnRvQWdncmVnYXRlQWN0aW9uc107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGlmICghcmVzdWx0U2V0c1thY3Rpb24uaWRdKSB7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICBTZWFyY2hBY3Rpb25zLmdldERhdGFzb3VyY2VJdGVtcyh7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGlkOiBhY3Rpb24uaWQgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBleGNsdWRlR2VvOiBhY3Rpb24uZXhjbHVkZUdlbyAhPSB1bmRlZmluZWQgPyBhY3Rpb24uZXhjbHVkZUdlbyA6IHRydWUsXG4gICAgICAgICAgICAgICAgZnJvbTogJ0Rhc2hib2FyZEVmZmVjdHMuYXNzZXJ0UmVzdWx0U2V0cyQtMidcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgc2VuZEFnZ3JlZ2F0ZXNFdmVudCQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMudHJpZ2dlckFnZ3JlZ2F0ZSksXG4gICAgICAgIGZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24uaWQgIT09IERFRkFVTFRfTkFNRURfUVVFUllfSUQgJiYgYWN0aW9uLmlkICE9PSBFWFBMT1JFX05BTUVEX1FVRVJZX0lEKSxcbiAgICAgICAgdGFwKChhY3Rpb24pID0+IHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnZGF0YXNvdXJjZVJlZnJlc2gnLCB7IGRldGFpbDogYWN0aW9uLmlkIH0pKSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIHN0YXJ0TWlzc2luZ1ZpZXdBZnRlclZpZXdVcGRhdGUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0LFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJGZXRjaCxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyVGVuYW50TGVhdmUsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlclRlbmFudEpvaW4sXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuZXhwbG9yZSxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5kZXRhaWwsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMucmVzdG9yZUluaXRpYWxNYW5pZmVzdCxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5jcmVhdGVUYWJcbiAgICAgICksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuaykpLFxuICAgICAgZmlsdGVyKChbYWN0aW9uLCByYW5rXSkgPT4gcmFuayA9PT0gMCksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PiBbXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuc3RhcnRpbmdNaXNzaW5nVmlld3MoKSxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5hc3NlcnRSZXN1bHRTZXRzKHt9KSxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zb2x2ZUNvbGxpc2lvbnMoKVxuICAgICAgXSlcbiAgICApXG4gICk7XG5cbiAgdXBkYXRlVGl0bGUkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0LFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlclRlbmFudEpvaW4sXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyVGVuYW50TGVhdmUsXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyRmV0Y2gsXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5kZWNsYXJlU2VuZGVySWRcbiAgICAgICAgKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspKSxcbiAgICAgICAgdGFwKChbYWN0aW9uLCByYW5rXSkgPT4ge1xuICAgICAgICAgIHRoaXMudGl0bGVTZXJ2aWNlLmNoYW5nZVRpdGxlKCk7XG4gICAgICAgIH0pXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICBvcGVuT3RoZXIkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnN0YXJ0aW5nTWlzc2luZ1ZpZXdzKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLFxuICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy50ZW5hbnRzKSxcbiAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpXG4gICAgICAgICksXG4gICAgICAgIGRlYm91bmNlVGltZSgxMDAwKSxcbiAgICAgICAgZmlsdGVyKChbYWN0aW9uLCByYW5rLCB0ZW5hbnRzLCBtYW5pZmVzdF0pID0+IHJhbmsgPT09IDApLFxuICAgICAgICB0YXAoKFthY3Rpb24sIHJhbmssIHRlbmFudHMsIG1hbmlmZXN0XSkgPT4ge1xuICAgICAgICAgIG1hbmlmZXN0LndpbmRvd3MuZm9yRWFjaCgod2luZG93TWFuaWZlc3QsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRlbmFudHNbaW5kZXhdKSB7XG4gICAgICAgICAgICAgIC8vIElmIG5vIHdpbmRvdyBpcyBvcGVuZWQgZm9yIHRoaXMgcGFydCwgdGhlbiBvcGVuIG9uZVxuICAgICAgICAgICAgICB3aW5kb3cub3Blbih3aW5kb3dNYW5pZmVzdC5yb3V0ZSA/PyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUsICdfYmxhbmsnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIHNhdmVNYW5pZmVzdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5zYXZlTWFuaWZlc3QpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdsb2JhbE1hbmlmZXN0KSksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXRhU291cmNlU2VsZWN0b3JzLmRhdGFzZXRzKSksXG4gICAgICBtZXJnZU1hcCgoW1thY3Rpb24sIGN1cnJlbnRNYW5pZmVzdF0sIGRhdGFzZXRzXSkgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2VcbiAgICAgICAgICAuc2F2ZShcbiAgICAgICAgICAgIGFjdGlvbi5uYW1lLFxuICAgICAgICAgICAgYWN0aW9uLm1hbmlmZXN0ID8/IGN1cnJlbnRNYW5pZmVzdCxcbiAgICAgICAgICAgIGFjdGlvbi5pZCxcbiAgICAgICAgICAgIGFjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGFjdGlvbi5pbWFnZSxcbiAgICAgICAgICAgIGFjdGlvbi5tZXRhZGF0YSxcbiAgICAgICAgICAgIGFjdGlvbi5ncm91cHNcbiAgICAgICAgICApXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YXAoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5zYXZlZCcsIHsgdmlld0lkOiBhY3Rpb24ubmFtZSB9KSxcbiAgICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcydcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhyZXNwb25zZS5taXNzaW5nR3JvdXBzQnlFbnRpdHkpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhOiBQcnlEaWFsb2dDb25maXJtRGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgIHRpdGxlOiAnQHByeS5zaGFyZS5jb25mbGljdC50aXRsZScsXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmkxOG5TZXJ2aWNlLmluc3RhbnQoJ0Bwcnkuc2hhcmUuY29uZmxpY3QubWFpbicpICtcbiAgICAgICAgICAgICAgICAgICAgJ1xcclxcbicgK1xuICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhyZXNwb25zZS5taXNzaW5nR3JvdXBzQnlFbnRpdHkpXG4gICAgICAgICAgICAgICAgICAgICAgLm1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgIChlbnRpdHkpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRhc2V0cy5maW5kKChkcykgPT4gZHMuaWQgPT09IGVudGl0eSk/Lm5hbWUgPz8gZW50aXR5KSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICcgOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UubWlzc2luZ0dyb3Vwc0J5RW50aXR5W2VudGl0eV0uam9pbignLCAnKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAuam9pbignXFxyXFxuJyksXG4gICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZDogMCxcbiAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0BwcnkudG9vbGJveC5jbG9zZSdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5wcnlEaWFsb2cub3BlbihQcnlEaWFsb2dDb25maXJtQ29tcG9uZW50LCB7IGRhdGEgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbWFwKCgpID0+IGFjdGlvbi5tYW5pZmVzdCA/PyBjdXJyZW50TWFuaWZlc3QpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgICAgICdAcHJ5LnRvb2xib3gubWFuaWZlc3Quc2F2ZUVycm9yQ29kZS4nICsgKGVycm9yLmVycm9yPy5jb2RlID8/ICdVTktOT1dOJyksXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGFjdGlvbi5uYW1lXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICB0eXBlOiAnZXJyb3InXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICksXG4gICAgICBtZXJnZU1hcCgobWFuaWZlc3QpID0+IFtcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5mZXRjaE1hbmlmZXN0c0xpc3QoKSxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZXRJbml0aWFsUHJlc2VudGF0aW9uKHsgaW5pdGlhbDogbWFuaWZlc3QgfSlcbiAgICAgIF0pXG4gICAgKVxuICApO1xuXG4gIGxpc3RNYW5pZmVzdHMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZmV0Y2hNYW5pZmVzdHNMaXN0KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSksXG4gICAgICBmaWx0ZXIoKFthY3Rpb24sIHJhbmtdKSA9PiByYW5rID09PSAwIHx8IHJhbmsgPT09IC0xKSxcbiAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIHJhbmtdKSA9PlxuICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZS5saXN0KCkucGlwZShtYXAoKG1hbmlmZXN0cykgPT4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdHNMaXN0KHsgbWFuaWZlc3RzIH0pKSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY29uZmlybU1hbmlmZXN0RGVsZXRpb24kID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmNvbmZpcm1NYW5pZmVzdERlbGV0aW9uKSxcbiAgICAgICAgdGFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRhOiBQcnlEaWFsb2dDb25maXJtRGF0YSA9IHtcbiAgICAgICAgICAgIHRpdGxlOiAnQHByeS53aWRnZXQubW9kYWxUaXRsZScsXG4gICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogMCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0BwcnkudG9vbGJveC5tYW5pZmVzdC52YWxpZGF0ZScsXG4gICAgICAgICAgICAgICAgYWN0aW9uczogW0Rhc2hib2FyZEFjdGlvbnMuZGVsZXRlTWFuaWZlc3QoeyBpZDogYWN0aW9uLmlkIH0pXVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IDEsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QuY2xvc2UnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnc2Vjb25kYXJ5J1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLnByeURpYWxvZy5vcGVuKFByeURpYWxvZ0NvbmZpcm1Db21wb25lbnQsIHsgZGF0YSB9KTtcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIGRlbGV0ZU1hbmlmZXN0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmRlbGV0ZU1hbmlmZXN0KSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlLmRlbGV0ZShhY3Rpb24uaWQpLnBpcGUobWFwKCgpID0+IERhc2hib2FyZEFjdGlvbnMuZmV0Y2hNYW5pZmVzdHNMaXN0KCkpKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBmZXRjaE9iamVjdHNEZXRhaWxzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmZldGNoT2JqZWN0c0RldGFpbHMpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT4gbWVyZ2UoLi4uYWN0aW9uLmlkcy5tYXAoKGlkKSA9PiB0aGlzLml0ZW1TZXJ2aWNlLmdldChpZCkpKSksXG4gICAgICBtYXAoKGl0ZW0pID0+IERhc2hib2FyZEFjdGlvbnMudXBkYXRlT2JqZWN0c0RldGFpbHMoeyBsaXN0OiB7IFtpdGVtLmlkXTogaXRlbSB9IH0pKVxuICAgIClcbiAgKTtcblxuICBwcm94aW1pdHlTZWFyY2gkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMucHJveGltaXR5KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yZXN1bHRTZXRzKSksXG4gICAgICBtZXJnZU1hcCgoW2FjdGlvbiwgcmVzdWx0U2V0c10pID0+XG4gICAgICAgIHRoaXMuaXRlbVNlcnZpY2UucHJveGltaXR5KGFjdGlvbi5pZCkucGlwZShcbiAgICAgICAgICBtYXAoKHByb3hScykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIERhc2hib2FyZEFjdGlvbnMudXBkYXRlUmVzdWx0U2V0KHtcbiAgICAgICAgICAgICAgaWQ6IGFjdGlvbi50YXJnZXRSZXN1bHRTZXQsXG4gICAgICAgICAgICAgIHJlc3VsdFNldDogUmVzdWx0c2V0VXRpbHMubWVyZ2VSZXN1bHRTZXRzKHByb3hScywgcmVzdWx0U2V0c1thY3Rpb24udGFyZ2V0UmVzdWx0U2V0XSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZXhwbG9yZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5leHBsb3JlKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+IFtEYXNoYm9hcmRBY3Rpb25zLnByb3hpbWl0eSh7IGlkOiBhY3Rpb24uaWQsIHRhcmdldFJlc3VsdFNldDogRVhQTE9SRV9OQU1FRF9RVUVSWV9JRCB9KV0pXG4gICAgKVxuICApO1xuXG4gIGRldGFpbEFzTG9hZEluV2lkZ2V0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmRldGFpbCksXG4gICAgICBtYXAoKGFjdGlvbikgPT5cbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5hZGRXaWRnZXRUb1ByZXNlbnRhdGlvbih7XG4gICAgICAgICAgaWQ6ICcnLFxuICAgICAgICAgIHdpZGdldFR5cGU6ICdkZXRhaWwnLFxuICAgICAgICAgIGFkZGl0aW9uYWxPcHRpb25zOiB7XG4gICAgICAgICAgICBpdGVtSWRzOiBhY3Rpb24uaWRzXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICB1cGRhdGVXaWRnZXRJblByZXNlbnRhdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVXaWRnZXRJblByZXNlbnRhdGlvbiksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCBtYW5pZmVzdF0pID0+IHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgYSB3aWRnZXQgd2l0aCBzYW1lIGRhdGFzb3VyY2UgYW5kIHR5cGUgYWxyZWFkeSBleGlzdCBpbiBjdXJyZW50IHByZXNlbnRhdGlvblxuICAgICAgICBjb25zdCB3aWRnZXRUb01hdGNoID0gdGhpcy50b29sYm94TWFuaWZlc3RTZXJ2aWNlLmdldChhY3Rpb24ud2lkZ2V0VHlwZSk7XG5cbiAgICAgICAgbGV0IGFkZGl0aW9uYWxNYXRjaGluZ0ZuOiAob3B0aW9uc1RvTWF0Y2g6IGFueSwgb3B0aW9uczogYW55KSA9PiBib29sZWFuO1xuICAgICAgICBzd2l0Y2ggKHdpZGdldFRvTWF0Y2gudHlwZSkge1xuICAgICAgICAgIGNhc2UgJ2NoYXJ0JzpcbiAgICAgICAgICAgIGFkZGl0aW9uYWxNYXRjaGluZ0ZuID0gKG9wdGlvbnNUb01hdGNoOiBDaGFydFdpZGdldE9wdGlvbnMsIG9wdGlvbnM6IENoYXJ0V2lkZ2V0T3B0aW9ucykgPT5cbiAgICAgICAgICAgICAgb3B0aW9uc1RvTWF0Y2gudHlwZSA9PT0gb3B0aW9ucy50eXBlICYmIG9wdGlvbnNUb01hdGNoLnN1YlR5cGUgPT09IG9wdGlvbnMuc3ViVHlwZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ21hcCc6XG4gICAgICAgICAgICBhZGRpdGlvbmFsTWF0Y2hpbmdGbiA9IChvcHRpb25zVG9NYXRjaDogTWFwV2lkZ2V0T3B0aW9ucywgb3B0aW9uczogTWFwV2lkZ2V0T3B0aW9ucykgPT5cbiAgICAgICAgICAgICAgISFvcHRpb25zLmxheWVycyEuZmluZCgobGF5ZXIpID0+IGxheWVyLnR5cGUgPT09IG9wdGlvbnNUb01hdGNoLmxheWVycyFbMF0udHlwZSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgYWRkaXRpb25hbE1hdGNoaW5nRm4gPSAob3B0aW9uc1RvTWF0Y2g6IGFueSwgb3B0aW9uczogYW55KSA9PiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWF0Y2hpbmdXaWRnZXRzID0gbWFuaWZlc3Qud2luZG93cy5tYXAoKHdpbmRvdykgPT5cbiAgICAgICAgICB3aW5kb3cud2lkZ2V0c1xuICAgICAgICAgICAgLmZpbHRlcigod2lkZ2V0KSA9PiB3aWRnZXQudHlwZSA9PT0gd2lkZ2V0VG9NYXRjaC50eXBlKVxuICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgKHdpZGdldCkgPT5cbiAgICAgICAgICAgICAgICB3aWRnZXQuZGF0YXNvdXJjZSA9PT0gYWN0aW9uLmlkIHx8XG4gICAgICAgICAgICAgICAgKHdpZGdldC5kYXRhc291cmNlIVswXSA9PT0gYWN0aW9uLmlkICYmIHdpZGdldC5kYXRhc291cmNlIS5sZW5ndGggPT09IDEpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuZmluZCgod2lkZ2V0KSA9PiBhZGRpdGlvbmFsTWF0Y2hpbmdGbih3aWRnZXRUb01hdGNoLm9wdGlvbnMsIHdpZGdldC5vcHRpb25zKSlcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBhbHJlYWR5TWF0Y2hlZFdpZGdldCA9IG1hdGNoaW5nV2lkZ2V0cy5maW5kKCh3aW5kb3cpID0+ICEhd2luZG93KTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICAgICAgaWYgKGFscmVhZHlNYXRjaGVkV2lkZ2V0KSB7XG4gICAgICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLm11bHRpU25hY2tCYXIoe1xuICAgICAgICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LndpZGdldC51cGRhdGVkSW5WaWV3Jywge1xuICAgICAgICAgICAgICAgICAgaW5kZXg6IG1hdGNoaW5nV2lkZ2V0cy5maW5kSW5kZXgoKHdpZGdldCkgPT4gISF3aWRnZXQpICsgMVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQucHVzaChEYXNoYm9hcmRBY3Rpb25zLmFkZFdpZGdldFRvUHJlc2VudGF0aW9uKHsgLi4uYWN0aW9uIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBhZGRXaWRnZXRUb1ByZXNlbnRhdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5hZGRXaWRnZXRUb1ByZXNlbnRhdGlvbiksXG4gICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdyaWRMYXlvdXQpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuayksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5kYXNoYm9hcmRDZWxsUGFyYW1zKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNlbGVjdGVkSXRlbUlkcylcbiAgICAgICksXG4gICAgICBtYXAoKFthY3Rpb24sIGxheW91dCwgX2dsb2JhbE1hbmlmZXN0LCByYW5rLCBwYXJhbXMsIHNlbGVjdGVkSWRzXSkgPT4ge1xuICAgICAgICBjb25zdCBtYW5pZmVzdEdsb2JhbCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoX2dsb2JhbE1hbmlmZXN0KSkgYXMgR2xvYmFsTWFuaWZlc3Q7XG5cbiAgICAgICAgLy8gQ3JlYXRlIG5ldyBjb25maWd1cmF0aW9uXG4gICAgICAgIGNvbnN0IG5ld09wdGlvbnMgPSB0aGlzLnRvb2xib3hNYW5pZmVzdFNlcnZpY2UuZ2V0KGFjdGlvbi53aWRnZXRUeXBlKSA/PyB7XG4gICAgICAgICAgb3B0aW9uczoge30sXG4gICAgICAgICAgdHlwZTogYWN0aW9uLndpZGdldFR5cGVcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbmV3V2lkZ2V0TWFuaWZlc3QgPSB7XG4gICAgICAgICAgLi4ubmV3T3B0aW9ucyxcbiAgICAgICAgICBsYXlvdXQ6IHt9LFxuICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgIC4uLm5ld09wdGlvbnMub3B0aW9ucyxcbiAgICAgICAgICAgIC4uLmFjdGlvbi5hZGRpdGlvbmFsT3B0aW9uc1xuICAgICAgICAgIH1cbiAgICAgICAgfSBhcyBXaWRnZXRNYW5pZmVzdDtcblxuICAgICAgICBpZiAoISFhY3Rpb24uaWQpIHtcbiAgICAgICAgICBuZXdXaWRnZXRNYW5pZmVzdC5kYXRhc291cmNlID0gYWN0aW9uLmlkO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGZvdW5kOiB7IGFjdHVhbFJhbms6IG51bWJlcjsgd2lkZ2V0OiBXaWRnZXRNYW5pZmVzdCB9IHwgbnVsbCA9IG51bGw7XG4gICAgICAgIC8vIFRyeSB0byBmaW5kIGEgc3BvdCBpbiB3aW5kb3dzIChzdGFydGluZyBieSBjdXJyZW50IHJhbmssIHRoZW4gaW4gb3RoZXJzKVxuICAgICAgICBjb25zdCBzZXF1ZW5jZSA9IFdpZGdldFBsYWNlbWVudFV0aWxzLnN3YXBBcnJheUVsZW1lbnRzKFxuICAgICAgICAgIG5ldyBBcnJheShtYW5pZmVzdEdsb2JhbC53aW5kb3dzLmxlbmd0aCkuZmlsbCgwKS5tYXAoKF8sIGlkeCwgYXJyYXkpID0+IGlkeCksXG4gICAgICAgICAgMCxcbiAgICAgICAgICByYW5rXG4gICAgICAgICk7XG4gICAgICAgIC8vIFRyeWluZyBhbGwgcGxhY2VtZW50IG9wdGlvbnNcbiAgICAgICAgZm9yIChjb25zdCBhY3R1YWxSYW5rIG9mIHNlcXVlbmNlKSB7XG4gICAgICAgICAgY29uc3Qgd2luZG93TGF5b3V0ID0gbWFuaWZlc3RHbG9iYWwud2luZG93c1thY3R1YWxSYW5rXS5ncmlkPy5sYXlvdXQgPz8gRGFzaGJvYXJkR3JpZExheW91dC5GVUxMO1xuICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBXaWRnZXRQbGFjZW1lbnRVdGlscy5wbGFjZW1lbnRPcHRpb25zKG5ld1dpZGdldE1hbmlmZXN0LCB3aW5kb3dMYXlvdXQpO1xuICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgICAgIC8vIEFyZSB3ZSBkaXNqb2ludCBmcm9tIGFsbCBvdGhlciB3aWRnZXRzID9cbiAgICAgICAgICAgICAgICBjb25zdCBpc0Rpc2pvaW50RnJvbUFsbCA9IChtYW5pZmVzdEdsb2JhbC53aW5kb3dzW2FjdHVhbFJhbmtdLndpZGdldHMgPz8gW10pXG4gICAgICAgICAgICAgICAgICAubWFwKCh3aWRnZXQpID0+IFdpZGdldFBsYWNlbWVudFV0aWxzLmFyZURpc2pvaW50KHdpZGdldCwgb3B0aW9uKSlcbiAgICAgICAgICAgICAgICAgIC5yZWR1Y2UoKHAsIGMpID0+IHAgJiYgYywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzRGlzam9pbnRGcm9tQWxsKSB7XG4gICAgICAgICAgICAgICAgICAvLyBGb3VuZCBhIGRpc2pvaW50IHBsYWNlbWVudCAhXG4gICAgICAgICAgICAgICAgICBmb3VuZCA9IHsgYWN0dWFsUmFuaywgd2lkZ2V0OiBvcHRpb24gfSBhcyB7IGFjdHVhbFJhbms6IG51bWJlcjsgd2lkZ2V0OiBXaWRnZXRNYW5pZmVzdCB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghIWZvdW5kKSB7XG4gICAgICAgICAgY29uc3QgcGxhY2VXZUZvdW5kID0gZm91bmQgYXMgeyBhY3R1YWxSYW5rOiBudW1iZXI7IHdpZGdldDogV2lkZ2V0TWFuaWZlc3QgfTtcbiAgICAgICAgICBtYW5pZmVzdEdsb2JhbC53aW5kb3dzW3BsYWNlV2VGb3VuZC5hY3R1YWxSYW5rXS53aWRnZXRzLnB1c2gocGxhY2VXZUZvdW5kLndpZGdldCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudFdpbmRvd0xheW91dCA9IG1hbmlmZXN0R2xvYmFsLndpbmRvd3NbcmFua10uZ3JpZD8ubGF5b3V0ID8/IERhc2hib2FyZEdyaWRMYXlvdXQuRlVMTDtcblxuICAgICAgICAgIC8vIHNpIG5vbiB0cm91dsOpIDogbm91dmVsbGUgcGFnZSwgcHJlbWnDqHJlIHBvc2l0aW9uIHN1Z2fDqXLDqWVcbiAgICAgICAgICBjb25zdCBmaXJzdFByb3Bvc2VkTGF5b3V0ID0gV2lkZ2V0UGxhY2VtZW50VXRpbHMucGxhY2VtZW50T3B0aW9ucyhuZXdXaWRnZXRNYW5pZmVzdCwgY3VycmVudFdpbmRvd0xheW91dClbMF07XG5cbiAgICAgICAgICBtYW5pZmVzdEdsb2JhbC53aW5kb3dzLnB1c2goeyB3aWRnZXRzOiBbZmlyc3RQcm9wb3NlZExheW91dF0sIGdyaWQ6IHsgbGF5b3V0OiBjdXJyZW50V2luZG93TGF5b3V0IH0gfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWN0aW9uLmFsZXJ0ID09PSB1bmRlZmluZWQgfHwgYWN0aW9uLmFsZXJ0ID09PSB0cnVlKSB7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZUFjdGlvbiA9IERhc2hib2FyZEFjdGlvbnMubXVsdGlTbmFja0Jhcih7XG4gICAgICAgICAgICBtZXNzYWdlOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0Bwcnkud2lkZ2V0LmFkZGVkSW5WaWV3Jywge1xuICAgICAgICAgICAgICAgIGluZGV4OiAhIWZvdW5kXG4gICAgICAgICAgICAgICAgICA/IChmb3VuZCBhcyB7IGFjdHVhbFJhbms6IG51bWJlcjsgd2lkZ2V0OiBXaWRnZXRNYW5pZmVzdCB9KS5hY3R1YWxSYW5rICsgMVxuICAgICAgICAgICAgICAgICAgOiBtYW5pZmVzdEdsb2JhbC53aW5kb3dzLmxlbmd0aFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobWVzc2FnZUFjdGlvbik7XG5cbiAgICAgICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgICAgICB0aGlzLmJ1c1NlcnZpY2UuYnVmZmVyVW50aWxKb2luZWQobWVzc2FnZUFjdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3QoeyBtYW5pZmVzdDogbWFuaWZlc3RHbG9iYWwsIHNlbGVjdGVkSWRzIH0pO1xuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgbXVsdGlTbmFja0JhciQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMubXVsdGlTbmFja0JhciksXG4gICAgICAgIHRhcCgoYWN0aW9uKSA9PiB0aGlzLnNuYWNrQmFyLm9wZW4oYWN0aW9uLm1lc3NhZ2UpKVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgcmVsYXVuY2hBZnRlck9yZGVyJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnF1aWNrT3JkZXIpLFxuICAgICAgbWFwKChhY3Rpb24pID0+XG4gICAgICAgIFNlYXJjaEFjdGlvbnMuZ2V0RGF0YXNvdXJjZUl0ZW1zKHtcbiAgICAgICAgICBpZDogYWN0aW9uLmRhdGFzb3VyY2VJZCxcbiAgICAgICAgICBleGNsdWRlR2VvOiB0cnVlLFxuICAgICAgICAgIGZyb206ICdEYXNoYm9hcmRFZmZlY3RzLnJlbGF1bmNoQWZ0ZXJPcmRlciQnXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHByb3BhZ2F0ZUdyaWRMYXlvdXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuc2V0R3JpZExheW91dCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuayksIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy53aW5kb3dNYW5pZmVzdCkpLFxuICAgICAgbWFwKChbYWN0aW9uLCByYW5rLCB3aW5kb3dNYW5pZmVzdF0pID0+IERhc2hib2FyZEFjdGlvbnMucHJvcGFnYXRlR3JpZExheW91dCh7IG1hbmlmZXN0OiB3aW5kb3dNYW5pZmVzdCwgcmFuayB9KSlcbiAgICApXG4gICk7XG5cbiAgdG9nZ2xlRWRpdGlvbk1vZGVJZk5vdE1hbnVhbCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5zZXRHcmlkTGF5b3V0KSxcbiAgICAgIGZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24ubGF5b3V0ICE9PSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTCksXG4gICAgICBtYXAoKCkgPT4gRGFzaGJvYXJkQWN0aW9ucy50b2dnbGVFZGl0aW9uTW9kZSh7IGZvcmNlOiBmYWxzZSB9KSlcbiAgICApXG4gICk7XG5cbiAgZ2V0Q2FwYWJpbGl0eSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5nZXRDYXBhYmlsaXR5KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5jYXBhYmlsaXRpZXMpKSxcbiAgICAgIGZpbHRlcihcbiAgICAgICAgKFthY3Rpb24sIGNhcGFiaWxpdGllc10pID0+XG4gICAgICAgICAgKCEhY2FwYWJpbGl0aWVzICYmICEhYWN0aW9uLnVybCAmJiAoIWNhcGFiaWxpdGllc1thY3Rpb24udXJsXSB8fCAhY2FwYWJpbGl0aWVzW2FjdGlvbi51cmxdIS5kb2MpKSB8fFxuICAgICAgICAgICEhYWN0aW9uLmZvcmNlXG4gICAgICApLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIF9dKSA9PlxuICAgICAgICB0aGlzLndtc1NlcnZpY2UuZ2V0Q2FwYWJpbGl0aWVzKGFjdGlvbi51cmwpLnBpcGUoXG4gICAgICAgICAgbWFwKChjYXBhYmlsaXR5KSA9PiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZUNhcGFiaWxpdHkoeyB1cmw6IGFjdGlvbi51cmwsIGNhcGFiaWxpdHkgfSkpLFxuICAgICAgICAgIHN0YXJ0V2l0aChEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZUNhcGFiaWxpdHkoeyB1cmw6IGFjdGlvbi51cmwsIGNhcGFiaWxpdHk6IG51bGwgfSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZ2V0V21zRmVhdHVyZXMgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5nZXRXbXNGZWF0dXJlcyksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PiBjb21iaW5lTGF0ZXN0KFtvZihhY3Rpb24pLCB0aGlzLndtc1NlcnZpY2UuZ2V0V21zRmVhdHVyZXMoYWN0aW9uLnVybCldKSksXG4gICAgICBtYXAoKFthY3Rpb24sIGpzb25dKSA9PiB7XG4gICAgICAgIHJldHVybiBEYXNoYm9hcmRBY3Rpb25zLmFkZFdtc0ZlYXR1cmVzKHtcbiAgICAgICAgICBmZWF0dXJlczoganNvbi5mZWF0dXJlcy5tYXAoKGZlYXR1cmU6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSB7XG4gICAgICAgICAgICAgIGlkOiBmZWF0dXJlLmlkLFxuICAgICAgICAgICAgICBvQ2xhc3M6IGFjdGlvbi5vQ2xhc3MsXG4gICAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBhY3Rpb24uY29vcmRpbmF0ZXMsXG4gICAgICAgICAgICAgIHByb3BlcnRpZXM6IE9iamVjdC5rZXlzKGZlYXR1cmUucHJvcGVydGllcylcbiAgICAgICAgICAgICAgICAubWFwKChwcm9wZXJ0eSkgPT4gKHsga2V5OiBwcm9wZXJ0eSwgdmFsdWU6IGZlYXR1cmUucHJvcGVydGllc1twcm9wZXJ0eV0gfSkpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigocHJvcCkgPT4gISFwcm9wLnZhbHVlKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgfSlcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBnZXRXZnNGZWF0dXJlc0ZvclBvaW50U3RhY2sgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5nZXRXZnNGZWF0dXJlc0ZvclBvaW50U3RhY2tUb29sdGlwcyksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PiBjb21iaW5lTGF0ZXN0KFtvZihhY3Rpb24pLCB0aGlzLndtc1NlcnZpY2UuZ2V0V21zRmVhdHVyZXMoYWN0aW9uLnVybCldKSksXG4gICAgICBtZXJnZU1hcCgoW2FjdGlvbiwgd21zSnNvbl0pID0+IHtcbiAgICAgICAgLy8gY2hlY2sgaWYgZGF0YSBpcyBhY3R1YWxseSBhIHN0YWNrIG9mIHBvaW50c1xuICAgICAgICBpZiAoXG4gICAgICAgICAgd21zSnNvbi5mZWF0dXJlc1swXSAmJlxuICAgICAgICAgIHdtc0pzb24uZmVhdHVyZXNbMF0ucHJvcGVydGllcy5jb3VudCAmJlxuICAgICAgICAgIHdtc0pzb24uZmVhdHVyZXNbMF0ucHJvcGVydGllcy5jb3VudHVuaXF1ZSAmJlxuICAgICAgICAgIHdtc0pzb24uZmVhdHVyZXNbMF0ucHJvcGVydGllcy5jb3VudCA+IDEgJiZcbiAgICAgICAgICB3bXNKc29uLmZlYXR1cmVzWzBdLnByb3BlcnRpZXMuY291bnR1bmlxdWUgPT09IDFcbiAgICAgICAgKSB7XG4gICAgICAgICAgbGV0IGVudkJCT1hDb29yZHM6IG51bWJlcltdID0gWy4uLndtc0pzb24uZmVhdHVyZXNbMF0ucHJvcGVydGllcy5lbnZCQk9YLm1hdGNoQWxsKC9cXGQrLlxcZCsvZyldLm1hcChcbiAgICAgICAgICAgIChtKSA9PiBtWzBdXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy53bXNTZXJ2aWNlXG4gICAgICAgICAgICAuZ2V0V2ZzRmVhdHVyZXMoYWN0aW9uLnVybCwgZW52QkJPWENvb3JkcylcbiAgICAgICAgICAgIC5waXBlKG1hcCgod2ZzSnNvbikgPT4gKHsgYWN0aW9uLCBqc29uOiB3ZnNKc29uIH0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgZGF0YSBpcyBub3QgYSBzdGFjayBqdXN0IGFkZCBmZWF0dXJlcyB3aXRob3V0IGNhbGxpbmcgd2ZzIHNlcnZpY2VcbiAgICAgICAgcmV0dXJuIG9mKHsgYWN0aW9uLCBqc29uOiB3bXNKc29uIH0pO1xuICAgICAgfSksXG4gICAgICBtYXAoKHsgYWN0aW9uLCBqc29uIH0pID0+XG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuYWRkV21zRmVhdHVyZXMoe1xuICAgICAgICAgIGZlYXR1cmVzOiBqc29uLmZlYXR1cmVzLm1hcCgoZmVhdHVyZTogYW55KSA9PiAoe1xuICAgICAgICAgICAgaWQ6IGZlYXR1cmUuaWQsXG4gICAgICAgICAgICBvQ2xhc3M6IGFjdGlvbi5vQ2xhc3MsXG4gICAgICAgICAgICBjb29yZGluYXRlczogYWN0aW9uLmNvb3JkaW5hdGVzLFxuICAgICAgICAgICAgcHJvcGVydGllczogT2JqZWN0LmtleXMoZmVhdHVyZS5wcm9wZXJ0aWVzKVxuICAgICAgICAgICAgICAubWFwKChwcm9wZXJ0eSkgPT4gKHsga2V5OiBwcm9wZXJ0eSwgdmFsdWU6IGZlYXR1cmUucHJvcGVydGllc1twcm9wZXJ0eV0gfSkpXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHByb3ApID0+ICEhcHJvcC52YWx1ZSlcbiAgICAgICAgICB9KSlcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciB3aGlsZSBmZXRjaGluZyBXRlMgZmVhdHVyZXMnLCBlcnJvcik7XG4gICAgICAgIHJldHVybiBvZihEYXNoYm9hcmRBY3Rpb25zLmFkZFdtc0ZlYXR1cmVzKHsgZmVhdHVyZXM6IFtdIH0pKTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIGFkZE1hbmlmZXN0TWV0YWRhdGEgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5hZGRNYW5pZmVzdE1ldGFkYXRhKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlLmFkZE1ldGFkYXRhKGFjdGlvbi5wcmVzZW50YXRpb25JZCwgYWN0aW9uLm1ldGFkYXRhSWQsIGFjdGlvbi52YWx1ZSkucGlwZShcbiAgICAgICAgICBtYXAoKCkgPT4gRGFzaGJvYXJkQWN0aW9ucy5mZXRjaE1hbmlmZXN0c0xpc3QoKSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oe1xuICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5zYXZlRXJyb3JDb2RlLlNBVkVfTUVUQURBVEEnLCB7XG4gICAgICAgICAgICAgICAgICBjb2RlOiBlcnJvci5zdGF0dXNcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGRlbGV0ZU1hbmlmZXN0TWV0YWRhdGEkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZGVsZXRlTWFuaWZlc3RNZXRhZGF0YSksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZVxuICAgICAgICAgIC5kZWxldGVNZXRhZGF0YShhY3Rpb24ucHJlc2VudGF0aW9uSWQsIGFjdGlvbi5tZXRhZGF0YUlkKVxuICAgICAgICAgIC5waXBlKG1hcCgoKSA9PiBEYXNoYm9hcmRBY3Rpb25zLmZldGNoTWFuaWZlc3RzTGlzdCgpKSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbG9hZFByZXNlbnRhdGlvbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5sb2FkUHJlc2VudGF0aW9uKSxcbiAgICAgIHRhcCgoKSA9PlxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3Qoe1xuICAgICAgICAgICAgbWFuaWZlc3Q6IHsgd2luZG93czogW10gfSxcbiAgICAgICAgICAgIHNlbGVjdGVkSWRzOiBbXVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICksXG4gICAgICB0YXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdFByZXNlbnRhdGlvbih7XG4gICAgICAgICAgICBwcmVzZW50YXRpb246IGFjdGlvbi5wcmVzZW50YXRpb24sXG4gICAgICAgICAgICB2aWV3TW9kZTogYWN0aW9uLnZpZXdNb2RlXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIHRhcCgoYWN0aW9uKSA9PiB0aGlzLnRpdGxlU2VydmljZS5jaGFuZ2VUaXRsZShhY3Rpb24ucHJlc2VudGF0aW9uLm5hbWUpKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlLmdldChhY3Rpb24ucHJlc2VudGF0aW9uLmlkKS5waXBlKFxuICAgICAgICAgIG1lcmdlTWFwKChtYW5pZmVzdCkgPT4gW1xuICAgICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCh7XG4gICAgICAgICAgICAgIG1hbmlmZXN0LFxuICAgICAgICAgICAgICBzZWxlY3RlZElkczogW10sXG4gICAgICAgICAgICAgIG1hbmlmZXN0SWQ6IGFjdGlvbi5wcmVzZW50YXRpb24uaWRcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZXRJbml0aWFsUHJlc2VudGF0aW9uKHtcbiAgICAgICAgICAgICAgaW5pdGlhbDogYWN0aW9uLnZpZXdNb2RlID09PSBWaWV3TW9kZS5DT05TVUxUID8gdW5kZWZpbmVkIDogbWFuaWZlc3RcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVEaXNwbGF5T3B0aW9ucyh7XG4gICAgICAgICAgICAgIG1vZGU6IGFjdGlvbi52aWV3TW9kZVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmZvbGxvd01hbmlmZXN0Um91dGUoKVxuICAgICAgICAgIF0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkYXNoYm9hcmRJbml0U2VydmljZTogRGFzaGJvYXJkSW5pdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxhbnk+LFxuICAgIHByaXZhdGUgbWFuaWZlc3RTZXJ2aWNlOiBNYW5pZmVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpdGVtU2VydmljZTogSXRlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFByeVRpdGxlU2VydmljZSxcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFByeUkxOG5TZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IFByeVNuYWNrYmFyU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVmcmVzaFNlcnZpY2U6IFJlZnJlc2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgdG9vbGJveE1hbmlmZXN0U2VydmljZTogVG9vbGJveE1hbmlmZXN0U2VydmljZSxcbiAgICBwcml2YXRlIGJ1c1NlcnZpY2U6IEJ1c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJ5RGlhbG9nOiBQcnlEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgd21zU2VydmljZTogV21zU2VydmljZSxcbiAgICBwcml2YXRlIHdpZGdldEZhY3RvcnlTZXJ2aWNlOiBXaWRnZXRGYWN0b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGkxOG5TZXJ2aWNlOiBQcnlJMThuU2VydmljZVxuICApIHtcbiAgICBkYXNoYm9hcmRJbml0U2VydmljZS5pbml0KCk7XG4gICAgcmVmcmVzaFNlcnZpY2Uuc3RhcnQoKTtcbiAgfVxufVxuIl19
464
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmVmZmVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9saWIvZGFzaGJvYXJkL3N0b3JlL2Rhc2hib2FyZC5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFXLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RHLE9BQU8sRUFDTCx5QkFBeUIsRUFFMUIsTUFBTSx3REFBd0QsQ0FBQztBQUloRSxPQUFPLEVBQUUsbUJBQW1CLEVBQWtDLE1BQU0scUNBQXFDLENBQUM7QUFJMUcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBSTFHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFNM0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7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QUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQyxFQUNsRCxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNiLE1BQU0sSUFBSSxHQUF5QjtnQkFDakMsS0FBSyxFQUFFLDZDQUE2QztnQkFDcEQsT0FBTyxFQUFFO29CQUNQO3dCQUNFLEVBQUUsRUFBRSxDQUFDO3dCQUNMLEtBQUssRUFBRSxnQ0FBZ0M7d0JBQ3ZDLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO3FCQUNwRTtvQkFDRDt3QkFDRSxFQUFFLEVBQUUsQ0FBQzt3QkFDTCxLQUFLLEVBQUUsNkJBQTZCO3dCQUNwQyxLQUFLLEVBQUUsV0FBVztxQkFDbkI7aUJBQ0Y7YUFDRixDQUFDO1lBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUNILEVBQ0gsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQ3BCLENBQUM7UUFxQkEsb0JBQW9CLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUIsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLENBQUM7OEdBNzFCVSxnQkFBZ0I7a0hBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFENUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtZXJnZSwgb2YsIHN0YXJ0V2l0aCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCwgbWVyZ2VNYXAsIHRhcCwgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBQcnlEaWFsb2dDb25maXJtQ29tcG9uZW50LFxuICBQcnlEaWFsb2dDb25maXJtRGF0YVxufSBmcm9tICcuLi8uLi9jb3JlL2NvbXBvbmVudHMvb3ZlcmxheS9kaWFsb2ctY29uZmlybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJ5RGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvY29tcG9uZW50cy9vdmVybGF5L2RpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IFByeVNuYWNrYmFyU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvY29tcG9uZW50cy9zbmFja2Jhci9zbmFja2Jhci5zZXJ2aWNlJztcbmltcG9ydCB7IFByeUkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9pMThuL2kxOG4uc2VydmljZSc7XG5pbXBvcnQgeyBEYXNoYm9hcmRHcmlkTGF5b3V0LCBHbG9iYWxNYW5pZmVzdCwgV2lkZ2V0TWFuaWZlc3QgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL21hbmlmZXN0LmludGVyZmFjZSc7XG5pbXBvcnQgeyBDaGFydFdpZGdldE9wdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL3dpZGdldC1jaGFydC1tYW5pZmVzdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTWFwV2lkZ2V0T3B0aW9ucyB9IGZyb20gJy4uLy4uL2NvcmUvbW9kZWwvd2lkZ2V0LW1hcC1tYW5pZmVzdC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSXRlbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3N0b3JlL2l0ZW0vaXRlbS5zZXJ2aWNlJztcbmltcG9ydCB7IFNlYXJjaEFjdGlvbnMgfSBmcm9tICcuLi8uLi9jb3JlL3N0b3JlL3NlYXJjaC9zZWFyY2guYWN0aW9ucyc7XG5pbXBvcnQgeyBERUZBVUxUX05BTUVEX1FVRVJZX0lELCBFWFBMT1JFX05BTUVEX1FVRVJZX0lEIH0gZnJvbSAnLi4vLi4vY29yZS9zdG9yZS9zZWFyY2gvc2VhcmNoLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zdG9yZS9zZWFyY2gvc2VhcmNoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9vbGJveE1hbmlmZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvdG9vbGJveC90b29sYm94LW1hbmlmZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQnVzU2VydmljZSB9IGZyb20gJy4uL2FjdGlvbi1idXMvc2VydmljZS9idXMuc2VydmljZSc7XG5pbXBvcnQgeyBXaWRnZXRQbGFjZW1lbnRVdGlscyB9IGZyb20gJy4uL2NvbXBvbmVudHMvd2lkZ2V0cy93aWRnZXQtcGxhY2VtZW50L3dpZGdldC1wbGFjZW1lbnQudXRpbHMnO1xuaW1wb3J0IHsgUmVzdWx0c2V0VXRpbHMgfSBmcm9tICcuLi9yZXN1bHRzZXQtdXRpbHMnO1xuaW1wb3J0IHsgRGFzaGJvYXJkSW5pdFNlcnZpY2UgfSBmcm9tICcuL2Rhc2hib2FyZC1pbml0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRGFzaGJvYXJkQWN0aW9ucywgVmlld01vZGUgfSBmcm9tICcuL2Rhc2hib2FyZC5hY3Rpb25zJztcbmltcG9ydCB7IERhc2hib2FyZFNlbGVjdG9ycyB9IGZyb20gJy4vZGFzaGJvYXJkLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBNYW5pZmVzdFNlcnZpY2UgfSBmcm9tICcuL21hbmlmZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVmcmVzaFNlcnZpY2UgfSBmcm9tICcuL3JlZnJlc2guc2VydmljZSc7XG5pbXBvcnQgeyBQcnlUaXRsZVNlcnZpY2UgfSBmcm9tICcuL3RpdGxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgV21zU2VydmljZSB9IGZyb20gJy4vd21zLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2lkZ2V0RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9jb21wb25lbnRzL3dpZGdldHMvd2lkZ2V0LWluc3RhbmNpYXRvci93aWRnZXQtZmFjdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGFTb3VyY2VTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi9jb3JlL3N0b3JlL2RhdGEtc291cmNlL2RhdGEtc291cmNlLnNlbGVjdG9ycyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRFZmZlY3RzIHtcbiAgam9pbiQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5qb2luKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuayksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy50ZW5hbnRzKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdsb2JhbE1hbmlmZXN0KSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJlc3VsdFNldHMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnByZXNlbnRhdGlvbiksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5kaXNwbGF5T3B0aW9ucylcbiAgICAgICksXG4gICAgICBmaWx0ZXIoKFthY3Rpb24sIHJhbmssIHRlbmFudHMsIG1hbmlmZXN0LCByZXN1bHRTZXRzLCBkaXNwbGF5XSkgPT4gcmFuayA9PT0gMCksXG4gICAgICBtYXAoKFthY3Rpb24sIHJhbmssIHRlbmFudHMsIG1hbmlmZXN0LCByZXN1bHRTZXRzLCBzZWxlY3RlZElkcywgcHJlc2VudGF0aW9uLCBkaXNwbGF5XSkgPT5cbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyVGVuYW50Sm9pbih7XG4gICAgICAgICAgdGVuYW50cywgLy8gd2UgYWxyZWFkeSBoYXZlIGFkZGVkIHRlbmFudCBpbiB0aGUgcmVkdWNlIG9mIHRoZSBcImpvaW5cIiBhY3Rpb25cbiAgICAgICAgICBtYW5pZmVzdDoge1xuICAgICAgICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICAgICAgICB3aW5kb3dzOiBtYW5pZmVzdC53aW5kb3dzXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXN1bHRTZXRzLFxuICAgICAgICAgIHNlbGVjdGVkSWRzLFxuICAgICAgICAgIGpvaW5pbmc6IHRydWUsXG4gICAgICAgICAgcHJlc2VudGF0aW9uLFxuICAgICAgICAgIGRpc3BsYXlcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgbGVhdmUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMubGVhdmUpLFxuICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnRlbmFudHMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKVxuICAgICAgKSxcbiAgICAgIGZpbHRlcigoW2FjdGlvbiwgcmFuaywgdGVuYW50cywgbWFuaWZlc3RdKSA9PiByYW5rID09PSAwIHx8ICh0ZW5hbnRzWzBdID09PSBhY3Rpb24uc2VuZGVyICYmIHJhbmsgPT09IDEpKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwgcmFuaywgdGVuYW50cywgbWFuaWZlc3QsIHNlbGVjdGVkSWRzXSkgPT4ge1xuICAgICAgICBjb25zdCBsZWF2ZXJSYW5rID0gdGVuYW50cy5pbmRleE9mKGFjdGlvbi5zZW5kZXIpO1xuICAgICAgICBjb25zdCBuZXdUZW5hbnRzTGlzdCA9IFsuLi50ZW5hbnRzXTtcbiAgICAgICAgY29uc3QgbmV3V2luZG93TGlzdCA9IFsuLi5tYW5pZmVzdC53aW5kb3dzXTtcbiAgICAgICAgaWYgKGxlYXZlclJhbmsgPiAtMSkge1xuICAgICAgICAgIG5ld1RlbmFudHNMaXN0LnNwbGljZShsZWF2ZXJSYW5rLCAxKTtcbiAgICAgICAgICBuZXdXaW5kb3dMaXN0LnNwbGljZShsZWF2ZXJSYW5rLCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJUZW5hbnRMZWF2ZSh7XG4gICAgICAgICAgdGVuYW50czogbmV3VGVuYW50c0xpc3QsXG4gICAgICAgICAgbWFuaWZlc3Q6IHtcbiAgICAgICAgICAgIC4uLm1hbmlmZXN0LFxuICAgICAgICAgICAgd2luZG93czogbmV3V2luZG93TGlzdFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZWN0ZWRJZHNcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBmZXRjaFN0YXRpY01hbmlmZXN0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmZldGNoU3RhdGljTWFuaWZlc3QpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLCB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKSksXG4gICAgICBmaWx0ZXIoKFthY3Rpb24sIHJhbmtdKSA9PiByYW5rID09PSAwKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCByYW5rXSkgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2VcbiAgICAgICAgICAuZ2V0KGFjdGlvbi5pZClcbiAgICAgICAgICAucGlwZShtYXAoKHN0YXRpY01hbmlmZXN0KSA9PiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZVN0YXRpY01hbmlmZXN0KHsgc3RhdGljTWFuaWZlc3QgfSkpKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsb2FkQW5kQWN0aXZhdGVNYW5pZmVzdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5sb2FkQW5kQWN0aXZhdGVNYW5pZmVzdCwgRGFzaGJvYXJkQWN0aW9ucy5sb2FkTWFuaWZlc3QpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspLCB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKSksXG4gICAgICBmaWx0ZXIoKFthY3Rpb24sIHJhbmtdKSA9PiByYW5rID09PSAwKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCByYW5rLCBzZWxlY3RlZElkc10pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlLmdldChhY3Rpb24uaWQpLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKG1hbmlmZXN0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYWN0aW9uLnR5cGUgPT09IERhc2hib2FyZEFjdGlvbnMubG9hZEFuZEFjdGl2YXRlTWFuaWZlc3QudHlwZVxuICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJGZXRjaCh7IG1hbmlmZXN0LCBtYW5pZmVzdElkOiBhY3Rpb24uaWQsIHNlbGVjdGVkSWRzIH0pLFxuICAgICAgICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMuZm9sbG93TWFuaWZlc3RSb3V0ZSgpXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgOiBbRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdFdpdGhvdXRBY3RpdmF0aW9uKHsgbWFuaWZlc3QsIG1hbmlmZXN0SWQ6IGFjdGlvbi5pZCwgc2VsZWN0ZWRJZHMgfSldO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY2xlYXJNYW5pZmVzdCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5jbGVhck1hbmlmZXN0KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKVxuICAgICAgKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwgbWFuaWZlc3QsIHNlbGVjdGVkSWRzXSkgPT5cbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyRmV0Y2goeyBtYW5pZmVzdCwgbWFuaWZlc3RJZDogJycsIHNlbGVjdGVkSWRzIH0pXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGRvd25sb2FkTWFuaWZlc3QkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmRvd25sb2FkTWFuaWZlc3QpLFxuICAgICAgICB0YXAoKGFjdGlvbikgPT5cbiAgICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZS5nZXQoYWN0aW9uLmlkKS5zdWJzY3JpYmUoKG1hbmlmZXN0OiBHbG9iYWxNYW5pZmVzdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGF0YVN0ciA9ICdkYXRhOnRleHQvanNvbjtjaGFyc2V0PXV0Zi04LCcgKyBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QpKTtcbiAgICAgICAgICAgIGNvbnN0IGRsQW5jaG9yRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgICAgICAgICAgIGRsQW5jaG9yRWxlbS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBkYXRhU3RyKTtcbiAgICAgICAgICAgIGRsQW5jaG9yRWxlbS5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgYCR7YWN0aW9uLm5hbWV9Lmpzb25gKTtcbiAgICAgICAgICAgIGRsQW5jaG9yRWxlbS5jbGljaygpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIGZvbGxvd01hbmlmZXN0Um91dGUkID0gY3JlYXRlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmZvbGxvd01hbmlmZXN0Um91dGUpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMud2luZG93TWFuaWZlc3QpKSxcbiAgICAgICAgdGFwKChbYWN0aW9uLCBtYW5pZmVzdF0pID0+IHtcbiAgICAgICAgICBpZiAobWFuaWZlc3Qucm91dGUpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwobWFuaWZlc3Qucm91dGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIGVuZExvYWRpbmdBZnRlckZvbGxvd2luZ01hbmlmZXN0Um91dGUkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZm9sbG93TWFuaWZlc3RSb3V0ZSksXG4gICAgICBtYXAoKGFjdGlvbikgPT4gRGFzaGJvYXJkQWN0aW9ucy5lbmRMb2FkaW5nKCkpXG4gICAgKVxuICApO1xuXG4gIHJlcXVlc3RNYW5pZmVzdFJvdXRlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnJlcXVlc3RBbGxSb3V0ZXMpLFxuICAgICAgbWFwKCgpID0+IERhc2hib2FyZEFjdGlvbnMudXBkYXRlUm91dGVNYW5pZmVzdCh7IHJvdXRlOiB0aGlzLnJvdXRlci51cmwgfSkpXG4gICAgKVxuICApO1xuXG4gIGFzc2VydFJlc3VsdFNldHMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmFzc2VydFJlc3VsdFNldHMsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMuZGlzcGF0Y2hGaWx0ZXJzLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmNsZWFyQWxsRmlsdGVyVmFsdWVzXG4gICAgICApLFxuICAgICAgd2l0aExhdGVzdEZyb20oXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yZXN1bHRTZXRzKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJlc3VsdFNldHNQYXJhbXMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucXVpY2tPcmRlcilcbiAgICAgICksXG4gICAgICBtZXJnZU1hcCgoW2FjdGlvbiwgbWFuaWZlc3QsIHJlc3VsdFNldHMsIHJlc3VsdFNldHNQYXJhbXMsIHF1aWNrT3JkZXJdKSA9PiB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKCFhY3Rpb24uaWQpIHtcbiAgICAgICAgICAvLyBGaXJzdCBzZW5kIGFnZ3JlZ2F0ZSB1cGRhdGVzXG4gICAgICAgICAgY29uc3QgdG9BZ2dyZWdhdGVBY3Rpb25zID0gKFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAuLi5uZXcgU2V0KFxuICAgICAgICAgICAgICAgIG1hbmlmZXN0LndpbmRvd3NcbiAgICAgICAgICAgICAgICAgIC5tYXAoKHdpbk1hbmlmZXN0KSA9PiAod2luTWFuaWZlc3QgPz8ge30pLndpZGdldHMgPz8gW10pXG4gICAgICAgICAgICAgICAgICAucmVkdWNlKChwLCBjKSA9PiBbLi4ucCwgLi4uY10sIFtdKVxuICAgICAgICAgICAgICAgICAgLm1hcCgod2lkTWFuaWZlc3QpID0+IHRoaXMud2lkZ2V0RmFjdG9yeVNlcnZpY2UuYWdncmVnYXRlc1RvQXV0b0xvYWQod2lkTWFuaWZlc3QpKVxuICAgICAgICAgICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gWy4uLnAsIC4uLmNdLCBbXSBhcyBzdHJpbmdbXSlcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSBhcyBzdHJpbmdbXVxuICAgICAgICAgICkubWFwKChkcykgPT4gRGFzaGJvYXJkQWN0aW9ucy50cmlnZ2VyQWdncmVnYXRlKHsgaWQ6IGRzIH0pKTtcblxuICAgICAgICAgIGNvbnN0IHRvSXRlbXNBY3Rpb25zID0gT2JqZWN0LnZhbHVlcyhcbiAgICAgICAgICAgIG1hbmlmZXN0LndpbmRvd3NcbiAgICAgICAgICAgICAgLm1hcCgod2luTWFuaWZlc3QpID0+ICh3aW5NYW5pZmVzdCA/PyB7fSkud2lkZ2V0cyA/PyBbXSlcbiAgICAgICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gWy4uLnAsIC4uLmNdLCBbXSlcbiAgICAgICAgICAgICAgLm1hcCgod2lkTWFuaWZlc3QpID0+IHRoaXMud2lkZ2V0RmFjdG9yeVNlcnZpY2UuZGF0YXNvdXJjZXNUb0F1dG9Mb2FkKHdpZE1hbmlmZXN0KSlcbiAgICAgICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgICAgICAucmVkdWNlKFxuICAgICAgICAgICAgICAgIChwLCBjKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgLi4ucCxcbiAgICAgICAgICAgICAgICAgIFtjLmRhdGFzZXRJZF06IHtcbiAgICAgICAgICAgICAgICAgICAgLi4ucFtjLmRhdGFzZXRJZF0sXG4gICAgICAgICAgICAgICAgICAgIC4uLmMsXG4gICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVHZW86IHBbYy5kYXRhc2V0SWRdPy5leGNsdWRlR2VvID09PSBmYWxzZSA/IHBbYy5kYXRhc2V0SWRdLmV4Y2x1ZGVHZW8gOiBjLmV4Y2x1ZGVHZW9cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB7fSBhcyB7IFtrZXk6IHN0cmluZ106IHsgZGF0YXNldElkOiBzdHJpbmc7IGV4Y2x1ZGVHZW86IGJvb2xlYW4gfSB9XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAocmVzdWx0U2V0KSA9PlxuICAgICAgICAgICAgICAgICEhcmVzdWx0U2V0LmRhdGFzZXRJZCAmJlxuICAgICAgICAgICAgICAgIHJlc3VsdFNldC5kYXRhc2V0SWQgIT09ICcnICYmXG4gICAgICAgICAgICAgICAgKCFyZXN1bHRTZXRzW3Jlc3VsdFNldC5kYXRhc2V0SWRdIHx8XG4gICAgICAgICAgICAgICAgICByZXN1bHRTZXRzUGFyYW1zW3Jlc3VsdFNldC5kYXRhc2V0SWRdICE9PVxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLmdldEl0ZW1zU2VyaWFsaXplZFBhcmFtcyhyZXN1bHRTZXQuZGF0YXNldElkLCBxdWlja09yZGVyKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5tYXAoKHJlc3VsdFNldCkgPT5cbiAgICAgICAgICAgICAgU2VhcmNoQWN0aW9ucy5nZXREYXRhc291cmNlSXRlbXMoe1xuICAgICAgICAgICAgICAgIGlkOiByZXN1bHRTZXQuZGF0YXNldElkLFxuICAgICAgICAgICAgICAgIGV4Y2x1ZGVHZW86IHJlc3VsdFNldC5leGNsdWRlR2VvLFxuICAgICAgICAgICAgICAgIGZyb206ICdEYXNoYm9hcmRFZmZlY3RzLmFzc2VydFJlc3VsdFNldHMkLTEnXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuIFsuLi50b0l0ZW1zQWN0aW9ucywgLi4udG9BZ2dyZWdhdGVBY3Rpb25zXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgaWYgKCFyZXN1bHRTZXRzW2FjdGlvbi5pZF0pIHtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgIFNlYXJjaEFjdGlvbnMuZ2V0RGF0YXNvdXJjZUl0ZW1zKHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgaWQ6IGFjdGlvbi5pZCBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGV4Y2x1ZGVHZW86IGFjdGlvbi5leGNsdWRlR2VvICE9IHVuZGVmaW5lZCA/IGFjdGlvbi5leGNsdWRlR2VvIDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBmcm9tOiAnRGFzaGJvYXJkRWZmZWN0cy5hc3NlcnRSZXN1bHRTZXRzJC0yJ1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBzZW5kQWdncmVnYXRlc0V2ZW50JCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy50cmlnZ2VyQWdncmVnYXRlKSxcbiAgICAgICAgZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5pZCAhPT0gREVGQVVMVF9OQU1FRF9RVUVSWV9JRCAmJiBhY3Rpb24uaWQgIT09IEVYUExPUkVfTkFNRURfUVVFUllfSUQpLFxuICAgICAgICB0YXAoKGFjdGlvbikgPT4gd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdkYXRhc291cmNlUmVmcmVzaCcsIHsgZGV0YWlsOiBhY3Rpb24uaWQgfSkpKVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgc3RhcnRNaXNzaW5nVmlld0FmdGVyVmlld1VwZGF0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3QsXG4gICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3RBZnRlckZldGNoLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJUZW5hbnRMZWF2ZSxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyVGVuYW50Sm9pbixcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5leHBsb3JlLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmRldGFpbCxcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5yZXN0b3JlSW5pdGlhbE1hbmlmZXN0LFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmNyZWF0ZVRhYlxuICAgICAgKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSksXG4gICAgICBmaWx0ZXIoKFthY3Rpb24sIHJhbmtdKSA9PiByYW5rID09PSAwKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+IFtcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zdGFydGluZ01pc3NpbmdWaWV3cygpLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmFzc2VydFJlc3VsdFNldHMoe30pLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnNvbHZlQ29sbGlzaW9ucygpXG4gICAgICBdKVxuICAgIClcbiAgKTtcblxuICB1cGRhdGVUaXRsZSQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMudXBkYXRlTWFuaWZlc3QsXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdEFmdGVyVGVuYW50Sm9pbixcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJUZW5hbnRMZWF2ZSxcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0QWZ0ZXJGZXRjaCxcbiAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmRlY2xhcmVTZW5kZXJJZFxuICAgICAgICApLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuaykpLFxuICAgICAgICB0YXAoKFthY3Rpb24sIHJhbmtdKSA9PiB7XG4gICAgICAgICAgdGhpcy50aXRsZVNlcnZpY2UuY2hhbmdlVGl0bGUoKTtcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIG9wZW5PdGhlciQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuc3RhcnRpbmdNaXNzaW5nVmlld3MpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucmFuayksXG4gICAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnRlbmFudHMpLFxuICAgICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdClcbiAgICAgICAgKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgICBmaWx0ZXIoKFthY3Rpb24sIHJhbmssIHRlbmFudHMsIG1hbmlmZXN0XSkgPT4gcmFuayA9PT0gMCksXG4gICAgICAgIHRhcCgoW2FjdGlvbiwgcmFuaywgdGVuYW50cywgbWFuaWZlc3RdKSA9PiB7XG4gICAgICAgICAgbWFuaWZlc3Qud2luZG93cy5mb3JFYWNoKCh3aW5kb3dNYW5pZmVzdCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGVuYW50c1tpbmRleF0pIHtcbiAgICAgICAgICAgICAgLy8gSWYgbm8gd2luZG93IGlzIG9wZW5lZCBmb3IgdGhpcyBwYXJ0LCB0aGVuIG9wZW4gb25lXG4gICAgICAgICAgICAgIHdpbmRvdy5vcGVuKHdpbmRvd01hbmlmZXN0LnJvdXRlID8/IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSwgJ19ibGFuaycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgc2F2ZU1hbmlmZXN0JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnNhdmVNYW5pZmVzdCksXG4gICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhdGFTb3VyY2VTZWxlY3RvcnMuZGF0YXNldHMpKSxcbiAgICAgIG1lcmdlTWFwKChbW2FjdGlvbiwgY3VycmVudE1hbmlmZXN0XSwgZGF0YXNldHNdKSA9PlxuICAgICAgICB0aGlzLm1hbmlmZXN0U2VydmljZVxuICAgICAgICAgIC5zYXZlKFxuICAgICAgICAgICAgYWN0aW9uLm5hbWUsXG4gICAgICAgICAgICBhY3Rpb24ubWFuaWZlc3QgPz8gY3VycmVudE1hbmlmZXN0LFxuICAgICAgICAgICAgYWN0aW9uLmlkLFxuICAgICAgICAgICAgYWN0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgYWN0aW9uLmltYWdlLFxuICAgICAgICAgICAgYWN0aW9uLm1ldGFkYXRhLFxuICAgICAgICAgICAgYWN0aW9uLmdyb3Vwc1xuICAgICAgICAgIClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRhcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS50b29sYm94Lm1hbmlmZXN0LnNhdmVkJywgeyB2aWV3SWQ6IGFjdGlvbi5uYW1lIH0pLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJ1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHJlc3BvbnNlLm1pc3NpbmdHcm91cHNCeUVudGl0eSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGE6IFByeURpYWxvZ0NvbmZpcm1EYXRhID0ge1xuICAgICAgICAgICAgICAgICAgdGl0bGU6ICdAcHJ5LnNoYXJlLmNvbmZsaWN0LnRpdGxlJyxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaTE4blNlcnZpY2UuaW5zdGFudCgnQHByeS5zaGFyZS5jb25mbGljdC5tYWluJykgK1xuICAgICAgICAgICAgICAgICAgICAnXFxyXFxuJyArXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlc3BvbnNlLm1pc3NpbmdHcm91cHNCeUVudGl0eSlcbiAgICAgICAgICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgKGVudGl0eSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGFzZXRzLmZpbmQoKGRzKSA9PiBkcy5pZCA9PT0gZW50aXR5KT8ubmFtZSA/PyBlbnRpdHkpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJyA6ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5taXNzaW5nR3JvdXBzQnlFbnRpdHlbZW50aXR5XS5qb2luKCcsICcpXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCdcXHJcXG4nKSxcbiAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkOiAwLFxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQHByeS50b29sYm94LmNsb3NlJ1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLnByeURpYWxvZy5vcGVuKFByeURpYWxvZ0NvbmZpcm1Db21wb25lbnQsIHsgZGF0YSB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBtYXAoKCkgPT4gYWN0aW9uLm1hbmlmZXN0ID8/IGN1cnJlbnRNYW5pZmVzdCksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAgICAgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5zYXZlRXJyb3JDb2RlLicgKyAoZXJyb3IuZXJyb3I/LmNvZGUgPz8gJ1VOS05PV04nKSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogYWN0aW9uLm5hbWVcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdlcnJvcidcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIG1lcmdlTWFwKChtYW5pZmVzdCkgPT4gW1xuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmZldGNoTWFuaWZlc3RzTGlzdCgpLFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnNldEluaXRpYWxQcmVzZW50YXRpb24oeyBpbml0aWFsOiBtYW5pZmVzdCB9KVxuICAgICAgXSlcbiAgICApXG4gICk7XG5cbiAgbGlzdE1hbmlmZXN0cyQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5mZXRjaE1hbmlmZXN0c0xpc3QpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJhbmspKSxcbiAgICAgIGZpbHRlcigoW2FjdGlvbiwgcmFua10pID0+IHJhbmsgPT09IDAgfHwgcmFuayA9PT0gLTEpLFxuICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICBtZXJnZU1hcCgoW2FjdGlvbiwgcmFua10pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlLmxpc3QoKS5waXBlKG1hcCgobWFuaWZlc3RzKSA9PiBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0c0xpc3QoeyBtYW5pZmVzdHMgfSkpKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjb25maXJtTWFuaWZlc3REZWxldGlvbiQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuY29uZmlybU1hbmlmZXN0RGVsZXRpb24pLFxuICAgICAgICB0YXAoKGFjdGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGE6IFByeURpYWxvZ0NvbmZpcm1EYXRhID0ge1xuICAgICAgICAgICAgdGl0bGU6ICdAcHJ5LndpZGdldC5tb2RhbFRpdGxlJyxcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAwLFxuICAgICAgICAgICAgICAgIGxhYmVsOiAnQHByeS50b29sYm94Lm1hbmlmZXN0LnZhbGlkYXRlJyxcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbRGFzaGJvYXJkQWN0aW9ucy5kZWxldGVNYW5pZmVzdCh7IGlkOiBhY3Rpb24uaWQgfSldXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogMSxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5jbG9zZScsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdzZWNvbmRhcnknXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMucHJ5RGlhbG9nLm9wZW4oUHJ5RGlhbG9nQ29uZmlybUNvbXBvbmVudCwgeyBkYXRhIH0pO1xuICAgICAgICB9KVxuICAgICAgKSxcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XG4gICk7XG5cbiAgZGVsZXRlTWFuaWZlc3QkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZGVsZXRlTWFuaWZlc3QpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2UuZGVsZXRlKGFjdGlvbi5pZCkucGlwZShtYXAoKCkgPT4gRGFzaGJvYXJkQWN0aW9ucy5mZXRjaE1hbmlmZXN0c0xpc3QoKSkpXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGZldGNoT2JqZWN0c0RldGFpbHMkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZmV0Y2hPYmplY3RzRGV0YWlscyksXG4gICAgICBtZXJnZU1hcCgoYWN0aW9uKSA9PiBtZXJnZSguLi5hY3Rpb24uaWRzLm1hcCgoaWQpID0+IHRoaXMuaXRlbVNlcnZpY2UuZ2V0KGlkKSkpKSxcbiAgICAgIG1hcCgoaXRlbSkgPT4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVPYmplY3RzRGV0YWlscyh7IGxpc3Q6IHsgW2l0ZW0uaWRdOiBpdGVtIH0gfSkpXG4gICAgKVxuICApO1xuXG4gIHByb3hpbWl0eVNlYXJjaCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5wcm94aW1pdHkpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnJlc3VsdFNldHMpKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCByZXN1bHRTZXRzXSkgPT5cbiAgICAgICAgdGhpcy5pdGVtU2VydmljZS5wcm94aW1pdHkoYWN0aW9uLmlkKS5waXBlKFxuICAgICAgICAgIG1hcCgocHJveFJzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVSZXN1bHRTZXQoe1xuICAgICAgICAgICAgICBpZDogYWN0aW9uLnRhcmdldFJlc3VsdFNldCxcbiAgICAgICAgICAgICAgcmVzdWx0U2V0OiBSZXN1bHRzZXRVdGlscy5tZXJnZVJlc3VsdFNldHMocHJveFJzLCByZXN1bHRTZXRzW2FjdGlvbi50YXJnZXRSZXN1bHRTZXRdKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBleHBsb3JlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmV4cGxvcmUpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT4gW0Rhc2hib2FyZEFjdGlvbnMucHJveGltaXR5KHsgaWQ6IGFjdGlvbi5pZCwgdGFyZ2V0UmVzdWx0U2V0OiBFWFBMT1JFX05BTUVEX1FVRVJZX0lEIH0pXSlcbiAgICApXG4gICk7XG5cbiAgZGV0YWlsQXNMb2FkSW5XaWRnZXQkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMuZGV0YWlsKSxcbiAgICAgIG1hcCgoYWN0aW9uKSA9PlxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLmFkZFdpZGdldFRvUHJlc2VudGF0aW9uKHtcbiAgICAgICAgICBpZDogJycsXG4gICAgICAgICAgd2lkZ2V0VHlwZTogJ2RldGFpbCcsXG4gICAgICAgICAgYWRkaXRpb25hbE9wdGlvbnM6IHtcbiAgICAgICAgICAgIGl0ZW1JZHM6IGFjdGlvbi5pZHNcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHVwZGF0ZVdpZGdldEluUHJlc2VudGF0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZVdpZGdldEluUHJlc2VudGF0aW9uKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCkpLFxuICAgICAgbWVyZ2VNYXAoKFthY3Rpb24sIG1hbmlmZXN0XSkgPT4ge1xuICAgICAgICAvLyBDaGVjayBpZiBhIHdpZGdldCB3aXRoIHNhbWUgZGF0YXNvdXJjZSBhbmQgdHlwZSBhbHJlYWR5IGV4aXN0IGluIGN1cnJlbnQgcHJlc2VudGF0aW9uXG4gICAgICAgIGNvbnN0IHdpZGdldFRvTWF0Y2ggPSB0aGlzLnRvb2xib3hNYW5pZmVzdFNlcnZpY2UuZ2V0KGFjdGlvbi53aWRnZXRUeXBlKTtcblxuICAgICAgICBsZXQgYWRkaXRpb25hbE1hdGNoaW5nRm46IChvcHRpb25zVG9NYXRjaDogYW55LCBvcHRpb25zOiBhbnkpID0+IGJvb2xlYW47XG4gICAgICAgIHN3aXRjaCAod2lkZ2V0VG9NYXRjaC50eXBlKSB7XG4gICAgICAgICAgY2FzZSAnY2hhcnQnOlxuICAgICAgICAgICAgYWRkaXRpb25hbE1hdGNoaW5nRm4gPSAob3B0aW9uc1RvTWF0Y2g6IENoYXJ0V2lkZ2V0T3B0aW9ucywgb3B0aW9uczogQ2hhcnRXaWRnZXRPcHRpb25zKSA9PlxuICAgICAgICAgICAgICBvcHRpb25zVG9NYXRjaC50eXBlID09PSBvcHRpb25zLnR5cGUgJiYgb3B0aW9uc1RvTWF0Y2guc3ViVHlwZSA9PT0gb3B0aW9ucy5zdWJUeXBlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgICAgIGFkZGl0aW9uYWxNYXRjaGluZ0ZuID0gKG9wdGlvbnNUb01hdGNoOiBNYXBXaWRnZXRPcHRpb25zLCBvcHRpb25zOiBNYXBXaWRnZXRPcHRpb25zKSA9PlxuICAgICAgICAgICAgICAhIW9wdGlvbnMubGF5ZXJzIS5maW5kKChsYXllcikgPT4gbGF5ZXIudHlwZSA9PT0gb3B0aW9uc1RvTWF0Y2gubGF5ZXJzIVswXS50eXBlKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBhZGRpdGlvbmFsTWF0Y2hpbmdGbiA9IChvcHRpb25zVG9NYXRjaDogYW55LCBvcHRpb25zOiBhbnkpID0+IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtYXRjaGluZ1dpZGdldHMgPSBtYW5pZmVzdC53aW5kb3dzLm1hcCgod2luZG93KSA9PlxuICAgICAgICAgIHdpbmRvdy53aWRnZXRzXG4gICAgICAgICAgICAuZmlsdGVyKCh3aWRnZXQpID0+IHdpZGdldC50eXBlID09PSB3aWRnZXRUb01hdGNoLnR5cGUpXG4gICAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgICAod2lkZ2V0KSA9PlxuICAgICAgICAgICAgICAgIHdpZGdldC5kYXRhc291cmNlID09PSBhY3Rpb24uaWQgfHxcbiAgICAgICAgICAgICAgICAod2lkZ2V0LmRhdGFzb3VyY2UhWzBdID09PSBhY3Rpb24uaWQgJiYgd2lkZ2V0LmRhdGFzb3VyY2UhLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5maW5kKCh3aWRnZXQpID0+IGFkZGl0aW9uYWxNYXRjaGluZ0ZuKHdpZGdldFRvTWF0Y2gub3B0aW9ucywgd2lkZ2V0Lm9wdGlvbnMpKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGFscmVhZHlNYXRjaGVkV2lkZ2V0ID0gbWF0Y2hpbmdXaWRnZXRzLmZpbmQoKHdpbmRvdykgPT4gISF3aW5kb3cpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgICAgICBpZiAoYWxyZWFkeU1hdGNoZWRXaWRnZXQpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChcbiAgICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMubXVsdGlTbmFja0Jhcih7XG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0Bwcnkud2lkZ2V0LnVwZGF0ZWRJblZpZXcnLCB7XG4gICAgICAgICAgICAgICAgICBpbmRleDogbWF0Y2hpbmdXaWRnZXRzLmZpbmRJbmRleCgod2lkZ2V0KSA9PiAhIXdpZGdldCkgKyAxXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKERhc2hib2FyZEFjdGlvbnMuYWRkV2lkZ2V0VG9QcmVzZW50YXRpb24oeyAuLi5hY3Rpb24gfSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIGFkZFdpZGdldFRvUHJlc2VudGF0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmFkZFdpZGdldFRvUHJlc2VudGF0aW9uKSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ3JpZExheW91dCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5nbG9iYWxNYW5pZmVzdCksXG4gICAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSxcbiAgICAgICAgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmRhc2hib2FyZENlbGxQYXJhbXMpLFxuICAgICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2VsZWN0ZWRJdGVtSWRzKVxuICAgICAgKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwgbGF5b3V0LCBfZ2xvYmFsTWFuaWZlc3QsIHJhbmssIHBhcmFtcywgc2VsZWN0ZWRJZHNdKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hbmlmZXN0R2xvYmFsID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShfZ2xvYmFsTWFuaWZlc3QpKSBhcyBHbG9iYWxNYW5pZmVzdDtcblxuICAgICAgICAvLyBDcmVhdGUgbmV3IGNvbmZpZ3VyYXRpb25cbiAgICAgICAgY29uc3QgbmV3T3B0aW9ucyA9IHRoaXMudG9vbGJveE1hbmlmZXN0U2VydmljZS5nZXQoYWN0aW9uLndpZGdldFR5cGUpID8/IHtcbiAgICAgICAgICBvcHRpb25zOiB7fSxcbiAgICAgICAgICB0eXBlOiBhY3Rpb24ud2lkZ2V0VHlwZVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBuZXdXaWRnZXRNYW5pZmVzdCA9IHtcbiAgICAgICAgICAuLi5uZXdPcHRpb25zLFxuICAgICAgICAgIGxheW91dDoge30sXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgLi4ubmV3T3B0aW9ucy5vcHRpb25zLFxuICAgICAgICAgICAgLi4uYWN0aW9uLmFkZGl0aW9uYWxPcHRpb25zXG4gICAgICAgICAgfVxuICAgICAgICB9IGFzIFdpZGdldE1hbmlmZXN0O1xuXG4gICAgICAgIGlmICghIWFjdGlvbi5pZCkge1xuICAgICAgICAgIG5ld1dpZGdldE1hbmlmZXN0LmRhdGFzb3VyY2UgPSBhY3Rpb24uaWQ7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZm91bmQ6IHsgYWN0dWFsUmFuazogbnVtYmVyOyB3aWRnZXQ6IFdpZGdldE1hbmlmZXN0IH0gfCBudWxsID0gbnVsbDtcbiAgICAgICAgLy8gVHJ5IHRvIGZpbmQgYSBzcG90IGluIHdpbmRvd3MgKHN0YXJ0aW5nIGJ5IGN1cnJlbnQgcmFuaywgdGhlbiBpbiBvdGhlcnMpXG4gICAgICAgIGNvbnN0IHNlcXVlbmNlID0gV2lkZ2V0UGxhY2VtZW50VXRpbHMuc3dhcEFycmF5RWxlbWVudHMoXG4gICAgICAgICAgbmV3IEFycmF5KG1hbmlmZXN0R2xvYmFsLndpbmRvd3MubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaWR4LCBhcnJheSkgPT4gaWR4KSxcbiAgICAgICAgICAwLFxuICAgICAgICAgIHJhbmtcbiAgICAgICAgKTtcbiAgICAgICAgLy8gVHJ5aW5nIGFsbCBwbGFjZW1lbnQgb3B0aW9uc1xuICAgICAgICBmb3IgKGNvbnN0IGFjdHVhbFJhbmsgb2Ygc2VxdWVuY2UpIHtcbiAgICAgICAgICBjb25zdCB3aW5kb3dMYXlvdXQgPSBtYW5pZmVzdEdsb2JhbC53aW5kb3dzW2FjdHVhbFJhbmtdLmdyaWQ/LmxheW91dCA/PyBEYXNoYm9hcmRHcmlkTGF5b3V0LkZVTEw7XG4gICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IFdpZGdldFBsYWNlbWVudFV0aWxzLnBsYWNlbWVudE9wdGlvbnMobmV3V2lkZ2V0TWFuaWZlc3QsIHdpbmRvd0xheW91dCk7XG4gICAgICAgICAgaWYgKCFmb3VuZCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9ucykge1xuICAgICAgICAgICAgICBpZiAoIWZvdW5kKSB7XG4gICAgICAgICAgICAgICAgLy8gQXJlIHdlIGRpc2pvaW50IGZyb20gYWxsIG90aGVyIHdpZGdldHMgP1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzRGlzam9pbnRGcm9tQWxsID0gKG1hbmlmZXN0R2xvYmFsLndpbmRvd3NbYWN0dWFsUmFua10ud2lkZ2V0cyA/PyBbXSlcbiAgICAgICAgICAgICAgICAgIC5tYXAoKHdpZGdldCkgPT4gV2lkZ2V0UGxhY2VtZW50VXRpbHMuYXJlRGlzam9pbnQod2lkZ2V0LCBvcHRpb24pKVxuICAgICAgICAgICAgICAgICAgLnJlZHVjZSgocCwgYykgPT4gcCAmJiBjLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNEaXNqb2ludEZyb21BbGwpIHtcbiAgICAgICAgICAgICAgICAgIC8vIEZvdW5kIGEgZGlzam9pbnQgcGxhY2VtZW50ICFcbiAgICAgICAgICAgICAgICAgIGZvdW5kID0geyBhY3R1YWxSYW5rLCB3aWRnZXQ6IG9wdGlvbiB9IGFzIHsgYWN0dWFsUmFuazogbnVtYmVyOyB3aWRnZXQ6IFdpZGdldE1hbmlmZXN0IH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCEhZm91bmQpIHtcbiAgICAgICAgICBjb25zdCBwbGFjZVdlRm91bmQgPSBmb3VuZCBhcyB7IGFjdHVhbFJhbms6IG51bWJlcjsgd2lkZ2V0OiBXaWRnZXRNYW5pZmVzdCB9O1xuICAgICAgICAgIG1hbmlmZXN0R2xvYmFsLndpbmRvd3NbcGxhY2VXZUZvdW5kLmFjdHVhbFJhbmtdLndpZGdldHMucHVzaChwbGFjZVdlRm91bmQud2lkZ2V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50V2luZG93TGF5b3V0ID0gbWFuaWZlc3RHbG9iYWwud2luZG93c1tyYW5rXS5ncmlkPy5sYXlvdXQgPz8gRGFzaGJvYXJkR3JpZExheW91dC5GVUxMO1xuXG4gICAgICAgICAgLy8gc2kgbm9uIHRyb3V2w6kgOiBub3V2ZWxsZSBwYWdlLCBwcmVtacOocmUgcG9zaXRpb24gc3VnZ8OpcsOpZVxuICAgICAgICAgIGNvbnN0IGZpcnN0UHJvcG9zZWRMYXlvdXQgPSBXaWRnZXRQbGFjZW1lbnRVdGlscy5wbGFjZW1lbnRPcHRpb25zKG5ld1dpZGdldE1hbmlmZXN0LCBjdXJyZW50V2luZG93TGF5b3V0KVswXTtcblxuICAgICAgICAgIG1hbmlmZXN0R2xvYmFsLndpbmRvd3MucHVzaCh7IHdpZGdldHM6IFtmaXJzdFByb3Bvc2VkTGF5b3V0XSwgZ3JpZDogeyBsYXlvdXQ6IGN1cnJlbnRXaW5kb3dMYXlvdXQgfSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhY3Rpb24uYWxlcnQgPT09IHVuZGVmaW5lZCB8fCBhY3Rpb24uYWxlcnQgPT09IHRydWUpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlQWN0aW9uID0gRGFzaGJvYXJkQWN0aW9ucy5tdWx0aVNuYWNrQmFyKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N1Y2Nlc3MnLFxuICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS53aWRnZXQuYWRkZWRJblZpZXcnLCB7XG4gICAgICAgICAgICAgICAgaW5kZXg6ICEhZm91bmRcbiAgICAgICAgICAgICAgICAgID8gKGZvdW5kIGFzIHsgYWN0dWFsUmFuazogbnVtYmVyOyB3aWRnZXQ6IFdpZGdldE1hbmlmZXN0IH0pLmFjdHVhbFJhbmsgKyAxXG4gICAgICAgICAgICAgICAgICA6IG1hbmlmZXN0R2xvYmFsLndpbmRvd3MubGVuZ3RoXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChtZXNzYWdlQWN0aW9uKTtcblxuICAgICAgICAgIGlmICghZm91bmQpIHtcbiAgICAgICAgICAgIHRoaXMuYnVzU2VydmljZS5idWZmZXJVbnRpbEpvaW5lZChtZXNzYWdlQWN0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCh7IG1hbmlmZXN0OiBtYW5pZmVzdEdsb2JhbCwgc2VsZWN0ZWRJZHMgfSk7XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBtdWx0aVNuYWNrQmFyJCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5tdWx0aVNuYWNrQmFyKSxcbiAgICAgICAgdGFwKChhY3Rpb24pID0+IHRoaXMuc25hY2tCYXIub3BlbihhY3Rpb24ubWVzc2FnZSkpXG4gICAgICApLFxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cbiAgKTtcblxuICByZWxhdW5jaEFmdGVyT3JkZXIkID0gY3JlYXRlRWZmZWN0KCgpID0+XG4gICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgb2ZUeXBlKERhc2hib2FyZEFjdGlvbnMucXVpY2tPcmRlciksXG4gICAgICBtYXAoKGFjdGlvbikgPT5cbiAgICAgICAgU2VhcmNoQWN0aW9ucy5nZXREYXRhc291cmNlSXRlbXMoe1xuICAgICAgICAgIGlkOiBhY3Rpb24uZGF0YXNvdXJjZUlkLFxuICAgICAgICAgIGV4Y2x1ZGVHZW86IHRydWUsXG4gICAgICAgICAgZnJvbTogJ0Rhc2hib2FyZEVmZmVjdHMucmVsYXVuY2hBZnRlck9yZGVyJCdcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcHJvcGFnYXRlR3JpZExheW91dCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5zZXRHcmlkTGF5b3V0KSxcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5yYW5rKSwgdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLndpbmRvd01hbmlmZXN0KSksXG4gICAgICBtYXAoKFthY3Rpb24sIHJhbmssIHdpbmRvd01hbmlmZXN0XSkgPT4gRGFzaGJvYXJkQWN0aW9ucy5wcm9wYWdhdGVHcmlkTGF5b3V0KHsgbWFuaWZlc3Q6IHdpbmRvd01hbmlmZXN0LCByYW5rIH0pKVxuICAgIClcbiAgKTtcblxuICB0b2dnbGVFZGl0aW9uTW9kZUlmTm90TWFudWFsJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLnNldEdyaWRMYXlvdXQpLFxuICAgICAgZmlsdGVyKChhY3Rpb24pID0+IGFjdGlvbi5sYXlvdXQgIT09IERhc2hib2FyZEdyaWRMYXlvdXQuTUFOVUFMKSxcbiAgICAgIG1hcCgoKSA9PiBEYXNoYm9hcmRBY3Rpb25zLnRvZ2dsZUVkaXRpb25Nb2RlKHsgZm9yY2U6IGZhbHNlIH0pKVxuICAgIClcbiAgKTtcblxuICBnZXRDYXBhYmlsaXR5JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmdldENhcGFiaWxpdHkpLFxuICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmNhcGFiaWxpdGllcykpLFxuICAgICAgZmlsdGVyKFxuICAgICAgICAoW2FjdGlvbiwgY2FwYWJpbGl0aWVzXSkgPT5cbiAgICAgICAgICAoISFjYXBhYmlsaXRpZXMgJiYgISFhY3Rpb24udXJsICYmICghY2FwYWJpbGl0aWVzW2FjdGlvbi51cmxdIHx8ICFjYXBhYmlsaXRpZXNbYWN0aW9uLnVybF0hLmRvYykpIHx8XG4gICAgICAgICAgISFhY3Rpb24uZm9yY2VcbiAgICAgICksXG4gICAgICBtZXJnZU1hcCgoW2FjdGlvbiwgX10pID0+XG4gICAgICAgIHRoaXMud21zU2VydmljZS5nZXRDYXBhYmlsaXRpZXMoYWN0aW9uLnVybCkucGlwZShcbiAgICAgICAgICBtYXAoKGNhcGFiaWxpdHkpID0+IERhc2hib2FyZEFjdGlvbnMudXBkYXRlQ2FwYWJpbGl0eSh7IHVybDogYWN0aW9uLnVybCwgY2FwYWJpbGl0eSB9KSksXG4gICAgICAgICAgc3RhcnRXaXRoKERhc2hib2FyZEFjdGlvbnMudXBkYXRlQ2FwYWJpbGl0eSh7IHVybDogYWN0aW9uLnVybCwgY2FwYWJpbGl0eTogbnVsbCB9KSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBnZXRXbXNGZWF0dXJlcyA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmdldFdtc0ZlYXR1cmVzKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+IGNvbWJpbmVMYXRlc3QoW29mKGFjdGlvbiksIHRoaXMud21zU2VydmljZS5nZXRXbXNGZWF0dXJlcyhhY3Rpb24udXJsKV0pKSxcbiAgICAgIG1hcCgoW2FjdGlvbiwganNvbl0pID0+IHtcbiAgICAgICAgcmV0dXJuIERhc2hib2FyZEFjdGlvbnMuYWRkV21zRmVhdHVyZXMoe1xuICAgICAgICAgIGZlYXR1cmVzOiBqc29uLmZlYXR1cmVzLm1hcCgoZmVhdHVyZTogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IGFueSA9IHtcbiAgICAgICAgICAgICAgaWQ6IGZlYXR1cmUuaWQsXG4gICAgICAgICAgICAgIG9DbGFzczogYWN0aW9uLm9DbGFzcyxcbiAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IGFjdGlvbi5jb29yZGluYXRlcyxcbiAgICAgICAgICAgICAgcHJvcGVydGllczogT2JqZWN0LmtleXMoZmVhdHVyZS5wcm9wZXJ0aWVzKVxuICAgICAgICAgICAgICAgIC5tYXAoKHByb3BlcnR5KSA9PiAoeyBrZXk6IHByb3BlcnR5LCB2YWx1ZTogZmVhdHVyZS5wcm9wZXJ0aWVzW3Byb3BlcnR5XSB9KSlcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChwcm9wKSA9PiAhIXByb3AudmFsdWUpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICB9KVxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIGdldFdmc0ZlYXR1cmVzRm9yUG9pbnRTdGFjayA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmdldFdmc0ZlYXR1cmVzRm9yUG9pbnRTdGFja1Rvb2x0aXBzKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+IGNvbWJpbmVMYXRlc3QoW29mKGFjdGlvbiksIHRoaXMud21zU2VydmljZS5nZXRXbXNGZWF0dXJlcyhhY3Rpb24udXJsKV0pKSxcbiAgICAgIG1lcmdlTWFwKChbYWN0aW9uLCB3bXNKc29uXSkgPT4ge1xuICAgICAgICAvLyBjaGVjayBpZiBkYXRhIGlzIGFjdHVhbGx5IGEgc3RhY2sgb2YgcG9pbnRzXG4gICAgICAgIGlmIChcbiAgICAgICAgICB3bXNKc29uLmZlYXR1cmVzWzBdICYmXG4gICAgICAgICAgd21zSnNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzLmNvdW50ICYmXG4gICAgICAgICAgd21zSnNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzLmNvdW50dW5pcXVlICYmXG4gICAgICAgICAgd21zSnNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzLmNvdW50ID4gMSAmJlxuICAgICAgICAgIHdtc0pzb24uZmVhdHVyZXNbMF0ucHJvcGVydGllcy5jb3VudHVuaXF1ZSA9PT0gMVxuICAgICAgICApIHtcbiAgICAgICAgICBsZXQgZW52QkJPWENvb3JkczogbnVtYmVyW10gPSBbLi4ud21zSnNvbi5mZWF0dXJlc1swXS5wcm9wZXJ0aWVzLmVudkJCT1gubWF0Y2hBbGwoL1xcZCsuXFxkKy9nKV0ubWFwKFxuICAgICAgICAgICAgKG0pID0+IG1bMF1cbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB0aGlzLndtc1NlcnZpY2VcbiAgICAgICAgICAgIC5nZXRXZnNGZWF0dXJlcyhhY3Rpb24udXJsLCBlbnZCQk9YQ29vcmRzKVxuICAgICAgICAgICAgLnBpcGUobWFwKCh3ZnNKc29uKSA9PiAoeyBhY3Rpb24sIGpzb246IHdmc0pzb24gfSkpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiBkYXRhIGlzIG5vdCBhIHN0YWNrIGp1c3QgYWRkIGZlYXR1cmVzIHdpdGhvdXQgY2FsbGluZyB3ZnMgc2VydmljZVxuICAgICAgICByZXR1cm4gb2YoeyBhY3Rpb24sIGpzb246IHdtc0pzb24gfSk7XG4gICAgICB9KSxcbiAgICAgIG1hcCgoeyBhY3Rpb24sIGpzb24gfSkgPT5cbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5hZGRXbXNGZWF0dXJlcyh7XG4gICAgICAgICAgZmVhdHVyZXM6IGpzb24uZmVhdHVyZXMubWFwKChmZWF0dXJlOiBhbnkpID0+ICh7XG4gICAgICAgICAgICBpZDogZmVhdHVyZS5pZCxcbiAgICAgICAgICAgIG9DbGFzczogYWN0aW9uLm9DbGFzcyxcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBhY3Rpb24uY29vcmRpbmF0ZXMsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiBPYmplY3Qua2V5cyhmZWF0dXJlLnByb3BlcnRpZXMpXG4gICAgICAgICAgICAgIC5tYXAoKHByb3BlcnR5KSA9PiAoeyBrZXk6IHByb3BlcnR5LCB2YWx1ZTogZmVhdHVyZS5wcm9wZXJ0aWVzW3Byb3BlcnR5XSB9KSlcbiAgICAgICAgICAgICAgLmZpbHRlcigocHJvcCkgPT4gISFwcm9wLnZhbHVlKVxuICAgICAgICAgIH0pKVxuICAgICAgICB9KVxuICAgICAgKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHdoaWxlIGZldGNoaW5nIFdGUyBmZWF0dXJlcycsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIG9mKERhc2hib2FyZEFjdGlvbnMuYWRkV21zRmVhdHVyZXMoeyBmZWF0dXJlczogW10gfSkpO1xuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgYWRkTWFuaWZlc3RNZXRhZGF0YSA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmFkZE1hbmlmZXN0TWV0YWRhdGEpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2UuYWRkTWV0YWRhdGEoYWN0aW9uLnByZXNlbnRhdGlvbklkLCBhY3Rpb24ubWV0YWRhdGFJZCwgYWN0aW9uLnZhbHVlKS5waXBlKFxuICAgICAgICAgIG1hcCgoKSA9PiBEYXNoYm9hcmRBY3Rpb25zLmZldGNoTWFuaWZlc3RzTGlzdCgpKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgICAgICAgIHRoaXMuc25hY2tCYXIub3Blbih7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnQHByeS50b29sYm94Lm1hbmlmZXN0LnNhdmVFcnJvckNvZGUuU0FWRV9NRVRBREFUQScsIHtcbiAgICAgICAgICAgICAgICAgIGNvZGU6IGVycm9yLnN0YXR1c1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZGVsZXRlTWFuaWZlc3RNZXRhZGF0YSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5kZWxldGVNYW5pZmVzdE1ldGFkYXRhKSxcbiAgICAgIG1lcmdlTWFwKChhY3Rpb24pID0+XG4gICAgICAgIHRoaXMubWFuaWZlc3RTZXJ2aWNlXG4gICAgICAgICAgLmRlbGV0ZU1ldGFkYXRhKGFjdGlvbi5wcmVzZW50YXRpb25JZCwgYWN0aW9uLm1ldGFkYXRhSWQpXG4gICAgICAgICAgLnBpcGUobWFwKCgpID0+IERhc2hib2FyZEFjdGlvbnMuZmV0Y2hNYW5pZmVzdHNMaXN0KCkpKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBsb2FkUHJlc2VudGF0aW9uJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PlxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShEYXNoYm9hcmRBY3Rpb25zLmxvYWRQcmVzZW50YXRpb24pLFxuICAgICAgdGFwKCgpID0+XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy51cGRhdGVNYW5pZmVzdCh7XG4gICAgICAgICAgICBtYW5pZmVzdDogeyB3aW5kb3dzOiBbXSB9LFxuICAgICAgICAgICAgc2VsZWN0ZWRJZHM6IFtdXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKSxcbiAgICAgIHRhcCgoYWN0aW9uKSA9PlxuICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMuc2VsZWN0UHJlc2VudGF0aW9uKHtcbiAgICAgICAgICAgIHByZXNlbnRhdGlvbjogYWN0aW9uLnByZXNlbnRhdGlvbixcbiAgICAgICAgICAgIHZpZXdNb2RlOiBhY3Rpb24udmlld01vZGVcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgdGFwKChhY3Rpb24pID0+IHRoaXMudGl0bGVTZXJ2aWNlLmNoYW5nZVRpdGxlKGFjdGlvbi5wcmVzZW50YXRpb24ubmFtZSkpLFxuICAgICAgbWVyZ2VNYXAoKGFjdGlvbikgPT5cbiAgICAgICAgdGhpcy5tYW5pZmVzdFNlcnZpY2UuZ2V0KGFjdGlvbi5wcmVzZW50YXRpb24uaWQpLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKG1hbmlmZXN0KSA9PiBbXG4gICAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZU1hbmlmZXN0KHtcbiAgICAgICAgICAgICAgbWFuaWZlc3QsXG4gICAgICAgICAgICAgIHNlbGVjdGVkSWRzOiBbXSxcbiAgICAgICAgICAgICAgbWFuaWZlc3RJZDogYWN0aW9uLnByZXNlbnRhdGlvbi5pZFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnNldEluaXRpYWxQcmVzZW50YXRpb24oe1xuICAgICAgICAgICAgICBpbml0aWFsOiBhY3Rpb24udmlld01vZGUgPT09IFZpZXdNb2RlLkNPTlNVTFQgPyB1bmRlZmluZWQgOiBtYW5pZmVzdFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnVwZGF0ZURpc3BsYXlPcHRpb25zKHtcbiAgICAgICAgICAgICAgbW9kZTogYWN0aW9uLnZpZXdNb2RlXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIERhc2hib2FyZEFjdGlvbnMuZm9sbG93TWFuaWZlc3RSb3V0ZSgpXG4gICAgICAgICAgXSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjb25maXJtTGF5ZXJHcm91cERlbGV0aW9uJCA9IGNyZWF0ZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoRGFzaGJvYXJkQWN0aW9ucy5jb25maXJtTGF5ZXJHcm91cERlbGV0aW9uKSxcbiAgICAgICAgdGFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgICBjb25zdCBkYXRhOiBQcnlEaWFsb2dDb25maXJtRGF0YSA9IHtcbiAgICAgICAgICAgIHRpdGxlOiAnQHByeS53aWRnZXQubWFwLmxheWVyU2V0dGluZ3MuY29uZmlybURlbGV0ZScsXG4gICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogMCxcbiAgICAgICAgICAgICAgICBsYWJlbDogJ0BwcnkudG9vbGJveC5tYW5pZmVzdC52YWxpZGF0ZScsXG4gICAgICAgICAgICAgICAgYWN0aW9uczogW0Rhc2hib2FyZEFjdGlvbnMuZGVsZXRlTGF5ZXJHcm91cCh7IG5hbWU6IGFjdGlvbi5uYW1lIH0pXVxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IDEsXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QuY2xvc2UnLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnc2Vjb25kYXJ5J1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLnByeURpYWxvZy5vcGVuKFByeURpYWxvZ0NvbmZpcm1Db21wb25lbnQsIHsgZGF0YSB9KTtcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgeyBkaXNwYXRjaDogZmFsc2UgfVxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZGFzaGJvYXJkSW5pdFNlcnZpY2U6IERhc2hib2FyZEluaXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55PixcbiAgICBwcml2YXRlIG1hbmlmZXN0U2VydmljZTogTWFuaWZlc3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgaXRlbVNlcnZpY2U6IEl0ZW1TZXJ2aWNlLFxuICAgIHByaXZhdGUgdGl0bGVTZXJ2aWNlOiBQcnlUaXRsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBQcnlJMThuU2VydmljZSxcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBQcnlTbmFja2JhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlZnJlc2hTZXJ2aWNlOiBSZWZyZXNoU2VydmljZSxcbiAgICBwcml2YXRlIHRvb2xib3hNYW5pZmVzdFNlcnZpY2U6IFRvb2xib3hNYW5pZmVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBidXNTZXJ2aWNlOiBCdXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIHByeURpYWxvZzogUHJ5RGlhbG9nU2VydmljZSxcbiAgICBwcml2YXRlIHdtc1NlcnZpY2U6IFdtc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB3aWRnZXRGYWN0b3J5U2VydmljZTogV2lkZ2V0RmFjdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpMThuU2VydmljZTogUHJ5STE4blNlcnZpY2VcbiAgKSB7XG4gICAgZGFzaGJvYXJkSW5pdFNlcnZpY2UuaW5pdCgpO1xuICAgIHJlZnJlc2hTZXJ2aWNlLnN0YXJ0KCk7XG4gIH1cbn1cbiJdfQ==