@agilemotion/oui-react-js 2.0.14 → 2.0.15

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.
@@ -93,61 +93,219 @@ const HtmlPanel = /*#__PURE__*/_react.default.memo(props => {
93
93
  }
94
94
  };
95
95
  };
96
+
97
+ // ---- presentation helpers ----
98
+ const stepColors = stepStatus => {
99
+ const primary = _ApplicationManager.default.getApplicationPrimaryColor();
100
+ const secondary = _ApplicationManager.default.getApplicationSecondaryColor();
101
+ switch (stepStatus) {
102
+ case 'COMPLETE':
103
+ return {
104
+ bg: '#50cd89',
105
+ border: '#50cd89',
106
+ text: '#FFFFFF',
107
+ muted: 'rgba(255,255,255,0.85)'
108
+ };
109
+ case 'IN_PROGRESS':
110
+ return {
111
+ bg: primary,
112
+ border: primary,
113
+ text: '#FFFFFF',
114
+ muted: 'rgba(255,255,255,0.85)'
115
+ };
116
+ case 'OVERDUE':
117
+ return {
118
+ bg: '#f1416c',
119
+ border: '#f1416c',
120
+ text: '#FFFFFF',
121
+ muted: 'rgba(255,255,255,0.85)'
122
+ };
123
+ default:
124
+ // PENDING / unknown
125
+ return {
126
+ bg: '#FFFFFF',
127
+ border: secondary,
128
+ text: '#1a3c5e',
129
+ muted: '#7a8694'
130
+ };
131
+ }
132
+ };
133
+ const varianceText = v => {
134
+ if (v === null || v === undefined) return null;
135
+ if (v > 0) return '+' + v + 'd late';
136
+ if (v < 0) return Math.abs(v) + 'd early';
137
+ return 'on time';
138
+ };
139
+ const dayLabel = n => Math.abs(n) === 1 ? 'day' : 'days';
140
+ const projectionBanner = () => {
141
+ const v = data.varianceDays;
142
+ switch (data.projectionStatus) {
143
+ case 'LATE':
144
+ return {
145
+ label: 'LATE by ' + v + ' ' + dayLabel(v),
146
+ color: '#f1416c'
147
+ };
148
+ case 'QUICKER_THAN_PLANNED':
149
+ return {
150
+ label: 'QUICKER THAN PLANNED by ' + Math.abs(v) + ' ' + dayLabel(v),
151
+ color: '#50cd89'
152
+ };
153
+ default:
154
+ // EXACT
155
+ return {
156
+ label: 'ON TRACK',
157
+ color: _ApplicationManager.default.getApplicationPrimaryColor()
158
+ };
159
+ }
160
+ };
161
+ const noPlan = data && (data.active === false || !data.steps || data.steps.length === 0);
96
162
  return visible && /*#__PURE__*/_react.default.createElement("div", {
97
163
  style: _Utils.default.mergeStyles({}, props.config)
98
- }, data && /*#__PURE__*/_react.default.createElement("div", null, data.steps.map((step, index) => {
99
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
164
+ }, data && noPlan && /*#__PURE__*/_react.default.createElement("div", {
165
+ style: {
166
+ display: 'flex',
167
+ flexDirection: 'column',
168
+ alignItems: 'center',
169
+ justifyContent: 'center',
170
+ padding: '48px 16px',
171
+ textAlign: 'center'
172
+ }
173
+ }, /*#__PURE__*/_react.default.createElement("i", {
174
+ className: "fa fa-stream",
175
+ style: {
176
+ fontSize: '40px',
177
+ color: '#d5dbe3',
178
+ marginBottom: '12px'
179
+ }
180
+ }), /*#__PURE__*/_react.default.createElement("div", {
181
+ style: {
182
+ fontSize: '16px',
183
+ fontWeight: 600,
184
+ color: '#6b7785'
185
+ }
186
+ }, data.message || 'No plan in progress'), /*#__PURE__*/_react.default.createElement("div", {
187
+ style: {
188
+ fontSize: '12px',
189
+ color: '#9aa3b1',
190
+ marginTop: '4px'
191
+ }
192
+ }, "A procurement plan timeline will appear here once planning starts.")), data && !noPlan && /*#__PURE__*/_react.default.createElement("div", null, data.projectedEndDate && /*#__PURE__*/_react.default.createElement("div", {
193
+ style: {
194
+ display: 'flex',
195
+ alignItems: 'center',
196
+ gap: '10px',
197
+ padding: '12px 16px',
198
+ margin: '4px 4px 12px',
199
+ borderRadius: '12px',
200
+ background: '#f8fafc',
201
+ border: '1px solid #eef1f5',
202
+ borderLeft: '4px solid ' + projectionBanner().color
203
+ }
204
+ }, /*#__PURE__*/_react.default.createElement("span", {
205
+ style: {
206
+ width: '10px',
207
+ height: '10px',
208
+ borderRadius: '50%',
209
+ flexShrink: 0,
210
+ background: projectionBanner().color
211
+ }
212
+ }), /*#__PURE__*/_react.default.createElement("div", {
213
+ style: {
214
+ minWidth: 0
215
+ }
216
+ }, /*#__PURE__*/_react.default.createElement("div", {
217
+ style: {
218
+ fontSize: '13px',
219
+ fontWeight: 700,
220
+ letterSpacing: '0.02em',
221
+ color: projectionBanner().color
222
+ }
223
+ }, projectionBanner().label), /*#__PURE__*/_react.default.createElement("div", {
224
+ style: {
225
+ fontSize: '12px',
226
+ color: '#4a5765'
227
+ }
228
+ }, "Projected completion: ", data.projectedEndDate, data.plannedEndDate ? ' · planned ' + data.plannedEndDate : ''))), data.steps.map((step, index) => {
229
+ const c = stepColors(step.status);
230
+ const vText = varianceText(step.varianceDays);
231
+ const hasPlanned = step.plannedStart || step.plannedEnd;
232
+ const hasActual = step.actualStart || step.actualEnd;
233
+ const actualEndLabel = step.actualEnd || (step.status === 'IN_PROGRESS' || step.status === 'OVERDUE' ? 'in progress' : '—');
234
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {
235
+ key: index
236
+ }, /*#__PURE__*/_react.default.createElement("div", {
100
237
  style: {
101
- margin: "4px"
238
+ margin: '4px'
102
239
  }
103
240
  }, /*#__PURE__*/_react.default.createElement("div", {
104
241
  style: {
105
- display: "inline-block",
106
- width: "100%",
107
- padding: "16px",
108
- borderRadius: "32px",
109
- maxWidth: "100%",
110
- backgroundColor: step.sequence < data.currentStep.sequence ? '#50cd89' : step.sequence === data.currentStep.sequence ? _ApplicationManager.default.getApplicationPrimaryColor() : 'white',
111
- border: step.sequence < data.currentStep.sequence ? '1px solid ' + '#FFFFFF' : step.sequence === data.currentStep.sequence ? '1px solid ' + _ApplicationManager.default.getApplicationPrimaryColor() : '1px solid ' + _ApplicationManager.default.getApplicationSecondaryColor(),
112
- color: step.sequence < data.currentStep.sequence ? '#FFFFFF' : null,
113
- overflow: "hidden",
114
- textOverflow: "ellipsis",
115
- whiteSpace: "nowrap"
242
+ width: '100%',
243
+ padding: '14px 16px',
244
+ borderRadius: '12px',
245
+ boxSizing: 'border-box',
246
+ backgroundColor: c.bg,
247
+ border: '1px solid #e1e1e1',
248
+ color: c.text
249
+ }
250
+ }, /*#__PURE__*/_react.default.createElement("div", {
251
+ style: {
252
+ display: 'flex',
253
+ alignItems: 'center',
254
+ justifyContent: 'space-between',
255
+ gap: '8px'
116
256
  }
117
257
  }, /*#__PURE__*/_react.default.createElement("div", {
118
258
  style: {
119
- maxWidth: "100%",
120
- overflow: "hidden",
121
- textOverflow: "ellipsis",
122
- whiteSpace: "nowrap",
123
- fontSize: "20px"
259
+ fontSize: '18px',
260
+ fontWeight: 600,
261
+ minWidth: 0,
262
+ overflow: 'hidden',
263
+ textOverflow: 'ellipsis',
264
+ whiteSpace: 'nowrap'
124
265
  }
125
- }, step.description), step.startDate && step.endDate && /*#__PURE__*/_react.default.createElement("div", {
266
+ }, step.description), vText && /*#__PURE__*/_react.default.createElement("span", {
267
+ style: {
268
+ flexShrink: 0,
269
+ fontSize: '11px',
270
+ fontWeight: 600,
271
+ padding: '2px 8px',
272
+ borderRadius: '999px',
273
+ background: c.text === '#FFFFFF' ? 'rgba(255,255,255,0.25)' : '#eef1f5',
274
+ color: c.text
275
+ }
276
+ }, vText)), hasPlanned && /*#__PURE__*/_react.default.createElement("div", {
126
277
  style: {
127
- fontStyle: "italic",
128
278
  fontSize: '12px',
129
- width: "100%",
130
- display: 'flex',
131
- justifyContent: 'left',
132
- maxWidth: "100%",
133
- overflow: "hidden",
134
- textOverflow: "ellipsis",
135
- whiteSpace: "nowrap"
279
+ fontStyle: 'italic',
280
+ marginTop: '4px',
281
+ color: c.muted,
282
+ overflow: 'hidden',
283
+ textOverflow: 'ellipsis',
284
+ whiteSpace: 'nowrap'
285
+ }
286
+ }, "Planned: ", step.plannedStart || '—', " \u2192 ", step.plannedEnd || '—'), hasActual && /*#__PURE__*/_react.default.createElement("div", {
287
+ style: {
288
+ fontSize: '12px',
289
+ marginTop: '2px',
290
+ color: c.text,
291
+ overflow: 'hidden',
292
+ textOverflow: 'ellipsis',
293
+ whiteSpace: 'nowrap'
136
294
  }
137
- }, step.startDate + " - " + step.endDate))), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, index < data.steps.length - 1 && /*#__PURE__*/_react.default.createElement("div", {
295
+ }, "Actual: ", step.actualStart || '—', " \u2192 ", actualEndLabel))), index < data.steps.length - 1 && /*#__PURE__*/_react.default.createElement("div", {
138
296
  style: {
139
- height: "24px",
140
- marginLeft: "48px"
297
+ height: '24px',
298
+ marginLeft: '48px'
141
299
  }
142
300
  }, /*#__PURE__*/_react.default.createElement("div", {
143
301
  style: {
144
- marginTop: "-12px",
145
- height: "calc(100% + 12px)",
146
- width: "4px",
147
- backgroundColor: "#e1e1e1"
302
+ marginTop: '-5px',
303
+ height: 'calc(100% + 5px)',
304
+ width: '2px',
305
+ backgroundColor: '#eef1f5'
148
306
  }
149
- }))));
307
+ })));
150
308
  })));
151
309
  });
152
310
  var _default = exports.default = HtmlPanel;
153
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9yZWFjdEh0bWxSZW5kZXJlciIsIl9PYnNlcnZhYmxlIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9yZWFjdFByb21pc2VUcmFja2VyIiwiX0V2ZW50IiwiX0V2ZW50VHlwZSIsIl9SZXN0U2VydmljZSIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkhhbmRsZWJhcnMiLCJzdGF0dXMiLCJyZXNwb25zZSIsIm9rIiwiUHJvbWlzZSIsInJlc29sdmUiLCJlcnJvciIsIkVycm9yIiwic3RhdHVzVGV4dCIsImNvZGUiLCJyZWplY3QiLCJqc29uIiwidGV4dCIsImxvY2F0aW9uIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsInBvcnQiLCJIdG1sUGFuZWwiLCJSZWFjdCIsIm1lbW8iLCJwcm9wcyIsImRhdGEiLCJzZXREYXRhIiwidXNlU3RhdGUiLCJ2aXNpYmxlIiwic2V0VmlzaWJsZSIsInVzZUVmZmVjdCIsImhhbmRsZSIsImFwaSIsImV2ZW50IiwiRXZlbnQiLCJ2aWV3SWQiLCJldmVudE1hbmFnZXIiLCJmaXJlRXZlbnQiLCJFdmVudFR5cGUiLCJDT01QT05FTlRfTE9BRCIsImRvTG9hZERhdGEiLCJwYXJzZWRDb25maWciLCJVdGlscyIsInBhcnNlQ29uZmlnIiwiY29uZmlnIiwiYWRkU3Vic2NyaXB0aW9ucyIsImV2ZW50SGFuZGxpbmdDb25maWciLCJhZGRTeXN0ZW1TdWJzY3JpcHRpb25zIiwicmVmcmVzaCIsImNsZWFyQ29tcG9uZW50RXZlbnRMaXN0ZW5lcnMiLCJhY3Rpb25Db25maWciLCJzZXJ2aWNlIiwiZGF0YVNlcnZpY2UiLCJpc051bGwiLCJtZXRob2QiLCJ0eXBlIiwiaW52b2tlUnBjIiwiaW52b2tlUmVzdCIsImNvbXBvbmVudCIsInRoZW4iLCJyZXN1bHQiLCJjYXRjaCIsImNvbnNvbGUiLCJwdWJsaXNoRXJyb3JNZXNzYWdlIiwiaWQiLCJsb2FkRGF0YSIsImV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24iLCJnZXRDaGlsZHJlbiIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsIm1lcmdlU3R5bGVzIiwic3RlcHMiLCJtYXAiLCJzdGVwIiwiaW5kZXgiLCJGcmFnbWVudCIsIm1hcmdpbiIsImRpc3BsYXkiLCJ3aWR0aCIsInBhZGRpbmciLCJib3JkZXJSYWRpdXMiLCJtYXhXaWR0aCIsImJhY2tncm91bmRDb2xvciIsInNlcXVlbmNlIiwiY3VycmVudFN0ZXAiLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJnZXRBcHBsaWNhdGlvblByaW1hcnlDb2xvciIsImJvcmRlciIsImdldEFwcGxpY2F0aW9uU2Vjb25kYXJ5Q29sb3IiLCJjb2xvciIsIm92ZXJmbG93IiwidGV4dE92ZXJmbG93Iiwid2hpdGVTcGFjZSIsImZvbnRTaXplIiwiZGVzY3JpcHRpb24iLCJzdGFydERhdGUiLCJlbmREYXRlIiwiZm9udFN0eWxlIiwianVzdGlmeUNvbnRlbnQiLCJsZW5ndGgiLCJoZWlnaHQiLCJtYXJnaW5MZWZ0IiwibWFyZ2luVG9wIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL1Byb2dyZXNzVHJhY2tlci5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBVdGlscyBmcm9tICcuLi9VdGlscyc7XG5pbXBvcnQgSFRNTFJlbmRlcmVyIGZyb20gJ3JlYWN0LWh0bWwtcmVuZGVyZXInO1xuaW1wb3J0IGV2ZW50TWFuYWdlciBmcm9tICcuLi9ldmVudC9PYnNlcnZhYmxlJztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCB7dHJhY2tQcm9taXNlfSBmcm9tICdyZWFjdC1wcm9taXNlLXRyYWNrZXInO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCBFdmVudFR5cGUgZnJvbSAnLi4vZXZlbnQvRXZlbnRUeXBlJztcbmltcG9ydCB7aW52b2tlUmVzdCwgaW52b2tlUnBjfSBmcm9tIFwiLi4vUmVzdFNlcnZpY2VcIjtcblxuY29uc3QgSGFuZGxlYmFycyA9IHJlcXVpcmUoJ2hhbmRsZWJhcnMnKTtcbmNvbnN0IHN0YXR1cyA9IChyZXNwb25zZSkgPT4ge1xuICAgIGlmIChyZXNwb25zZS5vaykge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3BvbnNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgZXJyb3IgPSBuZXcgRXJyb3IocmVzcG9uc2Uuc3RhdHVzVGV4dCk7XG4gICAgICAgIGVycm9yLmNvZGUgPSByZXNwb25zZS5zdGF0dXM7XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICB9XG59O1xuXG5jb25zdCBqc29uID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKTtcbn07XG5cbmNvbnN0IGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSArICc6JyArIHdpbmRvdy5sb2NhdGlvbi5wb3J0O1xuY29uc3QgSHRtbFBhbmVsID0gUmVhY3QubWVtbygocHJvcHMpID0+IHtcbiAgICBjb25zdCBbZGF0YSwgc2V0RGF0YV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBwcm9wcy5oYW5kbGUuYXBpID0gYXBpKCk7XG4gICAgfSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsZXQgZXZlbnQgPSBuZXcgRXZlbnQocHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQsIG51bGwpO1xuICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5DT01QT05FTlRfTE9BRCwgZXZlbnQpO1xuXG4gICAgICAgIGRvTG9hZERhdGEoKTtcbiAgICB9LCBbXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsZXQgcGFyc2VkQ29uZmlnID0gVXRpbHMucGFyc2VDb25maWcocHJvcHMuY29uZmlnLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICBldmVudE1hbmFnZXIuYWRkU3Vic2NyaXB0aW9ucyhwYXJzZWRDb25maWcuZXZlbnRIYW5kbGluZ0NvbmZpZywgcHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICBldmVudE1hbmFnZXIuYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyhwcm9wcy52aWV3SWQsIHBhcnNlZENvbmZpZyk7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkucmVmcmVzaCgpO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmNsZWFyQ29tcG9uZW50RXZlbnRMaXN0ZW5lcnMocHJvcHMuaGFuZGxlKTtcbiAgICAgICAgfTtcbiAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBkb0xvYWREYXRhID0gKGFjdGlvbkNvbmZpZykgPT4ge1xuICAgICAgICBsZXQgc2VydmljZTtcbiAgICAgICAgaWYgKGFjdGlvbkNvbmZpZyAmJiBhY3Rpb25Db25maWcuc2VydmljZSkge1xuICAgICAgICAgICAgc2VydmljZSA9IGFjdGlvbkNvbmZpZy5zZXJ2aWNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2VydmljZSA9IHByb3BzLmNvbmZpZy5kYXRhU2VydmljZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHNlcnZpY2UpKSB7XG4gICAgICAgICAgICBsZXQgbWV0aG9kID0gc2VydmljZS50eXBlID09PSAncnBjJyA/IGludm9rZVJwYyA6IGludm9rZVJlc3Q7XG4gICAgICAgICAgICBtZXRob2Qoe1xuICAgICAgICAgICAgICAgIHNlcnZpY2U6IHNlcnZpY2UsXG4gICAgICAgICAgICAgICAgY29tcG9uZW50OiBwcm9wcy5oYW5kbGUsXG4gICAgICAgICAgICAgICAgdmlld0lkOiBwcm9wcy52aWV3SWRcbiAgICAgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldERhdGEocmVzdWx0KTtcbiAgICAgICAgICAgIH0pLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICBVdGlscy5wdWJsaXNoRXJyb3JNZXNzYWdlKGUsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuY29uZmlnLmlkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvYWREYXRhOiAoYWN0aW9uQ29uZmlnKSA9PiB7XG4gICAgICAgICAgICAgICAgZG9Mb2FkRGF0YShhY3Rpb25Db25maWcpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJlZnJlc2goKSB7XG4gICAgICAgICAgICAgICAgbGV0IHBhcnNlZENvbmZpZyA9IFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcpICYmICFVdGlscy5pc051bGwocGFyc2VkQ29uZmlnLnZpc2libGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZpc2libGUoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcudmlzaWJsZSwgcGFyc2VkQ29uZmlnLmlkKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmlzaWJsZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0Q2hpbGRyZW46ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IHZpc2libGUodmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHNldFZpc2libGUodmlzaWJsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIHZpc2libGUgJiZcbiAgICAgICAgPGRpdiBzdHlsZT17VXRpbHMubWVyZ2VTdHlsZXMoe30sIHByb3BzLmNvbmZpZyl9PlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGEgJiZcbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnN0ZXBzLm1hcCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gPD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiBcIjRweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogXCJpbmxpbmUtYmxvY2tcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBcIjE2cHhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiBcIjMycHhcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHN0ZXAuc2VxdWVuY2UgPCBkYXRhLmN1cnJlbnRTdGVwLnNlcXVlbmNlID8gJyM1MGNkODknIDogc3RlcC5zZXF1ZW5jZSA9PT0gZGF0YS5jdXJyZW50U3RlcC5zZXF1ZW5jZSA/IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRBcHBsaWNhdGlvblByaW1hcnlDb2xvcigpIDogJ3doaXRlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiBzdGVwLnNlcXVlbmNlIDwgZGF0YS5jdXJyZW50U3RlcC5zZXF1ZW5jZSA/ICcxcHggc29saWQgJyArICcjRkZGRkZGJyA6IChzdGVwLnNlcXVlbmNlID09PSBkYXRhLmN1cnJlbnRTdGVwLnNlcXVlbmNlID8gJzFweCBzb2xpZCAnICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldEFwcGxpY2F0aW9uUHJpbWFyeUNvbG9yKCkgOiAnMXB4IHNvbGlkICcgKyBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0QXBwbGljYXRpb25TZWNvbmRhcnlDb2xvcigpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHN0ZXAuc2VxdWVuY2UgPCBkYXRhLmN1cnJlbnRTdGVwLnNlcXVlbmNlID8gJyNGRkZGRkYnIDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IFwiaGlkZGVuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRPdmVyZmxvdzogXCJlbGxpcHNpc1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZVNwYWNlOiBcIm5vd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBcImhpZGRlblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dE92ZXJmbG93OiBcImVsbGlwc2lzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZVNwYWNlOiBcIm5vd3JhcFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMjBweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcC5kZXNjcmlwdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhcnREYXRlICYmIHN0ZXAuZW5kRGF0ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U3R5bGU6IFwiaXRhbGljXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogJzEycHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6ICdsZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBcImhpZGRlblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dE92ZXJmbG93OiBcImVsbGlwc2lzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZVNwYWNlOiBcIm5vd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhcnREYXRlICsgXCIgLSBcIiArIHN0ZXAuZW5kRGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPCBkYXRhLnN0ZXBzLmxlbmd0aCAtIDEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7aGVpZ2h0OiBcIjI0cHhcIiwgbWFyZ2luTGVmdDogXCI0OHB4XCJ9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiBcIi0xMnB4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcImNhbGMoMTAwJSArIDEycHgpXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiNHB4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiNlMWUxZTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgSHRtbFBhbmVsO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQyxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDRCxJQUFBQyxNQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxrQkFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksbUJBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLG9CQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxNQUFBLEdB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
311
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9yZWFjdEh0bWxSZW5kZXJlciIsIl9PYnNlcnZhYmxlIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9yZWFjdFByb21pc2VUcmFja2VyIiwiX0V2ZW50IiwiX0V2ZW50VHlwZSIsIl9SZXN0U2VydmljZSIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkhhbmRsZWJhcnMiLCJzdGF0dXMiLCJyZXNwb25zZSIsIm9rIiwiUHJvbWlzZSIsInJlc29sdmUiLCJlcnJvciIsIkVycm9yIiwic3RhdHVzVGV4dCIsImNvZGUiLCJyZWplY3QiLCJqc29uIiwidGV4dCIsImxvY2F0aW9uIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsInBvcnQiLCJIdG1sUGFuZWwiLCJSZWFjdCIsIm1lbW8iLCJwcm9wcyIsImRhdGEiLCJzZXREYXRhIiwidXNlU3RhdGUiLCJ2aXNpYmxlIiwic2V0VmlzaWJsZSIsInVzZUVmZmVjdCIsImhhbmRsZSIsImFwaSIsImV2ZW50IiwiRXZlbnQiLCJ2aWV3SWQiLCJldmVudE1hbmFnZXIiLCJmaXJlRXZlbnQiLCJFdmVudFR5cGUiLCJDT01QT05FTlRfTE9BRCIsImRvTG9hZERhdGEiLCJwYXJzZWRDb25maWciLCJVdGlscyIsInBhcnNlQ29uZmlnIiwiY29uZmlnIiwiYWRkU3Vic2NyaXB0aW9ucyIsImV2ZW50SGFuZGxpbmdDb25maWciLCJhZGRTeXN0ZW1TdWJzY3JpcHRpb25zIiwicmVmcmVzaCIsImNsZWFyQ29tcG9uZW50RXZlbnRMaXN0ZW5lcnMiLCJhY3Rpb25Db25maWciLCJzZXJ2aWNlIiwiZGF0YVNlcnZpY2UiLCJpc051bGwiLCJtZXRob2QiLCJ0eXBlIiwiaW52b2tlUnBjIiwiaW52b2tlUmVzdCIsImNvbXBvbmVudCIsInRoZW4iLCJyZXN1bHQiLCJjYXRjaCIsImNvbnNvbGUiLCJwdWJsaXNoRXJyb3JNZXNzYWdlIiwiaWQiLCJsb2FkRGF0YSIsImV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24iLCJnZXRDaGlsZHJlbiIsInN0ZXBDb2xvcnMiLCJzdGVwU3RhdHVzIiwicHJpbWFyeSIsImFwcGxpY2F0aW9uTWFuYWdlciIsImdldEFwcGxpY2F0aW9uUHJpbWFyeUNvbG9yIiwic2Vjb25kYXJ5IiwiZ2V0QXBwbGljYXRpb25TZWNvbmRhcnlDb2xvciIsImJnIiwiYm9yZGVyIiwibXV0ZWQiLCJ2YXJpYW5jZVRleHQiLCJ2IiwidW5kZWZpbmVkIiwiTWF0aCIsImFicyIsImRheUxhYmVsIiwibiIsInByb2plY3Rpb25CYW5uZXIiLCJ2YXJpYW5jZURheXMiLCJwcm9qZWN0aW9uU3RhdHVzIiwibGFiZWwiLCJjb2xvciIsIm5vUGxhbiIsImFjdGl2ZSIsInN0ZXBzIiwibGVuZ3RoIiwiY3JlYXRlRWxlbWVudCIsInN0eWxlIiwibWVyZ2VTdHlsZXMiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImFsaWduSXRlbXMiLCJqdXN0aWZ5Q29udGVudCIsInBhZGRpbmciLCJ0ZXh0QWxpZ24iLCJjbGFzc05hbWUiLCJmb250U2l6ZSIsIm1hcmdpbkJvdHRvbSIsImZvbnRXZWlnaHQiLCJtZXNzYWdlIiwibWFyZ2luVG9wIiwicHJvamVjdGVkRW5kRGF0ZSIsImdhcCIsIm1hcmdpbiIsImJvcmRlclJhZGl1cyIsImJhY2tncm91bmQiLCJib3JkZXJMZWZ0Iiwid2lkdGgiLCJoZWlnaHQiLCJmbGV4U2hyaW5rIiwibWluV2lkdGgiLCJsZXR0ZXJTcGFjaW5nIiwicGxhbm5lZEVuZERhdGUiLCJtYXAiLCJzdGVwIiwiaW5kZXgiLCJjIiwidlRleHQiLCJoYXNQbGFubmVkIiwicGxhbm5lZFN0YXJ0IiwicGxhbm5lZEVuZCIsImhhc0FjdHVhbCIsImFjdHVhbFN0YXJ0IiwiYWN0dWFsRW5kIiwiYWN0dWFsRW5kTGFiZWwiLCJGcmFnbWVudCIsImtleSIsImJveFNpemluZyIsImJhY2tncm91bmRDb2xvciIsIm92ZXJmbG93IiwidGV4dE92ZXJmbG93Iiwid2hpdGVTcGFjZSIsImRlc2NyaXB0aW9uIiwiZm9udFN0eWxlIiwibWFyZ2luTGVmdCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9Qcm9ncmVzc1RyYWNrZXIuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vVXRpbHMnO1xuaW1wb3J0IEhUTUxSZW5kZXJlciBmcm9tICdyZWFjdC1odG1sLXJlbmRlcmVyJztcbmltcG9ydCBldmVudE1hbmFnZXIgZnJvbSAnLi4vZXZlbnQvT2JzZXJ2YWJsZSc7XG5pbXBvcnQgYXBwbGljYXRpb25NYW5hZ2VyIGZyb20gJy4uL0FwcGxpY2F0aW9uTWFuYWdlcic7XG5pbXBvcnQge3RyYWNrUHJvbWlzZX0gZnJvbSAncmVhY3QtcHJvbWlzZS10cmFja2VyJztcbmltcG9ydCBFdmVudCBmcm9tICcuLi9ldmVudC9FdmVudCc7XG5pbXBvcnQgRXZlbnRUeXBlIGZyb20gJy4uL2V2ZW50L0V2ZW50VHlwZSc7XG5pbXBvcnQge2ludm9rZVJlc3QsIGludm9rZVJwY30gZnJvbSBcIi4uL1Jlc3RTZXJ2aWNlXCI7XG5cbmNvbnN0IEhhbmRsZWJhcnMgPSByZXF1aXJlKCdoYW5kbGViYXJzJyk7XG5jb25zdCBzdGF0dXMgPSAocmVzcG9uc2UpID0+IHtcbiAgICBpZiAocmVzcG9uc2Uub2spIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IGVycm9yID0gbmV3IEVycm9yKHJlc3BvbnNlLnN0YXR1c1RleHQpO1xuICAgICAgICBlcnJvci5jb2RlID0gcmVzcG9uc2Uuc3RhdHVzO1xuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgfVxufTtcblxuY29uc3QganNvbiA9IChyZXNwb25zZSkgPT4ge1xuICAgIHJldHVybiByZXNwb25zZS50ZXh0KCk7XG59O1xuXG5jb25zdCBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUgKyAnOicgKyB3aW5kb3cubG9jYXRpb24ucG9ydDtcbmNvbnN0IEh0bWxQYW5lbCA9IFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgW2RhdGEsIHNldERhdGFdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3Zpc2libGUsIHNldFZpc2libGVdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgIH0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBudWxsKTtcbiAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuQ09NUE9ORU5UX0xPQUQsIGV2ZW50KTtcblxuICAgICAgICBkb0xvYWREYXRhKCk7XG4gICAgfSwgW10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgbGV0IHBhcnNlZENvbmZpZyA9IFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKTtcbiAgICAgICAgZXZlbnRNYW5hZ2VyLmFkZFN1YnNjcmlwdGlvbnMocGFyc2VkQ29uZmlnLmV2ZW50SGFuZGxpbmdDb25maWcsIHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkKTtcbiAgICAgICAgZXZlbnRNYW5hZ2VyLmFkZFN5c3RlbVN1YnNjcmlwdGlvbnMocHJvcHMudmlld0lkLCBwYXJzZWRDb25maWcpO1xuICAgICAgICBwcm9wcy5oYW5kbGUuYXBpLnJlZnJlc2goKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5jbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzKHByb3BzLmhhbmRsZSk7XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgZG9Mb2FkRGF0YSA9IChhY3Rpb25Db25maWcpID0+IHtcbiAgICAgICAgbGV0IHNlcnZpY2U7XG4gICAgICAgIGlmIChhY3Rpb25Db25maWcgJiYgYWN0aW9uQ29uZmlnLnNlcnZpY2UpIHtcbiAgICAgICAgICAgIHNlcnZpY2UgPSBhY3Rpb25Db25maWcuc2VydmljZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlcnZpY2UgPSBwcm9wcy5jb25maWcuZGF0YVNlcnZpY2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChzZXJ2aWNlKSkge1xuICAgICAgICAgICAgbGV0IG1ldGhvZCA9IHNlcnZpY2UudHlwZSA9PT0gJ3JwYycgPyBpbnZva2VScGMgOiBpbnZva2VSZXN0O1xuICAgICAgICAgICAgbWV0aG9kKHtcbiAgICAgICAgICAgICAgICBzZXJ2aWNlOiBzZXJ2aWNlLFxuICAgICAgICAgICAgICAgIGNvbXBvbmVudDogcHJvcHMuaGFuZGxlLFxuICAgICAgICAgICAgICAgIHZpZXdJZDogcHJvcHMudmlld0lkXG4gICAgICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICBzZXREYXRhKHJlc3VsdCk7XG4gICAgICAgICAgICB9KS5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgVXRpbHMucHVibGlzaEVycm9yTWVzc2FnZShlLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBhcGkgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLmNvbmZpZy5pZDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2FkRGF0YTogKGFjdGlvbkNvbmZpZykgPT4ge1xuICAgICAgICAgICAgICAgIGRvTG9hZERhdGEoYWN0aW9uQ29uZmlnKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZWZyZXNoKCkge1xuICAgICAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMuY29uZmlnKSAmJiAhVXRpbHMuaXNOdWxsKHBhcnNlZENvbmZpZy52aXNpYmxlKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyc2VkQ29uZmlnLnZpc2libGUsIHBhcnNlZENvbmZpZy5pZCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZpc2libGUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldENoaWxkcmVuOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCB2aXNpYmxlKHZpc2libGUpIHtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKHZpc2libGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICAvLyAtLS0tIHByZXNlbnRhdGlvbiBoZWxwZXJzIC0tLS1cbiAgICBjb25zdCBzdGVwQ29sb3JzID0gKHN0ZXBTdGF0dXMpID0+IHtcbiAgICAgICAgY29uc3QgcHJpbWFyeSA9IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRBcHBsaWNhdGlvblByaW1hcnlDb2xvcigpO1xuICAgICAgICBjb25zdCBzZWNvbmRhcnkgPSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0QXBwbGljYXRpb25TZWNvbmRhcnlDb2xvcigpO1xuICAgICAgICBzd2l0Y2ggKHN0ZXBTdGF0dXMpIHtcbiAgICAgICAgICAgIGNhc2UgJ0NPTVBMRVRFJzpcbiAgICAgICAgICAgICAgICByZXR1cm4ge2JnOiAnIzUwY2Q4OScsIGJvcmRlcjogJyM1MGNkODknLCB0ZXh0OiAnI0ZGRkZGRicsIG11dGVkOiAncmdiYSgyNTUsMjU1LDI1NSwwLjg1KSd9O1xuICAgICAgICAgICAgY2FzZSAnSU5fUFJPR1JFU1MnOlxuICAgICAgICAgICAgICAgIHJldHVybiB7Ymc6IHByaW1hcnksIGJvcmRlcjogcHJpbWFyeSwgdGV4dDogJyNGRkZGRkYnLCBtdXRlZDogJ3JnYmEoMjU1LDI1NSwyNTUsMC44NSknfTtcbiAgICAgICAgICAgIGNhc2UgJ09WRVJEVUUnOlxuICAgICAgICAgICAgICAgIHJldHVybiB7Ymc6ICcjZjE0MTZjJywgYm9yZGVyOiAnI2YxNDE2YycsIHRleHQ6ICcjRkZGRkZGJywgbXV0ZWQ6ICdyZ2JhKDI1NSwyNTUsMjU1LDAuODUpJ307XG4gICAgICAgICAgICBkZWZhdWx0OiAvLyBQRU5ESU5HIC8gdW5rbm93blxuICAgICAgICAgICAgICAgIHJldHVybiB7Ymc6ICcjRkZGRkZGJywgYm9yZGVyOiBzZWNvbmRhcnksIHRleHQ6ICcjMWEzYzVlJywgbXV0ZWQ6ICcjN2E4Njk0J307XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgdmFyaWFuY2VUZXh0ID0gKHYpID0+IHtcbiAgICAgICAgaWYgKHYgPT09IG51bGwgfHwgdiA9PT0gdW5kZWZpbmVkKSByZXR1cm4gbnVsbDtcbiAgICAgICAgaWYgKHYgPiAwKSByZXR1cm4gJysnICsgdiArICdkIGxhdGUnO1xuICAgICAgICBpZiAodiA8IDApIHJldHVybiBNYXRoLmFicyh2KSArICdkIGVhcmx5JztcbiAgICAgICAgcmV0dXJuICdvbiB0aW1lJztcbiAgICB9O1xuXG4gICAgY29uc3QgZGF5TGFiZWwgPSAobikgPT4gTWF0aC5hYnMobikgPT09IDEgPyAnZGF5JyA6ICdkYXlzJztcblxuICAgIGNvbnN0IHByb2plY3Rpb25CYW5uZXIgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHYgPSBkYXRhLnZhcmlhbmNlRGF5cztcbiAgICAgICAgc3dpdGNoIChkYXRhLnByb2plY3Rpb25TdGF0dXMpIHtcbiAgICAgICAgICAgIGNhc2UgJ0xBVEUnOlxuICAgICAgICAgICAgICAgIHJldHVybiB7bGFiZWw6ICdMQVRFIGJ5ICcgKyB2ICsgJyAnICsgZGF5TGFiZWwodiksIGNvbG9yOiAnI2YxNDE2Yyd9O1xuICAgICAgICAgICAgY2FzZSAnUVVJQ0tFUl9USEFOX1BMQU5ORUQnOlxuICAgICAgICAgICAgICAgIHJldHVybiB7bGFiZWw6ICdRVUlDS0VSIFRIQU4gUExBTk5FRCBieSAnICsgTWF0aC5hYnModikgKyAnICcgKyBkYXlMYWJlbCh2KSwgY29sb3I6ICcjNTBjZDg5J307XG4gICAgICAgICAgICBkZWZhdWx0OiAvLyBFWEFDVFxuICAgICAgICAgICAgICAgIHJldHVybiB7bGFiZWw6ICdPTiBUUkFDSycsIGNvbG9yOiBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0QXBwbGljYXRpb25QcmltYXJ5Q29sb3IoKX07XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgbm9QbGFuID0gZGF0YSAmJiAoZGF0YS5hY3RpdmUgPT09IGZhbHNlIHx8ICFkYXRhLnN0ZXBzIHx8IGRhdGEuc3RlcHMubGVuZ3RoID09PSAwKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIHZpc2libGUgJiZcbiAgICAgICAgPGRpdiBzdHlsZT17VXRpbHMubWVyZ2VTdHlsZXMoe30sIHByb3BzLmNvbmZpZyl9PlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGEgJiYgbm9QbGFuICYmXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAnNDhweCAxNnB4JywgdGV4dEFsaWduOiAnY2VudGVyJ1xuICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzc05hbWU9J2ZhIGZhLXN0cmVhbScgc3R5bGU9e3tmb250U2l6ZTogJzQwcHgnLCBjb2xvcjogJyNkNWRiZTMnLCBtYXJnaW5Cb3R0b206ICcxMnB4J319PjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e2ZvbnRTaXplOiAnMTZweCcsIGZvbnRXZWlnaHQ6IDYwMCwgY29sb3I6ICcjNmI3Nzg1J319PlxuICAgICAgICAgICAgICAgICAgICAgICAge2RhdGEubWVzc2FnZSB8fCAnTm8gcGxhbiBpbiBwcm9ncmVzcyd9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7Zm9udFNpemU6ICcxMnB4JywgY29sb3I6ICcjOWFhM2IxJywgbWFyZ2luVG9wOiAnNHB4J319PlxuICAgICAgICAgICAgICAgICAgICAgICAgQSBwcm9jdXJlbWVudCBwbGFuIHRpbWVsaW5lIHdpbGwgYXBwZWFyIGhlcmUgb25jZSBwbGFubmluZyBzdGFydHMuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGEgJiYgIW5vUGxhbiAmJlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEucHJvamVjdGVkRW5kRGF0ZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogJzEwcHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICcxMnB4IDE2cHgnLCBtYXJnaW46ICc0cHggNHB4IDEycHgnLCBib3JkZXJSYWRpdXM6ICcxMnB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAnI2Y4ZmFmYycsIGJvcmRlcjogJzFweCBzb2xpZCAjZWVmMWY1JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJMZWZ0OiAnNHB4IHNvbGlkICcgKyBwcm9qZWN0aW9uQmFubmVyKCkuY29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTBweCcsIGhlaWdodDogJzEwcHgnLCBib3JkZXJSYWRpdXM6ICc1MCUnLCBmbGV4U2hyaW5rOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBwcm9qZWN0aW9uQmFubmVyKCkuY29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fT48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e21pbldpZHRoOiAwfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tmb250U2l6ZTogJzEzcHgnLCBmb250V2VpZ2h0OiA3MDAsIGxldHRlclNwYWNpbmc6ICcwLjAyZW0nLCBjb2xvcjogcHJvamVjdGlvbkJhbm5lcigpLmNvbG9yfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvamVjdGlvbkJhbm5lcigpLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e2ZvbnRTaXplOiAnMTJweCcsIGNvbG9yOiAnIzRhNTc2NSd9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2plY3RlZCBjb21wbGV0aW9uOiB7ZGF0YS5wcm9qZWN0ZWRFbmREYXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RhdGEucGxhbm5lZEVuZERhdGUgPyAnIMK3IHBsYW5uZWQgJyArIGRhdGEucGxhbm5lZEVuZERhdGUgOiAnJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLnN0ZXBzLm1hcCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjID0gc3RlcENvbG9ycyhzdGVwLnN0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdlRleHQgPSB2YXJpYW5jZVRleHQoc3RlcC52YXJpYW5jZURheXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhhc1BsYW5uZWQgPSBzdGVwLnBsYW5uZWRTdGFydCB8fCBzdGVwLnBsYW5uZWRFbmQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGFzQWN0dWFsID0gc3RlcC5hY3R1YWxTdGFydCB8fCBzdGVwLmFjdHVhbEVuZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3R1YWxFbmRMYWJlbCA9IHN0ZXAuYWN0dWFsRW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgoc3RlcC5zdGF0dXMgPT09ICdJTl9QUk9HUkVTUycgfHwgc3RlcC5zdGF0dXMgPT09ICdPVkVSRFVFJykgPyAnaW4gcHJvZ3Jlc3MnIDogJ+KAlCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWFjdC5GcmFnbWVudCBrZXk9e2luZGV4fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3ttYXJnaW46ICc0cHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMCUnLCBwYWRkaW5nOiAnMTRweCAxNnB4JywgYm9yZGVyUmFkaXVzOiAnMTJweCcsIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGMuYmcsIGJvcmRlcjogJzFweCBzb2xpZCAjZTFlMWUxJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGMudGV4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7ZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJywgZ2FwOiAnOHB4J319PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnMThweCcsIGZvbnRXZWlnaHQ6IDYwMCwgbWluV2lkdGg6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLCB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsIHdoaXRlU3BhY2U6ICdub3dyYXAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3RlcC5kZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZUZXh0ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxleFNocmluazogMCwgZm9udFNpemU6ICcxMXB4JywgZm9udFdlaWdodDogNjAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAnMnB4IDhweCcsIGJvcmRlclJhZGl1czogJzk5OXB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogYy50ZXh0ID09PSAnI0ZGRkZGRicgPyAncmdiYSgyNTUsMjU1LDI1NSwwLjI1KScgOiAnI2VlZjFmNScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBjLnRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZUZXh0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1BsYW5uZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogJzEycHgnLCBmb250U3R5bGU6ICdpdGFsaWMnLCBtYXJnaW5Ub3A6ICc0cHgnLCBjb2xvcjogYy5tdXRlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJywgd2hpdGVTcGFjZTogJ25vd3JhcCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYW5uZWQ6IHtzdGVwLnBsYW5uZWRTdGFydCB8fCAn4oCUJ30gJnJhcnI7IHtzdGVwLnBsYW5uZWRFbmQgfHwgJ+KAlCd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNBY3R1YWwgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogJzEycHgnLCBtYXJnaW5Ub3A6ICcycHgnLCBjb2xvcjogYy50ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJywgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLCB3aGl0ZVNwYWNlOiAnbm93cmFwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0dWFsOiB7c3RlcC5hY3R1YWxTdGFydCB8fCAn4oCUJ30gJnJhcnI7IHthY3R1YWxFbmRMYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA8IGRhdGEuc3RlcHMubGVuZ3RoIC0gMSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3toZWlnaHQ6ICcyNHB4JywgbWFyZ2luTGVmdDogJzQ4cHgnfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogJy01cHgnLCBoZWlnaHQ6ICdjYWxjKDEwMCUgKyA1cHgpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMnB4JywgYmFja2dyb3VuZENvbG9yOiAnI2VlZjFmNSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBIdG1sUGFuZWw7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEs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
@@ -48,7 +48,7 @@ const StepperTitleBar = /*#__PURE__*/_react.default.memo(props => {
48
48
  actions: [{
49
49
  actionType: "script",
50
50
  script: {
51
- lines: ["if($event.data.name === 'stepperTitle'){", " @#{".concat(props.config.id, "}.show()"), "}"]
51
+ lines: ["if($event.data.name === 'stepperTitle' && !isNull(@#{".concat(props.config.id, "})){"), " @#{".concat(props.config.id, "}.show()"), "}"]
52
52
  }
53
53
  }]
54
54
  };
@@ -61,6 +61,7 @@ const StepperTitleBar = /*#__PURE__*/_react.default.memo(props => {
61
61
  recalcLinePosition();
62
62
  });
63
63
  recalcLinePosition();
64
+ show();
64
65
  }, []);
65
66
  const recalcLinePosition = () => {
66
67
  var _$$offset;
@@ -96,6 +97,28 @@ const StepperTitleBar = /*#__PURE__*/_react.default.memo(props => {
96
97
  'width': (stepWidth - titleWidth) / 2 + 'px'
97
98
  });
98
99
  };
100
+ function show() {
101
+ let graph;
102
+ let view = _ApplicationManager.default.getView(props.viewId);
103
+ if (view) {
104
+ for (const key of Object.keys(_ApplicationManager.default.viewContext)) {
105
+ let viewManager = _ApplicationManager.default.viewContext[key];
106
+ for (const viewManagerGraph of viewManager.getGraphs()) {
107
+ if (viewManagerGraph.id === view.graphId) {
108
+ graph = viewManagerGraph;
109
+ }
110
+ }
111
+ }
112
+ }
113
+ if (graph) {
114
+ let steps = graph.getTitleStack();
115
+ setSteps(steps);
116
+ currentIndex.current = graph.getCurrentNodeIndex();
117
+ setActiveSegmentPercentage(100 - 10 * (steps.length - 1));
118
+ // recalc after render
119
+ setTimeout(() => recalcLinePosition(), 0);
120
+ }
121
+ }
99
122
  const api = () => {
100
123
  return {
101
124
  get id() {
@@ -112,26 +135,7 @@ const StepperTitleBar = /*#__PURE__*/_react.default.memo(props => {
112
135
  return [];
113
136
  },
114
137
  show() {
115
- let graph;
116
- let view = _ApplicationManager.default.getView(props.viewId);
117
- if (view) {
118
- for (const key of Object.keys(_ApplicationManager.default.viewContext)) {
119
- let viewManager = _ApplicationManager.default.viewContext[key];
120
- for (const viewManagerGraph of viewManager.getGraphs()) {
121
- if (viewManagerGraph.id === view.graphId) {
122
- graph = viewManagerGraph;
123
- }
124
- }
125
- }
126
- }
127
- if (graph) {
128
- let steps = graph.getTitleStack();
129
- setSteps(steps);
130
- currentIndex.current = graph.getCurrentNodeIndex();
131
- setActiveSegmentPercentage(100 - 10 * (steps.length - 1));
132
- // recalc after render
133
- setTimeout(() => recalcLinePosition(), 0);
134
- }
138
+ show();
135
139
  }
136
140
  };
137
141
  };
@@ -186,7 +190,7 @@ const StepperTitleBar = /*#__PURE__*/_react.default.memo(props => {
186
190
  className: "step-item"
187
191
  }, renderStep(step, idx, steps.length))));
188
192
  }
189
- return /*#__PURE__*/_react.default.createElement("div", null, visible && !_Utils.default.isNull(props.config) ? /*#__PURE__*/_react.default.createElement("div", {
193
+ return visible && !_Utils.default.isNull(props.config) ? /*#__PURE__*/_react.default.createElement("div", {
190
194
  style: _Utils.default.mergeStyles({
191
195
  fontSize: '24px',
192
196
  color: '#202124',
@@ -195,7 +199,7 @@ const StepperTitleBar = /*#__PURE__*/_react.default.memo(props => {
195
199
  justifyContent: 'center',
196
200
  margin: "0 0 16px 0"
197
201
  }, props.config)
198
- }, !_Utils.default.isNull(steps) && !_Utils.default.isNull(activeSegmentPercentage) && !_Utils.default.isNull(currentIndex.current) ? render() : null) : null);
202
+ }, !_Utils.default.isNull(steps) && !_Utils.default.isNull(activeSegmentPercentage) && !_Utils.default.isNull(currentIndex.current) ? render() : null) : null;
199
203
  });
200
204
  var _default = exports.default = StepperTitleBar;
201
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9BcHBsaWNhdGlvbk1hbmFnZXIiLCJfT2JzZXJ2YWJsZSIsIl9FdmVudFR5cGUiLCJfc3R5bGVzIiwiX1Rvb2x0aXAiLCJfanF1ZXJ5IiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidXNlU3R5bGVzIiwibWFrZVN0eWxlcyIsInRoZW1lIiwicHJpbWFyeSIsImJhY2tncm91bmRDb2xvciIsInBhbGV0dGUiLCJtYWluIiwiYm9yZGVyIiwic2Vjb25kYXJ5IiwidGhlbWVCb3JkZXIiLCJib3JkZXJDb2xvciIsIlN0ZXBwZXJUaXRsZUJhciIsIlJlYWN0IiwibWVtbyIsInByb3BzIiwic3RlcHMiLCJzZXRTdGVwcyIsInVzZVN0YXRlIiwidmlzaWJsZSIsInNldFZpc2libGUiLCJhY3RpdmVTZWdtZW50UGVyY2VudGFnZSIsInNldEFjdGl2ZVNlZ21lbnRQZXJjZW50YWdlIiwiY3VycmVudEluZGV4IiwidXNlUmVmIiwiY2xhc3NlcyIsInVzZUVmZmVjdCIsImhhbmRsZSIsImFwaSIsInBhcnNlZENvbmZpZyIsIlV0aWxzIiwicGFyc2VDb25maWciLCJjb25maWciLCJ2aWV3SWQiLCJldmVudEhhbmRsaW5nQ29uZmlnIiwiaXNOdWxsIiwic3Vic2NyaXB0aW9ucyIsInN1YnNjcmlwdGlvbiIsInB1Ymxpc2hlciIsImV2ZW50VHlwZSIsIkV2ZW50VHlwZSIsIkFQUExJQ0FUSU9OX0NPTlRFWFRfQ0hBTkdFIiwiYWN0aW9ucyIsImFjdGlvblR5cGUiLCJzY3JpcHQiLCJsaW5lcyIsImNvbmNhdCIsImlkIiwicHVzaCIsImV2ZW50TWFuYWdlciIsImFkZFN1YnNjcmlwdGlvbnMiLCIkIiwiZG9jdW1lbnQiLCJyZWFkeSIsInJlY2FsY0xpbmVQb3NpdGlvbiIsIndpbmRvdyIsInJlc2l6ZSIsIl8kJG9mZnNldCIsImN1cnJlbnQiLCJzdGVwRWwiLCJsZW5ndGgiLCJzdGVwVG9wIiwib2Zmc2V0IiwidG9wIiwiZmlyc3RUb3AiLCJjc3MiLCJ3aWR0aCIsInN0ZXBXaWR0aCIsImFjdGl2ZUJveCIsImZpbmQiLCJmaXJzdCIsInRpdGxlV2lkdGgiLCJyZWZyZXNoIiwiZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbiIsImdldENoaWxkcmVuIiwic2hvdyIsImdyYXBoIiwidmlldyIsImFwcGxpY2F0aW9uTWFuYWdlciIsImdldFZpZXciLCJrZXkiLCJPYmplY3QiLCJrZXlzIiwidmlld0NvbnRleHQiLCJ2aWV3TWFuYWdlciIsInZpZXdNYW5hZ2VyR3JhcGgiLCJnZXRHcmFwaHMiLCJncmFwaElkIiwiZ2V0VGl0bGVTdGFjayIsImdldEN1cnJlbnROb2RlSW5kZXgiLCJzZXRUaW1lb3V0IiwicmVuZGVyU3RlcCIsInN0ZXAiLCJncmFwaGljc0NvdW50ZXIiLCJ0b3RhbFN0ZXBzIiwiaXNBY3RpdmUiLCJpc1Zpc2l0ZWQiLCJpc0xhc3QiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwic3R5bGUiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJpbmRleCIsImNvbG9yIiwid2hpdGVTcGFjZSIsInRpdGxlIiwicmVuZGVyIiwibWFwIiwiaWR4IiwibWVyZ2VTdHlsZXMiLCJmb250U2l6ZSIsInBhZGRpbmciLCJkaXNwbGF5IiwianVzdGlmeUNvbnRlbnQiLCJtYXJnaW4iLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvU3RlcHBlclRpdGxlQmFyLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyLvu79pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFV0aWxzIGZyb20gXCIuLi9VdGlsc1wiO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tICcuLi9BcHBsaWNhdGlvbk1hbmFnZXInO1xuaW1wb3J0IGV2ZW50TWFuYWdlciBmcm9tIFwiLi4vZXZlbnQvT2JzZXJ2YWJsZVwiO1xuaW1wb3J0IEV2ZW50VHlwZSBmcm9tIFwiLi4vZXZlbnQvRXZlbnRUeXBlXCI7XG5pbXBvcnQgeyBtYWtlU3R5bGVzIH0gZnJvbSBcIkBtdWkvc3R5bGVzXCI7XG5pbXBvcnQgVG9vbHRpcCBmcm9tIFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCI7XG5pbXBvcnQgXCIuL1N0ZXBwZXJUaXRsZUJhci5jc3NcIjtcbmltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5cbmNvbnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXModGhlbWUgPT4gKHtcbiAgICBwcmltYXJ5OiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sXG4gICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCAnICsgdGhlbWUucGFsZXR0ZS5wcmltYXJ5Lm1haW5cbiAgICB9LFxuICAgIHNlY29uZGFyeToge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnBhbGV0dGUuc2Vjb25kYXJ5Lm1haW4sXG4gICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCAnICsgdGhlbWUucGFsZXR0ZS5zZWNvbmRhcnkubWFpblxuICAgIH0sXG4gICAgdGhlbWVCb3JkZXI6IHtcbiAgICAgICAgYm9yZGVyQ29sb3I6IHRoZW1lLnBhbGV0dGUuc2Vjb25kYXJ5Lm1haW5cbiAgICB9XG59KSk7XG5cbmNvbnN0IFN0ZXBwZXJUaXRsZUJhciA9IFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgW3N0ZXBzLCBzZXRTdGVwc10gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2FjdGl2ZVNlZ21lbnRQZXJjZW50YWdlLCBzZXRBY3RpdmVTZWdtZW50UGVyY2VudGFnZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY2xhc3NlcyA9IHVzZVN0eWxlcygpO1xuXG4gICAgLy8gcmUtYXR0YWNoIEFQSSBvbiBlYWNoIHJlbmRlclxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICB9KTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgIGxldCBldmVudEhhbmRsaW5nQ29uZmlnID0gVXRpbHMuaXNOdWxsKHBhcnNlZENvbmZpZy5ldmVudEhhbmRsaW5nQ29uZmlnKSA/IHt9IDogcGFyc2VkQ29uZmlnLmV2ZW50SGFuZGxpbmdDb25maWc7XG4gICAgICAgIGV2ZW50SGFuZGxpbmdDb25maWcuc3Vic2NyaXB0aW9ucyA9IFV0aWxzLmlzTnVsbChldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnMpID8gW10gOiBldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnM7XG4gICAgICAgIGxldCBzdWJzY3JpcHRpb24gPSB7XG4gICAgICAgICAgICBwdWJsaXNoZXI6IFwiYXBwbGljYXRpb25NYW5hZ2VyXCIsXG4gICAgICAgICAgICBldmVudFR5cGU6IEV2ZW50VHlwZS5BUFBMSUNBVElPTl9DT05URVhUX0NIQU5HRSxcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvblR5cGU6IFwic2NyaXB0XCIsXG4gICAgICAgICAgICAgICAgICAgIHNjcmlwdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgaWYoJGV2ZW50LmRhdGEubmFtZSA9PT0gJ3N0ZXBwZXJUaXRsZScpe2AsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYCAgIEAjeyR7cHJvcHMuY29uZmlnLmlkfX0uc2hvdygpYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIn1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9O1xuXG4gICAgICAgIGV2ZW50SGFuZGxpbmdDb25maWcuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XG4gICAgICAgIGV2ZW50TWFuYWdlci5hZGRTdWJzY3JpcHRpb25zKGV2ZW50SGFuZGxpbmdDb25maWcsIHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkKTtcblxuICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZWNhbGNMaW5lUG9zaXRpb24oKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZWNhbGNMaW5lUG9zaXRpb24oKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmVjYWxjTGluZVBvc2l0aW9uKCk7XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgcmVjYWxjTGluZVBvc2l0aW9uID0gKCkgPT4ge1xuICAgICAgICAvLyBZb3VyIG9sZCBsb2dpYyBkZXBlbmRlZCBvbiBzaW5nbGUtcm93IGxheW91dCBhbmQgYSBzaW5nbGUgI3RpdGxlRGl2XG4gICAgICAgIC8vIE5vdyB0aGF0IHdlIGFsbG93IHdyYXBwaW5nLCB3ZSBndWFyZCB0aGlzIHNvIGl0IGRvZXNuJ3QgYnJlYWsuXG4gICAgICAgIGlmIChjdXJyZW50SW5kZXguY3VycmVudCA9PSBudWxsKSByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgc3RlcEVsID0gJChcIiNzdGVwLWNvbnRhaW5lci1cIiArIGN1cnJlbnRJbmRleC5jdXJyZW50KTtcbiAgICAgICAgaWYgKCFzdGVwRWwgfHwgc3RlcEVsLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHN0ZXBUb3AgPSBzdGVwRWwub2Zmc2V0KCkudG9wO1xuICAgICAgICBjb25zdCBmaXJzdFRvcCA9ICQoXCIjc3RlcC1jb250YWluZXItMFwiKS5vZmZzZXQoKT8udG9wO1xuXG4gICAgICAgIC8vIGlmIHdyYXBwZWQgdG8gbXVsdGlwbGUgcm93cywgc2tpcCBsaW5lIG1hdGggKGVhY2ggaXRlbSBhbHJlYWR5IGhhcyBpdHMgb3duIGxpbmUgc2VnbWVudClcbiAgICAgICAgaWYgKGZpcnN0VG9wICE9IG51bGwgJiYgc3RlcFRvcCAhPT0gZmlyc3RUb3ApIHtcbiAgICAgICAgICAgICQoXCIuc3RlcEFjdGl2ZSAucmlnaHRMaW5lXCIpLmNzcyh7IHdpZHRoOiAwIH0pO1xuICAgICAgICAgICAgJChcIi5zdGVwQWN0aXZlIC5sZWZ0TGluZVwiKS5jc3MoeyB3aWR0aDogMCB9KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIHN0aWxsIG9uIG9uZSByb3csIHdlIGNhbiBrZWVwIHRoZSBvbGQgbG9naWMgcm91Z2hseVxuICAgICAgICBjb25zdCBzdGVwV2lkdGggPSBzdGVwRWwud2lkdGgoKTtcbiAgICAgICAgaWYgKCFzdGVwV2lkdGgpIHJldHVybjtcblxuICAgICAgICBjb25zdCBhY3RpdmVCb3ggPSBzdGVwRWwuZmluZChcIi5ib3gsIC5ib3gtcGVuZGluZ1wiKS5maXJzdCgpO1xuICAgICAgICBjb25zdCB0aXRsZVdpZHRoID0gYWN0aXZlQm94LndpZHRoKCk7XG5cbiAgICAgICAgJChcIi5zdGVwQWN0aXZlIC5yaWdodExpbmVcIikuY3NzKHtcbiAgICAgICAgICAgICdtYXJnaW4tbGVmdCc6ICh0aXRsZVdpZHRoIC8gMikgKyAncHgnLFxuICAgICAgICAgICAgJ3dpZHRoJzogKHN0ZXBXaWR0aCAtIHRpdGxlV2lkdGgpICsgJ3B4J1xuICAgICAgICB9KTtcblxuICAgICAgICAkKFwiLnN0ZXBBY3RpdmUgLmxlZnRMaW5lXCIpLmNzcyh7XG4gICAgICAgICAgICAnd2lkdGgnOiAoc3RlcFdpZHRoIC0gdGl0bGVXaWR0aCkgLyAyICsgJ3B4J1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3QgYXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5jb25maWcuaWQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IHZpc2libGUodmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHNldFZpc2libGUodmlzaWJsZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVmcmVzaCgpIHtcbiAgICAgICAgICAgICAgICBsZXQgcGFyc2VkQ29uZmlnID0gVXRpbHMucGFyc2VDb25maWcocHJvcHMuY29uZmlnID8gcHJvcHMuY29uZmlnIDogcHJvcHMuY29uZmlnLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgICAgIHNldFZpc2libGUoVXRpbHMuaXNOdWxsKHBhcnNlZENvbmZpZy52aXNpYmxlKSB8fCBVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy52aXNpYmxlLCBwYXJzZWRDb25maWcuaWQpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzaG93KCkge1xuICAgICAgICAgICAgICAgIGxldCBncmFwaDtcbiAgICAgICAgICAgICAgICBsZXQgdmlldyA9IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRWaWV3KHByb3BzLnZpZXdJZCk7XG5cbiAgICAgICAgICAgICAgICBpZiAodmlldykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhhcHBsaWNhdGlvbk1hbmFnZXIudmlld0NvbnRleHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmlld01hbmFnZXIgPSBhcHBsaWNhdGlvbk1hbmFnZXIudmlld0NvbnRleHRba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgdmlld01hbmFnZXJHcmFwaCBvZiB2aWV3TWFuYWdlci5nZXRHcmFwaHMoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2aWV3TWFuYWdlckdyYXBoLmlkID09PSB2aWV3LmdyYXBoSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhcGggPSB2aWV3TWFuYWdlckdyYXBoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChncmFwaCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgc3RlcHMgPSBncmFwaC5nZXRUaXRsZVN0YWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIHNldFN0ZXBzKHN0ZXBzKTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEluZGV4LmN1cnJlbnQgPSBncmFwaC5nZXRDdXJyZW50Tm9kZUluZGV4KCk7XG4gICAgICAgICAgICAgICAgICAgIHNldEFjdGl2ZVNlZ21lbnRQZXJjZW50YWdlKDEwMCAtICgxMCAqIChzdGVwcy5sZW5ndGggLSAxKSkpO1xuICAgICAgICAgICAgICAgICAgICAvLyByZWNhbGMgYWZ0ZXIgcmVuZGVyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVjYWxjTGluZVBvc2l0aW9uKCksIDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiByZW5kZXJTdGVwKHN0ZXAsIGdyYXBoaWNzQ291bnRlciwgdG90YWxTdGVwcykge1xuICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IGdyYXBoaWNzQ291bnRlciA9PT0gY3VycmVudEluZGV4LmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IGlzVmlzaXRlZCA9IGdyYXBoaWNzQ291bnRlciA8IGN1cnJlbnRJbmRleC5jdXJyZW50O1xuICAgICAgICBjb25zdCBpc0xhc3QgPSBncmFwaGljc0NvdW50ZXIgPT09IHRvdGFsU3RlcHMgLSAxO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17aXNBY3RpdmUgPyBgc3RlcEFjdGl2ZWAgOiBpc1Zpc2l0ZWQgPyAnc3RlcFZpc2l0ZWQnIDogJ3N0ZXAnfT5cbiAgICAgICAgICAgICAgICB7LyogdG9wIGxpbmUgYmVmb3JlIGJveCAoZm9yIHZlcnRpY2FsIGxheW91dCAvIGNvbm5lY3RvcnMpICovfVxuICAgICAgICAgICAgICAgIHtncmFwaGljc0NvdW50ZXIgPiAwID8gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyhncmFwaGljc0NvdW50ZXIgPD0gY3VycmVudEluZGV4LmN1cnJlbnQgPyBgJHtjbGFzc2VzLnRoZW1lQm9yZGVyfSBgIDogJycpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNMYXN0ID8gJyBsYXN0TGluZScgOiAnJyl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3JvdyBmbGV4LW5vd3JhcCcgKyAoZ3JhcGhpY3NDb3VudGVyID09PSAwID8gJyBmaXJzdEJveCcgOiAnYm94V3JhcHBlcicpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogJ3Vuc2V0JywgbWFyZ2luUmlnaHQ6ICd1bnNldCcsIHdpZHRoOiAnMTAwJScgfX1cbiAgICAgICAgICAgICAgICAgICAgaWQ9eydzdGVwLScgKyBncmFwaGljc0NvdW50ZXJ9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwLmluZGV4ID4gMCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wtKi0qIGRhc2gnfSBzdHlsZT17eyBjb2xvcjogaXNWaXNpdGVkID8gJyNmZmZmZmYnIDogbnVsbCB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZVNwYWNlOiBcIm5vd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNWaXNpdGVkID8gYCR7Y2xhc3Nlcy5zZWNvbmRhcnl9IGJveGAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZSA/IGAke2NsYXNzZXMucHJpbWFyeX0gYm94YCA6ICdib3gtcGVuZGluZycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAnIHJvdyBuby1tYXJnaW4gbm8tcGFkZGluZyBmbGV4LW5vd3JhcCcgKyAoc3RlcC5pbmRleCA9PT0gMCA/ICcgZmlyc3QtYm94JyA6ICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2RvdCBjb2wtKi0qJ30gc3R5bGU9e3sgY29sb3I6IGlzVmlzaXRlZCA/ICcjZmZmZmZmJyA6IG51bGwgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0ZXAuaW5kZXggKyAxfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtzdGVwLnRpdGxlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInN0ZXAtdGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGlzQWN0aXZlID8gJyMwMDAwMDAnIDogaXNWaXNpdGVkID8gJyNmZmZmZmYnIDogJyM4ODg4ODgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0ZXAudGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgey8qIGJvdHRvbSBsaW5lIGFmdGVyIGJveCAqL31cbiAgICAgICAgICAgICAgICB7IWlzTGFzdCA/IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsoZ3JhcGhpY3NDb3VudGVyIDwgY3VycmVudEluZGV4LmN1cnJlbnQgPyBgJHtjbGFzc2VzLnRoZW1lQm9yZGVyfSBgIDogJycpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JhcGhpY3NDb3VudGVyID09PSAwID8gJyBmaXJzdExpbmUnIDogJycpfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInN0ZXBwZXItY29udGFpbmVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7c3RlcHMubWFwKChzdGVwLCBpZHgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpZHh9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZD17XCJzdGVwLWNvbnRhaW5lci1cIiArIGlkeH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInN0ZXAtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtyZW5kZXJTdGVwKHN0ZXAsIGlkeCwgc3RlcHMubGVuZ3RoKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAge3Zpc2libGUgJiYgIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcpID8gKFxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgVXRpbHMubWVyZ2VTdHlsZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogJzI0cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyMyMDIxMjQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBcIjBcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbjogXCIwIDAgMTZweCAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzLmNvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7IVV0aWxzLmlzTnVsbChzdGVwcykgJiYgIVV0aWxzLmlzTnVsbChhY3RpdmVTZWdtZW50UGVyY2VudGFnZSkgJiYgIVV0aWxzLmlzTnVsbChjdXJyZW50SW5kZXguY3VycmVudClcbiAgICAgICAgICAgICAgICAgICAgICAgID8gcmVuZGVyKClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IFN0ZXBwZXJUaXRsZUJhcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsTUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FB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
205
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9BcHBsaWNhdGlvbk1hbmFnZXIiLCJfT2JzZXJ2YWJsZSIsIl9FdmVudFR5cGUiLCJfc3R5bGVzIiwiX1Rvb2x0aXAiLCJfanF1ZXJ5IiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidXNlU3R5bGVzIiwibWFrZVN0eWxlcyIsInRoZW1lIiwicHJpbWFyeSIsImJhY2tncm91bmRDb2xvciIsInBhbGV0dGUiLCJtYWluIiwiYm9yZGVyIiwic2Vjb25kYXJ5IiwidGhlbWVCb3JkZXIiLCJib3JkZXJDb2xvciIsIlN0ZXBwZXJUaXRsZUJhciIsIlJlYWN0IiwibWVtbyIsInByb3BzIiwic3RlcHMiLCJzZXRTdGVwcyIsInVzZVN0YXRlIiwidmlzaWJsZSIsInNldFZpc2libGUiLCJhY3RpdmVTZWdtZW50UGVyY2VudGFnZSIsInNldEFjdGl2ZVNlZ21lbnRQZXJjZW50YWdlIiwiY3VycmVudEluZGV4IiwidXNlUmVmIiwiY2xhc3NlcyIsInVzZUVmZmVjdCIsImhhbmRsZSIsImFwaSIsInBhcnNlZENvbmZpZyIsIlV0aWxzIiwicGFyc2VDb25maWciLCJjb25maWciLCJ2aWV3SWQiLCJldmVudEhhbmRsaW5nQ29uZmlnIiwiaXNOdWxsIiwic3Vic2NyaXB0aW9ucyIsInN1YnNjcmlwdGlvbiIsInB1Ymxpc2hlciIsImV2ZW50VHlwZSIsIkV2ZW50VHlwZSIsIkFQUExJQ0FUSU9OX0NPTlRFWFRfQ0hBTkdFIiwiYWN0aW9ucyIsImFjdGlvblR5cGUiLCJzY3JpcHQiLCJsaW5lcyIsImNvbmNhdCIsImlkIiwicHVzaCIsImV2ZW50TWFuYWdlciIsImFkZFN1YnNjcmlwdGlvbnMiLCIkIiwiZG9jdW1lbnQiLCJyZWFkeSIsInJlY2FsY0xpbmVQb3NpdGlvbiIsIndpbmRvdyIsInJlc2l6ZSIsInNob3ciLCJfJCRvZmZzZXQiLCJjdXJyZW50Iiwic3RlcEVsIiwibGVuZ3RoIiwic3RlcFRvcCIsIm9mZnNldCIsInRvcCIsImZpcnN0VG9wIiwiY3NzIiwid2lkdGgiLCJzdGVwV2lkdGgiLCJhY3RpdmVCb3giLCJmaW5kIiwiZmlyc3QiLCJ0aXRsZVdpZHRoIiwiZ3JhcGgiLCJ2aWV3IiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiZ2V0VmlldyIsImtleSIsIk9iamVjdCIsImtleXMiLCJ2aWV3Q29udGV4dCIsInZpZXdNYW5hZ2VyIiwidmlld01hbmFnZXJHcmFwaCIsImdldEdyYXBocyIsImdyYXBoSWQiLCJnZXRUaXRsZVN0YWNrIiwiZ2V0Q3VycmVudE5vZGVJbmRleCIsInNldFRpbWVvdXQiLCJyZWZyZXNoIiwiZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbiIsImdldENoaWxkcmVuIiwicmVuZGVyU3RlcCIsInN0ZXAiLCJncmFwaGljc0NvdW50ZXIiLCJ0b3RhbFN0ZXBzIiwiaXNBY3RpdmUiLCJpc1Zpc2l0ZWQiLCJpc0xhc3QiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwic3R5bGUiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJpbmRleCIsImNvbG9yIiwid2hpdGVTcGFjZSIsInRpdGxlIiwicmVuZGVyIiwibWFwIiwiaWR4IiwibWVyZ2VTdHlsZXMiLCJmb250U2l6ZSIsInBhZGRpbmciLCJkaXNwbGF5IiwianVzdGlmeUNvbnRlbnQiLCJtYXJnaW4iLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvU3RlcHBlclRpdGxlQmFyLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyLvu79pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFV0aWxzIGZyb20gXCIuLi9VdGlsc1wiO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tICcuLi9BcHBsaWNhdGlvbk1hbmFnZXInO1xuaW1wb3J0IGV2ZW50TWFuYWdlciBmcm9tIFwiLi4vZXZlbnQvT2JzZXJ2YWJsZVwiO1xuaW1wb3J0IEV2ZW50VHlwZSBmcm9tIFwiLi4vZXZlbnQvRXZlbnRUeXBlXCI7XG5pbXBvcnQgeyBtYWtlU3R5bGVzIH0gZnJvbSBcIkBtdWkvc3R5bGVzXCI7XG5pbXBvcnQgVG9vbHRpcCBmcm9tIFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCI7XG5pbXBvcnQgXCIuL1N0ZXBwZXJUaXRsZUJhci5jc3NcIjtcbmltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XG5cbmNvbnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXModGhlbWUgPT4gKHtcbiAgICBwcmltYXJ5OiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sXG4gICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCAnICsgdGhlbWUucGFsZXR0ZS5wcmltYXJ5Lm1haW5cbiAgICB9LFxuICAgIHNlY29uZGFyeToge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnBhbGV0dGUuc2Vjb25kYXJ5Lm1haW4sXG4gICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCAnICsgdGhlbWUucGFsZXR0ZS5zZWNvbmRhcnkubWFpblxuICAgIH0sXG4gICAgdGhlbWVCb3JkZXI6IHtcbiAgICAgICAgYm9yZGVyQ29sb3I6IHRoZW1lLnBhbGV0dGUuc2Vjb25kYXJ5Lm1haW5cbiAgICB9XG59KSk7XG5cbmNvbnN0IFN0ZXBwZXJUaXRsZUJhciA9IFJlYWN0Lm1lbW8oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgW3N0ZXBzLCBzZXRTdGVwc10gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2FjdGl2ZVNlZ21lbnRQZXJjZW50YWdlLCBzZXRBY3RpdmVTZWdtZW50UGVyY2VudGFnZV0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY2xhc3NlcyA9IHVzZVN0eWxlcygpO1xuXG4gICAgLy8gcmUtYXR0YWNoIEFQSSBvbiBlYWNoIHJlbmRlclxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICB9KTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgIGxldCBldmVudEhhbmRsaW5nQ29uZmlnID0gVXRpbHMuaXNOdWxsKHBhcnNlZENvbmZpZy5ldmVudEhhbmRsaW5nQ29uZmlnKSA/IHt9IDogcGFyc2VkQ29uZmlnLmV2ZW50SGFuZGxpbmdDb25maWc7XG4gICAgICAgIGV2ZW50SGFuZGxpbmdDb25maWcuc3Vic2NyaXB0aW9ucyA9IFV0aWxzLmlzTnVsbChldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnMpID8gW10gOiBldmVudEhhbmRsaW5nQ29uZmlnLnN1YnNjcmlwdGlvbnM7XG4gICAgICAgIGxldCBzdWJzY3JpcHRpb24gPSB7XG4gICAgICAgICAgICBwdWJsaXNoZXI6IFwiYXBwbGljYXRpb25NYW5hZ2VyXCIsXG4gICAgICAgICAgICBldmVudFR5cGU6IEV2ZW50VHlwZS5BUFBMSUNBVElPTl9DT05URVhUX0NIQU5HRSxcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvblR5cGU6IFwic2NyaXB0XCIsXG4gICAgICAgICAgICAgICAgICAgIHNjcmlwdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGluZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgaWYoJGV2ZW50LmRhdGEubmFtZSA9PT0gJ3N0ZXBwZXJUaXRsZScgJiYgIWlzTnVsbChAI3ske3Byb3BzLmNvbmZpZy5pZH19KSl7YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgICAgQCN7JHtwcm9wcy5jb25maWcuaWR9fS5zaG93KClgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwifVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG5cbiAgICAgICAgZXZlbnRIYW5kbGluZ0NvbmZpZy5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcbiAgICAgICAgZXZlbnRNYW5hZ2VyLmFkZFN1YnNjcmlwdGlvbnMoZXZlbnRIYW5kbGluZ0NvbmZpZywgcHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQpO1xuXG4gICAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJlY2FsY0xpbmVQb3NpdGlvbigpO1xuICAgICAgICB9KTtcblxuICAgICAgICAkKHdpbmRvdykucmVzaXplKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJlY2FsY0xpbmVQb3NpdGlvbigpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZWNhbGNMaW5lUG9zaXRpb24oKTtcbiAgICAgICAgc2hvdygpO1xuICAgIH0sIFtdKTtcblxuICAgIGNvbnN0IHJlY2FsY0xpbmVQb3NpdGlvbiA9ICgpID0+IHtcbiAgICAgICAgLy8gWW91ciBvbGQgbG9naWMgZGVwZW5kZWQgb24gc2luZ2xlLXJvdyBsYXlvdXQgYW5kIGEgc2luZ2xlICN0aXRsZURpdlxuICAgICAgICAvLyBOb3cgdGhhdCB3ZSBhbGxvdyB3cmFwcGluZywgd2UgZ3VhcmQgdGhpcyBzbyBpdCBkb2Vzbid0IGJyZWFrLlxuICAgICAgICBpZiAoY3VycmVudEluZGV4LmN1cnJlbnQgPT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHN0ZXBFbCA9ICQoXCIjc3RlcC1jb250YWluZXItXCIgKyBjdXJyZW50SW5kZXguY3VycmVudCk7XG4gICAgICAgIGlmICghc3RlcEVsIHx8IHN0ZXBFbC5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgICAgICBjb25zdCBzdGVwVG9wID0gc3RlcEVsLm9mZnNldCgpLnRvcDtcbiAgICAgICAgY29uc3QgZmlyc3RUb3AgPSAkKFwiI3N0ZXAtY29udGFpbmVyLTBcIikub2Zmc2V0KCk/LnRvcDtcblxuICAgICAgICAvLyBpZiB3cmFwcGVkIHRvIG11bHRpcGxlIHJvd3MsIHNraXAgbGluZSBtYXRoIChlYWNoIGl0ZW0gYWxyZWFkeSBoYXMgaXRzIG93biBsaW5lIHNlZ21lbnQpXG4gICAgICAgIGlmIChmaXJzdFRvcCAhPSBudWxsICYmIHN0ZXBUb3AgIT09IGZpcnN0VG9wKSB7XG4gICAgICAgICAgICAkKFwiLnN0ZXBBY3RpdmUgLnJpZ2h0TGluZVwiKS5jc3MoeyB3aWR0aDogMCB9KTtcbiAgICAgICAgICAgICQoXCIuc3RlcEFjdGl2ZSAubGVmdExpbmVcIikuY3NzKHsgd2lkdGg6IDAgfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBzdGlsbCBvbiBvbmUgcm93LCB3ZSBjYW4ga2VlcCB0aGUgb2xkIGxvZ2ljIHJvdWdobHlcbiAgICAgICAgY29uc3Qgc3RlcFdpZHRoID0gc3RlcEVsLndpZHRoKCk7XG4gICAgICAgIGlmICghc3RlcFdpZHRoKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgYWN0aXZlQm94ID0gc3RlcEVsLmZpbmQoXCIuYm94LCAuYm94LXBlbmRpbmdcIikuZmlyc3QoKTtcbiAgICAgICAgY29uc3QgdGl0bGVXaWR0aCA9IGFjdGl2ZUJveC53aWR0aCgpO1xuXG4gICAgICAgICQoXCIuc3RlcEFjdGl2ZSAucmlnaHRMaW5lXCIpLmNzcyh7XG4gICAgICAgICAgICAnbWFyZ2luLWxlZnQnOiAodGl0bGVXaWR0aCAvIDIpICsgJ3B4JyxcbiAgICAgICAgICAgICd3aWR0aCc6IChzdGVwV2lkdGggLSB0aXRsZVdpZHRoKSArICdweCdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgJChcIi5zdGVwQWN0aXZlIC5sZWZ0TGluZVwiKS5jc3Moe1xuICAgICAgICAgICAgJ3dpZHRoJzogKHN0ZXBXaWR0aCAtIHRpdGxlV2lkdGgpIC8gMiArICdweCdcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHNob3coKSB7XG4gICAgICAgIGxldCBncmFwaDtcbiAgICAgICAgbGV0IHZpZXcgPSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0Vmlldyhwcm9wcy52aWV3SWQpO1xuXG4gICAgICAgIGlmICh2aWV3KSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhhcHBsaWNhdGlvbk1hbmFnZXIudmlld0NvbnRleHQpKSB7XG4gICAgICAgICAgICAgICAgbGV0IHZpZXdNYW5hZ2VyID0gYXBwbGljYXRpb25NYW5hZ2VyLnZpZXdDb250ZXh0W2tleV07XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB2aWV3TWFuYWdlckdyYXBoIG9mIHZpZXdNYW5hZ2VyLmdldEdyYXBocygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2aWV3TWFuYWdlckdyYXBoLmlkID09PSB2aWV3LmdyYXBoSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoID0gdmlld01hbmFnZXJHcmFwaDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChncmFwaCkge1xuICAgICAgICAgICAgbGV0IHN0ZXBzID0gZ3JhcGguZ2V0VGl0bGVTdGFjaygpO1xuICAgICAgICAgICAgc2V0U3RlcHMoc3RlcHMpO1xuICAgICAgICAgICAgY3VycmVudEluZGV4LmN1cnJlbnQgPSBncmFwaC5nZXRDdXJyZW50Tm9kZUluZGV4KCk7XG4gICAgICAgICAgICBzZXRBY3RpdmVTZWdtZW50UGVyY2VudGFnZSgxMDAgLSAoMTAgKiAoc3RlcHMubGVuZ3RoIC0gMSkpKTtcbiAgICAgICAgICAgIC8vIHJlY2FsYyBhZnRlciByZW5kZXJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVjYWxjTGluZVBvc2l0aW9uKCksIDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgYXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy5jb25maWcuaWQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IHZpc2libGUodmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHNldFZpc2libGUodmlzaWJsZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVmcmVzaCgpIHtcbiAgICAgICAgICAgICAgICBsZXQgcGFyc2VkQ29uZmlnID0gVXRpbHMucGFyc2VDb25maWcocHJvcHMuY29uZmlnID8gcHJvcHMuY29uZmlnIDogcHJvcHMuY29uZmlnLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgICAgIHNldFZpc2libGUoVXRpbHMuaXNOdWxsKHBhcnNlZENvbmZpZy52aXNpYmxlKSB8fCBVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy52aXNpYmxlLCBwYXJzZWRDb25maWcuaWQpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzaG93KCkge1xuICAgICAgICAgICAgICAgIHNob3coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiByZW5kZXJTdGVwKHN0ZXAsIGdyYXBoaWNzQ291bnRlciwgdG90YWxTdGVwcykge1xuICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IGdyYXBoaWNzQ291bnRlciA9PT0gY3VycmVudEluZGV4LmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IGlzVmlzaXRlZCA9IGdyYXBoaWNzQ291bnRlciA8IGN1cnJlbnRJbmRleC5jdXJyZW50O1xuICAgICAgICBjb25zdCBpc0xhc3QgPSBncmFwaGljc0NvdW50ZXIgPT09IHRvdGFsU3RlcHMgLSAxO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17aXNBY3RpdmUgPyBgc3RlcEFjdGl2ZWAgOiBpc1Zpc2l0ZWQgPyAnc3RlcFZpc2l0ZWQnIDogJ3N0ZXAnfT5cbiAgICAgICAgICAgICAgICB7LyogdG9wIGxpbmUgYmVmb3JlIGJveCAoZm9yIHZlcnRpY2FsIGxheW91dCAvIGNvbm5lY3RvcnMpICovfVxuICAgICAgICAgICAgICAgIHtncmFwaGljc0NvdW50ZXIgPiAwID8gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyhncmFwaGljc0NvdW50ZXIgPD0gY3VycmVudEluZGV4LmN1cnJlbnQgPyBgJHtjbGFzc2VzLnRoZW1lQm9yZGVyfSBgIDogJycpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNMYXN0ID8gJyBsYXN0TGluZScgOiAnJyl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3JvdyBmbGV4LW5vd3JhcCcgKyAoZ3JhcGhpY3NDb3VudGVyID09PSAwID8gJyBmaXJzdEJveCcgOiAnYm94V3JhcHBlcicpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogJ3Vuc2V0JywgbWFyZ2luUmlnaHQ6ICd1bnNldCcsIHdpZHRoOiAnMTAwJScgfX1cbiAgICAgICAgICAgICAgICAgICAgaWQ9eydzdGVwLScgKyBncmFwaGljc0NvdW50ZXJ9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwLmluZGV4ID4gMCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9eydjb2wtKi0qIGRhc2gnfSBzdHlsZT17eyBjb2xvcjogaXNWaXNpdGVkID8gJyNmZmZmZmYnIDogbnVsbCB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZVNwYWNlOiBcIm5vd3JhcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNWaXNpdGVkID8gYCR7Y2xhc3Nlcy5zZWNvbmRhcnl9IGJveGAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZSA/IGAke2NsYXNzZXMucHJpbWFyeX0gYm94YCA6ICdib3gtcGVuZGluZycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAnIHJvdyBuby1tYXJnaW4gbm8tcGFkZGluZyBmbGV4LW5vd3JhcCcgKyAoc3RlcC5pbmRleCA9PT0gMCA/ICcgZmlyc3QtYm94JyA6ICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17J2RvdCBjb2wtKi0qJ30gc3R5bGU9e3sgY29sb3I6IGlzVmlzaXRlZCA/ICcjZmZmZmZmJyA6IG51bGwgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0ZXAuaW5kZXggKyAxfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtzdGVwLnRpdGxlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInN0ZXAtdGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGlzQWN0aXZlID8gJyMwMDAwMDAnIDogaXNWaXNpdGVkID8gJyNmZmZmZmYnIDogJyM4ODg4ODgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3N0ZXAudGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgey8qIGJvdHRvbSBsaW5lIGFmdGVyIGJveCAqL31cbiAgICAgICAgICAgICAgICB7IWlzTGFzdCA/IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsoZ3JhcGhpY3NDb3VudGVyIDwgY3VycmVudEluZGV4LmN1cnJlbnQgPyBgJHtjbGFzc2VzLnRoZW1lQm9yZGVyfSBgIDogJycpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JhcGhpY3NDb3VudGVyID09PSAwID8gJyBmaXJzdExpbmUnIDogJycpfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInN0ZXBwZXItY29udGFpbmVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7c3RlcHMubWFwKChzdGVwLCBpZHgpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtpZHh9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZD17XCJzdGVwLWNvbnRhaW5lci1cIiArIGlkeH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInN0ZXAtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtyZW5kZXJTdGVwKHN0ZXAsIGlkeCwgc3RlcHMubGVuZ3RoKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICAgICAgdmlzaWJsZSAmJiAhVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZykgPyAoXG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17XG4gICAgICAgICAgICAgICAgICAgICAgICBVdGlscy5tZXJnZVN0eWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnMjRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnIzIwMjEyNCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IFwiMFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiBcIjAgMCAxNnB4IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMuY29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHshVXRpbHMuaXNOdWxsKHN0ZXBzKSAmJiAhVXRpbHMuaXNOdWxsKGFjdGl2ZVNlZ21lbnRQZXJjZW50YWdlKSAmJiAhVXRpbHMuaXNOdWxsKGN1cnJlbnRJbmRleC5jdXJyZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgPyByZW5kZXIoKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSA6IG51bGxcbiAgICApO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IFN0ZXBwZXJUaXRsZUJhcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUMsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0QsSUFBQUMsTUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsbUJBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElB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