{"version":3,"sources":["node_modules/@fortawesome/fontawesome-svg-core/index.mjs","node_modules/@fortawesome/angular-fontawesome/fesm2022/angular-fontawesome.mjs","libs/shared/ui-components/common-ui/src/lib/common-ui.module.ts","libs/shared/ui-components/common-ui/src/lib/snackbar.service.ts","node_modules/ngxtension/fesm2022/ngxtension-assert-injector.mjs","node_modules/ngxtension/fesm2022/ngxtension-create-injection-token.mjs","libs/shared/generic-edit/src/lib/secondary-outlet-navigator.ts","libs/shared/generic-edit/src/lib/standard-crud-adaptor.ts","libs/shared/generic-edit/src/lib/generic-edit-store.ts","libs/shared/generic-edit/src/lib/crud-adaptor-interface.ts","libs/web-app/features/admin/security-configuration-paint/src/lib/security-configuration-store.ts"],"sourcesContent":["function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\nfunction _wrapRegExp() {\n _wrapRegExp = function (re, groups) {\n return new BabelRegExp(re, void 0, groups);\n };\n var _super = RegExp.prototype,\n _groups = new WeakMap();\n function BabelRegExp(re, flags, groups) {\n var _this = new RegExp(re, flags);\n return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype);\n }\n function buildGroups(result, re) {\n var g = _groups.get(re);\n return Object.keys(g).reduce(function (groups, name) {\n return groups[name] = result[g[name]], groups;\n }, Object.create(null));\n }\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n return result && (result.groups = buildGroups(result, this)), result;\n }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (\"string\" == typeof substitution) {\n var groups = _groups.get(this);\n return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return \"$\" + groups[name];\n }));\n }\n if (\"function\" == typeof substitution) {\n var _this = this;\n return _super[Symbol.replace].call(this, str, function () {\n var args = arguments;\n return \"object\" != typeof args[args.length - 1] && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args);\n });\n }\n return _super[Symbol.replace].call(this, str, substitution);\n }, _wrapRegExp.apply(this, arguments);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nvar noop = function noop() {};\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\nvar _ref = _WINDOW.navigator || {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\nvar _familyProxy, _familyProxy2, _familyProxy3, _familyProxy4, _familyProxy5;\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_CSS_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\nvar FAMILY_CLASSIC = 'classic';\nvar FAMILY_SHARP = 'sharp';\nvar FAMILIES = [FAMILY_CLASSIC, FAMILY_SHARP];\nfunction familyProxy(obj) {\n // Defaults to the classic family if family is not available\n return new Proxy(obj, {\n get: function get(target, prop) {\n return prop in target ? target[prop] : target[FAMILY_CLASSIC];\n }\n });\n}\nvar PREFIX_TO_STYLE = familyProxy((_familyProxy = {}, _defineProperty(_familyProxy, FAMILY_CLASSIC, {\n 'fa': 'solid',\n 'fas': 'solid',\n 'fa-solid': 'solid',\n 'far': 'regular',\n 'fa-regular': 'regular',\n 'fal': 'light',\n 'fa-light': 'light',\n 'fat': 'thin',\n 'fa-thin': 'thin',\n 'fad': 'duotone',\n 'fa-duotone': 'duotone',\n 'fab': 'brands',\n 'fa-brands': 'brands',\n 'fak': 'kit',\n 'fa-kit': 'kit'\n}), _defineProperty(_familyProxy, FAMILY_SHARP, {\n 'fa': 'solid',\n 'fass': 'solid',\n 'fa-solid': 'solid'\n}), _familyProxy));\nvar STYLE_TO_PREFIX = familyProxy((_familyProxy2 = {}, _defineProperty(_familyProxy2, FAMILY_CLASSIC, {\n 'solid': 'fas',\n 'regular': 'far',\n 'light': 'fal',\n 'thin': 'fat',\n 'duotone': 'fad',\n 'brands': 'fab',\n 'kit': 'fak'\n}), _defineProperty(_familyProxy2, FAMILY_SHARP, {\n 'solid': 'fass'\n}), _familyProxy2));\nvar PREFIX_TO_LONG_STYLE = familyProxy((_familyProxy3 = {}, _defineProperty(_familyProxy3, FAMILY_CLASSIC, {\n 'fab': 'fa-brands',\n 'fad': 'fa-duotone',\n 'fak': 'fa-kit',\n 'fal': 'fa-light',\n 'far': 'fa-regular',\n 'fas': 'fa-solid',\n 'fat': 'fa-thin'\n}), _defineProperty(_familyProxy3, FAMILY_SHARP, {\n 'fass': 'fa-solid'\n}), _familyProxy3));\nvar LONG_STYLE_TO_PREFIX = familyProxy((_familyProxy4 = {}, _defineProperty(_familyProxy4, FAMILY_CLASSIC, {\n 'fa-brands': 'fab',\n 'fa-duotone': 'fad',\n 'fa-kit': 'fak',\n 'fa-light': 'fal',\n 'fa-regular': 'far',\n 'fa-solid': 'fas',\n 'fa-thin': 'fat'\n}), _defineProperty(_familyProxy4, FAMILY_SHARP, {\n 'fa-solid': 'fass'\n}), _familyProxy4));\nvar ICON_SELECTION_SYNTAX_PATTERN = /fa(s|r|l|t|d|b|k|ss)?[\\-\\ ]/; // eslint-disable-line no-useless-escape\n\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp|Kit)?.*/i; // TODO: this needs to support fass\n// TODO: do we need to handle font-weight for kit SVG pseudo-elements?\n\nvar FONT_WEIGHT_TO_PREFIX = familyProxy((_familyProxy5 = {}, _defineProperty(_familyProxy5, FAMILY_CLASSIC, {\n '900': 'fas',\n '400': 'far',\n 'normal': 'far',\n '300': 'fal',\n '100': 'fat'\n}), _defineProperty(_familyProxy5, FAMILY_SHARP, {\n '900': 'fass'\n}), _familyProxy5));\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n GROUP: 'duotone-group',\n SWAP_OPACITY: 'swap-opacity',\n PRIMARY: 'primary',\n SECONDARY: 'secondary'\n};\nvar prefixes = new Set();\nObject.keys(STYLE_TO_PREFIX[FAMILY_CLASSIC]).map(prefixes.add.bind(prefixes));\nObject.keys(STYLE_TO_PREFIX[FAMILY_SHARP]).map(prefixes.add.bind(prefixes));\nvar RESERVED_CLASSES = [].concat(FAMILIES, _toConsumableArray(prefixes), ['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', 'beat', 'border', 'fade', 'beat-fade', 'bounce', 'flip-both', 'flip-horizontal', 'flip-vertical', 'flip', 'fw', 'inverse', 'layers-counter', 'layers-text', 'layers', 'li', 'pull-left', 'pull-right', 'pulse', 'rotate-180', 'rotate-270', 'rotate-90', 'rotate-by', 'shake', 'spin-pulse', 'spin-reverse', 'spin', 'stack-1x', 'stack-2x', 'stack', 'ul', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY]).concat(oneToTen.map(function (n) {\n return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n return \"w-\".concat(n);\n}));\nvar initial = WINDOW.FontAwesomeConfig || {};\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n if (element) {\n return element.getAttribute(attr);\n }\n}\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-css-prefix', 'cssPrefix'], ['data-family-default', 'familyDefault'], ['data-style-default', 'styleDefault'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n var val = coerce(getAttrConfig(attr));\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\nvar _default = {\n styleDefault: 'solid',\n familyDefault: 'classic',\n cssPrefix: DEFAULT_CSS_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n}; // familyPrefix is deprecated but we must still support it if present\n\nif (initial.familyPrefix) {\n initial.cssPrefix = initial.familyPrefix;\n}\nvar _config = _objectSpread2(_objectSpread2({}, _default), initial);\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\nvar config = {};\nObject.keys(_default).forEach(function (key) {\n Object.defineProperty(config, key, {\n enumerable: true,\n set: function set(val) {\n _config[key] = val;\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config[key];\n }\n });\n}); // familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0\n\nObject.defineProperty(config, 'familyPrefix', {\n enumerable: true,\n set: function set(val) {\n _config.cssPrefix = val;\n _onChangeCb.forEach(function (cb) {\n return cb(config);\n });\n },\n get: function get() {\n return _config.cssPrefix;\n }\n});\nWINDOW.FontAwesomeConfig = config;\nvar _onChangeCb = [];\nfunction onChange(cb) {\n _onChangeCb.push(cb);\n return function () {\n _onChangeCb.splice(_onChangeCb.indexOf(cb), 1);\n };\n}\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName].trim(), \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\nvar baseStyles = \":root, :host {\\n --fa-font-solid: normal 900 1em/1 \\\"Font Awesome 6 Solid\\\";\\n --fa-font-regular: normal 400 1em/1 \\\"Font Awesome 6 Regular\\\";\\n --fa-font-light: normal 300 1em/1 \\\"Font Awesome 6 Light\\\";\\n --fa-font-thin: normal 100 1em/1 \\\"Font Awesome 6 Thin\\\";\\n --fa-font-duotone: normal 900 1em/1 \\\"Font Awesome 6 Duotone\\\";\\n --fa-font-sharp-solid: normal 900 1em/1 \\\"Font Awesome 6 Sharp\\\";\\n --fa-font-brands: normal 400 1em/1 \\\"Font Awesome 6 Brands\\\";\\n}\\n\\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\\n overflow: visible;\\n box-sizing: content-box;\\n}\\n\\n.svg-inline--fa {\\n display: var(--fa-display, inline-block);\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-2xs {\\n vertical-align: 0.1em;\\n}\\n.svg-inline--fa.fa-xs {\\n vertical-align: 0em;\\n}\\n.svg-inline--fa.fa-sm {\\n vertical-align: -0.0714285705em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.2em;\\n}\\n.svg-inline--fa.fa-xl {\\n vertical-align: -0.25em;\\n}\\n.svg-inline--fa.fa-2xl {\\n vertical-align: -0.3125em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: var(--fa-pull-margin, 0.3em);\\n width: auto;\\n}\\n.svg-inline--fa.fa-li {\\n width: var(--fa-li-width, 2em);\\n top: 0.25em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: var(--fa-fw-width, 1.25em);\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: var(--fa-counter-background-color, #ff253a);\\n border-radius: var(--fa-counter-border-radius, 1em);\\n box-sizing: border-box;\\n color: var(--fa-inverse, #fff);\\n line-height: var(--fa-counter-line-height, 1);\\n max-width: var(--fa-counter-max-width, 5em);\\n min-width: var(--fa-counter-min-width, 1.5em);\\n overflow: hidden;\\n padding: var(--fa-counter-padding, 0.25em 0.5em);\\n right: var(--fa-right, 0);\\n text-overflow: ellipsis;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\\n transform: scale(var(--fa-counter-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: var(--fa-bottom, 0);\\n right: var(--fa-right, 0);\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: var(--fa-bottom, 0);\\n left: var(--fa-left, 0);\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n top: var(--fa-top, 0);\\n right: var(--fa-right, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: var(--fa-left, 0);\\n right: auto;\\n top: var(--fa-top, 0);\\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\\n transform: scale(var(--fa-layers-scale, 0.25));\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-2xs {\\n font-size: 0.625em;\\n line-height: 0.1em;\\n vertical-align: 0.225em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n line-height: 0.0833333337em;\\n vertical-align: 0.125em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n line-height: 0.0714285718em;\\n vertical-align: 0.0535714295em;\\n}\\n\\n.fa-lg {\\n font-size: 1.25em;\\n line-height: 0.05em;\\n vertical-align: -0.075em;\\n}\\n\\n.fa-xl {\\n font-size: 1.5em;\\n line-height: 0.0416666682em;\\n vertical-align: -0.125em;\\n}\\n\\n.fa-2xl {\\n font-size: 2em;\\n line-height: 0.03125em;\\n vertical-align: -0.1875em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: var(--fa-li-margin, 2.5em);\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: calc(var(--fa-li-width, 2em) * -1);\\n position: absolute;\\n text-align: center;\\n width: var(--fa-li-width, 2em);\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border-color: var(--fa-border-color, #eee);\\n border-radius: var(--fa-border-radius, 0.1em);\\n border-style: var(--fa-border-style, solid);\\n border-width: var(--fa-border-width, 0.08em);\\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\\n}\\n\\n.fa-pull-left {\\n float: left;\\n margin-right: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-pull-right {\\n float: right;\\n margin-left: var(--fa-pull-margin, 0.3em);\\n}\\n\\n.fa-beat {\\n -webkit-animation-name: fa-beat;\\n animation-name: fa-beat;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-bounce {\\n -webkit-animation-name: fa-bounce;\\n animation-name: fa-bounce;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\\n}\\n\\n.fa-fade {\\n -webkit-animation-name: fa-fade;\\n animation-name: fa-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-beat-fade {\\n -webkit-animation-name: fa-beat-fade;\\n animation-name: fa-beat-fade;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\\n}\\n\\n.fa-flip {\\n -webkit-animation-name: fa-flip;\\n animation-name: fa-flip;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\\n}\\n\\n.fa-shake {\\n -webkit-animation-name: fa-shake;\\n animation-name: fa-shake;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\\n animation-delay: var(--fa-animation-delay, 0s);\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\\n animation-duration: var(--fa-animation-duration, 2s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\\n animation-timing-function: var(--fa-animation-timing, linear);\\n}\\n\\n.fa-spin-reverse {\\n --fa-animation-direction: reverse;\\n}\\n\\n.fa-pulse,\\n.fa-spin-pulse {\\n -webkit-animation-name: fa-spin;\\n animation-name: fa-spin;\\n -webkit-animation-direction: var(--fa-animation-direction, normal);\\n animation-direction: var(--fa-animation-direction, normal);\\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\\n animation-duration: var(--fa-animation-duration, 1s);\\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\\n animation-timing-function: var(--fa-animation-timing, steps(8));\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .fa-beat,\\n.fa-bounce,\\n.fa-fade,\\n.fa-beat-fade,\\n.fa-flip,\\n.fa-pulse,\\n.fa-shake,\\n.fa-spin,\\n.fa-spin-pulse {\\n -webkit-animation-delay: -1ms;\\n animation-delay: -1ms;\\n -webkit-animation-duration: 1ms;\\n animation-duration: 1ms;\\n -webkit-animation-iteration-count: 1;\\n animation-iteration-count: 1;\\n transition-delay: 0s;\\n transition-duration: 0s;\\n }\\n}\\n@-webkit-keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@keyframes fa-beat {\\n 0%, 90% {\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 45% {\\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\\n transform: scale(var(--fa-beat-scale, 1.25));\\n }\\n}\\n@-webkit-keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@keyframes fa-bounce {\\n 0% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 10% {\\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\\n }\\n 30% {\\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\\n }\\n 50% {\\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\\n }\\n 57% {\\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\\n }\\n 64% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n 100% {\\n -webkit-transform: scale(1, 1) translateY(0);\\n transform: scale(1, 1) translateY(0);\\n }\\n}\\n@-webkit-keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@keyframes fa-fade {\\n 50% {\\n opacity: var(--fa-fade-opacity, 0.4);\\n }\\n}\\n@-webkit-keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@keyframes fa-beat-fade {\\n 0%, 100% {\\n opacity: var(--fa-beat-fade-opacity, 0.4);\\n -webkit-transform: scale(1);\\n transform: scale(1);\\n }\\n 50% {\\n opacity: 1;\\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\\n transform: scale(var(--fa-beat-fade-scale, 1.125));\\n }\\n}\\n@-webkit-keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@keyframes fa-flip {\\n 50% {\\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\\n }\\n}\\n@-webkit-keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@keyframes fa-shake {\\n 0% {\\n -webkit-transform: rotate(-15deg);\\n transform: rotate(-15deg);\\n }\\n 4% {\\n -webkit-transform: rotate(15deg);\\n transform: rotate(15deg);\\n }\\n 8%, 24% {\\n -webkit-transform: rotate(-18deg);\\n transform: rotate(-18deg);\\n }\\n 12%, 28% {\\n -webkit-transform: rotate(18deg);\\n transform: rotate(18deg);\\n }\\n 16% {\\n -webkit-transform: rotate(-22deg);\\n transform: rotate(-22deg);\\n }\\n 20% {\\n -webkit-transform: rotate(22deg);\\n transform: rotate(22deg);\\n }\\n 32% {\\n -webkit-transform: rotate(-12deg);\\n transform: rotate(-12deg);\\n }\\n 36% {\\n -webkit-transform: rotate(12deg);\\n transform: rotate(12deg);\\n }\\n 40%, 100% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n}\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both,\\n.fa-flip-horizontal.fa-flip-vertical {\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n.fa-rotate-by {\\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\\n transform: rotate(var(--fa-rotate-angle, none));\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n vertical-align: middle;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n z-index: var(--fa-stack-z-index, auto);\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\\n\\n.sr-only,\\n.fa-sr-only {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.sr-only-focusable:not(:focus),\\n.fa-sr-only-focusable:not(:focus) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n padding: 0;\\n margin: -1px;\\n overflow: hidden;\\n clip: rect(0, 0, 0, 0);\\n white-space: nowrap;\\n border-width: 0;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse,\\n.fa-duotone.fa-inverse {\\n color: var(--fa-inverse, #fff);\\n}\";\nfunction css() {\n var dcp = DEFAULT_CSS_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.cssPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n if (fp !== dcp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dcp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dcp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n return s;\n}\nvar _cssInserted = false;\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n _cssInserted = true;\n }\n}\nvar InjectCSS = {\n mixout: function mixout() {\n return {\n dom: {\n css: css,\n insertCss: ensureCss\n }\n };\n },\n hooks: function hooks() {\n return {\n beforeDOMElementCreation: function beforeDOMElementCreation() {\n ensureCss();\n },\n beforeI2svg: function beforeI2svg() {\n ensureCss();\n }\n };\n }\n};\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\nvar functions = [];\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\nvar loaded = false;\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\nfunction domready(fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\");\n }\n}\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n return result;\n};\n\n/**\n * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT\n *\n * Copyright Mathias Bynens \n\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\nfunction ucs2decode(string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n var extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) {\n // eslint-disable-line eqeqeq\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n}\nfunction toHex(unicode) {\n var decoded = ucs2decode(unicode);\n return decoded.length === 1 ? decoded[0].toString(16) : null;\n}\nfunction codePointAt(string, index) {\n var size = string.length;\n var first = string.charCodeAt(index);\n var second;\n if (first >= 0xD800 && first <= 0xDBFF && size > index + 1) {\n second = string.charCodeAt(index + 1);\n if (second >= 0xDC00 && second <= 0xDFFF) {\n return (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n return first;\n}\nfunction normalizeIcons(icons) {\n return Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n return acc;\n }, {});\n}\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = normalizeIcons(icons);\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalizeIcons(icons));\n } else {\n namespace.styles[prefix] = _objectSpread2(_objectSpread2({}, namespace.styles[prefix] || {}), normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll ease the upgrade process for our users by automatically defining\n * this as well.\n */\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\nvar duotonePathRe = [/*#__PURE__*/_wrapRegExp(/path d=\"((?:(?!\")[\\s\\S])+)\".*path d=\"((?:(?!\")[\\s\\S])+)\"/, {\n d1: 1,\n d2: 2\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\".*path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2,\n cls2: 3,\n d2: 4\n}), /*#__PURE__*/_wrapRegExp(/path class=\"((?:(?!\")[\\s\\S])+)\".*d=\"((?:(?!\")[\\s\\S])+)\"/, {\n cls1: 1,\n d1: 2\n})];\nvar _LONG_STYLE, _PREFIXES, _PREFIXES_FOR_FAMILY;\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar LONG_STYLE = (_LONG_STYLE = {}, _defineProperty(_LONG_STYLE, FAMILY_CLASSIC, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_LONG_STYLE, FAMILY_SHARP, Object.values(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _LONG_STYLE);\nvar _defaultUsablePrefix = null;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar _byOldUnicode = {};\nvar _byAlias = {};\nvar PREFIXES = (_PREFIXES = {}, _defineProperty(_PREFIXES, FAMILY_CLASSIC, Object.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES, FAMILY_SHARP, Object.keys(PREFIX_TO_STYLE[FAMILY_SHARP])), _PREFIXES);\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction getIconName(cssPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n if (prefix === cssPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'number';\n });\n aliases.forEach(function (alias) {\n acc[alias.toString(16)] = iconName;\n });\n }\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n acc[iconName] = iconName;\n if (icon[2]) {\n var aliases = icon[2].filter(function (a) {\n return typeof a === 'string';\n });\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n }\n return acc;\n });\n _byAlias = lookup(function (acc, icon, iconName) {\n var aliases = icon[2];\n acc[iconName] = iconName;\n aliases.forEach(function (alias) {\n acc[alias] = iconName;\n });\n return acc;\n }); // If we have a Kit, we can't determine if regular is available since we\n // could be auto-fetching it. We'll have to assume that it is available.\n\n var hasRegular = 'far' in styles || config.autoFetchSvg;\n var shimLookups = reduce(shims, function (acc, shim) {\n var maybeNameMaybeUnicode = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n if (typeof maybeNameMaybeUnicode === 'string') {\n acc.names[maybeNameMaybeUnicode] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n if (typeof maybeNameMaybeUnicode === 'number') {\n acc.unicodes[maybeNameMaybeUnicode.toString(16)] = {\n prefix: prefix,\n iconName: iconName\n };\n }\n return acc;\n }, {\n names: {},\n unicodes: {}\n });\n _byOldName = shimLookups.names;\n _byOldUnicode = shimLookups.unicodes;\n _defaultUsablePrefix = getCanonicalPrefix(config.styleDefault, {\n family: config.familyDefault\n });\n};\nonChange(function (c) {\n _defaultUsablePrefix = getCanonicalPrefix(c.styleDefault, {\n family: config.familyDefault\n });\n});\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byAlias(prefix, alias) {\n return (_byAlias[prefix] || {})[alias];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\nfunction byOldUnicode(unicode) {\n var oldUnicode = _byOldUnicode[unicode];\n var newUnicode = byUnicode('fas', unicode);\n return oldUnicode || (newUnicode ? {\n prefix: 'fas',\n iconName: newUnicode\n } : null) || {\n prefix: null,\n iconName: null\n };\n}\nfunction getDefaultUsablePrefix() {\n return _defaultUsablePrefix;\n}\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalPrefix(styleOrPrefix) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$family = params.family,\n family = _params$family === void 0 ? FAMILY_CLASSIC : _params$family;\n var style = PREFIX_TO_STYLE[family][styleOrPrefix];\n var prefix = STYLE_TO_PREFIX[family][styleOrPrefix] || STYLE_TO_PREFIX[family][style];\n var defined = styleOrPrefix in namespace.styles ? styleOrPrefix : null;\n return prefix || defined || null;\n}\nvar PREFIXES_FOR_FAMILY = (_PREFIXES_FOR_FAMILY = {}, _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_CLASSIC, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC])), _defineProperty(_PREFIXES_FOR_FAMILY, FAMILY_SHARP, Object.keys(PREFIX_TO_LONG_STYLE[FAMILY_SHARP])), _PREFIXES_FOR_FAMILY);\nfunction getCanonicalIcon(values) {\n var _famProps;\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$skipLookups = params.skipLookups,\n skipLookups = _params$skipLookups === void 0 ? false : _params$skipLookups;\n var famProps = (_famProps = {}, _defineProperty(_famProps, FAMILY_CLASSIC, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_CLASSIC)), _defineProperty(_famProps, FAMILY_SHARP, \"\".concat(config.cssPrefix, \"-\").concat(FAMILY_SHARP)), _famProps);\n var givenPrefix = null;\n var family = FAMILY_CLASSIC;\n if (values.includes(famProps[FAMILY_CLASSIC]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_CLASSIC].includes(v);\n })) {\n family = FAMILY_CLASSIC;\n }\n if (values.includes(famProps[FAMILY_SHARP]) || values.some(function (v) {\n return PREFIXES_FOR_FAMILY[FAMILY_SHARP].includes(v);\n })) {\n family = FAMILY_SHARP;\n }\n var canonical = values.reduce(function (acc, cls) {\n var iconName = getIconName(config.cssPrefix, cls);\n if (styles[cls]) {\n cls = LONG_STYLE[family].includes(cls) ? LONG_STYLE_TO_PREFIX[family][cls] : cls;\n givenPrefix = cls;\n acc.prefix = cls;\n } else if (PREFIXES[family].indexOf(cls) > -1) {\n givenPrefix = cls;\n acc.prefix = getCanonicalPrefix(cls, {\n family: family\n });\n } else if (iconName) {\n acc.iconName = iconName;\n } else if (cls !== config.replacementClass && cls !== famProps[FAMILY_CLASSIC] && cls !== famProps[FAMILY_SHARP]) {\n acc.rest.push(cls);\n }\n if (!skipLookups && acc.prefix && acc.iconName) {\n var shim = givenPrefix === 'fa' ? byOldName(acc.iconName) : {};\n var aliasIconName = byAlias(acc.prefix, acc.iconName);\n if (shim.prefix) {\n givenPrefix = null;\n }\n acc.iconName = shim.iconName || aliasIconName || acc.iconName;\n acc.prefix = shim.prefix || acc.prefix;\n if (acc.prefix === 'far' && !styles['far'] && styles['fas'] && !config.autoFetchSvg) {\n // Allow a fallback from the regular style to solid if regular is not available\n // but only if we aren't auto-fetching SVGs\n acc.prefix = 'fas';\n }\n }\n return acc;\n }, emptyCanonicalIcon());\n if (values.includes('fa-brands') || values.includes('fab')) {\n canonical.prefix = 'fab';\n }\n if (values.includes('fa-duotone') || values.includes('fad')) {\n canonical.prefix = 'fad';\n }\n if (!canonical.prefix && family === FAMILY_SHARP && (styles['fass'] || config.autoFetchSvg)) {\n canonical.prefix = 'fass';\n canonical.iconName = byAlias(canonical.prefix, canonical.iconName) || canonical.iconName;\n }\n if (canonical.prefix === 'fa' || givenPrefix === 'fa') {\n // The fa prefix is not canonical. So if it has made it through until this point\n // we will shift it to the correct prefix.\n canonical.prefix = getDefaultUsablePrefix() || 'fas';\n }\n return canonical;\n}\nvar Library = /*#__PURE__*/function () {\n function Library() {\n _classCallCheck(this, Library);\n this.definitions = {};\n }\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread2(_objectSpread2({}, _this.definitions[key] || {}), additions[key]);\n defineIcons(key, additions[key]); // TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change\n\n var longPrefix = PREFIX_TO_LONG_STYLE[FAMILY_CLASSIC][key];\n if (longPrefix) defineIcons(longPrefix, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n var aliases = icon[2];\n if (!additions[prefix]) additions[prefix] = {};\n if (aliases.length > 0) {\n aliases.forEach(function (alias) {\n if (typeof alias === 'string') {\n additions[prefix][alias] = icon;\n }\n });\n }\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n return Library;\n}();\nvar _plugins = [];\nvar _hooks = {};\nvar providers = {};\nvar defaultProviderKeys = Object.keys(providers);\nfunction registerPlugins(nextPlugins, _ref) {\n var obj = _ref.mixoutsTo;\n _plugins = nextPlugins;\n _hooks = {};\n Object.keys(providers).forEach(function (k) {\n if (defaultProviderKeys.indexOf(k) === -1) {\n delete providers[k];\n }\n });\n _plugins.forEach(function (plugin) {\n var mixout = plugin.mixout ? plugin.mixout() : {};\n Object.keys(mixout).forEach(function (tk) {\n if (typeof mixout[tk] === 'function') {\n obj[tk] = mixout[tk];\n }\n if (_typeof(mixout[tk]) === 'object') {\n Object.keys(mixout[tk]).forEach(function (sk) {\n if (!obj[tk]) {\n obj[tk] = {};\n }\n obj[tk][sk] = mixout[tk][sk];\n });\n }\n });\n if (plugin.hooks) {\n var hooks = plugin.hooks();\n Object.keys(hooks).forEach(function (hook) {\n if (!_hooks[hook]) {\n _hooks[hook] = [];\n }\n _hooks[hook].push(hooks[hook]);\n });\n }\n if (plugin.provides) {\n plugin.provides(providers);\n }\n });\n return obj;\n}\nfunction chainHooks(hook, accumulator) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n accumulator = hookFn.apply(null, [accumulator].concat(args)); // eslint-disable-line no-useless-call\n });\n return accumulator;\n}\nfunction callHooks(hook) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n var hookFns = _hooks[hook] || [];\n hookFns.forEach(function (hookFn) {\n hookFn.apply(null, args);\n });\n return undefined;\n}\nfunction callProvided() {\n var hook = arguments[0];\n var args = Array.prototype.slice.call(arguments, 1);\n return providers[hook] ? providers[hook].apply(null, args) : undefined;\n}\nfunction findIconDefinition(iconLookup) {\n if (iconLookup.prefix === 'fa') {\n iconLookup.prefix = 'fas';\n }\n var iconName = iconLookup.iconName;\n var prefix = iconLookup.prefix || getDefaultUsablePrefix();\n if (!iconName) return;\n iconName = byAlias(prefix, iconName) || iconName;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n callHooks('noAuto');\n};\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (IS_DOM) {\n callHooks('beforeI2svg', params);\n callProvided('pseudoElements2svg', params);\n return callProvided('i2svg', params);\n } else {\n return Promise.reject('Operation requires a DOM of some kind.');\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot;\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n callHooks('watch', params);\n });\n }\n};\nvar parse = {\n icon: function icon(_icon) {\n if (_icon === null) {\n return null;\n }\n if (_typeof(_icon) === 'object' && _icon.prefix && _icon.iconName) {\n return {\n prefix: _icon.prefix,\n iconName: byAlias(_icon.prefix, _icon.iconName) || _icon.iconName\n };\n }\n if (Array.isArray(_icon) && _icon.length === 2) {\n var iconName = _icon[1].indexOf('fa-') === 0 ? _icon[1].slice(3) : _icon[1];\n var prefix = getCanonicalPrefix(_icon[0]);\n return {\n prefix: prefix,\n iconName: byAlias(prefix, iconName) || iconName\n };\n }\n if (typeof _icon === 'string' && (_icon.indexOf(\"\".concat(config.cssPrefix, \"-\")) > -1 || _icon.match(ICON_SELECTION_SYNTAX_PATTERN))) {\n var canonicalIcon = getCanonicalIcon(_icon.split(' '), {\n skipLookups: true\n });\n return {\n prefix: canonicalIcon.prefix || getDefaultUsablePrefix(),\n iconName: byAlias(canonicalIcon.prefix, canonicalIcon.iconName) || canonicalIcon.iconName\n };\n }\n if (typeof _icon === 'string') {\n var _prefix = getDefaultUsablePrefix();\n return {\n prefix: _prefix,\n iconName: byAlias(_prefix, _icon) || _icon\n };\n }\n }\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n parse: parse,\n library: library,\n findIconDefinition: findIconDefinition,\n toHtml: toHtml\n};\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\nfunction domVariants(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\nfunction asIcon(_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread2(_objectSpread2({}, styles), {}, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\nfunction asSymbol(_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.cssPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread2(_objectSpread2({}, attributes), {}, {\n id: id\n }),\n children: children\n }]\n }];\n}\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n var isUploadedIcon = prefix === 'fak';\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.cssPrefix, \"-\").concat(iconName) : ''].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread2(_objectSpread2({}, extra.attributes), {}, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n if (title) {\n content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n delete content.attributes.title;\n }\n var args = _objectSpread2(_objectSpread2({}, content), {}, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread2(_objectSpread2({}, uploadedIconWidthStyle), extra.styles)\n });\n var _ref2 = mask.found && main.found ? callProvided('generateAbstractMask', args) || {\n children: [],\n attributes: {}\n } : callProvided('generateAbstractIcon', args) || {\n children: [],\n attributes: {}\n },\n children = _ref2.children,\n attributes = _ref2.attributes;\n args.children = children;\n args.attributes = attributes;\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n var styles = _objectSpread2({}, extra.styles);\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n var styleString = joinStyles(styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n var attributes = _objectSpread2(_objectSpread2(_objectSpread2({}, extra.attributes), title ? {\n 'title': title\n } : {}), {}, {\n 'class': extra.classes.join(' ')\n });\n var styleString = joinStyles(extra.styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n return val;\n}\nvar styles$1 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n var element = null;\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.cssPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nvar missingIconResolutionMixin = {\n found: false,\n width: 512,\n height: 512\n};\nfunction maybeNotifyMissing(iconName, prefix) {\n if (!PRODUCTION && !config.showMissingIcons && iconName) {\n console.error(\"Icon with name \\\"\".concat(iconName, \"\\\" and prefix \\\"\").concat(prefix, \"\\\" is missing.\"));\n }\n}\nfunction findIcon(iconName, prefix) {\n var givenPrefix = prefix;\n if (prefix === 'fa' && config.styleDefault !== null) {\n prefix = getDefaultUsablePrefix();\n }\n return new Promise(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: callProvided('missingIconAbstract') || {}\n };\n if (givenPrefix === 'fa') {\n var shim = byOldName(iconName) || {};\n iconName = shim.iconName || iconName;\n prefix = shim.prefix || prefix;\n }\n if (iconName && prefix && styles$1[prefix] && styles$1[prefix][iconName]) {\n var icon = styles$1[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n maybeNotifyMissing(iconName, prefix);\n resolve(_objectSpread2(_objectSpread2({}, missingIconResolutionMixin), {}, {\n icon: config.showMissingIcons && iconName ? callProvided('missingIconAbstract') || {} : {}\n }));\n });\n}\nvar noop$1 = function noop() {};\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"6.2.0\\\"\";\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\nvar perf = {\n begin: begin,\n end: end\n};\nvar noop$2 = function noop() {};\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\nfunction hasPrefixAndIcon(node) {\n var prefix = node.getAttribute ? node.getAttribute(DATA_PREFIX) : null;\n var icon = node.getAttribute ? node.getAttribute(DATA_ICON) : null;\n return prefix && icon;\n}\nfunction hasBeenReplaced(node) {\n return node && node.classList && node.classList.contains && node.classList.contains(config.replacementClass);\n}\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\nfunction createElementNS(tag) {\n return DOCUMENT.createElementNS('http://www.w3.org/2000/svg', tag);\n}\nfunction createElement(tag) {\n return DOCUMENT.createElement(tag);\n}\nfunction convertSVG(abstractObj) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$ceFn = params.ceFn,\n ceFn = _params$ceFn === void 0 ? abstractObj.tag === 'svg' ? createElementNS : createElement : _params$ceFn;\n if (typeof abstractObj === 'string') {\n return DOCUMENT.createTextNode(abstractObj);\n }\n var tag = ceFn(abstractObj.tag);\n Object.keys(abstractObj.attributes || []).forEach(function (key) {\n tag.setAttribute(key, abstractObj.attributes[key]);\n });\n var children = abstractObj.children || [];\n children.forEach(function (child) {\n tag.appendChild(convertSVG(child, {\n ceFn: ceFn\n }));\n });\n return tag;\n}\nfunction nodeAsComment(node) {\n var comment = \" \".concat(node.outerHTML, \" \");\n /* BEGIN.ATTRIBUTION */\n\n comment = \"\".concat(comment, \"Font Awesome fontawesome.com \");\n /* END.ATTRIBUTION */\n\n return comment;\n}\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n if (node.parentNode) {\n mutation[1].forEach(function (abstract) {\n node.parentNode.insertBefore(convertSVG(abstract), node);\n });\n if (node.getAttribute(DATA_FA_I2SVG) === null && config.keepOriginalSource) {\n var comment = DOCUMENT.createComment(nodeAsComment(node));\n node.parentNode.replaceChild(comment, node);\n } else {\n node.remove();\n }\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n var forSvg = new RegExp(\"\".concat(config.cssPrefix, \"-.*\"));\n delete abstract[0].attributes.id;\n if (abstract[0].attributes.class) {\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n if (splitClasses.toNode.length === 0) {\n node.removeAttribute('class');\n } else {\n node.setAttribute('class', splitClasses.toNode.join(' '));\n }\n }\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\nfunction performOperationSync(op) {\n op();\n}\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n if (!config.observeMutations) {\n return;\n }\n var _options$treeCallback = options.treeCallback,\n treeCallback = _options$treeCallback === void 0 ? noop$2 : _options$treeCallback,\n _options$nodeCallback = options.nodeCallback,\n nodeCallback = _options$nodeCallback === void 0 ? noop$2 : _options$nodeCallback,\n _options$pseudoElemen = options.pseudoElementsCallback,\n pseudoElementsCallback = _options$pseudoElemen === void 0 ? noop$2 : _options$pseudoElemen,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n var defaultPrefix = getDefaultUsablePrefix();\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n treeCallback(mutationRecord.target);\n }\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class' && hasPrefixAndIcon(mutationRecord.target)) {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n mutationRecord.target.setAttribute(DATA_PREFIX, prefix || defaultPrefix);\n if (iconName) mutationRecord.target.setAttribute(DATA_ICON, iconName);\n } else if (hasBeenReplaced(mutationRecord.target)) {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\nfunction styleParser(node) {\n var style = node.getAttribute('style');\n var val = [];\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n return acc;\n }, {});\n }\n return val;\n}\nfunction classParser(node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n if (!val.prefix) {\n val.prefix = getDefaultUsablePrefix();\n }\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n if (val.iconName && val.prefix) {\n return val;\n }\n if (val.prefix && innerText.length > 0) {\n val.iconName = byLigature(val.prefix, node.innerText) || byUnicode(val.prefix, toHex(node.innerText));\n }\n if (!val.iconName && config.autoFetchSvg && node.firstChild && node.firstChild.nodeType === Node.TEXT_NODE) {\n val.iconName = node.firstChild.data;\n }\n return val;\n}\nfunction attributesParser(node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n return extraAttributes;\n}\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var parser = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n styleParser: true\n };\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n var extraAttributes = attributesParser(node);\n var pluginMeta = chainHooks('parseNodeAttributes', {}, node);\n var extraStyles = parser.styleParser ? styleParser(node) : [];\n return _objectSpread2({\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: meaninglessTransform,\n mask: {\n iconName: null,\n prefix: null,\n rest: []\n },\n maskId: null,\n symbol: false,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n }, pluginMeta);\n}\nvar styles$2 = namespace.styles;\nfunction generateMutation(node) {\n var nodeMeta = config.autoReplaceSvg === 'nest' ? parseMeta(node, {\n styleParser: false\n }) : parseMeta(node);\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return callProvided('generateLayersText', node, nodeMeta);\n } else {\n return callProvided('generateSvgReplacementMutation', node, nodeMeta);\n }\n}\nvar knownPrefixes = new Set();\nFAMILIES.map(function (family) {\n knownPrefixes.add(\"fa-\".concat(family));\n});\nObject.keys(PREFIX_TO_STYLE[FAMILY_CLASSIC]).map(knownPrefixes.add.bind(knownPrefixes));\nObject.keys(PREFIX_TO_STYLE[FAMILY_SHARP]).map(knownPrefixes.add.bind(knownPrefixes));\nknownPrefixes = _toConsumableArray(knownPrefixes);\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return Promise.resolve();\n var htmlClassList = DOCUMENT.documentElement.classList;\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n var prefixes = config.autoFetchSvg ? knownPrefixes : FAMILIES.map(function (f) {\n return \"fa-\".concat(f);\n }).concat(Object.keys(styles$2));\n if (!prefixes.includes('fa')) {\n prefixes.push('fa');\n }\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n if (prefixesDomQuery.length === 0) {\n return Promise.resolve();\n }\n var candidates = [];\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return Promise.resolve();\n }\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e.name === 'MissingIcon') {\n console.error(e);\n }\n }\n }\n return acc;\n }, []);\n return new Promise(function (resolve, reject) {\n Promise.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function (e) {\n mark();\n reject(e);\n });\n });\n}\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n return next(iconDefinition, _objectSpread2(_objectSpread2({}, params), {}, {\n mask: mask\n }));\n };\n}\nvar render = function render(iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return domVariants(_objectSpread2({\n type: 'icon'\n }, iconDefinition), function () {\n callHooks('beforeDOMElementCreation', {\n iconDefinition: iconDefinition,\n params: params\n });\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n};\nvar ReplaceElements = {\n mixout: function mixout() {\n return {\n icon: resolveIcons(render)\n };\n },\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.treeCallback = onTree;\n accumulator.nodeCallback = onNode;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.i2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n return onTree(node, callback);\n };\n providers$$1.generateSvgReplacementMutation = function (node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new Promise(function (resolve, reject) {\n Promise.all([findIcon(iconName, prefix), mask.iconName ? findIcon(mask.iconName, mask.prefix) : Promise.resolve({\n found: false,\n width: 512,\n height: 512,\n icon: {}\n })]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n }).catch(reject);\n });\n };\n providers$$1.generateAbstractIcon = function (_ref3) {\n var children = _ref3.children,\n attributes = _ref3.attributes,\n main = _ref3.main,\n transform = _ref3.transform,\n styles = _ref3.styles;\n var styleString = joinStyles(styles);\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n var nextChild;\n if (transformIsMeaningful(transform)) {\n nextChild = callProvided('generateAbstractTransformGrouping', {\n main: main,\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n }\n children.push(nextChild || main.icon);\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\nvar Layers = {\n mixout: function mixout() {\n return {\n layer: function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes;\n return domVariants({\n type: 'layer'\n }, function () {\n callHooks('beforeDOMElementCreation', {\n assembler: assembler,\n params: params\n });\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.cssPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n }\n };\n }\n};\nvar LayersCounter = {\n mixout: function mixout() {\n return {\n counter: function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'counter',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n }\n};\nvar LayersText = {\n mixout: function mixout() {\n return {\n text: function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n return domVariants({\n type: 'text',\n content: content\n }, function () {\n callHooks('beforeDOMElementCreation', {\n content: content,\n params: params\n });\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread2(_objectSpread2({}, meaninglessTransform), transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.cssPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.generateLayersText = function (node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n return Promise.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n };\n }\n};\nvar CLEAN_CONTENT_PATTERN = new RegExp(\"\\\"\", 'ug');\nvar SECONDARY_UNICODE_RANGE = [1105920, 1112319];\nfunction hexValueFromContent(content) {\n var cleaned = content.replace(CLEAN_CONTENT_PATTERN, '');\n var codePoint = codePointAt(cleaned, 0);\n var isPrependTen = codePoint >= SECONDARY_UNICODE_RANGE[0] && codePoint <= SECONDARY_UNICODE_RANGE[1];\n var isDoubled = cleaned.length === 2 ? cleaned[0] === cleaned[1] : false;\n return {\n value: isDoubled ? toHex(cleaned[0]) : toHex(cleaned),\n isSecondary: isPrependTen || isDoubled\n };\n}\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new Promise(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n var family = ~['Sharp'].indexOf(fontFamily[2]) ? FAMILY_SHARP : FAMILY_CLASSIC;\n var prefix = ~['Solid', 'Regular', 'Light', 'Thin', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[family][fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[family][fontWeight];\n var _hexValueFromContent = hexValueFromContent(_content),\n hexValue = _hexValueFromContent.value,\n isSecondary = _hexValueFromContent.isSecondary;\n var isV4 = fontFamily[0].startsWith('FontAwesome');\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName;\n if (isV4) {\n var iconName4 = byOldUnicode(hexValue);\n if (iconName4.iconName && iconName4.prefix) {\n iconName = iconName4.iconName;\n prefix = iconName4.prefix;\n }\n } // Only convert the pseudo element in this ::before/::after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n if (iconName && !isSecondary && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread2(_objectSpread2({}, meta), {}, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n if (position === '::before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\nfunction replace(node) {\n return Promise.all([replaceForPosition(node, '::before'), replaceForPosition(node, '::after')]);\n}\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\nfunction searchPseudoElements(root) {\n if (!IS_DOM) return;\n return new Promise(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n Promise.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\nvar PseudoElements = {\n hooks: function hooks() {\n return {\n mutationObserverCallbacks: function mutationObserverCallbacks(accumulator) {\n accumulator.pseudoElementsCallback = searchPseudoElements;\n return accumulator;\n }\n };\n },\n provides: function provides(providers$$1) {\n providers$$1.pseudoElements2svg = function (params) {\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node;\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n };\n }\n};\nvar _unwatched = false;\nvar MutationObserver$1 = {\n mixout: function mixout() {\n return {\n dom: {\n unwatch: function unwatch() {\n disableObservation();\n _unwatched = true;\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n bootstrap: function bootstrap() {\n observe(chainHooks('mutationObserverCallbacks', {}));\n },\n noAuto: function noAuto() {\n disconnect();\n },\n watch: function watch(params) {\n var observeMutationsRoot = params.observeMutationsRoot;\n if (_unwatched) {\n enableObservation();\n } else {\n observe(chainHooks('mutationObserverCallbacks', {\n observeMutationsRoot: observeMutationsRoot\n }));\n }\n }\n };\n }\n};\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n rest = parseFloat(rest);\n if (isNaN(rest)) {\n return acc;\n }\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n case 'left':\n acc.x = acc.x - rest;\n break;\n case 'right':\n acc.x = acc.x + rest;\n break;\n case 'up':\n acc.y = acc.y - rest;\n break;\n case 'down':\n acc.y = acc.y + rest;\n break;\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n return acc;\n }, transform);\n};\nvar PowerTransforms = {\n mixout: function mixout() {\n return {\n parse: {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n }\n };\n },\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var transformString = node.getAttribute('data-fa-transform');\n if (transformString) {\n accumulator.transform = parseTransformString(transformString);\n }\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractTransformGrouping = function (_ref) {\n var main = _ref.main,\n transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n var operations = {\n outer: outer,\n inner: inner,\n path: path\n };\n return {\n tag: 'g',\n attributes: _objectSpread2({}, operations.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread2({}, operations.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread2(_objectSpread2({}, main.icon.attributes), operations.path)\n }]\n }]\n };\n };\n }\n};\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n return abstract;\n}\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\nvar Masks = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var maskData = node.getAttribute('data-fa-mask');\n var mask = !maskData ? emptyCanonicalIcon() : getCanonicalIcon(maskData.split(' ').map(function (i) {\n return i.trim();\n }));\n if (!mask.prefix) {\n mask.prefix = getDefaultUsablePrefix();\n }\n accumulator.mask = mask;\n accumulator.maskId = node.getAttribute('data-fa-mask-id');\n return accumulator;\n }\n };\n },\n provides: function provides(providers) {\n providers.generateAbstractMask = function (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.inner),\n children: [fillBlack(_objectSpread2({\n tag: mainPath.tag,\n attributes: _objectSpread2(_objectSpread2({}, mainPath.attributes), trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread2({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread2(_objectSpread2({}, ALL_SPACE), {}, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread2({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n };\n }\n};\nvar MissingIconIndicator = {\n provides: function provides(providers) {\n var reduceMotion = false;\n if (WINDOW.matchMedia) {\n reduceMotion = WINDOW.matchMedia('(prefers-reduced-motion: reduce)').matches;\n }\n providers.missingIconAbstract = function () {\n var gChildren = [];\n var FILL = {\n fill: 'currentColor'\n };\n var ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n }; // Ring\n\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n });\n var OPACITY_ANIMATE = _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'opacity'\n });\n var dot = {\n tag: 'circle',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: []\n };\n if (!reduceMotion) {\n dot.children.push({\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, ANIMATION_BASE), {}, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;1;1;0;1;'\n })\n });\n }\n gChildren.push(dot);\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: reduceMotion ? [] : [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '1;0;0;0;0;1;'\n })\n }]\n });\n if (!reduceMotion) {\n // Exclamation\n gChildren.push({\n tag: 'path',\n attributes: _objectSpread2(_objectSpread2({}, FILL), {}, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread2(_objectSpread2({}, OPACITY_ANIMATE), {}, {\n values: '0;0;1;1;0;0;'\n })\n }]\n });\n }\n return {\n tag: 'g',\n attributes: {\n 'class': 'missing'\n },\n children: gChildren\n };\n };\n }\n};\nvar SvgSymbols = {\n hooks: function hooks() {\n return {\n parseNodeAttributes: function parseNodeAttributes(accumulator, node) {\n var symbolData = node.getAttribute('data-fa-symbol');\n var symbol = symbolData === null ? false : symbolData === '' ? true : symbolData;\n accumulator['symbol'] = symbol;\n return accumulator;\n }\n };\n }\n};\nvar plugins = [InjectCSS, ReplaceElements, Layers, LayersCounter, LayersText, PseudoElements, MutationObserver$1, PowerTransforms, Masks, MissingIconIndicator, SvgSymbols];\nregisterPlugins(plugins, {\n mixoutsTo: api\n});\nvar noAuto$1 = api.noAuto;\nvar config$1 = api.config;\nvar library$1 = api.library;\nvar dom$1 = api.dom;\nvar parse$1 = api.parse;\nvar findIconDefinition$1 = api.findIconDefinition;\nvar toHtml$1 = api.toHtml;\nvar icon = api.icon;\nvar layer = api.layer;\nvar text = api.text;\nvar counter = api.counter;\nexport { noAuto$1 as noAuto, config$1 as config, library$1 as library, dom$1 as dom, parse$1 as parse, findIconDefinition$1 as findIconDefinition, toHtml$1 as toHtml, icon, layer, text, counter, api };","import * as i0 from '@angular/core';\nimport { Injectable, Directive, Input, Component, Optional, HostBinding, NgModule } from '@angular/core';\nimport { parse, icon, counter, text } from '@fortawesome/fontawesome-svg-core';\nimport * as i2 from '@angular/platform-browser';\nconst _c0 = [\"*\"];\nconst faWarnIfIconDefinitionMissing = iconSpec => {\n throw new Error(`Could not find icon with iconName=${iconSpec.iconName} and prefix=${iconSpec.prefix} in the icon library.`);\n};\nconst faWarnIfIconSpecMissing = () => {\n throw new Error('Property `icon` is required for `fa-icon`/`fa-duotone-icon` components.');\n};\n\n/**\n * Fontawesome class list.\n * Returns classes array by props.\n */\nconst faClassList = props => {\n const classes = {\n [`fa-${props.animation}`]: props.animation != null && !props.animation.startsWith('spin'),\n 'fa-spin': props.animation === 'spin' || props.animation === 'spin-reverse',\n 'fa-spin-pulse': props.animation === 'spin-pulse' || props.animation === 'spin-pulse-reverse',\n 'fa-spin-reverse': props.animation === 'spin-reverse' || props.animation === 'spin-pulse-reverse',\n // According to https://fontawesome.com/docs/web/style/animate#spin fa-pulse\n // class is deprecated, remove the below line when Font Awesome 5 support\n // is dropped.\n 'fa-pulse': props.animation === 'spin-pulse' || props.animation === 'spin-pulse-reverse',\n 'fa-fw': props.fixedWidth,\n 'fa-border': props.border,\n 'fa-inverse': props.inverse,\n 'fa-layers-counter': props.counter,\n 'fa-flip-horizontal': props.flip === 'horizontal' || props.flip === 'both',\n 'fa-flip-vertical': props.flip === 'vertical' || props.flip === 'both',\n [`fa-${props.size}`]: props.size !== null,\n [`fa-rotate-${props.rotate}`]: props.rotate !== null,\n [`fa-pull-${props.pull}`]: props.pull !== null,\n [`fa-stack-${props.stackItemSize}`]: props.stackItemSize != null\n };\n return Object.keys(classes).map(key => classes[key] ? key : null).filter(key => key);\n};\n\n/**\n * Returns if is IconLookup or not.\n */\nconst isIconLookup = i => i.prefix !== undefined && i.iconName !== undefined;\n\n/**\n * Normalizing icon spec.\n */\nconst faNormalizeIconSpec = (iconSpec, defaultPrefix) => {\n if (isIconLookup(iconSpec)) {\n return iconSpec;\n }\n if (typeof iconSpec === 'string') {\n return {\n prefix: defaultPrefix,\n iconName: iconSpec\n };\n }\n return {\n prefix: iconSpec[0],\n iconName: iconSpec[1]\n };\n};\nlet FaConfig = /*#__PURE__*/(() => {\n class FaConfig {\n constructor() {\n /**\n * Default prefix to use, when one is not provided with the icon name.\n *\n * @default 'fas'\n */\n this.defaultPrefix = 'fas';\n /**\n * Provides a fallback icon to use whilst main icon is being loaded asynchronously.\n * When value is null, then fa-icon component will throw an error if icon input is missing.\n * When value is not null, then the provided icon will be used as a fallback icon if icon input is missing.\n *\n * @default null\n */\n this.fallbackIcon = null;\n }\n static {\n this.ɵfac = function FaConfig_Factory(t) {\n return new (t || FaConfig)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: FaConfig,\n factory: FaConfig.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return FaConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet FaIconLibrary = /*#__PURE__*/(() => {\n class FaIconLibrary {\n constructor() {\n this.definitions = {};\n }\n addIcons(...icons) {\n for (const icon of icons) {\n if (!(icon.prefix in this.definitions)) {\n this.definitions[icon.prefix] = {};\n }\n this.definitions[icon.prefix][icon.iconName] = icon;\n for (const alias of icon.icon[2]) {\n if (typeof alias === 'string') {\n this.definitions[icon.prefix][alias] = icon;\n }\n }\n }\n }\n addIconPacks(...packs) {\n for (const pack of packs) {\n const icons = Object.keys(pack).map(key => pack[key]);\n this.addIcons(...icons);\n }\n }\n getIconDefinition(prefix, name) {\n if (prefix in this.definitions && name in this.definitions[prefix]) {\n return this.definitions[prefix][name];\n }\n return null;\n }\n static {\n this.ɵfac = function FaIconLibrary_Factory(t) {\n return new (t || FaIconLibrary)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: FaIconLibrary,\n factory: FaIconLibrary.ɵfac,\n providedIn: 'root'\n });\n }\n }\n return FaIconLibrary;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet FaStackItemSizeDirective = /*#__PURE__*/(() => {\n class FaStackItemSizeDirective {\n constructor() {\n /**\n * Specify whether icon inside {@link FaStackComponent} should be rendered in\n * regular size (1x) or as a larger icon (2x).\n */\n this.stackItemSize = '1x';\n }\n ngOnChanges(changes) {\n if ('size' in changes) {\n throw new Error('fa-icon is not allowed to customize size when used inside fa-stack. ' + 'Set size on the enclosing fa-stack instead: ....');\n }\n }\n static {\n this.ɵfac = function FaStackItemSizeDirective_Factory(t) {\n return new (t || FaStackItemSizeDirective)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FaStackItemSizeDirective,\n selectors: [[\"fa-icon\", \"stackItemSize\", \"\"], [\"fa-duotone-icon\", \"stackItemSize\", \"\"]],\n inputs: {\n stackItemSize: \"stackItemSize\",\n size: \"size\"\n },\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n }\n return FaStackItemSizeDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet FaStackComponent = /*#__PURE__*/(() => {\n class FaStackComponent {\n constructor(renderer, elementRef) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n }\n ngOnInit() {\n this.renderer.addClass(this.elementRef.nativeElement, 'fa-stack');\n }\n ngOnChanges(changes) {\n if ('size' in changes) {\n if (changes.size.currentValue != null) {\n this.renderer.addClass(this.elementRef.nativeElement, `fa-${changes.size.currentValue}`);\n }\n if (changes.size.previousValue != null) {\n this.renderer.removeClass(this.elementRef.nativeElement, `fa-${changes.size.previousValue}`);\n }\n }\n }\n static {\n this.ɵfac = function FaStackComponent_Factory(t) {\n return new (t || FaStackComponent)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: FaStackComponent,\n selectors: [[\"fa-stack\"]],\n inputs: {\n size: \"size\"\n },\n features: [i0.ɵɵNgOnChangesFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function FaStackComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2\n });\n }\n }\n return FaStackComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet FaIconComponent = /*#__PURE__*/(() => {\n class FaIconComponent {\n /**\n * @deprecated Use animation=\"spin\" instead. To be removed in 0.14.0.\n */\n set spin(value) {\n this.animation = value ? 'spin' : undefined;\n }\n /**\n * @deprecated Use animation=\"spin-pulse\" instead. To be removed in 0.14.0.\n */\n set pulse(value) {\n this.animation = value ? 'spin-pulse' : undefined;\n }\n constructor(sanitizer, config, iconLibrary, stackItem, stack) {\n this.sanitizer = sanitizer;\n this.config = config;\n this.iconLibrary = iconLibrary;\n this.stackItem = stackItem;\n /**\n * Set `class` attribute on the SVG element rendered by the component.\n *\n * @deprecated This input breaks view encapsulation and is not recommended.\n * For simple cases (like colors), use `class` on the component itself, for\n * more complex usages, explicitly opt-in to break the view encapsulation.\n * This input is deprecated since 0.12.0 and will be removed in 0.13.0.\n */\n this.classes = [];\n if (stack != null && stackItem == null) {\n console.error('FontAwesome: fa-icon and fa-duotone-icon elements must specify stackItemSize attribute when wrapped into ' + 'fa-stack. Example: .');\n }\n }\n ngOnChanges(changes) {\n if (this.icon == null && this.config.fallbackIcon == null) {\n faWarnIfIconSpecMissing();\n return;\n }\n if (changes) {\n const iconToBeRendered = this.icon != null ? this.icon : this.config.fallbackIcon;\n const iconDefinition = this.findIconDefinition(iconToBeRendered);\n if (iconDefinition != null) {\n const params = this.buildParams();\n this.renderIcon(iconDefinition, params);\n }\n }\n }\n /**\n * Programmatically trigger rendering of the icon.\n *\n * This method is useful, when creating {@link FaIconComponent} dynamically or\n * changing its inputs programmatically as in these cases icon won't be\n * re-rendered automatically.\n */\n render() {\n this.ngOnChanges({});\n }\n findIconDefinition(i) {\n const lookup = faNormalizeIconSpec(i, this.config.defaultPrefix);\n if ('icon' in lookup) {\n return lookup;\n }\n const definition = this.iconLibrary.getIconDefinition(lookup.prefix, lookup.iconName);\n if (definition != null) {\n return definition;\n }\n faWarnIfIconDefinitionMissing(lookup);\n return null;\n }\n buildParams() {\n const classOpts = {\n flip: this.flip,\n animation: this.animation,\n border: this.border,\n inverse: this.inverse,\n size: this.size || null,\n pull: this.pull || null,\n rotate: this.rotate || null,\n fixedWidth: typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth,\n stackItemSize: this.stackItem != null ? this.stackItem.stackItemSize : null\n };\n const parsedTransform = typeof this.transform === 'string' ? parse.transform(this.transform) : this.transform;\n return {\n title: this.title,\n transform: parsedTransform,\n classes: [...faClassList(classOpts), ...this.classes],\n mask: this.mask != null ? this.findIconDefinition(this.mask) : null,\n styles: this.styles != null ? this.styles : {},\n symbol: this.symbol,\n attributes: {\n role: this.a11yRole\n }\n };\n }\n renderIcon(definition, params) {\n const renderedIcon = icon(definition, params);\n this.renderedIconHTML = this.sanitizer.bypassSecurityTrustHtml(renderedIcon.html.join('\\n'));\n }\n static {\n this.ɵfac = function FaIconComponent_Factory(t) {\n return new (t || FaIconComponent)(i0.ɵɵdirectiveInject(i2.DomSanitizer), i0.ɵɵdirectiveInject(FaConfig), i0.ɵɵdirectiveInject(FaIconLibrary), i0.ɵɵdirectiveInject(FaStackItemSizeDirective, 8), i0.ɵɵdirectiveInject(FaStackComponent, 8));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: FaIconComponent,\n selectors: [[\"fa-icon\"]],\n hostAttrs: [1, \"ng-fa-icon\"],\n hostVars: 2,\n hostBindings: function FaIconComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"innerHTML\", ctx.renderedIconHTML, i0.ɵɵsanitizeHtml);\n i0.ɵɵattribute(\"title\", ctx.title);\n }\n },\n inputs: {\n icon: \"icon\",\n title: \"title\",\n animation: \"animation\",\n spin: \"spin\",\n pulse: \"pulse\",\n mask: \"mask\",\n styles: \"styles\",\n flip: \"flip\",\n size: \"size\",\n pull: \"pull\",\n border: \"border\",\n inverse: \"inverse\",\n symbol: \"symbol\",\n rotate: \"rotate\",\n fixedWidth: \"fixedWidth\",\n classes: \"classes\",\n transform: \"transform\",\n a11yRole: \"a11yRole\"\n },\n features: [i0.ɵɵNgOnChangesFeature],\n decls: 0,\n vars: 0,\n template: function FaIconComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n }\n }\n return FaIconComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet FaDuotoneIconComponent = /*#__PURE__*/(() => {\n class FaDuotoneIconComponent extends FaIconComponent {\n findIconDefinition(i) {\n const definition = super.findIconDefinition(i);\n if (definition != null && !Array.isArray(definition.icon[4])) {\n throw new Error('The specified icon does not appear to be a Duotone icon. ' + 'Check that you specified the correct style: ' + ` ` + `or use: instead.`);\n }\n return definition;\n }\n buildParams() {\n const params = super.buildParams();\n if (this.swapOpacity === true || this.swapOpacity === 'true') {\n params.classes.push('fa-swap-opacity');\n }\n if (this.primaryOpacity != null) {\n params.styles['--fa-primary-opacity'] = this.primaryOpacity.toString();\n }\n if (this.secondaryOpacity != null) {\n params.styles['--fa-secondary-opacity'] = this.secondaryOpacity.toString();\n }\n if (this.primaryColor != null) {\n params.styles['--fa-primary-color'] = this.primaryColor;\n }\n if (this.secondaryColor != null) {\n params.styles['--fa-secondary-color'] = this.secondaryColor;\n }\n return params;\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵFaDuotoneIconComponent_BaseFactory;\n return function FaDuotoneIconComponent_Factory(t) {\n return (ɵFaDuotoneIconComponent_BaseFactory || (ɵFaDuotoneIconComponent_BaseFactory = i0.ɵɵgetInheritedFactory(FaDuotoneIconComponent)))(t || FaDuotoneIconComponent);\n };\n })();\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: FaDuotoneIconComponent,\n selectors: [[\"fa-duotone-icon\"]],\n inputs: {\n swapOpacity: \"swapOpacity\",\n primaryOpacity: \"primaryOpacity\",\n secondaryOpacity: \"secondaryOpacity\",\n primaryColor: \"primaryColor\",\n secondaryColor: \"secondaryColor\"\n },\n features: [i0.ɵɵInheritDefinitionFeature],\n decls: 0,\n vars: 0,\n template: function FaDuotoneIconComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n }\n }\n return FaDuotoneIconComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Warns if parent component not existing.\n */\nconst faWarnIfParentNotExist = (parent, parentName, childName) => {\n if (!parent) {\n throw new Error(`${childName} should be used as child of ${parentName} only.`);\n }\n};\n\n/**\n * Fontawesome layers.\n */\nlet FaLayersComponent = /*#__PURE__*/(() => {\n class FaLayersComponent {\n constructor(renderer, elementRef, config) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n this.config = config;\n }\n ngOnInit() {\n this.renderer.addClass(this.elementRef.nativeElement, 'fa-layers');\n this.fixedWidth = typeof this.fixedWidth === 'boolean' ? this.fixedWidth : this.config.fixedWidth;\n }\n ngOnChanges(changes) {\n if ('size' in changes) {\n if (changes.size.currentValue != null) {\n this.renderer.addClass(this.elementRef.nativeElement, `fa-${changes.size.currentValue}`);\n }\n if (changes.size.previousValue != null) {\n this.renderer.removeClass(this.elementRef.nativeElement, `fa-${changes.size.previousValue}`);\n }\n }\n }\n static {\n this.ɵfac = function FaLayersComponent_Factory(t) {\n return new (t || FaLayersComponent)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(FaConfig));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: FaLayersComponent,\n selectors: [[\"fa-layers\"]],\n hostVars: 2,\n hostBindings: function FaLayersComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"fa-fw\", ctx.fixedWidth);\n }\n },\n inputs: {\n size: \"size\",\n fixedWidth: \"fixedWidth\"\n },\n features: [i0.ɵɵNgOnChangesFeature],\n ngContentSelectors: _c0,\n decls: 1,\n vars: 0,\n template: function FaLayersComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵprojection(0);\n }\n },\n encapsulation: 2\n });\n }\n }\n return FaLayersComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet FaLayersCounterComponent = /*#__PURE__*/(() => {\n class FaLayersCounterComponent {\n constructor(parent, sanitizer) {\n this.parent = parent;\n this.sanitizer = sanitizer;\n /**\n * Set `class` attribute on the SVG element rendered by the component.\n *\n * @deprecated This input breaks view encapsulation and is not recommended.\n * For simple cases (like colors), use `class` on the component itself, for\n * more complex usages, explicitly opt-in to break the view encapsulation.\n * This input is deprecated since 0.12.0 and will be removed in 0.13.0.\n */\n this.classes = [];\n faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);\n }\n ngOnChanges(changes) {\n if (changes) {\n const params = this.buildParams();\n this.updateContent(params);\n }\n }\n buildParams() {\n const classes = [];\n if (this.classes != null) {\n classes.push(...this.classes);\n }\n if (this.position != null) {\n classes.push(`fa-layers-${this.position}`);\n }\n return {\n title: this.title,\n classes,\n styles: this.styles\n };\n }\n updateContent(params) {\n this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(counter(this.content || '', params).html.join(''));\n }\n static {\n this.ɵfac = function FaLayersCounterComponent_Factory(t) {\n return new (t || FaLayersCounterComponent)(i0.ɵɵdirectiveInject(FaLayersComponent, 8), i0.ɵɵdirectiveInject(i2.DomSanitizer));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: FaLayersCounterComponent,\n selectors: [[\"fa-layers-counter\"]],\n hostAttrs: [1, \"ng-fa-layers-counter\"],\n hostVars: 1,\n hostBindings: function FaLayersCounterComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"innerHTML\", ctx.renderedHTML, i0.ɵɵsanitizeHtml);\n }\n },\n inputs: {\n content: \"content\",\n title: \"title\",\n styles: \"styles\",\n classes: \"classes\",\n position: \"position\"\n },\n features: [i0.ɵɵNgOnChangesFeature],\n decls: 0,\n vars: 0,\n template: function FaLayersCounterComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n }\n }\n return FaLayersCounterComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet FaLayersTextComponent = /*#__PURE__*/(() => {\n class FaLayersTextComponent {\n /**\n * @deprecated This input was incorrectly exposed and never worked correctly. To be removed in 0.14.0.\n */\n set spin(value) {\n this.animation = value ? 'spin' : undefined;\n }\n /**\n * @deprecated This input was incorrectly exposed and never worked correctly. To be removed in 0.14.0.\n */\n set pulse(value) {\n this.animation = value ? 'spin-pulse' : undefined;\n }\n constructor(parent, sanitizer) {\n this.parent = parent;\n this.sanitizer = sanitizer;\n /**\n * Set `class` attribute on the SVG element rendered by the component.\n *\n * @deprecated This input breaks view encapsulation and is not recommended.\n * For simple cases (like colors), use `class` on the component itself, for\n * more complex usages, explicitly opt-in to break the view encapsulation.\n * This input is deprecated since 0.12.0 and will be removed in 0.13.0.\n */\n this.classes = [];\n faWarnIfParentNotExist(this.parent, 'FaLayersComponent', this.constructor.name);\n }\n ngOnChanges(changes) {\n if (changes) {\n const params = this.buildParams();\n this.updateContent(params);\n }\n }\n /**\n * Updating params by component props.\n */\n buildParams() {\n const classOpts = {\n flip: this.flip,\n animation: this.animation,\n border: this.border,\n inverse: this.inverse,\n size: this.size || null,\n pull: this.pull || null,\n rotate: this.rotate || null,\n fixedWidth: this.fixedWidth\n };\n const parsedTransform = typeof this.transform === 'string' ? parse.transform(this.transform) : this.transform;\n return {\n transform: parsedTransform,\n classes: [...faClassList(classOpts), ...this.classes],\n title: this.title,\n styles: this.styles\n };\n }\n updateContent(params) {\n this.renderedHTML = this.sanitizer.bypassSecurityTrustHtml(text(this.content || '', params).html.join('\\n'));\n }\n static {\n this.ɵfac = function FaLayersTextComponent_Factory(t) {\n return new (t || FaLayersTextComponent)(i0.ɵɵdirectiveInject(FaLayersComponent, 8), i0.ɵɵdirectiveInject(i2.DomSanitizer));\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: FaLayersTextComponent,\n selectors: [[\"fa-layers-text\"]],\n hostAttrs: [1, \"ng-fa-layers-text\"],\n hostVars: 1,\n hostBindings: function FaLayersTextComponent_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵhostProperty(\"innerHTML\", ctx.renderedHTML, i0.ɵɵsanitizeHtml);\n }\n },\n inputs: {\n content: \"content\",\n title: \"title\",\n styles: \"styles\",\n classes: \"classes\",\n spin: \"spin\",\n pulse: \"pulse\",\n flip: \"flip\",\n size: \"size\",\n pull: \"pull\",\n border: \"border\",\n inverse: \"inverse\",\n rotate: \"rotate\",\n fixedWidth: \"fixedWidth\",\n transform: \"transform\"\n },\n features: [i0.ɵɵNgOnChangesFeature],\n decls: 0,\n vars: 0,\n template: function FaLayersTextComponent_Template(rf, ctx) {},\n encapsulation: 2\n });\n }\n }\n return FaLayersTextComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet FontAwesomeModule = /*#__PURE__*/(() => {\n class FontAwesomeModule {\n static {\n this.ɵfac = function FontAwesomeModule_Factory(t) {\n return new (t || FontAwesomeModule)();\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: FontAwesomeModule\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n }\n return FontAwesomeModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FaConfig, FaDuotoneIconComponent, FaIconComponent, FaIconLibrary, FaLayersComponent, FaLayersCounterComponent, FaLayersTextComponent, FaStackComponent, FaStackItemSizeDirective, FontAwesomeModule };\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\n@NgModule({\r\n\timports: [CommonModule, MatSnackBarModule, FontAwesomeModule],\r\n\texports: [FontAwesomeModule],\r\n})\r\nexport class CommonUiModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatSnackBar, MatSnackBarHorizontalPosition, MatSnackBarVerticalPosition } from '@angular/material/snack-bar';\r\nimport { ComponentStore } from '@ngrx/component-store';\r\nimport { NotificationJsonModel } from '@siza-staff-care/shared/data';\r\nimport { Observable, tap, withLatestFrom } from 'rxjs';\r\n\r\ninterface ShowMessageOptions {\r\n\tmsg: string;\r\n\thorizontalPosition?: MatSnackBarHorizontalPosition;\r\n\tverticalPosition?: MatSnackBarVerticalPosition;\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class SnackbarService {\r\n\tconstructor(private store: SnackbarStore) {}\r\n\r\n\t/**\r\n\t * Shows a snackbar with the given message, using the defaults.\r\n\t * @param msg\r\n\t */\r\n\tshowMessage(\r\n\t\tmsg: string,\r\n\t\topts?: { horizontalPosition?: MatSnackBarHorizontalPosition; verticalPosition?: MatSnackBarVerticalPosition },\r\n\t) {\r\n\t\tthis.store.showMessage({ msg, ...opts });\r\n\t}\r\n\r\n\tshowErrorMessage(msg: string) {\r\n\t\tthis.store.showErrorMessage(msg);\r\n\t}\r\n\r\n\tshowNotificationMessage(note: NotificationJsonModel, verb = 'Updated') {\r\n\t\tconst staffCode = note.note_causer_staffCode || 'system';\r\n\t\tthis.showMessage(`${verb} by ${staffCode}`);\r\n\t}\r\n}\r\n\r\ninterface SnackbarState {\r\n\tsuppress?: boolean;\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class SnackbarStore extends ComponentStore {\r\n\tconstructor(private snackbar: MatSnackBar) {\r\n\t\tsuper({});\r\n\t}\r\n\r\n\tprivate readonly suppress$ = this.select(({ suppress }) => !!suppress);\r\n\r\n\treadonly setSuppress = this.updater((state, suppress: boolean) => ({\r\n\t\t...state,\r\n\t\tsuppress,\r\n\t}));\r\n\r\n\treadonly showMessage = this.effect((opts$: Observable) =>\r\n\t\topts$.pipe(\r\n\t\t\twithLatestFrom(this.suppress$),\r\n\t\t\ttap(([opts, suppress]) => {\r\n\t\t\t\tif (suppress) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.snackbar.open(opts.msg, '', {\r\n\t\t\t\t\thorizontalPosition: opts?.horizontalPosition || 'end',\r\n\t\t\t\t\tverticalPosition: opts?.verticalPosition || 'bottom',\r\n\t\t\t\t});\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly showErrorMessage = this.effect((msg$: Observable) =>\r\n\t\tmsg$.pipe(\r\n\t\t\ttap((msg) => {\r\n\t\t\t\tthis.snackbar.open(msg, 'Close', {\r\n\t\t\t\t\tduration: 0,\r\n\t\t\t\t\thorizontalPosition: 'center',\r\n\t\t\t\t\tverticalPosition: 'top',\r\n\t\t\t\t\tpanelClass: 'error',\r\n\t\t\t\t});\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n}\r\n","import { assertInInjectionContext, Injector, inject, runInInjectionContext } from '@angular/core';\nfunction assertInjector(fn, injector, runner) {\n !injector && assertInInjectionContext(fn);\n const assertedInjector = injector ?? inject(Injector);\n if (!runner) return assertedInjector;\n return runInInjectionContext(assertedInjector, runner);\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { assertInjector };\n","import { inject, runInInjectionContext, InjectionToken, ENVIRONMENT_INITIALIZER } from '@angular/core';\nimport { assertInjector } from 'ngxtension/assert-injector';\nfunction createInjectFn(token) {\n return function ({\n injector,\n ...injectOptions\n } = {}) {\n injector = assertInjector(this, injector);\n return runInInjectionContext(injector, () => inject(token, injectOptions));\n };\n}\nfunction createProvideFn(token, factory, opts = {}) {\n const {\n deps = [],\n multi = false,\n extraProviders = []\n } = opts;\n return (value, isFunctionValue = false) => {\n let provider;\n if (typeof value !== 'undefined') {\n // TODO: (chau) maybe this can be made better\n const factory = typeof value === 'function' ? isFunctionValue ? () => value : value : () => value;\n provider = {\n provide: token,\n useFactory: factory,\n multi\n };\n } else {\n provider = {\n provide: token,\n useFactory: factory,\n deps: deps,\n multi\n };\n }\n return [extraProviders, provider];\n };\n}\n/**\n * `createInjectionToken` accepts a factory function and returns a tuple of `injectFn`, `provideFn`, and the `InjectionToken`\n * that the factory function is for.\n *\n * @param {Function} factory - Factory Function that returns the value for the `InjectionToken`\n * @param {CreateInjectionTokenOptions} options - object to control how the `InjectionToken` behaves\n * @returns {CreateInjectionTokenReturn}\n *\n * @example\n * ```ts\n * const [injectCounter, provideCounter, COUNTER] = createInjectionToken(() => signal(0));\n *\n * export class Counter {\n * counter = injectCounter(); // WritableSignal\n * }\n * ```\n */\nfunction createInjectionToken(factory, options) {\n const tokenName = factory.name || factory.toString();\n const opts = options ?? {\n isRoot: true\n };\n opts.isRoot ??= true;\n // NOTE: multi tokens cannot be a root token. It has to be provided (provideFn needs to be invoked)\n // for the 'multi' flag to work properly\n if (opts.multi) {\n opts.isRoot = false;\n }\n if (opts.isRoot) {\n if (opts.token) {\n throw new Error(`\\\ncreateInjectionToken is creating a root InjectionToken but an external token is passed in.\n`);\n }\n const token = new InjectionToken(`Token for ${tokenName}`, {\n factory: () => {\n if (opts.deps && Array.isArray(opts.deps)) {\n return factory(...opts.deps.map(dep => inject(dep)));\n }\n return factory();\n }\n });\n const injectFn = createInjectFn(token);\n return [injectFn, createProvideFn(token, factory, opts), token, () => ({\n provide: ENVIRONMENT_INITIALIZER,\n useValue: () => injectFn(),\n multi: true\n })];\n }\n const token = opts.token || new InjectionToken(`Token for ${tokenName}`);\n return [createInjectFn(token), createProvideFn(token, factory, opts), token, () => []];\n}\nfunction createNoopInjectionToken(description, options) {\n const token = options?.token || new InjectionToken(description);\n return [createInjectFn(token), createProvideFn(token, () => null, options || {}), token, () => {}];\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { createInjectionToken, createNoopInjectionToken };\n","import { inject } from '@angular/core';\r\nimport { ActivatedRoute, PRIMARY_OUTLET, Router } from '@angular/router';\r\nimport { createInjectionToken } from 'ngxtension/create-injection-token';\r\n\r\ntype SecondaryNavigationOptions = {\r\n\toutletName: string;\r\n\tcommands: unknown[];\r\n\toptions?: {\r\n\t\treplaceUrl?: boolean;\r\n\t\tqueryParams?: Record;\r\n\t\tstate?: Record;\r\n\t};\r\n};\r\n\r\n/**\r\n * Secondary route navigation service.\r\n * Returns a tuple with an injection token and a provider for that token.\r\n *\r\n * To use this service, inject the token and call the `navigateRouterToSecondaryOutlet` method.\r\n * The service must be provided somewhere - usually in the component that uses is.\r\n * Provide the service by calling provideSecondaryNavigation() in the providers array of the component.\r\n *\r\n * @example\r\n * ```ts\r\n *\r\n * providers: [provideSecondaryNavigation()]\r\n *\r\n *\r\n * private navigate = injectSecondaryNavigation();\r\n *\r\n * ...\r\n *\r\n * this.navigate.navigateRouterToSecondaryOutlet({\r\n * \t\toutletName: 'options',\r\n * \t\tcommands: ['options'],\r\n * })\r\n *\r\n * ```\r\n */\r\nexport const [injectSecondaryNavigation, provideSecondaryNavigation] = createInjectionToken(\r\n\t() => {\r\n\t\tconst router = inject(Router);\r\n\t\tconst route = inject(ActivatedRoute);\r\n\r\n\t\treturn {\r\n\t\t\t/**\r\n\t\t\t * Causes the router to navigate to commands in secondary outlet, relative to the current activated route.\r\n\t\t\t * @param {string} options.outletName - The name of the secondary outlet.\r\n\t\t\t * @param {string[]} options.commands - The commands to navigate to.\r\n\t\t\t * @param {NavigationExtras} options.options - The `NavigationExtras` options for the navigation.\r\n\t\t\t * @returns A promise from the router navigate method.\r\n\t\t\t *\r\n\t\t\t * @example\r\n\t\t\t * ```ts\r\n\t\t\t *\r\n\t\t\t * providers: [provideSecondaryNavigation()]\r\n\t\t\t *\r\n\t\t\t *\r\n\t\t\t * private navigate = injectSecondaryNavigation();\r\n\t\t\t *\r\n\t\t\t * ...\r\n\t\t\t *\r\n\t\t\t * this.navigate.navigateRouterToSecondaryOutlet({\r\n\t\t\t * \t\toutletName: 'options',\r\n\t\t\t * \t\tcommands: ['options'],\r\n\t\t\t * })\r\n\t\t\t *\r\n\t\t\t * ```\r\n\t\t\t *\r\n\t\t\t */\r\n\t\t\tnavigateRouterToSecondaryOutlet: ({ outletName, commands, options }: SecondaryNavigationOptions) => {\r\n\t\t\t\treturn navigateSecondary(router, route, outletName, commands, options);\r\n\t\t\t},\r\n\t\t};\r\n\t},\r\n\t{\r\n\t\tisRoot: false,\r\n\t},\r\n);\r\n\r\n/**\r\n * Causes the router to navigate to some commands in secondary outlet, relative to a provided ActivatedRoute.\r\n * @returns\r\n */\r\nexport const navigateRouterToSecondaryOutlet = ({\r\n\trouter,\r\n\troute,\r\n\toutletName,\r\n\tcommands,\r\n\toptions,\r\n}: {\r\n\trouter: Router;\r\n\troute: ActivatedRoute;\r\n\toutletName: string;\r\n\tcommands: unknown[];\r\n\toptions?: {\r\n\t\treplaceUrl?: boolean;\r\n\t\tqueryParams?: Record;\r\n\t\tstate?: Record;\r\n\t};\r\n}) => {\r\n\treturn navigateSecondary(router, route, outletName, commands, options);\r\n};\r\n\r\n/**\r\n * Causes the router to navigate to some commands in secondary outlet, relative to a provided ActivatedRoute.\r\n * @param route\r\n * @param outletName\r\n * @param commands\r\n * @param replaceUrl\r\n */\r\nexport const navigateSecondary = (\r\n\trouter: Router,\r\n\troute: ActivatedRoute,\r\n\toutletName: string,\r\n\tcommands: string | unknown[],\r\n\toptions?: {\r\n\t\treplaceUrl?: boolean;\r\n\t\tqueryParams?: Record;\r\n\t\tqueryParamsHandling?: 'merge' | 'preserve' | '';\r\n\t\tstate?: Record;\r\n\t},\r\n) => {\r\n\tif (options && options.replaceUrl === undefined) {\r\n\t\toptions.replaceUrl = true;\r\n\t}\r\n\r\n\tif (options && options.queryParamsHandling === undefined) {\r\n\t\toptions.queryParamsHandling = 'merge';\r\n\t}\r\n\r\n\toptions ??= {\r\n\t\treplaceUrl: true,\r\n\t};\r\n\tconst primaryRouteUrl = router.createUrlTree(['.'], { relativeTo: route }).root.children[PRIMARY_OUTLET].toString();\r\n\r\n\treturn router.navigate(\r\n\t\t[primaryRouteUrl, { outlets: { [outletName]: Array.isArray(commands) ? commands : [commands] } }],\r\n\t\toptions,\r\n\t);\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { EditDto, UseCaseController } from '@siza-staff-care/shared/data';\r\nimport { CrudService } from '@siza-staff-care/shared/global-services';\r\nimport { ICrudAdaptor } from './crud-adaptor-interface';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class StandardCrudAdaptor implements ICrudAdaptor {\r\n\tconstructor(private readonly crud: CrudService) {}\r\n\r\n\topen(type: string, lookupTypes?: string[], opts?: TController | undefined) {\r\n\t\treturn this.crud.open(type, lookupTypes, opts);\r\n\t}\r\n\r\n\tcreate(type: string, data?: Record | undefined) {\r\n\t\treturn this.crud.create(type, data);\r\n\t}\r\n\r\n\tselect(type: string, oid?: string | undefined, data?: Record) {\r\n\t\treturn this.crud.select(type, oid, data);\r\n\t}\r\n\r\n\tsave(\r\n\t\ttype: string,\r\n\t\tedition: number,\r\n\t\toid: string,\r\n\t\tmodel: TEditDto,\r\n\t\topts?: Record | undefined,\r\n\t) {\r\n\t\treturn this.crud.save(type, edition, oid, model, opts);\r\n\t}\r\n\r\n\tdelete(type: string, oid: string, opts?: Record | undefined) {\r\n\t\treturn this.crud.delete(type, oid, opts);\r\n\t}\r\n}\r\n","import { inject, Injectable, isDevMode, OnDestroy } from '@angular/core';\r\nimport { UntypedFormGroup, ValidationErrors } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ComponentStore, OnStoreInit, tapResponse } from '@ngrx/component-store';\r\nimport {\r\n\tAccessLevel,\r\n\tAccessLevels,\r\n\tAppStateService,\r\n\textractOptions,\r\n\tUserAccessService,\r\n} from '@siza-staff-care/shared/app-state';\r\nimport {\r\n\tAdminController,\r\n\tAdminScreenConfigDto,\r\n\tAggregateResultDto,\r\n\tApiDtoModel,\r\n\tCollHolder,\r\n\tdecode,\r\n\tEditDto,\r\n\tInfoDto,\r\n\tisNewOid,\r\n\tLookupType,\r\n\tobfuscate,\r\n\tobfuscateNew,\r\n\tScreenConfigDto,\r\n} from '@siza-staff-care/shared/data';\r\nimport { GenericDialogsService, SaveChangesResult } from '@siza-staff-care/shared/generic-dialogs';\r\nimport { GenericErrorHandlerService } from '@siza-staff-care/shared/global-errors';\r\nimport {\r\n\tAuthStore,\r\n\tControlSecurityService,\r\n\tCrudService,\r\n\tEditFlags_Create,\r\n\tEditFlags_Update,\r\n\tEditorSecurityService,\r\n\tgetAccessLevelForCurrentScreen,\r\n} from '@siza-staff-care/shared/global-services';\r\nimport { SnackbarService } from '@siza-staff-care/shared/ui-components/common-ui';\r\nimport {\r\n\tAllowedEditButtons,\r\n\tEditButtonsVm,\r\n\tEditListVm,\r\n\tGlobalStoreRegistryStore,\r\n\tIStore,\r\n\tIStore_Internal,\r\n\tRouteToRootOptions,\r\n\tStoreRegistry,\r\n} from '@siza-staff-care/shared/ui-components/store-registry';\r\nimport { assertDefined, diff, makeObservableBool, typedClone } from '@siza-staff-care/shared/utils';\r\nimport { NgEventBus } from 'ng-event-bus';\r\nimport {\r\n\tcatchError,\r\n\tcombineLatest,\r\n\tdebounceTime,\r\n\tdefer,\r\n\tdelay,\r\n\tEMPTY,\r\n\texhaustMap,\r\n\tfilter,\r\n\tfinalize,\r\n\tfrom,\r\n\tmap,\r\n\tmergeMap,\r\n\tObservable,\r\n\tof,\r\n\tstartWith,\r\n\tSubject,\r\n\tswitchMap,\r\n\ttake,\r\n\ttakeUntil,\r\n\ttap,\r\n\twithLatestFrom,\r\n} from 'rxjs';\r\nimport { ICrudAdaptor } from './crud-adaptor-interface';\r\nimport { navigateRouterToSecondaryOutlet, navigateSecondary } from './secondary-outlet-navigator';\r\nimport { StandardCrudAdaptor } from './standard-crud-adaptor';\r\n\r\nconst DEBUG = false;\r\nconst DEBUG_DIFF = false;\r\nconst DEBUG_CHANGES = false;\r\n\r\nexport interface GenericEditState<\r\n\tTEdit extends EditDto,\r\n\tTInfo extends InfoDto,\r\n\tTAdditionalState extends object,\r\n\tTController extends AdminController,\r\n> {\r\n\tcreateOid: string | undefined;\r\n\toidObfuscated: string | undefined;\r\n\tlist: TInfo[];\r\n\tedit: TEdit | undefined;\r\n\tdtos: unknown[] | undefined;\r\n\tpriorEdit: TEdit | undefined;\r\n\tloadingList: boolean;\r\n\tloadingEdit: boolean;\r\n\thasUnsavedChanges: boolean;\r\n\tisNewInstance: boolean;\r\n\tisEditing: boolean;\r\n\tform: UntypedFormGroup | undefined;\r\n\tformRawValue: unknown | undefined;\r\n\tscreenConfig: AdminScreenConfigDto | undefined;\r\n\tcontrollerParams?: TController;\r\n\tloadCount?: number;\r\n\tselectCount: number;\r\n\tallowedEditButtons: AllowedEditButtons;\r\n\tisActive: boolean;\r\n\tisAlwaysSavable: boolean;\r\n\turl?: string;\r\n\tactivatedRoute?: ActivatedRoute;\r\n\toperationInProgress?: boolean;\r\n\tscreenAccessLevel?: AccessLevel;\r\n\tconfirmWarningNextSave?: boolean;\r\n\tinsteadOfSelect?: TEdit;\r\n\tformPending: boolean;\r\n\tforcingClear: boolean;\r\n\tignoreClear: boolean;\r\n\tpreventClearNewDelete: boolean;\r\n\thasOpened: boolean;\r\n\tforceOnEditSetForNext?: boolean;\r\n\tsuppressHandleLoadError?: boolean;\r\n\tcanSaveOverride?: boolean;\r\n\twarnings?: string[];\r\n\tadditionalState?: TAdditionalState;\r\n}\r\n\r\nconst defaultState = {\r\n\tcreateOid: undefined,\r\n\toidObfuscated: undefined,\r\n\tlist: [],\r\n\tedit: undefined,\r\n\tdtos: undefined,\r\n\tpriorEdit: undefined,\r\n\tloadingList: false,\r\n\tloadingEdit: false,\r\n\thasUnsavedChanges: false,\r\n\tisNewInstance: false,\r\n\tisEditing: false,\r\n\tform: undefined,\r\n\tformRawValue: undefined,\r\n\tscreenConfig: undefined,\r\n\tisActive: true,\r\n\tisAlwaysSavable: false,\r\n\tselectCount: 0,\r\n\tformPending: false,\r\n\tforcingClear: false,\r\n\tignoreClear: false,\r\n\tpreventClearNewDelete: false,\r\n\thasOpened: false,\r\n\toperationInProgress: false,\r\n\tallowedEditButtons: {\r\n\t\tallowNew: true,\r\n\t\tallowDelete: true,\r\n\t},\r\n};\r\n\r\nexport interface SaveResult extends AggregateResultDto {\r\n\tdtos: [T, CollHolder];\r\n}\r\n\r\n@Injectable()\r\nexport abstract class GenericEditStore<\r\n\t\tTEdit extends EditDto,\r\n\t\tTInfo extends InfoDto = TEdit,\r\n\t\tTAdditionalState extends object = Record,\r\n\t\tTController extends AdminController = AdminController,\r\n\t>\r\n\textends ComponentStore>\r\n\timplements IStore, OnStoreInit, OnDestroy\r\n{\r\n\tprotected _dialogs = inject(GenericDialogsService);\r\n\tprotected _crud = inject(CrudService);\r\n\tprotected _snackbar = inject(SnackbarService);\r\n\tprotected _router = inject(Router);\r\n\tprotected _eventBus = inject(NgEventBus);\r\n\tprotected _genericErrorHandler = inject(GenericErrorHandlerService);\r\n\tprotected _appState = inject(AppStateService);\r\n\tprotected _userAccess = inject(UserAccessService);\r\n\tprotected _crudAdaptor: ICrudAdaptor = inject(StandardCrudAdaptor);\r\n\tprotected _controlSecurity = inject(ControlSecurityService);\r\n\tprivate _globalRegistry = inject(GlobalStoreRegistryStore);\r\n\tprivate _auth = inject(AuthStore);\r\n\tprotected editorSecurity = inject(EditorSecurityService);\r\n\r\n\tprotected storeRegistry? = inject(StoreRegistry, { optional: true });\r\n\r\n\tconstructor() {\r\n\t\tsuper(defaultState);\r\n\r\n\t\tthis.setAllowedEditButtons({});\r\n\t\tthis.registerStoreOnNextTick();\r\n\t}\r\n\r\n\t//\r\n\t// Plain properties\r\n\t//\r\n\tlookupTypes: LookupType[] = [];\r\n\tabstract niceName: string;\r\n\tabstract controllerType: string;\r\n\ttabName?: string;\r\n\tstoreKey?: string;\r\n\tsaveButtonLabel = 'Save';\r\n\tprotected ignoreEditOid = false;\r\n\tprotected replaceEditUrl = false;\r\n\tprotected allowRerouteToEdit = false;\r\n\t/**\r\n\t * Allows overriding the complete text used in the unsaved changes dialog.\r\n\t */\r\n\tprotected saveChangesOverrideText = '';\r\n\r\n\tprotected options: Record = {};\r\n\r\n\tget canRouteToCreateNew() {\r\n\t\treturn !!this.get().activatedRoute;\r\n\t}\r\n\r\n\tprivate readonly subCancelSelection = new Subject();\r\n\treadonly cancelSelection$ = this.subCancelSelection.asObservable();\r\n\r\n\t//\r\n\t// Selectors\r\n\t//\r\n\treadonly list$ = this.select(({ list }) => list);\r\n\treadonly edit$ = this.select(({ edit }) => edit);\r\n\treadonly dtos$ = this.select(({ dtos }) => dtos);\r\n\treadonly priorEdit$ = this.select(({ priorEdit }) => priorEdit);\r\n\treadonly hasEdit$ = this.select(({ edit }) => !!edit, { debounce: true });\r\n\treadonly loadingList$ = this.select(({ loadingList }) => loadingList);\r\n\treadonly loadingEdit$ = this.select(({ loadingEdit }) => loadingEdit);\r\n\treadonly isEditing$ = this.select(({ isEditing }) => isEditing, { debounce: true });\r\n\treadonly hasUnsavedChanges$ = this.select(({ hasUnsavedChanges }) => hasUnsavedChanges);\r\n\treadonly canDelete$ = this.select(({ edit, isNewInstance }) => !!edit && !isNewInstance);\r\n\treadonly canClearNewDelete$ = this.select(({ preventClearNewDelete }) => !preventClearNewDelete);\r\n\treadonly inProgress$ = this.select((state) => state.loadingEdit || state.loadingList);\r\n\treadonly warnings$ = this.select(({ warnings }) => warnings || []);\r\n\treadonly hasWarnings$ = this.select(this.warnings$, (warnings) => warnings?.length > 0);\r\n\r\n\treadonly form$ = this.select(({ form }) => form);\r\n\treadonly formRawValue$ = this.select(({ formRawValue }) => formRawValue);\r\n\treadonly isNewInstance$ = this.select(({ isNewInstance }) => isNewInstance);\r\n\treadonly isExistingInstance$ = this.select(({ isNewInstance }) => !isNewInstance);\r\n\treadonly screenConfig$ = this.select(({ screenConfig }) => screenConfig);\r\n\treadonly allowedEditButtons$ = this.select(({ allowedEditButtons }) => allowedEditButtons);\r\n\treadonly activatedRoute$ = this.select(({ activatedRoute }) => activatedRoute);\r\n\r\n\treadonly loadCount$ = this.select(({ loadCount }) => loadCount, { debounce: true });\r\n\treadonly screenReadOnly$ = this.select(({ screenAccessLevel }) => screenAccessLevel === AccessLevels.ReadOnly);\r\n\r\n\treadonly additionalState$ = this.select(({ additionalState }) => additionalState);\r\n\r\n\treadonly obfuscatedOid$ = this.select(({ oidObfuscated }) => oidObfuscated);\r\n\treadonly controllerParams$ = this.select(({ controllerParams }) => controllerParams);\r\n\treadonly isActive$ = this.select(({ isActive }) => isActive);\r\n\treadonly isAlwaysSavable$ = this.select(({ isAlwaysSavable }) => isAlwaysSavable);\r\n\treadonly operationInProgress$ = this.select(({ operationInProgress }) => operationInProgress);\r\n\treadonly hasNonNewEdit$ = this.select(\r\n\t\tthis.edit$,\r\n\t\tthis.isNewInstance$,\r\n\t\t(edit, isNewInstance) => !!(edit && !isNewInstance),\r\n\t);\r\n\treadonly isClear$ = this.select(this.edit$, (edit) => !edit);\r\n\treadonly confirmWarningNextSave$ = this.select(({ confirmWarningNextSave }) => !!confirmWarningNextSave);\r\n\r\n\treadonly isSavable$ = this.select(\r\n\t\tthis.hasUnsavedChanges$,\r\n\t\tthis.isAlwaysSavable$,\r\n\t\t(hasUnsavedChanges, isAlwaysSavable) => hasUnsavedChanges || isAlwaysSavable,\r\n\t);\r\n\treadonly formPending$ = this.select(({ formPending }) => formPending);\r\n\treadonly opened$ = this.select(({ hasOpened }) => hasOpened);\r\n\treadonly preventClearNewDelete$ = this.select(this.canClearNewDelete$, (canClearNewDelete) => !canClearNewDelete);\r\n\treadonly suppressHandleLoadError$ = this.select(({ suppressHandleLoadError }) => !!suppressHandleLoadError);\r\n\treadonly canSaveOverride$ = this.select(({ canSaveOverride }) => canSaveOverride);\r\n\tprotected forceAllowSaveOverride$: Observable = of(undefined);\r\n\r\n\treadonly allowedEditButtons_hideAll$ = this.allowedEditButtons$.pipe(\r\n\t\tswitchMap((allowedEditButtons) => makeObservableBool(allowedEditButtons.hideAll)),\r\n\t);\r\n\r\n\treadonly allowedEditButtons_allowNew$ = this.allowedEditButtons$.pipe(\r\n\t\tswitchMap((allowedEditButtons) => makeObservableBool(allowedEditButtons.allowNew, true)),\r\n\t);\r\n\r\n\treadonly allowedEditButtons_allowSave$ = this.allowedEditButtons$.pipe(\r\n\t\tswitchMap((allowedEditButtons) => makeObservableBool(allowedEditButtons.allowSave, true)),\r\n\t);\r\n\r\n\treadonly allowedEditButtons_allowRestore$ = this.allowedEditButtons$.pipe(\r\n\t\tswitchMap((allowedEditButtons) => makeObservableBool(allowedEditButtons.allowRestore, true)),\r\n\t);\r\n\r\n\treadonly allowedEditButtons_allowDelete$ = this.allowedEditButtons$.pipe(\r\n\t\tswitchMap((allowedEditButtons) => makeObservableBool(allowedEditButtons.allowDelete, true)),\r\n\t);\r\n\r\n\treadonly allowedEditButtons_allowClear$ = this.allowedEditButtons$.pipe(\r\n\t\tswitchMap((allowedEditButtons) => makeObservableBool(allowedEditButtons.allowClear, true)),\r\n\t);\r\n\r\n\t/**\r\n\t * Define a selector to determine whether the user can save the current edit, taking into account whether\r\n\t * it's dirty, and if they're allowed to save by whether the save button is allowed, and also their security\r\n\t * settings (editor flags) for this store.\r\n\t */\r\n\treadonly allowSave$ = this.select(\r\n\t\tthis.allowedEditButtons_hideAll$,\r\n\t\tthis.allowedEditButtons_allowSave$,\r\n\t\tthis.hasUnsavedChanges$,\r\n\t\tthis.canSaveOverride$,\r\n\t\tthis.isNewInstance$,\r\n\t\t(hideAll, allowSave, hasUnsavedChanges, canSaveOverride, isNewInstance) => {\r\n\t\t\tif (hideAll || !allowSave || !hasUnsavedChanges) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Check security\r\n\t\t\tconst editFlags = this.editorSecurity.getEditorSecurity(this);\r\n\t\t\tconst canSave = isNewInstance ? !!(editFlags & EditFlags_Create) : !!(editFlags & EditFlags_Update);\r\n\r\n\t\t\tif (canSaveOverride !== undefined) {\r\n\t\t\t\treturn canSaveOverride && canSave;\r\n\t\t\t}\r\n\r\n\t\t\treturn canSave;\r\n\t\t},\r\n\t);\r\n\r\n\treadonly allowSave_EditorFlags$ = this.select(\r\n\t\tthis.allowedEditButtons_hideAll$,\r\n\t\tthis.allowedEditButtons_allowSave$,\r\n\t\tthis.canSaveOverride$,\r\n\t\tthis.isNewInstance$,\r\n\t\t(hideAll, allowSave, canSaveOverride, isNewInstance) => {\r\n\t\t\tif (hideAll || !allowSave) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// Check security\r\n\t\t\tconst editFlags = this.editorSecurity.getEditorSecurity(this);\r\n\t\t\tconst canSave = isNewInstance ? !!(editFlags & EditFlags_Create) : !!(editFlags & EditFlags_Update);\r\n\r\n\t\t\tif (canSaveOverride !== undefined) {\r\n\t\t\t\treturn canSaveOverride && canSave;\r\n\t\t\t}\r\n\r\n\t\t\treturn canSave;\r\n\t\t},\r\n\t);\r\n\r\n\tprivate readonly selectCount$ = this.select(({ selectCount }) => selectCount);\r\n\tprivate readonly selectedOid$ = this.select(({ createOid, edit, isNewInstance }) => {\r\n\t\tlet oid: string | undefined;\r\n\t\tif (edit) {\r\n\t\t\tif (isNewInstance) {\r\n\t\t\t\toid = createOid !== undefined ? createOid + '' : undefined;\r\n\t\t\t} else {\r\n\t\t\t\toid = edit.oid || '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn oid;\r\n\t});\r\n\r\n\treadonly hasOpened$ = this.select(({ hasOpened }) => !!hasOpened);\r\n\r\n\treadonly realOid$ = combineLatest([this.selectedOid$, this.selectCount$]).pipe(\r\n\t\tmap(([realOid]) => {\r\n\t\t\trealOid = realOid || '';\r\n\t\t\treturn realOid;\r\n\t\t}),\r\n\t);\r\n\r\n\tprotected isScreenReadonly$() {\r\n\t\treturn defer(() => {\r\n\t\t\treturn of(this.isScreenReadonly);\r\n\t\t});\r\n\t}\r\n\r\n\tget isScreenReadonly() {\r\n\t\tconst access = getAccessLevelForCurrentScreen(this._router, this._userAccess);\r\n\t\treturn access === AccessLevels.ReadOnly;\r\n\t}\r\n\r\n\tprivate readonly insteadOfSelect$ = this.select(({ insteadOfSelect }) => insteadOfSelect);\r\n\treadonly ignoreClear$ = this.select(({ ignoreClear }) => ignoreClear);\r\n\r\n\treadonly forceOnEditSetForNext$ = this.select(({ forceOnEditSetForNext }) => forceOnEditSetForNext);\r\n\r\n\tprivate subSaved = new Subject();\r\n\treadonly saved$ = this.subSaved.asObservable();\r\n\r\n\tprivate subDeleted = new Subject();\r\n\treadonly deleted$ = this.subDeleted.asObservable();\r\n\r\n\tprivate subEditOrCreateComplete = new Subject();\r\n\teditOrCreateComplete$ = this.subEditOrCreateComplete.asObservable();\r\n\r\n\tprivate niceName$ = defer(() => of(this.niceName));\r\n\tprivate saveButtonLabel$ = defer(() => of(this.saveButtonLabel));\r\n\r\n\treadonly buttonsVm$: Observable = this.select({\r\n\t\thideAll: this.allowedEditButtons_hideAll$,\r\n\t\tallowNew: this.allowedEditButtons_allowNew$,\r\n\t\tallowSave: this.allowedEditButtons_allowSave$,\r\n\t\tallowRestore: this.allowedEditButtons_allowRestore$,\r\n\t\tallowDelete: this.allowedEditButtons_allowDelete$,\r\n\t\tallowClear: this.allowedEditButtons_allowClear$,\r\n\r\n\t\tallowSave_EditorFlags: this.allowSave_EditorFlags$,\r\n\r\n\t\thasEdit: this.hasEdit$,\r\n\t\tisSavable: this.isSavable$,\r\n\t\tformPending: this.formPending$,\r\n\t\thasUnsavedChanges: this.hasUnsavedChanges$,\r\n\t\tisNewInstance: this.isNewInstance$,\r\n\t\tcanDelete: this.canDelete$,\r\n\t\tcanClearNewDelete: this.canClearNewDelete$,\r\n\r\n\t\tinProgress: this.inProgress$,\r\n\r\n\t\tniceName: this.niceName$,\r\n\t\tsaveButtonLabel: this.saveButtonLabel$,\r\n\t});\r\n\r\n\treadonly editListVm$: Observable = this.select({\r\n\t\tlist: this.list$,\r\n\t\tedit: this.edit$,\r\n\t\trealOid: this.realOid$,\r\n\t\tloadingList: this.loadingList$,\r\n\t\tloadingEdit: this.loadingEdit$,\r\n\t\tisEditing: this.isEditing$,\r\n\t\tloadCount: this.loadCount$,\r\n\t\thasOpened: this.hasOpened$,\r\n\t\thasEdit: this.hasEdit$,\r\n\t});\r\n\r\n\treadonly editVm$ = this.select({\r\n\t\tedit: this.edit$,\r\n\t\tloadingEdit: this.loadingEdit$,\r\n\t\tinProgress: this.inProgress$,\r\n\t});\r\n\r\n\tget isForcingClear() {\r\n\t\treturn this.get().forcingClear;\r\n\t}\r\n\r\n\t/**\r\n\t * Synchronously gets whether the current edit is new or not.\r\n\t */\r\n\tget isNewInstance() {\r\n\t\tconst { isNewInstance } = this.get();\r\n\t\treturn isNewInstance;\r\n\t}\r\n\r\n\t/**\r\n\t * Synchronously gets the list.\r\n\t */\r\n\tget list() {\r\n\t\tconst { list } = this.get();\r\n\t\treturn list;\r\n\t}\r\n\r\n\t/**\r\n\t * Synchronously returns the obfuscated oid.\r\n\t */\r\n\tget oidObfuscated() {\r\n\t\treturn this.get().oidObfuscated;\r\n\t}\r\n\r\n\t/**\r\n\t * Synchronously returns the decoded version of the obfuscated oid.\r\n\t */\r\n\tget oidDecoded() {\r\n\t\tif (this.oidObfuscated) {\r\n\t\t\treturn decode(this.oidObfuscated);\r\n\t\t}\r\n\r\n\t\treturn '';\r\n\t}\r\n\r\n\tget isReadOnly() {\r\n\t\treturn this._controlSecurity.isCurrentScreenReadOnly();\r\n\t}\r\n\r\n\tget hasOpened() {\r\n\t\treturn this.get().hasOpened;\r\n\t}\r\n\r\n\tget activatedRoute() {\r\n\t\treturn this.get().activatedRoute;\r\n\t}\r\n\r\n\t//\r\n\t// Updaters\r\n\t//\r\n\r\n\tprotected readonly patchAdditional = this.updater((state, additional: Partial) => {\r\n\t\treturn {\r\n\t\t\t...state,\r\n\t\t\tadditionalState: {\r\n\t\t\t\t...state.additionalState,\r\n\t\t\t\t...additional,\r\n\t\t\t} as TAdditionalState,\r\n\t\t};\r\n\t});\r\n\r\n\t/**\r\n\t * Allows setting an \"edit\" object directly, bypassing the CRUD select from the server.\r\n\t */\r\n\tprotected readonly setInsteadOfSelect = this.updater((state, insteadOfSelect: TEdit | undefined) => ({\r\n\t\t...state,\r\n\t\tinsteadOfSelect,\r\n\t}));\r\n\r\n\treadonly setList = this.effect((list$: Observable) =>\r\n\t\tlist$.pipe(\r\n\t\t\ttap((list) => {\r\n\t\t\t\tthis.onListSet(list);\r\n\t\t\t\tthis.patchState({ list: list || [] });\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly setDtos = this.updater((state, dtos: unknown[] | undefined) => {\r\n\t\treturn {\r\n\t\t\t...state,\r\n\t\t\tdtos,\r\n\t\t};\r\n\t});\r\n\r\n\treadonly setLoadingList = this.updater((state, loadingList: boolean) => ({\r\n\t\t...state,\r\n\t\tloadingList,\r\n\t}));\r\n\r\n\treadonly setLoadingEdit = this.updater((state, loadingEdit: boolean) => ({\r\n\t\t...state,\r\n\t\tloadingEdit,\r\n\t}));\r\n\r\n\treadonly setIsEditing = this.updater((state, isEditing: boolean) => ({\r\n\t\t...state,\r\n\t\tisEditing,\r\n\t}));\r\n\r\n\treadonly setIsNewInstance = this.updater((state, isNewInstance: boolean) => ({\r\n\t\t...state,\r\n\t\tisNewInstance,\r\n\t}));\r\n\r\n\treadonly setForm = this.updater((state, form: UntypedFormGroup | undefined) => ({\r\n\t\t...state,\r\n\t\tform,\r\n\t}));\r\n\r\n\treadonly setCreateOid = this.updater((state, createOid: string | undefined) => ({\r\n\t\t...state,\r\n\t\tcreateOid,\r\n\t}));\r\n\r\n\treadonly setScreenConfig = this.updater((state, screenConfig: AdminScreenConfigDto | undefined) => ({\r\n\t\t...state,\r\n\t\tscreenConfig,\r\n\t}));\r\n\r\n\treadonly bumpLoadCount = this.updater((state) => {\r\n\t\treturn {\r\n\t\t\t...state,\r\n\t\t\tloadCount: state.loadCount ? state.loadCount + 1 : 1,\r\n\t\t};\r\n\t});\r\n\r\n\treadonly setAllowedEditButtons = this.updater((state, allowedEditButtons: AllowedEditButtons) => {\r\n\t\t// Ensure the hideAll flag is clear if undefined to prevent buttons from being hidden\r\n\t\t// when hideAll isn't configured.\r\n\t\tif (allowedEditButtons.hideAll === undefined) {\r\n\t\t\tallowedEditButtons.hideAll = false;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\t...state,\r\n\t\t\tallowedEditButtons,\r\n\t\t};\r\n\t});\r\n\r\n\treadonly _setOidObfuscated = this.effect((oidObfuscated$: Observable) =>\r\n\t\toidObfuscated$.pipe(\r\n\t\t\ttap((oidObfuscated) => {\r\n\t\t\t\tthis.patchState({ oidObfuscated });\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly setIsActive = this.updater((state, isActive: boolean) => ({\r\n\t\t...state,\r\n\t\tisActive,\r\n\t}));\r\n\r\n\treadonly setUrl = this.updater((state, url: string | undefined) => ({\r\n\t\t...state,\r\n\t\turl,\r\n\t}));\r\n\r\n\treadonly setIsAlwaysSavable = this.updater((state, isAlwaysSavable: boolean) => ({\r\n\t\t...state,\r\n\t\tisAlwaysSavable,\r\n\t}));\r\n\r\n\treadonly setOperationInProgress = this.updater((state, operationInProgress: boolean) => ({\r\n\t\t...state,\r\n\t\toperationInProgress,\r\n\t}));\r\n\r\n\tprivate readonly setForceOnEditSetForNext = this.updater((state, forceOnEditSetForNext: boolean) => ({\r\n\t\t...state,\r\n\t\tforceOnEditSetForNext,\r\n\t}));\r\n\r\n\t//\r\n\t// Effects\r\n\t//\r\n\r\n\treadonly overrideCanSave = this.effect((canSaveOverride$: Observable) =>\r\n\t\tcanSaveOverride$.pipe(\r\n\t\t\ttap((canSaveOverride) => {\r\n\t\t\t\tthis.patchState({ canSaveOverride });\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly _setEdit = this.effect((edit$: Observable) =>\r\n\t\tedit$.pipe(\r\n\t\t\twithLatestFrom(this.edit$, this.forceOnEditSetForNext$),\r\n\t\t\ttap(([edit, oldEdit, forceOnEditSetForNext]) => {\r\n\t\t\t\tedit = this.transformEdit(edit);\r\n\t\t\t\tthis.patchState({ edit: edit || undefined });\r\n\t\t\t\tif (this.ignoreEditOid || oldEdit?.oid !== edit?.oid || forceOnEditSetForNext || (edit && !edit.oid)) {\r\n\t\t\t\t\tthis.onEditSet(edit);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.patchState({\r\n\t\t\t\t\tpriorEdit: edit ? typedClone(edit) : undefined,\r\n\t\t\t\t\thasUnsavedChanges: false,\r\n\t\t\t\t\tforceOnEditSetForNext: false,\r\n\t\t\t\t});\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly setSuppressHandleLoadError = this.effect((suppressHandleLoadError$: Observable) =>\r\n\t\tsuppressHandleLoadError$.pipe(\r\n\t\t\ttap((suppressHandleLoadError) => {\r\n\t\t\t\tthis.patchState({\r\n\t\t\t\t\tsuppressHandleLoadError,\r\n\t\t\t\t});\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly setUpdatedEdit = this.effect((edit$: Observable) =>\r\n\t\tedit$.pipe(\r\n\t\t\ttap((edit) => {\r\n\t\t\t\tif (edit) {\r\n\t\t\t\t\tedit.ed = (edit.ed ?? 0) + 1;\r\n\t\t\t\t}\r\n\t\t\t\tthis.patchState({\r\n\t\t\t\t\tedit,\r\n\t\t\t\t\thasUnsavedChanges: this.protectUnsavedChangesFromBecomingTrueOnReadOnlyScreen(true),\r\n\t\t\t\t});\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly setUpdatedEditNoChanges = this.effect((edit$: Observable) =>\r\n\t\tedit$.pipe(\r\n\t\t\ttap((edit) => {\r\n\t\t\t\tif (edit) {\r\n\t\t\t\t\tedit.ed = (edit.ed ?? 0) + 1;\r\n\t\t\t\t}\r\n\t\t\t\tthis.patchState({\r\n\t\t\t\t\tedit,\r\n\t\t\t\t});\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\tprivate readonly registerStoreOnNextTick = this.effect((trigger$) =>\r\n\t\ttrigger$.pipe(\r\n\t\t\tdelay(0),\r\n\t\t\ttap(() => {\r\n\t\t\t\tthis._globalRegistry.registerStore(this);\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly ignoreNextClear = this.effect((trigger$) =>\r\n\t\ttrigger$.pipe(\r\n\t\t\ttap(() => {\r\n\t\t\t\tthis.setIgnoreClear(true);\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\tprivate readonly setIgnoreClear = this.effect((ignoreClear$: Observable) =>\r\n\t\tignoreClear$.pipe(\r\n\t\t\ttap((ignoreClear) => {\r\n\t\t\t\tthis.patchState({ ignoreClear });\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly registerActivatedRoute = this.effect((route$: Observable) =>\r\n\t\troute$.pipe(\r\n\t\t\ttap((route) => {\r\n\t\t\t\tthis.patchState({\r\n\t\t\t\t\tactivatedRoute: route,\r\n\t\t\t\t});\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly setControllerParameters = this.effect((controllerParams$: Observable) => {\r\n\t\treturn controllerParams$.pipe(\r\n\t\t\ttap((controllerParams) => {\r\n\t\t\t\tthis.patchState({\r\n\t\t\t\t\tcontrollerParams,\r\n\t\t\t\t});\r\n\t\t\t}),\r\n\t\t);\r\n\t});\r\n\r\n\treadonly registerForm = this.effect((form$: Observable) => {\r\n\t\treturn form$.pipe(\r\n\t\t\tswitchMap((form) => {\r\n\t\t\t\tthis.setForm(form);\r\n\r\n\t\t\t\tif (form) {\r\n\t\t\t\t\treturn form.valueChanges.pipe(\r\n\t\t\t\t\t\tdebounceTime(50),\r\n\t\t\t\t\t\ttap(() => {\r\n\t\t\t\t\t\t\tconst rawValue = form.getRawValue();\r\n\t\t\t\t\t\t\tconst isDirty = form.dirty;\r\n\r\n\t\t\t\t\t\t\tthis.patchState({ formRawValue: rawValue });\r\n\t\t\t\t\t\t\tthis.setHasUnsavedChanges(isDirty);\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn EMPTY;\r\n\t\t\t}),\r\n\t\t);\r\n\t});\r\n\r\n\t/**\r\n\t * Force clearing the edit. Used by the deactivate guard when successfully routed.\r\n\t * Just calls a method which can be overridden to handle clearing the edit.\r\n\t *\r\n\t * Implemented for staff-records to force clearing the selected staff master when\r\n\t * re-navigated to from the menu.\r\n\t */\r\n\treadonly forceClear = this.effect((trigger$) =>\r\n\t\ttrigger$.pipe(\r\n\t\t\ttap(() => {\r\n\t\t\t\tthis.patchState({ forcingClear: true });\r\n\t\t\t\tthis.onForceClear();\r\n\t\t\t\tthis.patchState({ forcingClear: false });\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly open = this.effect((trigger$) => {\r\n\t\treturn trigger$.pipe(\r\n\t\t\ttap(() => {\r\n\t\t\t\tthis.setLoadingList(true);\r\n\t\t\t}),\r\n\t\t\twithLatestFrom(this.controllerParams$),\r\n\t\t\texhaustMap(([, controllerParams]) => {\r\n\t\t\t\treturn this._crudAdaptor\r\n\t\t\t\t\t.open(this.controllerType, this.lookupTypes, controllerParams)\r\n\t\t\t\t\t.pipe(\r\n\t\t\t\t\t\ttapResponse(\r\n\t\t\t\t\t\t\t(result: AdminScreenConfigDto) => {\r\n\t\t\t\t\t\t\t\tconst { objects, options } = result;\r\n\r\n\t\t\t\t\t\t\t\tconst list = objects;\r\n\t\t\t\t\t\t\t\tthis.setList(list);\r\n\t\t\t\t\t\t\t\tthis.setScreenConfig(result);\r\n\r\n\t\t\t\t\t\t\t\tthis.options = extractOptions(options);\r\n\r\n\t\t\t\t\t\t\t\tthis.afterOpen(result);\r\n\t\t\t\t\t\t\t\tthis.patchState({ hasOpened: true });\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t(err) => this._genericErrorHandler.handleError(err, this.niceName, 'Opening'),\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\tfinalize(() => this.setLoadingList(false)),\r\n\t\t\t\t\t);\r\n\t\t\t}),\r\n\t\t);\r\n\t});\r\n\r\n\treadonly editOrCreate = this.effect((obfuscatedOid$: Observable) =>\r\n\t\tobfuscatedOid$.pipe(\r\n\t\t\twithLatestFrom(this.form$, this.suppressHandleLoadError$),\r\n\t\t\t// Note: using exhaustMap rather than switchMap as we don't want to overwhelm Jade's limited supply of processes\r\n\t\t\t// with cancelled requests.\r\n\t\t\texhaustMap(([obfuscatedOid, form, suppressHandleLoadError]) => {\r\n\t\t\t\tif (this.vetoSelect()) {\r\n\t\t\t\t\tthis.signalEditOrCreateComplete(false);\r\n\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.setOidObfuscated(obfuscatedOid);\r\n\r\n\t\t\t\tconst decoded = decode(obfuscatedOid);\r\n\t\t\t\tconst decodedAsNumber = Number(decoded);\r\n\t\t\t\tif (isNaN(decodedAsNumber)) {\r\n\t\t\t\t\tthrow new Error('Invalid oid');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (DEBUG) /* eslint-disable */console.log(...oo_oo(`548382022_821_15_821_89_4`,`${this.niceName} editOrCreate ${obfuscatedOid} = ${decoded}`));\r\n\r\n\t\t\t\tconst isCreate = isNewOid(obfuscatedOid);\r\n\r\n\t\t\t\tconst handleResponse = ({ dtos, warnings }: { dtos: TEdit[]; warnings: string[] }) => {\r\n\t\t\t\t\tconst edit = dtos[0];\r\n\r\n\t\t\t\t\tthis.patchState({ warnings: warnings || [] });\r\n\r\n\t\t\t\t\tthis.setDtos(dtos);\r\n\t\t\t\t\tthis.setEdit(edit);\r\n\t\t\t\t\tisCreate ? this.setIsNewInstance(true) : this.setCreateOid(undefined);\r\n\t\t\t\t\tthis.bumpLoadCount();\r\n\r\n\t\t\t\t\tthis.setCreateOid(undefined);\r\n\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tform?.markAsPristine();\r\n\t\t\t\t\t\tform?.markAsUntouched();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.setHasUnsavedChanges(isCreate);\r\n\t\t\t\t\tthis.afterEditSet(edit);\r\n\t\t\t\t\tthis.onDtosSet(dtos);\r\n\r\n\t\t\t\t\tthis.signalEditOrCreateComplete(true);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tconst handleError = (err) => {\r\n\t\t\t\t\tif (!suppressHandleLoadError) {\r\n\t\t\t\t\t\tthis._genericErrorHandler.handleError(err, this.niceName, 'Getting');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.setIsEditing(false);\r\n\r\n\t\t\t\t\tthis.signalEditOrCreateComplete(false);\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (isCreate) {\r\n\t\t\t\t\tthis.setCreateOid(decoded);\r\n\r\n\t\t\t\t\tthis.setLoadingEdit(true);\r\n\t\t\t\t\tthis.setIsEditing(true);\r\n\r\n\t\t\t\t\treturn this.onGetCreateParams().pipe(\r\n\t\t\t\t\t\t// Opportunity to get some additional parameters for the create.\r\n\t\t\t\t\t\texhaustMap((createParams) => {\r\n\t\t\t\t\t\t\treturn this._crudAdaptor.create(this.controllerType, createParams).pipe(\r\n\t\t\t\t\t\t\t\ttapResponse(handleResponse, handleError),\r\n\t\t\t\t\t\t\t\tfinalize(() => this.setLoadingEdit(false)),\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// It's a Jade instance OID.\r\n\t\t\t\t\tthis.setLoadingEdit(true);\r\n\t\t\t\t\tthis.setIsEditing(true);\r\n\r\n\t\t\t\t\treturn this.onGetSelectParams().pipe(\r\n\t\t\t\t\t\twithLatestFrom(this.insteadOfSelect$),\r\n\t\t\t\t\t\t// Opportunity to get some additional parameters for the select.\r\n\t\t\t\t\t\texhaustMap(([selectParams, insteadOfSelect]) => {\r\n\t\t\t\t\t\t\tif (insteadOfSelect) {\r\n\t\t\t\t\t\t\t\tthis.setInsteadOfSelect(undefined);\r\n\r\n\t\t\t\t\t\t\t\tthis.setLoadingEdit(false);\r\n\t\t\t\t\t\t\t\tthis.setEdit(insteadOfSelect);\r\n\t\t\t\t\t\t\t\tthis.setIsEditing(true);\r\n\r\n\t\t\t\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\treturn this._crudAdaptor.select(this.controllerType, obfuscatedOid, selectParams).pipe(\r\n\t\t\t\t\t\t\t\ttapResponse(handleResponse, handleError),\r\n\t\t\t\t\t\t\t\tfinalize(() => {\r\n\t\t\t\t\t\t\t\t\tthis.setLoadingEdit(false);\r\n\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly restore = this.effect((trigger$) =>\r\n\t\ttrigger$.pipe(\r\n\t\t\twithLatestFrom(this.form$),\r\n\t\t\ttap(([, form]) => {\r\n\t\t\t\tconst prior = this.get().priorEdit;\r\n\t\t\t\tif (prior) {\r\n\t\t\t\t\tthis.setEdit(prior);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tform?.markAsUntouched();\r\n\t\t\t\tthis.onRestore(prior);\r\n\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tform?.markAsUntouched();\r\n\t\t\t\t\tform?.markAsPristine();\r\n\r\n\t\t\t\t\tthis.setHasUnsavedChanges(false);\r\n\t\t\t\t});\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\tprivate preventMutatingActionWhilePaintingSecurity(actionType: string): Observable {\r\n\t\treturn this._appState.isPaintingSecurity$.pipe(\r\n\t\t\ttake(1),\r\n\t\t\tdelay(0), // so the signalSaveSuccess(false) happens on the next tick to allow the observable to be subscribed to first.\r\n\t\t\tswitchMap((isPaintingSecurity) => {\r\n\t\t\t\tif (isPaintingSecurity) {\r\n\t\t\t\t\tthis._dialogs.message({\r\n\t\t\t\t\t\ttitle: `Can't ${actionType}`,\r\n\t\t\t\t\t\tmessage: `${actionType} is prohibited while painting security.`,\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.signalSaveSuccess(false);\r\n\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn of(undefined);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Drives the router to the edit UI for the given obfuscated oid.\r\n\t */\r\n\treadonly routeToEdit = this.effect((oid$: Observable) =>\r\n\t\toid$.pipe(\r\n\t\t\twithLatestFrom(this.activatedRoute$, this.edit$),\r\n\t\t\tswitchMap(([oid, route]) => {\r\n\t\t\t\tif (this.oidObfuscated === oid && this.allowRerouteToEdit) {\r\n\t\t\t\t\tthis.refreshCurrentEdit();\r\n\t\t\t\t\treturn of(true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn from(\r\n\t\t\t\t\tthis._router.navigate([oid], {\r\n\t\t\t\t\t\trelativeTo: route,\r\n\t\t\t\t\t\treplaceUrl: this.replaceEditUrl,\r\n\t\t\t\t\t\tqueryParamsHandling: 'merge',\r\n\t\t\t\t\t\tskipLocationChange: true,\r\n\t\t\t\t\t\tstate: {\r\n\t\t\t\t\t\t\t// Set a flag to prevent the store-aware-can-deactivate guard from re-routing to the base URL.\r\n\t\t\t\t\t\t\tpreventDeactivateReroute: true,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}),\r\n\t\t\t\t).pipe(\r\n\t\t\t\t\ttap((routedOk) => {\r\n\t\t\t\t\t\tif (routedOk) {\r\n\t\t\t\t\t\t\tthis.setOidObfuscated(oid);\r\n\t\t\t\t\t\t\tthis.onRouted();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tif (oid) {\r\n\t\t\t\t\t\t\t\tconst lastSelectedId = this.get().oidObfuscated;\r\n\t\t\t\t\t\t\t\tthis.subCancelSelection.next(lastSelectedId);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}),\r\n\t\t\t\t);\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\t/**\r\n\t * Drives the router to the edit UI for the given real (non-obfuscated) oid.\r\n\t */\r\n\treadonly routeToEditReal = this.effect((oid$: Observable) =>\r\n\t\toid$.pipe(\r\n\t\t\ttap((oid) => {\r\n\t\t\t\tif (this.oidDecoded === oid && !this.allowRerouteToEdit) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\toid = obfuscate(oid ?? '');\r\n\t\t\t\tthis.routeToEdit(oid);\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\t/**\r\n\t * Drives the router to the edit UI for the given real (non-obfuscated) oid, setting the replaceUrl flag to true.\r\n\t */\r\n\treadonly routeToEditReal_replaceUrl = this.effect((oid$: Observable) =>\r\n\t\toid$.pipe(\r\n\t\t\ttap((oid) => {\r\n\t\t\t\tconst oldReplace = this.replaceEditUrl;\r\n\t\t\t\tthis.replaceEditUrl = true;\r\n\t\t\t\tthis.routeToEditReal(oid);\r\n\t\t\t\tthis.replaceEditUrl = oldReplace;\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\t/**\r\n\t * Drives the router to the edit UI for a new instance.\r\n\t */\r\n\treadonly routeToCreateNew = this.effect((trigger$) =>\r\n\t\ttrigger$.pipe(\r\n\t\t\tswitchMap(() => {\r\n\t\t\t\t// An opportunity to have a custom create new (for new starter workflow)\r\n\t\t\t\treturn this.onInsteadOfCreate();\r\n\t\t\t}),\r\n\t\t\twithLatestFrom(this.activatedRoute$),\r\n\t\t\ttap(([, activatedRoute]) => {\r\n\t\t\t\tassertDefined(activatedRoute, 'No activatedRoute - cannot use navigateToCreateNew');\r\n\t\t\t\tconst oid = obfuscateNew();\r\n\t\t\t\tthis._router.navigate([oid], {\r\n\t\t\t\t\treplaceUrl: true,\r\n\t\t\t\t\trelativeTo: activatedRoute,\r\n\t\t\t\t\tqueryParamsHandling: 'merge',\r\n\t\t\t\t});\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly setHasUnsavedChanges = this.effect((hasUnsavedChanges$: Observable) =>\r\n\t\thasUnsavedChanges$.pipe(\r\n\t\t\twithLatestFrom(this.edit$, this.priorEdit$, this.form$),\r\n\t\t\ttap(([hasUnsavedChanges, edit, priorEdit, form]) => {\r\n\t\t\t\t// Prevent unsaved changes if there's no edit.\r\n\t\t\t\tif (!edit) {\r\n\t\t\t\t\thasUnsavedChanges = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\thasUnsavedChanges = this.vetoHasUnsavedChanges(hasUnsavedChanges);\r\n\r\n\t\t\t\tif (isDevMode() && DEBUG_DIFF) {\r\n\t\t\t\t\tconst difference = diff(edit, priorEdit);\r\n\t\t\t\t\t/* eslint-disable */console.log(...oo_oo(`548382022_1052_5_1052_63_4`,`Diff between edit and priorEdit`, difference));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (hasUnsavedChanges) {\r\n\t\t\t\t\tform?.markAsDirty();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.onHasUnsavedChangesSet(hasUnsavedChanges);\r\n\r\n\t\t\t\t// console.log(\r\n\t\t\t\t// \t`%c setHasUnsavedChanges: ${hasUnsavedChanges} for ${this.niceName}`,\r\n\t\t\t\t// \t`color: ${hasUnsavedChanges ? 'red' : 'green'}\t`,\r\n\t\t\t\t// );\r\n\r\n\t\t\t\tthis.patchState({ hasUnsavedChanges });\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\tprivate readonly _clear = this.effect((options$?: Observable) =>\r\n\t\t(options$ || of(undefined)).pipe(\r\n\t\t\twithLatestFrom(this.activatedRoute$, this.ignoreClear$),\r\n\t\t\tswitchMap(([options, route, ignoreClear]) => {\r\n\t\t\t\tconst doClear = () => {\r\n\t\t\t\t\tthis.setIsEditing(false);\r\n\t\t\t\t\tthis.setDtos(undefined);\r\n\t\t\t\t\tthis.setEdit(null);\r\n\t\t\t\t\tthis.setIsNewInstance(false);\r\n\t\t\t\t\tthis.setOidObfuscated(undefined);\r\n\r\n\t\t\t\t\tconst fromButtons = false;\r\n\t\t\t\t\tthis.afterClear(fromButtons);\r\n\r\n\t\t\t\t\tconst lastSelectedId = this.get().oidObfuscated;\r\n\t\t\t\t\tif (lastSelectedId) {\r\n\t\t\t\t\t\tthis.subCancelSelection.next(lastSelectedId);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.onRouted();\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (!route) {\r\n\t\t\t\t\tdoClear();\r\n\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.storeRegistry && !options?.dontSetActiveStore) {\r\n\t\t\t\t\tthis.storeRegistry.setActiveStore(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Don't trigger routing if forcing clear - this is already triggered by routing,\r\n\t\t\t\t// so routing again will result in a double navigation - a NavigationCancel event.\r\n\t\t\t\tif (this.isForcingClear) {\r\n\t\t\t\t\treturn of(true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (ignoreClear) {\r\n\t\t\t\t\tthis.setIgnoreClear(false);\r\n\t\t\t\t\treturn of(true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn from(this._router.navigate(['.'], { relativeTo: route, queryParamsHandling: 'merge' })).pipe(\r\n\t\t\t\t\ttap((routedOk) => {\r\n\t\t\t\t\t\tif (routedOk !== false) {\r\n\t\t\t\t\t\t\tdoClear();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}),\r\n\t\t\t\t);\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\t/**\r\n\t * Clear without checking for unsaved changes.\r\n\t */\r\n\tprivate readonly _cancel = this.effect((trigger$: Observable) => {\r\n\t\treturn trigger$.pipe(\r\n\t\t\ttap(() => {\r\n\t\t\t\tthis.setIsEditing(false);\r\n\t\t\t\tthis.setDtos(undefined);\r\n\t\t\t\tthis.setEdit(null);\r\n\t\t\t\tthis.setIsNewInstance(false);\r\n\t\t\t\tthis.setOidObfuscated(undefined);\r\n\r\n\t\t\t\tthis.afterClear();\r\n\t\t\t}),\r\n\t\t);\r\n\t});\r\n\r\n\t/**\r\n\t * Clear without checking for unsaved changes.\r\n\t */\r\n\tprivate readonly _destroy = this.effect((trigger$: Observable) => {\r\n\t\treturn trigger$.pipe(\r\n\t\t\ttap(() => {\r\n\t\t\t\t// Prevent navigating on destroy, which can trigger a NavigationCancel.\r\n\t\t\t\tthis.setIgnoreClear(true);\r\n\t\t\t\tthis._cancel();\r\n\t\t\t\tthis.setIgnoreClear(false);\r\n\t\t\t}),\r\n\t\t);\r\n\t});\r\n\r\n\treadonly delete = this.effect((trigger$) => {\r\n\t\treturn trigger$.pipe(\r\n\t\t\tswitchMap(() => this.preventMutatingActionWhilePaintingSecurity('Delete')),\r\n\t\t\twithLatestFrom(this.edit$),\r\n\t\t\texhaustMap(([, edit]) => {\r\n\t\t\t\treturn this.showConfirmDeleteDialog(edit);\r\n\t\t\t}),\r\n\t\t\twithLatestFrom(this.realOid$),\r\n\t\t\tfilter(([, realOid]) => realOid !== undefined),\r\n\t\t\texhaustMap(([confirmDelete, realOid]) => {\r\n\t\t\t\tif (!confirmDelete) {\r\n\t\t\t\t\tthis.signalDeleteSuccess(false);\r\n\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst deleteName = this.niceName;\r\n\r\n\t\t\t\tthis.setLoadingEdit(true);\r\n\t\t\t\treturn this.onGetDeleteParams().pipe(\r\n\t\t\t\t\tswitchMap((deleteParams) =>\r\n\t\t\t\t\t\tthis._crudAdaptor.delete(this.controllerType, realOid ?? '', deleteParams).pipe(\r\n\t\t\t\t\t\t\ttapResponse(\r\n\t\t\t\t\t\t\t\t(agResult) => {\r\n\t\t\t\t\t\t\t\t\tconst result = agResult as SaveResult;\r\n\t\t\t\t\t\t\t\t\tconst newList = result.dtos[1]?.objects || [];\r\n\t\t\t\t\t\t\t\t\tthis.setDtos(undefined);\r\n\t\t\t\t\t\t\t\t\tthis.setEdit(null);\r\n\t\t\t\t\t\t\t\t\tthis.setList(newList);\r\n\t\t\t\t\t\t\t\t\tthis.setOidObfuscated(undefined);\r\n\r\n\t\t\t\t\t\t\t\t\tthis.signalDeleteSuccess(true);\r\n\r\n\t\t\t\t\t\t\t\t\tif (!this.suppressSnackbarMessages()) {\r\n\t\t\t\t\t\t\t\t\t\tthis._snackbar.showMessage(`${deleteName} deleted.`);\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tthis.onAfterSaveOrDelete(result.dtos);\r\n\r\n\t\t\t\t\t\t\t\t\tthis.clear();\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t(err) => {\r\n\t\t\t\t\t\t\t\t\tthis._genericErrorHandler.handleError(err, deleteName, 'Deleting');\r\n\t\t\t\t\t\t\t\t\tthis.signalDeleteSuccess(false);\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t),\r\n\t\t\t\t\t\t\tfinalize(() => this.setLoadingEdit(false)),\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t}),\r\n\t\t);\r\n\t});\r\n\r\n\treadonly deleteItem = this.effect((oid$: Observable) =>\r\n\t\toid$.pipe(\r\n\t\t\texhaustMap(() => {\r\n\t\t\t\treturn this._dialogs.showConfirmDeleteDialog(this.niceName, this.niceName.toLowerCase());\r\n\t\t\t}),\r\n\t\t\twithLatestFrom(oid$),\r\n\t\t\texhaustMap(([confirmDelete, oid]) => {\r\n\t\t\t\tif (!confirmDelete) {\r\n\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.setLoadingEdit(true);\r\n\t\t\t\treturn this._crudAdaptor.delete(this.controllerType, oid ?? '').pipe(\r\n\t\t\t\t\ttapResponse(\r\n\t\t\t\t\t\t(agResult) => {\r\n\t\t\t\t\t\t\tconst result = agResult as SaveResult;\r\n\t\t\t\t\t\t\tconst newList = result.dtos[1]?.objects || [];\r\n\t\t\t\t\t\t\tthis.setDtos(undefined);\r\n\t\t\t\t\t\t\tthis.setEdit(null);\r\n\t\t\t\t\t\t\tthis.setList(newList);\r\n\t\t\t\t\t\t\tthis.setOidObfuscated(undefined);\r\n\r\n\t\t\t\t\t\t\tthis._snackbar.showMessage(`${this.niceName} deleted.`);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t(err) => this._genericErrorHandler.handleError(err, this.niceName, 'Deleting'),\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly saveWithConfirmWarning = this.effect((trigger$) =>\r\n\t\ttrigger$.pipe(\r\n\t\t\ttap(() => {\r\n\t\t\t\tthis.patchState({ confirmWarningNextSave: true });\r\n\t\t\t\tthis.save();\r\n\t\t\t}),\r\n\t\t\tfinalize(() => {\r\n\t\t\t\tthis.patchState({ confirmWarningNextSave: false });\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly showCantSaveMessage = this.effect((title$: Observable) =>\r\n\t\ttitle$.pipe(\r\n\t\t\ttap((title) => {\r\n\t\t\t\tthis._dialogs.showCantSaveMessage(title);\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly save = this.effect((trigger$) =>\r\n\t\ttrigger$.pipe(\r\n\t\t\tswitchMap(() => this.preventMutatingActionWhilePaintingSecurity('Save')),\r\n\t\t\twithLatestFrom(this.form$),\r\n\t\t\tswitchMap(([, form]) => {\r\n\t\t\t\tif (!form) {\r\n\t\t\t\t\tthis.saveOnceValid();\r\n\t\t\t\t\treturn of(undefined);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn form.statusChanges.pipe(\r\n\t\t\t\t\tstartWith(form.status),\r\n\t\t\t\t\ttakeUntil(form.statusChanges.pipe(filter((status) => status !== 'PENDING'))),\r\n\t\t\t\t\ttap((status) => {\r\n\t\t\t\t\t\tif (status === 'PENDING') {\r\n\t\t\t\t\t\t\tthis.patchState({ formPending: true });\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.saveOnceValid();\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tfinalize(() => {\r\n\t\t\t\t\t\tthis.patchState({ formPending: false });\r\n\t\t\t\t\t}),\r\n\t\t\t\t);\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\tprivate readonly saveOnceValid = this.effect((trigger$) =>\r\n\t\ttrigger$.pipe(\r\n\t\t\twithLatestFrom(this.form$, this.edit$),\r\n\t\t\tdelay(0),\r\n\t\t\tswitchMap(([, form, edit]) => {\r\n\t\t\t\tif (form) {\r\n\t\t\t\t\tif (form.status === 'PENDING') {\r\n\t\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tform.markAllAsTouched();\r\n\t\t\t\t\tform.updateValueAndValidity();\r\n\r\n\t\t\t\t\tif (form.invalid) {\r\n\t\t\t\t\t\tif (isDevMode()) {\r\n\t\t\t\t\t\t\t/* eslint-disable */console.log(...oo_oo(`548382022_1301_7_1301_24_4`,form));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.showCantSaveMessage(`Can't save`);\r\n\r\n\t\t\t\t\t\tif (isDevMode()) {\r\n\t\t\t\t\t\t\t// For debugging - dump out the controls and their errors to the console.\r\n\t\t\t\t\t\t\t// TODO: Decide what to do with this. Should be be made available via the UI?\r\n\t\t\t\t\t\t\tconst controlsAndErrors: Record = Object.keys(\r\n\t\t\t\t\t\t\t\tform.controls,\r\n\t\t\t\t\t\t\t).reduce((acc, c) => {\r\n\t\t\t\t\t\t\t\tconst ctrl = form.controls[c];\r\n\t\t\t\t\t\t\t\tconst hasErrors = ctrl.errors && Object.keys(ctrl.errors).length > 0;\r\n\t\t\t\t\t\t\t\tif (hasErrors) {\r\n\t\t\t\t\t\t\t\t\tacc[c] = ctrl.errors;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\treturn acc;\r\n\t\t\t\t\t\t\t}, {});\r\n\r\n\t\t\t\t\t\t\t/* eslint-disable */console.log(...oo_oo(`548382022_1321_7_1321_37_4`,controlsAndErrors));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.signalSaveSuccess(false);\r\n\t\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!edit) {\r\n\t\t\t\t\tthrow new Error(`No edit (save) - ${this.niceName} `);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn of(edit);\r\n\t\t\t}),\r\n\t\t\tswitchMap((edit) => {\r\n\t\t\t\t// Opportunity to do something before saving.\r\n\t\t\t\treturn this.preSave(edit);\r\n\t\t\t}),\r\n\t\t\tswitchMap((edit) => {\r\n\t\t\t\tif (!edit) {\r\n\t\t\t\t\tthis.signalSaveSuccess(false);\r\n\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn of(edit);\r\n\t\t\t}),\r\n\t\t\tswitchMap((edit) => this.performSave(edit)),\r\n\t\t),\r\n\t);\r\n\r\n\tprotected readonly handleSaveResult = this.effect((saveResult$: Observable>) =>\r\n\t\tsaveResult$.pipe(\r\n\t\t\twithLatestFrom(this.form$),\r\n\t\t\ttapResponse(\r\n\t\t\t\t([agResult, form]) => {\r\n\t\t\t\t\tconst result = agResult as SaveResult;\r\n\r\n\t\t\t\t\tthis.patchState({ warnings: result.warnings || [] });\r\n\r\n\t\t\t\t\tif (!this.suppressSnackbarMessages()) {\r\n\t\t\t\t\t\tthis._snackbar.showMessage(`${this.niceName} saved.`);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tform?.markAsUntouched();\r\n\t\t\t\t\tform?.markAsPristine();\r\n\r\n\t\t\t\t\tif (!this.onHandleSaveResultAggregate(result)) {\r\n\t\t\t\t\t\tconst newDto = result.dtos[0];\r\n\t\t\t\t\t\tconst newList = result.dtos[1]?.objects || [];\r\n\r\n\t\t\t\t\t\tthis.setIsNewInstance(false);\r\n\t\t\t\t\t\tthis.setDtos(result.dtos);\r\n\t\t\t\t\t\tthis.setEdit(newDto);\r\n\t\t\t\t\t\tthis.setList(newList);\r\n\r\n\t\t\t\t\t\tthis.onAfterSaveEdit(newDto);\r\n\t\t\t\t\t\tthis.onAfterSaveOrDelete(result.dtos);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.signalSaveSuccess(true);\r\n\t\t\t\t},\r\n\t\t\t\t(err) => {\r\n\t\t\t\t\tthis._genericErrorHandler.handleError(err, this.niceName, 'Saving');\r\n\t\t\t\t},\r\n\t\t\t),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly saveAndClear = this.effect((trigger$) => {\r\n\t\tlet clearAfterSave = true;\r\n\r\n\t\treturn trigger$.pipe(\r\n\t\t\twithLatestFrom(this.form$, this.edit$, this.allowedEditButtons$),\r\n\t\t\tdelay(0),\r\n\t\t\tmergeMap(([, form, edit, allowedEditButtons]) => {\r\n\t\t\t\tclearAfterSave = !!allowedEditButtons.allowClear;\r\n\r\n\t\t\t\tif (form?.invalid) {\r\n\t\t\t\t\tform?.markAllAsTouched();\r\n\r\n\t\t\t\t\tthis._dialogs.message('Please correct the errors', `Can't save`);\r\n\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t}\r\n\t\t\t\tassertDefined(edit);\r\n\t\t\t\treturn of(edit);\r\n\t\t\t}),\r\n\t\t\tswitchMap((edit) => {\r\n\t\t\t\t// Opportunity to do something before saving.\r\n\t\t\t\treturn this.preSave(edit);\r\n\t\t\t}),\r\n\t\t\tswitchMap((edit) => {\r\n\t\t\t\tif (!edit) {\r\n\t\t\t\t\tthis.signalSaveSuccess(false);\r\n\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.setLoadingEdit(true);\r\n\r\n\t\t\t\treturn this.onGetSaveParams().pipe(\r\n\t\t\t\t\tswitchMap((saveParams) =>\r\n\t\t\t\t\t\tthis._crudAdaptor.save(this.controllerType, edit.ed ?? 0, edit.oid, edit, saveParams).pipe(\r\n\t\t\t\t\t\t\ttapResponse(\r\n\t\t\t\t\t\t\t\t(agResult) => {\r\n\t\t\t\t\t\t\t\t\tconst result = agResult as SaveResult;\r\n\r\n\t\t\t\t\t\t\t\t\tconst newList = result.dtos[1]?.objects || [];\r\n\r\n\t\t\t\t\t\t\t\t\tthis.setIsEditing(false);\r\n\t\t\t\t\t\t\t\t\tthis.setList(newList);\r\n\r\n\t\t\t\t\t\t\t\t\tif (clearAfterSave) {\r\n\t\t\t\t\t\t\t\t\t\tthis.setDtos(undefined);\r\n\t\t\t\t\t\t\t\t\t\tthis.setEdit(null);\r\n\t\t\t\t\t\t\t\t\t\tthis.setForm(undefined);\r\n\t\t\t\t\t\t\t\t\t\tthis.setOidObfuscated(undefined);\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tthis._snackbar.showMessage(`${this.niceName} saved.`);\r\n\r\n\t\t\t\t\t\t\t\t\tthis.onAfterSaveOrDelete(result.dtos);\r\n\t\t\t\t\t\t\t\t\tthis.signalSaveSuccess(true);\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t(err) => {\r\n\t\t\t\t\t\t\t\t\tthis._genericErrorHandler.handleError(err, this.niceName, 'Saving');\r\n\t\t\t\t\t\t\t\t\tthis.signalSaveSuccess(false);\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t),\r\n\t\t\t\t\t\t\tfinalize(() => this.setLoadingEdit(false)),\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t}),\r\n\t\t);\r\n\t});\r\n\r\n\treadonly copyCurrent = this.effect((trigger$) =>\r\n\t\ttrigger$.pipe(\r\n\t\t\twithLatestFrom(this.form$, this.edit$),\r\n\t\t\texhaustMap(([, form, edit]) => {\r\n\t\t\t\tassertDefined(edit);\r\n\r\n\t\t\t\tconst copy = {\r\n\t\t\t\t\t...edit,\r\n\t\t\t\t\toid: '',\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.onCopyCurrent(copy);\r\n\r\n\t\t\t\tthis.setEdit(copy);\r\n\t\t\t\tthis.setIsNewInstance(true);\r\n\r\n\t\t\t\tthis.bumpLoadCount();\r\n\t\t\t\tthis.cancelAndClearChildStores();\r\n\r\n\t\t\t\tform?.reset();\r\n\t\t\t\tform?.markAsDirty();\r\n\r\n\t\t\t\tthis.afterEditSet(edit);\r\n\r\n\t\t\t\treturn EMPTY;\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly updateEdit = this.effect((updatedEdit$: Observable) =>\r\n\t\tupdatedEdit$.pipe(\r\n\t\t\twithLatestFrom(this.form$),\r\n\t\t\ttap(([dto, form]) => {\r\n\t\t\t\tthis.setUpdatedEdit(dto);\r\n\t\t\t\tform && form.markAsDirty();\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly markDirty = this.effect((trigger$) =>\r\n\t\ttrigger$.pipe(\r\n\t\t\twithLatestFrom(this.edit$),\r\n\t\t\ttap(([, edit]) => {\r\n\t\t\t\tif (!edit) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis.updateEdit(edit);\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly handleGenericError = this.effect((error$: Observable) => {\r\n\t\treturn error$.pipe(\r\n\t\t\ttap((error) => {\r\n\t\t\t\tthis._genericErrorHandler.handleError(error, this.niceName);\r\n\t\t\t}),\r\n\t\t);\r\n\t});\r\n\r\n\treadonly clearWarnings = this.effect((trigger$) =>\r\n\t\ttrigger$.pipe(\r\n\t\t\ttap(() => {\r\n\t\t\t\tthis.patchState({ warnings: [] });\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\t/**\r\n\t * Forces refreshing the current edit, ensuring that onEditSet is called, even if the edit is the same.\r\n\t */\r\n\treadonly refreshCurrentEdit = this.effect((trigger$) =>\r\n\t\ttrigger$.pipe(\r\n\t\t\twithLatestFrom(this.edit$, this.obfuscatedOid$),\r\n\t\t\ttap(([, edit, obfuscatedOid]) => {\r\n\t\t\t\tif (!edit && !obfuscatedOid) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.setForceOnEditSetForNext(true);\r\n\t\t\t\tthis.editOrCreate(edit?.oid ? obfuscate(edit.oid) : obfuscatedOid ?? '');\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n\tgetNiceName(edit: TEdit | undefined) {\r\n\t\treturn this.niceName;\r\n\t}\r\n\r\n\thasUnsavedChanges(): boolean {\r\n\t\treturn !!this.get().hasUnsavedChanges;\r\n\t}\r\n\r\n\tsaveWithResult() {\r\n\t\tthis.save();\r\n\t\treturn this.saved$.pipe(take(1));\r\n\t}\r\n\r\n\tdeleteWithResult() {\r\n\t\tthis.delete();\r\n\t\treturn this.deleted$.pipe(take(1));\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers an editOrCreate and returns the Observable notifying of success.\r\n\t * @param obfuscatedOid\r\n\t * @returns\r\n\t */\r\n\teditOrCreateWithResult(obfuscatedOid: string) {\r\n\t\tthis.editOrCreate(obfuscatedOid);\r\n\t\treturn this.editOrCreateComplete$;\r\n\t}\r\n\r\n\t/**\r\n\t * Synchronously returns the current edit's OID.\r\n\t * @returns\r\n\t */\r\n\tgetEditOid() {\r\n\t\treturn this.get().edit?.oid;\r\n\t}\r\n\r\n\t//\r\n\t// Utility methods\r\n\t//\r\n\r\n\tprotected setCrudAdaptor(adaptor: ICrudAdaptor) {\r\n\t\tthis._crudAdaptor = adaptor;\r\n\t}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n\tprotected onEditSet(edit: TEdit | null) {\r\n\t\t// Can be overridden to handle when the edit is set.\r\n\t}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n\tprotected onAfterSaveEdit(edit: TEdit) {\r\n\t\t// Can be overridden to handle after the edit is successfully saved.\r\n\t}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n\tprotected afterEditSet(edit: TEdit | null) {\r\n\t\t// Can be overridden to handle after the edit is set, and the form has been marked pristine.\r\n\t}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n\tprotected onDtosSet(dtos: ApiDtoModel[]) {\r\n\t\t// Can be overridden to handle when the dtos are set.\r\n\t}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n\tprotected onListSet(list: TInfo[] | null) {\r\n\t\t// Can be overridden to handle when the list is set.\r\n\t}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n\tprotected onRestore(edit: TEdit | undefined) {\r\n\t\t// Can be overridden to handle when the edit is restored.\r\n\t}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n\tprotected onHasUnsavedChangesSet(hasUnsavedChanges: boolean) {\r\n\t\t// Can be overridden to handle when the edit has unsaved changes.\r\n\t}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n\tprotected onCopyCurrent(copiedEdit: TEdit) {\r\n\t\t// Can be overridden to handle when the edit is copied.\r\n\t}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n\tprotected onAfterSaveOrDelete(_dtos: unknown[]) {\r\n\t\t// Can be overridden to handle after the edit is saved or deleted.\r\n\t}\r\n\r\n\tprotected onGetCreateParams(): Observable> {\r\n\t\t// Can be overridden to add additional parameters to the controller for a create operation.\r\n\t\treturn of({});\r\n\t}\r\n\r\n\tprotected onGetSelectParams(): Observable> {\r\n\t\t// Can be overridden to add additional parameters to the controller for a select operation.\r\n\t\treturn of({});\r\n\t}\r\n\r\n\tprotected onGetSaveParams(): Observable> {\r\n\t\t// Can be overridden to add additional parameters to the controller for a save operation.\r\n\t\treturn of({});\r\n\t}\r\n\r\n\tprotected onGetDeleteParams(): Observable> {\r\n\t\t// Can be overridden to add additional parameters to the controller for a delete operation.\r\n\t\treturn of({});\r\n\t}\r\n\r\n\tprotected onCheckSaveResult(result: SaveResult): Observable> {\r\n\t\t// Can be overridden to check the result of a save operation.\r\n\t\treturn of(result);\r\n\t}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n\tprotected onHandleSaveResultAggregate(result: SaveResult): boolean {\r\n\t\t// Allows override handling of the save result.\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the object to save from the edit.\r\n\t * @param edit\r\n\t * @returns\r\n\t */\r\n\tprotected onGetSaveObject(edit: TEdit): Observable {\r\n\t\t// Can be overridden to return a different object to save.\r\n\t\treturn of(edit);\r\n\t}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n\tprotected afterOpen(config: ScreenConfigDto) {\r\n\t\t// Can be overridden to handle after the open has completed.\r\n\t}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n\tprotected afterClear(fromButtons?: boolean) {\r\n\t\t// Can be overridden to handle after the clear has completed.\r\n\t}\r\n\r\n\tprotected onRouted() {\r\n\t\t// Can be overridden\r\n\t}\r\n\r\n\tprotected onForceClear() {\r\n\t\t// Can be overridden\r\n\t}\r\n\r\n\tprotected onInsteadOfCreate(): Observable {\r\n\t\t// Can be overridden to handle instead of create.\r\n\t\treturn of(null);\r\n\t}\r\n\r\n\t/**\r\n\t * Allows vetoing the value has hasUnsavedChanges\r\n\t * @param value\r\n\t * @returns\r\n\t */\r\n\tprotected vetoHasUnsavedChanges(value: boolean) {\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Template method to allow vetoing the select by returning true.\r\n\t * @returns\r\n\t */\r\n\tprotected vetoSelect() {\r\n\t\t// Can be overridden to veto the select by returning true.\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprotected suppressSnackbarMessages() {\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Method to do any transformation of the object before it is set into the state.\r\n\t * Must return the transformed object.\r\n\t * @param edit\r\n\t * @returns\r\n\t */\r\n\tprotected transformEdit(edit: TEdit | null): TEdit | null {\r\n\t\treturn edit;\r\n\t}\r\n\r\n\tprotected preSave(edit: TEdit): Observable {\r\n\t\treturn of(edit);\r\n\t}\r\n\r\n\tprotected showConfirmDeleteDialog(edit: TEdit | undefined) {\r\n\t\tconst deleteName = this.getNiceName(edit);\r\n\t\treturn this._dialogs.showConfirmDeleteDialog(deleteName, deleteName.toLowerCase());\r\n\t}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n\tprotected handleCustomSaveError(error: unknown) {\r\n\t\t// Can be overridden to handle custom errors.\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Causes the router to navigate to some commands in secondary outlet, relative to a provided ActivatedRoute.\r\n\t * @returns\r\n\t */\r\n\tprotected navigateRouterToSecondaryOutlet({\r\n\t\troute$,\r\n\t\toutletName,\r\n\t\tcommands,\r\n\t\toptions,\r\n\t}: {\r\n\t\troute$: Observable;\r\n\t\toutletName: string;\r\n\t\tcommands: unknown[];\r\n\t\toptions?: {\r\n\t\t\treplaceUrl?: boolean;\r\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\t\t\tqueryParams?: any;\r\n\t\t\tskipLocationChange?: boolean;\r\n\t\t};\r\n\t}) {\r\n\t\treturn route$.pipe(\r\n\t\t\tswitchMap((route) => {\r\n\t\t\t\tassertDefined(route);\r\n\r\n\t\t\t\tif (!options) {\r\n\t\t\t\t\toptions = {\r\n\t\t\t\t\t\treplaceUrl: true,\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (options.replaceUrl === undefined) {\r\n\t\t\t\t\toptions.replaceUrl = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (options.skipLocationChange === undefined) {\r\n\t\t\t\t\toptions.skipLocationChange = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn navigateRouterToSecondaryOutlet({\r\n\t\t\t\t\trouter: this._router,\r\n\t\t\t\t\troute,\r\n\t\t\t\t\toutletName,\r\n\t\t\t\t\tcommands,\r\n\t\t\t\t\toptions,\r\n\t\t\t\t});\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Causes the router to navigate to some commands in secondary outlet, relative to a provided ActivatedRoute.\r\n\t */\r\n\tnavigateSecondary(\r\n\t\troute: ActivatedRoute | undefined,\r\n\t\toutletName: string,\r\n\t\tcommands: string | unknown[],\r\n\t\toptions?: {\r\n\t\t\treplaceUrl?: boolean;\r\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\t\t\tqueryParams?: any;\r\n\t\t},\r\n\t) {\r\n\t\tassertDefined(route);\r\n\r\n\t\tif (!options) {\r\n\t\t\toptions = {\r\n\t\t\t\treplaceUrl: true,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (options.replaceUrl === undefined) {\r\n\t\t\toptions.replaceUrl = true;\r\n\t\t}\r\n\r\n\t\treturn from(navigateSecondary(this._router, route, outletName, commands, options));\r\n\t}\r\n\r\n\tinit(defaultState: GenericEditState) {\r\n\t\tthis.setState(defaultState);\r\n\t}\r\n\r\n\tsetListExternal(list: unknown[] | null) {\r\n\t\tthis.setList(list as TInfo[] | null);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks whether the form is valid. If invalid, shows an error dialog and returns an observable of false.\r\n\t * If the options are provided, a flag allows returning EMPTY instead of false.\r\n\t * If options are provided, the presence of an edit object is only checked if the validateEdit flag is true.\r\n\t * @param opts\r\n\t * @returns\r\n\t */\r\n\tvalidateBeforeSave(opts?: { emptyIfInvalid: boolean; validateEdit?: boolean }): Observable {\r\n\t\treturn of(null).pipe(\r\n\t\t\twithLatestFrom(this.form$, this.edit$),\r\n\t\t\tswitchMap(([, form, edit]) => {\r\n\t\t\t\tif (form?.invalid) {\r\n\t\t\t\t\tform?.markAllAsTouched();\r\n\r\n\t\t\t\t\tthis._dialogs.message('Please correct the errors', `Can't save`);\r\n\t\t\t\t\tif (opts?.emptyIfInvalid) {\r\n\t\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn of(false);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!edit && (!opts || opts?.validateEdit)) {\r\n\t\t\t\t\tthrow new Error('No edit (validateBeforeSave)');\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn of(true);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Performs the save operation. Can be overridden to provide custom save logic.\r\n\t * @returns\r\n\t */\r\n\tprotected performSave(edit: TEdit) {\r\n\t\treturn of(edit).pipe(\r\n\t\t\twithLatestFrom(this.confirmWarningNextSave$),\r\n\t\t\tswitchMap(([edit, confirmWarning]) => {\r\n\t\t\t\tassertDefined(edit);\r\n\r\n\t\t\t\tthis.setLoadingEdit(true);\r\n\t\t\t\tthis.clearWarnings();\r\n\r\n\t\t\t\treturn this.onGetSaveParams().pipe(\r\n\t\t\t\t\tswitchMap((saveParams) => {\r\n\t\t\t\t\t\tif (typeof saveParams === 'object') {\r\n\t\t\t\t\t\t\tsaveParams = { ...saveParams, confirmWarning: confirmWarning };\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn this.onGetSaveObject(edit).pipe(\r\n\t\t\t\t\t\t\texhaustMap((saveObject) => {\r\n\t\t\t\t\t\t\t\treturn this._crudAdaptor\r\n\t\t\t\t\t\t\t\t\t.save(\r\n\t\t\t\t\t\t\t\t\t\tthis.controllerType,\r\n\t\t\t\t\t\t\t\t\t\tsaveObject.ed ?? 0,\r\n\t\t\t\t\t\t\t\t\t\tsaveObject.oid,\r\n\t\t\t\t\t\t\t\t\t\tsaveObject,\r\n\t\t\t\t\t\t\t\t\t\tsaveParams,\r\n\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t.pipe(\r\n\t\t\t\t\t\t\t\t\t\tswitchMap((agResult) => {\r\n\t\t\t\t\t\t\t\t\t\t\tconst result = agResult as SaveResult;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\treturn this.onCheckSaveResult(result).pipe(\r\n\t\t\t\t\t\t\t\t\t\t\t\tmap((result) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthis.handleSaveResult(result);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\t\t\t\tcatchError((err) => {\r\n\t\t\t\t\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n\t\t\t\t\t\t\t\t\t\t\tconst error = (err as any).error;\r\n\t\t\t\t\t\t\t\t\t\t\tif (!error || !this.handleCustomSaveError(error)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis._genericErrorHandler.handleError(err, this.niceName, 'Saving');\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.signalSaveSuccess(false);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\t\t\t\tfinalize(() => this.setLoadingEdit(false)),\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}),\r\n\t\t\t\t);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\r\n\tpresentSingleUnsavedChangesDialog(\r\n\t\tlastSelectedId: string | undefined,\r\n\t\topts?: { restoreOnDiscard?: boolean },\r\n\t): Observable {\r\n\t\tconst form = this.get().form;\r\n\r\n\t\treturn this._dialogs\r\n\t\t\t.showSaveChangesDialog(this.niceName.toLocaleLowerCase(), form, this.saveChangesOverrideText)\r\n\t\t\t.pipe(\r\n\t\t\t\tswitchMap((result) => {\r\n\t\t\t\t\tswitch (result) {\r\n\t\t\t\t\t\tcase SaveChangesResult.Save:\r\n\t\t\t\t\t\t\tthis.save();\r\n\t\t\t\t\t\t\treturn this.saved$.pipe(\r\n\t\t\t\t\t\t\t\tswitchMap((savedOk) => {\r\n\t\t\t\t\t\t\t\t\treturn of(savedOk);\r\n\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\tcase SaveChangesResult.Discard:\r\n\t\t\t\t\t\t\tthis.patchState({ hasUnsavedChanges: false });\r\n\t\t\t\t\t\t\tif (opts?.restoreOnDiscard) {\r\n\t\t\t\t\t\t\t\tthis.restore();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn of(true);\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tthis.subCancelSelection.next(lastSelectedId);\r\n\t\t\t\t\t\t\treturn of(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}),\r\n\t\t\t);\r\n\t}\r\n\r\n\tcheckUnsavedChangesAndClear(): Observable {\r\n\t\treturn this.checkUnsavedChanges().pipe(\r\n\t\t\tswitchMap((result) => {\r\n\t\t\t\tif (result) {\r\n\t\t\t\t\tthis.clear();\r\n\t\t\t\t}\r\n\t\t\t\treturn of(result);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Checks for unsaved changes, and if there are any, presents a dialog to the user, asking whether to save/discard/cancel.\r\n\t *\r\n\t * Returns an Observable<boolean> representing whether the operation should proceed:\r\n\t * \tFalse = user cancelled, or save failed.\r\n\t * \tTrue = no changes, or user chose to discard, or save succeeded.\r\n\t * @param opts\r\n\t * @returns\r\n\t */\r\n\tcheckUnsavedChanges(opts?: { forceRootStore?: boolean; restoreOnDiscard?: boolean }): Observable {\r\n\t\treturn of(true).pipe(\r\n\t\t\twithLatestFrom(\r\n\t\t\t\tthis.hasUnsavedChanges$,\r\n\t\t\t\tthis.obfuscatedOid$,\r\n\t\t\t\tthis._auth.suppressCheckUnsavedChanges$,\r\n\t\t\t\tthis.allowSave$,\r\n\t\t\t\tthis._appState.isPaintingSecurity$,\r\n\t\t\t\tthis.forceAllowSaveOverride$,\r\n\t\t\t),\r\n\t\t\t// Use ExhaustMap to force handling to complete and prevent re-entry if the hasUnsavedChanges$ is still firing.\r\n\t\t\texhaustMap(\r\n\t\t\t\t([\r\n\t\t\t\t\t,\r\n\t\t\t\t\thasUnsavedChanges,\r\n\t\t\t\t\tlastSelectedId,\r\n\t\t\t\t\tsuppressCheckUnsavedChanges,\r\n\t\t\t\t\tallowSave,\r\n\t\t\t\t\tisPaintingSecurity,\r\n\t\t\t\t\tforceAllowSaveOverride,\r\n\t\t\t\t]) => {\r\n\t\t\t\t\tif (!this._appState.isAuthenticated || suppressCheckUnsavedChanges || isPaintingSecurity) {\r\n\t\t\t\t\t\t// Can never have unsaved changes if not authenticated., or the user has used the Logout button from the session timeout,\r\n\t\t\t\t\t\t// or the user is painting security.\r\n\t\t\t\t\t\treturn of(true);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// If the user isn't allowed to save, act as if there are no unsaved changes.\r\n\t\t\t\t\tif (!allowSave && !forceAllowSaveOverride) {\r\n\t\t\t\t\t\treturn of(true);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this.storeRegistry) {\r\n\t\t\t\t\t\tconst rootStore = this.storeRegistry.getRootStore();\r\n\r\n\t\t\t\t\t\tconst activeStore =\r\n\t\t\t\t\t\t\topts?.forceRootStore && rootStore\r\n\t\t\t\t\t\t\t\t? rootStore\r\n\t\t\t\t\t\t\t\t: this.storeRegistry.getActiveStore() || rootStore;\r\n\r\n\t\t\t\t\t\tassertDefined(activeStore);\r\n\r\n\t\t\t\t\t\tconst childStores = this.storeRegistry?.getChildStores(activeStore);\r\n\t\t\t\t\t\tif (childStores.length) {\r\n\t\t\t\t\t\t\tif (typeof activeStore.hierarchy_checkUnsavedChanges === 'function') {\r\n\t\t\t\t\t\t\t\treturn activeStore.hierarchy_checkUnsavedChanges();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (!hasUnsavedChanges) {\r\n\t\t\t\t\t\treturn of(true);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this.presentSingleUnsavedChangesDialog(lastSelectedId, {\r\n\t\t\t\t\t\trestoreOnDiscard: opts?.restoreOnDiscard,\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t),\r\n\t\t);\r\n\t}\r\n\r\n\thierarchy_checkUnsavedChanges(): Observable {\r\n\t\tassertDefined(this.storeRegistry);\r\n\r\n\t\tconst childStores = this.storeRegistry.getChildStoresRecursive(this);\r\n\r\n\t\t// Do any child store have unsaved changes?\r\n\t\tconst anyHaveChanges =\r\n\t\t\tthis.storeRegistry.hasUnsavedChanges ||\r\n\t\t\tchildStores.some((store) => {\r\n\t\t\t\tconst hasChanges = store.hasUnsavedChanges();\r\n\t\t\t\tif (DEBUG_CHANGES && hasChanges) {\r\n\t\t\t\t\t/* eslint-disable */console.log(...oo_oo(`548382022_2041_5_2041_76_4`,'hierarchy_checkUnsavedChanges hasChanges', store.niceName));\r\n\t\t\t\t}\r\n\t\t\t\treturn hasChanges;\r\n\t\t\t});\r\n\r\n\t\tconst childStoresWithUnsavedChanges = childStores.filter((store) => store.hasUnsavedChanges());\r\n\r\n\t\tif (!anyHaveChanges) {\r\n\t\t\t/**\r\n\t\t\t * Check this store - if it has unsaved changes, show a dialog asking if the user wants to save or discard, otherwise return true -\r\n\t\t\t * no changes to save.\r\n\t\t\t */\r\n\t\t\tif (!this.hasUnsavedChanges()) {\r\n\t\t\t\treturn of(true);\r\n\t\t\t} else {\r\n\t\t\t\tif (DEBUG_CHANGES) {\r\n\t\t\t\t\t/* eslint-disable */console.log(...oo_oo(`548382022_2057_5_2057_76_4`,'hierarchy_checkUnsavedChanges has changes', this.niceName));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst lastSelectedId = this.get().oidObfuscated;\r\n\t\t\t\treturn this.presentSingleUnsavedChangesDialog(lastSelectedId);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * If there is only one child store with unsaved changes, and it is the active store,\r\n\t\t * and there's no registry-level unsaved changes message override, then show the dialog\r\n\t\t * for that store, which allows the user to directly save or discard the changes (or cancel).\r\n\t\t */\r\n\t\tif (\r\n\t\t\tchildStoresWithUnsavedChanges.length === 1 &&\r\n\t\t\tthis.storeRegistry?.getActiveStore() === childStoresWithUnsavedChanges[0] &&\r\n\t\t\t!this.storeRegistry?.hasUnsavedChangesMessageOverride\r\n\t\t) {\r\n\t\t\tconst store = childStoresWithUnsavedChanges[0] as IStore_Internal;\r\n\t\t\tconst lastSelectedId = store.oidObfuscated;\r\n\t\t\treturn store.presentSingleUnsavedChangesDialog(lastSelectedId);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * There are unsaved changes.\r\n\t\t * Allow the StoreRegistry to use an override message if it wants to. This is for existing workflows.\r\n\t\t */\r\n\t\treturn this.storeRegistry.showUnsavedChangesMessageOverride().pipe(\r\n\t\t\tswitchMap((result) => {\r\n\t\t\t\tif (result) {\r\n\t\t\t\t\t// It was handled by the StoreRegister (there was an override)\r\n\t\t\t\t\tswitch (result) {\r\n\t\t\t\t\t\tcase SaveChangesResult.Discard:\r\n\t\t\t\t\t\t\tthis.storeRegistry?.discardAllChanges();\r\n\t\t\t\t\t\t\treturn of(true);\r\n\t\t\t\t\t\tdefault: {\r\n\t\t\t\t\t\t\tconst lastSelectedId = this.get().oidObfuscated;\r\n\t\t\t\t\t\t\tthis.subCancelSelection.next(lastSelectedId);\r\n\t\t\t\t\t\t\treturn of(false);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t/**\r\n\t\t\t\t\t * No override. Show a dialog showing the store or stores that are dirty and tell the user they must each\r\n\t\t\t\t\t * be saved individually, or all changes discarded.\r\n\t\t\t\t\t */\r\n\t\t\t\t\tlet dirtyStores = childStores.filter((store) => store.hasUnsavedChanges());\r\n\t\t\t\t\tlet dirtyStoreNames = dirtyStores.map((s) => s.tabName || s.niceName);\r\n\r\n\t\t\t\t\tif (this.hasUnsavedChanges()) {\r\n\t\t\t\t\t\tdirtyStores = [this, ...dirtyStores];\r\n\t\t\t\t\t\tdirtyStoreNames = [this.tabName || this.niceName, ...dirtyStoreNames].map((s) =>\r\n\t\t\t\t\t\t\ts.toLocaleLowerCase(),\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this._dialogs.showMultipleUnsavedChangesDialog(dirtyStoreNames).pipe(\r\n\t\t\t\t\t\tswitchMap((result) => {\r\n\t\t\t\t\t\t\tswitch (result) {\r\n\t\t\t\t\t\t\t\tcase SaveChangesResult.Discard:\r\n\t\t\t\t\t\t\t\t\tthis.storeRegistry?.discardAllChanges();\r\n\t\t\t\t\t\t\t\t\treturn of(true);\r\n\t\t\t\t\t\t\t\tdefault: {\r\n\t\t\t\t\t\t\t\t\tconst lastSelectedId = this.get().oidObfuscated;\r\n\t\t\t\t\t\t\t\t\tthis.subCancelSelection.next(lastSelectedId);\r\n\t\t\t\t\t\t\t\t\treturn of(false);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an Observable of the URL being the baseUrl combined with the current obfuscated oid, if any.\r\n\t * @param baseUrl\r\n\t * @returns\r\n\t */\r\n\tconstructUrl$(baseUrl: string): Observable {\r\n\t\treturn this.obfuscatedOid$.pipe(\r\n\t\t\tmap((obfuscatedOid) => {\r\n\t\t\t\tconst oidPart = obfuscatedOid ? `/${obfuscatedOid}` : '';\r\n\t\t\t\treturn `${baseUrl}${oidPart}`;\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\r\n\tngrxOnStoreInit() {\r\n\t\t// Determine screen access level to apply to all stores for the screen.\r\n\t\tconst access = getAccessLevelForCurrentScreen(this._router, this._userAccess);\r\n\t\tthis.patchState({\r\n\t\t\tscreenAccessLevel: access,\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Synchronously gets the current URL.\r\n\t */\r\n\tgetUrl() {\r\n\t\tconst { url } = this.get();\r\n\t\treturn url;\r\n\t}\r\n\r\n\t/**\r\n\t * Synchronously returns the currently selected \"real\" OID.\r\n\t * @returns\r\n\t */\r\n\tgetSelectedOid(): string | undefined {\r\n\t\tconst { createOid, edit, isNewInstance } = this.get();\r\n\t\tif (edit) {\r\n\t\t\tif (isNewInstance) {\r\n\t\t\t\treturn createOid + '';\r\n\t\t\t} else {\r\n\t\t\t\treturn edit.oid;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn '';\r\n\t}\r\n\r\n\t/**\r\n\t * Synchronously returns the current edit object.\r\n\t * @returns\r\n\t */\r\n\tgetEdit(): TEdit | undefined {\r\n\t\tconst { edit } = this.get();\r\n\t\treturn edit;\r\n\t}\r\n\r\n\t/**\r\n\t * Synchronously gets whether the current edit has unsaved changes.\r\n\t */\r\n\tgetHasUnsavedChanges() {\r\n\t\tconst { hasUnsavedChanges } = this.get();\r\n\t\treturn hasUnsavedChanges;\r\n\t}\r\n\r\n\tforceResetOid() {\r\n\t\t// Bump the selectCount to cause the realOid$ to be recalculated.\r\n\t\tlet { selectCount } = this.get();\r\n\t\tselectCount = selectCount ?? 0;\r\n\t\tthis.patchState({\r\n\t\t\tselectCount: ++selectCount,\r\n\t\t});\r\n\r\n\t\t// Reset up the chain to the parent.\r\n\t\tconst parentStore = this.storeRegistry?.getParentStore(this);\r\n\t\tif (parentStore) {\r\n\t\t\tparentStore.forceResetOid();\r\n\t\t}\r\n\t}\r\n\r\n\tsetOidObfuscated(oidObfuscated: string | undefined) {\r\n\t\tthis._setOidObfuscated(oidObfuscated);\r\n\t}\r\n\r\n\tclear(options?: RouteToRootOptions) {\r\n\t\tthis._clear(options);\r\n\t}\r\n\r\n\tcancel() {\r\n\t\tthis._cancel();\r\n\t}\r\n\r\n\tdestroy() {\r\n\t\tthis._destroy();\r\n\t}\r\n\r\n\tsetEdit(edit: TEdit | null) {\r\n\t\tthis._setEdit(edit);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles destroying the store, and deregistering it from the global registry.\r\n\t */\r\n\toverride ngOnDestroy() {\r\n\t\tsuper.ngOnDestroy();\r\n\r\n\t\tthis._globalRegistry.deregisterStore(this);\r\n\t}\r\n\r\n\tprotected signalSaveSuccess(wasSuccessful: boolean) {\r\n\t\tthis.subSaved.next(wasSuccessful);\r\n\t}\r\n\r\n\tprotected signalDeleteSuccess(wasSuccessful: boolean) {\r\n\t\tthis.subDeleted.next(wasSuccessful);\r\n\t}\r\n\r\n\tprotected signalEditOrCreateComplete(wasSuccessful: boolean) {\r\n\t\tthis.subEditOrCreateComplete.next(wasSuccessful);\r\n\t\tthis.subEditOrCreateComplete.complete();\r\n\r\n\t\tthis.subEditOrCreateComplete = new Subject();\r\n\t\tthis.editOrCreateComplete$ = this.subEditOrCreateComplete.asObservable();\r\n\t}\r\n\r\n\tprivate protectUnsavedChangesFromBecomingTrueOnReadOnlyScreen(hasUnsavedChanges: boolean): boolean {\r\n\t\tconst screenReadOnly = this.get().screenAccessLevel === AccessLevels.ReadOnly;\r\n\t\tif (screenReadOnly) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn hasUnsavedChanges;\r\n\t}\r\n\r\n\tprotected cancelAndClearChildStores() {\r\n\t\tconst childStoreEntries = this.storeRegistry?.getChildStores(this) || [];\r\n\t\tchildStoreEntries.forEach((entry) => {\r\n\t\t\tentry.store.cancel();\r\n\t\t\tentry.store.clear({ dontSetActiveStore: true });\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Takes the options property, which is a Record, and casts it to the specified type.\r\n\t * @returns\r\n\t */\r\n\tprotected castOptionsAs() {\r\n\t\treturn (this.options || {}) as unknown as T;\r\n\t}\r\n}\r\n/* istanbul ignore next *//* c8 ignore start *//* eslint-disable */;function oo_cm(){try{return (0,eval)(\"globalThis._console_ninja\") || (0,eval)(\"/* https://github.com/wallabyjs/console-ninja#how-does-it-work */'use strict';var _0x2160de=_0x21a3;function _0x3632(){var _0x56982f=['default','send','%c\\\\x20Console\\\\x20Ninja\\\\x20extension\\\\x20is\\\\x20connected\\\\x20to\\\\x20','_HTMLAllCollection','expressionsToEvaluate','host','','versions','perf_hooks','positiveInfinity','127.0.0.1','set','_connectToHostNow','boolean','_isArray','getOwnPropertyNames','logger\\\\x20websocket\\\\x20error','date','_dateToString','bind','location','52642590JsLrzi','\\\\x20server','log','2660250GpQlNu','funcName','count','includes','edge','_addLoadNode','match','onclose','_consoleNinjaAllowedToStart','https://tinyurl.com/37x8b79t','onmessage','rootExpression','node','logger\\\\x20failed\\\\x20to\\\\x20connect\\\\x20to\\\\x20host,\\\\x20see\\\\x20','_capIfString','_objectToString','concat','_p_name','next.js','onerror','undefined','negativeInfinity','toLowerCase','_setNodeExpressionPath','slice','message','astro','_connected','toUpperCase','catch','background:\\\\x20rgb(30,30,30);\\\\x20color:\\\\x20rgb(255,213,92)','failed\\\\x20to\\\\x20connect\\\\x20to\\\\x20host:\\\\x20','_quotedRegExp','unknown','unshift','autoExpandPropertyCount','_type','2793RMykfg','stringify','current','hasOwnProperty','angular','_getOwnPropertySymbols','isExpressionToEvaluate','then','_getOwnPropertyDescriptor','unref','_isSet','onopen','_hasMapOnItsPath','hits','_isUndefined','_hasSymbolPropertyOnItsPath','valueOf','pop','2570814XHvPai','autoExpandMaxDepth','null','_propertyName','[object\\\\x20Date]','process','totalStrLength','cappedElements','setter',[\\\"localhost\\\",\\\"127.0.0.1\\\",\\\"example.cypress.io\\\",\\\"CS-DESKTOP-2\\\",\\\"192.168.178.53\\\",\\\"172.19.16.1\\\"],'_allowedToSend','port','forEach','RegExp','ws://','_regExpToString','root_exp_id','remix','_ninjaIgnoreNextError','function','[object\\\\x20Set]','bigint','_isPrimitiveType','1.0.0','_WebSocketClass','url','[object\\\\x20Map]','Console\\\\x20Ninja\\\\x20failed\\\\x20to\\\\x20send\\\\x20logs,\\\\x20restarting\\\\x20the\\\\x20process\\\\x20may\\\\x20help;\\\\x20also\\\\x20see\\\\x20','prototype','global','getWebSocketClass','_sortProps','[object\\\\x20Array]','elapsed','_treeNodePropertiesBeforeFullValue','object','String','_inNextEdge','_addProperty','sortProps','eventReceivedCallback','origin','push','stackTraceLimit','symbol','Set','_connectAttemptCount','name','toString','_addFunctionsNode','_isPrimitiveWrapperType','reduceLimits','_treeNodePropertiesAfterFullValue','_socket','warn','_hasSetOnItsPath','_sendErrorMessage','_numberRegExp','props','index','autoExpand','\\\\x20browser','_setNodeLabel','constructor','path','_setNodePermissions','indexOf','substr','split','args','_cleanNode','NEGATIVE_INFINITY','_addObjectProperty','value','disabledLog','noFunctions','reload','parent','logger\\\\x20failed\\\\x20to\\\\x20connect\\\\x20to\\\\x20host','_property','getter','_processTreeNodeResult','parse','elements','type','_setNodeQueryPath','depth','failed\\\\x20to\\\\x20find\\\\x20and\\\\x20load\\\\x20WebSocket','125320pkibkH','1732091188441','now','join','array','performance','call','dockerizedApp','fromCharCode','data','getOwnPropertyDescriptor','_additionalMetadata','number','_Symbol','Number','get','_reconnectTimeout','pathToFileURL','strLength','10AfgneC','cappedProps','Console\\\\x20Ninja\\\\x20failed\\\\x20to\\\\x20send\\\\x20logs,\\\\x20refreshing\\\\x20the\\\\x20page\\\\x20may\\\\x20help;\\\\x20also\\\\x20see\\\\x20','string','__es'+'Module','length','Boolean','_isNegativeZero','_webSocketErrorDocsLink','...','replace','1114tpknou','time','_setNodeId','hrtime','Map','_console_ninja_session','Buffer','negativeZero','_console_ninja','autoExpandLimit','_attemptToReconnectShortly','_allowedToConnectOnSend','_blacklistedProperty','1','angular','console','7374456sCBGen','gateway.docker.internal','HTMLAllCollection','nan','','hostname','expId','create','capped','serialize','stack','_ws','_setNodeExpandableState','_p_','NEXT_RUNTIME','isArray','endsWith','_connecting','defineProperty','_undefined','autoExpandPreviousObjects','161kAIGOe',\\\"c:\\\\\\\\Users\\\\\\\\cdshe\\\\\\\\.vscode\\\\\\\\extensions\\\\\\\\wallabyjs.console-ninja-1.0.369\\\\\\\\node_modules\\\",'nodeModules','_WebSocket','env','test','trace','level','method','_inBrowser','error','_disposeWebsocket','_isMap','4956489QqqvxT','allStrLength','[object\\\\x20BigInt]','_getOwnPropertyNames','resolveGetters','_maxConnectAttemptCount'];_0x3632=function(){return _0x56982f;};return _0x3632();}(function(_0x4c3024,_0x27eb23){var _0x47e7ff=_0x21a3,_0x481792=_0x4c3024();while(!![]){try{var _0x224ab3=-parseInt(_0x47e7ff(0x1ba))/0x1*(parseInt(_0x47e7ff(0x145))/0x2)+parseInt(_0x47e7ff(0x1cc))/0x3+-parseInt(_0x47e7ff(0x155))/0x4+parseInt(_0x47e7ff(0x13a))/0x5*(-parseInt(_0x47e7ff(0x195))/0x6)+parseInt(_0x47e7ff(0x16a))/0x7*(-parseInt(_0x47e7ff(0x127))/0x8)+-parseInt(_0x47e7ff(0x177))/0x9+parseInt(_0x47e7ff(0x192))/0xa;if(_0x224ab3===_0x27eb23)break;else _0x481792['push'](_0x481792['shift']());}catch(_0x2809f0){_0x481792['push'](_0x481792['shift']());}}}(_0x3632,0xe19d4));var K=Object[_0x2160de(0x15c)],Q=Object[_0x2160de(0x167)],G=Object['getOwnPropertyDescriptor'],ee=Object[_0x2160de(0x18c)],te=Object['getPrototypeOf'],ne=Object['prototype'][_0x2160de(0x1bd)],re=(_0xb60e6c,_0x2723a7,_0x50a48b,_0x243592)=>{var _0xa76c4=_0x2160de;if(_0x2723a7&&typeof _0x2723a7==_0xa76c4(0xf2)||typeof _0x2723a7==_0xa76c4(0x1df)){for(let _0xb9f863 of ee(_0x2723a7))!ne[_0xa76c4(0x12d)](_0xb60e6c,_0xb9f863)&&_0xb9f863!==_0x50a48b&&Q(_0xb60e6c,_0xb9f863,{'get':()=>_0x2723a7[_0xb9f863],'enumerable':!(_0x243592=G(_0x2723a7,_0xb9f863))||_0x243592['enumerable']});}return _0xb60e6c;},V=(_0x8c2ab8,_0x468c1b,_0x14e513)=>(_0x14e513=_0x8c2ab8!=null?K(te(_0x8c2ab8)):{},re(_0x468c1b||!_0x8c2ab8||!_0x8c2ab8[_0x2160de(0x13e)]?Q(_0x14e513,_0x2160de(0x17d),{'value':_0x8c2ab8,'enumerable':!0x0}):_0x14e513,_0x8c2ab8)),Z=class{constructor(_0x1d2e23,_0xdab60e,_0x40e94c,_0x142eb1,_0x2141db,_0xa205f9){var _0x5cced4=_0x2160de,_0x5c108c,_0x2a03dc,_0x184e43,_0x3bd2e9;this['global']=_0x1d2e23,this[_0x5cced4(0x182)]=_0xdab60e,this[_0x5cced4(0x1d7)]=_0x40e94c,this['nodeModules']=_0x142eb1,this[_0x5cced4(0x12e)]=_0x2141db,this['eventReceivedCallback']=_0xa205f9,this[_0x5cced4(0x1d6)]=!0x0,this[_0x5cced4(0x150)]=!0x0,this[_0x5cced4(0x1b0)]=!0x1,this[_0x5cced4(0x166)]=!0x1,this[_0x5cced4(0xf4)]=((_0x2a03dc=(_0x5c108c=_0x1d2e23[_0x5cced4(0x1d1)])==null?void 0x0:_0x5c108c[_0x5cced4(0x16e)])==null?void 0x0:_0x2a03dc[_0x5cced4(0x163)])===_0x5cced4(0x199),this[_0x5cced4(0x173)]=!((_0x3bd2e9=(_0x184e43=this[_0x5cced4(0x1e9)][_0x5cced4(0x1d1)])==null?void 0x0:_0x184e43[_0x5cced4(0x184)])!=null&&_0x3bd2e9[_0x5cced4(0x1a1)])&&!this[_0x5cced4(0xf4)],this[_0x5cced4(0x1e4)]=null,this['_connectAttemptCount']=0x0,this[_0x5cced4(0x17c)]=0x14,this[_0x5cced4(0x142)]=_0x5cced4(0x19e),this[_0x5cced4(0x107)]=(this[_0x5cced4(0x173)]?_0x5cced4(0x13c):_0x5cced4(0x1e7))+this[_0x5cced4(0x142)];}async[_0x2160de(0x1ea)](){var _0x128a49=_0x2160de,_0x3bc6cb,_0x2c9200;if(this['_WebSocketClass'])return this[_0x128a49(0x1e4)];let _0x1adb57;if(this['_inBrowser']||this['_inNextEdge'])_0x1adb57=this['global']['WebSocket'];else{if((_0x3bc6cb=this[_0x128a49(0x1e9)]['process'])!=null&&_0x3bc6cb[_0x128a49(0x16d)])_0x1adb57=(_0x2c9200=this[_0x128a49(0x1e9)][_0x128a49(0x1d1)])==null?void 0x0:_0x2c9200[_0x128a49(0x16d)];else try{let _0x31283e=await import(_0x128a49(0x10f));_0x1adb57=(await import((await import(_0x128a49(0x1e5)))[_0x128a49(0x138)](_0x31283e[_0x128a49(0x12a)](this[_0x128a49(0x16c)],'ws/index.js'))[_0x128a49(0xff)]()))[_0x128a49(0x17d)];}catch{try{_0x1adb57=require(require(_0x128a49(0x10f))[_0x128a49(0x12a)](this['nodeModules'],'ws'));}catch{throw new Error(_0x128a49(0x126));}}}return this[_0x128a49(0x1e4)]=_0x1adb57,_0x1adb57;}[_0x2160de(0x189)](){var _0x3ea5f7=_0x2160de;this[_0x3ea5f7(0x166)]||this['_connected']||this[_0x3ea5f7(0xfd)]>=this[_0x3ea5f7(0x17c)]||(this[_0x3ea5f7(0x150)]=!0x1,this[_0x3ea5f7(0x166)]=!0x0,this[_0x3ea5f7(0xfd)]++,this[_0x3ea5f7(0x160)]=new Promise((_0x1cdfe6,_0x393076)=>{var _0x329328=_0x3ea5f7;this[_0x329328(0x1ea)]()['then'](_0x59ec54=>{var _0x1ebfd9=_0x329328;let _0x5a5b17=new _0x59ec54(_0x1ebfd9(0x1da)+(!this['_inBrowser']&&this[_0x1ebfd9(0x12e)]?_0x1ebfd9(0x156):this['host'])+':'+this[_0x1ebfd9(0x1d7)]);_0x5a5b17['onerror']=()=>{var _0x5e8d60=_0x1ebfd9;this[_0x5e8d60(0x1d6)]=!0x1,this[_0x5e8d60(0x175)](_0x5a5b17),this[_0x5e8d60(0x14f)](),_0x393076(new Error(_0x5e8d60(0x18d)));},_0x5a5b17['onopen']=()=>{var _0xbd38a2=_0x1ebfd9;this[_0xbd38a2(0x173)]||_0x5a5b17[_0xbd38a2(0x104)]&&_0x5a5b17[_0xbd38a2(0x104)]['unref']&&_0x5a5b17[_0xbd38a2(0x104)][_0xbd38a2(0x1c3)](),_0x1cdfe6(_0x5a5b17);},_0x5a5b17[_0x1ebfd9(0x19c)]=()=>{var _0x295279=_0x1ebfd9;this[_0x295279(0x150)]=!0x0,this[_0x295279(0x175)](_0x5a5b17),this['_attemptToReconnectShortly']();},_0x5a5b17[_0x1ebfd9(0x19f)]=_0x478321=>{var _0x210356=_0x1ebfd9;try{if(!(_0x478321!=null&&_0x478321['data'])||!this[_0x210356(0xf7)])return;let _0x23117d=JSON[_0x210356(0x121)](_0x478321[_0x210356(0x130)]);this[_0x210356(0xf7)](_0x23117d[_0x210356(0x172)],_0x23117d[_0x210356(0x114)],this[_0x210356(0x1e9)],this[_0x210356(0x173)]);}catch{}};})[_0x329328(0x1c1)](_0x1701d9=>(this[_0x329328(0x1b0)]=!0x0,this['_connecting']=!0x1,this['_allowedToConnectOnSend']=!0x1,this[_0x329328(0x1d6)]=!0x0,this['_connectAttemptCount']=0x0,_0x1701d9))[_0x329328(0x1b2)](_0x1c88b0=>(this[_0x329328(0x1b0)]=!0x1,this['_connecting']=!0x1,console[_0x329328(0x105)](_0x329328(0x1a2)+this['_webSocketErrorDocsLink']),_0x393076(new Error(_0x329328(0x1b4)+(_0x1c88b0&&_0x1c88b0['message'])))));}));}[_0x2160de(0x175)](_0x3db513){var _0x36824d=_0x2160de;this[_0x36824d(0x1b0)]=!0x1,this[_0x36824d(0x166)]=!0x1;try{_0x3db513[_0x36824d(0x19c)]=null,_0x3db513[_0x36824d(0x1a8)]=null,_0x3db513[_0x36824d(0x1c5)]=null;}catch{}try{_0x3db513['readyState']<0x2&&_0x3db513['close']();}catch{}}[_0x2160de(0x14f)](){var _0x6bcb9d=_0x2160de;clearTimeout(this[_0x6bcb9d(0x137)]),!(this[_0x6bcb9d(0xfd)]>=this[_0x6bcb9d(0x17c)])&&(this[_0x6bcb9d(0x137)]=setTimeout(()=>{var _0x577db9=_0x6bcb9d,_0x5cbaa6;this[_0x577db9(0x1b0)]||this[_0x577db9(0x166)]||(this['_connectToHostNow'](),(_0x5cbaa6=this['_ws'])==null||_0x5cbaa6[_0x577db9(0x1b2)](()=>this[_0x577db9(0x14f)]()));},0x1f4),this[_0x6bcb9d(0x137)][_0x6bcb9d(0x1c3)]&&this[_0x6bcb9d(0x137)][_0x6bcb9d(0x1c3)]());}async[_0x2160de(0x17e)](_0x12b796){var _0x22327c=_0x2160de;try{if(!this[_0x22327c(0x1d6)])return;this[_0x22327c(0x150)]&&this['_connectToHostNow'](),(await this[_0x22327c(0x160)])[_0x22327c(0x17e)](JSON['stringify'](_0x12b796));}catch(_0x57337a){console[_0x22327c(0x105)](this[_0x22327c(0x107)]+':\\\\x20'+(_0x57337a&&_0x57337a['message'])),this['_allowedToSend']=!0x1,this[_0x22327c(0x14f)]();}}};function q(_0x1f963b,_0x263322,_0x3f1b38,_0x43c8cd,_0xf6067d,_0xf3e79,_0x473826,_0x504ee4=ie){var _0x65040b=_0x2160de;let _0x5e33cb=_0x3f1b38[_0x65040b(0x113)](',')['map'](_0x577e64=>{var _0x5cfeab=_0x65040b,_0x1eeeb0,_0x5befcf,_0x2ed490,_0x451332;try{if(!_0x1f963b[_0x5cfeab(0x14a)]){let _0x213503=((_0x5befcf=(_0x1eeeb0=_0x1f963b['process'])==null?void 0x0:_0x1eeeb0[_0x5cfeab(0x184)])==null?void 0x0:_0x5befcf[_0x5cfeab(0x1a1)])||((_0x451332=(_0x2ed490=_0x1f963b[_0x5cfeab(0x1d1)])==null?void 0x0:_0x2ed490[_0x5cfeab(0x16e)])==null?void 0x0:_0x451332[_0x5cfeab(0x163)])===_0x5cfeab(0x199);(_0xf6067d===_0x5cfeab(0x1a7)||_0xf6067d===_0x5cfeab(0x1dd)||_0xf6067d===_0x5cfeab(0x1af)||_0xf6067d===_0x5cfeab(0x153))&&(_0xf6067d+=_0x213503?_0x5cfeab(0x193):_0x5cfeab(0x10c)),_0x1f963b[_0x5cfeab(0x14a)]={'id':+new Date(),'tool':_0xf6067d},_0x473826&&_0xf6067d&&!_0x213503&&console[_0x5cfeab(0x194)](_0x5cfeab(0x17f)+(_0xf6067d['charAt'](0x0)[_0x5cfeab(0x1b1)]()+_0xf6067d['substr'](0x1))+',',_0x5cfeab(0x1b3),'see\\\\x20https://tinyurl.com/2vt8jxzw\\\\x20for\\\\x20more\\\\x20info.');}let _0x80b835=new Z(_0x1f963b,_0x263322,_0x577e64,_0x43c8cd,_0xf3e79,_0x504ee4);return _0x80b835[_0x5cfeab(0x17e)][_0x5cfeab(0x190)](_0x80b835);}catch(_0x1cb024){return console[_0x5cfeab(0x105)](_0x5cfeab(0x11d),_0x1cb024&&_0x1cb024['message']),()=>{};}});return _0x183d11=>_0x5e33cb[_0x65040b(0x1d8)](_0x404b4f=>_0x404b4f(_0x183d11));}function ie(_0x5a5d6e,_0x3ab594,_0x3d399e,_0x309169){var _0x2b0214=_0x2160de;_0x309169&&_0x5a5d6e===_0x2b0214(0x11b)&&_0x3d399e[_0x2b0214(0x191)][_0x2b0214(0x11b)]();}function _0x21a3(_0x3c4fd7,_0x245abe){var _0x3632c8=_0x3632();return _0x21a3=function(_0x21a3d1,_0x24d2de){_0x21a3d1=_0x21a3d1-0xee;var _0x3406f5=_0x3632c8[_0x21a3d1];return _0x3406f5;},_0x21a3(_0x3c4fd7,_0x245abe);}function B(_0x479ade){var _0x55e4b6=_0x2160de,_0x1db6df,_0x2675fc;let _0x253e83=function(_0x461cb,_0x51aef7){return _0x51aef7-_0x461cb;},_0x24648b;if(_0x479ade[_0x55e4b6(0x12c)])_0x24648b=function(){var _0x28c428=_0x55e4b6;return _0x479ade[_0x28c428(0x12c)][_0x28c428(0x129)]();};else{if(_0x479ade[_0x55e4b6(0x1d1)]&&_0x479ade[_0x55e4b6(0x1d1)][_0x55e4b6(0x148)]&&((_0x2675fc=(_0x1db6df=_0x479ade['process'])==null?void 0x0:_0x1db6df[_0x55e4b6(0x16e)])==null?void 0x0:_0x2675fc[_0x55e4b6(0x163)])!==_0x55e4b6(0x199))_0x24648b=function(){var _0x44dcc4=_0x55e4b6;return _0x479ade[_0x44dcc4(0x1d1)][_0x44dcc4(0x148)]();},_0x253e83=function(_0x1e11c5,_0xa37d54){return 0x3e8*(_0xa37d54[0x0]-_0x1e11c5[0x0])+(_0xa37d54[0x1]-_0x1e11c5[0x1])/0xf4240;};else try{let {performance:_0x568fd6}=require(_0x55e4b6(0x185));_0x24648b=function(){var _0x5f57ed=_0x55e4b6;return _0x568fd6[_0x5f57ed(0x129)]();};}catch{_0x24648b=function(){return+new Date();};}}return{'elapsed':_0x253e83,'timeStamp':_0x24648b,'now':()=>Date['now']()};}function H(_0x10dccb,_0x1e80af,_0x352174){var _0x4997ac=_0x2160de,_0x5b1ba2,_0x11f9c0,_0x27ac93,_0x36b7af,_0x2b4871;if(_0x10dccb[_0x4997ac(0x19d)]!==void 0x0)return _0x10dccb['_consoleNinjaAllowedToStart'];let _0x392b63=((_0x11f9c0=(_0x5b1ba2=_0x10dccb[_0x4997ac(0x1d1)])==null?void 0x0:_0x5b1ba2[_0x4997ac(0x184)])==null?void 0x0:_0x11f9c0[_0x4997ac(0x1a1)])||((_0x36b7af=(_0x27ac93=_0x10dccb[_0x4997ac(0x1d1)])==null?void 0x0:_0x27ac93['env'])==null?void 0x0:_0x36b7af['NEXT_RUNTIME'])===_0x4997ac(0x199);function _0x2d8e02(_0x1544db){var _0x36dbda=_0x4997ac;if(_0x1544db['startsWith']('/')&&_0x1544db[_0x36dbda(0x165)]('/')){let _0x4974fb=new RegExp(_0x1544db[_0x36dbda(0x1ad)](0x1,-0x1));return _0x1401d3=>_0x4974fb[_0x36dbda(0x16f)](_0x1401d3);}else{if(_0x1544db[_0x36dbda(0x198)]('*')||_0x1544db[_0x36dbda(0x198)]('?')){let _0x2cb3b9=new RegExp('^'+_0x1544db[_0x36dbda(0x144)](/\\\\./g,String[_0x36dbda(0x12f)](0x5c)+'.')['replace'](/\\\\*/g,'.*')['replace'](/\\\\?/g,'.')+String['fromCharCode'](0x24));return _0x320b97=>_0x2cb3b9[_0x36dbda(0x16f)](_0x320b97);}else return _0x3d785b=>_0x3d785b===_0x1544db;}}let _0x2bda5a=_0x1e80af['map'](_0x2d8e02);return _0x10dccb['_consoleNinjaAllowedToStart']=_0x392b63||!_0x1e80af,!_0x10dccb[_0x4997ac(0x19d)]&&((_0x2b4871=_0x10dccb[_0x4997ac(0x191)])==null?void 0x0:_0x2b4871[_0x4997ac(0x15a)])&&(_0x10dccb[_0x4997ac(0x19d)]=_0x2bda5a['some'](_0x45fe63=>_0x45fe63(_0x10dccb[_0x4997ac(0x191)][_0x4997ac(0x15a)]))),_0x10dccb[_0x4997ac(0x19d)];}function X(_0x3e77c0,_0x368502,_0x3d2d4c,_0x391fb4){var _0x144a79=_0x2160de;_0x3e77c0=_0x3e77c0,_0x368502=_0x368502,_0x3d2d4c=_0x3d2d4c,_0x391fb4=_0x391fb4;let _0x83c743=B(_0x3e77c0),_0x47a395=_0x83c743[_0x144a79(0xf0)],_0x24d130=_0x83c743['timeStamp'];class _0x4e138c{constructor(){var _0x50df0f=_0x144a79;this['_keyStrRegExp']=/^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[_$a-zA-Z\\\\xA0-\\\\uFFFF][_$a-zA-Z0-9\\\\xA0-\\\\uFFFF]*$/,this[_0x50df0f(0x108)]=/^(0|[1-9][0-9]*)$/,this[_0x50df0f(0x1b5)]=/'([^\\\\\\\\']|\\\\\\\\')*'/,this[_0x50df0f(0x168)]=_0x3e77c0[_0x50df0f(0x1a9)],this[_0x50df0f(0x180)]=_0x3e77c0[_0x50df0f(0x157)],this[_0x50df0f(0x1c2)]=Object[_0x50df0f(0x131)],this[_0x50df0f(0x17a)]=Object[_0x50df0f(0x18c)],this[_0x50df0f(0x134)]=_0x3e77c0['Symbol'],this[_0x50df0f(0x1db)]=RegExp[_0x50df0f(0x1e8)]['toString'],this[_0x50df0f(0x18f)]=Date['prototype'][_0x50df0f(0xff)];}[_0x144a79(0x15e)](_0x5416d7,_0x116012,_0x4064e,_0x5d249a){var _0x276822=_0x144a79,_0x49e6d5=this,_0x57b7ae=_0x4064e[_0x276822(0x10b)];function _0x3b3f6a(_0x5d68a0,_0x790290,_0x5d67a7){var _0x395046=_0x276822;_0x790290[_0x395046(0x123)]=_0x395046(0x1b6),_0x790290[_0x395046(0x174)]=_0x5d68a0[_0x395046(0x1ae)],_0x3d70f8=_0x5d67a7['node'][_0x395046(0x1bc)],_0x5d67a7[_0x395046(0x1a1)][_0x395046(0x1bc)]=_0x790290,_0x49e6d5[_0x395046(0xf1)](_0x790290,_0x5d67a7);}try{_0x4064e[_0x276822(0x171)]++,_0x4064e[_0x276822(0x10b)]&&_0x4064e['autoExpandPreviousObjects'][_0x276822(0xf9)](_0x116012);var _0x409809,_0x4b11d6,_0x4c519c,_0x77116f,_0x22b5a1=[],_0x5988bd=[],_0x39ee3b,_0x21d3f8=this['_type'](_0x116012),_0x2d1504=_0x21d3f8===_0x276822(0x12b),_0xb381de=!0x1,_0x2aa0a9=_0x21d3f8==='function',_0x3fdc8a=this[_0x276822(0x1e2)](_0x21d3f8),_0x2795c6=this['_isPrimitiveWrapperType'](_0x21d3f8),_0x5995ba=_0x3fdc8a||_0x2795c6,_0x1134b4={},_0x3e617b=0x0,_0x34b838=!0x1,_0x3d70f8,_0x448392=/^(([1-9]{1}[0-9]*)|0)$/;if(_0x4064e[_0x276822(0x125)]){if(_0x2d1504){if(_0x4b11d6=_0x116012['length'],_0x4b11d6>_0x4064e['elements']){for(_0x4c519c=0x0,_0x77116f=_0x4064e[_0x276822(0x122)],_0x409809=_0x4c519c;_0x409809<_0x77116f;_0x409809++)_0x5988bd['push'](_0x49e6d5[_0x276822(0xf5)](_0x22b5a1,_0x116012,_0x21d3f8,_0x409809,_0x4064e));_0x5416d7[_0x276822(0x1d3)]=!0x0;}else{for(_0x4c519c=0x0,_0x77116f=_0x4b11d6,_0x409809=_0x4c519c;_0x409809<_0x77116f;_0x409809++)_0x5988bd[_0x276822(0xf9)](_0x49e6d5[_0x276822(0xf5)](_0x22b5a1,_0x116012,_0x21d3f8,_0x409809,_0x4064e));}_0x4064e[_0x276822(0x1b8)]+=_0x5988bd[_0x276822(0x13f)];}if(!(_0x21d3f8===_0x276822(0x1ce)||_0x21d3f8==='undefined')&&!_0x3fdc8a&&_0x21d3f8!==_0x276822(0xf3)&&_0x21d3f8!==_0x276822(0x14b)&&_0x21d3f8!==_0x276822(0x1e1)){var _0x5bbc59=_0x5d249a[_0x276822(0x109)]||_0x4064e['props'];if(this['_isSet'](_0x116012)?(_0x409809=0x0,_0x116012[_0x276822(0x1d8)](function(_0x370926){var _0x37eb0d=_0x276822;if(_0x3e617b++,_0x4064e[_0x37eb0d(0x1b8)]++,_0x3e617b>_0x5bbc59){_0x34b838=!0x0;return;}if(!_0x4064e[_0x37eb0d(0x1c0)]&&_0x4064e[_0x37eb0d(0x10b)]&&_0x4064e['autoExpandPropertyCount']>_0x4064e[_0x37eb0d(0x14e)]){_0x34b838=!0x0;return;}_0x5988bd['push'](_0x49e6d5['_addProperty'](_0x22b5a1,_0x116012,_0x37eb0d(0xfc),_0x409809++,_0x4064e,function(_0x1b010a){return function(){return _0x1b010a;};}(_0x370926)));})):this[_0x276822(0x176)](_0x116012)&&_0x116012['forEach'](function(_0x3e9664,_0x283dc1){var _0x6b9f9b=_0x276822;if(_0x3e617b++,_0x4064e['autoExpandPropertyCount']++,_0x3e617b>_0x5bbc59){_0x34b838=!0x0;return;}if(!_0x4064e[_0x6b9f9b(0x1c0)]&&_0x4064e[_0x6b9f9b(0x10b)]&&_0x4064e[_0x6b9f9b(0x1b8)]>_0x4064e[_0x6b9f9b(0x14e)]){_0x34b838=!0x0;return;}var _0x42447e=_0x283dc1[_0x6b9f9b(0xff)]();_0x42447e[_0x6b9f9b(0x13f)]>0x64&&(_0x42447e=_0x42447e[_0x6b9f9b(0x1ad)](0x0,0x64)+_0x6b9f9b(0x143)),_0x5988bd['push'](_0x49e6d5['_addProperty'](_0x22b5a1,_0x116012,'Map',_0x42447e,_0x4064e,function(_0x490eaf){return function(){return _0x490eaf;};}(_0x3e9664)));}),!_0xb381de){try{for(_0x39ee3b in _0x116012)if(!(_0x2d1504&&_0x448392['test'](_0x39ee3b))&&!this[_0x276822(0x151)](_0x116012,_0x39ee3b,_0x4064e)){if(_0x3e617b++,_0x4064e[_0x276822(0x1b8)]++,_0x3e617b>_0x5bbc59){_0x34b838=!0x0;break;}if(!_0x4064e[_0x276822(0x1c0)]&&_0x4064e['autoExpand']&&_0x4064e[_0x276822(0x1b8)]>_0x4064e[_0x276822(0x14e)]){_0x34b838=!0x0;break;}_0x5988bd[_0x276822(0xf9)](_0x49e6d5[_0x276822(0x117)](_0x22b5a1,_0x1134b4,_0x116012,_0x21d3f8,_0x39ee3b,_0x4064e));}}catch{}if(_0x1134b4['_p_length']=!0x0,_0x2aa0a9&&(_0x1134b4[_0x276822(0x1a6)]=!0x0),!_0x34b838){var _0x46fabb=[][_0x276822(0x1a5)](this[_0x276822(0x17a)](_0x116012))[_0x276822(0x1a5)](this['_getOwnPropertySymbols'](_0x116012));for(_0x409809=0x0,_0x4b11d6=_0x46fabb['length'];_0x409809<_0x4b11d6;_0x409809++)if(_0x39ee3b=_0x46fabb[_0x409809],!(_0x2d1504&&_0x448392[_0x276822(0x16f)](_0x39ee3b[_0x276822(0xff)]()))&&!this[_0x276822(0x151)](_0x116012,_0x39ee3b,_0x4064e)&&!_0x1134b4[_0x276822(0x162)+_0x39ee3b[_0x276822(0xff)]()]){if(_0x3e617b++,_0x4064e['autoExpandPropertyCount']++,_0x3e617b>_0x5bbc59){_0x34b838=!0x0;break;}if(!_0x4064e['isExpressionToEvaluate']&&_0x4064e[_0x276822(0x10b)]&&_0x4064e['autoExpandPropertyCount']>_0x4064e[_0x276822(0x14e)]){_0x34b838=!0x0;break;}_0x5988bd[_0x276822(0xf9)](_0x49e6d5[_0x276822(0x117)](_0x22b5a1,_0x1134b4,_0x116012,_0x21d3f8,_0x39ee3b,_0x4064e));}}}}}if(_0x5416d7[_0x276822(0x123)]=_0x21d3f8,_0x5995ba?(_0x5416d7[_0x276822(0x118)]=_0x116012[_0x276822(0x1ca)](),this[_0x276822(0x1a3)](_0x21d3f8,_0x5416d7,_0x4064e,_0x5d249a)):_0x21d3f8===_0x276822(0x18e)?_0x5416d7[_0x276822(0x118)]=this[_0x276822(0x18f)]['call'](_0x116012):_0x21d3f8===_0x276822(0x1e1)?_0x5416d7[_0x276822(0x118)]=_0x116012[_0x276822(0xff)]():_0x21d3f8===_0x276822(0x1d9)?_0x5416d7[_0x276822(0x118)]=this[_0x276822(0x1db)][_0x276822(0x12d)](_0x116012):_0x21d3f8===_0x276822(0xfb)&&this['_Symbol']?_0x5416d7[_0x276822(0x118)]=this[_0x276822(0x134)]['prototype']['toString'][_0x276822(0x12d)](_0x116012):!_0x4064e[_0x276822(0x125)]&&!(_0x21d3f8===_0x276822(0x1ce)||_0x21d3f8===_0x276822(0x1a9))&&(delete _0x5416d7[_0x276822(0x118)],_0x5416d7[_0x276822(0x15d)]=!0x0),_0x34b838&&(_0x5416d7[_0x276822(0x13b)]=!0x0),_0x3d70f8=_0x4064e[_0x276822(0x1a1)][_0x276822(0x1bc)],_0x4064e[_0x276822(0x1a1)]['current']=_0x5416d7,this[_0x276822(0xf1)](_0x5416d7,_0x4064e),_0x5988bd[_0x276822(0x13f)]){for(_0x409809=0x0,_0x4b11d6=_0x5988bd[_0x276822(0x13f)];_0x409809<_0x4b11d6;_0x409809++)_0x5988bd[_0x409809](_0x409809);}_0x22b5a1[_0x276822(0x13f)]&&(_0x5416d7[_0x276822(0x109)]=_0x22b5a1);}catch(_0x545cfc){_0x3b3f6a(_0x545cfc,_0x5416d7,_0x4064e);}return this[_0x276822(0x132)](_0x116012,_0x5416d7),this[_0x276822(0x103)](_0x5416d7,_0x4064e),_0x4064e['node'][_0x276822(0x1bc)]=_0x3d70f8,_0x4064e[_0x276822(0x171)]--,_0x4064e[_0x276822(0x10b)]=_0x57b7ae,_0x4064e['autoExpand']&&_0x4064e[_0x276822(0x169)][_0x276822(0x1cb)](),_0x5416d7;}[_0x144a79(0x1bf)](_0x342ecf){return Object['getOwnPropertySymbols']?Object['getOwnPropertySymbols'](_0x342ecf):[];}[_0x144a79(0x1c4)](_0x5ba2ae){var _0x5a7687=_0x144a79;return!!(_0x5ba2ae&&_0x3e77c0[_0x5a7687(0xfc)]&&this['_objectToString'](_0x5ba2ae)===_0x5a7687(0x1e0)&&_0x5ba2ae[_0x5a7687(0x1d8)]);}[_0x144a79(0x151)](_0x1cb176,_0x21f6ff,_0x22cda5){var _0x223b84=_0x144a79;return _0x22cda5[_0x223b84(0x11a)]?typeof _0x1cb176[_0x21f6ff]==_0x223b84(0x1df):!0x1;}[_0x144a79(0x1b9)](_0x14fbf5){var _0x540dfe=_0x144a79,_0x21d37e='';return _0x21d37e=typeof _0x14fbf5,_0x21d37e===_0x540dfe(0xf2)?this['_objectToString'](_0x14fbf5)===_0x540dfe(0xef)?_0x21d37e=_0x540dfe(0x12b):this[_0x540dfe(0x1a4)](_0x14fbf5)===_0x540dfe(0x1d0)?_0x21d37e='date':this[_0x540dfe(0x1a4)](_0x14fbf5)===_0x540dfe(0x179)?_0x21d37e=_0x540dfe(0x1e1):_0x14fbf5===null?_0x21d37e=_0x540dfe(0x1ce):_0x14fbf5[_0x540dfe(0x10e)]&&(_0x21d37e=_0x14fbf5['constructor'][_0x540dfe(0xfe)]||_0x21d37e):_0x21d37e===_0x540dfe(0x1a9)&&this[_0x540dfe(0x180)]&&_0x14fbf5 instanceof this['_HTMLAllCollection']&&(_0x21d37e=_0x540dfe(0x157)),_0x21d37e;}[_0x144a79(0x1a4)](_0x8e2c33){var _0x252277=_0x144a79;return Object[_0x252277(0x1e8)]['toString'][_0x252277(0x12d)](_0x8e2c33);}[_0x144a79(0x1e2)](_0x575741){var _0x23d891=_0x144a79;return _0x575741===_0x23d891(0x18a)||_0x575741==='string'||_0x575741===_0x23d891(0x133);}[_0x144a79(0x101)](_0x4456b7){var _0x2de837=_0x144a79;return _0x4456b7===_0x2de837(0x140)||_0x4456b7==='String'||_0x4456b7===_0x2de837(0x135);}[_0x144a79(0xf5)](_0x4354f5,_0x2e6613,_0x5874b5,_0x561ca8,_0x22e9fa,_0xf7af1c){var _0x1cf564=this;return function(_0x384940){var _0x598128=_0x21a3,_0x1c7c0b=_0x22e9fa[_0x598128(0x1a1)][_0x598128(0x1bc)],_0x46c00c=_0x22e9fa[_0x598128(0x1a1)][_0x598128(0x10a)],_0x16be0b=_0x22e9fa[_0x598128(0x1a1)][_0x598128(0x11c)];_0x22e9fa[_0x598128(0x1a1)][_0x598128(0x11c)]=_0x1c7c0b,_0x22e9fa[_0x598128(0x1a1)][_0x598128(0x10a)]=typeof _0x561ca8=='number'?_0x561ca8:_0x384940,_0x4354f5[_0x598128(0xf9)](_0x1cf564['_property'](_0x2e6613,_0x5874b5,_0x561ca8,_0x22e9fa,_0xf7af1c)),_0x22e9fa[_0x598128(0x1a1)][_0x598128(0x11c)]=_0x16be0b,_0x22e9fa['node']['index']=_0x46c00c;};}[_0x144a79(0x117)](_0x58d056,_0x3f3d81,_0x423f15,_0x7eaa6e,_0xd8e80,_0x57780f,_0x4dffbc){var _0x32a146=_0x144a79,_0x41efa8=this;return _0x3f3d81[_0x32a146(0x162)+_0xd8e80['toString']()]=!0x0,function(_0x4d920b){var _0x49b5c2=_0x32a146,_0x5ac13c=_0x57780f[_0x49b5c2(0x1a1)][_0x49b5c2(0x1bc)],_0x3b2e7f=_0x57780f['node'][_0x49b5c2(0x10a)],_0x188cf3=_0x57780f[_0x49b5c2(0x1a1)]['parent'];_0x57780f[_0x49b5c2(0x1a1)][_0x49b5c2(0x11c)]=_0x5ac13c,_0x57780f['node'][_0x49b5c2(0x10a)]=_0x4d920b,_0x58d056[_0x49b5c2(0xf9)](_0x41efa8[_0x49b5c2(0x11e)](_0x423f15,_0x7eaa6e,_0xd8e80,_0x57780f,_0x4dffbc)),_0x57780f[_0x49b5c2(0x1a1)][_0x49b5c2(0x11c)]=_0x188cf3,_0x57780f[_0x49b5c2(0x1a1)][_0x49b5c2(0x10a)]=_0x3b2e7f;};}[_0x144a79(0x11e)](_0x30d594,_0x313c60,_0x116b3f,_0x110528,_0x4c9ac0){var _0x860bad=_0x144a79,_0x3c61c2=this;_0x4c9ac0||(_0x4c9ac0=function(_0x374fcf,_0x341fdd){return _0x374fcf[_0x341fdd];});var _0x5ebc8c=_0x116b3f[_0x860bad(0xff)](),_0x32f673=_0x110528[_0x860bad(0x181)]||{},_0x38968e=_0x110528['depth'],_0xd7277d=_0x110528[_0x860bad(0x1c0)];try{var _0x14b85f=this['_isMap'](_0x30d594),_0x316f78=_0x5ebc8c;_0x14b85f&&_0x316f78[0x0]==='\\\\x27'&&(_0x316f78=_0x316f78[_0x860bad(0x112)](0x1,_0x316f78['length']-0x2));var _0x4099d8=_0x110528[_0x860bad(0x181)]=_0x32f673['_p_'+_0x316f78];_0x4099d8&&(_0x110528[_0x860bad(0x125)]=_0x110528[_0x860bad(0x125)]+0x1),_0x110528[_0x860bad(0x1c0)]=!!_0x4099d8;var _0x28f7fd=typeof _0x116b3f==_0x860bad(0xfb),_0x33a0d0={'name':_0x28f7fd||_0x14b85f?_0x5ebc8c:this[_0x860bad(0x1cf)](_0x5ebc8c)};if(_0x28f7fd&&(_0x33a0d0[_0x860bad(0xfb)]=!0x0),!(_0x313c60===_0x860bad(0x12b)||_0x313c60==='Error')){var _0x1db4a5=this[_0x860bad(0x1c2)](_0x30d594,_0x116b3f);if(_0x1db4a5&&(_0x1db4a5[_0x860bad(0x188)]&&(_0x33a0d0[_0x860bad(0x1d4)]=!0x0),_0x1db4a5[_0x860bad(0x136)]&&!_0x4099d8&&!_0x110528[_0x860bad(0x17b)]))return _0x33a0d0[_0x860bad(0x11f)]=!0x0,this['_processTreeNodeResult'](_0x33a0d0,_0x110528),_0x33a0d0;}var _0x45eef2;try{_0x45eef2=_0x4c9ac0(_0x30d594,_0x116b3f);}catch(_0x349276){return _0x33a0d0={'name':_0x5ebc8c,'type':'unknown','error':_0x349276[_0x860bad(0x1ae)]},this[_0x860bad(0x120)](_0x33a0d0,_0x110528),_0x33a0d0;}var _0x539394=this[_0x860bad(0x1b9)](_0x45eef2),_0x490c82=this[_0x860bad(0x1e2)](_0x539394);if(_0x33a0d0[_0x860bad(0x123)]=_0x539394,_0x490c82)this[_0x860bad(0x120)](_0x33a0d0,_0x110528,_0x45eef2,function(){var _0x5a3749=_0x860bad;_0x33a0d0[_0x5a3749(0x118)]=_0x45eef2['valueOf'](),!_0x4099d8&&_0x3c61c2[_0x5a3749(0x1a3)](_0x539394,_0x33a0d0,_0x110528,{});});else{var _0x3ce9b1=_0x110528['autoExpand']&&_0x110528[_0x860bad(0x171)]<_0x110528[_0x860bad(0x1cd)]&&_0x110528[_0x860bad(0x169)][_0x860bad(0x111)](_0x45eef2)<0x0&&_0x539394!=='function'&&_0x110528['autoExpandPropertyCount']<_0x110528[_0x860bad(0x14e)];_0x3ce9b1||_0x110528[_0x860bad(0x171)]<_0x38968e||_0x4099d8?(this[_0x860bad(0x15e)](_0x33a0d0,_0x45eef2,_0x110528,_0x4099d8||{}),this[_0x860bad(0x132)](_0x45eef2,_0x33a0d0)):this[_0x860bad(0x120)](_0x33a0d0,_0x110528,_0x45eef2,function(){var _0x4e871a=_0x860bad;_0x539394===_0x4e871a(0x1ce)||_0x539394===_0x4e871a(0x1a9)||(delete _0x33a0d0[_0x4e871a(0x118)],_0x33a0d0['capped']=!0x0);});}return _0x33a0d0;}finally{_0x110528[_0x860bad(0x181)]=_0x32f673,_0x110528['depth']=_0x38968e,_0x110528[_0x860bad(0x1c0)]=_0xd7277d;}}[_0x144a79(0x1a3)](_0x48037b,_0x2f1dd0,_0x473c43,_0x2ec293){var _0x39eca7=_0x144a79,_0x3f171f=_0x2ec293[_0x39eca7(0x139)]||_0x473c43[_0x39eca7(0x139)];if((_0x48037b==='string'||_0x48037b===_0x39eca7(0xf3))&&_0x2f1dd0[_0x39eca7(0x118)]){let _0x2d465d=_0x2f1dd0[_0x39eca7(0x118)][_0x39eca7(0x13f)];_0x473c43[_0x39eca7(0x178)]+=_0x2d465d,_0x473c43[_0x39eca7(0x178)]>_0x473c43[_0x39eca7(0x1d2)]?(_0x2f1dd0[_0x39eca7(0x15d)]='',delete _0x2f1dd0['value']):_0x2d465d>_0x3f171f&&(_0x2f1dd0[_0x39eca7(0x15d)]=_0x2f1dd0[_0x39eca7(0x118)][_0x39eca7(0x112)](0x0,_0x3f171f),delete _0x2f1dd0[_0x39eca7(0x118)]);}}[_0x144a79(0x176)](_0x5e12a9){var _0x2e6805=_0x144a79;return!!(_0x5e12a9&&_0x3e77c0[_0x2e6805(0x149)]&&this[_0x2e6805(0x1a4)](_0x5e12a9)===_0x2e6805(0x1e6)&&_0x5e12a9[_0x2e6805(0x1d8)]);}[_0x144a79(0x1cf)](_0x45972a){var _0x58ae9d=_0x144a79;if(_0x45972a[_0x58ae9d(0x19b)](/^\\\\d+$/))return _0x45972a;var _0x319850;try{_0x319850=JSON[_0x58ae9d(0x1bb)](''+_0x45972a);}catch{_0x319850='\\\\x22'+this[_0x58ae9d(0x1a4)](_0x45972a)+'\\\\x22';}return _0x319850[_0x58ae9d(0x19b)](/^\\\"([a-zA-Z_][a-zA-Z_0-9]*)\\\"$/)?_0x319850=_0x319850[_0x58ae9d(0x112)](0x1,_0x319850['length']-0x2):_0x319850=_0x319850['replace'](/'/g,'\\\\x5c\\\\x27')[_0x58ae9d(0x144)](/\\\\\\\\\\\"/g,'\\\\x22')[_0x58ae9d(0x144)](/(^\\\"|\\\"$)/g,'\\\\x27'),_0x319850;}[_0x144a79(0x120)](_0x1bd8dc,_0x2ed4bd,_0x324def,_0x4e2bae){var _0x357ebc=_0x144a79;this[_0x357ebc(0xf1)](_0x1bd8dc,_0x2ed4bd),_0x4e2bae&&_0x4e2bae(),this[_0x357ebc(0x132)](_0x324def,_0x1bd8dc),this[_0x357ebc(0x103)](_0x1bd8dc,_0x2ed4bd);}['_treeNodePropertiesBeforeFullValue'](_0x107d65,_0x3ed7ca){var _0x219b16=_0x144a79;this['_setNodeId'](_0x107d65,_0x3ed7ca),this[_0x219b16(0x124)](_0x107d65,_0x3ed7ca),this[_0x219b16(0x1ac)](_0x107d65,_0x3ed7ca),this[_0x219b16(0x110)](_0x107d65,_0x3ed7ca);}[_0x144a79(0x147)](_0x56ce50,_0x58285a){}[_0x144a79(0x124)](_0x2fd389,_0x113b19){}[_0x144a79(0x10d)](_0x46fedc,_0x1fb3d1){}[_0x144a79(0x1c8)](_0x53d6a4){var _0x314f4b=_0x144a79;return _0x53d6a4===this[_0x314f4b(0x168)];}[_0x144a79(0x103)](_0x94f0d4,_0x1f78a2){var _0xc416c9=_0x144a79;this[_0xc416c9(0x10d)](_0x94f0d4,_0x1f78a2),this['_setNodeExpandableState'](_0x94f0d4),_0x1f78a2['sortProps']&&this[_0xc416c9(0xee)](_0x94f0d4),this[_0xc416c9(0x100)](_0x94f0d4,_0x1f78a2),this[_0xc416c9(0x19a)](_0x94f0d4,_0x1f78a2),this[_0xc416c9(0x115)](_0x94f0d4);}[_0x144a79(0x132)](_0x912632,_0x5f5544){var _0x20b522=_0x144a79;let _0x50f594;try{_0x3e77c0[_0x20b522(0x154)]&&(_0x50f594=_0x3e77c0[_0x20b522(0x154)][_0x20b522(0x174)],_0x3e77c0[_0x20b522(0x154)][_0x20b522(0x174)]=function(){}),_0x912632&&typeof _0x912632['length']==_0x20b522(0x133)&&(_0x5f5544['length']=_0x912632['length']);}catch{}finally{_0x50f594&&(_0x3e77c0[_0x20b522(0x154)]['error']=_0x50f594);}if(_0x5f5544[_0x20b522(0x123)]==='number'||_0x5f5544[_0x20b522(0x123)]===_0x20b522(0x135)){if(isNaN(_0x5f5544[_0x20b522(0x118)]))_0x5f5544[_0x20b522(0x158)]=!0x0,delete _0x5f5544['value'];else switch(_0x5f5544[_0x20b522(0x118)]){case Number['POSITIVE_INFINITY']:_0x5f5544[_0x20b522(0x186)]=!0x0,delete _0x5f5544[_0x20b522(0x118)];break;case Number[_0x20b522(0x116)]:_0x5f5544[_0x20b522(0x1aa)]=!0x0,delete _0x5f5544[_0x20b522(0x118)];break;case 0x0:this[_0x20b522(0x141)](_0x5f5544[_0x20b522(0x118)])&&(_0x5f5544[_0x20b522(0x14c)]=!0x0);break;}}else _0x5f5544[_0x20b522(0x123)]===_0x20b522(0x1df)&&typeof _0x912632['name']==_0x20b522(0x13d)&&_0x912632[_0x20b522(0xfe)]&&_0x5f5544[_0x20b522(0xfe)]&&_0x912632[_0x20b522(0xfe)]!==_0x5f5544['name']&&(_0x5f5544[_0x20b522(0x196)]=_0x912632['name']);}[_0x144a79(0x141)](_0x3d8de7){var _0x5bd0fa=_0x144a79;return 0x1/_0x3d8de7===Number[_0x5bd0fa(0x116)];}['_sortProps'](_0x4aa6dd){var _0x119666=_0x144a79;!_0x4aa6dd[_0x119666(0x109)]||!_0x4aa6dd[_0x119666(0x109)][_0x119666(0x13f)]||_0x4aa6dd[_0x119666(0x123)]===_0x119666(0x12b)||_0x4aa6dd[_0x119666(0x123)]===_0x119666(0x149)||_0x4aa6dd[_0x119666(0x123)]===_0x119666(0xfc)||_0x4aa6dd[_0x119666(0x109)]['sort'](function(_0x31ad1b,_0x1e1fbf){var _0x2d660e=_0x119666,_0x1d39c7=_0x31ad1b[_0x2d660e(0xfe)][_0x2d660e(0x1ab)](),_0x58bbc5=_0x1e1fbf['name'][_0x2d660e(0x1ab)]();return _0x1d39c7<_0x58bbc5?-0x1:_0x1d39c7>_0x58bbc5?0x1:0x0;});}[_0x144a79(0x100)](_0x256f87,_0x39cae1){var _0x3d0616=_0x144a79;if(!(_0x39cae1[_0x3d0616(0x11a)]||!_0x256f87['props']||!_0x256f87['props'][_0x3d0616(0x13f)])){for(var _0x12a78b=[],_0x11c382=[],_0x564eb4=0x0,_0x128043=_0x256f87['props'][_0x3d0616(0x13f)];_0x564eb4<_0x128043;_0x564eb4++){var _0x5b20c3=_0x256f87[_0x3d0616(0x109)][_0x564eb4];_0x5b20c3[_0x3d0616(0x123)]==='function'?_0x12a78b[_0x3d0616(0xf9)](_0x5b20c3):_0x11c382[_0x3d0616(0xf9)](_0x5b20c3);}if(!(!_0x11c382[_0x3d0616(0x13f)]||_0x12a78b['length']<=0x1)){_0x256f87[_0x3d0616(0x109)]=_0x11c382;var _0x32daf8={'functionsNode':!0x0,'props':_0x12a78b};this[_0x3d0616(0x147)](_0x32daf8,_0x39cae1),this[_0x3d0616(0x10d)](_0x32daf8,_0x39cae1),this['_setNodeExpandableState'](_0x32daf8),this[_0x3d0616(0x110)](_0x32daf8,_0x39cae1),_0x32daf8['id']+='\\\\x20f',_0x256f87[_0x3d0616(0x109)][_0x3d0616(0x1b7)](_0x32daf8);}}}[_0x144a79(0x19a)](_0x15acc0,_0x155efd){}[_0x144a79(0x161)](_0x2e282a){}[_0x144a79(0x18b)](_0x237103){var _0xfedee4=_0x144a79;return Array[_0xfedee4(0x164)](_0x237103)||typeof _0x237103==_0xfedee4(0xf2)&&this['_objectToString'](_0x237103)===_0xfedee4(0xef);}[_0x144a79(0x110)](_0x93d6b1,_0x555532){}[_0x144a79(0x115)](_0x2328ec){var _0x443c04=_0x144a79;delete _0x2328ec[_0x443c04(0x1c9)],delete _0x2328ec[_0x443c04(0x106)],delete _0x2328ec[_0x443c04(0x1c6)];}[_0x144a79(0x1ac)](_0x473e8a,_0x1f3de2){}}let _0x182186=new _0x4e138c(),_0x4c7196={'props':0x64,'elements':0x64,'strLength':0x400*0x32,'totalStrLength':0x400*0x32,'autoExpandLimit':0x1388,'autoExpandMaxDepth':0xa},_0x3701fa={'props':0x5,'elements':0x5,'strLength':0x100,'totalStrLength':0x100*0x3,'autoExpandLimit':0x1e,'autoExpandMaxDepth':0x2};function _0x213e3e(_0x2ff700,_0x1028d3,_0x6237b8,_0x3512a1,_0xcb090,_0x3b6c4b){var _0x407e31=_0x144a79;let _0x212837,_0x4e347f;try{_0x4e347f=_0x24d130(),_0x212837=_0x3d2d4c[_0x1028d3],!_0x212837||_0x4e347f-_0x212837['ts']>0x1f4&&_0x212837[_0x407e31(0x197)]&&_0x212837[_0x407e31(0x146)]/_0x212837[_0x407e31(0x197)]<0x64?(_0x3d2d4c[_0x1028d3]=_0x212837={'count':0x0,'time':0x0,'ts':_0x4e347f},_0x3d2d4c[_0x407e31(0x1c7)]={}):_0x4e347f-_0x3d2d4c['hits']['ts']>0x32&&_0x3d2d4c[_0x407e31(0x1c7)][_0x407e31(0x197)]&&_0x3d2d4c['hits'][_0x407e31(0x146)]/_0x3d2d4c[_0x407e31(0x1c7)]['count']<0x64&&(_0x3d2d4c[_0x407e31(0x1c7)]={});let _0x36a3f2=[],_0x24554b=_0x212837[_0x407e31(0x102)]||_0x3d2d4c[_0x407e31(0x1c7)][_0x407e31(0x102)]?_0x3701fa:_0x4c7196,_0x347fd7=_0x261a7d=>{var _0x3edcb4=_0x407e31;let _0x3a2713={};return _0x3a2713['props']=_0x261a7d['props'],_0x3a2713[_0x3edcb4(0x122)]=_0x261a7d[_0x3edcb4(0x122)],_0x3a2713[_0x3edcb4(0x139)]=_0x261a7d[_0x3edcb4(0x139)],_0x3a2713[_0x3edcb4(0x1d2)]=_0x261a7d[_0x3edcb4(0x1d2)],_0x3a2713[_0x3edcb4(0x14e)]=_0x261a7d[_0x3edcb4(0x14e)],_0x3a2713[_0x3edcb4(0x1cd)]=_0x261a7d[_0x3edcb4(0x1cd)],_0x3a2713[_0x3edcb4(0xf6)]=!0x1,_0x3a2713[_0x3edcb4(0x11a)]=!_0x368502,_0x3a2713[_0x3edcb4(0x125)]=0x1,_0x3a2713[_0x3edcb4(0x171)]=0x0,_0x3a2713[_0x3edcb4(0x15b)]=_0x3edcb4(0x1dc),_0x3a2713[_0x3edcb4(0x1a0)]='root_exp',_0x3a2713[_0x3edcb4(0x10b)]=!0x0,_0x3a2713['autoExpandPreviousObjects']=[],_0x3a2713[_0x3edcb4(0x1b8)]=0x0,_0x3a2713[_0x3edcb4(0x17b)]=!0x0,_0x3a2713[_0x3edcb4(0x178)]=0x0,_0x3a2713[_0x3edcb4(0x1a1)]={'current':void 0x0,'parent':void 0x0,'index':0x0},_0x3a2713;};for(var _0x25383a=0x0;_0x25383a<_0xcb090[_0x407e31(0x13f)];_0x25383a++)_0x36a3f2[_0x407e31(0xf9)](_0x182186['serialize']({'timeNode':_0x2ff700===_0x407e31(0x146)||void 0x0},_0xcb090[_0x25383a],_0x347fd7(_0x24554b),{}));if(_0x2ff700==='trace'||_0x2ff700===_0x407e31(0x174)){let _0x5a1a14=Error[_0x407e31(0xfa)];try{Error[_0x407e31(0xfa)]=0x1/0x0,_0x36a3f2[_0x407e31(0xf9)](_0x182186[_0x407e31(0x15e)]({'stackNode':!0x0},new Error()[_0x407e31(0x15f)],_0x347fd7(_0x24554b),{'strLength':0x1/0x0}));}finally{Error[_0x407e31(0xfa)]=_0x5a1a14;}}return{'method':_0x407e31(0x194),'version':_0x391fb4,'args':[{'ts':_0x6237b8,'session':_0x3512a1,'args':_0x36a3f2,'id':_0x1028d3,'context':_0x3b6c4b}]};}catch(_0x5db04b){return{'method':_0x407e31(0x194),'version':_0x391fb4,'args':[{'ts':_0x6237b8,'session':_0x3512a1,'args':[{'type':_0x407e31(0x1b6),'error':_0x5db04b&&_0x5db04b[_0x407e31(0x1ae)]}],'id':_0x1028d3,'context':_0x3b6c4b}]};}finally{try{if(_0x212837&&_0x4e347f){let _0x45e299=_0x24d130();_0x212837['count']++,_0x212837[_0x407e31(0x146)]+=_0x47a395(_0x4e347f,_0x45e299),_0x212837['ts']=_0x45e299,_0x3d2d4c[_0x407e31(0x1c7)][_0x407e31(0x197)]++,_0x3d2d4c[_0x407e31(0x1c7)][_0x407e31(0x146)]+=_0x47a395(_0x4e347f,_0x45e299),_0x3d2d4c[_0x407e31(0x1c7)]['ts']=_0x45e299,(_0x212837[_0x407e31(0x197)]>0x32||_0x212837[_0x407e31(0x146)]>0x64)&&(_0x212837['reduceLimits']=!0x0),(_0x3d2d4c[_0x407e31(0x1c7)][_0x407e31(0x197)]>0x3e8||_0x3d2d4c[_0x407e31(0x1c7)]['time']>0x12c)&&(_0x3d2d4c[_0x407e31(0x1c7)]['reduceLimits']=!0x0);}}catch{}}}return _0x213e3e;}((_0x5d65e9,_0x571af9,_0x37e1e4,_0x433d48,_0x1b02f6,_0x430083,_0x5432d8,_0x102dcb,_0x493a3c,_0x240da5,_0x2821b9)=>{var _0x556dd6=_0x2160de;if(_0x5d65e9[_0x556dd6(0x14d)])return _0x5d65e9[_0x556dd6(0x14d)];if(!H(_0x5d65e9,_0x102dcb,_0x1b02f6))return _0x5d65e9[_0x556dd6(0x14d)]={'consoleLog':()=>{},'consoleTrace':()=>{},'consoleTime':()=>{},'consoleTimeEnd':()=>{},'autoLog':()=>{},'autoLogMany':()=>{},'autoTraceMany':()=>{},'coverage':()=>{},'autoTrace':()=>{},'autoTime':()=>{},'autoTimeEnd':()=>{}},_0x5d65e9['_console_ninja'];let _0x1d6340=B(_0x5d65e9),_0x397ff6=_0x1d6340['elapsed'],_0x1a91da=_0x1d6340['timeStamp'],_0xa22aa9=_0x1d6340[_0x556dd6(0x129)],_0x4dd46f={'hits':{},'ts':{}},_0x22fa43=X(_0x5d65e9,_0x493a3c,_0x4dd46f,_0x430083),_0x590e5e=_0x44c539=>{_0x4dd46f['ts'][_0x44c539]=_0x1a91da();},_0x1ecc6b=(_0x392121,_0x1d046a)=>{let _0x489bc2=_0x4dd46f['ts'][_0x1d046a];if(delete _0x4dd46f['ts'][_0x1d046a],_0x489bc2){let _0x346578=_0x397ff6(_0x489bc2,_0x1a91da());_0x37b780(_0x22fa43('time',_0x392121,_0xa22aa9(),_0x4ee1c5,[_0x346578],_0x1d046a));}},_0x11ac60=_0x3097ff=>{var _0x43212c=_0x556dd6,_0x5de73e;return _0x1b02f6===_0x43212c(0x1a7)&&_0x5d65e9[_0x43212c(0xf8)]&&((_0x5de73e=_0x3097ff==null?void 0x0:_0x3097ff['args'])==null?void 0x0:_0x5de73e['length'])&&(_0x3097ff[_0x43212c(0x114)][0x0]['origin']=_0x5d65e9[_0x43212c(0xf8)]),_0x3097ff;};_0x5d65e9[_0x556dd6(0x14d)]={'consoleLog':(_0x3df3db,_0x1bb5ab)=>{var _0x2864ec=_0x556dd6;_0x5d65e9[_0x2864ec(0x154)][_0x2864ec(0x194)][_0x2864ec(0xfe)]!==_0x2864ec(0x119)&&_0x37b780(_0x22fa43(_0x2864ec(0x194),_0x3df3db,_0xa22aa9(),_0x4ee1c5,_0x1bb5ab));},'consoleTrace':(_0x29da49,_0x3f8374)=>{var _0x280bf8=_0x556dd6,_0x2254c1,_0x1e4130;_0x5d65e9['console'][_0x280bf8(0x194)][_0x280bf8(0xfe)]!=='disabledTrace'&&((_0x1e4130=(_0x2254c1=_0x5d65e9[_0x280bf8(0x1d1)])==null?void 0x0:_0x2254c1['versions'])!=null&&_0x1e4130[_0x280bf8(0x1a1)]&&(_0x5d65e9[_0x280bf8(0x1de)]=!0x0),_0x37b780(_0x11ac60(_0x22fa43(_0x280bf8(0x170),_0x29da49,_0xa22aa9(),_0x4ee1c5,_0x3f8374))));},'consoleError':(_0x547f0a,_0x50dbc7)=>{var _0x3597a9=_0x556dd6;_0x5d65e9[_0x3597a9(0x1de)]=!0x0,_0x37b780(_0x11ac60(_0x22fa43('error',_0x547f0a,_0xa22aa9(),_0x4ee1c5,_0x50dbc7)));},'consoleTime':_0x123ffe=>{_0x590e5e(_0x123ffe);},'consoleTimeEnd':(_0x2171a0,_0x403bb8)=>{_0x1ecc6b(_0x403bb8,_0x2171a0);},'autoLog':(_0x4998d0,_0x1bac37)=>{var _0xd73d23=_0x556dd6;_0x37b780(_0x22fa43(_0xd73d23(0x194),_0x1bac37,_0xa22aa9(),_0x4ee1c5,[_0x4998d0]));},'autoLogMany':(_0x431d18,_0x36d175)=>{var _0x73d5fc=_0x556dd6;_0x37b780(_0x22fa43(_0x73d5fc(0x194),_0x431d18,_0xa22aa9(),_0x4ee1c5,_0x36d175));},'autoTrace':(_0x459c49,_0x27ff2b)=>{var _0x433b06=_0x556dd6;_0x37b780(_0x11ac60(_0x22fa43(_0x433b06(0x170),_0x27ff2b,_0xa22aa9(),_0x4ee1c5,[_0x459c49])));},'autoTraceMany':(_0x2ff4f7,_0x18ce27)=>{_0x37b780(_0x11ac60(_0x22fa43('trace',_0x2ff4f7,_0xa22aa9(),_0x4ee1c5,_0x18ce27)));},'autoTime':(_0x2e41bc,_0x5eb8ec,_0x1c38dd)=>{_0x590e5e(_0x1c38dd);},'autoTimeEnd':(_0x47c008,_0xad9b13,_0x4fc532)=>{_0x1ecc6b(_0xad9b13,_0x4fc532);},'coverage':_0x4de91b=>{_0x37b780({'method':'coverage','version':_0x430083,'args':[{'id':_0x4de91b}]});}};let _0x37b780=q(_0x5d65e9,_0x571af9,_0x37e1e4,_0x433d48,_0x1b02f6,_0x240da5,_0x2821b9),_0x4ee1c5=_0x5d65e9[_0x556dd6(0x14a)];return _0x5d65e9['_console_ninja'];})(globalThis,_0x2160de(0x187),'50437',_0x2160de(0x16b),_0x2160de(0x1be),_0x2160de(0x1e3),_0x2160de(0x128),_0x2160de(0x1d5),_0x2160de(0x159),_0x2160de(0x183),_0x2160de(0x152));\");}catch(e){}};/* istanbul ignore next */function oo_oo(i:string,...v:any[]){try{oo_cm().consoleLog(i, v);}catch(e){} return v};oo_oo;/* istanbul ignore next */function oo_tr(i:string,...v:any[]){try{oo_cm().consoleTrace(i, v);}catch(e){} return v};oo_tr;/* istanbul ignore next */function oo_tx(i:string,...v:any[]){try{oo_cm().consoleError(i, v);}catch(e){} return v};oo_tx;/* istanbul ignore next */function oo_ts(v?:string):string{try{oo_cm().consoleTime(v);}catch(e){} return v as string;};oo_ts;/* istanbul ignore next */function oo_te(v:string|undefined, i:string):string{try{oo_cm().consoleTimeEnd(v, i);}catch(e){} return v as string;};oo_te;/*eslint unicorn/no-abusive-eslint-disable:,eslint-comments/disable-enable-pair:,eslint-comments/no-unlimited-disable:,eslint-comments/no-aggregating-enable:,eslint-comments/no-duplicate-disable:,eslint-comments/no-unused-disable:,eslint-comments/no-unused-enable:,*/","import { AggregateResultDto, EditDto, ScreenConfigDto, UseCaseController } from '@siza-staff-care/shared/data';\r\nimport { CrudService } from '@siza-staff-care/shared/global-services';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface ICrudAdaptor {\r\n\t/**\r\n\t * Runs the screen \"open\" function on the server's Jade controller, returning all required data\r\n\t * to run the screen, including lookups and other config data.\r\n\t * @param type The Jade controller class name.\r\n\t * @param lookupTypes The lookup types to request.\r\n\t * @param opts Additional options for opening the screen.\r\n\t * @returns\r\n\t */\r\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n\topen(\r\n\t\ttype: string,\r\n\t\tlookupTypes?: string[],\r\n\t\topts?: TController | undefined,\r\n\t);\r\n\r\n\t/**\r\n\t * Creates a new instance, calling the \"create\" operation on the Jade controller, and returning an EditDto.\r\n\t * The CREATE part of CRUD.\r\n\t * @param type\r\n\t * @param data\r\n\t * @returns\r\n\t */\r\n\tcreate(type: string, data?: Record);\r\n\r\n\t/**\r\n\t * Selects an instance for editing. The READ part of CRUD.\r\n\t * @param type\r\n\t * @param oid\r\n\t * @returns\r\n\t */\r\n\tselect(type: string, oid?: string, data?: Record);\r\n\r\n\t/**\r\n\t * Saves changes to an instance. The UPDATE part of CRUD.\r\n\t * @param type\r\n\t * @param edition\r\n\t * @param oid\r\n\t * @param model\r\n\t * @param opts\r\n\t * @returns\r\n\t */\r\n\tsave(\r\n\t\ttype: string,\r\n\t\tedition: number,\r\n\t\toid: string,\r\n\t\tmodel: TEditDto,\r\n\t\topts?: Record,\r\n\t): Observable;\r\n\r\n\t/**\r\n\t * Deletes an instance. The DELETE part of CRUD.\r\n\t * @param type\r\n\t * @param oid\r\n\t * @param opts\r\n\t * @returns\r\n\t */\r\n\tdelete(type: string, oid: string, opts?: Record);\r\n}\r\n\r\n/**\r\n * A base implementation of ICrudAdaptor that just defers to the standard CrudService for all operations.\r\n */\r\nexport abstract class BaseCrudAdaptor implements ICrudAdaptor {\r\n\tconstructor(protected crud: CrudService) {}\r\n\r\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n\topen(\r\n\t\ttype: string,\r\n\t\tlookupTypes?: string[] | undefined,\r\n\t\topts?: TController | undefined,\r\n\t) {\r\n\t\treturn this.crud.open(type, lookupTypes, opts);\r\n\t}\r\n\r\n\tcreate(type: string, data?: Record | undefined) {\r\n\t\treturn this.crud.create(type, data);\r\n\t}\r\n\r\n\tselect(type: string, oid?: string | undefined, data?: Record | undefined) {\r\n\t\treturn this.crud.select(type, oid, data);\r\n\t}\r\n\r\n\tsave(\r\n\t\ttype: string,\r\n\t\tedition: number,\r\n\t\toid: string,\r\n\t\tmodel: TEditDto,\r\n\t\topts?: Record | undefined,\r\n\t): Observable {\r\n\t\treturn this.crud.save(type, edition, oid, model, opts);\r\n\t}\r\n\r\n\tdelete(type: string, oid: string, opts?: Record | undefined) {\r\n\t\treturn this.crud.delete(type, oid, opts);\r\n\t}\r\n}\r\n","import { Injectable, inject, isDevMode } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { tapResponse } from '@ngrx/component-store';\r\nimport { EventBusEvents } from '@siza-staff-care/event-bus-constants';\r\nimport { AppStateService } from '@siza-staff-care/shared/app-state';\r\nimport {\r\n\tLookupType,\r\n\tSelectOption,\r\n\tStaffSecurityEditDto,\r\n\tStaffSecurityEditItemDto,\r\n\tTypes,\r\n\tobfuscate,\r\n\ttryDecode,\r\n} from '@siza-staff-care/shared/data';\r\nimport { GenericEditStore } from '@siza-staff-care/shared/generic-edit';\r\nimport {\r\n\tEditFlagsValue,\r\n\tEditFlags_All,\r\n\tEditFlags_Create,\r\n\tEditFlags_Delete,\r\n\tEditFlags_Update,\r\n\tMenuBuilderService,\r\n\tsecurityPaths,\r\n\tsecurityPathsReverseLookup,\r\n} from '@siza-staff-care/shared/global-services';\r\nimport { IStore } from '@siza-staff-care/shared/ui-components/store-registry';\r\nimport { TreeItem, assertDefined, buildTree, typedClone } from '@siza-staff-care/shared/utils';\r\nimport { GridApi } from 'ag-grid-community';\r\nimport { flatMap, isEqual, keyBy } from 'lodash-es';\r\nimport {\r\n\tEMPTY,\r\n\tObservable,\r\n\tdebounceTime,\r\n\tdelay,\r\n\texhaustMap,\r\n\tfinalize,\r\n\tfrom,\r\n\tmap,\r\n\tof,\r\n\tswitchMap,\r\n\ttake,\r\n\ttap,\r\n\twithLatestFrom,\r\n} from 'rxjs';\r\n\r\nconst DEBUG = true;\r\n\r\nexport const enum SecurityForTypes {\r\n\tGroups = 'Groups',\r\n\tStaff = 'Staff',\r\n}\r\n\r\nexport const Type_Control = 'control';\r\nexport const Type_Editor = 'editor';\r\nexport const Type_Form = 'form';\r\nexport const Type_TopMenu = 'menu';\r\n\r\nexport const Access_Full = 'F';\r\nexport const Access_None = 'N';\r\nexport const Access_ReadOnly = 'R';\r\nexport const Access_Group = 'G';\r\nexport const Access_Mandatory = 'M';\r\n\r\nexport const iconMap = {\r\n\t[Access_Full]: 'done',\r\n\t[Access_ReadOnly]: 'visibility',\r\n\t[Access_None]: 'block',\r\n\t[Access_Group]: 'group',\r\n\t[Access_Mandatory]: 'star',\r\n};\r\n\r\nexport const typeIconMap = {\r\n\t[EditFlags_Create]: 'add',\r\n\t[EditFlags_Update]: 'edit',\r\n\t[EditFlags_Delete]: 'delete',\r\n};\r\n\r\nexport const enum AccessLevels {\r\n\tFull = Access_Full,\r\n\tReadOnly = Access_ReadOnly,\r\n\tNone = Access_None,\r\n\tGroup = Access_Group,\r\n\tMandatory = Access_Mandatory,\r\n}\r\n\r\nexport const SecurityLevel_None = 0;\r\nexport const SecurityLevel_Disabled = 1;\r\nexport const SecurityLevel_Hidden = 2;\r\nexport const SecurityLevel_Group = 3;\r\nexport const securityLevel_Mandatory = 3;\r\n\r\n/*\r\n\tRegex for controls in the form of top.screen.control, or top.screen.control-prefix.control\r\n\tCaptures groups:\r\n\t\t1: top.screen\r\n\t\tlast: control or control-prefix.control, etc.\r\n*/\r\nconst controlRegex = /^([^.]*\\.[^.]*)\\.(.*)/;\r\n\r\ntype SecurityForType = SecurityForTypes.Groups | SecurityForTypes.Staff;\r\n\r\ntype UpdateAccessParams = {\r\n\tkey: string;\r\n\teditItem?: StaffSecurityEditItemDto;\r\n\tlevel: AccessLevels;\r\n\tcontrolName?: string;\r\n\tmodelProp?: string;\r\n\tdtoName?: string;\r\n};\r\n\r\ninterface SetMenuKeySelectionParams {\r\n\tmenuKey: string;\r\n\tselected: boolean;\r\n}\r\n\r\ninterface SetEditorFlagsToGroupParams {\r\n\tmenuKey: string;\r\n\tstoreKey: string;\r\n}\r\n\r\ninterface ToggleEditorFlagParams {\r\n\tmenuKey: string;\r\n\tstoreKey: string | undefined;\r\n\teditorFlag: EditFlagsValue;\r\n}\r\n\r\nexport interface SelectorContext {\r\n\tmySecurityGroup?: string;\r\n\tmyStaffMaster?: string;\r\n\tsecurityFor: SecurityForType;\r\n\tupdateSubgroups?: boolean;\r\n}\r\n\r\ntype PaintResumeData = {\r\n\tselectorContext: SelectorContext;\r\n\tselectAll: boolean;\r\n\tselectedMenuHierarchyKeys: Set;\r\n\tpriorEdit?: StaffSecurityEditDto;\r\n\tedit: StaffSecurityEditDto;\r\n\thasUnsavedChanges: boolean;\r\n};\r\n\r\nexport type FormItemsBySecurityKey = Record;\r\nexport type ControlItemsBySecurityKey = Record;\r\nexport type EditorFlagsItemsBySecurityKey = Record;\r\n\r\ninterface SecurityConfigurationState {\r\n\tselectorContext?: SelectorContext;\r\n\tlastSelectorContext?: SelectorContext;\r\n\r\n\tselectorForm?: FormGroup;\r\n\r\n\tgridApi?: GridApi;\r\n\tselectAll?: boolean;\r\n\r\n\tformItemsBySecurityKey?: FormItemsBySecurityKey;\r\n\tcontrolItemsBySecurityKey?: ControlItemsBySecurityKey;\r\n\teditorFlagsItemsBySecurityKey?: EditorFlagsItemsBySecurityKey;\r\n\r\n\tloaded?: boolean;\r\n\r\n\tselectedMenuHierarchyKeys: Set;\r\n\r\n\tpaintResumeData?: PaintResumeData;\r\n\r\n\tworkflowStore?: IStore;\r\n}\r\n\r\nconst lookupTypes: LookupType[] = ['StaffSecurityGroup'];\r\n\r\n@Injectable()\r\nexport class SecurityConfigurationStore extends GenericEditStore<\r\n\tStaffSecurityEditDto,\r\n\tStaffSecurityEditDto,\r\n\tSecurityConfigurationState\r\n> {\r\n\turl = 'security-config';\r\n\tniceName = 'Security configuration';\r\n\tcontrollerType = Types.StaffSecurityEditorController;\r\n\r\n\tprivate route = inject(ActivatedRoute);\r\n\tprivate appState = inject(AppStateService);\r\n\tprivate menuBuilder = inject(MenuBuilderService);\r\n\r\n\treadonly staffSecurityGroups$ = this.appState.getLookupCollection('StaffSecurityGroup');\r\n\treadonly groupsAsTree$ = this.select(this.staffSecurityGroups$, (staffSecurityGroups) =>\r\n\t\tstaffSecurityGroups ? buildTree(staffSecurityGroups) : ([] as TreeItem[]),\r\n\t).pipe(\r\n\t\ttap((tree) => {\r\n\t\t\t// Build a lookup of items by their value (which is the OID) which can be used to set the indent.\r\n\t\t\tthis.itemsByOid = (tree || []).reduce(\r\n\t\t\t\t(acc, item) => {\r\n\t\t\t\t\tacc[item.value] = item;\r\n\t\t\t\t\treturn acc;\r\n\t\t\t\t},\r\n\t\t\t\t{} as Record,\r\n\t\t\t);\r\n\t\t}),\r\n\t\tmap((tree) => tree.map((treeNode) => treeNode as SelectOption)),\r\n\t);\r\n\treadonly otherGroups$ = this.select(this.staffSecurityGroups$, this.edit$, (staffSecurityGroups, edit) =>\r\n\t\tstaffSecurityGroups.filter((g) => g.oid !== edit?.oid),\r\n\t);\r\n\treadonly workflowStore$ = this.select(this.additionalState$, (additionalState) => additionalState?.workflowStore);\r\n\r\n\toverride lookupTypes = lookupTypes;\r\n\titemsByOid?: Record;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.setAllowedEditButtons({\r\n\t\t\tallowNew: false,\r\n\t\t\tallowDelete: false,\r\n\t\t});\r\n\r\n\t\tthis.patchAdditional({\r\n\t\t\tselectedMenuHierarchyKeys: new Set(),\r\n\t\t});\r\n\r\n\t\tthis.watchCancelSelection();\r\n\t\tthis.watchForSessionStartOrEnd(this._eventBus.on(EventBusEvents.Event_Session_Start_End));\r\n\t}\r\n\r\n\treadonly selectorContext$ = this.select(\r\n\t\tthis.additionalState$,\r\n\t\t(additionalState) => additionalState?.selectorContext || ({} as SelectorContext),\r\n\t);\r\n\r\n\tprivate readonly lastSelectorContext$ = this.select(\r\n\t\tthis.additionalState$,\r\n\t\t(additionalState) => additionalState?.lastSelectorContext,\r\n\t);\r\n\r\n\treadonly selectorForm$ = this.select(this.additionalState$, (additionalState) => additionalState?.selectorForm);\r\n\treadonly gridApi$ = this.select(this.additionalState$, (additionalState) => additionalState?.gridApi);\r\n\treadonly staffMasterGroupName$ = this.select(this.edit$, (edit) => edit?.groupName || '');\r\n\treadonly forGroups$ = this.select(\r\n\t\tthis.selectorContext$,\r\n\t\t(selectorContext) => selectorContext?.securityFor === SecurityForTypes.Groups,\r\n\t);\r\n\treadonly forStaff$ = this.select(\r\n\t\tthis.selectorContext$,\r\n\t\t(selectorContext) => selectorContext?.securityFor === SecurityForTypes.Staff,\r\n\t);\r\n\treadonly hasSelectedStaff$ = this.select(\r\n\t\tthis.forStaff$,\r\n\t\tthis.realOid$,\r\n\t\t(forStaff, realOid) => !!(forStaff && realOid),\r\n\t);\r\n\r\n\treadonly editItems$ = this.select(this.edit$, (edit) => edit?.allEditItems || []);\r\n\r\n\treadonly formItemsBySecurityKey$ = this.select(\r\n\t\tthis.additionalState$,\r\n\t\t(additionalState) => additionalState?.formItemsBySecurityKey || {},\r\n\t);\r\n\treadonly controlItemsBySecurityKey$ = this.select(\r\n\t\tthis.additionalState$,\r\n\t\t(additionalState) => additionalState?.controlItemsBySecurityKey || {},\r\n\t);\r\n\treadonly editorFlagsItemsBySecurityKey$ = this.select(\r\n\t\tthis.additionalState$,\r\n\t\t(additionalState) => additionalState?.editorFlagsItemsBySecurityKey || {},\r\n\t);\r\n\r\n\treadonly selectedMenuHierarchyKeys$ = this.select(\r\n\t\tthis.additionalState$,\r\n\t\t(additionalState) => additionalState?.selectedMenuHierarchyKeys || new Set(),\r\n\t);\r\n\r\n\treadonly selectAll$ = this.select(this.additionalState$, (additionalState) => !!additionalState?.selectAll);\r\n\treadonly hasAnySelections$ = this.select(\r\n\t\tthis.selectAll$,\r\n\t\tthis.selectedMenuHierarchyKeys$,\r\n\t\t(selectAll, selectedMenuHierarchyKeys) => selectAll || !!selectedMenuHierarchyKeys.size,\r\n\t);\r\n\r\n\treadonly loaded$ = this.select(this.additionalState$, (additionalState) => !!additionalState?.loaded);\r\n\r\n\tprivate readonly paintResumeData$ = this.select(\r\n\t\tthis.additionalState$,\r\n\t\t(additionalState) => additionalState?.paintResumeData,\r\n\t);\r\n\r\n\treadonly hasAnyUnsavedChanges$ = this.select(\r\n\t\tthis.hasUnsavedChanges$,\r\n\t\tthis.paintResumeData$,\r\n\t\t(hasUnsavedChanges, paintResumeData) => !!(hasUnsavedChanges || paintResumeData?.hasUnsavedChanges),\r\n\t);\r\n\r\n\treadonly vm$ = this.select({\r\n\t\tselectorContext: this.selectorContext$,\r\n\t\tmenuHierarchy: this.menuBuilder.menuHierarchy$,\r\n\t\teditItems: this.editItems$,\r\n\t\tforStaff: this.forStaff$,\r\n\t\tforGroups: this.forGroups$,\r\n\t\tloaded: this.loaded$,\r\n\t\tselectAll: this.selectAll$,\r\n\t\thasAnySelections: this.hasAnySelections$,\r\n\t});\r\n\r\n\tget gridApi() {\r\n\t\tconst gridApi = this.get().additionalState?.gridApi;\r\n\t\tassertDefined(gridApi);\r\n\r\n\t\treturn gridApi;\r\n\t}\r\n\r\n\treadonly selectById = this.effect((id$: Observable) =>\r\n\t\tid$.pipe(\r\n\t\t\twithLatestFrom(this.selectorContext$),\r\n\t\t\ttap(([id, selectorContext]) => {\r\n\t\t\t\tassertDefined(selectorContext);\r\n\r\n\t\t\t\tif (selectorContext.securityFor === SecurityForTypes.Groups) {\r\n\t\t\t\t\tselectorContext.mySecurityGroup = id;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tselectorContext.myStaffMaster = id;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.patchState({});\r\n\r\n\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\tselectorContext: {\r\n\t\t\t\t\t\t...selectorContext,\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly updateSelectorContext = this.effect((context$: Observable) =>\r\n\t\tcontext$.pipe(\r\n\t\t\twithLatestFrom(this.lastSelectorContext$),\r\n\t\t\tswitchMap(([context, lastContext]) => {\r\n\t\t\t\tif (context.securityFor === lastContext?.securityFor) {\r\n\t\t\t\t\treturn of(context);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// If the type has changed, we need to clear. Check for unsaved changes first.\r\n\t\t\t\treturn this.checkUnsavedChangesAndClear().pipe(\r\n\t\t\t\t\tdelay(0), // Wait for navigation to complete\r\n\t\t\t\t\tswitchMap((ok) => {\r\n\t\t\t\t\t\tif (!ok) {\r\n\t\t\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn of(context);\r\n\t\t\t\t\t}),\r\n\t\t\t\t);\r\n\t\t\t}),\r\n\t\t\twithLatestFrom(this.lastSelectorContext$),\r\n\t\t\ttap(([context, oldContext]) => {\r\n\t\t\t\tif (context && oldContext) {\r\n\t\t\t\t\tif (isEqual(context, oldContext)) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst copiedContext = {\r\n\t\t\t\t\t...context,\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// Blank out any other selection.\r\n\t\t\t\tif (copiedContext.securityFor === SecurityForTypes.Groups) {\r\n\t\t\t\t\tcopiedContext.myStaffMaster = undefined;\r\n\t\t\t\t} else if (copiedContext.securityFor === SecurityForTypes.Staff) {\r\n\t\t\t\t\tcopiedContext.mySecurityGroup = undefined;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.patchAdditional({ selectorContext: copiedContext, lastSelectorContext: context });\r\n\r\n\t\t\t\tthis._router\r\n\t\t\t\t\t.navigate([], {\r\n\t\t\t\t\t\trelativeTo: this.activatedRoute,\r\n\t\t\t\t\t\tqueryParams: {\r\n\t\t\t\t\t\t\tsecurityFor: context.securityFor,\r\n\t\t\t\t\t\t\tupdateSubgroups: context.updateSubgroups,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tqueryParamsHandling: 'merge',\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\tconst selectionOid =\r\n\t\t\t\t\t\t\tcontext.securityFor === SecurityForTypes.Groups\r\n\t\t\t\t\t\t\t\t? context.mySecurityGroup\r\n\t\t\t\t\t\t\t\t: context.myStaffMaster;\r\n\r\n\t\t\t\t\t\tconst lastSelectionOid =\r\n\t\t\t\t\t\t\toldContext?.securityFor === SecurityForTypes.Groups\r\n\t\t\t\t\t\t\t\t? oldContext?.mySecurityGroup\r\n\t\t\t\t\t\t\t\t: oldContext?.myStaffMaster;\r\n\r\n\t\t\t\t\t\t// Don't navigate if the selection hasn't changed.\r\n\t\t\t\t\t\tif (selectionOid === lastSelectionOid) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (selectionOid) {\r\n\t\t\t\t\t\t\tthis.routeToEditReal(selectionOid);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.clear();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly clearSelection = this.effect((trigger$) =>\r\n\t\ttrigger$.pipe(\r\n\t\t\twithLatestFrom(this.selectorContext$),\r\n\t\t\ttap(([, selectorContext]) => {\r\n\t\t\t\tassertDefined(selectorContext);\r\n\r\n\t\t\t\tselectorContext.mySecurityGroup = undefined;\r\n\t\t\t\tselectorContext.myStaffMaster = undefined;\r\n\r\n\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\tselectorContext: {\r\n\t\t\t\t\t\t...selectorContext,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tlastSelectorContext: selectorContext,\r\n\t\t\t\t});\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\tprivate readonly watchCancelSelection = this.effect((trigger$) =>\r\n\t\ttrigger$.pipe(\r\n\t\t\tswitchMap(() => {\r\n\t\t\t\treturn this.cancelSelection$.pipe(\r\n\t\t\t\t\tdebounceTime(100),\r\n\t\t\t\t\twithLatestFrom(this.selectorContext$),\r\n\t\t\t\t\ttap(([lastSelection, selectorContext]) => {\r\n\t\t\t\t\t\tif (lastSelection) {\r\n\t\t\t\t\t\t\tlastSelection = tryDecode(lastSelection) ?? undefined;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\t\t\tlastSelectorContext: { ...selectorContext, mySecurityGroup: '' },\r\n\t\t\t\t\t\t\tselectorContext: { ...selectorContext, mySecurityGroup: lastSelection },\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}),\r\n\t\t\t\t);\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly watchForSessionStartOrEnd = this.effect((event$: Observable) =>\r\n\t\tevent$.pipe(\r\n\t\t\ttap(() => {\r\n\t\t\t\tthis.abandonPaintState();\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly registerSelectorForm = this.effect((form$: Observable) =>\r\n\t\tform$.pipe(\r\n\t\t\ttap((form) => {\r\n\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\tselectorForm: form,\r\n\t\t\t\t});\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly buildSelectorContextFromQueryStringParams = this.effect((trigger$) =>\r\n\t\ttrigger$.pipe(\r\n\t\t\ttap(() => {\r\n\t\t\t\tconst queryParamMap = this.route.snapshot.queryParamMap;\r\n\r\n\t\t\t\tlet securityFor = queryParamMap.get('securityFor') ?? '';\r\n\t\t\t\tif (['Groups', 'Staff'].indexOf(securityFor) === -1) {\r\n\t\t\t\t\tsecurityFor = 'Groups';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst updateSubgroups = queryParamMap.get('updateSubgroups') === 'true';\r\n\r\n\t\t\t\tconst selector: SelectorContext = {\r\n\t\t\t\t\tsecurityFor: securityFor as SecurityForType,\r\n\t\t\t\t\tupdateSubgroups,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\tselectorContext: selector,\r\n\t\t\t\t\tlastSelectorContext: { ...selector },\r\n\t\t\t\t});\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly setSelectAll = this.effect((selectAll$: Observable) =>\r\n\t\tselectAll$.pipe(\r\n\t\t\ttap((selectAll) => {\r\n\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\tselectAll,\r\n\t\t\t\t\tselectedMenuHierarchyKeys: new Set(),\r\n\t\t\t\t});\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly setMenuKeySelection = this.effect((params$: Observable) =>\r\n\t\tparams$.pipe(\r\n\t\t\twithLatestFrom(this.selectedMenuHierarchyKeys$),\r\n\t\t\ttap(([params, selections]) => {\r\n\t\t\t\tparams.selected ? selections.add(params.menuKey) : selections.delete(params.menuKey);\r\n\r\n\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\tselectedMenuHierarchyKeys: new Set(selections),\r\n\t\t\t\t});\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly clearItems = this.effect((menuKey$: Observable) =>\r\n\t\tmenuKey$.pipe(\r\n\t\t\twithLatestFrom(this.controlItemsBySecurityKey$, this.editorFlagsItemsBySecurityKey$),\r\n\t\t\ttap(([menuKey, controlItems, editorFlagsItems]) => {\r\n\t\t\t\tcontrolItems[menuKey] = [];\r\n\t\t\t\teditorFlagsItems[menuKey] = [];\r\n\r\n\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\tcontrolItemsBySecurityKey: typedClone(controlItems),\r\n\t\t\t\t\teditorFlagsItemsBySecurityKey: typedClone(editorFlagsItems),\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.markDirty();\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly setAllToLevel = this.effect((level$: Observable) =>\r\n\t\tlevel$.pipe(\r\n\t\t\twithLatestFrom(this.selectAll$, this.selectedMenuHierarchyKeys$, this.formItemsBySecurityKey$),\r\n\t\t\ttap(([level, selectAll, selections, formItemsBySecurityKey]) => {\r\n\t\t\t\tif (selectAll) {\r\n\t\t\t\t\t// Set all the form items to the level.\r\n\t\t\t\t\tObject.values(formItemsBySecurityKey).forEach((item) => {\r\n\t\t\t\t\t\titem.level = level;\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Set all the selected items to the level.\r\n\t\t\t\t\tselections.forEach((key) => {\r\n\t\t\t\t\t\tconst item = formItemsBySecurityKey[key];\r\n\t\t\t\t\t\tif (item) {\r\n\t\t\t\t\t\t\titem.level = level;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\tformItemsBySecurityKey: typedClone(formItemsBySecurityKey),\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.markDirty();\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly copyFromGroup = this.effect((otherGroup$: Observable) =>\r\n\t\totherGroup$.pipe(\r\n\t\t\texhaustMap((otherGroup) => {\r\n\t\t\t\tthis.setLoadingEdit(true);\r\n\r\n\t\t\t\treturn this._crud.select(this.controllerType, otherGroup).pipe(\r\n\t\t\t\t\ttapResponse(\r\n\t\t\t\t\t\t(result) => {\r\n\t\t\t\t\t\t\tthis.handleEditSet(result.dtos[0]);\r\n\t\t\t\t\t\t\tthis.setHasUnsavedChanges(true);\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t(err) => this.handleGenericError(err),\r\n\t\t\t\t\t),\r\n\t\t\t\t\tfinalize(() => this.setLoadingEdit(false)),\r\n\t\t\t\t);\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly updateAccess = this.effect((params$: Observable) =>\r\n\t\tparams$.pipe(\r\n\t\t\twithLatestFrom(this.formItemsBySecurityKey$, this.controlItemsBySecurityKey$),\r\n\t\t\tswitchMap(([params, formItemsBySecurityKey, controlItemsBySecurityKey]) => {\r\n\t\t\t\tparams.dtoName = params.dtoName?.replace('EditDto', '');\r\n\r\n\t\t\t\tif (isDevMode()) {\r\n\t\t\t\t\tconsole.info('updateAccess', params);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (params.controlName) {\r\n\t\t\t\t\treturn this.getControlItem(params.key, params.controlName).pipe(\r\n\t\t\t\t\t\ttake(1),\r\n\t\t\t\t\t\ttap((controlItem) => {\r\n\t\t\t\t\t\t\tassertDefined(params.controlName);\r\n\t\t\t\t\t\t\tconst securityPath = this.buildSecurityPathForControl(params.key, params.controlName);\r\n\r\n\t\t\t\t\t\t\tcontrolItem = {\r\n\t\t\t\t\t\t\t\t...controlItem,\r\n\t\t\t\t\t\t\t\tsecurityPath,\r\n\t\t\t\t\t\t\t\tlevel: params.level,\r\n\t\t\t\t\t\t\t\tmodelProp: params.modelProp ?? '',\r\n\t\t\t\t\t\t\t\tdtoName: params.dtoName ?? '',\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tlet controlItems = controlItemsBySecurityKey[params.key] || [];\r\n\t\t\t\t\t\t\tcontrolItems = controlItems\r\n\t\t\t\t\t\t\t\t.filter((item) => item.securityPath !== securityPath)\r\n\t\t\t\t\t\t\t\t.concat(controlItem);\r\n\r\n\t\t\t\t\t\t\tcontrolItemsBySecurityKey[params.key] = controlItems;\r\n\r\n\t\t\t\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\t\t\t\tcontrolItemsBySecurityKey: {\r\n\t\t\t\t\t\t\t\t\t...controlItemsBySecurityKey,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tthis.markDirtyForPaintState();\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn this.getFormItem(params.key).pipe(\r\n\t\t\t\t\t\ttake(1),\r\n\t\t\t\t\t\ttap((formItem) => {\r\n\t\t\t\t\t\t\tformItem = {\r\n\t\t\t\t\t\t\t\t...formItem,\r\n\t\t\t\t\t\t\t\tlevel: params.level,\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tformItemsBySecurityKey[params.key] = formItem;\r\n\r\n\t\t\t\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\t\t\t\tformItemsBySecurityKey: {\r\n\t\t\t\t\t\t\t\t\t...formItemsBySecurityKey,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tthis.markDirtyForPaintState();\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly toggleEditorFlag = this.effect((params$: Observable) =>\r\n\t\tparams$.pipe(\r\n\t\t\tswitchMap((params) => {\r\n\t\t\t\treturn this.getEditorFlagsItems(params.menuKey).pipe(\r\n\t\t\t\t\ttake(1),\r\n\t\t\t\t\twithLatestFrom(this.editorFlagsItemsBySecurityKey$, this.forStaff$),\r\n\t\t\t\t\ttap(([items, allEditorFlagsItems, forStaff]) => {\r\n\t\t\t\t\t\tlet item = items[params.storeKey || ''];\r\n\t\t\t\t\t\tif (!item) {\r\n\t\t\t\t\t\t\titem = {\r\n\t\t\t\t\t\t\t\t$type: Types.StaffSecurityEditItemDto,\r\n\t\t\t\t\t\t\t\tsecurityPath: securityPaths[params.menuKey] + '.' + params.storeKey,\r\n\t\t\t\t\t\t\t\teditorFlags: EditFlags_All,\r\n\t\t\t\t\t\t\t\tdefaultEditorFlags: EditFlags_All,\r\n\t\t\t\t\t\t\t\ttype: Type_Editor,\r\n\t\t\t\t\t\t\t} as StaffSecurityEditItemDto;\r\n\r\n\t\t\t\t\t\t\titems[params.storeKey || ''] = item;\r\n\r\n\t\t\t\t\t\t\tif (!allEditorFlagsItems[params.menuKey]) {\r\n\t\t\t\t\t\t\t\tallEditorFlagsItems[params.menuKey] = [];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tallEditorFlagsItems[params.menuKey].push(item);\r\n\r\n\t\t\t\t\t\t\tDEBUG && /* eslint-disable */console.log(...oo_oo(`3725236157_671_16_671_53_4`,'Created new item', item));\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// If level is set to Group, use the default flags, otherwise the actual editorFlags on the item.\r\n\t\t\t\t\t\tconst editorFlags = item.level === Access_Group ? item.defaultEditorFlags : item.editorFlags;\r\n\r\n\t\t\t\t\t\tconst currentFlag = (editorFlags & params.editorFlag) > 0;\r\n\t\t\t\t\t\tif (currentFlag) {\r\n\t\t\t\t\t\t\titem.editorFlags &= ~params.editorFlag;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\titem.editorFlags |= params.editorFlag;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (forStaff) {\r\n\t\t\t\t\t\t\t// Clear the Group setting as the item has been edited.\r\n\t\t\t\t\t\t\titem.level = '';\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tDEBUG && /* eslint-disable */console.log(...oo_oo(`3725236157_689_15_689_52_4`,'toggleEditorFlag', item));\r\n\r\n\t\t\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\t\t\teditorFlagsItemsBySecurityKey: typedClone(allEditorFlagsItems),\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tthis.markDirtyForPaintState();\r\n\t\t\t\t\t}),\r\n\t\t\t\t);\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\t/**\r\n\t * When editing security for an individual staff member, sets the EditorFlags items back to the default for the group.\r\n\t */\r\n\treadonly setEditorFlagsForStaffToGroup = this.effect((params$: Observable) =>\r\n\t\tparams$.pipe(\r\n\t\t\twithLatestFrom(this.editorFlagsItemsBySecurityKey$),\r\n\t\t\tswitchMap(([params, editorFlagsItems]) => {\r\n\t\t\t\treturn this.getEditorFlagsItems(params.menuKey).pipe(\r\n\t\t\t\t\ttake(1),\r\n\t\t\t\t\ttap((items) => {\r\n\t\t\t\t\t\tconst item = items[params.storeKey];\r\n\t\t\t\t\t\titem.level = Access_Group;\r\n\r\n\t\t\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\t\t\teditorFlagsItemsBySecurityKey: typedClone(editorFlagsItems),\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tthis.markDirtyForPaintState();\r\n\t\t\t\t\t}),\r\n\t\t\t\t);\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\t/**\r\n\t * Depending on whether we're currently painting security, sets the hasUnsavedChanges flag either on the PaintResumeData or on the store.\r\n\t */\r\n\tprivate readonly markDirtyForPaintState = this.effect((trigger$) =>\r\n\t\ttrigger$.pipe(\r\n\t\t\twithLatestFrom(\r\n\t\t\t\tthis.appState.isPaintingSecurity$,\r\n\t\t\t\tthis.appState.isPaintingWorkflowSecurity$,\r\n\t\t\t\tthis.paintResumeData$,\r\n\t\t\t\tthis.workflowStore$,\r\n\t\t\t),\r\n\t\t\ttap(([, isPaintingSecurity, isPaintingWorkflowSecurity, paintResumeData, workflowStore]) => {\r\n\t\t\t\tif (isPaintingSecurity) {\r\n\t\t\t\t\tassertDefined(paintResumeData);\r\n\t\t\t\t\tpaintResumeData.hasUnsavedChanges = true;\r\n\t\t\t\t\t//\t\t\t\t\tthis.appState.setSecurityConfigurationHasUnsavedChanges(true);\r\n\t\t\t\t} else if (isPaintingWorkflowSecurity) {\r\n\t\t\t\t\tassertDefined(workflowStore);\r\n\t\t\t\t\tworkflowStore.setHasUnsavedChanges(true);\r\n\t\t\t\t\t//\t\t\t\t\tthis.appState.setSecurityConfigurationHasUnsavedChanges(true);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.markDirty();\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly setWorkflowStore = this.effect((workflowStore$: Observable) =>\r\n\t\tworkflowStore$.pipe(\r\n\t\t\ttap((workflowStore) => {\r\n\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\tworkflowStore,\r\n\t\t\t\t});\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly startPaintAndRoute = this.effect((route$: Observable) =>\r\n\t\troute$.pipe(\r\n\t\t\ttap((route) => {\r\n\t\t\t\tthis.beginPaintOnRoute(route);\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly beginPaint = this.effect((trigger$) =>\r\n\t\ttrigger$.pipe(\r\n\t\t\ttap(() => {\r\n\t\t\t\tthis.beginPaintOnRoute('/');\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\t/**\r\n\t * Attempts to end paint (will not end if routing fails - e.g. if there are unsaved changes and the user cancels)\r\n\t */\r\n\treadonly endPaint = this.effect((trigger$) =>\r\n\t\ttrigger$.pipe(\r\n\t\t\tswitchMap(() => {\r\n\t\t\t\treturn from(this._router.navigate(['security-config']));\r\n\t\t\t}),\r\n\t\t\tdelay(0),\r\n\t\t\ttap((routedOk) => {\r\n\t\t\t\tif (!routedOk) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.appState.clearPaintingSecurity();\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly abandonPaintState = this.effect((trigger$) =>\r\n\t\ttrigger$.pipe(\r\n\t\t\ttap(() => {\r\n\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\tpaintResumeData: undefined,\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.appState.clearPaintingSecurity();\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\treadonly openIfNotResumingFromEndPaint = this.effect((trigger$) =>\r\n\t\ttrigger$.pipe(\r\n\t\t\twithLatestFrom(this.paintResumeData$),\r\n\t\t\ttap(([, paintResumeData]) => {\r\n\t\t\t\tthis.appState.setScreenName('Security configuration');\r\n\r\n\t\t\t\tif (paintResumeData) {\r\n\t\t\t\t\tthis.handleResumeFromPaint(paintResumeData);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.buildSelectorContextFromQueryStringParams();\r\n\t\t\t\t\tthis.open();\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\tprivate readonly handleResumeFromPaint = this.effect((data$: Observable) =>\r\n\t\tdata$.pipe(\r\n\t\t\tswitchMap((paintResumeData) => {\r\n\t\t\t\t// Grab the OID to select\r\n\t\t\t\tconst editOid = obfuscate(paintResumeData.edit.oid);\r\n\r\n\t\t\t\t// Don't go to the server - use the saved edit instead.\r\n\t\t\t\tthis.setInsteadOfSelect(paintResumeData.edit);\r\n\r\n\t\t\t\t// Route to the selected group/staff member.\r\n\t\t\t\treturn from(this._router.navigate([editOid], { relativeTo: this.activatedRoute })).pipe(\r\n\t\t\t\t\tswitchMap((navigateOk) => {\r\n\t\t\t\t\t\tif (!navigateOk) {\r\n\t\t\t\t\t\t\t// Something went wrong - abandon the paint state.\r\n\t\t\t\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\t\t\t\tpaintResumeData: undefined,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Restore the selector context.\r\n\t\t\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\t\t\tselectorContext: paintResumeData.selectorContext,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\treturn of(paintResumeData);\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tdelay(0),\r\n\t\t\t\t\ttap((paintResumeData) => {\r\n\t\t\t\t\t\t// Set the prior edit\r\n\t\t\t\t\t\tif (paintResumeData.priorEdit) {\r\n\t\t\t\t\t\t\tthis.patchState({\r\n\t\t\t\t\t\t\t\tpriorEdit: paintResumeData.priorEdit,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Restore the rest of the data.\r\n\t\t\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\t\t\tpaintResumeData: undefined,\r\n\t\t\t\t\t\t\tselectAll: paintResumeData.selectAll,\r\n\t\t\t\t\t\t\tselectedMenuHierarchyKeys: new Set(paintResumeData.selectedMenuHierarchyKeys || []),\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tdelay(0),\r\n\t\t\t\t\ttap((paintResumeData) => {\r\n\t\t\t\t\t\t// Restore the dirty state.\r\n\t\t\t\t\t\tif (paintResumeData.hasUnsavedChanges) {\r\n\t\t\t\t\t\t\tthis.markDirty();\r\n\t\t\t\t\t\t\tthis.setHasUnsavedChanges(true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}),\r\n\t\t\t\t);\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\tprivate readonly beginPaintOnRoute = this.effect((route$: Observable) =>\r\n\t\troute$.pipe(\r\n\t\t\twithLatestFrom(this.additionalState$, this.edit$, this.priorEdit$, this.hasUnsavedChanges$, this.forStaff$),\r\n\t\t\ttap(([route, additionalState, edit, priorEdit, hasUnsavedChanges, forStaff]) => {\r\n\t\t\t\tassertDefined(additionalState?.selectorContext);\r\n\t\t\t\tassertDefined(edit);\r\n\r\n\t\t\t\t// Build the data to resume whe paint state ends.\r\n\t\t\t\tconst paintResumeData: PaintResumeData = {\r\n\t\t\t\t\tselectorContext: additionalState?.selectorContext,\r\n\t\t\t\t\tselectAll: !!additionalState?.selectAll,\r\n\t\t\t\t\tselectedMenuHierarchyKeys: new Set(additionalState?.selectedMenuHierarchyKeys || []),\r\n\t\t\t\t\tedit,\r\n\t\t\t\t\tpriorEdit,\r\n\t\t\t\t\thasUnsavedChanges,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\tpaintResumeData,\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// Ensure we don't have changes.\r\n\t\t\t\tthis.setHasUnsavedChanges(false);\r\n\r\n\t\t\t\t// Start paint mode, and route to the correct state.\r\n\t\t\t\tthis.appState.setIsPaintingSecurity({ isPaintingSecurity: true, isPaintingSecurityForStaff: forStaff });\r\n\t\t\t\tthis._router.navigate([route]);\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\tisMenuKeySelected(menuKey: string) {\r\n\t\treturn this.selectedMenuHierarchyKeys$.pipe(\r\n\t\t\twithLatestFrom(this.selectAll$),\r\n\t\t\tmap(([keys, selectAll]) => {\r\n\t\t\t\treturn selectAll || keys.has(menuKey);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\r\n\tgetFormItem(menuKey: string): Observable {\r\n\t\treturn this.formItemsBySecurityKey$.pipe(\r\n\t\t\tmap((formItemsBySecurityKey) => {\r\n\t\t\t\tconst key = menuKey;\r\n\t\t\t\tconst item = formItemsBySecurityKey[key];\r\n\t\t\t\treturn (\r\n\t\t\t\t\titem ||\r\n\t\t\t\t\t({\r\n\t\t\t\t\t\t$type: Types.StaffSecurityEditItemDto,\r\n\t\t\t\t\t\ttype: Type_Form,\r\n\t\t\t\t\t\tlevel: Access_Full,\r\n\t\t\t\t\t\tname: '(constructed)',\r\n\t\t\t\t\t\tsecurityPath: menuKey,\r\n\t\t\t\t\t} as StaffSecurityEditItemDto)\r\n\t\t\t\t);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an Observable of the edit item for the control, return an empty item with full access if not found.\r\n\t * @param menuKey The menu key - e.g. StaffMaintenance\r\n\t * @param controlName The control name (with any prefix) e.g. myMarital or contract.startDate\r\n\t * @returns\r\n\t */\r\n\tgetControlItem(menuKey: string, controlName: string): Observable {\r\n\t\treturn this.controlItemsBySecurityKey$.pipe(\r\n\t\t\tmap((controlItemsBySecurityKey) => {\r\n\t\t\t\t// Note - for SCA-184, we shouldn't be doing this.\r\n\r\n\t\t\t\t// Try to translate the key - e.g. My Record (StaffMaintenance - end user) to StaffRecords\r\n\r\n\t\t\t\tconst key = this.menuBuilder.getTranslatedKey(menuKey);\r\n\t\t\t\tconst items = controlItemsBySecurityKey[key] || [];\r\n\r\n\t\t\t\tconst securityPath = this.buildSecurityPathForControl(key, controlName);\r\n\r\n\t\t\t\tconst controlItem = items.find((item) => item.securityPath === securityPath);\r\n\t\t\t\treturn (\r\n\t\t\t\t\tcontrolItem ||\r\n\t\t\t\t\t({\r\n\t\t\t\t\t\t$type: Types.StaffSecurityEditItemDto,\r\n\t\t\t\t\t\ttype: Type_Control,\r\n\t\t\t\t\t\tlevel: Access_Full,\r\n\t\t\t\t\t} as StaffSecurityEditItemDto)\r\n\t\t\t\t);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\r\n\tgetControlItems(menuKey: string): Observable {\r\n\t\treturn this.controlItemsBySecurityKey$.pipe(\r\n\t\t\tmap((controlItemsBySecurityKey) => {\r\n\t\t\t\tconst key = this.menuBuilder.getTranslatedKey(menuKey);\r\n\t\t\t\treturn controlItemsBySecurityKey[key] || [];\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the editor flags edit items for a security key. Returns a hash of the items keyed by the store key.\r\n\t * @param menuKey\r\n\t * @returns\r\n\t */\r\n\tgetEditorFlagsItems(menuKey: string): Observable> {\r\n\t\treturn this.editorFlagsItemsBySecurityKey$.pipe(\r\n\t\t\tmap((editorFlagsItemsBySecurityKey) => {\r\n\t\t\t\tconst key = this.menuBuilder.getTranslatedKey(menuKey);\r\n\t\t\t\tconst items = editorFlagsItemsBySecurityKey[key] || [];\r\n\t\t\t\tconst keyed = keyBy(items, (i) => {\r\n\t\t\t\t\t// Use a regex to return only the end of the security path - e.g. StaffContract\r\n\t\t\t\t\tconst groups = controlRegex.exec(i.securityPath);\r\n\t\t\t\t\tassertDefined(groups);\r\n\t\t\t\t\treturn groups[groups.length - 1];\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn keyed;\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\r\n\tprivate buildSecurityPathForControl(menuKey: string, controlName: string) {\r\n\t\tconst key = this.menuBuilder.getTranslatedKey(menuKey);\r\n\t\tconst securityPath = securityPaths[key] + '.' + controlName;\r\n\t\treturn securityPath;\r\n\t}\r\n\r\n\tprivate readonly buildFormItemsBySecurityKey = this.effect(\r\n\t\t(edit$: Observable<{ allEditItems: StaffSecurityEditItemDto[] }>) =>\r\n\t\t\tedit$.pipe(\r\n\t\t\t\ttap((edit) => {\r\n\t\t\t\t\tconst entries = edit.allEditItems;\r\n\r\n\t\t\t\t\t// Find all the items for forms (and their children, which will be control items)\r\n\t\t\t\t\tconst findFormItems = (children: StaffSecurityEditItemDto[], items: StaffSecurityEditItemDto[]) => {\r\n\t\t\t\t\t\tchildren.forEach((item) => {\r\n\t\t\t\t\t\t\tif (item.type === Type_Form || item.type === Type_TopMenu) {\r\n\t\t\t\t\t\t\t\t// Ignore label items.\r\n\t\t\t\t\t\t\t\tif (item.securityPath.startsWith(':label')) {\r\n\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\titems.push(item);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tfindFormItems(item.allChildItems, items);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tconst formItems = [] as StaffSecurityEditItemDto[];\r\n\t\t\t\t\tfindFormItems(entries, formItems);\r\n\r\n\t\t\t\t\tconst formItemsBySecurityKey = formItems.reduce((acc, item) => {\r\n\t\t\t\t\t\tacc[item.securityPath] = item;\r\n\t\t\t\t\t\treturn acc;\r\n\t\t\t\t\t}, {} as FormItemsBySecurityKey);\r\n\r\n\t\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\t\tformItemsBySecurityKey,\r\n\t\t\t\t\t});\r\n\t\t\t\t}),\r\n\t\t\t),\r\n\t);\r\n\r\n\tprivate readonly buildControlItemsBySecurityKey = this.effect(\r\n\t\t(edit$: Observable<{ allEditItems: StaffSecurityEditItemDto[] }>) =>\r\n\t\t\tedit$.pipe(\r\n\t\t\t\ttap((edit) => {\r\n\t\t\t\t\tconst entries = edit.allEditItems;\r\n\r\n\t\t\t\t\tconst controlItems = entries.filter((item) => item.type === Type_Control);\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t\tBuild a lookup of the control items using the security key for the screen. This is derived\r\n\t\t\t\t\t\tfrom the first two parts of the security path to identify the associated screen.\r\n\r\n\t\t\t\t\t\tE.g. staff.staffMaintenance.myEthnicity will be under staff.staffMaintenance\r\n\t\t\t\t\t\tThis then translates to StaffMaintenance, which is used as the security key.\r\n\t\t\t\t\t*/\r\n\t\t\t\t\tconst controlItemsBySecurityKey = controlItems.reduce((acc, item) => {\r\n\t\t\t\t\t\tconst groups = controlRegex.exec(item.securityPath);\r\n\t\t\t\t\t\tassertDefined(groups);\r\n\r\n\t\t\t\t\t\tconst securityPath = groups[1];\r\n\t\t\t\t\t\tconst securityKey = securityPathsReverseLookup[securityPath];\r\n\r\n\t\t\t\t\t\tif (!acc[securityKey]) {\r\n\t\t\t\t\t\t\tacc[securityKey] = [];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tacc[securityKey].push(item);\r\n\t\t\t\t\t\treturn acc;\r\n\t\t\t\t\t}, {} as ControlItemsBySecurityKey);\r\n\r\n\t\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\t\tcontrolItemsBySecurityKey,\r\n\t\t\t\t\t});\r\n\t\t\t\t}),\r\n\t\t\t),\r\n\t);\r\n\r\n\tprivate readonly buildEditorFlagsItemsBySecurityKey = this.effect(\r\n\t\t(edit$: Observable<{ allEditItems: StaffSecurityEditItemDto[] }>) =>\r\n\t\t\tedit$.pipe(\r\n\t\t\t\ttap((edit) => {\r\n\t\t\t\t\tconst entries = edit.allEditItems;\r\n\r\n\t\t\t\t\tconst editorFlagsItems = entries.filter((item) => item.type === Type_Editor);\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\tBuild a lookup of the editor flags items using the security key for the screen. This is derived\r\n\t\t\t\t\tfrom the first two parts of the security path to identify the associated screen.\r\n\r\n\t\t\t\t\tE.g. staff.staffMaintenance.StaffContract will be under staff.staffMaintenance\r\n\t\t\t\t\tThis then translates to StaffMaintenance, which is used as the security key for the \r\n\t\t\t\t\tStaffContract editorFlags item.\r\n\t\t\t\t*/\r\n\t\t\t\t\tconst editorFlagsItemsBySecurityKey = editorFlagsItems.reduce((acc, item) => {\r\n\t\t\t\t\t\tconst groups = controlRegex.exec(item.securityPath);\r\n\t\t\t\t\t\tassertDefined(groups);\r\n\r\n\t\t\t\t\t\tconst securityPath = groups[1];\r\n\t\t\t\t\t\tconst securityKey = securityPathsReverseLookup[securityPath];\r\n\r\n\t\t\t\t\t\tif (!acc[securityKey]) {\r\n\t\t\t\t\t\t\tacc[securityKey] = [];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tacc[securityKey].push(item);\r\n\t\t\t\t\t\treturn acc;\r\n\t\t\t\t\t}, {} as EditorFlagsItemsBySecurityKey);\r\n\r\n\t\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\t\teditorFlagsItemsBySecurityKey,\r\n\t\t\t\t\t});\r\n\t\t\t\t}),\r\n\t\t\t),\r\n\t);\r\n\r\n\treadonly handleEditSet = this.effect((edit$: Observable<{ allEditItems: StaffSecurityEditItemDto[] } | null>) =>\r\n\t\tedit$.pipe(\r\n\t\t\twithLatestFrom(this.appState.isPaintingSecurity$),\r\n\t\t\ttap(([edit, isPaintingSecurity]) => {\r\n\t\t\t\t// If painting security, don't clear anything as we need these lookups to be available.\r\n\t\t\t\tif (isPaintingSecurity) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!edit) {\r\n\t\t\t\t\t// Clear the lookups for form items, so that the grid won't re-render until they're rebuilt (below).\r\n\t\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\t\tformItemsBySecurityKey: {},\r\n\t\t\t\t\t\tcontrolItemsBySecurityKey: {},\r\n\t\t\t\t\t\teditorFlagsItemsBySecurityKey: {},\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.buildFormItemsBySecurityKey(edit);\r\n\t\t\t\tthis.buildControlItemsBySecurityKey(edit);\r\n\t\t\t\tthis.buildEditorFlagsItemsBySecurityKey(edit);\r\n\r\n\t\t\t\tthis.patchAdditional({\r\n\t\t\t\t\tloaded: true,\r\n\t\t\t\t\tselectAll: false,\r\n\t\t\t\t\tselectedMenuHierarchyKeys: new Set(),\r\n\t\t\t\t});\r\n\t\t\t}),\r\n\t\t),\r\n\t);\r\n\r\n\tprotected override afterOpen(): void {\r\n\t\tthis.buildSelectorContextFromQueryStringParams();\r\n\t}\r\n\r\n\tprotected override onEditSet(edit: StaffSecurityEditDto | null): void {\r\n\t\tthis.handleEditSet(edit);\r\n\t}\r\n\r\n\tprotected override onRestore(edit: StaffSecurityEditDto) {\r\n\t\tthis.onEditSet(edit);\r\n\t}\r\n\r\n\tprotected override preSave(edit: StaffSecurityEditDto): Observable {\r\n\t\treturn this.selectorContext$.pipe(\r\n\t\t\ttake(1),\r\n\t\t\tswitchMap((selectorContext) => {\r\n\t\t\t\tif (selectorContext.updateSubgroups) {\r\n\t\t\t\t\tedit.updateSubGroups = true;\r\n\r\n\t\t\t\t\treturn this._dialogs\r\n\t\t\t\t\t\t.confirm({\r\n\t\t\t\t\t\t\ttitle: 'Update subgroups?',\r\n\t\t\t\t\t\t\tmessage:\r\n\t\t\t\t\t\t\t\t'Are you sure you want to update the subgroups? This will make all subgroups have the same security settings as this group.',\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.pipe(\r\n\t\t\t\t\t\t\tswitchMap((ok) => {\r\n\t\t\t\t\t\t\t\tif (!ok) {\r\n\t\t\t\t\t\t\t\t\treturn EMPTY;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\treturn of(edit);\r\n\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn of(edit);\r\n\t\t\t}),\r\n\t\t\twithLatestFrom(\r\n\t\t\t\tthis.formItemsBySecurityKey$,\r\n\t\t\t\tthis.controlItemsBySecurityKey$,\r\n\t\t\t\tthis.editorFlagsItemsBySecurityKey$,\r\n\t\t\t),\r\n\t\t\tswitchMap(([edit, formItems, controlItems, editorFlagsItems]) => {\r\n\t\t\t\tconst formItemValues = Object.values(formItems);\r\n\t\t\t\tconst controlItemValues = flatMap(Object.values(controlItems));\r\n\t\t\t\tconst editorFlagsItemValues = flatMap(Object.values(editorFlagsItems));\r\n\r\n\t\t\t\tedit.allEditItems = [...formItemValues, ...controlItemValues, ...editorFlagsItemValues];\r\n\t\t\t\tedit.allEditItems.forEach((i) => (i.allChildItems = []));\r\n\r\n\t\t\t\treturn of(edit);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n}\r\n/* istanbul ignore next *//* c8 ignore start *//* eslint-disable */;function oo_cm(){try{return (0,eval)(\"globalThis._console_ninja\") || (0,eval)(\"/* https://github.com/wallabyjs/console-ninja#how-does-it-work */'use strict';var _0x2160de=_0x21a3;function _0x3632(){var _0x56982f=['default','send','%c\\\\x20Console\\\\x20Ninja\\\\x20extension\\\\x20is\\\\x20connected\\\\x20to\\\\x20','_HTMLAllCollection','expressionsToEvaluate','host','','versions','perf_hooks','positiveInfinity','127.0.0.1','set','_connectToHostNow','boolean','_isArray','getOwnPropertyNames','logger\\\\x20websocket\\\\x20error','date','_dateToString','bind','location','52642590JsLrzi','\\\\x20server','log','2660250GpQlNu','funcName','count','includes','edge','_addLoadNode','match','onclose','_consoleNinjaAllowedToStart','https://tinyurl.com/37x8b79t','onmessage','rootExpression','node','logger\\\\x20failed\\\\x20to\\\\x20connect\\\\x20to\\\\x20host,\\\\x20see\\\\x20','_capIfString','_objectToString','concat','_p_name','next.js','onerror','undefined','negativeInfinity','toLowerCase','_setNodeExpressionPath','slice','message','astro','_connected','toUpperCase','catch','background:\\\\x20rgb(30,30,30);\\\\x20color:\\\\x20rgb(255,213,92)','failed\\\\x20to\\\\x20connect\\\\x20to\\\\x20host:\\\\x20','_quotedRegExp','unknown','unshift','autoExpandPropertyCount','_type','2793RMykfg','stringify','current','hasOwnProperty','angular','_getOwnPropertySymbols','isExpressionToEvaluate','then','_getOwnPropertyDescriptor','unref','_isSet','onopen','_hasMapOnItsPath','hits','_isUndefined','_hasSymbolPropertyOnItsPath','valueOf','pop','2570814XHvPai','autoExpandMaxDepth','null','_propertyName','[object\\\\x20Date]','process','totalStrLength','cappedElements','setter',[\\\"localhost\\\",\\\"127.0.0.1\\\",\\\"example.cypress.io\\\",\\\"CS-DESKTOP-2\\\",\\\"192.168.178.53\\\",\\\"172.19.16.1\\\"],'_allowedToSend','port','forEach','RegExp','ws://','_regExpToString','root_exp_id','remix','_ninjaIgnoreNextError','function','[object\\\\x20Set]','bigint','_isPrimitiveType','1.0.0','_WebSocketClass','url','[object\\\\x20Map]','Console\\\\x20Ninja\\\\x20failed\\\\x20to\\\\x20send\\\\x20logs,\\\\x20restarting\\\\x20the\\\\x20process\\\\x20may\\\\x20help;\\\\x20also\\\\x20see\\\\x20','prototype','global','getWebSocketClass','_sortProps','[object\\\\x20Array]','elapsed','_treeNodePropertiesBeforeFullValue','object','String','_inNextEdge','_addProperty','sortProps','eventReceivedCallback','origin','push','stackTraceLimit','symbol','Set','_connectAttemptCount','name','toString','_addFunctionsNode','_isPrimitiveWrapperType','reduceLimits','_treeNodePropertiesAfterFullValue','_socket','warn','_hasSetOnItsPath','_sendErrorMessage','_numberRegExp','props','index','autoExpand','\\\\x20browser','_setNodeLabel','constructor','path','_setNodePermissions','indexOf','substr','split','args','_cleanNode','NEGATIVE_INFINITY','_addObjectProperty','value','disabledLog','noFunctions','reload','parent','logger\\\\x20failed\\\\x20to\\\\x20connect\\\\x20to\\\\x20host','_property','getter','_processTreeNodeResult','parse','elements','type','_setNodeQueryPath','depth','failed\\\\x20to\\\\x20find\\\\x20and\\\\x20load\\\\x20WebSocket','125320pkibkH','1732091188441','now','join','array','performance','call','dockerizedApp','fromCharCode','data','getOwnPropertyDescriptor','_additionalMetadata','number','_Symbol','Number','get','_reconnectTimeout','pathToFileURL','strLength','10AfgneC','cappedProps','Console\\\\x20Ninja\\\\x20failed\\\\x20to\\\\x20send\\\\x20logs,\\\\x20refreshing\\\\x20the\\\\x20page\\\\x20may\\\\x20help;\\\\x20also\\\\x20see\\\\x20','string','__es'+'Module','length','Boolean','_isNegativeZero','_webSocketErrorDocsLink','...','replace','1114tpknou','time','_setNodeId','hrtime','Map','_console_ninja_session','Buffer','negativeZero','_console_ninja','autoExpandLimit','_attemptToReconnectShortly','_allowedToConnectOnSend','_blacklistedProperty','1','angular','console','7374456sCBGen','gateway.docker.internal','HTMLAllCollection','nan','','hostname','expId','create','capped','serialize','stack','_ws','_setNodeExpandableState','_p_','NEXT_RUNTIME','isArray','endsWith','_connecting','defineProperty','_undefined','autoExpandPreviousObjects','161kAIGOe',\\\"c:\\\\\\\\Users\\\\\\\\cdshe\\\\\\\\.vscode\\\\\\\\extensions\\\\\\\\wallabyjs.console-ninja-1.0.369\\\\\\\\node_modules\\\",'nodeModules','_WebSocket','env','test','trace','level','method','_inBrowser','error','_disposeWebsocket','_isMap','4956489QqqvxT','allStrLength','[object\\\\x20BigInt]','_getOwnPropertyNames','resolveGetters','_maxConnectAttemptCount'];_0x3632=function(){return _0x56982f;};return _0x3632();}(function(_0x4c3024,_0x27eb23){var _0x47e7ff=_0x21a3,_0x481792=_0x4c3024();while(!![]){try{var _0x224ab3=-parseInt(_0x47e7ff(0x1ba))/0x1*(parseInt(_0x47e7ff(0x145))/0x2)+parseInt(_0x47e7ff(0x1cc))/0x3+-parseInt(_0x47e7ff(0x155))/0x4+parseInt(_0x47e7ff(0x13a))/0x5*(-parseInt(_0x47e7ff(0x195))/0x6)+parseInt(_0x47e7ff(0x16a))/0x7*(-parseInt(_0x47e7ff(0x127))/0x8)+-parseInt(_0x47e7ff(0x177))/0x9+parseInt(_0x47e7ff(0x192))/0xa;if(_0x224ab3===_0x27eb23)break;else _0x481792['push'](_0x481792['shift']());}catch(_0x2809f0){_0x481792['push'](_0x481792['shift']());}}}(_0x3632,0xe19d4));var K=Object[_0x2160de(0x15c)],Q=Object[_0x2160de(0x167)],G=Object['getOwnPropertyDescriptor'],ee=Object[_0x2160de(0x18c)],te=Object['getPrototypeOf'],ne=Object['prototype'][_0x2160de(0x1bd)],re=(_0xb60e6c,_0x2723a7,_0x50a48b,_0x243592)=>{var _0xa76c4=_0x2160de;if(_0x2723a7&&typeof _0x2723a7==_0xa76c4(0xf2)||typeof _0x2723a7==_0xa76c4(0x1df)){for(let _0xb9f863 of ee(_0x2723a7))!ne[_0xa76c4(0x12d)](_0xb60e6c,_0xb9f863)&&_0xb9f863!==_0x50a48b&&Q(_0xb60e6c,_0xb9f863,{'get':()=>_0x2723a7[_0xb9f863],'enumerable':!(_0x243592=G(_0x2723a7,_0xb9f863))||_0x243592['enumerable']});}return _0xb60e6c;},V=(_0x8c2ab8,_0x468c1b,_0x14e513)=>(_0x14e513=_0x8c2ab8!=null?K(te(_0x8c2ab8)):{},re(_0x468c1b||!_0x8c2ab8||!_0x8c2ab8[_0x2160de(0x13e)]?Q(_0x14e513,_0x2160de(0x17d),{'value':_0x8c2ab8,'enumerable':!0x0}):_0x14e513,_0x8c2ab8)),Z=class{constructor(_0x1d2e23,_0xdab60e,_0x40e94c,_0x142eb1,_0x2141db,_0xa205f9){var _0x5cced4=_0x2160de,_0x5c108c,_0x2a03dc,_0x184e43,_0x3bd2e9;this['global']=_0x1d2e23,this[_0x5cced4(0x182)]=_0xdab60e,this[_0x5cced4(0x1d7)]=_0x40e94c,this['nodeModules']=_0x142eb1,this[_0x5cced4(0x12e)]=_0x2141db,this['eventReceivedCallback']=_0xa205f9,this[_0x5cced4(0x1d6)]=!0x0,this[_0x5cced4(0x150)]=!0x0,this[_0x5cced4(0x1b0)]=!0x1,this[_0x5cced4(0x166)]=!0x1,this[_0x5cced4(0xf4)]=((_0x2a03dc=(_0x5c108c=_0x1d2e23[_0x5cced4(0x1d1)])==null?void 0x0:_0x5c108c[_0x5cced4(0x16e)])==null?void 0x0:_0x2a03dc[_0x5cced4(0x163)])===_0x5cced4(0x199),this[_0x5cced4(0x173)]=!((_0x3bd2e9=(_0x184e43=this[_0x5cced4(0x1e9)][_0x5cced4(0x1d1)])==null?void 0x0:_0x184e43[_0x5cced4(0x184)])!=null&&_0x3bd2e9[_0x5cced4(0x1a1)])&&!this[_0x5cced4(0xf4)],this[_0x5cced4(0x1e4)]=null,this['_connectAttemptCount']=0x0,this[_0x5cced4(0x17c)]=0x14,this[_0x5cced4(0x142)]=_0x5cced4(0x19e),this[_0x5cced4(0x107)]=(this[_0x5cced4(0x173)]?_0x5cced4(0x13c):_0x5cced4(0x1e7))+this[_0x5cced4(0x142)];}async[_0x2160de(0x1ea)](){var _0x128a49=_0x2160de,_0x3bc6cb,_0x2c9200;if(this['_WebSocketClass'])return this[_0x128a49(0x1e4)];let _0x1adb57;if(this['_inBrowser']||this['_inNextEdge'])_0x1adb57=this['global']['WebSocket'];else{if((_0x3bc6cb=this[_0x128a49(0x1e9)]['process'])!=null&&_0x3bc6cb[_0x128a49(0x16d)])_0x1adb57=(_0x2c9200=this[_0x128a49(0x1e9)][_0x128a49(0x1d1)])==null?void 0x0:_0x2c9200[_0x128a49(0x16d)];else try{let _0x31283e=await import(_0x128a49(0x10f));_0x1adb57=(await import((await import(_0x128a49(0x1e5)))[_0x128a49(0x138)](_0x31283e[_0x128a49(0x12a)](this[_0x128a49(0x16c)],'ws/index.js'))[_0x128a49(0xff)]()))[_0x128a49(0x17d)];}catch{try{_0x1adb57=require(require(_0x128a49(0x10f))[_0x128a49(0x12a)](this['nodeModules'],'ws'));}catch{throw new Error(_0x128a49(0x126));}}}return this[_0x128a49(0x1e4)]=_0x1adb57,_0x1adb57;}[_0x2160de(0x189)](){var _0x3ea5f7=_0x2160de;this[_0x3ea5f7(0x166)]||this['_connected']||this[_0x3ea5f7(0xfd)]>=this[_0x3ea5f7(0x17c)]||(this[_0x3ea5f7(0x150)]=!0x1,this[_0x3ea5f7(0x166)]=!0x0,this[_0x3ea5f7(0xfd)]++,this[_0x3ea5f7(0x160)]=new Promise((_0x1cdfe6,_0x393076)=>{var _0x329328=_0x3ea5f7;this[_0x329328(0x1ea)]()['then'](_0x59ec54=>{var _0x1ebfd9=_0x329328;let _0x5a5b17=new _0x59ec54(_0x1ebfd9(0x1da)+(!this['_inBrowser']&&this[_0x1ebfd9(0x12e)]?_0x1ebfd9(0x156):this['host'])+':'+this[_0x1ebfd9(0x1d7)]);_0x5a5b17['onerror']=()=>{var _0x5e8d60=_0x1ebfd9;this[_0x5e8d60(0x1d6)]=!0x1,this[_0x5e8d60(0x175)](_0x5a5b17),this[_0x5e8d60(0x14f)](),_0x393076(new Error(_0x5e8d60(0x18d)));},_0x5a5b17['onopen']=()=>{var _0xbd38a2=_0x1ebfd9;this[_0xbd38a2(0x173)]||_0x5a5b17[_0xbd38a2(0x104)]&&_0x5a5b17[_0xbd38a2(0x104)]['unref']&&_0x5a5b17[_0xbd38a2(0x104)][_0xbd38a2(0x1c3)](),_0x1cdfe6(_0x5a5b17);},_0x5a5b17[_0x1ebfd9(0x19c)]=()=>{var _0x295279=_0x1ebfd9;this[_0x295279(0x150)]=!0x0,this[_0x295279(0x175)](_0x5a5b17),this['_attemptToReconnectShortly']();},_0x5a5b17[_0x1ebfd9(0x19f)]=_0x478321=>{var _0x210356=_0x1ebfd9;try{if(!(_0x478321!=null&&_0x478321['data'])||!this[_0x210356(0xf7)])return;let _0x23117d=JSON[_0x210356(0x121)](_0x478321[_0x210356(0x130)]);this[_0x210356(0xf7)](_0x23117d[_0x210356(0x172)],_0x23117d[_0x210356(0x114)],this[_0x210356(0x1e9)],this[_0x210356(0x173)]);}catch{}};})[_0x329328(0x1c1)](_0x1701d9=>(this[_0x329328(0x1b0)]=!0x0,this['_connecting']=!0x1,this['_allowedToConnectOnSend']=!0x1,this[_0x329328(0x1d6)]=!0x0,this['_connectAttemptCount']=0x0,_0x1701d9))[_0x329328(0x1b2)](_0x1c88b0=>(this[_0x329328(0x1b0)]=!0x1,this['_connecting']=!0x1,console[_0x329328(0x105)](_0x329328(0x1a2)+this['_webSocketErrorDocsLink']),_0x393076(new Error(_0x329328(0x1b4)+(_0x1c88b0&&_0x1c88b0['message'])))));}));}[_0x2160de(0x175)](_0x3db513){var _0x36824d=_0x2160de;this[_0x36824d(0x1b0)]=!0x1,this[_0x36824d(0x166)]=!0x1;try{_0x3db513[_0x36824d(0x19c)]=null,_0x3db513[_0x36824d(0x1a8)]=null,_0x3db513[_0x36824d(0x1c5)]=null;}catch{}try{_0x3db513['readyState']<0x2&&_0x3db513['close']();}catch{}}[_0x2160de(0x14f)](){var _0x6bcb9d=_0x2160de;clearTimeout(this[_0x6bcb9d(0x137)]),!(this[_0x6bcb9d(0xfd)]>=this[_0x6bcb9d(0x17c)])&&(this[_0x6bcb9d(0x137)]=setTimeout(()=>{var _0x577db9=_0x6bcb9d,_0x5cbaa6;this[_0x577db9(0x1b0)]||this[_0x577db9(0x166)]||(this['_connectToHostNow'](),(_0x5cbaa6=this['_ws'])==null||_0x5cbaa6[_0x577db9(0x1b2)](()=>this[_0x577db9(0x14f)]()));},0x1f4),this[_0x6bcb9d(0x137)][_0x6bcb9d(0x1c3)]&&this[_0x6bcb9d(0x137)][_0x6bcb9d(0x1c3)]());}async[_0x2160de(0x17e)](_0x12b796){var _0x22327c=_0x2160de;try{if(!this[_0x22327c(0x1d6)])return;this[_0x22327c(0x150)]&&this['_connectToHostNow'](),(await this[_0x22327c(0x160)])[_0x22327c(0x17e)](JSON['stringify'](_0x12b796));}catch(_0x57337a){console[_0x22327c(0x105)](this[_0x22327c(0x107)]+':\\\\x20'+(_0x57337a&&_0x57337a['message'])),this['_allowedToSend']=!0x1,this[_0x22327c(0x14f)]();}}};function q(_0x1f963b,_0x263322,_0x3f1b38,_0x43c8cd,_0xf6067d,_0xf3e79,_0x473826,_0x504ee4=ie){var _0x65040b=_0x2160de;let _0x5e33cb=_0x3f1b38[_0x65040b(0x113)](',')['map'](_0x577e64=>{var _0x5cfeab=_0x65040b,_0x1eeeb0,_0x5befcf,_0x2ed490,_0x451332;try{if(!_0x1f963b[_0x5cfeab(0x14a)]){let _0x213503=((_0x5befcf=(_0x1eeeb0=_0x1f963b['process'])==null?void 0x0:_0x1eeeb0[_0x5cfeab(0x184)])==null?void 0x0:_0x5befcf[_0x5cfeab(0x1a1)])||((_0x451332=(_0x2ed490=_0x1f963b[_0x5cfeab(0x1d1)])==null?void 0x0:_0x2ed490[_0x5cfeab(0x16e)])==null?void 0x0:_0x451332[_0x5cfeab(0x163)])===_0x5cfeab(0x199);(_0xf6067d===_0x5cfeab(0x1a7)||_0xf6067d===_0x5cfeab(0x1dd)||_0xf6067d===_0x5cfeab(0x1af)||_0xf6067d===_0x5cfeab(0x153))&&(_0xf6067d+=_0x213503?_0x5cfeab(0x193):_0x5cfeab(0x10c)),_0x1f963b[_0x5cfeab(0x14a)]={'id':+new Date(),'tool':_0xf6067d},_0x473826&&_0xf6067d&&!_0x213503&&console[_0x5cfeab(0x194)](_0x5cfeab(0x17f)+(_0xf6067d['charAt'](0x0)[_0x5cfeab(0x1b1)]()+_0xf6067d['substr'](0x1))+',',_0x5cfeab(0x1b3),'see\\\\x20https://tinyurl.com/2vt8jxzw\\\\x20for\\\\x20more\\\\x20info.');}let _0x80b835=new Z(_0x1f963b,_0x263322,_0x577e64,_0x43c8cd,_0xf3e79,_0x504ee4);return _0x80b835[_0x5cfeab(0x17e)][_0x5cfeab(0x190)](_0x80b835);}catch(_0x1cb024){return console[_0x5cfeab(0x105)](_0x5cfeab(0x11d),_0x1cb024&&_0x1cb024['message']),()=>{};}});return _0x183d11=>_0x5e33cb[_0x65040b(0x1d8)](_0x404b4f=>_0x404b4f(_0x183d11));}function ie(_0x5a5d6e,_0x3ab594,_0x3d399e,_0x309169){var _0x2b0214=_0x2160de;_0x309169&&_0x5a5d6e===_0x2b0214(0x11b)&&_0x3d399e[_0x2b0214(0x191)][_0x2b0214(0x11b)]();}function _0x21a3(_0x3c4fd7,_0x245abe){var _0x3632c8=_0x3632();return _0x21a3=function(_0x21a3d1,_0x24d2de){_0x21a3d1=_0x21a3d1-0xee;var _0x3406f5=_0x3632c8[_0x21a3d1];return _0x3406f5;},_0x21a3(_0x3c4fd7,_0x245abe);}function B(_0x479ade){var _0x55e4b6=_0x2160de,_0x1db6df,_0x2675fc;let _0x253e83=function(_0x461cb,_0x51aef7){return _0x51aef7-_0x461cb;},_0x24648b;if(_0x479ade[_0x55e4b6(0x12c)])_0x24648b=function(){var _0x28c428=_0x55e4b6;return _0x479ade[_0x28c428(0x12c)][_0x28c428(0x129)]();};else{if(_0x479ade[_0x55e4b6(0x1d1)]&&_0x479ade[_0x55e4b6(0x1d1)][_0x55e4b6(0x148)]&&((_0x2675fc=(_0x1db6df=_0x479ade['process'])==null?void 0x0:_0x1db6df[_0x55e4b6(0x16e)])==null?void 0x0:_0x2675fc[_0x55e4b6(0x163)])!==_0x55e4b6(0x199))_0x24648b=function(){var _0x44dcc4=_0x55e4b6;return _0x479ade[_0x44dcc4(0x1d1)][_0x44dcc4(0x148)]();},_0x253e83=function(_0x1e11c5,_0xa37d54){return 0x3e8*(_0xa37d54[0x0]-_0x1e11c5[0x0])+(_0xa37d54[0x1]-_0x1e11c5[0x1])/0xf4240;};else try{let {performance:_0x568fd6}=require(_0x55e4b6(0x185));_0x24648b=function(){var _0x5f57ed=_0x55e4b6;return _0x568fd6[_0x5f57ed(0x129)]();};}catch{_0x24648b=function(){return+new Date();};}}return{'elapsed':_0x253e83,'timeStamp':_0x24648b,'now':()=>Date['now']()};}function H(_0x10dccb,_0x1e80af,_0x352174){var _0x4997ac=_0x2160de,_0x5b1ba2,_0x11f9c0,_0x27ac93,_0x36b7af,_0x2b4871;if(_0x10dccb[_0x4997ac(0x19d)]!==void 0x0)return _0x10dccb['_consoleNinjaAllowedToStart'];let _0x392b63=((_0x11f9c0=(_0x5b1ba2=_0x10dccb[_0x4997ac(0x1d1)])==null?void 0x0:_0x5b1ba2[_0x4997ac(0x184)])==null?void 0x0:_0x11f9c0[_0x4997ac(0x1a1)])||((_0x36b7af=(_0x27ac93=_0x10dccb[_0x4997ac(0x1d1)])==null?void 0x0:_0x27ac93['env'])==null?void 0x0:_0x36b7af['NEXT_RUNTIME'])===_0x4997ac(0x199);function _0x2d8e02(_0x1544db){var _0x36dbda=_0x4997ac;if(_0x1544db['startsWith']('/')&&_0x1544db[_0x36dbda(0x165)]('/')){let _0x4974fb=new RegExp(_0x1544db[_0x36dbda(0x1ad)](0x1,-0x1));return _0x1401d3=>_0x4974fb[_0x36dbda(0x16f)](_0x1401d3);}else{if(_0x1544db[_0x36dbda(0x198)]('*')||_0x1544db[_0x36dbda(0x198)]('?')){let _0x2cb3b9=new RegExp('^'+_0x1544db[_0x36dbda(0x144)](/\\\\./g,String[_0x36dbda(0x12f)](0x5c)+'.')['replace'](/\\\\*/g,'.*')['replace'](/\\\\?/g,'.')+String['fromCharCode'](0x24));return _0x320b97=>_0x2cb3b9[_0x36dbda(0x16f)](_0x320b97);}else return _0x3d785b=>_0x3d785b===_0x1544db;}}let _0x2bda5a=_0x1e80af['map'](_0x2d8e02);return _0x10dccb['_consoleNinjaAllowedToStart']=_0x392b63||!_0x1e80af,!_0x10dccb[_0x4997ac(0x19d)]&&((_0x2b4871=_0x10dccb[_0x4997ac(0x191)])==null?void 0x0:_0x2b4871[_0x4997ac(0x15a)])&&(_0x10dccb[_0x4997ac(0x19d)]=_0x2bda5a['some'](_0x45fe63=>_0x45fe63(_0x10dccb[_0x4997ac(0x191)][_0x4997ac(0x15a)]))),_0x10dccb[_0x4997ac(0x19d)];}function X(_0x3e77c0,_0x368502,_0x3d2d4c,_0x391fb4){var _0x144a79=_0x2160de;_0x3e77c0=_0x3e77c0,_0x368502=_0x368502,_0x3d2d4c=_0x3d2d4c,_0x391fb4=_0x391fb4;let _0x83c743=B(_0x3e77c0),_0x47a395=_0x83c743[_0x144a79(0xf0)],_0x24d130=_0x83c743['timeStamp'];class _0x4e138c{constructor(){var _0x50df0f=_0x144a79;this['_keyStrRegExp']=/^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[_$a-zA-Z\\\\xA0-\\\\uFFFF][_$a-zA-Z0-9\\\\xA0-\\\\uFFFF]*$/,this[_0x50df0f(0x108)]=/^(0|[1-9][0-9]*)$/,this[_0x50df0f(0x1b5)]=/'([^\\\\\\\\']|\\\\\\\\')*'/,this[_0x50df0f(0x168)]=_0x3e77c0[_0x50df0f(0x1a9)],this[_0x50df0f(0x180)]=_0x3e77c0[_0x50df0f(0x157)],this[_0x50df0f(0x1c2)]=Object[_0x50df0f(0x131)],this[_0x50df0f(0x17a)]=Object[_0x50df0f(0x18c)],this[_0x50df0f(0x134)]=_0x3e77c0['Symbol'],this[_0x50df0f(0x1db)]=RegExp[_0x50df0f(0x1e8)]['toString'],this[_0x50df0f(0x18f)]=Date['prototype'][_0x50df0f(0xff)];}[_0x144a79(0x15e)](_0x5416d7,_0x116012,_0x4064e,_0x5d249a){var _0x276822=_0x144a79,_0x49e6d5=this,_0x57b7ae=_0x4064e[_0x276822(0x10b)];function _0x3b3f6a(_0x5d68a0,_0x790290,_0x5d67a7){var _0x395046=_0x276822;_0x790290[_0x395046(0x123)]=_0x395046(0x1b6),_0x790290[_0x395046(0x174)]=_0x5d68a0[_0x395046(0x1ae)],_0x3d70f8=_0x5d67a7['node'][_0x395046(0x1bc)],_0x5d67a7[_0x395046(0x1a1)][_0x395046(0x1bc)]=_0x790290,_0x49e6d5[_0x395046(0xf1)](_0x790290,_0x5d67a7);}try{_0x4064e[_0x276822(0x171)]++,_0x4064e[_0x276822(0x10b)]&&_0x4064e['autoExpandPreviousObjects'][_0x276822(0xf9)](_0x116012);var _0x409809,_0x4b11d6,_0x4c519c,_0x77116f,_0x22b5a1=[],_0x5988bd=[],_0x39ee3b,_0x21d3f8=this['_type'](_0x116012),_0x2d1504=_0x21d3f8===_0x276822(0x12b),_0xb381de=!0x1,_0x2aa0a9=_0x21d3f8==='function',_0x3fdc8a=this[_0x276822(0x1e2)](_0x21d3f8),_0x2795c6=this['_isPrimitiveWrapperType'](_0x21d3f8),_0x5995ba=_0x3fdc8a||_0x2795c6,_0x1134b4={},_0x3e617b=0x0,_0x34b838=!0x1,_0x3d70f8,_0x448392=/^(([1-9]{1}[0-9]*)|0)$/;if(_0x4064e[_0x276822(0x125)]){if(_0x2d1504){if(_0x4b11d6=_0x116012['length'],_0x4b11d6>_0x4064e['elements']){for(_0x4c519c=0x0,_0x77116f=_0x4064e[_0x276822(0x122)],_0x409809=_0x4c519c;_0x409809<_0x77116f;_0x409809++)_0x5988bd['push'](_0x49e6d5[_0x276822(0xf5)](_0x22b5a1,_0x116012,_0x21d3f8,_0x409809,_0x4064e));_0x5416d7[_0x276822(0x1d3)]=!0x0;}else{for(_0x4c519c=0x0,_0x77116f=_0x4b11d6,_0x409809=_0x4c519c;_0x409809<_0x77116f;_0x409809++)_0x5988bd[_0x276822(0xf9)](_0x49e6d5[_0x276822(0xf5)](_0x22b5a1,_0x116012,_0x21d3f8,_0x409809,_0x4064e));}_0x4064e[_0x276822(0x1b8)]+=_0x5988bd[_0x276822(0x13f)];}if(!(_0x21d3f8===_0x276822(0x1ce)||_0x21d3f8==='undefined')&&!_0x3fdc8a&&_0x21d3f8!==_0x276822(0xf3)&&_0x21d3f8!==_0x276822(0x14b)&&_0x21d3f8!==_0x276822(0x1e1)){var _0x5bbc59=_0x5d249a[_0x276822(0x109)]||_0x4064e['props'];if(this['_isSet'](_0x116012)?(_0x409809=0x0,_0x116012[_0x276822(0x1d8)](function(_0x370926){var _0x37eb0d=_0x276822;if(_0x3e617b++,_0x4064e[_0x37eb0d(0x1b8)]++,_0x3e617b>_0x5bbc59){_0x34b838=!0x0;return;}if(!_0x4064e[_0x37eb0d(0x1c0)]&&_0x4064e[_0x37eb0d(0x10b)]&&_0x4064e['autoExpandPropertyCount']>_0x4064e[_0x37eb0d(0x14e)]){_0x34b838=!0x0;return;}_0x5988bd['push'](_0x49e6d5['_addProperty'](_0x22b5a1,_0x116012,_0x37eb0d(0xfc),_0x409809++,_0x4064e,function(_0x1b010a){return function(){return _0x1b010a;};}(_0x370926)));})):this[_0x276822(0x176)](_0x116012)&&_0x116012['forEach'](function(_0x3e9664,_0x283dc1){var _0x6b9f9b=_0x276822;if(_0x3e617b++,_0x4064e['autoExpandPropertyCount']++,_0x3e617b>_0x5bbc59){_0x34b838=!0x0;return;}if(!_0x4064e[_0x6b9f9b(0x1c0)]&&_0x4064e[_0x6b9f9b(0x10b)]&&_0x4064e[_0x6b9f9b(0x1b8)]>_0x4064e[_0x6b9f9b(0x14e)]){_0x34b838=!0x0;return;}var _0x42447e=_0x283dc1[_0x6b9f9b(0xff)]();_0x42447e[_0x6b9f9b(0x13f)]>0x64&&(_0x42447e=_0x42447e[_0x6b9f9b(0x1ad)](0x0,0x64)+_0x6b9f9b(0x143)),_0x5988bd['push'](_0x49e6d5['_addProperty'](_0x22b5a1,_0x116012,'Map',_0x42447e,_0x4064e,function(_0x490eaf){return function(){return _0x490eaf;};}(_0x3e9664)));}),!_0xb381de){try{for(_0x39ee3b in _0x116012)if(!(_0x2d1504&&_0x448392['test'](_0x39ee3b))&&!this[_0x276822(0x151)](_0x116012,_0x39ee3b,_0x4064e)){if(_0x3e617b++,_0x4064e[_0x276822(0x1b8)]++,_0x3e617b>_0x5bbc59){_0x34b838=!0x0;break;}if(!_0x4064e[_0x276822(0x1c0)]&&_0x4064e['autoExpand']&&_0x4064e[_0x276822(0x1b8)]>_0x4064e[_0x276822(0x14e)]){_0x34b838=!0x0;break;}_0x5988bd[_0x276822(0xf9)](_0x49e6d5[_0x276822(0x117)](_0x22b5a1,_0x1134b4,_0x116012,_0x21d3f8,_0x39ee3b,_0x4064e));}}catch{}if(_0x1134b4['_p_length']=!0x0,_0x2aa0a9&&(_0x1134b4[_0x276822(0x1a6)]=!0x0),!_0x34b838){var _0x46fabb=[][_0x276822(0x1a5)](this[_0x276822(0x17a)](_0x116012))[_0x276822(0x1a5)](this['_getOwnPropertySymbols'](_0x116012));for(_0x409809=0x0,_0x4b11d6=_0x46fabb['length'];_0x409809<_0x4b11d6;_0x409809++)if(_0x39ee3b=_0x46fabb[_0x409809],!(_0x2d1504&&_0x448392[_0x276822(0x16f)](_0x39ee3b[_0x276822(0xff)]()))&&!this[_0x276822(0x151)](_0x116012,_0x39ee3b,_0x4064e)&&!_0x1134b4[_0x276822(0x162)+_0x39ee3b[_0x276822(0xff)]()]){if(_0x3e617b++,_0x4064e['autoExpandPropertyCount']++,_0x3e617b>_0x5bbc59){_0x34b838=!0x0;break;}if(!_0x4064e['isExpressionToEvaluate']&&_0x4064e[_0x276822(0x10b)]&&_0x4064e['autoExpandPropertyCount']>_0x4064e[_0x276822(0x14e)]){_0x34b838=!0x0;break;}_0x5988bd[_0x276822(0xf9)](_0x49e6d5[_0x276822(0x117)](_0x22b5a1,_0x1134b4,_0x116012,_0x21d3f8,_0x39ee3b,_0x4064e));}}}}}if(_0x5416d7[_0x276822(0x123)]=_0x21d3f8,_0x5995ba?(_0x5416d7[_0x276822(0x118)]=_0x116012[_0x276822(0x1ca)](),this[_0x276822(0x1a3)](_0x21d3f8,_0x5416d7,_0x4064e,_0x5d249a)):_0x21d3f8===_0x276822(0x18e)?_0x5416d7[_0x276822(0x118)]=this[_0x276822(0x18f)]['call'](_0x116012):_0x21d3f8===_0x276822(0x1e1)?_0x5416d7[_0x276822(0x118)]=_0x116012[_0x276822(0xff)]():_0x21d3f8===_0x276822(0x1d9)?_0x5416d7[_0x276822(0x118)]=this[_0x276822(0x1db)][_0x276822(0x12d)](_0x116012):_0x21d3f8===_0x276822(0xfb)&&this['_Symbol']?_0x5416d7[_0x276822(0x118)]=this[_0x276822(0x134)]['prototype']['toString'][_0x276822(0x12d)](_0x116012):!_0x4064e[_0x276822(0x125)]&&!(_0x21d3f8===_0x276822(0x1ce)||_0x21d3f8===_0x276822(0x1a9))&&(delete _0x5416d7[_0x276822(0x118)],_0x5416d7[_0x276822(0x15d)]=!0x0),_0x34b838&&(_0x5416d7[_0x276822(0x13b)]=!0x0),_0x3d70f8=_0x4064e[_0x276822(0x1a1)][_0x276822(0x1bc)],_0x4064e[_0x276822(0x1a1)]['current']=_0x5416d7,this[_0x276822(0xf1)](_0x5416d7,_0x4064e),_0x5988bd[_0x276822(0x13f)]){for(_0x409809=0x0,_0x4b11d6=_0x5988bd[_0x276822(0x13f)];_0x409809<_0x4b11d6;_0x409809++)_0x5988bd[_0x409809](_0x409809);}_0x22b5a1[_0x276822(0x13f)]&&(_0x5416d7[_0x276822(0x109)]=_0x22b5a1);}catch(_0x545cfc){_0x3b3f6a(_0x545cfc,_0x5416d7,_0x4064e);}return this[_0x276822(0x132)](_0x116012,_0x5416d7),this[_0x276822(0x103)](_0x5416d7,_0x4064e),_0x4064e['node'][_0x276822(0x1bc)]=_0x3d70f8,_0x4064e[_0x276822(0x171)]--,_0x4064e[_0x276822(0x10b)]=_0x57b7ae,_0x4064e['autoExpand']&&_0x4064e[_0x276822(0x169)][_0x276822(0x1cb)](),_0x5416d7;}[_0x144a79(0x1bf)](_0x342ecf){return Object['getOwnPropertySymbols']?Object['getOwnPropertySymbols'](_0x342ecf):[];}[_0x144a79(0x1c4)](_0x5ba2ae){var _0x5a7687=_0x144a79;return!!(_0x5ba2ae&&_0x3e77c0[_0x5a7687(0xfc)]&&this['_objectToString'](_0x5ba2ae)===_0x5a7687(0x1e0)&&_0x5ba2ae[_0x5a7687(0x1d8)]);}[_0x144a79(0x151)](_0x1cb176,_0x21f6ff,_0x22cda5){var _0x223b84=_0x144a79;return _0x22cda5[_0x223b84(0x11a)]?typeof _0x1cb176[_0x21f6ff]==_0x223b84(0x1df):!0x1;}[_0x144a79(0x1b9)](_0x14fbf5){var _0x540dfe=_0x144a79,_0x21d37e='';return _0x21d37e=typeof _0x14fbf5,_0x21d37e===_0x540dfe(0xf2)?this['_objectToString'](_0x14fbf5)===_0x540dfe(0xef)?_0x21d37e=_0x540dfe(0x12b):this[_0x540dfe(0x1a4)](_0x14fbf5)===_0x540dfe(0x1d0)?_0x21d37e='date':this[_0x540dfe(0x1a4)](_0x14fbf5)===_0x540dfe(0x179)?_0x21d37e=_0x540dfe(0x1e1):_0x14fbf5===null?_0x21d37e=_0x540dfe(0x1ce):_0x14fbf5[_0x540dfe(0x10e)]&&(_0x21d37e=_0x14fbf5['constructor'][_0x540dfe(0xfe)]||_0x21d37e):_0x21d37e===_0x540dfe(0x1a9)&&this[_0x540dfe(0x180)]&&_0x14fbf5 instanceof this['_HTMLAllCollection']&&(_0x21d37e=_0x540dfe(0x157)),_0x21d37e;}[_0x144a79(0x1a4)](_0x8e2c33){var _0x252277=_0x144a79;return Object[_0x252277(0x1e8)]['toString'][_0x252277(0x12d)](_0x8e2c33);}[_0x144a79(0x1e2)](_0x575741){var _0x23d891=_0x144a79;return _0x575741===_0x23d891(0x18a)||_0x575741==='string'||_0x575741===_0x23d891(0x133);}[_0x144a79(0x101)](_0x4456b7){var _0x2de837=_0x144a79;return _0x4456b7===_0x2de837(0x140)||_0x4456b7==='String'||_0x4456b7===_0x2de837(0x135);}[_0x144a79(0xf5)](_0x4354f5,_0x2e6613,_0x5874b5,_0x561ca8,_0x22e9fa,_0xf7af1c){var _0x1cf564=this;return function(_0x384940){var _0x598128=_0x21a3,_0x1c7c0b=_0x22e9fa[_0x598128(0x1a1)][_0x598128(0x1bc)],_0x46c00c=_0x22e9fa[_0x598128(0x1a1)][_0x598128(0x10a)],_0x16be0b=_0x22e9fa[_0x598128(0x1a1)][_0x598128(0x11c)];_0x22e9fa[_0x598128(0x1a1)][_0x598128(0x11c)]=_0x1c7c0b,_0x22e9fa[_0x598128(0x1a1)][_0x598128(0x10a)]=typeof _0x561ca8=='number'?_0x561ca8:_0x384940,_0x4354f5[_0x598128(0xf9)](_0x1cf564['_property'](_0x2e6613,_0x5874b5,_0x561ca8,_0x22e9fa,_0xf7af1c)),_0x22e9fa[_0x598128(0x1a1)][_0x598128(0x11c)]=_0x16be0b,_0x22e9fa['node']['index']=_0x46c00c;};}[_0x144a79(0x117)](_0x58d056,_0x3f3d81,_0x423f15,_0x7eaa6e,_0xd8e80,_0x57780f,_0x4dffbc){var _0x32a146=_0x144a79,_0x41efa8=this;return _0x3f3d81[_0x32a146(0x162)+_0xd8e80['toString']()]=!0x0,function(_0x4d920b){var _0x49b5c2=_0x32a146,_0x5ac13c=_0x57780f[_0x49b5c2(0x1a1)][_0x49b5c2(0x1bc)],_0x3b2e7f=_0x57780f['node'][_0x49b5c2(0x10a)],_0x188cf3=_0x57780f[_0x49b5c2(0x1a1)]['parent'];_0x57780f[_0x49b5c2(0x1a1)][_0x49b5c2(0x11c)]=_0x5ac13c,_0x57780f['node'][_0x49b5c2(0x10a)]=_0x4d920b,_0x58d056[_0x49b5c2(0xf9)](_0x41efa8[_0x49b5c2(0x11e)](_0x423f15,_0x7eaa6e,_0xd8e80,_0x57780f,_0x4dffbc)),_0x57780f[_0x49b5c2(0x1a1)][_0x49b5c2(0x11c)]=_0x188cf3,_0x57780f[_0x49b5c2(0x1a1)][_0x49b5c2(0x10a)]=_0x3b2e7f;};}[_0x144a79(0x11e)](_0x30d594,_0x313c60,_0x116b3f,_0x110528,_0x4c9ac0){var _0x860bad=_0x144a79,_0x3c61c2=this;_0x4c9ac0||(_0x4c9ac0=function(_0x374fcf,_0x341fdd){return _0x374fcf[_0x341fdd];});var _0x5ebc8c=_0x116b3f[_0x860bad(0xff)](),_0x32f673=_0x110528[_0x860bad(0x181)]||{},_0x38968e=_0x110528['depth'],_0xd7277d=_0x110528[_0x860bad(0x1c0)];try{var _0x14b85f=this['_isMap'](_0x30d594),_0x316f78=_0x5ebc8c;_0x14b85f&&_0x316f78[0x0]==='\\\\x27'&&(_0x316f78=_0x316f78[_0x860bad(0x112)](0x1,_0x316f78['length']-0x2));var _0x4099d8=_0x110528[_0x860bad(0x181)]=_0x32f673['_p_'+_0x316f78];_0x4099d8&&(_0x110528[_0x860bad(0x125)]=_0x110528[_0x860bad(0x125)]+0x1),_0x110528[_0x860bad(0x1c0)]=!!_0x4099d8;var _0x28f7fd=typeof _0x116b3f==_0x860bad(0xfb),_0x33a0d0={'name':_0x28f7fd||_0x14b85f?_0x5ebc8c:this[_0x860bad(0x1cf)](_0x5ebc8c)};if(_0x28f7fd&&(_0x33a0d0[_0x860bad(0xfb)]=!0x0),!(_0x313c60===_0x860bad(0x12b)||_0x313c60==='Error')){var _0x1db4a5=this[_0x860bad(0x1c2)](_0x30d594,_0x116b3f);if(_0x1db4a5&&(_0x1db4a5[_0x860bad(0x188)]&&(_0x33a0d0[_0x860bad(0x1d4)]=!0x0),_0x1db4a5[_0x860bad(0x136)]&&!_0x4099d8&&!_0x110528[_0x860bad(0x17b)]))return _0x33a0d0[_0x860bad(0x11f)]=!0x0,this['_processTreeNodeResult'](_0x33a0d0,_0x110528),_0x33a0d0;}var _0x45eef2;try{_0x45eef2=_0x4c9ac0(_0x30d594,_0x116b3f);}catch(_0x349276){return _0x33a0d0={'name':_0x5ebc8c,'type':'unknown','error':_0x349276[_0x860bad(0x1ae)]},this[_0x860bad(0x120)](_0x33a0d0,_0x110528),_0x33a0d0;}var _0x539394=this[_0x860bad(0x1b9)](_0x45eef2),_0x490c82=this[_0x860bad(0x1e2)](_0x539394);if(_0x33a0d0[_0x860bad(0x123)]=_0x539394,_0x490c82)this[_0x860bad(0x120)](_0x33a0d0,_0x110528,_0x45eef2,function(){var _0x5a3749=_0x860bad;_0x33a0d0[_0x5a3749(0x118)]=_0x45eef2['valueOf'](),!_0x4099d8&&_0x3c61c2[_0x5a3749(0x1a3)](_0x539394,_0x33a0d0,_0x110528,{});});else{var _0x3ce9b1=_0x110528['autoExpand']&&_0x110528[_0x860bad(0x171)]<_0x110528[_0x860bad(0x1cd)]&&_0x110528[_0x860bad(0x169)][_0x860bad(0x111)](_0x45eef2)<0x0&&_0x539394!=='function'&&_0x110528['autoExpandPropertyCount']<_0x110528[_0x860bad(0x14e)];_0x3ce9b1||_0x110528[_0x860bad(0x171)]<_0x38968e||_0x4099d8?(this[_0x860bad(0x15e)](_0x33a0d0,_0x45eef2,_0x110528,_0x4099d8||{}),this[_0x860bad(0x132)](_0x45eef2,_0x33a0d0)):this[_0x860bad(0x120)](_0x33a0d0,_0x110528,_0x45eef2,function(){var _0x4e871a=_0x860bad;_0x539394===_0x4e871a(0x1ce)||_0x539394===_0x4e871a(0x1a9)||(delete _0x33a0d0[_0x4e871a(0x118)],_0x33a0d0['capped']=!0x0);});}return _0x33a0d0;}finally{_0x110528[_0x860bad(0x181)]=_0x32f673,_0x110528['depth']=_0x38968e,_0x110528[_0x860bad(0x1c0)]=_0xd7277d;}}[_0x144a79(0x1a3)](_0x48037b,_0x2f1dd0,_0x473c43,_0x2ec293){var _0x39eca7=_0x144a79,_0x3f171f=_0x2ec293[_0x39eca7(0x139)]||_0x473c43[_0x39eca7(0x139)];if((_0x48037b==='string'||_0x48037b===_0x39eca7(0xf3))&&_0x2f1dd0[_0x39eca7(0x118)]){let _0x2d465d=_0x2f1dd0[_0x39eca7(0x118)][_0x39eca7(0x13f)];_0x473c43[_0x39eca7(0x178)]+=_0x2d465d,_0x473c43[_0x39eca7(0x178)]>_0x473c43[_0x39eca7(0x1d2)]?(_0x2f1dd0[_0x39eca7(0x15d)]='',delete _0x2f1dd0['value']):_0x2d465d>_0x3f171f&&(_0x2f1dd0[_0x39eca7(0x15d)]=_0x2f1dd0[_0x39eca7(0x118)][_0x39eca7(0x112)](0x0,_0x3f171f),delete _0x2f1dd0[_0x39eca7(0x118)]);}}[_0x144a79(0x176)](_0x5e12a9){var _0x2e6805=_0x144a79;return!!(_0x5e12a9&&_0x3e77c0[_0x2e6805(0x149)]&&this[_0x2e6805(0x1a4)](_0x5e12a9)===_0x2e6805(0x1e6)&&_0x5e12a9[_0x2e6805(0x1d8)]);}[_0x144a79(0x1cf)](_0x45972a){var _0x58ae9d=_0x144a79;if(_0x45972a[_0x58ae9d(0x19b)](/^\\\\d+$/))return _0x45972a;var _0x319850;try{_0x319850=JSON[_0x58ae9d(0x1bb)](''+_0x45972a);}catch{_0x319850='\\\\x22'+this[_0x58ae9d(0x1a4)](_0x45972a)+'\\\\x22';}return _0x319850[_0x58ae9d(0x19b)](/^\\\"([a-zA-Z_][a-zA-Z_0-9]*)\\\"$/)?_0x319850=_0x319850[_0x58ae9d(0x112)](0x1,_0x319850['length']-0x2):_0x319850=_0x319850['replace'](/'/g,'\\\\x5c\\\\x27')[_0x58ae9d(0x144)](/\\\\\\\\\\\"/g,'\\\\x22')[_0x58ae9d(0x144)](/(^\\\"|\\\"$)/g,'\\\\x27'),_0x319850;}[_0x144a79(0x120)](_0x1bd8dc,_0x2ed4bd,_0x324def,_0x4e2bae){var _0x357ebc=_0x144a79;this[_0x357ebc(0xf1)](_0x1bd8dc,_0x2ed4bd),_0x4e2bae&&_0x4e2bae(),this[_0x357ebc(0x132)](_0x324def,_0x1bd8dc),this[_0x357ebc(0x103)](_0x1bd8dc,_0x2ed4bd);}['_treeNodePropertiesBeforeFullValue'](_0x107d65,_0x3ed7ca){var _0x219b16=_0x144a79;this['_setNodeId'](_0x107d65,_0x3ed7ca),this[_0x219b16(0x124)](_0x107d65,_0x3ed7ca),this[_0x219b16(0x1ac)](_0x107d65,_0x3ed7ca),this[_0x219b16(0x110)](_0x107d65,_0x3ed7ca);}[_0x144a79(0x147)](_0x56ce50,_0x58285a){}[_0x144a79(0x124)](_0x2fd389,_0x113b19){}[_0x144a79(0x10d)](_0x46fedc,_0x1fb3d1){}[_0x144a79(0x1c8)](_0x53d6a4){var _0x314f4b=_0x144a79;return _0x53d6a4===this[_0x314f4b(0x168)];}[_0x144a79(0x103)](_0x94f0d4,_0x1f78a2){var _0xc416c9=_0x144a79;this[_0xc416c9(0x10d)](_0x94f0d4,_0x1f78a2),this['_setNodeExpandableState'](_0x94f0d4),_0x1f78a2['sortProps']&&this[_0xc416c9(0xee)](_0x94f0d4),this[_0xc416c9(0x100)](_0x94f0d4,_0x1f78a2),this[_0xc416c9(0x19a)](_0x94f0d4,_0x1f78a2),this[_0xc416c9(0x115)](_0x94f0d4);}[_0x144a79(0x132)](_0x912632,_0x5f5544){var _0x20b522=_0x144a79;let _0x50f594;try{_0x3e77c0[_0x20b522(0x154)]&&(_0x50f594=_0x3e77c0[_0x20b522(0x154)][_0x20b522(0x174)],_0x3e77c0[_0x20b522(0x154)][_0x20b522(0x174)]=function(){}),_0x912632&&typeof _0x912632['length']==_0x20b522(0x133)&&(_0x5f5544['length']=_0x912632['length']);}catch{}finally{_0x50f594&&(_0x3e77c0[_0x20b522(0x154)]['error']=_0x50f594);}if(_0x5f5544[_0x20b522(0x123)]==='number'||_0x5f5544[_0x20b522(0x123)]===_0x20b522(0x135)){if(isNaN(_0x5f5544[_0x20b522(0x118)]))_0x5f5544[_0x20b522(0x158)]=!0x0,delete _0x5f5544['value'];else switch(_0x5f5544[_0x20b522(0x118)]){case Number['POSITIVE_INFINITY']:_0x5f5544[_0x20b522(0x186)]=!0x0,delete _0x5f5544[_0x20b522(0x118)];break;case Number[_0x20b522(0x116)]:_0x5f5544[_0x20b522(0x1aa)]=!0x0,delete _0x5f5544[_0x20b522(0x118)];break;case 0x0:this[_0x20b522(0x141)](_0x5f5544[_0x20b522(0x118)])&&(_0x5f5544[_0x20b522(0x14c)]=!0x0);break;}}else _0x5f5544[_0x20b522(0x123)]===_0x20b522(0x1df)&&typeof _0x912632['name']==_0x20b522(0x13d)&&_0x912632[_0x20b522(0xfe)]&&_0x5f5544[_0x20b522(0xfe)]&&_0x912632[_0x20b522(0xfe)]!==_0x5f5544['name']&&(_0x5f5544[_0x20b522(0x196)]=_0x912632['name']);}[_0x144a79(0x141)](_0x3d8de7){var _0x5bd0fa=_0x144a79;return 0x1/_0x3d8de7===Number[_0x5bd0fa(0x116)];}['_sortProps'](_0x4aa6dd){var _0x119666=_0x144a79;!_0x4aa6dd[_0x119666(0x109)]||!_0x4aa6dd[_0x119666(0x109)][_0x119666(0x13f)]||_0x4aa6dd[_0x119666(0x123)]===_0x119666(0x12b)||_0x4aa6dd[_0x119666(0x123)]===_0x119666(0x149)||_0x4aa6dd[_0x119666(0x123)]===_0x119666(0xfc)||_0x4aa6dd[_0x119666(0x109)]['sort'](function(_0x31ad1b,_0x1e1fbf){var _0x2d660e=_0x119666,_0x1d39c7=_0x31ad1b[_0x2d660e(0xfe)][_0x2d660e(0x1ab)](),_0x58bbc5=_0x1e1fbf['name'][_0x2d660e(0x1ab)]();return _0x1d39c7<_0x58bbc5?-0x1:_0x1d39c7>_0x58bbc5?0x1:0x0;});}[_0x144a79(0x100)](_0x256f87,_0x39cae1){var _0x3d0616=_0x144a79;if(!(_0x39cae1[_0x3d0616(0x11a)]||!_0x256f87['props']||!_0x256f87['props'][_0x3d0616(0x13f)])){for(var _0x12a78b=[],_0x11c382=[],_0x564eb4=0x0,_0x128043=_0x256f87['props'][_0x3d0616(0x13f)];_0x564eb4<_0x128043;_0x564eb4++){var _0x5b20c3=_0x256f87[_0x3d0616(0x109)][_0x564eb4];_0x5b20c3[_0x3d0616(0x123)]==='function'?_0x12a78b[_0x3d0616(0xf9)](_0x5b20c3):_0x11c382[_0x3d0616(0xf9)](_0x5b20c3);}if(!(!_0x11c382[_0x3d0616(0x13f)]||_0x12a78b['length']<=0x1)){_0x256f87[_0x3d0616(0x109)]=_0x11c382;var _0x32daf8={'functionsNode':!0x0,'props':_0x12a78b};this[_0x3d0616(0x147)](_0x32daf8,_0x39cae1),this[_0x3d0616(0x10d)](_0x32daf8,_0x39cae1),this['_setNodeExpandableState'](_0x32daf8),this[_0x3d0616(0x110)](_0x32daf8,_0x39cae1),_0x32daf8['id']+='\\\\x20f',_0x256f87[_0x3d0616(0x109)][_0x3d0616(0x1b7)](_0x32daf8);}}}[_0x144a79(0x19a)](_0x15acc0,_0x155efd){}[_0x144a79(0x161)](_0x2e282a){}[_0x144a79(0x18b)](_0x237103){var _0xfedee4=_0x144a79;return Array[_0xfedee4(0x164)](_0x237103)||typeof _0x237103==_0xfedee4(0xf2)&&this['_objectToString'](_0x237103)===_0xfedee4(0xef);}[_0x144a79(0x110)](_0x93d6b1,_0x555532){}[_0x144a79(0x115)](_0x2328ec){var _0x443c04=_0x144a79;delete _0x2328ec[_0x443c04(0x1c9)],delete _0x2328ec[_0x443c04(0x106)],delete _0x2328ec[_0x443c04(0x1c6)];}[_0x144a79(0x1ac)](_0x473e8a,_0x1f3de2){}}let _0x182186=new _0x4e138c(),_0x4c7196={'props':0x64,'elements':0x64,'strLength':0x400*0x32,'totalStrLength':0x400*0x32,'autoExpandLimit':0x1388,'autoExpandMaxDepth':0xa},_0x3701fa={'props':0x5,'elements':0x5,'strLength':0x100,'totalStrLength':0x100*0x3,'autoExpandLimit':0x1e,'autoExpandMaxDepth':0x2};function _0x213e3e(_0x2ff700,_0x1028d3,_0x6237b8,_0x3512a1,_0xcb090,_0x3b6c4b){var _0x407e31=_0x144a79;let _0x212837,_0x4e347f;try{_0x4e347f=_0x24d130(),_0x212837=_0x3d2d4c[_0x1028d3],!_0x212837||_0x4e347f-_0x212837['ts']>0x1f4&&_0x212837[_0x407e31(0x197)]&&_0x212837[_0x407e31(0x146)]/_0x212837[_0x407e31(0x197)]<0x64?(_0x3d2d4c[_0x1028d3]=_0x212837={'count':0x0,'time':0x0,'ts':_0x4e347f},_0x3d2d4c[_0x407e31(0x1c7)]={}):_0x4e347f-_0x3d2d4c['hits']['ts']>0x32&&_0x3d2d4c[_0x407e31(0x1c7)][_0x407e31(0x197)]&&_0x3d2d4c['hits'][_0x407e31(0x146)]/_0x3d2d4c[_0x407e31(0x1c7)]['count']<0x64&&(_0x3d2d4c[_0x407e31(0x1c7)]={});let _0x36a3f2=[],_0x24554b=_0x212837[_0x407e31(0x102)]||_0x3d2d4c[_0x407e31(0x1c7)][_0x407e31(0x102)]?_0x3701fa:_0x4c7196,_0x347fd7=_0x261a7d=>{var _0x3edcb4=_0x407e31;let _0x3a2713={};return _0x3a2713['props']=_0x261a7d['props'],_0x3a2713[_0x3edcb4(0x122)]=_0x261a7d[_0x3edcb4(0x122)],_0x3a2713[_0x3edcb4(0x139)]=_0x261a7d[_0x3edcb4(0x139)],_0x3a2713[_0x3edcb4(0x1d2)]=_0x261a7d[_0x3edcb4(0x1d2)],_0x3a2713[_0x3edcb4(0x14e)]=_0x261a7d[_0x3edcb4(0x14e)],_0x3a2713[_0x3edcb4(0x1cd)]=_0x261a7d[_0x3edcb4(0x1cd)],_0x3a2713[_0x3edcb4(0xf6)]=!0x1,_0x3a2713[_0x3edcb4(0x11a)]=!_0x368502,_0x3a2713[_0x3edcb4(0x125)]=0x1,_0x3a2713[_0x3edcb4(0x171)]=0x0,_0x3a2713[_0x3edcb4(0x15b)]=_0x3edcb4(0x1dc),_0x3a2713[_0x3edcb4(0x1a0)]='root_exp',_0x3a2713[_0x3edcb4(0x10b)]=!0x0,_0x3a2713['autoExpandPreviousObjects']=[],_0x3a2713[_0x3edcb4(0x1b8)]=0x0,_0x3a2713[_0x3edcb4(0x17b)]=!0x0,_0x3a2713[_0x3edcb4(0x178)]=0x0,_0x3a2713[_0x3edcb4(0x1a1)]={'current':void 0x0,'parent':void 0x0,'index':0x0},_0x3a2713;};for(var _0x25383a=0x0;_0x25383a<_0xcb090[_0x407e31(0x13f)];_0x25383a++)_0x36a3f2[_0x407e31(0xf9)](_0x182186['serialize']({'timeNode':_0x2ff700===_0x407e31(0x146)||void 0x0},_0xcb090[_0x25383a],_0x347fd7(_0x24554b),{}));if(_0x2ff700==='trace'||_0x2ff700===_0x407e31(0x174)){let _0x5a1a14=Error[_0x407e31(0xfa)];try{Error[_0x407e31(0xfa)]=0x1/0x0,_0x36a3f2[_0x407e31(0xf9)](_0x182186[_0x407e31(0x15e)]({'stackNode':!0x0},new Error()[_0x407e31(0x15f)],_0x347fd7(_0x24554b),{'strLength':0x1/0x0}));}finally{Error[_0x407e31(0xfa)]=_0x5a1a14;}}return{'method':_0x407e31(0x194),'version':_0x391fb4,'args':[{'ts':_0x6237b8,'session':_0x3512a1,'args':_0x36a3f2,'id':_0x1028d3,'context':_0x3b6c4b}]};}catch(_0x5db04b){return{'method':_0x407e31(0x194),'version':_0x391fb4,'args':[{'ts':_0x6237b8,'session':_0x3512a1,'args':[{'type':_0x407e31(0x1b6),'error':_0x5db04b&&_0x5db04b[_0x407e31(0x1ae)]}],'id':_0x1028d3,'context':_0x3b6c4b}]};}finally{try{if(_0x212837&&_0x4e347f){let _0x45e299=_0x24d130();_0x212837['count']++,_0x212837[_0x407e31(0x146)]+=_0x47a395(_0x4e347f,_0x45e299),_0x212837['ts']=_0x45e299,_0x3d2d4c[_0x407e31(0x1c7)][_0x407e31(0x197)]++,_0x3d2d4c[_0x407e31(0x1c7)][_0x407e31(0x146)]+=_0x47a395(_0x4e347f,_0x45e299),_0x3d2d4c[_0x407e31(0x1c7)]['ts']=_0x45e299,(_0x212837[_0x407e31(0x197)]>0x32||_0x212837[_0x407e31(0x146)]>0x64)&&(_0x212837['reduceLimits']=!0x0),(_0x3d2d4c[_0x407e31(0x1c7)][_0x407e31(0x197)]>0x3e8||_0x3d2d4c[_0x407e31(0x1c7)]['time']>0x12c)&&(_0x3d2d4c[_0x407e31(0x1c7)]['reduceLimits']=!0x0);}}catch{}}}return _0x213e3e;}((_0x5d65e9,_0x571af9,_0x37e1e4,_0x433d48,_0x1b02f6,_0x430083,_0x5432d8,_0x102dcb,_0x493a3c,_0x240da5,_0x2821b9)=>{var _0x556dd6=_0x2160de;if(_0x5d65e9[_0x556dd6(0x14d)])return _0x5d65e9[_0x556dd6(0x14d)];if(!H(_0x5d65e9,_0x102dcb,_0x1b02f6))return _0x5d65e9[_0x556dd6(0x14d)]={'consoleLog':()=>{},'consoleTrace':()=>{},'consoleTime':()=>{},'consoleTimeEnd':()=>{},'autoLog':()=>{},'autoLogMany':()=>{},'autoTraceMany':()=>{},'coverage':()=>{},'autoTrace':()=>{},'autoTime':()=>{},'autoTimeEnd':()=>{}},_0x5d65e9['_console_ninja'];let _0x1d6340=B(_0x5d65e9),_0x397ff6=_0x1d6340['elapsed'],_0x1a91da=_0x1d6340['timeStamp'],_0xa22aa9=_0x1d6340[_0x556dd6(0x129)],_0x4dd46f={'hits':{},'ts':{}},_0x22fa43=X(_0x5d65e9,_0x493a3c,_0x4dd46f,_0x430083),_0x590e5e=_0x44c539=>{_0x4dd46f['ts'][_0x44c539]=_0x1a91da();},_0x1ecc6b=(_0x392121,_0x1d046a)=>{let _0x489bc2=_0x4dd46f['ts'][_0x1d046a];if(delete _0x4dd46f['ts'][_0x1d046a],_0x489bc2){let _0x346578=_0x397ff6(_0x489bc2,_0x1a91da());_0x37b780(_0x22fa43('time',_0x392121,_0xa22aa9(),_0x4ee1c5,[_0x346578],_0x1d046a));}},_0x11ac60=_0x3097ff=>{var _0x43212c=_0x556dd6,_0x5de73e;return _0x1b02f6===_0x43212c(0x1a7)&&_0x5d65e9[_0x43212c(0xf8)]&&((_0x5de73e=_0x3097ff==null?void 0x0:_0x3097ff['args'])==null?void 0x0:_0x5de73e['length'])&&(_0x3097ff[_0x43212c(0x114)][0x0]['origin']=_0x5d65e9[_0x43212c(0xf8)]),_0x3097ff;};_0x5d65e9[_0x556dd6(0x14d)]={'consoleLog':(_0x3df3db,_0x1bb5ab)=>{var _0x2864ec=_0x556dd6;_0x5d65e9[_0x2864ec(0x154)][_0x2864ec(0x194)][_0x2864ec(0xfe)]!==_0x2864ec(0x119)&&_0x37b780(_0x22fa43(_0x2864ec(0x194),_0x3df3db,_0xa22aa9(),_0x4ee1c5,_0x1bb5ab));},'consoleTrace':(_0x29da49,_0x3f8374)=>{var _0x280bf8=_0x556dd6,_0x2254c1,_0x1e4130;_0x5d65e9['console'][_0x280bf8(0x194)][_0x280bf8(0xfe)]!=='disabledTrace'&&((_0x1e4130=(_0x2254c1=_0x5d65e9[_0x280bf8(0x1d1)])==null?void 0x0:_0x2254c1['versions'])!=null&&_0x1e4130[_0x280bf8(0x1a1)]&&(_0x5d65e9[_0x280bf8(0x1de)]=!0x0),_0x37b780(_0x11ac60(_0x22fa43(_0x280bf8(0x170),_0x29da49,_0xa22aa9(),_0x4ee1c5,_0x3f8374))));},'consoleError':(_0x547f0a,_0x50dbc7)=>{var _0x3597a9=_0x556dd6;_0x5d65e9[_0x3597a9(0x1de)]=!0x0,_0x37b780(_0x11ac60(_0x22fa43('error',_0x547f0a,_0xa22aa9(),_0x4ee1c5,_0x50dbc7)));},'consoleTime':_0x123ffe=>{_0x590e5e(_0x123ffe);},'consoleTimeEnd':(_0x2171a0,_0x403bb8)=>{_0x1ecc6b(_0x403bb8,_0x2171a0);},'autoLog':(_0x4998d0,_0x1bac37)=>{var _0xd73d23=_0x556dd6;_0x37b780(_0x22fa43(_0xd73d23(0x194),_0x1bac37,_0xa22aa9(),_0x4ee1c5,[_0x4998d0]));},'autoLogMany':(_0x431d18,_0x36d175)=>{var _0x73d5fc=_0x556dd6;_0x37b780(_0x22fa43(_0x73d5fc(0x194),_0x431d18,_0xa22aa9(),_0x4ee1c5,_0x36d175));},'autoTrace':(_0x459c49,_0x27ff2b)=>{var _0x433b06=_0x556dd6;_0x37b780(_0x11ac60(_0x22fa43(_0x433b06(0x170),_0x27ff2b,_0xa22aa9(),_0x4ee1c5,[_0x459c49])));},'autoTraceMany':(_0x2ff4f7,_0x18ce27)=>{_0x37b780(_0x11ac60(_0x22fa43('trace',_0x2ff4f7,_0xa22aa9(),_0x4ee1c5,_0x18ce27)));},'autoTime':(_0x2e41bc,_0x5eb8ec,_0x1c38dd)=>{_0x590e5e(_0x1c38dd);},'autoTimeEnd':(_0x47c008,_0xad9b13,_0x4fc532)=>{_0x1ecc6b(_0xad9b13,_0x4fc532);},'coverage':_0x4de91b=>{_0x37b780({'method':'coverage','version':_0x430083,'args':[{'id':_0x4de91b}]});}};let _0x37b780=q(_0x5d65e9,_0x571af9,_0x37e1e4,_0x433d48,_0x1b02f6,_0x240da5,_0x2821b9),_0x4ee1c5=_0x5d65e9[_0x556dd6(0x14a)];return _0x5d65e9['_console_ninja'];})(globalThis,_0x2160de(0x187),'50437',_0x2160de(0x16b),_0x2160de(0x1be),_0x2160de(0x1e3),_0x2160de(0x128),_0x2160de(0x1d5),_0x2160de(0x159),_0x2160de(0x183),_0x2160de(0x152));\");}catch(e){}};/* istanbul ignore next */function oo_oo(i:string,...v:any[]){try{oo_cm().consoleLog(i, v);}catch(e){} return v};oo_oo;/* istanbul ignore next */function oo_tr(i:string,...v:any[]){try{oo_cm().consoleTrace(i, v);}catch(e){} return v};oo_tr;/* istanbul ignore next */function oo_tx(i:string,...v:any[]){try{oo_cm().consoleError(i, v);}catch(e){} return v};oo_tx;/* istanbul ignore next */function oo_ts(v?:string):string{try{oo_cm().consoleTime(v);}catch(e){} return v as string;};oo_ts;/* istanbul ignore next */function oo_te(v:string|undefined, i:string):string{try{oo_cm().consoleTimeEnd(v, i);}catch(e){} return v as string;};oo_te;/*eslint unicorn/no-abusive-eslint-disable:,eslint-comments/disable-enable-pair:,eslint-comments/no-unlimited-disable:,eslint-comments/no-aggregating-enable:,eslint-comments/no-duplicate-disable:,eslint-comments/no-unused-disable:,eslint-comments/no-unused-enable:,*/"],"mappings":"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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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","names":["ownKeys","object","enumerableOnly","keys","symbols","sym","_objectSpread2","target","i","source","key","_defineProperty","_typeof","obj","_classCallCheck","instance","Constructor","_defineProperties","target","props","i","descriptor","_createClass","protoProps","staticProps","_defineProperty","obj","key","value","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","_arrayLikeToArray","iter","_i","_arr","_n","_d","_s","_e","err","o","minLen","n","len","arr2","noop","_WINDOW","_DOCUMENT","_MUTATION_OBSERVER","_PERFORMANCE","_ref","_ref$userAgent","userAgent","WINDOW","DOCUMENT","MUTATION_OBSERVER","PERFORMANCE","IS_BROWSER","IS_DOM","IS_IE","_familyProxy","_familyProxy2","_familyProxy3","_familyProxy4","_familyProxy5","NAMESPACE_IDENTIFIER","UNITS_IN_GRID","DEFAULT_CSS_PREFIX","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","DATA_FA_PSEUDO_ELEMENT","DATA_FA_PSEUDO_ELEMENT_PENDING","DATA_PREFIX","DATA_ICON","HTML_CLASS_I2SVG_BASE_CLASS","MUTATION_APPROACH_ASYNC","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","PRODUCTION","FAMILY_CLASSIC","FAMILY_SHARP","FAMILIES","familyProxy","obj","target","prop","PREFIX_TO_STYLE","_defineProperty","STYLE_TO_PREFIX","PREFIX_TO_LONG_STYLE","LONG_STYLE_TO_PREFIX","ICON_SELECTION_SYNTAX_PATTERN","LAYERS_TEXT_CLASSNAME","FONT_FAMILY_PATTERN","FONT_WEIGHT_TO_PREFIX","oneToTen","oneToTwenty","ATTRIBUTES_WATCHED_FOR_MUTATION","DUOTONE_CLASSES","prefixes","RESERVED_CLASSES","initial","getAttrConfig","attr","element","coerce","val","attrs","_ref2","key","_default","_config","_objectSpread2","config","_onChangeCb","cb","onChange","d","meaninglessTransform","insertCss","css","style","headChildren","beforeChild","child","tagName","idPool","nextUniqueId","size","id","toArray","array","classArray","node","htmlEscape","str","joinAttributes","attributes","acc","attributeName","joinStyles","styles","styleName","transformIsMeaningful","transform","transformForSvg","containerWidth","iconWidth","outer","innerTranslate","innerScale","innerRotate","inner","path","transformForCss","_ref2$width","width","_ref2$height","height","_ref2$startCentered","startCentered","baseStyles","dcp","drc","fp","rc","s","dPatt","customPropPatt","rPatt","_cssInserted","ensureCss","InjectCSS","w","namespace","functions","listener","loaded","fn","domready","toHtml","abstractNodes","tag","_abstractNodes$attrib","_abstractNodes$childr","children","iconFromMapping","mapping","prefix","iconName","bindInternal4","func","thisContext","a","b","c","reduce","subject","initialValue","keys","length","iterator","result","ucs2decode","string","output","counter","value","extra","toHex","unicode","decoded","codePointAt","index","first","second","normalizeIcons","icons","icon","expanded","defineIcons","params","_params$skipHooks","skipHooks","normalized","_LONG_STYLE","_PREFIXES","_PREFIXES_FOR_FAMILY","styles","namespace","shims","LONG_STYLE","_defineProperty","FAMILY_CLASSIC","PREFIX_TO_LONG_STYLE","FAMILY_SHARP","_defaultUsablePrefix","_byUnicode","_byLigature","_byOldName","_byOldUnicode","_byAlias","PREFIXES","PREFIX_TO_STYLE","isReserved","name","RESERVED_CLASSES","getIconName","cssPrefix","cls","parts","prefix","iconName","build","lookup","reducer","reduce","o","style","acc","icon","aliases","a","alias","hasRegular","config","shimLookups","shim","maybeNameMaybeUnicode","getCanonicalPrefix","onChange","c","byUnicode","unicode","byLigature","ligature","byAlias","byOldName","byOldUnicode","oldUnicode","newUnicode","getDefaultUsablePrefix","emptyCanonicalIcon","styleOrPrefix","params","_params$family","family","STYLE_TO_PREFIX","defined","PREFIXES_FOR_FAMILY","getCanonicalIcon","values","_famProps","_params$skipLookups","skipLookups","famProps","givenPrefix","v","canonical","LONG_STYLE_TO_PREFIX","aliasIconName","Library","_classCallCheck","_createClass","_this","_len","definitions","_key","additions","key","_objectSpread2","defineIcons","longPrefix","definition","normalized","_normalized$key","_plugins","_hooks","providers","defaultProviderKeys","registerPlugins","nextPlugins","_ref","obj","k","plugin","mixout","tk","_typeof","sk","hooks","hook","chainHooks","accumulator","args","hookFns","hookFn","callHooks","_len2","_key2","callProvided","findIconDefinition","iconLookup","iconFromMapping","library","noAuto","dom","IS_DOM","autoReplaceSvgRoot","domready","autoReplace","parse","_icon","ICON_SELECTION_SYNTAX_PATTERN","canonicalIcon","_prefix","api","toHtml","_params$autoReplaceSv","DOCUMENT","domVariants","val","abstractCreator","container","asIcon","children","main","mask","attributes","transform","transformIsMeaningful","width","height","offset","joinStyles","asSymbol","symbol","id","makeInlineSvgAbstract","_params$icons","title","maskId","titleId","extra","_params$watchable","watchable","isUploadedIcon","attrClass","content","uploadedIconWidthStyle","DATA_FA_I2SVG","nextUniqueId","_ref2","makeLayersTextAbstract","_params$watchable2","transformForCss","styleString","makeLayersCounterAbstract","styles$1","asFoundIcon","_icon$slice","_icon$slice2","_slicedToArray","vectorData","element","DUOTONE_CLASSES","missingIconResolutionMixin","maybeNotifyMissing","PRODUCTION","findIcon","resolve","reject","noop$1","p","PERFORMANCE","preamble","begin","end","perf","noop$2","isWatched","node","i2svg","hasPrefixAndIcon","DATA_PREFIX","DATA_ICON","hasBeenReplaced","getMutator","mutators","mutator","createElementNS","tag","createElement","convertSVG","abstractObj","_params$ceFn","ceFn","child","nodeAsComment","comment","mutation","abstract","classArray","forSvg","splitClasses","newInnerHTML","performOperationSync","op","perform","mutations","callback","callbackFunction","frame","MUTATION_APPROACH_ASYNC","WINDOW","mark","disabled","disableObservation","enableObservation","mo","observe","options","MUTATION_OBSERVER","_options$treeCallback","treeCallback","_options$nodeCallback","nodeCallback","_options$pseudoElemen","pseudoElementsCallback","_options$observeMutat","observeMutationsRoot","objects","defaultPrefix","toArray","mutationRecord","ATTRIBUTES_WATCHED_FOR_MUTATION","_getCanonicalIcon","disconnect","styleParser","prop","value","classParser","existingPrefix","existingIconName","innerText","toHex","attributesParser","extraAttributes","attr","blankMeta","meaninglessTransform","parseMeta","parser","_classParser","extraClasses","pluginMeta","extraStyles","styles$2","generateMutation","nodeMeta","LAYERS_TEXT_CLASSNAME","knownPrefixes","FAMILIES","_toConsumableArray","onTree","root","htmlClassList","hclAdd","suffix","HTML_CLASS_I2SVG_BASE_CLASS","hclRemove","prefixes","f","prefixesDomQuery","candidates","e","resolvedMutations","onNode","resolveIcons","next","maybeIconDefinition","iconDefinition","render","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","classes","_params$attributes","_params$styles","ReplaceElements","providers$$1","_params$node","_params$callback","_ref3","nextChild","Layers","assembler","LayersCounter","LayersText","IS_IE","computedFontSize","boundingClientRect","CLEAN_CONTENT_PATTERN","SECONDARY_UNICODE_RANGE","hexValueFromContent","cleaned","codePoint","codePointAt","isPrependTen","isDoubled","replaceForPosition","position","pendingAttribute","DATA_FA_PSEUDO_ELEMENT_PENDING","alreadyProcessedPseudoElement","DATA_FA_PSEUDO_ELEMENT","fontFamily","FONT_FAMILY_PATTERN","fontWeight","_content","FONT_WEIGHT_TO_PREFIX","_hexValueFromContent","hexValue","isSecondary","isV4","iconIdentifier","iconName4","meta","replace","processable","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","searchPseudoElements","operations","PseudoElements","_unwatched","MutationObserver$1","parseTransformString","transformString","n","first","rest","PowerTransforms","containerWidth","iconWidth","outer","innerTranslate","innerScale","innerRotate","inner","path","ALL_SPACE","fillBlack","force","deGroup","Masks","maskData","i","explicitMaskId","mainWidth","mainPath","maskWidth","maskPath","trans","transformForSvg","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","defs","MissingIconIndicator","reduceMotion","gChildren","FILL","ANIMATION_BASE","OPACITY_ANIMATE","dot","SvgSymbols","symbolData","plugins","InjectCSS","noAuto$1","config$1","library$1","dom$1","parse$1","findIconDefinition$1","toHtml$1","layer","text","counter","_c0","faWarnIfIconDefinitionMissing","iconSpec","faWarnIfIconSpecMissing","faClassList","props","classes","key","isIconLookup","i","faNormalizeIconSpec","defaultPrefix","FaConfig","_FaConfig","ɵɵdefineInjectable","FaIconLibrary","_FaIconLibrary","icons","icon","alias","packs","pack","prefix","name","FaStackItemSizeDirective","_FaStackItemSizeDirective","changes","ɵɵdefineDirective","ɵɵNgOnChangesFeature","FaStackComponent","_FaStackComponent","renderer","elementRef","ɵɵdirectiveInject","Renderer2","ElementRef","ɵɵdefineComponent","rf","ctx","ɵɵprojectionDef","ɵɵprojection","FaIconComponent","_FaIconComponent","value","sanitizer","config","iconLibrary","stackItem","stack","iconToBeRendered","iconDefinition","params","lookup","definition","classOpts","parsedTransform","parse$1","renderedIcon","DomSanitizer","ɵɵhostProperty","ɵɵsanitizeHtml","ɵɵattribute","FontAwesomeModule","_FontAwesomeModule","ɵɵdefineNgModule","ɵɵdefineInjector","CommonUiModule","CommonModule","MatSnackBarModule","FontAwesomeModule","_CommonUiModule","SnackbarService","constructor","store","showMessage","msg","opts","__spreadValues","showErrorMessage","showNotificationMessage","note","verb","staffCode","note_causer_staffCode","ɵɵinject","SnackbarStore","factory","ɵfac","providedIn","_SnackbarService","ComponentStore","snackbar","suppress$","select","suppress","setSuppress","updater","state","__spreadProps","effect","opts$","pipe","withLatestFrom","tap","open","horizontalPosition","verticalPosition","msg$","duration","panelClass","MatSnackBar","_SnackbarStore","assertInjector","fn","injector","runner","assertInInjectionContext","assertedInjector","inject","Injector","runInInjectionContext","createInjectFn","token","_a","_b","injector","injectOptions","__objRest","assertInjector","runInInjectionContext","inject","createProvideFn","factory","opts","deps","multi","extraProviders","value","isFunctionValue","provider","createInjectionToken","options","tokenName","InjectionToken","dep","injectFn","ENVIRONMENT_INITIALIZER","injectSecondaryNavigation","provideSecondaryNavigation","createInjectionToken","router","inject","Router","route","ActivatedRoute","navigateRouterToSecondaryOutlet","outletName","commands","options","navigateSecondary","isRoot","replaceUrl","undefined","queryParamsHandling","primaryRouteUrl","createUrlTree","relativeTo","root","children","PRIMARY_OUTLET","toString","navigate","outlets","Array","isArray","StandardCrudAdaptor","constructor","crud","open","type","lookupTypes","opts","create","data","select","oid","save","edition","model","delete","ɵɵinject","CrudService","factory","ɵfac","providedIn","_StandardCrudAdaptor","DEBUG","DEBUG_DIFF","DEBUG_CHANGES","defaultState","createOid","undefined","oidObfuscated","list","edit","dtos","priorEdit","loadingList","loadingEdit","hasUnsavedChanges","isNewInstance","isEditing","form","formRawValue","screenConfig","isActive","isAlwaysSavable","selectCount","formPending","forcingClear","ignoreClear","preventClearNewDelete","hasOpened","operationInProgress","allowedEditButtons","allowNew","allowDelete","GenericEditStore","ComponentStore","constructor","_dialogs","inject","GenericDialogsService","_crud","CrudService","_snackbar","SnackbarService","_router","Router","_eventBus","NgEventBus","_genericErrorHandler","GenericErrorHandlerService","_appState","AppStateService","_userAccess","UserAccessService","_crudAdaptor","StandardCrudAdaptor","_controlSecurity","ControlSecurityService","_globalRegistry","GlobalStoreRegistryStore","_auth","AuthStore","editorSecurity","EditorSecurityService","storeRegistry","StoreRegistry","optional","lookupTypes","saveButtonLabel","ignoreEditOid","replaceEditUrl","allowRerouteToEdit","saveChangesOverrideText","options","subCancelSelection","Subject","cancelSelection$","asObservable","list$","select","edit$","dtos$","priorEdit$","hasEdit$","debounce","loadingList$","loadingEdit$","isEditing$","hasUnsavedChanges$","canDelete$","canClearNewDelete$","inProgress$","state","warnings$","warnings","hasWarnings$","length","form$","formRawValue$","isNewInstance$","isExistingInstance$","screenConfig$","allowedEditButtons$","activatedRoute$","activatedRoute","loadCount$","loadCount","screenReadOnly$","screenAccessLevel","AccessLevels","ReadOnly","additionalState$","additionalState","obfuscatedOid$","controllerParams$","controllerParams","isActive$","isAlwaysSavable$","operationInProgress$","hasNonNewEdit$","isClear$","confirmWarningNextSave$","confirmWarningNextSave","isSavable$","formPending$","opened$","preventClearNewDelete$","canClearNewDelete","suppressHandleLoadError$","suppressHandleLoadError","canSaveOverride$","canSaveOverride","forceAllowSaveOverride$","of","allowedEditButtons_hideAll$","pipe","switchMap","makeObservableBool","hideAll","allowedEditButtons_allowNew$","allowedEditButtons_allowSave$","allowSave","allowedEditButtons_allowRestore$","allowRestore","allowedEditButtons_allowDelete$","allowedEditButtons_allowClear$","allowClear","allowSave$","editFlags","getEditorSecurity","canSave","EditFlags_Create","EditFlags_Update","allowSave_EditorFlags$","selectCount$","selectedOid$","oid","hasOpened$","realOid$","combineLatest","map","realOid","insteadOfSelect$","insteadOfSelect","ignoreClear$","forceOnEditSetForNext$","forceOnEditSetForNext","subSaved","saved$","subDeleted","deleted$","subEditOrCreateComplete","editOrCreateComplete$","niceName$","defer","niceName","saveButtonLabel$","buttonsVm$","allowSave_EditorFlags","hasEdit","isSavable","canDelete","inProgress","editListVm$","editVm$","patchAdditional","updater","additional","__spreadProps","__spreadValues","setInsteadOfSelect","setList","effect","tap","onListSet","patchState","setDtos","setLoadingList","setLoadingEdit","setIsEditing","setIsNewInstance","setForm","setCreateOid","setScreenConfig","bumpLoadCount","setAllowedEditButtons","_setOidObfuscated","oidObfuscated$","setIsActive","setUrl","url","setIsAlwaysSavable","setOperationInProgress","setForceOnEditSetForNext","overrideCanSave","_setEdit","withLatestFrom","oldEdit","transformEdit","onEditSet","typedClone","setSuppressHandleLoadError","setUpdatedEdit","ed","protectUnsavedChangesFromBecomingTrueOnReadOnlyScreen","setUpdatedEditNoChanges","registerStoreOnNextTick","trigger$","delay","registerStore","ignoreNextClear","setIgnoreClear","registerActivatedRoute","route$","route","setControllerParameters","registerForm","valueChanges","debounceTime","rawValue","getRawValue","isDirty","dirty","setHasUnsavedChanges","EMPTY","forceClear","onForceClear","open","exhaustMap","controllerType","tapResponse","result","objects","extractOptions","afterOpen","err","handleError","finalize","editOrCreate","obfuscatedOid","vetoSelect","signalEditOrCreateComplete","setOidObfuscated","decoded","decode","decodedAsNumber","Number","isNaN","Error","console","log","oo_oo","isCreate","isNewOid","handleResponse","setEdit","setTimeout","markAsPristine","markAsUntouched","afterEditSet","onDtosSet","onGetCreateParams","createParams","create","onGetSelectParams","selectParams","restore","prior","get","onRestore","routeToEdit","oid$","refreshCurrentEdit","from","navigate","relativeTo","replaceUrl","queryParamsHandling","skipLocationChange","preventDeactivateReroute","routedOk","onRouted","lastSelectedId","next","routeToEditReal","oidDecoded","obfuscate","routeToEditReal_replaceUrl","oldReplace","routeToCreateNew","onInsteadOfCreate","assertDefined","obfuscateNew","vetoHasUnsavedChanges","isDevMode","difference","diff","markAsDirty","onHasUnsavedChangesSet","_clear","options$","doClear","afterClear","dontSetActiveStore","setActiveStore","isForcingClear","_cancel","_destroy","delete","preventMutatingActionWhilePaintingSecurity","showConfirmDeleteDialog","filter","confirmDelete","signalDeleteSuccess","deleteName","onGetDeleteParams","deleteParams","agResult","newList","suppressSnackbarMessages","showMessage","onAfterSaveOrDelete","clear","deleteItem","toLowerCase","saveWithConfirmWarning","save","showCantSaveMessage","title$","title","statusChanges","startWith","status","takeUntil","saveOnceValid","markAllAsTouched","updateValueAndValidity","invalid","controlsAndErrors","Object","keys","controls","reduce","acc","c","ctrl","errors","signalSaveSuccess","preSave","performSave","handleSaveResult","saveResult$","onHandleSaveResultAggregate","newDto","onAfterSaveEdit","saveAndClear","clearAfterSave","mergeMap","message","onGetSaveParams","saveParams","copyCurrent","copy","onCopyCurrent","cancelAndClearChildStores","reset","updateEdit","updatedEdit$","dto","markDirty","handleGenericError","error$","error","clearWarnings","canRouteToCreateNew","isScreenReadonly$","isScreenReadonly","getAccessLevelForCurrentScreen","isReadOnly","isCurrentScreenReadOnly","actionType","isPaintingSecurity$","take","isPaintingSecurity","getNiceName","saveWithResult","deleteWithResult","editOrCreateWithResult","getEditOid","setCrudAdaptor","adaptor","copiedEdit","_dtos","onCheckSaveResult","onGetSaveObject","config","fromButtons","value","handleCustomSaveError","navigateRouterToSecondaryOutlet","outletName","commands","router","navigateSecondary","init","setState","setListExternal","validateBeforeSave","opts","emptyIfInvalid","validateEdit","confirmWarning","saveObject","catchError","presentSingleUnsavedChangesDialog","showSaveChangesDialog","toLocaleLowerCase","savedOk","restoreOnDiscard","checkUnsavedChangesAndClear","checkUnsavedChanges","suppressCheckUnsavedChanges$","suppressCheckUnsavedChanges","forceAllowSaveOverride","isAuthenticated","rootStore","getRootStore","activeStore","forceRootStore","getActiveStore","getChildStores","hierarchy_checkUnsavedChanges","childStores","getChildStoresRecursive","anyHaveChanges","some","store","hasChanges","childStoresWithUnsavedChanges","hasUnsavedChangesMessageOverride","showUnsavedChangesMessageOverride","discardAllChanges","dirtyStores","dirtyStoreNames","s","tabName","showMultipleUnsavedChangesDialog","constructUrl$","baseUrl","oidPart","ngrxOnStoreInit","access","getUrl","getSelectedOid","getEdit","getHasUnsavedChanges","forceResetOid","parentStore","getParentStore","cancel","destroy","ngOnDestroy","deregisterStore","wasSuccessful","complete","forEach","entry","castOptionsAs","factory","ɵfac","_GenericEditStore","oo_cm","eval","i","v","consoleLog","BaseCrudAdaptor","constructor","crud","open","type","lookupTypes","opts","create","data","select","oid","save","edition","model","delete","DEBUG","Type_Control","Type_Editor","Type_Form","Type_TopMenu","Access_Full","Access_None","Access_ReadOnly","Access_Group","Access_Mandatory","iconMap","typeIconMap","EditFlags_Create","EditFlags_Update","EditFlags_Delete","controlRegex","lookupTypes","SecurityConfigurationStore","GenericEditStore","constructor","url","niceName","controllerType","route","inject","ActivatedRoute","appState","AppStateService","menuBuilder","MenuBuilderService","staffSecurityGroups$","getLookupCollection","groupsAsTree$","select","staffSecurityGroups","buildTree","pipe","tap","tree","itemsByOid","reduce","acc","item","value","map","treeNode","otherGroups$","edit$","edit","filter","g","oid","workflowStore$","additionalState$","additionalState","workflowStore","selectorContext$","selectorContext","lastSelectorContext$","lastSelectorContext","selectorForm$","selectorForm","gridApi$","gridApi","staffMasterGroupName$","groupName","forGroups$","securityFor","forStaff$","hasSelectedStaff$","realOid$","forStaff","realOid","editItems$","allEditItems","formItemsBySecurityKey$","formItemsBySecurityKey","controlItemsBySecurityKey$","controlItemsBySecurityKey","editorFlagsItemsBySecurityKey$","editorFlagsItemsBySecurityKey","selectedMenuHierarchyKeys$","selectedMenuHierarchyKeys","Set","selectAll$","selectAll","hasAnySelections$","size","loaded$","loaded","paintResumeData$","paintResumeData","hasAnyUnsavedChanges$","hasUnsavedChanges$","hasUnsavedChanges","vm$","menuHierarchy","menuHierarchy$","editItems","forGroups","hasAnySelections","selectById","effect","id$","withLatestFrom","id","assertDefined","mySecurityGroup","myStaffMaster","patchState","patchAdditional","__spreadValues","updateSelectorContext","context$","switchMap","context","lastContext","of","checkUnsavedChangesAndClear","delay","ok","EMPTY","oldContext","isEqual","copiedContext","undefined","_router","navigate","relativeTo","activatedRoute","queryParams","updateSubgroups","queryParamsHandling","then","selectionOid","lastSelectionOid","routeToEditReal","clear","clearSelection","trigger$","watchCancelSelection","cancelSelection$","debounceTime","lastSelection","tryDecode","__spreadProps","watchForSessionStartOrEnd","event$","abandonPaintState","registerSelectorForm","form$","form","buildSelectorContextFromQueryStringParams","queryParamMap","snapshot","get","indexOf","selector","setSelectAll","setMenuKeySelection","params$","params","selections","selected","add","menuKey","delete","clearItems","menuKey$","controlItems","editorFlagsItems","typedClone","markDirty","setAllToLevel","level$","level","Object","values","forEach","key","copyFromGroup","otherGroup$","exhaustMap","otherGroup","setLoadingEdit","_crud","tapResponse","result","handleEditSet","dtos","setHasUnsavedChanges","err","handleGenericError","finalize","updateAccess","dtoName","replace","isDevMode","console","info","controlName","getControlItem","take","controlItem","securityPath","buildSecurityPathForControl","modelProp","concat","markDirtyForPaintState","getFormItem","formItem","toggleEditorFlag","getEditorFlagsItems","items","allEditorFlagsItems","storeKey","$type","securityPaths","editorFlags","EditFlags_All","defaultEditorFlags","type","Type_Editor","push","DEBUG","log","oo_oo","Access_Group","editorFlag","setEditorFlagsForStaffToGroup","isPaintingSecurity$","isPaintingWorkflowSecurity$","isPaintingSecurity","isPaintingWorkflowSecurity","setWorkflowStore","startPaintAndRoute","route$","beginPaintOnRoute","beginPaint","endPaint","from","routedOk","clearPaintingSecurity","openIfNotResumingFromEndPaint","setScreenName","handleResumeFromPaint","open","data$","editOid","obfuscate","setInsteadOfSelect","navigateOk","priorEdit","priorEdit$","setIsPaintingSecurity","isPaintingSecurityForStaff","buildFormItemsBySecurityKey","entries","findFormItems","children","Type_Form","Type_TopMenu","startsWith","allChildItems","formItems","buildControlItemsBySecurityKey","Type_Control","groups","exec","securityKey","securityPathsReverseLookup","buildEditorFlagsItemsBySecurityKey","setAllowedEditButtons","allowNew","allowDelete","_eventBus","on","EventBusEvents","Event_Session_Start_End","isMenuKeySelected","keys","has","Access_Full","name","getTranslatedKey","find","getControlItems","keyBy","i","length","afterOpen","onEditSet","onRestore","preSave","updateSubGroups","_dialogs","confirm","title","message","formItemValues","controlItemValues","flatMap","editorFlagsItemValues","factory","ɵfac","_SecurityConfigurationStore","oo_cm","eval","v","consoleLog"],"x_google_ignoreList":[0,1,4,5]}