@dcl/asset-packs 2.16.2 → 2.16.3

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 (47) hide show
  1. package/bin/index.js +445 -325
  2. package/dist/admin-toolkit-ui/Active.d.ts +3 -2
  3. package/dist/admin-toolkit-ui/Active.js +1 -1
  4. package/dist/admin-toolkit-ui/Card.d.ts +2 -1
  5. package/dist/admin-toolkit-ui/Card.js +1 -1
  6. package/dist/admin-toolkit-ui/FeedbackButton.js +2 -2
  7. package/dist/admin-toolkit-ui/Loading.d.ts +3 -2
  8. package/dist/admin-toolkit-ui/Loading.js +1 -1
  9. package/dist/admin-toolkit-ui/ModerationControl/AddUserInput.d.ts +1 -1
  10. package/dist/admin-toolkit-ui/ModerationControl/AddUserInput.js +1 -1
  11. package/dist/admin-toolkit-ui/ModerationControl/BanUserDescription.js +1 -1
  12. package/dist/admin-toolkit-ui/ModerationControl/RemoveAdminConfirmation.js +4 -4
  13. package/dist/admin-toolkit-ui/ModerationControl/UsersList.js +16 -14
  14. package/dist/admin-toolkit-ui/ModerationControl/index.d.ts +0 -7
  15. package/dist/admin-toolkit-ui/ModerationControl/index.js +4 -9
  16. package/dist/admin-toolkit-ui/SmartItemsControl.js +15 -33
  17. package/dist/admin-toolkit-ui/TextAnnouncementsControl.js +14 -12
  18. package/dist/admin-toolkit-ui/VideoControl/DclCast/CompactDclCast.js +7 -9
  19. package/dist/admin-toolkit-ui/VideoControl/DclCast/DclCastInfo.js +4 -3
  20. package/dist/admin-toolkit-ui/VideoControl/DclCast/index.d.ts +0 -14
  21. package/dist/admin-toolkit-ui/VideoControl/DclCast/index.js +32 -136
  22. package/dist/admin-toolkit-ui/VideoControl/DclCast/presentation-detector.d.ts +2 -0
  23. package/dist/admin-toolkit-ui/VideoControl/DclCast/presentation-detector.js +116 -0
  24. package/dist/admin-toolkit-ui/VideoControl/LiveStream/DeleteStreamKey.d.ts +1 -1
  25. package/dist/admin-toolkit-ui/VideoControl/LiveStream/DeleteStreamKey.js +2 -2
  26. package/dist/admin-toolkit-ui/VideoControl/LiveStream/GenerateStreamKey.d.ts +1 -1
  27. package/dist/admin-toolkit-ui/VideoControl/LiveStream/GenerateStreamKey.js +2 -2
  28. package/dist/admin-toolkit-ui/VideoControl/LiveStream/ShowStreamKey.js +5 -4
  29. package/dist/admin-toolkit-ui/VideoControl/LiveStream/index.js +2 -2
  30. package/dist/admin-toolkit-ui/VideoControl/api.d.ts +5 -2
  31. package/dist/admin-toolkit-ui/VideoControl/api.js +22 -12
  32. package/dist/admin-toolkit-ui/VideoControl/index.js +14 -15
  33. package/dist/admin-toolkit-ui/VideoControl/utils.d.ts +2 -0
  34. package/dist/admin-toolkit-ui/VideoControl/utils.js +15 -3
  35. package/dist/admin-toolkit-ui/actions.d.ts +42 -0
  36. package/dist/admin-toolkit-ui/actions.js +138 -0
  37. package/dist/admin-toolkit-ui/admin-message-bus.js +17 -2
  38. package/dist/admin-toolkit-ui/index.d.ts +0 -3
  39. package/dist/admin-toolkit-ui/index.js +20 -93
  40. package/dist/admin-toolkit-ui/store.d.ts +2 -0
  41. package/dist/admin-toolkit-ui/store.js +45 -0
  42. package/dist/admin-toolkit-ui/types.d.ts +22 -5
  43. package/dist/admin-toolkit-ui/types.js +1 -2
  44. package/dist/bin/index.js +445 -325
  45. package/package.json +1 -1
  46. package/dist/admin-toolkit-ui/RewardsControl.d.ts +0 -7
  47. package/dist/admin-toolkit-ui/RewardsControl.js +0 -95
@@ -2,13 +2,12 @@ import ReactEcs, { UiEntity } from '@dcl/react-ecs';
2
2
  import { Color4 } from '@dcl/sdk/math';
3
3
  import { getComponents } from '../../../definitions';
4
4
  import { getContentUrl } from '../../constants';
5
- import { setInterval, clearInterval } from '../../utils';
6
5
  import { Button } from '../../Button';
7
6
  import { LoadingDots } from '../../Loading';
8
- import { nextTickFunctions } from '../..';
9
7
  import { LIVEKIT_STREAM_SRC } from '../LiveStream';
10
- import { getDclCastInfo, getActiveStreams, groupTracksByParticipant, resetStreamKey, hasPresentationTrack, subscribeToPresentationTopic, consumePresentationMessages, ensurePresenterRole, } from '../api';
11
- import { createVideoPlayerControls, isDclCast } from '../utils';
8
+ import { getDclCastInfo, getActiveStreams, groupTracksByParticipant, resetStreamKey, ensurePresenterRole, } from '../api';
9
+ import { CAST_SRC_PREFIX, createVideoPlayerControls } from '../utils';
10
+ import { openShowcase, closeShowcase, setShowcaseActiveTrack, openSharePresentation, closeSharePresentation, setStream, setParticipants, setDclCastInfo, minimizeCast, } from '../../actions';
12
11
  import DclCastInfo from './DclCastInfo';
13
12
  import CompactDclCast from './CompactDclCast';
14
13
  import { getDclCastStyles, getDclCastColors } from './styles';
@@ -20,23 +19,7 @@ const ICONS = {
20
19
  return `${getContentUrl()}/admin_toolkit/assets/icons/chevron-up.png`;
21
20
  },
22
21
  };
23
- export const showcaseState = {
24
- show: false,
25
- participants: [],
26
- activeTrackSid: undefined,
27
- onSelectTrack: undefined,
28
- onSetDefault: undefined,
29
- onClose: undefined,
30
- };
31
- export const sharePresentationState = {
32
- show: false,
33
- onClose: undefined,
34
- };
35
- let presentationSubscribed = false;
36
- let consuming = false;
37
- let presentationSystem = null;
38
- let participantPollingSystem = null;
39
- export async function handleGetDclCastInfo(state) {
22
+ async function handleGetDclCastInfo() {
40
23
  const [error, data] = await getDclCastInfo();
41
24
  if (error) {
42
25
  console.error(error);
@@ -44,73 +27,11 @@ export async function handleGetDclCastInfo(state) {
44
27
  }
45
28
  else {
46
29
  if (data) {
47
- state.videoControl.dclCast = data;
30
+ setDclCastInfo(data);
48
31
  return data;
49
32
  }
50
33
  }
51
34
  }
52
- function startPresentationSystem(engine, state) {
53
- if (presentationSystem)
54
- return;
55
- presentationSubscribed = true;
56
- subscribeToPresentationTopic();
57
- const system = () => {
58
- if (consuming)
59
- return;
60
- consuming = true;
61
- consumePresentationMessages()
62
- .then(latestState => {
63
- if (latestState === 'stopped') {
64
- state.videoControl.presentationState = undefined;
65
- }
66
- else if (latestState) {
67
- state.videoControl.presentationState = latestState;
68
- }
69
- })
70
- .catch(() => {
71
- console.log('[DclCast] Failed to consume presentation messages');
72
- })
73
- .finally(() => {
74
- consuming = false;
75
- });
76
- };
77
- engine.addSystem(system);
78
- presentationSystem = system;
79
- }
80
- function stopPresentationSystem(engine, state) {
81
- if (presentationSystem) {
82
- engine.removeSystem(presentationSystem);
83
- presentationSystem = null;
84
- }
85
- state.videoControl.presentationState = undefined;
86
- presentationSubscribed = false;
87
- }
88
- function startParticipantPolling(engine, state) {
89
- if (participantPollingSystem)
90
- return;
91
- const poll = async () => {
92
- const tracks = await getActiveStreams();
93
- if (!tracks)
94
- return;
95
- showcaseState.participants = groupTracksByParticipant(tracks);
96
- const hasPresentation = hasPresentationTrack(tracks);
97
- if (hasPresentation && !presentationSubscribed) {
98
- startPresentationSystem(engine, state);
99
- }
100
- else if (!hasPresentation && presentationSubscribed) {
101
- stopPresentationSystem(engine, state);
102
- }
103
- };
104
- poll();
105
- participantPollingSystem = setInterval(engine, poll, 5000);
106
- }
107
- function stopParticipantPolling(engine, state) {
108
- if (participantPollingSystem) {
109
- clearInterval(engine, participantPollingSystem);
110
- participantPollingSystem = null;
111
- }
112
- stopPresentationSystem(engine, state);
113
- }
114
35
  const DclCast = ({ engine, state, entity, video, playerAddress, }) => {
115
36
  const { VideoControlState } = getComponents(engine);
116
37
  const controls = createVideoPlayerControls(entity, engine);
@@ -122,45 +43,35 @@ const DclCast = ({ engine, state, entity, video, playerAddress, }) => {
122
43
  const latestTracks = await getActiveStreams();
123
44
  if (!latestTracks)
124
45
  return;
125
- console.log('[DclCast] Active tracks:', JSON.stringify(latestTracks, null, 2));
126
- const closeModal = () => {
127
- showcaseState.show = false;
128
- };
129
- showcaseState.participants = groupTracksByParticipant(latestTracks);
130
- showcaseState.onSelectTrack = (track) => {
131
- controls.setSource(track.sid);
132
- showcaseState.activeTrackSid = track.sid;
133
- state.videoControl.selectedStream = 'dcl-cast';
134
- };
135
- showcaseState.onSetDefault = () => {
136
- controls.setSource(LIVEKIT_STREAM_SRC);
137
- showcaseState.activeTrackSid = undefined;
138
- state.videoControl.selectedStream = 'dcl-cast';
139
- };
140
- showcaseState.onClose = closeModal;
141
- nextTickFunctions.push(() => {
142
- showcaseState.show = true;
46
+ setParticipants(groupTracksByParticipant(latestTracks));
47
+ openShowcase({
48
+ onSelectTrack: (track) => {
49
+ controls.setSource(track.sid);
50
+ setShowcaseActiveTrack(track.sid);
51
+ setStream('dcl-cast');
52
+ },
53
+ onSetDefault: () => {
54
+ controls.setSource(LIVEKIT_STREAM_SRC);
55
+ setShowcaseActiveTrack(undefined);
56
+ setStream('dcl-cast');
57
+ },
58
+ onClose: () => closeShowcase(),
143
59
  });
144
60
  };
145
61
  const fetchDclCastInfo = async () => {
146
62
  setIsLoading(true);
147
63
  setError(false);
148
- const result = await handleGetDclCastInfo(state);
64
+ const result = await handleGetDclCastInfo();
149
65
  if (!result) {
150
66
  setError(true);
151
67
  }
152
- else if (video?.src?.startsWith('livekit-video://') && !state.videoControl.selectedStream) {
153
- state.videoControl.selectedStream = 'dcl-cast';
68
+ else if (video?.src?.startsWith(CAST_SRC_PREFIX) && !state.videoControl.selectedStream) {
69
+ setStream('dcl-cast');
154
70
  }
155
71
  setIsLoading(false);
156
72
  };
157
73
  const onSharePresentation = () => {
158
- sharePresentationState.onClose = () => {
159
- sharePresentationState.show = false;
160
- };
161
- nextTickFunctions.push(() => {
162
- sharePresentationState.show = true;
163
- });
74
+ openSharePresentation(() => closeSharePresentation());
164
75
  };
165
76
  const handleResetRoomId = async () => {
166
77
  setIsLoading(true);
@@ -176,31 +87,18 @@ const DclCast = ({ engine, state, entity, video, playerAddress, }) => {
176
87
  }
177
88
  };
178
89
  ReactEcs.useEffect(() => {
179
- fetchDclCastInfo();
180
- if (playerAddress) {
181
- ensurePresenterRole(playerAddress);
182
- }
90
+ fetchDclCastInfo().then(() => {
91
+ if (playerAddress) {
92
+ ensurePresenterRole(playerAddress);
93
+ }
94
+ });
183
95
  }, []);
184
96
  const videoSrc = video?.src;
185
97
  ReactEcs.useEffect(() => {
186
- if (videoSrc?.startsWith('livekit-video://') && !state.videoControl.selectedStream) {
187
- state.videoControl.selectedStream = 'dcl-cast';
98
+ if (videoSrc?.startsWith(CAST_SRC_PREFIX) && !state.videoControl.selectedStream) {
99
+ setStream('dcl-cast');
188
100
  }
189
101
  }, [videoSrc]);
190
- const isCastActive = !!(video?.src && isDclCast(video.src));
191
- ReactEcs.useEffect(() => {
192
- if (isCastActive) {
193
- startParticipantPolling(engine, state);
194
- }
195
- else {
196
- stopParticipantPolling(engine, state);
197
- }
198
- }, [isCastActive]);
199
- ReactEcs.useEffect(() => {
200
- if (state.videoControl.presentationState) {
201
- state.videoControl.isMinimized = true;
202
- }
203
- }, [!!state.videoControl.presentationState]);
204
102
  const isMinimized = state.videoControl.isMinimized;
205
103
  return (ReactEcs.createElement(UiEntity, { uiTransform: styles.fullContainer },
206
104
  ReactEcs.createElement(UiEntity, { uiTransform: { display: isMinimized ? 'flex' : 'none', width: '100%' } },
@@ -222,9 +120,7 @@ const DclCast = ({ engine, state, entity, video, playerAddress, }) => {
222
120
  color: Color4.White(),
223
121
  textAlign: 'middle-left',
224
122
  }, uiTransform: { margin: { left: 10 } } })),
225
- ReactEcs.createElement(UiEntity, { onMouseDown: () => {
226
- state.videoControl.isMinimized = true;
227
- }, uiTransform: styles.chevronButton, uiBackground: {
123
+ ReactEcs.createElement(UiEntity, { onMouseDown: () => minimizeCast(), uiTransform: styles.chevronButton, uiBackground: {
228
124
  textureMode: 'stretch',
229
125
  color: Color4.White(),
230
126
  texture: {
@@ -252,9 +148,9 @@ const DclCast = ({ engine, state, entity, video, playerAddress, }) => {
252
148
  color: Color4.Gray(),
253
149
  } }),
254
150
  ReactEcs.createElement(Button, { id: "dcl_cast_retry", value: "<b>Retry</b>", variant: "secondary", fontSize: 16, color: colors.white, onMouseDown: () => {
255
- handleGetDclCastInfo(state);
151
+ fetchDclCastInfo();
256
152
  }, uiTransform: styles.retryButton }))),
257
153
  !isLoading && !error && (ReactEcs.createElement(DclCastInfo, { state: state, entity: entity, engine: engine, video: video, onResetRoomId: handleResetRoomId, onShowShowcaseModal: onShowShowcaseModal, onSharePresentation: onSharePresentation })))));
258
154
  };
259
155
  export default DclCast;
260
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9WaWRlb0NvbnRyb2wvRGNsQ2FzdC9pbmRleC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUMxQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUNMLGNBQWMsRUFDZCxnQkFBZ0IsRUFDaEIsd0JBQXdCLEVBQ3hCLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsNEJBQTRCLEVBQzVCLDJCQUEyQixFQUMzQixtQkFBbUIsR0FHcEIsTUFBTSxRQUFRLENBQUM7QUFDaEIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNoRSxPQUFPLFdBQVcsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxjQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTlELE1BQU0sS0FBSyxHQUFHO0lBQ1osSUFBSSxhQUFhO1FBQ2YsT0FBTyxHQUFHLGFB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QUUsTUFBTSxFQUNkLE1BQU0sRUFBRSxNQUFNLEVBQ2QsS0FBSyxFQUFFLEtBQUssRUFDWixhQUFhLEVBQUUsaUJBQWlCLEVBQ2hDLG1CQUFtQixFQUFFLG1CQUFtQixFQUN4QyxtQkFBbUIsRUFBRSxtQkFBbUIsR0FDeEMsQ0FDSCxDQUNRLENBQ0YsQ0FDWixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsZUFBZSxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3RFY3MsIHsgVWlFbnRpdHkgfSBmcm9tICdAZGNsL3JlYWN0LWVjcyc7XG5pbXBvcnQgdHlwZSB7IERlZXBSZWFkb25seU9iamVjdCwgRW50aXR5LCBJRW5naW5lLCBQQlZpZGVvUGxheWVyIH0gZnJvbSAnQGRjbC9lY3MnO1xuaW1wb3J0IHsgQ29sb3I0IH0gZnJvbSAnQGRjbC9zZGsvbWF0aCc7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRzIH0gZnJvbSAnLi4vLi4vLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgZ2V0Q29udGVudFVybCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7IFN0YXRlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgc2V0SW50ZXJ2YWwsIGNsZWFySW50ZXJ2YWwgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi8uLi9CdXR0b24nO1xuaW1wb3J0IHsgTG9hZGluZ0RvdHMgfSBmcm9tICcuLi8uLi9Mb2FkaW5nJztcbmltcG9ydCB7IG5leHRUaWNrRnVuY3Rpb25zIH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IHsgTElWRUtJVF9TVFJFQU1fU1JDIH0gZnJvbSAnLi4vTGl2ZVN0cmVhbSc7XG5pbXBvcnQge1xuICBnZXREY2xDYXN0SW5mbyxcbiAgZ2V0QWN0aXZlU3RyZWFtcyxcbiAgZ3JvdXBUcmFja3NCeVBhcnRpY2lwYW50LFxuICByZXNldFN0cmVhbUtleSxcbiAgaGFzUHJlc2VudGF0aW9uVHJhY2ssXG4gIHN1YnNjcmliZVRvUHJlc2VudGF0aW9uVG9waWMsXG4gIGNvbnN1bWVQcmVzZW50YXRpb25NZXNzYWdlcyxcbiAgZW5zdXJlUHJlc2VudGVyUm9sZSxcbiAgdHlwZSBGbGF0dGVuZWRUcmFjayxcbiAgdHlwZSBQYXJ0aWNpcGFudCxcbn0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IGNyZWF0ZVZpZGVvUGxheWVyQ29udHJvbHMsIGlzRGNsQ2FzdCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBEY2xDYXN0SW5mbyBmcm9tICcuL0RjbENhc3RJbmZvJztcbmltcG9ydCBDb21wYWN0RGNsQ2FzdCBmcm9tICcuL0NvbXBhY3REY2xDYXN0JztcbmltcG9ydCB7IGdldERjbENhc3RTdHlsZXMsIGdldERjbENhc3RDb2xvcnMgfSBmcm9tICcuL3N0eWxlcyc7XG5cbmNvbnN0IElDT05TID0ge1xuICBnZXQgRENMX0NBU1RfSUNPTigpIHtcbiAgICByZXR1cm4gYCR7Z2V0Q29udGVudFVybCgpfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy92aWRlby1jb250cm9sLWRjbC1jYXN0LnBuZ2A7XG4gIH0sXG4gIGdldCBDSEVWUk9OX1VQKCkge1xuICAgIHJldHVybiBgJHtnZXRDb250ZW50VXJsKCl9L2FkbWluX3Rvb2xraXQvYXNzZXRzL2ljb25zL2NoZXZyb24tdXAucG5nYDtcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBzaG93Y2FzZVN0YXRlOiB7XG4gIHNob3c6IGJvb2xlYW47XG4gIHBhcnRpY2lwYW50czogUGFydGljaXBhbnRbXTtcbiAgYWN0aXZlVHJhY2tTaWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgb25TZWxlY3RUcmFjazogKCh0cmFjazogRmxhdHRlbmVkVHJhY2spID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xuICBvblNldERlZmF1bHQ6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgb25DbG9zZTogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xufSA9IHtcbiAgc2hvdzogZmFsc2UsXG4gIHBhcnRpY2lwYW50czogW10sXG4gIGFjdGl2ZVRyYWNrU2lkOiB1bmRlZmluZWQsXG4gIG9uU2VsZWN0VHJhY2s6IHVuZGVmaW5lZCxcbiAgb25TZXREZWZhdWx0OiB1bmRlZmluZWQsXG4gIG9uQ2xvc2U6IHVuZGVmaW5lZCxcbn07XG5cbmV4cG9ydCBjb25zdCBzaGFyZVByZXNlbnRhdGlvblN0YXRlOiB7XG4gIHNob3c6IGJvb2xlYW47XG4gIG9uQ2xvc2U6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbn0gPSB7XG4gIHNob3c6IGZhbHNlLFxuICBvbkNsb3NlOiB1bmRlZmluZWQsXG59O1xuXG5sZXQgcHJlc2VudGF0aW9uU3Vic2NyaWJlZCA9IGZhbHNlO1xubGV0IGNvbnN1bWluZyA9IGZhbHNlO1xubGV0IHByZXNlbnRhdGlvblN5c3RlbTogKCgpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5sZXQgcGFydGljaXBhbnRQb2xsaW5nU3lzdGVtOiAoKGR0OiBudW1iZXIpID0+IHZvaWQpIHwgbnVsbCA9IG51bGw7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYW5kbGVHZXREY2xDYXN0SW5mbyhzdGF0ZTogU3RhdGUpIHtcbiAgY29uc3QgW2Vycm9yLCBkYXRhXSA9IGF3YWl0IGdldERjbENhc3RJbmZvKCk7XG4gIGlmIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiBudWxsO1xuICB9IGVsc2Uge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBzdGF0ZS52aWRlb0NvbnRyb2wuZGNsQ2FzdCA9IGRhdGE7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RhcnRQcmVzZW50YXRpb25TeXN0ZW0oZW5naW5lOiBJRW5naW5lLCBzdGF0ZTogU3RhdGUpOiB2b2lkIHtcbiAgaWYgKHByZXNlbnRhdGlvblN5c3RlbSkgcmV0dXJuOyAvLyBBbHJlYWR5IHJ1bm5pbmdcbiAgcHJlc2VudGF0aW9uU3Vic2NyaWJlZCA9IHRydWU7XG4gIHN1YnNjcmliZVRvUHJlc2VudGF0aW9uVG9waWMoKTtcblxuICBjb25zdCBzeXN0ZW0gPSAoKSA9PiB7XG4gICAgaWYgKGNvbnN1bWluZykgcmV0dXJuOyAvLyBQcmV2ZW50IGNvbmN1cnJlbnQgcmVxdWVzdHNcbiAgICBjb25zdW1pbmcgPSB0cnVlO1xuICAgIGNvbnN1bWVQcmVzZW50YXRpb25NZXNzYWdlcygpXG4gICAgICAudGhlbihsYXRlc3RTdGF0ZSA9PiB7XG4gICAgICAgIGlmIChsYXRlc3RTdGF0ZSA9PT0gJ3N0b3BwZWQnKSB7XG4gICAgICAgICAgc3RhdGUudmlkZW9Db250cm9sLnByZXNlbnRhdGlvblN0YXRlID0gdW5kZWZpbmVkO1xuICAgICAgICB9IGVsc2UgaWYgKGxhdGVzdFN0YXRlKSB7XG4gICAgICAgICAgc3RhdGUudmlkZW9Db250cm9sLnByZXNlbnRhdGlvblN0YXRlID0gbGF0ZXN0U3RhdGU7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAvLyBTaWxlbnRseSBpZ25vcmUg4oCUIHdpbGwgcmV0cnkgbmV4dCBmcmFtZVxuICAgICAgICBjb25zb2xlLmxvZygnW0RjbENhc3RdIEZhaWxlZCB0byBjb25zdW1lIHByZXNlbnRhdGlvbiBtZXNzYWdlcycpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgY29uc3VtaW5nID0gZmFsc2U7XG4gICAgICB9KTtcbiAgfTtcblxuICBlbmdpbmUuYWRkU3lzdGVtKHN5c3RlbSk7XG4gIHByZXNlbnRhdGlvblN5c3RlbSA9IHN5c3RlbTtcbn1cblxuZnVuY3Rpb24gc3RvcFByZXNlbnRhdGlvblN5c3RlbShlbmdpbmU6IElFbmdpbmUsIHN0YXRlOiBTdGF0ZSk6IHZvaWQge1xuICBpZiAocHJlc2VudGF0aW9uU3lzdGVtKSB7XG4gICAgZW5naW5lLnJlbW92ZVN5c3RlbShwcmVzZW50YXRpb25TeXN0ZW0pO1xuICAgIHByZXNlbnRhdGlvblN5c3RlbSA9IG51bGw7XG4gIH1cbiAgc3RhdGUudmlkZW9Db250cm9sLnByZXNlbnRhdGlvblN0YXRlID0gdW5kZWZpbmVkO1xuICBwcmVzZW50YXRpb25TdWJzY3JpYmVkID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHN0YXJ0UGFydGljaXBhbnRQb2xsaW5nKGVuZ2luZTogSUVuZ2luZSwgc3RhdGU6IFN0YXRlKTogdm9pZCB7XG4gIGlmIChwYXJ0aWNpcGFudFBvbGxpbmdTeXN0ZW0pIHJldHVybjsgLy8gQWxyZWFkeSBwb2xsaW5nXG5cbiAgY29uc3QgcG9sbCA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0cmFja3MgPSBhd2FpdCBnZXRBY3RpdmVTdHJlYW1zKCk7XG4gICAgaWYgKCF0cmFja3MpIHJldHVybjtcblxuICAgIC8vIERlYnVnOiBsb2cgdHJhY2tzIG9uIGVhY2ggcG9sbCB0byByZXZpZXcgcHJlc2VudGF0aW9uIGJvdCBtZXRhZGF0YVxuICAgIC8vIGNvbnNvbGUubG9nKCdbRGNsQ2FzdF0gUG9sbCB0cmFja3M6JywgSlNPTi5zdHJpbmdpZnkodHJhY2tzLCBudWxsLCAyKSk7XG5cbiAgICAvLyBLZWVwIHNob3djYXNlIG1vZGFsIGRhdGEgZnJlc2hcbiAgICBzaG93Y2FzZVN0YXRlLnBhcnRpY2lwYW50cyA9IGdyb3VwVHJhY2tzQnlQYXJ0aWNpcGFudCh0cmFja3MpO1xuXG4gICAgLy8gQ2hlY2sgZm9yIHByZXNlbnRhdGlvbiB0cmFja1xuICAgIGNvbnN0IGhhc1ByZXNlbnRhdGlvbiA9IGhhc1ByZXNlbnRhdGlvblRyYWNrKHRyYWNrcyk7XG5cbiAgICAvLyBjb25zb2xlLmxvZyhgW0RjbENhc3RdIFByZXNlbnRhdGlvbiB0cmFjayAke2hhc1ByZXNlbnRhdGlvbiA/ICdmb3VuZCcgOiAnbm90IGZvdW5kJ30gaW4gcG9sbGApO1xuXG4gICAgaWYgKGhhc1ByZXNlbnRhdGlvbiAmJiAhcHJlc2VudGF0aW9uU3Vic2NyaWJlZCkge1xuICAgICAgc3RhcnRQcmVzZW50YXRpb25TeXN0ZW0oZW5naW5lLCBzdGF0ZSk7XG4gICAgfSBlbHNlIGlmICghaGFzUHJlc2VudGF0aW9uICYmIHByZXNlbnRhdGlvblN1YnNjcmliZWQpIHtcbiAgICAgIHN0b3BQcmVzZW50YXRpb25TeXN0ZW0oZW5naW5lLCBzdGF0ZSk7XG4gICAgfVxuICB9O1xuXG4gIC8vIFBvbGwgaW1tZWRpYXRlbHksIHRoZW4gZXZlcnkgNSBzZWNvbmRzXG4gIHBvbGwoKTtcbiAgcGFydGljaXBhbnRQb2xsaW5nU3lzdGVtID0gc2V0SW50ZXJ2YWwoZW5naW5lLCBwb2xsLCA1MDAwKTtcbn1cblxuZnVuY3Rpb24gc3RvcFBhcnRpY2lwYW50UG9sbGluZyhlbmdpbmU6IElFbmdpbmUsIHN0YXRlOiBTdGF0ZSk6IHZvaWQge1xuICBpZiAocGFydGljaXBhbnRQb2xsaW5nU3lzdGVtKSB7XG4gICAgY2xlYXJJbnRlcnZhbChlbmdpbmUsIHBhcnRpY2lwYW50UG9sbGluZ1N5c3RlbSk7XG4gICAgcGFydGljaXBhbnRQb2xsaW5nU3lzdGVtID0gbnVsbDtcbiAgfVxuICBzdG9wUHJlc2VudGF0aW9uU3lzdGVtKGVuZ2luZSwgc3RhdGUpO1xufVxuXG5jb25zdCBEY2xDYXN0ID0gKHtcbiAgZW5naW5lLFxuICBzdGF0ZSxcbiAgZW50aXR5LFxuICB2aWRlbyxcbiAgcGxheWVyQWRkcmVzcyxcbn06IHtcbiAgZW5naW5lOiBJRW5naW5lO1xuICBzdGF0ZTogU3RhdGU7XG4gIGVudGl0eTogRW50aXR5O1xuICB2aWRlbzogRGVlcFJlYWRvbmx5T2JqZWN0PFBCVmlkZW9QbGF5ZXI+IHwgdW5kZWZpbmVkO1xuICBwbGF5ZXJBZGRyZXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59KSA9PiB7XG4gIGNvbnN0IHsgVmlkZW9Db250cm9sU3RhdGUgfSA9IGdldENvbXBvbmVudHMoZW5naW5lKTtcbiAgY29uc3QgY29udHJvbHMgPSBjcmVhdGVWaWRlb1BsYXllckNvbnRyb2xzKGVudGl0eSwgZW5naW5lKTtcbiAgY29uc3Qgc3R5bGVzID0gZ2V0RGNsQ2FzdFN0eWxlcygpO1xuICBjb25zdCBjb2xvcnMgPSBnZXREY2xDYXN0Q29sb3JzKCk7XG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSBSZWFjdEVjcy51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gUmVhY3RFY3MudXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IG9uU2hvd1Nob3djYXNlTW9kYWwgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbGF0ZXN0VHJhY2tzID0gYXdhaXQgZ2V0QWN0aXZlU3RyZWFtcygpO1xuICAgIGlmICghbGF0ZXN0VHJhY2tzKSByZXR1cm47XG5cbiAgICAvLyBEZWJ1ZzogbG9nIGFsbCB0cmFjayBkYXRhIHRvIHJldmlldyBwcmVzZW50YXRpb24gYm90IG1ldGFkYXRhXG4gICAgY29uc29sZS5sb2coJ1tEY2xDYXN0XSBBY3RpdmUgdHJhY2tzOicsIEpTT04uc3RyaW5naWZ5KGxhdGVzdFRyYWNrcywgbnVsbCwgMikpO1xuXG4gICAgY29uc3QgY2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICAgIHNob3djYXNlU3RhdGUuc2hvdyA9IGZhbHNlO1xuICAgIH07XG5cbiAgICBzaG93Y2FzZVN0YXRlLnBhcnRpY2lwYW50cyA9IGdyb3VwVHJhY2tzQnlQYXJ0aWNpcGFudChsYXRlc3RUcmFja3MpO1xuXG4gICAgc2hvd2Nhc2VTdGF0ZS5vblNlbGVjdFRyYWNrID0gKHRyYWNrOiBGbGF0dGVuZWRUcmFjaykgPT4ge1xuICAgICAgY29udHJvbHMuc2V0U291cmNlKHRyYWNrLnNpZCk7XG4gICAgICBzaG93Y2FzZVN0YXRlLmFjdGl2ZVRyYWNrU2lkID0gdHJhY2suc2lkO1xuICAgICAgc3RhdGUudmlkZW9Db250cm9sLnNlbGVjdGVkU3RyZWFtID0gJ2RjbC1jYXN0JztcbiAgICB9O1xuXG4gICAgc2hvd2Nhc2VTdGF0ZS5vblNldERlZmF1bHQgPSAoKSA9PiB7XG4gICAgICBjb250cm9scy5zZXRTb3VyY2UoTElWRUtJVF9TVFJFQU1fU1JDKTtcbiAgICAgIHNob3djYXNlU3RhdGUuYWN0aXZlVHJhY2tTaWQgPSB1bmRlZmluZWQ7XG4gICAgICBzdGF0ZS52aWRlb0NvbnRyb2wuc2VsZWN0ZWRTdHJlYW0gPSAnZGNsLWNhc3QnO1xuICAgIH07XG5cbiAgICBzaG93Y2FzZVN0YXRlLm9uQ2xvc2UgPSBjbG9zZU1vZGFsO1xuXG4gICAgbmV4dFRpY2tGdW5jdGlvbnMucHVzaCgoKSA9PiB7XG4gICAgICBzaG93Y2FzZVN0YXRlLnNob3cgPSB0cnVlO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGZldGNoRGNsQ2FzdEluZm8gPSBhc3luYyAoKSA9PiB7XG4gICAgc2V0SXNMb2FkaW5nKHRydWUpO1xuICAgIHNldEVycm9yKGZhbHNlKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGhhbmRsZUdldERjbENhc3RJbmZvKHN0YXRlKTtcblxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICBzZXRFcnJvcih0cnVlKTtcbiAgICB9IGVsc2UgaWYgKHZpZGVvPy5zcmM/LnN0YXJ0c1dpdGgoJ2xpdmVraXQtdmlkZW86Ly8nKSAmJiAhc3RhdGUudmlkZW9Db250cm9sLnNlbGVjdGVkU3RyZWFtKSB7XG4gICAgICBzdGF0ZS52aWRlb0NvbnRyb2wuc2VsZWN0ZWRTdHJlYW0gPSAnZGNsLWNhc3QnO1xuICAgIH1cblxuICAgIHNldElzTG9hZGluZyhmYWxzZSk7XG4gIH07XG5cbiAgY29uc3Qgb25TaGFyZVByZXNlbnRhdGlvbiA9ICgpID0+IHtcbiAgICBzaGFyZVByZXNlbnRhdGlvblN0YXRlLm9uQ2xvc2UgPSAoKSA9PiB7XG4gICAgICBzaGFyZVByZXNlbnRhdGlvblN0YXRlLnNob3cgPSBmYWxzZTtcbiAgICB9O1xuICAgIG5leHRUaWNrRnVuY3Rpb25zLnB1c2goKCkgPT4ge1xuICAgICAgc2hhcmVQcmVzZW50YXRpb25TdGF0ZS5zaG93ID0gdHJ1ZTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVSZXNldFJvb21JZCA9IGFzeW5jICgpID0+IHtcbiAgICBzZXRJc0xvYWRpbmcodHJ1ZSk7XG4gICAgY29uc3QgW2Vycm9yLCBkYXRhXSA9IGF3YWl0IHJlc2V0U3RyZWFtS2V5KCk7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgc2V0RXJyb3IodHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZpZGVvQ29udHJvbCA9IFZpZGVvQ29udHJvbFN0YXRlLmdldE11dGFibGUoc3RhdGUuYWRtaW5Ub29sa2l0VWlFbnRpdHkpO1xuICAgICAgdmlkZW9Db250cm9sLmVuZHNBdCA9IGRhdGE/LmVuZHNBdDtcbiAgICAgIGZldGNoRGNsQ2FzdEluZm8oKTtcbiAgICB9XG4gIH07XG5cbiAgUmVhY3RFY3MudXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaERjbENhc3RJbmZvKCk7XG4gICAgaWYgKHBsYXllckFkZHJlc3MpIHtcbiAgICAgIGVuc3VyZVByZXNlbnRlclJvbGUocGxheWVyQWRkcmVzcyk7XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgLy8gU3luYyBzZWxlY3RlZFN0cmVhbSB3aGVuIHZpZGVvLnNyYyBhcnJpdmVzIGFmdGVyIG1vdW50IChsYXRlLWpvaW5lciBmaXgpXG4gIGNvbnN0IHZpZGVvU3JjID0gdmlkZW8/LnNyYztcbiAgUmVhY3RFY3MudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodmlkZW9TcmM/LnN0YXJ0c1dpdGgoJ2xpdmVraXQtdmlkZW86Ly8nKSAmJiAhc3RhdGUudmlkZW9Db250cm9sLnNlbGVjdGVkU3RyZWFtKSB7XG4gICAgICBzdGF0ZS52aWRlb0NvbnRyb2wuc2VsZWN0ZWRTdHJlYW0gPSAnZGNsLWNhc3QnO1xuICAgIH1cbiAgfSwgW3ZpZGVvU3JjXSk7XG5cbiAgY29uc3QgaXNDYXN0QWN0aXZlID0gISEodmlkZW8/LnNyYyAmJiBpc0RjbENhc3QodmlkZW8uc3JjKSk7XG5cbiAgUmVhY3RFY3MudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNDYXN0QWN0aXZlKSB7XG4gICAgICBzdGFydFBhcnRpY2lwYW50UG9sbGluZyhlbmdpbmUsIHN0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RvcFBhcnRpY2lwYW50UG9sbGluZyhlbmdpbmUsIHN0YXRlKTtcbiAgICB9XG4gIH0sIFtpc0Nhc3RBY3RpdmVdKTtcblxuICAvLyBBdXRvLW1pbmltaXplIHdoZW4gYSBwcmVzZW50YXRpb24gc3RhcnRzIHNvIHRoZSBjb21wYWN0IHZpZXdcbiAgLy8gKHdpdGggcHJlc2VudGF0aW9uIGNvbnRyb2xzKSBpcyBpbW1lZGlhdGVseSB2aXNpYmxlXG4gIFJlYWN0RWNzLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHN0YXRlLnZpZGVvQ29udHJvbC5wcmVzZW50YXRpb25TdGF0ZSkge1xuICAgICAgc3RhdGUudmlkZW9Db250cm9sLmlzTWluaW1pemVkID0gdHJ1ZTtcbiAgICB9XG4gIH0sIFshIXN0YXRlLnZpZGVvQ29udHJvbC5wcmVzZW50YXRpb25TdGF0ZV0pO1xuXG4gIGNvbnN0IGlzTWluaW1pemVkID0gc3RhdGUudmlkZW9Db250cm9sLmlzTWluaW1pemVkO1xuXG4gIHJldHVybiAoXG4gICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMuZnVsbENvbnRhaW5lcn0+XG4gICAgICB7LyogQ29tcGFjdCBiYXIg4oCUIGFsd2F5cyByZW5kZXJlZCwgdG9nZ2xlZCB2aWEgZGlzcGxheSAqL31cbiAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17eyBkaXNwbGF5OiBpc01pbmltaXplZCA/ICdmbGV4JyA6ICdub25lJywgd2lkdGg6ICcxMDAlJyB9fT5cbiAgICAgICAgPENvbXBhY3REY2xDYXN0XG4gICAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgICAgc3RhdGU9e3N0YXRlfVxuICAgICAgICAgIGVudGl0eT17ZW50aXR5fVxuICAgICAgICAgIHZpZGVvPXt2aWRlb31cbiAgICAgICAgICBvblNob3dTaG93Y2FzZU1vZGFsPXtvblNob3dTaG93Y2FzZU1vZGFsfVxuICAgICAgICAvPlxuICAgICAgPC9VaUVudGl0eT5cblxuICAgICAgey8qIEZ1bGwgcGFuZWwg4oCUIGFsd2F5cyByZW5kZXJlZCwgdG9nZ2xlZCB2aWEgZGlzcGxheSAqL31cbiAgICAgIDxVaUVudGl0eVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIGRpc3BsYXk6IGlzTWluaW1pemVkID8gJ25vbmUnIDogJ2ZsZXgnLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17c3R5bGVzLnJvd0NlbnRlclNwYWNlQmV0d2Vlbn0+XG4gICAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMucm93Q2VudGVyfT5cbiAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17c3R5bGVzLmhlYWRlckljb259XG4gICAgICAgICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICAgIHRleHR1cmVNb2RlOiAnc3RyZXRjaCcsXG4gICAgICAgICAgICAgICAgdGV4dHVyZTogeyBzcmM6IElDT05TLkRDTF9DQVNUX0lDT04gfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgICAgdWlUZXh0PXt7XG4gICAgICAgICAgICAgICAgdmFsdWU6ICc8Yj5EQ0wgQ2FzdDwvYj4nLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAyNCxcbiAgICAgICAgICAgICAgICBjb2xvcjogQ29sb3I0LldoaXRlKCksXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnbWlkZGxlLWxlZnQnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBtYXJnaW46IHsgbGVmdDogMTAgfSB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgICAgc3RhdGUudmlkZW9Db250cm9sLmlzTWluaW1pemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17c3R5bGVzLmNoZXZyb25CdXR0b259XG4gICAgICAgICAgICB1aUJhY2tncm91bmQ9e3tcbiAgICAgICAgICAgICAgdGV4dHVyZU1vZGU6ICdzdHJldGNoJyxcbiAgICAgICAgICAgICAgY29sb3I6IENvbG9yNC5XaGl0ZSgpLFxuICAgICAgICAgICAgICB0ZXh0dXJlOiB7XG4gICAgICAgICAgICAgICAgc3JjOiBJQ09OUy5DSEVWUk9OX1VQLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3N0eWxlcy5mdWxsV2lkdGhXaXRoQm90dG9tTWFyZ2lufT5cbiAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgIHVpVGV4dD17e1xuICAgICAgICAgICAgICB2YWx1ZTpcbiAgICAgICAgICAgICAgICAnVXNlIGEgYnJvd3Nlci1iYXNlZCBEQ0wgQ2FzdCByb29tIHRvIGVhc2lseSBzdHJlYW0gY2FtZXJhIGFuZCBzY3JlZW4gZmVlZCB0byBhIHNjcmVlbiBpbiB5b3VyIHNjZW5lLicsXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAxNixcbiAgICAgICAgICAgICAgY29sb3I6IENvbG9yNC5mcm9tSGV4U3RyaW5nKCcjQTA5QkE4JyksXG5cbiAgICAgICAgICAgICAgdGV4dEFsaWduOiAndG9wLWxlZnQnLFxuICAgICAgICAgICAgICB0ZXh0V3JhcDogJ3dyYXAnLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXtzdHlsZXMubWFyZ2luQm90dG9tU21hbGx9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAge2lzTG9hZGluZyAmJiAoXG4gICAgICAgICAgPExvYWRpbmdEb3RzXG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17c3R5bGVzLmxvYWRpbmdDb250YWluZXJ9XG4gICAgICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7ZXJyb3IgJiYgKFxuICAgICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17c3R5bGVzLmNvbHVtbkNlbnRlcmVkfT5cbiAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICB1aVRleHQ9e3tcbiAgICAgICAgICAgICAgICB2YWx1ZTogJzxiPkZhaWxlZCB0byBmZXRjaCBEQ0wgQ2FzdCBpbmZvPC9iPicsXG4gICAgICAgICAgICAgICAgZm9udFNpemU6IDE2LFxuICAgICAgICAgICAgICAgIGNvbG9yOiBDb2xvcjQuV2hpdGUoKSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3N0eWxlcy5tYXJnaW5Cb3R0b21TbWFsbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgICAgdWlUZXh0PXt7XG4gICAgICAgICAgICAgICAgdmFsdWU6ICdQbGVhc2UgcmV0cnkuJyxcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogMTYsXG4gICAgICAgICAgICAgICAgY29sb3I6IENvbG9yNC5HcmF5KCksXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBpZD1cImRjbF9jYXN0X3JldHJ5XCJcbiAgICAgICAgICAgICAgdmFsdWU9XCI8Yj5SZXRyeTwvYj5cIlxuICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgICAgICAgICBjb2xvcj17Y29sb3JzLndoaXRlfVxuICAgICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGhhbmRsZUdldERjbENhc3RJbmZvKHN0YXRlKTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3N0eWxlcy5yZXRyeUJ1dHRvbn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgKX1cblxuICAgICAgICB7IWlzTG9hZGluZyAmJiAhZXJyb3IgJiYgKFxuICAgICAgICAgIDxEY2xDYXN0SW5mb1xuICAgICAgICAgICAgc3RhdGU9e3N0YXRlfVxuICAgICAgICAgICAgZW50aXR5PXtlbnRpdHl9XG4gICAgICAgICAgICBlbmdpbmU9e2VuZ2luZX1cbiAgICAgICAgICAgIHZpZGVvPXt2aWRlb31cbiAgICAgICAgICAgIG9uUmVzZXRSb29tSWQ9e2hhbmRsZVJlc2V0Um9vbUlkfVxuICAgICAgICAgICAgb25TaG93U2hvd2Nhc2VNb2RhbD17b25TaG93U2hvd2Nhc2VNb2RhbH1cbiAgICAgICAgICAgIG9uU2hhcmVQcmVzZW50YXRpb249e29uU2hhcmVQcmVzZW50YXRpb259XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvVWlFbnRpdHk+XG4gICAgPC9VaUVudGl0eT5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERjbENhc3Q7XG4iXX0=
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9WaWRlb0NvbnRyb2wvRGNsQ2FzdC9pbmRleC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsY0FBYyxFQUNkLGdCQUFnQixFQUNoQix3QkFBd0IsRUFDeEIsY0FBYyxFQUNkLG1CQUFtQixHQUVwQixNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RFLE9BQU8sRUFDTCxZQUFZLEVBQ1osYUFBYSxFQUNiLHNCQUFzQixFQUN0QixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsY0FBYyxFQUNkLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLFdBQVcsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxjQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTlELE1BQU0sS0FBSyxHQUFHO0lBQ1osSUFBSSxhQUFhO1FBQ2YsT0FBTyxHQUFHLGFBQWEs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QWlCLEdBQ3JDO2dCQUNGLHVCQUFDLFFBQVEsSUFDUCxNQUFNLEVBQUU7d0JBQ04sS0FBSyxFQUFFLGVBQWU7d0JBQ3RCLFFBQVEsRUFBRSxFQUFFO3dCQUNaLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFO3FCQUNyQixHQUNEO2dCQUNGLHVCQUFDLE1BQU0sSUFDTCxFQUFFLEVBQUMsZ0JBQWdCLEVBQ25CLEtBQUssRUFBQyxjQUFjLEVBQ3BCLE9BQU8sRUFBQyxXQUFXLEVBQ25CLFFBQVEsRUFBRSxFQUFFLEVBQ1osS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQ25CLFdBQVcsRUFBRSxHQUFHLEVBQUU7d0JBQ2hCLGdCQUFnQixFQUFFLENBQUM7b0JBQ3JCLENBQUMsRUFDRCxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsR0FDL0IsQ0FDTyxDQUNaO1lBRUEsQ0FBQyxTQUFTLElBQUksQ0FBQyxLQUFLLElBQUksQ0FDdkIsdUJBQUMsV0FBVyxJQUNWLEtBQUssRUFBRSxLQUFLLEVBQ1osTUFBTSxFQUFFLE1BQU0sRUFDZCxNQUFNLEVBQUUsTUFBTSxFQUNkLEtBQUssRUFBRSxLQUFLLEVBQ1osYUFBYSxFQUFFLGlCQUFpQixFQUNoQyxtQkFBbUIsRUFBRSxtQkFBbUIsRUFDeEMsbUJBQW1CLEVBQUUsbUJBQW1CLEdBQ3hDLENBQ0gsQ0FDUSxDQUNGLENBQ1osQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLGVBQWUsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0RWNzLCB7IFVpRW50aXR5IH0gZnJvbSAnQGRjbC9yZWFjdC1lY3MnO1xuaW1wb3J0IHR5cGUgeyBEZWVwUmVhZG9ubHlPYmplY3QsIEVudGl0eSwgSUVuZ2luZSwgUEJWaWRlb1BsYXllciB9IGZyb20gJ0BkY2wvZWNzJztcbmltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvc2RrL21hdGgnO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50cyB9IGZyb20gJy4uLy4uLy4uL2RlZmluaXRpb25zJztcbmltcG9ydCB7IGdldENvbnRlbnRVcmwgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBTdGF0ZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uLy4uL0J1dHRvbic7XG5pbXBvcnQgeyBMb2FkaW5nRG90cyB9IGZyb20gJy4uLy4uL0xvYWRpbmcnO1xuaW1wb3J0IHsgTElWRUtJVF9TVFJFQU1fU1JDIH0gZnJvbSAnLi4vTGl2ZVN0cmVhbSc7XG5pbXBvcnQge1xuICBnZXREY2xDYXN0SW5mbyxcbiAgZ2V0QWN0aXZlU3RyZWFtcyxcbiAgZ3JvdXBUcmFja3NCeVBhcnRpY2lwYW50LFxuICByZXNldFN0cmVhbUtleSxcbiAgZW5zdXJlUHJlc2VudGVyUm9sZSxcbiAgdHlwZSBGbGF0dGVuZWRUcmFjayxcbn0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IENBU1RfU1JDX1BSRUZJWCwgY3JlYXRlVmlkZW9QbGF5ZXJDb250cm9scyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7XG4gIG9wZW5TaG93Y2FzZSxcbiAgY2xvc2VTaG93Y2FzZSxcbiAgc2V0U2hvd2Nhc2VBY3RpdmVUcmFjayxcbiAgb3BlblNoYXJlUHJlc2VudGF0aW9uLFxuICBjbG9zZVNoYXJlUHJlc2VudGF0aW9uLFxuICBzZXRTdHJlYW0sXG4gIHNldFBhcnRpY2lwYW50cyxcbiAgc2V0RGNsQ2FzdEluZm8sXG4gIG1pbmltaXplQ2FzdCxcbn0gZnJvbSAnLi4vLi4vYWN0aW9ucyc7XG5pbXBvcnQgRGNsQ2FzdEluZm8gZnJvbSAnLi9EY2xDYXN0SW5mbyc7XG5pbXBvcnQgQ29tcGFjdERjbENhc3QgZnJvbSAnLi9Db21wYWN0RGNsQ2FzdCc7XG5pbXBvcnQgeyBnZXREY2xDYXN0U3R5bGVzLCBnZXREY2xDYXN0Q29sb3JzIH0gZnJvbSAnLi9zdHlsZXMnO1xuXG5jb25zdCBJQ09OUyA9IHtcbiAgZ2V0IERDTF9DQVNUX0lDT04oKSB7XG4gICAgcmV0dXJuIGAke2dldENvbnRlbnRVcmwoKX0vYWRtaW5fdG9vbGtpdC9hc3NldHMvaWNvbnMvdmlkZW8tY29udHJvbC1kY2wtY2FzdC5wbmdgO1xuICB9LFxuICBnZXQgQ0hFVlJPTl9VUCgpIHtcbiAgICByZXR1cm4gYCR7Z2V0Q29udGVudFVybCgpfS9hZG1pbl90b29sa2l0L2Fzc2V0cy9pY29ucy9jaGV2cm9uLXVwLnBuZ2A7XG4gIH0sXG59O1xuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVHZXREY2xDYXN0SW5mbygpIHtcbiAgY29uc3QgW2Vycm9yLCBkYXRhXSA9IGF3YWl0IGdldERjbENhc3RJbmZvKCk7XG4gIGlmIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiBudWxsO1xuICB9IGVsc2Uge1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBzZXREY2xDYXN0SW5mbyhkYXRhKTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBEY2xDYXN0ID0gKHtcbiAgZW5naW5lLFxuICBzdGF0ZSxcbiAgZW50aXR5LFxuICB2aWRlbyxcbiAgcGxheWVyQWRkcmVzcyxcbn06IHtcbiAgZW5naW5lOiBJRW5naW5lO1xuICBzdGF0ZTogU3RhdGU7XG4gIGVudGl0eTogRW50aXR5O1xuICB2aWRlbzogRGVlcFJlYWRvbmx5T2JqZWN0PFBCVmlkZW9QbGF5ZXI+IHwgdW5kZWZpbmVkO1xuICBwbGF5ZXJBZGRyZXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59KSA9PiB7XG4gIGNvbnN0IHsgVmlkZW9Db250cm9sU3RhdGUgfSA9IGdldENvbXBvbmVudHMoZW5naW5lKTtcbiAgY29uc3QgY29udHJvbHMgPSBjcmVhdGVWaWRlb1BsYXllckNvbnRyb2xzKGVudGl0eSwgZW5naW5lKTtcbiAgY29uc3Qgc3R5bGVzID0gZ2V0RGNsQ2FzdFN0eWxlcygpO1xuICBjb25zdCBjb2xvcnMgPSBnZXREY2xDYXN0Q29sb3JzKCk7XG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSBSZWFjdEVjcy51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gUmVhY3RFY3MudXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IG9uU2hvd1Nob3djYXNlTW9kYWwgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgbGF0ZXN0VHJhY2tzID0gYXdhaXQgZ2V0QWN0aXZlU3RyZWFtcygpO1xuICAgIGlmICghbGF0ZXN0VHJhY2tzKSByZXR1cm47XG5cbiAgICBzZXRQYXJ0aWNpcGFudHMoZ3JvdXBUcmFja3NCeVBhcnRpY2lwYW50KGxhdGVzdFRyYWNrcykpO1xuICAgIG9wZW5TaG93Y2FzZSh7XG4gICAgICBvblNlbGVjdFRyYWNrOiAodHJhY2s6IEZsYXR0ZW5lZFRyYWNrKSA9PiB7XG4gICAgICAgIGNvbnRyb2xzLnNldFNvdXJjZSh0cmFjay5zaWQpO1xuICAgICAgICBzZXRTaG93Y2FzZUFjdGl2ZVRyYWNrKHRyYWNrLnNpZCk7XG4gICAgICAgIHNldFN0cmVhbSgnZGNsLWNhc3QnKTtcbiAgICAgIH0sXG4gICAgICBvblNldERlZmF1bHQ6ICgpID0+IHtcbiAgICAgICAgY29udHJvbHMuc2V0U291cmNlKExJVkVLSVRfU1RSRUFNX1NSQyk7XG4gICAgICAgIHNldFNob3djYXNlQWN0aXZlVHJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgc2V0U3RyZWFtKCdkY2wtY2FzdCcpO1xuICAgICAgfSxcbiAgICAgIG9uQ2xvc2U6ICgpID0+IGNsb3NlU2hvd2Nhc2UoKSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBmZXRjaERjbENhc3RJbmZvID0gYXN5bmMgKCkgPT4ge1xuICAgIHNldElzTG9hZGluZyh0cnVlKTtcbiAgICBzZXRFcnJvcihmYWxzZSk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBoYW5kbGVHZXREY2xDYXN0SW5mbygpO1xuXG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHNldEVycm9yKHRydWUpO1xuICAgIH0gZWxzZSBpZiAodmlkZW8/LnNyYz8uc3RhcnRzV2l0aChDQVNUX1NSQ19QUkVGSVgpICYmICFzdGF0ZS52aWRlb0NvbnRyb2wuc2VsZWN0ZWRTdHJlYW0pIHtcbiAgICAgIHNldFN0cmVhbSgnZGNsLWNhc3QnKTtcbiAgICB9XG5cbiAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2hhcmVQcmVzZW50YXRpb24gPSAoKSA9PiB7XG4gICAgb3BlblNoYXJlUHJlc2VudGF0aW9uKCgpID0+IGNsb3NlU2hhcmVQcmVzZW50YXRpb24oKSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUmVzZXRSb29tSWQgPSBhc3luYyAoKSA9PiB7XG4gICAgc2V0SXNMb2FkaW5nKHRydWUpO1xuICAgIGNvbnN0IFtlcnJvciwgZGF0YV0gPSBhd2FpdCByZXNldFN0cmVhbUtleSgpO1xuICAgIGlmIChlcnJvcikge1xuICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgIHNldEVycm9yKHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2aWRlb0NvbnRyb2wgPSBWaWRlb0NvbnRyb2xTdGF0ZS5nZXRNdXRhYmxlKHN0YXRlLmFkbWluVG9vbGtpdFVpRW50aXR5KTtcbiAgICAgIHZpZGVvQ29udHJvbC5lbmRzQXQgPSBkYXRhPy5lbmRzQXQ7XG4gICAgICBmZXRjaERjbENhc3RJbmZvKCk7XG4gICAgfVxuICB9O1xuXG4gIFJlYWN0RWNzLnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gZW5zdXJlUHJlc2VudGVyUm9sZSByZXF1aXJlcyB0aGUgc3RyZWFtL3Jvb20gdGhhdCBmZXRjaERjbENhc3RJbmZvIGNyZWF0ZXMsXG4gICAgLy8gc28gaXQgbXVzdCBydW4gYWZ0ZXIgdGhhdCBjYWxsIHJlc29sdmVzLCBub3QgaW4gcGFyYWxsZWwgd2l0aCBpdCAoUFIgIzEzNTYpLlxuICAgIGZldGNoRGNsQ2FzdEluZm8oKS50aGVuKCgpID0+IHtcbiAgICAgIGlmIChwbGF5ZXJBZGRyZXNzKSB7XG4gICAgICAgIGVuc3VyZVByZXNlbnRlclJvbGUocGxheWVyQWRkcmVzcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIFtdKTtcblxuICAvLyBTeW5jIHNlbGVjdGVkU3RyZWFtIHdoZW4gdmlkZW8uc3JjIGFycml2ZXMgYWZ0ZXIgbW91bnQgKGxhdGUtam9pbmVyIGZpeClcbiAgY29uc3QgdmlkZW9TcmMgPSB2aWRlbz8uc3JjO1xuICBSZWFjdEVjcy51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh2aWRlb1NyYz8uc3RhcnRzV2l0aChDQVNUX1NSQ19QUkVGSVgpICYmICFzdGF0ZS52aWRlb0NvbnRyb2wuc2VsZWN0ZWRTdHJlYW0pIHtcbiAgICAgIHNldFN0cmVhbSgnZGNsLWNhc3QnKTtcbiAgICB9XG4gIH0sIFt2aWRlb1NyY10pO1xuXG4gIGNvbnN0IGlzTWluaW1pemVkID0gc3RhdGUudmlkZW9Db250cm9sLmlzTWluaW1pemVkO1xuXG4gIHJldHVybiAoXG4gICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMuZnVsbENvbnRhaW5lcn0+XG4gICAgICB7LyogQ29tcGFjdCBiYXIg4oCUIGFsd2F5cyByZW5kZXJlZCwgdG9nZ2xlZCB2aWEgZGlzcGxheSAqL31cbiAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17eyBkaXNwbGF5OiBpc01pbmltaXplZCA/ICdmbGV4JyA6ICdub25lJywgd2lkdGg6ICcxMDAlJyB9fT5cbiAgICAgICAgPENvbXBhY3REY2xDYXN0XG4gICAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgICAgc3RhdGU9e3N0YXRlfVxuICAgICAgICAgIGVudGl0eT17ZW50aXR5fVxuICAgICAgICAgIHZpZGVvPXt2aWRlb31cbiAgICAgICAgICBvblNob3dTaG93Y2FzZU1vZGFsPXtvblNob3dTaG93Y2FzZU1vZGFsfVxuICAgICAgICAvPlxuICAgICAgPC9VaUVudGl0eT5cblxuICAgICAgey8qIEZ1bGwgcGFuZWwg4oCUIGFsd2F5cyByZW5kZXJlZCwgdG9nZ2xlZCB2aWEgZGlzcGxheSAqL31cbiAgICAgIDxVaUVudGl0eVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIGRpc3BsYXk6IGlzTWluaW1pemVkID8gJ25vbmUnIDogJ2ZsZXgnLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17c3R5bGVzLnJvd0NlbnRlclNwYWNlQmV0d2Vlbn0+XG4gICAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMucm93Q2VudGVyfT5cbiAgICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17c3R5bGVzLmhlYWRlckljb259XG4gICAgICAgICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgICAgICAgIHRleHR1cmVNb2RlOiAnc3RyZXRjaCcsXG4gICAgICAgICAgICAgICAgdGV4dHVyZTogeyBzcmM6IElDT05TLkRDTF9DQVNUX0lDT04gfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgICAgdWlUZXh0PXt7XG4gICAgICAgICAgICAgICAgdmFsdWU6ICc8Yj5EQ0wgQ2FzdDwvYj4nLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAyNCxcbiAgICAgICAgICAgICAgICBjb2xvcjogQ29sb3I0LldoaXRlKCksXG4gICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnbWlkZGxlLWxlZnQnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBtYXJnaW46IHsgbGVmdDogMTAgfSB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgIDxVaUVudGl0eVxuICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IG1pbmltaXplQ2FzdCgpfVxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3N0eWxlcy5jaGV2cm9uQnV0dG9ufVxuICAgICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7XG4gICAgICAgICAgICAgIHRleHR1cmVNb2RlOiAnc3RyZXRjaCcsXG4gICAgICAgICAgICAgIGNvbG9yOiBDb2xvcjQuV2hpdGUoKSxcbiAgICAgICAgICAgICAgdGV4dHVyZToge1xuICAgICAgICAgICAgICAgIHNyYzogSUNPTlMuQ0hFVlJPTl9VUCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXtzdHlsZXMuZnVsbFdpZHRoV2l0aEJvdHRvbU1hcmdpbn0+XG4gICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICB1aVRleHQ9e3tcbiAgICAgICAgICAgICAgdmFsdWU6XG4gICAgICAgICAgICAgICAgJ1VzZSBhIGJyb3dzZXItYmFzZWQgRENMIENhc3Qgcm9vbSB0byBlYXNpbHkgc3RyZWFtIGNhbWVyYSBhbmQgc2NyZWVuIGZlZWQgdG8gYSBzY3JlZW4gaW4geW91ciBzY2VuZS4nLFxuICAgICAgICAgICAgICBmb250U2l6ZTogMTYsXG4gICAgICAgICAgICAgIGNvbG9yOiBDb2xvcjQuZnJvbUhleFN0cmluZygnI0EwOUJBOCcpLFxuXG4gICAgICAgICAgICAgIHRleHRBbGlnbjogJ3RvcC1sZWZ0JyxcbiAgICAgICAgICAgICAgdGV4dFdyYXA6ICd3cmFwJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17c3R5bGVzLm1hcmdpbkJvdHRvbVNtYWxsfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgIHtpc0xvYWRpbmcgJiYgKFxuICAgICAgICAgIDxMb2FkaW5nRG90c1xuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3N0eWxlcy5sb2FkaW5nQ29udGFpbmVyfVxuICAgICAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge2Vycm9yICYmIChcbiAgICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3N0eWxlcy5jb2x1bW5DZW50ZXJlZH0+XG4gICAgICAgICAgICA8VWlFbnRpdHlcbiAgICAgICAgICAgICAgdWlUZXh0PXt7XG4gICAgICAgICAgICAgICAgdmFsdWU6ICc8Yj5GYWlsZWQgdG8gZmV0Y2ggRENMIENhc3QgaW5mbzwvYj4nLFxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxNixcbiAgICAgICAgICAgICAgICBjb2xvcjogQ29sb3I0LldoaXRlKCksXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXtzdHlsZXMubWFyZ2luQm90dG9tU21hbGx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFVpRW50aXR5XG4gICAgICAgICAgICAgIHVpVGV4dD17e1xuICAgICAgICAgICAgICAgIHZhbHVlOiAnUGxlYXNlIHJldHJ5LicsXG4gICAgICAgICAgICAgICAgZm9udFNpemU6IDE2LFxuICAgICAgICAgICAgICAgIGNvbG9yOiBDb2xvcjQuR3JheSgpLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgaWQ9XCJkY2xfY2FzdF9yZXRyeVwiXG4gICAgICAgICAgICAgIHZhbHVlPVwiPGI+UmV0cnk8L2I+XCJcbiAgICAgICAgICAgICAgdmFyaWFudD1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgICAgICAgY29sb3I9e2NvbG9ycy53aGl0ZX1cbiAgICAgICAgICAgICAgb25Nb3VzZURvd249eygpID0+IHtcbiAgICAgICAgICAgICAgICBmZXRjaERjbENhc3RJbmZvKCk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXtzdHlsZXMucmV0cnlCdXR0b259XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICAgICl9XG5cbiAgICAgICAgeyFpc0xvYWRpbmcgJiYgIWVycm9yICYmIChcbiAgICAgICAgICA8RGNsQ2FzdEluZm9cbiAgICAgICAgICAgIHN0YXRlPXtzdGF0ZX1cbiAgICAgICAgICAgIGVudGl0eT17ZW50aXR5fVxuICAgICAgICAgICAgZW5naW5lPXtlbmdpbmV9XG4gICAgICAgICAgICB2aWRlbz17dmlkZW99XG4gICAgICAgICAgICBvblJlc2V0Um9vbUlkPXtoYW5kbGVSZXNldFJvb21JZH1cbiAgICAgICAgICAgIG9uU2hvd1Nob3djYXNlTW9kYWw9e29uU2hvd1Nob3djYXNlTW9kYWx9XG4gICAgICAgICAgICBvblNoYXJlUHJlc2VudGF0aW9uPXtvblNoYXJlUHJlc2VudGF0aW9ufVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1VpRW50aXR5PlxuICAgIDwvVWlFbnRpdHk+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEY2xDYXN0O1xuIl19
@@ -0,0 +1,2 @@
1
+ import type { IEngine } from '@dcl/ecs';
2
+ export declare function startPresentationDetection(engine: IEngine, getIsAdmin: () => boolean, getPlayerAddress: () => string | undefined, onPresentationStarted: () => void, onPresentationEnded: () => void): void;
@@ -0,0 +1,116 @@
1
+ import { clearInterval, setInterval } from '../../utils';
2
+ import { getAdminToolkitVideoControl, getVideoPlayers } from '../utils';
3
+ import { consumePresentationMessages, ensurePresenterRole, getActiveStreams, getDclCastInfo, groupTracksByParticipant, hasPresentationTrack, subscribeToPresentationTopic, } from '../api';
4
+ import { setParticipants, setDclCastInfo, setPresentationState, clearPresentationState, } from '../../actions';
5
+ const POLL_INTERVAL_MS = 1000;
6
+ const CONSUME_INTERVAL_MS = 250;
7
+ let detectionStarted = false;
8
+ let presentationActive = false;
9
+ let presentationEnded = false;
10
+ let startingSystem = false;
11
+ let presentationSystem = null;
12
+ let polling = false;
13
+ let consuming = false;
14
+ function signalPresentationEnded(onPresentationEnded) {
15
+ if (presentationEnded)
16
+ return;
17
+ presentationEnded = true;
18
+ onPresentationEnded();
19
+ }
20
+ async function startPresentationSystem(engine, getPlayerAddress, onPresentationEnded) {
21
+ if (presentationSystem || startingSystem)
22
+ return;
23
+ startingSystem = true;
24
+ try {
25
+ const [, castData] = await getDclCastInfo();
26
+ if (castData)
27
+ setDclCastInfo(castData);
28
+ const address = getPlayerAddress();
29
+ if (!address || !(await ensurePresenterRole(address)))
30
+ return;
31
+ if (!presentationActive)
32
+ return;
33
+ subscribeToPresentationTopic();
34
+ const consume = () => {
35
+ if (consuming)
36
+ return;
37
+ consuming = true;
38
+ consumePresentationMessages()
39
+ .then(latestState => {
40
+ if (!presentationActive)
41
+ return;
42
+ if (latestState === 'stopped') {
43
+ signalPresentationEnded(onPresentationEnded);
44
+ }
45
+ else if (latestState) {
46
+ setPresentationState(latestState);
47
+ }
48
+ })
49
+ .catch(error => {
50
+ console.error('[DclCast] Failed to consume presentation messages', error);
51
+ })
52
+ .finally(() => {
53
+ consuming = false;
54
+ });
55
+ };
56
+ presentationSystem = setInterval(engine, consume, CONSUME_INTERVAL_MS);
57
+ }
58
+ catch (error) {
59
+ console.error('[DclCast] Failed to start presentation system, will retry', error);
60
+ }
61
+ finally {
62
+ startingSystem = false;
63
+ }
64
+ }
65
+ function stopPresentationSystem(engine) {
66
+ if (presentationSystem) {
67
+ clearInterval(engine, presentationSystem);
68
+ presentationSystem = null;
69
+ }
70
+ clearPresentationState();
71
+ }
72
+ function isCastCapableScene(engine) {
73
+ const videoControl = getAdminToolkitVideoControl(engine);
74
+ return !!videoControl?.isEnabled && getVideoPlayers(engine).length > 0;
75
+ }
76
+ export function startPresentationDetection(engine, getIsAdmin, getPlayerAddress, onPresentationStarted, onPresentationEnded) {
77
+ if (detectionStarted)
78
+ return;
79
+ detectionStarted = true;
80
+ const poll = async () => {
81
+ if (!getIsAdmin() || !isCastCapableScene(engine))
82
+ return;
83
+ if (polling)
84
+ return;
85
+ polling = true;
86
+ try {
87
+ const tracks = await getActiveStreams();
88
+ if (!tracks)
89
+ return;
90
+ setParticipants(groupTracksByParticipant(tracks));
91
+ const hasPresentation = hasPresentationTrack(tracks);
92
+ if (hasPresentation) {
93
+ if (!presentationActive) {
94
+ presentationActive = true;
95
+ presentationEnded = false;
96
+ onPresentationStarted();
97
+ }
98
+ await startPresentationSystem(engine, getPlayerAddress, onPresentationEnded);
99
+ }
100
+ else if (presentationActive) {
101
+ presentationActive = false;
102
+ signalPresentationEnded(onPresentationEnded);
103
+ stopPresentationSystem(engine);
104
+ }
105
+ }
106
+ catch (error) {
107
+ console.error('[DclCast] Presentation detection poll failed, will retry', error);
108
+ }
109
+ finally {
110
+ polling = false;
111
+ }
112
+ };
113
+ poll();
114
+ setInterval(engine, poll, POLL_INTERVAL_MS);
115
+ }
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlc2VudGF0aW9uLWRldGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkbWluLXRvb2xraXQtdWkvVmlkZW9Db250cm9sL0RjbENhc3QvcHJlc2VudGF0aW9uLWRldGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDeEUsT0FBTyxFQUNMLDJCQUEyQixFQUMzQixtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3BCLDRCQUE0QixHQUM3QixNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBQ0wsZUFBZSxFQUNmLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsc0JBQXNCLEdBQ3ZCLE1BQU0sZUFBZSxDQUFDO0FBdUJ2QixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQztBQUc5QixNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQztBQUloQyxJQUFJLGdCQUFnQixHQUFHLEtBQUssQ0FBQztBQVU3QixJQUFJLGtCQUFrQixHQUFHLEtBQUssQ0FBQztBQUMvQixJQUFJLGlCQUFpQixHQUFHLEtBQUssQ0FBQztBQUM5QixJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUM7QUFDM0IsSUFBSSxrQkFBa0IsR0FBa0MsSUFBSSxDQUFDO0FBQzdELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNwQixJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7QUFNdEIsU0FBUyx1QkFBdUIsQ0FBQyxtQkFBK0I7SUFDOUQsSUFBSSxpQkFBaUI7UUFBRSxPQUFPO0lBQzlCLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUN6QixtQkFBbUIsRUFBRSxDQUFDO0FBQ3hCLENBQUM7QUFFRCxLQUFL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QztZQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sZ0JBQWdCLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsTUFBTTtnQkFBRSxPQUFPO1lBSXBCLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBRWxELE1BQU0sZUFBZSxHQUFHLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3JELElBQUksZUFBZSxFQUFFLENBQUM7Z0JBSXBCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO29CQUN4QixrQkFBa0IsR0FBRyxJQUFJLENBQUM7b0JBQzFCLGlCQUFpQixHQUFHLEtBQUssQ0FBQztvQkFDMUIscUJBQXFCLEVBQUUsQ0FBQztnQkFDMUIsQ0FBQztnQkFHRCxNQUFNLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1lBQy9FLENBQUM7aUJBQU0sSUFBSSxrQkFBa0IsRUFBRSxDQUFDO2dCQUM5QixrQkFBa0IsR0FBRyxLQUFLLENBQUM7Z0JBQzNCLHVCQUF1QixDQUFDLG1CQUFtQixDQUFDLENBQUM7Z0JBQzdDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUdmLE9BQU8sQ0FBQyxLQUFLLENBQUMsMERBQTBELEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkYsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBSUYsSUFBSSxFQUFFLENBQUM7SUFDUCxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQzlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IElFbmdpbmUgfSBmcm9tICdAZGNsL2Vjcyc7XG5pbXBvcnQgeyBjbGVhckludGVydmFsLCBzZXRJbnRlcnZhbCB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IGdldEFkbWluVG9vbGtpdFZpZGVvQ29udHJvbCwgZ2V0VmlkZW9QbGF5ZXJzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgY29uc3VtZVByZXNlbnRhdGlvbk1lc3NhZ2VzLFxuICBlbnN1cmVQcmVzZW50ZXJSb2xlLFxuICBnZXRBY3RpdmVTdHJlYW1zLFxuICBnZXREY2xDYXN0SW5mbyxcbiAgZ3JvdXBUcmFja3NCeVBhcnRpY2lwYW50LFxuICBoYXNQcmVzZW50YXRpb25UcmFjayxcbiAgc3Vic2NyaWJlVG9QcmVzZW50YXRpb25Ub3BpYyxcbn0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7XG4gIHNldFBhcnRpY2lwYW50cyxcbiAgc2V0RGNsQ2FzdEluZm8sXG4gIHNldFByZXNlbnRhdGlvblN0YXRlLFxuICBjbGVhclByZXNlbnRhdGlvblN0YXRlLFxufSBmcm9tICcuLi8uLi9hY3Rpb25zJztcblxuLy8gQmFja2dyb3VuZCBwcmVzZW50YXRpb24gZGV0ZWN0aW9uLlxuLy9cbi8vIFJ1bnMgYXMgYSBib290LXRpbWUgZW5naW5lIHNlcnZpY2UgKGZvciBhZG1pbnMpIGluc3RlYWQgb2YgYXMgYSBzaWRlIGVmZmVjdCBvZlxuLy8gdGhlIERjbENhc3QgY29tcG9uZW50IG1vdW50aW5nLCBzbyB0aGUgcGFuZWwgY2FuIGF1dG8tb3BlbiByZWdhcmRsZXNzIG9mIHdoaWNoXG4vLyB0YWIgKGlmIGFueSkgdGhlIGFkbWluIGlzIHZpZXdpbmcuIERhdGEgZmxvd3Mgb25lIHdheTpcbi8vICAgZGV0ZWN0b3IgLT4gKGFjdGlvbnMpIC0+IHN0YXRlLnZpZGVvQ29udHJvbCAtPiB2aWV3IGNvbXBvbmVudHMuXG4vLyBJdCBuZXZlciByZWFkcyBvciBhc3NpZ25zIGBzdGF0ZWAgZGlyZWN0bHkg4oCUIGFsbCB3cml0ZXMgZ28gdGhyb3VnaCBhY3Rpb25zLFxuLy8gd2hpY2ggb3duIHRoZSBzdG9yZSBzaW5nbGV0b24uXG4vL1xuLy8gQXV0by1vcGVuIGlzIHRyaWdnZXJlZCBieSB0aGUgcHJlc2VudGF0aW9uIGJvdCdzIExpdmVLaXQgVFJBQ0sgYXBwZWFyaW5nXG4vLyAoaGFzUHJlc2VudGF0aW9uVHJhY2sgb3ZlciBnZXRBY3RpdmVTdHJlYW1zKSDigJQgYSBzaWduYWwgYXZhaWxhYmxlIHRvIGV2ZXJ5IHNjZW5lXG4vLyBwYXJ0aWNpcGFudC4gU2xpZGUtbGV2ZWwgc3RhdGUgKHBhZ2UgY291bnQsIGN1cnJlbnQgc2xpZGUsIHZpZGVvcykgYXJyaXZlc1xuLy8gc2VwYXJhdGVseSBvdmVyIHRoZSAncHJlc2VudGF0aW9uJyBjb21tcyB0b3BpYywgd2hpY2ggdGhlIGJvdCBvbmx5IHNlcnZlcyB0b1xuLy8gcHJlc2VudGVycyDigJQgaGVuY2Ugd2UgcHJvbW90ZSB0aGUgYWRtaW4gYmVmb3JlIHN1YnNjcmliaW5nIChnZXREY2xDYXN0SW5mbyBsYXppbHlcbi8vIGNyZWF0ZXMgdGhlIHJvb20gZW5zdXJlUHJlc2VudGVyUm9sZSBkZXBlbmRzIG9uLCBzbyB0aGUgdHdvIG11c3QgYmUgc2VxdWVuY2VkKS5cblxuLy8gRGV0ZWN0aW9uIHBvbGwgY2FkZW5jZS4gVGhlIHBvbGwgcnVucyBjb250aW51b3VzbHkg4oCUIGl0IG5ldmVyIHN0b3BzIG9uIGRldGVjdCDigJRcbi8vIGJlY2F1c2UgaXQgaXMgdGhlIGF1dGhvcml0YXRpdmUgdGVhcmRvd24vcmUtYXJtIHBhdGggYW5kIHRoZSBvbmx5IGJhY2tzdG9wIGZvciBhblxuLy8gdW5ncmFjZWZ1bCBib3QgZXhpdCB0aGF0IHNlbmRzIG5vIGBwcmVzZW50YXRpb246c3RvcHBlZGAuIEl0cyBjb3N0IChvbmUgcnVudGltZVxuLy8gY2FsbCBwZXIgc2Vjb25kKSBpcyBkd2FyZmVkIGJ5IHRoZSBjb25zdW1lIHN5c3RlbSBiZWxvdywgc28ga2VlcCBpdCBjb250aW51b3VzO1xuLy8gZG8gbm90IFwib3B0aW1pemVcIiBpdCBpbnRvIGEgc3RvcC1vbi1kZXRlY3QsIHdoaWNoIHdvdWxkIHdlZGdlIGRldGVjdGlvbi5cbmNvbnN0IFBPTExfSU5URVJWQUxfTVMgPSAxMDAwO1xuLy8gU3RhdHVzIGNvbnN1bWUgY2FkZW5jZS4gfjRIeiBpcyB2aXN1YWxseSBpbnN0YW50IGZvciBhIHNsaWRlIGNvdW50ZXIgLyB2aWRlbyBzdGF0ZVxuLy8gYW5kIGZhciBjaGVhcGVyIHRoYW4gZHJhaW5pbmcgdGhlIGNvbW1zIHRvcGljIGV2ZXJ5IGZyYW1lLlxuY29uc3QgQ09OU1VNRV9JTlRFUlZBTF9NUyA9IDI1MDtcblxuLy8gQm9vdC1vbmNlIGd1YXJkOiB0aGUgcG9sbCBpcyByZWdpc3RlcmVkIGV4YWN0bHkgb25jZSBwZXIgc2Vzc2lvbiBhbmQgcnVucyBmb3IgdGhlXG4vLyBzY2VuZSdzIGxpZmV0aW1lIChzZWUgdGhlIFBPTExfSU5URVJWQUxfTVMgbm90ZSBhYm92ZSkuXG5sZXQgZGV0ZWN0aW9uU3RhcnRlZCA9IGZhbHNlO1xuXG4vLyBQcmVzZW50YXRpb24gbGlmZWN5Y2xlLiBwcmVzZW50YXRpb25BY3RpdmUgaXMgYW4gZWRnZSB0cmFja2VyIGZvciB0aGUgYm90XG4vLyB0cmFjayAoZHJpdmVzIHRoZSBvbmUtc2hvdCBhdXRvLW9wZW4pOyBwcmVzZW50YXRpb25FbmRlZCBsYXRjaGVzIHRoZSBlbmRcbi8vIGNhbGxiYWNrIHNvIGl0IGZpcmVzIG9uY2UgcGVyIHByZXNlbnRhdGlvbiBldmVuIHRob3VnaCB0d28gcGF0aHMgY2FuIHNpZ25hbFxuLy8gdGhlIGVuZCAoc2VlIHNpZ25hbFByZXNlbnRhdGlvbkVuZGVkKS4gcHJlc2VudGF0aW9uU3lzdGVtIGlzIHRoZSBydW5uaW5nXG4vLyBjb25zdW1lIHN5c3RlbSAobnVsbCA9IG5vdCBydW5uaW5nKSBhbmQgaXMgb25seSBhc3NpZ25lZCBvbiBzdWNjZXNzZnVsIHNldHVwLFxuLy8gc28gYSBmYWlsZWQgc2V0dXAgbmF0dXJhbGx5IHJldHJpZXMgb24gdGhlIG5leHQgcG9sbCB0aWNrLiBzdGFydGluZ1N5c3RlbVxuLy8gZ3VhcmRzIGFnYWluc3QgY29uY3VycmVudCBzZXR1cCB3aGlsZSBhbiBpbi1mbGlnaHQgYXR0ZW1wdCBpcyBhd2FpdGluZywgYW5kXG4vLyBwb2xsaW5nIC8gY29uc3VtaW5nIGd1YXJkIGFnYWluc3QgYSBzbG93IHRpY2sgb3ZlcmxhcHBpbmcgdGhlIG5leHQgb25lLlxubGV0IHByZXNlbnRhdGlvbkFjdGl2ZSA9IGZhbHNlO1xubGV0IHByZXNlbnRhdGlvbkVuZGVkID0gZmFsc2U7XG5sZXQgc3RhcnRpbmdTeXN0ZW0gPSBmYWxzZTtcbmxldCBwcmVzZW50YXRpb25TeXN0ZW06ICgoZHQ6IG51bWJlcikgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbmxldCBwb2xsaW5nID0gZmFsc2U7XG5sZXQgY29uc3VtaW5nID0gZmFsc2U7XG5cbi8vIEZpcmUgdGhlIGVuZCBjYWxsYmFjayBleGFjdGx5IG9uY2UgcGVyIHByZXNlbnRhdGlvbi4gQm90aCB0aGUgYm90J3MgY29tbXNcbi8vIGBwcmVzZW50YXRpb246c3RvcHBlZGAgbWVzc2FnZSAoY29uc3VtZSkgYW5kIHRoZSB0cmFjay1nb25lIHBvbGwgZWRnZSBzaWduYWxcbi8vIHRoZSBlbmQ7IHdpdGhvdXQgdGhpcyBsYXRjaCBkaXNtaXNzUHJlc2VudGF0aW9uIHJ1bnMgdHdpY2Ugb24gYSBncmFjZWZ1bCBzdG9wLlxuLy8gUmVzZXQgb24gdGhlIHN0YXJ0IGVkZ2Ugc28gdGhlIG5leHQgcHJlc2VudGF0aW9uIGNhbiBlbmQgYWdhaW4uXG5mdW5jdGlvbiBzaWduYWxQcmVzZW50YXRpb25FbmRlZChvblByZXNlbnRhdGlvbkVuZGVkOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gIGlmIChwcmVzZW50YXRpb25FbmRlZCkgcmV0dXJuO1xuICBwcmVzZW50YXRpb25FbmRlZCA9IHRydWU7XG4gIG9uUHJlc2VudGF0aW9uRW5kZWQoKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc3RhcnRQcmVzZW50YXRpb25TeXN0ZW0oXG4gIGVuZ2luZTogSUVuZ2luZSxcbiAgZ2V0UGxheWVyQWRkcmVzczogKCkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvblByZXNlbnRhdGlvbkVuZGVkOiAoKSA9PiB2b2lkLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChwcmVzZW50YXRpb25TeXN0ZW0gfHwgc3RhcnRpbmdTeXN0ZW0pIHJldHVybjtcbiAgc3RhcnRpbmdTeXN0ZW0gPSB0cnVlO1xuXG4gIHRyeSB7XG4gICAgLy8gVGhlIGJvdCBvbmx5IHNlcnZlcyBwcmVzZW50YXRpb246c3RhdGUgdG8gcHJlc2VudGVycywgc28gcHJvbW90ZSB0aGlzIGFkbWluXG4gICAgLy8gZmlyc3QuIGdldERjbENhc3RJbmZvIGxhemlseSBjcmVhdGVzIHRoZSByb29tIGVuc3VyZVByZXNlbnRlclJvbGUgZGVwZW5kcyBvbixcbiAgICAvLyBzbyBpdCBtdXN0IHJlc29sdmUgYmVmb3JlIGVuc3VyZVByZXNlbnRlclJvbGUgKHNlZSBQUiAjMTM1NikuXG4gICAgY29uc3QgWywgY2FzdERhdGFdID0gYXdhaXQgZ2V0RGNsQ2FzdEluZm8oKTtcbiAgICBpZiAoY2FzdERhdGEpIHNldERjbENhc3RJbmZvKGNhc3REYXRhKTtcblxuICAgIC8vIEJhaWwgKGxlYXZpbmcgcHJlc2VudGF0aW9uU3lzdGVtIG51bGwpIGlmIHdlIGNvdWxkbid0IGNvbmZpcm0gcHJlc2VudGVyXG4gICAgLy8gc3RhdHVzIOKAlCB0aGUgY29uc3VtZSBsb29wIHdvdWxkIG90aGVyd2lzZSBydW4gZm9yZXZlciByZWNlaXZpbmcgbm90aGluZyxcbiAgICAvLyB3aXRoIG5vIHJldHJ5LiBUaGUgbmV4dCBwb2xsIHRpY2sgcmUtYXR0ZW1wdHMgdGhlIHdob2xlIHNldHVwLlxuICAgIGNvbnN0IGFkZHJlc3MgPSBnZXRQbGF5ZXJBZGRyZXNzKCk7XG4gICAgaWYgKCFhZGRyZXNzIHx8ICEoYXdhaXQgZW5zdXJlUHJlc2VudGVyUm9sZShhZGRyZXNzKSkpIHJldHVybjtcblxuICAgIC8vIFRoZSBwcmVzZW50YXRpb24gbWF5IGhhdmUgZW5kZWQgd2hpbGUgd2Ugd2VyZSBzZXR0aW5nIHVwIOKAlCBiYWlsIHNvIHdlIGRvbid0XG4gICAgLy8gbGVhdmUgYW4gb3JwaGFuZWQgc3lzdGVtIHJ1bm5pbmcgZm9yIGEgcHJlc2VudGF0aW9uIHRoYXQncyBhbHJlYWR5IGdvbmUuXG4gICAgaWYgKCFwcmVzZW50YXRpb25BY3RpdmUpIHJldHVybjtcblxuICAgIHN1YnNjcmliZVRvUHJlc2VudGF0aW9uVG9waWMoKTtcblxuICAgIC8vIEtlZXAgcHJlc2VudGF0aW9uU3RhdGUgKHNsaWRlIGNvdW50ZXIsIHZpZGVvIHN0YXRlKSBpbiBzeW5jIHdpdGggdGhlIHRvcGljLFxuICAgIC8vIHRocm90dGxlZCB0byBDT05TVU1FX0lOVEVSVkFMX01TIOKAlCBkcmFpbmluZyBldmVyeSBmcmFtZSBpcyBmYXIgbW9yZSB0aGFuIGFcbiAgICAvLyBzbGlkZSBjb3VudGVyIG5lZWRzLiBUaGUgYGNvbnN1bWluZ2AgZ3VhcmQgcHJldmVudHMgb3ZlcmxhcCBpZiBhIGRyYWluXG4gICAgLy8gb3V0bGFzdHMgb25lIGludGVydmFsOyBlYWNoIGRyYWluIHJldHVybnMgdGhlIGxhdGVzdCBzdGF0ZSwgc28gdGhyb3R0bGluZ1xuICAgIC8vIG5ldmVyIGRyb3BzIHRoZSBmaW5hbCBtZXNzYWdlIChpbmNsdWRpbmcgYHByZXNlbnRhdGlvbjpzdG9wcGVkYCkuXG4gICAgY29uc3QgY29uc3VtZSA9ICgpID0+IHtcbiAgICAgIGlmIChjb25zdW1pbmcpIHJldHVybjtcbiAgICAgIGNvbnN1bWluZyA9IHRydWU7XG4gICAgICBjb25zdW1lUHJlc2VudGF0aW9uTWVzc2FnZXMoKVxuICAgICAgICAudGhlbihsYXRlc3RTdGF0ZSA9PiB7XG4gICAgICAgICAgLy8gVGhpcyBwcm9taXNlIGNhbiByZXNvbHZlIGFmdGVyIGEgZmFsbGluZy1lZGdlIHRlYXJkb3duIGNsZWFyZWQgdGhlXG4gICAgICAgICAgLy8gc3RhdGUgKHN0b3BQcmVzZW50YXRpb25TeXN0ZW0pLiBCYWlsIGlmIHRoZSBwcmVzZW50YXRpb24gaXMgbm8gbG9uZ2VyXG4gICAgICAgICAgLy8gYWN0aXZlIHNvIGEgbGF0ZSBkcmFpbiBjYW4ndCByZXBvcHVsYXRlIHN0YWxlIHNsaWRlIGNvbnRyb2xzIHRoYXRcbiAgICAgICAgICAvLyBub3RoaW5nIHdvdWxkIHRoZW4gY2xlYXIuXG4gICAgICAgICAgaWYgKCFwcmVzZW50YXRpb25BY3RpdmUpIHJldHVybjtcbiAgICAgICAgICBpZiAobGF0ZXN0U3RhdGUgPT09ICdzdG9wcGVkJykge1xuICAgICAgICAgICAgc2lnbmFsUHJlc2VudGF0aW9uRW5kZWQob25QcmVzZW50YXRpb25FbmRlZCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChsYXRlc3RTdGF0ZSkge1xuICAgICAgICAgICAgc2V0UHJlc2VudGF0aW9uU3RhdGUobGF0ZXN0U3RhdGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgICAvLyBjb25zdW1lUHJlc2VudGF0aW9uTWVzc2FnZXMgc3dhbGxvd3MgaXRzIG93biBlcnJvcnMgYW5kIHJlc29sdmVzIHRvXG4gICAgICAgICAgLy8gdW5kZWZpbmVkLCBzbyB0aGlzIG9ubHkgZmlyZXMgb24gYW4gdW5leHBlY3RlZCByZWplY3Rpb24g4oCUIGxvZyBpdFxuICAgICAgICAgIC8vIHJhdGhlciB0aGFuIGRyb3BwaW5nIGl0IHNpbGVudGx5LCB0aGVuIHJldHJ5IG9uIHRoZSBuZXh0IHRpY2suXG4gICAgICAgICAgY29uc29sZS5lcnJvcignW0RjbENhc3RdIEZhaWxlZCB0byBjb25zdW1lIHByZXNlbnRhdGlvbiBtZXNzYWdlcycsIGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIGNvbnN1bWluZyA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcHJlc2VudGF0aW9uU3lzdGVtID0gc2V0SW50ZXJ2YWwoZW5naW5lLCBjb25zdW1lLCBDT05TVU1FX0lOVEVSVkFMX01TKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyBTZXR1cCBmYWlsZWQgKGUuZy4gYSBuZXR3b3JrIGNhbGwgcmVqZWN0ZWQpLiBMZWF2ZSBwcmVzZW50YXRpb25TeXN0ZW0gbnVsbFxuICAgIC8vIHNvIHRoZSBuZXh0IHBvbGwgdGljayByZXRyaWVzIGluc3RlYWQgb2Ygd2VkZ2luZyBkZXRlY3Rpb24gcGVybWFuZW50bHkuXG4gICAgY29uc29sZS5lcnJvcignW0RjbENhc3RdIEZhaWxlZCB0byBzdGFydCBwcmVzZW50YXRpb24gc3lzdGVtLCB3aWxsIHJldHJ5JywgZXJyb3IpO1xuICB9IGZpbmFsbHkge1xuICAgIHN0YXJ0aW5nU3lzdGVtID0gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RvcFByZXNlbnRhdGlvblN5c3RlbShlbmdpbmU6IElFbmdpbmUpOiB2b2lkIHtcbiAgaWYgKHByZXNlbnRhdGlvblN5c3RlbSkge1xuICAgIGNsZWFySW50ZXJ2YWwoZW5naW5lLCBwcmVzZW50YXRpb25TeXN0ZW0pO1xuICAgIHByZXNlbnRhdGlvblN5c3RlbSA9IG51bGw7XG4gIH1cbiAgY2xlYXJQcmVzZW50YXRpb25TdGF0ZSgpO1xufVxuXG5mdW5jdGlvbiBpc0Nhc3RDYXBhYmxlU2NlbmUoZW5naW5lOiBJRW5naW5lKTogYm9vbGVhbiB7XG4gIGNvbnN0IHZpZGVvQ29udHJvbCA9IGdldEFkbWluVG9vbGtpdFZpZGVvQ29udHJvbChlbmdpbmUpO1xuICByZXR1cm4gISF2aWRlb0NvbnRyb2w/LmlzRW5hYmxlZCAmJiBnZXRWaWRlb1BsYXllcnMoZW5naW5lKS5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRQcmVzZW50YXRpb25EZXRlY3Rpb24oXG4gIGVuZ2luZTogSUVuZ2luZSxcbiAgZ2V0SXNBZG1pbjogKCkgPT4gYm9vbGVhbixcbiAgZ2V0UGxheWVyQWRkcmVzczogKCkgPT4gc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBvblByZXNlbnRhdGlvblN0YXJ0ZWQ6ICgpID0+IHZvaWQsXG4gIG9uUHJlc2VudGF0aW9uRW5kZWQ6ICgpID0+IHZvaWQsXG4pOiB2b2lkIHtcbiAgaWYgKGRldGVjdGlvblN0YXJ0ZWQpIHJldHVybjtcbiAgZGV0ZWN0aW9uU3RhcnRlZCA9IHRydWU7XG5cbiAgY29uc3QgcG9sbCA9IGFzeW5jICgpID0+IHtcbiAgICAvLyBBZG1pbnMgb25seSwgYW5kIG9ubHkgaW4gc2NlbmVzIHdpdGggY2FzdCBzY3JlZW5zLiBSZS1jaGVja2VkIGVhY2ggdGljayBzb1xuICAgIC8vIGRldGVjdGlvbiBiZWdpbnMgYXMgc29vbiBhcyB0aGUgcGxheWVyL2FkbWluIGxpc3QgcmVzb2x2ZXMuXG4gICAgaWYgKCFnZXRJc0FkbWluKCkgfHwgIWlzQ2FzdENhcGFibGVTY2VuZShlbmdpbmUpKSByZXR1cm47XG5cbiAgICAvLyBTa2lwIGlmIGEgcHJldmlvdXMgdGljayBpcyBzdGlsbCBpbiBmbGlnaHQg4oCUIGdldEFjdGl2ZVN0cmVhbXMgYW5kIHRoZSBzeXN0ZW1cbiAgICAvLyBzZXR1cCBpdCB0cmlnZ2VycyBjYW4gb3V0bGFzdCBQT0xMX0lOVEVSVkFMX01TLiBNaXJyb3JzIHRoZSBgY29uc3VtaW5nYCBndWFyZC5cbiAgICBpZiAocG9sbGluZykgcmV0dXJuO1xuICAgIHBvbGxpbmcgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0cmFja3MgPSBhd2FpdCBnZXRBY3RpdmVTdHJlYW1zKCk7XG4gICAgICBpZiAoIXRyYWNrcykgcmV0dXJuO1xuXG4gICAgICAvLyBLZWVwIHRoZSBTcGVha2VyIFNob3djYXNlIGxpc3QgZnJlc2ggKGFsc28gZHJpdmVzIHRoZSBjb21wYWN0IHZpZXcnc1xuICAgICAgLy8gcHJlc2VudGF0aW9uIGNvbnRyb2xzIHZpYSBwcmVzZW50YXRpb25Cb3RJblJvb20pLlxuICAgICAgc2V0UGFydGljaXBhbnRzKGdyb3VwVHJhY2tzQnlQYXJ0aWNpcGFudCh0cmFja3MpKTtcblxuICAgICAgY29uc3QgaGFzUHJlc2VudGF0aW9uID0gaGFzUHJlc2VudGF0aW9uVHJhY2sodHJhY2tzKTtcbiAgICAgIGlmIChoYXNQcmVzZW50YXRpb24pIHtcbiAgICAgICAgLy8gQXV0by1vcGVuIG9uY2UsIG9uIHRoZSB0cmFjay1hcHBlYXJlZCBlZGdlIOKAlCBpbmRlcGVuZGVudCBvZiB3aGV0aGVyIHRoZVxuICAgICAgICAvLyBjb25zdW1lIHN5c3RlbSBoYXMgZmluaXNoZWQgKG9yIGZhaWxlZCkgaXRzIHNldHVwLCBzbyBhIHNldHVwIHJldHJ5IG5ldmVyXG4gICAgICAgIC8vIHJlLW9wZW5zIHRoZSBwYW5lbCB0aGUgYWRtaW4gbWF5IGhhdmUgc2luY2UgY2xvc2VkLlxuICAgICAgICBpZiAoIXByZXNlbnRhdGlvbkFjdGl2ZSkge1xuICAgICAgICAgIHByZXNlbnRhdGlvbkFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgcHJlc2VudGF0aW9uRW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICBvblByZXNlbnRhdGlvblN0YXJ0ZWQoKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBFbnN1cmUgdGhlIGNvbnN1bWUgc3lzdGVtIGlzIHJ1bm5pbmcuIFJldHJpZXMgYSBwcmV2aW91c2x5IGZhaWxlZCBzZXR1cFxuICAgICAgICAvLyBiZWNhdXNlIHByZXNlbnRhdGlvblN5c3RlbSBpcyBvbmx5IGFzc2lnbmVkIG9uIHN1Y2Nlc3MuXG4gICAgICAgIGF3YWl0IHN0YXJ0UHJlc2VudGF0aW9uU3lzdGVtKGVuZ2luZSwgZ2V0UGxheWVyQWRkcmVzcywgb25QcmVzZW50YXRpb25FbmRlZCk7XG4gICAgICB9IGVsc2UgaWYgKHByZXNlbnRhdGlvbkFjdGl2ZSkge1xuICAgICAgICBwcmVzZW50YXRpb25BY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgc2lnbmFsUHJlc2VudGF0aW9uRW5kZWQob25QcmVzZW50YXRpb25FbmRlZCk7XG4gICAgICAgIHN0b3BQcmVzZW50YXRpb25TeXN0ZW0oZW5naW5lKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gQSByZWplY3RlZCBuZXR3b3JrIGNhbGwgKGdldEFjdGl2ZVN0cmVhbXMpIG9yIHNldHVwIHN0ZXAgd291bGQgb3RoZXJ3aXNlXG4gICAgICAvLyBzdXJmYWNlIGFzIGFuIHVuaGFuZGxlZCByZWplY3Rpb247IGxvZyBhbmQgcmV0cnkgb24gdGhlIG5leHQgdGljay5cbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tEY2xDYXN0XSBQcmVzZW50YXRpb24gZGV0ZWN0aW9uIHBvbGwgZmFpbGVkLCB3aWxsIHJldHJ5JywgZXJyb3IpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBwb2xsaW5nID0gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIC8vIFBvbGwgaW1tZWRpYXRlbHksIHRoZW4gZXZlcnkgc2Vjb25kLiBUaGUgaGFuZGxlIGlzIGludGVudGlvbmFsbHkgZGlzY2FyZGVkOlxuICAvLyBkZXRlY3Rpb24gcnVucyBmb3IgdGhlIHNjZW5lJ3MgbGlmZXRpbWUgYW5kIGlzIG5ldmVyIHRvcm4gZG93bi5cbiAgcG9sbCgpO1xuICBzZXRJbnRlcnZhbChlbmdpbmUsIHBvbGwsIFBPTExfSU5URVJWQUxfTVMpO1xufVxuIl19
@@ -1,4 +1,4 @@
1
- import { IEngine } from '@dcl/ecs';
1
+ import type { IEngine } from '@dcl/ecs';
2
2
  import ReactEcs from '@dcl/react-ecs';
3
3
  export declare function DeleteStreamKeyConfirmation({ engine, onCancel, onReset, }: {
4
4
  engine: IEngine;
@@ -5,7 +5,7 @@ import { LoadingDots } from '../../Loading';
5
5
  import { Error } from '../../Error';
6
6
  import { resetStreamKey } from '../api';
7
7
  import { getComponents } from '../../../definitions';
8
- import { state } from '../..';
8
+ import { state } from '../../store';
9
9
  export function DeleteStreamKeyConfirmation({ engine, onCancel, onReset, }) {
10
10
  const [isLoading, setIsLoading] = ReactEcs.useState(false);
11
11
  const [error, setError] = ReactEcs.useState('');
@@ -59,4 +59,4 @@ export function DeleteStreamKeyConfirmation({ engine, onCancel, onReset, }) {
59
59
  isLoading && ReactEcs.createElement(LoadingDots, { engine: engine }),
60
60
  error && ReactEcs.createElement(Error, { text: error })));
61
61
  }
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVsZXRlU3RyZWFtS2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkbWluLXRvb2xraXQtdWkvVmlkZW9Db250cm9sL0xpdmVTdHJlYW0vRGVsZXRlU3RyZWFtS2V5LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDeEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFFOUIsTUFBTSxVQUFVLDJCQUEyQixDQUFDLEVBQzFDLE1BQU0sRUFDTixRQUFRLEVBQ1IsT0FBTyxHQUtSO0lBQ0MsTUFBTSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNELE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRCxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEQsT0FBTyxDQUNMLHVCQUFDLFFBQVEsSUFDUCxXQUFXLEVBQUU7WUFDWCxTQUFTLEVBQUUsR0FBRztZQUNkLE9BQU8sRUFBRSxNQUFNO1lBQ2YsYUFBYSxFQUFFLFFBQVE7WUFD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QUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElFbmdpbmUgfSBmcm9tICdAZGNsL2Vjcyc7XG5pbXBvcnQgeyBDb2xvcjQgfSBmcm9tICdAZGNsL2Vjcy1tYXRoJztcbmltcG9ydCBSZWFjdEVjcywgeyBVaUVudGl0eSwgTGFiZWwgfSBmcm9tICdAZGNsL3JlYWN0LWVjcyc7XG5cbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uLy4uL0J1dHRvbic7XG5pbXBvcnQgeyBMb2FkaW5nRG90cyB9IGZyb20gJy4uLy4uL0xvYWRpbmcnO1xuaW1wb3J0IHsgRXJyb3IgfSBmcm9tICcuLi8uLi9FcnJvcic7XG5pbXBvcnQgeyByZXNldFN0cmVhbUtleSB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRzIH0gZnJvbSAnLi4vLi4vLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgc3RhdGUgfSBmcm9tICcuLi8uLic7XG5cbmV4cG9ydCBmdW5jdGlvbiBEZWxldGVTdHJlYW1LZXlDb25maXJtYXRpb24oe1xuICBlbmdpbmUsXG4gIG9uQ2FuY2VsLFxuICBvblJlc2V0LFxufToge1xuICBlbmdpbmU6IElFbmdpbmU7XG4gIG9uQ2FuY2VsKCk6IHZvaWQ7XG4gIG9uUmVzZXQoKTogdm9pZDtcbn0pIHtcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IFJlYWN0RWNzLnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSBSZWFjdEVjcy51c2VTdGF0ZSgnJyk7XG4gIGNvbnN0IHsgVmlkZW9Db250cm9sU3RhdGUgfSA9IGdldENvbXBvbmVudHMoZW5naW5lKTtcblxuICByZXR1cm4gKFxuICAgIDxVaUVudGl0eVxuICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgbWluSGVpZ2h0OiA0NzksXG4gICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgIGJvcmRlclJhZGl1czogMTIsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxMYWJlbFxuICAgICAgICB2YWx1ZT1cIjxiPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZXNldCB5b3VyIFN0cmVhbSBLZXk/PC9iPlwiXG4gICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgY29sb3I9e0NvbG9yNC5mcm9tSGV4U3RyaW5nKCcjRkNGQ0ZDJyl9XG4gICAgICAvPlxuXG4gICAgICA8TGFiZWxcbiAgICAgICAgdmFsdWU9XCJBY3RpdmUgc3RyZWFtcyB1c2luZyB0aGlzIHN0cmVhbSBrZXkgd2lsbCBiZSBkaXNjb25uZWN0ZWQuXCJcbiAgICAgICAgZm9udFNpemU9ezE0fVxuICAgICAgICBjb2xvcj17Q29sb3I0LmZyb21IZXhTdHJpbmcoJyNGRkZGRkZCMicpfVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIG1hcmdpbjogeyB0b3A6IDYsIGJvdHRvbTogMjQgfSxcbiAgICAgICAgfX1cbiAgICAgIC8+XG5cbiAgICAgIDxVaUVudGl0eVxuICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgeyFpc0xvYWRpbmcgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGlkPVwic3RyZWFtX2tleV9jYW5jZWxfcmVtb3ZlXCJcbiAgICAgICAgICAgIHZhbHVlPVwiPGI+Q2FuY2VsPC9iPlwiXG4gICAgICAgICAgICB2YXJpYW50PVwicHJpbWFyeVwiXG4gICAgICAgICAgICBmb250U2l6ZT17MTh9XG4gICAgICAgICAgICBjb2xvcj17Q29sb3I0LkJsYWNrKCl9XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICB3aWR0aDogOTAsXG4gICAgICAgICAgICAgIGhlaWdodDogNDAsXG4gICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgbWFyZ2luOiB7IHJpZ2h0OiAzMCwgbGVmdDogMzAgfSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBvbk1vdXNlRG93bj17KCkgPT4gb25DYW5jZWwoKX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7IWlzTG9hZGluZyAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgaWQ9XCJzdHJlYW1fa2V5X2NvbmZpcm1fcmVtb3ZlXCJcbiAgICAgICAgICAgIHZhbHVlPXsnPGI+UmVzZXQ8L2I+J31cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIGZvbnRTaXplPXsxOH1cbiAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuV2hpdGUoKX1cbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgIHBhZGRpbmc6IDgsXG4gICAgICAgICAgICAgIGhlaWdodDogNDAsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgdWlCYWNrZ3JvdW5kPXt7IGNvbG9yOiBDb2xvcjQuZnJvbUhleFN0cmluZygnI0ZCM0IzQicpIH19XG4gICAgICAgICAgICBvbk1vdXNlRG93bj17YXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICBzZXRJc0xvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgIGNvbnN0IFtlcnJvciwgZGF0YV0gPSBhd2FpdCByZXNldFN0cmVhbUtleSgpO1xuICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBzZXRFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2aWRlb0NvbnRyb2wgPSBWaWRlb0NvbnRyb2xTdGF0ZS5nZXRNdXRhYmxlKHN0YXRlLmFkbWluVG9vbGtpdFVpRW50aXR5KTtcbiAgICAgICAgICAgICAgICB2aWRlb0NvbnRyb2wuZW5kc0F0ID0gZGF0YT8uZW5kc0F0O1xuICAgICAgICAgICAgICAgIG9uUmVzZXQoKTtcbiAgICAgICAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L1VpRW50aXR5PlxuICAgICAge2lzTG9hZGluZyAmJiA8TG9hZGluZ0RvdHMgZW5naW5lPXtlbmdpbmV9IC8+fVxuICAgICAge2Vycm9yICYmIDxFcnJvciB0ZXh0PXtlcnJvcn0gLz59XG4gICAgPC9VaUVudGl0eT5cbiAgKTtcbn1cbiJdfQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVsZXRlU3RyZWFtS2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkbWluLXRvb2xraXQtdWkvVmlkZW9Db250cm9sL0xpdmVTdHJlYW0vRGVsZXRlU3RyZWFtS2V5LnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDeEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsTUFBTSxVQUFVLDJCQUEyQixDQUFDLEVBQzFDLE1BQU0sRUFDTixRQUFRLEVBQ1IsT0FBTyxHQUtSO0lBQ0MsTUFBTSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNELE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRCxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEQsT0FBTyxDQUNMLHVCQUFDLFFBQVEsSUFDUCxXQUFXLEVBQUU7WUFDWCxTQUFTLEVBQUUsR0FBRztZQUNkLE9BQU8sRUFBRSxNQUFNO1lBQ2YsYUFBYSxFQUFFLFFBQVE7WUFDdkIsVUFBVSxFQUFFLFFBQVE7WUFDcEIsY0FBYyxFQUFFLFFBQVE7WUFDeEIsWUFBWSxFQUFFLEVBQUU7U0FDakI7UUFFRCx1QkFBQyxLQUFLLElBQ0osS0FBSyxFQUFDLHdEQUF3RCxFQUM5RCxRQUFRLEVBQUUsRUFBRSxFQUNaLEtBQUssRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUN0QztRQUVGLHVCQUFDLEtBQUssSUFDSixLQUFLLEVBQUMsNERBQTRELEVBQ2xFLFFBQVEsRUFBRSxFQUFFLEVBQ1osS0FBSyxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEVBQ3hDLFdBQVcsRUFBRTtnQkFDWCxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7YUFDL0IsR0FDRDtRQUVGLHVCQUFDLFFBQVEsSUFDUCxXQUFXLEVBQUU7Z0JBQ1gsT0FBTyxFQUFFLE1BQU07Z0JBQ2YsYUFBYSxFQUFFLEtBQUs7Z0JBQ3BCLGNBQWMsRUFBRSxRQUFRO2dCQUN4QixVQUFVLEVBQUUsUUFBUTtnQkFDcEIsS0FBSyxFQUFFLE1BQU07YUFDZDtZQUVBLENBQUMsU0FBUyxJQUFJLENBQ2IsdUJBQUMsTUFBTSxJQUNMLEVBQUUsRUFBQywwQkFBMEIsRUFDN0IsS0FBSyxFQUFDLGVBQWUsRUFDckIsT0FBTyxFQUFDLFNBQVMsRUFDakIsUUFBUSxFQUFFLEVBQUUsRUFDWixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUNyQixXQUFXLEVBQUU7b0JBQ1gsS0FBSyxFQUFFLEVBQUU7b0JBQ1QsTUFBTSxFQUFFLEVBQUU7b0JBQ1YsT0FBTyxFQUFFLE1BQU07b0JBQ2YsY0FBYyxFQUFFLFFBQVE7b0JBQ3hCLFVBQVUsRUFBRSxRQUFRO29CQUNwQixNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7aUJBQ2hDLEVBQ0QsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxHQUM3QixDQUNIO1lBQ0EsQ0FBQyxTQUFTLElBQUksQ0FDYix1QkFBQyxNQUFNLElBQ0wsRUFBRSxFQUFDLDJCQUEyQixFQUM5QixLQUFLLEVBQUUsY0FBYyxFQUNyQixPQUFPLEVBQUMsU0FBUyxFQUNqQixRQUFRLEVBQUUsRUFBRSxFQUNaLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQ3JCLFdBQVcsRUFBRTtvQkFDWCxPQUFPLEVBQUUsQ0FBQztvQkFDVixNQUFNLEVBQUUsRUFBRTtvQkFDVixjQUFjLEVBQUUsUUFBUTtvQkFDeEIsVUFBVSxFQUFFLFFBQVE7aUJBQ3JCLEVBQ0QsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFDeEQsV0FBVyxFQUFFLEtBQUssSUFBSSxFQUFFO29CQUN0QixZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ25CLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsTUFBTSxjQUFjLEVBQUUsQ0FBQztvQkFDN0MsSUFBSSxLQUFLLEVBQUUsQ0FBQzt3QkFDVixRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ2hCLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDdEIsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQzt3QkFDOUUsWUFBWSxDQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUUsTUFBTSxDQUFDO3dCQUNuQyxPQUFPLEVBQUUsQ0FBQzt3QkFDVixZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ3RCLENBQUM7Z0JBQ0gsQ0FBQyxHQUNELENBQ0gsQ0FDUTtRQUNWLFNBQVMsSUFBSSx1QkFBQyxXQUFXLElBQUMsTUFBTSxFQUFFLE1BQU0sR0FBSTtRQUM1QyxLQUFLLElBQUksdUJBQUMsS0FBSyxJQUFDLElBQUksRUFBRSxLQUFLLEdBQUksQ0FDdkIsQ0FDWixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSUVuZ2luZSB9IGZyb20gJ0BkY2wvZWNzJztcbmltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvZWNzLW1hdGgnO1xuaW1wb3J0IFJlYWN0RWNzLCB7IFVpRW50aXR5LCBMYWJlbCB9IGZyb20gJ0BkY2wvcmVhY3QtZWNzJztcblxuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vLi4vQnV0dG9uJztcbmltcG9ydCB7IExvYWRpbmdEb3RzIH0gZnJvbSAnLi4vLi4vTG9hZGluZyc7XG5pbXBvcnQgeyBFcnJvciB9IGZyb20gJy4uLy4uL0Vycm9yJztcbmltcG9ydCB7IHJlc2V0U3RyZWFtS2V5IH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IGdldENvbXBvbmVudHMgfSBmcm9tICcuLi8uLi8uLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBzdGF0ZSB9IGZyb20gJy4uLy4uL3N0b3JlJztcblxuZXhwb3J0IGZ1bmN0aW9uIERlbGV0ZVN0cmVhbUtleUNvbmZpcm1hdGlvbih7XG4gIGVuZ2luZSxcbiAgb25DYW5jZWwsXG4gIG9uUmVzZXQsXG59OiB7XG4gIGVuZ2luZTogSUVuZ2luZTtcbiAgb25DYW5jZWwoKTogdm9pZDtcbiAgb25SZXNldCgpOiB2b2lkO1xufSkge1xuICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gUmVhY3RFY3MudXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IFJlYWN0RWNzLnVzZVN0YXRlKCcnKTtcbiAgY29uc3QgeyBWaWRlb0NvbnRyb2xTdGF0ZSB9ID0gZ2V0Q29tcG9uZW50cyhlbmdpbmUpO1xuXG4gIHJldHVybiAoXG4gICAgPFVpRW50aXR5XG4gICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICBtaW5IZWlnaHQ6IDQ3OSxcbiAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgYm9yZGVyUmFkaXVzOiAxMixcbiAgICAgIH19XG4gICAgPlxuICAgICAgPExhYmVsXG4gICAgICAgIHZhbHVlPVwiPGI+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlc2V0IHlvdXIgU3RyZWFtIEtleT88L2I+XCJcbiAgICAgICAgZm9udFNpemU9ezE2fVxuICAgICAgICBjb2xvcj17Q29sb3I0LmZyb21IZXhTdHJpbmcoJyNGQ0ZDRkMnKX1cbiAgICAgIC8+XG5cbiAgICAgIDxMYWJlbFxuICAgICAgICB2YWx1ZT1cIkFjdGl2ZSBzdHJlYW1zIHVzaW5nIHRoaXMgc3RyZWFtIGtleSB3aWxsIGJlIGRpc2Nvbm5lY3RlZC5cIlxuICAgICAgICBmb250U2l6ZT17MTR9XG4gICAgICAgIGNvbG9yPXtDb2xvcjQuZnJvbUhleFN0cmluZygnI0ZGRkZGRkIyJyl9XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgbWFyZ2luOiB7IHRvcDogNiwgYm90dG9tOiAyNCB9LFxuICAgICAgICB9fVxuICAgICAgLz5cblxuICAgICAgPFVpRW50aXR5XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnLFxuICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7IWlzTG9hZGluZyAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgaWQ9XCJzdHJlYW1fa2V5X2NhbmNlbF9yZW1vdmVcIlxuICAgICAgICAgICAgdmFsdWU9XCI8Yj5DYW5jZWw8L2I+XCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIGZvbnRTaXplPXsxOH1cbiAgICAgICAgICAgIGNvbG9yPXtDb2xvcjQuQmxhY2soKX1cbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgICAgIHdpZHRoOiA5MCxcbiAgICAgICAgICAgICAgaGVpZ2h0OiA0MCxcbiAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBtYXJnaW46IHsgcmlnaHQ6IDMwLCBsZWZ0OiAzMCB9LFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG9uTW91c2VEb3duPXsoKSA9PiBvbkNhbmNlbCgpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHshaXNMb2FkaW5nICYmIChcbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBpZD1cInN0cmVhbV9rZXlfY29uZmlybV9yZW1vdmVcIlxuICAgICAgICAgICAgdmFsdWU9eyc8Yj5SZXNldDwvYj4nfVxuICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgZm9udFNpemU9ezE4fVxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5XaGl0ZSgpfVxuICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgcGFkZGluZzogOCxcbiAgICAgICAgICAgICAgaGVpZ2h0OiA0MCxcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB1aUJhY2tncm91bmQ9e3sgY29sb3I6IENvbG9yNC5mcm9tSGV4U3RyaW5nKCcjRkIzQjNCJykgfX1cbiAgICAgICAgICAgIG9uTW91c2VEb3duPXthc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgIHNldElzTG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgY29uc3QgW2Vycm9yLCBkYXRhXSA9IGF3YWl0IHJlc2V0U3RyZWFtS2V5KCk7XG4gICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIHNldEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICBzZXRJc0xvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpZGVvQ29udHJvbCA9IFZpZGVvQ29udHJvbFN0YXRlLmdldE11dGFibGUoc3RhdGUuYWRtaW5Ub29sa2l0VWlFbnRpdHkpO1xuICAgICAgICAgICAgICAgIHZpZGVvQ29udHJvbC5lbmRzQXQgPSBkYXRhPy5lbmRzQXQ7XG4gICAgICAgICAgICAgICAgb25SZXNldCgpO1xuICAgICAgICAgICAgICAgIHNldElzTG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgIDwvVWlFbnRpdHk+XG4gICAgICB7aXNMb2FkaW5nICYmIDxMb2FkaW5nRG90cyBlbmdpbmU9e2VuZ2luZX0gLz59XG4gICAgICB7ZXJyb3IgJiYgPEVycm9yIHRleHQ9e2Vycm9yfSAvPn1cbiAgICA8L1VpRW50aXR5PlxuICApO1xufVxuIl19
@@ -1,4 +1,4 @@
1
- import { IEngine } from '@dcl/ecs';
1
+ import type { IEngine } from '@dcl/ecs';
2
2
  import ReactEcs from '@dcl/react-ecs';
3
3
  export declare function GenerateStreamKey({ engine, onGenerate, }: {
4
4
  engine: IEngine;
@@ -5,7 +5,7 @@ import { Error } from '../../Error';
5
5
  import { generateStreamKey } from '../api';
6
6
  import { LoadingDots } from '../../Loading';
7
7
  import { getComponents } from '../../../definitions';
8
- import { state } from '../..';
8
+ import { state } from '../../store';
9
9
  export function GenerateStreamKey({ engine, onGenerate, }) {
10
10
  const [loading, setLoading] = ReactEcs.useState(false);
11
11
  const [error, setError] = ReactEcs.useState('');
@@ -38,4 +38,4 @@ export function GenerateStreamKey({ engine, onGenerate, }) {
38
38
  } })),
39
39
  error && (ReactEcs.createElement(Error, { text: error, uiTransform: { margin: { top: 16 } } }))))));
40
40
  }
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2VuZXJhdGVTdHJlYW1LZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9WaWRlb0NvbnRyb2wvTGl2ZVN0cmVhbS9HZW5lcmF0ZVN0cmVhbUtleS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFnQixNQUFNLFFBQVEsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRTlCLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxFQUNoQyxNQUFNLEVBQ04sVUFBVSxHQUlYO0lBQ0MsTUFBTSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ2hFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBUyxFQUFFLENBQUMsQ0FBQztJQUN4RCxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEQsT0FBTyxDQUNMLHVCQUFDLFFBQVEsSUFDUCxXQUFXLEVBQUU7WUFDWCxLQUFLLEVBQUUsTUFBTTtZQUNiLE1BQU0sRUFBRSxHQUFHO1lBQ1gsY0FBYyxFQUFFLFFBQVE7WUFDeEIsVUFBVSxFQUFFLFFBQVE7U0FDckIsSUFFQSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQ1QsdUJBQUMsUUFBUSxJQUFDLFdBQVcsRUFBRSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUU7UUFDaEQsdUJBQUMsV0FBVyxJQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUk7UUFDL0IsdUJBQUMsS0FBSyxJQUNKLEtBQUssRUFBQyw0QkFBNEIsRUFDbEMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQ3RDLFFBQVEsRUFBRSxFQUFFLEVBQ1osV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQ3BDLENBQ08sQ0FDWixDQUFDLENBQUMsQ0FBQyxDQUNGLHVCQUFDLFFBQVEsSUFBQyxXQUFXLEVBQUUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFO1FBQ2hELHVCQUFDLFFBQVEsSUFBQyxXQUFXLEVBQUUsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7WUFDaEUsdUJBQUMsTUFBTSxJQUNMLEVBQUUsRUFBQyxpQ0FBaUMsRUFDcEMsS0FBSyxFQUFDLHVCQUF1QixFQUM3QixRQUFRLEVBQUUsRUFBRSxFQUNaLFdBQVcsRUFBRTtvQkFDWCxNQUFNLEVBQUUsRUFBRTtvQkFDVixPQUFPLEVBQUUsRUFBRTtvQkFDWCxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO2lCQUN2QixFQUNELFdBQVcsRUFBRSxLQUFLLElBQUksRUFBRTtvQkFDdEIsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNqQixNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLE1BQU0saUJBQWlCLEVBQUUsQ0FBQztvQkFDaEQsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNsQixJQUFJLEtBQUssRUFBRSxDQUFDO3dCQUNWLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDbEIsQ0FBQzt5QkFBTSxJQUFJLElBQUksRUFBRSxDQUFDO3dCQUNoQixNQUFNLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7d0JBQzlFLFlBQVksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQzt3QkFDbEMsVUFBVSxFQUFFLENBQUM7b0JBQ2YsQ0FBQztnQkFDSCxDQUFDLEdBQ0QsQ0FDTztRQUNWLEtBQUssSUFBSSxDQUNSLHVCQUFDLEtBQUssSUFDSixJQUFJLEVBQUUsS0FBSyxFQUNYLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUNwQyxDQUNILENBQ1EsQ0FDWixDQUNRLENBQ1osQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xvcjQgfSBmcm9tICdAZGNsL3Nkay9tYXRoJztcbmltcG9ydCB7IElFbmdpbmUgfSBmcm9tICdAZGNsL2Vjcyc7XG5pbXBvcnQgUmVhY3RFY3MsIHsgVWlFbnRpdHksIExhYmVsIH0gZnJvbSAnQGRjbC9yZWFjdC1lY3MnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vLi4vQnV0dG9uJztcbmltcG9ydCB7IEVycm9yIH0gZnJvbSAnLi4vLi4vRXJyb3InO1xuaW1wb3J0IHsgZ2VuZXJhdGVTdHJlYW1LZXksIGdldFN0cmVhbUtleSB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQgeyBMb2FkaW5nRG90cyB9IGZyb20gJy4uLy4uL0xvYWRpbmcnO1xuaW1wb3J0IHsgZ2V0Q29tcG9uZW50cyB9IGZyb20gJy4uLy4uLy4uL2RlZmluaXRpb25zJztcbmltcG9ydCB7IHN0YXRlIH0gZnJvbSAnLi4vLi4nO1xuXG5leHBvcnQgZnVuY3Rpb24gR2VuZXJhdGVTdHJlYW1LZXkoe1xuICBlbmdpbmUsXG4gIG9uR2VuZXJhdGUsXG59OiB7XG4gIGVuZ2luZTogSUVuZ2luZTtcbiAgb25HZW5lcmF0ZTogKCkgPT4gdm9pZDtcbn0pIHtcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gUmVhY3RFY3MudXNlU3RhdGU8Ym9vbGVhbj4oZmFsc2UpO1xuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IFJlYWN0RWNzLnVzZVN0YXRlPHN0cmluZz4oJycpO1xuICBjb25zdCB7IFZpZGVvQ29udHJvbFN0YXRlIH0gPSBnZXRDb21wb25lbnRzKGVuZ2luZSk7XG5cbiAgcmV0dXJuIChcbiAgICA8VWlFbnRpdHlcbiAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogNDYwLFxuICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgfX1cbiAgICA+XG4gICAgICB7bG9hZGluZyA/IChcbiAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICAgIDxMb2FkaW5nRG90cyBlbmdpbmU9e2VuZ2luZX0gLz5cbiAgICAgICAgICA8TGFiZWxcbiAgICAgICAgICAgIHZhbHVlPVwiR2VuZXJhdGluZyB5b3VyIFN0cmVhbSBLZXlcIlxuICAgICAgICAgICAgY29sb3I9e0NvbG9yNC5mcm9tSGV4U3RyaW5nKCcjQTA5QkE4Jyl9XG4gICAgICAgICAgICBmb250U2l6ZT17MTZ9XG4gICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBtYXJnaW46IHsgdG9wOiAxNiB9IH19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICkgOiAoXG4gICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17eyBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyB9fT5cbiAgICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3sganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLCB3aWR0aDogJzEwMCUnIH19PlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBpZD1cInZpZGVvX2NvbnRyb2xfbGl2ZV9nZW5lcmF0ZV9rZXlcIlxuICAgICAgICAgICAgICB2YWx1ZT1cIjxiPkdldCBTdHJlYW0gS2V5PC9iPlwiXG4gICAgICAgICAgICAgIGZvbnRTaXplPXsxOH1cbiAgICAgICAgICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDUyLFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDE2LFxuICAgICAgICAgICAgICAgIG1hcmdpbjogeyBib3R0b206IDE2IH0sXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIG9uTW91c2VEb3duPXthc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBbZXJyb3IsIGRhdGFdID0gYXdhaXQgZ2VuZXJhdGVTdHJlYW1LZXkoKTtcbiAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgIHNldEVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHZpZGVvQ29udHJvbCA9IFZpZGVvQ29udHJvbFN0YXRlLmdldE11dGFibGUoc3RhdGUuYWRtaW5Ub29sa2l0VWlFbnRpdHkpO1xuICAgICAgICAgICAgICAgICAgdmlkZW9Db250cm9sLmVuZHNBdCA9IGRhdGEuZW5kc0F0O1xuICAgICAgICAgICAgICAgICAgb25HZW5lcmF0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICAgICB7ZXJyb3IgJiYgKFxuICAgICAgICAgICAgPEVycm9yXG4gICAgICAgICAgICAgIHRleHQ9e2Vycm9yfVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17eyBtYXJnaW46IHsgdG9wOiAxNiB9IH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvVWlFbnRpdHk+XG4gICAgICApfVxuICAgIDwvVWlFbnRpdHk+XG4gICk7XG59XG4iXX0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2VuZXJhdGVTdHJlYW1LZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWRtaW4tdG9vbGtpdC11aS9WaWRlb0NvbnRyb2wvTGl2ZVN0cmVhbS9HZW5lcmF0ZVN0cmVhbUtleS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEVBQ2hDLE1BQU0sRUFDTixVQUFVLEdBSVg7SUFDQyxNQUFNLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDaEUsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVwRCxPQUFPLENBQ0wsdUJBQUMsUUFBUSxJQUNQLFdBQVcsRUFBRTtZQUNYLEtBQUssRUFBRSxNQUFNO1lBQ2IsTUFBTSxFQUFFLEdBQUc7WUFDWCxjQUFjLEVBQUUsUUFBUTtZQUN4QixVQUFVLEVBQUUsUUFBUTtTQUNyQixJQUVBLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FDVCx1QkFBQyxRQUFRLElBQUMsV0FBVyxFQUFFLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRTtRQUNoRCx1QkFBQyxXQUFXLElBQUMsTUFBTSxFQUFFLE1BQU0sR0FBSTtRQUMvQix1QkFBQyxLQUFLLElBQ0osS0FBSyxFQUFDLDRCQUE0QixFQUNsQyxLQUFLLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFDdEMsUUFBUSxFQUFFLEVBQUUsRUFDWixXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FDcEMsQ0FDTyxDQUNaLENBQUMsQ0FBQyxDQUFDLENBQ0YsdUJBQUMsUUFBUSxJQUFDLFdBQVcsRUFBRSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUU7UUFDaEQsdUJBQUMsUUFBUSxJQUFDLFdBQVcsRUFBRSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUNoRSx1QkFBQyxNQUFNLElBQ0wsRUFBRSxFQUFDLGlDQUFpQyxFQUNwQyxLQUFLLEVBQUMsdUJBQXVCLEVBQzdCLFFBQVEsRUFBRSxFQUFFLEVBQ1osV0FBVyxFQUFFO29CQUNYLE1BQU0sRUFBRSxFQUFFO29CQUNWLE9BQU8sRUFBRSxFQUFFO29CQUNYLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7aUJBQ3ZCLEVBQ0QsV0FBVyxFQUFFLEtBQUssSUFBSSxFQUFFO29CQUN0QixVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ2pCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsTUFBTSxpQkFBaUIsRUFBRSxDQUFDO29CQUNoRCxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2xCLElBQUksS0FBSyxFQUFFLENBQUM7d0JBQ1YsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUNsQixDQUFDO3lCQUFNLElBQUksSUFBSSxFQUFFLENBQUM7d0JBQ2hCLE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQzt3QkFDOUUsWUFBWSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO3dCQUNsQyxVQUFVLEVBQUUsQ0FBQztvQkFDZixDQUFDO2dCQUNILENBQUMsR0FDRCxDQUNPO1FBQ1YsS0FBSyxJQUFJLENBQ1IsdUJBQUMsS0FBSyxJQUNKLElBQUksRUFBRSxLQUFLLEVBQ1gsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQ3BDLENBQ0gsQ0FDUSxDQUNaLENBQ1EsQ0FDWixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbG9yNCB9IGZyb20gJ0BkY2wvc2RrL21hdGgnO1xuaW1wb3J0IHR5cGUgeyBJRW5naW5lIH0gZnJvbSAnQGRjbC9lY3MnO1xuaW1wb3J0IFJlYWN0RWNzLCB7IFVpRW50aXR5LCBMYWJlbCB9IGZyb20gJ0BkY2wvcmVhY3QtZWNzJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uLy4uL0J1dHRvbic7XG5pbXBvcnQgeyBFcnJvciB9IGZyb20gJy4uLy4uL0Vycm9yJztcbmltcG9ydCB7IGdlbmVyYXRlU3RyZWFtS2V5IH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IExvYWRpbmdEb3RzIH0gZnJvbSAnLi4vLi4vTG9hZGluZyc7XG5pbXBvcnQgeyBnZXRDb21wb25lbnRzIH0gZnJvbSAnLi4vLi4vLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgc3RhdGUgfSBmcm9tICcuLi8uLi9zdG9yZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBHZW5lcmF0ZVN0cmVhbUtleSh7XG4gIGVuZ2luZSxcbiAgb25HZW5lcmF0ZSxcbn06IHtcbiAgZW5naW5lOiBJRW5naW5lO1xuICBvbkdlbmVyYXRlOiAoKSA9PiB2b2lkO1xufSkge1xuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSBSZWFjdEVjcy51c2VTdGF0ZTxib29sZWFuPihmYWxzZSk7XG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gUmVhY3RFY3MudXNlU3RhdGU8c3RyaW5nPignJyk7XG4gIGNvbnN0IHsgVmlkZW9Db250cm9sU3RhdGUgfSA9IGdldENvbXBvbmVudHMoZW5naW5lKTtcblxuICByZXR1cm4gKFxuICAgIDxVaUVudGl0eVxuICAgICAgdWlUcmFuc2Zvcm09e3tcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiA0NjAsXG4gICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICB9fVxuICAgID5cbiAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICA8VWlFbnRpdHkgdWlUcmFuc2Zvcm09e3sgZmxleERpcmVjdGlvbjogJ2NvbHVtbicgfX0+XG4gICAgICAgICAgPExvYWRpbmdEb3RzIGVuZ2luZT17ZW5naW5lfSAvPlxuICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgdmFsdWU9XCJHZW5lcmF0aW5nIHlvdXIgU3RyZWFtIEtleVwiXG4gICAgICAgICAgICBjb2xvcj17Q29sb3I0LmZyb21IZXhTdHJpbmcoJyNBMDlCQTgnKX1cbiAgICAgICAgICAgIGZvbnRTaXplPXsxNn1cbiAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7IG1hcmdpbjogeyB0b3A6IDE2IH0gfX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgKSA6IChcbiAgICAgICAgPFVpRW50aXR5IHVpVHJhbnNmb3JtPXt7IGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nIH19PlxuICAgICAgICAgIDxVaUVudGl0eSB1aVRyYW5zZm9ybT17eyBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsIHdpZHRoOiAnMTAwJScgfX0+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwidmlkZW9fY29udHJvbF9saXZlX2dlbmVyYXRlX2tleVwiXG4gICAgICAgICAgICAgIHZhbHVlPVwiPGI+R2V0IFN0cmVhbSBLZXk8L2I+XCJcbiAgICAgICAgICAgICAgZm9udFNpemU9ezE4fVxuICAgICAgICAgICAgICB1aVRyYW5zZm9ybT17e1xuICAgICAgICAgICAgICAgIGhlaWdodDogNTIsXG4gICAgICAgICAgICAgICAgcGFkZGluZzogMTYsXG4gICAgICAgICAgICAgICAgbWFyZ2luOiB7IGJvdHRvbTogMTYgfSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgb25Nb3VzZURvd249e2FzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IFtlcnJvciwgZGF0YV0gPSBhd2FpdCBnZW5lcmF0ZVN0cmVhbUtleSgpO1xuICAgICAgICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgdmlkZW9Db250cm9sID0gVmlkZW9Db250cm9sU3RhdGUuZ2V0TXV0YWJsZShzdGF0ZS5hZG1pblRvb2xraXRVaUVudGl0eSk7XG4gICAgICAgICAgICAgICAgICB2aWRlb0NvbnRyb2wuZW5kc0F0ID0gZGF0YS5lbmRzQXQ7XG4gICAgICAgICAgICAgICAgICBvbkdlbmVyYXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1VpRW50aXR5PlxuICAgICAgICAgIHtlcnJvciAmJiAoXG4gICAgICAgICAgICA8RXJyb3JcbiAgICAgICAgICAgICAgdGV4dD17ZXJyb3J9XG4gICAgICAgICAgICAgIHVpVHJhbnNmb3JtPXt7IG1hcmdpbjogeyB0b3A6IDE2IH0gfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9VaUVudGl0eT5cbiAgICAgICl9XG4gICAgPC9VaUVudGl0eT5cbiAgKTtcbn1cbiJdfQ==