@agilemotion/oui-react-js 2.0.21 → 2.0.23
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.
- package/dist/ApplicationManager.js +7 -1
- package/dist/InteractionPortalAppHome.js +18 -2
- package/dist/ViewContext.js +21 -3
- package/dist/components/DataGrid.js +48 -7
- package/dist/components/Icon.js +76 -2
- package/dist/components/StepperTitleBar.js +9 -2
- package/dist/components/TableCellContent.js +1 -3
- package/dist/components/dashboard/FoldingSideTabDashboard.js +6 -7
- package/dist/components/dashboard/components/blackDashboard/sidebar/FoldingTabSidebar.css +1 -2
- package/dist/components/dashboard/components/blackDashboard/sidebar/FoldingTabSidebar.js +164 -22
- package/dist/components/form/BaseField.js +1 -3
- package/dist/components/form/CurrencyField.js +121 -37
- package/dist/components/form/FieldSet.js +18 -5
- package/dist/components/form/TextField.js +2 -1
- package/dist/components/form/fieldset.css +10 -0
- package/dist/components/layout/ViewContainer.js +8 -2
- package/dist/event/Observable.js +3 -4
- package/dist/event/RouteActionHandler.js +4 -2
- package/dist/view/Dashboard.js +40 -9
- package/dist/view/PortalDashboard.js +283 -6
- package/package.json +1 -1
- package/dist/components/dashboard/FoldingSideTabDashboard.bck.js +0 -333
- package/dist/components/dashboard/components/blackDashboard/sidebar/FoldingTabSidebar.bck.js +0 -316
|
@@ -5,23 +5,300 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _Utils = _interopRequireDefault(require("../Utils"));
|
|
9
|
+
var _Paper = _interopRequireDefault(require("@mui/material/Paper"));
|
|
10
|
+
var _RestUtils = require("../RestUtils");
|
|
11
|
+
var _ApplicationManager = _interopRequireDefault(require("../ApplicationManager"));
|
|
12
|
+
var _View = require("../components/layout/View");
|
|
8
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
-
|
|
14
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
15
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
16
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
17
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
18
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
19
|
+
const location = window.location.protocol + '//' + window.location.hostname;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Friendly first name for the welcome banner. The user's first name(s) live on
|
|
23
|
+
* the `name` field (surname is the separate `surname` field; `profile` is org/
|
|
24
|
+
* role JSON, not name data). Falls back to the username local-part, else null.
|
|
25
|
+
*/
|
|
26
|
+
const resolveFirstName = () => {
|
|
27
|
+
try {
|
|
28
|
+
const details = _ApplicationManager.default.getUserDetails();
|
|
29
|
+
if (_Utils.default.isNull(details)) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
const name = details.name;
|
|
33
|
+
if (!_Utils.default.isNull(name) && "".concat(name).trim().length) {
|
|
34
|
+
return "".concat(name).trim().split(/\s+/)[0];
|
|
35
|
+
}
|
|
36
|
+
const username = details.username;
|
|
37
|
+
if (!_Utils.default.isNull(username) && "".concat(username).length) {
|
|
38
|
+
const handle = "".concat(username).split('@')[0];
|
|
39
|
+
return handle.charAt(0).toUpperCase() + handle.slice(1);
|
|
40
|
+
}
|
|
41
|
+
} catch (e) {
|
|
42
|
+
console.error(e);
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Whether the signed-in user holds the given role in any of their organisations.
|
|
49
|
+
* Roles live in the stringified `profile` JSON: { organisations: [{ roles }] }.
|
|
50
|
+
* MVP: the dashboard card visibility rule is hardcoded against this; later the
|
|
51
|
+
* default dashboard layout (and which cards to show) will come from an API.
|
|
52
|
+
*/
|
|
53
|
+
const userHasRole = role => {
|
|
54
|
+
try {
|
|
55
|
+
const details = _ApplicationManager.default.getUserDetails();
|
|
56
|
+
if (_Utils.default.isNull(details) || _Utils.default.isNull(details.profile)) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
let profile = details.profile;
|
|
60
|
+
if (typeof profile === 'string') {
|
|
61
|
+
profile = JSON.parse(profile);
|
|
62
|
+
}
|
|
63
|
+
const orgs = profile && profile.organisations;
|
|
64
|
+
if (!Array.isArray(orgs)) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
return orgs.some(org => Array.isArray(org.roles) && org.roles.includes(role));
|
|
68
|
+
} catch (e) {
|
|
69
|
+
console.error(e);
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Resolves a dashboard descriptor (type: "dashboard") to its content view and
|
|
76
|
+
* renders it inline, mirroring the VIEW-display branch of Dashboard.jsx's
|
|
77
|
+
* DashboardCard. The descriptor's contentPath points at the view to embed.
|
|
78
|
+
*/
|
|
79
|
+
const EmbeddedView = props => {
|
|
80
|
+
const [element, setElement] = _react.default.useState(null);
|
|
81
|
+
const [failed, setFailed] = _react.default.useState(false);
|
|
82
|
+
// One stable, unique view id for this card's lifetime, drawn from the
|
|
83
|
+
// dashboard-lifecycle counter so it never collides with a sibling card.
|
|
84
|
+
const viewIdRef = _react.default.useRef(null);
|
|
85
|
+
if (viewIdRef.current === null) {
|
|
86
|
+
viewIdRef.current = props.allocateViewId();
|
|
87
|
+
}
|
|
88
|
+
_react.default.useEffect(() => {
|
|
89
|
+
let cancelled = false;
|
|
90
|
+
const base = location + _ApplicationManager.default.getContextRoot() + _ApplicationManager.default.getUIConfigPath();
|
|
91
|
+
const descriptorUrl = base + '/dashboard/get?version=1.0&id=' + props.descriptorPath;
|
|
92
|
+
(0, _RestUtils.sendRequest)(descriptorUrl, descriptor => {
|
|
93
|
+
if (cancelled) return;
|
|
94
|
+
if (_Utils.default.isNull(descriptor) || _Utils.default.isNull(descriptor.contentPath)) {
|
|
95
|
+
setFailed(true);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const viewUrl = base + '/view/get?version=1.0&id=' + descriptor.contentPath;
|
|
99
|
+
(0, _RestUtils.sendRequest)(viewUrl, data => {
|
|
100
|
+
if (cancelled) return;
|
|
101
|
+
// Clone so we never mutate a (possibly cached) shared response,
|
|
102
|
+
// and stamp a unique-and-stable id for this card instance.
|
|
103
|
+
const config = _objectSpread(_objectSpread({}, data), {}, {
|
|
104
|
+
id: data.id + '_' + viewIdRef.current,
|
|
105
|
+
window: false
|
|
106
|
+
});
|
|
107
|
+
const dashboardView = {
|
|
108
|
+
config: config,
|
|
109
|
+
parent: false,
|
|
110
|
+
popUp: false,
|
|
111
|
+
window: false,
|
|
112
|
+
handle: {
|
|
113
|
+
api: {
|
|
114
|
+
loaded: () => false
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
_ApplicationManager.default.addDashboardView(dashboardView, descriptor.contentPath);
|
|
119
|
+
setElement(/*#__PURE__*/_react.default.createElement(_View.View, {
|
|
120
|
+
key: config.id,
|
|
121
|
+
config: config,
|
|
122
|
+
parameters: [],
|
|
123
|
+
handle: dashboardView.handle
|
|
124
|
+
}));
|
|
125
|
+
}, e => {
|
|
126
|
+
if (cancelled) return;
|
|
127
|
+
console.error(e);
|
|
128
|
+
setFailed(true);
|
|
129
|
+
});
|
|
130
|
+
}, e => {
|
|
131
|
+
if (cancelled) return;
|
|
132
|
+
console.error(e);
|
|
133
|
+
setFailed(true);
|
|
134
|
+
});
|
|
135
|
+
return () => {
|
|
136
|
+
cancelled = true;
|
|
137
|
+
};
|
|
138
|
+
}, [props.descriptorPath]);
|
|
139
|
+
if (failed) {
|
|
140
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
141
|
+
style: {
|
|
142
|
+
padding: '16px',
|
|
143
|
+
color: '#9aa3b1',
|
|
144
|
+
fontSize: '13px'
|
|
145
|
+
}
|
|
146
|
+
}, "Unable to load.");
|
|
147
|
+
}
|
|
148
|
+
if (_Utils.default.isNull(element)) {
|
|
149
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
150
|
+
style: {
|
|
151
|
+
padding: '16px',
|
|
152
|
+
color: '#9aa3b1',
|
|
153
|
+
fontSize: '13px'
|
|
154
|
+
}
|
|
155
|
+
}, "Loading\u2026");
|
|
156
|
+
}
|
|
157
|
+
return element;
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Panel wrapper giving each embedded card a titled, scrollable frame. Fills
|
|
162
|
+
* its parent slot; callers pass `style` to control its flex share/height
|
|
163
|
+
* within the grid columns.
|
|
164
|
+
*/
|
|
165
|
+
const DashboardPanel = props => /*#__PURE__*/_react.default.createElement(_Paper.default, {
|
|
166
|
+
style: _objectSpread({
|
|
167
|
+
display: 'flex',
|
|
168
|
+
flexDirection: 'column',
|
|
169
|
+
width: '100%',
|
|
170
|
+
height: '100%',
|
|
171
|
+
minHeight: 0,
|
|
172
|
+
overflow: 'hidden',
|
|
173
|
+
borderRadius: '6px',
|
|
174
|
+
boxShadow: '0 1px 3px rgba(20, 35, 60, 0.08)',
|
|
175
|
+
padding: '16px',
|
|
176
|
+
boxSizing: 'border-box'
|
|
177
|
+
}, props.style || {})
|
|
178
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
179
|
+
style: {
|
|
180
|
+
fontSize: '16px',
|
|
181
|
+
fontWeight: 600,
|
|
182
|
+
color: '#1a3c5e',
|
|
183
|
+
marginBottom: '12px'
|
|
184
|
+
}
|
|
185
|
+
}, props.title), /*#__PURE__*/_react.default.createElement("div", {
|
|
186
|
+
style: {
|
|
187
|
+
flex: '1 1 auto',
|
|
188
|
+
minHeight: 0,
|
|
189
|
+
overflow: 'auto'
|
|
190
|
+
}
|
|
191
|
+
}, props.children));
|
|
10
192
|
const PortalDashboard = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.forwardRef((props, ref) => {
|
|
11
193
|
const api = {
|
|
12
194
|
get id() {
|
|
13
|
-
return
|
|
195
|
+
return 'portal-dashboard';
|
|
14
196
|
}
|
|
15
197
|
};
|
|
16
198
|
const handle = {
|
|
17
|
-
|
|
199
|
+
api: api
|
|
18
200
|
};
|
|
201
|
+
const firstName = _react.default.useMemo(() => resolveFirstName(), []);
|
|
202
|
+
const greeting = _Utils.default.isNull(firstName) ? 'Welcome back' : "Hi ".concat(firstName, ", welcome back");
|
|
203
|
+
|
|
204
|
+
// MVP rule (hardcoded): the procurement row (Publications / Registrations /
|
|
205
|
+
// Bids) only shows for users with the VENDOR role. This will be driven by
|
|
206
|
+
// the default dashboard settings API later.
|
|
207
|
+
const isVendor = _react.default.useMemo(() => userHasRole('VENDOR'), []);
|
|
208
|
+
|
|
209
|
+
// View-id counter scoped to this dashboard's lifecycle: initiated on load,
|
|
210
|
+
// increments per card as needed. Restarting on each load is safe because we
|
|
211
|
+
// unload every card view on destroy (below), so no stale ids/subscriptions
|
|
212
|
+
// survive to collide with the next load.
|
|
213
|
+
const viewSeq = _react.default.useRef(0);
|
|
214
|
+
const allocateViewId = _react.default.useCallback(() => ++viewSeq.current, []);
|
|
215
|
+
_react.default.useEffect(() => {
|
|
216
|
+
return () => {
|
|
217
|
+
// Unload all dashboard card views on destroy. Without this the event
|
|
218
|
+
// bus keeps their subscriptions and would respond to events for
|
|
219
|
+
// these (now unmounted) views behind the scenes.
|
|
220
|
+
_ApplicationManager.default.clearDashboardViews();
|
|
221
|
+
};
|
|
222
|
+
}, []);
|
|
19
223
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
20
224
|
ref: ref,
|
|
21
225
|
style: {
|
|
22
|
-
|
|
226
|
+
padding: '16px',
|
|
227
|
+
boxSizing: 'border-box'
|
|
228
|
+
}
|
|
229
|
+
}, /*#__PURE__*/_react.default.createElement("p", {
|
|
230
|
+
style: {
|
|
231
|
+
fontSize: '24px',
|
|
232
|
+
margin: '0 0 12px 4px',
|
|
233
|
+
color: '#1a3c5e'
|
|
234
|
+
}
|
|
235
|
+
}, greeting), /*#__PURE__*/_react.default.createElement("div", {
|
|
236
|
+
style: {
|
|
237
|
+
display: 'flex',
|
|
238
|
+
flexDirection: 'column',
|
|
239
|
+
gap: '10px',
|
|
240
|
+
height: 'calc(100dvh - var(--header-h, 64px) - 100px)'
|
|
241
|
+
}
|
|
242
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
243
|
+
style: {
|
|
244
|
+
flex: 1,
|
|
245
|
+
minHeight: 0,
|
|
246
|
+
display: 'flex',
|
|
247
|
+
gap: '10px'
|
|
248
|
+
}
|
|
249
|
+
}, /*#__PURE__*/_react.default.createElement(DashboardPanel, {
|
|
250
|
+
title: 'My Tasks',
|
|
251
|
+
style: {
|
|
252
|
+
flex: 1,
|
|
253
|
+
minWidth: 0
|
|
254
|
+
}
|
|
255
|
+
}, /*#__PURE__*/_react.default.createElement(EmbeddedView, {
|
|
256
|
+
descriptorPath: '/portal/dashboards/my-work-items.json',
|
|
257
|
+
allocateViewId: allocateViewId
|
|
258
|
+
})), /*#__PURE__*/_react.default.createElement(DashboardPanel, {
|
|
259
|
+
title: 'Calendar',
|
|
260
|
+
style: {
|
|
261
|
+
flex: 1,
|
|
262
|
+
minWidth: 0
|
|
263
|
+
}
|
|
264
|
+
}, /*#__PURE__*/_react.default.createElement(EmbeddedView, {
|
|
265
|
+
descriptorPath: '/portal/dashboards/my-calendar.json',
|
|
266
|
+
allocateViewId: allocateViewId
|
|
267
|
+
}))), isVendor && /*#__PURE__*/_react.default.createElement("div", {
|
|
268
|
+
style: {
|
|
269
|
+
flex: 1,
|
|
270
|
+
minHeight: 0,
|
|
271
|
+
display: 'flex',
|
|
272
|
+
gap: '10px'
|
|
273
|
+
}
|
|
274
|
+
}, /*#__PURE__*/_react.default.createElement(DashboardPanel, {
|
|
275
|
+
title: 'Publications',
|
|
276
|
+
style: {
|
|
277
|
+
flex: 1,
|
|
278
|
+
minWidth: 0
|
|
279
|
+
}
|
|
280
|
+
}, /*#__PURE__*/_react.default.createElement(EmbeddedView, {
|
|
281
|
+
descriptorPath: '/portal/dashboards/publications.json',
|
|
282
|
+
allocateViewId: allocateViewId
|
|
283
|
+
})), /*#__PURE__*/_react.default.createElement(DashboardPanel, {
|
|
284
|
+
title: 'My Registrations',
|
|
285
|
+
style: {
|
|
286
|
+
flex: 1,
|
|
287
|
+
minWidth: 0
|
|
288
|
+
}
|
|
289
|
+
}, /*#__PURE__*/_react.default.createElement(EmbeddedView, {
|
|
290
|
+
descriptorPath: '/portal/dashboards/my-registrations.json',
|
|
291
|
+
allocateViewId: allocateViewId
|
|
292
|
+
})), /*#__PURE__*/_react.default.createElement(DashboardPanel, {
|
|
293
|
+
title: 'My Bids',
|
|
294
|
+
style: {
|
|
295
|
+
flex: 1,
|
|
296
|
+
minWidth: 0
|
|
23
297
|
}
|
|
24
|
-
}
|
|
298
|
+
}, /*#__PURE__*/_react.default.createElement(EmbeddedView, {
|
|
299
|
+
descriptorPath: '/portal/dashboards/my-bids.json',
|
|
300
|
+
allocateViewId: allocateViewId
|
|
301
|
+
})))));
|
|
25
302
|
}));
|
|
26
303
|
var _default = exports.default = PortalDashboard;
|
|
27
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImxvY2F0aW9uIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsIlBvcnRhbERhc2hib2FyZCIsIlJlYWN0IiwibWVtbyIsImZvcndhcmRSZWYiLCJwcm9wcyIsInJlZiIsImFwaSIsImlkIiwiaGFuZGxlIiwiY3JlYXRlRWxlbWVudCIsInN0eWxlIiwibWFyZ2luIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi92aWV3L1BvcnRhbERhc2hib2FyZC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsi77u/aW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgXCIvL1wiICsgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xuXG5jb25zdCBQb3J0YWxEYXNoYm9hcmQgPSBSZWFjdC5tZW1vKFJlYWN0LmZvcndhcmRSZWYoKHByb3BzLCByZWYpID0+IHtcblxuICAgIGNvbnN0IGFwaSA9IHtcbiAgICAgICAgZ2V0IGlkICgpIHtcbiAgICAgICAgICAgIHJldHVybiBcInBvcnRhbC1kYXNoYm9hcmRcIjtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGUgPSB7XG4gICAgICAgXCJhcGlcIjogYXBpXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgcmVmPXtyZWZ9IHN0eWxlPXt7bWFyZ2luOiAnNHB4IDAgMCAwJ319PlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufSkpO1xuXG5leHBvcnQgZGVmYXVsdCBQb3J0YWxEYXNoYm9hcmQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUEwQixTQUFBRCx1QkFBQUUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUMzQixNQUFNRyxRQUFRLEdBQUdDLE1BQU0sQ0FBQ0QsUUFBUSxDQUFDRSxRQUFRLEdBQUcsSUFBSSxHQUFHRCxNQUFNLENBQUNELFFBQVEsQ0FBQ0csUUFBUTtBQUUzRSxNQUFNQyxlQUFlLGdCQUFHQyxjQUFLLENBQUNDLElBQUksY0FBQ0QsY0FBSyxDQUFDRSxVQUFVLENBQUMsQ0FBQ0MsS0FBSyxFQUFFQyxHQUFHLEtBQUs7RUFFaEUsTUFBTUMsR0FBRyxHQUFHO0lBQ1IsSUFBSUMsRUFBRUEsQ0FBQSxFQUFJO01BQ04sT0FBTyxrQkFBa0I7SUFDN0I7RUFDSixDQUFDO0VBRUQsTUFBTUMsTUFBTSxHQUFHO0lBQ1osS0FBSyxFQUFFRjtFQUNWLENBQUM7RUFFRCxvQkFDSWhCLE1BQUEsQ0FBQUssT0FBQSxDQUFBYyxhQUFBO0lBQUtKLEdBQUcsRUFBRUEsR0FBSTtJQUFDSyxLQUFLLEVBQUU7TUFBQ0MsTUFBTSxFQUFFO0lBQVc7RUFBRSxDQUN2QyxDQUFDO0FBRWQsQ0FBQyxDQUFDLENBQUM7QUFBQyxJQUFBQyxRQUFBLEdBQUFDLE9BQUEsQ0FBQWxCLE9BQUEsR0FFV0ssZUFBZSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
304
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9QYXBlciIsIl9SZXN0VXRpbHMiLCJfQXBwbGljYXRpb25NYW5hZ2VyIiwiX1ZpZXciLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJvd25LZXlzIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwibG9jYXRpb24iLCJ3aW5kb3ciLCJwcm90b2NvbCIsImhvc3RuYW1lIiwicmVzb2x2ZUZpcnN0TmFtZSIsImRldGFpbHMiLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJnZXRVc2VyRGV0YWlscyIsIlV0aWxzIiwiaXNOdWxsIiwibmFtZSIsImNvbmNhdCIsInRyaW0iLCJzcGxpdCIsInVzZXJuYW1lIiwiaGFuZGxlIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsImNvbnNvbGUiLCJlcnJvciIsInVzZXJIYXNSb2xlIiwicm9sZSIsInByb2ZpbGUiLCJKU09OIiwicGFyc2UiLCJvcmdzIiwib3JnYW5pc2F0aW9ucyIsIkFycmF5IiwiaXNBcnJheSIsInNvbWUiLCJvcmciLCJyb2xlcyIsImluY2x1ZGVzIiwiRW1iZWRkZWRWaWV3IiwicHJvcHMiLCJlbGVtZW50Iiwic2V0RWxlbWVudCIsIlJlYWN0IiwidXNlU3RhdGUiLCJmYWlsZWQiLCJzZXRGYWlsZWQiLCJ2aWV3SWRSZWYiLCJ1c2VSZWYiLCJjdXJyZW50IiwiYWxsb2NhdGVWaWV3SWQiLCJ1c2VFZmZlY3QiLCJjYW5jZWxsZWQiLCJiYXNlIiwiZ2V0Q29udGV4dFJvb3QiLCJnZXRVSUNvbmZpZ1BhdGgiLCJkZXNjcmlwdG9yVXJsIiwiZGVzY3JpcHRvclBhdGgiLCJzZW5kUmVxdWVzdCIsImRlc2NyaXB0b3IiLCJjb250ZW50UGF0aCIsInZpZXdVcmwiLCJkYXRhIiwiY29uZmlnIiwiaWQiLCJkYXNoYm9hcmRWaWV3IiwicGFyZW50IiwicG9wVXAiLCJhcGkiLCJsb2FkZWQiLCJhZGREYXNoYm9hcmRWaWV3IiwiY3JlYXRlRWxlbWVudCIsIlZpZXciLCJrZXkiLCJwYXJhbWV0ZXJzIiwic3R5bGUiLCJwYWRkaW5nIiwiY29sb3IiLCJmb250U2l6ZSIsIkRhc2hib2FyZFBhbmVsIiwiZGlzcGxheSIsImZsZXhEaXJlY3Rpb24iLCJ3aWR0aCIsImhlaWdodCIsIm1pbkhlaWdodCIsIm92ZXJmbG93IiwiYm9yZGVyUmFkaXVzIiwiYm94U2hhZG93IiwiYm94U2l6aW5nIiwiZm9udFdlaWdodCIsIm1hcmdpbkJvdHRvbSIsInRpdGxlIiwiZmxleCIsImNoaWxkcmVuIiwiUG9ydGFsRGFzaGJvYXJkIiwibWVtbyIsImZvcndhcmRSZWYiLCJyZWYiLCJmaXJzdE5hbWUiLCJ1c2VNZW1vIiwiZ3JlZXRpbmciLCJpc1ZlbmRvciIsInZpZXdTZXEiLCJ1c2VDYWxsYmFjayIsImNsZWFyRGFzaGJvYXJkVmlld3MiLCJtYXJnaW4iLCJnYXAiLCJtaW5XaWR0aCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdmlldy9Qb3J0YWxEYXNoYm9hcmQuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vVXRpbHMnO1xuaW1wb3J0IFBhcGVyIGZyb20gJ0BtdWkvbWF0ZXJpYWwvUGFwZXInO1xuaW1wb3J0IHtzZW5kUmVxdWVzdH0gZnJvbSAnLi4vUmVzdFV0aWxzJztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCB7Vmlld30gZnJvbSAnLi4vY29tcG9uZW50cy9sYXlvdXQvVmlldyc7XG5cbmNvbnN0IGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcblxuLyoqXG4gKiBGcmllbmRseSBmaXJzdCBuYW1lIGZvciB0aGUgd2VsY29tZSBiYW5uZXIuIFRoZSB1c2VyJ3MgZmlyc3QgbmFtZShzKSBsaXZlIG9uXG4gKiB0aGUgYG5hbWVgIGZpZWxkIChzdXJuYW1lIGlzIHRoZSBzZXBhcmF0ZSBgc3VybmFtZWAgZmllbGQ7IGBwcm9maWxlYCBpcyBvcmcvXG4gKiByb2xlIEpTT04sIG5vdCBuYW1lIGRhdGEpLiBGYWxscyBiYWNrIHRvIHRoZSB1c2VybmFtZSBsb2NhbC1wYXJ0LCBlbHNlIG51bGwuXG4gKi9cbmNvbnN0IHJlc29sdmVGaXJzdE5hbWUgPSAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGV0YWlscyA9IGFwcGxpY2F0aW9uTWFuYWdlci5nZXRVc2VyRGV0YWlscygpO1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGRldGFpbHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5hbWUgPSBkZXRhaWxzLm5hbWU7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKG5hbWUpICYmIGAke25hbWV9YC50cmltKCkubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7bmFtZX1gLnRyaW0oKS5zcGxpdCgvXFxzKy8pWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXNlcm5hbWUgPSBkZXRhaWxzLnVzZXJuYW1lO1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbCh1c2VybmFtZSkgJiYgYCR7dXNlcm5hbWV9YC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZSA9IGAke3VzZXJuYW1lfWAuc3BsaXQoJ0AnKVswXTtcbiAgICAgICAgICAgIHJldHVybiBoYW5kbGUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBoYW5kbGUuc2xpY2UoMSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG4vKipcbiAqIFdoZXRoZXIgdGhlIHNpZ25lZC1pbiB1c2VyIGhvbGRzIHRoZSBnaXZlbiByb2xlIGluIGFueSBvZiB0aGVpciBvcmdhbmlzYXRpb25zLlxuICogUm9sZXMgbGl2ZSBpbiB0aGUgc3RyaW5naWZpZWQgYHByb2ZpbGVgIEpTT046IHsgb3JnYW5pc2F0aW9uczogW3sgcm9sZXMgfV0gfS5cbiAqIE1WUDogdGhlIGRhc2hib2FyZCBjYXJkIHZpc2liaWxpdHkgcnVsZSBpcyBoYXJkY29kZWQgYWdhaW5zdCB0aGlzOyBsYXRlciB0aGVcbiAqIGRlZmF1bHQgZGFzaGJvYXJkIGxheW91dCAoYW5kIHdoaWNoIGNhcmRzIHRvIHNob3cpIHdpbGwgY29tZSBmcm9tIGFuIEFQSS5cbiAqL1xuY29uc3QgdXNlckhhc1JvbGUgPSAocm9sZSkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRldGFpbHMgPSBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0VXNlckRldGFpbHMoKTtcbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChkZXRhaWxzKSB8fCBVdGlscy5pc051bGwoZGV0YWlscy5wcm9maWxlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHByb2ZpbGUgPSBkZXRhaWxzLnByb2ZpbGU7XG4gICAgICAgIGlmICh0eXBlb2YgcHJvZmlsZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHByb2ZpbGUgPSBKU09OLnBhcnNlKHByb2ZpbGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3JncyA9IHByb2ZpbGUgJiYgcHJvZmlsZS5vcmdhbmlzYXRpb25zO1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3JncykpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvcmdzLnNvbWUoKG9yZykgPT4gQXJyYXkuaXNBcnJheShvcmcucm9sZXMpICYmIG9yZy5yb2xlcy5pbmNsdWRlcyhyb2xlKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufTtcblxuLyoqXG4gKiBSZXNvbHZlcyBhIGRhc2hib2FyZCBkZXNjcmlwdG9yICh0eXBlOiBcImRhc2hib2FyZFwiKSB0byBpdHMgY29udGVudCB2aWV3IGFuZFxuICogcmVuZGVycyBpdCBpbmxpbmUsIG1pcnJvcmluZyB0aGUgVklFVy1kaXNwbGF5IGJyYW5jaCBvZiBEYXNoYm9hcmQuanN4J3NcbiAqIERhc2hib2FyZENhcmQuIFRoZSBkZXNjcmlwdG9yJ3MgY29udGVudFBhdGggcG9pbnRzIGF0IHRoZSB2aWV3IHRvIGVtYmVkLlxuICovXG5jb25zdCBFbWJlZGRlZFZpZXcgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCBbZWxlbWVudCwgc2V0RWxlbWVudF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbZmFpbGVkLCBzZXRGYWlsZWRdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIC8vIE9uZSBzdGFibGUsIHVuaXF1ZSB2aWV3IGlkIGZvciB0aGlzIGNhcmQncyBsaWZldGltZSwgZHJhd24gZnJvbSB0aGVcbiAgICAvLyBkYXNoYm9hcmQtbGlmZWN5Y2xlIGNvdW50ZXIgc28gaXQgbmV2ZXIgY29sbGlkZXMgd2l0aCBhIHNpYmxpbmcgY2FyZC5cbiAgICBjb25zdCB2aWV3SWRSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgaWYgKHZpZXdJZFJlZi5jdXJyZW50ID09PSBudWxsKSB7XG4gICAgICAgIHZpZXdJZFJlZi5jdXJyZW50ID0gcHJvcHMuYWxsb2NhdGVWaWV3SWQoKTtcbiAgICB9XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGJhc2UgPSBsb2NhdGlvbiArIGFwcGxpY2F0aW9uTWFuYWdlci5nZXRDb250ZXh0Um9vdCgpICsgYXBwbGljYXRpb25NYW5hZ2VyLmdldFVJQ29uZmlnUGF0aCgpO1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yVXJsID0gYmFzZSArICcvZGFzaGJvYXJkL2dldD92ZXJzaW9uPTEuMCZpZD0nICsgcHJvcHMuZGVzY3JpcHRvclBhdGg7XG5cbiAgICAgICAgc2VuZFJlcXVlc3QoZGVzY3JpcHRvclVybCwgKGRlc2NyaXB0b3IpID0+IHtcbiAgICAgICAgICAgIGlmIChjYW5jZWxsZWQpIHJldHVybjtcbiAgICAgICAgICAgIGlmIChVdGlscy5pc051bGwoZGVzY3JpcHRvcikgfHwgVXRpbHMuaXNOdWxsKGRlc2NyaXB0b3IuY29udGVudFBhdGgpKSB7XG4gICAgICAgICAgICAgICAgc2V0RmFpbGVkKHRydWUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgdmlld1VybCA9IGJhc2UgKyAnL3ZpZXcvZ2V0P3ZlcnNpb249MS4wJmlkPScgKyBkZXNjcmlwdG9yLmNvbnRlbnRQYXRoO1xuICAgICAgICAgICAgc2VuZFJlcXVlc3Qodmlld1VybCwgKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2FuY2VsbGVkKSByZXR1cm47XG4gICAgICAgICAgICAgICAgLy8gQ2xvbmUgc28gd2UgbmV2ZXIgbXV0YXRlIGEgKHBvc3NpYmx5IGNhY2hlZCkgc2hhcmVkIHJlc3BvbnNlLFxuICAgICAgICAgICAgICAgIC8vIGFuZCBzdGFtcCBhIHVuaXF1ZS1hbmQtc3RhYmxlIGlkIGZvciB0aGlzIGNhcmQgaW5zdGFuY2UuXG4gICAgICAgICAgICAgICAgY29uc3QgY29uZmlnID0gey4uLmRhdGEsIGlkOiBkYXRhLmlkICsgJ18nICsgdmlld0lkUmVmLmN1cnJlbnQsIHdpbmRvdzogZmFsc2V9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhc2hib2FyZFZpZXcgPSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZzogY29uZmlnLFxuICAgICAgICAgICAgICAgICAgICBwYXJlbnQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBwb3BVcDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXBpOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGVkOiAoKSA9PiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5hZGREYXNoYm9hcmRWaWV3KGRhc2hib2FyZFZpZXcsIGRlc2NyaXB0b3IuY29udGVudFBhdGgpO1xuICAgICAgICAgICAgICAgIHNldEVsZW1lbnQoXG4gICAgICAgICAgICAgICAgICAgIDxWaWV3IGtleT17Y29uZmlnLmlkfSBjb25maWc9e2NvbmZpZ30gcGFyYW1ldGVycz17W119IGhhbmRsZT17ZGFzaGJvYXJkVmlldy5oYW5kbGV9Lz5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSwgKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2FuY2VsbGVkKSByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgICAgICBzZXRGYWlsZWQodHJ1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgKGUpID0+IHtcbiAgICAgICAgICAgIGlmIChjYW5jZWxsZWQpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICBzZXRGYWlsZWQodHJ1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICB9O1xuICAgIH0sIFtwcm9wcy5kZXNjcmlwdG9yUGF0aF0pO1xuXG4gICAgaWYgKGZhaWxlZCkge1xuICAgICAgICByZXR1cm4gPGRpdiBzdHlsZT17e3BhZGRpbmc6ICcxNnB4JywgY29sb3I6ICcjOWFhM2IxJywgZm9udFNpemU6ICcxM3B4J319PlVuYWJsZSB0byBsb2FkLjwvZGl2PjtcbiAgICB9XG5cbiAgICBpZiAoVXRpbHMuaXNOdWxsKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybiA8ZGl2IHN0eWxlPXt7cGFkZGluZzogJzE2cHgnLCBjb2xvcjogJyM5YWEzYjEnLCBmb250U2l6ZTogJzEzcHgnfX0+TG9hZGluZ+KApjwvZGl2PjtcbiAgICB9XG5cbiAgICByZXR1cm4gZWxlbWVudDtcbn07XG5cbi8qKlxuICogUGFuZWwgd3JhcHBlciBnaXZpbmcgZWFjaCBlbWJlZGRlZCBjYXJkIGEgdGl0bGVkLCBzY3JvbGxhYmxlIGZyYW1lLiBGaWxsc1xuICogaXRzIHBhcmVudCBzbG90OyBjYWxsZXJzIHBhc3MgYHN0eWxlYCB0byBjb250cm9sIGl0cyBmbGV4IHNoYXJlL2hlaWdodFxuICogd2l0aGluIHRoZSBncmlkIGNvbHVtbnMuXG4gKi9cbmNvbnN0IERhc2hib2FyZFBhbmVsID0gKHByb3BzKSA9PiAoXG4gICAgPFBhcGVyIHN0eWxlPXt7XG4gICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBtaW5IZWlnaHQ6IDAsXG4gICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgYm9yZGVyUmFkaXVzOiAnNnB4JyxcbiAgICAgICAgYm94U2hhZG93OiAnMCAxcHggM3B4IHJnYmEoMjAsIDM1LCA2MCwgMC4wOCknLFxuICAgICAgICBwYWRkaW5nOiAnMTZweCcsXG4gICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgICAgICAuLi4ocHJvcHMuc3R5bGUgfHwge30pXG4gICAgfX0+XG4gICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgIGZvbnRTaXplOiAnMTZweCcsXG4gICAgICAgICAgICBmb250V2VpZ2h0OiA2MDAsXG4gICAgICAgICAgICBjb2xvcjogJyMxYTNjNWUnLFxuICAgICAgICAgICAgbWFyZ2luQm90dG9tOiAnMTJweCdcbiAgICAgICAgfX0+XG4gICAgICAgICAgICB7cHJvcHMudGl0bGV9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IHN0eWxlPXt7XG4gICAgICAgICAgICBmbGV4OiAnMSAxIGF1dG8nLFxuICAgICAgICAgICAgbWluSGVpZ2h0OiAwLFxuICAgICAgICAgICAgb3ZlcmZsb3c6ICdhdXRvJ1xuICAgICAgICB9fT5cbiAgICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9QYXBlcj5cbik7XG5cbmNvbnN0IFBvcnRhbERhc2hib2FyZCA9IFJlYWN0Lm1lbW8oUmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIHJlZikgPT4ge1xuICAgIGNvbnN0IGFwaSA9IHtcbiAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgcmV0dXJuICdwb3J0YWwtZGFzaGJvYXJkJztcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGUgPSB7XG4gICAgICAgIGFwaTogYXBpXG4gICAgfTtcblxuICAgIGNvbnN0IGZpcnN0TmFtZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gcmVzb2x2ZUZpcnN0TmFtZSgpLCBbXSk7XG4gICAgY29uc3QgZ3JlZXRpbmcgPSBVdGlscy5pc051bGwoZmlyc3ROYW1lKSA/ICdXZWxjb21lIGJhY2snIDogYEhpICR7Zmlyc3ROYW1lfSwgd2VsY29tZSBiYWNrYDtcblxuICAgIC8vIE1WUCBydWxlIChoYXJkY29kZWQpOiB0aGUgcHJvY3VyZW1lbnQgcm93IChQdWJsaWNhdGlvbnMgLyBSZWdpc3RyYXRpb25zIC9cbiAgICAvLyBCaWRzKSBvbmx5IHNob3dzIGZvciB1c2VycyB3aXRoIHRoZSBWRU5ET1Igcm9sZS4gVGhpcyB3aWxsIGJlIGRyaXZlbiBieVxuICAgIC8vIHRoZSBkZWZhdWx0IGRhc2hib2FyZCBzZXR0aW5ncyBBUEkgbGF0ZXIuXG4gICAgY29uc3QgaXNWZW5kb3IgPSBSZWFjdC51c2VNZW1vKCgpID0+IHVzZXJIYXNSb2xlKCdWRU5ET1InKSwgW10pO1xuXG4gICAgLy8gVmlldy1pZCBjb3VudGVyIHNjb3BlZCB0byB0aGlzIGRhc2hib2FyZCdzIGxpZmVjeWNsZTogaW5pdGlhdGVkIG9uIGxvYWQsXG4gICAgLy8gaW5jcmVtZW50cyBwZXIgY2FyZCBhcyBuZWVkZWQuIFJlc3RhcnRpbmcgb24gZWFjaCBsb2FkIGlzIHNhZmUgYmVjYXVzZSB3ZVxuICAgIC8vIHVubG9hZCBldmVyeSBjYXJkIHZpZXcgb24gZGVzdHJveSAoYmVsb3cpLCBzbyBubyBzdGFsZSBpZHMvc3Vic2NyaXB0aW9uc1xuICAgIC8vIHN1cnZpdmUgdG8gY29sbGlkZSB3aXRoIHRoZSBuZXh0IGxvYWQuXG4gICAgY29uc3Qgdmlld1NlcSA9IFJlYWN0LnVzZVJlZigwKTtcbiAgICBjb25zdCBhbGxvY2F0ZVZpZXdJZCA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+ICsrdmlld1NlcS5jdXJyZW50LCBbXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgLy8gVW5sb2FkIGFsbCBkYXNoYm9hcmQgY2FyZCB2aWV3cyBvbiBkZXN0cm95LiBXaXRob3V0IHRoaXMgdGhlIGV2ZW50XG4gICAgICAgICAgICAvLyBidXMga2VlcHMgdGhlaXIgc3Vic2NyaXB0aW9ucyBhbmQgd291bGQgcmVzcG9uZCB0byBldmVudHMgZm9yXG4gICAgICAgICAgICAvLyB0aGVzZSAobm93IHVubW91bnRlZCkgdmlld3MgYmVoaW5kIHRoZSBzY2VuZXMuXG4gICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuY2xlYXJEYXNoYm9hcmRWaWV3cygpO1xuICAgICAgICB9O1xuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgcmVmPXtyZWZ9IHN0eWxlPXt7cGFkZGluZzogJzE2cHgnLCBib3hTaXppbmc6ICdib3JkZXItYm94J319PlxuICAgICAgICAgICAgPHAgc3R5bGU9e3tmb250U2l6ZTogJzI0cHgnLCBtYXJnaW46ICcwIDAgMTJweCA0cHgnLCBjb2xvcjogJyMxYTNjNWUnfX0+e2dyZWV0aW5nfTwvcD5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgICAgICAgICAgZ2FwOiAnMTBweCcsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnY2FsYygxMDBkdmggLSB2YXIoLS1oZWFkZXItaCwgNjRweCkgLSAxMDBweCknXG4gICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICB7LyogUm93IDEg4oCUIE15IFRhc2tzIC8gQ2FsZW5kYXIgKDIgY29sdW1ucykgKi99XG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICBmbGV4OiAxLFxuICAgICAgICAgICAgICAgICAgICBtaW5IZWlnaHQ6IDAsXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgZ2FwOiAnMTBweCdcbiAgICAgICAgICAgICAgICB9fT5cbiAgICAgICAgICAgICAgICAgICAgPERhc2hib2FyZFBhbmVsIHRpdGxlPXsnTXkgVGFza3MnfSBzdHlsZT17e2ZsZXg6IDEsIG1pbldpZHRoOiAwfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RW1iZWRkZWRWaWV3IGRlc2NyaXB0b3JQYXRoPXsnL3BvcnRhbC9kYXNoYm9hcmRzL215LXdvcmstaXRlbXMuanNvbid9IGFsbG9jYXRlVmlld0lkPXthbGxvY2F0ZVZpZXdJZH0vPlxuICAgICAgICAgICAgICAgICAgICA8L0Rhc2hib2FyZFBhbmVsPlxuICAgICAgICAgICAgICAgICAgICA8RGFzaGJvYXJkUGFuZWwgdGl0bGU9eydDYWxlbmRhcid9IHN0eWxlPXt7ZmxleDogMSwgbWluV2lkdGg6IDB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxFbWJlZGRlZFZpZXcgZGVzY3JpcHRvclBhdGg9eycvcG9ydGFsL2Rhc2hib2FyZHMvbXktY2FsZW5kYXIuanNvbid9IGFsbG9jYXRlVmlld0lkPXthbGxvY2F0ZVZpZXdJZH0vPlxuICAgICAgICAgICAgICAgICAgICA8L0Rhc2hib2FyZFBhbmVsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIHsvKiBSb3cgMiDigJQgUHVibGljYXRpb25zIC8gTXkgUmVnaXN0cmF0aW9ucyAvIE15IEJpZHMgKDMgY29sdW1ucykuXG4gICAgICAgICAgICAgICAgICAgIE9ubHkgcmVuZGVyZWQgZm9yIFZFTkRPUiB1c2VycyAoTVZQIGhhcmRjb2RlZCBydWxlKS4gKi99XG4gICAgICAgICAgICAgICAge2lzVmVuZG9yICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxleDogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pbkhlaWdodDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdhcDogJzEwcHgnXG4gICAgICAgICAgICAgICAgICAgIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgPERhc2hib2FyZFBhbmVsIHRpdGxlPXsnUHVibGljYXRpb25zJ30gc3R5bGU9e3tmbGV4OiAxLCBtaW5XaWR0aDogMH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFbWJlZGRlZFZpZXcgZGVzY3JpcHRvclBhdGg9eycvcG9ydGFsL2Rhc2hib2FyZHMvcHVibGljYXRpb25zLmpzb24nfSBhbGxvY2F0ZVZpZXdJZD17YWxsb2NhdGVWaWV3SWR9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvRGFzaGJvYXJkUGFuZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8RGFzaGJvYXJkUGFuZWwgdGl0bGU9eydNeSBSZWdpc3RyYXRpb25zJ30gc3R5bGU9e3tmbGV4OiAxLCBtaW5XaWR0aDogMH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFbWJlZGRlZFZpZXcgZGVzY3JpcHRvclBhdGg9eycvcG9ydGFsL2Rhc2hib2FyZHMvbXktcmVnaXN0cmF0aW9ucy5qc29uJ30gYWxsb2NhdGVWaWV3SWQ9e2FsbG9jYXRlVmlld0lkfS8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0Rhc2hib2FyZFBhbmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPERhc2hib2FyZFBhbmVsIHRpdGxlPXsnTXkgQmlkcyd9IHN0eWxlPXt7ZmxleDogMSwgbWluV2lkdGg6IDB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RW1iZWRkZWRWaWV3IGRlc2NyaXB0b3JQYXRoPXsnL3BvcnRhbC9kYXNoYm9hcmRzL215LWJpZHMuanNvbid9IGFsbG9jYXRlVmlld0lkPXthbGxvY2F0ZVZpZXdJZH0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9EYXNoYm9hcmRQYW5lbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufSkpO1xuXG5leHBvcnQgZGVmYXVsdCBQb3J0YWxEYXNoYm9hcmQ7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLFVBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLG1CQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxLQUFBLEdBQUFMLE9BQUE7QUFBK0MsU0FBQUQsdUJBQUFPLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFBQSxTQUFBRyxRQUFBSCxDQUFBLEVBQUFJLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQVAsQ0FBQSxPQUFBTSxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBUixDQUFBLEdBQUFJLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFYLENBQUEsRUFBQUksQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFB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
|
package/package.json
CHANGED