@agilemotion/oui-react-js 2.0.12 → 2.0.13

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.
@@ -10,6 +10,7 @@ var _LoginInteractionPortal = _interopRequireDefault(require("./view/security/Lo
10
10
  var _ForgotPasswordBasic = _interopRequireDefault(require("./view/security/ForgotPasswordBasic"));
11
11
  var _ResetPasswordBasic = _interopRequireDefault(require("./view/security/ResetPasswordBasic"));
12
12
  var _ChangePasswordBasic = _interopRequireDefault(require("./view/security/ChangePasswordBasic"));
13
+ var _RegisterInteractionPortal = _interopRequireDefault(require("./view/security/RegisterInteractionPortal"));
13
14
  var _material = require("@mui/material");
14
15
  var _ThemeProvider = _interopRequireDefault(require("@mui/styles/ThemeProvider"));
15
16
  var _ViewContainer = _interopRequireDefault(require("./components/layout/ViewContainer"));
@@ -33,7 +34,16 @@ const agilityTheme = (0, _material.createTheme)({
33
34
  const InteractionPortalApp = props => {
34
35
  const navigate = (0, _reactRouterDom.useNavigate)();
35
36
  _react.default.useEffect(() => {
36
- if (window.location.pathname !== '/reset-password' && window.location.pathname !== '/login' && window.location.pathname !== '/forgot-password' && window.location.pathname !== '/change-password') {
37
+ // Unauthenticated routes that should NOT be force-redirected
38
+ // to "/". Add new public path prefixes here. Prefix-matching
39
+ // (not exact-equality) so child routes under /register —
40
+ // e.g. /register/registrationFlow once the in-flow navigate
41
+ // fires — also pass the guard. Without the prefix check a
42
+ // refresh on /register/registrationFlow kicks back to /.
43
+ const publicPaths = ['/reset-password', '/login', '/forgot-password', '/change-password', '/register'];
44
+ const path = window.location.pathname;
45
+ const isPublic = publicPaths.some(p => path === p || path.startsWith(p + '/'));
46
+ if (!isPublic) {
37
47
  navigate("/");
38
48
  }
39
49
  }, []);
@@ -49,6 +59,24 @@ const InteractionPortalApp = props => {
49
59
  ref: /*#__PURE__*/_react.default.createRef()
50
60
  })
51
61
  })
62
+ })), /*#__PURE__*/_react.default.createElement(_reactRouterDom.Route, {
63
+ path: "/register/:type",
64
+ element: /*#__PURE__*/_react.default.createElement(_RegisterInteractionPortal.default, {
65
+ contextRoot: props.contextRoot,
66
+ implConfig: props.implConfig
67
+ })
68
+ }, /*#__PURE__*/_react.default.createElement(_reactRouterDom.Route, {
69
+ path: ":id",
70
+ element: /*#__PURE__*/_react.default.createElement(_ViewContainer.default, null)
71
+ })), /*#__PURE__*/_react.default.createElement(_reactRouterDom.Route, {
72
+ path: "/register",
73
+ element: /*#__PURE__*/_react.default.createElement(_RegisterInteractionPortal.default, {
74
+ contextRoot: props.contextRoot,
75
+ implConfig: props.implConfig
76
+ })
77
+ }, /*#__PURE__*/_react.default.createElement(_reactRouterDom.Route, {
78
+ path: ":id",
79
+ element: /*#__PURE__*/_react.default.createElement(_ViewContainer.default, null)
52
80
  })), /*#__PURE__*/_react.default.createElement(_reactRouterDom.Route, {
53
81
  path: "/login",
54
82
  element: /*#__PURE__*/_react.default.createElement(_LoginInteractionPortal.default, {
@@ -110,4 +138,4 @@ const InteractionPortalApp = props => {
110
138
  })));
111
139
  };
112
140
  var _default = exports.default = InteractionPortalApp;
113
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9Mb2dpbkludGVyYWN0aW9uUG9ydGFsIiwiX0ZvcmdvdFBhc3N3b3JkQmFzaWMiLCJfUmVzZXRQYXNzd29yZEJhc2ljIiwiX0NoYW5nZVBhc3N3b3JkQmFzaWMiLCJfbWF0ZXJpYWwiLCJfVGhlbWVQcm92aWRlciIsIl9WaWV3Q29udGFpbmVyIiwiX3JlYWN0Um91dGVyRG9tIiwiX1BvcnRhbERhc2hib2FyZCIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImxvY2F0aW9uIiwid2luZG93IiwicHJvdG9jb2wiLCJob3N0bmFtZSIsImFnaWxpdHlUaGVtZSIsImNyZWF0ZVRoZW1lIiwicGFsZXR0ZSIsInByaW1hcnkiLCJtYWluIiwic2Vjb25kYXJ5Iiwid2hpdGUiLCJJbnRlcmFjdGlvblBvcnRhbEFwcCIsInByb3BzIiwibmF2aWdhdGUiLCJ1c2VOYXZpZ2F0ZSIsIlJlYWN0IiwidXNlRWZmZWN0IiwicGF0aG5hbWUiLCJjcmVhdGVFbGVtZW50IiwidGhlbWUiLCJSb3V0ZXMiLCJSb3V0ZSIsInBhdGgiLCJlbGVtZW50IiwiaG9tZSIsImRhc2hib2FyZCIsInJlZiIsImNyZWF0ZVJlZiIsInVybCIsImNvbnRleHRSb290IiwiaW1wbENvbmZpZyIsImF1dGhVcmwiLCJiYWNrZ3JvdW5kIiwidGV4dENvbG9yIiwibG9naW5UZXh0Q29sb3IiLCJmb290ZXJMb2dvIiwiZm9vdGVyVGV4dCIsImZvb3RlcldpZHRoIiwiZm9vdGVyU3BsaXR0ZXJDb2xvciIsInRpdGxlIiwibG9naW5UaXRsZSIsInRpdGxlQ29sb3IiLCJsb2dvIiwiYXBwTG9nbyIsImV4YWN0IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL2xpYi9JbnRlcmFjdGlvblBvcnRhbEFwcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICcuL0ludGVyYWN0aW9uUG9ydGFsQXBwLmNzcyc7XG5pbXBvcnQgTG9naW4gZnJvbSBcIi4vdmlldy9zZWN1cml0eS9Mb2dpbkludGVyYWN0aW9uUG9ydGFsXCI7XG5pbXBvcnQgRm9yZ290UGFzc3dvcmQgZnJvbSAnLi92aWV3L3NlY3VyaXR5L0ZvcmdvdFBhc3N3b3JkQmFzaWMnO1xuaW1wb3J0IFJlc2V0UGFzc3dvcmQgZnJvbSAnLi92aWV3L3NlY3VyaXR5L1Jlc2V0UGFzc3dvcmRCYXNpYyc7XG5pbXBvcnQgQ2hhbmdlUGFzc3dvcmQgZnJvbSAnLi92aWV3L3NlY3VyaXR5L0NoYW5nZVBhc3N3b3JkQmFzaWMnO1xuaW1wb3J0IHtjcmVhdGVUaGVtZX0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBUaGVtZVByb3ZpZGVyIGZyb20gXCJAbXVpL3N0eWxlcy9UaGVtZVByb3ZpZGVyXCI7XG5pbXBvcnQgVmlld0NvbnRhaW5lciBmcm9tIFwiLi9jb21wb25lbnRzL2xheW91dC9WaWV3Q29udGFpbmVyXCI7XG5pbXBvcnQge1JvdXRlLCBSb3V0ZXMsIHVzZU5hdmlnYXRlfSBmcm9tIFwicmVhY3Qtcm91dGVyLWRvbVwiO1xuaW1wb3J0IFBvcnRhbERhc2hib2FyZCBmcm9tIFwiLi92aWV3L1BvcnRhbERhc2hib2FyZFwiO1xuXG5jb25zdCBsb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArIFwiLy9cIiArIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcbmNvbnN0IGFnaWxpdHlUaGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgICAgICAgcGFsZXR0ZToge1xuICAgICAgICAgICAgcHJpbWFyeToge1xuICAgICAgICAgICAgICAgIG1haW46ICcjMDE1NTg4J1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNlY29uZGFyeToge1xuICAgICAgICAgICAgICAgIG1haW46ICcjMDAwMDk5J1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdoaXRlOiB7XG4gICAgICAgICAgICAgICAgbWFpbjogJyNmZmZmZmYnXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuKTtcblxuY29uc3QgSW50ZXJhY3Rpb25Qb3J0YWxBcHAgPSAocHJvcHMpID0+IHtcblxuICAgIGNvbnN0IG5hdmlnYXRlID0gdXNlTmF2aWdhdGUoKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgaWYod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICE9PSAnL3Jlc2V0LXBhc3N3b3JkJyAmJiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgIT09ICcvbG9naW4nXG4gICAgICAgICAgICAmJiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgIT09ICcvZm9yZ290LXBhc3N3b3JkJyYmIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSAhPT0gJy9jaGFuZ2UtcGFzc3dvcmQnKSB7XG4gICAgICAgICAgICAgICAgbmF2aWdhdGUoXCIvXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e2FnaWxpdHlUaGVtZX0+XG4gICAgICAgICAgICAgICAgPFJvdXRlcz5cbiAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9Jy8nIGVsZW1lbnQ9e3Byb3BzLmhvbWV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9J3ZpZXcvOmlkJyBlbGVtZW50PXs8Vmlld0NvbnRhaW5lciBkYXNoYm9hcmQ9ezxQb3J0YWxEYXNoYm9hcmQgcmVmPXtSZWFjdC5jcmVhdGVSZWYoKX0vPn0vPn0vPlxuICAgICAgICAgICAgICAgICAgICA8L1JvdXRlPlxuICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD0nL2xvZ2luJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudD17PExvZ2luIHVybD17bG9jYXRpb24gKyBwcm9wcy5jb250ZXh0Um9vdCArIHByb3BzLmltcGxDb25maWcuYXV0aFVybCArIFwiL2xvZ2luXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD17J3JnYmEoMCwgMCwgMCwgMC42NSknfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj17cHJvcHMuaW1wbENvbmZpZy5sb2dpblRleHRDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJMb2dvPXtwcm9wcy5pbXBsQ29uZmlnLmZvb3RlckxvZ299XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyVGV4dD17cHJvcHMuaW1wbENvbmZpZy5mb290ZXJUZXh0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlcldpZHRoPXtwcm9wcy5mb290ZXJXaWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJTcGxpdHRlckNvbG9yPXtwcm9wcy5pbXBsQ29uZmlnLmZvb3RlclNwbGl0dGVyQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3Byb3BzLmltcGxDb25maWcubG9naW5UaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUNvbG9yPXtwcm9wcy5pbXBsQ29uZmlnLnRpdGxlQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nbz17cHJvcHMuaW1wbENvbmZpZy5hcHBMb2dvfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgLz59XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPScvZm9yZ290LXBhc3N3b3JkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudD17PEZvcmdvdFBhc3N3b3JkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsPXtsb2NhdGlvbiArIHByb3BzLmNvbnRleHRSb290ICsgcHJvcHMuaW1wbENvbmZpZy5hdXRoVXJsICsgXCIvcGFzc3dvcmQvZm9yZ290XCJ9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD17J3JnYmEoMCwgMCwgMCwgMC42NSknfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRDb2xvcj17cHJvcHMuaW1wbENvbmZpZy5sb2dpblRleHRDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJMb2dvPXtwcm9wcy5pbXBsQ29uZmlnLmZvb3RlckxvZ299XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyVGV4dD17cHJvcHMuaW1wbENvbmZpZy5mb290ZXJUZXh0fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlcldpZHRoPXtwcm9wcy5mb290ZXJXaWR0aH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJTcGxpdHRlckNvbG9yPXtwcm9wcy5pbXBsQ29uZmlnLmZvb3RlclNwbGl0dGVyQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3Byb3BzLmltcGxDb25maWcubG9naW5UaXRsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZUNvbG9yPXtwcm9wcy5pbXBsQ29uZmlnLnRpdGxlQ29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nbz17cHJvcHMuaW1wbENvbmZpZy5hcHBMb2dvfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgLz59XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBleGFjdCBwYXRoPScvcmVzZXQtcGFzc3dvcmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50PXs8UmVzZXRQYXNzd29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybD17bG9jYXRpb24gKyBwcm9wcy5jb250ZXh0Um9vdCArIHByb3BzLmltcGxDb25maWcuYXV0aFVybCArIFwiL3Bhc3N3b3JkL2NvbmZpcm1Gb3Jnb3RcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPXsncmdiYSgwLCAwLCAwLCAwLjY1KSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPXtwcm9wcy5pbXBsQ29uZmlnLmxvZ2luVGV4dENvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlckxvZ289e3Byb3BzLmltcGxDb25maWcuZm9vdGVyTG9nb31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJUZXh0PXtwcm9wcy5pbXBsQ29uZmlnLmZvb3RlclRleHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyV2lkdGg9e3Byb3BzLmZvb3RlcldpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlclNwbGl0dGVyQ29sb3I9e3Byb3BzLmltcGxDb25maWcuZm9vdGVyU3BsaXR0ZXJDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17cHJvcHMuaW1wbENvbmZpZy5sb2dpblRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlQ29sb3I9e3Byb3BzLmltcGxDb25maWcudGl0bGVDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dvPXtwcm9wcy5pbXBsQ29uZmlnLmFwcExvZ299XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAvPn1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPFJvdXRlIGV4YWN0IHBhdGg9Jy9jaGFuZ2UtcGFzc3dvcmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50PXs8Q2hhbmdlUGFzc3dvcmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw9e2xvY2F0aW9uICsgcHJvcHMuY29udGV4dFJvb3QgKyBwcm9wcy5pbXBsQ29uZmlnLmF1dGhVcmwgKyBcIi9wYXNzd29yZC9jaGFsbGVuZ2VcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPXsncmdiYSgwLCAwLCAwLCAwLjY1KSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPXtwcm9wcy5pbXBsQ29uZmlnLmxvZ2luVGV4dENvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlckxvZ289e3Byb3BzLmltcGxDb25maWcuZm9vdGVyTG9nb31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJUZXh0PXtwcm9wcy5pbXBsQ29uZmlnLmZvb3RlclRleHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyV2lkdGg9e3Byb3BzLmZvb3RlcldpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlclNwbGl0dGVyQ29sb3I9e3Byb3BzLmltcGxDb25maWcuZm9vdGVyU3BsaXR0ZXJDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17cHJvcHMuaW1wbENvbmZpZy5sb2dpblRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlQ29sb3I9e3Byb3BzLmltcGxDb25maWcudGl0bGVDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dvPXtwcm9wcy5pbXBsQ29uZmlnLmFwcExvZ299XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAvPn1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L1JvdXRlcz5cbiAgICAgICAgICAgIDwvVGhlbWVQcm92aWRlcj5cbiAgICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBJbnRlcmFjdGlvblBvcnRhbEFwcDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0FBLE9BQUE7QUFDQSxJQUFBQyx1QkFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsb0JBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLG1CQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxvQkFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssU0FBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sY0FBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8sY0FBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsZUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsZ0JBQUEsR0FBQVYsc0JBQUEsQ0FBQUMsT0FBQTtBQUFxRCxTQUFBRCx1QkFBQVcsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUVyRCxNQUFNRyxRQUFRLEdBQUdDLE1BQU0sQ0FBQ0QsUUFBUSxDQUFDRSxRQUFRLEdBQUcsSUFBSSxHQUFHRCxNQUFNLENBQUNELFFBQVEsQ0FBQ0csUUFBUTtBQUMzRSxNQUFNQyxZQUFZLEdBQUcsSUFBQUMscUJBQVcsRUFBQztFQUN6QkMsT0FBTyxFQUFFO0lBQ0xDLE9BQU8sRUFBRTtNQUNMQyxJQUFJLEVBQUU7SUFDVixDQUFDO0lBQ0RDLFNBQVMsRUFBRTtNQUNQRCxJQUFJLEVBQUU7SUFDVixDQUFDO0lB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
141
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9Mb2dpbkludGVyYWN0aW9uUG9ydGFsIiwiX0ZvcmdvdFBhc3N3b3JkQmFzaWMiLCJfUmVzZXRQYXNzd29yZEJhc2ljIiwiX0NoYW5nZVBhc3N3b3JkQmFzaWMiLCJfUmVnaXN0ZXJJbnRlcmFjdGlvblBvcnRhbCIsIl9tYXRlcmlhbCIsIl9UaGVtZVByb3ZpZGVyIiwiX1ZpZXdDb250YWluZXIiLCJfcmVhY3RSb3V0ZXJEb20iLCJfUG9ydGFsRGFzaGJvYXJkIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwibG9jYXRpb24iLCJ3aW5kb3ciLCJwcm90b2NvbCIsImhvc3RuYW1lIiwiYWdpbGl0eVRoZW1lIiwiY3JlYXRlVGhlbWUiLCJwYWxldHRlIiwicHJpbWFyeSIsIm1haW4iLCJzZWNvbmRhcnkiLCJ3aGl0ZSIsIkludGVyYWN0aW9uUG9ydGFsQXBwIiwicHJvcHMiLCJuYXZpZ2F0ZSIsInVzZU5hdmlnYXRlIiwiUmVhY3QiLCJ1c2VFZmZlY3QiLCJwdWJsaWNQYXRocyIsInBhdGgiLCJwYXRobmFtZSIsImlzUHVibGljIiwic29tZSIsInAiLCJzdGFydHNXaXRoIiwiY3JlYXRlRWxlbWVudCIsInRoZW1lIiwiUm91dGVzIiwiUm91dGUiLCJlbGVtZW50IiwiaG9tZSIsImRhc2hib2FyZCIsInJlZiIsImNyZWF0ZVJlZiIsImNvbnRleHRSb290IiwiaW1wbENvbmZpZyIsInVybCIsImF1dGhVcmwiLCJiYWNrZ3JvdW5kIiwidGV4dENvbG9yIiwibG9naW5UZXh0Q29sb3IiLCJmb290ZXJMb2dvIiwiZm9vdGVyVGV4dCIsImZvb3RlcldpZHRoIiwiZm9vdGVyU3BsaXR0ZXJDb2xvciIsInRpdGxlIiwibG9naW5UaXRsZSIsInRpdGxlQ29sb3IiLCJsb2dvIiwiYXBwTG9nbyIsImV4YWN0IiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL2xpYi9JbnRlcmFjdGlvblBvcnRhbEFwcC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICcuL0ludGVyYWN0aW9uUG9ydGFsQXBwLmNzcyc7XG5pbXBvcnQgTG9naW4gZnJvbSBcIi4vdmlldy9zZWN1cml0eS9Mb2dpbkludGVyYWN0aW9uUG9ydGFsXCI7XG5pbXBvcnQgRm9yZ290UGFzc3dvcmQgZnJvbSAnLi92aWV3L3NlY3VyaXR5L0ZvcmdvdFBhc3N3b3JkQmFzaWMnO1xuaW1wb3J0IFJlc2V0UGFzc3dvcmQgZnJvbSAnLi92aWV3L3NlY3VyaXR5L1Jlc2V0UGFzc3dvcmRCYXNpYyc7XG5pbXBvcnQgQ2hhbmdlUGFzc3dvcmQgZnJvbSAnLi92aWV3L3NlY3VyaXR5L0NoYW5nZVBhc3N3b3JkQmFzaWMnO1xuaW1wb3J0IFJlZ2lzdGVyIGZyb20gJy4vdmlldy9zZWN1cml0eS9SZWdpc3RlckludGVyYWN0aW9uUG9ydGFsJztcbmltcG9ydCB7Y3JlYXRlVGhlbWV9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgVGhlbWVQcm92aWRlciBmcm9tIFwiQG11aS9zdHlsZXMvVGhlbWVQcm92aWRlclwiO1xuaW1wb3J0IFZpZXdDb250YWluZXIgZnJvbSBcIi4vY29tcG9uZW50cy9sYXlvdXQvVmlld0NvbnRhaW5lclwiO1xuaW1wb3J0IHtSb3V0ZSwgUm91dGVzLCB1c2VOYXZpZ2F0ZX0gZnJvbSBcInJlYWN0LXJvdXRlci1kb21cIjtcbmltcG9ydCBQb3J0YWxEYXNoYm9hcmQgZnJvbSBcIi4vdmlldy9Qb3J0YWxEYXNoYm9hcmRcIjtcblxuY29uc3QgbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgKyBcIi8vXCIgKyB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG5jb25zdCBhZ2lsaXR5VGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gICAgICAgIHBhbGV0dGU6IHtcbiAgICAgICAgICAgIHByaW1hcnk6IHtcbiAgICAgICAgICAgICAgICBtYWluOiAnIzAxNTU4OCdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWNvbmRhcnk6IHtcbiAgICAgICAgICAgICAgICBtYWluOiAnIzAwMDA5OSdcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB3aGl0ZToge1xuICAgICAgICAgICAgICAgIG1haW46ICcjZmZmZmZmJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbik7XG5cbmNvbnN0IEludGVyYWN0aW9uUG9ydGFsQXBwID0gKHByb3BzKSA9PiB7XG5cbiAgICBjb25zdCBuYXZpZ2F0ZSA9IHVzZU5hdmlnYXRlKCk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICAgIC8vIFVuYXV0aGVudGljYXRlZCByb3V0ZXMgdGhhdCBzaG91bGQgTk9UIGJlIGZvcmNlLXJlZGlyZWN0ZWRcbiAgICAgICAgICAgIC8vIHRvIFwiL1wiLiBBZGQgbmV3IHB1YmxpYyBwYXRoIHByZWZpeGVzIGhlcmUuIFByZWZpeC1tYXRjaGluZ1xuICAgICAgICAgICAgLy8gKG5vdCBleGFjdC1lcXVhbGl0eSkgc28gY2hpbGQgcm91dGVzIHVuZGVyIC9yZWdpc3RlciDigJRcbiAgICAgICAgICAgIC8vIGUuZy4gL3JlZ2lzdGVyL3JlZ2lzdHJhdGlvbkZsb3cgb25jZSB0aGUgaW4tZmxvdyBuYXZpZ2F0ZVxuICAgICAgICAgICAgLy8gZmlyZXMg4oCUIGFsc28gcGFzcyB0aGUgZ3VhcmQuIFdpdGhvdXQgdGhlIHByZWZpeCBjaGVjayBhXG4gICAgICAgICAgICAvLyByZWZyZXNoIG9uIC9yZWdpc3Rlci9yZWdpc3RyYXRpb25GbG93IGtpY2tzIGJhY2sgdG8gLy5cbiAgICAgICAgICAgIGNvbnN0IHB1YmxpY1BhdGhzID0gW1xuICAgICAgICAgICAgICAgICcvcmVzZXQtcGFzc3dvcmQnLFxuICAgICAgICAgICAgICAgICcvbG9naW4nLFxuICAgICAgICAgICAgICAgICcvZm9yZ290LXBhc3N3b3JkJyxcbiAgICAgICAgICAgICAgICAnL2NoYW5nZS1wYXNzd29yZCcsXG4gICAgICAgICAgICAgICAgJy9yZWdpc3RlcicsXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgY29uc3QgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICAgICAgICAgIGNvbnN0IGlzUHVibGljID0gcHVibGljUGF0aHMuc29tZShwID0+IHBhdGggPT09IHAgfHwgcGF0aC5zdGFydHNXaXRoKHAgKyAnLycpKTtcbiAgICAgICAgICAgIGlmICghaXNQdWJsaWMpIHtcbiAgICAgICAgICAgICAgICBuYXZpZ2F0ZShcIi9cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIFtdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgICAgICA8VGhlbWVQcm92aWRlciB0aGVtZT17YWdpbGl0eVRoZW1lfT5cbiAgICAgICAgICAgICAgICA8Um91dGVzPlxuICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD0nLycgZWxlbWVudD17cHJvcHMuaG9tZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD0ndmlldy86aWQnIGVsZW1lbnQ9ezxWaWV3Q29udGFpbmVyIGRhc2hib2FyZD17PFBvcnRhbERhc2hib2FyZCByZWY9e1JlYWN0LmNyZWF0ZVJlZigpfS8+fS8+fS8+XG4gICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgIHsvKiBUeXBlLXNjb3BlZCByZWdpc3RyYXRpb246IC9yZWdpc3Rlci86dHlwZSBib290c3RyYXBzXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGUgd2l6YXJkIGZvciB0aGF0IHJlZ2lzdHJhdGlvbiB0eXBlIChlLmcuXG4gICAgICAgICAgICAgICAgICAgICAgICAvcmVnaXN0ZXIvdmVuZG9yKSwgdGhlbiBpbi1mbG93IG5hdmlnYXRlcyB0b1xuICAgICAgICAgICAgICAgICAgICAgICAgL3JlZ2lzdGVyLzp0eXBlLzppZCB3aGVyZSA6aWQgaXMgdGhlIHZpZXcgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHdpemFyZCBncmFwaCByb3V0ZXMgdG8uXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIE5ldyByZWdpc3RyYXRpb24gdHlwZXMgKHByb2JpdG9yLCBldGMuKSBkcm9wIGludG9cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzYW1lIC9yZWdpc3Rlci86dHlwZS8gdHJlZSDigJQgUmVnaXN0ZXJJbnRlcmFjdGlvblBvcnRhbFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHMgOnR5cGUgZnJvbSB0aGUgcm91dGUgYW5kIHJlcXVlc3RzIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgY29ycmVzcG9uZGluZyB3aXphcmQgdmlldyBmcm9tIG91aS1zZXJ2ZXIuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIE5vIGBkYXNoYm9hcmRgIHByb3Agb24gVmlld0NvbnRhaW5lciDigJQgdGhhdFxuICAgICAgICAgICAgICAgICAgICAgICAgc2xvdCBvbmx5IHJlbmRlcnMgZm9yIHZpZXdJZCA9PT0gJ2Rhc2hib2FyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBwdWxsaW5nIFBvcnRhbERhc2hib2FyZCBjaHJvbWUgaW50byB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuYXV0aGVudGljYXRlZCByZWdpc3RlciBmbG93IHdvdWxkIGVpdGhlclxuICAgICAgICAgICAgICAgICAgICAgICAgTlBFIG9yIHdyYXAgdGhlIGZvcm0gaW4gYXV0aGVudGljYXRlZCBVSS4gKi99XG4gICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPScvcmVnaXN0ZXIvOnR5cGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50PXs8UmVnaXN0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Um9vdD17cHJvcHMuY29udGV4dFJvb3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbENvbmZpZz17cHJvcHMuaW1wbENvbmZpZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD0nOmlkJyBlbGVtZW50PXs8Vmlld0NvbnRhaW5lci8+fS8+XG4gICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgIHsvKiBMZWdhY3kgc2luZ2xlLXNlZ21lbnQgL3JlZ2lzdGVyLzppZCByb3V0ZSDigJQga2VwdCBmb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2t3YXJkcy1jb21wYXQgZHVyaW5nIHRoZSByb2xsb3V0IHdpbmRvdyBzbyBhbnlcbiAgICAgICAgICAgICAgICAgICAgICAgIGluLWZsaWdodCBVUkxzIHN0aWxsIHJlc29sdmUuIERyb3BzIHRoZSB0eXBlIHNlZ21lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBkZWZhdWx0cyB0byAndmVuZG9yJyBpbnNpZGUgUmVnaXN0ZXJJbnRlcmFjdGlvblBvcnRhbC4gKi99XG4gICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPScvcmVnaXN0ZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50PXs8UmVnaXN0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0Um9vdD17cHJvcHMuY29udGV4dFJvb3R9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbENvbmZpZz17cHJvcHMuaW1wbENvbmZpZ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Um91dGUgcGF0aD0nOmlkJyBlbGVtZW50PXs8Vmlld0NvbnRhaW5lci8+fS8+XG4gICAgICAgICAgICAgICAgICAgIDwvUm91dGU+XG4gICAgICAgICAgICAgICAgICAgIDxSb3V0ZSBwYXRoPScvbG9naW4nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50PXs8TG9naW4gdXJsPXtsb2NhdGlvbiArIHByb3BzLmNvbnRleHRSb290ICsgcHJvcHMuaW1wbENvbmZpZy5hdXRoVXJsICsgXCIvbG9naW5cIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPXsncmdiYSgwLCAwLCAwLCAwLjY1KSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPXtwcm9wcy5pbXBsQ29uZmlnLmxvZ2luVGV4dENvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlckxvZ289e3Byb3BzLmltcGxDb25maWcuZm9vdGVyTG9nb31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJUZXh0PXtwcm9wcy5pbXBsQ29uZmlnLmZvb3RlclRleHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyV2lkdGg9e3Byb3BzLmZvb3RlcldpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlclNwbGl0dGVyQ29sb3I9e3Byb3BzLmltcGxDb25maWcuZm9vdGVyU3BsaXR0ZXJDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17cHJvcHMuaW1wbENvbmZpZy5sb2dpblRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlQ29sb3I9e3Byb3BzLmltcGxDb25maWcudGl0bGVDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dvPXtwcm9wcy5pbXBsQ29uZmlnLmFwcExvZ299XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAvPn1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPFJvdXRlIHBhdGg9Jy9mb3Jnb3QtcGFzc3dvcmQnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50PXs8Rm9yZ290UGFzc3dvcmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw9e2xvY2F0aW9uICsgcHJvcHMuY29udGV4dFJvb3QgKyBwcm9wcy5pbXBsQ29uZmlnLmF1dGhVcmwgKyBcIi9wYXNzd29yZC9mb3Jnb3RcIn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kPXsncmdiYSgwLCAwLCAwLCAwLjY1KSd9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENvbG9yPXtwcm9wcy5pbXBsQ29uZmlnLmxvZ2luVGV4dENvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlckxvZ289e3Byb3BzLmltcGxDb25maWcuZm9vdGVyTG9nb31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJUZXh0PXtwcm9wcy5pbXBsQ29uZmlnLmZvb3RlclRleHR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyV2lkdGg9e3Byb3BzLmZvb3RlcldpZHRofVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlclNwbGl0dGVyQ29sb3I9e3Byb3BzLmltcGxDb25maWcuZm9vdGVyU3BsaXR0ZXJDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17cHJvcHMuaW1wbENvbmZpZy5sb2dpblRpdGxlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlQ29sb3I9e3Byb3BzLmltcGxDb25maWcudGl0bGVDb2xvcn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dvPXtwcm9wcy5pbXBsQ29uZmlnLmFwcExvZ299XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAvPn1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPFJvdXRlIGV4YWN0IHBhdGg9Jy9yZXNldC1wYXNzd29yZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ9ezxSZXNldFBhc3N3b3JkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsPXtsb2NhdGlvbiArIHByb3BzLmNvbnRleHRSb290ICsgcHJvcHMuaW1wbENvbmZpZy5hdXRoVXJsICsgXCIvcGFzc3dvcmQvY29uZmlybUZvcmdvdFwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ9eydyZ2JhKDAsIDAsIDAsIDAuNjUpJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9e3Byb3BzLmltcGxDb25maWcubG9naW5UZXh0Q29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyTG9nbz17cHJvcHMuaW1wbENvbmZpZy5mb290ZXJMb2dvfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlclRleHQ9e3Byb3BzLmltcGxDb25maWcuZm9vdGVyVGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJXaWR0aD17cHJvcHMuZm9vdGVyV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyU3BsaXR0ZXJDb2xvcj17cHJvcHMuaW1wbENvbmZpZy5mb290ZXJTcGxpdHRlckNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtwcm9wcy5pbXBsQ29uZmlnLmxvZ2luVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVDb2xvcj17cHJvcHMuaW1wbENvbmZpZy50aXRsZUNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ289e3Byb3BzLmltcGxDb25maWcuYXBwTG9nb31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8Um91dGUgZXhhY3QgcGF0aD0nL2NoYW5nZS1wYXNzd29yZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ9ezxDaGFuZ2VQYXNzd29yZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybD17bG9jYXRpb24gKyBwcm9wcy5jb250ZXh0Um9vdCArIHByb3BzLmltcGxDb25maWcuYXV0aFVybCArIFwiL3Bhc3N3b3JkL2NoYWxsZW5nZVwifVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ9eydyZ2JhKDAsIDAsIDAsIDAuNjUpJ31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Q29sb3I9e3Byb3BzLmltcGxDb25maWcubG9naW5UZXh0Q29sb3J9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyTG9nbz17cHJvcHMuaW1wbENvbmZpZy5mb290ZXJMb2dvfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvb3RlclRleHQ9e3Byb3BzLmltcGxDb25maWcuZm9vdGVyVGV4dH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb290ZXJXaWR0aD17cHJvcHMuZm9vdGVyV2lkdGh9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9vdGVyU3BsaXR0ZXJDb2xvcj17cHJvcHMuaW1wbENvbmZpZy5mb290ZXJTcGxpdHRlckNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXtwcm9wcy5pbXBsQ29uZmlnLmxvZ2luVGl0bGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVDb2xvcj17cHJvcHMuaW1wbENvbmZpZy50aXRsZUNvbG9yfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ289e3Byb3BzLmltcGxDb25maWcuYXBwTG9nb31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvUm91dGVzPlxuICAgICAgICAgICAgPC9UaGVtZVByb3ZpZGVyPlxuICAgICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEludGVyYWN0aW9uUG9ydGFsQXBwO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQUEsT0FBQTtBQUNBLElBQUFDLHVCQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxvQkFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsbUJBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLG9CQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSywwQkFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sU0FBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sY0FBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsY0FBQSxHQUFBVCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVMsZUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsZ0JBQUEsR0FBQVgsc0JBQUEsQ0FBQUMsT0FBQTtBQUFxRCxTQUFBRCx1QkFBQVksQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUVyRCxNQUFNRyxRQUFRLEdBQUdDLE1BQU0sQ0FBQ0QsUUFBUSxDQUFDRSxRQUFRLEdBQUcsSUFBSSxHQUFHRCxNQUFNLENBQUNELFFBQVEsQ0FBQ0csUUFBUTtBQUMzRSxNQUFNQyxZQUFZLEdBQUcsSUFBQUMscUJBQVcsRUFBQztFQUN6QkMsT0FBTyxFQUFFO0lBQ0xDLE9BQU8sRUFBRTtNQUNMQyxJQUFJLEVBQUU7SUFDVixDQUFDO0lBQ0RDLFNBQVMsRUFBRTtNQUNQRCxJQUFJLEVBQUU7SUFDVixDQUFDO0lBQ0RFLEtBQUssRUFBRTtNQUNIRixJQUFJLEVBQUU7SUFDVjtFQUNKO0FBQ0osQ0FDSixDQUFDO0FBRUQsTUFBTUcsb0JBQW9CLEdBQUlDLEtBQUssSUFBSztFQUVwQyxNQUFNQyxRQUFRLEdBQUcsSUFBQUMsMkJBQVcsRUFBQyxDQUFDO0VBRTlCQyxjQUFLLENBQUNDLFNBQVMsQ0FDWCxNQUFNO0lBQ0Y7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsTUFBTUMsV0FBVyxHQUFHLENBQ2hCLGlCQUFpQixFQUNqQixRQUFRLEVBQ1Isa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixXQUFXLENBQ2Q7SUFDRCxNQUFNQyxJQUFJLEdBQUdqQixNQUFNLENBQUNELFFBQVEsQ0FBQ21CLFFBQVE7SUFDckMsTUFBTUMsUUFBUSxHQUFHSCxXQUFXLENBQUNJLElBQUksQ0FBQ0MsQ0FBQyxJQUFJSixJQUFJLEtBQUtJLENBQUMsSUFBSUosSUFBSSxDQUFDSyxVQUFVLENBQUNELENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUM5RSxJQUFJLENBQUNGLFFBQVEsRUFBRTtNQUNYUCxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQ2pCO0VBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVWLG9CQUNRN0IsTUFBQSxDQUFBZSxPQUFBLENBQUF5QixhQUFBLENBQUMvQixjQUFBLENBQUFNLE9BQWE7SUFBQzBCLEtBQUssRUFBRXJCO0VBQWEsZ0JBQy9CcEIsTUFBQSxDQUFBZSxPQUFBLENBQUF5QixhQUFBLENBQUM3QixlQUFBLENBQUErQixNQUFNLHFCQUNIMUMsTUFBQSxDQUFBZSxPQUFBLENBQUF5QixhQUFBLENBQUM3QixlQUFBLENBQUFnQyxLQUFLO0lBQUNULElBQUksRUFBQyxHQUFHO0lBQUNVLE9BQU8sRUFBRWhCLEtBQUssQ0FBQ2lCO0VBQUssZ0JBQ2hDN0MsTUFBQSxDQUFBZSxPQUFBLENBQUF5QixhQUFBLENBQUM3QixlQUFBLENBQUFnQyxLQUFLO0lBQUNULElBQUksRUFBQyxVQUFVO0lBQUNVLE9BQU8sZUFBRTVDLE1BQUEsQ0FBQWUsT0FBQSxDQUFBeUIsYUFBQSxDQUFDOUIsY0FBQSxDQUFBSyxPQUFhO01BQUMrQixTQUFTLGVBQUU5QyxNQUFBLENBQUFlLE9BQUEsQ0FBQXlCLGFBQUEsQ0FBQzVCLGdCQUFBLENBQUFHLE9BQWU7UUFBQ2dDLEdBQUcsZUFBRWhCLGNBQUssQ0FBQ2lCLFNBQVMsQ0FBQztNQUFFLENBQUM7SUFBRSxDQUFDO0VBQUUsQ0FBQyxDQUN0RyxDQUFDLGVBaUJSaEQsTUFBQSxDQUFBZSxPQUFBLENBQUF5QixhQUFBLENBQUM3QixlQUFBLENBQUFnQyxLQUFLO0lBQUNULElBQUksRUFBQyxpQkFBaUI7SUFDdEJVLE9BQU8sZUFBRTVDLE1BQUEsQ0FBQWUsT0FBQSxDQUFBeUIsYUFBQSxDQUFDakMsMEJBQUEsQ0FBQVEsT0FBUTtNQUNka0MsV0FBVyxFQUFFckIsS0FBSyxDQUFDcUIsV0FBWTtNQUMvQkMsVUFBVSxFQUFFdEIsS0FBSyxDQUFDc0I7SUFBVyxDQUNoQztFQUFFLGdCQUVObEQsTUFBQSxDQUFBZSxPQUFBLENBQUF5QixhQUFBLENBQUM3QixlQUFBLENBQUFnQyxLQUFLO0lBQUNULElBQUksRUFBQyxLQUFLO0lBQUNVLE9BQU8sZUFBRTVDLE1BQUEsQ0FBQWUsT0FBQSxDQUFBeUIsYUFBQSxDQUFDOUIsY0FBQSxDQUFBSyxPQUFhLE1BQUM7RUFBRSxDQUFDLENBQzFDLENBQUMsZUFLUmYsTUFBQSxDQUFBZSxPQUFBLENBQUF5QixhQUFBLENBQUM3QixlQUFBLENBQUFnQyxLQUFLO0lBQUNULElBQUksRUFBQyxXQUFXO0lBQ2hCVSxPQUFPLGVBQUU1QyxNQUFBLENBQUFlLE9BQUEsQ0FBQXlCLGFBQUEsQ0FBQ2pDLDBCQUFBLENBQUFRLE9BQVE7TUFDZGtDLFdBQVcsRUFBRXJCLEtBQUssQ0FBQ3FCLFdBQVk7TUFDL0JDLFVBQVUsRUFBRXRCLEtBQUssQ0FBQ3NCO0lBQVcsQ0FDaEM7RUFBRSxnQkFFTmxELE1BQUEsQ0FBQWUsT0FBQSxDQUFBeUIsYUFBQSxDQUFDN0IsZUFBQSxDQUFBZ0MsS0FBSztJQUFDVCxJQUFJLEVBQUMsS0FBSztJQUFDVSxPQUFPLGVBQUU1QyxNQUFBLENBQUFlLE9BQUEsQ0FBQXlCLGFBQUEsQ0FBQzlCLGNBQUEsQ0FBQUssT0FBYSxNQUFDO0VBQUUsQ0FBQyxDQUMxQyxDQUFDLGVBQ1JmLE1BQUEsQ0FBQWUsT0FBQSxDQUFBeUIsYUFBQSxDQUFDN0IsZUFBQSxDQUFBZ0MsS0FBSztJQUFDVCxJQUFJLEVBQUMsUUFBUTtJQUNiVSxPQUFPLGVBQUU1QyxNQUFBLENBQUFlLE9BQUEsQ0FBQXlCLGFBQUEsQ0FBQ3JDLHVCQUFBLENBQUFZLE9BQUs7TUFBQ29DLEdBQUcsRUFBRW5DLFFBQVEsR0FBR1ksS0FBSyxDQUFDcUIsV0FBVyxHQUFHckIsS0FBSyxDQUFDc0IsVUFBVSxDQUFDRSxPQUFPLEdBQUcsUUFBUztNQUN4RUMsVUFBVSxFQUFFLHFCQUFzQjtNQUNsQ0MsU0FBUyxFQUFFMUIsS0FBSyxDQUFDc0IsVUFBVSxDQUFDSyxjQUFlO01BQzNDQyxVQUFVLEVBQUU1QixLQUFLLENBQUNzQixVQUFVLENBQUNNLFVBQVc7TUFDeENDLFVBQVUsRUFBRTdCLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ08sVUFBVztNQUN4Q0MsV0FBVyxFQUFFOUIsS0FBSyxDQUFDOEIsV0FBWTtNQUMvQkMsbUJBQW1CLEVBQUUvQixLQUFLLENBQUNzQixVQUFVLENBQUNTLG1CQUFvQjtNQUMxREMsS0FBSyxFQUFFaEMsS0FBSyxDQUFDc0IsVUFBVSxDQUFDVyxVQUFXO01BQ25DQyxVQUFVLEVBQUVsQyxLQUFLLENBQUNzQixVQUFVLENBQUNZLFVBQVc7TUFDeENDLElBQUksRUFBRW5DLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ2M7SUFBUSxDQUM5QztFQUFFLENBQ1QsQ0FBQyxlQUNGaEUsTUFBQSxDQUFBZSxPQUFBLENBQUF5QixhQUFBLENBQUM3QixlQUFBLENBQUFnQyxLQUFLO0lBQUNULElBQUksRUFBQyxrQkFBa0I7SUFDdkJVLE9BQU8sZUFBRTVDLE1BQUEsQ0FBQWUsT0FBQSxDQUFBeUIsYUFBQSxDQUFDcEMsb0JBQUEsQ0FBQVcsT0FBYztNQUNwQm9DLEdBQUcsRUFBRW5DLFFBQVEsR0FBR1ksS0FBSyxDQUFDcUIsV0FBVyxHQUFHckIsS0FBSyxDQUFDc0IsVUFBVSxDQUFDRSxPQUFPLEdBQUcsa0JBQW1CO01BQ2xGQyxVQUFVLEVBQUUscUJBQXNCO01BQ2xDQyxTQUFTLEVBQUUxQixLQUFLLENBQUNzQixVQUFVLENBQUNLLGNBQWU7TUFDM0NDLFVBQVUsRUFBRTVCLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ00sVUFBVztNQUN4Q0MsVUFBVSxFQUFFN0IsS0FBSyxDQUFDc0IsVUFBVSxDQUFDTyxVQUFXO01BQ3hDQyxXQUFXLEVBQUU5QixLQUFLLENBQUM4QixXQUFZO01BQy9CQyxtQkFBbUIsRUFBRS9CLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ1MsbUJBQW9CO01BQzFEQyxLQUFLLEVBQUVoQyxLQUFLLENBQUNzQixVQUFVLENBQUNXLFVBQVc7TUFDbkNDLFVBQVUsRUFBRWxDLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ1ksVUFBVztNQUN4Q0MsSUFBSSxFQUFFbkMsS0FBSyxDQUFDc0IsVUFBVSxDQUFDYztJQUFRLENBQ2xDO0VBQUUsQ0FDVCxDQUFDLGVBQ0ZoRSxNQUFBLENBQUFlLE9BQUEsQ0FBQXlCLGFBQUEsQ0FBQzdCLGVBQUEsQ0FBQWdDLEtBQUs7SUFBQ3NCLEtBQUs7SUFBQy9CLElBQUksRUFBQyxpQkFBaUI7SUFDNUJVLE9BQU8sZUFBRTVDLE1BQUEsQ0FBQWUsT0FBQSxDQUFBeUIsYUFBQSxDQUFDbkMsbUJBQUEsQ0FBQVUsT0FBYTtNQUNuQm9DLEdBQUcsRUFBRW5DLFFBQVEsR0FBR1ksS0FBSyxDQUFDcUIsV0FBVyxHQUFHckIsS0FBSyxDQUFDc0IsVUFBVSxDQUFDRSxPQUFPLEdBQUcseUJBQTBCO01BQ3pGQyxVQUFVLEVBQUUscUJBQXNCO01BQ2xDQyxTQUFTLEVBQUUxQixLQUFLLENBQUNzQixVQUFVLENBQUNLLGNBQWU7TUFDM0NDLFVBQVUsRUFBRTVCLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ00sVUFBVztNQUN4Q0MsVUFBVSxFQUFFN0IsS0FBSyxDQUFDc0IsVUFBVSxDQUFDTyxVQUFXO01BQ3hDQyxXQUFXLEVBQUU5QixLQUFLLENBQUM4QixXQUFZO01BQy9CQyxtQkFBbUIsRUFBRS9CLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ1MsbUJBQW9CO01BQzFEQyxLQUFLLEVBQUVoQyxLQUFLLENBQUNzQixVQUFVLENBQUNXLFVBQVc7TUFDbkNDLFVBQVUsRUFBRWxDLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ1ksVUFBVztNQUN4Q0MsSUFBSSxFQUFFbkMsS0FBSyxDQUFDc0IsVUFBVSxDQUFDYztJQUFRLENBQ2xDO0VBQUUsQ0FDVCxDQUFDLGVBQ0ZoRSxNQUFBLENBQUFlLE9BQUEsQ0FBQXlCLGFBQUEsQ0FBQzdCLGVBQUEsQ0FBQWdDLEtBQUs7SUFBQ3NCLEtBQUs7SUFBQy9CLElBQUksRUFBQyxrQkFBa0I7SUFDN0JVLE9BQU8sZUFBRTVDLE1BQUEsQ0FBQWUsT0FBQSxDQUFBeUIsYUFBQSxDQUFDbEMsb0JBQUEsQ0FBQVMsT0FBYztNQUNwQm9DLEdBQUcsRUFBRW5DLFFBQVEsR0FBR1ksS0FBSyxDQUFDcUIsV0FBVyxHQUFHckIsS0FBSyxDQUFDc0IsVUFBVSxDQUFDRSxPQUFPLEdBQUcscUJBQXNCO01BQ3JGQyxVQUFVLEVBQUUscUJBQXNCO01BQ2xDQyxTQUFTLEVBQUUxQixLQUFLLENBQUNzQixVQUFVLENBQUNLLGNBQWU7TUFDM0NDLFVBQVUsRUFBRTVCLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ00sVUFBVztNQUN4Q0MsVUFBVSxFQUFFN0IsS0FBSyxDQUFDc0IsVUFBVSxDQUFDTyxVQUFXO01BQ3hDQyxXQUFXLEVBQUU5QixLQUFLLENBQUM4QixXQUFZO01BQy9CQyxtQkFBbUIsRUFBRS9CLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ1MsbUJBQW9CO01BQzFEQyxLQUFLLEVBQUVoQyxLQUFLLENBQUNzQixVQUFVLENBQUNXLFVBQVc7TUFDbkNDLFVBQVUsRUFBRWxDLEtBQUssQ0FBQ3NCLFVBQVUsQ0FBQ1ksVUFBVztNQUN4Q0MsSUFBSSxFQUFFbkMsS0FBSyxDQUFDc0IsVUFBVSxDQUFDYztJQUFRLENBQ2xDO0VBQUUsQ0FDVCxDQUNHLENBQ0csQ0FBQztBQUU1QixDQUFDO0FBQUEsSUFBQUUsUUFBQSxHQUFBQyxPQUFBLENBQUFwRCxPQUFBLEdBRWNZLG9CQUFvQiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _Utils = _interopRequireDefault(require("../Utils"));
9
+ var _Observable = _interopRequireDefault(require("../event/Observable"));
10
+ var _Event = _interopRequireDefault(require("../event/Event"));
11
+ var _EventType = _interopRequireDefault(require("../event/EventType"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ /**
14
+ * CDUI-wrapped Cloudflare Turnstile widget. Drops the widget into a
15
+ * layout the same way any other CDUI component does and exposes the
16
+ * resolved challenge token through {@code handle.api.value}, so view
17
+ * authors can reference it from other components / service calls via
18
+ * {@code @#{turnstile}.value} when wiring up an httpParameterType.
19
+ *
20
+ * <p>Loads Cloudflare's vendor script lazily on first mount. The script
21
+ * defines {@code window.turnstile} which exposes {@code render()} —
22
+ * we render explicitly (not auto-render via class="cf-turnstile") so
23
+ * the React lifecycle can issue a {@code reset} when the parent view
24
+ * re-mounts.
25
+ *
26
+ * <p>Site key is sourced from {@code REACT_APP_TURNSTILE_SITE_KEY} at
27
+ * build time (matches the project's existing REACT_APP_* convention),
28
+ * NOT from CDUI JSON — view authors shouldn't have to know the key.
29
+ * For dev, hostname {@code localhost} is explicitly supported by
30
+ * Cloudflare so the same env var can be used unchanged.
31
+ */
32
+ const TURNSTILE_SCRIPT_URL = 'https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit';
33
+
34
+ // Cloudflare Turnstile's "site key" is intentionally public (it's the
35
+ // publishable identifier, analogous to Stripe's publishable key) and
36
+ // is hostname-bound on the Cloudflare side, so leaking it can't be
37
+ // used against other domains. Even so, sourcing it from an env var
38
+ // keeps dev/staging/prod swappable without a code change — same shape
39
+ // the codebase already uses for REACT_APP_DOCS_API_HOST etc. Set
40
+ // REACT_APP_TURNSTILE_SITE_KEY per environment.
41
+ const SITE_KEY = process.env.REACT_APP_TURNSTILE_SITE_KEY;
42
+ let scriptLoadPromise = null;
43
+ const loadTurnstileScript = () => {
44
+ if (scriptLoadPromise) {
45
+ return scriptLoadPromise;
46
+ }
47
+ if (typeof window !== 'undefined' && window.turnstile) {
48
+ scriptLoadPromise = Promise.resolve();
49
+ return scriptLoadPromise;
50
+ }
51
+ scriptLoadPromise = new Promise((resolve, reject) => {
52
+ const script = document.createElement('script');
53
+ script.src = TURNSTILE_SCRIPT_URL;
54
+ script.async = true;
55
+ script.defer = true;
56
+ script.onload = () => resolve();
57
+ script.onerror = e => {
58
+ scriptLoadPromise = null; // allow retry next mount
59
+ reject(e);
60
+ };
61
+ document.head.appendChild(script);
62
+ });
63
+ return scriptLoadPromise;
64
+ };
65
+ const Turnstile = /*#__PURE__*/_react.default.memo(props => {
66
+ const containerRef = _react.default.useRef(null);
67
+ const widgetIdRef = _react.default.useRef(null);
68
+ const [token, setToken] = _react.default.useState(null);
69
+ _react.default.useEffect(() => {
70
+ props.handle.api = api();
71
+ });
72
+ _react.default.useEffect(() => {
73
+ const parsedConfig = _Utils.default.parseConfig(props.config, props.viewId);
74
+ _Observable.default.addSubscriptions(parsedConfig.eventHandlingConfig, props.handle, props.viewId);
75
+ _Observable.default.addSystemSubscriptions(props.viewId, parsedConfig);
76
+ if (!SITE_KEY) {
77
+ console.error('Turnstile: REACT_APP_TURNSTILE_SITE_KEY env var is not set — the widget will not render');
78
+ return;
79
+ }
80
+ let cancelled = false;
81
+ loadTurnstileScript().then(() => {
82
+ if (cancelled || !containerRef.current || !window.turnstile) {
83
+ return;
84
+ }
85
+ widgetIdRef.current = window.turnstile.render(containerRef.current, {
86
+ sitekey: SITE_KEY,
87
+ callback: newToken => {
88
+ setToken(newToken);
89
+ const event = new _Event.default(props.handle, props.viewId, newToken);
90
+ _Observable.default.fireEvent(_EventType.default.VALUE_CHANGE, event);
91
+ },
92
+ 'error-callback': () => {
93
+ setToken(null);
94
+ },
95
+ 'expired-callback': () => {
96
+ setToken(null);
97
+ }
98
+ });
99
+ }).catch(e => console.error('Turnstile: failed to load vendor script', e));
100
+
101
+ // Fire COMPONENT_LOAD so any view-level eventHandlingConfig keyed
102
+ // on the turnstile component's load can hook in (mirrors the
103
+ // pattern used by HtmlPanel / other CDUI components).
104
+ const loadEvent = new _Event.default(props.handle, props.viewId, null);
105
+ _Observable.default.fireEvent(_EventType.default.COMPONENT_LOAD, loadEvent);
106
+ return () => {
107
+ cancelled = true;
108
+ if (widgetIdRef.current && window.turnstile) {
109
+ try {
110
+ window.turnstile.remove(widgetIdRef.current);
111
+ } catch (e) {
112
+ // turnstile.remove throws if the widget id is unknown
113
+ // (e.g. script unloaded mid-cleanup) — safe to ignore.
114
+ }
115
+ widgetIdRef.current = null;
116
+ }
117
+ _Observable.default.clearComponentEventListeners(props.handle);
118
+ };
119
+ }, []);
120
+ const api = () => ({
121
+ get id() {
122
+ return props.config.id;
123
+ },
124
+ // The challenge token the backend siteverifies against. Null
125
+ // before the widget resolves; CDUI service-call wiring should
126
+ // guard with `nullable: false` so submit can't fire pre-solve.
127
+ get value() {
128
+ return token;
129
+ },
130
+ getChildren: () => [],
131
+ // Allows callers to manually reset the widget after a backend
132
+ // rejection — e.g. a 403 from siteverify. Token is consumed per
133
+ // call; resetting re-issues a fresh one.
134
+ reset: () => {
135
+ if (widgetIdRef.current && window.turnstile) {
136
+ window.turnstile.reset(widgetIdRef.current);
137
+ setToken(null);
138
+ }
139
+ },
140
+ refresh: () => {}
141
+ });
142
+ return /*#__PURE__*/_react.default.createElement("div", {
143
+ style: _Utils.default.mergeStyles({
144
+ margin: '8px 0'
145
+ }, props.config)
146
+ }, /*#__PURE__*/_react.default.createElement("div", {
147
+ ref: containerRef
148
+ }));
149
+ });
150
+ var _default = exports.default = Turnstile;
151
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9PYnNlcnZhYmxlIiwiX0V2ZW50IiwiX0V2ZW50VHlwZSIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIlRVUk5TVElMRV9TQ1JJUFRfVVJMIiwiU0lURV9LRVkiLCJwcm9jZXNzIiwiZW52IiwiUkVBQ1RfQVBQX1RVUk5TVElMRV9TSVRFX0tFWSIsInNjcmlwdExvYWRQcm9taXNlIiwibG9hZFR1cm5zdGlsZVNjcmlwdCIsIndpbmRvdyIsInR1cm5zdGlsZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2NyaXB0IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwic3JjIiwiYXN5bmMiLCJkZWZlciIsIm9ubG9hZCIsIm9uZXJyb3IiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJUdXJuc3RpbGUiLCJSZWFjdCIsIm1lbW8iLCJwcm9wcyIsImNvbnRhaW5lclJlZiIsInVzZVJlZiIsIndpZGdldElkUmVmIiwidG9rZW4iLCJzZXRUb2tlbiIsInVzZVN0YXRlIiwidXNlRWZmZWN0IiwiaGFuZGxlIiwiYXBpIiwicGFyc2VkQ29uZmlnIiwiVXRpbHMiLCJwYXJzZUNvbmZpZyIsImNvbmZpZyIsInZpZXdJZCIsImV2ZW50TWFuYWdlciIsImFkZFN1YnNjcmlwdGlvbnMiLCJldmVudEhhbmRsaW5nQ29uZmlnIiwiYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyIsImNvbnNvbGUiLCJlcnJvciIsImNhbmNlbGxlZCIsInRoZW4iLCJjdXJyZW50IiwicmVuZGVyIiwic2l0ZWtleSIsImNhbGxiYWNrIiwibmV3VG9rZW4iLCJldmVudCIsIkV2ZW50IiwiZmlyZUV2ZW50IiwiRXZlbnRUeXBlIiwiVkFMVUVfQ0hBTkdFIiwiZXJyb3ItY2FsbGJhY2siLCJleHBpcmVkLWNhbGxiYWNrIiwiY2F0Y2giLCJsb2FkRXZlbnQiLCJDT01QT05FTlRfTE9BRCIsInJlbW92ZSIsImNsZWFyQ29tcG9uZW50RXZlbnRMaXN0ZW5lcnMiLCJpZCIsInZhbHVlIiwiZ2V0Q2hpbGRyZW4iLCJyZXNldCIsInJlZnJlc2giLCJzdHlsZSIsIm1lcmdlU3R5bGVzIiwibWFyZ2luIiwicmVmIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL1R1cm5zdGlsZS5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBVdGlscyBmcm9tICcuLi9VdGlscyc7XG5pbXBvcnQgZXZlbnRNYW5hZ2VyIGZyb20gJy4uL2V2ZW50L09ic2VydmFibGUnO1xuaW1wb3J0IEV2ZW50IGZyb20gJy4uL2V2ZW50L0V2ZW50JztcbmltcG9ydCBFdmVudFR5cGUgZnJvbSAnLi4vZXZlbnQvRXZlbnRUeXBlJztcblxuLyoqXG4gKiBDRFVJLXdyYXBwZWQgQ2xvdWRmbGFyZSBUdXJuc3RpbGUgd2lkZ2V0LiBEcm9wcyB0aGUgd2lkZ2V0IGludG8gYVxuICogbGF5b3V0IHRoZSBzYW1lIHdheSBhbnkgb3RoZXIgQ0RVSSBjb21wb25lbnQgZG9lcyBhbmQgZXhwb3NlcyB0aGVcbiAqIHJlc29sdmVkIGNoYWxsZW5nZSB0b2tlbiB0aHJvdWdoIHtAY29kZSBoYW5kbGUuYXBpLnZhbHVlfSwgc28gdmlld1xuICogYXV0aG9ycyBjYW4gcmVmZXJlbmNlIGl0IGZyb20gb3RoZXIgY29tcG9uZW50cyAvIHNlcnZpY2UgY2FsbHMgdmlhXG4gKiB7QGNvZGUgQCN7dHVybnN0aWxlfS52YWx1ZX0gd2hlbiB3aXJpbmcgdXAgYW4gaHR0cFBhcmFtZXRlclR5cGUuXG4gKlxuICogPHA+TG9hZHMgQ2xvdWRmbGFyZSdzIHZlbmRvciBzY3JpcHQgbGF6aWx5IG9uIGZpcnN0IG1vdW50LiBUaGUgc2NyaXB0XG4gKiBkZWZpbmVzIHtAY29kZSB3aW5kb3cudHVybnN0aWxlfSB3aGljaCBleHBvc2VzIHtAY29kZSByZW5kZXIoKX0g4oCUXG4gKiB3ZSByZW5kZXIgZXhwbGljaXRseSAobm90IGF1dG8tcmVuZGVyIHZpYSBjbGFzcz1cImNmLXR1cm5zdGlsZVwiKSBzb1xuICogdGhlIFJlYWN0IGxpZmVjeWNsZSBjYW4gaXNzdWUgYSB7QGNvZGUgcmVzZXR9IHdoZW4gdGhlIHBhcmVudCB2aWV3XG4gKiByZS1tb3VudHMuXG4gKlxuICogPHA+U2l0ZSBrZXkgaXMgc291cmNlZCBmcm9tIHtAY29kZSBSRUFDVF9BUFBfVFVSTlNUSUxFX1NJVEVfS0VZfSBhdFxuICogYnVpbGQgdGltZSAobWF0Y2hlcyB0aGUgcHJvamVjdCdzIGV4aXN0aW5nIFJFQUNUX0FQUF8qIGNvbnZlbnRpb24pLFxuICogTk9UIGZyb20gQ0RVSSBKU09OIOKAlCB2aWV3IGF1dGhvcnMgc2hvdWxkbid0IGhhdmUgdG8ga25vdyB0aGUga2V5LlxuICogRm9yIGRldiwgaG9zdG5hbWUge0Bjb2RlIGxvY2FsaG9zdH0gaXMgZXhwbGljaXRseSBzdXBwb3J0ZWQgYnlcbiAqIENsb3VkZmxhcmUgc28gdGhlIHNhbWUgZW52IHZhciBjYW4gYmUgdXNlZCB1bmNoYW5nZWQuXG4gKi9cbmNvbnN0IFRVUk5TVElMRV9TQ1JJUFRfVVJMID0gJ2h0dHBzOi8vY2hhbGxlbmdlcy5jbG91ZGZsYXJlLmNvbS90dXJuc3RpbGUvdjAvYXBpLmpzP3JlbmRlcj1leHBsaWNpdCc7XG5cbi8vIENsb3VkZmxhcmUgVHVybnN0aWxlJ3MgXCJzaXRlIGtleVwiIGlzIGludGVudGlvbmFsbHkgcHVibGljIChpdCdzIHRoZVxuLy8gcHVibGlzaGFibGUgaWRlbnRpZmllciwgYW5hbG9nb3VzIHRvIFN0cmlwZSdzIHB1Ymxpc2hhYmxlIGtleSkgYW5kXG4vLyBpcyBob3N0bmFtZS1ib3VuZCBvbiB0aGUgQ2xvdWRmbGFyZSBzaWRlLCBzbyBsZWFraW5nIGl0IGNhbid0IGJlXG4vLyB1c2VkIGFnYWluc3Qgb3RoZXIgZG9tYWlucy4gRXZlbiBzbywgc291cmNpbmcgaXQgZnJvbSBhbiBlbnYgdmFyXG4vLyBrZWVwcyBkZXYvc3RhZ2luZy9wcm9kIHN3YXBwYWJsZSB3aXRob3V0IGEgY29kZSBjaGFuZ2Ug4oCUIHNhbWUgc2hhcGVcbi8vIHRoZSBjb2RlYmFzZSBhbHJlYWR5IHVzZXMgZm9yIFJFQUNUX0FQUF9ET0NTX0FQSV9IT1NUIGV0Yy4gU2V0XG4vLyBSRUFDVF9BUFBfVFVSTlNUSUxFX1NJVEVfS0VZIHBlciBlbnZpcm9ubWVudC5cbmNvbnN0IFNJVEVfS0VZID0gcHJvY2Vzcy5lbnYuUkVBQ1RfQVBQX1RVUk5TVElMRV9TSVRFX0tFWTtcblxubGV0IHNjcmlwdExvYWRQcm9taXNlID0gbnVsbDtcbmNvbnN0IGxvYWRUdXJuc3RpbGVTY3JpcHQgPSAoKSA9PiB7XG4gICAgaWYgKHNjcmlwdExvYWRQcm9taXNlKSB7XG4gICAgICAgIHJldHVybiBzY3JpcHRMb2FkUHJvbWlzZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy50dXJuc3RpbGUpIHtcbiAgICAgICAgc2NyaXB0TG9hZFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgcmV0dXJuIHNjcmlwdExvYWRQcm9taXNlO1xuICAgIH1cbiAgICBzY3JpcHRMb2FkUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICAgIHNjcmlwdC5zcmMgPSBUVVJOU1RJTEVfU0NSSVBUX1VSTDtcbiAgICAgICAgc2NyaXB0LmFzeW5jID0gdHJ1ZTtcbiAgICAgICAgc2NyaXB0LmRlZmVyID0gdHJ1ZTtcbiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9ICgpID0+IHJlc29sdmUoKTtcbiAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoZSkgPT4ge1xuICAgICAgICAgICAgc2NyaXB0TG9hZFByb21pc2UgPSBudWxsOyAvLyBhbGxvdyByZXRyeSBuZXh0IG1vdW50XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgIH07XG4gICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgICB9KTtcbiAgICByZXR1cm4gc2NyaXB0TG9hZFByb21pc2U7XG59O1xuXG5jb25zdCBUdXJuc3RpbGUgPSBSZWFjdC5tZW1vKChwcm9wcykgPT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCB3aWRnZXRJZFJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgICBjb25zdCBbdG9rZW4sIHNldFRva2VuXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcHJvcHMuaGFuZGxlLmFwaSA9IGFwaSgpO1xuICAgIH0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgcGFyc2VkQ29uZmlnID0gVXRpbHMucGFyc2VDb25maWcocHJvcHMuY29uZmlnLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICBldmVudE1hbmFnZXIuYWRkU3Vic2NyaXB0aW9ucyhwYXJzZWRDb25maWcuZXZlbnRIYW5kbGluZ0NvbmZpZywgcHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICBldmVudE1hbmFnZXIuYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyhwcm9wcy52aWV3SWQsIHBhcnNlZENvbmZpZyk7XG5cbiAgICAgICAgaWYgKCFTSVRFX0tFWSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignVHVybnN0aWxlOiBSRUFDVF9BUFBfVFVSTlNUSUxFX1NJVEVfS0VZIGVudiB2YXIgaXMgbm90IHNldCDigJQgdGhlIHdpZGdldCB3aWxsIG5vdCByZW5kZXInKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjYW5jZWxsZWQgPSBmYWxzZTtcbiAgICAgICAgbG9hZFR1cm5zdGlsZVNjcmlwdCgpXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNhbmNlbGxlZCB8fCAhY29udGFpbmVyUmVmLmN1cnJlbnQgfHwgIXdpbmRvdy50dXJuc3RpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aWRnZXRJZFJlZi5jdXJyZW50ID0gd2luZG93LnR1cm5zdGlsZS5yZW5kZXIoY29udGFpbmVyUmVmLmN1cnJlbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgc2l0ZWtleTogU0lURV9LRVksXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiAobmV3VG9rZW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRva2VuKG5ld1Rva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBuZXdUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5WQUxVRV9DSEFOR0UsIGV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2Vycm9yLWNhbGxiYWNrJzogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG9rZW4obnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICdleHBpcmVkLWNhbGxiYWNrJzogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VG9rZW4obnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlKSA9PiBjb25zb2xlLmVycm9yKCdUdXJuc3RpbGU6IGZhaWxlZCB0byBsb2FkIHZlbmRvciBzY3JpcHQnLCBlKSk7XG5cbiAgICAgICAgLy8gRmlyZSBDT01QT05FTlRfTE9BRCBzbyBhbnkgdmlldy1sZXZlbCBldmVudEhhbmRsaW5nQ29uZmlnIGtleWVkXG4gICAgICAgIC8vIG9uIHRoZSB0dXJuc3RpbGUgY29tcG9uZW50J3MgbG9hZCBjYW4gaG9vayBpbiAobWlycm9ycyB0aGVcbiAgICAgICAgLy8gcGF0dGVybiB1c2VkIGJ5IEh0bWxQYW5lbCAvIG90aGVyIENEVUkgY29tcG9uZW50cykuXG4gICAgICAgIGNvbnN0IGxvYWRFdmVudCA9IG5ldyBFdmVudChwcm9wcy5oYW5kbGUsIHByb3BzLnZpZXdJZCwgbnVsbCk7XG4gICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLkNPTVBPTkVOVF9MT0FELCBsb2FkRXZlbnQpO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHdpZGdldElkUmVmLmN1cnJlbnQgJiYgd2luZG93LnR1cm5zdGlsZSkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy50dXJuc3RpbGUucmVtb3ZlKHdpZGdldElkUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdHVybnN0aWxlLnJlbW92ZSB0aHJvd3MgaWYgdGhlIHdpZGdldCBpZCBpcyB1bmtub3duXG4gICAgICAgICAgICAgICAgICAgIC8vIChlLmcuIHNjcmlwdCB1bmxvYWRlZCBtaWQtY2xlYW51cCkg4oCUIHNhZmUgdG8gaWdub3JlLlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aWRnZXRJZFJlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5jbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzKHByb3BzLmhhbmRsZSk7XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgYXBpID0gKCkgPT4gKHtcbiAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgcmV0dXJuIHByb3BzLmNvbmZpZy5pZDtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gVGhlIGNoYWxsZW5nZSB0b2tlbiB0aGUgYmFja2VuZCBzaXRldmVyaWZpZXMgYWdhaW5zdC4gTnVsbFxuICAgICAgICAvLyBiZWZvcmUgdGhlIHdpZGdldCByZXNvbHZlczsgQ0RVSSBzZXJ2aWNlLWNhbGwgd2lyaW5nIHNob3VsZFxuICAgICAgICAvLyBndWFyZCB3aXRoIGBudWxsYWJsZTogZmFsc2VgIHNvIHN1Ym1pdCBjYW4ndCBmaXJlIHByZS1zb2x2ZS5cbiAgICAgICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICB9LFxuICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4gW10sXG4gICAgICAgIC8vIEFsbG93cyBjYWxsZXJzIHRvIG1hbnVhbGx5IHJlc2V0IHRoZSB3aWRnZXQgYWZ0ZXIgYSBiYWNrZW5kXG4gICAgICAgIC8vIHJlamVjdGlvbiDigJQgZS5nLiBhIDQwMyBmcm9tIHNpdGV2ZXJpZnkuIFRva2VuIGlzIGNvbnN1bWVkIHBlclxuICAgICAgICAvLyBjYWxsOyByZXNldHRpbmcgcmUtaXNzdWVzIGEgZnJlc2ggb25lLlxuICAgICAgICByZXNldDogKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHdpZGdldElkUmVmLmN1cnJlbnQgJiYgd2luZG93LnR1cm5zdGlsZSkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy50dXJuc3RpbGUucmVzZXQod2lkZ2V0SWRSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgc2V0VG9rZW4obnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJlZnJlc2g6ICgpID0+IHt9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBzdHlsZT17VXRpbHMubWVyZ2VTdHlsZXMoe21hcmdpbjogJzhweCAwJ30sIHByb3BzLmNvbmZpZyl9PlxuICAgICAgICAgICAgPGRpdiByZWY9e2NvbnRhaW5lclJlZn0vPlxuICAgICAgICA8L2Rpdj5cbiAgICApO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IFR1cm5zdGlsZTsiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFdBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLFVBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUEyQyxTQUFBRCx1QkFBQU0sQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUUzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU1HLG9CQUFvQixHQUFHLHVFQUF1RTs7QUFFcEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNQyxRQUFRLEdBQUdDLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyw0QkFBNEI7QUFFekQsSUFBSUMsaUJBQWlCLEdBQUcsSUFBSTtBQUM1QixNQUFNQyxtQkFBbUIsR0FBR0EsQ0FBQSxLQUFNO0VBQzlCLElBQUlELGlCQUFpQixFQUFFO0lBQ25CLE9BQU9BLGlCQUFpQjtFQUM1QjtFQUNBLElBQUksT0FBT0UsTUFBTSxLQUFLLFdBQVcsSUFBSUEsTUFBTSxDQUFDQyxTQUFTLEVBQUU7SUFDbkRILGlCQUFpQixHQUFHSSxPQUFPLENBQUNDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JDLE9BQU9MLGlCQUFpQjtFQUM1QjtFQUNBQSxpQkFBaUIsR0FBRyxJQUFJSSxPQUFPLENBQUMsQ0FBQ0MsT0FBTyxFQUFFQyxNQUFNLEtBQUs7SUFDakQsTUFBTUMsTUFBTSxHQUFHQyxRQUFRLENBQUNDLGFBQWEsQ0FBQyxRQUFRLENBQUM7SUFDL0NGLE1BQU0sQ0FBQ0csR0FBRyxHQUFHZixvQkFBb0I7SUFDakNZLE1BQU0sQ0FBQ0ksS0FBSyxHQUFHLElBQUk7SUFDbkJKLE1BQU0sQ0FBQ0ssS0FBSyxHQUFHLElBQUk7SUFDbkJMLE1BQU0sQ0FBQ00sTUFBTSxHQUFHLE1BQU1SLE9BQU8sQ0FBQyxDQUFDO0lBQy9CRSxNQUFNLENBQUNPLE9BQU8sR0FBSXRCLENBQUMsSUFBSztNQUNwQlEsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLENBQUM7TUFDMUJNLE1BQU0sQ0FBQ2QsQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUNEZ0IsUUFBUSxDQUFDTyxJQUFJLENBQUNDLFdBQVcsQ0FBQ1QsTUFBTSxDQUFDO0VBQ3JDLENBQUMsQ0FBQztFQUNGLE9BQU9QLGlCQUFpQjtBQUM1QixDQUFDO0FBRUQsTUFBTWlCLFNBQVMsZ0JBQUdDLGNBQUssQ0FBQ0MsSUFBSSxDQUFFQyxLQUFLLElBQUs7RUFDcEMsTUFBTUMsWUFBWSxHQUFHSCxjQUFLLENBQUNJLE1BQU0sQ0FBQyxJQUFJLENBQUM7RUFDdkMsTUFBTUMsV0FBVyxHQUFHTCxjQUFLLENBQUNJLE1BQU0sQ0FBQyxJQUFJLENBQUM7RUFDdEMsTUFBTSxDQUFDRSxLQUFLLEVBQUVDLFFBQVEsQ0FBQyxHQUFHUCxjQUFLLENBQUNRLFFBQVEsQ0FBQyxJQUFJLENBQUM7RUFFOUNSLGNBQUssQ0FBQ1MsU0FBUyxDQUFDLE1BQU07SUFDbEJQLEtBQUssQ0FBQ1EsTUFBTSxDQUFDQyxHQUFHLEdBQUdBLEdBQUcsQ0FBQyxDQUFDO0VBQzVCLENBQUMsQ0FBQztFQUVGWCxjQUFLLENBQUNTLFNBQVMsQ0FBQyxNQUFNO0lBQ2xCLE1BQU1HLFlBQVksR0FBR0MsY0FBSyxDQUFDQyxXQUFXLENBQUNaLEtBQUssQ0FBQ2EsTUFBTSxFQUFFYixLQUFLLENBQUNjLE1BQU0sQ0FBQztJQUNsRUMsbUJBQVksQ0FBQ0MsZ0JBQWdCLENBQUNOLFlBQVksQ0FBQ08sbUJBQW1CLEVBQUVqQixLQUFLLENBQUNRLE1BQU0sRUFBRVIsS0FBSyxDQUFDYyxNQUFNLENBQUM7SUFDM0ZDLG1CQUFZLENBQUNHLHNCQUFzQixDQUFDbEIsS0FBSyxDQUFDYyxNQUFNLEVBQUVKLFlBQVksQ0FBQztJQUUvRCxJQUFJLENBQUNsQyxRQUFRLEVBQUU7TUFDWDJDLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLHlGQUF5RixDQUFDO01BQ3hHO0lBQ0o7SUFFQSxJQUFJQyxTQUFTLEdBQUcsS0FBSztJQUNyQnhDLG1CQUFtQixDQUFDLENBQUMsQ0FDaEJ5QyxJQUFJLENBQUMsTUFBTTtNQUNSLElBQUlELFNBQVMsSUFBSSxDQUFDcEIsWUFBWSxDQUFDc0IsT0FBTyxJQUFJLENBQUN6QyxNQUFNLENBQUNDLFNBQVMsRUFBRTtRQUN6RDtNQUNKO01BQ0FvQixXQUFXLENBQUNvQixPQUFPLEdBQUd6QyxNQUFNLENBQUNDLFNBQVMsQ0FBQ3lDLE1BQU0sQ0FBQ3ZCLFlBQVksQ0FBQ3NCLE9BQU8sRUFBRTtRQUNoRUUsT0FBTyxFQUFFakQsUUFBUTtRQUNqQmtELFFBQVEsRUFBR0MsUUFBUSxJQUFLO1VBQ3BCdEIsUUFBUSxDQUFDc0IsUUFBUSxDQUFDO1VBQ2xCLE1BQU1DLEtBQUssR0FBRyxJQUFJQyxjQUFLLENBQUM3QixLQUFLLENBQUNRLE1BQU0sRUFBRVIsS0FBSyxDQUFDYyxNQUFNLEVBQUVhLFFBQVEsQ0FBQztVQUM3RFosbUJBQVksQ0FBQ2UsU0FBUyxDQUFDQyxrQkFBUyxDQUFDQyxZQUFZLEVBQUVKLEtBQUssQ0FBQztRQUN6RCxDQUFDO1FBQ0QsZ0JBQWdCLEVBQUVLLENBQUEsS0FBTTtVQUNwQjVCLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDbEIsQ0FBQztRQUNELGtCQUFrQixFQUFFNkIsQ0FBQSxLQUFNO1VBQ3RCN0IsUUFBUSxDQUFDLElBQUksQ0FBQztRQUNsQjtNQUNKLENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQyxDQUNEOEIsS0FBSyxDQUFFL0QsQ0FBQyxJQUFLK0MsT0FBTyxDQUFDQyxLQUFLLENBQUMseUNBQXlDLEVBQUVoRCxDQUFDLENBQUMsQ0FBQzs7SUFFOUU7SUFDQTtJQUNBO0lBQ0EsTUFBTWdFLFNBQVMsR0FBRyxJQUFJUCxjQUFLLENBQUM3QixLQUFLLENBQUNRLE1BQU0sRUFBRVIsS0FBSyxDQUFDYyxNQUFNLEVBQUUsSUFBSSxDQUFDO0lBQzdEQyxtQkFBWSxDQUFDZSxTQUFTLENBQUNDLGtCQUFTLENBQUNNLGNBQWMsRUFBRUQsU0FBUyxDQUFDO0lBRTNELE9BQU8sTUFBTTtNQUNUZixTQUFTLEdBQUcsSUFBSTtNQUNoQixJQUFJbEIsV0FBVyxDQUFDb0IsT0FBTyxJQUFJekMsTUFBTSxDQUFDQyxTQUFTLEVBQUU7UUFDekMsSUFBSTtVQUNBRCxNQUFNLENBQUNDLFNBQVMsQ0FBQ3VELE1BQU0sQ0FBQ25DLFdBQVcsQ0FBQ29CLE9BQU8sQ0FBQztRQUNoRCxDQUFDLENBQUMsT0FBT25ELENBQUMsRUFBRTtVQUNSO1VBQ0E7UUFBQTtRQUVKK0IsV0FBVyxDQUFDb0IsT0FBTyxHQUFHLElBQUk7TUFDOUI7TUFDQVIsbUJBQVksQ0FBQ3dCLDRCQUE0QixDQUFDdkMsS0FBSyxDQUFDUSxNQUFNLENBQUM7SUFDM0QsQ0FBQztFQUNMLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixNQUFNQyxHQUFHLEdBQUdBLENBQUEsTUFBTztJQUNmLElBQUkrQixFQUFFQSxDQUFBLEVBQUc7TUFDTCxPQUFPeEMsS0FBSyxDQUFDYSxNQUFNLENBQUMyQixFQUFFO0lBQzFCLENBQUM7SUFDRDtJQUNBO0lBQ0E7SUFDQSxJQUFJQyxLQUFLQSxDQUFBLEVBQUc7TUFDUixPQUFPckMsS0FBSztJQUNoQixDQUFDO0lBQ0RzQyxXQUFXLEVBQUVBLENBQUEsS0FBTSxFQUFFO0lBQ3JCO0lBQ0E7SUFDQTtJQUNBQyxLQUFLLEVBQUVBLENBQUEsS0FBTTtNQUNULElBQUl4QyxXQUFXLENBQUNvQixPQUFPLElBQUl6QyxNQUFNLENBQUNDLFNBQVMsRUFBRTtRQUN6Q0QsTUFBTSxDQUFDQyxTQUFTLENBQUM0RCxLQUFLLENBQUN4QyxXQUFXLENBQUNvQixPQUFPLENBQUM7UUFDM0NsQixRQUFRLENBQUMsSUFBSSxDQUFDO01BQ2xCO0lBQ0osQ0FBQztJQUNEdUMsT0FBTyxFQUFFQSxDQUFBLEtBQU0sQ0FBQztFQUNwQixDQUFDLENBQUM7RUFFRixvQkFDSS9FLE1BQUEsQ0FBQVMsT0FBQSxDQUFBZSxhQUFBO0lBQUt3RCxLQUFLLEVBQUVsQyxjQUFLLENBQUNtQyxXQUFXLENBQUM7TUFBQ0MsTUFBTSxFQUFFO0lBQU8sQ0FBQyxFQUFFL0MsS0FBSyxDQUFDYSxNQUFNO0VBQUUsZ0JBQzNEaEQsTUFBQSxDQUFBUyxPQUFBLENBQUFlLGFBQUE7SUFBSzJELEdBQUcsRUFBRS9DO0VBQWEsQ0FBQyxDQUN2QixDQUFDO0FBRWQsQ0FBQyxDQUFDO0FBQUMsSUFBQWdELFFBQUEsR0FBQUMsT0FBQSxDQUFBNUUsT0FBQSxHQUVZdUIsU0FBUyIsImlnbm9yZUxpc3QiOltdfQ==