@agilemotion/oui-react-js 2.0.26 → 2.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/AuthImage.js +68 -0
  2. package/dist/RestService.js +7 -2
  3. package/dist/components/AlertBar.js +2 -2
  4. package/dist/components/Button.js +59 -7
  5. package/dist/components/DataGrid.js +42 -16
  6. package/dist/components/DocumentTemplateDesignerComponent.js +2 -2
  7. package/dist/components/FileThumb.js +48 -15
  8. package/dist/components/TabPanel.js +14 -3
  9. package/dist/components/WordDocumentViewer.js +2 -2
  10. package/dist/components/dashboard/components/blackDashboard/sidebar/FoldingTabSidebar.js +6 -2
  11. package/dist/components/form/BaseField.js +4 -2
  12. package/dist/components/form/Checkbox.js +3 -2
  13. package/dist/components/form/FieldSet.js +2 -2
  14. package/dist/components/form/Form.css +1 -1
  15. package/dist/components/form/Form.js +40 -38
  16. package/dist/components/form/GridField.js +6 -5
  17. package/dist/components/form/RadioGroup.js +5 -5
  18. package/dist/components/form/UploadField.js +40 -7
  19. package/dist/components/layout/Layout.js +9 -1
  20. package/dist/components/layout/View.css +2 -0
  21. package/dist/components/media/ChatViewer.js +103 -0
  22. package/dist/components/media/TrainingRoom.js +5 -5
  23. package/dist/components/media/VCRoomParticipant.js +11 -11
  24. package/dist/components/media/VCRoomWorkspace.js +19 -4
  25. package/dist/components/media/VideoPlayer.js +61 -7
  26. package/dist/components/media/chat/ChatRoom.js +37 -28
  27. package/dist/components/media/chat/PollContainer.js +85 -18
  28. package/dist/documentDownload.js +79 -0
  29. package/dist/js/ProcurementMeetings.js +11 -4
  30. package/dist/view/PortalDashboard.js +6 -5
  31. package/package.json +1 -1
@@ -43,6 +43,56 @@ const Button = props => {
43
43
  const [loading, setLoading] = _react.default.useState(false);
44
44
  const [config, setConfig] = _react.default.useState(null);
45
45
  let color = _Utils.default.getComponentAttribute(props.config, 'color', 'default');
46
+
47
+ // MUI's `color` prop only accepts theme palette keys. Any other value (a hex
48
+ // code, rgb(), a named CSS colour, ...) is a "custom colour": strip it from the
49
+ // `color` prop and drive it through `sx` instead so the button actually picks it up.
50
+ const PALETTE_COLORS = ['default', 'inherit', 'primary', 'secondary', 'success', 'error', 'info', 'warning'];
51
+ const isCustomColor = !_Utils.default.isNull(color) && !PALETTE_COLORS.includes(color);
52
+ const muiColor = isCustomColor ? 'inherit' : color;
53
+
54
+ // An explicit `variant` in the config (text | outlined | contained) overrides the
55
+ // colour-derived default. When absent, each render branch keeps its previous default.
56
+ const configVariant = _Utils.default.getComponentAttribute(props.config, 'variant', null);
57
+ const resolveVariant = fallback => !_Utils.default.isNull(configVariant) ? configVariant : fallback;
58
+
59
+ // Drive a custom (hex/CSS) colour through `sx`, shaped to the effective variant:
60
+ // contained -> filled background + contrast text; text/outlined -> colour the text
61
+ // (and border) instead of filling.
62
+ const buildCustomColorSx = () => {
63
+ if (!isCustomColor) {
64
+ return undefined;
65
+ }
66
+ const variant = !_Utils.default.isNull(configVariant) ? configVariant : 'contained';
67
+ if (variant === 'text') {
68
+ return {
69
+ color: color
70
+ };
71
+ }
72
+ if (variant === 'outlined') {
73
+ return {
74
+ color: color,
75
+ borderColor: color
76
+ };
77
+ }
78
+ return {
79
+ backgroundColor: color,
80
+ // getContrastText only understands hex/rgb/hsl; fall back to inherit for
81
+ // anything it can't parse (e.g. named CSS colours) rather than throwing.
82
+ color: theme => {
83
+ try {
84
+ return theme.palette.getContrastText(color);
85
+ } catch (e) {
86
+ return 'inherit';
87
+ }
88
+ },
89
+ '&:hover': {
90
+ backgroundColor: color,
91
+ filter: 'brightness(0.93)'
92
+ }
93
+ };
94
+ };
95
+ const customColorSx = buildCustomColorSx();
46
96
  _react.default.useEffect(() => {
47
97
  props.handle.api = api();
48
98
  });
@@ -119,9 +169,10 @@ const Button = props => {
119
169
  if (!_Utils.default.isNull(props.config.icon) && !_Utils.default.isNull(label)) {
120
170
  var _props$config$attribu;
121
171
  return /*#__PURE__*/_react.default.createElement(_Button.default, {
122
- variant: color === 'secondary' || color === 'primary' ? 'contained' : 'text',
172
+ variant: resolveVariant(color !== 'default' ? 'contained' : 'text'),
123
173
  size: "large",
124
- color: !_Utils.default.isNull(color) ? color : null,
174
+ color: !_Utils.default.isNull(muiColor) ? muiColor : null,
175
+ sx: customColorSx,
125
176
  style: (_props$config$attribu = props.config.attributes) === null || _props$config$attribu === void 0 ? void 0 : _props$config$attribu.style,
126
177
  disabled: effectiveDisabled,
127
178
  onClick: handleClick,
@@ -133,7 +184,7 @@ const Button = props => {
133
184
  if (!_Utils.default.isNull(props.config.icon)) {
134
185
  var _props$config$attribu2, _props$config$attribu3, _props$config$attribu4;
135
186
  return /*#__PURE__*/_react.default.createElement(_IconButton.default, {
136
- color: !_Utils.default.isNull(color) ? color : null,
187
+ color: !_Utils.default.isNull(muiColor) ? muiColor : null,
137
188
  "aria-controls": "menu-list-grow",
138
189
  disabled: effectiveDisabled,
139
190
  style: (_props$config$attribu2 = props.config.attributes) === null || _props$config$attribu2 === void 0 ? void 0 : _props$config$attribu2.style,
@@ -141,13 +192,14 @@ const Button = props => {
141
192
  onClick: handleClick
142
193
  }, loading ? spinnerIcon : /*#__PURE__*/_react.default.createElement(_Icon.default, {
143
194
  id: props.config.icon,
144
- color: (_props$config$attribu3 = props.config.attributes) !== null && _props$config$attribu3 !== void 0 && (_props$config$attribu3 = _props$config$attribu3.style) !== null && _props$config$attribu3 !== void 0 && _props$config$attribu3.color ? (_props$config$attribu4 = props.config.attributes) === null || _props$config$attribu4 === void 0 || (_props$config$attribu4 = _props$config$attribu4.style) === null || _props$config$attribu4 === void 0 ? void 0 : _props$config$attribu4.color : _ApplicationManager.default.getApplicationSecondaryColor()
195
+ color: (_props$config$attribu3 = props.config.attributes) !== null && _props$config$attribu3 !== void 0 && (_props$config$attribu3 = _props$config$attribu3.style) !== null && _props$config$attribu3 !== void 0 && _props$config$attribu3.color ? (_props$config$attribu4 = props.config.attributes) === null || _props$config$attribu4 === void 0 || (_props$config$attribu4 = _props$config$attribu4.style) === null || _props$config$attribu4 === void 0 ? void 0 : _props$config$attribu4.color : isCustomColor ? color : _ApplicationManager.default.getApplicationSecondaryColor()
145
196
  }));
146
197
  }
147
198
  return /*#__PURE__*/_react.default.createElement(_Button.default, {
148
- variant: color === 'secondary' || color === 'primary' ? 'contained' : 'text',
199
+ variant: resolveVariant(color === 'secondary' || color === 'primary' || isCustomColor ? 'contained' : 'text'),
149
200
  "aria-controls": "menu-list-grow",
150
- color: color,
201
+ color: muiColor,
202
+ sx: customColorSx,
151
203
  style: (_props$config$attribu5 = props.config.attributes) === null || _props$config$attribu5 === void 0 ? void 0 : _props$config$attribu5.style,
152
204
  disabled: effectiveDisabled,
153
205
  onClick: handleClick,
@@ -169,4 +221,4 @@ const Button = props => {
169
221
  }, /*#__PURE__*/_react.default.createElement("span", null, renderButton())) : renderButton())));
170
222
  };
171
223
  var _default = exports.default = Button;
172
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9CdXR0b24iLCJfT2JzZXJ2YWJsZSIsIl9VdGlscyIsIl9JY29uQnV0dG9uIiwiX0ljb24iLCJfVG9vbHRpcCIsIl9zdHlsZXMiLCJfRXZlbnQiLCJfRXZlbnRUeXBlIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9EeW5hbWljSlMiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJvd25LZXlzIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwidXNlU3R5bGVzIiwibWFrZVN0eWxlcyIsInRoZW1lIiwicm9vdCIsImRpc3BsYXkiLCJwYXBlciIsIm1hcmdpblJpZ2h0Iiwic3BhY2luZyIsIndyYXBwZXIiLCJ6SW5kZXgiLCJCdXR0b24iLCJwcm9wcyIsIl9wcm9wcyRhdHRyaWJ1dGVzIiwiY2xhc3NlcyIsImRpc2FibGVkIiwic2V0RGlzYWJsZWQiLCJSZWFjdCIsInVzZVN0YXRlIiwidmlzaWJsZSIsInNldFZpc2libGUiLCJsYWJlbCIsInNldExhYmVsIiwibG9hZGluZyIsInNldExvYWRpbmciLCJjb25maWciLCJzZXRDb25maWciLCJjb2xvciIsIlV0aWxzIiwiZ2V0Q29tcG9uZW50QXR0cmlidXRlIiwidXNlRWZmZWN0IiwiaGFuZGxlIiwiYXBpIiwiZXZlbnRNYW5hZ2VyIiwiY2xlYXJDb21wb25lbnRFdmVudExpc3RlbmVycyIsInBhcnNlZENvbmZpZyIsInBhcnNlQ29uZmlnIiwidmlld0lkIiwiYWRkU3Vic2NyaXB0aW9ucyIsImV2ZW50SGFuZGxpbmdDb25maWciLCJhZGRTeXN0ZW1TdWJzY3JpcHRpb25zIiwicmVmcmVzaCIsIl9wcm9wcyR0YWJsZVJvdyRpZCIsImR5bmFtaWNKUyIsImV4ZWN1dGVTY3JpcHQiLCJpZCIsInRhYmxlUm93IiwicmVwbGFjZUFsbCIsImhhbmRsZUNsaWNrIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiZW5hYmxlRm9ybU1hcmtlcnMiLCJldmVudCIsIkV2ZW50IiwiZmlyZUV2ZW50IiwiRXZlbnRUeXBlIiwiQ0xJQ0siLCJfcHJvcHMkdGFibGVSb3ckaWQyIiwiZ2V0Q2hpbGRyZW4iLCJ0cmFja0FjdGlvbiIsImFyZ3MiLCJzdG9wVHJhY2tBY3Rpb24iLCJldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uIiwiaXNOdWxsIiwidG9vbHRpcFRleHQiLCJzcGlubmVySWNvbiIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJlZmZlY3RpdmVEaXNhYmxlZCIsInJlbmRlckJ1dHRvbiIsIl9wcm9wcyRjb25maWckYXR0cmlidTUiLCJpY29uIiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1IiwidmFyaWFudCIsInNpemUiLCJzdHlsZSIsImF0dHJpYnV0ZXMiLCJvbkNsaWNrIiwic3RhcnRJY29uIiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1MiIsIl9wcm9wcyRjb25maWckYXR0cmlidTMiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnU0IiwiZ2V0QXBwbGljYXRpb25TZWNvbmRhcnlDb2xvciIsIkZyYWdtZW50IiwiY29uY2F0Iiwid2lkdGgiLCJ0aXRsZSIsImFycm93IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL0J1dHRvbi5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCdXR0b25Db21wb25lbnQgZnJvbSAnQG11aS9tYXRlcmlhbC9CdXR0b24nO1xuaW1wb3J0IGV2ZW50TWFuYWdlciBmcm9tICcuLi9ldmVudC9PYnNlcnZhYmxlJztcbmltcG9ydCBVdGlscyBmcm9tICcuLi9VdGlscyc7XG5pbXBvcnQgSWNvbkJ1dHRvbiBmcm9tICdAbXVpL21hdGVyaWFsL0ljb25CdXR0b24nO1xuaW1wb3J0IEljb24gZnJvbSAnLi9JY29uJztcbmltcG9ydCBUb29sdGlwIGZyb20gJ0BtdWkvbWF0ZXJpYWwvVG9vbHRpcCc7XG5pbXBvcnQge21ha2VTdHlsZXN9IGZyb20gJ0BtdWkvc3R5bGVzJztcbmltcG9ydCBFdmVudCBmcm9tICcuLi9ldmVudC9FdmVudCc7XG5pbXBvcnQgRXZlbnRUeXBlIGZyb20gJy4uL2V2ZW50L0V2ZW50VHlwZSc7XG5pbXBvcnQgYXBwbGljYXRpb25NYW5hZ2VyIGZyb20gJy4uL0FwcGxpY2F0aW9uTWFuYWdlcic7XG5pbXBvcnQgZHluYW1pY0pTIGZyb20gXCIuLi9EeW5hbWljSlNcIjtcbmltcG9ydCBcIi4vQnV0dG9uLmNzc1wiXG5cbmNvbnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXModGhlbWUgPT4gKHtcbiAgICByb290OiB7XG4gICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB9LFxuICAgIHBhcGVyOiB7XG4gICAgICAgIG1hcmdpblJpZ2h0OiB0aGVtZS5zcGFjaW5nKDIpLFxuICAgIH0sXG4gICAgd3JhcHBlcjoge1xuICAgICAgICB6SW5kZXg6IDJcbiAgICB9XG59KSk7XG5cbmNvbnN0IEJ1dHRvbiA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IGNsYXNzZXMgPSB1c2VTdHlsZXMoKTtcbiAgICBjb25zdCBbZGlzYWJsZWQsIHNldERpc2FibGVkXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2xhYmVsLCBzZXRMYWJlbF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtjb25maWcsIHNldENvbmZpZ10gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcblxuICAgIGxldCBjb2xvciA9IFV0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShwcm9wcy5jb25maWcsICdjb2xvcicsICdkZWZhdWx0Jyk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICAgICAgfSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgICAgICBwcm9wcy5oYW5kbGUuYXBpID0gYXBpKCk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuY2xlYXJDb21wb25lbnRFdmVudExpc3RlbmVycyhwcm9wcy5oYW5kbGUpO1xuICAgICAgICAgICAgbGV0IHBhcnNlZENvbmZpZyA9IFV0aWxzLnBhcnNlQ29uZmlnKGNvbmZpZywgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5hZGRTdWJzY3JpcHRpb25zKHBhcnNlZENvbmZpZy5ldmVudEhhbmRsaW5nQ29uZmlnLCBwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyhwcm9wcy52aWV3SWQsIHBhcnNlZENvbmZpZyk7XG4gICAgICAgICAgICBwcm9wcy5oYW5kbGUuYXBpLnJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgIH0sIFtjb25maWddKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgdHJ5e1xuICAgICAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICAgICAgbGV0IGxhYmVsID0gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHQocGFyc2VkQ29uZmlnLmlkICsgJ2xhYmVsJyxcbiAgICAgICAgICAgICAgICAgICAgVXRpbHMuZ2V0Q29tcG9uZW50QXR0cmlidXRlKHBhcnNlZENvbmZpZywgJ2xhYmVsJywgJycpLFxuICAgICAgICAgICAgICAgICAgICBwYXJzZWRDb25maWcudmlld0lkLCB0cnVlLCBudWxsLCBudWxsLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgc2V0TGFiZWwobGFiZWwpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHNldExhYmVsKFV0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShwcm9wcy5jb25maWcsICdsYWJlbCcsICcnKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNldENvbmZpZyhwcm9wcy50YWJsZVJvdyA/IHtcbiAgICAgICAgICAgICAgICAuLi5wcm9wcy5jb25maWcsXG4gICAgICAgICAgICAgICAgaWQ6IHByb3BzLmNvbmZpZy5pZCArICdfJyArIHByb3BzLnRhYmxlUm93LmlkPy5yZXBsYWNlQWxsKCctJywgJycpXG4gICAgICAgICAgICB9IDogcHJvcHMuY29uZmlnKTtcblxuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuY2xlYXJDb21wb25lbnRFdmVudExpc3RlbmVycyhwcm9wcy5oYW5kbGUpO1xuICAgICAgICAgICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBudWxsO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSwgW10pO1xuXG4gICAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZSkgPT4ge1xuICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuZW5hYmxlRm9ybU1hcmtlcnModHJ1ZSk7XG4gICAgICAgIGxldCBldmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLkNMSUNLLCBldmVudCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGFwaSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldCBpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMudGFibGVSb3cgPyBwcm9wcy5jb25maWcuaWQgKyAnXycgKyBwcm9wcy50YWJsZVJvdy5pZD8ucmVwbGFjZUFsbCgnLScsJycpIDogcHJvcHMuY29uZmlnLmlkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCB0YWJsZVJvdygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMudGFibGVSb3c7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0Q2hpbGRyZW46ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IGRpc2FibGVkKGRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgc2V0RGlzYWJsZWQoZGlzYWJsZWQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCB2aXNpYmxlKHZpc2libGUpIHtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKHZpc2libGUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRyYWNrQWN0aW9uKGFyZ3MpIHtcbiAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHN0b3BUcmFja0FjdGlvbihhcmdzKSB7XG4gICAgICAgICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVmcmVzaCgpIHtcbiAgICAgICAgICAgICAgICBsZXQgcGFyc2VkQ29uZmlnID0gVXRpbHMucGFyc2VDb25maWcoY29uZmlnID8gY29uZmlnIDogcHJvcHMuY29uZmlnLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgICAgIHNldERpc2FibGVkKFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyc2VkQ29uZmlnLmRpc2FibGVkLCBwYXJzZWRDb25maWcuaWQpKTtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKFV0aWxzLmlzTnVsbChwYXJzZWRDb25maWcudmlzaWJsZSkgfHwgVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcudmlzaWJsZSwgcGFyc2VkQ29uZmlnLmlkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIGNvbnN0IHRvb2x0aXBUZXh0ID0gVXRpbHMuZ2V0Q29tcG9uZW50QXR0cmlidXRlKHByb3BzLmNvbmZpZywgJ3Rvb2xUaXAnLCAnJyk7XG5cbiAgICBjb25zdCBzcGlubmVySWNvbiA9IDxpIGNsYXNzTmFtZT1cImZhIGZhLXJlZnJlc2ggZmEtc3BpblwiLz47XG4gICAgY29uc3QgZWZmZWN0aXZlRGlzYWJsZWQgPSBkaXNhYmxlZCB8fCBsb2FkaW5nO1xuXG4gICAgY29uc3QgcmVuZGVyQnV0dG9uID0gKCkgPT4ge1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy5jb25maWcuaWNvbikgJiYgIVV0aWxzLmlzTnVsbChsYWJlbCkpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPEJ1dHRvbkNvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PXtjb2xvciA9PT0gJ3NlY29uZGFyeScgfHwgY29sb3IgPT09ICdwcmltYXJ5JyA/ICdjb250YWluZWQnIDogJ3RleHQnfVxuICAgICAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj17IVV0aWxzLmlzTnVsbChjb2xvcikgPyBjb2xvciA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXtwcm9wcy5jb25maWcuYXR0cmlidXRlcz8uc3R5bGV9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtlZmZlY3RpdmVEaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0SWNvbj17bG9hZGluZyA/IHNwaW5uZXJJY29uIDogPEljb24gaWQ9e3Byb3BzLmNvbmZpZy5pY29ufS8+fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2xhYmVsfVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uQ29tcG9uZW50PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5pY29uKSkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjb2xvcj17IVV0aWxzLmlzTnVsbChjb2xvcikgPyBjb2xvciA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJtZW51LWxpc3QtZ3Jvd1wiXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtlZmZlY3RpdmVEaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3Byb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5zdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtsb2FkaW5nID8gc3Bpbm5lckljb24gOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17cHJvcHMuY29uZmlnLmljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17cHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LnN0eWxlPy5jb2xvciA/IHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5zdHlsZT8uY29sb3IgOiBhcHBsaWNhdGlvbk1hbmFnZXIuZ2V0QXBwbGljYXRpb25TZWNvbmRhcnlDb2xvcigpfS8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8QnV0dG9uQ29tcG9uZW50XG4gICAgICAgICAgICAgICAgdmFyaWFudD17Y29sb3IgPT09ICdzZWNvbmRhcnknIHx8IGNvbG9yID09PSAncHJpbWFyeScgPyAnY29udGFpbmVkJyA6ICd0ZXh0J31cbiAgICAgICAgICAgICAgICBhcmlhLWNvbnRyb2xzPVwibWVudS1saXN0LWdyb3dcIlxuICAgICAgICAgICAgICAgIGNvbG9yPXtjb2xvcn1cbiAgICAgICAgICAgICAgICBzdHlsZT17cHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LnN0eWxlfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtlZmZlY3RpdmVEaXNhYmxlZH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgc3RhcnRJY29uPXtsb2FkaW5nID8gc3Bpbm5lckljb24gOiBudWxsfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgICAgIDwvQnV0dG9uQ29tcG9uZW50PlxuICAgICAgICApO1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtjbGFzc2VzLnJvb3R9IG91aSBidXR0b25gfVxuICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHByb3BzLmF0dHJpYnV0ZXM/LnN0eWxlPy53aWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IHZpc2libGUgPyAnYmxvY2snIDogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy53cmFwcGVyfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhVXRpbHMuaXNOdWxsKHRvb2x0aXBUZXh0KSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0b29sdGlwVGV4dH0gYXJyb3c+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57cmVuZGVyQnV0dG9uKCl9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyQnV0dG9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvPlxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBCdXR0b247XG4iXSwibWFw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
224
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9CdXR0b24iLCJfT2JzZXJ2YWJsZSIsIl9VdGlscyIsIl9JY29uQnV0dG9uIiwiX0ljb24iLCJfVG9vbHRpcCIsIl9zdHlsZXMiLCJfRXZlbnQiLCJfRXZlbnRUeXBlIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9EeW5hbWljSlMiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJvd25LZXlzIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJpIiwiX3RvUHJpbWl0aXZlIiwiU3ltYm9sIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiVHlwZUVycm9yIiwiU3RyaW5nIiwiTnVtYmVyIiwidXNlU3R5bGVzIiwibWFrZVN0eWxlcyIsInRoZW1lIiwicm9vdCIsImRpc3BsYXkiLCJwYXBlciIsIm1hcmdpblJpZ2h0Iiwic3BhY2luZyIsIndyYXBwZXIiLCJ6SW5kZXgiLCJCdXR0b24iLCJwcm9wcyIsIl9wcm9wcyRhdHRyaWJ1dGVzIiwiY2xhc3NlcyIsImRpc2FibGVkIiwic2V0RGlzYWJsZWQiLCJSZWFjdCIsInVzZVN0YXRlIiwidmlzaWJsZSIsInNldFZpc2libGUiLCJsYWJlbCIsInNldExhYmVsIiwibG9hZGluZyIsInNldExvYWRpbmciLCJjb25maWciLCJzZXRDb25maWciLCJjb2xvciIsIlV0aWxzIiwiZ2V0Q29tcG9uZW50QXR0cmlidXRlIiwiUEFMRVRURV9DT0xPUlMiLCJpc0N1c3RvbUNvbG9yIiwiaXNOdWxsIiwiaW5jbHVkZXMiLCJtdWlDb2xvciIsImNvbmZpZ1ZhcmlhbnQiLCJyZXNvbHZlVmFyaWFudCIsImZhbGxiYWNrIiwiYnVpbGRDdXN0b21Db2xvclN4IiwidW5kZWZpbmVkIiwidmFyaWFudCIsImJvcmRlckNvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwicGFsZXR0ZSIsImdldENvbnRyYXN0VGV4dCIsImN1c3RvbUNvbG9yU3giLCJ1c2VFZmZlY3QiLCJoYW5kbGUiLCJhcGkiLCJldmVudE1hbmFnZXIiLCJjbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzIiwicGFyc2VkQ29uZmlnIiwicGFyc2VDb25maWciLCJ2aWV3SWQiLCJhZGRTdWJzY3JpcHRpb25zIiwiZXZlbnRIYW5kbGluZ0NvbmZpZyIsImFkZFN5c3RlbVN1YnNjcmlwdGlvbnMiLCJyZWZyZXNoIiwiX3Byb3BzJHRhYmxlUm93JGlkIiwiZHluYW1pY0pTIiwiZXhlY3V0ZVNjcmlwdCIsImlkIiwidGFibGVSb3ciLCJyZXBsYWNlQWxsIiwiaGFuZGxlQ2xpY2siLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJlbmFibGVGb3JtTWFya2VycyIsImV2ZW50IiwiRXZlbnQiLCJmaXJlRXZlbnQiLCJFdmVudFR5cGUiLCJDTElDSyIsIl9wcm9wcyR0YWJsZVJvdyRpZDIiLCJnZXRDaGlsZHJlbiIsInRyYWNrQWN0aW9uIiwiYXJncyIsInN0b3BUcmFja0FjdGlvbiIsImV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24iLCJ0b29sdGlwVGV4dCIsInNwaW5uZXJJY29uIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsImVmZmVjdGl2ZURpc2FibGVkIiwicmVuZGVyQnV0dG9uIiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1NSIsImljb24iLCJfcHJvcHMkY29uZmlnJGF0dHJpYnUiLCJzaXplIiwic3giLCJzdHlsZSIsImF0dHJpYnV0ZXMiLCJvbkNsaWNrIiwic3RhcnRJY29uIiwiX3Byb3BzJGNvbmZpZyRhdHRyaWJ1MiIsIl9wcm9wcyRjb25maWckYXR0cmlidTMiLCJfcHJvcHMkY29uZmlnJGF0dHJpYnU0IiwiZ2V0QXBwbGljYXRpb25TZWNvbmRhcnlDb2xvciIsIkZyYWdtZW50IiwiY29uY2F0Iiwid2lkdGgiLCJ0aXRsZSIsImFycm93IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL0J1dHRvbi5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCdXR0b25Db21wb25lbnQgZnJvbSAnQG11aS9tYXRlcmlhbC9CdXR0b24nO1xuaW1wb3J0IGV2ZW50TWFuYWdlciBmcm9tICcuLi9ldmVudC9PYnNlcnZhYmxlJztcbmltcG9ydCBVdGlscyBmcm9tICcuLi9VdGlscyc7XG5pbXBvcnQgSWNvbkJ1dHRvbiBmcm9tICdAbXVpL21hdGVyaWFsL0ljb25CdXR0b24nO1xuaW1wb3J0IEljb24gZnJvbSAnLi9JY29uJztcbmltcG9ydCBUb29sdGlwIGZyb20gJ0BtdWkvbWF0ZXJpYWwvVG9vbHRpcCc7XG5pbXBvcnQge21ha2VTdHlsZXN9IGZyb20gJ0BtdWkvc3R5bGVzJztcbmltcG9ydCBFdmVudCBmcm9tICcuLi9ldmVudC9FdmVudCc7XG5pbXBvcnQgRXZlbnRUeXBlIGZyb20gJy4uL2V2ZW50L0V2ZW50VHlwZSc7XG5pbXBvcnQgYXBwbGljYXRpb25NYW5hZ2VyIGZyb20gJy4uL0FwcGxpY2F0aW9uTWFuYWdlcic7XG5pbXBvcnQgZHluYW1pY0pTIGZyb20gXCIuLi9EeW5hbWljSlNcIjtcbmltcG9ydCBcIi4vQnV0dG9uLmNzc1wiXG5cbmNvbnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXModGhlbWUgPT4gKHtcbiAgICByb290OiB7XG4gICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB9LFxuICAgIHBhcGVyOiB7XG4gICAgICAgIG1hcmdpblJpZ2h0OiB0aGVtZS5zcGFjaW5nKDIpLFxuICAgIH0sXG4gICAgd3JhcHBlcjoge1xuICAgICAgICB6SW5kZXg6IDJcbiAgICB9XG59KSk7XG5cbmNvbnN0IEJ1dHRvbiA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IGNsYXNzZXMgPSB1c2VTdHlsZXMoKTtcbiAgICBjb25zdCBbZGlzYWJsZWQsIHNldERpc2FibGVkXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2xhYmVsLCBzZXRMYWJlbF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtjb25maWcsIHNldENvbmZpZ10gPSBSZWFjdC51c2VTdGF0ZShudWxsKTtcblxuICAgIGxldCBjb2xvciA9IFV0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShwcm9wcy5jb25maWcsICdjb2xvcicsICdkZWZhdWx0Jyk7XG5cbiAgICAvLyBNVUkncyBgY29sb3JgIHByb3Agb25seSBhY2NlcHRzIHRoZW1lIHBhbGV0dGUga2V5cy4gQW55IG90aGVyIHZhbHVlIChhIGhleFxuICAgIC8vIGNvZGUsIHJnYigpLCBhIG5hbWVkIENTUyBjb2xvdXIsIC4uLikgaXMgYSBcImN1c3RvbSBjb2xvdXJcIjogc3RyaXAgaXQgZnJvbSB0aGVcbiAgICAvLyBgY29sb3JgIHByb3AgYW5kIGRyaXZlIGl0IHRocm91Z2ggYHN4YCBpbnN0ZWFkIHNvIHRoZSBidXR0b24gYWN0dWFsbHkgcGlja3MgaXQgdXAuXG4gICAgY29uc3QgUEFMRVRURV9DT0xPUlMgPSBbJ2RlZmF1bHQnLCAnaW5oZXJpdCcsICdwcmltYXJ5JywgJ3NlY29uZGFyeScsICdzdWNjZXNzJywgJ2Vycm9yJywgJ2luZm8nLCAnd2FybmluZyddO1xuICAgIGNvbnN0IGlzQ3VzdG9tQ29sb3IgPSAhVXRpbHMuaXNOdWxsKGNvbG9yKSAmJiAhUEFMRVRURV9DT0xPUlMuaW5jbHVkZXMoY29sb3IpO1xuICAgIGNvbnN0IG11aUNvbG9yID0gaXNDdXN0b21Db2xvciA/ICdpbmhlcml0JyA6IGNvbG9yO1xuXG4gICAgLy8gQW4gZXhwbGljaXQgYHZhcmlhbnRgIGluIHRoZSBjb25maWcgKHRleHQgfCBvdXRsaW5lZCB8IGNvbnRhaW5lZCkgb3ZlcnJpZGVzIHRoZVxuICAgIC8vIGNvbG91ci1kZXJpdmVkIGRlZmF1bHQuIFdoZW4gYWJzZW50LCBlYWNoIHJlbmRlciBicmFuY2gga2VlcHMgaXRzIHByZXZpb3VzIGRlZmF1bHQuXG4gICAgY29uc3QgY29uZmlnVmFyaWFudCA9IFV0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShwcm9wcy5jb25maWcsICd2YXJpYW50JywgbnVsbCk7XG4gICAgY29uc3QgcmVzb2x2ZVZhcmlhbnQgPSAoZmFsbGJhY2spID0+ICFVdGlscy5pc051bGwoY29uZmlnVmFyaWFudCkgPyBjb25maWdWYXJpYW50IDogZmFsbGJhY2s7XG5cbiAgICAvLyBEcml2ZSBhIGN1c3RvbSAoaGV4L0NTUykgY29sb3VyIHRocm91Z2ggYHN4YCwgc2hhcGVkIHRvIHRoZSBlZmZlY3RpdmUgdmFyaWFudDpcbiAgICAvLyBjb250YWluZWQgLT4gZmlsbGVkIGJhY2tncm91bmQgKyBjb250cmFzdCB0ZXh0OyB0ZXh0L291dGxpbmVkIC0+IGNvbG91ciB0aGUgdGV4dFxuICAgIC8vIChhbmQgYm9yZGVyKSBpbnN0ZWFkIG9mIGZpbGxpbmcuXG4gICAgY29uc3QgYnVpbGRDdXN0b21Db2xvclN4ID0gKCkgPT4ge1xuICAgICAgICBpZiAoIWlzQ3VzdG9tQ29sb3IpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdmFyaWFudCA9ICFVdGlscy5pc051bGwoY29uZmlnVmFyaWFudCkgPyBjb25maWdWYXJpYW50IDogJ2NvbnRhaW5lZCc7XG4gICAgICAgIGlmICh2YXJpYW50ID09PSAndGV4dCcpIHtcbiAgICAgICAgICAgIHJldHVybiB7Y29sb3I6IGNvbG9yfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFyaWFudCA9PT0gJ291dGxpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIHtjb2xvcjogY29sb3IsIGJvcmRlckNvbG9yOiBjb2xvcn07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogY29sb3IsXG4gICAgICAgICAgICAvLyBnZXRDb250cmFzdFRleHQgb25seSB1bmRlcnN0YW5kcyBoZXgvcmdiL2hzbDsgZmFsbCBiYWNrIHRvIGluaGVyaXQgZm9yXG4gICAgICAgICAgICAvLyBhbnl0aGluZyBpdCBjYW4ndCBwYXJzZSAoZS5nLiBuYW1lZCBDU1MgY29sb3VycykgcmF0aGVyIHRoYW4gdGhyb3dpbmcuXG4gICAgICAgICAgICBjb2xvcjogKHRoZW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoZW1lLnBhbGV0dGUuZ2V0Q29udHJhc3RUZXh0KGNvbG9yKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnaW5oZXJpdCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICcmOmhvdmVyJzoge2JhY2tncm91bmRDb2xvcjogY29sb3IsIGZpbHRlcjogJ2JyaWdodG5lc3MoMC45MyknfSxcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNvbnN0IGN1c3RvbUNvbG9yU3ggPSBidWlsZEN1c3RvbUNvbG9yU3goKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgICAgICB9KTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgICAgIHByb3BzLmhhbmRsZS5hcGkgPSBhcGkoKTtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5jbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzKHByb3BzLmhhbmRsZSk7XG4gICAgICAgICAgICBsZXQgcGFyc2VkQ29uZmlnID0gVXRpbHMucGFyc2VDb25maWcoY29uZmlnLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmFkZFN1YnNjcmlwdGlvbnMocGFyc2VkQ29uZmlnLmV2ZW50SGFuZGxpbmdDb25maWcsIHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5hZGRTeXN0ZW1TdWJzY3JpcHRpb25zKHByb3BzLnZpZXdJZCwgcGFyc2VkQ29uZmlnKTtcbiAgICAgICAgICAgIHByb3BzLmhhbmRsZS5hcGkucmVmcmVzaCgpO1xuICAgICAgICB9XG4gICAgfSwgW2NvbmZpZ10pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICB0cnl7XG4gICAgICAgICAgICAgICAgbGV0IHBhcnNlZENvbmZpZyA9IFV0aWxzLnBhcnNlQ29uZmlnKHByb3BzLmNvbmZpZywgcHJvcHMudmlld0lkKTtcbiAgICAgICAgICAgICAgICBsZXQgbGFiZWwgPSBkeW5hbWljSlMuZXhlY3V0ZVNjcmlwdChwYXJzZWRDb25maWcuaWQgKyAnbGFiZWwnLFxuICAgICAgICAgICAgICAgICAgICBVdGlscy5nZXRDb21wb25lbnRBdHRyaWJ1dGUocGFyc2VkQ29uZmlnLCAnbGFiZWwnLCAnJyksXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZENvbmZpZy52aWV3SWQsIHRydWUsIG51bGwsIG51bGwsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBzZXRMYWJlbChsYWJlbCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgc2V0TGFiZWwoVXRpbHMuZ2V0Q29tcG9uZW50QXR0cmlidXRlKHByb3BzLmNvbmZpZywgJ2xhYmVsJywgJycpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc2V0Q29uZmlnKHByb3BzLnRhYmxlUm93ID8ge1xuICAgICAgICAgICAgICAgIC4uLnByb3BzLmNvbmZpZyxcbiAgICAgICAgICAgICAgICBpZDogcHJvcHMuY29uZmlnLmlkICsgJ18nICsgcHJvcHMudGFibGVSb3cuaWQ/LnJlcGxhY2VBbGwoJy0nLCAnJylcbiAgICAgICAgICAgIH0gOiBwcm9wcy5jb25maWcpO1xuXG4gICAgICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50TWFuYWdlci5jbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzKHByb3BzLmhhbmRsZSk7XG4gICAgICAgICAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IG51bGw7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LCBbXSk7XG5cbiAgICBjb25zdCBoYW5kbGVDbGljayA9IChlKSA9PiB7XG4gICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2Vycyh0cnVlKTtcbiAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkKTtcbiAgICAgICAgZXZlbnRNYW5hZ2VyLmZpcmVFdmVudChFdmVudFR5cGUuQ0xJQ0ssIGV2ZW50KTtcbiAgICB9O1xuXG4gICAgY29uc3QgYXBpID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy50YWJsZVJvdyA/IHByb3BzLmNvbmZpZy5pZCArICdfJyArIHByb3BzLnRhYmxlUm93LmlkPy5yZXBsYWNlQWxsKCctJywnJykgOiBwcm9wcy5jb25maWcuaWQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHRhYmxlUm93KCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy50YWJsZVJvdztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBzZXREaXNhYmxlZChkaXNhYmxlZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IHZpc2libGUodmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIHNldFZpc2libGUodmlzaWJsZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHJhY2tBY3Rpb24oYXJncykge1xuICAgICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc3RvcFRyYWNrQWN0aW9uKGFyZ3MpIHtcbiAgICAgICAgICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZWZyZXNoKCkge1xuICAgICAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhjb25maWcgPyBjb25maWcgOiBwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICAgICAgc2V0RGlzYWJsZWQoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcuZGlzYWJsZWQsIHBhcnNlZENvbmZpZy5pZCkpO1xuICAgICAgICAgICAgICAgIHNldFZpc2libGUoVXRpbHMuaXNOdWxsKHBhcnNlZENvbmZpZy52aXNpYmxlKSB8fCBVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy52aXNpYmxlLCBwYXJzZWRDb25maWcuaWQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgdG9vbHRpcFRleHQgPSBVdGlscy5nZXRDb21wb25lbnRBdHRyaWJ1dGUocHJvcHMuY29uZmlnLCAndG9vbFRpcCcsICcnKTtcblxuICAgIGNvbnN0IHNwaW5uZXJJY29uID0gPGkgY2xhc3NOYW1lPVwiZmEgZmEtcmVmcmVzaCBmYS1zcGluXCIvPjtcbiAgICBjb25zdCBlZmZlY3RpdmVEaXNhYmxlZCA9IGRpc2FibGVkIHx8IGxvYWRpbmc7XG5cbiAgICBjb25zdCByZW5kZXJCdXR0b24gPSAoKSA9PiB7XG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5pY29uKSAmJiAhVXRpbHMuaXNOdWxsKGxhYmVsKSkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8QnV0dG9uQ29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9e3Jlc29sdmVWYXJpYW50KGNvbG9yICE9PSAnZGVmYXVsdCcgPyAnY29udGFpbmVkJyA6ICd0ZXh0Jyl9XG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPXshVXRpbHMuaXNOdWxsKG11aUNvbG9yKSA/IG11aUNvbG9yIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgc3g9e2N1c3RvbUNvbG9yU3h9XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXtwcm9wcy5jb25maWcuYXR0cmlidXRlcz8uc3R5bGV9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtlZmZlY3RpdmVEaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0SWNvbj17bG9hZGluZyA/IHNwaW5uZXJJY29uIDogPEljb24gaWQ9e3Byb3BzLmNvbmZpZy5pY29ufS8+fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2xhYmVsfVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uQ29tcG9uZW50PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5pY29uKSkge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjb2xvcj17IVV0aWxzLmlzTnVsbChtdWlDb2xvcikgPyBtdWlDb2xvciA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJtZW51LWxpc3QtZ3Jvd1wiXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtlZmZlY3RpdmVEaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3Byb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5zdHlsZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtsb2FkaW5nID8gc3Bpbm5lckljb24gOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8SWNvbiBpZD17cHJvcHMuY29uZmlnLmljb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj17cHJvcHMuY29uZmlnLmF0dHJpYnV0ZXM/LnN0eWxlPy5jb2xvciA/IHByb3BzLmNvbmZpZy5hdHRyaWJ1dGVzPy5zdHlsZT8uY29sb3IgOiAoaXNDdXN0b21Db2xvciA/IGNvbG9yIDogYXBwbGljYXRpb25NYW5hZ2VyLmdldEFwcGxpY2F0aW9uU2Vjb25kYXJ5Q29sb3IoKSl9Lz5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxCdXR0b25Db21wb25lbnRcbiAgICAgICAgICAgICAgICB2YXJpYW50PXtyZXNvbHZlVmFyaWFudChjb2xvciA9PT0gJ3NlY29uZGFyeScgfHwgY29sb3IgPT09ICdwcmltYXJ5JyB8fCBpc0N1c3RvbUNvbG9yID8gJ2NvbnRhaW5lZCcgOiAndGV4dCcpfVxuICAgICAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJtZW51LWxpc3QtZ3Jvd1wiXG4gICAgICAgICAgICAgICAgY29sb3I9e211aUNvbG9yfVxuICAgICAgICAgICAgICAgIHN4PXtjdXN0b21Db2xvclN4fVxuICAgICAgICAgICAgICAgIHN0eWxlPXtwcm9wcy5jb25maWcuYXR0cmlidXRlcz8uc3R5bGV9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2VmZmVjdGl2ZURpc2FibGVkfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBzdGFydEljb249e2xvYWRpbmcgPyBzcGlubmVySWNvbiA6IG51bGx9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge2xhYmVsfVxuICAgICAgICAgICAgPC9CdXR0b25Db21wb25lbnQ+XG4gICAgICAgICk7XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake2NsYXNzZXMucm9vdH0gb3VpIGJ1dHRvbmB9XG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogcHJvcHMuYXR0cmlidXRlcz8uc3R5bGU/LndpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogdmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLndyYXBwZXJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFVdGlscy5pc051bGwodG9vbHRpcFRleHQpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3Rvb2x0aXBUZXh0fSBhcnJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPntyZW5kZXJCdXR0b24oKX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJCdXR0b24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC8+XG4gICAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsV0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssS0FBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sUUFBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8sT0FBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsTUFBQSxHQUFBVCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVMsVUFBQSxHQUFBVixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVUsbUJBQUEsR0FBQVgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFXLFVBQUEsR0FBQVosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBQSxPQUFBO0FBQXFCLFNBQUFELHVCQUFBYSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBQUEsU0FBQUcsUUFBQUgsQ0FBQSxFQUFBSSxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFQLENBQUEsT0FBQU0sTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQVIsQ0FBQSxHQUFBSSxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBWCxDQUFBLEVBQUFJLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFmLENBQUEsYUFBQUksQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFELE9BQUEsQ0FBQUcsTUFBQSxDQUFBRCxDQUFBLE9BQUFhLE9BQUEsV0FBQWQsQ0FBQSxJQUFBZSxlQUFBLENBQUFuQixDQUFBLEVBQUFJLENBQUEsRUFBQUMsQ0FBQSxDQUFBRCxDQUFBLFNBQUFFLE1BQUEsQ0FBQWMseUJBQUEsR0FBQWQsTUFBQSxDQUFBZSxnQkFBQSxDQUFBckIsQ0FBQSxFQUFBTSxNQUFBLENBQUFjLHlCQUFBLENBQUFmLENBQUEsS0FBQUYsT0FBQSxDQUFBRyxNQUFBLENBQUFELENBQUEsR0FBQWEsT0FBQSxXQUFBZCxDQUFBLElBQUFFLE1BQUEsQ0FBQWdCLGNBQUEsQ0FBQXRCLENBQUEsRUFBQUksQ0FBQSxFQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFOLENBQUEsRUFBQUQsQ0FBQSxpQkFBQUosQ0FBQTtBQUFBLFNBQUFtQixnQkFBQW5CLENBQUEsRUFBQUksQ0FBQSxFQUFBQyxDQUFBLFlBQUFELENBQUEsR0FBQW1CLGNBQUEsQ0FBQW5CLENBQUEsTUFBQUosQ0FBQSxHQUFBTSxNQUFBLENBQUFnQixjQUFBLENBQUF0QixDQUFBLEVBQUFJLENBQUEsSUFBQW9CLEtBQUEsRUFBQW5CLENBQUEsRUFBQU8sVUFBQSxNQUFBYSxZQUFBLE1BQUFDLFFBQUEsVUFBQTFCLENBQUEsQ0FBQUksQ0FBQSxJQUFBQyxDQUFBLEVBQUFMLENBQUE7QUFBQSxTQUFBdUIsZUFBQWxCLENBQUEsUUFBQXNCLENBQUEsR0FBQUMsWUFBQSxDQUFBdkIsQ0FBQSx1Q0FBQXNCLENBQUEsR0FBQUEsQ0FBQSxHQUFBQSxDQUFBO0FBQUEsU0FBQUMsYUFBQXZCLENBQUEsRUFBQUQsQ0FBQSwyQkFBQUMsQ0FBQSxLQUFBQSxDQUFBLFNBQUFBLENBQUEsTUFBQUwsQ0FBQSxHQUFBSyxDQUFBLENBQUF3QixNQUFBLENBQUFDLFdBQUEsa0JBQUE5QixDQUFBLFFBQUEyQixDQUFBLEdBQUEzQixDQUFBLENBQUErQixJQUFBLENBQUExQixDQUFBLEVBQUFELENBQUEsdUNBQUF1QixDQUFBLFNBQUFBLENBQUEsWUFBQUssU0FBQSx5RUFBQTVCLENBQUEsR0FBQTZCLE1BQUEsR0FBQUMsTUFBQSxFQUFBN0IsQ0FBQTtBQUVyQixNQUFNOEIsU0FBUyxHQUFHLElBQUFDLGtCQUFVLEVBQUNDLEtBQUssS0FBSztFQUNuQ0MsSUFBSSxFQUFFO0lBQ0ZDLE9BQU8sRUFBRTtFQUNiLENBQUM7RUFDREMsS0FBSyxFQUFFO0lBQ0hDLFdBQVcsRUFBRUosS0FBSyxDQUFDSyxPQUFPLENBQUMsQ0FBQztFQUNoQyxDQUFDO0VBQ0RDLE9BQU8sRUFBRTtJQUNMQyxNQUFNLEVBQUU7RUFDWjtBQUNKLENBQUMsQ0FBQyxDQUFDO0FBRUgsTUFBTUMsTUFBTSxHQUFJQyxLQUFLLElBQUs7RUFBQSxJQUFBQyxpQkFBQTtFQUN0QixNQUFNQyxPQUFPLEdBQUdiLFNBQVMsQ0FBQyxDQUFDO0VBQzNCLE1BQU0sQ0FBQ2MsUUFBUSxFQUFFQyxXQUFXLENBQUMsR0FBR0MsY0FBSyxDQUFDQyxRQUFRLENBQUMsS0FBSyxDQUFDO0VBQ3JELE1BQU0sQ0FBQ0MsT0FBTyxFQUFFQyxVQUFVLENBQUMsR0FBR0gsY0FBSyxDQUFDQyxRQUFRLENBQUMsS0FBSyxDQUFDO0VBQ25ELE1BQU0sQ0FBQ0csS0FBSyxFQUFFQyxRQUFRLENBQUMsR0FBR0wsY0FBSyxDQUFDQyxRQUFRLENBQUMsS0FBSyxDQUFDO0VBQy9DLE1BQU0sQ0FBQ0ssT0FBTyxFQUFFQyxVQUFVLENBQUMsR0FBR1AsY0FBSyxDQUFDQyxRQUFRLENBQUMsS0FBSyxDQUFDO0VBQ25ELE1BQU0sQ0FBQ08sTUFBTSxFQUFFQyxTQUFTLENBQUMsR0FBR1QsY0FBSyxDQUFDQyxRQUFRLENBQUMsSUFBSSxDQUFDO0VBRWhELElBQUlTLEtBQUssR0FBR0MsY0FBSyxDQUFDQyxxQkFBcUIsQ0FBQ2pCLEtBQUssQ0FBQ2EsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUM7O0VBRXpFO0VBQ0E7RUFDQTtFQUNBLE1BQU1LLGNBQWMsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUM7RUFDNUcsTUFBTUMsYUFBYSxHQUFHLENBQUNILGNBQUssQ0FBQ0ksTUFBTSxDQUFDTCxLQUFLLENBQUMsSUFBSSxDQUFDRyxjQUFjLENBQUNHLFFBQVEsQ0FBQ04sS0FBSyxDQUFDO0VBQzdFLE1BQU1PLFFBQVEsR0FBR0gsYUFBYSxHQUFHLFNBQVMsR0FBR0osS0FBSzs7RUFFbEQ7RUFDQTtFQUNBLE1BQU1RLGFBQWEsR0FBR1AsY0FBSyxDQUFDQyxxQkFBcUIsQ0FBQ2pCLEtBQUssQ0FBQ2EsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUM7RUFDaEYsTUFBTVcsY0FBYyxHQUFJQyxRQUFRLElBQUssQ0FBQ1QsY0FBSyxDQUFDSSxNQUFNLENBQUNHLGFBQWEsQ0FBQyxHQUFHQSxhQUFhLEdBQUdFLFFBQVE7O0VBRTVGO0VBQ0E7RUFDQTtFQUNBLE1BQU1DLGtCQUFrQixHQUFHQSxDQUFBLEtBQU07SUFDN0IsSUFBSSxDQUFDUCxhQUFhLEVBQUU7TUFDaEIsT0FBT1EsU0FBUztJQUNwQjtJQUNBLE1BQU1DLE9BQU8sR0FBRyxDQUFDWixjQUFLLENBQUNJLE1BQU0sQ0FBQ0csYUFBYSxDQUFDLEdBQUdBLGFBQWEsR0FBRyxXQUFXO0lBQzFFLElBQUlLLE9BQU8sS0FBSyxNQUFNLEVBQUU7TUFDcEIsT0FBTztRQUFDYixLQUFLLEVBQUVBO01BQUssQ0FBQztJQUN6QjtJQUNBLElBQUlhLE9BQU8sS0FBSyxVQUFVLEVBQUU7TUFDeEIsT0FBTztRQUFDYixLQUFLLEVBQUVBLEtBQUs7UUFBRWMsV0FBVyxFQUFFZDtNQUFLLENBQUM7SUFDN0M7SUFDQSxPQUFPO01BQ0hlLGVBQWUsRUFBRWYsS0FBSztNQUN0QjtNQUNBO01BQ0FBLEtBQUssRUFBR3hCLEtBQUssSUFBSztRQUNkLElBQUk7VUFDQSxPQUFPQSxLQUFLLENBQUN3QyxPQUFPLENBQUNDLGVBQWUsQ0FBQ2pCLEtBQUssQ0FBQztRQUMvQyxDQUFDLENBQUMsT0FBTzdELENBQUMsRUFBRTtVQUNSLE9BQU8sU0FBUztRQUNwQjtNQUNKLENBQUM7TUFDRCxTQUFTLEVBQUU7UUFBQzRFLGVBQWUsRUFBRWYsS0FBSztRQUFFbkQsTUFBTSxFQUFFO01BQWtCO0lBQ2xFLENBQUM7RUFDTCxDQUFDO0VBQ0QsTUFBTXFFLGFBQWEsR0FBR1Asa0JBQWtCLENBQUMsQ0FBQztFQUUxQ3JCLGNBQUssQ0FBQzZCLFNBQVMsQ0FDWCxNQUFNO0lBQ0ZsQyxLQUFLLENBQUNtQyxNQUFNLENBQUNDLEdBQUcsR0FBR0EsR0FBRyxDQUFDLENBQUM7RUFDNUIsQ0FBQyxDQUFDO0VBRU4vQixjQUFLLENBQUM2QixTQUFTLENBQUMsTUFBTTtJQUNsQixJQUFJckIsTUFBTSxFQUFFO01BQ1JiLEtBQUssQ0FBQ21DLE1BQU0sQ0FBQ0MsR0FBRyxHQUFHQSxHQUFHLENBQUMsQ0FBQztNQUN4QkMsbUJBQVksQ0FBQ0MsNEJBQTRCLENBQUN0QyxLQUFLLENBQUNtQyxNQUFNLENBQUM7TUFDdkQsSUFBSUksWUFBWSxHQUFHdkIsY0FBSyxDQUFDd0IsV0FBVyxDQUFDM0IsTUFBTSxFQUFFYixLQUFLLENBQUN5QyxNQUFNLENBQUM7TUFDMURKLG1CQUFZLENBQUNLLGdCQUFnQixDQUFDSCxZQUFZLENBQUNJLG1CQUFtQixFQUFFM0MsS0FBSyxDQUFDbUMsTUFBTSxFQUFFbkMsS0FBSyxDQUFDeUMsTUFBTSxDQUFDO01BQzNGSixtQkFBWSxDQUFDTyxzQkFBc0IsQ0FBQzVDLEtBQUssQ0FBQ3lDLE1BQU0sRUFBRUYsWUFBWSxDQUFDO01BQy9EdkMsS0FBSyxDQUFDbUMsTUFBTSxDQUFDQyxHQUFHLENBQUNTLE9BQU8sQ0FBQyxDQUFDO0lBQzlCO0VBQ0osQ0FBQyxFQUFFLENBQUNoQyxNQUFNLENBQUMsQ0FBQztFQUVaUixjQUFLLENBQUM2QixTQUFTLENBQ1gsTUFBTTtJQUFBLElBQUFZLGtCQUFBO0lBQ0YsSUFBRztNQUNDLElBQUlQLFlBQVksR0FBR3ZCLGNBQUssQ0FBQ3dCLFdBQVcsQ0FBQ3hDLEtBQUssQ0FBQ2EsTUFBTSxFQUFFYixLQUFLLENBQUN5QyxNQUFNLENBQUM7TUFDaEUsSUFBSWhDLEtBQUssR0FBR3NDLGtCQUFTLENBQUNDLGFBQWEsQ0FBQ1QsWUFBWSxDQUFDVSxFQUFFLEdBQUcsT0FBTyxFQUN6RGpDLGNBQUssQ0FBQ0MscUJBQXFCLENBQUNzQixZQUFZLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxFQUN0REEsWUFBWSxDQUFDRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDO01BQ2pEL0IsUUFBUSxDQUFDRCxLQUFLLENBQUM7SUFDbkIsQ0FBQyxDQUFDLE9BQU92RCxDQUFDLEVBQUU7TUFDUndELFFBQVEsQ0FBQ00sY0FBSyxDQUFDQyxxQkFBcUIsQ0FBQ2pCLEtBQUssQ0FBQ2EsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwRTtJQUVBQyxTQUFTLENBQUNkLEtBQUssQ0FBQ2tELFFBQVEsR0FBQWpGLGFBQUEsQ0FBQUEsYUFBQSxLQUNqQitCLEtBQUssQ0FBQ2EsTUFBTTtNQUNmb0MsRUFBRSxFQUFFakQsS0FBSyxDQUFDYSxNQUFNLENBQUNvQyxFQUFFLEdBQUcsR0FBRyxLQUFBSCxrQkFBQSxHQUFHOUMsS0FBSyxDQUFDa0QsUUFBUSxDQUFDRCxFQUFFLGNBQUFILGtCQUFBLHVCQUFqQkEsa0JBQUEsQ0FBbUJLLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQUEsS0FDbEVuRCxLQUFLLENBQUNhLE1BQU0sQ0FBQztJQUVqQixPQUFPLE1BQU07TUFDVHdCLG1CQUFZLENBQUNDLDRCQUE0QixDQUFDdEMsS0FBSyxDQUFDbUMsTUFBTSxDQUFDO01BQ3ZEbkMsS0FBSyxDQUFDbUMsTUFBTSxDQUFDQyxHQUFHLEdBQUcsSUFBSTtJQUMzQixDQUFDO0VBQ0wsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVWLE1BQU1nQixXQUFXLEdBQUlsRyxDQUFDLElBQUs7SUFDdkJtRywyQkFBa0IsQ0FBQ0MsaUJBQWlCLENBQUMsSUFBSSxDQUFDO0lBQzFDLElBQUlDLEtBQUssR0FBRyxJQUFJQyxjQUFLLENBQUN4RCxLQUFLLENBQUNtQyxNQUFNLEVBQUVuQyxLQUFLLENBQUN5QyxNQUFNLENBQUM7SUFDakRKLG1CQUFZLENBQUNvQixTQUFTLENBQUNDLGtCQUFTLENBQUNDLEtBQUssRUFBRUosS0FBSyxDQUFDO0VBQ2xELENBQUM7RUFFRCxNQUFNbkIsR0FBRyxHQUFHQSxDQUFBLEtBQU07SUFDZCxPQUFPO01BQ0gsSUFBSWEsRUFBRUEsQ0FBQSxFQUFHO1FBQUEsSUFBQVcsbUJBQUE7UUFDTCxPQUFPNUQsS0FBSyxDQUFDa0QsUUFBUSxHQUFHbEQsS0FBSyxDQUFDYSxNQUFNLENBQUNvQyxFQUFFLEdBQUcsR0FBRyxLQUFBVyxtQkFBQSxHQUFHNUQsS0FBSyxDQUFDa0QsUUFBUSxDQUFDRCxFQUFFLGNBQUFXLG1CQUFBLHVCQUFqQkEsbUJBQUEsQ0FBbUJULFVBQVUsQ0FBQyxHQUFHLEVBQUMsRUFBRSxDQUFDLElBQUduRCxLQUFLLENBQUNhLE1BQU0sQ0FBQ29DLEVBQUU7TUFDM0csQ0FBQztNQUNELElBQUlDLFFBQVFBLENBQUEsRUFBRztRQUNYLE9BQU9sRCxLQUFLLENBQUNrRCxRQUFRO01BQ3pCLENBQUM7TUFDRFcsV0FBVyxFQUFFQSxDQUFBLEtBQU07UUFDZixPQUFPLEVBQUU7TUFDYixDQUFDO01BQ0QsSUFBSTFELFFBQVFBLENBQUNBLFFBQVEsRUFBRTtRQUNuQkMsV0FBVyxDQUFDRCxRQUFRLENBQUM7TUFDekIsQ0FBQztNQUNELElBQUlJLE9BQU9BLENBQUNBLE9BQU8sRUFBRTtRQUNqQkMsVUFBVSxDQUFDRCxPQUFPLENBQUM7TUFDdkIsQ0FBQztNQUNEdUQsV0FBV0EsQ0FBQ0MsSUFBSSxFQUFFO1FBQ2RuRCxVQUFVLENBQUMsSUFBSSxDQUFDO01BQ3BCLENBQUM7TUFDRG9ELGVBQWVBLENBQUNELElBQUksRUFBRTtRQUNsQm5ELFVBQVUsQ0FBQyxLQUFLLENBQUM7TUFDckIsQ0FBQztNQUNEaUMsT0FBT0EsQ0FBQSxFQUFHO1FBQ04sSUFBSU4sWUFBWSxHQUFHdkIsY0FBSyxDQUFDd0IsV0FBVyxDQUFDM0IsTUFBTSxHQUFHQSxNQUFNLEdBQUdiLEtBQUssQ0FBQ2EsTUFBTSxFQUFFYixLQUFLLENBQUN5QyxNQUFNLENBQUM7UUFDbEZyQyxXQUFXLENBQUNZLGNBQUssQ0FBQ2lELHlCQUF5QixDQUFDMUIsWUFBWSxDQUFDcEMsUUFBUSxFQUFFb0MsWUFBWSxDQUFDVSxFQUFFLENBQUMsQ0FBQztRQUNwRnpDLFVBQVUsQ0FBQ1EsY0FBSyxDQUFDSSxNQUFNLENBQUNtQixZQUFZLENBQUNoQyxPQUFPLENBQUMsSUFBSVMsY0FBSyxDQUFDaUQseUJBQXlCLENBQUMxQixZQUFZLENBQUNoQyxPQUFPLEVBQUVnQyxZQUFZLENBQUNVLEVBQUUsQ0FBQyxDQUFDO01BQzVIO0lBQ0osQ0FBQztFQUNMLENBQUM7RUFFRCxNQUFNaUIsV0FBVyxHQUFHbEQsY0FBSyxDQUFDQyxxQkFBcUIsQ0FBQ2pCLEtBQUssQ0FBQ2EsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUM7RUFFNUUsTUFBTXNELFdBQVcsZ0JBQUcvSCxNQUFBLENBQUFnQixPQUFBLENBQUFnSCxhQUFBO0lBQUdDLFNBQVMsRUFBQztFQUF1QixDQUFDLENBQUM7RUFDMUQsTUFBTUMsaUJBQWlCLEdBQUduRSxRQUFRLElBQUlRLE9BQU87RUFFN0MsTUFBTTRELFlBQVksR0FBR0EsQ0FBQSxLQUFNO0lBQUEsSUFBQUMsc0JBQUE7SUFDdkIsSUFBSSxDQUFDeEQsY0FBSyxDQUFDSSxNQUFNLENBQUNwQixLQUFLLENBQUNhLE1BQU0sQ0FBQzRELElBQUksQ0FBQyxJQUFJLENBQUN6RCxjQUFLLENBQUNJLE1BQU0sQ0FBQ1gsS0FBSyxDQUFDLEVBQUU7TUFBQSxJQUFBaUUscUJBQUE7TUFDMUQsb0JBQ0l0SSxNQUFBLENBQUFnQixPQUFBLENBQUFnSCxhQUFBLENBQUM3SCxPQUFBLENBQUFhLE9BQWU7UUFDWndFLE9BQU8sRUFBRUosY0FBYyxDQUFDVCxLQUFLLEtBQUssU0FBUyxHQUFHLFdBQVcsR0FBRyxNQUFNLENBQUU7UUFDcEU0RCxJQUFJLEVBQUMsT0FBTztRQUNaNUQsS0FBSyxFQUFFLENBQUNDLGNBQUssQ0FBQ0ksTUFBTSxDQUFDRSxRQUFRLENBQUMsR0FBR0EsUUFBUSxHQUFHLElBQUs7UUFDakRzRCxFQUFFLEVBQUUzQyxhQUFjO1FBQ2xCNEMsS0FBSyxHQUFBSCxxQkFBQSxHQUFFMUUsS0FBSyxDQUFDYSxNQUFNLENBQUNpRSxVQUFVLGNBQUFKLHFCQUFBLHVCQUF2QkEscUJBQUEsQ0FBeUJHLEtBQU07UUFDdEMxRSxRQUFRLEVBQUVtRSxpQkFBa0I7UUFDNUJTLE9BQU8sRUFBRTNCLFdBQVk7UUFDckI0QixTQUFTLEVBQUVyRSxPQUFPLEdBQUd3RCxXQUFXLGdCQUFHL0gsTUFBQSxDQUFBZ0IsT0FBQSxDQUFBZ0gsYUFBQSxDQUFDekgsS0FBQSxDQUFBUyxPQUFJO1VBQUM2RixFQUFFLEVBQUVqRCxLQUFLLENBQUNhLE1BQU0sQ0FBQzREO1FBQUssQ0FBQztNQUFFLEdBRWpFaEUsS0FDWSxDQUFDO0lBRTFCO0lBRUEsSUFBSSxDQUFDTyxjQUFLLENBQUNJLE1BQU0sQ0FBQ3BCLEtBQUssQ0FBQ2EsTUFBTSxDQUFDNEQsSUFBSSxDQUFDLEVBQUU7TUFBQSxJQUFBUSxzQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxzQkFBQTtNQUNsQyxvQkFDSS9JLE1BQUEsQ0FBQWdCLE9BQUEsQ0FBQWdILGFBQUEsQ0FBQzFILFdBQUEsQ0FBQVUsT0FBVTtRQUNQMkQsS0FBSyxFQUFFLENBQUNDLGNBQUssQ0FBQ0ksTUFBTSxDQUFDRSxRQUFRLENBQUMsR0FBR0EsUUFBUSxHQUFHLElBQUs7UUFDakQsaUJBQWMsZ0JBQWdCO1FBQzlCbkIsUUFBUSxFQUFFbUUsaUJBQWtCO1FBQzVCTyxLQUFLLEdBQUFJLHNCQUFBLEdBQUVqRixLQUFLLENBQUNhLE1BQU0sQ0FBQ2lFLFVBQVUsY0FBQUcsc0JBQUEsdUJBQXZCQSxzQkFBQSxDQUF5QkosS0FBTTtRQUN0QyxpQkFBYyxNQUFNO1FBQ3BCRSxPQUFPLEVBQUUzQjtNQUFZLEdBRXBCekMsT0FBTyxHQUFHd0QsV0FBVyxnQkFDbEIvSCxNQUFBLENBQUFnQixPQUFBLENBQUFnSCxhQUFBLENBQUN6SCxLQUFBLENBQUFTLE9BQUk7UUFBQzZGLEVBQUUsRUFBRWpELEtBQUssQ0FBQ2EsTUFBTSxDQUFDNEQsSUFBSztRQUN0QjFELEtBQUssRUFBRSxDQUFBbUUsc0JBQUEsR0FBQWxGLEtBQUssQ0FBQ2EsTUFBTSxDQUFDaUUsVUFBVSxjQUFBSSxzQkFBQSxnQkFBQUEsc0JBQUEsR0FBdkJBLHNCQUFBLENBQXlCTCxLQUFLLGNBQUFLLHNCQUFBLGVBQTlCQSxzQkFBQSxDQUFnQ25FLEtBQUssSUFBQW9FLHNCQUFBLEdBQUduRixLQUFLLENBQUNhLE1BQU0sQ0FBQ2lFLFVBQVUsY0FBQUssc0JBQUEsZ0JBQUFBLHNCQUFBLEdBQXZCQSxzQkFBQSxDQUF5Qk4sS0FBSyxjQUFBTSxzQkFBQSx1QkFBOUJBLHNCQUFBLENBQWdDcEUsS0FBSyxHQUFJSSxhQUFhLEdBQUdKLEtBQUssR0FBR3NDLDJCQUFrQixDQUFDK0IsNEJBQTRCLENBQUM7TUFBRyxDQUFDLENBRXRLLENBQUM7SUFFckI7SUFFQSxvQkFDSWhKLE1BQUEsQ0FBQWdCLE9BQUEsQ0FBQWdILGFBQUEsQ0FBQzdILE9BQUEsQ0FBQWEsT0FBZTtNQUNad0UsT0FBTyxFQUFFSixjQUFjLENBQUNULEtBQUssS0FBSyxXQUFXLElBQUlBLEtBQUssS0FBSyxTQUFTLElBQUlJLGFBQWEsR0FBRyxXQUFXLEdBQUcsTUFBTSxDQUFFO01BQzlHLGlCQUFjLGdCQUFnQjtNQUM5QkosS0FBSyxFQUFFTyxRQUFTO01BQ2hCc0QsRUFBRSxFQUFFM0MsYUFBYztNQUNsQjRDLEtBQUssR0FBQUwsc0JBQUEsR0FBRXhFLEtBQUssQ0FBQ2EsTUFBTSxDQUFDaUUsVUFBVSxjQUFBTixzQkFBQSx1QkFBdkJBLHNCQUFBLENBQXlCSyxLQUFNO01BQ3RDMUUsUUFBUSxFQUFFbUUsaUJBQWtCO01BQzVCUyxPQUFPLEVBQUUzQixXQUFZO01BQ3JCLGlCQUFjLE1BQU07TUFDcEI0QixTQUFTLEVBQUVyRSxPQUFPLEdBQUd3RCxXQUFXLEdBQUc7SUFBSyxHQUV2QzFELEtBQ1ksQ0FBQztFQUUxQixDQUFDO0VBRUQsb0JBQ0lyRSxNQUFBLENBQUFnQixPQUFBLENBQUFnSCxhQUFBLENBQUFoSSxNQUFBLENBQUFnQixPQUFBLENBQUFpSSxRQUFBLHFCQUVRakosTUFBQSxDQUFBZ0IsT0FBQSxDQUFBZ0gsYUFBQTtJQUNJQyxTQUFTLEtBQUFpQixNQUFBLENBQUtwRixPQUFPLENBQUNWLElBQUksZ0JBQWM7SUFDeENxRixLQUFLLEVBQUU7TUFDSFUsS0FBSyxHQUFBdEYsaUJBQUEsR0FBRUQsS0FBSyxDQUFDOEUsVUFBVSxjQUFBN0UsaUJBQUEsZ0JBQUFBLGlCQUFBLEdBQWhCQSxpQkFBQSxDQUFrQjRFLEtBQUssY0FBQTVFLGlCQUFBLHVCQUF2QkEsaUJBQUEsQ0FBeUJzRixLQUFLO01BQ3JDOUYsT0FBTyxFQUFFYyxPQUFPLEdBQUcsT0FBTyxHQUFHO0lBQ2pDO0VBQUUsZ0JBRU5uRSxNQUFBLENBQUFnQixPQUFBLENBQUFnSCxhQUFBO0lBQUtDLFNBQVMsRUFBRW5FLE9BQU8sQ0FBQ0w7RUFBUSxHQUVwQixDQUFDbUIsY0FBSyxDQUFDSSxNQUFNLENBQUM4QyxXQUFXLENBQUMsZ0JBQ3RCOUgsTUFBQSxDQUFBZ0IsT0FBQSxDQUFBZ0gsYUFBQSxDQUFDeEgsUUFBQSxDQUFBUSxPQUFPO0lBQUNvSSxLQUFLLEVBQUV0QixXQUFZO0lBQUN1QixLQUFLO0VBQUEsZ0JBQzlCckosTUFBQSxDQUFBZ0IsT0FBQSxDQUFBZ0gsYUFBQSxlQUFPRyxZQUFZLENBQUMsQ0FBUSxDQUN2QixDQUFDLEdBRVZBLFlBQVksQ0FBQyxDQUVwQixDQUNKLENBRVgsQ0FBQztBQUVYLENBQUM7QUFBQyxJQUFBbUIsUUFBQSxHQUFBQyxPQUFBLENBQUF2SSxPQUFBLEdBRWEyQyxNQUFNIiwiaWdub3JlTGlzdCI6W119