@myclub_se/data-access 3.5.7 → 3.6.0

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 (192) hide show
  1. package/esm2022/lib/api-models/api-activity-invite.mjs +1 -1
  2. package/esm2022/lib/api-models/api-activity-location-group.mjs +1 -1
  3. package/esm2022/lib/api-models/api-activity-location.mjs +1 -1
  4. package/esm2022/lib/api-models/api-activity-question-connection.mjs +2 -0
  5. package/esm2022/lib/api-models/api-activity-question.mjs +2 -0
  6. package/esm2022/lib/api-models/api-activity-rule-relation.mjs +2 -0
  7. package/esm2022/lib/api-models/api-activity-rule.mjs +2 -0
  8. package/esm2022/lib/api-models/api-activity-settings.mjs +1 -1
  9. package/esm2022/lib/api-models/api-activity.mjs +1 -1
  10. package/esm2022/lib/api-models/api-bookable-item.mjs +1 -1
  11. package/esm2022/lib/api-models/api-invoice/api-payment-attempt.mjs +1 -1
  12. package/esm2022/lib/api-models/api-invoice/api-payment-order.mjs +1 -1
  13. package/esm2022/lib/api-models/api-member/api-member.mjs +1 -1
  14. package/esm2022/lib/api-models/api-open-activity.mjs +1 -1
  15. package/esm2022/lib/api-models/api-search-attribute.mjs +2 -0
  16. package/esm2022/lib/api-models/api-search-club.mjs +1 -1
  17. package/esm2022/lib/api-models/index.mjs +6 -1
  18. package/esm2022/lib/authentication/guards/handle-grant-token.guard.mjs +1 -1
  19. package/esm2022/lib/data-access.module.mjs +3 -4
  20. package/esm2022/lib/models/activity-invite.mjs +12 -2
  21. package/esm2022/lib/models/activity-location-group.mjs +1 -1
  22. package/esm2022/lib/models/activity-location-part.mjs +1 -1
  23. package/esm2022/lib/models/activity-location-tag.mjs +1 -1
  24. package/esm2022/lib/models/activity-location.mjs +1 -1
  25. package/esm2022/lib/models/activity-question-connection.mjs +29 -0
  26. package/esm2022/lib/models/activity-question-response.mjs +9 -0
  27. package/esm2022/lib/models/activity-question.mjs +33 -0
  28. package/esm2022/lib/models/activity-rule-relation.mjs +35 -0
  29. package/esm2022/lib/models/activity-rule.mjs +31 -0
  30. package/esm2022/lib/models/activity-settings.mjs +14 -4
  31. package/esm2022/lib/models/activity-type.mjs +1 -1
  32. package/esm2022/lib/models/activity.mjs +72 -4
  33. package/esm2022/lib/models/bookable-item.mjs +1 -1
  34. package/esm2022/lib/models/bookable-part.mjs +1 -1
  35. package/esm2022/lib/models/bookable-tag.mjs +1 -1
  36. package/esm2022/lib/models/booking-calendar-application-time.mjs +1 -1
  37. package/esm2022/lib/models/booking-calendar-slot-session.mjs +1 -1
  38. package/esm2022/lib/models/booking-settings.mjs +1 -1
  39. package/esm2022/lib/models/index.mjs +7 -1
  40. package/esm2022/lib/models/invoice/payment-attempt.mjs +1 -1
  41. package/esm2022/lib/models/invoice/payment-order.mjs +12 -6
  42. package/esm2022/lib/models/open-activity.mjs +16 -2
  43. package/esm2022/lib/models/optional-fee.mjs +12 -1
  44. package/esm2022/lib/models/search-attribute.mjs +13 -0
  45. package/esm2022/lib/models/search-club.mjs +2 -6
  46. package/esm2022/lib/models/search-team.mjs +1 -1
  47. package/esm2022/lib/models/token.mjs +1 -1
  48. package/esm2022/lib/services/activity.service.mjs +82 -48
  49. package/esm2022/lib/services/api.service.mjs +1 -1
  50. package/esm2022/lib/services/booking-calendar.service.mjs +1 -1
  51. package/esm2022/lib/services/constant.service.mjs +13 -1
  52. package/esm2022/lib/services/factories/activity-factory.mjs +6 -2
  53. package/esm2022/lib/services/factories/activity-invite-factory.mjs +2 -2
  54. package/esm2022/lib/services/factories/activity-location-factory.mjs +1 -1
  55. package/esm2022/lib/services/factories/activity-location-group-factory.mjs +1 -1
  56. package/esm2022/lib/services/factories/activity-location-part-factory.mjs +1 -1
  57. package/esm2022/lib/services/factories/activity-location-tag-factory.mjs +1 -1
  58. package/esm2022/lib/services/factories/activity-question-connection-factory.mjs +4 -0
  59. package/esm2022/lib/services/factories/activity-question-factory.mjs +3 -0
  60. package/esm2022/lib/services/factories/activity-rule-factory.mjs +4 -0
  61. package/esm2022/lib/services/factories/activity-rule-relation-factory.mjs +5 -0
  62. package/esm2022/lib/services/factories/activity-settings-factory.mjs +2 -2
  63. package/esm2022/lib/services/factories/bookable-item-factory.mjs +1 -1
  64. package/esm2022/lib/services/factories/bookable-part-factory.mjs +1 -1
  65. package/esm2022/lib/services/factories/bookable-tag-factory.mjs +1 -1
  66. package/esm2022/lib/services/factories/booking-calendar-application-time-factory.mjs +1 -1
  67. package/esm2022/lib/services/factories/booking-calendar-slot-factory.mjs +1 -1
  68. package/esm2022/lib/services/factories/booking-calendar-slot-session-factory.mjs +1 -1
  69. package/esm2022/lib/services/factories/booking-calendar-slot-validate-copy-result-factory.mjs +1 -1
  70. package/esm2022/lib/services/factories/booking-settings-factory.mjs +1 -1
  71. package/esm2022/lib/services/factories/feature-flags-factory.mjs +1 -1
  72. package/esm2022/lib/services/factories/index.mjs +6 -1
  73. package/esm2022/lib/services/factories/open-activity-factory.mjs +4 -2
  74. package/esm2022/lib/services/factories/overbooked-bookable-item-factory.mjs +1 -1
  75. package/esm2022/lib/services/factories/overbooked-location-factory.mjs +1 -1
  76. package/esm2022/lib/services/factories/payment-order-factory.mjs +2 -2
  77. package/esm2022/lib/services/factories/saved-search-factory.mjs +1 -1
  78. package/esm2022/lib/services/factories/search-attribute.factory.mjs +3 -0
  79. package/esm2022/lib/services/factories/search-club-factory.mjs +2 -2
  80. package/esm2022/lib/services/feature-flags.service.mjs +1 -1
  81. package/esm2022/lib/services/index.mjs +2 -2
  82. package/esm2022/lib/services/invoice/invoice.service.mjs +1 -1
  83. package/esm2022/lib/services/invoice/payment-attempt.service.mjs +1 -1
  84. package/esm2022/lib/services/invoice/payment-order.service.mjs +4 -1
  85. package/esm2022/lib/services/member-card.service.mjs +1 -1
  86. package/esm2022/lib/services/member-fee.service.mjs +1 -1
  87. package/esm2022/lib/services/member-public-form.service.mjs +1 -1
  88. package/esm2022/lib/services/member.service.mjs +1 -1
  89. package/esm2022/lib/services/storage.service.mjs +1 -1
  90. package/esm2022/lib/services/team.service.mjs +1 -1
  91. package/esm2022/lib/services/user.service.mjs +1 -1
  92. package/esm2022/lib/store/actions/activity.actions.mjs +57 -27
  93. package/esm2022/lib/store/actions/calendar.actions.mjs +7 -1
  94. package/esm2022/lib/store/actions/constant.actions.mjs +21 -1
  95. package/esm2022/lib/store/actions/invoice.actions.mjs +9 -1
  96. package/esm2022/lib/store/actions/member-fee.actions.mjs +1 -1
  97. package/esm2022/lib/store/actions/member.actions.mjs +1 -1
  98. package/esm2022/lib/store/actions/saved-search.actions.mjs +1 -1
  99. package/esm2022/lib/store/effects/activity.effects.mjs +40 -22
  100. package/esm2022/lib/store/effects/auth.effects.mjs +1 -1
  101. package/esm2022/lib/store/effects/booking.effects.mjs +1 -1
  102. package/esm2022/lib/store/effects/calendar.effects.mjs +7 -19
  103. package/esm2022/lib/store/effects/constant.effects.mjs +11 -2
  104. package/esm2022/lib/store/effects/file.effects.mjs +1 -1
  105. package/esm2022/lib/store/effects/invoice.effects.mjs +12 -2
  106. package/esm2022/lib/store/effects/member-card.effects.mjs +1 -1
  107. package/esm2022/lib/store/effects/member-fee.effects.mjs +1 -1
  108. package/esm2022/lib/store/effects/member.effects.mjs +1 -1
  109. package/esm2022/lib/store/effects/saved-search.effects.mjs +1 -1
  110. package/esm2022/lib/store/effects/token.effects.mjs +1 -1
  111. package/esm2022/lib/store/interfaces/index.mjs +2 -1
  112. package/esm2022/lib/store/interfaces/public-member-activity-result-interface.mjs +2 -0
  113. package/esm2022/lib/store/operators/ensure-public-member-activities-loading-done.mjs +5 -0
  114. package/esm2022/lib/store/operators/index.mjs +2 -1
  115. package/esm2022/lib/store/reducers/booking.reducers.mjs +1 -1
  116. package/esm2022/lib/store/reducers/calendar.reducer.mjs +83 -50
  117. package/esm2022/lib/store/reducers/constant.reducer.mjs +35 -2
  118. package/esm2022/lib/store/reducers/file.reducer.mjs +1 -1
  119. package/esm2022/lib/store/reducers/invoice.reducer.mjs +2 -2
  120. package/esm2022/lib/store/reducers/member-fee.reducer.mjs +1 -1
  121. package/esm2022/lib/store/reducers/public.reducer.mjs +58 -73
  122. package/esm2022/lib/store/reducers/saved-search.reducer.mjs +1 -1
  123. package/esm2022/lib/store/selectors/calendar.selectors.mjs +7 -1
  124. package/esm2022/lib/store/selectors/constant.selectors.mjs +5 -1
  125. package/esm2022/lib/store/selectors/member-fee.selectors.mjs +1 -1
  126. package/esm2022/lib/store/selectors/public.selectors.mjs +7 -7
  127. package/esm2022/lib/store/selectors/saved-search.selectors.mjs +1 -1
  128. package/esm2022/lib/store/state/booking.state.mjs +1 -1
  129. package/esm2022/lib/store/state/calendar.state.mjs +3 -1
  130. package/esm2022/lib/store/state/constant.state.mjs +4 -1
  131. package/esm2022/lib/store/state/invoice.state.mjs +1 -1
  132. package/esm2022/lib/store/state/member-fee.state.mjs +1 -1
  133. package/esm2022/lib/store/state/public.state.mjs +7 -7
  134. package/fesm2022/myclub_se-data-access.mjs +3447 -2976
  135. package/fesm2022/myclub_se-data-access.mjs.map +1 -1
  136. package/lib/api-models/api-activity-invite.d.ts +3 -0
  137. package/lib/api-models/api-activity-question-connection.d.ts +10 -0
  138. package/lib/api-models/api-activity-question.d.ts +9 -0
  139. package/lib/api-models/api-activity-rule-relation.d.ts +10 -0
  140. package/lib/api-models/api-activity-rule.d.ts +8 -0
  141. package/lib/api-models/api-activity-settings.d.ts +6 -1
  142. package/lib/api-models/api-activity.d.ts +26 -0
  143. package/lib/api-models/api-invoice/api-payment-order.d.ts +5 -2
  144. package/lib/api-models/api-open-activity.d.ts +10 -0
  145. package/lib/api-models/api-search-attribute.d.ts +8 -0
  146. package/lib/api-models/api-search-club.d.ts +0 -2
  147. package/lib/api-models/index.d.ts +5 -0
  148. package/lib/models/activity-invite.d.ts +7 -1
  149. package/lib/models/activity-question-connection.d.ts +19 -0
  150. package/lib/models/activity-question-response.d.ts +5 -0
  151. package/lib/models/activity-question.d.ts +22 -0
  152. package/lib/models/activity-rule-relation.d.ts +14 -0
  153. package/lib/models/activity-rule.d.ts +12 -0
  154. package/lib/models/activity-settings.d.ts +7 -2
  155. package/lib/models/activity.d.ts +29 -1
  156. package/lib/models/index.d.ts +6 -0
  157. package/lib/models/invoice/payment-attempt.d.ts +1 -1
  158. package/lib/models/invoice/payment-order.d.ts +6 -3
  159. package/lib/models/open-activity.d.ts +10 -1
  160. package/lib/models/optional-fee.d.ts +9 -0
  161. package/lib/models/search-attribute.d.ts +9 -0
  162. package/lib/models/search-club.d.ts +1 -3
  163. package/lib/services/activity.service.d.ts +17 -11
  164. package/lib/services/constant.service.d.ts +3 -0
  165. package/lib/services/factories/activity-question-connection-factory.d.ts +3 -0
  166. package/lib/services/factories/activity-question-factory.d.ts +3 -0
  167. package/lib/services/factories/activity-rule-factory.d.ts +3 -0
  168. package/lib/services/factories/activity-rule-relation-factory.d.ts +3 -0
  169. package/lib/services/factories/index.d.ts +5 -0
  170. package/lib/services/factories/search-attribute.factory.d.ts +3 -0
  171. package/lib/services/index.d.ts +1 -1
  172. package/lib/services/invoice/payment-order.service.d.ts +1 -0
  173. package/lib/services/member-card.service.d.ts +2 -3
  174. package/lib/store/actions/activity.actions.d.ts +207 -59
  175. package/lib/store/actions/calendar.actions.d.ts +36 -0
  176. package/lib/store/actions/constant.actions.d.ts +42 -0
  177. package/lib/store/actions/invoice.actions.d.ts +23 -1
  178. package/lib/store/effects/activity.effects.d.ts +56 -16
  179. package/lib/store/effects/calendar.effects.d.ts +4 -31
  180. package/lib/store/effects/constant.effects.d.ts +15 -0
  181. package/lib/store/effects/invoice.effects.d.ts +3 -0
  182. package/lib/store/interfaces/index.d.ts +1 -0
  183. package/lib/store/interfaces/public-member-activity-result-interface.d.ts +7 -0
  184. package/lib/store/operators/ensure-public-member-activities-loading-done.d.ts +3 -0
  185. package/lib/store/operators/index.d.ts +1 -0
  186. package/lib/store/selectors/calendar.selectors.d.ts +2 -0
  187. package/lib/store/selectors/constant.selectors.d.ts +2 -0
  188. package/lib/store/selectors/public.selectors.d.ts +6 -6
  189. package/lib/store/state/calendar.state.d.ts +3 -1
  190. package/lib/store/state/constant.state.d.ts +3 -0
  191. package/lib/store/state/public.state.d.ts +8 -8
  192. package/package.json +4 -3
@@ -1,6 +1,6 @@
1
1
  import { inject, Injectable } from '@angular/core';
2
2
  import { Actions, createEffect, ofType } from '@ngrx/effects';
3
- import { retrieve2FAMethodsAction, retrieve2FAMethodsFailureAction, retrieve2FAMethodsSuccessAction, retrieveActivityMaxAttendantsTypesConstantsAction, retrieveActivityMaxAttendantsTypesConstantsFailureAction, retrieveActivityMaxAttendantsTypesConstantsSuccessAction, retrieveActivityMeetUpTimesConstantsAction, retrieveActivityMeetUpTimesConstantsFailureAction, retrieveActivityMeetUpTimesConstantsSuccessAction, retrieveActivityReminderDaysConstantsAction, retrieveActivityReminderDaysConstantsFailureAction, retrieveActivityReminderDaysConstantsSuccessAction, retrieveActivityReminderReceiversConstantsAction, retrieveActivityReminderReceiversConstantsFailureAction, retrieveActivityReminderReceiversConstantsSuccessAction, retrieveActivityReminderTimesConstantsAction, retrieveActivityReminderTimesConstantsFailureAction, retrieveActivityReminderTimesConstantsSuccessAction, retrieveActivityRepeatOptionsConstantsAction, retrieveActivityRepeatOptionsConstantsFailureAction, retrieveActivityRepeatOptionsConstantsSuccessAction, retrieveActivityRepeatTypeOptionsConstantsAction, retrieveActivityRepeatTypeOptionsConstantsFailureAction, retrieveActivityRepeatTypeOptionsConstantsSuccessAction, retrieveActivitySettingsConstantsAction, retrieveActivitySettingsConstantsFailureAction, retrieveActivitySettingsConstantsSuccessAction, retrieveBookingCalendarStatusesAction, retrieveBookingCalendarStatusesFailureAction, retrieveBookingCalendarStatusesSuccessAction, retrieveBookingCalendarTypesAction, retrieveBookingCalendarTypesFailureAction, retrieveBookingCalendarTypesSuccessAction, retrieveBookingSlotReservedTimePositionsAction, retrieveBookingSlotReservedTimePositionsFailureAction, retrieveBookingSlotReservedTimePositionsSuccessAction, retrieveBookingSlotSessionTypesAction, retrieveBookingSlotSessionTypesFailureAction, retrieveBookingSlotSessionTypesSuccessAction, retrieveBookingSlotTypesAction, retrieveBookingSlotTypesFailureAction, retrieveBookingSlotTypesSuccessAction, retrieveCountriesConstantsAction, retrieveCountriesConstantsFailureAction, retrieveCountriesConstantsSuccessAction, retrieveFeatureFlagsAction, retrieveFeatureFlagsFailureAction, retrieveFeatureFlagsSuccessAction, retrieveLanguagesConstantsAction, retrieveLanguagesConstantsFailureAction, retrieveLanguagesConstantsSuccessAction, retrieveMemberBookingSlotTypesAction, retrieveMemberBookingSlotTypesFailureAction, retrieveMemberBookingSlotTypesSuccessAction, retrieveMemberContactTypesConstantsAction, retrieveMemberContactTypesConstantsFailureAction, retrieveMemberContactTypesConstantsSuccessAction, retrieveTeamBookingSlotTypesAction, retrieveTeamBookingSlotTypesFailureAction, retrieveTeamBookingSlotTypesSuccessAction } from '../actions';
3
+ import { retrieve2FAMethodsAction, retrieve2FAMethodsFailureAction, retrieve2FAMethodsSuccessAction, retrieveActivityMaxAttendantsTypesConstantsAction, retrieveActivityMaxAttendantsTypesConstantsFailureAction, retrieveActivityMaxAttendantsTypesConstantsSuccessAction, retrieveActivityMeetUpTimesConstantsAction, retrieveActivityMeetUpTimesConstantsFailureAction, retrieveActivityMeetUpTimesConstantsSuccessAction, retrieveActivityQuestionTypesConstantsAction, retrieveActivityQuestionTypesConstantsFailureAction, retrieveActivityQuestionTypesConstantsSuccessAction, retrieveActivityReminderDaysConstantsAction, retrieveActivityReminderDaysConstantsFailureAction, retrieveActivityReminderDaysConstantsSuccessAction, retrieveActivityReminderReceiversConstantsAction, retrieveActivityReminderReceiversConstantsFailureAction, retrieveActivityReminderReceiversConstantsSuccessAction, retrieveActivityReminderTimesConstantsAction, retrieveActivityReminderTimesConstantsFailureAction, retrieveActivityReminderTimesConstantsSuccessAction, retrieveActivityRepeatOptionsConstantsAction, retrieveActivityRepeatOptionsConstantsFailureAction, retrieveActivityRepeatOptionsConstantsSuccessAction, retrieveActivityRepeatTypeOptionsConstantsAction, retrieveActivityRepeatTypeOptionsConstantsFailureAction, retrieveActivityRepeatTypeOptionsConstantsSuccessAction, retrieveActivityRuleRelationTypesAction, retrieveActivityRuleRelationTypesFailureAction, retrieveActivityRuleRelationTypesSuccessAction, retrieveActivityRuleTypesAction, retrieveActivityRuleTypesFailureAction, retrieveActivityRuleTypesSuccessAction, retrieveActivitySettingsConstantsAction, retrieveActivitySettingsConstantsFailureAction, retrieveActivitySettingsConstantsSuccessAction, retrieveBookingCalendarStatusesAction, retrieveBookingCalendarStatusesFailureAction, retrieveBookingCalendarStatusesSuccessAction, retrieveBookingCalendarTypesAction, retrieveBookingCalendarTypesFailureAction, retrieveBookingCalendarTypesSuccessAction, retrieveBookingSlotReservedTimePositionsAction, retrieveBookingSlotReservedTimePositionsFailureAction, retrieveBookingSlotReservedTimePositionsSuccessAction, retrieveBookingSlotSessionTypesAction, retrieveBookingSlotSessionTypesFailureAction, retrieveBookingSlotSessionTypesSuccessAction, retrieveBookingSlotTypesAction, retrieveBookingSlotTypesFailureAction, retrieveBookingSlotTypesSuccessAction, retrieveCountriesConstantsAction, retrieveCountriesConstantsFailureAction, retrieveCountriesConstantsSuccessAction, retrieveFeatureFlagsAction, retrieveFeatureFlagsFailureAction, retrieveFeatureFlagsSuccessAction, retrieveLanguagesConstantsAction, retrieveLanguagesConstantsFailureAction, retrieveLanguagesConstantsSuccessAction, retrieveMemberBookingSlotTypesAction, retrieveMemberBookingSlotTypesFailureAction, retrieveMemberBookingSlotTypesSuccessAction, retrieveMemberContactTypesConstantsAction, retrieveMemberContactTypesConstantsFailureAction, retrieveMemberContactTypesConstantsSuccessAction, retrieveTeamBookingSlotTypesAction, retrieveTeamBookingSlotTypesFailureAction, retrieveTeamBookingSlotTypesSuccessAction } from '../actions';
4
4
  import { ConstantService, FeatureFlagsService } from '../../services';
5
5
  import { exhaustMap, of } from 'rxjs';
6
6
  import { catchError, map } from 'rxjs/operators';
@@ -21,6 +21,9 @@ export class ConstantEffects {
21
21
  retrieveActivityMeetUpTimes$ = createEffect(() => this.actions$
22
22
  .pipe(ofType(retrieveActivityMeetUpTimesConstantsAction), exhaustMap(() => this.constantService.getActivityMeetUpTimes()
23
23
  .pipe(map((constants) => retrieveActivityMeetUpTimesConstantsSuccessAction({ payload: constants })), catchError((error) => of(retrieveActivityMeetUpTimesConstantsFailureAction({ payload: error })))))));
24
+ retrieveActivityQuestionTypes$ = createEffect(() => this.actions$
25
+ .pipe(ofType(retrieveActivityQuestionTypesConstantsAction), exhaustMap(() => this.constantService.getActivityQuestionTypes()
26
+ .pipe(map((constants) => retrieveActivityQuestionTypesConstantsSuccessAction({ payload: constants })), catchError((error) => of(retrieveActivityQuestionTypesConstantsFailureAction({ payload: error })))))));
24
27
  retrieveActivityReminderDays$ = createEffect(() => this.actions$
25
28
  .pipe(ofType(retrieveActivityReminderDaysConstantsAction), exhaustMap(() => this.constantService.getActivityReminderDays()
26
29
  .pipe(map((constants) => retrieveActivityReminderDaysConstantsSuccessAction({ payload: constants })), catchError((error) => of(retrieveActivityReminderDaysConstantsFailureAction({ payload: error })))))));
@@ -36,6 +39,12 @@ export class ConstantEffects {
36
39
  retrieveActivityRepeatTypeOptions$ = createEffect(() => this.actions$
37
40
  .pipe(ofType(retrieveActivityRepeatTypeOptionsConstantsAction), exhaustMap(() => this.constantService.getActivityRepeatTypeOptions()
38
41
  .pipe(map((constants) => retrieveActivityRepeatTypeOptionsConstantsSuccessAction({ payload: constants })), catchError((error) => of(retrieveActivityRepeatTypeOptionsConstantsFailureAction({ payload: error })))))));
42
+ retrieveActivityRules$ = createEffect(() => this.actions$
43
+ .pipe(ofType(retrieveActivityRuleTypesAction), exhaustMap(() => this.constantService.getActivityRules()
44
+ .pipe(map((constants) => retrieveActivityRuleTypesSuccessAction({ payload: constants })), catchError((error) => of(retrieveActivityRuleTypesFailureAction({ payload: error })))))));
45
+ retrieveActivityRuleRelations$ = createEffect(() => this.actions$
46
+ .pipe(ofType(retrieveActivityRuleRelationTypesAction), exhaustMap(() => this.constantService.getActivityRuleRelations()
47
+ .pipe(map((constants) => retrieveActivityRuleRelationTypesSuccessAction({ payload: constants })), catchError((error) => of(retrieveActivityRuleRelationTypesFailureAction({ payload: error })))))));
39
48
  retrieveCountries$ = createEffect(() => this.actions$
40
49
  .pipe(ofType(retrieveCountriesConstantsAction), exhaustMap(() => this.constantService.getCountries()
41
50
  .pipe(map((constants) => retrieveCountriesConstantsSuccessAction({ payload: constants })), catchError((error) => of(retrieveCountriesConstantsFailureAction({ payload: error })))))));
@@ -75,4 +84,4 @@ export class ConstantEffects {
75
84
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ConstantEffects, decorators: [{
76
85
  type: Injectable
77
86
  }] });
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnQuZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvZWZmZWN0cy9jb25zdGFudC5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLCtCQUErQixFQUMvQiwrQkFBK0IsRUFDL0IsaURBQWlELEVBQ2pELHdEQUF3RCxFQUN4RCx3REFBd0QsRUFDeEQsMENBQTBDLEVBQzFDLGlEQUFpRCxFQUNqRCxpREFBaUQsRUFDakQsMkNBQTJDLEVBQzNDLGtEQUFrRCxFQUNsRCxrREFBa0QsRUFDbEQsZ0RBQWdELEVBQ2hELHVEQUF1RCxFQUN2RCx1REFBdUQsRUFDdkQsNENBQTRDLEVBQzVDLG1EQUFtRCxFQUNuRCxtREFBbUQsRUFDbkQsNENBQTRDLEVBQzVDLG1EQUFtRCxFQUNuRCxtREFBbUQsRUFDbkQsZ0RBQWdELEVBQ2hELHVEQUF1RCxFQUN2RCx1REFBdUQsRUFDdkQsdUNBQXVDLEVBQ3ZDLDhDQUE4QyxFQUM5Qyw4Q0FBOEMsRUFDOUMscUNBQXFDLEVBQ3JDLDRDQUE0QyxFQUM1Qyw0Q0FBNEMsRUFDNUMsa0NBQWtDLEVBQ2xDLHlDQUF5QyxFQUN6Qyx5Q0FBeUMsRUFDekMsOENBQThDLEVBQzlDLHFEQUFxRCxFQUNyRCxxREFBcUQsRUFDckQscUNBQXFDLEVBQ3JDLDRDQUE0QyxFQUM1Qyw0Q0FBNEMsRUFDNUMsOEJBQThCLEVBQzlCLHFDQUFxQyxFQUNyQyxxQ0FBcUMsRUFDckMsZ0NBQWdDLEVBQ2hDLHVDQUF1QyxFQUN2Qyx1Q0FBdUMsRUFDdkMsMEJBQTBCLEVBQzFC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QWlDLEVBQUUsRUFBRSxDQUFDLCtCQUErQixDQUFDLEVBQUMsT0FBTyxFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUMsRUFDakcsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLCtCQUErQixDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUNoRyxDQUNGLENBQ0YsQ0FDRixDQUFDO3VHQXZQUyxlQUFlOzJHQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XG5pbXBvcnQge1xuICByZXRyaWV2ZTJGQU1ldGhvZHNBY3Rpb24sXG4gIHJldHJpZXZlMkZBTWV0aG9kc0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlMkZBTWV0aG9kc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQWN0aXZpdHlNYXhBdHRlbmRhbnRzVHlwZXNDb25zdGFudHNBY3Rpb24sXG4gIHJldHJpZXZlQWN0aXZpdHlNYXhBdHRlbmRhbnRzVHlwZXNDb25zdGFudHNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5TWF4QXR0ZW5kYW50c1R5cGVzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eU1lZXRVcFRpbWVzQ29uc3RhbnRzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5TWVldFVwVGltZXNDb25zdGFudHNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5TWVldFVwVGltZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJEYXlzQ29uc3RhbnRzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJEYXlzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyRGF5c0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlclJlY2VpdmVyc0NvbnN0YW50c0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyUmVjZWl2ZXJzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyUmVjZWl2ZXJzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyVGltZXNDb25zdGFudHNBY3Rpb24sXG4gIHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlclRpbWVzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyVGltZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5UmVwZWF0T3B0aW9uc0NvbnN0YW50c0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlcGVhdE9wdGlvbnNDb25zdGFudHNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5UmVwZWF0T3B0aW9uc0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQWN0aXZpdHlSZXBlYXRUeXBlT3B0aW9uc0NvbnN0YW50c0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlcGVhdFR5cGVPcHRpb25zQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlcGVhdFR5cGVPcHRpb25zQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVNldHRpbmdzQ29uc3RhbnRzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5U2V0dGluZ3NDb25zdGFudHNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5U2V0dGluZ3NDb25zdGFudHNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclN0YXR1c2VzQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclN0YXR1c2VzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVCb29raW5nQ2FsZW5kYXJTdGF0dXNlc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ0NhbGVuZGFyVHlwZXNBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ0NhbGVuZGFyVHlwZXNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclR5cGVzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2xvdFJlc2VydmVkVGltZVBvc2l0aW9uc0FjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2xvdFJlc2VydmVkVGltZVBvc2l0aW9uc0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ1Nsb3RSZXNlcnZlZFRpbWVQb3NpdGlvbnNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdTbG90U2Vzc2lvblR5cGVzQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdTbG90U2Vzc2lvblR5cGVzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2xvdFNlc3Npb25UeXBlc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ1Nsb3RUeXBlc0FjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2xvdFR5cGVzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2xvdFR5cGVzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVDb3VudHJpZXNDb25zdGFudHNBY3Rpb24sXG4gIHJldHJpZXZlQ291bnRyaWVzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVDb3VudHJpZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUZlYXR1cmVGbGFnc0FjdGlvbixcbiAgcmV0cmlldmVGZWF0dXJlRmxhZ3NGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUZlYXR1cmVGbGFnc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlTGFuZ3VhZ2VzQ29uc3RhbnRzQWN0aW9uLFxuICByZXRyaWV2ZUxhbmd1YWdlc0NvbnN0YW50c0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlTGFuZ3VhZ2VzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJCb29raW5nU2xvdFR5cGVzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckJvb2tpbmdTbG90VHlwZXNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckJvb2tpbmdTbG90VHlwZXNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckNvbnRhY3RUeXBlc0NvbnN0YW50c0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJDb250YWN0VHlwZXNDb25zdGFudHNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckNvbnRhY3RUeXBlc0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUJvb2tpbmdTbG90VHlwZXNBY3Rpb24sXG4gIHJldHJpZXZlVGVhbUJvb2tpbmdTbG90VHlwZXNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1Cb29raW5nU2xvdFR5cGVzU3VjY2Vzc0FjdGlvblxufSBmcm9tICcuLi9hY3Rpb25zJztcbmltcG9ydCB7IENvbnN0YW50U2VydmljZSwgRmVhdHVyZUZsYWdzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IE9wdGlvbkludGVyZmFjZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZXhoYXVzdE1hcCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRmVhdHVyZUZsYWdzLCBSb2xlIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29uc3RhbnRFZmZlY3RzIHtcbiAgcHJpdmF0ZSBhY3Rpb25zJCA9IGluamVjdChBY3Rpb25zKTtcbiAgcHJpdmF0ZSBjb25zdGFudFNlcnZpY2UgPSBpbmplY3QoQ29uc3RhbnRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBmZWF0dXJlRmxhZ3NTZXJ2aWNlID0gaW5qZWN0KEZlYXR1cmVGbGFnc1NlcnZpY2UpO1xuXG4gIHJldHJpZXZlTGFuZ3VhZ2VzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVMYW5ndWFnZXNDb25zdGFudHNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRMYW5ndWFnZXMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVMYW5ndWFnZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjb25zdGFudHN9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUxhbmd1YWdlc0NvbnN0YW50c0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlQWN0aXZpdHlTZXR0aW5ncyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQWN0aXZpdHlTZXR0aW5nc0NvbnN0YW50c0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEFjdGl2aXR5SW52aXRlU2V0dGluZ3MoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVBY3Rpdml0eVNldHRpbmdzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVBY3Rpdml0eVNldHRpbmdzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVBY3Rpdml0eU1heEF0dGVuZGFudHNUeXBlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQWN0aXZpdHlNYXhBdHRlbmRhbnRzVHlwZXNDb25zdGFudHNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRBY3Rpdml0eU1heEF0dGVuZGFudHNUeXBlcygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUFjdGl2aXR5TWF4QXR0ZW5kYW50c1R5cGVzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVBY3Rpdml0eU1heEF0dGVuZGFudHNUeXBlc0NvbnN0YW50c0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlQWN0aXZpdHlNZWV0VXBUaW1lcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQWN0aXZpdHlNZWV0VXBUaW1lc0NvbnN0YW50c0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEFjdGl2aXR5TWVldFVwVGltZXMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVBY3Rpdml0eU1lZXRVcFRpbWVzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVBY3Rpdml0eU1lZXRVcFRpbWVzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyRGF5cyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlckRheXNDb25zdGFudHNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRBY3Rpdml0eVJlbWluZGVyRGF5cygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJEYXlzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVBY3Rpdml0eVJlbWluZGVyRGF5c0NvbnN0YW50c0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlclJlY2VpdmVycyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlclJlY2VpdmVyc0NvbnN0YW50c0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEFjdGl2aXR5UmVtaW5kZXJSZWNlaXZlcnMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyUmVjZWl2ZXJzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVBY3Rpdml0eVJlbWluZGVyUmVjZWl2ZXJzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyVGltZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJUaW1lc0NvbnN0YW50c0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEFjdGl2aXR5UmVtaW5kZXJUaW1lcygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJUaW1lc0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlclRpbWVzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVBY3Rpdml0eVJlcGVhdE9wdGlvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZUFjdGl2aXR5UmVwZWF0T3B0aW9uc0NvbnN0YW50c0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEFjdGl2aXR5UmVwZWF0T3B0aW9ucygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUFjdGl2aXR5UmVwZWF0T3B0aW9uc0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQWN0aXZpdHlSZXBlYXRPcHRpb25zQ29uc3RhbnRzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVBY3Rpdml0eVJlcGVhdFR5cGVPcHRpb25zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVBY3Rpdml0eVJlcGVhdFR5cGVPcHRpb25zQ29uc3RhbnRzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0QWN0aXZpdHlSZXBlYXRUeXBlT3B0aW9ucygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUFjdGl2aXR5UmVwZWF0VHlwZU9wdGlvbnNDb25zdGFudHNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjb25zdGFudHN9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUFjdGl2aXR5UmVwZWF0VHlwZU9wdGlvbnNDb25zdGFudHNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZUNvdW50cmllcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQ291bnRyaWVzQ29uc3RhbnRzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0Q291bnRyaWVzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlQ291bnRyaWVzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVDb3VudHJpZXNDb25zdGFudHNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZU1lbWJlckNvbnRhY3RUeXBlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlTWVtYmVyQ29udGFjdFR5cGVzQ29uc3RhbnRzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0TWVtYmVyQ29udGFjdFR5cGVzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlTWVtYmVyQ29udGFjdFR5cGVzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVNZW1iZXJDb250YWN0VHlwZXNDb25zdGFudHNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZUJvb2tpbmdTbG90VHlwZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZUJvb2tpbmdTbG90VHlwZXNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRCb29raW5nU2xvdFR5cGVzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlQm9va2luZ1Nsb3RUeXBlc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQm9va2luZ1Nsb3RUeXBlc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlVGVhbUJvb2tpbmdTbG90VHlwZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZVRlYW1Cb29raW5nU2xvdFR5cGVzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0VGVhbUJvb2tpbmdTbG90VHlwZXMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVUZWFtQm9va2luZ1Nsb3RUeXBlc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlVGVhbUJvb2tpbmdTbG90VHlwZXNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZU1lbWJlckJvb2tpbmdTbG90VHlwZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZU1lbWJlckJvb2tpbmdTbG90VHlwZXNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRNZW1iZXJCb29raW5nU2xvdFR5cGVzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlTWVtYmVyQm9va2luZ1Nsb3RUeXBlc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlTWVtYmVyQm9va2luZ1Nsb3RUeXBlc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlQm9va2luZ1Nsb3RSZXNlcnZlZFRpbWVQb3NpdGlvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZUJvb2tpbmdTbG90UmVzZXJ2ZWRUaW1lUG9zaXRpb25zQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0Qm9va2luZ1Nsb3RSZXNlcnZlZFRpbWVQb3NpdGlvbnMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVCb29raW5nU2xvdFJlc2VydmVkVGltZVBvc2l0aW9uc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQm9va2luZ1Nsb3RSZXNlcnZlZFRpbWVQb3NpdGlvbnNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZUJvb2tpbmdTbG90U2Vzc2lvblR5cGVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVCb29raW5nU2xvdFNlc3Npb25UeXBlc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEJvb2tpbmdTbG90U2Vzc2lvblR5cGVzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlQm9va2luZ1Nsb3RTZXNzaW9uVHlwZXNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjb25zdGFudHN9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUJvb2tpbmdTbG90U2Vzc2lvblR5cGVzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVCb29raW5nQ2FsZW5kYXJTdGF0dXNlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQm9va2luZ0NhbGVuZGFyU3RhdHVzZXNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRCb29raW5nQ2FsZW5kYXJTdGF0dXNlcygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclN0YXR1c2VzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVCb29raW5nQ2FsZW5kYXJTdGF0dXNlc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlQm9va2luZ0NhbGVuZGFyVHlwZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclR5cGVzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0Qm9va2luZ0NhbGVuZGFyVHlwZXMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVCb29raW5nQ2FsZW5kYXJUeXBlc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQm9va2luZ0NhbGVuZGFyVHlwZXNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZUZlYXR1cmVGbGFncyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlRmVhdHVyZUZsYWdzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoXG4gICAgICAgICh7cm9sZSwgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkfToge1xuICAgICAgICAgIHJvbGU6IFJvbGUsXG4gICAgICAgICAgY2x1Yk9yU2VjdGlvbk9yVGVhbUlkOiBzdHJpbmdcbiAgICAgICAgfSkgPT4gdGhpcy5mZWF0dXJlRmxhZ3NTZXJ2aWNlLmdldEZlYXR1cmVGbGFncyhyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGZlYXR1cmVGbGFnczogRmVhdHVyZUZsYWdzKSA9PiByZXRyaWV2ZUZlYXR1cmVGbGFnc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGZlYXR1cmVGbGFnc30pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVGZWF0dXJlRmxhZ3NGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlMkZBVHlwZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZTJGQU1ldGhvZHNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXQyRkFNZXRob2RzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlMkZBTWV0aG9kc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlMkZBTWV0aG9kc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xufVxuIl19
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnQuZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtYWNjZXNzL3NyYy9saWIvc3RvcmUvZWZmZWN0cy9jb25zdGFudC5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLCtCQUErQixFQUMvQiwrQkFBK0IsRUFDL0IsaURBQWlELEVBQ2pELHdEQUF3RCxFQUN4RCx3REFBd0QsRUFDeEQsMENBQTBDLEVBQzFDLGlEQUFpRCxFQUNqRCxpREFBaUQsRUFDakQsNENBQTRDLEVBQzVDLG1EQUFtRCxFQUNuRCxtREFBbUQsRUFDbkQsMkNBQTJDLEVBQzNDLGtEQUFrRCxFQUNsRCxrREFBa0QsRUFDbEQsZ0RBQWdELEVBQ2hELHVEQUF1RCxFQUN2RCx1REFBdUQsRUFDdkQsNENBQTRDLEVBQzVDLG1EQUFtRCxFQUNuRCxtREFBbUQsRUFDbkQsNENBQTRDLEVBQzVDLG1EQUFtRCxFQUNuRCxtREFBbUQsRUFDbkQsZ0RBQWdELEVBQ2hELHVEQUF1RCxFQUN2RCx1REFBdUQsRUFBRSx1Q0FBdUMsRUFDaEcsOENBQThDLEVBQzlDLDhDQUE4QyxFQUFFLCtCQUErQixFQUMvRSxzQ0FBc0MsRUFDdEMsc0NBQXNDLEVBQ3RDLHVDQUF1QyxFQUN2Qyw4Q0FBOEMsRUFDOUMsOENBQThDLEVBQzlDLHFDQUFxQyxFQUNyQyw0Q0FBNEMsRUFDNUMsNENBQTRDLEVBQzVDLGtDQUFrQyxFQUNsQyx5Q0FBeUMsRUFDekMseUNBQXlDLEVBQ3pDLDhDQUE4QyxFQUM5QyxxREFBcUQsRUFDckQscURBQXFELEVBQ3JELHFDQUFxQyxFQUNyQyw0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RUFBRSxDQUFDLGlDQUFpQyxDQUFDLEVBQUMsT0FBTyxFQUFFLFlBQVksRUFBQyxDQUFDLENBQUMsRUFDL0YsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLGlDQUFpQyxDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUNsRyxDQUNKLENBQ0YsQ0FDRixDQUFDO0lBRUYsaUJBQWlCLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRO1NBQ2pELElBQUksQ0FDSCxNQUFNLENBQUMsd0JBQXdCLENBQUMsRUFDaEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFO1NBQ2xELElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxTQUFpQyxFQUFFLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQyxFQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDLEVBQ2pHLFVBQVUsQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDaEcsQ0FDRixDQUNGLENBQ0YsQ0FBQzt1R0EzUlMsZUFBZTsyR0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHtcbiAgcmV0cmlldmUyRkFNZXRob2RzQWN0aW9uLFxuICByZXRyaWV2ZTJGQU1ldGhvZHNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZTJGQU1ldGhvZHNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5TWF4QXR0ZW5kYW50c1R5cGVzQ29uc3RhbnRzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5TWF4QXR0ZW5kYW50c1R5cGVzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eU1heEF0dGVuZGFudHNUeXBlc0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQWN0aXZpdHlNZWV0VXBUaW1lc0NvbnN0YW50c0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eU1lZXRVcFRpbWVzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eU1lZXRVcFRpbWVzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVF1ZXN0aW9uVHlwZXNDb25zdGFudHNBY3Rpb24sXG4gIHJldHJpZXZlQWN0aXZpdHlRdWVzdGlvblR5cGVzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVF1ZXN0aW9uVHlwZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJEYXlzQ29uc3RhbnRzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJEYXlzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyRGF5c0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlclJlY2VpdmVyc0NvbnN0YW50c0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyUmVjZWl2ZXJzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyUmVjZWl2ZXJzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyVGltZXNDb25zdGFudHNBY3Rpb24sXG4gIHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlclRpbWVzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyVGltZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5UmVwZWF0T3B0aW9uc0NvbnN0YW50c0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlcGVhdE9wdGlvbnNDb25zdGFudHNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5UmVwZWF0T3B0aW9uc0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQWN0aXZpdHlSZXBlYXRUeXBlT3B0aW9uc0NvbnN0YW50c0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlcGVhdFR5cGVPcHRpb25zQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJlcGVhdFR5cGVPcHRpb25zQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbiwgcmV0cmlldmVBY3Rpdml0eVJ1bGVSZWxhdGlvblR5cGVzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5UnVsZVJlbGF0aW9uVHlwZXNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5UnVsZVJlbGF0aW9uVHlwZXNTdWNjZXNzQWN0aW9uLCByZXRyaWV2ZUFjdGl2aXR5UnVsZVR5cGVzQWN0aW9uLFxuICByZXRyaWV2ZUFjdGl2aXR5UnVsZVR5cGVzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVJ1bGVUeXBlc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQWN0aXZpdHlTZXR0aW5nc0NvbnN0YW50c0FjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVNldHRpbmdzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVBY3Rpdml0eVNldHRpbmdzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVCb29raW5nQ2FsZW5kYXJTdGF0dXNlc0FjdGlvbixcbiAgcmV0cmlldmVCb29raW5nQ2FsZW5kYXJTdGF0dXNlc0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ0NhbGVuZGFyU3RhdHVzZXNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclR5cGVzQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclR5cGVzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVCb29raW5nQ2FsZW5kYXJUeXBlc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ1Nsb3RSZXNlcnZlZFRpbWVQb3NpdGlvbnNBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ1Nsb3RSZXNlcnZlZFRpbWVQb3NpdGlvbnNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdTbG90UmVzZXJ2ZWRUaW1lUG9zaXRpb25zU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2xvdFNlc3Npb25UeXBlc0FjdGlvbixcbiAgcmV0cmlldmVCb29raW5nU2xvdFNlc3Npb25UeXBlc0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ1Nsb3RTZXNzaW9uVHlwZXNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUJvb2tpbmdTbG90VHlwZXNBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ1Nsb3RUeXBlc0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlQm9va2luZ1Nsb3RUeXBlc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlQ291bnRyaWVzQ29uc3RhbnRzQWN0aW9uLFxuICByZXRyaWV2ZUNvdW50cmllc0NvbnN0YW50c0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlQ291bnRyaWVzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVGZWF0dXJlRmxhZ3NBY3Rpb24sXG4gIHJldHJpZXZlRmVhdHVyZUZsYWdzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVGZWF0dXJlRmxhZ3NTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZUxhbmd1YWdlc0NvbnN0YW50c0FjdGlvbixcbiAgcmV0cmlldmVMYW5ndWFnZXNDb25zdGFudHNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZUxhbmd1YWdlc0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyQm9va2luZ1Nsb3RUeXBlc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJCb29raW5nU2xvdFR5cGVzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJCb29raW5nU2xvdFR5cGVzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJDb250YWN0VHlwZXNDb25zdGFudHNBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyQ29udGFjdFR5cGVzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJDb250YWN0VHlwZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1Cb29raW5nU2xvdFR5cGVzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1Cb29raW5nU2xvdFR5cGVzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVUZWFtQm9va2luZ1Nsb3RUeXBlc1N1Y2Nlc3NBY3Rpb25cbn0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBDb25zdGFudFNlcnZpY2UsIEZlYXR1cmVGbGFnc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBPcHRpb25JbnRlcmZhY2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGV4aGF1c3RNYXAsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEZlYXR1cmVGbGFncywgUm9sZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbnN0YW50RWZmZWN0cyB7XG4gIHByaXZhdGUgYWN0aW9ucyQgPSBpbmplY3QoQWN0aW9ucyk7XG4gIHByaXZhdGUgY29uc3RhbnRTZXJ2aWNlID0gaW5qZWN0KENvbnN0YW50U2VydmljZSk7XG4gIHByaXZhdGUgZmVhdHVyZUZsYWdzU2VydmljZSA9IGluamVjdChGZWF0dXJlRmxhZ3NTZXJ2aWNlKTtcblxuICByZXRyaWV2ZUxhbmd1YWdlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlTGFuZ3VhZ2VzQ29uc3RhbnRzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0TGFuZ3VhZ2VzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlTGFuZ3VhZ2VzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVMYW5ndWFnZXNDb25zdGFudHNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZUFjdGl2aXR5U2V0dGluZ3MkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZUFjdGl2aXR5U2V0dGluZ3NDb25zdGFudHNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRBY3Rpdml0eUludml0ZVNldHRpbmdzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlQWN0aXZpdHlTZXR0aW5nc0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQWN0aXZpdHlTZXR0aW5nc0NvbnN0YW50c0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlQWN0aXZpdHlNYXhBdHRlbmRhbnRzVHlwZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZUFjdGl2aXR5TWF4QXR0ZW5kYW50c1R5cGVzQ29uc3RhbnRzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0QWN0aXZpdHlNYXhBdHRlbmRhbnRzVHlwZXMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVBY3Rpdml0eU1heEF0dGVuZGFudHNUeXBlc0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQWN0aXZpdHlNYXhBdHRlbmRhbnRzVHlwZXNDb25zdGFudHNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZUFjdGl2aXR5TWVldFVwVGltZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZUFjdGl2aXR5TWVldFVwVGltZXNDb25zdGFudHNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRBY3Rpdml0eU1lZXRVcFRpbWVzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlQWN0aXZpdHlNZWV0VXBUaW1lc0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQWN0aXZpdHlNZWV0VXBUaW1lc0NvbnN0YW50c0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlQWN0aXZpdHlRdWVzdGlvblR5cGVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVBY3Rpdml0eVF1ZXN0aW9uVHlwZXNDb25zdGFudHNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRBY3Rpdml0eVF1ZXN0aW9uVHlwZXMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVBY3Rpdml0eVF1ZXN0aW9uVHlwZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjb25zdGFudHN9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUFjdGl2aXR5UXVlc3Rpb25UeXBlc0NvbnN0YW50c0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApXG5cbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyRGF5cyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlckRheXNDb25zdGFudHNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRBY3Rpdml0eVJlbWluZGVyRGF5cygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJEYXlzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVBY3Rpdml0eVJlbWluZGVyRGF5c0NvbnN0YW50c0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlclJlY2VpdmVycyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlclJlY2VpdmVyc0NvbnN0YW50c0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEFjdGl2aXR5UmVtaW5kZXJSZWNlaXZlcnMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyUmVjZWl2ZXJzQ29uc3RhbnRzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVBY3Rpdml0eVJlbWluZGVyUmVjZWl2ZXJzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVBY3Rpdml0eVJlbWluZGVyVGltZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJUaW1lc0NvbnN0YW50c0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEFjdGl2aXR5UmVtaW5kZXJUaW1lcygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUFjdGl2aXR5UmVtaW5kZXJUaW1lc0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQWN0aXZpdHlSZW1pbmRlclRpbWVzQ29uc3RhbnRzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVBY3Rpdml0eVJlcGVhdE9wdGlvbnMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZUFjdGl2aXR5UmVwZWF0T3B0aW9uc0NvbnN0YW50c0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEFjdGl2aXR5UmVwZWF0T3B0aW9ucygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUFjdGl2aXR5UmVwZWF0T3B0aW9uc0NvbnN0YW50c1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQWN0aXZpdHlSZXBlYXRPcHRpb25zQ29uc3RhbnRzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVBY3Rpdml0eVJlcGVhdFR5cGVPcHRpb25zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVBY3Rpdml0eVJlcGVhdFR5cGVPcHRpb25zQ29uc3RhbnRzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0QWN0aXZpdHlSZXBlYXRUeXBlT3B0aW9ucygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUFjdGl2aXR5UmVwZWF0VHlwZU9wdGlvbnNDb25zdGFudHNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjb25zdGFudHN9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUFjdGl2aXR5UmVwZWF0VHlwZU9wdGlvbnNDb25zdGFudHNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZUFjdGl2aXR5UnVsZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZUFjdGl2aXR5UnVsZVR5cGVzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0QWN0aXZpdHlSdWxlcygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUFjdGl2aXR5UnVsZVR5cGVzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVBY3Rpdml0eVJ1bGVUeXBlc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlQWN0aXZpdHlSdWxlUmVsYXRpb25zJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVBY3Rpdml0eVJ1bGVSZWxhdGlvblR5cGVzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0QWN0aXZpdHlSdWxlUmVsYXRpb25zKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlQWN0aXZpdHlSdWxlUmVsYXRpb25UeXBlc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQWN0aXZpdHlSdWxlUmVsYXRpb25UeXBlc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlQ291bnRyaWVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVDb3VudHJpZXNDb25zdGFudHNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRDb3VudHJpZXMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVDb3VudHJpZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjb25zdGFudHN9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUNvdW50cmllc0NvbnN0YW50c0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlTWVtYmVyQ29udGFjdFR5cGVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVNZW1iZXJDb250YWN0VHlwZXNDb25zdGFudHNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRNZW1iZXJDb250YWN0VHlwZXMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVNZW1iZXJDb250YWN0VHlwZXNDb25zdGFudHNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjb25zdGFudHN9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZU1lbWJlckNvbnRhY3RUeXBlc0NvbnN0YW50c0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlQm9va2luZ1Nsb3RUeXBlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQm9va2luZ1Nsb3RUeXBlc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEJvb2tpbmdTbG90VHlwZXMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVCb29raW5nU2xvdFR5cGVzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVCb29raW5nU2xvdFR5cGVzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVUZWFtQm9va2luZ1Nsb3RUeXBlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlVGVhbUJvb2tpbmdTbG90VHlwZXNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRUZWFtQm9va2luZ1Nsb3RUeXBlcygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZVRlYW1Cb29raW5nU2xvdFR5cGVzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVUZWFtQm9va2luZ1Nsb3RUeXBlc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlTWVtYmVyQm9va2luZ1Nsb3RUeXBlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlTWVtYmVyQm9va2luZ1Nsb3RUeXBlc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldE1lbWJlckJvb2tpbmdTbG90VHlwZXMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVNZW1iZXJCb29raW5nU2xvdFR5cGVzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVNZW1iZXJCb29raW5nU2xvdFR5cGVzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVCb29raW5nU2xvdFJlc2VydmVkVGltZVBvc2l0aW9ucyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQm9va2luZ1Nsb3RSZXNlcnZlZFRpbWVQb3NpdGlvbnNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRCb29raW5nU2xvdFJlc2VydmVkVGltZVBvc2l0aW9ucygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUJvb2tpbmdTbG90UmVzZXJ2ZWRUaW1lUG9zaXRpb25zU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVCb29raW5nU2xvdFJlc2VydmVkVGltZVBvc2l0aW9uc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlQm9va2luZ1Nsb3RTZXNzaW9uVHlwZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShyZXRyaWV2ZUJvb2tpbmdTbG90U2Vzc2lvblR5cGVzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKCkgPT4gdGhpcy5jb25zdGFudFNlcnZpY2UuZ2V0Qm9va2luZ1Nsb3RTZXNzaW9uVHlwZXMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmVCb29raW5nU2xvdFNlc3Npb25UeXBlc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IGNvbnN0YW50c30pKSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlQm9va2luZ1Nsb3RTZXNzaW9uVHlwZXNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclN0YXR1c2VzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVCb29raW5nQ2FsZW5kYXJTdGF0dXNlc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldEJvb2tpbmdDYWxlbmRhclN0YXR1c2VzKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChjb25zdGFudHM6IEFycmF5PE9wdGlvbkludGVyZmFjZT4pID0+IHJldHJpZXZlQm9va2luZ0NhbGVuZGFyU3RhdHVzZXNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiBjb25zdGFudHN9KSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclN0YXR1c2VzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVCb29raW5nQ2FsZW5kYXJUeXBlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlQm9va2luZ0NhbGVuZGFyVHlwZXNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB0aGlzLmNvbnN0YW50U2VydmljZS5nZXRCb29raW5nQ2FsZW5kYXJUeXBlcygpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgoY29uc3RhbnRzOiBBcnJheTxPcHRpb25JbnRlcmZhY2U+KSA9PiByZXRyaWV2ZUJvb2tpbmdDYWxlbmRhclR5cGVzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVCb29raW5nQ2FsZW5kYXJUeXBlc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlRmVhdHVyZUZsYWdzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVGZWF0dXJlRmxhZ3NBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcChcbiAgICAgICAgKHtyb2xlLCBjbHViT3JTZWN0aW9uT3JUZWFtSWR9OiB7XG4gICAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgICBjbHViT3JTZWN0aW9uT3JUZWFtSWQ6IHN0cmluZ1xuICAgICAgICB9KSA9PiB0aGlzLmZlYXR1cmVGbGFnc1NlcnZpY2UuZ2V0RmVhdHVyZUZsYWdzKHJvbGUsIGNsdWJPclNlY3Rpb25PclRlYW1JZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoZmVhdHVyZUZsYWdzOiBGZWF0dXJlRmxhZ3MpID0+IHJldHJpZXZlRmVhdHVyZUZsYWdzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogZmVhdHVyZUZsYWdzfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZUZlYXR1cmVGbGFnc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmUyRkFUeXBlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlMkZBTWV0aG9kc0FjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCgpID0+IHRoaXMuY29uc3RhbnRTZXJ2aWNlLmdldDJGQU1ldGhvZHMoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGNvbnN0YW50czogQXJyYXk8T3B0aW9uSW50ZXJmYWNlPikgPT4gcmV0cmlldmUyRkFNZXRob2RzU3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogY29uc3RhbnRzfSkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmUyRkFNZXRob2RzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG59XG4iXX0=
@@ -146,4 +146,4 @@ export class FileEffects {
146
146
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FileEffects, decorators: [{
147
147
  type: Injectable
148
148
  }] });
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL2ZpbGUuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxFQUNoQyxvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQix5QkFBeUIsRUFDekIsZ0NBQWdDLEVBQUUsZ0NBQWdDLEVBQ2xFLG9CQUFvQixFQUNwQiwyQkFBMkIsRUFDM0IsMkJBQTJCLEVBQzNCLCtCQUErQixFQUMvQixzQ0FBc0MsRUFDdEMsc0NBQXNDLEVBQ3RDLDZCQUE2QixFQUM3QixvQ0FBb0MsRUFDcEMsb0NBQW9DLEVBQ3JDLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFJekQsTUFBTSxPQUFPLFdBQVc7SUFDZCxRQUFRLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNCLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFMUMsb0JBQW9CLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFD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QUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQW9CLEVBQUUsQ0FBb0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hHLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9DLENBQUM7YUFBTSxDQUFDO1lBQ04sU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNqQixDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQzt1R0FoTlUsV0FBVzsyR0FBWCxXQUFXOzsyRkFBWCxXQUFXO2tCQUR2QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgRmlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1xuICBjcmVhdGVUZWFtRGlyZWN0b3J5QWN0aW9uLFxuICBjcmVhdGVUZWFtRGlyZWN0b3J5RmFpbHVyZUFjdGlvbixcbiAgY3JlYXRlVGVhbURpcmVjdG9yeVN1Y2Nlc3NBY3Rpb24sXG4gIGNyZWF0ZVRlYW1GaWxlQWN0aW9uLFxuICBjcmVhdGVUZWFtRmlsZUZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZVRlYW1GaWxlU3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlVGVhbURpcmVjdG9yeUFjdGlvbixcbiAgZGVsZXRlVGVhbURpcmVjdG9yeUZhaWx1cmVBY3Rpb24sIGRlbGV0ZVRlYW1EaXJlY3RvcnlTdWNjZXNzQWN0aW9uLFxuICBkZWxldGVUZWFtRmlsZUFjdGlvbixcbiAgZGVsZXRlVGVhbUZpbGVGYWlsdXJlQWN0aW9uLFxuICBkZWxldGVUZWFtRmlsZVN1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyRGlyZWN0b3JpZXNBY3Rpb24sXG4gIHJldHJpZXZlTWVtYmVyRGlyZWN0b3JpZXNGYWlsdXJlQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckRpcmVjdG9yaWVzU3VjY2Vzc0FjdGlvbixcbiAgcmV0cmlldmVUZWFtRGlyZWN0b3JpZXNBY3Rpb24sXG4gIHJldHJpZXZlVGVhbURpcmVjdG9yaWVzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVUZWFtRGlyZWN0b3JpZXNTdWNjZXNzQWN0aW9uXG59IGZyb20gJy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgZXhoYXVzdE1hcCwgZm9ya0pvaW4sIG1lcmdlTWFwLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiwgRGlyZWN0b3J5LCBGaWxlT2JqZWN0IH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IExvY2F0aW9uSW50ZXJmYWNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRmlsZUVmZmVjdHMge1xuICBwcml2YXRlIGFjdGlvbnMkID0gaW5qZWN0KEFjdGlvbnMpO1xuICBwcml2YXRlIGZpbGVTZXJ2aWNlID0gaW5qZWN0KEZpbGVTZXJ2aWNlKTtcblxuICBjcmVhdGVUZWFtRGlyZWN0b3J5JCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoY3JlYXRlVGVhbURpcmVjdG9yeUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRlYW1JZDogc3RyaW5nLCBkaXJlY3Rvcnk6IFBhcnRpYWw8RGlyZWN0b3J5PiB9XG4gICAgICAgIH0pID0+IHRoaXMuZmlsZVNlcnZpY2UuY3JlYXRlVGVhbURpcmVjdG9yeShwYXlsb2FkLnRlYW1JZCwge25hbWU6IHBheWxvYWQuZGlyZWN0b3J5Lm5hbWV9KVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChkaXJlY3Rvcnk6IERpcmVjdG9yeSkgPT4gY3JlYXRlVGVhbURpcmVjdG9yeVN1Y2Nlc3NBY3Rpb24oe1xuICAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgICAgdGVhbUlkOiBwYXlsb2FkLnRlYW1JZCxcbiAgICAgICAgICAgICAgICBkaXJlY3RvcnlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVUZWFtRGlyZWN0b3J5RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBjcmVhdGVUZWFtRmlsZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGNyZWF0ZVRlYW1GaWxlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdGVhbUlkOiBzdHJpbmcsIGRpcmVjdG9yeUlkOiBzdHJpbmcsIGZpbGU6IFBhcnRpYWw8RmlsZU9iamVjdD4gfVxuICAgICAgICB9KSA9PiB0aGlzLmZpbGVTZXJ2aWNlLmNyZWF0ZVRlYW1GaWxlKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmRpcmVjdG9yeUlkLCBwYXlsb2FkLmZpbGUpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGZpbGU6IEZpbGVPYmplY3QpID0+IGNyZWF0ZVRlYW1GaWxlU3VjY2Vzc0FjdGlvbih7XG4gICAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgICB0ZWFtSWQ6IHBheWxvYWQudGVhbUlkLFxuICAgICAgICAgICAgICAgIGRpcmVjdG9yeUlkOiBwYXlsb2FkLmRpcmVjdG9yeUlkLFxuICAgICAgICAgICAgICAgIGZpbGVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihjcmVhdGVUZWFtRmlsZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgZGVsZXRlVGVhbURpcmVjdG9yeSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGRlbGV0ZVRlYW1EaXJlY3RvcnlBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0ZWFtSWQ6IHN0cmluZywgZGlyZWN0b3J5SWQ6IHN0cmluZyB9XG4gICAgICAgIH0pID0+IHRoaXMuZmlsZVNlcnZpY2UuZGVsZXRlVGVhbURpcmVjdG9yeShwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5kaXJlY3RvcnlJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoc3VjY2VzczogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWxldGVUZWFtRGlyZWN0b3J5U3VjY2Vzc0FjdGlvbih7cGF5bG9hZDogey4uLnBheWxvYWR9fSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZVRlYW1EaXJlY3RvcnlGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBuZXcgSHR0cEVycm9yUmVzcG9uc2Uoe3N0YXR1czogNDAwfSl9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZVRlYW1EaXJlY3RvcnlGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGRlbGV0ZVRlYW1GaWxlJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUoZGVsZXRlVGVhbUZpbGVBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0ZWFtSWQ6IHN0cmluZywgZGlyZWN0b3J5SWQ6IHN0cmluZywgZmlsZUlkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLmZpbGVTZXJ2aWNlLmRlbGV0ZVRlYW1GaWxlKHBheWxvYWQudGVhbUlkLCBwYXlsb2FkLmRpcmVjdG9yeUlkLCBwYXlsb2FkLmZpbGVJZClcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoc3VjY2VzczogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWxldGVUZWFtRmlsZVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHsuLi5wYXlsb2FkfX0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWxldGVUZWFtRmlsZUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7c3RhdHVzOiA0MDB9KX0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoZGVsZXRlVGVhbUZpbGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIHJldHJpZXZlVGVhbURpcmVjdG9yaWVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVUZWFtRGlyZWN0b3JpZXNBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IHN0cmluZyB9KSA9PiB0aGlzLmZpbGVTZXJ2aWNlLmdldFRlYW1EaXJlY3RvcmllcyhwYXlsb2FkKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGRpcmVjdG9yaWVzOiBDb2xsZWN0aW9uPERpcmVjdG9yeT4pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gbmV3IE1hcDxzdHJpbmcsIExvY2F0aW9uSW50ZXJmYWNlPigpO1xuXG4gICAgICAgICAgICBkaXJlY3Rvcmllcy50b0FycmF5KCkuZm9yRWFjaCgoZGlyZWN0b3J5OiBEaXJlY3RvcnkpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5hZGREaXJlY3RvcnkoZGlyZWN0b3J5LCBmaWxlcywgcGF5bG9hZCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbGV0IGxvY2F0aW9ucyA9IFsuLi50aGlzLnByb2Nlc3NMb2NhdGlvbnMoZmlsZXMsIHBheWxvYWQpXTtcbiAgICAgICAgICAgIGxvY2F0aW9ucy5zb3J0KChhOiBMb2NhdGlvbkludGVyZmFjZSkgPT4gKGEudGVhbUlkID09PSBwYXlsb2FkID8gLTEgOiAxKSk7XG5cbiAgICAgICAgICAgIHJldHVybiByZXRyaWV2ZVRlYW1EaXJlY3Rvcmllc1N1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHtsb2NhdGlvbnMsIGZpbGVzfX0pO1xuICAgICAgICAgIH0pLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVUZWFtRGlyZWN0b3JpZXNGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZU1lbWJlckRpcmVjdG9yaWVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLmFjdGlvbnMkXG4gICAgLnBpcGUoXG4gICAgICBvZlR5cGUocmV0cmlldmVNZW1iZXJEaXJlY3Rvcmllc0FjdGlvbiksXG4gICAgICBtZXJnZU1hcCgoe3BheWxvYWR9OiB7IHBheWxvYWQ6IEFycmF5PHN0cmluZz4gfSkgPT4ge1xuICAgICAgICBpZiAocGF5bG9hZC5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gZm9ya0pvaW4ocGF5bG9hZC5tYXAoKGlkOiBzdHJpbmcpID0+XG4gICAgICAgICAgICB0aGlzLmZpbGVTZXJ2aWNlLmdldE1lbWJlckRpcmVjdG9yaWVzKGlkKVxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKGRpcmVjdG9yaWVzOiBDb2xsZWN0aW9uPERpcmVjdG9yeT4pID0+ICh7aWQsIGRpcmVjdG9yaWVzOiBkaXJlY3Rvcmllcy50b0FycmF5KCl9KSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZih7aWQsIGVycm9yfSkpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgKSkucGlwZShcbiAgICAgICAgICAgIG1hcChyZXN1bHRzID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBuZXcgTWFwPHN0cmluZywgTG9jYXRpb25JbnRlcmZhY2U+KCk7XG5cbiAgICAgICAgICAgICAgLy8gUHJvY2VzcyBhbmQgYWRkIGRpcmVjdG9yaWVzIHRvIHRoZSBmaWxlcyBtYXBcbiAgICAgICAgICAgICAgcmVzdWx0cy5mb3JFYWNoKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCdkaXJlY3RvcmllcycgaW4gcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICByZXN1bHQuZGlyZWN0b3JpZXMuZm9yRWFjaCgoZGlyZWN0b3J5OiBEaXJlY3RvcnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGREaXJlY3RvcnkoZGlyZWN0b3J5LCBmaWxlcyk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdlcnJvcicgaW4gcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICB0aHJvdyAocmVzdWx0LmVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9ucyA9IHRoaXMucHJvY2Vzc0xvY2F0aW9ucyhmaWxlcyk7XG5cbiAgICAgICAgICAgICAgLy8gRGlzcGF0Y2ggc3VjY2VzcyBhY3Rpb24gd2l0aCB0aGUgcHJvY2Vzc2VkIHJlc3VsdFxuICAgICAgICAgICAgICByZXR1cm4gcmV0cmlldmVNZW1iZXJEaXJlY3Rvcmllc1N1Y2Nlc3NBY3Rpb24oe1xuICAgICAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgICAgIGxvY2F0aW9ucyxcbiAgICAgICAgICAgICAgICAgIGZpbGVzXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihyZXRyaWV2ZU1lbWJlckRpcmVjdG9yaWVzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBbcmV0cmlldmVNZW1iZXJEaXJlY3Rvcmllc1N1Y2Nlc3NBY3Rpb24oe1xuICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICBsb2NhdGlvbnM6IFtdLFxuICAgICAgICAgICAgICBmaWxlczogbmV3IE1hcDxzdHJpbmcsIExvY2F0aW9uSW50ZXJmYWNlPigpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSldO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICBwcml2YXRlIGFkZERpcmVjdG9yeShkaXJlY3Rvcnk6IERpcmVjdG9yeSwgZmlsZXM6IE1hcDxzdHJpbmcsIExvY2F0aW9uSW50ZXJmYWNlPiwgdGVhbUlkPzogc3RyaW5nKSB7XG4gICAgY29uc3QgbG9jYXRpb25JZCA9IGRpcmVjdG9yeS5iZWxvbmdzVG9UZWFtKCkgPyAndCcgKyBkaXJlY3RvcnkudGVhbV9pZCA6IGRpcmVjdG9yeS5iZWxvbmdzVG9TZWN0aW9uKClcbiAgICAgID8gJ3MnICsgZGlyZWN0b3J5LnNlY3Rpb25faWQgOiAnYycgKyBkaXJlY3RvcnkuY2x1Yl9pZDtcbiAgICBsZXQgbG9jYXRpb24gPSBmaWxlcy5nZXQobG9jYXRpb25JZCk7XG5cbiAgICBpZiAodHlwZW9mIGxvY2F0aW9uID09PSAndW5kZWZpbmVkJykge1xuICAgICAgZmlsZXMuc2V0KGxvY2F0aW9uSWQsIHtcbiAgICAgICAgaWQ6IGxvY2F0aW9uSWQsXG4gICAgICAgIG5hbWU6IGRpcmVjdG9yeS5sb2NhdGlvbl9uYW1lLFxuICAgICAgICBkaXJlY3RvcmllczogW10sXG4gICAgICAgIHRlYW1JZDogZGlyZWN0b3J5LnRlYW1faWQgYXMgc3RyaW5nXG4gICAgICB9KTtcbiAgICAgIGxvY2F0aW9uID0gZmlsZXMuZ2V0KGxvY2F0aW9uSWQpO1xuICAgIH1cblxuICAgIGlmIChsb2NhdGlvbiAmJlxuICAgICAgIWxvY2F0aW9uLmRpcmVjdG9yaWVzLmZpbmQoKHZhbHVlOiBEaXJlY3RvcnkpID0+IHZhbHVlLmlkID09PSBkaXJlY3RvcnkuaWQpICYmXG4gICAgICAoZGlyZWN0b3J5LmZpbGVzLmxlbmd0aCAhPT0gMCB8fCBkaXJlY3RvcnkudGVhbV9pZCA9PT0gdGVhbUlkKSkge1xuICAgICAgbG9jYXRpb24uZGlyZWN0b3JpZXMucHVzaChkaXJlY3RvcnkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0xvY2F0aW9ucyhmaWxlczogTWFwPHN0cmluZywgTG9jYXRpb25JbnRlcmZhY2U+LCB0ZWFtSWQ/OiBzdHJpbmcpOiBBcnJheTxMb2NhdGlvbkludGVyZmFjZT4ge1xuICAgIGxldCBsb2NhdGlvbnM6IEFycmF5PExvY2F0aW9uSW50ZXJmYWNlPiA9IFtdO1xuXG4gICAgaWYgKGZpbGVzLnNpemUgJiYgQXJyYXkuZnJvbShmaWxlcy52YWx1ZXMoKSkuc29tZSgobG9jYXRpb246IExvY2F0aW9uSW50ZXJmYWNlKSA9PiBsb2NhdGlvbi5kaXJlY3Rvcmllcy5sZW5ndGggIT09IDAgfHwgdGVhbUlkKSkge1xuICAgICAgbGV0IGZpcnN0SXRlbTogTG9jYXRpb25JbnRlcmZhY2U7XG4gICAgICBpZiAodHlwZW9mIGZpbGVzLmdldCgnJykgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGZpcnN0SXRlbSA9IGZpbGVzLmdldCgnJykgYXMgTG9jYXRpb25JbnRlcmZhY2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBbZmlyc3RJdGVtXSA9IGZpbGVzLnZhbHVlcygpO1xuICAgICAgfVxuICAgICAgbG9jYXRpb25zID0gW2ZpcnN0SXRlbV07XG5cbiAgICAgIGNvbnN0IG90aGVyTG9jYXRpb25zOiBBcnJheTxMb2NhdGlvbkludGVyZmFjZT4gPSBbXTtcbiAgICAgIGZpbGVzLmZvckVhY2goKGxvY2F0aW9uOiBMb2NhdGlvbkludGVyZmFjZSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKGxvY2F0aW9uKSB7XG4gICAgICAgICAgaWYgKGtleSAmJiAhbG9jYXRpb25zLmZpbmQoKHNlYXJjaExvY2F0aW9uKSA9PlxuICAgICAgICAgICAgbG9jYXRpb24ubmFtZSA9PT0gc2VhcmNoTG9jYXRpb24ubmFtZSAmJlxuICAgICAgICAgICAgbG9jYXRpb24uZGlyZWN0b3JpZXMubGVuZ3RoID09PSBzZWFyY2hMb2NhdGlvbi5kaXJlY3Rvcmllcy5sZW5ndGgpKSB7XG4gICAgICAgICAgICBvdGhlckxvY2F0aW9ucy5wdXNoKGxvY2F0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBvdGhlckxvY2F0aW9ucy5zb3J0KChhOiBMb2NhdGlvbkludGVyZmFjZSwgYjogTG9jYXRpb25JbnRlcmZhY2UpID0+IChhLm5hbWUgPCBiLm5hbWUgPyAtMSA6IDEpKTtcbiAgICAgIGxvY2F0aW9ucyA9IGxvY2F0aW9ucy5jb25jYXQob3RoZXJMb2NhdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2NhdGlvbnMgPSBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gbG9jYXRpb25zO1xuICB9XG59XG4iXX0=
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi9zdG9yZS9lZmZlY3RzL2ZpbGUuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxFQUNoQyxvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQix5QkFBeUIsRUFDekIsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxFQUNoQyxvQkFBb0IsRUFDcEIsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQiwrQkFBK0IsRUFDL0Isc0NBQXNDLEVBQ3RDLHNDQUFzQyxFQUN0Qyw2QkFBNkIsRUFDN0Isb0NBQW9DLEVBQ3BDLG9DQUFvQyxFQUNyQyxNQUFNLFlBQVksQ0FBQztBQUNwQixPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBSXpELE1BQU0sT0FBTyxXQUFXO0lBQ2QsUUFBUSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQixXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTFDLG9CQUFvQixHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FB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WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFvQixFQUFFLENBQW9CLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoRyxTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvQyxDQUFDO2FBQU0sQ0FBQztZQUNOLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDakIsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7dUdBaE5VLFdBQVc7MkdBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgY3JlYXRlRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IEZpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgY3JlYXRlVGVhbURpcmVjdG9yeUFjdGlvbixcbiAgY3JlYXRlVGVhbURpcmVjdG9yeUZhaWx1cmVBY3Rpb24sXG4gIGNyZWF0ZVRlYW1EaXJlY3RvcnlTdWNjZXNzQWN0aW9uLFxuICBjcmVhdGVUZWFtRmlsZUFjdGlvbixcbiAgY3JlYXRlVGVhbUZpbGVGYWlsdXJlQWN0aW9uLFxuICBjcmVhdGVUZWFtRmlsZVN1Y2Nlc3NBY3Rpb24sXG4gIGRlbGV0ZVRlYW1EaXJlY3RvcnlBY3Rpb24sXG4gIGRlbGV0ZVRlYW1EaXJlY3RvcnlGYWlsdXJlQWN0aW9uLFxuICBkZWxldGVUZWFtRGlyZWN0b3J5U3VjY2Vzc0FjdGlvbixcbiAgZGVsZXRlVGVhbUZpbGVBY3Rpb24sXG4gIGRlbGV0ZVRlYW1GaWxlRmFpbHVyZUFjdGlvbixcbiAgZGVsZXRlVGVhbUZpbGVTdWNjZXNzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckRpcmVjdG9yaWVzQWN0aW9uLFxuICByZXRyaWV2ZU1lbWJlckRpcmVjdG9yaWVzRmFpbHVyZUFjdGlvbixcbiAgcmV0cmlldmVNZW1iZXJEaXJlY3Rvcmllc1N1Y2Nlc3NBY3Rpb24sXG4gIHJldHJpZXZlVGVhbURpcmVjdG9yaWVzQWN0aW9uLFxuICByZXRyaWV2ZVRlYW1EaXJlY3Rvcmllc0ZhaWx1cmVBY3Rpb24sXG4gIHJldHJpZXZlVGVhbURpcmVjdG9yaWVzU3VjY2Vzc0FjdGlvblxufSBmcm9tICcuLi9hY3Rpb25zJztcbmltcG9ydCB7IGV4aGF1c3RNYXAsIGZvcmtKb2luLCBtZXJnZU1hcCwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbGxlY3Rpb24sIERpcmVjdG9yeSwgRmlsZU9iamVjdCB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBMb2NhdGlvbkludGVyZmFjZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZpbGVFZmZlY3RzIHtcbiAgcHJpdmF0ZSBhY3Rpb25zJCA9IGluamVjdChBY3Rpb25zKTtcbiAgcHJpdmF0ZSBmaWxlU2VydmljZSA9IGluamVjdChGaWxlU2VydmljZSk7XG5cbiAgY3JlYXRlVGVhbURpcmVjdG9yeSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGNyZWF0ZVRlYW1EaXJlY3RvcnlBY3Rpb24pLFxuICAgICAgZXhoYXVzdE1hcCgoe3BheWxvYWR9OiB7XG4gICAgICAgICAgcGF5bG9hZDogeyB0ZWFtSWQ6IHN0cmluZywgZGlyZWN0b3J5OiBQYXJ0aWFsPERpcmVjdG9yeT4gfVxuICAgICAgICB9KSA9PiB0aGlzLmZpbGVTZXJ2aWNlLmNyZWF0ZVRlYW1EaXJlY3RvcnkocGF5bG9hZC50ZWFtSWQsIHtuYW1lOiBwYXlsb2FkLmRpcmVjdG9yeS5uYW1lfSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoZGlyZWN0b3J5OiBEaXJlY3RvcnkpID0+IGNyZWF0ZVRlYW1EaXJlY3RvcnlTdWNjZXNzQWN0aW9uKHtcbiAgICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICAgIHRlYW1JZDogcGF5bG9hZC50ZWFtSWQsXG4gICAgICAgICAgICAgICAgZGlyZWN0b3J5XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlVGVhbURpcmVjdG9yeUZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgY3JlYXRlVGVhbUZpbGUkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShjcmVhdGVUZWFtRmlsZUFjdGlvbiksXG4gICAgICBleGhhdXN0TWFwKCh7cGF5bG9hZH06IHtcbiAgICAgICAgICBwYXlsb2FkOiB7IHRlYW1JZDogc3RyaW5nLCBkaXJlY3RvcnlJZDogc3RyaW5nLCBmaWxlOiBQYXJ0aWFsPEZpbGVPYmplY3Q+IH1cbiAgICAgICAgfSkgPT4gdGhpcy5maWxlU2VydmljZS5jcmVhdGVUZWFtRmlsZShwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5kaXJlY3RvcnlJZCwgcGF5bG9hZC5maWxlKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChmaWxlOiBGaWxlT2JqZWN0KSA9PiBjcmVhdGVUZWFtRmlsZVN1Y2Nlc3NBY3Rpb24oe1xuICAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgICAgdGVhbUlkOiBwYXlsb2FkLnRlYW1JZCxcbiAgICAgICAgICAgICAgICBkaXJlY3RvcnlJZDogcGF5bG9hZC5kaXJlY3RvcnlJZCxcbiAgICAgICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YoY3JlYXRlVGVhbUZpbGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBlcnJvcn0pKSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICApO1xuXG4gIGRlbGV0ZVRlYW1EaXJlY3RvcnkkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuYWN0aW9ucyRcbiAgICAucGlwZShcbiAgICAgIG9mVHlwZShkZWxldGVUZWFtRGlyZWN0b3J5QWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdGVhbUlkOiBzdHJpbmcsIGRpcmVjdG9yeUlkOiBzdHJpbmcgfVxuICAgICAgICB9KSA9PiB0aGlzLmZpbGVTZXJ2aWNlLmRlbGV0ZVRlYW1EaXJlY3RvcnkocGF5bG9hZC50ZWFtSWQsIHBheWxvYWQuZGlyZWN0b3J5SWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZXRlVGVhbURpcmVjdG9yeVN1Y2Nlc3NBY3Rpb24oe3BheWxvYWQ6IHsuLi5wYXlsb2FkfX0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWxldGVUZWFtRGlyZWN0b3J5RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogbmV3IEh0dHBFcnJvclJlc3BvbnNlKHtzdGF0dXM6IDQwMH0pfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiBvZihkZWxldGVUZWFtRGlyZWN0b3J5RmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBkZWxldGVUZWFtRmlsZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKGRlbGV0ZVRlYW1GaWxlQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfToge1xuICAgICAgICAgIHBheWxvYWQ6IHsgdGVhbUlkOiBzdHJpbmcsIGRpcmVjdG9yeUlkOiBzdHJpbmcsIGZpbGVJZDogc3RyaW5nIH1cbiAgICAgICAgfSkgPT4gdGhpcy5maWxlU2VydmljZS5kZWxldGVUZWFtRmlsZShwYXlsb2FkLnRlYW1JZCwgcGF5bG9hZC5kaXJlY3RvcnlJZCwgcGF5bG9hZC5maWxlSWQpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZXRlVGVhbUZpbGVTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB7Li4ucGF5bG9hZH19KTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZXRlVGVhbUZpbGVGYWlsdXJlQWN0aW9uKHtwYXlsb2FkOiBuZXcgSHR0cEVycm9yUmVzcG9uc2Uoe3N0YXR1czogNDAwfSl9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKGRlbGV0ZVRlYW1GaWxlRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICByZXRyaWV2ZVRlYW1EaXJlY3RvcmllcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlVGVhbURpcmVjdG9yaWVzQWN0aW9uKSxcbiAgICAgIGV4aGF1c3RNYXAoKHtwYXlsb2FkfTogeyBwYXlsb2FkOiBzdHJpbmcgfSkgPT4gdGhpcy5maWxlU2VydmljZS5nZXRUZWFtRGlyZWN0b3JpZXMocGF5bG9hZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChkaXJlY3RvcmllczogQ29sbGVjdGlvbjxEaXJlY3Rvcnk+KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmaWxlcyA9IG5ldyBNYXA8c3RyaW5nLCBMb2NhdGlvbkludGVyZmFjZT4oKTtcblxuICAgICAgICAgICAgZGlyZWN0b3JpZXMudG9BcnJheSgpLmZvckVhY2goKGRpcmVjdG9yeTogRGlyZWN0b3J5KSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuYWRkRGlyZWN0b3J5KGRpcmVjdG9yeSwgZmlsZXMsIHBheWxvYWQpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGxldCBsb2NhdGlvbnMgPSBbLi4udGhpcy5wcm9jZXNzTG9jYXRpb25zKGZpbGVzLCBwYXlsb2FkKV07XG4gICAgICAgICAgICBsb2NhdGlvbnMuc29ydCgoYTogTG9jYXRpb25JbnRlcmZhY2UpID0+IChhLnRlYW1JZCA9PT0gcGF5bG9hZCA/IC0xIDogMSkpO1xuXG4gICAgICAgICAgICByZXR1cm4gcmV0cmlldmVUZWFtRGlyZWN0b3JpZXNTdWNjZXNzQWN0aW9uKHtwYXlsb2FkOiB7bG9jYXRpb25zLCBmaWxlc319KTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IG9mKHJldHJpZXZlVGVhbURpcmVjdG9yaWVzRmFpbHVyZUFjdGlvbih7cGF5bG9hZDogZXJyb3J9KSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICk7XG5cbiAgcmV0cmlldmVNZW1iZXJEaXJlY3RvcmllcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5hY3Rpb25zJFxuICAgIC5waXBlKFxuICAgICAgb2ZUeXBlKHJldHJpZXZlTWVtYmVyRGlyZWN0b3JpZXNBY3Rpb24pLFxuICAgICAgbWVyZ2VNYXAoKHtwYXlsb2FkfTogeyBwYXlsb2FkOiBBcnJheTxzdHJpbmc+IH0pID0+IHtcbiAgICAgICAgaWYgKHBheWxvYWQubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIGZvcmtKb2luKHBheWxvYWQubWFwKChpZDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgdGhpcy5maWxlU2VydmljZS5nZXRNZW1iZXJEaXJlY3RvcmllcyhpZClcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChkaXJlY3RvcmllczogQ29sbGVjdGlvbjxEaXJlY3Rvcnk+KSA9PiAoe2lkLCBkaXJlY3RvcmllczogZGlyZWN0b3JpZXMudG9BcnJheSgpfSkpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2Yoe2lkLCBlcnJvcn0pKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICkpLnBpcGUoXG4gICAgICAgICAgICBtYXAocmVzdWx0cyA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gbmV3IE1hcDxzdHJpbmcsIExvY2F0aW9uSW50ZXJmYWNlPigpO1xuXG4gICAgICAgICAgICAgIC8vIFByb2Nlc3MgYW5kIGFkZCBkaXJlY3RvcmllcyB0byB0aGUgZmlsZXMgbWFwXG4gICAgICAgICAgICAgIHJlc3VsdHMuZm9yRWFjaChyZXN1bHQgPT4ge1xuICAgICAgICAgICAgICAgIGlmICgnZGlyZWN0b3JpZXMnIGluIHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgcmVzdWx0LmRpcmVjdG9yaWVzLmZvckVhY2goKGRpcmVjdG9yeTogRGlyZWN0b3J5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRGlyZWN0b3J5KGRpcmVjdG9yeSwgZmlsZXMpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgnZXJyb3InIGluIHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgdGhyb3cgKHJlc3VsdC5lcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBjb25zdCBsb2NhdGlvbnMgPSB0aGlzLnByb2Nlc3NMb2NhdGlvbnMoZmlsZXMpO1xuXG4gICAgICAgICAgICAgIC8vIERpc3BhdGNoIHN1Y2Nlc3MgYWN0aW9uIHdpdGggdGhlIHByb2Nlc3NlZCByZXN1bHRcbiAgICAgICAgICAgICAgcmV0dXJuIHJldHJpZXZlTWVtYmVyRGlyZWN0b3JpZXNTdWNjZXNzQWN0aW9uKHtcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgICAgICBsb2NhdGlvbnMsXG4gICAgICAgICAgICAgICAgICBmaWxlc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gb2YocmV0cmlldmVNZW1iZXJEaXJlY3Rvcmllc0ZhaWx1cmVBY3Rpb24oe3BheWxvYWQ6IGVycm9yfSkpKVxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gW3JldHJpZXZlTWVtYmVyRGlyZWN0b3JpZXNTdWNjZXNzQWN0aW9uKHtcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgbG9jYXRpb25zOiBbXSxcbiAgICAgICAgICAgICAgZmlsZXM6IG5ldyBNYXA8c3RyaW5nLCBMb2NhdGlvbkludGVyZmFjZT4oKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG4gICk7XG5cbiAgcHJpdmF0ZSBhZGREaXJlY3RvcnkoZGlyZWN0b3J5OiBEaXJlY3RvcnksIGZpbGVzOiBNYXA8c3RyaW5nLCBMb2NhdGlvbkludGVyZmFjZT4sIHRlYW1JZD86IHN0cmluZykge1xuICAgIGNvbnN0IGxvY2F0aW9uSWQgPSBkaXJlY3RvcnkuYmVsb25nc1RvVGVhbSgpID8gJ3QnICsgZGlyZWN0b3J5LnRlYW1faWQgOiBkaXJlY3RvcnkuYmVsb25nc1RvU2VjdGlvbigpXG4gICAgICA/ICdzJyArIGRpcmVjdG9yeS5zZWN0aW9uX2lkIDogJ2MnICsgZGlyZWN0b3J5LmNsdWJfaWQ7XG4gICAgbGV0IGxvY2F0aW9uID0gZmlsZXMuZ2V0KGxvY2F0aW9uSWQpO1xuXG4gICAgaWYgKHR5cGVvZiBsb2NhdGlvbiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGZpbGVzLnNldChsb2NhdGlvbklkLCB7XG4gICAgICAgIGlkOiBsb2NhdGlvbklkLFxuICAgICAgICBuYW1lOiBkaXJlY3RvcnkubG9jYXRpb25fbmFtZSxcbiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLFxuICAgICAgICB0ZWFtSWQ6IGRpcmVjdG9yeS50ZWFtX2lkIGFzIHN0cmluZ1xuICAgICAgfSk7XG4gICAgICBsb2NhdGlvbiA9IGZpbGVzLmdldChsb2NhdGlvbklkKTtcbiAgICB9XG5cbiAgICBpZiAobG9jYXRpb24gJiZcbiAgICAgICFsb2NhdGlvbi5kaXJlY3Rvcmllcy5maW5kKCh2YWx1ZTogRGlyZWN0b3J5KSA9PiB2YWx1ZS5pZCA9PT0gZGlyZWN0b3J5LmlkKSAmJlxuICAgICAgKGRpcmVjdG9yeS5maWxlcy5sZW5ndGggIT09IDAgfHwgZGlyZWN0b3J5LnRlYW1faWQgPT09IHRlYW1JZCkpIHtcbiAgICAgIGxvY2F0aW9uLmRpcmVjdG9yaWVzLnB1c2goZGlyZWN0b3J5KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NMb2NhdGlvbnMoZmlsZXM6IE1hcDxzdHJpbmcsIExvY2F0aW9uSW50ZXJmYWNlPiwgdGVhbUlkPzogc3RyaW5nKTogQXJyYXk8TG9jYXRpb25JbnRlcmZhY2U+IHtcbiAgICBsZXQgbG9jYXRpb25zOiBBcnJheTxMb2NhdGlvbkludGVyZmFjZT4gPSBbXTtcblxuICAgIGlmIChmaWxlcy5zaXplICYmIEFycmF5LmZyb20oZmlsZXMudmFsdWVzKCkpLnNvbWUoKGxvY2F0aW9uOiBMb2NhdGlvbkludGVyZmFjZSkgPT4gbG9jYXRpb24uZGlyZWN0b3JpZXMubGVuZ3RoICE9PSAwIHx8IHRlYW1JZCkpIHtcbiAgICAgIGxldCBmaXJzdEl0ZW06IExvY2F0aW9uSW50ZXJmYWNlO1xuICAgICAgaWYgKHR5cGVvZiBmaWxlcy5nZXQoJycpICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBmaXJzdEl0ZW0gPSBmaWxlcy5nZXQoJycpIGFzIExvY2F0aW9uSW50ZXJmYWNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgW2ZpcnN0SXRlbV0gPSBmaWxlcy52YWx1ZXMoKTtcbiAgICAgIH1cbiAgICAgIGxvY2F0aW9ucyA9IFtmaXJzdEl0ZW1dO1xuXG4gICAgICBjb25zdCBvdGhlckxvY2F0aW9uczogQXJyYXk8TG9jYXRpb25JbnRlcmZhY2U+ID0gW107XG4gICAgICBmaWxlcy5mb3JFYWNoKChsb2NhdGlvbjogTG9jYXRpb25JbnRlcmZhY2UsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmIChsb2NhdGlvbikge1xuICAgICAgICAgIGlmIChrZXkgJiYgIWxvY2F0aW9ucy5maW5kKChzZWFyY2hMb2NhdGlvbikgPT5cbiAgICAgICAgICAgIGxvY2F0aW9uLm5hbWUgPT09IHNlYXJjaExvY2F0aW9uLm5hbWUgJiZcbiAgICAgICAgICAgIGxvY2F0aW9uLmRpcmVjdG9yaWVzLmxlbmd0aCA9PT0gc2VhcmNoTG9jYXRpb24uZGlyZWN0b3JpZXMubGVuZ3RoKSkge1xuICAgICAgICAgICAgb3RoZXJMb2NhdGlvbnMucHVzaChsb2NhdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgb3RoZXJMb2NhdGlvbnMuc29ydCgoYTogTG9jYXRpb25JbnRlcmZhY2UsIGI6IExvY2F0aW9uSW50ZXJmYWNlKSA9PiAoYS5uYW1lIDwgYi5uYW1lID8gLTEgOiAxKSk7XG4gICAgICBsb2NhdGlvbnMgPSBsb2NhdGlvbnMuY29uY2F0KG90aGVyTG9jYXRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9jYXRpb25zID0gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvY2F0aW9ucztcbiAgfVxufVxuIl19